diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 00000000..9dc6b4df --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,48 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Listen for Xdebug", + "type": "php", + "request": "launch", + "port": 9003 + }, + { + "name": "Launch currently open script", + "type": "php", + "request": "launch", + "program": "${file}", + "cwd": "${fileDirname}", + "port": 0, + "runtimeArgs": [ + "-dxdebug.start_with_request=yes" + ], + "env": { + "XDEBUG_MODE": "debug,develop", + "XDEBUG_CONFIG": "client_port=${port}" + } + }, + { + "name": "Launch Built-in web server", + "type": "php", + "request": "launch", + "runtimeArgs": [ + "-dxdebug.mode=debug", + "-dxdebug.start_with_request=yes", + "-S", + "localhost:0" + ], + "program": "", + "cwd": "${workspaceRoot}", + "port": 9003, + "serverReadyAction": { + "pattern": "Development Server \\(http://localhost:([0-9]+)\\) started", + "uriFormat": "http://localhost:%s", + "action": "openExternally" + } + } + ] +} \ No newline at end of file diff --git a/extensions/invoices/dist/invoices.js b/extensions/invoices/dist/invoices.js new file mode 100644 index 00000000..d604db11 --- /dev/null +++ b/extensions/invoices/dist/invoices.js @@ -0,0 +1,24622 @@ +(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + queue.push(new Item(fun, args)); + if (queue.length === 1 && !draining) { + runTimeout(drainQueue); + } +}; + +// v8 likes predictible objects +function Item(fun, array) { + this.fun = fun; + this.array = array; +} +Item.prototype.run = function () { + this.fun.apply(null, this.array); +}; +process.title = 'browser'; +process.browser = true; +process.env = {}; +process.argv = []; +process.version = ''; // empty string to avoid regexp issues +process.versions = {}; + +function noop() {} + +process.on = noop; +process.addListener = noop; +process.once = noop; +process.off = noop; +process.removeListener = noop; +process.removeAllListeners = noop; +process.emit = noop; +process.prependListener = noop; +process.prependOnceListener = noop; + +process.listeners = function (name) { return [] } + +process.binding = function (name) { + throw new Error('process.binding is not supported'); +}; + +process.cwd = function () { return '/' }; +process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); +}; +process.umask = function() { return 0; }; + +},{}],4:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +/* + Copyright (c) 2018 [Glacies UG, Berlin, Germany] (http://glacies.de) + Developer: Thilina Hasantha (http://lk.linkedin.com/in/thilinah | https://github.com/thilinah) + */ + +/** + * RequestCache + */ +var MemoryStorage = /*#__PURE__*/function () { + function MemoryStorage() { + _classCallCheck(this, MemoryStorage); + + this.data = {}; + } + + _createClass(MemoryStorage, [{ + key: "getItem", + value: function getItem(key) { + return this.data[key]; + } + }, { + key: "setItem", + value: function setItem(key, data) { + this.data[key] = data; + } + }, { + key: "removeAllByPrefix", + value: function removeAllByPrefix(prefix) { + var keys = Object.keys(this.data); + + for (var i = 0; i < keys.length; i++) { + if (keys[i].indexOf(prefix) > 0) { + delete this.data[keys[i]]; + } + } + } + }]); + + return MemoryStorage; +}(); + +var RequestCache = /*#__PURE__*/function () { + function RequestCache(storage) { + _classCallCheck(this, RequestCache); + + if (!storage) { + this.storage = new MemoryStorage(); + } else { + this.storage = storage; + } + } + + _createClass(RequestCache, [{ + key: "getKey", + value: function getKey(url, params) { + var key = "".concat(url, "|"); + + for (var index in params) { + key += "".concat(index, "=").concat(params[index], "|"); + } + + return key; + } + /* + invalidateTable(table) { + let key; + for (let i = 0; i < this.storage.length; i++) { + key = this.storage.key(i); + if (key.indexOf(`t=${table}`) > 0) { + this.storage.removeItem(key); + } + } + } + */ + + }, { + key: "invalidateTable", + value: function invalidateTable(table) { + this.storage.removeAllByPrefix("t=".concat(table)); + } + }, { + key: "getData", + value: function getData(key) { + var data = this.storage.getItem(key); + + if (!data) { + return null; + } + + return data; + } + }, { + key: "setData", + value: function setData(key, data) { + if (data.status !== undefined && data.status != null && data.status !== 'SUCCESS') { + return null; + } + + this.storage.setItem(key, data); + return data; + } + }]); + + return RequestCache; +}(); + +var _default = RequestCache; +exports["default"] = _default; + +},{}],5:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _IceApiClient = _interopRequireDefault(require("./IceApiClient")); + +var _ModuleBase2 = _interopRequireDefault(require("./ModuleBase")); + +var _RequestCache = _interopRequireDefault(require("../api-common/RequestCache")); + +var _MasterDataReader = _interopRequireDefault(require("./MasterDataReader")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var AdapterBase = /*#__PURE__*/function (_ModuleBase) { + _inherits(AdapterBase, _ModuleBase); + + var _super = _createSuper(AdapterBase); + + function AdapterBase(endPoint, tab, filter, orderBy) { + var _this; + + _classCallCheck(this, AdapterBase); + + _this = _super.call(this); + _this.moduleRelativeURL = null; + _this.tableData = []; + _this.sourceData = []; + _this.filter = null; + _this.origFilter = null; + _this.orderBy = null; + _this.currentElement = null; + + _this.initAdapter(endPoint, tab, filter, orderBy); + + return _this; + } + + _createClass(AdapterBase, [{ + key: "initAdapter", + value: function initAdapter(endPoint, tab, filter, orderBy) { + this.moduleRelativeURL = baseUrl; + this.table = endPoint; + + if (tab === undefined || tab === null) { + this.tab = endPoint; + } else { + this.tab = tab; + } + + if (filter === undefined || filter === null) { + this.filter = null; + } else { + this.filter = filter; + } + + this.origFilter = this.filter; + + if (orderBy === undefined || orderBy === null) { + this.orderBy = null; + } else { + this.orderBy = orderBy; + } + + this.trackEvent('initAdapter', tab); + this.requestCache = new _RequestCache["default"](); + } + }, { + key: "initMasterDataReader", + value: function initMasterDataReader() { + this.masterDataReader = new _MasterDataReader["default"](this); + } + }, { + key: "setupApiClient", + value: function setupApiClient(token) { + this.apiClient = new _IceApiClient["default"](this.apiUrl, token, window.CLIENT_BASE_URL, true); + } + }, { + key: "setApiUrl", + value: function setApiUrl(apiUrl) { + this.apiUrl = apiUrl; + } + }, { + key: "setFilter", + value: function setFilter(filter) { + this.filter = filter; + } + }, { + key: "preSetFilterExternal", + value: function preSetFilterExternal(filter) { + this.initialFilter = filter; + } + }, { + key: "setFilterExternal", + value: function setFilterExternal(_filter) { + var filter = _filter; + + if (filter === undefined || filter === null) { + filter = this.initialFilter; + } + + if (filter === undefined || filter === null) { + return; + } + + this.setFilter(filter); + this.filtersAlreadySet = true; + $("#".concat(this.getTableName(), "_resetFilters")).show(); + this.currentFilterString = this.getFilterString(filter); + } + }, { + key: "getFilter", + value: function getFilter() { + return this.filter; + } + }, { + key: "setOrderBy", + value: function setOrderBy(orderBy) { + this.orderBy = orderBy; + } + }, { + key: "getOrderBy", + value: function getOrderBy() { + return this.orderBy; + } + }, { + key: "getFile", + value: function getFile(name) { + var _this2 = this; + + this.trackEvent('file', name); + return new Promise(function (resolve, reject) { + $.getJSON(_this2.moduleRelativeURL, { + a: 'file', + name: name + }, function (data) { + if (data.status === 'SUCCESS') { + resolve(data.data); + } else { + reject(); + } + }).fail(function () { + return reject(); + }); + }); + } + /** + * @method add + * @param object {Array} object data to be added to database + * @param getFunctionCallBackData {Array} once a success is returned call get() function for this module with these parameters + * @param _callGetFunction {Boolean} if false the get function of the module will not be called (default: true) + * @param successCallback {Function} this will get called after success response + */ + + }, { + key: "add", + value: function add(object, getFunctionCallBackData, callGetFunction, successCallback) { + var that = this; + + if (callGetFunction === undefined || callGetFunction === null) { + // eslint-disable-next-line no-param-reassign + callGetFunction = true; + } + + $(object).attr('a', 'add'); + $(object).attr('t', this.table); + that.showLoader(); + this.requestCache.invalidateTable(this.table); + $.post(this.moduleRelativeURL, object, function (data) { + if (data.status === 'SUCCESS') { + that.addSuccessCallBack(getFunctionCallBackData, data.object, callGetFunction, successCallback, that); + } else { + that.addFailCallBack(getFunctionCallBackData, data.object); + } + }, 'json').fail(function (e) { + if (e.status === 403) { + that.showMessage('Access Forbidden', e.responseJSON.message); + } + }).always(function () { + that.hideLoader(); + }); + this.trackEvent('add', this.tab, this.table); + } + }, { + key: "addSuccessCallBack", + value: function addSuccessCallBack(callBackData, serverData, callGetFunction, successCallback, thisObject) { + if (callGetFunction) { + this.get(callBackData); + } + + this.initFieldMasterData(); + + if (successCallback !== undefined && successCallback !== null) { + successCallback.apply(thisObject, [serverData]); + } + + this.trackEvent('addSuccess', this.tab, this.table); + } + }, { + key: "addFailCallBack", + value: function addFailCallBack(callBackData, serverData) { + try { + this.closePlainMessage(); + } catch (e) {// No need to report + } + + this.showMessage('Error saving', serverData); + this.trackEvent('addFailed', this.tab, this.table); + } + }, { + key: "deleteObj", + value: function deleteObj(id, callBackData) { + var that = this; + that.showLoader(); + this.requestCache.invalidateTable(this.table); + $.post(this.moduleRelativeURL, { + t: this.table, + a: 'delete', + id: id + }, function (data) { + if (data.status === 'SUCCESS') { + that.deleteSuccessCallBack(callBackData, data.object); + } else { + that.deleteFailCallBack(callBackData, data.object); + } + }, 'json').fail(function (e) { + if (e.status === 403) { + that.showMessage('Access Forbidden', e.responseJSON.message); + } + }).always(function () { + that.hideLoader(); + }); + this.trackEvent('delete', this.tab, this.table); + } // eslint-disable-next-line no-unused-vars + + }, { + key: "deleteSuccessCallBack", + value: function deleteSuccessCallBack(callBackData, serverData) { + this.get(callBackData); + this.clearDeleteParams(); + } + }, { + key: "deleteFailCallBack", + value: function deleteFailCallBack(callBackData, serverData) { + this.clearDeleteParams(); + this.showMessage('Error Occurred while Deleting Item', serverData); + } + }, { + key: "get", + value: function get(callBackData) { + var that = this; + + if (this.getRemoteTable()) { + this.createTableServer(this.getTableName()); + $("#".concat(this.getTableName(), "Form")).hide(); + $("#".concat(this.getTableName())).show(); + return; + } + + var sourceMappingJson = JSON.stringify(this.getSourceMapping()); + var filterJson = ''; + + if (this.getFilter() !== null) { + filterJson = JSON.stringify(this.getFilter()); + } + + var orderBy = ''; + + if (this.getOrderBy() !== null) { + orderBy = this.getOrderBy(); + } + + sourceMappingJson = this.fixJSON(sourceMappingJson); + filterJson = this.fixJSON(filterJson); + that.showLoader(); + $.post(this.moduleRelativeURL, { + t: this.table, + a: 'get', + sm: sourceMappingJson, + ft: filterJson, + ob: orderBy + }, function (data) { + if (data.status === 'SUCCESS') { + that.getSuccessCallBack(callBackData, data.object); + } else { + that.getFailCallBack(callBackData, data.object); + } + }, 'json').fail(function (e) { + if (e.status === 403) { + that.showMessage('Access Forbidden', e.responseJSON.message); + } + }).always(function () { + that.hideLoader(); + }); + that.initFieldMasterData(); + this.trackEvent('get', this.tab, this.table); // var url = this.getDataUrl(); + // console.log(url); + } + }, { + key: "getDataUrl", + value: function getDataUrl(_columns) { + var sourceMappingJson = JSON.stringify(this.getSourceMapping()); + var columns = JSON.stringify(_columns); + var filterJson = ''; + + if (this.getFilter() !== null) { + filterJson = JSON.stringify(this.getFilter()); + } + + var orderBy = ''; + + if (this.getOrderBy() !== null) { + orderBy = this.getOrderBy(); + } + + var url = this.moduleRelativeURL.replace('service.php', 'data.php'); + url = "".concat(url, "?t=").concat(this.table); + url = "".concat(url, "&sm=").concat(this.fixJSON(sourceMappingJson)); + url = "".concat(url, "&cl=").concat(this.fixJSON(columns)); + url = "".concat(url, "&ft=").concat(this.fixJSON(filterJson)); + url = "".concat(url, "&ob=").concat(orderBy); + + if (this.isSubProfileTable()) { + url = "".concat(url, "&type=sub"); + } + + if (this.remoteTableSkipProfileRestriction()) { + url = "".concat(url, "&skip=1"); + } + + return url; + } + }, { + key: "isSubProfileTable", + value: function isSubProfileTable() { + return false; + } + }, { + key: "remoteTableSkipProfileRestriction", + value: function remoteTableSkipProfileRestriction() { + return false; + } + }, { + key: "preProcessTableData", + value: function preProcessTableData(row) { + return row; + } + }, { + key: "getSuccessCallBack", + value: function getSuccessCallBack(callBackData, serverData) { + var data = []; + var mapping = this.getDataMapping(); + + for (var i = 0; i < serverData.length; i++) { + var row = []; + + for (var j = 0; j < mapping.length; j++) { + row[j] = serverData[i][mapping[j]]; + } + + data.push(this.preProcessTableData(row)); + } + + this.sourceData = serverData; + + if (callBackData.callBack !== undefined && callBackData.callBack !== null) { + if (callBackData.callBackData === undefined || callBackData.callBackData === null) { + callBackData.callBackData = []; + } + + callBackData.callBackData.push(serverData); + callBackData.callBackData.push(data); + this.callFunction(callBackData.callBack, callBackData.callBackData); + } + + this.tableData = data; + + if (!(callBackData.noRender !== undefined && callBackData.noRender !== null && callBackData.noRender === true)) { + this.createTable(this.getTableName()); + $("#".concat(this.getTableName(), "Form")).hide(); + $("#".concat(this.getTableName())).show(); + } + } // eslint-disable-next-line no-unused-vars + + }, { + key: "getFailCallBack", + value: function getFailCallBack(callBackData, serverData) {} + }, { + key: "getElement", + value: function getElement(id, callBackData, clone) { + var that = this; + var sourceMappingJson = JSON.stringify(this.getSourceMapping()); + sourceMappingJson = this.fixJSON(sourceMappingJson); + that.showLoader(); + $.post(this.moduleRelativeURL, { + t: this.table, + a: 'getElement', + id: id, + sm: sourceMappingJson + }, function (data) { + if (data.status === 'SUCCESS') { + if (clone) { + delete data.object.id; + } + + this.currentElement = data.object; + that.getElementSuccessCallBack.apply(that, [callBackData, data.object]); + } else { + that.getElementFailCallBack.apply(that, [callBackData, data.object]); + } + }, 'json').fail(function (e) { + if (e.status === 403) { + that.showMessage('Access Forbidden', e.responseJSON.message); + } + }).always(function () { + that.hideLoader(); + }); + this.trackEvent('getElement', this.tab, this.table); + } + }, { + key: "getElementSuccessCallBack", + value: function getElementSuccessCallBack(callBackData, serverData) { + if (callBackData.callBack !== undefined && callBackData.callBack !== null) { + if (callBackData.callBackData === undefined || callBackData.callBackData === null) { + callBackData.callBackData = []; + } + + callBackData.callBackData.push(serverData); + this.callFunction(callBackData.callBack, callBackData.callBackData, this); + } + + this.currentElement = serverData; + + if (!(callBackData.noRender !== undefined && callBackData.noRender !== null && callBackData.noRender === true)) { + this.renderForm(serverData); + } + } // eslint-disable-next-line no-unused-vars + + }, { + key: "getElementFailCallBack", + value: function getElementFailCallBack(callBackData, serverData) {} + }, { + key: "getTableData", + value: function getTableData() { + return this.tableData; + } + }, { + key: "getTableName", + value: function getTableName() { + return this.tab; + } + }, { + key: "getFieldValues", + value: function getFieldValues(fieldMaster, callBackData) { + var that = this; + var method = ''; + var methodParams = ''; + + if (fieldMaster[3] !== undefined && fieldMaster[3] !== null) { + // eslint-disable-next-line prefer-destructuring + method = fieldMaster[3]; + } + + if (fieldMaster[4] !== undefined && fieldMaster[4] !== null) { + methodParams = JSON.stringify(fieldMaster[4]); + } + + var key = this.requestCache.getKey(this.moduleRelativeURL, { + t: fieldMaster[0], + key: fieldMaster[1], + value: fieldMaster[2], + method: method, + methodParams: methodParams, + a: 'getFieldValues' + }); + var cacheData = this.requestCache.getData(key); + + if (cacheData !== null && cacheData !== undefined) { + if (cacheData.status === 'SUCCESS') { + callBackData.callBackData.push(cacheData.data); + + if (callBackData.callBackSuccess !== null && callBackData.callBackSuccess !== undefined) { + callBackData.callBackData.push(callBackData.callBackSuccess); + } + + that.callFunction(callBackData.callBack, callBackData.callBackData); + } + } else { + var callbackWraper = function callbackWraper(data) { + if (data.status === 'SUCCESS') { + that.requestCache.setData(this.success.key, data); + var localCallBackData = callBackData; + localCallBackData.callBackData = [callBackData.callBackData[0]]; + localCallBackData.callBackData.push(data.data); + + if (localCallBackData.callBackSuccess !== null && localCallBackData.callBackSuccess !== undefined) { + localCallBackData.callBackData.push(callBackData.callBackSuccess); + } + + that.callFunction(localCallBackData.callBack, localCallBackData.callBackData); + } else if (data.message === 'Access violation') { + alert("Error : ".concat(callbackWraper.table, " ").concat(data.message)); + } + }; + + callbackWraper.key = key; // eslint-disable-next-line prefer-destructuring + + callbackWraper.table = fieldMaster[0]; + $.post(this.moduleRelativeURL, { + t: fieldMaster[0], + key: fieldMaster[1], + value: fieldMaster[2], + method: method, + methodParams: methodParams, + a: 'getFieldValues' + }, callbackWraper, 'json'); + } + } + }, { + key: "setAdminProfile", + value: function setAdminProfile(empId) { + try { + localStorage.clear(); + } catch (e) {// No need to report + } + + $.post(this.moduleRelativeURL, { + a: 'setAdminEmp', + empid: empId + }, function () { + // eslint-disable-next-line no-restricted-globals + top.location.href = clientUrl; + }, 'json'); + } + }, { + key: "customAction", + value: function customAction(subAction, module, request, callBackData, isPost) { + var that = this; + request = this.fixJSON(request); + + if (!isPost) { + $.getJSON(this.moduleRelativeURL, { + t: this.table, + a: 'ca', + sa: subAction, + mod: module, + req: request + }, function (data) { + if (data.status === 'SUCCESS') { + callBackData.callBackData.push(data.data); + that.callFunction(callBackData.callBackSuccess, callBackData.callBackData); + } else { + callBackData.callBackData.push(data.data); + that.callFunction(callBackData.callBackFail, callBackData.callBackData); + } + }); + } else { + $.post(this.moduleRelativeURL, { + t: this.table, + a: 'ca', + sa: subAction, + mod: module, + req: request + }, function (data) { + if (data.status === 'SUCCESS') { + callBackData.callBackData.push(data.data); + that.callFunction(callBackData.callBackSuccess, callBackData.callBackData); + } else { + callBackData.callBackData.push(data.data); + that.callFunction(callBackData.callBackFail, callBackData.callBackData); + } + }, 'json'); + } + } + }, { + key: "sendCustomRequest", + value: function sendCustomRequest(action, params, successCallback, failCallback) { + params.a = action; + $.post(this.moduleRelativeURL, params, function (data) { + if (data.status === 'SUCCESS') { + successCallback(data.data); + } else { + failCallback(data.data); + } + }, 'json'); + } + }, { + key: "getCustomActionUrl", + value: function getCustomActionUrl(action, params) { + params.a = action; + var str = ''; + + for (var key in params) { + if (params.hasOwnProperty(key)) { + if (str !== '') { + str += '&'; + } + + str += "".concat(key, "=").concat(params[key]); + } + } + + return "".concat(this.moduleRelativeURL, "?").concat(str); + } + }, { + key: "getClientDataUrl", + value: function getClientDataUrl() { + return "".concat(this.moduleRelativeURL.replace('service.php', ''), "data/"); + } + }, { + key: "getCustomUrl", + value: function getCustomUrl(str) { + return this.moduleRelativeURL.replace('service.php', str); + } + }]); + + return AdapterBase; +}(_ModuleBase2["default"]); + +var _default = AdapterBase; +exports["default"] = _default; + +},{"../api-common/RequestCache":4,"./IceApiClient":7,"./MasterDataReader":9,"./ModuleBase":10}],6:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +/* + Copyright (c) 2018 [Glacies UG, Berlin, Germany] (http://glacies.de) + Developer: Thilina Hasantha (http://lk.linkedin.com/in/thilinah | https://github.com/thilinah) + */ + +/* global tinyMCE */ +var ValidationRules = { + "float": function float(str) { + var floatstr = /^[-+]?[0-9]+(\.[0-9]+)?$/; + + if (str != null && str.match(floatstr)) { + return true; + } + + return false; + }, + number: function number(str) { + var numstr = /^[0-9]+$/; + + if (str != null && str.match(numstr)) { + return true; + } + + return false; + }, + numberOrEmpty: function numberOrEmpty(str) { + if (str === '') { + return true; + } + + var numstr = /^[0-9]+$/; + + if (str != null && str.match(numstr)) { + return true; + } + + return false; + }, + email: function email(str) { + var emailPattern = /^\s*[\w\-+_]+(\.[\w\-+_]+)*@[\w\-+_]+\.[\w\-+_]+(\.[\w\-+_]+)*\s*$/; + return str != null && emailPattern.test(str); + }, + emailOrEmpty: function emailOrEmpty(str) { + if (str === '') { + return true; + } + + var emailPattern = /^\s*[\w\-+_]+(\.[\w\-+_]+)*@[\w\-+_]+\.[\w\-+_]+(\.[\w\-+_]+)*\s*$/; + return str != null && emailPattern.test(str); + }, + username: function username(str) { + var username = /^[a-zA-Z0-9.-]+$/; + return str != null && username.test(str); + }, + input: function input(str) { + if (str != null && str.length > 0) { + return true; + } + + return false; + } +}; + +var FormValidation = /*#__PURE__*/function () { + function FormValidation(formId, validateAll, options) { + _classCallCheck(this, FormValidation); + + this.tempOptions = {}; + this.formId = formId; + this.formError = false; + this.formObject = null; + this.errorMessages = ''; + this.popupDialog = null; + this.validateAll = validateAll; + this.errorMap = []; + this.settings = { + thirdPartyPopup: null, + LabelErrorClass: false, + ShowPopup: true + }; + this.settings = jQuery.extend(this.settings, options); + this.inputTypes = ['text', 'radio', 'checkbox', 'file', 'password', 'select-one', 'select-multi', 'textarea', 'fileupload', 'signature']; + this.validator = ValidationRules; + } // eslint-disable-next-line no-unused-vars + + + _createClass(FormValidation, [{ + key: "clearError", + value: function clearError(formInput, overrideMessage) { + var id = formInput.attr('id'); + $("#".concat(this.formId, " #field_").concat(id)).removeClass('error'); + $("#".concat(this.formId, " #help_").concat(id)).html(''); + } // eslint-disable-next-line no-unused-vars + + }, { + key: "addError", + value: function addError(formInput, overrideMessage) { + this.formError = true; + + if (formInput.attr('message') != null) { + this.errorMessages += "".concat(formInput.attr('message'), "\n"); + this.errorMap[formInput.attr('name')] = formInput.attr('message'); + } else { + this.errorMap[formInput.attr('name')] = ''; + } + + var id = formInput.attr('id'); + var validation = formInput.attr('validation'); + var message = formInput.attr('validation'); + $("#".concat(this.formId, " #field_").concat(id)).addClass('error'); + + if (message === undefined || message == null || message === '') { + $("#".concat(this.formId, " #help_err_").concat(id)).html(message); + } else if (validation === undefined || validation == null || validation === '') { + $("#".concat(this.formId, " #help_err_").concat(id)).html('Required'); + } else if (validation === 'float' || validation === 'number') { + $("#".concat(this.formId, " #help_err_").concat(id)).html('Number required'); + } else if (validation === 'email') { + $("#".concat(this.formId, " #help_err_").concat(id)).html('Email required'); + } else { + $("#".concat(this.formId, " #help_err_").concat(id)).html('Required'); + } + } + }, { + key: "showErrors", + value: function showErrors() { + if (this.formError) { + if (this.settings.thirdPartyPopup !== undefined && this.settings.thirdPartyPopup != null) { + this.settings.thirdPartyPopup.alert(); + } else if (this.settings.ShowPopup === true) { + if (this.tempOptions.popupTop !== undefined && this.tempOptions.popupTop != null) { + this.alert('Errors Found', this.errorMessages, this.tempOptions.popupTop); + } else { + this.alert('Errors Found', this.errorMessages, -1); + } + } + } + } + }, { + key: "checkValues", + value: function checkValues(options) { + this.tempOptions = options; + var that = this; + this.formError = false; + this.errorMessages = ''; + this.formObject = {}; // eslint-disable-next-line consistent-return + + var validate = function validate(inputObject) { + var inputValue = null; + var name = inputObject.attr('name'); + + if (that.settings.LabelErrorClass !== false) { + $("label[for='".concat(name, "']")).removeClass(that.settings.LabelErrorClass); + } + + var id = inputObject.attr('id'); + var type = inputObject.attr('type'); + + if (inputObject.hasClass('select2-focusser') || inputObject.hasClass('select2-input')) { + return true; + } + + if (jQuery.inArray(type, that.inputTypes) >= 0) { + if (inputObject.hasClass('uploadInput')) { + inputValue = inputObject.attr('val'); + } else if (type === 'radio' || type === 'checkbox') { + inputValue = $("input[name='".concat(name, "']:checked")).val(); + } else if (inputObject.hasClass('select2Field')) { + if ($("#".concat(that.formId, " #").concat(id)).select2('data') != null && $("#".concat(that.formId, " #").concat(id)).select2('data') !== undefined) { + inputValue = $("#".concat(that.formId, " #").concat(id)).select2('data').id; + } else { + inputValue = ''; + } + } else if (inputObject.hasClass('select2Multi')) { + if ($("#".concat(that.formId, " #").concat(id)).select2('data') != null && $("#".concat(that.formId, " #").concat(id)).select2('data') !== undefined) { + var inputValueObjects = $("#".concat(that.formId, " #").concat(id)).select2('data'); + inputValue = []; + + for (var i = 0; i < inputValueObjects.length; i++) { + inputValue.push(inputValueObjects[i].id); + } + + inputValue = JSON.stringify(inputValue); + } else { + inputValue = ''; + } + } else if (inputObject.hasClass('signatureField')) { + if ($("#".concat(that.formId, " #").concat(id)).data('signaturePad').isEmpty()) { + inputValue = ''; + } else { + inputValue = $("#".concat(id)).data('signaturePad').toDataURL(); + } + } else if (inputObject.hasClass('simplemde')) { + inputValue = $("#".concat(that.formId, " #").concat(id)).data('simplemde').value(); + } else if (inputObject.hasClass('code')) { + inputValue = $("#".concat(that.formId, " #").concat(id)).data('codemirror').getValue(); + } else if (inputObject.hasClass('tinymce')) { + inputValue = tinyMCE.get(id).getContent({ + format: 'raw' + }); + } else { + inputValue = inputObject.val(); + } + + var validation = inputObject.attr('validation'); + var valid = false; + + if (validation !== undefined && validation != null && that.validator[validation] !== undefined && that.validator[validation] != null) { + valid = that.validator[validation](inputValue); + } else { + if (that.validateAll) { + if (validation !== undefined && validation != null && validation === 'none') { + valid = true; + } else { + valid = that.validator.input(inputValue); + } + } else { + valid = true; + } + + that.formObject[id] = inputValue; + } + + if (!valid) { + that.addError(inputObject, null); + } else { + that.clearError(inputObject, null); + that.formObject[id] = inputValue; + } + } + }; + + var inputs = $("#".concat(this.formId, " :input")); + inputs.each(function () { + validate($(this)); + }); + inputs = $("#".concat(this.formId, " .uploadInput")); + inputs.each(function () { + validate($(this)); + }); + this.showErrors(); + this.tempOptions = {}; + return !this.formError; + } + }, { + key: "getFormParameters", + value: function getFormParameters() { + return this.formObject; + } + }, { + key: "alert", + value: function (_alert) { + function alert(_x, _x2) { + return _alert.apply(this, arguments); + } + + alert.toString = function () { + return _alert.toString(); + }; + + return alert; + }(function (title, text) { + alert(text); + }) + }], [{ + key: "getValidationRules", + value: function getValidationRules() { + return ValidationRules; + } + }]); + + return FormValidation; +}(); + +var _default = FormValidation; +exports["default"] = _default; + +},{}],7:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var axios = require('axios'); + +var IceApiClient = /*#__PURE__*/function () { + function IceApiClient(baseUrl, token, clientBaseUrl) { + var legacyApiWrapper = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true; + + _classCallCheck(this, IceApiClient); + + this.baseUrl = baseUrl; + this.token = token; + this.clientBaseUrl = clientBaseUrl; + this.legacyApiWrapper = legacyApiWrapper; + } + + _createClass(IceApiClient, [{ + key: "get", + value: function get(endpoint) { + if (this.legacyApiWrapper) { + var url = "".concat(this.clientBaseUrl, "api/index.php?token=").concat(this.token, "&method=get&url=/").concat(endpoint); + return axios.get(url); + } + + return axios.get(this.baseUrl + endpoint, { + headers: { + Authorization: "Bearer ".concat(this.token) + } + }); + } + }]); + + return IceApiClient; +}(); + +var _default = IceApiClient; +exports["default"] = _default; + +},{"axios":25}],8:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var axios = require('axios'); + +var IceDataPipe = /*#__PURE__*/function () { + function IceDataPipe(adapter) { + var pageSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 10; + + _classCallCheck(this, IceDataPipe); + + this.adapter = adapter; + this.pageSize = pageSize; + } + + _createClass(IceDataPipe, [{ + key: "readMetaData", + value: function readMetaData() { + this.adapter.initFieldMasterData(); + } + }, { + key: "get", + value: function get(_ref) { + var _this = this; + + var page = _ref.page, + search = _ref.search, + sortField = _ref.sortField, + sortOrder = _ref.sortOrder, + filters = _ref.filters, + limit = _ref.limit; + var pageSize = limit || this.pageSize; + var start = (page - 1) * pageSize; + var dataUrl = this.getDataUrl(this.adapter.getDataMapping(), search, filters); + var url = "".concat(dataUrl, "&iDisplayStart=").concat(start, "&iDisplayLength=").concat(pageSize); + url = this.applySortingData(this.adapter.getDataMapping(), url, sortField, sortOrder); // $.post(url, (data) => { + // that.getSuccessCallBack(callBackData, data); + // }, 'json').always(() => { that.hideLoader(); }); + + url = "".concat(url, "&version=v2"); + return axios.post(url, {}).then(function (data) { + var key = _this.getRequestKey(page, search, sortField, sortOrder, filters, limit); + + var response = { + items: data.data.objects, + total: data.data.totalRecords + }; + + if (_this.adapter.localStorageEnabled) { + window.localStorage.setItem(key, JSON.stringify(response)); + } + + return response; + }); + } + }, { + key: "getCachedResponse", + value: function getCachedResponse(_ref2) { + var page = _ref2.page, + search = _ref2.search, + sortField = _ref2.sortField, + sortOrder = _ref2.sortOrder, + filters = _ref2.filters, + limit = _ref2.limit; + var key = this.getRequestKey(page, search, sortField, sortOrder, filters, limit); + var cachedResponse = window.localStorage.getItem(key); + + if (!cachedResponse) { + return null; + } + + return JSON.parse(cachedResponse); + } + }, { + key: "clearCachedResponse", + value: function clearCachedResponse(_ref3) { + var page = _ref3.page, + search = _ref3.search, + sortField = _ref3.sortField, + sortOrder = _ref3.sortOrder, + filters = _ref3.filters, + limit = _ref3.limit; + var key = this.getRequestKey(page, search, sortField, sortOrder, filters, limit); + window.localStorage.setItem(key, null); + } + }, { + key: "getRequestKey", + value: function getRequestKey(page, search, sortField, sortOrder, filters, limit) { + return "".concat(this.adapter.table, "|").concat(page, "|").concat(search, "|").concat(sortField, "|").concat(sortOrder, "|").concat(filters, "|").concat(limit); + } + }, { + key: "applySortingData", + value: function applySortingData(columns, url, sortField, sortOrder) { + var orderBy = ''; + + if (sortField) { + url = "".concat(url, "&sorting=1"); + url = "".concat(url, "&iSortCol_0=").concat(columns.indexOf(sortField)); + url = "".concat(url, "&sSortDir_0=").concat(sortOrder === 'descend' ? 'DESC' : 'ASC'); + } else if (this.adapter.getOrderBy() !== null) { + // Setting the fix ordering + orderBy = this.adapter.getOrderBy(); + url = "".concat(url, "&ob=").concat(orderBy); + } + + return url; + } + }, { + key: "getDataUrl", + value: function getDataUrl(_columns, searchTerm, filters) { + var sourceMappingJson = JSON.stringify(this.adapter.getSourceMapping()); + var columns = JSON.stringify(_columns); + var filterJson = ''; + + if (this.adapter.getFilter() !== null) { + filterJson = JSON.stringify(this.adapter.getFilter()); + } + + var url = this.adapter.moduleRelativeURL.replace('service.php', 'data.php'); + url = "".concat(url, "?t=").concat(this.adapter.table); + url = "".concat(url, "&sm=").concat(sourceMappingJson); + url = "".concat(url, "&cl=").concat(columns); + url = "".concat(url, "&ft=").concat(filterJson); + + if (searchTerm && searchTerm.trim() !== '') { + url += "&sSearch=".concat(searchTerm); + } + + if (this.adapter.isSubProfileTable()) { + url = "".concat(url, "&type=sub"); + } + + if (this.adapter.remoteTableSkipProfileRestriction()) { + url = "".concat(url, "&skip=1"); + } + + return url; + } + }]); + + return IceDataPipe; +}(); + +var _default = IceDataPipe; +exports["default"] = _default; + +},{"axios":25}],9:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var axios = require('axios'); + +var MasterDataReader = /*#__PURE__*/function () { + function MasterDataReader(adapter) { + _classCallCheck(this, MasterDataReader); + + this.adapter = adapter; + this.requestCache = this.adapter.requestCache; + } + + _createClass(MasterDataReader, [{ + key: "fetchMasterData", + value: function fetchMasterData(fieldMaster) { + var _this = this; + + var method = ''; + var methodParams = ''; + + if (fieldMaster[3] != null) { + method = fieldMaster[3]; + } + + if (fieldMaster[4] != null) { + methodParams = JSON.stringify(fieldMaster[4]); + } + + var key = this.requestCache.getKey(this.adapter.moduleRelativeURL, { + t: fieldMaster[0], + key: fieldMaster[1], + value: fieldMaster[2], + method: method, + methodParams: methodParams, + a: 'getFieldValues' + }); + var cacheData = this.requestCache.getData(key); + + if (cacheData != null && cacheData.status === 'SUCCESS') { + return new Promise(function (resolve, reject) { + return resolve(cacheData.data); + }); + } + + var urlData = { + t: fieldMaster[0], + key: fieldMaster[1], + value: fieldMaster[2], + method: method, + methodParams: methodParams, + a: 'getFieldValues' + }; + var url = "".concat(this.adapter.moduleRelativeURL, "?_url=1"); + + for (var index in urlData) { + url = "".concat(url, "&").concat(index, "=").concat(encodeURIComponent(urlData[index])); + } // TODO - Should be a get request + + + return axios.post(url, {}).then(function (response) { + if (response.data.status !== 'SUCCESS') { + throw Error("Response for ".concat(key, " failed")); + } + + _this.requestCache.setData(key, response.data); + + return response.data.data; + }); + } + }, { + key: "updateAllMasterData", + value: function updateAllMasterData() { + var _this2 = this; + + var remoteSourceFields = this.adapter.getRemoteSourceFields(); + var promiseList = []; + + for (var i = 0; i < remoteSourceFields.length; i++) { + var fieldRemote = remoteSourceFields[i]; + + if (fieldRemote[1]['remote-source'] !== undefined && fieldRemote[1]['remote-source'] != null) { + (function () { + var key = "".concat(fieldRemote[1]['remote-source'][0], "_").concat(fieldRemote[1]['remote-source'][1], "_").concat(fieldRemote[1]['remote-source'][2]); + + if (fieldRemote[1]['remote-source'].length === 4) { + key = "".concat(key, "_").concat(fieldRemote[1]['remote-source'][3]); + } + + var masterDataPromise = _this2.fetchMasterData(fieldRemote[1]['remote-source']).then(function (data) { + _this2.adapter.fieldMasterData[key] = data; + }); + + promiseList.push(masterDataPromise); + })(); + } + } + + return Promise.all(promiseList); + } + }]); + + return MasterDataReader; +}(); + +var _default = MasterDataReader; +exports["default"] = _default; + +},{"axios":25}],10:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _FormValidation = _interopRequireDefault(require("./FormValidation")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +/** + * The base class for providing core functions to all module classes. + * @class Base.js + */ +var ModuleBase = /*#__PURE__*/function () { + function ModuleBase() { + _classCallCheck(this, ModuleBase); + + this.deleteParams = {}; + this.createRemoteTable = false; + this.instanceId = 'None'; + this.ga = []; + this.showAddNew = true; + this.showEdit = true; + this.showDelete = true; + this.showSave = true; + this.showCancel = true; + this.showFormOnPopup = false; + this.filtersAlreadySet = false; + this.currentFilterString = ''; + this.sorting = 0; + this.settings = {}; + this.translations = {}; + this.customFields = []; + this.csrfRequired = false; + this.fieldTemplates = null; + this.templates = null; + this.customTemplates = null; + this.emailTemplates = null; + this.fieldMasterData = {}; + this.fieldMasterDataKeys = {}; + this.fieldMasterDataCallback = null; + this.sourceMapping = null; + this.currentId = null; + this.currentElement = null; + this.user = null; + this.currentProfile = null; + this.permissions = {}; + this.baseUrl = null; + this.clientUrl = null; + this.that = this; + } // eslint-disable-next-line no-unused-vars + + + _createClass(ModuleBase, [{ + key: "init", + value: function init(appName, currentView, dataUrl, permissions) {} + }, { + key: "initForm", + value: function initForm() {} + }, { + key: "setObjectTypeName", + value: function setObjectTypeName(objectTypeName) { + this.objectTypeName = objectTypeName; + } + /** + * Some browsers do not support sending JSON in get parameters. Set this to true to avoid sending JSON + * @method setNoJSONRequests + * @param val {Boolean} + */ + + }, { + key: "setNoJSONRequests", + value: function setNoJSONRequests(val) { + this.noJSONRequests = val; + } + }, { + key: "setPermissions", + value: function setPermissions(permissions) { + this.permissions = permissions; + } + }, { + key: "sortingStarted", + value: function sortingStarted(val) { + this.sorting = val; + } + /** + * Check if the current user has a permission + * @method checkPermission + * @param permission {String} + * @example + * this.checkPermission("Upload/Delete Profile Image") + */ + + }, { + key: "checkPermission", + value: function checkPermission(permission) { + if (this.permissions[permission] === undefined || this.permissions[permission] == null || this.permissions[permission] === 'Yes') { + return 'Yes'; + } + + return this.permissions[permission]; + } + }, { + key: "setBaseUrl", + value: function setBaseUrl(url) { + this.baseUrl = url; + } + }, { + key: "setClientUrl", + value: function setClientUrl(url) { + this.clientUrl = url; + } + }, { + key: "setUser", + value: function setUser(user) { + this.user = user; + } + }, { + key: "getUser", + value: function getUser() { + return this.user; + } + }, { + key: "setInstanceId", + value: function setInstanceId(id) { + this.instanceId = id; + } + }, { + key: "setCSRFRequired", + value: function setCSRFRequired(val) { + this.csrfRequired = val; + } + }, { + key: "scrollToTop", + value: function scrollToTop() { + $('html, body').animate({ + scrollTop: 0 + }, 'fast'); + } + }, { + key: "scrollToBottom", + value: function scrollToBottom() { + $('html, body').animate({ + scrollTop: $(document).height() + }, 'slow'); + } + }, { + key: "scrollToElement", + value: function scrollToElement(element) { + if ($(window).height() <= element.offset().top) { + $('html, body').animate({ + scrollTop: element.offset().top + }, 'slow'); + } + } + }, { + key: "scrollToElementBottom", + value: function scrollToElementBottom(element) { + if ($(window).height() <= element.offset().top + element.height()) { + $('html, body').animate({ + scrollTop: element.offset().top + element.height() + }, 'slow'); + } + } + }, { + key: "setTranslations", + value: function setTranslations(txt) { + this.translations = txt.messages['']; + } + }, { + key: "setTranslationsSubModules", + value: function setTranslationsSubModules(translations) { + this.translations = translations; + } + }, { + key: "gt", + value: function gt(key) { + if (this.translations[key] === undefined || this.translations[key] === null) { + console.log("Tr:".concat(key)); + return key; + } + + return this.translations[key][0]; + } + }, { + key: "addToLangTerms", + value: function addToLangTerms(key) { + var termsArr; + var terms = localStorage.getItem('terms'); + + if (terms === undefined) { + termsArr = {}; + } else { + try { + termsArr = JSON.parse(terms); + } catch (e) { + termsArr = {}; + } + } + + if (this.translations[key] === undefined) { + termsArr[key] = key; + localStorage.setItem('terms', JSON.stringify(termsArr)); + } + } + /** + * If this method returned false the action buttons in data table for modules will not be displayed. + * Override this method in module lib.js to hide action buttons + * @method showActionButtons + * @param permission {String} + * @example + * EmployeeLeaveEntitlementAdapter.method('showActionButtons() { + * return false; + * } + */ + + }, { + key: "showActionButtons", + value: function showActionButtons() { + return true; + } + }, { + key: "trackEvent", + value: function trackEvent(action, label, value) { + try { + if (label === undefined || label == null) { + this.ga.push(['_trackEvent', this.instanceId, action]); + } else if (value === undefined || value == null) { + this.ga.push(['_trackEvent', this.instanceId, action, label]); + } else { + this.ga.push(['_trackEvent', this.instanceId, action, label, value]); + } + } catch (e) {// Do nothing + } + } + }, { + key: "setCurrentProfile", + value: function setCurrentProfile(currentProfile) { + this.currentProfile = currentProfile; + } + /** + * Get the current profile + * @method getCurrentProfile + * @returns Profile of the current user if the profile is not switched if not switched profile + */ + + }, { + key: "getCurrentProfile", + value: function getCurrentProfile() { + return this.currentProfile; + } + /** + * Retrive data required to create select boxes for add new /edit forms for a given module. This is called when loading the module + * @method initFieldMasterData + * @param callback {Function} call this once loading completed + * @param callback {Function} call this once all field loading completed. This indicate that the form can be displayed saftly + * @example + * ReportAdapter.method('renderForm(object) { + * var that = this; + * this.processFormFieldsWithObject(object); + * var cb = function(){ + * that.super.renderForm(object); + * }; + * this.initFieldMasterData(cb); + * } + */ + + }, { + key: "initFieldMasterData", + value: function initFieldMasterData(callback, loadAllCallback, loadAllCallbackData) { + this.fieldMasterData = {}; + this.fieldMasterDataKeys = {}; + this.fieldMasterDataCallback = loadAllCallback; + this.fieldMasterDataCallbackData = loadAllCallbackData; + var remoteSourceFields = this.getRemoteSourceFields(); + + for (var i = 0; i < remoteSourceFields.length; i++) { + var fieldRemote = remoteSourceFields[i]; + + if (fieldRemote[1]['remote-source'] !== undefined && fieldRemote[1]['remote-source'] != null) { + // let key = `${fieldRemote[1]['remote-source'][0]}_${fieldRemote[1]['remote-source'][1]}_${fieldRemote[1]['remote-source'][2]}`; + // if (fieldRemote[1]['remote-source'].length === 4) { + // key = `${key}_${fieldRemote[1]['remote-source'][3]}`; + // } + var key = this.getRemoteSourceKey(fieldRemote); + this.fieldMasterDataKeys[key] = false; + var callBackData = {}; + callBackData.callBack = 'initFieldMasterDataResponse'; + callBackData.callBackData = [key]; + + if (callback !== null && callback !== undefined) { + callBackData.callBackSuccess = callback; + } + + this.getFieldValues(fieldRemote[1]['remote-source'], callBackData); + } + } + } + }, { + key: "initSourceMappings", + value: function initSourceMappings() { + this.sourceMapping = {}; + var remoteSourceFields = this.getRemoteSourceFields(); + + for (var i = 0; i < remoteSourceFields.length; i++) { + var fieldRemote = remoteSourceFields[i]; + + if (fieldRemote[1]['remote-source'] !== undefined && fieldRemote[1]['remote-source'] != null) { + this.sourceMapping[fieldRemote[0]] = fieldRemote[1]['remote-source']; + } + } + } + }, { + key: "getRemoteSourceKey", + value: function getRemoteSourceKey(field) { + var key = "".concat(field[1]['remote-source'][0], "_").concat(field[1]['remote-source'][1], "_").concat(field[1]['remote-source'][2]); + + if (field[1]['remote-source'].length > 3) { + key = "".concat(key, "_").concat(field[1]['remote-source'][3]); + } + + return key; + } + }, { + key: "getRemoteSourceFields", + value: function getRemoteSourceFields() { + var values; + var fields = this.getFormFields(); + var filterFields = this.getFilters(); + + if (filterFields != null) { + for (var j = 0; j < filterFields.length; j++) { + values = this.getMetaFieldValues(filterFields[j][0], fields); + + if (values == null || values.type !== 'select' && values.type !== 'select2' && values.type !== 'select2multi') { + fields.push(filterFields[j]); + } + } + } + + var remoteSourceFields = []; + var remoteSourceFieldKeys = []; + var field = null; + var fieldSub = null; + + for (var i = 0; i < fields.length; i++) { + field = fields[i]; + + if (field[1]['remote-source'] !== undefined && field[1]['remote-source'] !== null) { + var key = this.getRemoteSourceKey(field); + + if (remoteSourceFieldKeys.indexOf(key) < 0) { + remoteSourceFields.push(field); + remoteSourceFieldKeys.push(key); + } + } else if (field[1].form !== undefined && field[1].form !== null) { + for (var _j = 0; _j < field[1].form.length; _j++) { + fieldSub = field[1].form[_j]; + + if (fieldSub[1]['remote-source'] !== undefined && fieldSub[1]['remote-source'] !== null) { + var _key = this.getRemoteSourceKey(fieldSub); + + if (remoteSourceFieldKeys.indexOf(_key) < 0) { + remoteSourceFields.push(fieldSub); + remoteSourceFieldKeys.push(_key); + } + } + } + } + } + + return remoteSourceFields; + } + /** + * Pass true to this method after creating module JS object to open new/edit entry form for the module on a popup. + * @method setShowFormOnPopup + * @param val {Boolean} + * @example + * modJs.subModJsList['tabCandidateApplication'] = new CandidateApplicationAdapter('Application','CandidateApplication',{"candidate":data.id} + * modJs.subModJsList['tabCandidateApplication'].setShowFormOnPopup(true); + */ + + }, { + key: "setShowFormOnPopup", + value: function setShowFormOnPopup(val) { + this.showFormOnPopup = val; + } + /** + * Set this to true to if you need the datatable to load data page by page instead of loading all data at once. + * @method setRemoteTable + * @param val {Boolean} + * @example + * modJs.subModJsList['tabCandidateApplication'] = new CandidateApplicationAdapter('Application','CandidateApplication',{"candidate":data.id} + * modJs.subModJsList['tabCandidateApplication'].setRemoteTable(true); + */ + + }, { + key: "setRemoteTable", + value: function setRemoteTable(val) { + this.createRemoteTable = val; + } + }, { + key: "setSettings", + value: function setSettings(val) { + this.settings = val; + } + }, { + key: "getRemoteTable", + value: function getRemoteTable() { + return this.createRemoteTable; + } + }, { + key: "isAllLoaded", + value: function isAllLoaded(fieldMasterDataKeys) { + for (var key in fieldMasterDataKeys) { + if (fieldMasterDataKeys[key] === false) { + return false; + } + } + + return true; + } // eslint-disable-next-line no-unused-vars + + }, { + key: "initFieldMasterDataResponse", + value: function initFieldMasterDataResponse(key, data, callback, loadAllCallbackData) { + this.fieldMasterData[key] = data; + this.fieldMasterDataKeys[key] = true; + + if (callback !== undefined && callback !== null) { + callback(); + } + + if (this.fieldMasterDataCallback !== null && this.fieldMasterDataCallback !== undefined && this.isAllLoaded(this.fieldMasterDataKeys) && this.fieldMasterDataCallbackData !== null && this.fieldMasterDataCallbackData !== undefined) { + this.fieldMasterDataCallback(this.fieldMasterDataCallbackData); + } else if (this.fieldMasterDataCallback !== null && this.fieldMasterDataCallback !== undefined && this.isAllLoaded(this.fieldMasterDataKeys)) { + this.fieldMasterDataCallback(); + } + } + }, { + key: "getMetaFieldValues", + value: function getMetaFieldValues(key, fields) { + for (var i = 0; i < fields.length; i++) { + if (key === fields[i][0]) { + return fields[i][1]; + } + } + + return null; + } + }, { + key: "getThemeColors", + value: function getThemeColors() { + var colors = ['red', 'yellow', 'aqua', 'blue', 'light-blue', 'green', 'navy', 'teal', 'olive', 'orange', 'fuchsia', 'purple']; + return colors; + } + }, { + key: "getColorByRandomString", + value: function getColorByRandomString(string) { + var colors = this.getThemeColors(); + var k = string.charCodeAt(0); + return colors[k % colors.length]; + } + }, { + key: "getColorByFileType", + value: function getColorByFileType(type) { + type = type.toLowerCase(); + var colorMap = {}; + colorMap.pdf = 'red'; + colorMap.csv = 'yellow'; + colorMap.xls = 'green'; + colorMap.xlsx = 'green'; + colorMap.doc = 'light-blue'; + colorMap.docx = 'light-blue'; + colorMap.docx = 'blue'; + colorMap.ppt = 'orange'; + colorMap.pptx = 'orange'; + colorMap.jpg = 'teal'; + colorMap.jpeg = 'teal'; + colorMap.gif = 'green'; + colorMap.png = 'yellow'; + colorMap.bmp = 'fuchsia'; + + if (colorMap[type] !== undefined || colorMap[type] != null) { + return colorMap[type]; + } + + return this.getColorByRandomString(type); + } + }, { + key: "getIconByFileType", + value: function getIconByFileType(type) { + type = type.toLowerCase(); + var iconMap = {}; + iconMap.pdf = 'fa fa-file-pdf-o'; + iconMap.csv = 'fa fa fa-file-code-o'; + iconMap.xls = 'fa fa-file-excel-o'; + iconMap.xlsx = 'fa fa-file-excel-o'; + iconMap.doc = 'fa fa-file-word-o'; + iconMap.docx = 'fa fa-file-word-o'; + iconMap.ppt = 'fa fa-file-powerpoint-o'; + iconMap.pptx = 'fa fa-file-powerpoint-o'; + iconMap.jpg = 'fa fa-file-image-o'; + iconMap.jpeg = 'fa fa-file-image-o'; + iconMap.gif = 'fa fa-file-image-o'; + iconMap.png = 'fa fa-file-image-o'; + iconMap.bmp = 'fa fa-file-image-o'; + iconMap.txt = 'fa fa-file-text-o'; + iconMap.rtf = 'fa fa-file-text-o'; + + if (iconMap[type] !== undefined || iconMap[type] != null) { + return iconMap[type]; + } + + return 'fa fa-file-o'; + } + }, { + key: "getSourceMapping", + value: function getSourceMapping() { + return this.sourceMapping; + } + }, { + key: "setTesting", + value: function setTesting(testing) { + this.testing = testing; + } + }, { + key: "consoleLog", + value: function consoleLog(message) { + if (this.testing) { + console.log(message); + } + } + }, { + key: "setClientMessages", + value: function setClientMessages(msgList) { + this.msgList = msgList; + } + }, { + key: "setTemplates", + value: function setTemplates(templates) { + this.templates = templates; + } + }, { + key: "getWSProperty", + value: function getWSProperty(array, key) { + if (array.hasOwnProperty(key)) { + return array[key]; + } + + return null; + } + }, { + key: "getClientMessage", + value: function getClientMessage(key) { + return this.getWSProperty(this.msgList, key); + } + }, { + key: "getTemplate", + value: function getTemplate(key) { + return this.getWSProperty(this.templates, key); + } + }, { + key: "setGoogleAnalytics", + value: function setGoogleAnalytics(gaq) { + this.gaq = gaq; + } + }, { + key: "showView", + value: function showView(view) { + if (this.currentView != null) { + this.previousView = this.currentView; + $("#".concat(this.currentView)).hide(); + } + + $("#".concat(view)).show(); + this.currentView = view; + this.moveToTop(); + } + }, { + key: "showPreviousView", + value: function showPreviousView() { + this.showView(this.previousView); + } + }, { + key: "moveToTop", + value: function moveToTop() {} + }, { + key: "callFunction", + value: function callFunction(callback, cbParams, thisParam) { + if ($.isFunction(callback)) { + try { + if (thisParam === undefined || thisParam === null) { + callback.apply(document, cbParams); + } else { + callback.apply(thisParam, cbParams); + } + } catch (e) { + console.log(e.message); + } + } else { + var f = this[callback]; + + if ($.isFunction(f)) { + try { + f.apply(this, cbParams); + } catch (e) { + console.log(e.message); + } + } + } + } + }, { + key: "getTableTopButtonHtml", + value: function getTableTopButtonHtml() { + var html = ''; + + if (this.getShowAddNew()) { + html = ""); + } + + if (this.getFilters() != null) { + if (html !== '') { + html += '  '; + } + + html += ""); + html += '  '; + + if (this.filtersAlreadySet) { + html += ''; + } else { + html += ''; + } + } + + html = html.replace(/__id__/g, this.getTableName()); + + if (this.currentFilterString !== '' && this.currentFilterString != null) { + html = html.replace(/__filterString__/g, this.currentFilterString); + } else { + html = html.replace(/__filterString__/g, 'Reset Filters'); + } + + if (html !== '') { + html = "
".concat(html, "
"); + } + + return html; + } + }, { + key: "getActionButtonHeader", + value: function getActionButtonHeader() { + return { + sTitle: '', + sClass: 'center' + }; + } + }, { + key: "getTableHTMLTemplate", + value: function getTableHTMLTemplate() { + return '
'; + } + }, { + key: "isSortable", + value: function isSortable() { + return true; + } + /** + * Create the data table on provided element id + * @method createTable + * @param val {Boolean} + */ + + }, { + key: "createTable", + value: function createTable(elementId) { + var that = this; + + if (this.getRemoteTable()) { + this.createTableServer(elementId); + return; + } + + var headers = this.getHeaders(); // add translations + + for (var index in headers) { + headers[index].sTitle = this.gt(headers[index].sTitle); + } + + var data = this.getTableData(); + + if (this.showActionButtons()) { + headers.push(this.getActionButtonHeader()); + } + + if (this.showActionButtons()) { + for (var i = 0; i < data.length; i++) { + data[i].push(this.getActionButtonsHtml(data[i][0], data[i])); + } + } + + var html = ''; + html = this.getTableTopButtonHtml() + this.getTableHTMLTemplate(); + /* + if(this.getShowAddNew()){ + html = this.getTableTopButtonHtml()+'
'; + }else{ + html = '
'; + } + */ + // Find current page + + var activePage = $("#".concat(elementId, " .dataTables_paginate .active a")).html(); + var start = 0; + + if (activePage !== undefined && activePage != null) { + start = parseInt(activePage, 10) * 15 - 15; + } + + $("#".concat(elementId)).html(html); + var dataTableParams = { + oLanguage: { + sLengthMenu: '_MENU_ records per page' + }, + aaData: data, + aoColumns: headers, + bSort: that.isSortable(), + iDisplayLength: 15, + iDisplayStart: start + }; + var customTableParams = this.getCustomTableParams(); + $.extend(dataTableParams, customTableParams); + $("#".concat(elementId, " #grid")).dataTable(dataTableParams); + $('.dataTables_paginate ul').addClass('pagination'); + $('.dataTables_length').hide(); + $('.dataTables_filter input').addClass('form-control'); + $('.dataTables_filter input').attr('placeholder', 'Search'); + $('.dataTables_filter label').contents().filter(function () { + return this.nodeType === 3; + }).remove(); + $('.tableActionButton').tooltip(); + } + /** + * Create a data table on provided element id which loads data page by page + * @method createTableServer + * @param val {Boolean} + */ + + }, { + key: "createTableServer", + value: function createTableServer(elementId) { + var that = this; + var headers = this.getHeaders(); + headers.push({ + sTitle: '', + sClass: 'center' + }); // add translations + + for (var index in headers) { + headers[index].sTitle = this.gt(headers[index].sTitle); + } + + var html = ''; + html = this.getTableTopButtonHtml() + this.getTableHTMLTemplate(); // Find current page + + var activePage = $("#".concat(elementId, " .dataTables_paginate .active a")).html(); + var start = 0; + + if (activePage !== undefined && activePage != null) { + start = parseInt(activePage, 10) * 15 - 15; + } + + $("#".concat(elementId)).html(html); + var dataTableParams = { + oLanguage: { + sLengthMenu: '_MENU_ records per page' + }, + bProcessing: true, + bServerSide: true, + sAjaxSource: that.getDataUrl(that.getDataMapping()), + aoColumns: headers, + bSort: that.isSortable(), + parent: that, + iDisplayLength: 15, + iDisplayStart: start + }; + + if (this.showActionButtons()) { + dataTableParams.aoColumnDefs = [{ + fnRender: that.getActionButtons, + aTargets: [that.getDataMapping().length] + }]; + } + + var customTableParams = this.getCustomTableParams(); + $.extend(dataTableParams, customTableParams); + $("#".concat(elementId, " #grid")).dataTable(dataTableParams); + $('.dataTables_paginate ul').addClass('pagination'); + $('.dataTables_length').hide(); + $('.dataTables_filter input').addClass('form-control'); + $('.dataTables_filter input').attr('placeholder', 'Search'); + $('.dataTables_filter label').contents().filter(function () { + return this.nodeType === 3; + }).remove(); + $('.tableActionButton').tooltip(); + } + /** + * This should be overridden in module lib.js classes to return module headers which are used to create the data table. + * @method getHeaders + * @example + SettingAdapter.method('getHeaders() { + return [ + { "sTitle": "ID" ,"bVisible":false}, + { "sTitle": "Name" }, + { "sTitle": "Value"}, + { "sTitle": "Details"} + ]; + } + */ + + }, { + key: "getHeaders", + value: function getHeaders() {} + /** + * This should be overridden in module lib.js classes to return module field values which are used to create the data table. + * @method getDataMapping + * @example + SettingAdapter.method('getDataMapping() { + return [ + "id", + "name", + "value", + "description" + ]; + } + */ + + }, { + key: "getDataMapping", + value: function getDataMapping() {} + /** + * This should be overridden in module lib.js classes to return module from fields which are used to create the add/edit form and also used for initializing select box values in form. + * @method getFormFields + * @example + SettingAdapter.method('getFormFields() { + return [ + [ "id", {"label":"ID","type":"hidden"}], + [ "value", {"label":"Value","type":"text","validation":"none"}] + ]; + } + */ + + }, { + key: "getFormFields", + value: function getFormFields() {} + }, { + key: "getTableColumns", + value: function getTableColumns() { + return []; + } + }, { + key: "getTableData", + value: function getTableData() {} + /** + * This can be overridden in module lib.js classes inorder to show a filter form + * @method getFilters + * @example + EmployeeAdapter.method('getFilters() { + return [ + [ "job_title", {"label":"Job Title","type":"select2","allow-null":true,"null-label":"All Job Titles","remote-source":["JobTitle","id","name"]}], + [ "department", {"label":"Department","type":"select2","allow-null":true,"null-label":"All Departments","remote-source":["CompanyStructure","id","title"]}], + [ "supervisor", {"label":"Supervisor","type":"select2","allow-null":true,"null-label":"Anyone","remote-source":["Employee","id","first_name+last_name"]}] + ]; + } + */ + + }, { + key: "getFilters", + value: function getFilters() { + return null; + } + /** + * Show the edit form for an item + * @method edit + * @param id {int} id of the item to edit + */ + + }, { + key: "edit", + value: function edit(id) { + this.currentId = id; + this.getElement(id, []); + } + }, { + key: "copyRow", + value: function copyRow(id) { + this.getElement(id, [], true); + } + }, { + key: "renderModel", + value: function renderModel(id, header, body) { + $("#".concat(id, "ModelBody")).html(''); + + if (body === undefined || body == null) { + body = ''; + } + + $("#".concat(id, "ModelLabel")).html(header); + $("#".concat(id, "ModelBody")).html(body); + } + }, { + key: "renderYesNoModel", + value: function renderYesNoModel(header, body, yesBtnName, noBtnName, callback, callbackParams) { + var that = this; + var modelId = '#yesnoModel'; + + if (body === undefined || body == null) { + body = ''; + } + + $("".concat(modelId, "Label")).html(header); + $("".concat(modelId, "Body")).html(body); + + if (yesBtnName != null) { + $("".concat(modelId, "YesBtn")).html(yesBtnName); + } + + if (noBtnName != null) { + $("".concat(modelId, "NoBtn")).html(noBtnName); + } + + $("".concat(modelId, "YesBtn")).off().on('click', function () { + if (callback !== undefined && callback != null) { + callback.apply(that, callbackParams); + that.cancelYesno(); + } + }); + $(modelId).modal({ + backdrop: 'static' + }); + } + }, { + key: "renderModelFromDom", + value: function renderModelFromDom(id, header, element) { + $("#".concat(id, "ModelBody")).html(''); + + if (element === undefined || element == null) { + element = $('
'); + } + + $("#".concat(id, "ModelLabel")).html(header); + $("#".concat(id, "ModelBody")).html(''); + $("#".concat(id, "ModelBody")).append(element); + } + /** + * Delete an item + * @method deleteRow + * @param id {int} id of the item to edit + */ + + }, { + key: "deleteRow", + value: function deleteRow(id) { + this.deleteParams.id = id; + this.renderModel('delete', 'Confirm Deletion', 'Are you sure you want to delete this item ?'); + $('#deleteModel').modal('show'); + } + /** + * Show a popup with message + * @method showMessage + * @param title {String} title of the message box + * @param message {String} message + * @param closeCallback {Function} this will be called once the dialog is closed (optional) + * @param closeCallback {Function} data to pass to close callback (optional) + * @param closeCallbackData + * @param isPlain {Boolean} if true buttons are not shown (optional / default = true) + * @example + * this.showMessage("Error Occured while Applying Leave", callBackData); + */ + + }, { + key: "showMessage", + value: function showMessage(title, message) { + var closeCallback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; + var closeCallbackData = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; + var isPlain = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; + var that = this; + var modelId = ''; + + if (isPlain) { + modelId = '#plainMessageModel'; + } else { + modelId = '#messageModel'; + } + + $(modelId).off(); + + if (isPlain) { + this.renderModel('plainMessage', title, message); + } else { + this.renderModel('message', title, message); + } + + if (closeCallback !== null && closeCallback !== undefined) { + $(modelId).modal({ + show: true + }); + $(modelId).on('hidden.bs.modal', function () { + closeCallback.apply(that, closeCallbackData); + $('.modal-backdrop').remove(); + }); + } else { + $(modelId).modal({ + backdrop: 'static' + }); + } + } + }, { + key: "showDomElement", + value: function showDomElement(title, element, closeCallback, closeCallbackData, isPlain) { + var that = this; + var modelId = ''; + + if (isPlain) { + modelId = '#dataMessageModel'; + } else { + modelId = '#messageModel'; + } + + $(modelId).unbind('hide'); + + if (isPlain) { + this.renderModelFromDom('dataMessage', title, element); + } else { + this.renderModelFromDom('message', title, element); + } + + if (closeCallback !== null && closeCallback !== undefined) { + $(modelId).modal({ + show: true + }); + $(modelId).on('hidden.bs.modal', function () { + closeCallback.apply(that, closeCallbackData); + $('.modal-backdrop').remove(); + }); + } else { + $(modelId).modal({ + backdrop: 'static' + }); + } + } + }, { + key: "confirmDelete", + value: function confirmDelete() { + if (this.deleteParams.id !== undefined || this.deleteParams.id != null) { + this.deleteObj(this.deleteParams.id, []); + } + + $('#deleteModel').modal('hide'); + } + }, { + key: "cancelDelete", + value: function cancelDelete() { + $('#deleteModel').modal('hide'); + this.deleteParams.id = null; + } + }, { + key: "closeMessage", + value: function closeMessage() { + $('#messageModel').modal('hide'); + } + }, { + key: "cancelYesno", + value: function cancelYesno() { + $('#yesnoModel').modal('hide'); + } + }, { + key: "closePlainMessage", + value: function closePlainMessage() { + $('#plainMessageModel').modal('hide'); + $('#dataMessageModel').modal('hide'); + } + }, { + key: "closeDataMessage", + value: function closeDataMessage() { + $('#dataMessageModel').modal('hide'); + } + /** + * Create or edit an element + * @method save + * @param getFunctionCallBackData {Array} once a success is returned call get() function for this module with these parameters + * @param successCallback {Function} this will get called after success response + */ + + }, { + key: "save", + value: function save(callGetFunction, successCallback) { + var validator = new _FormValidation["default"]("".concat(this.getTableName(), "_submit"), true, { + ShowPopup: false, + LabelErrorClass: 'error' + }); + + if (validator.checkValues()) { + var params = validator.getFormParameters(); + params = this.forceInjectValuesBeforeSave(params); + var msg = this.doCustomValidation(params); + + if (msg == null) { + if (this.csrfRequired) { + params.csrf = $("#".concat(this.getTableName(), "Form")).data('csrf'); + } + + var id = $("#".concat(this.getTableName(), "_submit #id")).val(); + + if (id != null && id !== undefined && id !== '') { + params.id = id; + } + + params = this.makeEmptyDateFieldsNull(params); + this.add(params, [], callGetFunction, successCallback); + } else { + $("#".concat(this.getTableName(), "Form .label")).html(msg); + $("#".concat(this.getTableName(), "Form .label")).show(); + this.scrollToTop(); + } + } + } + }, { + key: "makeEmptyDateFieldsNull", + value: function makeEmptyDateFieldsNull(params) { + var fields = this.getFormFields(); + fields.forEach(function (field) { + if ((field[1].type === 'date' || field[1].type === 'datetime') && (params[field[0]] === '' || params[field[0]] === '0000-00-00' || params[field[0]] === '0000-00-00 00:00:00')) { + if (field[1].validation === 'none') { + params[field[0]] = 'NULL'; + } else { + delete params[field[0]]; + } + } + }); + return params; + } + }, { + key: "validatePassword", + value: function validatePassword(password) { + if (password.length < 8) { + return this.gt('Password too short'); + } + + if (password.length > 30) { + return this.gt('Password too long'); + } + + var numberTester = /.*[0-9]+.*$/; + + if (!password.match(numberTester)) { + return this.gt('Password must include at least one number'); + } + + var lowerTester = /.*[a-z]+.*$/; + + if (!password.match(lowerTester)) { + return this.gt('Password must include at least one lowercase letter'); + } + + var upperTester = /.*[A-Z]+.*$/; + + if (!password.match(upperTester)) { + return this.gt('Password must include at least one uppercase letter'); + } + + var symbolTester = /.*[\W]+.*$/; + + if (!password.match(symbolTester)) { + return this.gt('Password must include at least one symbol'); + } + + return null; + } + /** + * Override this method to inject attitional parameters or modify existing parameters retrived from + * add/edit form before sending to the server + * @method forceInjectValuesBeforeSave + * @param params {Array} keys and values in form + * @returns {Array} modified parameters + */ + + }, { + key: "forceInjectValuesBeforeSave", + value: function forceInjectValuesBeforeSave(params) { + return params; + } + /** + * Override this method to do custom validations at client side + * @method doCustomValidation + * @param params {Array} keys and values in form + * @returns {Null or String} return null if validation success, returns error message if unsuccessful + * @example + EmployeeLeaveAdapter.method('doCustomValidation(params) { + try{ + if(params['date_start'] != params['date_end']){ + var ds = new Date(params['date_start']); + var de = new Date(params['date_end']); + if(de < ds){ + return "Start date should be earlier than end date of the leave period"; + } + } + }catch(e){ + } + return null; + } + */ + // eslint-disable-next-line no-unused-vars + + }, { + key: "doCustomValidation", + value: function doCustomValidation(params) { + return null; + } + }, { + key: "filterQuery", + value: function filterQuery() { + var validator = new _FormValidation["default"]("".concat(this.getTableName(), "_filter"), true, { + ShowPopup: false, + LabelErrorClass: 'error' + }); + + if (validator.checkValues()) { + var params = validator.getFormParameters(); + + if (this.doCustomFilterValidation(params)) { + // remove null params + for (var prop in params) { + if (params.hasOwnProperty(prop)) { + if (params[prop] === 'NULL') { + delete params[prop]; + } + } + } + + this.setFilter(params); + this.filtersAlreadySet = true; + $("#".concat(this.getTableName(), "_resetFilters")).show(); + this.currentFilterString = this.getFilterString(params); + this.get([]); + this.closePlainMessage(); + } + } + } + }, { + key: "getFilterString", + value: function getFilterString(filters) { + var str = ''; + var rmf; + var source; + var values; + var select2MVal; + var value; + var valueOrig; + var filterFields = this.getFilters(); + + if (values == null) { + values = []; + } + + for (var prop in filters) { + if (filters.hasOwnProperty(prop)) { + values = this.getMetaFieldValues(prop, filterFields); + + if (!values) { + continue; + } + + value = ''; + valueOrig = null; + + if (values.type === 'select' || values.type === 'select2') { + if (values['remote-source'] !== undefined && values['remote-source'] != null) { + rmf = values['remote-source']; + + if (filters[prop] === 'NULL') { + if (values['null-label'] !== undefined && values['null-label'] != null) { + value = values['null-label']; + } else { + value = 'Not Selected'; + } + } else { + var key = "".concat(rmf[0], "_").concat(rmf[1], "_").concat(rmf[2]); + + if (rmf.length > 3) { + key = "".concat(key, "_").concat(rmf[3]); + } // value = this.fieldMasterData[`${rmf[0]}_${rmf[1]}_${rmf[2]}`][filters[prop]]; + + + value = this.fieldMasterData[key][filters[prop]]; + valueOrig = value; + } + } else { + source = values.source[0]; + + if (filters[prop] === 'NULL') { + if (values['null-label'] !== undefined && values['null-label'] != null) { + value = values['null-label']; + } else { + value = 'Not Selected'; + } + } else { + for (var i = 0; i < source.length; i++) { + if (filters[prop] === values.source[i][0]) { + value = values.source[i][1]; + valueOrig = value; + break; + } + } + } + } + } else if (values.type === 'select2multi') { + select2MVal = []; + + try { + select2MVal = JSON.parse(filters[prop]); + } catch (e) {// Do nothing + } + + value = select2MVal.join(','); + + if (value !== '') { + valueOrig = value; + } + } else { + value = filters[prop]; + + if (value !== '') { + valueOrig = value; + } + } + + if (valueOrig != null) { + if (str !== '') { + str += ' | '; + } + + str += "".concat(values.label, " = ").concat(value); + } + } + } + + return str; + } + /** + * Override this method to do custom validations at client side for values selected in filters + * @method doCustomFilterValidation + * @param params {Array} keys and values in form + * @returns {Null or String} return null if validation success, returns error message if unsuccessful + */ + + }, { + key: "doCustomFilterValidation", + value: function doCustomFilterValidation(params) { + return true; + } + /** + * Reset selected filters + * @method resetFilters + */ + + }, { + key: "resetFilters", + value: function resetFilters() { + this.filter = this.origFilter; + this.filtersAlreadySet = false; + $("#".concat(this.getTableName(), "_resetFilters")).hide(); + this.currentFilterString = ''; + this.get([]); + } + }, { + key: "showFilters", + value: function showFilters(object) { + var formHtml = this.templates.filterTemplate; + var html = ''; + var fields = this.getFilters(); + + for (var i = 0; i < fields.length; i++) { + var metaField = this.getMetaFieldForRendering(fields[i][0]); + + if (metaField === '' || metaField === undefined) { + html += this.renderFormField(fields[i]); + } else { + var metaVal = object[metaField]; + + if (metaVal !== '' && metaVal != null && metaVal !== undefined && metaVal.trim() !== '') { + html += this.renderFormField(JSON.parse(metaVal)); + } else { + html += this.renderFormField(fields[i]); + } + } + } + + formHtml = formHtml.replace(/_id_/g, "".concat(this.getTableName(), "_filter")); + formHtml = formHtml.replace(/_fields_/g, html); + var randomFormId = this.generateRandom(14); + var $tempDomObj = $('
'); + $tempDomObj.attr('id', randomFormId); + $tempDomObj.html(formHtml); + $tempDomObj.find('.datefield').datepicker({ + viewMode: 2 + }); + $tempDomObj.find('.timefield').datetimepicker({ + language: 'en', + pickDate: false + }); + $tempDomObj.find('.datetimefield').datetimepicker({ + language: 'en' + }); + $tempDomObj.find('.colorpick').colorpicker(); + tinymce.init({ + selector: "#".concat($tempDomObj.attr('id'), " .tinymce"), + height: '400' + }); + $tempDomObj.find('.simplemde').each(function () { + var simplemde = new SimpleMDE({ + element: $(this)[0] + }); + $(this).data('simplemde', simplemde); // simplemde.value($(this).val()); + }); // $tempDomObj.find('.select2Field').select2(); + + $tempDomObj.find('.select2Field').each(function () { + $(this).select2().select2('val', $(this).find('option:eq(0)').val()); + }); + $tempDomObj.find('.select2Multi').each(function () { + $(this).select2().on('change', function (e) { + var parentRow = $(this).parents('.row'); + var height = parentRow.find('.select2-choices').height(); + parentRow.height(parseInt(height, 10)); + }); + }); + /* + $tempDomObj.find('.signatureField').each(function() { + $(this).data('signaturePad',new SignaturePad($(this))); + }); + */ + // var tHtml = $tempDomObj.wrap('
').parent().html(); + + this.showDomElement('Edit', $tempDomObj, null, null, true); + $('.filterBtn').off(); + $('.filterBtn').on('click', function (e) { + e.preventDefault(); + e.stopPropagation(); + + try { + modJs.filterQuery(); + } catch (err) { + console.log(err); + console.log(err.message); + } + + return false; + }); + + if (this.filter !== undefined && this.filter != null && this.filter !== '') { + this.fillForm(this.filter, "#".concat(this.getTableName(), "_filter"), this.getFilters()); + } + } + /** + * Override this method in your module class to make changes to data fo the form before showing the form + * @method preRenderForm + * @param object {Array} keys value list for populating form + */ + + }, { + key: "preRenderForm", + value: function preRenderForm(object) {} + /** + * Create the form + * @method renderForm + * @param object {Array} keys value list for populating form + */ + + }, { + key: "renderForm", + value: function renderForm(object) { + var signatureIds = []; + + if (object == null || object === undefined) { + this.currentId = null; + } + + this.preRenderForm(object); + var formHtml = this.templates.formTemplate; + var html = ''; + var fields = this.getFormFields(); + + for (var i = 0; i < fields.length; i++) { + var metaField = this.getMetaFieldForRendering(fields[i][0]); + + if (metaField === '' || metaField === undefined) { + html += this.renderFormField(fields[i]); + } else { + var metaVal = object[metaField]; + + if (metaVal !== '' && metaVal != null && metaVal !== undefined && metaVal.trim() !== '') { + html += this.renderFormField(JSON.parse(metaVal)); + } else { + html += this.renderFormField(fields[i]); + } + } + } + + formHtml = formHtml.replace(/_id_/g, "".concat(this.getTableName(), "_submit")); + formHtml = formHtml.replace(/_fields_/g, html); + var $tempDomObj; + var randomFormId = this.generateRandom(14); + + if (!this.showFormOnPopup) { + $tempDomObj = $("#".concat(this.getTableName(), "Form")); + } else { + $tempDomObj = $('
'); + $tempDomObj.attr('id', randomFormId); + } + + $tempDomObj.html(formHtml); + $tempDomObj.find('.datefield').datepicker({ + viewMode: 2 + }); + $tempDomObj.find('.timefield').datetimepicker({ + language: 'en', + pickDate: false + }); + $tempDomObj.find('.datetimefield').datetimepicker({ + language: 'en' + }); + $tempDomObj.find('.colorpick').colorpicker(); + tinymce.init({ + selector: "#".concat($tempDomObj.attr('id'), " .tinymce"), + height: '400' + }); + $tempDomObj.find('.simplemde').each(function () { + var simplemde = new SimpleMDE({ + element: $(this)[0] + }); + $(this).data('simplemde', simplemde); // simplemde.value($(this).val()); + }); + var codeMirror = this.codeMirror; + + if (codeMirror) { + $tempDomObj.find('.code').each(function () { + var editor = codeMirror.fromTextArea($(this)[0], { + lineNumbers: false, + matchBrackets: true, + continueComments: 'Enter', + extraKeys: { + 'Ctrl-Q': 'toggleComment' + } + }); + $(this).data('codemirror', editor); + }); + } // $tempDomObj.find('.select2Field').select2(); + + + $tempDomObj.find('.select2Field').each(function () { + $(this).select2().select2('val', $(this).find('option:eq(0)').val()); + }); + $tempDomObj.find('.select2Multi').each(function () { + $(this).select2().on('change', function (e) { + var parentRow = $(this).parents('.row'); + var height = parentRow.find('.select2-choices').height(); + parentRow.height(parseInt(height, 10)); + }); + }); + $tempDomObj.find('.signatureField').each(function () { + // $(this).data('signaturePad',new SignaturePad($(this))); + signatureIds.push($(this).attr('id')); + }); + + for (var _i = 0; _i < fields.length; _i++) { + if (fields[_i][1].type === 'datagroup') { + $tempDomObj.find("#".concat(fields[_i][0])).data('field', fields[_i]); + } + } + + if (this.showSave === false) { + $tempDomObj.find('.saveBtn').remove(); + } else { + $tempDomObj.find('.saveBtn').off(); + $tempDomObj.find('.saveBtn').data('modJs', this); + $tempDomObj.find('.saveBtn').on('click', function () { + if ($(this).data('modJs').saveSuccessItemCallback != null && $(this).data('modJs').saveSuccessItemCallback !== undefined) { + $(this).data('modJs').save($(this).data('modJs').retriveItemsAfterSave(), $(this).data('modJs').saveSuccessItemCallback); + } else { + $(this).data('modJs').save(); + } + + return false; + }); + } + + if (this.showCancel === false) { + $tempDomObj.find('.cancelBtn').remove(); + } else { + $tempDomObj.find('.cancelBtn').off(); + $tempDomObj.find('.cancelBtn').data('modJs', this); + $tempDomObj.find('.cancelBtn').on('click', function () { + $(this).data('modJs').cancel(); + return false; + }); + } // Input mask + + + $tempDomObj.find('[mask]').each(function () { + $(this).inputmask($(this).attr('mask')); + }); + $tempDomObj.find('[datemask]').each(function () { + $(this).inputmask({ + mask: 'y-1-2', + placeholder: 'YYYY-MM-DD', + leapday: '-02-29', + separator: '-', + alias: 'yyyy/mm/dd' + }); + }); + $tempDomObj.find('[datetimemask]').each(function () { + $(this).inputmask('datetime', { + mask: 'y-2-1 h:s:00', + placeholder: 'YYYY-MM-DD hh:mm:ss', + leapday: '-02-29', + separator: '-', + alias: 'yyyy/mm/dd' + }); + }); + + if (!this.showFormOnPopup) { + $("#".concat(this.getTableName(), "Form")).show(); + $("#".concat(this.getTableName())).hide(); + + for (var _i2 = 0; _i2 < signatureIds.length; _i2++) { + $("#".concat(signatureIds[_i2])).data('signaturePad', new SignaturePad(document.getElementById(signatureIds[_i2]))); + } + + if (object !== undefined && object != null) { + this.fillForm(object); + } else { + this.setDefaultValues(); + } + + this.scrollToTop(); + } else { + // var tHtml = $tempDomObj.wrap('
').parent().html(); + // this.showMessage("Edit",tHtml,null,null,true); + this.showMessage('Edit', '', null, null, true); + $('#plainMessageModel .modal-body').html(''); + $('#plainMessageModel .modal-body').append($tempDomObj); + + for (var _i3 = 0; _i3 < signatureIds.length; _i3++) { + $("#".concat(signatureIds[_i3])).data('signaturePad', new SignaturePad(document.getElementById(signatureIds[_i3]))); + } + + if (object !== undefined && object != null) { + this.fillForm(object, "#".concat(randomFormId)); + } else { + this.setDefaultValues("#".concat(randomFormId)); + } + } + + this.postRenderForm(object, $tempDomObj); + } + }, { + key: "setDefaultValues", + value: function setDefaultValues(formId, fields) { + if (fields == null || fields === undefined) { + fields = this.getFormFields(); + } + + if (formId == null || formId === undefined || formId === '') { + formId = "#".concat(this.getTableName(), "Form"); + } + + for (var i = 0; i < fields.length; i++) { + if (fields[i][1].type !== 'text' && fields[i][1].type !== 'textarea') { + continue; + } + + if (fields[i][1]["default"] !== undefined && fields[i][1]["default"] !== null) { + $("".concat(formId, " #").concat(fields[i][0])).val(fields[i][1]["default"]); + } + } + } + }, { + key: "retriveItemsAfterSave", + value: function retriveItemsAfterSave() { + return true; + } + /** + * Override this method in your module class to make changes to data fo the form after showing it + * @method postRenderForm + * @param object {Array} keys value list for populating form + * @param $tempDomObj {DOM} a DOM element for the form + * @example + * UserAdapter.method('postRenderForm(object, $tempDomObj) { + if(object == null || object == undefined){ + $tempDomObj.find("#changePasswordBtn").remove(); + } + } + */ + + }, { + key: "postRenderForm", + value: function postRenderForm(object, $tempDomObj) {} + /** + * Convert data group field to HTML + * @method dataGroupToHtml + * @param val {String} value in the field + * @param field {Array} field meta data + */ + + }, { + key: "dataGroupToHtml", + value: function dataGroupToHtml(val, field) { + var data = JSON.parse(val); + var t; + var sortFunction; + var item; + var itemHtml; + var itemVal; + var deleteButton = '
  • '; + var editButton = '
  • '; + var template = field[1].html; + + if (data != null && data !== undefined && field[1]['sort-function'] !== undefined && field[1]['sort-function'] != null) { + data.sort(field[1]['sort-function']); + } + + var html = $("
    ")); + + for (var i = 0; i < data.length; i++) { + item = data[i]; + + if (field[1]['pre-format-function'] !== undefined && field[1]['pre-format-function'] != null) { + item = field[1]['pre-format-function'].apply(this, [item]); + } + + t = template; + t = t.replace('#_delete_#', deleteButton); + t = t.replace('#_edit_#', editButton); + t = t.replace(/#_id_#/g, item.id); + + for (var key in item) { + itemVal = item[key]; + + if (itemVal !== undefined && itemVal != null && typeof itemVal === 'string') { + itemVal = itemVal.replace(/(?:\r\n|\r|\n)/g, '
    '); + } + + t = t.replace("#_".concat(key, "_#"), itemVal); + } + + if (field[1].render !== undefined && field[1].render != null) { + t = t.replace('#_renderFunction_#', field[1].render(item)); + } + + itemHtml = $(t); + itemHtml.attr('fieldId', "".concat(field[0], "_div")); + html.append(itemHtml); + } + + return html; + } + /** + * Reset the DataGroup for a given field + * @method resetDataGroup + * @param field {Array} field meta data + */ + + }, { + key: "resetDataGroup", + value: function resetDataGroup(field) { + $("#".concat(field[0])).val(''); + $("#".concat(field[0], "_div")).html(''); + } + }, { + key: "showDataGroup", + value: function showDataGroup(field, object, callback) { + var formHtml = this.templates.datagroupTemplate; + var html = ''; + var fields = field[1].form; + + if (object !== undefined && object != null && object.id !== undefined) { + this.currentDataGroupItemId = object.id; + } else { + this.currentDataGroupItemId = null; + } + + for (var i = 0; i < fields.length; i++) { + html += this.renderFormField(fields[i]); + } + + formHtml = formHtml.replace(/_id_/g, "".concat(this.getTableName(), "_field_").concat(field[0])); + formHtml = formHtml.replace(/_fields_/g, html); + var randomFormId = this.generateRandom(14); + var $tempDomObj = $('
    '); + $tempDomObj.attr('id', randomFormId); + $tempDomObj.html(formHtml); + $tempDomObj.find('.datefield').datepicker({ + viewMode: 2 + }); + $tempDomObj.find('.timefield').datetimepicker({ + language: 'en', + pickDate: false + }); + $tempDomObj.find('.datetimefield').datetimepicker({ + language: 'en' + }); + $tempDomObj.find('.colorpick').colorpicker(); + tinymce.init({ + selector: "#".concat($tempDomObj.attr('id'), " .tinymce"), + height: '400' + }); + $tempDomObj.find('.simplemde').each(function () { + var simplemde = new SimpleMDE({ + element: $(this)[0] + }); + $(this).data('simplemde', simplemde); // simplemde.value($(this).val()); + }); + $tempDomObj.find('.select2Field').each(function () { + $(this).select2().select2('val', $(this).find('option:eq(0)').val()); + }); + $tempDomObj.find('.select2Multi').each(function () { + $(this).select2().on('change', function (e) { + var parentRow = $(this).parents('.row'); + var height = parentRow.find('.select2-choices').height(); + parentRow.height(parseInt(height, 10)); + }); + }); + this.currentDataGroupField = field; + this.showDomElement("Add ".concat(field[1].label), $tempDomObj, null, null, true); + + if (object !== undefined && object != null) { + this.fillForm(object, "#".concat(this.getTableName(), "_field_").concat(field[0]), field[1].form); + } else { + this.setDefaultValues("#".concat(this.getTableName(), "_field_").concat(field[0]), field[1].form); + } + + $('.groupAddBtn').off(); + + if (object !== undefined && object != null && object.id !== undefined) { + $('.groupAddBtn').on('click', function (e) { + e.preventDefault(); + e.stopPropagation(); + + try { + modJs.editDataGroup(callback); + } catch (err) { + console.log("Error editing data group: ".concat(err.message)); + } + + return false; + }); + } else { + $('.groupAddBtn').on('click', function (e) { + e.preventDefault(); + e.stopPropagation(); + + try { + modJs.addDataGroup(callback); + } catch (err) { + console.log("Error adding data group: ".concat(err.message)); + } + + return false; + }); + } + } + }, { + key: "addDataGroup", + value: function addDataGroup(callback, existingData) { + var field = this.currentDataGroupField; + var tempParams; + $("#".concat(this.getTableName(), "_field_").concat(field[0], "_error")).html(''); + $("#".concat(this.getTableName(), "_field_").concat(field[0], "_error")).hide(); + var validator = new _FormValidation["default"]("".concat(this.getTableName(), "_field_").concat(field[0]), true, { + ShowPopup: false, + LabelErrorClass: 'error' + }); + + if (validator.checkValues()) { + var params = validator.getFormParameters(); + + if (field[1]['custom-validate-function'] !== undefined && field[1]['custom-validate-function'] != null) { + tempParams = field[1]['custom-validate-function'].apply(this, [params]); + + if (tempParams.valid) { + params = tempParams.params; + } else { + $("#".concat(this.getTableName(), "_field_").concat(field[0], "_error")).html(tempParams.message); + $("#".concat(this.getTableName(), "_field_").concat(field[0], "_error")).show(); + return false; + } + } + + var val = '[]'; + + if (existingData) { + val = existingData; + } else { + val = $("#".concat(field[0])).val(); + + if (val === '' || val == null) { + val = '[]'; + } + } + + var data = JSON.parse(val); + params.id = "".concat(field[0], "_").concat(this.dataGroupGetNextAutoIncrementId(data)); + data.push(params); + + if (field[1]['sort-function'] !== undefined && field[1]['sort-function'] != null) { + data.sort(field[1]['sort-function']); + } + + val = JSON.stringify(data); + var html = this.dataGroupToHtml(val, field); + + if (callback) { + callback(val); + } + + $("#".concat(field[0], "_div")).html(''); + $("#".concat(field[0], "_div")).append(html); + this.makeDataGroupSortable(field, $("#".concat(field[0], "_div_inner"))); + $("#".concat(field[0])).val(val); + this.orderDataGroup(field); + this.closeDataMessage(); + this.showMessage('Item Added', 'This change will be effective only when you save the form'); + } + + return true; + } + }, { + key: "nl2br", + value: function nl2br(str, len) { + var t = ''; + + try { + var arr = str.split(' '); + var count = 0; + + for (var i = 0; i < arr.length; i++) { + count += arr[i].length + 1; + + if (count > len) { + t += "".concat(arr[i], "
    "); + count = 0; + } else { + t += "".concat(arr[i], " "); + } + } + } catch (e) {// Do nothing + } + + return t; + } + }, { + key: "makeDataGroupSortable", + value: function makeDataGroupSortable(field, obj) { + obj.data('field', field); + obj.data('firstSort', true); + obj.sortable({ + create: function create() { + $(this).height($(this).height()); + }, + 'ui-floating': false, + start: function start(e, uiStart) { + $('#sortable-ul-selector-id').sortable({ + sort: function sort(event, ui) { + var $target = $(event.target); + + if (!/html|body/i.test($target.offsetParent()[0].tagName)) { + var top = event.pageY - $target.offsetParent().offset().top - ui.helper.outerHeight(true) / 2; + ui.helper.css({ + top: "".concat(top, "px") + }); + } + } + }); + }, + revert: true, + stop: function stop() { + modJs.orderDataGroup($(this).data('field')); + }, + axis: 'y', + scroll: false, + placeholder: 'sortable-placeholder', + cursor: 'move' + }); + } + }, { + key: "orderDataGroup", + value: function orderDataGroup(field, callback) { + var newArr = []; + var id; + var list = $("#".concat(field[0], "_div_inner [fieldid='").concat(field[0], "_div']")); + var val = $("#".concat(field[0])).val(); + + if (val === '' || val == null) { + val = '[]'; + } + + var data = JSON.parse(val); + list.each(function () { + id = $(this).attr('id'); + + for (var index in data) { + if (data[index].id === id) { + newArr.push(data[index]); + break; + } + } + }); + $("#".concat(field[0])).val(JSON.stringify(newArr)); + + if (callback != null) { + callback(newArr); + } + } + }, { + key: "editDataGroup", + value: function editDataGroup(callback, existingData) { + var field = this.currentDataGroupField; + var id = this.currentDataGroupItemId; + var validator = new _FormValidation["default"]("".concat(this.getTableName(), "_field_").concat(field[0]), true, { + ShowPopup: false, + LabelErrorClass: 'error' + }); + + if (validator.checkValues()) { + var params = validator.getFormParameters(); + + if (field[1]['custom-validate-function'] !== undefined && field[1]['custom-validate-function'] != null) { + var tempParams = field[1]['custom-validate-function'].apply(this, [params]); + + if (tempParams.valid) { + params = tempParams.params; + } else { + $("#".concat(this.getTableName(), "_field_").concat(field[0], "_error")).html(tempParams.message); + $("#".concat(this.getTableName(), "_field_").concat(field[0], "_error")).show(); + return false; + } + } + + if (this.doCustomFilterValidation(params)) { + var val = '[]'; + + if (existingData) { + val = existingData; + } else { + val = $("#".concat(field[0])).val(); + + if (val === '' || val == null) { + val = '[]'; + } + } + + var data = JSON.parse(val); + var editVal = {}; + var editValIndex = -1; + var newVals = []; + + for (var i = 0; i < data.length; i++) { + var item = data[i]; + + if (item.id === id) { + editVal = item; + editValIndex = i; + } + + newVals.push(item); + } + + params.id = editVal.id; + newVals[editValIndex] = params; + + if (field[1]['sort-function'] !== undefined && field[1]['sort-function'] != null) { + newVals.sort(field[1]['sort-function']); + } + + val = JSON.stringify(newVals); + $("#".concat(field[0])).val(val); + var html = this.dataGroupToHtml(val, field); + + if (callback) { + callback(newVals); + } + + this.orderDataGroup(field); + $("#".concat(field[0], "_div")).html(''); + $("#".concat(field[0], "_div")).append(html); + this.makeDataGroupSortable(field, $("#".concat(field[0], "_div_inner"))); + this.closeDataMessage(); + this.showMessage('Item Edited', 'This change will be effective only when you save the form'); + } + } + + return true; + } + }, { + key: "editDataGroupItem", + value: function editDataGroupItem(id, existingData, field) { + var fieldId = id.substring(0, id.lastIndexOf('_')); + var val; + + if (existingData) { + val = decodeURI(existingData); + } else { + val = $("#".concat(fieldId)).val(); + } + + var data = JSON.parse(val); + var editVal = {}; + + for (var i = 0; i < data.length; i++) { + var item = data[i]; + + if (item.id === id) { + editVal = item; + } + } + + if (field) { + field = JSON.parse(decodeURI(field)); + } else { + field = $("#".concat(fieldId)).data('field'); + } + + this.showDataGroup(field, editVal); + } + }, { + key: "dataGroupGetNextAutoIncrementId", + value: function dataGroupGetNextAutoIncrementId(data) { + var autoId = 1; + var id; + + for (var i = 0; i < data.length; i++) { + var item = data[i]; + + if (item.id === undefined || item.id == null) { + item.id = 1; + } + + id = item.id.substring(item.id.lastIndexOf('_') + 1, item.id.length); + + if (id >= autoId) { + autoId = parseInt(id, 10) + 1; + } + } + + return autoId; + } + }, { + key: "deleteDataGroupItem", + value: function deleteDataGroupItem(id, existingData) { + var fieldId = id.substring(0, id.lastIndexOf('_')); + var val; + + if (existingData) { + val = decodeURI(existingData); + } else { + val = $("#".concat(fieldId)).val(); + } + + var data = JSON.parse(val); + var newVal = []; + + for (var i = 0; i < data.length; i++) { + var item = data[i]; + + if (item.id !== id) { + newVal.push(item); + } + } + + $("#".concat(fieldId)).val(JSON.stringify(newVal)); + $("#".concat(id)).remove(); + this.showMessage('Item Removed', 'Item removed. This change will be effective only when you save the form'); + } + /** + * Fill a form with required values after showing it + * @method fillForm + * @param object {Array} form data + * @param formId {String} id of the form + * @param formId {Array} field meta data + */ + + }, { + key: "fillForm", + value: function fillForm(object, formId, fields) { + var placeHolderVal; + + if (fields == null || fields === undefined) { + fields = this.getFormFields(); + } + + if (formId == null || formId === undefined || formId === '') { + formId = "#".concat(this.getTableName(), "Form"); + } + + for (var i = 0; i < fields.length; i++) { + if (fields[i][1].type === 'date') { + if (object[fields[i][0]] !== '0000-00-00' && object[fields[i][0]] !== '' && object[fields[i][0]] != null && object[fields[i][0]] !== undefined) { + $("".concat(formId, " #").concat(fields[i][0], "_date")).datepicker('setValue', object[fields[i][0]]); + } + } else if (fields[i][1].type === 'colorpick') { + if (object[fields[i][0]] != null && object[fields[i][0]] !== undefined) { + $("".concat(formId, " #").concat(fields[i][0], "_colorpick")).colorpicker('setValue', object[fields[i][0]]); + $("".concat(formId, " #").concat(fields[i][0])).val(object[fields[i][0]]); + } + } else if (fields[i][1].type === 'datetime' || fields[i][1].type === 'time') { + if (object[fields[i][0]] !== '0000-00-00 00:00:00' && object[fields[i][0]] !== '' && object[fields[i][0]] != null && object[fields[i][0]] !== undefined) { + var tempDate = object[fields[i][0]]; + var arr = tempDate.split(' '); + var dateArr = arr[0].split('-'); + var timeArr = arr[1].split(':'); + $("".concat(formId, " #").concat(fields[i][0], "_datetime")).data('datetimepicker').setLocalDate(new Date(dateArr[0], parseInt(dateArr[1], 10) - 1, dateArr[2], timeArr[0], timeArr[1], timeArr[2])); + } + } else if (fields[i][1].type === 'label') { + $("".concat(formId, " #").concat(fields[i][0])).html(object[fields[i][0]]); + } else if (fields[i][1].type === 'placeholder') { + if (fields[i][1]['remote-source'] !== undefined && fields[i][1]['remote-source'] != null) { + // const key = `${fields[i][1]['remote-source'][0]}_${fields[i][1]['remote-source'][1]}_${fields[i][1]['remote-source'][2]}`; + var key = this.getRemoteSourceKey(fields[i]); + placeHolderVal = this.fieldMasterData[key][object[fields[i][0]]]; + } else { + placeHolderVal = object[fields[i][0]]; + } + + if (placeHolderVal === undefined || placeHolderVal == null) { + placeHolderVal = ''; + } else { + try { + placeHolderVal = placeHolderVal.replace(/(?:\r\n|\r|\n)/g, '
    '); + } catch (e) {// Do nothing + } + } + + if (fields[i][1].formatter !== undefined && fields[i][1].formatter && $.isFunction(fields[i][1].formatter)) { + try { + placeHolderVal = fields[i][1].formatter(placeHolderVal); + } catch (e) {// Do nothing + } + } + + $("".concat(formId, " #").concat(fields[i][0])).html(placeHolderVal); + } else if (fields[i][1].type === 'fileupload') { + if (object[fields[i][0]] != null && object[fields[i][0]] !== undefined && object[fields[i][0]] !== '') { + $("".concat(formId, " #").concat(fields[i][0])).html(object[fields[i][0]]); + $("".concat(formId, " #").concat(fields[i][0])).attr('val', object[fields[i][0]]); + $("".concat(formId, " #").concat(fields[i][0])).show(); + $("".concat(formId, " #").concat(fields[i][0], "_download")).show(); + $("".concat(formId, " #").concat(fields[i][0], "_remove")).show(); + } + + if (fields[i][1].readonly === true) { + $("".concat(formId, " #").concat(fields[i][0], "_upload")).remove(); + } + } else if (fields[i][1].type === 'select') { + if (object[fields[i][0]] === undefined || object[fields[i][0]] == null || object[fields[i][0]] === '') { + object[fields[i][0]] = 'NULL'; + } + + $("".concat(formId, " #").concat(fields[i][0])).val(object[fields[i][0]]); + } else if (fields[i][1].type === 'select2') { + if (object[fields[i][0]] === undefined || object[fields[i][0]] == null || object[fields[i][0]] === '') { + object[fields[i][0]] = 'NULL'; + } + + $("".concat(formId, " #").concat(fields[i][0])).select2('val', object[fields[i][0]]); + } else if (fields[i][1].type === 'select2multi') { + // TODO - SM + if (object[fields[i][0]] === undefined || object[fields[i][0]] == null || object[fields[i][0]] === '') { + object[fields[i][0]] = 'NULL'; + } + + var msVal = []; + + if (object[fields[i][0]] !== undefined && object[fields[i][0]] != null && object[fields[i][0]] !== '') { + try { + msVal = JSON.parse(object[fields[i][0]]); + } catch (e) {// Do nothing + } + } + + $("".concat(formId, " #").concat(fields[i][0])).select2('val', msVal); + var select2Height = $("".concat(formId, " #").concat(fields[i][0])).find('.select2-choices').height(); + $("".concat(formId, " #").concat(fields[i][0])).find('.controls').css('min-height', "".concat(select2Height, "px")); + $("".concat(formId, " #").concat(fields[i][0])).css('min-height', "".concat(select2Height, "px")); + } else if (fields[i][1].type === 'datagroup') { + try { + var html = this.dataGroupToHtml(object[fields[i][0]], fields[i]); + $("".concat(formId, " #").concat(fields[i][0])).val(object[fields[i][0]]); + $("".concat(formId, " #").concat(fields[i][0], "_div")).html(''); + $("".concat(formId, " #").concat(fields[i][0], "_div")).append(html); + this.makeDataGroupSortable(fields[i], $("".concat(formId, " #").concat(fields[i][0], "_div_inner"))); + } catch (e) {// Do nothing + } + } else if (fields[i][1].type === 'signature') { + if (object[fields[i][0]] !== '' || object[fields[i][0]] !== undefined || object[fields[i][0]] != null) { + $("".concat(formId, " #").concat(fields[i][0])).data('signaturePad').fromDataURL(object[fields[i][0]]); + } + } else if (fields[i][1].type === 'simplemde') { + $("".concat(formId, " #").concat(fields[i][0])).data('simplemde').value(object[fields[i][0]]); + } else if (fields[i][1].type === 'code') { + var cm = $("".concat(formId, " #").concat(fields[i][0])).data('codemirror'); + + if (cm) { + cm.getDoc().setValue(object[fields[i][0]]); + } + } else { + $("".concat(formId, " #").concat(fields[i][0])).val(object[fields[i][0]]); + } + } + } + /** + * Cancel edit or add new on modules + * @method cancel + */ + + }, { + key: "cancel", + value: function cancel() { + $("#".concat(this.getTableName(), "Form")).hide(); + $("#".concat(this.getTableName())).show(); + } + }, { + key: "renderFormField", + value: function renderFormField(field) { + var userId = 0; + + if (this.fieldTemplates[field[1].type] === undefined || this.fieldTemplates[field[1].type] == null) { + return ''; + } + + var t = this.fieldTemplates[field[1].type]; + field[1].label = this.gt(field[1].label); + + if (field[1].validation !== 'none' && field[1].validation !== 'emailOrEmpty' && field[1].validation !== 'numberOrEmpty' && field[1].type !== 'placeholder' && field[1].label.indexOf('*') < 0) { + var tempSelectBoxes = ['select', 'select2']; + + if (!(tempSelectBoxes.indexOf(field[1].type) >= 0 && field[1]['allow-null'] === true)) { + field[1].label = "".concat(field[1].label, "*"); + } + } + + if (field[1].type === 'select' || field[1].type === 'select2' || field[1].type === 'select2multi') { + t = t.replace(/_id_/g, field[0]); + t = t.replace(/_label_/g, field[1].label); + + if (field[1].source !== undefined && field[1].source != null) { + t = t.replace('_options_', this.renderFormSelectOptions(field[1].source, field)); + } else if (field[1]['remote-source'] !== undefined && field[1]['remote-source'] != null) { + // let key = `${field[1]['remote-source'][0]}_${field[1]['remote-source'][1]}_${field[1]['remote-source'][2]}`; + // if (field[1]['remote-source'].length === 4) { + // key = `${key}_${field[1]['remote-source'][3]}`; + // } + var key = this.getRemoteSourceKey(field); + t = t.replace('_options_', this.renderFormSelectOptionsRemote(this.fieldMasterData[key], field)); + } + } else if (field[1].type === 'colorpick') { + t = t.replace(/_id_/g, field[0]); + t = t.replace(/_label_/g, field[1].label); + } else if (field[1].type === 'date') { + t = t.replace(/_id_/g, field[0]); + t = t.replace(/_label_/g, field[1].label); + } else if (field[1].type === 'datetime') { + t = t.replace(/_id_/g, field[0]); + t = t.replace(/_label_/g, field[1].label); + } else if (field[1].type === 'time') { + t = t.replace(/_id_/g, field[0]); + t = t.replace(/_label_/g, field[1].label); + } else if (field[1].type === 'fileupload') { + t = t.replace(/_id_/g, field[0]); + t = t.replace(/_label_/g, field[1].label); + var ce = this.getCurrentProfile(); + + if (ce != null && ce !== undefined) { + userId = ce.id; + } else { + userId = this.getUser().id * -1; + } + + t = t.replace(/_userId_/g, userId); + t = t.replace(/_group_/g, this.tab); + + if (field[1].filetypes !== undefined && field[1].filetypes != null) { + t = t.replace(/_filetypes_/g, field[1].filetypes); + } else { + t = t.replace(/_filetypes_/g, 'all'); + } + + t = t.replace(/_rand_/g, this.generateRandom(14)); + } else if (field[1].type === 'datagroup') { + t = t.replace(/_id_/g, field[0]); + t = t.replace(/_label_/g, field[1].label); + } else if (field[1].type === 'signature') { + t = t.replace(/_id_/g, field[0]); + t = t.replace(/_label_/g, field[1].label); + } else if (field[1].type === 'tinymce' || field[1].type === 'simplemde') { + t = t.replace(/_id_/g, field[0]); + t = t.replace(/_label_/g, field[1].label); + } else { + t = t.replace(/_id_/g, field[0]); + t = t.replace(/_label_/g, field[1].label); + } + + if (field[1].validation !== undefined && field[1].validation != null && field[1].validation !== '') { + t = t.replace(/_validation_/g, "validation=\"".concat(field[1].validation, "\"")); + } else { + t = t.replace(/_validation_/g, ''); + } + + if (field[1].help !== undefined && field[1].help !== null) { + t = t.replace(/_helpline_/g, field[1].help); + t = t.replace(/_hidden_class_help_/g, ''); + } else { + t = t.replace(/_helpline_/g, ''); + t = t.replace(/_hidden_class_help_/g, 'hide'); + } + + if (field[1].placeholder !== undefined && field[1].placeholder !== null) { + t = t.replace(/_placeholder_/g, "placeholder=\"".concat(field[1].placeholder, "\"")); + } else { + t = t.replace(/_placeholder_/g, ''); + } + + if (field[1].mask !== undefined && field[1].mask !== null) { + t = t.replace(/_mask_/g, "mask=\"".concat(field[1].mask, "\"")); + } else { + t = t.replace(/_mask_/g, ''); + } + + return t; + } + }, { + key: "renderFormSelectOptions", + value: function renderFormSelectOptions(options, field) { + var html = ''; + + if (field != null && field !== undefined) { + if (field[1]['allow-null'] === true) { + if (field[1]['null-label'] !== undefined && field[1]['null-label'] != null) { + html += ""); + } else { + html += ''; + } + } + } // Sort options + + + var tuples = []; + + for (var key in options) { + tuples.push(options[key]); + } + + if (field[1].sort === true) { + tuples.sort(function (a, b) { + a = a[1]; + b = b[1]; // eslint-disable-next-line no-nested-ternary + + return a < b ? -1 : a > b ? 1 : 0; + }); + } + + for (var i = 0; i < tuples.length; i++) { + var prop = tuples[i][0]; + var value = tuples[i][1]; + var t = ''; + t = t.replace('_id_', prop); + t = t.replace('_val_', this.gt(value)); + html += t; + } + + return html; + } + }, { + key: "renderFormSelectOptionsRemote", + value: function renderFormSelectOptionsRemote(options, field) { + var html = ''; + + if (field[1]['allow-null'] === true) { + if (field[1]['null-label'] !== undefined && field[1]['null-label'] != null) { + html += ""); + } else { + html += ''; + } + } // Sort options + + + var tuples = []; + + for (var key in options) { + tuples.push([key, options[key]]); + } + + if (field[1].sort === 'true') { + tuples.sort(function (a, b) { + a = a[1]; + b = b[1]; // eslint-disable-next-line no-nested-ternary + + return a < b ? -1 : a > b ? 1 : 0; + }); + } + + for (var i = 0; i < tuples.length; i++) { + var prop = tuples[i][0]; + var value = tuples[i][1]; + var t = ''; + t = t.replace('_id_', prop); + t = t.replace('_val_', this.gt(value)); + html += t; + } + + return html; + } + }, { + key: "setCustomTemplates", + value: function setCustomTemplates(templates) { + this.customTemplates = templates; + } + }, { + key: "setEmailTemplates", + value: function setEmailTemplates(templates) { + this.emailTemplates = templates; + } + }, { + key: "getCustomTemplate", + value: function getCustomTemplate(file) { + return this.customTemplates[file]; + } + }, { + key: "setFieldTemplates", + value: function setFieldTemplates(templates) { + this.fieldTemplates = templates; + } + }, { + key: "getMetaFieldForRendering", + value: function getMetaFieldForRendering(fieldName) { + return ''; + } + }, { + key: "clearDeleteParams", + value: function clearDeleteParams() { + this.deleteParams = {}; + } + }, { + key: "getShowAddNew", + value: function getShowAddNew() { + return this.showAddNew; + } + /** + * Override this method to change add new button label + * @method getAddNewLabel + */ + + }, { + key: "getAddNewLabel", + value: function getAddNewLabel() { + return 'Add New'; + } + /** + * Used to set whether to show the add new button for a module + * @method setShowAddNew + * @param showAddNew {Boolean} value + */ + + }, { + key: "setShowAddNew", + value: function setShowAddNew(showAddNew) { + this.showAddNew = showAddNew; + } + /** + * Used to set whether to show delete button for each entry in module + * @method setShowDelete + * @param val {Boolean} value + */ + + }, { + key: "setShowDelete", + value: function setShowDelete(val) { + this.showDelete = val; + } + /** + * Used to set whether to show edit button for each entry in module + * @method setShowEdit + * @param val {Boolean} value + */ + + }, { + key: "setShowEdit", + value: function setShowEdit(val) { + this.showEdit = val; + } + /** + * Used to set whether to show save button in form + * @method setShowSave + * @param val {Boolean} value + */ + + }, { + key: "setShowSave", + value: function setShowSave(val) { + this.showSave = val; + } + /** + * Used to set whether to show cancel button in form + * @method setShowCancel + * @param val {Boolean} value + */ + + }, { + key: "setShowCancel", + value: function setShowCancel(val) { + this.showCancel = val; + } + /** + * Datatable option array will be extended with associative array provided here + * @method getCustomTableParams + * @param val {Boolean} value + */ + + }, { + key: "getCustomTableParams", + value: function getCustomTableParams() { + return {}; + } + }, { + key: "getActionButtons", + value: function getActionButtons(obj) { + return modJs.getActionButtonsHtml(obj.aData[0], obj.aData); + } + /** + * This return html for action buttons in each row. Override this method if you need to make changes to action buttons. + * @method getActionButtonsHtml + * @param id {int} id of the row + * @param data {Array} data for the row + * @returns {String} html for action buttons + */ + + }, { + key: "getActionButtonsHtml", + value: function getActionButtonsHtml(id, data) { + var editButton = ''; + var deleteButton = ''; + var cloneButton = ''; + var html = '
    _edit__delete__clone_
    '; + + if (this.showAddNew) { + html = html.replace('_clone_', cloneButton); + } else { + html = html.replace('_clone_', ''); + } + + if (this.showDelete) { + html = html.replace('_delete_', deleteButton); + } else { + html = html.replace('_delete_', ''); + } + + if (this.showEdit) { + html = html.replace('_edit_', editButton); + } else { + html = html.replace('_edit_', ''); + } + + html = html.replace(/_id_/g, id); + html = html.replace(/_BASE_/g, this.baseUrl); + return html; + } + /** + * Generates a random string + * @method generateRandom + * @param length {int} required length of the string + * @returns {String} random string + */ + + }, { + key: "generateRandom", + value: function generateRandom(length) { + var d = new Date(); + var chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; + var result = ''; + + for (var i = length; i > 0; --i) { + result += chars[Math.round(Math.random() * (chars.length - 1))]; + } + + return result + d.getTime(); + } + }, { + key: "checkFileType", + value: function checkFileType(elementName, fileTypes) { + var fileElement = document.getElementById(elementName); + var fileExtension = ''; + + if (fileElement.value.lastIndexOf('.') > 0) { + fileExtension = fileElement.value.substring(fileElement.value.lastIndexOf('.') + 1, fileElement.value.length); + } + + fileExtension = fileExtension.toLowerCase(); + var allowed = fileTypes.split(','); + + if (allowed.indexOf(fileExtension) < 0) { + fileElement.value = ''; + this.showMessage('File Type Error', 'Selected file type is not supported'); + this.clearFileElement(elementName); + return false; + } + + return true; + } + }, { + key: "clearFileElement", + value: function clearFileElement(elementName) { + var control = $("#".concat(elementName)); + control.replaceWith(control = control.val('').clone(true)); + } + }, { + key: "fixJSON", + value: function fixJSON(json) { + if (this.noJSONRequests === '1') { + json = window.btoa(json); + } + + return json; + } + }, { + key: "getClientDate", + value: function getClientDate(date) { + var offset = this.getClientGMTOffset(); + var tzDate = date.addMinutes(offset * 60); + return tzDate; + } + }, { + key: "getClientGMTOffset", + value: function getClientGMTOffset() { + var rightNow = new Date(); + var jan1 = new Date(rightNow.getFullYear(), 0, 1, 0, 0, 0, 0); + var temp = jan1.toGMTString(); + var jan2 = new Date(temp.substring(0, temp.lastIndexOf(' ') - 1)); + return (jan1 - jan2) / (1000 * 60 * 60); + } + /** + * Override this method in a module to provide the help link for the module. Help link of the module on frontend will get updated with this. + * @method getHelpLink + * @returns {String} help link + */ + + }, { + key: "getHelpLink", + value: function getHelpLink() { + return null; + } + }, { + key: "showLoader", + value: function showLoader() { + $('#iceloader').show(); + } + }, { + key: "hideLoader", + value: function hideLoader() { + $('#iceloader').hide(); + } + }, { + key: "generateOptions", + value: function generateOptions(data) { + var template = ''; + var options = ''; + + for (var index in data) { + options += template.replace('__val__', index).replace('__text__', data[index]); + } + + return options; + } + }, { + key: "isModuleInstalled", + value: function isModuleInstalled(type, name) { + if (modulesInstalled === undefined || modulesInstalled === null) { + return false; + } + + return modulesInstalled["".concat(type, "_").concat(name)] === 1; + } + }, { + key: "setCustomFields", + value: function setCustomFields(fields) { + var field; + var parsed; + + for (var i = 0; i < fields.length; i++) { + field = fields[i]; + + if (field.display !== 'Hidden' && field.data !== '' && field.data !== undefined) { + try { + parsed = JSON.parse(field.data); + + if (parsed === undefined || parsed == null) { + continue; + } else if (parsed.length !== 2) { + continue; + } else if (parsed[1].type === undefined || parsed[1].type == null) { + continue; + } + + this.customFields.push(parsed); + } catch (e) {// Do nothing + } + } + } + } + }, { + key: "addCustomFields", + value: function addCustomFields(fields) { + for (var i = 0; i < this.customFields.length; i++) { + fields.push(this.customFields[i]); + } + + return fields; + } + }, { + key: "getImageUrlFromName", + value: function getImageUrlFromName(firstName, lastName) { + var seed = firstName.substring(0, 1); + + if (!lastName && lastName.length > 0) { + seed += firstName.substring(firstName.length - 1, 1); + } else { + seed += lastName.substring(0, 1); + } + + var arr = "".concat(firstName).concat(lastName).split(''); + seed += arr.reduce(function (acc, item) { + return parseInt(item.charCodeAt(0), 10) + acc; + }, 0); + return "https://avatars.dicebear.com/api/initials/:".concat(seed, ".svg"); + } + }, { + key: "downloadPdf", + value: function downloadPdf(type, data) { + var url = "".concat(this.clientUrl, "service.php?a=pdf&h=").concat(type, "&data=").concat(data); + window.open(url, '_blank'); + } + }]); + + return ModuleBase; +}(); + +var _default = ModuleBase; +exports["default"] = _default; + +},{"./FormValidation":6}],11:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _react = _interopRequireDefault(require("react")); + +var _reactDom = _interopRequireDefault(require("react-dom")); + +var _antd = require("antd"); + +var _icons = require("@ant-design/icons"); + +var _AdapterBase2 = _interopRequireDefault(require("./AdapterBase")); + +var _IceFormModal = _interopRequireDefault(require("../components/IceFormModal")); + +var _IceStepFromModal = _interopRequireDefault(require("../components/IceStepFromModal")); + +var _IceTable = _interopRequireDefault(require("../components/IceTable")); + +var _MasterDataReader = _interopRequireDefault(require("./MasterDataReader")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var ReactModalAdapterBase = /*#__PURE__*/function (_AdapterBase) { + _inherits(ReactModalAdapterBase, _AdapterBase); + + var _super = _createSuper(ReactModalAdapterBase); + + _createClass(ReactModalAdapterBase, null, [{ + key: "MODAL_TYPE_NORMAL", + get: function get() { + return 'Normal'; + } + }, { + key: "MODAL_TYPE_STEPS", + get: function get() { + return 'Steps'; + } + }]); + + function ReactModalAdapterBase(endPoint, tab, filter, orderBy) { + var _this; + + _classCallCheck(this, ReactModalAdapterBase); + + _this = _super.call(this, endPoint, tab, filter, orderBy); + _this.modalType = _this.MODAL_TYPE_NORMAL; + _this.dataPipe = null; + _this.formInitialized = false; + _this.tableInitialized = false; + _this.access = []; + _this.localStorageEnabled = false; + _this.isV2 = true; + _this.masterDataReader = new _MasterDataReader["default"](_assertThisInitialized(_this)); + return _this; + } + + _createClass(ReactModalAdapterBase, [{ + key: "enableLocalStorage", + value: function enableLocalStorage() { + this.localStorageEnabled = true; + } + }, { + key: "setModalType", + value: function setModalType(type) { + this.modalType = type; + } + }, { + key: "setDataPipe", + value: function setDataPipe(dataPipe) { + this.dataPipe = dataPipe; + } + }, { + key: "setAccess", + value: function setAccess(access) { + this.access = access; + } + }, { + key: "hasAccess", + value: function hasAccess(type) { + return this.access.indexOf(type) > 0; + } + }, { + key: "hasCustomButtons", + value: function hasCustomButtons() { + return false; + } + }, { + key: "initTable", + value: function initTable() { + var _this2 = this; + + if (this.tableInitialized) { + return false; + } + + var tableDom = document.getElementById("".concat(this.tab, "Table")); + + if (tableDom) { + this.tableContainer = _react["default"].createRef(); + var columns = this.getTableColumns(); + + if (this.hasAccess('save') || this.hasAccess('delete') || this.hasAccess('element') || this.hasCustomButtons()) { + columns.push({ + title: 'Actions', + key: 'actions', + render: this.getTableActionButtonJsx(this) + }); + } + + columns = columns.map(function (item) { + item.title = _this2.gt(item.title); + return item; + }); + + _reactDom["default"].render( /*#__PURE__*/_react["default"].createElement(_IceTable["default"], { + ref: this.tableContainer, + reader: this.dataPipe, + columns: columns, + adapter: this + }, this.getTableChildComponents()), tableDom); + } + + this.tableInitialized = true; + return true; + } + }, { + key: "initForm", + value: function initForm() { + var _this3 = this; + + if (this.formInitialized) { + return false; + } + + this.formContainer = _react["default"].createRef(); + + if (this.modalType === this.MODAL_TYPE_NORMAL) { + _reactDom["default"].render( /*#__PURE__*/_react["default"].createElement(_IceFormModal["default"], { + ref: this.formContainer, + fields: this.getFormFields(), + adapter: this, + formReference: this.formReference + }), document.getElementById("".concat(this.tab, "Form"))); + } else { + _reactDom["default"].render( /*#__PURE__*/_react["default"].createElement(_IceStepFromModal["default"], { + ref: this.formContainer, + fields: this.getMappedFields(), + adapter: this, + formReference: this.formReference + }), document.getElementById("".concat(this.tab, "Form"))); + } + + var filterDom = document.getElementById("".concat(this.tab, "FilterForm")); + + if (filterDom && this.getFilters()) { + this.filtersContainer = _react["default"].createRef(); + + _reactDom["default"].render( /*#__PURE__*/_react["default"].createElement(_IceFormModal["default"], { + ref: this.filtersContainer, + fields: this.getFilters(), + adapter: this, + saveCallback: function saveCallback(values, showError, closeModal) { + _this3.setFilter(values); + + _this3.filtersAlreadySet = true; + + _this3.get([]); + + _this3.tableContainer.current.setFilterData(values); + + closeModal(); + } + }), filterDom); + } + + this.formInitialized = true; + return true; + } + }, { + key: "getTableChildComponents", + value: function getTableChildComponents() { + return false; + } + }, { + key: "reloadCurrentElement", + value: function reloadCurrentElement() { + this.viewElement(this.currentId); + } + }, { + key: "getTableActionButtonJsx", + value: function getTableActionButtonJsx(adapter) { + return function (text, record) { + return /*#__PURE__*/_react["default"].createElement(_antd.Space, { + size: "middle" + }, adapter.hasAccess('save') && adapter.showEdit && /*#__PURE__*/_react["default"].createElement(_antd.Tag, { + color: "green", + onClick: function onClick() { + return modJs.edit(record.id); + }, + style: { + cursor: 'pointer' + } + }, /*#__PURE__*/_react["default"].createElement(_icons.EditOutlined, null), " ".concat(adapter.gt('Edit'))), adapter.hasAccess('element') && /*#__PURE__*/_react["default"].createElement(_antd.Tag, { + color: "blue", + onClick: function onClick() { + return modJs.viewElement(record.id); + }, + style: { + cursor: 'pointer' + } + }, /*#__PURE__*/_react["default"].createElement(_icons.MonitorOutlined, null), " ".concat(adapter.gt('View'))), adapter.hasAccess('delete') && adapter.showDelete && /*#__PURE__*/_react["default"].createElement(_antd.Tag, { + color: "volcano", + onClick: function onClick() { + return modJs.deleteRow(record.id); + }, + style: { + cursor: 'pointer' + } + }, /*#__PURE__*/_react["default"].createElement(_icons.DeleteOutlined, null), " ".concat(adapter.gt('Delete'))), adapter.hasAccess('save') && /*#__PURE__*/_react["default"].createElement(_antd.Tag, { + color: "cyan", + onClick: function onClick() { + return modJs.copyRow(record.id); + }, + style: { + cursor: 'pointer' + } + }, /*#__PURE__*/_react["default"].createElement(_icons.CopyOutlined, null), " ".concat(adapter.gt('Copy')))); + }; + } + }, { + key: "setTableLoading", + value: function setTableLoading(value) { + this.tableContainer.current.setLoading(value); + } + /** + * Show the view form for an item + * @method viewElement + * @param id {int} id of the item to view + */ + + }, { + key: "viewElement", + value: function viewElement(id) { + var _this4 = this; + + this.setTableLoading(true); + this.currentId = id; + this.getElement(id, { + noRender: true, + callBack: function callBack(element) { + _this4.showElement(element); + + _this4.setTableLoading(false); + } + }); + } + }, { + key: "showElement", + value: function showElement(element) { + this.renderForm(element, true); + } + /** + * Show the edit form for an item + * @method edit + * @param id {int} id of the item to edit + */ + + }, { + key: "edit", + value: function edit(id) { + this.setTableLoading(true); + this.currentId = id; + this.getElement(id, []); + } + }, { + key: "renderForm", + value: function renderForm() { + var object = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; + var viewOnly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + + if (object == null) { + this.currentId = null; + this.currentElement = null; + } + + this.setTableLoading(false); + this.initForm(); + this.formContainer.current.setViewOnly(viewOnly); + this.formContainer.current.show(object); + } + }, { + key: "showFilters", + value: function showFilters() { + this.initForm(); + this.filtersContainer.current.show(this.filter); + } + }, { + key: "resetFilters", + value: function resetFilters() { + this.filter = this.origFilter; + this.filtersAlreadySet = false; + this.currentFilterString = ''; + this.get([]); + this.tableContainer.current.setFilterData(this.filter); + } + }, { + key: "get", + value: function get() { + var _this5 = this; + + if (this.tableContainer && this.tableContainer.current) { + this.tableContainer.current.setCurrentElement(null); + } + + this.initTable(); + this.masterDataReader.updateAllMasterData().then(function () { + _this5.tableContainer.current.reload(); + }); + this.trackEvent('get', this.tab, this.table); + } + }, { + key: "showLoader", + value: function showLoader() {// $('#iceloader').show(); + } + }, { + key: "addActualFieldsForStepModal", + value: function addActualFieldsForStepModal(steps, fields) { + return steps.map(function (item) { + item.fields = item.fields.reduce(function (acc, fieldName) { + var field = fields.find(function (_ref) { + var _ref2 = _slicedToArray(_ref, 1), + name = _ref2[0]; + + return name === fieldName; + }); + + if (field) { + acc.push(field); + } + + return acc; + }, []); + return item; + }); + } + }, { + key: "getFormOptions", + value: function getFormOptions() { + return { + width: 1024, + twoColumnLayout: false + }; + } + }]); + + return ReactModalAdapterBase; +}(_AdapterBase2["default"]); + +var _default = ReactModalAdapterBase; +exports["default"] = _default; + +},{"../components/IceFormModal":15,"../components/IceStepFromModal":20,"../components/IceTable":21,"./AdapterBase":5,"./MasterDataReader":9,"@ant-design/icons":"@ant-design/icons","antd":"antd","react":"react","react-dom":"react-dom"}],12:[function(require,module,exports){ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _react = _interopRequireWildcard(require("react")); + +var _reactColor = require("react-color"); + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function useComponentVisible(initialIsVisible) { + var _useState = (0, _react.useState)(initialIsVisible), + _useState2 = _slicedToArray(_useState, 2), + isComponentVisible = _useState2[0], + setIsComponentVisible = _useState2[1]; + + var ref = (0, _react.useRef)(null); + + var handleClickOutside = function handleClickOutside(event) { + if (ref.current && !ref.current.contains(event.target)) { + setIsComponentVisible(false); + } + }; + + (0, _react.useEffect)(function () { + document.addEventListener('click', handleClickOutside, true); + return function () { + document.removeEventListener('click', handleClickOutside, true); + }; + }); + return { + ref: ref, + isComponentVisible: isComponentVisible, + setIsComponentVisible: setIsComponentVisible + }; +} + +function IceColorPick(props) { + var value = props.value, + onChange = props.onChange, + readOnly = props.readOnly; + + var _useComponentVisible = useComponentVisible(true), + ref = _useComponentVisible.ref, + isComponentVisible = _useComponentVisible.isComponentVisible, + setIsComponentVisible = _useComponentVisible.setIsComponentVisible; + + var _useState3 = (0, _react.useState)(value || '#FFF'), + _useState4 = _slicedToArray(_useState3, 2), + color = _useState4[0], + setColor = _useState4[1]; + + var _useState5 = (0, _react.useState)(false), + _useState6 = _slicedToArray(_useState5, 2), + showPicker = _useState6[0], + setShowPicker = _useState6[1]; + + (0, _react.useEffect)(function () { + if (!isComponentVisible) { + setShowPicker(false); + } + }, [isComponentVisible]); + (0, _react.useEffect)(function () { + if (value) { + setColor(value); + } + }, [value]); + return /*#__PURE__*/_react["default"].createElement("div", { + className: "colorpicker-container" + }, /*#__PURE__*/_react["default"].createElement("div", { + className: "colorpicker-preview", + onClick: function onClick() { + if (!showPicker) { + setIsComponentVisible(true); + } + + setShowPicker(!showPicker); + }, + style: { + backgroundColor: color + } + }), /*#__PURE__*/_react["default"].createElement("div", { + ref: ref, + className: "colorpicker-component ".concat(readOnly || !showPicker ? 'hidden' : '') + }, /*#__PURE__*/_react["default"].createElement(_reactColor.SketchPicker, { + color: color, + disableAlpha: true, + presetColors: [], + onChangeComplete: function onChangeComplete(_ref) { + var hex = _ref.hex; + onChange(hex); + setColor(hex); + } + }))); +} + +var _default = IceColorPick; +exports["default"] = _default; + +},{"react":"react","react-color":292}],13:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _react = _interopRequireDefault(require("react")); + +var _antd = require("antd"); + +var _IceFormModal = _interopRequireDefault(require("./IceFormModal")); + +var _reactDom = _interopRequireDefault(require("react-dom")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var Option = _antd.Select.Option; + +var IceDataGroup = /*#__PURE__*/function (_React$Component) { + _inherits(IceDataGroup, _React$Component); + + var _super = _createSuper(IceDataGroup); + + function IceDataGroup(props) { + var _this; + + _classCallCheck(this, IceDataGroup); + + _this = _super.call(this, props); + _this.state = {}; + _this.onChange = props.onChange; + _this.formReference = _react["default"].createRef(); + return _this; + } + + _createClass(IceDataGroup, [{ + key: "render", + value: function render() { + var _this2 = this; + + var _this$props = this.props, + field = _this$props.field, + adapter = _this$props.adapter; + var value = this.props.value; + value = this.parseValue(value); + value = value.map(function (item) { + return _objectSpread({}, item, { + key: item.id + }); + }); + var columns = JSON.parse(JSON.stringify(field[1].columns)); + + if (!this.props.readOnly) { + columns.push({ + title: 'Action', + key: 'action', + render: function render(text, record) { + return _this2.getDefaultButtons(record.id); + } + }); + } + + return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, !this.props.readOnly && /*#__PURE__*/_react["default"].createElement(_antd.Space, { + direction: "horizontal" + }, /*#__PURE__*/_react["default"].createElement(_antd.Button, { + type: "link", + htmlType: "button", + onClick: function onClick() { + _this2.createForm(field, adapter, {}); + } + }, "Add"), /*#__PURE__*/_react["default"].createElement(_antd.Button, { + type: "link", + htmlType: "button", + danger: true, + onClick: function onClick() { + _this2.resetDataGroup(); + } + }, "Reset")), /*#__PURE__*/_react["default"].createElement(_antd.Table, { + columns: columns, + dataSource: value + })); + } + }, { + key: "createForm", + value: function createForm(field, adapter, object) { + this.formContainer = _react["default"].createRef(); + var formFields = field[1].form; + formFields.unshift(['id', { + label: 'ID', + type: 'hidden' + }]); + + _reactDom["default"].render( /*#__PURE__*/_react["default"].createElement(_IceFormModal["default"], { + ref: this.formContainer, + fields: formFields, + title: this.props.title, + adapter: adapter, + formReference: this.formReference, + saveCallback: this.save.bind(this), + cancelCallback: this.unmountForm.bind(this) + }), document.getElementById('dataGroup')); + + this.formContainer.current.show(object); + } + }, { + key: "unmountForm", + value: function unmountForm() { + _reactDom["default"].unmountComponentAtNode(document.getElementById('dataGroup')); + } + }, { + key: "show", + value: function show(data) { + var _this3 = this; + + if (!data) { + this.setState({ + visible: true + }); + this.updateFields(data); + } else { + this.setState({ + visible: true + }); + + if (this.formReference.current) { + this.updateFields(data); + } else { + this.waitForIt(function () { + return _this3.formReference.current != null; + }, function () { + _this3.updateFields(data); + }, 100); + } + } + } + }, { + key: "parseValue", + value: function parseValue(value) { + try { + value = JSON.parse(value); + } catch (e) { + value = []; + } + + if (value == null) { + value = []; + } + + return value; + } + }, { + key: "save", + value: function save(params, errorCallback, closeCallback) { + var _this$props2 = this.props, + field = _this$props2.field, + value = _this$props2.value; + + if (field[1]['custom-validate-function'] != null) { + var tempParams = field[1]['custom-validate-function'].apply(this, [params]); + + if (tempParams.valid) { + params = tempParams.params; + } else { + errorCallback(tempParams.message); + return false; + } + } + + var data = this.parseValue(value); + var newData = []; + + if (!params.id) { + params.id = "".concat(field[0], "_").concat(this.dataGroupGetNextAutoIncrementId(data)); + data.push(params); + newData = data; + } else { + for (var i = 0; i < data.length; i++) { + var item = data[i]; + + if (item.id !== params.id) { + newData.push(item); + } else { + newData.push(params); + } + } + } + + if (field[1]['sort-function'] != null) { + newData.sort(field[1]['sort-function']); + } + + var val = JSON.stringify(newData); + this.onChange(val); + this.unmountForm(); + } + }, { + key: "createCard", + value: function createCard(item) { + var field = this.props.field; + + if (field[1]['pre-format-function'] != null) { + item = field[1]['pre-format-function'].apply(this, [item]); + } + + var template = field[1].html; + var t = template.replace('#_delete_#', ''); + t = t.replace('#_edit_#', ''); + t = t.replace(/#_id_#/g, item.id); + + for (var key in item) { + var itemVal = item[key]; + + if (itemVal !== undefined && itemVal != null && typeof itemVal === 'string') { + itemVal = itemVal.replace(/(?:\r\n|\r|\n)/g, '
    '); + } + + t = t.replace("#_".concat(key, "_#"), itemVal); + } + + if (field[1].render !== undefined && field[1].render != null) { + t = t.replace('#_renderFunction_#', field[1].render(item)); + } + + return /*#__PURE__*/_react["default"].createElement(_antd.Card, { + key: item.id, + title: "", + extra: this.getDefaultButtons(item.id) + }, /*#__PURE__*/_react["default"].createElement("div", { + dangerouslySetInnerHTML: { + __html: t + } + })); + } + }, { + key: "getDefaultButtons", + value: function getDefaultButtons(id) { + var _this4 = this; + + return /*#__PURE__*/_react["default"].createElement(_antd.Space, null, /*#__PURE__*/_react["default"].createElement("a", { + href: "#", + onClick: function onClick() { + _this4.editDataGroupItem(id); + } + }, /*#__PURE__*/_react["default"].createElement("li", { + className: "fa fa-edit" + })), /*#__PURE__*/_react["default"].createElement("a", { + href: "#", + onClick: function onClick() { + _this4.deleteDataGroupItem(id); + } + }, /*#__PURE__*/_react["default"].createElement("li", { + className: "fa fa-times" + }))); + } + }, { + key: "deleteDataGroupItem", + value: function deleteDataGroupItem(id) { + var value = this.props.value; + var data = this.parseValue(value); + var newVal = []; + + for (var i = 0; i < data.length; i++) { + var item = data[i]; + + if (item.id !== id) { + newVal.push(item); + } + } + + var val = JSON.stringify(newVal); + this.onChange(val); + } + }, { + key: "editDataGroupItem", + value: function editDataGroupItem(id) { + var _this$props3 = this.props, + field = _this$props3.field, + adapter = _this$props3.adapter, + value = _this$props3.value; + var data = this.parseValue(value); + var editVal = {}; + + for (var i = 0; i < data.length; i++) { + var item = data[i]; + + if (item.id === id) { + editVal = item; + } + } + + this.createForm(field, adapter, editVal); + } + }, { + key: "resetDataGroup", + value: function resetDataGroup() { + this.onChange('[]'); + } + }, { + key: "dataGroupGetNextAutoIncrementId", + value: function dataGroupGetNextAutoIncrementId(data) { + var autoId = 1; + var id; + + for (var i = 0; i < data.length; i++) { + var item = data[i]; + + if (item.id === undefined || item.id == null) { + item.id = 1; + } + + id = item.id.substring(item.id.lastIndexOf('_') + 1, item.id.length); + + if (id >= autoId) { + autoId = parseInt(id, 10) + 1; + } + } + + return autoId; + } + }]); + + return IceDataGroup; +}(_react["default"].Component); + +var _default = IceDataGroup; +exports["default"] = _default; + +},{"./IceFormModal":15,"antd":"antd","react":"react","react-dom":"react-dom"}],14:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _react = _interopRequireDefault(require("react")); + +var _antd = require("antd"); + +var _moment = _interopRequireDefault(require("moment")); + +var _IceUpload = _interopRequireDefault(require("./IceUpload")); + +var _IceDataGroup = _interopRequireDefault(require("./IceDataGroup")); + +var _IceSelect = _interopRequireDefault(require("./IceSelect")); + +var _IceLabel = _interopRequireDefault(require("./IceLabel")); + +var _IceColorPick = _interopRequireDefault(require("./IceColorPick")); + +var _IceSignature = _interopRequireDefault(require("./IceSignature")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var ValidationRules = { + "float": function float(str) { + var floatstr = /^[-+]?[0-9]+(\.[0-9]+)?$/; + + if (str != null && str.match(floatstr)) { + return true; + } + + return false; + }, + number: function number(str) { + var numstr = /^[0-9]+$/; + + if (str != null && str.match(numstr)) { + return true; + } + + return false; + }, + numberOrEmpty: function numberOrEmpty(str) { + if (str === '') { + return true; + } + + var numstr = /^[0-9]+$/; + + if (str != null && str.match(numstr)) { + return true; + } + + return false; + }, + email: function email(str) { + var emailPattern = /^\s*[\w\-+_]+(\.[\w\-+_]+)*@[\w\-+_]+\.[\w\-+_]+(\.[\w\-+_]+)*\s*$/; + return str != null && emailPattern.test(str); + }, + emailOrEmpty: function emailOrEmpty(str) { + if (str === '') { + return true; + } + + var emailPattern = /^\s*[\w\-+_]+(\.[\w\-+_]+)*@[\w\-+_]+\.[\w\-+_]+(\.[\w\-+_]+)*\s*$/; + return str != null && emailPattern.test(str); + }, + username: function username(str) { + var username = /^[a-zA-Z0-9.-]+$/; + return str != null && username.test(str); + } +}; + +var IceForm = /*#__PURE__*/function (_React$Component) { + _inherits(IceForm, _React$Component); + + var _super = _createSuper(IceForm); + + function IceForm(props) { + var _this; + + _classCallCheck(this, IceForm); + + _this = _super.call(this, props); + _this.validationRules = {}; + _this.state = { + validations: {}, + errorMsg: false + }; + _this.formReference = _react["default"].createRef(); + return _this; + } + + _createClass(IceForm, [{ + key: "showError", + value: function showError(errorMsg) { + this.setState({ + errorMsg: errorMsg + }); + } + }, { + key: "hideError", + value: function hideError() { + this.setState({ + errorMsg: false + }); + } + }, { + key: "isReady", + value: function isReady() { + return this.formReference.current != null; + } + }, { + key: "validateFields", + value: function validateFields() { + return this.formReference.current.validateFields(); + } + }, { + key: "render", + value: function render() { + var _this$props = this.props, + fields = _this$props.fields, + twoColumnLayout = _this$props.twoColumnLayout, + adapter = _this$props.adapter; + var formInputs = []; + var formInputs1 = []; + var formInputs2 = []; + var columns = !twoColumnLayout ? 1 : 2; + + for (var i = 0; i < fields.length; i++) { + formInputs.push(adapter.beforeRenderFieldHook(fields[i][0], this.createFromField(fields[i], this.props.viewOnly), fields[i][1])); + } + + formInputs = formInputs.filter(function (input) { + return !!input; + }); + + for (var _i = 0; _i < formInputs.length; _i++) { + if (formInputs[_i] != null) { + if (columns === 1) { + formInputs1.push(formInputs[_i]); + } else if (_i % 2 === 0) { + formInputs1.push(formInputs[_i]); + } else { + formInputs2.push(formInputs[_i]); + } + } + } + + var onFormLayoutChange = function onFormLayoutChange() {}; + + return /*#__PURE__*/_react["default"].createElement(_antd.Form, { + ref: this.formReference, + labelCol: { + span: 6 + }, + wrapperCol: { + span: 16 + }, + layout: this.props.layout || 'horizontal', + initialValues: { + size: 'middle' + }, + onValuesChange: onFormLayoutChange, + size: "middle" + }, this.state.errorMsg && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_antd.Alert, { + message: this.state.errorMsg, + type: "error", + showIcon: true + }), /*#__PURE__*/_react["default"].createElement("br", null)), columns === 1 && formInputs1, columns === 2 && /*#__PURE__*/_react["default"].createElement(_antd.Row, { + gutter: 16 + }, /*#__PURE__*/_react["default"].createElement(_antd.Col, { + className: "gutter-row", + span: 12 + }, formInputs1), /*#__PURE__*/_react["default"].createElement(_antd.Col, { + className: "gutter-row", + span: 12 + }, formInputs2))); + } + }, { + key: "isValid", + value: function isValid() { + var _this2 = this; + + return Object.keys(this.validationRules).reduce(function (acc, fieldName) { + return acc && (_this2.state[fieldName] === 'success' || _this2.state[fieldName] == null); + }, true); + } + }, { + key: "validateOnChange", + value: function validateOnChange(event) { + var validationRule = this.validationRules[event.target.id]; + var validations = this.state.validations; + + if (validationRule) { + if (validationRule.rule(event.target.value)) { + this.state[event.target.id] = 'success'; + this.state["".concat(event.target.id, "_message")] = null; + } else { + this.state[event.target.id] = 'error'; + this.state["".concat(event.target.id, "_message")] = validationRule.message; + } + } + + this.setState({ + validations: validations + }); + } + }, { + key: "createFromField", + value: function createFromField(field) { + var viewOnly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + var userId = 0; + var rules = []; + var requiredRule = { + required: true + }; + + var _field = _slicedToArray(field, 2), + name = _field[0], + data = _field[1]; + + var _this$props2 = this.props, + adapter = _this$props2.adapter, + layout = _this$props2.layout; + var validationRule = null; + data.label = adapter.gt(data.label); + var labelSpan = layout === 'vertical' ? { + span: 24 + } : { + span: 6 + }; + var tempSelectBoxes = ['select', 'select2', 'select2multi']; + + if (tempSelectBoxes.indexOf(data.type) >= 0 && data['allow-null'] === true) { + requiredRule.required = false; + } else if (data.validation === 'none' || data.validation === 'emailOrEmpty' || data.validation === 'numberOrEmpty') { + requiredRule.required = false; + } else { + requiredRule.required = true; + requiredRule.message = this.generateFieldMessage(data.label); + } + + rules.push(requiredRule); + + if (data.type === 'hidden') { + requiredRule.required = false; + return /*#__PURE__*/_react["default"].createElement(_antd.Form.Item, { + labelCol: labelSpan, + style: { + display: 'none' + }, + label: data.label, + key: name, + name: name, + rules: rules + }, /*#__PURE__*/_react["default"].createElement(_antd.Input, null)); + } + + if (data.type === 'text') { + if (data.validation) { + data.validation = data.validation.replace('OrEmpty', ''); + validationRule = this.getValidationRule(data); + + if (validationRule) { + this.validationRules[name] = { + rule: validationRule, + message: "Invalid value for ".concat(data.label) + }; + } + } + + if (validationRule != null) { + return /*#__PURE__*/_react["default"].createElement(_antd.Form.Item, { + labelCol: labelSpan, + label: data.label, + key: name, + name: name, + rules: rules, + validateStatus: this.state[name], + help: this.state["".concat(name, "_message")] + }, viewOnly ? /*#__PURE__*/_react["default"].createElement(_IceLabel["default"], null) : /*#__PURE__*/_react["default"].createElement(_antd.Input, { + onChange: this.validateOnChange.bind(this) + })); + } + + return /*#__PURE__*/_react["default"].createElement(_antd.Form.Item, { + labelCol: labelSpan, + label: data.label, + key: name, + name: name, + rules: rules + }, viewOnly ? /*#__PURE__*/_react["default"].createElement(_IceLabel["default"], null) : /*#__PURE__*/_react["default"].createElement(_antd.Input, null)); + } + + if (data.type === 'textarea') { + if (!data.rows) { + data.rows = 4; + } + + return /*#__PURE__*/_react["default"].createElement(_antd.Form.Item, { + labelCol: labelSpan, + label: data.label, + key: name, + name: name, + rules: rules + }, viewOnly ? /*#__PURE__*/_react["default"].createElement(_IceLabel["default"], null) : /*#__PURE__*/_react["default"].createElement(_antd.Input.TextArea, { + rows: data.rows + })); + } + + if (data.type === 'date') { + return /*#__PURE__*/_react["default"].createElement(_antd.Form.Item, { + labelCol: labelSpan, + label: data.label, + key: name, + name: name, + rules: rules + }, /*#__PURE__*/_react["default"].createElement(_antd.DatePicker, { + disabled: viewOnly + })); + } + + if (data.type === 'datetime') { + return /*#__PURE__*/_react["default"].createElement(_antd.Form.Item, { + labelCol: labelSpan, + label: data.label, + key: name, + name: name, + rules: rules + }, /*#__PURE__*/_react["default"].createElement(_antd.DatePicker, { + format: "YYYY-MM-DD HH:mm:ss", + disabled: viewOnly + })); + } + + if (data.type === 'time') { + return /*#__PURE__*/_react["default"].createElement(_antd.Form.Item, { + labelCol: labelSpan, + label: data.label, + key: name, + name: name, + rules: rules + }, /*#__PURE__*/_react["default"].createElement(_antd.TimePicker, { + format: "HH:mm", + disabled: viewOnly + })); + } + + if (data.type === 'fileupload') { + var currentEmployee = adapter.getCurrentProfile(); + + if (currentEmployee != null) { + userId = currentEmployee.id; + } else { + userId = adapter.getUser().id * -1; + } + + if (data.filetypes == null) { + data.filetypes = '.doc,.docx,.xml,' + 'application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,' + 'image/*,' + '.pdf'; + } + + return /*#__PURE__*/_react["default"].createElement(_antd.Form.Item, { + labelCol: labelSpan, + name: name, + key: name, + label: data.label + }, /*#__PURE__*/_react["default"].createElement(_IceUpload["default"], { + user: userId, + fileGroup: adapter.tab, + fileName: name, + adapter: adapter, + accept: data.filetypes, + readOnly: viewOnly + })); + } + + if (data.type === 'datagroup') { + return /*#__PURE__*/_react["default"].createElement(_antd.Form.Item, { + labelCol: labelSpan, + name: name, + key: name, + label: data.label + }, /*#__PURE__*/_react["default"].createElement(_IceDataGroup["default"], { + adapter: adapter, + field: field, + title: data.label, + readOnly: viewOnly + })); + } + + if (data.type === 'select2' || data.type === 'select' || data.type === 'select2multi') { + return /*#__PURE__*/_react["default"].createElement(_antd.Form.Item, { + labelCol: labelSpan, + label: data.label, + key: name, + name: name, + rules: rules + }, /*#__PURE__*/_react["default"].createElement(_IceSelect["default"], { + adapter: adapter, + field: field, + readOnly: viewOnly + })); + } + + if (data.type === 'colorpick') { + return /*#__PURE__*/_react["default"].createElement(_antd.Form.Item, { + labelCol: labelSpan, + name: name, + key: name, + label: data.label + }, /*#__PURE__*/_react["default"].createElement(_IceColorPick["default"], { + adapter: adapter, + field: field, + title: data.label, + readOnly: viewOnly + })); + } + + if (data.type === 'signature') { + return /*#__PURE__*/_react["default"].createElement(_antd.Form.Item, { + labelCol: labelSpan, + label: data.label, + key: name, + name: name, + rules: rules + }, /*#__PURE__*/_react["default"].createElement(_IceSignature["default"], { + readOnly: viewOnly + })); + } + + return null; + } + }, { + key: "generateFieldMessage", + value: function generateFieldMessage(label) { + return "".concat(label, ": ").concat(this.props.adapter.gt('is required')); + } + }, { + key: "getValidationRule", + value: function getValidationRule(data) { + if (ValidationRules[data.validation] == null) { + return null; + } + + return ValidationRules[data.validation]; + } + }, { + key: "dataToFormFields", + value: function dataToFormFields(data, fields) { + for (var i = 0; i < fields.length; i++) { + var _fields$i = _slicedToArray(fields[i], 2), + key = _fields$i[0], + formInputData = _fields$i[1]; + + if (formInputData.type === 'date') { + data[key] = data[key] ? (0, _moment["default"])(data[key], 'YYYY-MM-DD') : null; + } else if (formInputData.type === 'datetime') { + data[key] = data[key] ? (0, _moment["default"])(data[key], 'YYYY-MM-DD HH:mm:ss') : null; + } else if (formInputData.type === 'time') { + data[key] = data[key] ? (0, _moment["default"])(data[key], 'HH:mm') : null; + } + } + + return data; + } + }, { + key: "formFieldsToData", + value: function formFieldsToData(params, fields) { + for (var i = 0; i < fields.length; i++) { + var _fields$i2 = _slicedToArray(fields[i], 2), + key = _fields$i2[0], + formInputData = _fields$i2[1]; + + if (formInputData.type === 'date') { + params[key] = params[key] ? params[key].format('YYYY-MM-DD') : 'NULL'; + } else if (formInputData.type === 'datetime') { + params[key] = params[key] ? params[key].format('YYYY-MM-DD HH:mm:ss') : 'NULL'; + } else if (formInputData.type === 'time') { + params[key] = params[key] ? params[key].format('HH:mm') : 'NULL'; + } else if ((formInputData.type === 'select' || formInputData.type === 'select2') && params[key] == null) { + params[key] = 'NULL'; + } + } + + return params; + } + }, { + key: "updateFields", + value: function updateFields(data) { + var fields = this.props.fields; + data = this.dataToFormFields(data, fields); + this.formReference.current.resetFields(); + + if (data == null) { + return; + } + + try { + this.formReference.current.setFieldsValue(data); + } catch (e) { + console.log(e); + } + } + }, { + key: "resetFields", + value: function resetFields() { + this.formReference.current.resetFields(); + } + }, { + key: "setFieldsValue", + value: function setFieldsValue(data) { + this.formReference.current.setFieldsValue(data); + } + }, { + key: "save", + value: function save(params, success) { + var _this3 = this; + + var _this$props3 = this.props, + adapter = _this$props3.adapter, + fields = _this$props3.fields; + var values = params; + values = adapter.forceInjectValuesBeforeSave(values); + var msg = adapter.doCustomValidation(values); + + if (msg !== null) { + this.showError(msg); + return; + } + + if (adapter.csrfRequired) { + values.csrf = $("#".concat(adapter.getTableName(), "Form")).data('csrf'); + } + + var id = adapter.currentElement != null ? adapter.currentElement.id : null; + + if (id != null && id !== '') { + values.id = id; + } + + values = this.formFieldsToData(values, fields); + adapter.add(values, [], function () { + return adapter.get([]); + }, function () { + _this3.formReference.current.resetFields(); + + _this3.showError(false); + + success(); + }); + } + }]); + + return IceForm; +}(_react["default"].Component); + +var _default = IceForm; +exports["default"] = _default; + +},{"./IceColorPick":12,"./IceDataGroup":13,"./IceLabel":16,"./IceSelect":17,"./IceSignature":18,"./IceUpload":22,"antd":"antd","moment":"moment","react":"react"}],15:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _react = _interopRequireDefault(require("react")); + +var _antd = require("antd"); + +var _IceForm = _interopRequireDefault(require("./IceForm")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var IceFormModal = /*#__PURE__*/function (_React$Component) { + _inherits(IceFormModal, _React$Component); + + var _super = _createSuper(IceFormModal); + + function IceFormModal(props) { + var _this; + + _classCallCheck(this, IceFormModal); + + _this = _super.call(this, props); + _this.state = { + visible: false, + viewOnly: false, + loading: false + }; + _this.iceFormReference = _react["default"].createRef(); + _this.width = 800; + return _this; + } + + _createClass(IceFormModal, [{ + key: "setViewOnly", + value: function setViewOnly(value) { + this.setState({ + viewOnly: value + }); + } + }, { + key: "show", + value: function show(data) { + var _this2 = this; + + this.props.adapter.beforeRenderFieldHook = this.props.adapter.beforeRenderField ? this.props.adapter.beforeRenderField(data) : function (fieldName, field) { + return field; + }; + + if (!data) { + this.setState({ + visible: true + }); + + if (this.iceFormReference.current) { + this.iceFormReference.current.resetFields(); + } + } else { + this.setState({ + visible: true + }); + + if (this.iceFormReference.current && this.iceFormReference.current.isReady()) { + this.iceFormReference.current.updateFields(data); + } else { + this.waitForIt(function () { + return _this2.iceFormReference.current && _this2.iceFormReference.current.isReady(); + }, function () { + _this2.iceFormReference.current.updateFields(data); + }, 1000); + } + } + } + }, { + key: "waitForIt", + value: function waitForIt(condition, callback, time) { + var _this3 = this; + + setTimeout(function () { + if (condition()) { + callback(); + } else { + _this3.waitForIt(condition, callback, time); + } + }, time); + } + }, { + key: "hide", + value: function hide() { + this.setState({ + visible: false + }); + } + }, { + key: "save", + value: function save(params) { + var _this4 = this; + + this.iceFormReference.current.save(params, function () { + _this4.closeModal(); + }); + } + }, { + key: "closeModal", + value: function closeModal() { + this.hide(); + this.iceFormReference.current.showError(false); + } + }, { + key: "render", + value: function render() { + var _this5 = this; + + var _this$props = this.props, + fields = _this$props.fields, + adapter = _this$props.adapter, + saveCallback = _this$props.saveCallback, + cancelCallback = _this$props.cancelCallback; + var additionalProps = {}; + additionalProps.footer = /*#__PURE__*/_react["default"].createElement(_antd.Row, { + gutter: 16 + }, /*#__PURE__*/_react["default"].createElement(_antd.Col, { + className: "gutter-row", + span: 12, + style: {} + }), /*#__PURE__*/_react["default"].createElement(_antd.Col, { + className: "gutter-row", + span: 12, + style: { + textAlign: 'right' + } + }, /*#__PURE__*/_react["default"].createElement(_antd.Space, null, /*#__PURE__*/_react["default"].createElement(_antd.Button, { + onClick: function onClick() { + if (cancelCallback) { + cancelCallback(); + } else { + _this5.closeModal(); + } + } + }, this.props.adapter.gt('Cancel')), /*#__PURE__*/_react["default"].createElement(_antd.Button, { + loading: this.state.loading, + type: "primary", + onClick: function onClick() { + _this5.setState({ + loading: true + }); + + var iceFrom = _this5.iceFormReference.current; + iceFrom.validateFields().then(function (values) { + if (!iceFrom.isValid()) { + _this5.setState({ + loading: false + }); + + return; + } + + if (saveCallback) { + saveCallback(values, iceFrom.showError.bind(_this5), _this5.closeModal.bind(_this5)); + } else { + _this5.save(values); + } + + _this5.setState({ + loading: false + }); + })["catch"](function (info) { + _this5.setState({ + loading: false + }); + }); + } + }, this.state.viewOnly ? this.props.adapter.gt('Done') : this.props.adapter.gt('Save'))))); + + if (this.state.viewOnly) { + additionalProps.footer = null; + } + + return /*#__PURE__*/_react["default"].createElement(_antd.Modal, _extends({ + visible: this.state.visible, + title: this.props.adapter.gt(this.props.title || adapter.objectTypeName), + maskClosable: false, + width: this.width, + onCancel: function onCancel() { + if (cancelCallback) { + cancelCallback(); + } else { + _this5.closeModal(); + } + } + }, additionalProps), /*#__PURE__*/_react["default"].createElement(_IceForm["default"], { + ref: this.iceFormReference, + adapter: adapter, + fields: fields, + viewOnly: this.state.viewOnly + })); + } + }]); + + return IceFormModal; +}(_react["default"].Component); + +var _default = IceFormModal; +exports["default"] = _default; + +},{"./IceForm":14,"antd":"antd","react":"react"}],16:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _react = _interopRequireDefault(require("react")); + +var _antd = require("antd"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var IceLabel = /*#__PURE__*/function (_React$Component) { + _inherits(IceLabel, _React$Component); + + var _super = _createSuper(IceLabel); + + function IceLabel(props) { + _classCallCheck(this, IceLabel); + + return _super.call(this, props); + } + + _createClass(IceLabel, [{ + key: "render", + value: function render() { + var value = this.props.value; + return /*#__PURE__*/_react["default"].createElement(_antd.Space, null, /*#__PURE__*/_react["default"].createElement("div", { + contentEditable: "true", + dangerouslySetInnerHTML: { + __html: this.nl2br(value || '') + } + })); + } + }, { + key: "nl2br", + value: function nl2br(str) { + return "".concat(str).replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '
    '); + } + }]); + + return IceLabel; +}(_react["default"].Component); + +var _default = IceLabel; +exports["default"] = _default; + +},{"antd":"antd","react":"react"}],17:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _react = _interopRequireDefault(require("react")); + +var _antd = require("antd"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var Option = _antd.Select.Option; + +var IceSelect = /*#__PURE__*/function (_React$Component) { + _inherits(IceSelect, _React$Component); + + var _super = _createSuper(IceSelect); + + function IceSelect(props) { + var _this; + + _classCallCheck(this, IceSelect); + + _this = _super.call(this, props); + _this.onChange = props.onChange; + return _this; + } + + _createClass(IceSelect, [{ + key: "render", + value: function render() { + var options; + var _this$props = this.props, + field = _this$props.field, + adapter = _this$props.adapter; + var value = this.props.value; + var data = field[1]; + + if (data['remote-source'] != null) { + var key = "".concat(data['remote-source'][0], "_").concat(data['remote-source'][1], "_").concat(data['remote-source'][2]); + + if (data['remote-source'].length === 4) { + key = "".concat(key, "_").concat(data['remote-source'][3]); + } + + options = adapter.fieldMasterData[key]; + } else { + options = data.source; + } + + var optionData = this.getFormSelectOptionsRemote(options, field, adapter); // value should be an array if multi-select + + if (data.type === 'select2multi') { + try { + value = JSON.parse(value); + + if (value == null) { + value = []; + } + + value = value.map(function (item) { + return "".concat(item); + }); + } catch (e) { + value = []; + } + } + + return /*#__PURE__*/_react["default"].createElement(_antd.Select, { + mode: data.type === 'select2multi' ? 'multiple' : undefined, + showSearch: true, + placeholder: "Select ".concat(data.label), + optionFilterProp: "children", + filterOption: function filterOption(input, option) { + return input != null && option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0; + }, + value: value, + options: optionData, + allowClear: true, + onChange: this.handleChange.bind(this), + disabled: this.props.readOnly + }); + } + }, { + key: "handleChange", + value: function handleChange(value) { + var field = this.props.field; + var data = field[1]; + + if (data.type === 'select2multi') { + this.onChange(JSON.stringify(value)); + } else { + this.onChange(value); + } + } + }, { + key: "makeOption", + value: function makeOption(option) { + return /*#__PURE__*/_react["default"].createElement(Option, { + key: "".concat(option[0]), + value: "".concat(option[0]) + }, option[1]); + } + }, { + key: "getFormSelectOptionsRemote", + value: function getFormSelectOptionsRemote(options, field, adapter) { + var optionData = []; + + if (Array.isArray(options)) { + for (var i = 0; i < options.length; i++) { + optionData.push({ + label: options[i][1], + value: options[i][0] + }); + } + } else { + for (var key in options) { + optionData.push({ + label: options[key], + value: key + }); + } + } // if (field[1].sort === 'true') { + // tuples.sort((a, b) => { + // a = a[1]; + // b = b[1]; + // + // // eslint-disable-next-line no-nested-ternary + // return a < b ? -1 : (a > b ? 1 : 0); + // }); + // } + // for (let i = 0; i < tuples.length; i++) { + // const prop = tuples[i][0]; + // const value = tuples[i][1]; + // optionData.push([prop, adapter.gt(value)]); + // } + + + return optionData; + } + }]); + + return IceSelect; +}(_react["default"].Component); + +var _default = IceSelect; +exports["default"] = _default; + +},{"antd":"antd","react":"react"}],18:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _react = _interopRequireDefault(require("react")); + +var _reactSignatureCanvas = _interopRequireDefault(require("react-signature-canvas")); + +var _antd = require("antd"); + +var _icons = require("@ant-design/icons"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var IceSignature = /*#__PURE__*/function (_React$Component) { + _inherits(IceSignature, _React$Component); + + var _super = _createSuper(IceSignature); + + function IceSignature(props) { + var _this; + + _classCallCheck(this, IceSignature); + + _this = _super.call(this, props); + _this.onChange = props.onChange; + _this.state = { + visible: false + }; + _this.signature = _react["default"].createRef(); + return _this; + } + + _createClass(IceSignature, [{ + key: "componentDidMount", + value: function componentDidMount() {} + }, { + key: "show", + value: function show() { + this.setState({ + visible: true + }); + } + }, { + key: "setSignature", + value: function setSignature(ref) { + if (ref == null) { + return; + } + + var value = this.props.value; + + if (value != null && value.length > 10) { + ref.fromDataURL(value); + } + } + }, { + key: "hide", + value: function hide() { + this.setState({ + visible: false + }); + } + }, { + key: "clear", + value: function clear() { + this.signature.clear(); + } + }, { + key: "save", + value: function save() { + var data = this.signature.toDataURL('image/png'); + this.onChange(data); + this.setState({ + visible: false + }); + } + }, { + key: "render", + value: function render() { + var _this2 = this; + + var readOnly = this.props.readOnly; + return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_antd.Modal, { + visible: this.state.visible, + title: "Signature", + maskClosable: false, + centered: true, + width: 300, + onCancel: function onCancel() { + _this2.hide(); + }, + footer: [/*#__PURE__*/_react["default"].createElement(_antd.Button, { + key: "cancel", + onClick: function onClick() { + _this2.hide(); + } + }, "Cancel"), /*#__PURE__*/_react["default"].createElement(_antd.Button, { + key: "clear", + disabled: readOnly, + type: "dashed", + onClick: function onClick() { + if (!readOnly) { + _this2.clear(); + } + } + }, "Clear"), /*#__PURE__*/_react["default"].createElement(_antd.Button, { + key: "ok", + disabled: readOnly, + type: "primary", + onClick: function onClick() { + if (!readOnly) { + _this2.save(); + } + } + }, "Submit")] + }, /*#__PURE__*/_react["default"].createElement(_reactSignatureCanvas["default"], { + ref: function ref(_ref) { + _this2.signature = _ref; + + _this2.setSignature(_ref); + }, + canvasProps: _objectSpread({ + width: 250, + height: 200, + className: 'sigCanvas' + }, readOnly ? { + readOnly: readOnly + } : {}) + })), /*#__PURE__*/_react["default"].createElement(_antd.Tag, { + color: "blue", + style: { + cursor: 'pointer' + }, + onClick: function onClick() { + _this2.show(); + } + }, /*#__PURE__*/_react["default"].createElement(_icons.VerifiedOutlined, null), ' ', "Sign")); + } + }]); + + return IceSignature; +}(_react["default"].Component); + +var _default = IceSignature; +exports["default"] = _default; + +},{"@ant-design/icons":"@ant-design/icons","antd":"antd","react":"react","react-signature-canvas":296}],19:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _react = _interopRequireDefault(require("react")); + +var _antd = require("antd"); + +var _IceForm2 = _interopRequireDefault(require("./IceForm")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } + +function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var Step = _antd.Steps.Step; + +var IceStepForm = /*#__PURE__*/function (_IceForm) { + _inherits(IceStepForm, _IceForm); + + var _super = _createSuper(IceStepForm); + + function IceStepForm(props) { + var _this; + + _classCallCheck(this, IceStepForm); + + _this = _super.call(this, props); + _this.onChange = props.onChange; + + var steps = _this.props.fields.map(function (item) { + return _objectSpread({}, item, { + ref: _react["default"].createRef() + }); + }); + + steps = steps.map(function (item) { + var ref = item.ref, + fields = item.fields; + item.content = /*#__PURE__*/_react["default"].createElement(_IceForm2["default"], { + ref: ref, + adapter: props.adapter, + fields: fields, + twoColumnLayout: props.twoColumnLayout, + width: props.width, + layout: props.layout || 'horizontal' + }); + return item; + }); + _this.state = { + current: 0, + steps: steps, + loading: false + }; + return _this; + } + + _createClass(IceStepForm, [{ + key: "moveToStep", + value: function moveToStep(current) { + this.setState({ + current: current + }); + } + }, { + key: "next", + value: function next() { + if (this.validateFields(false) === false) { + return; + } + + this.showError(false); + var current = this.state.current + 1; + this.setState({ + current: current + }); + } + }, { + key: "prev", + value: function prev() { + var current = this.state.current - 1; + + if (current < 0) { + return; + } + + this.setState({ + current: current + }); + } + }, { + key: "render", + value: function render() { + var _this2 = this; + + var adapter = this.props.adapter; + var _this$state = this.state, + current = _this$state.current, + steps = _this$state.steps; + return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_antd.Steps, { + current: current + }, steps.map(function (item, index) { + return /*#__PURE__*/_react["default"].createElement(Step, { + key: item.title, + title: item.title, + onClick: function onClick() { + return _this2.moveToStep(index); + } + }); + })), /*#__PURE__*/_react["default"].createElement(_antd.Divider, null), /*#__PURE__*/_react["default"].createElement("div", { + className: "steps-content" + }, steps.map(function (item, index) { + return /*#__PURE__*/_react["default"].createElement("div", { + style: { + display: index === current ? 'block' : 'none' + } + }, item.content); + })), /*#__PURE__*/_react["default"].createElement(_antd.Divider, null), /*#__PURE__*/_react["default"].createElement("div", { + className: "steps-action" + }, /*#__PURE__*/_react["default"].createElement(_antd.Row, { + gutter: 16 + }, /*#__PURE__*/_react["default"].createElement(_antd.Col, { + className: "gutter-row", + span: 12, + style: {} + }, /*#__PURE__*/_react["default"].createElement(_antd.Space, null, current < steps.length - 1 && /*#__PURE__*/_react["default"].createElement(_antd.Button, { + type: "primary", + onClick: function onClick() { + return _this2.next(); + } + }, adapter.gt('Next')), current > 0 && /*#__PURE__*/_react["default"].createElement(_antd.Button, { + onClick: function onClick() { + return _this2.prev(); + } + }, adapter.gt('Previous')))), /*#__PURE__*/_react["default"].createElement(_antd.Col, { + className: "gutter-row", + span: 12, + style: { + textAlign: 'right' + } + }, /*#__PURE__*/_react["default"].createElement(_antd.Space, null, /*#__PURE__*/_react["default"].createElement(_antd.Button, { + onClick: function onClick() { + return _this2.props.closeModal(); + } + }, adapter.gt('Cancel')), /*#__PURE__*/_react["default"].createElement(_antd.Button, { + type: "primary", + loading: this.state.loading, + onClick: function onClick() { + return _this2.saveData(); + } + }, adapter.gt('Save'))))))); + } + }, { + key: "saveData", + value: function () { + var _saveData = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + var _this3 = this; + + var data; + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + this.setState({ + loading: true + }); + _context.next = 3; + return this.validateFields(true); + + case 3: + data = _context.sent; + + if (data) { + this.save(data, function () { + return _this3.props.closeModal(); + }); + } + + this.setState({ + loading: false + }); + + case 6: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + + function saveData() { + return _saveData.apply(this, arguments); + } + + return saveData; + }() + }, { + key: "save", + value: function save(params, success) { + var _this4 = this; + + var adapter = this.props.adapter; + adapter.add(params, [], function () { + return adapter.get([]); + }, function () { + _this4.resetFields(); + + _this4.showError(false); + + success(); + }); + } + }, { + key: "updateFields", + value: function updateFields(data) { + var _this5 = this; + + this.state.steps.forEach(function (item) { + var subData = {}; + item.fields.forEach(function (_ref) { + var _ref2 = _slicedToArray(_ref, 1), + key = _ref2[0]; + + subData[key] = data[key]; + }); + + _this5.updateFieldsSubForm(item.ref, item.fields, subData); + }); + } + }, { + key: "updateFieldsSubForm", + value: function updateFieldsSubForm(ref, fields, data) { + data = this.dataToFormFields(data, fields); + ref.current.resetFields(); + + if (data == null) { + return; + } + + try { + ref.current.setFieldsValue(data); + } catch (e) { + console.log(e); + } + } + }, { + key: "validateFields", + value: function () { + var _validateFields = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(all) { + var adapter, steps, promiseList, allData, failedIndex, values, msg, id, fields; + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + adapter = this.props.adapter; + steps = all ? this.state.steps : this.state.steps.slice(0, this.state.current + 1); + promiseList = steps.map(function (item) { + return item.ref.current.validateFields().then(function (values) { + if (!item.ref.current.isValid()) { + return false; + } + + return values; + })["catch"](function () { + return false; + }); + }); + _context2.next = 5; + return Promise.all(promiseList); + + case 5: + allData = _context2.sent; + failedIndex = allData.findIndex(function (item) { + return item === false; + }); + + if (!(failedIndex >= 0)) { + _context2.next = 10; + break; + } + + this.setState({ + current: failedIndex + }); + return _context2.abrupt("return", false); + + case 10: + values = Object.assign.apply(Object, [{}].concat(_toConsumableArray(allData))); + values = adapter.forceInjectValuesBeforeSave(values); + msg = adapter.doCustomValidation(values); + + if (!(msg !== null)) { + _context2.next = 16; + break; + } + + this.showError(msg); + return _context2.abrupt("return", false); + + case 16: + if (adapter.csrfRequired) { + values.csrf = $("#".concat(adapter.getTableName(), "Form")).data('csrf'); + } + + id = adapter.currentElement != null ? adapter.currentElement.id : null; + + if (id != null && id !== '') { + values.id = id; + } + + fields = [].concat.apply([], this.state.steps.map(function (item) { + return item.fields; + })); + return _context2.abrupt("return", this.formFieldsToData(values, fields)); + + case 21: + case "end": + return _context2.stop(); + } + } + }, _callee2, this); + })); + + function validateFields(_x) { + return _validateFields.apply(this, arguments); + } + + return validateFields; + }() + }, { + key: "getSubFormData", + value: function getSubFormData(ref, fields, params) { + var adapter = this.props.adapter; + var values = params; + values = adapter.forceInjectValuesBeforeSave(values); + var msg = adapter.doCustomValidation(values); + + if (msg !== null) { + ref.current.showError(msg); + return; + } + + if (adapter.csrfRequired) { + values.csrf = $("#".concat(adapter.getTableName(), "Form")).data('csrf'); + } + + var id = adapter.currentElement != null ? adapter.currentElement.id : null; + + if (id != null && id !== '') { + values.id = id; + } + + return this.formFieldsToData(values, fields); + } + }, { + key: "showError", + value: function showError(errorMsg) { + this.state.steps.forEach(function (item) { + return item.ref.current.showError(errorMsg); + }); + } + }, { + key: "resetFields", + value: function resetFields() { + this.state.steps.forEach(function (item) { + return item.ref.current.resetFields(); + }); + } + }, { + key: "hideError", + value: function hideError() { + this.state.steps.forEach(function (item) { + return item.ref.current.hideError(); + }); + } + }, { + key: "isReady", + value: function isReady() { + return this.state.steps.reduce(function (acc, item) { + return acc && item.ref.current != null; + }, true); + } + }]); + + return IceStepForm; +}(_IceForm2["default"]); + +var _default = IceStepForm; +exports["default"] = _default; + +},{"./IceForm":14,"antd":"antd","react":"react"}],20:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _react = _interopRequireDefault(require("react")); + +var _antd = require("antd"); + +var _IceFormModal2 = _interopRequireDefault(require("./IceFormModal")); + +var _IceStepForm = _interopRequireDefault(require("./IceStepForm")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var IceStepFormModal = /*#__PURE__*/function (_IceFormModal) { + _inherits(IceStepFormModal, _IceFormModal); + + var _super = _createSuper(IceStepFormModal); + + function IceStepFormModal(props) { + var _this; + + _classCallCheck(this, IceStepFormModal); + + _this = _super.call(this, props); + _this.width = 850; + return _this; + } + + _createClass(IceStepFormModal, [{ + key: "show", + value: function show(data) { + var _this2 = this; + + this.props.adapter.beforeRenderFieldHook = this.props.adapter.beforeRenderField ? this.props.adapter.beforeRenderField(data) : function (fieldName, field) { + return field; + }; + + if (!data) { + this.setState({ + visible: true + }); + + if (this.iceFormReference.current) { + this.iceFormReference.current.resetFields(); + } + } else { + this.setState({ + visible: true + }); + + if (this.iceFormReference.current && this.iceFormReference.current.isReady()) { + this.iceFormReference.current.moveToStep(0); + this.iceFormReference.current.updateFields(data); + } else { + this.waitForIt(function () { + return _this2.iceFormReference.current && _this2.iceFormReference.current.isReady(); + }, function () { + _this2.iceFormReference.current.updateFields(data); + + _this2.iceFormReference.current.moveToStep(0); + }, 1000); + } + } + } + }, { + key: "hide", + value: function hide() { + this.iceFormReference.current.moveToStep(0); + this.setState({ + visible: false + }); + } + }, { + key: "render", + value: function render() { + var _this3 = this; + + var _this$props = this.props, + fields = _this$props.fields, + adapter = _this$props.adapter; + + var _this$props$adapter$g = this.props.adapter.getFormOptions(), + width = _this$props$adapter$g.width, + twoColumnLayout = _this$props$adapter$g.twoColumnLayout, + layout = _this$props$adapter$g.layout; + + return /*#__PURE__*/_react["default"].createElement(_antd.Modal, { + visible: this.state.visible, + title: this.props.adapter.gt(this.props.title || adapter.objectTypeName), + maskClosable: false, + width: width || this.width, + footer: [], + onCancel: function onCancel() { + _this3.closeModal(); + } + }, /*#__PURE__*/_react["default"].createElement(_IceStepForm["default"], { + ref: this.iceFormReference, + adapter: adapter, + fields: fields, + closeModal: function closeModal() { + _this3.closeModal(); + }, + twoColumnLayout: twoColumnLayout || false, + layout: layout + })); + } + }]); + + return IceStepFormModal; +}(_IceFormModal2["default"]); + +var _default = IceStepFormModal; +exports["default"] = _default; + +},{"./IceFormModal":15,"./IceStepForm":19,"antd":"antd","react":"react"}],21:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _react = _interopRequireWildcard(require("react")); + +var _antd = require("antd"); + +var _icons = require("@ant-design/icons"); + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var Search = _antd.Input.Search; + +var IceTable = /*#__PURE__*/function (_React$Component) { + _inherits(IceTable, _React$Component); + + var _super = _createSuper(IceTable); + + function IceTable(props) { + var _this; + + _classCallCheck(this, IceTable); + + _this = _super.call(this, props); + _this.state = { + data: [], + pagination: {}, + loading: true, + fetchConfig: false, + //filter: null, + showLoading: true, + currentElement: null, + fetchCompleted: false + }; + + _this.handleTableChange = function (pagination, filters, sorter) { + var pager = _objectSpread({}, _this.state.pagination); + + var search = _this.state.search; + pager.current = pagination.current; + + _this.setState({ + pagination: pager + }); + + var fetchConfig = { + limit: pagination.pageSize, + page: pagination.current, + sortField: sorter.field, + sortOrder: sorter.order, + filters: JSON.stringify(filters), + search: search + }; + + _this.setState({ + fetchConfig: fetchConfig + }); + + _this.fetch(fetchConfig); + }; + + _this.reload = function () { + var fetchConfig = _this.state.fetchConfig; + + if (fetchConfig) { + _this.fetch(fetchConfig); + } + }; + + _this.search = function (value) { + _this.setState({ + search: value + }); + + var fetchConfig = _this.state.fetchConfig; + console.log(fetchConfig); + + if (fetchConfig) { + fetchConfig.search = value; + + _this.setState({ + fetchConfig: fetchConfig + }); + + _this.fetch(fetchConfig); + } + }; + + _this.addNew = function () { + _this.props.adapter.renderForm(); + }; + + _this.showFilters = function () { + _this.props.adapter.showFilters(); + }; + + _this.setFilterData = function (filter) { + _this.setState({ + filter: filter + }); + }; + + _this.setCurrentElement = function (currentElement) { + _this.setState({ + currentElement: currentElement + }); + }; + + _this.fetch = function () { + var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + //this.setState({ loading: this.state.showLoading }); + _this.setState({ + loading: true + }); //const hideMessage = message.loading({ content: 'Loading Latest Data ...', key: 'loadingTable', duration: 1}); + + + var pagination = _objectSpread({}, _this.state.pagination); + + if (_this.props.adapter.localStorageEnabled) { + try { + var cachedResponse = _this.props.reader.getCachedResponse(params); + + if (cachedResponse.items) { + _this.setState({ + loading: false, + data: cachedResponse.items, + pagination: pagination, + showLoading: false + }); + } else { + _this.props.reader.clearCachedResponse(params); + } + } catch (e) { + _this.props.reader.clearCachedResponse(params); + } + } + + _this.props.reader.get(params).then(function (data) { + // Read total count from server + // pagination.total = data.totalCount; + pagination.total = data.total; //hideMessage(); + // setTimeout( + // () => message.success({ content: 'Loading Completed!', key: 'loadingSuccess', duration: 1 }), + // 600 + // ); + + _this.setState({ + loading: false, + data: data.items, + pagination: pagination, + showLoading: false, + fetchCompleted: true + }); + }); + }; + + return _this; + } + + _createClass(IceTable, [{ + key: "componentDidMount", + value: function componentDidMount() { + var fetchConfig = { + page: 1 + }; + + _antd.message.config({ + top: 40 + }); + + this.setState({ + fetchConfig: fetchConfig, + //filter: this.props.adapter.filter, + pagination: { + 'pageSize': this.props.reader.pageSize + } + }); //this.fetch(fetchConfig); + } + }, { + key: "setLoading", + value: function setLoading(value) { + this.setState({ + loading: value + }); + } + }, { + key: "getChildrenWithProps", + value: function getChildrenWithProps(element) { + var _this2 = this; + + var childrenWithProps = _react["default"].Children.map(this.props.children, function (child) { + // checking isValidElement is the safe way and avoids a typescript error too + var props = { + element: element, + adapter: _this2.props.adapter, + loading: _this2.state.loading + }; + + if (_react["default"].isValidElement(child)) { + return _react["default"].cloneElement(child, props); + } + + return child; + }); + + return childrenWithProps; + } + }, { + key: "render", + value: function render() { + var _this3 = this; + + return /*#__PURE__*/_react["default"].createElement(_antd.Row, { + direction: "vertical", + style: { + width: '100%' + } + }, !this.state.currentElement && /*#__PURE__*/_react["default"].createElement(_antd.Col, { + span: 24 + }, /*#__PURE__*/_react["default"].createElement(_antd.Row, { + gutter: 24 + }, /*#__PURE__*/_react["default"].createElement(_antd.Col, { + span: 18 + }, /*#__PURE__*/_react["default"].createElement(_antd.Space, null, this.props.adapter.hasAccess('save') && this.props.adapter.getShowAddNew() && /*#__PURE__*/_react["default"].createElement(_antd.Button, { + type: "primary", + onClick: this.addNew + }, /*#__PURE__*/_react["default"].createElement(_icons.PlusCircleOutlined, null), " Add New"), this.props.adapter.getFilters() && /*#__PURE__*/_react["default"].createElement(_antd.Button, { + onClick: this.showFilters + }, /*#__PURE__*/_react["default"].createElement(_icons.FilterOutlined, null), " Filters"), this.state.fetchCompleted && this.props.adapter.getFilters() && this.props.adapter.filter != null && this.props.adapter.filter !== [] && this.props.adapter.filter !== '' && this.props.adapter.getFilterString(this.props.adapter.filter) !== '' && /*#__PURE__*/_react["default"].createElement(_antd.Tag, { + closable: true, + style: { + 'lineHeight': '30px' + }, + color: "blue", + onClose: function onClose() { + return _this3.props.adapter.resetFilters(); + }, + visible: this.props.adapter.filter != null && this.props.adapter.filter !== [] && this.props.adapter.filter !== '' + }, this.props.adapter.getFilterString(this.props.adapter.filter)))), /*#__PURE__*/_react["default"].createElement(_antd.Col, { + span: 6 + }, /*#__PURE__*/_react["default"].createElement(_antd.Form, { + ref: function ref(formRef) { + return _this3.form = formRef; + }, + name: "advanced_search", + className: "ant-advanced-search-form" + }, /*#__PURE__*/_react["default"].createElement(_antd.Form.Item, { + name: "searchTerm", + label: "", + rules: [{ + required: false + }] + }, /*#__PURE__*/_react["default"].createElement(Search, { + placeholder: "input search text", + enterButton: "Search", + onSearch: function onSearch(value) { + return _this3.search(value); + } + }))))), /*#__PURE__*/_react["default"].createElement(_antd.Row, { + gutter: 24 + }, /*#__PURE__*/_react["default"].createElement(_antd.Col, { + span: 24 + }, /*#__PURE__*/_react["default"].createElement(_antd.Table // bordered + , { + rowClassName: function rowClassName(record, index) { + return index % 2 === 0 ? 'table-row-light' : 'table-row-dark'; + }, + columns: this.props.columns, + rowKey: function rowKey(record) { + return record.id; + }, + dataSource: this.state.data, + pagination: this.state.pagination, + loading: this.state.loading, + onChange: this.handleTableChange, + reader: this.props.dataPipe + })))), this.state.currentElement && this.getChildrenWithProps(this.state.currentElement)); + } + }]); + + return IceTable; +}(_react["default"].Component); + +var _default = IceTable; +exports["default"] = _default; + +},{"@ant-design/icons":"@ant-design/icons","antd":"antd","react":"react"}],22:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _react = _interopRequireDefault(require("react")); + +var _antd = require("antd"); + +var _icons = require("@ant-design/icons"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var IceUpload = /*#__PURE__*/function (_React$Component) { + _inherits(IceUpload, _React$Component); + + var _super = _createSuper(IceUpload); + + function IceUpload(props) { + var _this; + + _classCallCheck(this, IceUpload); + + _this = _super.call(this, props); + _this.state = { + fileList: [], + uploaded: false + }; + _this._isMounted = false; + + _this.handleDelete = function () { + _this.setState({ + fileList: [], + value: null, + uploaded: false + }); + + _this.onChange(null); + }; + + _this.handleView = function () { + var currentValue = _this.props.value; + + if (_this.state.value != null && _this.state.value !== '') { + currentValue = _this.state.value; + } + + if (currentValue == null || currentValue === '') { + _antd.message.error('File not found'); + + return; + } + + var adapter = _this.props.adapter; + adapter.getFile(currentValue).then(function (data) { + var file = { + key: data.uid, + uid: data.uid, + name: data.name, + status: data.status, + url: data.filename + }; + window.open(file.url); + })["catch"](function (e) {}); + }; + + _this.handleChange = function (info) { + var fileList = _toConsumableArray(info.fileList); + + if (fileList.length === 0) { + _this.setState({ + value: null + }); + + _this.onChange(null); + + _this.setState({ + fileList: [] + }); + + _this.setState({ + uploaded: false + }); + + return; + } + + fileList = fileList.slice(-1); + + if (fileList[0].response && fileList[0].response.status === 'error') { + _this.setState({ + value: null + }); + + _this.onChange(null); + + _this.setState({ + fileList: [] + }); + + _this.setState({ + uploaded: false + }); + + _antd.message.error("Error: ".concat(fileList[0].response.message)); + + return; + } + + fileList = fileList.map(function (file) { + if (file.response) { + // Component will show file.url as link + file.name = file.response.name; + file.url = file.response.url; + } + + return file; + }); + + _this.setState({ + fileList: fileList + }); + + _this.setState({ + value: _this.getFileName(fileList), + uploaded: true + }); + + _this.onChange(_this.getFileName(fileList)); + }; + + _this.onChange = props.onChange; + return _this; + } + + _createClass(IceUpload, [{ + key: "componentDidMount", + value: function componentDidMount() { + this._isMounted = true; + + _antd.message.config({ + top: 55, + duration: 2 + }); + } + }, { + key: "componentWillUnmount", + value: function componentWillUnmount() { + this._isMounted = false; + } + }, { + key: "getFileName", + value: function getFileName(fileList) { + var file = null; + + if (fileList) { + file = fileList[0]; + } + + return file ? file.name : ''; + } + }, { + key: "generateRandom", + value: function generateRandom(length) { + var d = new Date(); + var chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; + var result = ''; + + for (var i = length; i > 0; --i) { + result += chars[Math.round(Math.random() * (chars.length - 1))]; + } + + return result + d.getTime(); + } + }, { + key: "render", + value: function render() { + var fileName = this.generateRandom(14); + var props = { + action: "".concat(window.CLIENT_BASE_URL, "fileupload-new.php?user=").concat(this.props.user, "&file_group=").concat(this.props.fileGroup, "&file_name=").concat(fileName), + onChange: this.handleChange, + onRemove: this.handleDelete, + multiple: false, + listType: 'picture' + }; + return /*#__PURE__*/_react["default"].createElement(_antd.Space, { + direction: 'vertical' + }, !this.props.readOnly && /*#__PURE__*/_react["default"].createElement(_antd.Space, null, /*#__PURE__*/_react["default"].createElement(_antd.Upload, _extends({}, props, { + fileList: this.state.fileList + }), /*#__PURE__*/_react["default"].createElement(_antd.Tag, { + color: "blue", + style: { + cursor: 'pointer' + } + }, /*#__PURE__*/_react["default"].createElement(_icons.UploadOutlined, null), ' ', "Upload"))), /*#__PURE__*/_react["default"].createElement(_antd.Space, null, (this.props.value != null && this.props.value !== '' || this.state.value != null && this.state.value !== '') && !this.state.uploaded && /*#__PURE__*/_react["default"].createElement(_antd.Button, { + type: "link", + htmlType: "button", + onClick: this.handleView + }, /*#__PURE__*/_react["default"].createElement(_icons.DownloadOutlined, null), " View File"), (this.props.value != null && this.props.value !== '' || this.state.value != null && this.state.value !== '') && !this.state.uploaded && !this.props.readOnly && /*#__PURE__*/_react["default"].createElement(_antd.Button, { + type: "link", + htmlType: "button", + danger: true, + onClick: this.handleDelete + }, /*#__PURE__*/_react["default"].createElement(_icons.DeleteOutlined, null), " Delete"))); + } + }]); + + return IceUpload; +}(_react["default"].Component); + +var _default = IceUpload; +exports["default"] = _default; + +},{"@ant-design/icons":"@ant-design/icons","antd":"antd","react":"react"}],23:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } + +var DEFAULT_SIZE = 24; + +exports.default = function (_ref) { + var _ref$fill = _ref.fill, + fill = _ref$fill === undefined ? 'currentColor' : _ref$fill, + _ref$width = _ref.width, + width = _ref$width === undefined ? DEFAULT_SIZE : _ref$width, + _ref$height = _ref.height, + height = _ref$height === undefined ? DEFAULT_SIZE : _ref$height, + _ref$style = _ref.style, + style = _ref$style === undefined ? {} : _ref$style, + props = _objectWithoutProperties(_ref, ['fill', 'width', 'height', 'style']); + + return _react2.default.createElement( + 'svg', + _extends({ + viewBox: '0 0 ' + DEFAULT_SIZE + ' ' + DEFAULT_SIZE, + style: _extends({ fill: fill, width: width, height: height }, style) + }, props), + _react2.default.createElement('path', { d: 'M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z' }) + ); +}; +},{"react":"react"}],24:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } + +var DEFAULT_SIZE = 24; + +exports.default = function (_ref) { + var _ref$fill = _ref.fill, + fill = _ref$fill === undefined ? 'currentColor' : _ref$fill, + _ref$width = _ref.width, + width = _ref$width === undefined ? DEFAULT_SIZE : _ref$width, + _ref$height = _ref.height, + height = _ref$height === undefined ? DEFAULT_SIZE : _ref$height, + _ref$style = _ref.style, + style = _ref$style === undefined ? {} : _ref$style, + props = _objectWithoutProperties(_ref, ['fill', 'width', 'height', 'style']); + + return _react2.default.createElement( + 'svg', + _extends({ + viewBox: '0 0 ' + DEFAULT_SIZE + ' ' + DEFAULT_SIZE, + style: _extends({ fill: fill, width: width, height: height }, style) + }, props), + _react2.default.createElement('path', { d: 'M12,18.17L8.83,15L7.42,16.41L12,21L16.59,16.41L15.17,15M12,5.83L15.17,9L16.58,7.59L12,3L7.41,7.59L8.83,9L12,5.83Z' }) + ); +}; +},{"react":"react"}],25:[function(require,module,exports){ +module.exports = require('./lib/axios'); +},{"./lib/axios":27}],26:[function(require,module,exports){ +'use strict'; + +var utils = require('./../utils'); +var settle = require('./../core/settle'); +var cookies = require('./../helpers/cookies'); +var buildURL = require('./../helpers/buildURL'); +var buildFullPath = require('../core/buildFullPath'); +var parseHeaders = require('./../helpers/parseHeaders'); +var isURLSameOrigin = require('./../helpers/isURLSameOrigin'); +var createError = require('../core/createError'); + +module.exports = function xhrAdapter(config) { + return new Promise(function dispatchXhrRequest(resolve, reject) { + var requestData = config.data; + var requestHeaders = config.headers; + + if (utils.isFormData(requestData)) { + delete requestHeaders['Content-Type']; // Let the browser set it + } + + if ( + (utils.isBlob(requestData) || utils.isFile(requestData)) && + requestData.type + ) { + delete requestHeaders['Content-Type']; // Let the browser set it + } + + var request = new XMLHttpRequest(); + + // HTTP basic authentication + if (config.auth) { + var username = config.auth.username || ''; + var password = unescape(encodeURIComponent(config.auth.password)) || ''; + requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password); + } + + var fullPath = buildFullPath(config.baseURL, config.url); + request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true); + + // Set the request timeout in MS + request.timeout = config.timeout; + + // Listen for ready state + request.onreadystatechange = function handleLoad() { + if (!request || request.readyState !== 4) { + return; + } + + // The request errored out and we didn't get a response, this will be + // handled by onerror instead + // With one exception: request that using file: protocol, most browsers + // will return status as 0 even though it's a successful request + if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) { + return; + } + + // Prepare the response + var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null; + var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response; + var response = { + data: responseData, + status: request.status, + statusText: request.statusText, + headers: responseHeaders, + config: config, + request: request + }; + + settle(resolve, reject, response); + + // Clean up request + request = null; + }; + + // Handle browser request cancellation (as opposed to a manual cancellation) + request.onabort = function handleAbort() { + if (!request) { + return; + } + + reject(createError('Request aborted', config, 'ECONNABORTED', request)); + + // Clean up request + request = null; + }; + + // Handle low level network errors + request.onerror = function handleError() { + // Real errors are hidden from us by the browser + // onerror should only fire if it's a network error + reject(createError('Network Error', config, null, request)); + + // Clean up request + request = null; + }; + + // Handle timeout + request.ontimeout = function handleTimeout() { + var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded'; + if (config.timeoutErrorMessage) { + timeoutErrorMessage = config.timeoutErrorMessage; + } + reject(createError(timeoutErrorMessage, config, 'ECONNABORTED', + request)); + + // Clean up request + request = null; + }; + + // Add xsrf header + // This is only done if running in a standard browser environment. + // Specifically not if we're in a web worker, or react-native. + if (utils.isStandardBrowserEnv()) { + // Add xsrf header + var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ? + cookies.read(config.xsrfCookieName) : + undefined; + + if (xsrfValue) { + requestHeaders[config.xsrfHeaderName] = xsrfValue; + } + } + + // Add headers to the request + if ('setRequestHeader' in request) { + utils.forEach(requestHeaders, function setRequestHeader(val, key) { + if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') { + // Remove Content-Type if data is undefined + delete requestHeaders[key]; + } else { + // Otherwise add header to the request + request.setRequestHeader(key, val); + } + }); + } + + // Add withCredentials to request if needed + if (!utils.isUndefined(config.withCredentials)) { + request.withCredentials = !!config.withCredentials; + } + + // Add responseType to request if needed + if (config.responseType) { + try { + request.responseType = config.responseType; + } catch (e) { + // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2. + // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function. + if (config.responseType !== 'json') { + throw e; + } + } + } + + // Handle progress if needed + if (typeof config.onDownloadProgress === 'function') { + request.addEventListener('progress', config.onDownloadProgress); + } + + // Not all browsers support upload events + if (typeof config.onUploadProgress === 'function' && request.upload) { + request.upload.addEventListener('progress', config.onUploadProgress); + } + + if (config.cancelToken) { + // Handle cancellation + config.cancelToken.promise.then(function onCanceled(cancel) { + if (!request) { + return; + } + + request.abort(); + reject(cancel); + // Clean up request + request = null; + }); + } + + if (!requestData) { + requestData = null; + } + + // Send the request + request.send(requestData); + }); +}; + +},{"../core/buildFullPath":33,"../core/createError":34,"./../core/settle":38,"./../helpers/buildURL":42,"./../helpers/cookies":44,"./../helpers/isURLSameOrigin":46,"./../helpers/parseHeaders":48,"./../utils":50}],27:[function(require,module,exports){ +'use strict'; + +var utils = require('./utils'); +var bind = require('./helpers/bind'); +var Axios = require('./core/Axios'); +var mergeConfig = require('./core/mergeConfig'); +var defaults = require('./defaults'); + +/** + * Create an instance of Axios + * + * @param {Object} defaultConfig The default config for the instance + * @return {Axios} A new instance of Axios + */ +function createInstance(defaultConfig) { + var context = new Axios(defaultConfig); + var instance = bind(Axios.prototype.request, context); + + // Copy axios.prototype to instance + utils.extend(instance, Axios.prototype, context); + + // Copy context to instance + utils.extend(instance, context); + + return instance; +} + +// Create the default instance to be exported +var axios = createInstance(defaults); + +// Expose Axios class to allow class inheritance +axios.Axios = Axios; + +// Factory for creating new instances +axios.create = function create(instanceConfig) { + return createInstance(mergeConfig(axios.defaults, instanceConfig)); +}; + +// Expose Cancel & CancelToken +axios.Cancel = require('./cancel/Cancel'); +axios.CancelToken = require('./cancel/CancelToken'); +axios.isCancel = require('./cancel/isCancel'); + +// Expose all/spread +axios.all = function all(promises) { + return Promise.all(promises); +}; +axios.spread = require('./helpers/spread'); + +module.exports = axios; + +// Allow use of default import syntax in TypeScript +module.exports.default = axios; + +},{"./cancel/Cancel":28,"./cancel/CancelToken":29,"./cancel/isCancel":30,"./core/Axios":31,"./core/mergeConfig":37,"./defaults":40,"./helpers/bind":41,"./helpers/spread":49,"./utils":50}],28:[function(require,module,exports){ +'use strict'; + +/** + * A `Cancel` is an object that is thrown when an operation is canceled. + * + * @class + * @param {string=} message The message. + */ +function Cancel(message) { + this.message = message; +} + +Cancel.prototype.toString = function toString() { + return 'Cancel' + (this.message ? ': ' + this.message : ''); +}; + +Cancel.prototype.__CANCEL__ = true; + +module.exports = Cancel; + +},{}],29:[function(require,module,exports){ +'use strict'; + +var Cancel = require('./Cancel'); + +/** + * A `CancelToken` is an object that can be used to request cancellation of an operation. + * + * @class + * @param {Function} executor The executor function. + */ +function CancelToken(executor) { + if (typeof executor !== 'function') { + throw new TypeError('executor must be a function.'); + } + + var resolvePromise; + this.promise = new Promise(function promiseExecutor(resolve) { + resolvePromise = resolve; + }); + + var token = this; + executor(function cancel(message) { + if (token.reason) { + // Cancellation has already been requested + return; + } + + token.reason = new Cancel(message); + resolvePromise(token.reason); + }); +} + +/** + * Throws a `Cancel` if cancellation has been requested. + */ +CancelToken.prototype.throwIfRequested = function throwIfRequested() { + if (this.reason) { + throw this.reason; + } +}; + +/** + * Returns an object that contains a new `CancelToken` and a function that, when called, + * cancels the `CancelToken`. + */ +CancelToken.source = function source() { + var cancel; + var token = new CancelToken(function executor(c) { + cancel = c; + }); + return { + token: token, + cancel: cancel + }; +}; + +module.exports = CancelToken; + +},{"./Cancel":28}],30:[function(require,module,exports){ +'use strict'; + +module.exports = function isCancel(value) { + return !!(value && value.__CANCEL__); +}; + +},{}],31:[function(require,module,exports){ +'use strict'; + +var utils = require('./../utils'); +var buildURL = require('../helpers/buildURL'); +var InterceptorManager = require('./InterceptorManager'); +var dispatchRequest = require('./dispatchRequest'); +var mergeConfig = require('./mergeConfig'); + +/** + * Create a new instance of Axios + * + * @param {Object} instanceConfig The default config for the instance + */ +function Axios(instanceConfig) { + this.defaults = instanceConfig; + this.interceptors = { + request: new InterceptorManager(), + response: new InterceptorManager() + }; +} + +/** + * Dispatch a request + * + * @param {Object} config The config specific for this request (merged with this.defaults) + */ +Axios.prototype.request = function request(config) { + /*eslint no-param-reassign:0*/ + // Allow for axios('example/url'[, config]) a la fetch API + if (typeof config === 'string') { + config = arguments[1] || {}; + config.url = arguments[0]; + } else { + config = config || {}; + } + + config = mergeConfig(this.defaults, config); + + // Set config.method + if (config.method) { + config.method = config.method.toLowerCase(); + } else if (this.defaults.method) { + config.method = this.defaults.method.toLowerCase(); + } else { + config.method = 'get'; + } + + // Hook up interceptors middleware + var chain = [dispatchRequest, undefined]; + var promise = Promise.resolve(config); + + this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) { + chain.unshift(interceptor.fulfilled, interceptor.rejected); + }); + + this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { + chain.push(interceptor.fulfilled, interceptor.rejected); + }); + + while (chain.length) { + promise = promise.then(chain.shift(), chain.shift()); + } + + return promise; +}; + +Axios.prototype.getUri = function getUri(config) { + config = mergeConfig(this.defaults, config); + return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\?/, ''); +}; + +// Provide aliases for supported request methods +utils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) { + /*eslint func-names:0*/ + Axios.prototype[method] = function(url, config) { + return this.request(mergeConfig(config || {}, { + method: method, + url: url + })); + }; +}); + +utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { + /*eslint func-names:0*/ + Axios.prototype[method] = function(url, data, config) { + return this.request(mergeConfig(config || {}, { + method: method, + url: url, + data: data + })); + }; +}); + +module.exports = Axios; + +},{"../helpers/buildURL":42,"./../utils":50,"./InterceptorManager":32,"./dispatchRequest":35,"./mergeConfig":37}],32:[function(require,module,exports){ +'use strict'; + +var utils = require('./../utils'); + +function InterceptorManager() { + this.handlers = []; +} + +/** + * Add a new interceptor to the stack + * + * @param {Function} fulfilled The function to handle `then` for a `Promise` + * @param {Function} rejected The function to handle `reject` for a `Promise` + * + * @return {Number} An ID used to remove interceptor later + */ +InterceptorManager.prototype.use = function use(fulfilled, rejected) { + this.handlers.push({ + fulfilled: fulfilled, + rejected: rejected + }); + return this.handlers.length - 1; +}; + +/** + * Remove an interceptor from the stack + * + * @param {Number} id The ID that was returned by `use` + */ +InterceptorManager.prototype.eject = function eject(id) { + if (this.handlers[id]) { + this.handlers[id] = null; + } +}; + +/** + * Iterate over all the registered interceptors + * + * This method is particularly useful for skipping over any + * interceptors that may have become `null` calling `eject`. + * + * @param {Function} fn The function to call for each interceptor + */ +InterceptorManager.prototype.forEach = function forEach(fn) { + utils.forEach(this.handlers, function forEachHandler(h) { + if (h !== null) { + fn(h); + } + }); +}; + +module.exports = InterceptorManager; + +},{"./../utils":50}],33:[function(require,module,exports){ +'use strict'; + +var isAbsoluteURL = require('../helpers/isAbsoluteURL'); +var combineURLs = require('../helpers/combineURLs'); + +/** + * Creates a new URL by combining the baseURL with the requestedURL, + * only when the requestedURL is not already an absolute URL. + * If the requestURL is absolute, this function returns the requestedURL untouched. + * + * @param {string} baseURL The base URL + * @param {string} requestedURL Absolute or relative URL to combine + * @returns {string} The combined full path + */ +module.exports = function buildFullPath(baseURL, requestedURL) { + if (baseURL && !isAbsoluteURL(requestedURL)) { + return combineURLs(baseURL, requestedURL); + } + return requestedURL; +}; + +},{"../helpers/combineURLs":43,"../helpers/isAbsoluteURL":45}],34:[function(require,module,exports){ +'use strict'; + +var enhanceError = require('./enhanceError'); + +/** + * Create an Error with the specified message, config, error code, request and response. + * + * @param {string} message The error message. + * @param {Object} config The config. + * @param {string} [code] The error code (for example, 'ECONNABORTED'). + * @param {Object} [request] The request. + * @param {Object} [response] The response. + * @returns {Error} The created error. + */ +module.exports = function createError(message, config, code, request, response) { + var error = new Error(message); + return enhanceError(error, config, code, request, response); +}; + +},{"./enhanceError":36}],35:[function(require,module,exports){ +'use strict'; + +var utils = require('./../utils'); +var transformData = require('./transformData'); +var isCancel = require('../cancel/isCancel'); +var defaults = require('../defaults'); + +/** + * Throws a `Cancel` if cancellation has been requested. + */ +function throwIfCancellationRequested(config) { + if (config.cancelToken) { + config.cancelToken.throwIfRequested(); + } +} + +/** + * Dispatch a request to the server using the configured adapter. + * + * @param {object} config The config that is to be used for the request + * @returns {Promise} The Promise to be fulfilled + */ +module.exports = function dispatchRequest(config) { + throwIfCancellationRequested(config); + + // Ensure headers exist + config.headers = config.headers || {}; + + // Transform request data + config.data = transformData( + config.data, + config.headers, + config.transformRequest + ); + + // Flatten headers + config.headers = utils.merge( + config.headers.common || {}, + config.headers[config.method] || {}, + config.headers + ); + + utils.forEach( + ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], + function cleanHeaderConfig(method) { + delete config.headers[method]; + } + ); + + var adapter = config.adapter || defaults.adapter; + + return adapter(config).then(function onAdapterResolution(response) { + throwIfCancellationRequested(config); + + // Transform response data + response.data = transformData( + response.data, + response.headers, + config.transformResponse + ); + + return response; + }, function onAdapterRejection(reason) { + if (!isCancel(reason)) { + throwIfCancellationRequested(config); + + // Transform response data + if (reason && reason.response) { + reason.response.data = transformData( + reason.response.data, + reason.response.headers, + config.transformResponse + ); + } + } + + return Promise.reject(reason); + }); +}; + +},{"../cancel/isCancel":30,"../defaults":40,"./../utils":50,"./transformData":39}],36:[function(require,module,exports){ +'use strict'; + +/** + * Update an Error with the specified config, error code, and response. + * + * @param {Error} error The error to update. + * @param {Object} config The config. + * @param {string} [code] The error code (for example, 'ECONNABORTED'). + * @param {Object} [request] The request. + * @param {Object} [response] The response. + * @returns {Error} The error. + */ +module.exports = function enhanceError(error, config, code, request, response) { + error.config = config; + if (code) { + error.code = code; + } + + error.request = request; + error.response = response; + error.isAxiosError = true; + + error.toJSON = function toJSON() { + return { + // Standard + message: this.message, + name: this.name, + // Microsoft + description: this.description, + number: this.number, + // Mozilla + fileName: this.fileName, + lineNumber: this.lineNumber, + columnNumber: this.columnNumber, + stack: this.stack, + // Axios + config: this.config, + code: this.code + }; + }; + return error; +}; + +},{}],37:[function(require,module,exports){ +'use strict'; + +var utils = require('../utils'); + +/** + * Config-specific merge-function which creates a new config-object + * by merging two configuration objects together. + * + * @param {Object} config1 + * @param {Object} config2 + * @returns {Object} New object resulting from merging config2 to config1 + */ +module.exports = function mergeConfig(config1, config2) { + // eslint-disable-next-line no-param-reassign + config2 = config2 || {}; + var config = {}; + + var valueFromConfig2Keys = ['url', 'method', 'data']; + var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params']; + var defaultToConfig2Keys = [ + 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer', + 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName', + 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress', + 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent', + 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding' + ]; + var directMergeKeys = ['validateStatus']; + + function getMergedValue(target, source) { + if (utils.isPlainObject(target) && utils.isPlainObject(source)) { + return utils.merge(target, source); + } else if (utils.isPlainObject(source)) { + return utils.merge({}, source); + } else if (utils.isArray(source)) { + return source.slice(); + } + return source; + } + + function mergeDeepProperties(prop) { + if (!utils.isUndefined(config2[prop])) { + config[prop] = getMergedValue(config1[prop], config2[prop]); + } else if (!utils.isUndefined(config1[prop])) { + config[prop] = getMergedValue(undefined, config1[prop]); + } + } + + utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) { + if (!utils.isUndefined(config2[prop])) { + config[prop] = getMergedValue(undefined, config2[prop]); + } + }); + + utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties); + + utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) { + if (!utils.isUndefined(config2[prop])) { + config[prop] = getMergedValue(undefined, config2[prop]); + } else if (!utils.isUndefined(config1[prop])) { + config[prop] = getMergedValue(undefined, config1[prop]); + } + }); + + utils.forEach(directMergeKeys, function merge(prop) { + if (prop in config2) { + config[prop] = getMergedValue(config1[prop], config2[prop]); + } else if (prop in config1) { + config[prop] = getMergedValue(undefined, config1[prop]); + } + }); + + var axiosKeys = valueFromConfig2Keys + .concat(mergeDeepPropertiesKeys) + .concat(defaultToConfig2Keys) + .concat(directMergeKeys); + + var otherKeys = Object + .keys(config1) + .concat(Object.keys(config2)) + .filter(function filterAxiosKeys(key) { + return axiosKeys.indexOf(key) === -1; + }); + + utils.forEach(otherKeys, mergeDeepProperties); + + return config; +}; + +},{"../utils":50}],38:[function(require,module,exports){ +'use strict'; + +var createError = require('./createError'); + +/** + * Resolve or reject a Promise based on response status. + * + * @param {Function} resolve A function that resolves the promise. + * @param {Function} reject A function that rejects the promise. + * @param {object} response The response. + */ +module.exports = function settle(resolve, reject, response) { + var validateStatus = response.config.validateStatus; + if (!response.status || !validateStatus || validateStatus(response.status)) { + resolve(response); + } else { + reject(createError( + 'Request failed with status code ' + response.status, + response.config, + null, + response.request, + response + )); + } +}; + +},{"./createError":34}],39:[function(require,module,exports){ +'use strict'; + +var utils = require('./../utils'); + +/** + * Transform the data for a request or a response + * + * @param {Object|String} data The data to be transformed + * @param {Array} headers The headers for the request or response + * @param {Array|Function} fns A single function or Array of functions + * @returns {*} The resulting transformed data + */ +module.exports = function transformData(data, headers, fns) { + /*eslint no-param-reassign:0*/ + utils.forEach(fns, function transform(fn) { + data = fn(data, headers); + }); + + return data; +}; + +},{"./../utils":50}],40:[function(require,module,exports){ +(function (process){ +'use strict'; + +var utils = require('./utils'); +var normalizeHeaderName = require('./helpers/normalizeHeaderName'); + +var DEFAULT_CONTENT_TYPE = { + 'Content-Type': 'application/x-www-form-urlencoded' +}; + +function setContentTypeIfUnset(headers, value) { + if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) { + headers['Content-Type'] = value; + } +} + +function getDefaultAdapter() { + var adapter; + if (typeof XMLHttpRequest !== 'undefined') { + // For browsers use XHR adapter + adapter = require('./adapters/xhr'); + } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') { + // For node use HTTP adapter + adapter = require('./adapters/http'); + } + return adapter; +} + +var defaults = { + adapter: getDefaultAdapter(), + + transformRequest: [function transformRequest(data, headers) { + normalizeHeaderName(headers, 'Accept'); + normalizeHeaderName(headers, 'Content-Type'); + if (utils.isFormData(data) || + utils.isArrayBuffer(data) || + utils.isBuffer(data) || + utils.isStream(data) || + utils.isFile(data) || + utils.isBlob(data) + ) { + return data; + } + if (utils.isArrayBufferView(data)) { + return data.buffer; + } + if (utils.isURLSearchParams(data)) { + setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8'); + return data.toString(); + } + if (utils.isObject(data)) { + setContentTypeIfUnset(headers, 'application/json;charset=utf-8'); + return JSON.stringify(data); + } + return data; + }], + + transformResponse: [function transformResponse(data) { + /*eslint no-param-reassign:0*/ + if (typeof data === 'string') { + try { + data = JSON.parse(data); + } catch (e) { /* Ignore */ } + } + return data; + }], + + /** + * A timeout in milliseconds to abort a request. If set to 0 (default) a + * timeout is not created. + */ + timeout: 0, + + xsrfCookieName: 'XSRF-TOKEN', + xsrfHeaderName: 'X-XSRF-TOKEN', + + maxContentLength: -1, + maxBodyLength: -1, + + validateStatus: function validateStatus(status) { + return status >= 200 && status < 300; + } +}; + +defaults.headers = { + common: { + 'Accept': 'application/json, text/plain, */*' + } +}; + +utils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) { + defaults.headers[method] = {}; +}); + +utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { + defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE); +}); + +module.exports = defaults; + +}).call(this,require('_process')) + +},{"./adapters/http":26,"./adapters/xhr":26,"./helpers/normalizeHeaderName":47,"./utils":50,"_process":3}],41:[function(require,module,exports){ +'use strict'; + +module.exports = function bind(fn, thisArg) { + return function wrap() { + var args = new Array(arguments.length); + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i]; + } + return fn.apply(thisArg, args); + }; +}; + +},{}],42:[function(require,module,exports){ +'use strict'; + +var utils = require('./../utils'); + +function encode(val) { + return encodeURIComponent(val). + replace(/%3A/gi, ':'). + replace(/%24/g, '$'). + replace(/%2C/gi, ','). + replace(/%20/g, '+'). + replace(/%5B/gi, '['). + replace(/%5D/gi, ']'); +} + +/** + * Build a URL by appending params to the end + * + * @param {string} url The base of the url (e.g., http://www.google.com) + * @param {object} [params] The params to be appended + * @returns {string} The formatted url + */ +module.exports = function buildURL(url, params, paramsSerializer) { + /*eslint no-param-reassign:0*/ + if (!params) { + return url; + } + + var serializedParams; + if (paramsSerializer) { + serializedParams = paramsSerializer(params); + } else if (utils.isURLSearchParams(params)) { + serializedParams = params.toString(); + } else { + var parts = []; + + utils.forEach(params, function serialize(val, key) { + if (val === null || typeof val === 'undefined') { + return; + } + + if (utils.isArray(val)) { + key = key + '[]'; + } else { + val = [val]; + } + + utils.forEach(val, function parseValue(v) { + if (utils.isDate(v)) { + v = v.toISOString(); + } else if (utils.isObject(v)) { + v = JSON.stringify(v); + } + parts.push(encode(key) + '=' + encode(v)); + }); + }); + + serializedParams = parts.join('&'); + } + + if (serializedParams) { + var hashmarkIndex = url.indexOf('#'); + if (hashmarkIndex !== -1) { + url = url.slice(0, hashmarkIndex); + } + + url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams; + } + + return url; +}; + +},{"./../utils":50}],43:[function(require,module,exports){ +'use strict'; + +/** + * Creates a new URL by combining the specified URLs + * + * @param {string} baseURL The base URL + * @param {string} relativeURL The relative URL + * @returns {string} The combined URL + */ +module.exports = function combineURLs(baseURL, relativeURL) { + return relativeURL + ? baseURL.replace(/\/+$/, '') + '/' + relativeURL.replace(/^\/+/, '') + : baseURL; +}; + +},{}],44:[function(require,module,exports){ +'use strict'; + +var utils = require('./../utils'); + +module.exports = ( + utils.isStandardBrowserEnv() ? + + // Standard browser envs support document.cookie + (function standardBrowserEnv() { + return { + write: function write(name, value, expires, path, domain, secure) { + var cookie = []; + cookie.push(name + '=' + encodeURIComponent(value)); + + if (utils.isNumber(expires)) { + cookie.push('expires=' + new Date(expires).toGMTString()); + } + + if (utils.isString(path)) { + cookie.push('path=' + path); + } + + if (utils.isString(domain)) { + cookie.push('domain=' + domain); + } + + if (secure === true) { + cookie.push('secure'); + } + + document.cookie = cookie.join('; '); + }, + + read: function read(name) { + var match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)')); + return (match ? decodeURIComponent(match[3]) : null); + }, + + remove: function remove(name) { + this.write(name, '', Date.now() - 86400000); + } + }; + })() : + + // Non standard browser env (web workers, react-native) lack needed support. + (function nonStandardBrowserEnv() { + return { + write: function write() {}, + read: function read() { return null; }, + remove: function remove() {} + }; + })() +); + +},{"./../utils":50}],45:[function(require,module,exports){ +'use strict'; + +/** + * Determines whether the specified URL is absolute + * + * @param {string} url The URL to test + * @returns {boolean} True if the specified URL is absolute, otherwise false + */ +module.exports = function isAbsoluteURL(url) { + // A URL is considered absolute if it begins with "://" or "//" (protocol-relative URL). + // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed + // by any combination of letters, digits, plus, period, or hyphen. + return /^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(url); +}; + +},{}],46:[function(require,module,exports){ +'use strict'; + +var utils = require('./../utils'); + +module.exports = ( + utils.isStandardBrowserEnv() ? + + // Standard browser envs have full support of the APIs needed to test + // whether the request URL is of the same origin as current location. + (function standardBrowserEnv() { + var msie = /(msie|trident)/i.test(navigator.userAgent); + var urlParsingNode = document.createElement('a'); + var originURL; + + /** + * Parse a URL to discover it's components + * + * @param {String} url The URL to be parsed + * @returns {Object} + */ + function resolveURL(url) { + var href = url; + + if (msie) { + // IE needs attribute set twice to normalize properties + urlParsingNode.setAttribute('href', href); + href = urlParsingNode.href; + } + + urlParsingNode.setAttribute('href', href); + + // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils + return { + href: urlParsingNode.href, + protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '', + host: urlParsingNode.host, + search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '', + hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '', + hostname: urlParsingNode.hostname, + port: urlParsingNode.port, + pathname: (urlParsingNode.pathname.charAt(0) === '/') ? + urlParsingNode.pathname : + '/' + urlParsingNode.pathname + }; + } + + originURL = resolveURL(window.location.href); + + /** + * Determine if a URL shares the same origin as the current location + * + * @param {String} requestURL The URL to test + * @returns {boolean} True if URL shares the same origin, otherwise false + */ + return function isURLSameOrigin(requestURL) { + var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL; + return (parsed.protocol === originURL.protocol && + parsed.host === originURL.host); + }; + })() : + + // Non standard browser envs (web workers, react-native) lack needed support. + (function nonStandardBrowserEnv() { + return function isURLSameOrigin() { + return true; + }; + })() +); + +},{"./../utils":50}],47:[function(require,module,exports){ +'use strict'; + +var utils = require('../utils'); + +module.exports = function normalizeHeaderName(headers, normalizedName) { + utils.forEach(headers, function processHeader(value, name) { + if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) { + headers[normalizedName] = value; + delete headers[name]; + } + }); +}; + +},{"../utils":50}],48:[function(require,module,exports){ +'use strict'; + +var utils = require('./../utils'); + +// Headers whose duplicates are ignored by node +// c.f. https://nodejs.org/api/http.html#http_message_headers +var ignoreDuplicateOf = [ + 'age', 'authorization', 'content-length', 'content-type', 'etag', + 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', + 'last-modified', 'location', 'max-forwards', 'proxy-authorization', + 'referer', 'retry-after', 'user-agent' +]; + +/** + * Parse headers into an object + * + * ``` + * Date: Wed, 27 Aug 2014 08:58:49 GMT + * Content-Type: application/json + * Connection: keep-alive + * Transfer-Encoding: chunked + * ``` + * + * @param {String} headers Headers needing to be parsed + * @returns {Object} Headers parsed into an object + */ +module.exports = function parseHeaders(headers) { + var parsed = {}; + var key; + var val; + var i; + + if (!headers) { return parsed; } + + utils.forEach(headers.split('\n'), function parser(line) { + i = line.indexOf(':'); + key = utils.trim(line.substr(0, i)).toLowerCase(); + val = utils.trim(line.substr(i + 1)); + + if (key) { + if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) { + return; + } + if (key === 'set-cookie') { + parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]); + } else { + parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val; + } + } + }); + + return parsed; +}; + +},{"./../utils":50}],49:[function(require,module,exports){ +'use strict'; + +/** + * Syntactic sugar for invoking a function and expanding an array for arguments. + * + * Common use case would be to use `Function.prototype.apply`. + * + * ```js + * function f(x, y, z) {} + * var args = [1, 2, 3]; + * f.apply(null, args); + * ``` + * + * With `spread` this example can be re-written. + * + * ```js + * spread(function(x, y, z) {})([1, 2, 3]); + * ``` + * + * @param {Function} callback + * @returns {Function} + */ +module.exports = function spread(callback) { + return function wrap(arr) { + return callback.apply(null, arr); + }; +}; + +},{}],50:[function(require,module,exports){ +'use strict'; + +var bind = require('./helpers/bind'); + +/*global toString:true*/ + +// utils is a library of generic helper functions non-specific to axios + +var toString = Object.prototype.toString; + +/** + * Determine if a value is an Array + * + * @param {Object} val The value to test + * @returns {boolean} True if value is an Array, otherwise false + */ +function isArray(val) { + return toString.call(val) === '[object Array]'; +} + +/** + * Determine if a value is undefined + * + * @param {Object} val The value to test + * @returns {boolean} True if the value is undefined, otherwise false + */ +function isUndefined(val) { + return typeof val === 'undefined'; +} + +/** + * Determine if a value is a Buffer + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Buffer, otherwise false + */ +function isBuffer(val) { + return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) + && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val); +} + +/** + * Determine if a value is an ArrayBuffer + * + * @param {Object} val The value to test + * @returns {boolean} True if value is an ArrayBuffer, otherwise false + */ +function isArrayBuffer(val) { + return toString.call(val) === '[object ArrayBuffer]'; +} + +/** + * Determine if a value is a FormData + * + * @param {Object} val The value to test + * @returns {boolean} True if value is an FormData, otherwise false + */ +function isFormData(val) { + return (typeof FormData !== 'undefined') && (val instanceof FormData); +} + +/** + * Determine if a value is a view on an ArrayBuffer + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false + */ +function isArrayBufferView(val) { + var result; + if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) { + result = ArrayBuffer.isView(val); + } else { + result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer); + } + return result; +} + +/** + * Determine if a value is a String + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a String, otherwise false + */ +function isString(val) { + return typeof val === 'string'; +} + +/** + * Determine if a value is a Number + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Number, otherwise false + */ +function isNumber(val) { + return typeof val === 'number'; +} + +/** + * Determine if a value is an Object + * + * @param {Object} val The value to test + * @returns {boolean} True if value is an Object, otherwise false + */ +function isObject(val) { + return val !== null && typeof val === 'object'; +} + +/** + * Determine if a value is a plain Object + * + * @param {Object} val The value to test + * @return {boolean} True if value is a plain Object, otherwise false + */ +function isPlainObject(val) { + if (toString.call(val) !== '[object Object]') { + return false; + } + + var prototype = Object.getPrototypeOf(val); + return prototype === null || prototype === Object.prototype; +} + +/** + * Determine if a value is a Date + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Date, otherwise false + */ +function isDate(val) { + return toString.call(val) === '[object Date]'; +} + +/** + * Determine if a value is a File + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a File, otherwise false + */ +function isFile(val) { + return toString.call(val) === '[object File]'; +} + +/** + * Determine if a value is a Blob + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Blob, otherwise false + */ +function isBlob(val) { + return toString.call(val) === '[object Blob]'; +} + +/** + * Determine if a value is a Function + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Function, otherwise false + */ +function isFunction(val) { + return toString.call(val) === '[object Function]'; +} + +/** + * Determine if a value is a Stream + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Stream, otherwise false + */ +function isStream(val) { + return isObject(val) && isFunction(val.pipe); +} + +/** + * Determine if a value is a URLSearchParams object + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a URLSearchParams object, otherwise false + */ +function isURLSearchParams(val) { + return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams; +} + +/** + * Trim excess whitespace off the beginning and end of a string + * + * @param {String} str The String to trim + * @returns {String} The String freed of excess whitespace + */ +function trim(str) { + return str.replace(/^\s*/, '').replace(/\s*$/, ''); +} + +/** + * Determine if we're running in a standard browser environment + * + * This allows axios to run in a web worker, and react-native. + * Both environments support XMLHttpRequest, but not fully standard globals. + * + * web workers: + * typeof window -> undefined + * typeof document -> undefined + * + * react-native: + * navigator.product -> 'ReactNative' + * nativescript + * navigator.product -> 'NativeScript' or 'NS' + */ +function isStandardBrowserEnv() { + if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' || + navigator.product === 'NativeScript' || + navigator.product === 'NS')) { + return false; + } + return ( + typeof window !== 'undefined' && + typeof document !== 'undefined' + ); +} + +/** + * Iterate over an Array or an Object invoking a function for each item. + * + * If `obj` is an Array callback will be called passing + * the value, index, and complete array for each item. + * + * If 'obj' is an Object callback will be called passing + * the value, key, and complete object for each property. + * + * @param {Object|Array} obj The object to iterate + * @param {Function} fn The callback to invoke for each item + */ +function forEach(obj, fn) { + // Don't bother if no value provided + if (obj === null || typeof obj === 'undefined') { + return; + } + + // Force an array if not already something iterable + if (typeof obj !== 'object') { + /*eslint no-param-reassign:0*/ + obj = [obj]; + } + + if (isArray(obj)) { + // Iterate over array values + for (var i = 0, l = obj.length; i < l; i++) { + fn.call(null, obj[i], i, obj); + } + } else { + // Iterate over object keys + for (var key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) { + fn.call(null, obj[key], key, obj); + } + } + } +} + +/** + * Accepts varargs expecting each argument to be an object, then + * immutably merges the properties of each object and returns result. + * + * When multiple objects contain the same key the later object in + * the arguments list will take precedence. + * + * Example: + * + * ```js + * var result = merge({foo: 123}, {foo: 456}); + * console.log(result.foo); // outputs 456 + * ``` + * + * @param {Object} obj1 Object to merge + * @returns {Object} Result of all merge properties + */ +function merge(/* obj1, obj2, obj3, ... */) { + var result = {}; + function assignValue(val, key) { + if (isPlainObject(result[key]) && isPlainObject(val)) { + result[key] = merge(result[key], val); + } else if (isPlainObject(val)) { + result[key] = merge({}, val); + } else if (isArray(val)) { + result[key] = val.slice(); + } else { + result[key] = val; + } + } + + for (var i = 0, l = arguments.length; i < l; i++) { + forEach(arguments[i], assignValue); + } + return result; +} + +/** + * Extends object a by mutably adding to it the properties of object b. + * + * @param {Object} a The object to be extended + * @param {Object} b The object to copy properties from + * @param {Object} thisArg The object to bind function to + * @return {Object} The resulting value of object a + */ +function extend(a, b, thisArg) { + forEach(b, function assignValue(val, key) { + if (thisArg && typeof val === 'function') { + a[key] = bind(val, thisArg); + } else { + a[key] = val; + } + }); + return a; +} + +/** + * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM) + * + * @param {string} content with BOM + * @return {string} content value without BOM + */ +function stripBOM(content) { + if (content.charCodeAt(0) === 0xFEFF) { + content = content.slice(1); + } + return content; +} + +module.exports = { + isArray: isArray, + isArrayBuffer: isArrayBuffer, + isBuffer: isBuffer, + isFormData: isFormData, + isArrayBufferView: isArrayBufferView, + isString: isString, + isNumber: isNumber, + isObject: isObject, + isPlainObject: isPlainObject, + isUndefined: isUndefined, + isDate: isDate, + isFile: isFile, + isBlob: isBlob, + isFunction: isFunction, + isStream: isStream, + isURLSearchParams: isURLSearchParams, + isStandardBrowserEnv: isStandardBrowserEnv, + forEach: forEach, + merge: merge, + extend: extend, + trim: trim, + stripBOM: stripBOM +}; + +},{"./helpers/bind":41}],51:[function(require,module,exports){ +var getNative = require('./_getNative'), + root = require('./_root'); + +/* Built-in method references that are verified to be native. */ +var DataView = getNative(root, 'DataView'); + +module.exports = DataView; + +},{"./_getNative":134,"./_root":177}],52:[function(require,module,exports){ +var hashClear = require('./_hashClear'), + hashDelete = require('./_hashDelete'), + hashGet = require('./_hashGet'), + hashHas = require('./_hashHas'), + hashSet = require('./_hashSet'); + +/** + * Creates a hash object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function Hash(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +// Add methods to `Hash`. +Hash.prototype.clear = hashClear; +Hash.prototype['delete'] = hashDelete; +Hash.prototype.get = hashGet; +Hash.prototype.has = hashHas; +Hash.prototype.set = hashSet; + +module.exports = Hash; + +},{"./_hashClear":142,"./_hashDelete":143,"./_hashGet":144,"./_hashHas":145,"./_hashSet":146}],53:[function(require,module,exports){ +var listCacheClear = require('./_listCacheClear'), + listCacheDelete = require('./_listCacheDelete'), + listCacheGet = require('./_listCacheGet'), + listCacheHas = require('./_listCacheHas'), + listCacheSet = require('./_listCacheSet'); + +/** + * Creates an list cache object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function ListCache(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +// Add methods to `ListCache`. +ListCache.prototype.clear = listCacheClear; +ListCache.prototype['delete'] = listCacheDelete; +ListCache.prototype.get = listCacheGet; +ListCache.prototype.has = listCacheHas; +ListCache.prototype.set = listCacheSet; + +module.exports = ListCache; + +},{"./_listCacheClear":157,"./_listCacheDelete":158,"./_listCacheGet":159,"./_listCacheHas":160,"./_listCacheSet":161}],54:[function(require,module,exports){ +var getNative = require('./_getNative'), + root = require('./_root'); + +/* Built-in method references that are verified to be native. */ +var Map = getNative(root, 'Map'); + +module.exports = Map; + +},{"./_getNative":134,"./_root":177}],55:[function(require,module,exports){ +var mapCacheClear = require('./_mapCacheClear'), + mapCacheDelete = require('./_mapCacheDelete'), + mapCacheGet = require('./_mapCacheGet'), + mapCacheHas = require('./_mapCacheHas'), + mapCacheSet = require('./_mapCacheSet'); + +/** + * Creates a map cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function MapCache(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +// Add methods to `MapCache`. +MapCache.prototype.clear = mapCacheClear; +MapCache.prototype['delete'] = mapCacheDelete; +MapCache.prototype.get = mapCacheGet; +MapCache.prototype.has = mapCacheHas; +MapCache.prototype.set = mapCacheSet; + +module.exports = MapCache; + +},{"./_mapCacheClear":162,"./_mapCacheDelete":163,"./_mapCacheGet":164,"./_mapCacheHas":165,"./_mapCacheSet":166}],56:[function(require,module,exports){ +var getNative = require('./_getNative'), + root = require('./_root'); + +/* Built-in method references that are verified to be native. */ +var Promise = getNative(root, 'Promise'); + +module.exports = Promise; + +},{"./_getNative":134,"./_root":177}],57:[function(require,module,exports){ +var getNative = require('./_getNative'), + root = require('./_root'); + +/* Built-in method references that are verified to be native. */ +var Set = getNative(root, 'Set'); + +module.exports = Set; + +},{"./_getNative":134,"./_root":177}],58:[function(require,module,exports){ +var MapCache = require('./_MapCache'), + setCacheAdd = require('./_setCacheAdd'), + setCacheHas = require('./_setCacheHas'); + +/** + * + * Creates an array cache object to store unique values. + * + * @private + * @constructor + * @param {Array} [values] The values to cache. + */ +function SetCache(values) { + var index = -1, + length = values == null ? 0 : values.length; + + this.__data__ = new MapCache; + while (++index < length) { + this.add(values[index]); + } +} + +// Add methods to `SetCache`. +SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; +SetCache.prototype.has = setCacheHas; + +module.exports = SetCache; + +},{"./_MapCache":55,"./_setCacheAdd":179,"./_setCacheHas":180}],59:[function(require,module,exports){ +var ListCache = require('./_ListCache'), + stackClear = require('./_stackClear'), + stackDelete = require('./_stackDelete'), + stackGet = require('./_stackGet'), + stackHas = require('./_stackHas'), + stackSet = require('./_stackSet'); + +/** + * Creates a stack cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function Stack(entries) { + var data = this.__data__ = new ListCache(entries); + this.size = data.size; +} + +// Add methods to `Stack`. +Stack.prototype.clear = stackClear; +Stack.prototype['delete'] = stackDelete; +Stack.prototype.get = stackGet; +Stack.prototype.has = stackHas; +Stack.prototype.set = stackSet; + +module.exports = Stack; + +},{"./_ListCache":53,"./_stackClear":184,"./_stackDelete":185,"./_stackGet":186,"./_stackHas":187,"./_stackSet":188}],60:[function(require,module,exports){ +var root = require('./_root'); + +/** Built-in value references. */ +var Symbol = root.Symbol; + +module.exports = Symbol; + +},{"./_root":177}],61:[function(require,module,exports){ +var root = require('./_root'); + +/** Built-in value references. */ +var Uint8Array = root.Uint8Array; + +module.exports = Uint8Array; + +},{"./_root":177}],62:[function(require,module,exports){ +var getNative = require('./_getNative'), + root = require('./_root'); + +/* Built-in method references that are verified to be native. */ +var WeakMap = getNative(root, 'WeakMap'); + +module.exports = WeakMap; + +},{"./_getNative":134,"./_root":177}],63:[function(require,module,exports){ +/** + * A faster alternative to `Function#apply`, this function invokes `func` + * with the `this` binding of `thisArg` and the arguments of `args`. + * + * @private + * @param {Function} func The function to invoke. + * @param {*} thisArg The `this` binding of `func`. + * @param {Array} args The arguments to invoke `func` with. + * @returns {*} Returns the result of `func`. + */ +function apply(func, thisArg, args) { + switch (args.length) { + case 0: return func.call(thisArg); + case 1: return func.call(thisArg, args[0]); + case 2: return func.call(thisArg, args[0], args[1]); + case 3: return func.call(thisArg, args[0], args[1], args[2]); + } + return func.apply(thisArg, args); +} + +module.exports = apply; + +},{}],64:[function(require,module,exports){ +/** + * A specialized version of `_.forEach` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns `array`. + */ +function arrayEach(array, iteratee) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (iteratee(array[index], index, array) === false) { + break; + } + } + return array; +} + +module.exports = arrayEach; + +},{}],65:[function(require,module,exports){ +/** + * A specialized version of `_.filter` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + */ +function arrayFilter(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length, + resIndex = 0, + result = []; + + while (++index < length) { + var value = array[index]; + if (predicate(value, index, array)) { + result[resIndex++] = value; + } + } + return result; +} + +module.exports = arrayFilter; + +},{}],66:[function(require,module,exports){ +var baseTimes = require('./_baseTimes'), + isArguments = require('./isArguments'), + isArray = require('./isArray'), + isBuffer = require('./isBuffer'), + isIndex = require('./_isIndex'), + isTypedArray = require('./isTypedArray'); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Creates an array of the enumerable property names of the array-like `value`. + * + * @private + * @param {*} value The value to query. + * @param {boolean} inherited Specify returning inherited property names. + * @returns {Array} Returns the array of property names. + */ +function arrayLikeKeys(value, inherited) { + var isArr = isArray(value), + isArg = !isArr && isArguments(value), + isBuff = !isArr && !isArg && isBuffer(value), + isType = !isArr && !isArg && !isBuff && isTypedArray(value), + skipIndexes = isArr || isArg || isBuff || isType, + result = skipIndexes ? baseTimes(value.length, String) : [], + length = result.length; + + for (var key in value) { + if ((inherited || hasOwnProperty.call(value, key)) && + !(skipIndexes && ( + // Safari 9 has enumerable `arguments.length` in strict mode. + key == 'length' || + // Node.js 0.10 has enumerable non-index properties on buffers. + (isBuff && (key == 'offset' || key == 'parent')) || + // PhantomJS 2 has enumerable non-index properties on typed arrays. + (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) || + // Skip index properties. + isIndex(key, length) + ))) { + result.push(key); + } + } + return result; +} + +module.exports = arrayLikeKeys; + +},{"./_baseTimes":105,"./_isIndex":150,"./isArguments":202,"./isArray":203,"./isBuffer":206,"./isTypedArray":216}],67:[function(require,module,exports){ +/** + * A specialized version of `_.map` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ +function arrayMap(array, iteratee) { + var index = -1, + length = array == null ? 0 : array.length, + result = Array(length); + + while (++index < length) { + result[index] = iteratee(array[index], index, array); + } + return result; +} + +module.exports = arrayMap; + +},{}],68:[function(require,module,exports){ +/** + * Appends the elements of `values` to `array`. + * + * @private + * @param {Array} array The array to modify. + * @param {Array} values The values to append. + * @returns {Array} Returns `array`. + */ +function arrayPush(array, values) { + var index = -1, + length = values.length, + offset = array.length; + + while (++index < length) { + array[offset + index] = values[index]; + } + return array; +} + +module.exports = arrayPush; + +},{}],69:[function(require,module,exports){ +/** + * A specialized version of `_.some` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + */ +function arraySome(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (predicate(array[index], index, array)) { + return true; + } + } + return false; +} + +module.exports = arraySome; + +},{}],70:[function(require,module,exports){ +var baseAssignValue = require('./_baseAssignValue'), + eq = require('./eq'); + +/** + * This function is like `assignValue` except that it doesn't assign + * `undefined` values. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ +function assignMergeValue(object, key, value) { + if ((value !== undefined && !eq(object[key], value)) || + (value === undefined && !(key in object))) { + baseAssignValue(object, key, value); + } +} + +module.exports = assignMergeValue; + +},{"./_baseAssignValue":75,"./eq":196}],71:[function(require,module,exports){ +var baseAssignValue = require('./_baseAssignValue'), + eq = require('./eq'); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Assigns `value` to `key` of `object` if the existing value is not equivalent + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ +function assignValue(object, key, value) { + var objValue = object[key]; + if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || + (value === undefined && !(key in object))) { + baseAssignValue(object, key, value); + } +} + +module.exports = assignValue; + +},{"./_baseAssignValue":75,"./eq":196}],72:[function(require,module,exports){ +var eq = require('./eq'); + +/** + * Gets the index at which the `key` is found in `array` of key-value pairs. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} key The key to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function assocIndexOf(array, key) { + var length = array.length; + while (length--) { + if (eq(array[length][0], key)) { + return length; + } + } + return -1; +} + +module.exports = assocIndexOf; + +},{"./eq":196}],73:[function(require,module,exports){ +var copyObject = require('./_copyObject'), + keys = require('./keys'); + +/** + * The base implementation of `_.assign` without support for multiple sources + * or `customizer` functions. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @returns {Object} Returns `object`. + */ +function baseAssign(object, source) { + return object && copyObject(source, keys(source), object); +} + +module.exports = baseAssign; + +},{"./_copyObject":118,"./keys":218}],74:[function(require,module,exports){ +var copyObject = require('./_copyObject'), + keysIn = require('./keysIn'); + +/** + * The base implementation of `_.assignIn` without support for multiple sources + * or `customizer` functions. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @returns {Object} Returns `object`. + */ +function baseAssignIn(object, source) { + return object && copyObject(source, keysIn(source), object); +} + +module.exports = baseAssignIn; + +},{"./_copyObject":118,"./keysIn":219}],75:[function(require,module,exports){ +var defineProperty = require('./_defineProperty'); + +/** + * The base implementation of `assignValue` and `assignMergeValue` without + * value checks. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ +function baseAssignValue(object, key, value) { + if (key == '__proto__' && defineProperty) { + defineProperty(object, key, { + 'configurable': true, + 'enumerable': true, + 'value': value, + 'writable': true + }); + } else { + object[key] = value; + } +} + +module.exports = baseAssignValue; + +},{"./_defineProperty":125}],76:[function(require,module,exports){ +var Stack = require('./_Stack'), + arrayEach = require('./_arrayEach'), + assignValue = require('./_assignValue'), + baseAssign = require('./_baseAssign'), + baseAssignIn = require('./_baseAssignIn'), + cloneBuffer = require('./_cloneBuffer'), + copyArray = require('./_copyArray'), + copySymbols = require('./_copySymbols'), + copySymbolsIn = require('./_copySymbolsIn'), + getAllKeys = require('./_getAllKeys'), + getAllKeysIn = require('./_getAllKeysIn'), + getTag = require('./_getTag'), + initCloneArray = require('./_initCloneArray'), + initCloneByTag = require('./_initCloneByTag'), + initCloneObject = require('./_initCloneObject'), + isArray = require('./isArray'), + isBuffer = require('./isBuffer'), + isMap = require('./isMap'), + isObject = require('./isObject'), + isSet = require('./isSet'), + keys = require('./keys'), + keysIn = require('./keysIn'); + +/** Used to compose bitmasks for cloning. */ +var CLONE_DEEP_FLAG = 1, + CLONE_FLAT_FLAG = 2, + CLONE_SYMBOLS_FLAG = 4; + +/** `Object#toString` result references. */ +var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + boolTag = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + mapTag = '[object Map]', + numberTag = '[object Number]', + objectTag = '[object Object]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + symbolTag = '[object Symbol]', + weakMapTag = '[object WeakMap]'; + +var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; + +/** Used to identify `toStringTag` values supported by `_.clone`. */ +var cloneableTags = {}; +cloneableTags[argsTag] = cloneableTags[arrayTag] = +cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = +cloneableTags[boolTag] = cloneableTags[dateTag] = +cloneableTags[float32Tag] = cloneableTags[float64Tag] = +cloneableTags[int8Tag] = cloneableTags[int16Tag] = +cloneableTags[int32Tag] = cloneableTags[mapTag] = +cloneableTags[numberTag] = cloneableTags[objectTag] = +cloneableTags[regexpTag] = cloneableTags[setTag] = +cloneableTags[stringTag] = cloneableTags[symbolTag] = +cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = +cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; +cloneableTags[errorTag] = cloneableTags[funcTag] = +cloneableTags[weakMapTag] = false; + +/** + * The base implementation of `_.clone` and `_.cloneDeep` which tracks + * traversed objects. + * + * @private + * @param {*} value The value to clone. + * @param {boolean} bitmask The bitmask flags. + * 1 - Deep clone + * 2 - Flatten inherited properties + * 4 - Clone symbols + * @param {Function} [customizer] The function to customize cloning. + * @param {string} [key] The key of `value`. + * @param {Object} [object] The parent object of `value`. + * @param {Object} [stack] Tracks traversed objects and their clone counterparts. + * @returns {*} Returns the cloned value. + */ +function baseClone(value, bitmask, customizer, key, object, stack) { + var result, + isDeep = bitmask & CLONE_DEEP_FLAG, + isFlat = bitmask & CLONE_FLAT_FLAG, + isFull = bitmask & CLONE_SYMBOLS_FLAG; + + if (customizer) { + result = object ? customizer(value, key, object, stack) : customizer(value); + } + if (result !== undefined) { + return result; + } + if (!isObject(value)) { + return value; + } + var isArr = isArray(value); + if (isArr) { + result = initCloneArray(value); + if (!isDeep) { + return copyArray(value, result); + } + } else { + var tag = getTag(value), + isFunc = tag == funcTag || tag == genTag; + + if (isBuffer(value)) { + return cloneBuffer(value, isDeep); + } + if (tag == objectTag || tag == argsTag || (isFunc && !object)) { + result = (isFlat || isFunc) ? {} : initCloneObject(value); + if (!isDeep) { + return isFlat + ? copySymbolsIn(value, baseAssignIn(result, value)) + : copySymbols(value, baseAssign(result, value)); + } + } else { + if (!cloneableTags[tag]) { + return object ? value : {}; + } + result = initCloneByTag(value, tag, isDeep); + } + } + // Check for circular references and return its corresponding clone. + stack || (stack = new Stack); + var stacked = stack.get(value); + if (stacked) { + return stacked; + } + stack.set(value, result); + + if (isSet(value)) { + value.forEach(function(subValue) { + result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack)); + }); + } else if (isMap(value)) { + value.forEach(function(subValue, key) { + result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack)); + }); + } + + var keysFunc = isFull + ? (isFlat ? getAllKeysIn : getAllKeys) + : (isFlat ? keysIn : keys); + + var props = isArr ? undefined : keysFunc(value); + arrayEach(props || value, function(subValue, key) { + if (props) { + key = subValue; + subValue = value[key]; + } + // Recursively populate clone (susceptible to call stack limits). + assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack)); + }); + return result; +} + +module.exports = baseClone; + +},{"./_Stack":59,"./_arrayEach":64,"./_assignValue":71,"./_baseAssign":73,"./_baseAssignIn":74,"./_cloneBuffer":112,"./_copyArray":117,"./_copySymbols":119,"./_copySymbolsIn":120,"./_getAllKeys":130,"./_getAllKeysIn":131,"./_getTag":139,"./_initCloneArray":147,"./_initCloneByTag":148,"./_initCloneObject":149,"./isArray":203,"./isBuffer":206,"./isMap":209,"./isObject":210,"./isSet":213,"./keys":218,"./keysIn":219}],77:[function(require,module,exports){ +var isObject = require('./isObject'); + +/** Built-in value references. */ +var objectCreate = Object.create; + +/** + * The base implementation of `_.create` without support for assigning + * properties to the created object. + * + * @private + * @param {Object} proto The object to inherit from. + * @returns {Object} Returns the new object. + */ +var baseCreate = (function() { + function object() {} + return function(proto) { + if (!isObject(proto)) { + return {}; + } + if (objectCreate) { + return objectCreate(proto); + } + object.prototype = proto; + var result = new object; + object.prototype = undefined; + return result; + }; +}()); + +module.exports = baseCreate; + +},{"./isObject":210}],78:[function(require,module,exports){ +var baseForOwn = require('./_baseForOwn'), + createBaseEach = require('./_createBaseEach'); + +/** + * The base implementation of `_.forEach` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + */ +var baseEach = createBaseEach(baseForOwn); + +module.exports = baseEach; + +},{"./_baseForOwn":80,"./_createBaseEach":123}],79:[function(require,module,exports){ +var createBaseFor = require('./_createBaseFor'); + +/** + * The base implementation of `baseForOwn` which iterates over `object` + * properties returned by `keysFunc` and invokes `iteratee` for each property. + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {Function} keysFunc The function to get the keys of `object`. + * @returns {Object} Returns `object`. + */ +var baseFor = createBaseFor(); + +module.exports = baseFor; + +},{"./_createBaseFor":124}],80:[function(require,module,exports){ +var baseFor = require('./_baseFor'), + keys = require('./keys'); + +/** + * The base implementation of `_.forOwn` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Object} Returns `object`. + */ +function baseForOwn(object, iteratee) { + return object && baseFor(object, iteratee, keys); +} + +module.exports = baseForOwn; + +},{"./_baseFor":79,"./keys":218}],81:[function(require,module,exports){ +var castPath = require('./_castPath'), + toKey = require('./_toKey'); + +/** + * The base implementation of `_.get` without support for default values. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @returns {*} Returns the resolved value. + */ +function baseGet(object, path) { + path = castPath(path, object); + + var index = 0, + length = path.length; + + while (object != null && index < length) { + object = object[toKey(path[index++])]; + } + return (index && index == length) ? object : undefined; +} + +module.exports = baseGet; + +},{"./_castPath":110,"./_toKey":190}],82:[function(require,module,exports){ +var arrayPush = require('./_arrayPush'), + isArray = require('./isArray'); + +/** + * The base implementation of `getAllKeys` and `getAllKeysIn` which uses + * `keysFunc` and `symbolsFunc` to get the enumerable property names and + * symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Function} keysFunc The function to get the keys of `object`. + * @param {Function} symbolsFunc The function to get the symbols of `object`. + * @returns {Array} Returns the array of property names and symbols. + */ +function baseGetAllKeys(object, keysFunc, symbolsFunc) { + var result = keysFunc(object); + return isArray(object) ? result : arrayPush(result, symbolsFunc(object)); +} + +module.exports = baseGetAllKeys; + +},{"./_arrayPush":68,"./isArray":203}],83:[function(require,module,exports){ +var Symbol = require('./_Symbol'), + getRawTag = require('./_getRawTag'), + objectToString = require('./_objectToString'); + +/** `Object#toString` result references. */ +var nullTag = '[object Null]', + undefinedTag = '[object Undefined]'; + +/** Built-in value references. */ +var symToStringTag = Symbol ? Symbol.toStringTag : undefined; + +/** + * The base implementation of `getTag` without fallbacks for buggy environments. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ +function baseGetTag(value) { + if (value == null) { + return value === undefined ? undefinedTag : nullTag; + } + return (symToStringTag && symToStringTag in Object(value)) + ? getRawTag(value) + : objectToString(value); +} + +module.exports = baseGetTag; + +},{"./_Symbol":60,"./_getRawTag":136,"./_objectToString":174}],84:[function(require,module,exports){ +/** + * The base implementation of `_.hasIn` without support for deep paths. + * + * @private + * @param {Object} [object] The object to query. + * @param {Array|string} key The key to check. + * @returns {boolean} Returns `true` if `key` exists, else `false`. + */ +function baseHasIn(object, key) { + return object != null && key in Object(object); +} + +module.exports = baseHasIn; + +},{}],85:[function(require,module,exports){ +var baseGetTag = require('./_baseGetTag'), + isObjectLike = require('./isObjectLike'); + +/** `Object#toString` result references. */ +var argsTag = '[object Arguments]'; + +/** + * The base implementation of `_.isArguments`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + */ +function baseIsArguments(value) { + return isObjectLike(value) && baseGetTag(value) == argsTag; +} + +module.exports = baseIsArguments; + +},{"./_baseGetTag":83,"./isObjectLike":211}],86:[function(require,module,exports){ +var baseIsEqualDeep = require('./_baseIsEqualDeep'), + isObjectLike = require('./isObjectLike'); + +/** + * The base implementation of `_.isEqual` which supports partial comparisons + * and tracks traversed objects. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @param {boolean} bitmask The bitmask flags. + * 1 - Unordered comparison + * 2 - Partial comparison + * @param {Function} [customizer] The function to customize comparisons. + * @param {Object} [stack] Tracks traversed `value` and `other` objects. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + */ +function baseIsEqual(value, other, bitmask, customizer, stack) { + if (value === other) { + return true; + } + if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) { + return value !== value && other !== other; + } + return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack); +} + +module.exports = baseIsEqual; + +},{"./_baseIsEqualDeep":87,"./isObjectLike":211}],87:[function(require,module,exports){ +var Stack = require('./_Stack'), + equalArrays = require('./_equalArrays'), + equalByTag = require('./_equalByTag'), + equalObjects = require('./_equalObjects'), + getTag = require('./_getTag'), + isArray = require('./isArray'), + isBuffer = require('./isBuffer'), + isTypedArray = require('./isTypedArray'); + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1; + +/** `Object#toString` result references. */ +var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + objectTag = '[object Object]'; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * A specialized version of `baseIsEqual` for arrays and objects which performs + * deep comparisons and tracks traversed objects enabling objects with circular + * references to be compared. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} [stack] Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ +function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) { + var objIsArr = isArray(object), + othIsArr = isArray(other), + objTag = objIsArr ? arrayTag : getTag(object), + othTag = othIsArr ? arrayTag : getTag(other); + + objTag = objTag == argsTag ? objectTag : objTag; + othTag = othTag == argsTag ? objectTag : othTag; + + var objIsObj = objTag == objectTag, + othIsObj = othTag == objectTag, + isSameTag = objTag == othTag; + + if (isSameTag && isBuffer(object)) { + if (!isBuffer(other)) { + return false; + } + objIsArr = true; + objIsObj = false; + } + if (isSameTag && !objIsObj) { + stack || (stack = new Stack); + return (objIsArr || isTypedArray(object)) + ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) + : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); + } + if (!(bitmask & COMPARE_PARTIAL_FLAG)) { + var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), + othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); + + if (objIsWrapped || othIsWrapped) { + var objUnwrapped = objIsWrapped ? object.value() : object, + othUnwrapped = othIsWrapped ? other.value() : other; + + stack || (stack = new Stack); + return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); + } + } + if (!isSameTag) { + return false; + } + stack || (stack = new Stack); + return equalObjects(object, other, bitmask, customizer, equalFunc, stack); +} + +module.exports = baseIsEqualDeep; + +},{"./_Stack":59,"./_equalArrays":126,"./_equalByTag":127,"./_equalObjects":128,"./_getTag":139,"./isArray":203,"./isBuffer":206,"./isTypedArray":216}],88:[function(require,module,exports){ +var getTag = require('./_getTag'), + isObjectLike = require('./isObjectLike'); + +/** `Object#toString` result references. */ +var mapTag = '[object Map]'; + +/** + * The base implementation of `_.isMap` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a map, else `false`. + */ +function baseIsMap(value) { + return isObjectLike(value) && getTag(value) == mapTag; +} + +module.exports = baseIsMap; + +},{"./_getTag":139,"./isObjectLike":211}],89:[function(require,module,exports){ +var Stack = require('./_Stack'), + baseIsEqual = require('./_baseIsEqual'); + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; + +/** + * The base implementation of `_.isMatch` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to inspect. + * @param {Object} source The object of property values to match. + * @param {Array} matchData The property names, values, and compare flags to match. + * @param {Function} [customizer] The function to customize comparisons. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. + */ +function baseIsMatch(object, source, matchData, customizer) { + var index = matchData.length, + length = index, + noCustomizer = !customizer; + + if (object == null) { + return !length; + } + object = Object(object); + while (index--) { + var data = matchData[index]; + if ((noCustomizer && data[2]) + ? data[1] !== object[data[0]] + : !(data[0] in object) + ) { + return false; + } + } + while (++index < length) { + data = matchData[index]; + var key = data[0], + objValue = object[key], + srcValue = data[1]; + + if (noCustomizer && data[2]) { + if (objValue === undefined && !(key in object)) { + return false; + } + } else { + var stack = new Stack; + if (customizer) { + var result = customizer(objValue, srcValue, key, object, source, stack); + } + if (!(result === undefined + ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) + : result + )) { + return false; + } + } + } + return true; +} + +module.exports = baseIsMatch; + +},{"./_Stack":59,"./_baseIsEqual":86}],90:[function(require,module,exports){ +var isFunction = require('./isFunction'), + isMasked = require('./_isMasked'), + isObject = require('./isObject'), + toSource = require('./_toSource'); + +/** + * Used to match `RegExp` + * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). + */ +var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; + +/** Used to detect host constructors (Safari). */ +var reIsHostCtor = /^\[object .+?Constructor\]$/; + +/** Used for built-in method references. */ +var funcProto = Function.prototype, + objectProto = Object.prototype; + +/** Used to resolve the decompiled source of functions. */ +var funcToString = funcProto.toString; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** Used to detect if a method is native. */ +var reIsNative = RegExp('^' + + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') + .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' +); + +/** + * The base implementation of `_.isNative` without bad shim checks. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, + * else `false`. + */ +function baseIsNative(value) { + if (!isObject(value) || isMasked(value)) { + return false; + } + var pattern = isFunction(value) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); +} + +module.exports = baseIsNative; + +},{"./_isMasked":154,"./_toSource":191,"./isFunction":207,"./isObject":210}],91:[function(require,module,exports){ +var getTag = require('./_getTag'), + isObjectLike = require('./isObjectLike'); + +/** `Object#toString` result references. */ +var setTag = '[object Set]'; + +/** + * The base implementation of `_.isSet` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a set, else `false`. + */ +function baseIsSet(value) { + return isObjectLike(value) && getTag(value) == setTag; +} + +module.exports = baseIsSet; + +},{"./_getTag":139,"./isObjectLike":211}],92:[function(require,module,exports){ +var baseGetTag = require('./_baseGetTag'), + isLength = require('./isLength'), + isObjectLike = require('./isObjectLike'); + +/** `Object#toString` result references. */ +var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + boolTag = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + funcTag = '[object Function]', + mapTag = '[object Map]', + numberTag = '[object Number]', + objectTag = '[object Object]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + weakMapTag = '[object WeakMap]'; + +var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; + +/** Used to identify `toStringTag` values of typed arrays. */ +var typedArrayTags = {}; +typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = +typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = +typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = +typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = +typedArrayTags[uint32Tag] = true; +typedArrayTags[argsTag] = typedArrayTags[arrayTag] = +typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = +typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = +typedArrayTags[errorTag] = typedArrayTags[funcTag] = +typedArrayTags[mapTag] = typedArrayTags[numberTag] = +typedArrayTags[objectTag] = typedArrayTags[regexpTag] = +typedArrayTags[setTag] = typedArrayTags[stringTag] = +typedArrayTags[weakMapTag] = false; + +/** + * The base implementation of `_.isTypedArray` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + */ +function baseIsTypedArray(value) { + return isObjectLike(value) && + isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; +} + +module.exports = baseIsTypedArray; + +},{"./_baseGetTag":83,"./isLength":208,"./isObjectLike":211}],93:[function(require,module,exports){ +var baseMatches = require('./_baseMatches'), + baseMatchesProperty = require('./_baseMatchesProperty'), + identity = require('./identity'), + isArray = require('./isArray'), + property = require('./property'); + +/** + * The base implementation of `_.iteratee`. + * + * @private + * @param {*} [value=_.identity] The value to convert to an iteratee. + * @returns {Function} Returns the iteratee. + */ +function baseIteratee(value) { + // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9. + // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details. + if (typeof value == 'function') { + return value; + } + if (value == null) { + return identity; + } + if (typeof value == 'object') { + return isArray(value) + ? baseMatchesProperty(value[0], value[1]) + : baseMatches(value); + } + return property(value); +} + +module.exports = baseIteratee; + +},{"./_baseMatches":97,"./_baseMatchesProperty":98,"./identity":201,"./isArray":203,"./property":224}],94:[function(require,module,exports){ +var isPrototype = require('./_isPrototype'), + nativeKeys = require('./_nativeKeys'); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ +function baseKeys(object) { + if (!isPrototype(object)) { + return nativeKeys(object); + } + var result = []; + for (var key in Object(object)) { + if (hasOwnProperty.call(object, key) && key != 'constructor') { + result.push(key); + } + } + return result; +} + +module.exports = baseKeys; + +},{"./_isPrototype":155,"./_nativeKeys":171}],95:[function(require,module,exports){ +var isObject = require('./isObject'), + isPrototype = require('./_isPrototype'), + nativeKeysIn = require('./_nativeKeysIn'); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ +function baseKeysIn(object) { + if (!isObject(object)) { + return nativeKeysIn(object); + } + var isProto = isPrototype(object), + result = []; + + for (var key in object) { + if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { + result.push(key); + } + } + return result; +} + +module.exports = baseKeysIn; + +},{"./_isPrototype":155,"./_nativeKeysIn":172,"./isObject":210}],96:[function(require,module,exports){ +var baseEach = require('./_baseEach'), + isArrayLike = require('./isArrayLike'); + +/** + * The base implementation of `_.map` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ +function baseMap(collection, iteratee) { + var index = -1, + result = isArrayLike(collection) ? Array(collection.length) : []; + + baseEach(collection, function(value, key, collection) { + result[++index] = iteratee(value, key, collection); + }); + return result; +} + +module.exports = baseMap; + +},{"./_baseEach":78,"./isArrayLike":204}],97:[function(require,module,exports){ +var baseIsMatch = require('./_baseIsMatch'), + getMatchData = require('./_getMatchData'), + matchesStrictComparable = require('./_matchesStrictComparable'); + +/** + * The base implementation of `_.matches` which doesn't clone `source`. + * + * @private + * @param {Object} source The object of property values to match. + * @returns {Function} Returns the new spec function. + */ +function baseMatches(source) { + var matchData = getMatchData(source); + if (matchData.length == 1 && matchData[0][2]) { + return matchesStrictComparable(matchData[0][0], matchData[0][1]); + } + return function(object) { + return object === source || baseIsMatch(object, source, matchData); + }; +} + +module.exports = baseMatches; + +},{"./_baseIsMatch":89,"./_getMatchData":133,"./_matchesStrictComparable":168}],98:[function(require,module,exports){ +var baseIsEqual = require('./_baseIsEqual'), + get = require('./get'), + hasIn = require('./hasIn'), + isKey = require('./_isKey'), + isStrictComparable = require('./_isStrictComparable'), + matchesStrictComparable = require('./_matchesStrictComparable'), + toKey = require('./_toKey'); + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; + +/** + * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`. + * + * @private + * @param {string} path The path of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + */ +function baseMatchesProperty(path, srcValue) { + if (isKey(path) && isStrictComparable(srcValue)) { + return matchesStrictComparable(toKey(path), srcValue); + } + return function(object) { + var objValue = get(object, path); + return (objValue === undefined && objValue === srcValue) + ? hasIn(object, path) + : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG); + }; +} + +module.exports = baseMatchesProperty; + +},{"./_baseIsEqual":86,"./_isKey":152,"./_isStrictComparable":156,"./_matchesStrictComparable":168,"./_toKey":190,"./get":199,"./hasIn":200}],99:[function(require,module,exports){ +var Stack = require('./_Stack'), + assignMergeValue = require('./_assignMergeValue'), + baseFor = require('./_baseFor'), + baseMergeDeep = require('./_baseMergeDeep'), + isObject = require('./isObject'), + keysIn = require('./keysIn'), + safeGet = require('./_safeGet'); + +/** + * The base implementation of `_.merge` without support for multiple sources. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @param {number} srcIndex The index of `source`. + * @param {Function} [customizer] The function to customize merged values. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. + */ +function baseMerge(object, source, srcIndex, customizer, stack) { + if (object === source) { + return; + } + baseFor(source, function(srcValue, key) { + stack || (stack = new Stack); + if (isObject(srcValue)) { + baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); + } + else { + var newValue = customizer + ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack) + : undefined; + + if (newValue === undefined) { + newValue = srcValue; + } + assignMergeValue(object, key, newValue); + } + }, keysIn); +} + +module.exports = baseMerge; + +},{"./_Stack":59,"./_assignMergeValue":70,"./_baseFor":79,"./_baseMergeDeep":100,"./_safeGet":178,"./isObject":210,"./keysIn":219}],100:[function(require,module,exports){ +var assignMergeValue = require('./_assignMergeValue'), + cloneBuffer = require('./_cloneBuffer'), + cloneTypedArray = require('./_cloneTypedArray'), + copyArray = require('./_copyArray'), + initCloneObject = require('./_initCloneObject'), + isArguments = require('./isArguments'), + isArray = require('./isArray'), + isArrayLikeObject = require('./isArrayLikeObject'), + isBuffer = require('./isBuffer'), + isFunction = require('./isFunction'), + isObject = require('./isObject'), + isPlainObject = require('./isPlainObject'), + isTypedArray = require('./isTypedArray'), + safeGet = require('./_safeGet'), + toPlainObject = require('./toPlainObject'); + +/** + * A specialized version of `baseMerge` for arrays and objects which performs + * deep merges and tracks traversed objects enabling objects with circular + * references to be merged. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @param {string} key The key of the value to merge. + * @param {number} srcIndex The index of `source`. + * @param {Function} mergeFunc The function to merge values. + * @param {Function} [customizer] The function to customize assigned values. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. + */ +function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) { + var objValue = safeGet(object, key), + srcValue = safeGet(source, key), + stacked = stack.get(srcValue); + + if (stacked) { + assignMergeValue(object, key, stacked); + return; + } + var newValue = customizer + ? customizer(objValue, srcValue, (key + ''), object, source, stack) + : undefined; + + var isCommon = newValue === undefined; + + if (isCommon) { + var isArr = isArray(srcValue), + isBuff = !isArr && isBuffer(srcValue), + isTyped = !isArr && !isBuff && isTypedArray(srcValue); + + newValue = srcValue; + if (isArr || isBuff || isTyped) { + if (isArray(objValue)) { + newValue = objValue; + } + else if (isArrayLikeObject(objValue)) { + newValue = copyArray(objValue); + } + else if (isBuff) { + isCommon = false; + newValue = cloneBuffer(srcValue, true); + } + else if (isTyped) { + isCommon = false; + newValue = cloneTypedArray(srcValue, true); + } + else { + newValue = []; + } + } + else if (isPlainObject(srcValue) || isArguments(srcValue)) { + newValue = objValue; + if (isArguments(objValue)) { + newValue = toPlainObject(objValue); + } + else if (!isObject(objValue) || isFunction(objValue)) { + newValue = initCloneObject(srcValue); + } + } + else { + isCommon = false; + } + } + if (isCommon) { + // Recursively merge objects and arrays (susceptible to call stack limits). + stack.set(srcValue, newValue); + mergeFunc(newValue, srcValue, srcIndex, customizer, stack); + stack['delete'](srcValue); + } + assignMergeValue(object, key, newValue); +} + +module.exports = baseMergeDeep; + +},{"./_assignMergeValue":70,"./_cloneBuffer":112,"./_cloneTypedArray":116,"./_copyArray":117,"./_initCloneObject":149,"./_safeGet":178,"./isArguments":202,"./isArray":203,"./isArrayLikeObject":205,"./isBuffer":206,"./isFunction":207,"./isObject":210,"./isPlainObject":212,"./isTypedArray":216,"./toPlainObject":229}],101:[function(require,module,exports){ +/** + * The base implementation of `_.property` without support for deep paths. + * + * @private + * @param {string} key The key of the property to get. + * @returns {Function} Returns the new accessor function. + */ +function baseProperty(key) { + return function(object) { + return object == null ? undefined : object[key]; + }; +} + +module.exports = baseProperty; + +},{}],102:[function(require,module,exports){ +var baseGet = require('./_baseGet'); + +/** + * A specialized version of `baseProperty` which supports deep paths. + * + * @private + * @param {Array|string} path The path of the property to get. + * @returns {Function} Returns the new accessor function. + */ +function basePropertyDeep(path) { + return function(object) { + return baseGet(object, path); + }; +} + +module.exports = basePropertyDeep; + +},{"./_baseGet":81}],103:[function(require,module,exports){ +var identity = require('./identity'), + overRest = require('./_overRest'), + setToString = require('./_setToString'); + +/** + * The base implementation of `_.rest` which doesn't validate or coerce arguments. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @returns {Function} Returns the new function. + */ +function baseRest(func, start) { + return setToString(overRest(func, start, identity), func + ''); +} + +module.exports = baseRest; + +},{"./_overRest":176,"./_setToString":182,"./identity":201}],104:[function(require,module,exports){ +var constant = require('./constant'), + defineProperty = require('./_defineProperty'), + identity = require('./identity'); + +/** + * The base implementation of `setToString` without support for hot loop shorting. + * + * @private + * @param {Function} func The function to modify. + * @param {Function} string The `toString` result. + * @returns {Function} Returns `func`. + */ +var baseSetToString = !defineProperty ? identity : function(func, string) { + return defineProperty(func, 'toString', { + 'configurable': true, + 'enumerable': false, + 'value': constant(string), + 'writable': true + }); +}; + +module.exports = baseSetToString; + +},{"./_defineProperty":125,"./constant":193,"./identity":201}],105:[function(require,module,exports){ +/** + * The base implementation of `_.times` without support for iteratee shorthands + * or max array length checks. + * + * @private + * @param {number} n The number of times to invoke `iteratee`. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the array of results. + */ +function baseTimes(n, iteratee) { + var index = -1, + result = Array(n); + + while (++index < n) { + result[index] = iteratee(index); + } + return result; +} + +module.exports = baseTimes; + +},{}],106:[function(require,module,exports){ +var Symbol = require('./_Symbol'), + arrayMap = require('./_arrayMap'), + isArray = require('./isArray'), + isSymbol = require('./isSymbol'); + +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0; + +/** Used to convert symbols to primitives and strings. */ +var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolToString = symbolProto ? symbolProto.toString : undefined; + +/** + * The base implementation of `_.toString` which doesn't convert nullish + * values to empty strings. + * + * @private + * @param {*} value The value to process. + * @returns {string} Returns the string. + */ +function baseToString(value) { + // Exit early for strings to avoid a performance hit in some environments. + if (typeof value == 'string') { + return value; + } + if (isArray(value)) { + // Recursively convert values (susceptible to call stack limits). + return arrayMap(value, baseToString) + ''; + } + if (isSymbol(value)) { + return symbolToString ? symbolToString.call(value) : ''; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; +} + +module.exports = baseToString; + +},{"./_Symbol":60,"./_arrayMap":67,"./isArray":203,"./isSymbol":215}],107:[function(require,module,exports){ +/** + * The base implementation of `_.unary` without support for storing metadata. + * + * @private + * @param {Function} func The function to cap arguments for. + * @returns {Function} Returns the new capped function. + */ +function baseUnary(func) { + return function(value) { + return func(value); + }; +} + +module.exports = baseUnary; + +},{}],108:[function(require,module,exports){ +/** + * Checks if a `cache` value for `key` exists. + * + * @private + * @param {Object} cache The cache to query. + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function cacheHas(cache, key) { + return cache.has(key); +} + +module.exports = cacheHas; + +},{}],109:[function(require,module,exports){ +var identity = require('./identity'); + +/** + * Casts `value` to `identity` if it's not a function. + * + * @private + * @param {*} value The value to inspect. + * @returns {Function} Returns cast function. + */ +function castFunction(value) { + return typeof value == 'function' ? value : identity; +} + +module.exports = castFunction; + +},{"./identity":201}],110:[function(require,module,exports){ +var isArray = require('./isArray'), + isKey = require('./_isKey'), + stringToPath = require('./_stringToPath'), + toString = require('./toString'); + +/** + * Casts `value` to a path array if it's not one. + * + * @private + * @param {*} value The value to inspect. + * @param {Object} [object] The object to query keys on. + * @returns {Array} Returns the cast property path array. + */ +function castPath(value, object) { + if (isArray(value)) { + return value; + } + return isKey(value, object) ? [value] : stringToPath(toString(value)); +} + +module.exports = castPath; + +},{"./_isKey":152,"./_stringToPath":189,"./isArray":203,"./toString":230}],111:[function(require,module,exports){ +var Uint8Array = require('./_Uint8Array'); + +/** + * Creates a clone of `arrayBuffer`. + * + * @private + * @param {ArrayBuffer} arrayBuffer The array buffer to clone. + * @returns {ArrayBuffer} Returns the cloned array buffer. + */ +function cloneArrayBuffer(arrayBuffer) { + var result = new arrayBuffer.constructor(arrayBuffer.byteLength); + new Uint8Array(result).set(new Uint8Array(arrayBuffer)); + return result; +} + +module.exports = cloneArrayBuffer; + +},{"./_Uint8Array":61}],112:[function(require,module,exports){ +var root = require('./_root'); + +/** Detect free variable `exports`. */ +var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; + +/** Detect free variable `module`. */ +var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; + +/** Detect the popular CommonJS extension `module.exports`. */ +var moduleExports = freeModule && freeModule.exports === freeExports; + +/** Built-in value references. */ +var Buffer = moduleExports ? root.Buffer : undefined, + allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined; + +/** + * Creates a clone of `buffer`. + * + * @private + * @param {Buffer} buffer The buffer to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Buffer} Returns the cloned buffer. + */ +function cloneBuffer(buffer, isDeep) { + if (isDeep) { + return buffer.slice(); + } + var length = buffer.length, + result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length); + + buffer.copy(result); + return result; +} + +module.exports = cloneBuffer; + +},{"./_root":177}],113:[function(require,module,exports){ +var cloneArrayBuffer = require('./_cloneArrayBuffer'); + +/** + * Creates a clone of `dataView`. + * + * @private + * @param {Object} dataView The data view to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned data view. + */ +function cloneDataView(dataView, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer; + return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength); +} + +module.exports = cloneDataView; + +},{"./_cloneArrayBuffer":111}],114:[function(require,module,exports){ +/** Used to match `RegExp` flags from their coerced string values. */ +var reFlags = /\w*$/; + +/** + * Creates a clone of `regexp`. + * + * @private + * @param {Object} regexp The regexp to clone. + * @returns {Object} Returns the cloned regexp. + */ +function cloneRegExp(regexp) { + var result = new regexp.constructor(regexp.source, reFlags.exec(regexp)); + result.lastIndex = regexp.lastIndex; + return result; +} + +module.exports = cloneRegExp; + +},{}],115:[function(require,module,exports){ +var Symbol = require('./_Symbol'); + +/** Used to convert symbols to primitives and strings. */ +var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolValueOf = symbolProto ? symbolProto.valueOf : undefined; + +/** + * Creates a clone of the `symbol` object. + * + * @private + * @param {Object} symbol The symbol object to clone. + * @returns {Object} Returns the cloned symbol object. + */ +function cloneSymbol(symbol) { + return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {}; +} + +module.exports = cloneSymbol; + +},{"./_Symbol":60}],116:[function(require,module,exports){ +var cloneArrayBuffer = require('./_cloneArrayBuffer'); + +/** + * Creates a clone of `typedArray`. + * + * @private + * @param {Object} typedArray The typed array to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned typed array. + */ +function cloneTypedArray(typedArray, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; + return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); +} + +module.exports = cloneTypedArray; + +},{"./_cloneArrayBuffer":111}],117:[function(require,module,exports){ +/** + * Copies the values of `source` to `array`. + * + * @private + * @param {Array} source The array to copy values from. + * @param {Array} [array=[]] The array to copy values to. + * @returns {Array} Returns `array`. + */ +function copyArray(source, array) { + var index = -1, + length = source.length; + + array || (array = Array(length)); + while (++index < length) { + array[index] = source[index]; + } + return array; +} + +module.exports = copyArray; + +},{}],118:[function(require,module,exports){ +var assignValue = require('./_assignValue'), + baseAssignValue = require('./_baseAssignValue'); + +/** + * Copies properties of `source` to `object`. + * + * @private + * @param {Object} source The object to copy properties from. + * @param {Array} props The property identifiers to copy. + * @param {Object} [object={}] The object to copy properties to. + * @param {Function} [customizer] The function to customize copied values. + * @returns {Object} Returns `object`. + */ +function copyObject(source, props, object, customizer) { + var isNew = !object; + object || (object = {}); + + var index = -1, + length = props.length; + + while (++index < length) { + var key = props[index]; + + var newValue = customizer + ? customizer(object[key], source[key], key, object, source) + : undefined; + + if (newValue === undefined) { + newValue = source[key]; + } + if (isNew) { + baseAssignValue(object, key, newValue); + } else { + assignValue(object, key, newValue); + } + } + return object; +} + +module.exports = copyObject; + +},{"./_assignValue":71,"./_baseAssignValue":75}],119:[function(require,module,exports){ +var copyObject = require('./_copyObject'), + getSymbols = require('./_getSymbols'); + +/** + * Copies own symbols of `source` to `object`. + * + * @private + * @param {Object} source The object to copy symbols from. + * @param {Object} [object={}] The object to copy symbols to. + * @returns {Object} Returns `object`. + */ +function copySymbols(source, object) { + return copyObject(source, getSymbols(source), object); +} + +module.exports = copySymbols; + +},{"./_copyObject":118,"./_getSymbols":137}],120:[function(require,module,exports){ +var copyObject = require('./_copyObject'), + getSymbolsIn = require('./_getSymbolsIn'); + +/** + * Copies own and inherited symbols of `source` to `object`. + * + * @private + * @param {Object} source The object to copy symbols from. + * @param {Object} [object={}] The object to copy symbols to. + * @returns {Object} Returns `object`. + */ +function copySymbolsIn(source, object) { + return copyObject(source, getSymbolsIn(source), object); +} + +module.exports = copySymbolsIn; + +},{"./_copyObject":118,"./_getSymbolsIn":138}],121:[function(require,module,exports){ +var root = require('./_root'); + +/** Used to detect overreaching core-js shims. */ +var coreJsData = root['__core-js_shared__']; + +module.exports = coreJsData; + +},{"./_root":177}],122:[function(require,module,exports){ +var baseRest = require('./_baseRest'), + isIterateeCall = require('./_isIterateeCall'); + +/** + * Creates a function like `_.assign`. + * + * @private + * @param {Function} assigner The function to assign values. + * @returns {Function} Returns the new assigner function. + */ +function createAssigner(assigner) { + return baseRest(function(object, sources) { + var index = -1, + length = sources.length, + customizer = length > 1 ? sources[length - 1] : undefined, + guard = length > 2 ? sources[2] : undefined; + + customizer = (assigner.length > 3 && typeof customizer == 'function') + ? (length--, customizer) + : undefined; + + if (guard && isIterateeCall(sources[0], sources[1], guard)) { + customizer = length < 3 ? undefined : customizer; + length = 1; + } + object = Object(object); + while (++index < length) { + var source = sources[index]; + if (source) { + assigner(object, source, index, customizer); + } + } + return object; + }); +} + +module.exports = createAssigner; + +},{"./_baseRest":103,"./_isIterateeCall":151}],123:[function(require,module,exports){ +var isArrayLike = require('./isArrayLike'); + +/** + * Creates a `baseEach` or `baseEachRight` function. + * + * @private + * @param {Function} eachFunc The function to iterate over a collection. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ +function createBaseEach(eachFunc, fromRight) { + return function(collection, iteratee) { + if (collection == null) { + return collection; + } + if (!isArrayLike(collection)) { + return eachFunc(collection, iteratee); + } + var length = collection.length, + index = fromRight ? length : -1, + iterable = Object(collection); + + while ((fromRight ? index-- : ++index < length)) { + if (iteratee(iterable[index], index, iterable) === false) { + break; + } + } + return collection; + }; +} + +module.exports = createBaseEach; + +},{"./isArrayLike":204}],124:[function(require,module,exports){ +/** + * Creates a base function for methods like `_.forIn` and `_.forOwn`. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ +function createBaseFor(fromRight) { + return function(object, iteratee, keysFunc) { + var index = -1, + iterable = Object(object), + props = keysFunc(object), + length = props.length; + + while (length--) { + var key = props[fromRight ? length : ++index]; + if (iteratee(iterable[key], key, iterable) === false) { + break; + } + } + return object; + }; +} + +module.exports = createBaseFor; + +},{}],125:[function(require,module,exports){ +var getNative = require('./_getNative'); + +var defineProperty = (function() { + try { + var func = getNative(Object, 'defineProperty'); + func({}, '', {}); + return func; + } catch (e) {} +}()); + +module.exports = defineProperty; + +},{"./_getNative":134}],126:[function(require,module,exports){ +var SetCache = require('./_SetCache'), + arraySome = require('./_arraySome'), + cacheHas = require('./_cacheHas'); + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; + +/** + * A specialized version of `baseIsEqualDeep` for arrays with support for + * partial deep comparisons. + * + * @private + * @param {Array} array The array to compare. + * @param {Array} other The other array to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `array` and `other` objects. + * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. + */ +function equalArrays(array, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG, + arrLength = array.length, + othLength = other.length; + + if (arrLength != othLength && !(isPartial && othLength > arrLength)) { + return false; + } + // Check that cyclic values are equal. + var arrStacked = stack.get(array); + var othStacked = stack.get(other); + if (arrStacked && othStacked) { + return arrStacked == other && othStacked == array; + } + var index = -1, + result = true, + seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined; + + stack.set(array, other); + stack.set(other, array); + + // Ignore non-index properties. + while (++index < arrLength) { + var arrValue = array[index], + othValue = other[index]; + + if (customizer) { + var compared = isPartial + ? customizer(othValue, arrValue, index, other, array, stack) + : customizer(arrValue, othValue, index, array, other, stack); + } + if (compared !== undefined) { + if (compared) { + continue; + } + result = false; + break; + } + // Recursively compare arrays (susceptible to call stack limits). + if (seen) { + if (!arraySome(other, function(othValue, othIndex) { + if (!cacheHas(seen, othIndex) && + (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { + return seen.push(othIndex); + } + })) { + result = false; + break; + } + } else if (!( + arrValue === othValue || + equalFunc(arrValue, othValue, bitmask, customizer, stack) + )) { + result = false; + break; + } + } + stack['delete'](array); + stack['delete'](other); + return result; +} + +module.exports = equalArrays; + +},{"./_SetCache":58,"./_arraySome":69,"./_cacheHas":108}],127:[function(require,module,exports){ +var Symbol = require('./_Symbol'), + Uint8Array = require('./_Uint8Array'), + eq = require('./eq'), + equalArrays = require('./_equalArrays'), + mapToArray = require('./_mapToArray'), + setToArray = require('./_setToArray'); + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; + +/** `Object#toString` result references. */ +var boolTag = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + mapTag = '[object Map]', + numberTag = '[object Number]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + symbolTag = '[object Symbol]'; + +var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]'; + +/** Used to convert symbols to primitives and strings. */ +var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolValueOf = symbolProto ? symbolProto.valueOf : undefined; + +/** + * A specialized version of `baseIsEqualDeep` for comparing objects of + * the same `toStringTag`. + * + * **Note:** This function only supports comparing values with tags of + * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {string} tag The `toStringTag` of the objects to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ +function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) { + switch (tag) { + case dataViewTag: + if ((object.byteLength != other.byteLength) || + (object.byteOffset != other.byteOffset)) { + return false; + } + object = object.buffer; + other = other.buffer; + + case arrayBufferTag: + if ((object.byteLength != other.byteLength) || + !equalFunc(new Uint8Array(object), new Uint8Array(other))) { + return false; + } + return true; + + case boolTag: + case dateTag: + case numberTag: + // Coerce booleans to `1` or `0` and dates to milliseconds. + // Invalid dates are coerced to `NaN`. + return eq(+object, +other); + + case errorTag: + return object.name == other.name && object.message == other.message; + + case regexpTag: + case stringTag: + // Coerce regexes to strings and treat strings, primitives and objects, + // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring + // for more details. + return object == (other + ''); + + case mapTag: + var convert = mapToArray; + + case setTag: + var isPartial = bitmask & COMPARE_PARTIAL_FLAG; + convert || (convert = setToArray); + + if (object.size != other.size && !isPartial) { + return false; + } + // Assume cyclic values are equal. + var stacked = stack.get(object); + if (stacked) { + return stacked == other; + } + bitmask |= COMPARE_UNORDERED_FLAG; + + // Recursively compare objects (susceptible to call stack limits). + stack.set(object, other); + var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack); + stack['delete'](object); + return result; + + case symbolTag: + if (symbolValueOf) { + return symbolValueOf.call(object) == symbolValueOf.call(other); + } + } + return false; +} + +module.exports = equalByTag; + +},{"./_Symbol":60,"./_Uint8Array":61,"./_equalArrays":126,"./_mapToArray":167,"./_setToArray":181,"./eq":196}],128:[function(require,module,exports){ +var getAllKeys = require('./_getAllKeys'); + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * A specialized version of `baseIsEqualDeep` for objects with support for + * partial deep comparisons. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ +function equalObjects(object, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG, + objProps = getAllKeys(object), + objLength = objProps.length, + othProps = getAllKeys(other), + othLength = othProps.length; + + if (objLength != othLength && !isPartial) { + return false; + } + var index = objLength; + while (index--) { + var key = objProps[index]; + if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) { + return false; + } + } + // Check that cyclic values are equal. + var objStacked = stack.get(object); + var othStacked = stack.get(other); + if (objStacked && othStacked) { + return objStacked == other && othStacked == object; + } + var result = true; + stack.set(object, other); + stack.set(other, object); + + var skipCtor = isPartial; + while (++index < objLength) { + key = objProps[index]; + var objValue = object[key], + othValue = other[key]; + + if (customizer) { + var compared = isPartial + ? customizer(othValue, objValue, key, other, object, stack) + : customizer(objValue, othValue, key, object, other, stack); + } + // Recursively compare objects (susceptible to call stack limits). + if (!(compared === undefined + ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack)) + : compared + )) { + result = false; + break; + } + skipCtor || (skipCtor = key == 'constructor'); + } + if (result && !skipCtor) { + var objCtor = object.constructor, + othCtor = other.constructor; + + // Non `Object` object instances with different constructors are not equal. + if (objCtor != othCtor && + ('constructor' in object && 'constructor' in other) && + !(typeof objCtor == 'function' && objCtor instanceof objCtor && + typeof othCtor == 'function' && othCtor instanceof othCtor)) { + result = false; + } + } + stack['delete'](object); + stack['delete'](other); + return result; +} + +module.exports = equalObjects; + +},{"./_getAllKeys":130}],129:[function(require,module,exports){ +(function (global){ +/** Detect free variable `global` from Node.js. */ +var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; + +module.exports = freeGlobal; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) + +},{}],130:[function(require,module,exports){ +var baseGetAllKeys = require('./_baseGetAllKeys'), + getSymbols = require('./_getSymbols'), + keys = require('./keys'); + +/** + * Creates an array of own enumerable property names and symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names and symbols. + */ +function getAllKeys(object) { + return baseGetAllKeys(object, keys, getSymbols); +} + +module.exports = getAllKeys; + +},{"./_baseGetAllKeys":82,"./_getSymbols":137,"./keys":218}],131:[function(require,module,exports){ +var baseGetAllKeys = require('./_baseGetAllKeys'), + getSymbolsIn = require('./_getSymbolsIn'), + keysIn = require('./keysIn'); + +/** + * Creates an array of own and inherited enumerable property names and + * symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names and symbols. + */ +function getAllKeysIn(object) { + return baseGetAllKeys(object, keysIn, getSymbolsIn); +} + +module.exports = getAllKeysIn; + +},{"./_baseGetAllKeys":82,"./_getSymbolsIn":138,"./keysIn":219}],132:[function(require,module,exports){ +var isKeyable = require('./_isKeyable'); + +/** + * Gets the data for `map`. + * + * @private + * @param {Object} map The map to query. + * @param {string} key The reference key. + * @returns {*} Returns the map data. + */ +function getMapData(map, key) { + var data = map.__data__; + return isKeyable(key) + ? data[typeof key == 'string' ? 'string' : 'hash'] + : data.map; +} + +module.exports = getMapData; + +},{"./_isKeyable":153}],133:[function(require,module,exports){ +var isStrictComparable = require('./_isStrictComparable'), + keys = require('./keys'); + +/** + * Gets the property names, values, and compare flags of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the match data of `object`. + */ +function getMatchData(object) { + var result = keys(object), + length = result.length; + + while (length--) { + var key = result[length], + value = object[key]; + + result[length] = [key, value, isStrictComparable(value)]; + } + return result; +} + +module.exports = getMatchData; + +},{"./_isStrictComparable":156,"./keys":218}],134:[function(require,module,exports){ +var baseIsNative = require('./_baseIsNative'), + getValue = require('./_getValue'); + +/** + * Gets the native function at `key` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the method to get. + * @returns {*} Returns the function if it's native, else `undefined`. + */ +function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : undefined; +} + +module.exports = getNative; + +},{"./_baseIsNative":90,"./_getValue":140}],135:[function(require,module,exports){ +var overArg = require('./_overArg'); + +/** Built-in value references. */ +var getPrototype = overArg(Object.getPrototypeOf, Object); + +module.exports = getPrototype; + +},{"./_overArg":175}],136:[function(require,module,exports){ +var Symbol = require('./_Symbol'); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var nativeObjectToString = objectProto.toString; + +/** Built-in value references. */ +var symToStringTag = Symbol ? Symbol.toStringTag : undefined; + +/** + * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the raw `toStringTag`. + */ +function getRawTag(value) { + var isOwn = hasOwnProperty.call(value, symToStringTag), + tag = value[symToStringTag]; + + try { + value[symToStringTag] = undefined; + var unmasked = true; + } catch (e) {} + + var result = nativeObjectToString.call(value); + if (unmasked) { + if (isOwn) { + value[symToStringTag] = tag; + } else { + delete value[symToStringTag]; + } + } + return result; +} + +module.exports = getRawTag; + +},{"./_Symbol":60}],137:[function(require,module,exports){ +var arrayFilter = require('./_arrayFilter'), + stubArray = require('./stubArray'); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Built-in value references. */ +var propertyIsEnumerable = objectProto.propertyIsEnumerable; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeGetSymbols = Object.getOwnPropertySymbols; + +/** + * Creates an array of the own enumerable symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of symbols. + */ +var getSymbols = !nativeGetSymbols ? stubArray : function(object) { + if (object == null) { + return []; + } + object = Object(object); + return arrayFilter(nativeGetSymbols(object), function(symbol) { + return propertyIsEnumerable.call(object, symbol); + }); +}; + +module.exports = getSymbols; + +},{"./_arrayFilter":65,"./stubArray":225}],138:[function(require,module,exports){ +var arrayPush = require('./_arrayPush'), + getPrototype = require('./_getPrototype'), + getSymbols = require('./_getSymbols'), + stubArray = require('./stubArray'); + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeGetSymbols = Object.getOwnPropertySymbols; + +/** + * Creates an array of the own and inherited enumerable symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of symbols. + */ +var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) { + var result = []; + while (object) { + arrayPush(result, getSymbols(object)); + object = getPrototype(object); + } + return result; +}; + +module.exports = getSymbolsIn; + +},{"./_arrayPush":68,"./_getPrototype":135,"./_getSymbols":137,"./stubArray":225}],139:[function(require,module,exports){ +var DataView = require('./_DataView'), + Map = require('./_Map'), + Promise = require('./_Promise'), + Set = require('./_Set'), + WeakMap = require('./_WeakMap'), + baseGetTag = require('./_baseGetTag'), + toSource = require('./_toSource'); + +/** `Object#toString` result references. */ +var mapTag = '[object Map]', + objectTag = '[object Object]', + promiseTag = '[object Promise]', + setTag = '[object Set]', + weakMapTag = '[object WeakMap]'; + +var dataViewTag = '[object DataView]'; + +/** Used to detect maps, sets, and weakmaps. */ +var dataViewCtorString = toSource(DataView), + mapCtorString = toSource(Map), + promiseCtorString = toSource(Promise), + setCtorString = toSource(Set), + weakMapCtorString = toSource(WeakMap); + +/** + * Gets the `toStringTag` of `value`. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ +var getTag = baseGetTag; + +// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6. +if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) || + (Map && getTag(new Map) != mapTag) || + (Promise && getTag(Promise.resolve()) != promiseTag) || + (Set && getTag(new Set) != setTag) || + (WeakMap && getTag(new WeakMap) != weakMapTag)) { + getTag = function(value) { + var result = baseGetTag(value), + Ctor = result == objectTag ? value.constructor : undefined, + ctorString = Ctor ? toSource(Ctor) : ''; + + if (ctorString) { + switch (ctorString) { + case dataViewCtorString: return dataViewTag; + case mapCtorString: return mapTag; + case promiseCtorString: return promiseTag; + case setCtorString: return setTag; + case weakMapCtorString: return weakMapTag; + } + } + return result; + }; +} + +module.exports = getTag; + +},{"./_DataView":51,"./_Map":54,"./_Promise":56,"./_Set":57,"./_WeakMap":62,"./_baseGetTag":83,"./_toSource":191}],140:[function(require,module,exports){ +/** + * Gets the value at `key` of `object`. + * + * @private + * @param {Object} [object] The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ +function getValue(object, key) { + return object == null ? undefined : object[key]; +} + +module.exports = getValue; + +},{}],141:[function(require,module,exports){ +var castPath = require('./_castPath'), + isArguments = require('./isArguments'), + isArray = require('./isArray'), + isIndex = require('./_isIndex'), + isLength = require('./isLength'), + toKey = require('./_toKey'); + +/** + * Checks if `path` exists on `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @param {Function} hasFunc The function to check properties. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + */ +function hasPath(object, path, hasFunc) { + path = castPath(path, object); + + var index = -1, + length = path.length, + result = false; + + while (++index < length) { + var key = toKey(path[index]); + if (!(result = object != null && hasFunc(object, key))) { + break; + } + object = object[key]; + } + if (result || ++index != length) { + return result; + } + length = object == null ? 0 : object.length; + return !!length && isLength(length) && isIndex(key, length) && + (isArray(object) || isArguments(object)); +} + +module.exports = hasPath; + +},{"./_castPath":110,"./_isIndex":150,"./_toKey":190,"./isArguments":202,"./isArray":203,"./isLength":208}],142:[function(require,module,exports){ +var nativeCreate = require('./_nativeCreate'); + +/** + * Removes all key-value entries from the hash. + * + * @private + * @name clear + * @memberOf Hash + */ +function hashClear() { + this.__data__ = nativeCreate ? nativeCreate(null) : {}; + this.size = 0; +} + +module.exports = hashClear; + +},{"./_nativeCreate":170}],143:[function(require,module,exports){ +/** + * Removes `key` and its value from the hash. + * + * @private + * @name delete + * @memberOf Hash + * @param {Object} hash The hash to modify. + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function hashDelete(key) { + var result = this.has(key) && delete this.__data__[key]; + this.size -= result ? 1 : 0; + return result; +} + +module.exports = hashDelete; + +},{}],144:[function(require,module,exports){ +var nativeCreate = require('./_nativeCreate'); + +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED = '__lodash_hash_undefined__'; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Gets the hash value for `key`. + * + * @private + * @name get + * @memberOf Hash + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function hashGet(key) { + var data = this.__data__; + if (nativeCreate) { + var result = data[key]; + return result === HASH_UNDEFINED ? undefined : result; + } + return hasOwnProperty.call(data, key) ? data[key] : undefined; +} + +module.exports = hashGet; + +},{"./_nativeCreate":170}],145:[function(require,module,exports){ +var nativeCreate = require('./_nativeCreate'); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Checks if a hash value for `key` exists. + * + * @private + * @name has + * @memberOf Hash + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function hashHas(key) { + var data = this.__data__; + return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key); +} + +module.exports = hashHas; + +},{"./_nativeCreate":170}],146:[function(require,module,exports){ +var nativeCreate = require('./_nativeCreate'); + +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED = '__lodash_hash_undefined__'; + +/** + * Sets the hash `key` to `value`. + * + * @private + * @name set + * @memberOf Hash + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the hash instance. + */ +function hashSet(key, value) { + var data = this.__data__; + this.size += this.has(key) ? 0 : 1; + data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; + return this; +} + +module.exports = hashSet; + +},{"./_nativeCreate":170}],147:[function(require,module,exports){ +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Initializes an array clone. + * + * @private + * @param {Array} array The array to clone. + * @returns {Array} Returns the initialized clone. + */ +function initCloneArray(array) { + var length = array.length, + result = new array.constructor(length); + + // Add properties assigned by `RegExp#exec`. + if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) { + result.index = array.index; + result.input = array.input; + } + return result; +} + +module.exports = initCloneArray; + +},{}],148:[function(require,module,exports){ +var cloneArrayBuffer = require('./_cloneArrayBuffer'), + cloneDataView = require('./_cloneDataView'), + cloneRegExp = require('./_cloneRegExp'), + cloneSymbol = require('./_cloneSymbol'), + cloneTypedArray = require('./_cloneTypedArray'); + +/** `Object#toString` result references. */ +var boolTag = '[object Boolean]', + dateTag = '[object Date]', + mapTag = '[object Map]', + numberTag = '[object Number]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + symbolTag = '[object Symbol]'; + +var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; + +/** + * Initializes an object clone based on its `toStringTag`. + * + * **Note:** This function only supports cloning values with tags of + * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`. + * + * @private + * @param {Object} object The object to clone. + * @param {string} tag The `toStringTag` of the object to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the initialized clone. + */ +function initCloneByTag(object, tag, isDeep) { + var Ctor = object.constructor; + switch (tag) { + case arrayBufferTag: + return cloneArrayBuffer(object); + + case boolTag: + case dateTag: + return new Ctor(+object); + + case dataViewTag: + return cloneDataView(object, isDeep); + + case float32Tag: case float64Tag: + case int8Tag: case int16Tag: case int32Tag: + case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag: + return cloneTypedArray(object, isDeep); + + case mapTag: + return new Ctor; + + case numberTag: + case stringTag: + return new Ctor(object); + + case regexpTag: + return cloneRegExp(object); + + case setTag: + return new Ctor; + + case symbolTag: + return cloneSymbol(object); + } +} + +module.exports = initCloneByTag; + +},{"./_cloneArrayBuffer":111,"./_cloneDataView":113,"./_cloneRegExp":114,"./_cloneSymbol":115,"./_cloneTypedArray":116}],149:[function(require,module,exports){ +var baseCreate = require('./_baseCreate'), + getPrototype = require('./_getPrototype'), + isPrototype = require('./_isPrototype'); + +/** + * Initializes an object clone. + * + * @private + * @param {Object} object The object to clone. + * @returns {Object} Returns the initialized clone. + */ +function initCloneObject(object) { + return (typeof object.constructor == 'function' && !isPrototype(object)) + ? baseCreate(getPrototype(object)) + : {}; +} + +module.exports = initCloneObject; + +},{"./_baseCreate":77,"./_getPrototype":135,"./_isPrototype":155}],150:[function(require,module,exports){ +/** Used as references for various `Number` constants. */ +var MAX_SAFE_INTEGER = 9007199254740991; + +/** Used to detect unsigned integer values. */ +var reIsUint = /^(?:0|[1-9]\d*)$/; + +/** + * Checks if `value` is a valid array-like index. + * + * @private + * @param {*} value The value to check. + * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. + * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. + */ +function isIndex(value, length) { + var type = typeof value; + length = length == null ? MAX_SAFE_INTEGER : length; + + return !!length && + (type == 'number' || + (type != 'symbol' && reIsUint.test(value))) && + (value > -1 && value % 1 == 0 && value < length); +} + +module.exports = isIndex; + +},{}],151:[function(require,module,exports){ +var eq = require('./eq'), + isArrayLike = require('./isArrayLike'), + isIndex = require('./_isIndex'), + isObject = require('./isObject'); + +/** + * Checks if the given arguments are from an iteratee call. + * + * @private + * @param {*} value The potential iteratee value argument. + * @param {*} index The potential iteratee index or key argument. + * @param {*} object The potential iteratee object argument. + * @returns {boolean} Returns `true` if the arguments are from an iteratee call, + * else `false`. + */ +function isIterateeCall(value, index, object) { + if (!isObject(object)) { + return false; + } + var type = typeof index; + if (type == 'number' + ? (isArrayLike(object) && isIndex(index, object.length)) + : (type == 'string' && index in object) + ) { + return eq(object[index], value); + } + return false; +} + +module.exports = isIterateeCall; + +},{"./_isIndex":150,"./eq":196,"./isArrayLike":204,"./isObject":210}],152:[function(require,module,exports){ +var isArray = require('./isArray'), + isSymbol = require('./isSymbol'); + +/** Used to match property names within property paths. */ +var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, + reIsPlainProp = /^\w*$/; + +/** + * Checks if `value` is a property name and not a property path. + * + * @private + * @param {*} value The value to check. + * @param {Object} [object] The object to query keys on. + * @returns {boolean} Returns `true` if `value` is a property name, else `false`. + */ +function isKey(value, object) { + if (isArray(value)) { + return false; + } + var type = typeof value; + if (type == 'number' || type == 'symbol' || type == 'boolean' || + value == null || isSymbol(value)) { + return true; + } + return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || + (object != null && value in Object(object)); +} + +module.exports = isKey; + +},{"./isArray":203,"./isSymbol":215}],153:[function(require,module,exports){ +/** + * Checks if `value` is suitable for use as unique object key. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is suitable, else `false`. + */ +function isKeyable(value) { + var type = typeof value; + return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') + ? (value !== '__proto__') + : (value === null); +} + +module.exports = isKeyable; + +},{}],154:[function(require,module,exports){ +var coreJsData = require('./_coreJsData'); + +/** Used to detect methods masquerading as native. */ +var maskSrcKey = (function() { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); + return uid ? ('Symbol(src)_1.' + uid) : ''; +}()); + +/** + * Checks if `func` has its source masked. + * + * @private + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` is masked, else `false`. + */ +function isMasked(func) { + return !!maskSrcKey && (maskSrcKey in func); +} + +module.exports = isMasked; + +},{"./_coreJsData":121}],155:[function(require,module,exports){ +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** + * Checks if `value` is likely a prototype object. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. + */ +function isPrototype(value) { + var Ctor = value && value.constructor, + proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; + + return value === proto; +} + +module.exports = isPrototype; + +},{}],156:[function(require,module,exports){ +var isObject = require('./isObject'); + +/** + * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` if suitable for strict + * equality comparisons, else `false`. + */ +function isStrictComparable(value) { + return value === value && !isObject(value); +} + +module.exports = isStrictComparable; + +},{"./isObject":210}],157:[function(require,module,exports){ +/** + * Removes all key-value entries from the list cache. + * + * @private + * @name clear + * @memberOf ListCache + */ +function listCacheClear() { + this.__data__ = []; + this.size = 0; +} + +module.exports = listCacheClear; + +},{}],158:[function(require,module,exports){ +var assocIndexOf = require('./_assocIndexOf'); + +/** Used for built-in method references. */ +var arrayProto = Array.prototype; + +/** Built-in value references. */ +var splice = arrayProto.splice; + +/** + * Removes `key` and its value from the list cache. + * + * @private + * @name delete + * @memberOf ListCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function listCacheDelete(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + return false; + } + var lastIndex = data.length - 1; + if (index == lastIndex) { + data.pop(); + } else { + splice.call(data, index, 1); + } + --this.size; + return true; +} + +module.exports = listCacheDelete; + +},{"./_assocIndexOf":72}],159:[function(require,module,exports){ +var assocIndexOf = require('./_assocIndexOf'); + +/** + * Gets the list cache value for `key`. + * + * @private + * @name get + * @memberOf ListCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function listCacheGet(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + return index < 0 ? undefined : data[index][1]; +} + +module.exports = listCacheGet; + +},{"./_assocIndexOf":72}],160:[function(require,module,exports){ +var assocIndexOf = require('./_assocIndexOf'); + +/** + * Checks if a list cache value for `key` exists. + * + * @private + * @name has + * @memberOf ListCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function listCacheHas(key) { + return assocIndexOf(this.__data__, key) > -1; +} + +module.exports = listCacheHas; + +},{"./_assocIndexOf":72}],161:[function(require,module,exports){ +var assocIndexOf = require('./_assocIndexOf'); + +/** + * Sets the list cache `key` to `value`. + * + * @private + * @name set + * @memberOf ListCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the list cache instance. + */ +function listCacheSet(key, value) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + ++this.size; + data.push([key, value]); + } else { + data[index][1] = value; + } + return this; +} + +module.exports = listCacheSet; + +},{"./_assocIndexOf":72}],162:[function(require,module,exports){ +var Hash = require('./_Hash'), + ListCache = require('./_ListCache'), + Map = require('./_Map'); + +/** + * Removes all key-value entries from the map. + * + * @private + * @name clear + * @memberOf MapCache + */ +function mapCacheClear() { + this.size = 0; + this.__data__ = { + 'hash': new Hash, + 'map': new (Map || ListCache), + 'string': new Hash + }; +} + +module.exports = mapCacheClear; + +},{"./_Hash":52,"./_ListCache":53,"./_Map":54}],163:[function(require,module,exports){ +var getMapData = require('./_getMapData'); + +/** + * Removes `key` and its value from the map. + * + * @private + * @name delete + * @memberOf MapCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function mapCacheDelete(key) { + var result = getMapData(this, key)['delete'](key); + this.size -= result ? 1 : 0; + return result; +} + +module.exports = mapCacheDelete; + +},{"./_getMapData":132}],164:[function(require,module,exports){ +var getMapData = require('./_getMapData'); + +/** + * Gets the map value for `key`. + * + * @private + * @name get + * @memberOf MapCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function mapCacheGet(key) { + return getMapData(this, key).get(key); +} + +module.exports = mapCacheGet; + +},{"./_getMapData":132}],165:[function(require,module,exports){ +var getMapData = require('./_getMapData'); + +/** + * Checks if a map value for `key` exists. + * + * @private + * @name has + * @memberOf MapCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function mapCacheHas(key) { + return getMapData(this, key).has(key); +} + +module.exports = mapCacheHas; + +},{"./_getMapData":132}],166:[function(require,module,exports){ +var getMapData = require('./_getMapData'); + +/** + * Sets the map `key` to `value`. + * + * @private + * @name set + * @memberOf MapCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the map cache instance. + */ +function mapCacheSet(key, value) { + var data = getMapData(this, key), + size = data.size; + + data.set(key, value); + this.size += data.size == size ? 0 : 1; + return this; +} + +module.exports = mapCacheSet; + +},{"./_getMapData":132}],167:[function(require,module,exports){ +/** + * Converts `map` to its key-value pairs. + * + * @private + * @param {Object} map The map to convert. + * @returns {Array} Returns the key-value pairs. + */ +function mapToArray(map) { + var index = -1, + result = Array(map.size); + + map.forEach(function(value, key) { + result[++index] = [key, value]; + }); + return result; +} + +module.exports = mapToArray; + +},{}],168:[function(require,module,exports){ +/** + * A specialized version of `matchesProperty` for source values suitable + * for strict equality comparisons, i.e. `===`. + * + * @private + * @param {string} key The key of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + */ +function matchesStrictComparable(key, srcValue) { + return function(object) { + if (object == null) { + return false; + } + return object[key] === srcValue && + (srcValue !== undefined || (key in Object(object))); + }; +} + +module.exports = matchesStrictComparable; + +},{}],169:[function(require,module,exports){ +var memoize = require('./memoize'); + +/** Used as the maximum memoize cache size. */ +var MAX_MEMOIZE_SIZE = 500; + +/** + * A specialized version of `_.memoize` which clears the memoized function's + * cache when it exceeds `MAX_MEMOIZE_SIZE`. + * + * @private + * @param {Function} func The function to have its output memoized. + * @returns {Function} Returns the new memoized function. + */ +function memoizeCapped(func) { + var result = memoize(func, function(key) { + if (cache.size === MAX_MEMOIZE_SIZE) { + cache.clear(); + } + return key; + }); + + var cache = result.cache; + return result; +} + +module.exports = memoizeCapped; + +},{"./memoize":221}],170:[function(require,module,exports){ +var getNative = require('./_getNative'); + +/* Built-in method references that are verified to be native. */ +var nativeCreate = getNative(Object, 'create'); + +module.exports = nativeCreate; + +},{"./_getNative":134}],171:[function(require,module,exports){ +var overArg = require('./_overArg'); + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeKeys = overArg(Object.keys, Object); + +module.exports = nativeKeys; + +},{"./_overArg":175}],172:[function(require,module,exports){ +/** + * This function is like + * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * except that it includes inherited enumerable properties. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ +function nativeKeysIn(object) { + var result = []; + if (object != null) { + for (var key in Object(object)) { + result.push(key); + } + } + return result; +} + +module.exports = nativeKeysIn; + +},{}],173:[function(require,module,exports){ +var freeGlobal = require('./_freeGlobal'); + +/** Detect free variable `exports`. */ +var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; + +/** Detect free variable `module`. */ +var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; + +/** Detect the popular CommonJS extension `module.exports`. */ +var moduleExports = freeModule && freeModule.exports === freeExports; + +/** Detect free variable `process` from Node.js. */ +var freeProcess = moduleExports && freeGlobal.process; + +/** Used to access faster Node.js helpers. */ +var nodeUtil = (function() { + try { + // Use `util.types` for Node.js 10+. + var types = freeModule && freeModule.require && freeModule.require('util').types; + + if (types) { + return types; + } + + // Legacy `process.binding('util')` for Node.js < 10. + return freeProcess && freeProcess.binding && freeProcess.binding('util'); + } catch (e) {} +}()); + +module.exports = nodeUtil; + +},{"./_freeGlobal":129}],174:[function(require,module,exports){ +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var nativeObjectToString = objectProto.toString; + +/** + * Converts `value` to a string using `Object.prototype.toString`. + * + * @private + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + */ +function objectToString(value) { + return nativeObjectToString.call(value); +} + +module.exports = objectToString; + +},{}],175:[function(require,module,exports){ +/** + * Creates a unary function that invokes `func` with its argument transformed. + * + * @private + * @param {Function} func The function to wrap. + * @param {Function} transform The argument transform. + * @returns {Function} Returns the new function. + */ +function overArg(func, transform) { + return function(arg) { + return func(transform(arg)); + }; +} + +module.exports = overArg; + +},{}],176:[function(require,module,exports){ +var apply = require('./_apply'); + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMax = Math.max; + +/** + * A specialized version of `baseRest` which transforms the rest array. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @param {Function} transform The rest array transform. + * @returns {Function} Returns the new function. + */ +function overRest(func, start, transform) { + start = nativeMax(start === undefined ? (func.length - 1) : start, 0); + return function() { + var args = arguments, + index = -1, + length = nativeMax(args.length - start, 0), + array = Array(length); + + while (++index < length) { + array[index] = args[start + index]; + } + index = -1; + var otherArgs = Array(start + 1); + while (++index < start) { + otherArgs[index] = args[index]; + } + otherArgs[start] = transform(array); + return apply(func, this, otherArgs); + }; +} + +module.exports = overRest; + +},{"./_apply":63}],177:[function(require,module,exports){ +var freeGlobal = require('./_freeGlobal'); + +/** Detect free variable `self`. */ +var freeSelf = typeof self == 'object' && self && self.Object === Object && self; + +/** Used as a reference to the global object. */ +var root = freeGlobal || freeSelf || Function('return this')(); + +module.exports = root; + +},{"./_freeGlobal":129}],178:[function(require,module,exports){ +/** + * Gets the value at `key`, unless `key` is "__proto__" or "constructor". + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ +function safeGet(object, key) { + if (key === 'constructor' && typeof object[key] === 'function') { + return; + } + + if (key == '__proto__') { + return; + } + + return object[key]; +} + +module.exports = safeGet; + +},{}],179:[function(require,module,exports){ +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED = '__lodash_hash_undefined__'; + +/** + * Adds `value` to the array cache. + * + * @private + * @name add + * @memberOf SetCache + * @alias push + * @param {*} value The value to cache. + * @returns {Object} Returns the cache instance. + */ +function setCacheAdd(value) { + this.__data__.set(value, HASH_UNDEFINED); + return this; +} + +module.exports = setCacheAdd; + +},{}],180:[function(require,module,exports){ +/** + * Checks if `value` is in the array cache. + * + * @private + * @name has + * @memberOf SetCache + * @param {*} value The value to search for. + * @returns {number} Returns `true` if `value` is found, else `false`. + */ +function setCacheHas(value) { + return this.__data__.has(value); +} + +module.exports = setCacheHas; + +},{}],181:[function(require,module,exports){ +/** + * Converts `set` to an array of its values. + * + * @private + * @param {Object} set The set to convert. + * @returns {Array} Returns the values. + */ +function setToArray(set) { + var index = -1, + result = Array(set.size); + + set.forEach(function(value) { + result[++index] = value; + }); + return result; +} + +module.exports = setToArray; + +},{}],182:[function(require,module,exports){ +var baseSetToString = require('./_baseSetToString'), + shortOut = require('./_shortOut'); + +/** + * Sets the `toString` method of `func` to return `string`. + * + * @private + * @param {Function} func The function to modify. + * @param {Function} string The `toString` result. + * @returns {Function} Returns `func`. + */ +var setToString = shortOut(baseSetToString); + +module.exports = setToString; + +},{"./_baseSetToString":104,"./_shortOut":183}],183:[function(require,module,exports){ +/** Used to detect hot functions by number of calls within a span of milliseconds. */ +var HOT_COUNT = 800, + HOT_SPAN = 16; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeNow = Date.now; + +/** + * Creates a function that'll short out and invoke `identity` instead + * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN` + * milliseconds. + * + * @private + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new shortable function. + */ +function shortOut(func) { + var count = 0, + lastCalled = 0; + + return function() { + var stamp = nativeNow(), + remaining = HOT_SPAN - (stamp - lastCalled); + + lastCalled = stamp; + if (remaining > 0) { + if (++count >= HOT_COUNT) { + return arguments[0]; + } + } else { + count = 0; + } + return func.apply(undefined, arguments); + }; +} + +module.exports = shortOut; + +},{}],184:[function(require,module,exports){ +var ListCache = require('./_ListCache'); + +/** + * Removes all key-value entries from the stack. + * + * @private + * @name clear + * @memberOf Stack + */ +function stackClear() { + this.__data__ = new ListCache; + this.size = 0; +} + +module.exports = stackClear; + +},{"./_ListCache":53}],185:[function(require,module,exports){ +/** + * Removes `key` and its value from the stack. + * + * @private + * @name delete + * @memberOf Stack + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function stackDelete(key) { + var data = this.__data__, + result = data['delete'](key); + + this.size = data.size; + return result; +} + +module.exports = stackDelete; + +},{}],186:[function(require,module,exports){ +/** + * Gets the stack value for `key`. + * + * @private + * @name get + * @memberOf Stack + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function stackGet(key) { + return this.__data__.get(key); +} + +module.exports = stackGet; + +},{}],187:[function(require,module,exports){ +/** + * Checks if a stack value for `key` exists. + * + * @private + * @name has + * @memberOf Stack + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function stackHas(key) { + return this.__data__.has(key); +} + +module.exports = stackHas; + +},{}],188:[function(require,module,exports){ +var ListCache = require('./_ListCache'), + Map = require('./_Map'), + MapCache = require('./_MapCache'); + +/** Used as the size to enable large array optimizations. */ +var LARGE_ARRAY_SIZE = 200; + +/** + * Sets the stack `key` to `value`. + * + * @private + * @name set + * @memberOf Stack + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the stack cache instance. + */ +function stackSet(key, value) { + var data = this.__data__; + if (data instanceof ListCache) { + var pairs = data.__data__; + if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) { + pairs.push([key, value]); + this.size = ++data.size; + return this; + } + data = this.__data__ = new MapCache(pairs); + } + data.set(key, value); + this.size = data.size; + return this; +} + +module.exports = stackSet; + +},{"./_ListCache":53,"./_Map":54,"./_MapCache":55}],189:[function(require,module,exports){ +var memoizeCapped = require('./_memoizeCapped'); + +/** Used to match property names within property paths. */ +var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; + +/** Used to match backslashes in property paths. */ +var reEscapeChar = /\\(\\)?/g; + +/** + * Converts `string` to a property path array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the property path array. + */ +var stringToPath = memoizeCapped(function(string) { + var result = []; + if (string.charCodeAt(0) === 46 /* . */) { + result.push(''); + } + string.replace(rePropName, function(match, number, quote, subString) { + result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match)); + }); + return result; +}); + +module.exports = stringToPath; + +},{"./_memoizeCapped":169}],190:[function(require,module,exports){ +var isSymbol = require('./isSymbol'); + +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0; + +/** + * Converts `value` to a string key if it's not a string or symbol. + * + * @private + * @param {*} value The value to inspect. + * @returns {string|symbol} Returns the key. + */ +function toKey(value) { + if (typeof value == 'string' || isSymbol(value)) { + return value; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; +} + +module.exports = toKey; + +},{"./isSymbol":215}],191:[function(require,module,exports){ +/** Used for built-in method references. */ +var funcProto = Function.prototype; + +/** Used to resolve the decompiled source of functions. */ +var funcToString = funcProto.toString; + +/** + * Converts `func` to its source code. + * + * @private + * @param {Function} func The function to convert. + * @returns {string} Returns the source code. + */ +function toSource(func) { + if (func != null) { + try { + return funcToString.call(func); + } catch (e) {} + try { + return (func + ''); + } catch (e) {} + } + return ''; +} + +module.exports = toSource; + +},{}],192:[function(require,module,exports){ +var baseClone = require('./_baseClone'); + +/** Used to compose bitmasks for cloning. */ +var CLONE_DEEP_FLAG = 1, + CLONE_SYMBOLS_FLAG = 4; + +/** + * This method is like `_.clone` except that it recursively clones `value`. + * + * @static + * @memberOf _ + * @since 1.0.0 + * @category Lang + * @param {*} value The value to recursively clone. + * @returns {*} Returns the deep cloned value. + * @see _.clone + * @example + * + * var objects = [{ 'a': 1 }, { 'b': 2 }]; + * + * var deep = _.cloneDeep(objects); + * console.log(deep[0] === objects[0]); + * // => false + */ +function cloneDeep(value) { + return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG); +} + +module.exports = cloneDeep; + +},{"./_baseClone":76}],193:[function(require,module,exports){ +/** + * Creates a function that returns `value`. + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Util + * @param {*} value The value to return from the new function. + * @returns {Function} Returns the new constant function. + * @example + * + * var objects = _.times(2, _.constant({ 'a': 1 })); + * + * console.log(objects); + * // => [{ 'a': 1 }, { 'a': 1 }] + * + * console.log(objects[0] === objects[1]); + * // => true + */ +function constant(value) { + return function() { + return value; + }; +} + +module.exports = constant; + +},{}],194:[function(require,module,exports){ +var isObject = require('./isObject'), + now = require('./now'), + toNumber = require('./toNumber'); + +/** Error message constants. */ +var FUNC_ERROR_TEXT = 'Expected a function'; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMax = Math.max, + nativeMin = Math.min; + +/** + * Creates a debounced function that delays invoking `func` until after `wait` + * milliseconds have elapsed since the last time the debounced function was + * invoked. The debounced function comes with a `cancel` method to cancel + * delayed `func` invocations and a `flush` method to immediately invoke them. + * Provide `options` to indicate whether `func` should be invoked on the + * leading and/or trailing edge of the `wait` timeout. The `func` is invoked + * with the last arguments provided to the debounced function. Subsequent + * calls to the debounced function return the result of the last `func` + * invocation. + * + * **Note:** If `leading` and `trailing` options are `true`, `func` is + * invoked on the trailing edge of the timeout only if the debounced function + * is invoked more than once during the `wait` timeout. + * + * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred + * until to the next tick, similar to `setTimeout` with a timeout of `0`. + * + * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) + * for details over the differences between `_.debounce` and `_.throttle`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to debounce. + * @param {number} [wait=0] The number of milliseconds to delay. + * @param {Object} [options={}] The options object. + * @param {boolean} [options.leading=false] + * Specify invoking on the leading edge of the timeout. + * @param {number} [options.maxWait] + * The maximum time `func` is allowed to be delayed before it's invoked. + * @param {boolean} [options.trailing=true] + * Specify invoking on the trailing edge of the timeout. + * @returns {Function} Returns the new debounced function. + * @example + * + * // Avoid costly calculations while the window size is in flux. + * jQuery(window).on('resize', _.debounce(calculateLayout, 150)); + * + * // Invoke `sendMail` when clicked, debouncing subsequent calls. + * jQuery(element).on('click', _.debounce(sendMail, 300, { + * 'leading': true, + * 'trailing': false + * })); + * + * // Ensure `batchLog` is invoked once after 1 second of debounced calls. + * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 }); + * var source = new EventSource('/stream'); + * jQuery(source).on('message', debounced); + * + * // Cancel the trailing debounced invocation. + * jQuery(window).on('popstate', debounced.cancel); + */ +function debounce(func, wait, options) { + var lastArgs, + lastThis, + maxWait, + result, + timerId, + lastCallTime, + lastInvokeTime = 0, + leading = false, + maxing = false, + trailing = true; + + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + wait = toNumber(wait) || 0; + if (isObject(options)) { + leading = !!options.leading; + maxing = 'maxWait' in options; + maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait; + trailing = 'trailing' in options ? !!options.trailing : trailing; + } + + function invokeFunc(time) { + var args = lastArgs, + thisArg = lastThis; + + lastArgs = lastThis = undefined; + lastInvokeTime = time; + result = func.apply(thisArg, args); + return result; + } + + function leadingEdge(time) { + // Reset any `maxWait` timer. + lastInvokeTime = time; + // Start the timer for the trailing edge. + timerId = setTimeout(timerExpired, wait); + // Invoke the leading edge. + return leading ? invokeFunc(time) : result; + } + + function remainingWait(time) { + var timeSinceLastCall = time - lastCallTime, + timeSinceLastInvoke = time - lastInvokeTime, + timeWaiting = wait - timeSinceLastCall; + + return maxing + ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) + : timeWaiting; + } + + function shouldInvoke(time) { + var timeSinceLastCall = time - lastCallTime, + timeSinceLastInvoke = time - lastInvokeTime; + + // Either this is the first call, activity has stopped and we're at the + // trailing edge, the system time has gone backwards and we're treating + // it as the trailing edge, or we've hit the `maxWait` limit. + return (lastCallTime === undefined || (timeSinceLastCall >= wait) || + (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait)); + } + + function timerExpired() { + var time = now(); + if (shouldInvoke(time)) { + return trailingEdge(time); + } + // Restart the timer. + timerId = setTimeout(timerExpired, remainingWait(time)); + } + + function trailingEdge(time) { + timerId = undefined; + + // Only invoke if we have `lastArgs` which means `func` has been + // debounced at least once. + if (trailing && lastArgs) { + return invokeFunc(time); + } + lastArgs = lastThis = undefined; + return result; + } + + function cancel() { + if (timerId !== undefined) { + clearTimeout(timerId); + } + lastInvokeTime = 0; + lastArgs = lastCallTime = lastThis = timerId = undefined; + } + + function flush() { + return timerId === undefined ? result : trailingEdge(now()); + } + + function debounced() { + var time = now(), + isInvoking = shouldInvoke(time); + + lastArgs = arguments; + lastThis = this; + lastCallTime = time; + + if (isInvoking) { + if (timerId === undefined) { + return leadingEdge(lastCallTime); + } + if (maxing) { + // Handle invocations in a tight loop. + clearTimeout(timerId); + timerId = setTimeout(timerExpired, wait); + return invokeFunc(lastCallTime); + } + } + if (timerId === undefined) { + timerId = setTimeout(timerExpired, wait); + } + return result; + } + debounced.cancel = cancel; + debounced.flush = flush; + return debounced; +} + +module.exports = debounce; + +},{"./isObject":210,"./now":223,"./toNumber":228}],195:[function(require,module,exports){ +module.exports = require('./forEach'); + +},{"./forEach":197}],196:[function(require,module,exports){ +/** + * Performs a + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * comparison between two values to determine if they are equivalent. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.eq(object, object); + * // => true + * + * _.eq(object, other); + * // => false + * + * _.eq('a', 'a'); + * // => true + * + * _.eq('a', Object('a')); + * // => false + * + * _.eq(NaN, NaN); + * // => true + */ +function eq(value, other) { + return value === other || (value !== value && other !== other); +} + +module.exports = eq; + +},{}],197:[function(require,module,exports){ +var arrayEach = require('./_arrayEach'), + baseEach = require('./_baseEach'), + castFunction = require('./_castFunction'), + isArray = require('./isArray'); + +/** + * Iterates over elements of `collection` and invokes `iteratee` for each element. + * The iteratee is invoked with three arguments: (value, index|key, collection). + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * **Note:** As with other "Collections" methods, objects with a "length" + * property are iterated like arrays. To avoid this behavior use `_.forIn` + * or `_.forOwn` for object iteration. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @alias each + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + * @see _.forEachRight + * @example + * + * _.forEach([1, 2], function(value) { + * console.log(value); + * }); + * // => Logs `1` then `2`. + * + * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) { + * console.log(key); + * }); + * // => Logs 'a' then 'b' (iteration order is not guaranteed). + */ +function forEach(collection, iteratee) { + var func = isArray(collection) ? arrayEach : baseEach; + return func(collection, castFunction(iteratee)); +} + +module.exports = forEach; + +},{"./_arrayEach":64,"./_baseEach":78,"./_castFunction":109,"./isArray":203}],198:[function(require,module,exports){ +var baseForOwn = require('./_baseForOwn'), + castFunction = require('./_castFunction'); + +/** + * Iterates over own enumerable string keyed properties of an object and + * invokes `iteratee` for each property. The iteratee is invoked with three + * arguments: (value, key, object). Iteratee functions may exit iteration + * early by explicitly returning `false`. + * + * @static + * @memberOf _ + * @since 0.3.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns `object`. + * @see _.forOwnRight + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forOwn(new Foo, function(value, key) { + * console.log(key); + * }); + * // => Logs 'a' then 'b' (iteration order is not guaranteed). + */ +function forOwn(object, iteratee) { + return object && baseForOwn(object, castFunction(iteratee)); +} + +module.exports = forOwn; + +},{"./_baseForOwn":80,"./_castFunction":109}],199:[function(require,module,exports){ +var baseGet = require('./_baseGet'); + +/** + * Gets the value at `path` of `object`. If the resolved value is + * `undefined`, the `defaultValue` is returned in its place. + * + * @static + * @memberOf _ + * @since 3.7.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @param {*} [defaultValue] The value returned for `undefined` resolved values. + * @returns {*} Returns the resolved value. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.get(object, 'a[0].b.c'); + * // => 3 + * + * _.get(object, ['a', '0', 'b', 'c']); + * // => 3 + * + * _.get(object, 'a.b.c', 'default'); + * // => 'default' + */ +function get(object, path, defaultValue) { + var result = object == null ? undefined : baseGet(object, path); + return result === undefined ? defaultValue : result; +} + +module.exports = get; + +},{"./_baseGet":81}],200:[function(require,module,exports){ +var baseHasIn = require('./_baseHasIn'), + hasPath = require('./_hasPath'); + +/** + * Checks if `path` is a direct or inherited property of `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + * @example + * + * var object = _.create({ 'a': _.create({ 'b': 2 }) }); + * + * _.hasIn(object, 'a'); + * // => true + * + * _.hasIn(object, 'a.b'); + * // => true + * + * _.hasIn(object, ['a', 'b']); + * // => true + * + * _.hasIn(object, 'b'); + * // => false + */ +function hasIn(object, path) { + return object != null && hasPath(object, path, baseHasIn); +} + +module.exports = hasIn; + +},{"./_baseHasIn":84,"./_hasPath":141}],201:[function(require,module,exports){ +/** + * This method returns the first argument it receives. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {*} value Any value. + * @returns {*} Returns `value`. + * @example + * + * var object = { 'a': 1 }; + * + * console.log(_.identity(object) === object); + * // => true + */ +function identity(value) { + return value; +} + +module.exports = identity; + +},{}],202:[function(require,module,exports){ +var baseIsArguments = require('./_baseIsArguments'), + isObjectLike = require('./isObjectLike'); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** Built-in value references. */ +var propertyIsEnumerable = objectProto.propertyIsEnumerable; + +/** + * Checks if `value` is likely an `arguments` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + * else `false`. + * @example + * + * _.isArguments(function() { return arguments; }()); + * // => true + * + * _.isArguments([1, 2, 3]); + * // => false + */ +var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) { + return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && + !propertyIsEnumerable.call(value, 'callee'); +}; + +module.exports = isArguments; + +},{"./_baseIsArguments":85,"./isObjectLike":211}],203:[function(require,module,exports){ +/** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array, else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(document.body.children); + * // => false + * + * _.isArray('abc'); + * // => false + * + * _.isArray(_.noop); + * // => false + */ +var isArray = Array.isArray; + +module.exports = isArray; + +},{}],204:[function(require,module,exports){ +var isFunction = require('./isFunction'), + isLength = require('./isLength'); + +/** + * Checks if `value` is array-like. A value is considered array-like if it's + * not a function and has a `value.length` that's an integer greater than or + * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is array-like, else `false`. + * @example + * + * _.isArrayLike([1, 2, 3]); + * // => true + * + * _.isArrayLike(document.body.children); + * // => true + * + * _.isArrayLike('abc'); + * // => true + * + * _.isArrayLike(_.noop); + * // => false + */ +function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); +} + +module.exports = isArrayLike; + +},{"./isFunction":207,"./isLength":208}],205:[function(require,module,exports){ +var isArrayLike = require('./isArrayLike'), + isObjectLike = require('./isObjectLike'); + +/** + * This method is like `_.isArrayLike` except that it also checks if `value` + * is an object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array-like object, + * else `false`. + * @example + * + * _.isArrayLikeObject([1, 2, 3]); + * // => true + * + * _.isArrayLikeObject(document.body.children); + * // => true + * + * _.isArrayLikeObject('abc'); + * // => false + * + * _.isArrayLikeObject(_.noop); + * // => false + */ +function isArrayLikeObject(value) { + return isObjectLike(value) && isArrayLike(value); +} + +module.exports = isArrayLikeObject; + +},{"./isArrayLike":204,"./isObjectLike":211}],206:[function(require,module,exports){ +var root = require('./_root'), + stubFalse = require('./stubFalse'); + +/** Detect free variable `exports`. */ +var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; + +/** Detect free variable `module`. */ +var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; + +/** Detect the popular CommonJS extension `module.exports`. */ +var moduleExports = freeModule && freeModule.exports === freeExports; + +/** Built-in value references. */ +var Buffer = moduleExports ? root.Buffer : undefined; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined; + +/** + * Checks if `value` is a buffer. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a buffer, else `false`. + * @example + * + * _.isBuffer(new Buffer(2)); + * // => true + * + * _.isBuffer(new Uint8Array(2)); + * // => false + */ +var isBuffer = nativeIsBuffer || stubFalse; + +module.exports = isBuffer; + +},{"./_root":177,"./stubFalse":226}],207:[function(require,module,exports){ +var baseGetTag = require('./_baseGetTag'), + isObject = require('./isObject'); + +/** `Object#toString` result references. */ +var asyncTag = '[object AsyncFunction]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + proxyTag = '[object Proxy]'; + +/** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a function, else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */ +function isFunction(value) { + if (!isObject(value)) { + return false; + } + // The use of `Object#toString` avoids issues with the `typeof` operator + // in Safari 9 which returns 'object' for typed arrays and other constructors. + var tag = baseGetTag(value); + return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; +} + +module.exports = isFunction; + +},{"./_baseGetTag":83,"./isObject":210}],208:[function(require,module,exports){ +/** Used as references for various `Number` constants. */ +var MAX_SAFE_INTEGER = 9007199254740991; + +/** + * Checks if `value` is a valid array-like length. + * + * **Note:** This method is loosely based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. + * @example + * + * _.isLength(3); + * // => true + * + * _.isLength(Number.MIN_VALUE); + * // => false + * + * _.isLength(Infinity); + * // => false + * + * _.isLength('3'); + * // => false + */ +function isLength(value) { + return typeof value == 'number' && + value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; +} + +module.exports = isLength; + +},{}],209:[function(require,module,exports){ +var baseIsMap = require('./_baseIsMap'), + baseUnary = require('./_baseUnary'), + nodeUtil = require('./_nodeUtil'); + +/* Node.js helper references. */ +var nodeIsMap = nodeUtil && nodeUtil.isMap; + +/** + * Checks if `value` is classified as a `Map` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a map, else `false`. + * @example + * + * _.isMap(new Map); + * // => true + * + * _.isMap(new WeakMap); + * // => false + */ +var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap; + +module.exports = isMap; + +},{"./_baseIsMap":88,"./_baseUnary":107,"./_nodeUtil":173}],210:[function(require,module,exports){ +/** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ +function isObject(value) { + var type = typeof value; + return value != null && (type == 'object' || type == 'function'); +} + +module.exports = isObject; + +},{}],211:[function(require,module,exports){ +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ +function isObjectLike(value) { + return value != null && typeof value == 'object'; +} + +module.exports = isObjectLike; + +},{}],212:[function(require,module,exports){ +var baseGetTag = require('./_baseGetTag'), + getPrototype = require('./_getPrototype'), + isObjectLike = require('./isObjectLike'); + +/** `Object#toString` result references. */ +var objectTag = '[object Object]'; + +/** Used for built-in method references. */ +var funcProto = Function.prototype, + objectProto = Object.prototype; + +/** Used to resolve the decompiled source of functions. */ +var funcToString = funcProto.toString; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** Used to infer the `Object` constructor. */ +var objectCtorString = funcToString.call(Object); + +/** + * Checks if `value` is a plain object, that is, an object created by the + * `Object` constructor or one with a `[[Prototype]]` of `null`. + * + * @static + * @memberOf _ + * @since 0.8.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * _.isPlainObject(new Foo); + * // => false + * + * _.isPlainObject([1, 2, 3]); + * // => false + * + * _.isPlainObject({ 'x': 0, 'y': 0 }); + * // => true + * + * _.isPlainObject(Object.create(null)); + * // => true + */ +function isPlainObject(value) { + if (!isObjectLike(value) || baseGetTag(value) != objectTag) { + return false; + } + var proto = getPrototype(value); + if (proto === null) { + return true; + } + var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor; + return typeof Ctor == 'function' && Ctor instanceof Ctor && + funcToString.call(Ctor) == objectCtorString; +} + +module.exports = isPlainObject; + +},{"./_baseGetTag":83,"./_getPrototype":135,"./isObjectLike":211}],213:[function(require,module,exports){ +var baseIsSet = require('./_baseIsSet'), + baseUnary = require('./_baseUnary'), + nodeUtil = require('./_nodeUtil'); + +/* Node.js helper references. */ +var nodeIsSet = nodeUtil && nodeUtil.isSet; + +/** + * Checks if `value` is classified as a `Set` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a set, else `false`. + * @example + * + * _.isSet(new Set); + * // => true + * + * _.isSet(new WeakSet); + * // => false + */ +var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet; + +module.exports = isSet; + +},{"./_baseIsSet":91,"./_baseUnary":107,"./_nodeUtil":173}],214:[function(require,module,exports){ +var baseGetTag = require('./_baseGetTag'), + isArray = require('./isArray'), + isObjectLike = require('./isObjectLike'); + +/** `Object#toString` result references. */ +var stringTag = '[object String]'; + +/** + * Checks if `value` is classified as a `String` primitive or object. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a string, else `false`. + * @example + * + * _.isString('abc'); + * // => true + * + * _.isString(1); + * // => false + */ +function isString(value) { + return typeof value == 'string' || + (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag); +} + +module.exports = isString; + +},{"./_baseGetTag":83,"./isArray":203,"./isObjectLike":211}],215:[function(require,module,exports){ +var baseGetTag = require('./_baseGetTag'), + isObjectLike = require('./isObjectLike'); + +/** `Object#toString` result references. */ +var symbolTag = '[object Symbol]'; + +/** + * Checks if `value` is classified as a `Symbol` primitive or object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. + * @example + * + * _.isSymbol(Symbol.iterator); + * // => true + * + * _.isSymbol('abc'); + * // => false + */ +function isSymbol(value) { + return typeof value == 'symbol' || + (isObjectLike(value) && baseGetTag(value) == symbolTag); +} + +module.exports = isSymbol; + +},{"./_baseGetTag":83,"./isObjectLike":211}],216:[function(require,module,exports){ +var baseIsTypedArray = require('./_baseIsTypedArray'), + baseUnary = require('./_baseUnary'), + nodeUtil = require('./_nodeUtil'); + +/* Node.js helper references. */ +var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; + +/** + * Checks if `value` is classified as a typed array. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + * @example + * + * _.isTypedArray(new Uint8Array); + * // => true + * + * _.isTypedArray([]); + * // => false + */ +var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; + +module.exports = isTypedArray; + +},{"./_baseIsTypedArray":92,"./_baseUnary":107,"./_nodeUtil":173}],217:[function(require,module,exports){ +/** + * Checks if `value` is `undefined`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. + * @example + * + * _.isUndefined(void 0); + * // => true + * + * _.isUndefined(null); + * // => false + */ +function isUndefined(value) { + return value === undefined; +} + +module.exports = isUndefined; + +},{}],218:[function(require,module,exports){ +var arrayLikeKeys = require('./_arrayLikeKeys'), + baseKeys = require('./_baseKeys'), + isArrayLike = require('./isArrayLike'); + +/** + * Creates an array of the own enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. See the + * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * for more details. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keys(new Foo); + * // => ['a', 'b'] (iteration order is not guaranteed) + * + * _.keys('hi'); + * // => ['0', '1'] + */ +function keys(object) { + return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); +} + +module.exports = keys; + +},{"./_arrayLikeKeys":66,"./_baseKeys":94,"./isArrayLike":204}],219:[function(require,module,exports){ +var arrayLikeKeys = require('./_arrayLikeKeys'), + baseKeysIn = require('./_baseKeysIn'), + isArrayLike = require('./isArrayLike'); + +/** + * Creates an array of the own and inherited enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keysIn(new Foo); + * // => ['a', 'b', 'c'] (iteration order is not guaranteed) + */ +function keysIn(object) { + return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); +} + +module.exports = keysIn; + +},{"./_arrayLikeKeys":66,"./_baseKeysIn":95,"./isArrayLike":204}],220:[function(require,module,exports){ +var arrayMap = require('./_arrayMap'), + baseIteratee = require('./_baseIteratee'), + baseMap = require('./_baseMap'), + isArray = require('./isArray'); + +/** + * Creates an array of values by running each element in `collection` thru + * `iteratee`. The iteratee is invoked with three arguments: + * (value, index|key, collection). + * + * Many lodash methods are guarded to work as iteratees for methods like + * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`. + * + * The guarded methods are: + * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`, + * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`, + * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`, + * `template`, `trim`, `trimEnd`, `trimStart`, and `words` + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + * @example + * + * function square(n) { + * return n * n; + * } + * + * _.map([4, 8], square); + * // => [16, 64] + * + * _.map({ 'a': 4, 'b': 8 }, square); + * // => [16, 64] (iteration order is not guaranteed) + * + * var users = [ + * { 'user': 'barney' }, + * { 'user': 'fred' } + * ]; + * + * // The `_.property` iteratee shorthand. + * _.map(users, 'user'); + * // => ['barney', 'fred'] + */ +function map(collection, iteratee) { + var func = isArray(collection) ? arrayMap : baseMap; + return func(collection, baseIteratee(iteratee, 3)); +} + +module.exports = map; + +},{"./_arrayMap":67,"./_baseIteratee":93,"./_baseMap":96,"./isArray":203}],221:[function(require,module,exports){ +var MapCache = require('./_MapCache'); + +/** Error message constants. */ +var FUNC_ERROR_TEXT = 'Expected a function'; + +/** + * Creates a function that memoizes the result of `func`. If `resolver` is + * provided, it determines the cache key for storing the result based on the + * arguments provided to the memoized function. By default, the first argument + * provided to the memoized function is used as the map cache key. The `func` + * is invoked with the `this` binding of the memoized function. + * + * **Note:** The cache is exposed as the `cache` property on the memoized + * function. Its creation may be customized by replacing the `_.memoize.Cache` + * constructor with one whose instances implement the + * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) + * method interface of `clear`, `delete`, `get`, `has`, and `set`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to have its output memoized. + * @param {Function} [resolver] The function to resolve the cache key. + * @returns {Function} Returns the new memoized function. + * @example + * + * var object = { 'a': 1, 'b': 2 }; + * var other = { 'c': 3, 'd': 4 }; + * + * var values = _.memoize(_.values); + * values(object); + * // => [1, 2] + * + * values(other); + * // => [3, 4] + * + * object.a = 2; + * values(object); + * // => [1, 2] + * + * // Modify the result cache. + * values.cache.set(object, ['a', 'b']); + * values(object); + * // => ['a', 'b'] + * + * // Replace `_.memoize.Cache`. + * _.memoize.Cache = WeakMap; + */ +function memoize(func, resolver) { + if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) { + throw new TypeError(FUNC_ERROR_TEXT); + } + var memoized = function() { + var args = arguments, + key = resolver ? resolver.apply(this, args) : args[0], + cache = memoized.cache; + + if (cache.has(key)) { + return cache.get(key); + } + var result = func.apply(this, args); + memoized.cache = cache.set(key, result) || cache; + return result; + }; + memoized.cache = new (memoize.Cache || MapCache); + return memoized; +} + +// Expose `MapCache`. +memoize.Cache = MapCache; + +module.exports = memoize; + +},{"./_MapCache":55}],222:[function(require,module,exports){ +var baseMerge = require('./_baseMerge'), + createAssigner = require('./_createAssigner'); + +/** + * This method is like `_.assign` except that it recursively merges own and + * inherited enumerable string keyed properties of source objects into the + * destination object. Source properties that resolve to `undefined` are + * skipped if a destination value exists. Array and plain object properties + * are merged recursively. Other objects and value types are overridden by + * assignment. Source objects are applied from left to right. Subsequent + * sources overwrite property assignments of previous sources. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 0.5.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @example + * + * var object = { + * 'a': [{ 'b': 2 }, { 'd': 4 }] + * }; + * + * var other = { + * 'a': [{ 'c': 3 }, { 'e': 5 }] + * }; + * + * _.merge(object, other); + * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] } + */ +var merge = createAssigner(function(object, source, srcIndex) { + baseMerge(object, source, srcIndex); +}); + +module.exports = merge; + +},{"./_baseMerge":99,"./_createAssigner":122}],223:[function(require,module,exports){ +var root = require('./_root'); + +/** + * Gets the timestamp of the number of milliseconds that have elapsed since + * the Unix epoch (1 January 1970 00:00:00 UTC). + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Date + * @returns {number} Returns the timestamp. + * @example + * + * _.defer(function(stamp) { + * console.log(_.now() - stamp); + * }, _.now()); + * // => Logs the number of milliseconds it took for the deferred invocation. + */ +var now = function() { + return root.Date.now(); +}; + +module.exports = now; + +},{"./_root":177}],224:[function(require,module,exports){ +var baseProperty = require('./_baseProperty'), + basePropertyDeep = require('./_basePropertyDeep'), + isKey = require('./_isKey'), + toKey = require('./_toKey'); + +/** + * Creates a function that returns the value at `path` of a given object. + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Util + * @param {Array|string} path The path of the property to get. + * @returns {Function} Returns the new accessor function. + * @example + * + * var objects = [ + * { 'a': { 'b': 2 } }, + * { 'a': { 'b': 1 } } + * ]; + * + * _.map(objects, _.property('a.b')); + * // => [2, 1] + * + * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b'); + * // => [1, 2] + */ +function property(path) { + return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path); +} + +module.exports = property; + +},{"./_baseProperty":101,"./_basePropertyDeep":102,"./_isKey":152,"./_toKey":190}],225:[function(require,module,exports){ +/** + * This method returns a new empty array. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {Array} Returns the new empty array. + * @example + * + * var arrays = _.times(2, _.stubArray); + * + * console.log(arrays); + * // => [[], []] + * + * console.log(arrays[0] === arrays[1]); + * // => false + */ +function stubArray() { + return []; +} + +module.exports = stubArray; + +},{}],226:[function(require,module,exports){ +/** + * This method returns `false`. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {boolean} Returns `false`. + * @example + * + * _.times(2, _.stubFalse); + * // => [false, false] + */ +function stubFalse() { + return false; +} + +module.exports = stubFalse; + +},{}],227:[function(require,module,exports){ +var debounce = require('./debounce'), + isObject = require('./isObject'); + +/** Error message constants. */ +var FUNC_ERROR_TEXT = 'Expected a function'; + +/** + * Creates a throttled function that only invokes `func` at most once per + * every `wait` milliseconds. The throttled function comes with a `cancel` + * method to cancel delayed `func` invocations and a `flush` method to + * immediately invoke them. Provide `options` to indicate whether `func` + * should be invoked on the leading and/or trailing edge of the `wait` + * timeout. The `func` is invoked with the last arguments provided to the + * throttled function. Subsequent calls to the throttled function return the + * result of the last `func` invocation. + * + * **Note:** If `leading` and `trailing` options are `true`, `func` is + * invoked on the trailing edge of the timeout only if the throttled function + * is invoked more than once during the `wait` timeout. + * + * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred + * until to the next tick, similar to `setTimeout` with a timeout of `0`. + * + * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) + * for details over the differences between `_.throttle` and `_.debounce`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to throttle. + * @param {number} [wait=0] The number of milliseconds to throttle invocations to. + * @param {Object} [options={}] The options object. + * @param {boolean} [options.leading=true] + * Specify invoking on the leading edge of the timeout. + * @param {boolean} [options.trailing=true] + * Specify invoking on the trailing edge of the timeout. + * @returns {Function} Returns the new throttled function. + * @example + * + * // Avoid excessively updating the position while scrolling. + * jQuery(window).on('scroll', _.throttle(updatePosition, 100)); + * + * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes. + * var throttled = _.throttle(renewToken, 300000, { 'trailing': false }); + * jQuery(element).on('click', throttled); + * + * // Cancel the trailing throttled invocation. + * jQuery(window).on('popstate', throttled.cancel); + */ +function throttle(func, wait, options) { + var leading = true, + trailing = true; + + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + if (isObject(options)) { + leading = 'leading' in options ? !!options.leading : leading; + trailing = 'trailing' in options ? !!options.trailing : trailing; + } + return debounce(func, wait, { + 'leading': leading, + 'maxWait': wait, + 'trailing': trailing + }); +} + +module.exports = throttle; + +},{"./debounce":194,"./isObject":210}],228:[function(require,module,exports){ +var isObject = require('./isObject'), + isSymbol = require('./isSymbol'); + +/** Used as references for various `Number` constants. */ +var NAN = 0 / 0; + +/** Used to match leading and trailing whitespace. */ +var reTrim = /^\s+|\s+$/g; + +/** Used to detect bad signed hexadecimal string values. */ +var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; + +/** Used to detect binary string values. */ +var reIsBinary = /^0b[01]+$/i; + +/** Used to detect octal string values. */ +var reIsOctal = /^0o[0-7]+$/i; + +/** Built-in method references without a dependency on `root`. */ +var freeParseInt = parseInt; + +/** + * Converts `value` to a number. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to process. + * @returns {number} Returns the number. + * @example + * + * _.toNumber(3.2); + * // => 3.2 + * + * _.toNumber(Number.MIN_VALUE); + * // => 5e-324 + * + * _.toNumber(Infinity); + * // => Infinity + * + * _.toNumber('3.2'); + * // => 3.2 + */ +function toNumber(value) { + if (typeof value == 'number') { + return value; + } + if (isSymbol(value)) { + return NAN; + } + if (isObject(value)) { + var other = typeof value.valueOf == 'function' ? value.valueOf() : value; + value = isObject(other) ? (other + '') : other; + } + if (typeof value != 'string') { + return value === 0 ? value : +value; + } + value = value.replace(reTrim, ''); + var isBinary = reIsBinary.test(value); + return (isBinary || reIsOctal.test(value)) + ? freeParseInt(value.slice(2), isBinary ? 2 : 8) + : (reIsBadHex.test(value) ? NAN : +value); +} + +module.exports = toNumber; + +},{"./isObject":210,"./isSymbol":215}],229:[function(require,module,exports){ +var copyObject = require('./_copyObject'), + keysIn = require('./keysIn'); + +/** + * Converts `value` to a plain object flattening inherited enumerable string + * keyed properties of `value` to own properties of the plain object. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {Object} Returns the converted plain object. + * @example + * + * function Foo() { + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.assign({ 'a': 1 }, new Foo); + * // => { 'a': 1, 'b': 2 } + * + * _.assign({ 'a': 1 }, _.toPlainObject(new Foo)); + * // => { 'a': 1, 'b': 2, 'c': 3 } + */ +function toPlainObject(value) { + return copyObject(value, keysIn(value)); +} + +module.exports = toPlainObject; + +},{"./_copyObject":118,"./keysIn":219}],230:[function(require,module,exports){ +var baseToString = require('./_baseToString'); + +/** + * Converts `value` to a string. An empty string is returned for `null` + * and `undefined` values. The sign of `-0` is preserved. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + * @example + * + * _.toString(null); + * // => '' + * + * _.toString(-0); + * // => '-0' + * + * _.toString([1, 2, 3]); + * // => '1,2,3' + */ +function toString(value) { + return value == null ? '' : baseToString(value); +} + +module.exports = toString; + +},{"./_baseToString":106}],231:[function(require,module,exports){ +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + define([], factory); + } else if (typeof exports === 'object') { + module.exports = factory(); + } else { + root.materialColors = factory(); + } +})(this, function() { + return {"red":{"50":"#ffebee","100":"#ffcdd2","200":"#ef9a9a","300":"#e57373","400":"#ef5350","500":"#f44336","600":"#e53935","700":"#d32f2f","800":"#c62828","900":"#b71c1c","a100":"#ff8a80","a200":"#ff5252","a400":"#ff1744","a700":"#d50000"},"pink":{"50":"#fce4ec","100":"#f8bbd0","200":"#f48fb1","300":"#f06292","400":"#ec407a","500":"#e91e63","600":"#d81b60","700":"#c2185b","800":"#ad1457","900":"#880e4f","a100":"#ff80ab","a200":"#ff4081","a400":"#f50057","a700":"#c51162"},"purple":{"50":"#f3e5f5","100":"#e1bee7","200":"#ce93d8","300":"#ba68c8","400":"#ab47bc","500":"#9c27b0","600":"#8e24aa","700":"#7b1fa2","800":"#6a1b9a","900":"#4a148c","a100":"#ea80fc","a200":"#e040fb","a400":"#d500f9","a700":"#aa00ff"},"deepPurple":{"50":"#ede7f6","100":"#d1c4e9","200":"#b39ddb","300":"#9575cd","400":"#7e57c2","500":"#673ab7","600":"#5e35b1","700":"#512da8","800":"#4527a0","900":"#311b92","a100":"#b388ff","a200":"#7c4dff","a400":"#651fff","a700":"#6200ea"},"indigo":{"50":"#e8eaf6","100":"#c5cae9","200":"#9fa8da","300":"#7986cb","400":"#5c6bc0","500":"#3f51b5","600":"#3949ab","700":"#303f9f","800":"#283593","900":"#1a237e","a100":"#8c9eff","a200":"#536dfe","a400":"#3d5afe","a700":"#304ffe"},"blue":{"50":"#e3f2fd","100":"#bbdefb","200":"#90caf9","300":"#64b5f6","400":"#42a5f5","500":"#2196f3","600":"#1e88e5","700":"#1976d2","800":"#1565c0","900":"#0d47a1","a100":"#82b1ff","a200":"#448aff","a400":"#2979ff","a700":"#2962ff"},"lightBlue":{"50":"#e1f5fe","100":"#b3e5fc","200":"#81d4fa","300":"#4fc3f7","400":"#29b6f6","500":"#03a9f4","600":"#039be5","700":"#0288d1","800":"#0277bd","900":"#01579b","a100":"#80d8ff","a200":"#40c4ff","a400":"#00b0ff","a700":"#0091ea"},"cyan":{"50":"#e0f7fa","100":"#b2ebf2","200":"#80deea","300":"#4dd0e1","400":"#26c6da","500":"#00bcd4","600":"#00acc1","700":"#0097a7","800":"#00838f","900":"#006064","a100":"#84ffff","a200":"#18ffff","a400":"#00e5ff","a700":"#00b8d4"},"teal":{"50":"#e0f2f1","100":"#b2dfdb","200":"#80cbc4","300":"#4db6ac","400":"#26a69a","500":"#009688","600":"#00897b","700":"#00796b","800":"#00695c","900":"#004d40","a100":"#a7ffeb","a200":"#64ffda","a400":"#1de9b6","a700":"#00bfa5"},"green":{"50":"#e8f5e9","100":"#c8e6c9","200":"#a5d6a7","300":"#81c784","400":"#66bb6a","500":"#4caf50","600":"#43a047","700":"#388e3c","800":"#2e7d32","900":"#1b5e20","a100":"#b9f6ca","a200":"#69f0ae","a400":"#00e676","a700":"#00c853"},"lightGreen":{"50":"#f1f8e9","100":"#dcedc8","200":"#c5e1a5","300":"#aed581","400":"#9ccc65","500":"#8bc34a","600":"#7cb342","700":"#689f38","800":"#558b2f","900":"#33691e","a100":"#ccff90","a200":"#b2ff59","a400":"#76ff03","a700":"#64dd17"},"lime":{"50":"#f9fbe7","100":"#f0f4c3","200":"#e6ee9c","300":"#dce775","400":"#d4e157","500":"#cddc39","600":"#c0ca33","700":"#afb42b","800":"#9e9d24","900":"#827717","a100":"#f4ff81","a200":"#eeff41","a400":"#c6ff00","a700":"#aeea00"},"yellow":{"50":"#fffde7","100":"#fff9c4","200":"#fff59d","300":"#fff176","400":"#ffee58","500":"#ffeb3b","600":"#fdd835","700":"#fbc02d","800":"#f9a825","900":"#f57f17","a100":"#ffff8d","a200":"#ffff00","a400":"#ffea00","a700":"#ffd600"},"amber":{"50":"#fff8e1","100":"#ffecb3","200":"#ffe082","300":"#ffd54f","400":"#ffca28","500":"#ffc107","600":"#ffb300","700":"#ffa000","800":"#ff8f00","900":"#ff6f00","a100":"#ffe57f","a200":"#ffd740","a400":"#ffc400","a700":"#ffab00"},"orange":{"50":"#fff3e0","100":"#ffe0b2","200":"#ffcc80","300":"#ffb74d","400":"#ffa726","500":"#ff9800","600":"#fb8c00","700":"#f57c00","800":"#ef6c00","900":"#e65100","a100":"#ffd180","a200":"#ffab40","a400":"#ff9100","a700":"#ff6d00"},"deepOrange":{"50":"#fbe9e7","100":"#ffccbc","200":"#ffab91","300":"#ff8a65","400":"#ff7043","500":"#ff5722","600":"#f4511e","700":"#e64a19","800":"#d84315","900":"#bf360c","a100":"#ff9e80","a200":"#ff6e40","a400":"#ff3d00","a700":"#dd2c00"},"brown":{"50":"#efebe9","100":"#d7ccc8","200":"#bcaaa4","300":"#a1887f","400":"#8d6e63","500":"#795548","600":"#6d4c41","700":"#5d4037","800":"#4e342e","900":"#3e2723"},"grey":{"50":"#fafafa","100":"#f5f5f5","200":"#eeeeee","300":"#e0e0e0","400":"#bdbdbd","500":"#9e9e9e","600":"#757575","700":"#616161","800":"#424242","900":"#212121"},"blueGrey":{"50":"#eceff1","100":"#cfd8dc","200":"#b0bec5","300":"#90a4ae","400":"#78909c","500":"#607d8b","600":"#546e7a","700":"#455a64","800":"#37474f","900":"#263238"},"darkText":{"primary":"rgba(0, 0, 0, 0.87)","secondary":"rgba(0, 0, 0, 0.54)","disabled":"rgba(0, 0, 0, 0.38)","dividers":"rgba(0, 0, 0, 0.12)"},"lightText":{"primary":"rgba(255, 255, 255, 1)","secondary":"rgba(255, 255, 255, 0.7)","disabled":"rgba(255, 255, 255, 0.5)","dividers":"rgba(255, 255, 255, 0.12)"},"darkIcons":{"active":"rgba(0, 0, 0, 0.54)","inactive":"rgba(0, 0, 0, 0.38)"},"lightIcons":{"active":"rgba(255, 255, 255, 1)","inactive":"rgba(255, 255, 255, 0.5)"},"white":"#ffffff","black":"#000000"}; +}); + +},{}],232:[function(require,module,exports){ +/* +object-assign +(c) Sindre Sorhus +@license MIT +*/ + +'use strict'; +/* eslint-disable no-unused-vars */ +var getOwnPropertySymbols = Object.getOwnPropertySymbols; +var hasOwnProperty = Object.prototype.hasOwnProperty; +var propIsEnumerable = Object.prototype.propertyIsEnumerable; + +function toObject(val) { + if (val === null || val === undefined) { + throw new TypeError('Object.assign cannot be called with null or undefined'); + } + + return Object(val); +} + +function shouldUseNative() { + try { + if (!Object.assign) { + return false; + } + + // Detect buggy property enumeration order in older V8 versions. + + // https://bugs.chromium.org/p/v8/issues/detail?id=4118 + var test1 = new String('abc'); // eslint-disable-line no-new-wrappers + test1[5] = 'de'; + if (Object.getOwnPropertyNames(test1)[0] === '5') { + return false; + } + + // https://bugs.chromium.org/p/v8/issues/detail?id=3056 + var test2 = {}; + for (var i = 0; i < 10; i++) { + test2['_' + String.fromCharCode(i)] = i; + } + var order2 = Object.getOwnPropertyNames(test2).map(function (n) { + return test2[n]; + }); + if (order2.join('') !== '0123456789') { + return false; + } + + // https://bugs.chromium.org/p/v8/issues/detail?id=3056 + var test3 = {}; + 'abcdefghijklmnopqrst'.split('').forEach(function (letter) { + test3[letter] = letter; + }); + if (Object.keys(Object.assign({}, test3)).join('') !== + 'abcdefghijklmnopqrst') { + return false; + } + + return true; + } catch (err) { + // We don't expect any of the above to throw, but better to be safe. + return false; + } +} + +module.exports = shouldUseNative() ? Object.assign : function (target, source) { + var from; + var to = toObject(target); + var symbols; + + for (var s = 1; s < arguments.length; s++) { + from = Object(arguments[s]); + + for (var key in from) { + if (hasOwnProperty.call(from, key)) { + to[key] = from[key]; + } + } + + if (getOwnPropertySymbols) { + symbols = getOwnPropertySymbols(from); + for (var i = 0; i < symbols.length; i++) { + if (propIsEnumerable.call(from, symbols[i])) { + to[symbols[i]] = from[symbols[i]]; + } + } + } + } + + return to; +}; + +},{}],233:[function(require,module,exports){ +(function (process){ +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +'use strict'; + +var printWarning = function() {}; + +if (process.env.NODE_ENV !== 'production') { + var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret'); + var loggedTypeFailures = {}; + var has = Function.call.bind(Object.prototype.hasOwnProperty); + + printWarning = function(text) { + var message = 'Warning: ' + text; + if (typeof console !== 'undefined') { + console.error(message); + } + try { + // --- Welcome to debugging React --- + // This error was thrown as a convenience so that you can use this stack + // to find the callsite that caused this warning to fire. + throw new Error(message); + } catch (x) {} + }; +} + +/** + * Assert that the values match with the type specs. + * Error messages are memorized and will only be shown once. + * + * @param {object} typeSpecs Map of name to a ReactPropType + * @param {object} values Runtime values that need to be type-checked + * @param {string} location e.g. "prop", "context", "child context" + * @param {string} componentName Name of the component for error messages. + * @param {?Function} getStack Returns the component stack. + * @private + */ +function checkPropTypes(typeSpecs, values, location, componentName, getStack) { + if (process.env.NODE_ENV !== 'production') { + for (var typeSpecName in typeSpecs) { + if (has(typeSpecs, typeSpecName)) { + var error; + // Prop type validation may throw. In case they do, we don't want to + // fail the render phase where it didn't fail before. So we log it. + // After these have been cleaned up, we'll let them throw. + try { + // This is intentionally an invariant that gets caught. It's the same + // behavior as without this statement except with a better message. + if (typeof typeSpecs[typeSpecName] !== 'function') { + var err = Error( + (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + ); + err.name = 'Invariant Violation'; + throw err; + } + error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret); + } catch (ex) { + error = ex; + } + if (error && !(error instanceof Error)) { + printWarning( + (componentName || 'React class') + ': type specification of ' + + location + ' `' + typeSpecName + '` is invalid; the type checker ' + + 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' + + 'You may have forgotten to pass an argument to the type checker ' + + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + + 'shape all require an argument).' + ); + } + if (error instanceof Error && !(error.message in loggedTypeFailures)) { + // Only monitor this failure once because there tends to be a lot of the + // same error. + loggedTypeFailures[error.message] = true; + + var stack = getStack ? getStack() : ''; + + printWarning( + 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '') + ); + } + } + } + } +} + +/** + * Resets warning cache when testing. + * + * @private + */ +checkPropTypes.resetWarningCache = function() { + if (process.env.NODE_ENV !== 'production') { + loggedTypeFailures = {}; + } +} + +module.exports = checkPropTypes; + +}).call(this,require('_process')) + +},{"./lib/ReactPropTypesSecret":237,"_process":3}],234:[function(require,module,exports){ +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +'use strict'; + +var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret'); + +function emptyFunction() {} +function emptyFunctionWithReset() {} +emptyFunctionWithReset.resetWarningCache = emptyFunction; + +module.exports = function() { + function shim(props, propName, componentName, location, propFullName, secret) { + if (secret === ReactPropTypesSecret) { + // It is still safe when called from React. + return; + } + var err = new Error( + 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' + + 'Use PropTypes.checkPropTypes() to call them. ' + + 'Read more at http://fb.me/use-check-prop-types' + ); + err.name = 'Invariant Violation'; + throw err; + }; + shim.isRequired = shim; + function getShim() { + return shim; + }; + // Important! + // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`. + var ReactPropTypes = { + array: shim, + bool: shim, + func: shim, + number: shim, + object: shim, + string: shim, + symbol: shim, + + any: shim, + arrayOf: getShim, + element: shim, + elementType: shim, + instanceOf: getShim, + node: shim, + objectOf: getShim, + oneOf: getShim, + oneOfType: getShim, + shape: getShim, + exact: getShim, + + checkPropTypes: emptyFunctionWithReset, + resetWarningCache: emptyFunction + }; + + ReactPropTypes.PropTypes = ReactPropTypes; + + return ReactPropTypes; +}; + +},{"./lib/ReactPropTypesSecret":237}],235:[function(require,module,exports){ +(function (process){ +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +'use strict'; + +var ReactIs = require('react-is'); +var assign = require('object-assign'); + +var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret'); +var checkPropTypes = require('./checkPropTypes'); + +var has = Function.call.bind(Object.prototype.hasOwnProperty); +var printWarning = function() {}; + +if (process.env.NODE_ENV !== 'production') { + printWarning = function(text) { + var message = 'Warning: ' + text; + if (typeof console !== 'undefined') { + console.error(message); + } + try { + // --- Welcome to debugging React --- + // This error was thrown as a convenience so that you can use this stack + // to find the callsite that caused this warning to fire. + throw new Error(message); + } catch (x) {} + }; +} + +function emptyFunctionThatReturnsNull() { + return null; +} + +module.exports = function(isValidElement, throwOnDirectAccess) { + /* global Symbol */ + var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator; + var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec. + + /** + * Returns the iterator method function contained on the iterable object. + * + * Be sure to invoke the function with the iterable as context: + * + * var iteratorFn = getIteratorFn(myIterable); + * if (iteratorFn) { + * var iterator = iteratorFn.call(myIterable); + * ... + * } + * + * @param {?object} maybeIterable + * @return {?function} + */ + function getIteratorFn(maybeIterable) { + var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]); + if (typeof iteratorFn === 'function') { + return iteratorFn; + } + } + + /** + * Collection of methods that allow declaration and validation of props that are + * supplied to React components. Example usage: + * + * var Props = require('ReactPropTypes'); + * var MyArticle = React.createClass({ + * propTypes: { + * // An optional string prop named "description". + * description: Props.string, + * + * // A required enum prop named "category". + * category: Props.oneOf(['News','Photos']).isRequired, + * + * // A prop named "dialog" that requires an instance of Dialog. + * dialog: Props.instanceOf(Dialog).isRequired + * }, + * render: function() { ... } + * }); + * + * A more formal specification of how these methods are used: + * + * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...) + * decl := ReactPropTypes.{type}(.isRequired)? + * + * Each and every declaration produces a function with the same signature. This + * allows the creation of custom validation functions. For example: + * + * var MyLink = React.createClass({ + * propTypes: { + * // An optional string or URI prop named "href". + * href: function(props, propName, componentName) { + * var propValue = props[propName]; + * if (propValue != null && typeof propValue !== 'string' && + * !(propValue instanceof URI)) { + * return new Error( + * 'Expected a string or an URI for ' + propName + ' in ' + + * componentName + * ); + * } + * } + * }, + * render: function() {...} + * }); + * + * @internal + */ + + var ANONYMOUS = '<>'; + + // Important! + // Keep this list in sync with production version in `./factoryWithThrowingShims.js`. + var ReactPropTypes = { + array: createPrimitiveTypeChecker('array'), + bool: createPrimitiveTypeChecker('boolean'), + func: createPrimitiveTypeChecker('function'), + number: createPrimitiveTypeChecker('number'), + object: createPrimitiveTypeChecker('object'), + string: createPrimitiveTypeChecker('string'), + symbol: createPrimitiveTypeChecker('symbol'), + + any: createAnyTypeChecker(), + arrayOf: createArrayOfTypeChecker, + element: createElementTypeChecker(), + elementType: createElementTypeTypeChecker(), + instanceOf: createInstanceTypeChecker, + node: createNodeChecker(), + objectOf: createObjectOfTypeChecker, + oneOf: createEnumTypeChecker, + oneOfType: createUnionTypeChecker, + shape: createShapeTypeChecker, + exact: createStrictShapeTypeChecker, + }; + + /** + * inlined Object.is polyfill to avoid requiring consumers ship their own + * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is + */ + /*eslint-disable no-self-compare*/ + function is(x, y) { + // SameValue algorithm + if (x === y) { + // Steps 1-5, 7-10 + // Steps 6.b-6.e: +0 != -0 + return x !== 0 || 1 / x === 1 / y; + } else { + // Step 6.a: NaN == NaN + return x !== x && y !== y; + } + } + /*eslint-enable no-self-compare*/ + + /** + * We use an Error-like object for backward compatibility as people may call + * PropTypes directly and inspect their output. However, we don't use real + * Errors anymore. We don't inspect their stack anyway, and creating them + * is prohibitively expensive if they are created too often, such as what + * happens in oneOfType() for any type before the one that matched. + */ + function PropTypeError(message) { + this.message = message; + this.stack = ''; + } + // Make `instanceof Error` still work for returned errors. + PropTypeError.prototype = Error.prototype; + + function createChainableTypeChecker(validate) { + if (process.env.NODE_ENV !== 'production') { + var manualPropTypeCallCache = {}; + var manualPropTypeWarningCount = 0; + } + function checkType(isRequired, props, propName, componentName, location, propFullName, secret) { + componentName = componentName || ANONYMOUS; + propFullName = propFullName || propName; + + if (secret !== ReactPropTypesSecret) { + if (throwOnDirectAccess) { + // New behavior only for users of `prop-types` package + var err = new Error( + 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' + + 'Use `PropTypes.checkPropTypes()` to call them. ' + + 'Read more at http://fb.me/use-check-prop-types' + ); + err.name = 'Invariant Violation'; + throw err; + } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') { + // Old behavior for people using React.PropTypes + var cacheKey = componentName + ':' + propName; + if ( + !manualPropTypeCallCache[cacheKey] && + // Avoid spamming the console because they are often not actionable except for lib authors + manualPropTypeWarningCount < 3 + ) { + printWarning( + 'You are manually calling a React.PropTypes validation ' + + 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' + + 'and will throw in the standalone `prop-types` package. ' + + 'You may be seeing this warning due to a third-party PropTypes ' + + 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.' + ); + manualPropTypeCallCache[cacheKey] = true; + manualPropTypeWarningCount++; + } + } + } + if (props[propName] == null) { + if (isRequired) { + if (props[propName] === null) { + return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.')); + } + return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.')); + } + return null; + } else { + return validate(props, propName, componentName, location, propFullName); + } + } + + var chainedCheckType = checkType.bind(null, false); + chainedCheckType.isRequired = checkType.bind(null, true); + + return chainedCheckType; + } + + function createPrimitiveTypeChecker(expectedType) { + function validate(props, propName, componentName, location, propFullName, secret) { + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== expectedType) { + // `propValue` being instance of, say, date/regexp, pass the 'object' + // check, but we can offer a more precise error message here rather than + // 'of type `object`'. + var preciseType = getPreciseType(propValue); + + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createAnyTypeChecker() { + return createChainableTypeChecker(emptyFunctionThatReturnsNull); + } + + function createArrayOfTypeChecker(typeChecker) { + function validate(props, propName, componentName, location, propFullName) { + if (typeof typeChecker !== 'function') { + return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.'); + } + var propValue = props[propName]; + if (!Array.isArray(propValue)) { + var propType = getPropType(propValue); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.')); + } + for (var i = 0; i < propValue.length; i++) { + var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret); + if (error instanceof Error) { + return error; + } + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createElementTypeChecker() { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + if (!isValidElement(propValue)) { + var propType = getPropType(propValue); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createElementTypeTypeChecker() { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + if (!ReactIs.isValidElementType(propValue)) { + var propType = getPropType(propValue); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createInstanceTypeChecker(expectedClass) { + function validate(props, propName, componentName, location, propFullName) { + if (!(props[propName] instanceof expectedClass)) { + var expectedClassName = expectedClass.name || ANONYMOUS; + var actualClassName = getClassName(props[propName]); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createEnumTypeChecker(expectedValues) { + if (!Array.isArray(expectedValues)) { + if (process.env.NODE_ENV !== 'production') { + if (arguments.length > 1) { + printWarning( + 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' + + 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).' + ); + } else { + printWarning('Invalid argument supplied to oneOf, expected an array.'); + } + } + return emptyFunctionThatReturnsNull; + } + + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + for (var i = 0; i < expectedValues.length; i++) { + if (is(propValue, expectedValues[i])) { + return null; + } + } + + var valuesString = JSON.stringify(expectedValues, function replacer(key, value) { + var type = getPreciseType(value); + if (type === 'symbol') { + return String(value); + } + return value; + }); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.')); + } + return createChainableTypeChecker(validate); + } + + function createObjectOfTypeChecker(typeChecker) { + function validate(props, propName, componentName, location, propFullName) { + if (typeof typeChecker !== 'function') { + return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.'); + } + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== 'object') { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.')); + } + for (var key in propValue) { + if (has(propValue, key)) { + var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); + if (error instanceof Error) { + return error; + } + } + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createUnionTypeChecker(arrayOfTypeCheckers) { + if (!Array.isArray(arrayOfTypeCheckers)) { + process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0; + return emptyFunctionThatReturnsNull; + } + + for (var i = 0; i < arrayOfTypeCheckers.length; i++) { + var checker = arrayOfTypeCheckers[i]; + if (typeof checker !== 'function') { + printWarning( + 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' + + 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.' + ); + return emptyFunctionThatReturnsNull; + } + } + + function validate(props, propName, componentName, location, propFullName) { + for (var i = 0; i < arrayOfTypeCheckers.length; i++) { + var checker = arrayOfTypeCheckers[i]; + if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) { + return null; + } + } + + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.')); + } + return createChainableTypeChecker(validate); + } + + function createNodeChecker() { + function validate(props, propName, componentName, location, propFullName) { + if (!isNode(props[propName])) { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createShapeTypeChecker(shapeTypes) { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== 'object') { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.')); + } + for (var key in shapeTypes) { + var checker = shapeTypes[key]; + if (!checker) { + continue; + } + var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); + if (error) { + return error; + } + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createStrictShapeTypeChecker(shapeTypes) { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== 'object') { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.')); + } + // We need to check all keys in case some are required but missing from + // props. + var allKeys = assign({}, props[propName], shapeTypes); + for (var key in allKeys) { + var checker = shapeTypes[key]; + if (!checker) { + return new PropTypeError( + 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' + + '\nBad object: ' + JSON.stringify(props[propName], null, ' ') + + '\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ') + ); + } + var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); + if (error) { + return error; + } + } + return null; + } + + return createChainableTypeChecker(validate); + } + + function isNode(propValue) { + switch (typeof propValue) { + case 'number': + case 'string': + case 'undefined': + return true; + case 'boolean': + return !propValue; + case 'object': + if (Array.isArray(propValue)) { + return propValue.every(isNode); + } + if (propValue === null || isValidElement(propValue)) { + return true; + } + + var iteratorFn = getIteratorFn(propValue); + if (iteratorFn) { + var iterator = iteratorFn.call(propValue); + var step; + if (iteratorFn !== propValue.entries) { + while (!(step = iterator.next()).done) { + if (!isNode(step.value)) { + return false; + } + } + } else { + // Iterator will provide entry [k,v] tuples rather than values. + while (!(step = iterator.next()).done) { + var entry = step.value; + if (entry) { + if (!isNode(entry[1])) { + return false; + } + } + } + } + } else { + return false; + } + + return true; + default: + return false; + } + } + + function isSymbol(propType, propValue) { + // Native Symbol. + if (propType === 'symbol') { + return true; + } + + // falsy value can't be a Symbol + if (!propValue) { + return false; + } + + // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol' + if (propValue['@@toStringTag'] === 'Symbol') { + return true; + } + + // Fallback for non-spec compliant Symbols which are polyfilled. + if (typeof Symbol === 'function' && propValue instanceof Symbol) { + return true; + } + + return false; + } + + // Equivalent of `typeof` but with special handling for array and regexp. + function getPropType(propValue) { + var propType = typeof propValue; + if (Array.isArray(propValue)) { + return 'array'; + } + if (propValue instanceof RegExp) { + // Old webkits (at least until Android 4.0) return 'function' rather than + // 'object' for typeof a RegExp. We'll normalize this here so that /bla/ + // passes PropTypes.object. + return 'object'; + } + if (isSymbol(propType, propValue)) { + return 'symbol'; + } + return propType; + } + + // This handles more types than `getPropType`. Only used for error messages. + // See `createPrimitiveTypeChecker`. + function getPreciseType(propValue) { + if (typeof propValue === 'undefined' || propValue === null) { + return '' + propValue; + } + var propType = getPropType(propValue); + if (propType === 'object') { + if (propValue instanceof Date) { + return 'date'; + } else if (propValue instanceof RegExp) { + return 'regexp'; + } + } + return propType; + } + + // Returns a string that is postfixed to a warning about an invalid type. + // For example, "undefined" or "of type array" + function getPostfixForTypeWarning(value) { + var type = getPreciseType(value); + switch (type) { + case 'array': + case 'object': + return 'an ' + type; + case 'boolean': + case 'date': + case 'regexp': + return 'a ' + type; + default: + return type; + } + } + + // Returns class name of the object, if any. + function getClassName(propValue) { + if (!propValue.constructor || !propValue.constructor.name) { + return ANONYMOUS; + } + return propValue.constructor.name; + } + + ReactPropTypes.checkPropTypes = checkPropTypes; + ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache; + ReactPropTypes.PropTypes = ReactPropTypes; + + return ReactPropTypes; +}; + +}).call(this,require('_process')) + +},{"./checkPropTypes":233,"./lib/ReactPropTypesSecret":237,"_process":3,"object-assign":232,"react-is":295}],236:[function(require,module,exports){ +(function (process){ +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +if (process.env.NODE_ENV !== 'production') { + var ReactIs = require('react-is'); + + // By explicitly using `prop-types` you are opting into new development behavior. + // http://fb.me/prop-types-in-prod + var throwOnDirectAccess = true; + module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess); +} else { + // By explicitly using `prop-types` you are opting into new production behavior. + // http://fb.me/prop-types-in-prod + module.exports = require('./factoryWithThrowingShims')(); +} + +}).call(this,require('_process')) + +},{"./factoryWithThrowingShims":234,"./factoryWithTypeCheckers":235,"_process":3,"react-is":295}],237:[function(require,module,exports){ +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +'use strict'; + +var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'; + +module.exports = ReactPropTypesSecret; + +},{}],238:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.AlphaPicker = undefined; + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _common = require('../common'); + +var _AlphaPointer = require('./AlphaPointer'); + +var _AlphaPointer2 = _interopRequireDefault(_AlphaPointer); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var AlphaPicker = exports.AlphaPicker = function AlphaPicker(_ref) { + var rgb = _ref.rgb, + hsl = _ref.hsl, + width = _ref.width, + height = _ref.height, + onChange = _ref.onChange, + direction = _ref.direction, + style = _ref.style, + renderers = _ref.renderers, + pointer = _ref.pointer, + _ref$className = _ref.className, + className = _ref$className === undefined ? '' : _ref$className; + + var styles = (0, _reactcss2.default)({ + 'default': { + picker: { + position: 'relative', + width: width, + height: height + }, + alpha: { + radius: '2px', + style: style + } + } + }); + + return _react2.default.createElement( + 'div', + { style: styles.picker, className: 'alpha-picker ' + className }, + _react2.default.createElement(_common.Alpha, _extends({}, styles.alpha, { + rgb: rgb, + hsl: hsl, + pointer: pointer, + renderers: renderers, + onChange: onChange, + direction: direction + })) + ); +}; + +AlphaPicker.defaultProps = { + width: '316px', + height: '16px', + direction: 'horizontal', + pointer: _AlphaPointer2.default +}; + +exports.default = (0, _common.ColorWrap)(AlphaPicker); +},{"../common":256,"./AlphaPointer":239,"react":"react","reactcss":301}],239:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.AlphaPointer = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var AlphaPointer = exports.AlphaPointer = function AlphaPointer(_ref) { + var direction = _ref.direction; + + var styles = (0, _reactcss2.default)({ + 'default': { + picker: { + width: '18px', + height: '18px', + borderRadius: '50%', + transform: 'translate(-9px, -1px)', + backgroundColor: 'rgb(248, 248, 248)', + boxShadow: '0 1px 4px 0 rgba(0, 0, 0, 0.37)' + } + }, + 'vertical': { + picker: { + transform: 'translate(-3px, -9px)' + } + } + }, { vertical: direction === 'vertical' }); + + return _react2.default.createElement('div', { style: styles.picker }); +}; + +exports.default = AlphaPointer; +},{"react":"react","reactcss":301}],240:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Block = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _propTypes = require('prop-types'); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _merge = require('lodash/merge'); + +var _merge2 = _interopRequireDefault(_merge); + +var _color = require('../../helpers/color'); + +var color = _interopRequireWildcard(_color); + +var _common = require('../common'); + +var _BlockSwatches = require('./BlockSwatches'); + +var _BlockSwatches2 = _interopRequireDefault(_BlockSwatches); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var Block = exports.Block = function Block(_ref) { + var onChange = _ref.onChange, + onSwatchHover = _ref.onSwatchHover, + hex = _ref.hex, + colors = _ref.colors, + width = _ref.width, + triangle = _ref.triangle, + _ref$styles = _ref.styles, + passedStyles = _ref$styles === undefined ? {} : _ref$styles, + _ref$className = _ref.className, + className = _ref$className === undefined ? '' : _ref$className; + + var transparent = hex === 'transparent'; + var handleChange = function handleChange(hexCode, e) { + color.isValidHex(hexCode) && onChange({ + hex: hexCode, + source: 'hex' + }, e); + }; + + var styles = (0, _reactcss2.default)((0, _merge2.default)({ + 'default': { + card: { + width: width, + background: '#fff', + boxShadow: '0 1px rgba(0,0,0,.1)', + borderRadius: '6px', + position: 'relative' + }, + head: { + height: '110px', + background: hex, + borderRadius: '6px 6px 0 0', + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + position: 'relative' + }, + body: { + padding: '10px' + }, + label: { + fontSize: '18px', + color: color.getContrastingColor(hex), + position: 'relative' + }, + triangle: { + width: '0px', + height: '0px', + borderStyle: 'solid', + borderWidth: '0 10px 10px 10px', + borderColor: 'transparent transparent ' + hex + ' transparent', + position: 'absolute', + top: '-10px', + left: '50%', + marginLeft: '-10px' + }, + input: { + width: '100%', + fontSize: '12px', + color: '#666', + border: '0px', + outline: 'none', + height: '22px', + boxShadow: 'inset 0 0 0 1px #ddd', + borderRadius: '4px', + padding: '0 7px', + boxSizing: 'border-box' + } + }, + 'hide-triangle': { + triangle: { + display: 'none' + } + } + }, passedStyles), { 'hide-triangle': triangle === 'hide' }); + + return _react2.default.createElement( + 'div', + { style: styles.card, className: 'block-picker ' + className }, + _react2.default.createElement('div', { style: styles.triangle }), + _react2.default.createElement( + 'div', + { style: styles.head }, + transparent && _react2.default.createElement(_common.Checkboard, { borderRadius: '6px 6px 0 0' }), + _react2.default.createElement( + 'div', + { style: styles.label }, + hex + ) + ), + _react2.default.createElement( + 'div', + { style: styles.body }, + _react2.default.createElement(_BlockSwatches2.default, { colors: colors, onClick: handleChange, onSwatchHover: onSwatchHover }), + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input }, + value: hex, + onChange: handleChange + }) + ) + ); +}; + +Block.propTypes = { + width: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]), + colors: _propTypes2.default.arrayOf(_propTypes2.default.string), + triangle: _propTypes2.default.oneOf(['top', 'hide']), + styles: _propTypes2.default.object +}; + +Block.defaultProps = { + width: 170, + colors: ['#D9E3F0', '#F47373', '#697689', '#37D67A', '#2CCCE4', '#555555', '#dce775', '#ff8a65', '#ba68c8'], + triangle: 'top', + styles: {} +}; + +exports.default = (0, _common.ColorWrap)(Block); +},{"../../helpers/color":288,"../common":256,"./BlockSwatches":241,"lodash/merge":222,"prop-types":236,"react":"react","reactcss":301}],241:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.BlockSwatches = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _map = require('lodash/map'); + +var _map2 = _interopRequireDefault(_map); + +var _common = require('../common'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var BlockSwatches = exports.BlockSwatches = function BlockSwatches(_ref) { + var colors = _ref.colors, + onClick = _ref.onClick, + onSwatchHover = _ref.onSwatchHover; + + var styles = (0, _reactcss2.default)({ + 'default': { + swatches: { + marginRight: '-10px' + }, + swatch: { + width: '22px', + height: '22px', + float: 'left', + marginRight: '10px', + marginBottom: '10px', + borderRadius: '4px' + }, + clear: { + clear: 'both' + } + } + }); + + return _react2.default.createElement( + 'div', + { style: styles.swatches }, + (0, _map2.default)(colors, function (c) { + return _react2.default.createElement(_common.Swatch, { + key: c, + color: c, + style: styles.swatch, + onClick: onClick, + onHover: onSwatchHover, + focusStyle: { + boxShadow: '0 0 4px ' + c + } + }); + }), + _react2.default.createElement('div', { style: styles.clear }) + ); +}; + +exports.default = BlockSwatches; +},{"../common":256,"lodash/map":220,"react":"react","reactcss":301}],242:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Chrome = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _propTypes = require('prop-types'); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _merge = require('lodash/merge'); + +var _merge2 = _interopRequireDefault(_merge); + +var _common = require('../common'); + +var _ChromeFields = require('./ChromeFields'); + +var _ChromeFields2 = _interopRequireDefault(_ChromeFields); + +var _ChromePointer = require('./ChromePointer'); + +var _ChromePointer2 = _interopRequireDefault(_ChromePointer); + +var _ChromePointerCircle = require('./ChromePointerCircle'); + +var _ChromePointerCircle2 = _interopRequireDefault(_ChromePointerCircle); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var Chrome = exports.Chrome = function Chrome(_ref) { + var width = _ref.width, + onChange = _ref.onChange, + disableAlpha = _ref.disableAlpha, + rgb = _ref.rgb, + hsl = _ref.hsl, + hsv = _ref.hsv, + hex = _ref.hex, + renderers = _ref.renderers, + _ref$styles = _ref.styles, + passedStyles = _ref$styles === undefined ? {} : _ref$styles, + _ref$className = _ref.className, + className = _ref$className === undefined ? '' : _ref$className, + defaultView = _ref.defaultView; + + var styles = (0, _reactcss2.default)((0, _merge2.default)({ + 'default': { + picker: { + width: width, + background: '#fff', + borderRadius: '2px', + boxShadow: '0 0 2px rgba(0,0,0,.3), 0 4px 8px rgba(0,0,0,.3)', + boxSizing: 'initial', + fontFamily: 'Menlo' + }, + saturation: { + width: '100%', + paddingBottom: '55%', + position: 'relative', + borderRadius: '2px 2px 0 0', + overflow: 'hidden' + }, + Saturation: { + radius: '2px 2px 0 0' + }, + body: { + padding: '16px 16px 12px' + }, + controls: { + display: 'flex' + }, + color: { + width: '32px' + }, + swatch: { + marginTop: '6px', + width: '16px', + height: '16px', + borderRadius: '8px', + position: 'relative', + overflow: 'hidden' + }, + active: { + absolute: '0px 0px 0px 0px', + borderRadius: '8px', + boxShadow: 'inset 0 0 0 1px rgba(0,0,0,.1)', + background: 'rgba(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ', ' + rgb.a + ')', + zIndex: '2' + }, + toggles: { + flex: '1' + }, + hue: { + height: '10px', + position: 'relative', + marginBottom: '8px' + }, + Hue: { + radius: '2px' + }, + alpha: { + height: '10px', + position: 'relative' + }, + Alpha: { + radius: '2px' + } + }, + 'disableAlpha': { + color: { + width: '22px' + }, + alpha: { + display: 'none' + }, + hue: { + marginBottom: '0px' + }, + swatch: { + width: '10px', + height: '10px', + marginTop: '0px' + } + } + }, passedStyles), { disableAlpha: disableAlpha }); + + return _react2.default.createElement( + 'div', + { style: styles.picker, className: 'chrome-picker ' + className }, + _react2.default.createElement( + 'div', + { style: styles.saturation }, + _react2.default.createElement(_common.Saturation, { + style: styles.Saturation, + hsl: hsl, + hsv: hsv, + pointer: _ChromePointerCircle2.default, + onChange: onChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.body }, + _react2.default.createElement( + 'div', + { style: styles.controls, className: 'flexbox-fix' }, + _react2.default.createElement( + 'div', + { style: styles.color }, + _react2.default.createElement( + 'div', + { style: styles.swatch }, + _react2.default.createElement('div', { style: styles.active }), + _react2.default.createElement(_common.Checkboard, { renderers: renderers }) + ) + ), + _react2.default.createElement( + 'div', + { style: styles.toggles }, + _react2.default.createElement( + 'div', + { style: styles.hue }, + _react2.default.createElement(_common.Hue, { + style: styles.Hue, + hsl: hsl, + pointer: _ChromePointer2.default, + onChange: onChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.alpha }, + _react2.default.createElement(_common.Alpha, { + style: styles.Alpha, + rgb: rgb, + hsl: hsl, + pointer: _ChromePointer2.default, + renderers: renderers, + onChange: onChange + }) + ) + ) + ), + _react2.default.createElement(_ChromeFields2.default, { + rgb: rgb, + hsl: hsl, + hex: hex, + view: defaultView, + onChange: onChange, + disableAlpha: disableAlpha + }) + ) + ); +}; + +Chrome.propTypes = { + width: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]), + disableAlpha: _propTypes2.default.bool, + styles: _propTypes2.default.object, + defaultView: _propTypes2.default.oneOf(["hex", "rgb", "hsl"]) +}; + +Chrome.defaultProps = { + width: 225, + disableAlpha: false, + styles: {} +}; + +exports.default = (0, _common.ColorWrap)(Chrome); +},{"../common":256,"./ChromeFields":243,"./ChromePointer":244,"./ChromePointerCircle":245,"lodash/merge":222,"prop-types":236,"react":"react","reactcss":301}],243:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ChromeFields = undefined; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _color = require('../../helpers/color'); + +var color = _interopRequireWildcard(_color); + +var _isUndefined = require('lodash/isUndefined'); + +var _isUndefined2 = _interopRequireDefault(_isUndefined); + +var _common = require('../common'); + +var _UnfoldMoreHorizontalIcon = require('@icons/material/UnfoldMoreHorizontalIcon'); + +var _UnfoldMoreHorizontalIcon2 = _interopRequireDefault(_UnfoldMoreHorizontalIcon); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /* eslint-disable react/no-did-mount-set-state, no-param-reassign */ + +var ChromeFields = exports.ChromeFields = function (_React$Component) { + _inherits(ChromeFields, _React$Component); + + function ChromeFields(props) { + _classCallCheck(this, ChromeFields); + + var _this = _possibleConstructorReturn(this, (ChromeFields.__proto__ || Object.getPrototypeOf(ChromeFields)).call(this)); + + _this.toggleViews = function () { + if (_this.state.view === 'hex') { + _this.setState({ view: 'rgb' }); + } else if (_this.state.view === 'rgb') { + _this.setState({ view: 'hsl' }); + } else if (_this.state.view === 'hsl') { + if (_this.props.hsl.a === 1) { + _this.setState({ view: 'hex' }); + } else { + _this.setState({ view: 'rgb' }); + } + } + }; + + _this.handleChange = function (data, e) { + if (data.hex) { + color.isValidHex(data.hex) && _this.props.onChange({ + hex: data.hex, + source: 'hex' + }, e); + } else if (data.r || data.g || data.b) { + _this.props.onChange({ + r: data.r || _this.props.rgb.r, + g: data.g || _this.props.rgb.g, + b: data.b || _this.props.rgb.b, + source: 'rgb' + }, e); + } else if (data.a) { + if (data.a < 0) { + data.a = 0; + } else if (data.a > 1) { + data.a = 1; + } + + _this.props.onChange({ + h: _this.props.hsl.h, + s: _this.props.hsl.s, + l: _this.props.hsl.l, + a: Math.round(data.a * 100) / 100, + source: 'rgb' + }, e); + } else if (data.h || data.s || data.l) { + // Remove any occurances of '%'. + if (typeof data.s === 'string' && data.s.includes('%')) { + data.s = data.s.replace('%', ''); + } + if (typeof data.l === 'string' && data.l.includes('%')) { + data.l = data.l.replace('%', ''); + } + + // We store HSL as a unit interval so we need to override the 1 input to 0.01 + if (data.s == 1) { + data.s = 0.01; + } else if (data.l == 1) { + data.l = 0.01; + } + + _this.props.onChange({ + h: data.h || _this.props.hsl.h, + s: Number(!(0, _isUndefined2.default)(data.s) ? data.s : _this.props.hsl.s), + l: Number(!(0, _isUndefined2.default)(data.l) ? data.l : _this.props.hsl.l), + source: 'hsl' + }, e); + } + }; + + _this.showHighlight = function (e) { + e.currentTarget.style.background = '#eee'; + }; + + _this.hideHighlight = function (e) { + e.currentTarget.style.background = 'transparent'; + }; + + if (props.hsl.a !== 1 && props.view === "hex") { + _this.state = { + view: "rgb" + }; + } else { + _this.state = { + view: props.view + }; + } + return _this; + } + + _createClass(ChromeFields, [{ + key: 'render', + value: function render() { + var _this2 = this; + + var styles = (0, _reactcss2.default)({ + 'default': { + wrap: { + paddingTop: '16px', + display: 'flex' + }, + fields: { + flex: '1', + display: 'flex', + marginLeft: '-6px' + }, + field: { + paddingLeft: '6px', + width: '100%' + }, + alpha: { + paddingLeft: '6px', + width: '100%' + }, + toggle: { + width: '32px', + textAlign: 'right', + position: 'relative' + }, + icon: { + marginRight: '-4px', + marginTop: '12px', + cursor: 'pointer', + position: 'relative' + }, + iconHighlight: { + position: 'absolute', + width: '24px', + height: '28px', + background: '#eee', + borderRadius: '4px', + top: '10px', + left: '12px', + display: 'none' + }, + input: { + fontSize: '11px', + color: '#333', + width: '100%', + borderRadius: '2px', + border: 'none', + boxShadow: 'inset 0 0 0 1px #dadada', + height: '21px', + textAlign: 'center' + }, + label: { + textTransform: 'uppercase', + fontSize: '11px', + lineHeight: '11px', + color: '#969696', + textAlign: 'center', + display: 'block', + marginTop: '12px' + }, + svg: { + fill: '#333', + width: '24px', + height: '24px', + border: '1px transparent solid', + borderRadius: '5px' + } + }, + 'disableAlpha': { + alpha: { + display: 'none' + } + } + }, this.props, this.state); + + var fields = void 0; + if (this.state.view === 'hex') { + fields = _react2.default.createElement( + 'div', + { style: styles.fields, className: 'flexbox-fix' }, + _react2.default.createElement( + 'div', + { style: styles.field }, + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input, label: styles.label }, + label: 'hex', value: this.props.hex, + onChange: this.handleChange + }) + ) + ); + } else if (this.state.view === 'rgb') { + fields = _react2.default.createElement( + 'div', + { style: styles.fields, className: 'flexbox-fix' }, + _react2.default.createElement( + 'div', + { style: styles.field }, + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input, label: styles.label }, + label: 'r', + value: this.props.rgb.r, + onChange: this.handleChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.field }, + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input, label: styles.label }, + label: 'g', + value: this.props.rgb.g, + onChange: this.handleChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.field }, + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input, label: styles.label }, + label: 'b', + value: this.props.rgb.b, + onChange: this.handleChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.alpha }, + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input, label: styles.label }, + label: 'a', + value: this.props.rgb.a, + arrowOffset: 0.01, + onChange: this.handleChange + }) + ) + ); + } else if (this.state.view === 'hsl') { + fields = _react2.default.createElement( + 'div', + { style: styles.fields, className: 'flexbox-fix' }, + _react2.default.createElement( + 'div', + { style: styles.field }, + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input, label: styles.label }, + label: 'h', + value: Math.round(this.props.hsl.h), + onChange: this.handleChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.field }, + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input, label: styles.label }, + label: 's', + value: Math.round(this.props.hsl.s * 100) + '%', + onChange: this.handleChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.field }, + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input, label: styles.label }, + label: 'l', + value: Math.round(this.props.hsl.l * 100) + '%', + onChange: this.handleChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.alpha }, + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input, label: styles.label }, + label: 'a', + value: this.props.hsl.a, + arrowOffset: 0.01, + onChange: this.handleChange + }) + ) + ); + } + + return _react2.default.createElement( + 'div', + { style: styles.wrap, className: 'flexbox-fix' }, + fields, + _react2.default.createElement( + 'div', + { style: styles.toggle }, + _react2.default.createElement( + 'div', + { style: styles.icon, onClick: this.toggleViews, ref: function ref(icon) { + return _this2.icon = icon; + } }, + _react2.default.createElement(_UnfoldMoreHorizontalIcon2.default, { + style: styles.svg, + onMouseOver: this.showHighlight, + onMouseEnter: this.showHighlight, + onMouseOut: this.hideHighlight + }) + ) + ) + ); + } + }], [{ + key: 'getDerivedStateFromProps', + value: function getDerivedStateFromProps(nextProps, state) { + if (nextProps.hsl.a !== 1 && state.view === 'hex') { + return { view: 'rgb' }; + } + return null; + } + }]); + + return ChromeFields; +}(_react2.default.Component); + +ChromeFields.defaultProps = { + view: "hex" +}; + +exports.default = ChromeFields; +},{"../../helpers/color":288,"../common":256,"@icons/material/UnfoldMoreHorizontalIcon":24,"lodash/isUndefined":217,"react":"react","reactcss":301}],244:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ChromePointer = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var ChromePointer = exports.ChromePointer = function ChromePointer() { + var styles = (0, _reactcss2.default)({ + 'default': { + picker: { + width: '12px', + height: '12px', + borderRadius: '6px', + transform: 'translate(-6px, -1px)', + backgroundColor: 'rgb(248, 248, 248)', + boxShadow: '0 1px 4px 0 rgba(0, 0, 0, 0.37)' + } + } + }); + + return _react2.default.createElement('div', { style: styles.picker }); +}; + +exports.default = ChromePointer; +},{"react":"react","reactcss":301}],245:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ChromePointerCircle = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var ChromePointerCircle = exports.ChromePointerCircle = function ChromePointerCircle() { + var styles = (0, _reactcss2.default)({ + 'default': { + picker: { + width: '12px', + height: '12px', + borderRadius: '6px', + boxShadow: 'inset 0 0 0 1px #fff', + transform: 'translate(-6px, -6px)' + } + } + }); + + return _react2.default.createElement('div', { style: styles.picker }); +}; + +exports.default = ChromePointerCircle; +},{"react":"react","reactcss":301}],246:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Circle = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _propTypes = require('prop-types'); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _map = require('lodash/map'); + +var _map2 = _interopRequireDefault(_map); + +var _merge = require('lodash/merge'); + +var _merge2 = _interopRequireDefault(_merge); + +var _materialColors = require('material-colors'); + +var material = _interopRequireWildcard(_materialColors); + +var _common = require('../common'); + +var _CircleSwatch = require('./CircleSwatch'); + +var _CircleSwatch2 = _interopRequireDefault(_CircleSwatch); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var Circle = exports.Circle = function Circle(_ref) { + var width = _ref.width, + onChange = _ref.onChange, + onSwatchHover = _ref.onSwatchHover, + colors = _ref.colors, + hex = _ref.hex, + circleSize = _ref.circleSize, + _ref$styles = _ref.styles, + passedStyles = _ref$styles === undefined ? {} : _ref$styles, + circleSpacing = _ref.circleSpacing, + _ref$className = _ref.className, + className = _ref$className === undefined ? '' : _ref$className; + + var styles = (0, _reactcss2.default)((0, _merge2.default)({ + 'default': { + card: { + width: width, + display: 'flex', + flexWrap: 'wrap', + marginRight: -circleSpacing, + marginBottom: -circleSpacing + } + } + }, passedStyles)); + + var handleChange = function handleChange(hexCode, e) { + return onChange({ hex: hexCode, source: 'hex' }, e); + }; + + return _react2.default.createElement( + 'div', + { style: styles.card, className: 'circle-picker ' + className }, + (0, _map2.default)(colors, function (c) { + return _react2.default.createElement(_CircleSwatch2.default, { + key: c, + color: c, + onClick: handleChange, + onSwatchHover: onSwatchHover, + active: hex === c.toLowerCase(), + circleSize: circleSize, + circleSpacing: circleSpacing + }); + }) + ); +}; + +Circle.propTypes = { + width: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]), + circleSize: _propTypes2.default.number, + circleSpacing: _propTypes2.default.number, + styles: _propTypes2.default.object +}; + +Circle.defaultProps = { + width: 252, + circleSize: 28, + circleSpacing: 14, + colors: [material.red['500'], material.pink['500'], material.purple['500'], material.deepPurple['500'], material.indigo['500'], material.blue['500'], material.lightBlue['500'], material.cyan['500'], material.teal['500'], material.green['500'], material.lightGreen['500'], material.lime['500'], material.yellow['500'], material.amber['500'], material.orange['500'], material.deepOrange['500'], material.brown['500'], material.blueGrey['500']], + styles: {} +}; + +exports.default = (0, _common.ColorWrap)(Circle); +},{"../common":256,"./CircleSwatch":247,"lodash/map":220,"lodash/merge":222,"material-colors":231,"prop-types":236,"react":"react","reactcss":301}],247:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.CircleSwatch = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _common = require('../common'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var CircleSwatch = exports.CircleSwatch = function CircleSwatch(_ref) { + var color = _ref.color, + onClick = _ref.onClick, + onSwatchHover = _ref.onSwatchHover, + hover = _ref.hover, + active = _ref.active, + circleSize = _ref.circleSize, + circleSpacing = _ref.circleSpacing; + + var styles = (0, _reactcss2.default)({ + 'default': { + swatch: { + width: circleSize, + height: circleSize, + marginRight: circleSpacing, + marginBottom: circleSpacing, + transform: 'scale(1)', + transition: '100ms transform ease' + }, + Swatch: { + borderRadius: '50%', + background: 'transparent', + boxShadow: 'inset 0 0 0 ' + (circleSize / 2 + 1) + 'px ' + color, + transition: '100ms box-shadow ease' + } + }, + 'hover': { + swatch: { + transform: 'scale(1.2)' + } + }, + 'active': { + Swatch: { + boxShadow: 'inset 0 0 0 3px ' + color + } + } + }, { hover: hover, active: active }); + + return _react2.default.createElement( + 'div', + { style: styles.swatch }, + _react2.default.createElement(_common.Swatch, { + style: styles.Swatch, + color: color, + onClick: onClick, + onHover: onSwatchHover, + focusStyle: { boxShadow: styles.Swatch.boxShadow + ', 0 0 5px ' + color } + }) + ); +}; + +CircleSwatch.defaultProps = { + circleSize: 28, + circleSpacing: 14 +}; + +exports.default = (0, _reactcss.handleHover)(CircleSwatch); +},{"../common":256,"react":"react","reactcss":301}],248:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Alpha = undefined; + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _alpha = require('../../helpers/alpha'); + +var alpha = _interopRequireWildcard(_alpha); + +var _Checkboard = require('./Checkboard'); + +var _Checkboard2 = _interopRequireDefault(_Checkboard); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var Alpha = exports.Alpha = function (_ref) { + _inherits(Alpha, _ref); + + function Alpha() { + var _ref2; + + var _temp, _this, _ret; + + _classCallCheck(this, Alpha); + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref2 = Alpha.__proto__ || Object.getPrototypeOf(Alpha)).call.apply(_ref2, [this].concat(args))), _this), _this.handleChange = function (e) { + var change = alpha.calculateChange(e, _this.props.hsl, _this.props.direction, _this.props.a, _this.container); + change && typeof _this.props.onChange === 'function' && _this.props.onChange(change, e); + }, _this.handleMouseDown = function (e) { + _this.handleChange(e); + window.addEventListener('mousemove', _this.handleChange); + window.addEventListener('mouseup', _this.handleMouseUp); + }, _this.handleMouseUp = function () { + _this.unbindEventListeners(); + }, _this.unbindEventListeners = function () { + window.removeEventListener('mousemove', _this.handleChange); + window.removeEventListener('mouseup', _this.handleMouseUp); + }, _temp), _possibleConstructorReturn(_this, _ret); + } + + _createClass(Alpha, [{ + key: 'componentWillUnmount', + value: function componentWillUnmount() { + this.unbindEventListeners(); + } + }, { + key: 'render', + value: function render() { + var _this2 = this; + + var rgb = this.props.rgb; + var styles = (0, _reactcss2.default)({ + 'default': { + alpha: { + absolute: '0px 0px 0px 0px', + borderRadius: this.props.radius + }, + checkboard: { + absolute: '0px 0px 0px 0px', + overflow: 'hidden', + borderRadius: this.props.radius + }, + gradient: { + absolute: '0px 0px 0px 0px', + background: 'linear-gradient(to right, rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ', 0) 0%,\n rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ', 1) 100%)', + boxShadow: this.props.shadow, + borderRadius: this.props.radius + }, + container: { + position: 'relative', + height: '100%', + margin: '0 3px' + }, + pointer: { + position: 'absolute', + left: rgb.a * 100 + '%' + }, + slider: { + width: '4px', + borderRadius: '1px', + height: '8px', + boxShadow: '0 0 2px rgba(0, 0, 0, .6)', + background: '#fff', + marginTop: '1px', + transform: 'translateX(-2px)' + } + }, + 'vertical': { + gradient: { + background: 'linear-gradient(to bottom, rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ', 0) 0%,\n rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ', 1) 100%)' + }, + pointer: { + left: 0, + top: rgb.a * 100 + '%' + } + }, + 'overwrite': _extends({}, this.props.style) + }, { + vertical: this.props.direction === 'vertical', + overwrite: true + }); + + return _react2.default.createElement( + 'div', + { style: styles.alpha }, + _react2.default.createElement( + 'div', + { style: styles.checkboard }, + _react2.default.createElement(_Checkboard2.default, { renderers: this.props.renderers }) + ), + _react2.default.createElement('div', { style: styles.gradient }), + _react2.default.createElement( + 'div', + { + style: styles.container, + ref: function ref(container) { + return _this2.container = container; + }, + onMouseDown: this.handleMouseDown, + onTouchMove: this.handleChange, + onTouchStart: this.handleChange + }, + _react2.default.createElement( + 'div', + { style: styles.pointer }, + this.props.pointer ? _react2.default.createElement(this.props.pointer, this.props) : _react2.default.createElement('div', { style: styles.slider }) + ) + ) + ); + } + }]); + + return Alpha; +}(_react.PureComponent || _react.Component); + +exports.default = Alpha; +},{"../../helpers/alpha":286,"./Checkboard":249,"react":"react","reactcss":301}],249:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Checkboard = undefined; + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _checkboard = require('../../helpers/checkboard'); + +var checkboard = _interopRequireWildcard(_checkboard); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var Checkboard = exports.Checkboard = function Checkboard(_ref) { + var white = _ref.white, + grey = _ref.grey, + size = _ref.size, + renderers = _ref.renderers, + borderRadius = _ref.borderRadius, + boxShadow = _ref.boxShadow, + children = _ref.children; + + var styles = (0, _reactcss2.default)({ + 'default': { + grid: { + borderRadius: borderRadius, + boxShadow: boxShadow, + absolute: '0px 0px 0px 0px', + background: 'url(' + checkboard.get(white, grey, size, renderers.canvas) + ') center left' + } + } + }); + return (0, _react.isValidElement)(children) ? _react2.default.cloneElement(children, _extends({}, children.props, { style: _extends({}, children.props.style, styles.grid) })) : _react2.default.createElement('div', { style: styles.grid }); +}; + +Checkboard.defaultProps = { + size: 8, + white: 'transparent', + grey: 'rgba(0,0,0,.08)', + renderers: {} +}; + +exports.default = Checkboard; +},{"../../helpers/checkboard":287,"react":"react","reactcss":301}],250:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ColorWrap = undefined; + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _debounce = require('lodash/debounce'); + +var _debounce2 = _interopRequireDefault(_debounce); + +var _color = require('../../helpers/color'); + +var color = _interopRequireWildcard(_color); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var ColorWrap = exports.ColorWrap = function ColorWrap(Picker) { + var ColorPicker = function (_ref) { + _inherits(ColorPicker, _ref); + + function ColorPicker(props) { + _classCallCheck(this, ColorPicker); + + var _this = _possibleConstructorReturn(this, (ColorPicker.__proto__ || Object.getPrototypeOf(ColorPicker)).call(this)); + + _this.handleChange = function (data, event) { + var isValidColor = color.simpleCheckForValidColor(data); + if (isValidColor) { + var colors = color.toState(data, data.h || _this.state.oldHue); + _this.setState(colors); + _this.props.onChangeComplete && _this.debounce(_this.props.onChangeComplete, colors, event); + _this.props.onChange && _this.props.onChange(colors, event); + } + }; + + _this.handleSwatchHover = function (data, event) { + var isValidColor = color.simpleCheckForValidColor(data); + if (isValidColor) { + var colors = color.toState(data, data.h || _this.state.oldHue); + _this.props.onSwatchHover && _this.props.onSwatchHover(colors, event); + } + }; + + _this.state = _extends({}, color.toState(props.color, 0)); + + _this.debounce = (0, _debounce2.default)(function (fn, data, event) { + fn(data, event); + }, 100); + return _this; + } + + _createClass(ColorPicker, [{ + key: 'render', + value: function render() { + var optionalEvents = {}; + if (this.props.onSwatchHover) { + optionalEvents.onSwatchHover = this.handleSwatchHover; + } + + return _react2.default.createElement(Picker, _extends({}, this.props, this.state, { + onChange: this.handleChange + }, optionalEvents)); + } + }], [{ + key: 'getDerivedStateFromProps', + value: function getDerivedStateFromProps(nextProps, state) { + return _extends({}, color.toState(nextProps.color, state.oldHue)); + } + }]); + + return ColorPicker; + }(_react.PureComponent || _react.Component); + + ColorPicker.propTypes = _extends({}, Picker.propTypes); + + ColorPicker.defaultProps = _extends({}, Picker.defaultProps, { + color: { + h: 250, + s: 0.50, + l: 0.20, + a: 1 + } + }); + + return ColorPicker; +}; + +exports.default = ColorWrap; +},{"../../helpers/color":288,"lodash/debounce":194,"react":"react"}],251:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.EditableInput = undefined; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var DEFAULT_ARROW_OFFSET = 1; + +var UP_KEY_CODE = 38; +var DOWN_KEY_CODE = 40; +var VALID_KEY_CODES = [UP_KEY_CODE, DOWN_KEY_CODE]; +var isValidKeyCode = function isValidKeyCode(keyCode) { + return VALID_KEY_CODES.indexOf(keyCode) > -1; +}; +var getNumberValue = function getNumberValue(value) { + return Number(String(value).replace(/%/g, '')); +}; + +var idCounter = 1; + +var EditableInput = exports.EditableInput = function (_ref) { + _inherits(EditableInput, _ref); + + function EditableInput(props) { + _classCallCheck(this, EditableInput); + + var _this = _possibleConstructorReturn(this, (EditableInput.__proto__ || Object.getPrototypeOf(EditableInput)).call(this)); + + _this.handleBlur = function () { + if (_this.state.blurValue) { + _this.setState({ value: _this.state.blurValue, blurValue: null }); + } + }; + + _this.handleChange = function (e) { + _this.setUpdatedValue(e.target.value, e); + }; + + _this.handleKeyDown = function (e) { + // In case `e.target.value` is a percentage remove the `%` character + // and update accordingly with a percentage + // https://github.com/casesandberg/react-color/issues/383 + var value = getNumberValue(e.target.value); + if (!isNaN(value) && isValidKeyCode(e.keyCode)) { + var offset = _this.getArrowOffset(); + var updatedValue = e.keyCode === UP_KEY_CODE ? value + offset : value - offset; + + _this.setUpdatedValue(updatedValue, e); + } + }; + + _this.handleDrag = function (e) { + if (_this.props.dragLabel) { + var newValue = Math.round(_this.props.value + e.movementX); + if (newValue >= 0 && newValue <= _this.props.dragMax) { + _this.props.onChange && _this.props.onChange(_this.getValueObjectWithLabel(newValue), e); + } + } + }; + + _this.handleMouseDown = function (e) { + if (_this.props.dragLabel) { + e.preventDefault(); + _this.handleDrag(e); + window.addEventListener('mousemove', _this.handleDrag); + window.addEventListener('mouseup', _this.handleMouseUp); + } + }; + + _this.handleMouseUp = function () { + _this.unbindEventListeners(); + }; + + _this.unbindEventListeners = function () { + window.removeEventListener('mousemove', _this.handleDrag); + window.removeEventListener('mouseup', _this.handleMouseUp); + }; + + _this.state = { + value: String(props.value).toUpperCase(), + blurValue: String(props.value).toUpperCase() + }; + + _this.inputId = 'rc-editable-input-' + idCounter++; + return _this; + } + + _createClass(EditableInput, [{ + key: 'componentDidUpdate', + value: function componentDidUpdate(prevProps, prevState) { + if (this.props.value !== this.state.value && (prevProps.value !== this.props.value || prevState.value !== this.state.value)) { + if (this.input === document.activeElement) { + this.setState({ blurValue: String(this.props.value).toUpperCase() }); + } else { + this.setState({ value: String(this.props.value).toUpperCase(), blurValue: !this.state.blurValue && String(this.props.value).toUpperCase() }); + } + } + } + }, { + key: 'componentWillUnmount', + value: function componentWillUnmount() { + this.unbindEventListeners(); + } + }, { + key: 'getValueObjectWithLabel', + value: function getValueObjectWithLabel(value) { + return _defineProperty({}, this.props.label, value); + } + }, { + key: 'getArrowOffset', + value: function getArrowOffset() { + return this.props.arrowOffset || DEFAULT_ARROW_OFFSET; + } + }, { + key: 'setUpdatedValue', + value: function setUpdatedValue(value, e) { + var onChangeValue = this.props.label ? this.getValueObjectWithLabel(value) : value; + this.props.onChange && this.props.onChange(onChangeValue, e); + + this.setState({ value: value }); + } + }, { + key: 'render', + value: function render() { + var _this2 = this; + + var styles = (0, _reactcss2.default)({ + 'default': { + wrap: { + position: 'relative' + } + }, + 'user-override': { + wrap: this.props.style && this.props.style.wrap ? this.props.style.wrap : {}, + input: this.props.style && this.props.style.input ? this.props.style.input : {}, + label: this.props.style && this.props.style.label ? this.props.style.label : {} + }, + 'dragLabel-true': { + label: { + cursor: 'ew-resize' + } + } + }, { + 'user-override': true + }, this.props); + + return _react2.default.createElement( + 'div', + { style: styles.wrap }, + _react2.default.createElement('input', { + id: this.inputId, + style: styles.input, + ref: function ref(input) { + return _this2.input = input; + }, + value: this.state.value, + onKeyDown: this.handleKeyDown, + onChange: this.handleChange, + onBlur: this.handleBlur, + placeholder: this.props.placeholder, + spellCheck: 'false' + }), + this.props.label && !this.props.hideLabel ? _react2.default.createElement( + 'label', + { + htmlFor: this.inputId, + style: styles.label, + onMouseDown: this.handleMouseDown + }, + this.props.label + ) : null + ); + } + }]); + + return EditableInput; +}(_react.PureComponent || _react.Component); + +exports.default = EditableInput; +},{"react":"react","reactcss":301}],252:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Hue = undefined; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _hue = require('../../helpers/hue'); + +var hue = _interopRequireWildcard(_hue); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var Hue = exports.Hue = function (_ref) { + _inherits(Hue, _ref); + + function Hue() { + var _ref2; + + var _temp, _this, _ret; + + _classCallCheck(this, Hue); + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref2 = Hue.__proto__ || Object.getPrototypeOf(Hue)).call.apply(_ref2, [this].concat(args))), _this), _this.handleChange = function (e) { + var change = hue.calculateChange(e, _this.props.direction, _this.props.hsl, _this.container); + change && typeof _this.props.onChange === 'function' && _this.props.onChange(change, e); + }, _this.handleMouseDown = function (e) { + _this.handleChange(e); + window.addEventListener('mousemove', _this.handleChange); + window.addEventListener('mouseup', _this.handleMouseUp); + }, _this.handleMouseUp = function () { + _this.unbindEventListeners(); + }, _temp), _possibleConstructorReturn(_this, _ret); + } + + _createClass(Hue, [{ + key: 'componentWillUnmount', + value: function componentWillUnmount() { + this.unbindEventListeners(); + } + }, { + key: 'unbindEventListeners', + value: function unbindEventListeners() { + window.removeEventListener('mousemove', this.handleChange); + window.removeEventListener('mouseup', this.handleMouseUp); + } + }, { + key: 'render', + value: function render() { + var _this2 = this; + + var _props$direction = this.props.direction, + direction = _props$direction === undefined ? 'horizontal' : _props$direction; + + + var styles = (0, _reactcss2.default)({ + 'default': { + hue: { + absolute: '0px 0px 0px 0px', + borderRadius: this.props.radius, + boxShadow: this.props.shadow + }, + container: { + padding: '0 2px', + position: 'relative', + height: '100%', + borderRadius: this.props.radius + }, + pointer: { + position: 'absolute', + left: this.props.hsl.h * 100 / 360 + '%' + }, + slider: { + marginTop: '1px', + width: '4px', + borderRadius: '1px', + height: '8px', + boxShadow: '0 0 2px rgba(0, 0, 0, .6)', + background: '#fff', + transform: 'translateX(-2px)' + } + }, + 'vertical': { + pointer: { + left: '0px', + top: -(this.props.hsl.h * 100 / 360) + 100 + '%' + } + } + }, { vertical: direction === 'vertical' }); + + return _react2.default.createElement( + 'div', + { style: styles.hue }, + _react2.default.createElement( + 'div', + { + className: 'hue-' + direction, + style: styles.container, + ref: function ref(container) { + return _this2.container = container; + }, + onMouseDown: this.handleMouseDown, + onTouchMove: this.handleChange, + onTouchStart: this.handleChange + }, + _react2.default.createElement( + 'style', + null, + '\n .hue-horizontal {\n background: linear-gradient(to right, #f00 0%, #ff0 17%, #0f0\n 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);\n background: -webkit-linear-gradient(to right, #f00 0%, #ff0\n 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);\n }\n\n .hue-vertical {\n background: linear-gradient(to top, #f00 0%, #ff0 17%, #0f0 33%,\n #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);\n background: -webkit-linear-gradient(to top, #f00 0%, #ff0 17%,\n #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);\n }\n ' + ), + _react2.default.createElement( + 'div', + { style: styles.pointer }, + this.props.pointer ? _react2.default.createElement(this.props.pointer, this.props) : _react2.default.createElement('div', { style: styles.slider }) + ) + ) + ); + } + }]); + + return Hue; +}(_react.PureComponent || _react.Component); + +exports.default = Hue; +},{"../../helpers/hue":289,"react":"react","reactcss":301}],253:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Raised = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _propTypes = require('prop-types'); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _merge = require('lodash/merge'); + +var _merge2 = _interopRequireDefault(_merge); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var Raised = exports.Raised = function Raised(_ref) { + var zDepth = _ref.zDepth, + radius = _ref.radius, + background = _ref.background, + children = _ref.children, + _ref$styles = _ref.styles, + passedStyles = _ref$styles === undefined ? {} : _ref$styles; + + var styles = (0, _reactcss2.default)((0, _merge2.default)({ + 'default': { + wrap: { + position: 'relative', + display: 'inline-block' + }, + content: { + position: 'relative' + }, + bg: { + absolute: '0px 0px 0px 0px', + boxShadow: '0 ' + zDepth + 'px ' + zDepth * 4 + 'px rgba(0,0,0,.24)', + borderRadius: radius, + background: background + } + }, + 'zDepth-0': { + bg: { + boxShadow: 'none' + } + }, + + 'zDepth-1': { + bg: { + boxShadow: '0 2px 10px rgba(0,0,0,.12), 0 2px 5px rgba(0,0,0,.16)' + } + }, + 'zDepth-2': { + bg: { + boxShadow: '0 6px 20px rgba(0,0,0,.19), 0 8px 17px rgba(0,0,0,.2)' + } + }, + 'zDepth-3': { + bg: { + boxShadow: '0 17px 50px rgba(0,0,0,.19), 0 12px 15px rgba(0,0,0,.24)' + } + }, + 'zDepth-4': { + bg: { + boxShadow: '0 25px 55px rgba(0,0,0,.21), 0 16px 28px rgba(0,0,0,.22)' + } + }, + 'zDepth-5': { + bg: { + boxShadow: '0 40px 77px rgba(0,0,0,.22), 0 27px 24px rgba(0,0,0,.2)' + } + }, + 'square': { + bg: { + borderRadius: '0' + } + }, + 'circle': { + bg: { + borderRadius: '50%' + } + } + }, passedStyles), { 'zDepth-1': zDepth === 1 }); + + return _react2.default.createElement( + 'div', + { style: styles.wrap }, + _react2.default.createElement('div', { style: styles.bg }), + _react2.default.createElement( + 'div', + { style: styles.content }, + children + ) + ); +}; + +Raised.propTypes = { + background: _propTypes2.default.string, + zDepth: _propTypes2.default.oneOf([0, 1, 2, 3, 4, 5]), + radius: _propTypes2.default.number, + styles: _propTypes2.default.object +}; + +Raised.defaultProps = { + background: '#fff', + zDepth: 1, + radius: 2, + styles: {} +}; + +exports.default = Raised; +},{"lodash/merge":222,"prop-types":236,"react":"react","reactcss":301}],254:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Saturation = undefined; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _throttle = require('lodash/throttle'); + +var _throttle2 = _interopRequireDefault(_throttle); + +var _saturation = require('../../helpers/saturation'); + +var saturation = _interopRequireWildcard(_saturation); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var Saturation = exports.Saturation = function (_ref) { + _inherits(Saturation, _ref); + + function Saturation(props) { + _classCallCheck(this, Saturation); + + var _this = _possibleConstructorReturn(this, (Saturation.__proto__ || Object.getPrototypeOf(Saturation)).call(this, props)); + + _this.handleChange = function (e) { + typeof _this.props.onChange === 'function' && _this.throttle(_this.props.onChange, saturation.calculateChange(e, _this.props.hsl, _this.container), e); + }; + + _this.handleMouseDown = function (e) { + _this.handleChange(e); + var renderWindow = _this.getContainerRenderWindow(); + renderWindow.addEventListener('mousemove', _this.handleChange); + renderWindow.addEventListener('mouseup', _this.handleMouseUp); + }; + + _this.handleMouseUp = function () { + _this.unbindEventListeners(); + }; + + _this.throttle = (0, _throttle2.default)(function (fn, data, e) { + fn(data, e); + }, 50); + return _this; + } + + _createClass(Saturation, [{ + key: 'componentWillUnmount', + value: function componentWillUnmount() { + this.throttle.cancel(); + this.unbindEventListeners(); + } + }, { + key: 'getContainerRenderWindow', + value: function getContainerRenderWindow() { + var container = this.container; + + var renderWindow = window; + while (!renderWindow.document.contains(container) && renderWindow.parent !== renderWindow) { + renderWindow = renderWindow.parent; + } + return renderWindow; + } + }, { + key: 'unbindEventListeners', + value: function unbindEventListeners() { + var renderWindow = this.getContainerRenderWindow(); + renderWindow.removeEventListener('mousemove', this.handleChange); + renderWindow.removeEventListener('mouseup', this.handleMouseUp); + } + }, { + key: 'render', + value: function render() { + var _this2 = this; + + var _ref2 = this.props.style || {}, + color = _ref2.color, + white = _ref2.white, + black = _ref2.black, + pointer = _ref2.pointer, + circle = _ref2.circle; + + var styles = (0, _reactcss2.default)({ + 'default': { + color: { + absolute: '0px 0px 0px 0px', + background: 'hsl(' + this.props.hsl.h + ',100%, 50%)', + borderRadius: this.props.radius + }, + white: { + absolute: '0px 0px 0px 0px', + borderRadius: this.props.radius + }, + black: { + absolute: '0px 0px 0px 0px', + boxShadow: this.props.shadow, + borderRadius: this.props.radius + }, + pointer: { + position: 'absolute', + top: -(this.props.hsv.v * 100) + 100 + '%', + left: this.props.hsv.s * 100 + '%', + cursor: 'default' + }, + circle: { + width: '4px', + height: '4px', + boxShadow: '0 0 0 1.5px #fff, inset 0 0 1px 1px rgba(0,0,0,.3),\n 0 0 1px 2px rgba(0,0,0,.4)', + borderRadius: '50%', + cursor: 'hand', + transform: 'translate(-2px, -2px)' + } + }, + 'custom': { + color: color, + white: white, + black: black, + pointer: pointer, + circle: circle + } + }, { 'custom': !!this.props.style }); + + return _react2.default.createElement( + 'div', + { + style: styles.color, + ref: function ref(container) { + return _this2.container = container; + }, + onMouseDown: this.handleMouseDown, + onTouchMove: this.handleChange, + onTouchStart: this.handleChange + }, + _react2.default.createElement( + 'style', + null, + '\n .saturation-white {\n background: -webkit-linear-gradient(to right, #fff, rgba(255,255,255,0));\n background: linear-gradient(to right, #fff, rgba(255,255,255,0));\n }\n .saturation-black {\n background: -webkit-linear-gradient(to top, #000, rgba(0,0,0,0));\n background: linear-gradient(to top, #000, rgba(0,0,0,0));\n }\n ' + ), + _react2.default.createElement( + 'div', + { style: styles.white, className: 'saturation-white' }, + _react2.default.createElement('div', { style: styles.black, className: 'saturation-black' }), + _react2.default.createElement( + 'div', + { style: styles.pointer }, + this.props.pointer ? _react2.default.createElement(this.props.pointer, this.props) : _react2.default.createElement('div', { style: styles.circle }) + ) + ) + ); + } + }]); + + return Saturation; +}(_react.PureComponent || _react.Component); + +exports.default = Saturation; +},{"../../helpers/saturation":291,"lodash/throttle":227,"react":"react","reactcss":301}],255:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Swatch = undefined; + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _interaction = require('../../helpers/interaction'); + +var _Checkboard = require('./Checkboard'); + +var _Checkboard2 = _interopRequireDefault(_Checkboard); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var ENTER = 13; + +var Swatch = exports.Swatch = function Swatch(_ref) { + var color = _ref.color, + style = _ref.style, + _ref$onClick = _ref.onClick, + onClick = _ref$onClick === undefined ? function () {} : _ref$onClick, + onHover = _ref.onHover, + _ref$title = _ref.title, + title = _ref$title === undefined ? color : _ref$title, + children = _ref.children, + focus = _ref.focus, + _ref$focusStyle = _ref.focusStyle, + focusStyle = _ref$focusStyle === undefined ? {} : _ref$focusStyle; + + var transparent = color === 'transparent'; + var styles = (0, _reactcss2.default)({ + default: { + swatch: _extends({ + background: color, + height: '100%', + width: '100%', + cursor: 'pointer', + position: 'relative', + outline: 'none' + }, style, focus ? focusStyle : {}) + } + }); + + var handleClick = function handleClick(e) { + return onClick(color, e); + }; + var handleKeyDown = function handleKeyDown(e) { + return e.keyCode === ENTER && onClick(color, e); + }; + var handleHover = function handleHover(e) { + return onHover(color, e); + }; + + var optionalEvents = {}; + if (onHover) { + optionalEvents.onMouseOver = handleHover; + } + + return _react2.default.createElement( + 'div', + _extends({ + style: styles.swatch, + onClick: handleClick, + title: title, + tabIndex: 0, + onKeyDown: handleKeyDown + }, optionalEvents), + children, + transparent && _react2.default.createElement(_Checkboard2.default, { + borderRadius: styles.swatch.borderRadius, + boxShadow: 'inset 0 0 0 1px rgba(0,0,0,0.1)' + }) + ); +}; + +exports.default = (0, _interaction.handleFocus)(Swatch); +},{"../../helpers/interaction":290,"./Checkboard":249,"react":"react","reactcss":301}],256:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _Alpha = require('./Alpha'); + +Object.defineProperty(exports, 'Alpha', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Alpha).default; + } +}); + +var _Checkboard = require('./Checkboard'); + +Object.defineProperty(exports, 'Checkboard', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Checkboard).default; + } +}); + +var _EditableInput = require('./EditableInput'); + +Object.defineProperty(exports, 'EditableInput', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_EditableInput).default; + } +}); + +var _Hue = require('./Hue'); + +Object.defineProperty(exports, 'Hue', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Hue).default; + } +}); + +var _Raised = require('./Raised'); + +Object.defineProperty(exports, 'Raised', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Raised).default; + } +}); + +var _Saturation = require('./Saturation'); + +Object.defineProperty(exports, 'Saturation', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Saturation).default; + } +}); + +var _ColorWrap = require('./ColorWrap'); + +Object.defineProperty(exports, 'ColorWrap', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_ColorWrap).default; + } +}); + +var _Swatch = require('./Swatch'); + +Object.defineProperty(exports, 'Swatch', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Swatch).default; + } +}); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +},{"./Alpha":248,"./Checkboard":249,"./ColorWrap":250,"./EditableInput":251,"./Hue":252,"./Raised":253,"./Saturation":254,"./Swatch":255}],257:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Compact = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _propTypes = require('prop-types'); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _map = require('lodash/map'); + +var _map2 = _interopRequireDefault(_map); + +var _merge = require('lodash/merge'); + +var _merge2 = _interopRequireDefault(_merge); + +var _color = require('../../helpers/color'); + +var color = _interopRequireWildcard(_color); + +var _common = require('../common'); + +var _CompactColor = require('./CompactColor'); + +var _CompactColor2 = _interopRequireDefault(_CompactColor); + +var _CompactFields = require('./CompactFields'); + +var _CompactFields2 = _interopRequireDefault(_CompactFields); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var Compact = exports.Compact = function Compact(_ref) { + var onChange = _ref.onChange, + onSwatchHover = _ref.onSwatchHover, + colors = _ref.colors, + hex = _ref.hex, + rgb = _ref.rgb, + _ref$styles = _ref.styles, + passedStyles = _ref$styles === undefined ? {} : _ref$styles, + _ref$className = _ref.className, + className = _ref$className === undefined ? '' : _ref$className; + + var styles = (0, _reactcss2.default)((0, _merge2.default)({ + 'default': { + Compact: { + background: '#f6f6f6', + radius: '4px' + }, + compact: { + paddingTop: '5px', + paddingLeft: '5px', + boxSizing: 'initial', + width: '240px' + }, + clear: { + clear: 'both' + } + } + }, passedStyles)); + + var handleChange = function handleChange(data, e) { + if (data.hex) { + color.isValidHex(data.hex) && onChange({ + hex: data.hex, + source: 'hex' + }, e); + } else { + onChange(data, e); + } + }; + + return _react2.default.createElement( + _common.Raised, + { style: styles.Compact, styles: passedStyles }, + _react2.default.createElement( + 'div', + { style: styles.compact, className: 'compact-picker ' + className }, + _react2.default.createElement( + 'div', + null, + (0, _map2.default)(colors, function (c) { + return _react2.default.createElement(_CompactColor2.default, { + key: c, + color: c, + active: c.toLowerCase() === hex, + onClick: handleChange, + onSwatchHover: onSwatchHover + }); + }), + _react2.default.createElement('div', { style: styles.clear }) + ), + _react2.default.createElement(_CompactFields2.default, { hex: hex, rgb: rgb, onChange: handleChange }) + ) + ); +}; + +Compact.propTypes = { + colors: _propTypes2.default.arrayOf(_propTypes2.default.string), + styles: _propTypes2.default.object +}; + +Compact.defaultProps = { + colors: ['#4D4D4D', '#999999', '#FFFFFF', '#F44E3B', '#FE9200', '#FCDC00', '#DBDF00', '#A4DD00', '#68CCCA', '#73D8FF', '#AEA1FF', '#FDA1FF', '#333333', '#808080', '#cccccc', '#D33115', '#E27300', '#FCC400', '#B0BC00', '#68BC00', '#16A5A5', '#009CE0', '#7B64FF', '#FA28FF', '#000000', '#666666', '#B3B3B3', '#9F0500', '#C45100', '#FB9E00', '#808900', '#194D33', '#0C797D', '#0062B1', '#653294', '#AB149E'], + styles: {} +}; + +exports.default = (0, _common.ColorWrap)(Compact); +},{"../../helpers/color":288,"../common":256,"./CompactColor":258,"./CompactFields":259,"lodash/map":220,"lodash/merge":222,"prop-types":236,"react":"react","reactcss":301}],258:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.CompactColor = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _color = require('../../helpers/color'); + +var colorUtils = _interopRequireWildcard(_color); + +var _common = require('../common'); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var CompactColor = exports.CompactColor = function CompactColor(_ref) { + var color = _ref.color, + _ref$onClick = _ref.onClick, + onClick = _ref$onClick === undefined ? function () {} : _ref$onClick, + onSwatchHover = _ref.onSwatchHover, + active = _ref.active; + + var styles = (0, _reactcss2.default)({ + 'default': { + color: { + background: color, + width: '15px', + height: '15px', + float: 'left', + marginRight: '5px', + marginBottom: '5px', + position: 'relative', + cursor: 'pointer' + }, + dot: { + absolute: '5px 5px 5px 5px', + background: colorUtils.getContrastingColor(color), + borderRadius: '50%', + opacity: '0' + } + }, + 'active': { + dot: { + opacity: '1' + } + }, + 'color-#FFFFFF': { + color: { + boxShadow: 'inset 0 0 0 1px #ddd' + }, + dot: { + background: '#000' + } + }, + 'transparent': { + dot: { + background: '#000' + } + } + }, { active: active, 'color-#FFFFFF': color === '#FFFFFF', 'transparent': color === 'transparent' }); + + return _react2.default.createElement( + _common.Swatch, + { + style: styles.color, + color: color, + onClick: onClick, + onHover: onSwatchHover, + focusStyle: { boxShadow: '0 0 4px ' + color } + }, + _react2.default.createElement('div', { style: styles.dot }) + ); +}; + +exports.default = CompactColor; +},{"../../helpers/color":288,"../common":256,"react":"react","reactcss":301}],259:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.CompactFields = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _common = require('../common'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var CompactFields = exports.CompactFields = function CompactFields(_ref) { + var hex = _ref.hex, + rgb = _ref.rgb, + onChange = _ref.onChange; + + var styles = (0, _reactcss2.default)({ + 'default': { + fields: { + display: 'flex', + paddingBottom: '6px', + paddingRight: '5px', + position: 'relative' + }, + active: { + position: 'absolute', + top: '6px', + left: '5px', + height: '9px', + width: '9px', + background: hex + }, + HEXwrap: { + flex: '6', + position: 'relative' + }, + HEXinput: { + width: '80%', + padding: '0px', + paddingLeft: '20%', + border: 'none', + outline: 'none', + background: 'none', + fontSize: '12px', + color: '#333', + height: '16px' + }, + HEXlabel: { + display: 'none' + }, + RGBwrap: { + flex: '3', + position: 'relative' + }, + RGBinput: { + width: '70%', + padding: '0px', + paddingLeft: '30%', + border: 'none', + outline: 'none', + background: 'none', + fontSize: '12px', + color: '#333', + height: '16px' + }, + RGBlabel: { + position: 'absolute', + top: '3px', + left: '0px', + lineHeight: '16px', + textTransform: 'uppercase', + fontSize: '12px', + color: '#999' + } + } + }); + + var handleChange = function handleChange(data, e) { + if (data.r || data.g || data.b) { + onChange({ + r: data.r || rgb.r, + g: data.g || rgb.g, + b: data.b || rgb.b, + source: 'rgb' + }, e); + } else { + onChange({ + hex: data.hex, + source: 'hex' + }, e); + } + }; + + return _react2.default.createElement( + 'div', + { style: styles.fields, className: 'flexbox-fix' }, + _react2.default.createElement('div', { style: styles.active }), + _react2.default.createElement(_common.EditableInput, { + style: { wrap: styles.HEXwrap, input: styles.HEXinput, label: styles.HEXlabel }, + label: 'hex', + value: hex, + onChange: handleChange + }), + _react2.default.createElement(_common.EditableInput, { + style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel }, + label: 'r', + value: rgb.r, + onChange: handleChange + }), + _react2.default.createElement(_common.EditableInput, { + style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel }, + label: 'g', + value: rgb.g, + onChange: handleChange + }), + _react2.default.createElement(_common.EditableInput, { + style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel }, + label: 'b', + value: rgb.b, + onChange: handleChange + }) + ); +}; + +exports.default = CompactFields; +},{"../common":256,"react":"react","reactcss":301}],260:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Github = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _propTypes = require('prop-types'); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _map = require('lodash/map'); + +var _map2 = _interopRequireDefault(_map); + +var _merge = require('lodash/merge'); + +var _merge2 = _interopRequireDefault(_merge); + +var _common = require('../common'); + +var _GithubSwatch = require('./GithubSwatch'); + +var _GithubSwatch2 = _interopRequireDefault(_GithubSwatch); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var Github = exports.Github = function Github(_ref) { + var width = _ref.width, + colors = _ref.colors, + onChange = _ref.onChange, + onSwatchHover = _ref.onSwatchHover, + triangle = _ref.triangle, + _ref$styles = _ref.styles, + passedStyles = _ref$styles === undefined ? {} : _ref$styles, + _ref$className = _ref.className, + className = _ref$className === undefined ? '' : _ref$className; + + var styles = (0, _reactcss2.default)((0, _merge2.default)({ + 'default': { + card: { + width: width, + background: '#fff', + border: '1px solid rgba(0,0,0,0.2)', + boxShadow: '0 3px 12px rgba(0,0,0,0.15)', + borderRadius: '4px', + position: 'relative', + padding: '5px', + display: 'flex', + flexWrap: 'wrap' + }, + triangle: { + position: 'absolute', + border: '7px solid transparent', + borderBottomColor: '#fff' + }, + triangleShadow: { + position: 'absolute', + border: '8px solid transparent', + borderBottomColor: 'rgba(0,0,0,0.15)' + } + }, + 'hide-triangle': { + triangle: { + display: 'none' + }, + triangleShadow: { + display: 'none' + } + }, + 'top-left-triangle': { + triangle: { + top: '-14px', + left: '10px' + }, + triangleShadow: { + top: '-16px', + left: '9px' + } + }, + 'top-right-triangle': { + triangle: { + top: '-14px', + right: '10px' + }, + triangleShadow: { + top: '-16px', + right: '9px' + } + }, + 'bottom-left-triangle': { + triangle: { + top: '35px', + left: '10px', + transform: 'rotate(180deg)' + }, + triangleShadow: { + top: '37px', + left: '9px', + transform: 'rotate(180deg)' + } + }, + 'bottom-right-triangle': { + triangle: { + top: '35px', + right: '10px', + transform: 'rotate(180deg)' + }, + triangleShadow: { + top: '37px', + right: '9px', + transform: 'rotate(180deg)' + } + } + }, passedStyles), { + 'hide-triangle': triangle === 'hide', + 'top-left-triangle': triangle === 'top-left', + 'top-right-triangle': triangle === 'top-right', + 'bottom-left-triangle': triangle === 'bottom-left', + 'bottom-right-triangle': triangle === 'bottom-right' + }); + + var handleChange = function handleChange(hex, e) { + return onChange({ hex: hex, source: 'hex' }, e); + }; + + return _react2.default.createElement( + 'div', + { style: styles.card, className: 'github-picker ' + className }, + _react2.default.createElement('div', { style: styles.triangleShadow }), + _react2.default.createElement('div', { style: styles.triangle }), + (0, _map2.default)(colors, function (c) { + return _react2.default.createElement(_GithubSwatch2.default, { + color: c, + key: c, + onClick: handleChange, + onSwatchHover: onSwatchHover + }); + }) + ); +}; + +Github.propTypes = { + width: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]), + colors: _propTypes2.default.arrayOf(_propTypes2.default.string), + triangle: _propTypes2.default.oneOf(['hide', 'top-left', 'top-right', 'bottom-left', 'bottom-right']), + styles: _propTypes2.default.object +}; + +Github.defaultProps = { + width: 200, + colors: ['#B80000', '#DB3E00', '#FCCB00', '#008B02', '#006B76', '#1273DE', '#004DCF', '#5300EB', '#EB9694', '#FAD0C3', '#FEF3BD', '#C1E1C5', '#BEDADC', '#C4DEF6', '#BED3F3', '#D4C4FB'], + triangle: 'top-left', + styles: {} +}; + +exports.default = (0, _common.ColorWrap)(Github); +},{"../common":256,"./GithubSwatch":261,"lodash/map":220,"lodash/merge":222,"prop-types":236,"react":"react","reactcss":301}],261:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.GithubSwatch = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _common = require('../common'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var GithubSwatch = exports.GithubSwatch = function GithubSwatch(_ref) { + var hover = _ref.hover, + color = _ref.color, + onClick = _ref.onClick, + onSwatchHover = _ref.onSwatchHover; + + var hoverSwatch = { + position: 'relative', + zIndex: '2', + outline: '2px solid #fff', + boxShadow: '0 0 5px 2px rgba(0,0,0,0.25)' + }; + + var styles = (0, _reactcss2.default)({ + 'default': { + swatch: { + width: '25px', + height: '25px', + fontSize: '0' + } + }, + 'hover': { + swatch: hoverSwatch + } + }, { hover: hover }); + + return _react2.default.createElement( + 'div', + { style: styles.swatch }, + _react2.default.createElement(_common.Swatch, { + color: color, + onClick: onClick, + onHover: onSwatchHover, + focusStyle: hoverSwatch + }) + ); +}; + +exports.default = (0, _reactcss.handleHover)(GithubSwatch); +},{"../common":256,"react":"react","reactcss":301}],262:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Google = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _propTypes = require('prop-types'); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _merge = require('lodash/merge'); + +var _merge2 = _interopRequireDefault(_merge); + +var _common = require('../common'); + +var _GooglePointerCircle = require('./GooglePointerCircle'); + +var _GooglePointerCircle2 = _interopRequireDefault(_GooglePointerCircle); + +var _GooglePointer = require('./GooglePointer'); + +var _GooglePointer2 = _interopRequireDefault(_GooglePointer); + +var _GoogleFields = require('./GoogleFields'); + +var _GoogleFields2 = _interopRequireDefault(_GoogleFields); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var Google = exports.Google = function Google(_ref) { + var width = _ref.width, + onChange = _ref.onChange, + rgb = _ref.rgb, + hsl = _ref.hsl, + hsv = _ref.hsv, + hex = _ref.hex, + header = _ref.header, + _ref$styles = _ref.styles, + passedStyles = _ref$styles === undefined ? {} : _ref$styles, + _ref$className = _ref.className, + className = _ref$className === undefined ? '' : _ref$className; + + var styles = (0, _reactcss2.default)((0, _merge2.default)({ + 'default': { + picker: { + width: width, + background: '#fff', + border: '1px solid #dfe1e5', + boxSizing: 'initial', + display: 'flex', + flexWrap: 'wrap', + borderRadius: '8px 8px 0px 0px' + }, + head: { + height: '57px', + width: '100%', + paddingTop: '16px', + paddingBottom: '16px', + paddingLeft: '16px', + fontSize: '20px', + boxSizing: 'border-box', + fontFamily: 'Roboto-Regular,HelveticaNeue,Arial,sans-serif' + }, + saturation: { + width: '70%', + padding: '0px', + position: 'relative', + overflow: 'hidden' + }, + swatch: { + width: '30%', + height: '228px', + padding: '0px', + background: 'rgba(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ', 1)', + position: 'relative', + overflow: 'hidden' + }, + body: { + margin: 'auto', + width: '95%' + }, + controls: { + display: 'flex', + boxSizing: 'border-box', + height: '52px', + paddingTop: '22px' + }, + color: { + width: '32px' + }, + hue: { + height: '8px', + position: 'relative', + margin: '0px 16px 0px 16px', + width: '100%' + }, + Hue: { + radius: '2px' + } + } + }, passedStyles)); + return _react2.default.createElement( + 'div', + { style: styles.picker, className: 'google-picker ' + className }, + _react2.default.createElement( + 'div', + { style: styles.head }, + header + ), + _react2.default.createElement('div', { style: styles.swatch }), + _react2.default.createElement( + 'div', + { style: styles.saturation }, + _react2.default.createElement(_common.Saturation, { + hsl: hsl, + hsv: hsv, + pointer: _GooglePointerCircle2.default, + onChange: onChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.body }, + _react2.default.createElement( + 'div', + { style: styles.controls, className: 'flexbox-fix' }, + _react2.default.createElement( + 'div', + { style: styles.hue }, + _react2.default.createElement(_common.Hue, { + style: styles.Hue, + hsl: hsl, + radius: '4px', + pointer: _GooglePointer2.default, + onChange: onChange + }) + ) + ), + _react2.default.createElement(_GoogleFields2.default, { + rgb: rgb, + hsl: hsl, + hex: hex, + hsv: hsv, + onChange: onChange + }) + ) + ); +}; + +Google.propTypes = { + width: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]), + styles: _propTypes2.default.object, + header: _propTypes2.default.string + +}; + +Google.defaultProps = { + width: 652, + styles: {}, + header: 'Color picker' +}; + +exports.default = (0, _common.ColorWrap)(Google); +},{"../common":256,"./GoogleFields":263,"./GooglePointer":264,"./GooglePointerCircle":265,"lodash/merge":222,"prop-types":236,"react":"react","reactcss":301}],263:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.GoogleFields = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _color = require('../../helpers/color'); + +var color = _interopRequireWildcard(_color); + +var _common = require('../common'); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var GoogleFields = exports.GoogleFields = function GoogleFields(_ref) { + var onChange = _ref.onChange, + rgb = _ref.rgb, + hsl = _ref.hsl, + hex = _ref.hex, + hsv = _ref.hsv; + + + var handleChange = function handleChange(data, e) { + if (data.hex) { + color.isValidHex(data.hex) && onChange({ + hex: data.hex, + source: 'hex' + }, e); + } else if (data.rgb) { + var values = data.rgb.split(','); + color.isvalidColorString(data.rgb, 'rgb') && onChange({ + r: values[0], + g: values[1], + b: values[2], + a: 1, + source: 'rgb' + }, e); + } else if (data.hsv) { + var _values = data.hsv.split(','); + if (color.isvalidColorString(data.hsv, 'hsv')) { + _values[2] = _values[2].replace('%', ''); + _values[1] = _values[1].replace('%', ''); + _values[0] = _values[0].replace('°', ''); + if (_values[1] == 1) { + _values[1] = 0.01; + } else if (_values[2] == 1) { + _values[2] = 0.01; + } + onChange({ + h: Number(_values[0]), + s: Number(_values[1]), + v: Number(_values[2]), + source: 'hsv' + }, e); + } + } else if (data.hsl) { + var _values2 = data.hsl.split(','); + if (color.isvalidColorString(data.hsl, 'hsl')) { + _values2[2] = _values2[2].replace('%', ''); + _values2[1] = _values2[1].replace('%', ''); + _values2[0] = _values2[0].replace('°', ''); + if (hsvValue[1] == 1) { + hsvValue[1] = 0.01; + } else if (hsvValue[2] == 1) { + hsvValue[2] = 0.01; + } + onChange({ + h: Number(_values2[0]), + s: Number(_values2[1]), + v: Number(_values2[2]), + source: 'hsl' + }, e); + } + } + }; + + var styles = (0, _reactcss2.default)({ + 'default': { + wrap: { + display: 'flex', + height: '100px', + marginTop: '4px' + }, + fields: { + width: '100%' + }, + column: { + paddingTop: '10px', + display: 'flex', + justifyContent: 'space-between' + }, + double: { + padding: '0px 4.4px', + boxSizing: 'border-box' + }, + input: { + width: '100%', + height: '38px', + boxSizing: 'border-box', + padding: '4px 10% 3px', + textAlign: 'center', + border: '1px solid #dadce0', + fontSize: '11px', + textTransform: 'lowercase', + borderRadius: '5px', + outline: 'none', + fontFamily: 'Roboto,Arial,sans-serif' + }, + input2: { + height: '38px', + width: '100%', + border: '1px solid #dadce0', + boxSizing: 'border-box', + fontSize: '11px', + textTransform: 'lowercase', + borderRadius: '5px', + outline: 'none', + paddingLeft: '10px', + fontFamily: 'Roboto,Arial,sans-serif' + }, + label: { + textAlign: 'center', + fontSize: '12px', + background: '#fff', + position: 'absolute', + textTransform: 'uppercase', + color: '#3c4043', + width: '35px', + top: '-6px', + left: '0', + right: '0', + marginLeft: 'auto', + marginRight: 'auto', + fontFamily: 'Roboto,Arial,sans-serif' + }, + label2: { + left: '10px', + textAlign: 'center', + fontSize: '12px', + background: '#fff', + position: 'absolute', + textTransform: 'uppercase', + color: '#3c4043', + width: '32px', + top: '-6px', + fontFamily: 'Roboto,Arial,sans-serif' + }, + single: { + flexGrow: '1', + margin: '0px 4.4px' + } + } + }); + + var rgbValue = rgb.r + ', ' + rgb.g + ', ' + rgb.b; + var hslValue = Math.round(hsl.h) + '\xB0, ' + Math.round(hsl.s * 100) + '%, ' + Math.round(hsl.l * 100) + '%'; + var hsvValue = Math.round(hsv.h) + '\xB0, ' + Math.round(hsv.s * 100) + '%, ' + Math.round(hsv.v * 100) + '%'; + + return _react2.default.createElement( + 'div', + { style: styles.wrap, className: 'flexbox-fix' }, + _react2.default.createElement( + 'div', + { style: styles.fields }, + _react2.default.createElement( + 'div', + { style: styles.double }, + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input, label: styles.label }, + label: 'hex', + value: hex, + onChange: handleChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.column }, + _react2.default.createElement( + 'div', + { style: styles.single }, + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input2, label: styles.label2 }, + label: 'rgb', + value: rgbValue, + onChange: handleChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.single }, + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input2, label: styles.label2 }, + label: 'hsv', + value: hsvValue, + onChange: handleChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.single }, + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input2, label: styles.label2 }, + label: 'hsl', + value: hslValue, + onChange: handleChange + }) + ) + ) + ) + ); +}; + +exports.default = GoogleFields; +},{"../../helpers/color":288,"../common":256,"react":"react","reactcss":301}],264:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.GooglePointer = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _propTypes = require('prop-types'); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var GooglePointer = exports.GooglePointer = function GooglePointer(props) { + var styles = (0, _reactcss2.default)({ + 'default': { + picker: { + width: '20px', + height: '20px', + borderRadius: '22px', + transform: 'translate(-10px, -7px)', + background: 'hsl(' + Math.round(props.hsl.h) + ', 100%, 50%)', + border: '2px white solid' + } + } + }); + + return _react2.default.createElement('div', { style: styles.picker }); +}; + +GooglePointer.propTypes = { + hsl: _propTypes2.default.shape({ + h: _propTypes2.default.number, + s: _propTypes2.default.number, + l: _propTypes2.default.number, + a: _propTypes2.default.number + }) +}; + +GooglePointer.defaultProps = { + hsl: { a: 1, h: 249.94, l: 0.2, s: 0.50 } +}; + +exports.default = GooglePointer; +},{"prop-types":236,"react":"react","reactcss":301}],265:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.GooglePointerCircle = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _propTypes = require('prop-types'); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var GooglePointerCircle = exports.GooglePointerCircle = function GooglePointerCircle(props) { + var styles = (0, _reactcss2.default)({ + 'default': { + picker: { + width: '20px', + height: '20px', + borderRadius: '22px', + border: '2px #fff solid', + transform: 'translate(-12px, -13px)', + background: 'hsl(' + Math.round(props.hsl.h) + ', ' + Math.round(props.hsl.s * 100) + '%, ' + Math.round(props.hsl.l * 100) + '%)' + } + } + }); + + return _react2.default.createElement('div', { style: styles.picker }); +}; + +GooglePointerCircle.propTypes = { + hsl: _propTypes2.default.shape({ + h: _propTypes2.default.number, + s: _propTypes2.default.number, + l: _propTypes2.default.number, + a: _propTypes2.default.number + }) +}; + +GooglePointerCircle.defaultProps = { + hsl: { a: 1, h: 249.94, l: 0.2, s: 0.50 } +}; + +exports.default = GooglePointerCircle; +},{"prop-types":236,"react":"react","reactcss":301}],266:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.HuePicker = undefined; + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _propTypes = require('prop-types'); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _merge = require('lodash/merge'); + +var _merge2 = _interopRequireDefault(_merge); + +var _common = require('../common'); + +var _HuePointer = require('./HuePointer'); + +var _HuePointer2 = _interopRequireDefault(_HuePointer); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var HuePicker = exports.HuePicker = function HuePicker(_ref) { + var width = _ref.width, + height = _ref.height, + onChange = _ref.onChange, + hsl = _ref.hsl, + direction = _ref.direction, + pointer = _ref.pointer, + _ref$styles = _ref.styles, + passedStyles = _ref$styles === undefined ? {} : _ref$styles, + _ref$className = _ref.className, + className = _ref$className === undefined ? '' : _ref$className; + + var styles = (0, _reactcss2.default)((0, _merge2.default)({ + 'default': { + picker: { + position: 'relative', + width: width, + height: height + }, + hue: { + radius: '2px' + } + } + }, passedStyles)); + + // Overwrite to provide pure hue color + var handleChange = function handleChange(data) { + return onChange({ a: 1, h: data.h, l: 0.5, s: 1 }); + }; + + return _react2.default.createElement( + 'div', + { style: styles.picker, className: 'hue-picker ' + className }, + _react2.default.createElement(_common.Hue, _extends({}, styles.hue, { + hsl: hsl, + pointer: pointer, + onChange: handleChange, + direction: direction + })) + ); +}; + +HuePicker.propTypes = { + styles: _propTypes2.default.object +}; +HuePicker.defaultProps = { + width: '316px', + height: '16px', + direction: 'horizontal', + pointer: _HuePointer2.default, + styles: {} +}; + +exports.default = (0, _common.ColorWrap)(HuePicker); +},{"../common":256,"./HuePointer":267,"lodash/merge":222,"prop-types":236,"react":"react","reactcss":301}],267:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SliderPointer = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var SliderPointer = exports.SliderPointer = function SliderPointer(_ref) { + var direction = _ref.direction; + + var styles = (0, _reactcss2.default)({ + 'default': { + picker: { + width: '18px', + height: '18px', + borderRadius: '50%', + transform: 'translate(-9px, -1px)', + backgroundColor: 'rgb(248, 248, 248)', + boxShadow: '0 1px 4px 0 rgba(0, 0, 0, 0.37)' + } + }, + 'vertical': { + picker: { + transform: 'translate(-3px, -9px)' + } + } + }, { vertical: direction === 'vertical' }); + + return _react2.default.createElement('div', { style: styles.picker }); +}; + +exports.default = SliderPointer; +},{"react":"react","reactcss":301}],268:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Material = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _merge = require('lodash/merge'); + +var _merge2 = _interopRequireDefault(_merge); + +var _color = require('../../helpers/color'); + +var color = _interopRequireWildcard(_color); + +var _common = require('../common'); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var Material = exports.Material = function Material(_ref) { + var onChange = _ref.onChange, + hex = _ref.hex, + rgb = _ref.rgb, + _ref$styles = _ref.styles, + passedStyles = _ref$styles === undefined ? {} : _ref$styles, + _ref$className = _ref.className, + className = _ref$className === undefined ? '' : _ref$className; + + var styles = (0, _reactcss2.default)((0, _merge2.default)({ + 'default': { + material: { + width: '98px', + height: '98px', + padding: '16px', + fontFamily: 'Roboto' + }, + HEXwrap: { + position: 'relative' + }, + HEXinput: { + width: '100%', + marginTop: '12px', + fontSize: '15px', + color: '#333', + padding: '0px', + border: '0px', + borderBottom: '2px solid ' + hex, + outline: 'none', + height: '30px' + }, + HEXlabel: { + position: 'absolute', + top: '0px', + left: '0px', + fontSize: '11px', + color: '#999999', + textTransform: 'capitalize' + }, + Hex: { + style: {} + }, + RGBwrap: { + position: 'relative' + }, + RGBinput: { + width: '100%', + marginTop: '12px', + fontSize: '15px', + color: '#333', + padding: '0px', + border: '0px', + borderBottom: '1px solid #eee', + outline: 'none', + height: '30px' + }, + RGBlabel: { + position: 'absolute', + top: '0px', + left: '0px', + fontSize: '11px', + color: '#999999', + textTransform: 'capitalize' + }, + split: { + display: 'flex', + marginRight: '-10px', + paddingTop: '11px' + }, + third: { + flex: '1', + paddingRight: '10px' + } + } + }, passedStyles)); + + var handleChange = function handleChange(data, e) { + if (data.hex) { + color.isValidHex(data.hex) && onChange({ + hex: data.hex, + source: 'hex' + }, e); + } else if (data.r || data.g || data.b) { + onChange({ + r: data.r || rgb.r, + g: data.g || rgb.g, + b: data.b || rgb.b, + source: 'rgb' + }, e); + } + }; + + return _react2.default.createElement( + _common.Raised, + { styles: passedStyles }, + _react2.default.createElement( + 'div', + { style: styles.material, className: 'material-picker ' + className }, + _react2.default.createElement(_common.EditableInput, { + style: { wrap: styles.HEXwrap, input: styles.HEXinput, label: styles.HEXlabel }, + label: 'hex', + value: hex, + onChange: handleChange + }), + _react2.default.createElement( + 'div', + { style: styles.split, className: 'flexbox-fix' }, + _react2.default.createElement( + 'div', + { style: styles.third }, + _react2.default.createElement(_common.EditableInput, { + style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel }, + label: 'r', value: rgb.r, + onChange: handleChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.third }, + _react2.default.createElement(_common.EditableInput, { + style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel }, + label: 'g', + value: rgb.g, + onChange: handleChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.third }, + _react2.default.createElement(_common.EditableInput, { + style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel }, + label: 'b', + value: rgb.b, + onChange: handleChange + }) + ) + ) + ) + ); +}; + +exports.default = (0, _common.ColorWrap)(Material); +},{"../../helpers/color":288,"../common":256,"lodash/merge":222,"react":"react","reactcss":301}],269:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Photoshop = undefined; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _propTypes = require('prop-types'); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _merge = require('lodash/merge'); + +var _merge2 = _interopRequireDefault(_merge); + +var _common = require('../common'); + +var _PhotoshopFields = require('./PhotoshopFields'); + +var _PhotoshopFields2 = _interopRequireDefault(_PhotoshopFields); + +var _PhotoshopPointerCircle = require('./PhotoshopPointerCircle'); + +var _PhotoshopPointerCircle2 = _interopRequireDefault(_PhotoshopPointerCircle); + +var _PhotoshopPointer = require('./PhotoshopPointer'); + +var _PhotoshopPointer2 = _interopRequireDefault(_PhotoshopPointer); + +var _PhotoshopButton = require('./PhotoshopButton'); + +var _PhotoshopButton2 = _interopRequireDefault(_PhotoshopButton); + +var _PhotoshopPreviews = require('./PhotoshopPreviews'); + +var _PhotoshopPreviews2 = _interopRequireDefault(_PhotoshopPreviews); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var Photoshop = exports.Photoshop = function (_React$Component) { + _inherits(Photoshop, _React$Component); + + function Photoshop(props) { + _classCallCheck(this, Photoshop); + + var _this = _possibleConstructorReturn(this, (Photoshop.__proto__ || Object.getPrototypeOf(Photoshop)).call(this)); + + _this.state = { + currentColor: props.hex + }; + return _this; + } + + _createClass(Photoshop, [{ + key: 'render', + value: function render() { + var _props = this.props, + _props$styles = _props.styles, + passedStyles = _props$styles === undefined ? {} : _props$styles, + _props$className = _props.className, + className = _props$className === undefined ? '' : _props$className; + + var styles = (0, _reactcss2.default)((0, _merge2.default)({ + 'default': { + picker: { + background: '#DCDCDC', + borderRadius: '4px', + boxShadow: '0 0 0 1px rgba(0,0,0,.25), 0 8px 16px rgba(0,0,0,.15)', + boxSizing: 'initial', + width: '513px' + }, + head: { + backgroundImage: 'linear-gradient(-180deg, #F0F0F0 0%, #D4D4D4 100%)', + borderBottom: '1px solid #B1B1B1', + boxShadow: 'inset 0 1px 0 0 rgba(255,255,255,.2), inset 0 -1px 0 0 rgba(0,0,0,.02)', + height: '23px', + lineHeight: '24px', + borderRadius: '4px 4px 0 0', + fontSize: '13px', + color: '#4D4D4D', + textAlign: 'center' + }, + body: { + padding: '15px 15px 0', + display: 'flex' + }, + saturation: { + width: '256px', + height: '256px', + position: 'relative', + border: '2px solid #B3B3B3', + borderBottom: '2px solid #F0F0F0', + overflow: 'hidden' + }, + hue: { + position: 'relative', + height: '256px', + width: '19px', + marginLeft: '10px', + border: '2px solid #B3B3B3', + borderBottom: '2px solid #F0F0F0' + }, + controls: { + width: '180px', + marginLeft: '10px' + }, + top: { + display: 'flex' + }, + previews: { + width: '60px' + }, + actions: { + flex: '1', + marginLeft: '20px' + } + } + }, passedStyles)); + + return _react2.default.createElement( + 'div', + { style: styles.picker, className: 'photoshop-picker ' + className }, + _react2.default.createElement( + 'div', + { style: styles.head }, + this.props.header + ), + _react2.default.createElement( + 'div', + { style: styles.body, className: 'flexbox-fix' }, + _react2.default.createElement( + 'div', + { style: styles.saturation }, + _react2.default.createElement(_common.Saturation, { + hsl: this.props.hsl, + hsv: this.props.hsv, + pointer: _PhotoshopPointerCircle2.default, + onChange: this.props.onChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.hue }, + _react2.default.createElement(_common.Hue, { + direction: 'vertical', + hsl: this.props.hsl, + pointer: _PhotoshopPointer2.default, + onChange: this.props.onChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.controls }, + _react2.default.createElement( + 'div', + { style: styles.top, className: 'flexbox-fix' }, + _react2.default.createElement( + 'div', + { style: styles.previews }, + _react2.default.createElement(_PhotoshopPreviews2.default, { + rgb: this.props.rgb, + currentColor: this.state.currentColor + }) + ), + _react2.default.createElement( + 'div', + { style: styles.actions }, + _react2.default.createElement(_PhotoshopButton2.default, { label: 'OK', onClick: this.props.onAccept, active: true }), + _react2.default.createElement(_PhotoshopButton2.default, { label: 'Cancel', onClick: this.props.onCancel }), + _react2.default.createElement(_PhotoshopFields2.default, { + onChange: this.props.onChange, + rgb: this.props.rgb, + hsv: this.props.hsv, + hex: this.props.hex + }) + ) + ) + ) + ) + ); + } + }]); + + return Photoshop; +}(_react2.default.Component); + +Photoshop.propTypes = { + header: _propTypes2.default.string, + styles: _propTypes2.default.object +}; + +Photoshop.defaultProps = { + header: 'Color Picker', + styles: {} +}; + +exports.default = (0, _common.ColorWrap)(Photoshop); +},{"../common":256,"./PhotoshopButton":270,"./PhotoshopFields":271,"./PhotoshopPointer":272,"./PhotoshopPointerCircle":273,"./PhotoshopPreviews":274,"lodash/merge":222,"prop-types":236,"react":"react","reactcss":301}],270:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.PhotoshopButton = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var PhotoshopButton = exports.PhotoshopButton = function PhotoshopButton(_ref) { + var onClick = _ref.onClick, + label = _ref.label, + children = _ref.children, + active = _ref.active; + + var styles = (0, _reactcss2.default)({ + 'default': { + button: { + backgroundImage: 'linear-gradient(-180deg, #FFFFFF 0%, #E6E6E6 100%)', + border: '1px solid #878787', + borderRadius: '2px', + height: '20px', + boxShadow: '0 1px 0 0 #EAEAEA', + fontSize: '14px', + color: '#000', + lineHeight: '20px', + textAlign: 'center', + marginBottom: '10px', + cursor: 'pointer' + } + }, + 'active': { + button: { + boxShadow: '0 0 0 1px #878787' + } + } + }, { active: active }); + + return _react2.default.createElement( + 'div', + { style: styles.button, onClick: onClick }, + label || children + ); +}; + +exports.default = PhotoshopButton; +},{"react":"react","reactcss":301}],271:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.PhotoshopPicker = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _color = require('../../helpers/color'); + +var color = _interopRequireWildcard(_color); + +var _common = require('../common'); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var PhotoshopPicker = exports.PhotoshopPicker = function PhotoshopPicker(_ref) { + var onChange = _ref.onChange, + rgb = _ref.rgb, + hsv = _ref.hsv, + hex = _ref.hex; + + var styles = (0, _reactcss2.default)({ + 'default': { + fields: { + paddingTop: '5px', + paddingBottom: '9px', + width: '80px', + position: 'relative' + }, + divider: { + height: '5px' + }, + RGBwrap: { + position: 'relative' + }, + RGBinput: { + marginLeft: '40%', + width: '40%', + height: '18px', + border: '1px solid #888888', + boxShadow: 'inset 0 1px 1px rgba(0,0,0,.1), 0 1px 0 0 #ECECEC', + marginBottom: '5px', + fontSize: '13px', + paddingLeft: '3px', + marginRight: '10px' + }, + RGBlabel: { + left: '0px', + top: '0px', + width: '34px', + textTransform: 'uppercase', + fontSize: '13px', + height: '18px', + lineHeight: '22px', + position: 'absolute' + }, + HEXwrap: { + position: 'relative' + }, + HEXinput: { + marginLeft: '20%', + width: '80%', + height: '18px', + border: '1px solid #888888', + boxShadow: 'inset 0 1px 1px rgba(0,0,0,.1), 0 1px 0 0 #ECECEC', + marginBottom: '6px', + fontSize: '13px', + paddingLeft: '3px' + }, + HEXlabel: { + position: 'absolute', + top: '0px', + left: '0px', + width: '14px', + textTransform: 'uppercase', + fontSize: '13px', + height: '18px', + lineHeight: '22px' + }, + fieldSymbols: { + position: 'absolute', + top: '5px', + right: '-7px', + fontSize: '13px' + }, + symbol: { + height: '20px', + lineHeight: '22px', + paddingBottom: '7px' + } + } + }); + + var handleChange = function handleChange(data, e) { + if (data['#']) { + color.isValidHex(data['#']) && onChange({ + hex: data['#'], + source: 'hex' + }, e); + } else if (data.r || data.g || data.b) { + onChange({ + r: data.r || rgb.r, + g: data.g || rgb.g, + b: data.b || rgb.b, + source: 'rgb' + }, e); + } else if (data.h || data.s || data.v) { + onChange({ + h: data.h || hsv.h, + s: data.s || hsv.s, + v: data.v || hsv.v, + source: 'hsv' + }, e); + } + }; + + return _react2.default.createElement( + 'div', + { style: styles.fields }, + _react2.default.createElement(_common.EditableInput, { + style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel }, + label: 'h', + value: Math.round(hsv.h), + onChange: handleChange + }), + _react2.default.createElement(_common.EditableInput, { + style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel }, + label: 's', + value: Math.round(hsv.s * 100), + onChange: handleChange + }), + _react2.default.createElement(_common.EditableInput, { + style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel }, + label: 'v', + value: Math.round(hsv.v * 100), + onChange: handleChange + }), + _react2.default.createElement('div', { style: styles.divider }), + _react2.default.createElement(_common.EditableInput, { + style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel }, + label: 'r', + value: rgb.r, + onChange: handleChange + }), + _react2.default.createElement(_common.EditableInput, { + style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel }, + label: 'g', + value: rgb.g, + onChange: handleChange + }), + _react2.default.createElement(_common.EditableInput, { + style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel }, + label: 'b', + value: rgb.b, + onChange: handleChange + }), + _react2.default.createElement('div', { style: styles.divider }), + _react2.default.createElement(_common.EditableInput, { + style: { wrap: styles.HEXwrap, input: styles.HEXinput, label: styles.HEXlabel }, + label: '#', + value: hex.replace('#', ''), + onChange: handleChange + }), + _react2.default.createElement( + 'div', + { style: styles.fieldSymbols }, + _react2.default.createElement( + 'div', + { style: styles.symbol }, + '\xB0' + ), + _react2.default.createElement( + 'div', + { style: styles.symbol }, + '%' + ), + _react2.default.createElement( + 'div', + { style: styles.symbol }, + '%' + ) + ) + ); +}; + +exports.default = PhotoshopPicker; +},{"../../helpers/color":288,"../common":256,"react":"react","reactcss":301}],272:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.PhotoshopPointerCircle = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var PhotoshopPointerCircle = exports.PhotoshopPointerCircle = function PhotoshopPointerCircle() { + var styles = (0, _reactcss2.default)({ + 'default': { + triangle: { + width: 0, + height: 0, + borderStyle: 'solid', + borderWidth: '4px 0 4px 6px', + borderColor: 'transparent transparent transparent #fff', + position: 'absolute', + top: '1px', + left: '1px' + }, + triangleBorder: { + width: 0, + height: 0, + borderStyle: 'solid', + borderWidth: '5px 0 5px 8px', + borderColor: 'transparent transparent transparent #555' + }, + + left: { + Extend: 'triangleBorder', + transform: 'translate(-13px, -4px)' + }, + leftInside: { + Extend: 'triangle', + transform: 'translate(-8px, -5px)' + }, + + right: { + Extend: 'triangleBorder', + transform: 'translate(20px, -14px) rotate(180deg)' + }, + rightInside: { + Extend: 'triangle', + transform: 'translate(-8px, -5px)' + } + } + }); + + return _react2.default.createElement( + 'div', + { style: styles.pointer }, + _react2.default.createElement( + 'div', + { style: styles.left }, + _react2.default.createElement('div', { style: styles.leftInside }) + ), + _react2.default.createElement( + 'div', + { style: styles.right }, + _react2.default.createElement('div', { style: styles.rightInside }) + ) + ); +}; + +exports.default = PhotoshopPointerCircle; +},{"react":"react","reactcss":301}],273:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.PhotoshopPointerCircle = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var PhotoshopPointerCircle = exports.PhotoshopPointerCircle = function PhotoshopPointerCircle(_ref) { + var hsl = _ref.hsl; + + var styles = (0, _reactcss2.default)({ + 'default': { + picker: { + width: '12px', + height: '12px', + borderRadius: '6px', + boxShadow: 'inset 0 0 0 1px #fff', + transform: 'translate(-6px, -6px)' + } + }, + 'black-outline': { + picker: { + boxShadow: 'inset 0 0 0 1px #000' + } + } + }, { 'black-outline': hsl.l > 0.5 }); + + return _react2.default.createElement('div', { style: styles.picker }); +}; + +exports.default = PhotoshopPointerCircle; +},{"react":"react","reactcss":301}],274:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.PhotoshopPreviews = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var PhotoshopPreviews = exports.PhotoshopPreviews = function PhotoshopPreviews(_ref) { + var rgb = _ref.rgb, + currentColor = _ref.currentColor; + + var styles = (0, _reactcss2.default)({ + 'default': { + swatches: { + border: '1px solid #B3B3B3', + borderBottom: '1px solid #F0F0F0', + marginBottom: '2px', + marginTop: '1px' + }, + new: { + height: '34px', + background: 'rgb(' + rgb.r + ',' + rgb.g + ', ' + rgb.b + ')', + boxShadow: 'inset 1px 0 0 #000, inset -1px 0 0 #000, inset 0 1px 0 #000' + }, + current: { + height: '34px', + background: currentColor, + boxShadow: 'inset 1px 0 0 #000, inset -1px 0 0 #000, inset 0 -1px 0 #000' + }, + label: { + fontSize: '14px', + color: '#000', + textAlign: 'center' + } + } + }); + + return _react2.default.createElement( + 'div', + null, + _react2.default.createElement( + 'div', + { style: styles.label }, + 'new' + ), + _react2.default.createElement( + 'div', + { style: styles.swatches }, + _react2.default.createElement('div', { style: styles.new }), + _react2.default.createElement('div', { style: styles.current }) + ), + _react2.default.createElement( + 'div', + { style: styles.label }, + 'current' + ) + ); +}; + +exports.default = PhotoshopPreviews; +},{"react":"react","reactcss":301}],275:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Sketch = undefined; + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _propTypes = require('prop-types'); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _merge = require('lodash/merge'); + +var _merge2 = _interopRequireDefault(_merge); + +var _common = require('../common'); + +var _SketchFields = require('./SketchFields'); + +var _SketchFields2 = _interopRequireDefault(_SketchFields); + +var _SketchPresetColors = require('./SketchPresetColors'); + +var _SketchPresetColors2 = _interopRequireDefault(_SketchPresetColors); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var Sketch = exports.Sketch = function Sketch(_ref) { + var width = _ref.width, + rgb = _ref.rgb, + hex = _ref.hex, + hsv = _ref.hsv, + hsl = _ref.hsl, + onChange = _ref.onChange, + onSwatchHover = _ref.onSwatchHover, + disableAlpha = _ref.disableAlpha, + presetColors = _ref.presetColors, + renderers = _ref.renderers, + _ref$styles = _ref.styles, + passedStyles = _ref$styles === undefined ? {} : _ref$styles, + _ref$className = _ref.className, + className = _ref$className === undefined ? '' : _ref$className; + + var styles = (0, _reactcss2.default)((0, _merge2.default)({ + 'default': _extends({ + picker: { + width: width, + padding: '10px 10px 0', + boxSizing: 'initial', + background: '#fff', + borderRadius: '4px', + boxShadow: '0 0 0 1px rgba(0,0,0,.15), 0 8px 16px rgba(0,0,0,.15)' + }, + saturation: { + width: '100%', + paddingBottom: '75%', + position: 'relative', + overflow: 'hidden' + }, + Saturation: { + radius: '3px', + shadow: 'inset 0 0 0 1px rgba(0,0,0,.15), inset 0 0 4px rgba(0,0,0,.25)' + }, + controls: { + display: 'flex' + }, + sliders: { + padding: '4px 0', + flex: '1' + }, + color: { + width: '24px', + height: '24px', + position: 'relative', + marginTop: '4px', + marginLeft: '4px', + borderRadius: '3px' + }, + activeColor: { + absolute: '0px 0px 0px 0px', + borderRadius: '2px', + background: 'rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ',' + rgb.a + ')', + boxShadow: 'inset 0 0 0 1px rgba(0,0,0,.15), inset 0 0 4px rgba(0,0,0,.25)' + }, + hue: { + position: 'relative', + height: '10px', + overflow: 'hidden' + }, + Hue: { + radius: '2px', + shadow: 'inset 0 0 0 1px rgba(0,0,0,.15), inset 0 0 4px rgba(0,0,0,.25)' + }, + + alpha: { + position: 'relative', + height: '10px', + marginTop: '4px', + overflow: 'hidden' + }, + Alpha: { + radius: '2px', + shadow: 'inset 0 0 0 1px rgba(0,0,0,.15), inset 0 0 4px rgba(0,0,0,.25)' + } + }, passedStyles), + 'disableAlpha': { + color: { + height: '10px' + }, + hue: { + height: '10px' + }, + alpha: { + display: 'none' + } + } + }, passedStyles), { disableAlpha: disableAlpha }); + + return _react2.default.createElement( + 'div', + { style: styles.picker, className: 'sketch-picker ' + className }, + _react2.default.createElement( + 'div', + { style: styles.saturation }, + _react2.default.createElement(_common.Saturation, { + style: styles.Saturation, + hsl: hsl, + hsv: hsv, + onChange: onChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.controls, className: 'flexbox-fix' }, + _react2.default.createElement( + 'div', + { style: styles.sliders }, + _react2.default.createElement( + 'div', + { style: styles.hue }, + _react2.default.createElement(_common.Hue, { + style: styles.Hue, + hsl: hsl, + onChange: onChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.alpha }, + _react2.default.createElement(_common.Alpha, { + style: styles.Alpha, + rgb: rgb, + hsl: hsl, + renderers: renderers, + onChange: onChange + }) + ) + ), + _react2.default.createElement( + 'div', + { style: styles.color }, + _react2.default.createElement(_common.Checkboard, null), + _react2.default.createElement('div', { style: styles.activeColor }) + ) + ), + _react2.default.createElement(_SketchFields2.default, { + rgb: rgb, + hsl: hsl, + hex: hex, + onChange: onChange, + disableAlpha: disableAlpha + }), + _react2.default.createElement(_SketchPresetColors2.default, { + colors: presetColors, + onClick: onChange, + onSwatchHover: onSwatchHover + }) + ); +}; + +Sketch.propTypes = { + disableAlpha: _propTypes2.default.bool, + width: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]), + styles: _propTypes2.default.object +}; + +Sketch.defaultProps = { + disableAlpha: false, + width: 200, + styles: {}, + presetColors: ['#D0021B', '#F5A623', '#F8E71C', '#8B572A', '#7ED321', '#417505', '#BD10E0', '#9013FE', '#4A90E2', '#50E3C2', '#B8E986', '#000000', '#4A4A4A', '#9B9B9B', '#FFFFFF'] +}; + +exports.default = (0, _common.ColorWrap)(Sketch); +},{"../common":256,"./SketchFields":276,"./SketchPresetColors":277,"lodash/merge":222,"prop-types":236,"react":"react","reactcss":301}],276:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SketchFields = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _color = require('../../helpers/color'); + +var color = _interopRequireWildcard(_color); + +var _common = require('../common'); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/* eslint-disable no-param-reassign */ + +var SketchFields = exports.SketchFields = function SketchFields(_ref) { + var onChange = _ref.onChange, + rgb = _ref.rgb, + hsl = _ref.hsl, + hex = _ref.hex, + disableAlpha = _ref.disableAlpha; + + var styles = (0, _reactcss2.default)({ + 'default': { + fields: { + display: 'flex', + paddingTop: '4px' + }, + single: { + flex: '1', + paddingLeft: '6px' + }, + alpha: { + flex: '1', + paddingLeft: '6px' + }, + double: { + flex: '2' + }, + input: { + width: '80%', + padding: '4px 10% 3px', + border: 'none', + boxShadow: 'inset 0 0 0 1px #ccc', + fontSize: '11px' + }, + label: { + display: 'block', + textAlign: 'center', + fontSize: '11px', + color: '#222', + paddingTop: '3px', + paddingBottom: '4px', + textTransform: 'capitalize' + } + }, + 'disableAlpha': { + alpha: { + display: 'none' + } + } + }, { disableAlpha: disableAlpha }); + + var handleChange = function handleChange(data, e) { + if (data.hex) { + color.isValidHex(data.hex) && onChange({ + hex: data.hex, + source: 'hex' + }, e); + } else if (data.r || data.g || data.b) { + onChange({ + r: data.r || rgb.r, + g: data.g || rgb.g, + b: data.b || rgb.b, + a: rgb.a, + source: 'rgb' + }, e); + } else if (data.a) { + if (data.a < 0) { + data.a = 0; + } else if (data.a > 100) { + data.a = 100; + } + + data.a /= 100; + onChange({ + h: hsl.h, + s: hsl.s, + l: hsl.l, + a: data.a, + source: 'rgb' + }, e); + } + }; + + return _react2.default.createElement( + 'div', + { style: styles.fields, className: 'flexbox-fix' }, + _react2.default.createElement( + 'div', + { style: styles.double }, + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input, label: styles.label }, + label: 'hex', + value: hex.replace('#', ''), + onChange: handleChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.single }, + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input, label: styles.label }, + label: 'r', + value: rgb.r, + onChange: handleChange, + dragLabel: 'true', + dragMax: '255' + }) + ), + _react2.default.createElement( + 'div', + { style: styles.single }, + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input, label: styles.label }, + label: 'g', + value: rgb.g, + onChange: handleChange, + dragLabel: 'true', + dragMax: '255' + }) + ), + _react2.default.createElement( + 'div', + { style: styles.single }, + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input, label: styles.label }, + label: 'b', + value: rgb.b, + onChange: handleChange, + dragLabel: 'true', + dragMax: '255' + }) + ), + _react2.default.createElement( + 'div', + { style: styles.alpha }, + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input, label: styles.label }, + label: 'a', + value: Math.round(rgb.a * 100), + onChange: handleChange, + dragLabel: 'true', + dragMax: '100' + }) + ) + ); +}; + +exports.default = SketchFields; +},{"../../helpers/color":288,"../common":256,"react":"react","reactcss":301}],277:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SketchPresetColors = undefined; + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _propTypes = require('prop-types'); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _common = require('../common'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var SketchPresetColors = exports.SketchPresetColors = function SketchPresetColors(_ref) { + var colors = _ref.colors, + _ref$onClick = _ref.onClick, + onClick = _ref$onClick === undefined ? function () {} : _ref$onClick, + onSwatchHover = _ref.onSwatchHover; + + var styles = (0, _reactcss2.default)({ + 'default': { + colors: { + margin: '0 -10px', + padding: '10px 0 0 10px', + borderTop: '1px solid #eee', + display: 'flex', + flexWrap: 'wrap', + position: 'relative' + }, + swatchWrap: { + width: '16px', + height: '16px', + margin: '0 10px 10px 0' + }, + swatch: { + borderRadius: '3px', + boxShadow: 'inset 0 0 0 1px rgba(0,0,0,.15)' + } + }, + 'no-presets': { + colors: { + display: 'none' + } + } + }, { + 'no-presets': !colors || !colors.length + }); + + var handleClick = function handleClick(hex, e) { + onClick({ + hex: hex, + source: 'hex' + }, e); + }; + + return _react2.default.createElement( + 'div', + { style: styles.colors, className: 'flexbox-fix' }, + colors.map(function (colorObjOrString) { + var c = typeof colorObjOrString === 'string' ? { color: colorObjOrString } : colorObjOrString; + var key = '' + c.color + (c.title || ''); + return _react2.default.createElement( + 'div', + { key: key, style: styles.swatchWrap }, + _react2.default.createElement(_common.Swatch, _extends({}, c, { + style: styles.swatch, + onClick: handleClick, + onHover: onSwatchHover, + focusStyle: { + boxShadow: 'inset 0 0 0 1px rgba(0,0,0,.15), 0 0 4px ' + c.color + } + })) + ); + }) + ); +}; + +SketchPresetColors.propTypes = { + colors: _propTypes2.default.arrayOf(_propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.shape({ + color: _propTypes2.default.string, + title: _propTypes2.default.string + })])).isRequired +}; + +exports.default = SketchPresetColors; +},{"../common":256,"prop-types":236,"react":"react","reactcss":301}],278:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Slider = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _propTypes = require('prop-types'); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _merge = require('lodash/merge'); + +var _merge2 = _interopRequireDefault(_merge); + +var _common = require('../common'); + +var _SliderSwatches = require('./SliderSwatches'); + +var _SliderSwatches2 = _interopRequireDefault(_SliderSwatches); + +var _SliderPointer = require('./SliderPointer'); + +var _SliderPointer2 = _interopRequireDefault(_SliderPointer); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var Slider = exports.Slider = function Slider(_ref) { + var hsl = _ref.hsl, + onChange = _ref.onChange, + pointer = _ref.pointer, + _ref$styles = _ref.styles, + passedStyles = _ref$styles === undefined ? {} : _ref$styles, + _ref$className = _ref.className, + className = _ref$className === undefined ? '' : _ref$className; + + var styles = (0, _reactcss2.default)((0, _merge2.default)({ + 'default': { + hue: { + height: '12px', + position: 'relative' + }, + Hue: { + radius: '2px' + } + } + }, passedStyles)); + + return _react2.default.createElement( + 'div', + { style: styles.wrap || {}, className: 'slider-picker ' + className }, + _react2.default.createElement( + 'div', + { style: styles.hue }, + _react2.default.createElement(_common.Hue, { + style: styles.Hue, + hsl: hsl, + pointer: pointer, + onChange: onChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.swatches }, + _react2.default.createElement(_SliderSwatches2.default, { hsl: hsl, onClick: onChange }) + ) + ); +}; + +Slider.propTypes = { + styles: _propTypes2.default.object +}; +Slider.defaultProps = { + pointer: _SliderPointer2.default, + styles: {} +}; + +exports.default = (0, _common.ColorWrap)(Slider); +},{"../common":256,"./SliderPointer":279,"./SliderSwatches":281,"lodash/merge":222,"prop-types":236,"react":"react","reactcss":301}],279:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SliderPointer = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var SliderPointer = exports.SliderPointer = function SliderPointer() { + var styles = (0, _reactcss2.default)({ + 'default': { + picker: { + width: '14px', + height: '14px', + borderRadius: '6px', + transform: 'translate(-7px, -1px)', + backgroundColor: 'rgb(248, 248, 248)', + boxShadow: '0 1px 4px 0 rgba(0, 0, 0, 0.37)' + } + } + }); + + return _react2.default.createElement('div', { style: styles.picker }); +}; + +exports.default = SliderPointer; +},{"react":"react","reactcss":301}],280:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SliderSwatch = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var SliderSwatch = exports.SliderSwatch = function SliderSwatch(_ref) { + var hsl = _ref.hsl, + offset = _ref.offset, + _ref$onClick = _ref.onClick, + onClick = _ref$onClick === undefined ? function () {} : _ref$onClick, + active = _ref.active, + first = _ref.first, + last = _ref.last; + + var styles = (0, _reactcss2.default)({ + 'default': { + swatch: { + height: '12px', + background: 'hsl(' + hsl.h + ', 50%, ' + offset * 100 + '%)', + cursor: 'pointer' + } + }, + 'first': { + swatch: { + borderRadius: '2px 0 0 2px' + } + }, + 'last': { + swatch: { + borderRadius: '0 2px 2px 0' + } + }, + 'active': { + swatch: { + transform: 'scaleY(1.8)', + borderRadius: '3.6px/2px' + } + } + }, { active: active, first: first, last: last }); + + var handleClick = function handleClick(e) { + return onClick({ + h: hsl.h, + s: 0.5, + l: offset, + source: 'hsl' + }, e); + }; + + return _react2.default.createElement('div', { style: styles.swatch, onClick: handleClick }); +}; + +exports.default = SliderSwatch; +},{"react":"react","reactcss":301}],281:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SliderSwatches = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _SliderSwatch = require('./SliderSwatch'); + +var _SliderSwatch2 = _interopRequireDefault(_SliderSwatch); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var SliderSwatches = exports.SliderSwatches = function SliderSwatches(_ref) { + var onClick = _ref.onClick, + hsl = _ref.hsl; + + var styles = (0, _reactcss2.default)({ + 'default': { + swatches: { + marginTop: '20px' + }, + swatch: { + boxSizing: 'border-box', + width: '20%', + paddingRight: '1px', + float: 'left' + }, + clear: { + clear: 'both' + } + } + }); + + // Acceptible difference in floating point equality + var epsilon = 0.1; + + return _react2.default.createElement( + 'div', + { style: styles.swatches }, + _react2.default.createElement( + 'div', + { style: styles.swatch }, + _react2.default.createElement(_SliderSwatch2.default, { + hsl: hsl, + offset: '.80', + active: Math.abs(hsl.l - 0.80) < epsilon && Math.abs(hsl.s - 0.50) < epsilon, + onClick: onClick, + first: true + }) + ), + _react2.default.createElement( + 'div', + { style: styles.swatch }, + _react2.default.createElement(_SliderSwatch2.default, { + hsl: hsl, + offset: '.65', + active: Math.abs(hsl.l - 0.65) < epsilon && Math.abs(hsl.s - 0.50) < epsilon, + onClick: onClick + }) + ), + _react2.default.createElement( + 'div', + { style: styles.swatch }, + _react2.default.createElement(_SliderSwatch2.default, { + hsl: hsl, + offset: '.50', + active: Math.abs(hsl.l - 0.50) < epsilon && Math.abs(hsl.s - 0.50) < epsilon, + onClick: onClick + }) + ), + _react2.default.createElement( + 'div', + { style: styles.swatch }, + _react2.default.createElement(_SliderSwatch2.default, { + hsl: hsl, + offset: '.35', + active: Math.abs(hsl.l - 0.35) < epsilon && Math.abs(hsl.s - 0.50) < epsilon, + onClick: onClick + }) + ), + _react2.default.createElement( + 'div', + { style: styles.swatch }, + _react2.default.createElement(_SliderSwatch2.default, { + hsl: hsl, + offset: '.20', + active: Math.abs(hsl.l - 0.20) < epsilon && Math.abs(hsl.s - 0.50) < epsilon, + onClick: onClick, + last: true + }) + ), + _react2.default.createElement('div', { style: styles.clear }) + ); +}; + +exports.default = SliderSwatches; +},{"./SliderSwatch":280,"react":"react","reactcss":301}],282:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Swatches = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _propTypes = require('prop-types'); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _map = require('lodash/map'); + +var _map2 = _interopRequireDefault(_map); + +var _merge = require('lodash/merge'); + +var _merge2 = _interopRequireDefault(_merge); + +var _materialColors = require('material-colors'); + +var material = _interopRequireWildcard(_materialColors); + +var _common = require('../common'); + +var _SwatchesGroup = require('./SwatchesGroup'); + +var _SwatchesGroup2 = _interopRequireDefault(_SwatchesGroup); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var Swatches = exports.Swatches = function Swatches(_ref) { + var width = _ref.width, + height = _ref.height, + onChange = _ref.onChange, + onSwatchHover = _ref.onSwatchHover, + colors = _ref.colors, + hex = _ref.hex, + _ref$styles = _ref.styles, + passedStyles = _ref$styles === undefined ? {} : _ref$styles, + _ref$className = _ref.className, + className = _ref$className === undefined ? '' : _ref$className; + + var styles = (0, _reactcss2.default)((0, _merge2.default)({ + 'default': { + picker: { + width: width, + height: height + }, + overflow: { + height: height, + overflowY: 'scroll' + }, + body: { + padding: '16px 0 6px 16px' + }, + clear: { + clear: 'both' + } + } + }, passedStyles)); + + var handleChange = function handleChange(data, e) { + return onChange({ hex: data, source: 'hex' }, e); + }; + + return _react2.default.createElement( + 'div', + { style: styles.picker, className: 'swatches-picker ' + className }, + _react2.default.createElement( + _common.Raised, + null, + _react2.default.createElement( + 'div', + { style: styles.overflow }, + _react2.default.createElement( + 'div', + { style: styles.body }, + (0, _map2.default)(colors, function (group) { + return _react2.default.createElement(_SwatchesGroup2.default, { + key: group.toString(), + group: group, + active: hex, + onClick: handleChange, + onSwatchHover: onSwatchHover + }); + }), + _react2.default.createElement('div', { style: styles.clear }) + ) + ) + ) + ); +}; + +Swatches.propTypes = { + width: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]), + height: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]), + colors: _propTypes2.default.arrayOf(_propTypes2.default.arrayOf(_propTypes2.default.string)), + styles: _propTypes2.default.object + + /* eslint-disable max-len */ +};Swatches.defaultProps = { + width: 320, + height: 240, + colors: [[material.red['900'], material.red['700'], material.red['500'], material.red['300'], material.red['100']], [material.pink['900'], material.pink['700'], material.pink['500'], material.pink['300'], material.pink['100']], [material.purple['900'], material.purple['700'], material.purple['500'], material.purple['300'], material.purple['100']], [material.deepPurple['900'], material.deepPurple['700'], material.deepPurple['500'], material.deepPurple['300'], material.deepPurple['100']], [material.indigo['900'], material.indigo['700'], material.indigo['500'], material.indigo['300'], material.indigo['100']], [material.blue['900'], material.blue['700'], material.blue['500'], material.blue['300'], material.blue['100']], [material.lightBlue['900'], material.lightBlue['700'], material.lightBlue['500'], material.lightBlue['300'], material.lightBlue['100']], [material.cyan['900'], material.cyan['700'], material.cyan['500'], material.cyan['300'], material.cyan['100']], [material.teal['900'], material.teal['700'], material.teal['500'], material.teal['300'], material.teal['100']], ['#194D33', material.green['700'], material.green['500'], material.green['300'], material.green['100']], [material.lightGreen['900'], material.lightGreen['700'], material.lightGreen['500'], material.lightGreen['300'], material.lightGreen['100']], [material.lime['900'], material.lime['700'], material.lime['500'], material.lime['300'], material.lime['100']], [material.yellow['900'], material.yellow['700'], material.yellow['500'], material.yellow['300'], material.yellow['100']], [material.amber['900'], material.amber['700'], material.amber['500'], material.amber['300'], material.amber['100']], [material.orange['900'], material.orange['700'], material.orange['500'], material.orange['300'], material.orange['100']], [material.deepOrange['900'], material.deepOrange['700'], material.deepOrange['500'], material.deepOrange['300'], material.deepOrange['100']], [material.brown['900'], material.brown['700'], material.brown['500'], material.brown['300'], material.brown['100']], [material.blueGrey['900'], material.blueGrey['700'], material.blueGrey['500'], material.blueGrey['300'], material.blueGrey['100']], ['#000000', '#525252', '#969696', '#D9D9D9', '#FFFFFF']], + styles: {} +}; + +exports.default = (0, _common.ColorWrap)(Swatches); +},{"../common":256,"./SwatchesGroup":284,"lodash/map":220,"lodash/merge":222,"material-colors":231,"prop-types":236,"react":"react","reactcss":301}],283:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SwatchesColor = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _color = require('../../helpers/color'); + +var colorUtils = _interopRequireWildcard(_color); + +var _common = require('../common'); + +var _CheckIcon = require('@icons/material/CheckIcon'); + +var _CheckIcon2 = _interopRequireDefault(_CheckIcon); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var SwatchesColor = exports.SwatchesColor = function SwatchesColor(_ref) { + var color = _ref.color, + _ref$onClick = _ref.onClick, + onClick = _ref$onClick === undefined ? function () {} : _ref$onClick, + onSwatchHover = _ref.onSwatchHover, + first = _ref.first, + last = _ref.last, + active = _ref.active; + + var styles = (0, _reactcss2.default)({ + 'default': { + color: { + width: '40px', + height: '24px', + cursor: 'pointer', + background: color, + marginBottom: '1px' + }, + check: { + color: colorUtils.getContrastingColor(color), + marginLeft: '8px', + display: 'none' + } + }, + 'first': { + color: { + overflow: 'hidden', + borderRadius: '2px 2px 0 0' + } + }, + 'last': { + color: { + overflow: 'hidden', + borderRadius: '0 0 2px 2px' + } + }, + 'active': { + check: { + display: 'block' + } + }, + 'color-#FFFFFF': { + color: { + boxShadow: 'inset 0 0 0 1px #ddd' + }, + check: { + color: '#333' + } + }, + 'transparent': { + check: { + color: '#333' + } + } + }, { + first: first, + last: last, + active: active, + 'color-#FFFFFF': color === '#FFFFFF', + 'transparent': color === 'transparent' + }); + + return _react2.default.createElement( + _common.Swatch, + { + color: color, + style: styles.color, + onClick: onClick, + onHover: onSwatchHover, + focusStyle: { boxShadow: '0 0 4px ' + color } + }, + _react2.default.createElement( + 'div', + { style: styles.check }, + _react2.default.createElement(_CheckIcon2.default, null) + ) + ); +}; + +exports.default = SwatchesColor; +},{"../../helpers/color":288,"../common":256,"@icons/material/CheckIcon":23,"react":"react","reactcss":301}],284:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SwatchesGroup = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _map = require('lodash/map'); + +var _map2 = _interopRequireDefault(_map); + +var _SwatchesColor = require('./SwatchesColor'); + +var _SwatchesColor2 = _interopRequireDefault(_SwatchesColor); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var SwatchesGroup = exports.SwatchesGroup = function SwatchesGroup(_ref) { + var onClick = _ref.onClick, + onSwatchHover = _ref.onSwatchHover, + group = _ref.group, + active = _ref.active; + + var styles = (0, _reactcss2.default)({ + 'default': { + group: { + paddingBottom: '10px', + width: '40px', + float: 'left', + marginRight: '10px' + } + } + }); + + return _react2.default.createElement( + 'div', + { style: styles.group }, + (0, _map2.default)(group, function (color, i) { + return _react2.default.createElement(_SwatchesColor2.default, { + key: color, + color: color, + active: color.toLowerCase() === active, + first: i === 0, + last: i === group.length - 1, + onClick: onClick, + onSwatchHover: onSwatchHover + }); + }) + ); +}; + +exports.default = SwatchesGroup; +},{"./SwatchesColor":283,"lodash/map":220,"react":"react","reactcss":301}],285:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Twitter = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _propTypes = require('prop-types'); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _map = require('lodash/map'); + +var _map2 = _interopRequireDefault(_map); + +var _merge = require('lodash/merge'); + +var _merge2 = _interopRequireDefault(_merge); + +var _color = require('../../helpers/color'); + +var color = _interopRequireWildcard(_color); + +var _common = require('../common'); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var Twitter = exports.Twitter = function Twitter(_ref) { + var onChange = _ref.onChange, + onSwatchHover = _ref.onSwatchHover, + hex = _ref.hex, + colors = _ref.colors, + width = _ref.width, + triangle = _ref.triangle, + _ref$styles = _ref.styles, + passedStyles = _ref$styles === undefined ? {} : _ref$styles, + _ref$className = _ref.className, + className = _ref$className === undefined ? '' : _ref$className; + + var styles = (0, _reactcss2.default)((0, _merge2.default)({ + 'default': { + card: { + width: width, + background: '#fff', + border: '0 solid rgba(0,0,0,0.25)', + boxShadow: '0 1px 4px rgba(0,0,0,0.25)', + borderRadius: '4px', + position: 'relative' + }, + body: { + padding: '15px 9px 9px 15px' + }, + label: { + fontSize: '18px', + color: '#fff' + }, + triangle: { + width: '0px', + height: '0px', + borderStyle: 'solid', + borderWidth: '0 9px 10px 9px', + borderColor: 'transparent transparent #fff transparent', + position: 'absolute' + }, + triangleShadow: { + width: '0px', + height: '0px', + borderStyle: 'solid', + borderWidth: '0 9px 10px 9px', + borderColor: 'transparent transparent rgba(0,0,0,.1) transparent', + position: 'absolute' + }, + hash: { + background: '#F0F0F0', + height: '30px', + width: '30px', + borderRadius: '4px 0 0 4px', + float: 'left', + color: '#98A1A4', + display: 'flex', + alignItems: 'center', + justifyContent: 'center' + }, + input: { + width: '100px', + fontSize: '14px', + color: '#666', + border: '0px', + outline: 'none', + height: '28px', + boxShadow: 'inset 0 0 0 1px #F0F0F0', + boxSizing: 'content-box', + borderRadius: '0 4px 4px 0', + float: 'left', + paddingLeft: '8px' + }, + swatch: { + width: '30px', + height: '30px', + float: 'left', + borderRadius: '4px', + margin: '0 6px 6px 0' + }, + clear: { + clear: 'both' + } + }, + 'hide-triangle': { + triangle: { + display: 'none' + }, + triangleShadow: { + display: 'none' + } + }, + 'top-left-triangle': { + triangle: { + top: '-10px', + left: '12px' + }, + triangleShadow: { + top: '-11px', + left: '12px' + } + }, + 'top-right-triangle': { + triangle: { + top: '-10px', + right: '12px' + }, + triangleShadow: { + top: '-11px', + right: '12px' + } + } + }, passedStyles), { + 'hide-triangle': triangle === 'hide', + 'top-left-triangle': triangle === 'top-left', + 'top-right-triangle': triangle === 'top-right' + }); + + var handleChange = function handleChange(hexcode, e) { + color.isValidHex(hexcode) && onChange({ + hex: hexcode, + source: 'hex' + }, e); + }; + + return _react2.default.createElement( + 'div', + { style: styles.card, className: 'twitter-picker ' + className }, + _react2.default.createElement('div', { style: styles.triangleShadow }), + _react2.default.createElement('div', { style: styles.triangle }), + _react2.default.createElement( + 'div', + { style: styles.body }, + (0, _map2.default)(colors, function (c, i) { + return _react2.default.createElement(_common.Swatch, { + key: i, + color: c, + hex: c, + style: styles.swatch, + onClick: handleChange, + onHover: onSwatchHover, + focusStyle: { + boxShadow: '0 0 4px ' + c + } + }); + }), + _react2.default.createElement( + 'div', + { style: styles.hash }, + '#' + ), + _react2.default.createElement(_common.EditableInput, { + label: null, + style: { input: styles.input }, + value: hex.replace('#', ''), + onChange: handleChange + }), + _react2.default.createElement('div', { style: styles.clear }) + ) + ); +}; + +Twitter.propTypes = { + width: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]), + triangle: _propTypes2.default.oneOf(['hide', 'top-left', 'top-right']), + colors: _propTypes2.default.arrayOf(_propTypes2.default.string), + styles: _propTypes2.default.object +}; + +Twitter.defaultProps = { + width: 276, + colors: ['#FF6900', '#FCB900', '#7BDCB5', '#00D084', '#8ED1FC', '#0693E3', '#ABB8C3', '#EB144C', '#F78DA7', '#9900EF'], + triangle: 'top-left', + styles: {} +}; + +exports.default = (0, _common.ColorWrap)(Twitter); +},{"../../helpers/color":288,"../common":256,"lodash/map":220,"lodash/merge":222,"prop-types":236,"react":"react","reactcss":301}],286:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +var calculateChange = exports.calculateChange = function calculateChange(e, hsl, direction, initialA, container) { + var containerWidth = container.clientWidth; + var containerHeight = container.clientHeight; + var x = typeof e.pageX === 'number' ? e.pageX : e.touches[0].pageX; + var y = typeof e.pageY === 'number' ? e.pageY : e.touches[0].pageY; + var left = x - (container.getBoundingClientRect().left + window.pageXOffset); + var top = y - (container.getBoundingClientRect().top + window.pageYOffset); + + if (direction === 'vertical') { + var a = void 0; + if (top < 0) { + a = 0; + } else if (top > containerHeight) { + a = 1; + } else { + a = Math.round(top * 100 / containerHeight) / 100; + } + + if (hsl.a !== a) { + return { + h: hsl.h, + s: hsl.s, + l: hsl.l, + a: a, + source: 'rgb' + }; + } + } else { + var _a = void 0; + if (left < 0) { + _a = 0; + } else if (left > containerWidth) { + _a = 1; + } else { + _a = Math.round(left * 100 / containerWidth) / 100; + } + + if (initialA !== _a) { + return { + h: hsl.h, + s: hsl.s, + l: hsl.l, + a: _a, + source: 'rgb' + }; + } + } + return null; +}; +},{}],287:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +var checkboardCache = {}; + +var render = exports.render = function render(c1, c2, size, serverCanvas) { + if (typeof document === 'undefined' && !serverCanvas) { + return null; + } + var canvas = serverCanvas ? new serverCanvas() : document.createElement('canvas'); + canvas.width = size * 2; + canvas.height = size * 2; + var ctx = canvas.getContext('2d'); + if (!ctx) { + return null; + } // If no context can be found, return early. + ctx.fillStyle = c1; + ctx.fillRect(0, 0, canvas.width, canvas.height); + ctx.fillStyle = c2; + ctx.fillRect(0, 0, size, size); + ctx.translate(size, size); + ctx.fillRect(0, 0, size, size); + return canvas.toDataURL(); +}; + +var get = exports.get = function get(c1, c2, size, serverCanvas) { + var key = c1 + '-' + c2 + '-' + size + (serverCanvas ? '-server' : ''); + + if (checkboardCache[key]) { + return checkboardCache[key]; + } + + var checkboard = render(c1, c2, size, serverCanvas); + checkboardCache[key] = checkboard; + return checkboard; +}; +},{}],288:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.isvalidColorString = exports.red = exports.getContrastingColor = exports.isValidHex = exports.toState = exports.simpleCheckForValidColor = undefined; + +var _each = require('lodash/each'); + +var _each2 = _interopRequireDefault(_each); + +var _tinycolor = require('tinycolor2'); + +var _tinycolor2 = _interopRequireDefault(_tinycolor); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var simpleCheckForValidColor = exports.simpleCheckForValidColor = function simpleCheckForValidColor(data) { + var keysToCheck = ['r', 'g', 'b', 'a', 'h', 's', 'l', 'v']; + var checked = 0; + var passed = 0; + (0, _each2.default)(keysToCheck, function (letter) { + if (data[letter]) { + checked += 1; + if (!isNaN(data[letter])) { + passed += 1; + } + if (letter === 's' || letter === 'l') { + var percentPatt = /^\d+%$/; + if (percentPatt.test(data[letter])) { + passed += 1; + } + } + } + }); + return checked === passed ? data : false; +}; + +var toState = exports.toState = function toState(data, oldHue) { + var color = data.hex ? (0, _tinycolor2.default)(data.hex) : (0, _tinycolor2.default)(data); + var hsl = color.toHsl(); + var hsv = color.toHsv(); + var rgb = color.toRgb(); + var hex = color.toHex(); + if (hsl.s === 0) { + hsl.h = oldHue || 0; + hsv.h = oldHue || 0; + } + var transparent = hex === '000000' && rgb.a === 0; + + return { + hsl: hsl, + hex: transparent ? 'transparent' : '#' + hex, + rgb: rgb, + hsv: hsv, + oldHue: data.h || oldHue || hsl.h, + source: data.source + }; +}; + +var isValidHex = exports.isValidHex = function isValidHex(hex) { + if (hex === 'transparent') { + return true; + } + // disable hex4 and hex8 + var lh = String(hex).charAt(0) === '#' ? 1 : 0; + return hex.length !== 4 + lh && hex.length < 7 + lh && (0, _tinycolor2.default)(hex).isValid(); +}; + +var getContrastingColor = exports.getContrastingColor = function getContrastingColor(data) { + if (!data) { + return '#fff'; + } + var col = toState(data); + if (col.hex === 'transparent') { + return 'rgba(0,0,0,0.4)'; + } + var yiq = (col.rgb.r * 299 + col.rgb.g * 587 + col.rgb.b * 114) / 1000; + return yiq >= 128 ? '#000' : '#fff'; +}; + +var red = exports.red = { + hsl: { a: 1, h: 0, l: 0.5, s: 1 }, + hex: '#ff0000', + rgb: { r: 255, g: 0, b: 0, a: 1 }, + hsv: { h: 0, s: 1, v: 1, a: 1 } +}; + +var isvalidColorString = exports.isvalidColorString = function isvalidColorString(string, type) { + var stringWithoutDegree = string.replace('°', ''); + return (0, _tinycolor2.default)(type + ' (' + stringWithoutDegree + ')')._ok; +}; +},{"lodash/each":195,"tinycolor2":305}],289:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +var calculateChange = exports.calculateChange = function calculateChange(e, direction, hsl, container) { + var containerWidth = container.clientWidth; + var containerHeight = container.clientHeight; + var x = typeof e.pageX === 'number' ? e.pageX : e.touches[0].pageX; + var y = typeof e.pageY === 'number' ? e.pageY : e.touches[0].pageY; + var left = x - (container.getBoundingClientRect().left + window.pageXOffset); + var top = y - (container.getBoundingClientRect().top + window.pageYOffset); + + if (direction === 'vertical') { + var h = void 0; + if (top < 0) { + h = 359; + } else if (top > containerHeight) { + h = 0; + } else { + var percent = -(top * 100 / containerHeight) + 100; + h = 360 * percent / 100; + } + + if (hsl.h !== h) { + return { + h: h, + s: hsl.s, + l: hsl.l, + a: hsl.a, + source: 'hsl' + }; + } + } else { + var _h = void 0; + if (left < 0) { + _h = 0; + } else if (left > containerWidth) { + _h = 359; + } else { + var _percent = left * 100 / containerWidth; + _h = 360 * _percent / 100; + } + + if (hsl.h !== _h) { + return { + h: _h, + s: hsl.s, + l: hsl.l, + a: hsl.a, + source: 'hsl' + }; + } + } + return null; +}; +},{}],290:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.handleFocus = undefined; + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /* eslint-disable no-invalid-this */ + + +var handleFocus = exports.handleFocus = function handleFocus(Component) { + var Span = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'span'; + return function (_React$Component) { + _inherits(Focus, _React$Component); + + function Focus() { + var _ref; + + var _temp, _this, _ret; + + _classCallCheck(this, Focus); + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Focus.__proto__ || Object.getPrototypeOf(Focus)).call.apply(_ref, [this].concat(args))), _this), _this.state = { focus: false }, _this.handleFocus = function () { + return _this.setState({ focus: true }); + }, _this.handleBlur = function () { + return _this.setState({ focus: false }); + }, _temp), _possibleConstructorReturn(_this, _ret); + } + + _createClass(Focus, [{ + key: 'render', + value: function render() { + return _react2.default.createElement( + Span, + { onFocus: this.handleFocus, onBlur: this.handleBlur }, + _react2.default.createElement(Component, _extends({}, this.props, this.state)) + ); + } + }]); + + return Focus; + }(_react2.default.Component); +}; +},{"react":"react"}],291:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +var calculateChange = exports.calculateChange = function calculateChange(e, hsl, container) { + var _container$getBoundin = container.getBoundingClientRect(), + containerWidth = _container$getBoundin.width, + containerHeight = _container$getBoundin.height; + + var x = typeof e.pageX === 'number' ? e.pageX : e.touches[0].pageX; + var y = typeof e.pageY === 'number' ? e.pageY : e.touches[0].pageY; + var left = x - (container.getBoundingClientRect().left + window.pageXOffset); + var top = y - (container.getBoundingClientRect().top + window.pageYOffset); + + if (left < 0) { + left = 0; + } else if (left > containerWidth) { + left = containerWidth; + } + + if (top < 0) { + top = 0; + } else if (top > containerHeight) { + top = containerHeight; + } + + var saturation = left / containerWidth; + var bright = 1 - top / containerHeight; + + return { + h: hsl.h, + s: saturation, + v: bright, + a: hsl.a, + source: 'hsv' + }; +}; +},{}],292:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.CustomPicker = exports.GooglePicker = exports.TwitterPicker = exports.SwatchesPicker = exports.SliderPicker = exports.SketchPicker = exports.PhotoshopPicker = exports.MaterialPicker = exports.HuePicker = exports.GithubPicker = exports.CompactPicker = exports.ChromePicker = exports.default = exports.CirclePicker = exports.BlockPicker = exports.AlphaPicker = undefined; + +var _Alpha = require('./components/alpha/Alpha'); + +Object.defineProperty(exports, 'AlphaPicker', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Alpha).default; + } +}); + +var _Block = require('./components/block/Block'); + +Object.defineProperty(exports, 'BlockPicker', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Block).default; + } +}); + +var _Circle = require('./components/circle/Circle'); + +Object.defineProperty(exports, 'CirclePicker', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Circle).default; + } +}); + +var _Chrome = require('./components/chrome/Chrome'); + +Object.defineProperty(exports, 'ChromePicker', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Chrome).default; + } +}); + +var _Compact = require('./components/compact/Compact'); + +Object.defineProperty(exports, 'CompactPicker', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Compact).default; + } +}); + +var _Github = require('./components/github/Github'); + +Object.defineProperty(exports, 'GithubPicker', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Github).default; + } +}); + +var _Hue = require('./components/hue/Hue'); + +Object.defineProperty(exports, 'HuePicker', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Hue).default; + } +}); + +var _Material = require('./components/material/Material'); + +Object.defineProperty(exports, 'MaterialPicker', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Material).default; + } +}); + +var _Photoshop = require('./components/photoshop/Photoshop'); + +Object.defineProperty(exports, 'PhotoshopPicker', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Photoshop).default; + } +}); + +var _Sketch = require('./components/sketch/Sketch'); + +Object.defineProperty(exports, 'SketchPicker', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Sketch).default; + } +}); + +var _Slider = require('./components/slider/Slider'); + +Object.defineProperty(exports, 'SliderPicker', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Slider).default; + } +}); + +var _Swatches = require('./components/swatches/Swatches'); + +Object.defineProperty(exports, 'SwatchesPicker', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Swatches).default; + } +}); + +var _Twitter = require('./components/twitter/Twitter'); + +Object.defineProperty(exports, 'TwitterPicker', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Twitter).default; + } +}); + +var _Google = require('./components/google/Google'); + +Object.defineProperty(exports, 'GooglePicker', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Google).default; + } +}); + +var _ColorWrap = require('./components/common/ColorWrap'); + +Object.defineProperty(exports, 'CustomPicker', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_ColorWrap).default; + } +}); + +var _Chrome2 = _interopRequireDefault(_Chrome); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +exports.default = _Chrome2.default; +},{"./components/alpha/Alpha":238,"./components/block/Block":240,"./components/chrome/Chrome":242,"./components/circle/Circle":246,"./components/common/ColorWrap":250,"./components/compact/Compact":257,"./components/github/Github":260,"./components/google/Google":262,"./components/hue/Hue":266,"./components/material/Material":268,"./components/photoshop/Photoshop":269,"./components/sketch/Sketch":275,"./components/slider/Slider":278,"./components/swatches/Swatches":282,"./components/twitter/Twitter":285}],293:[function(require,module,exports){ +(function (process){ +/** @license React v16.13.1 + * react-is.development.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +'use strict'; + + + +if (process.env.NODE_ENV !== "production") { + (function() { +'use strict'; + +// The Symbol used to tag the ReactElement-like types. If there is no native Symbol +// nor polyfill, then a plain number is used for performance. +var hasSymbol = typeof Symbol === 'function' && Symbol.for; +var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7; +var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca; +var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb; +var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc; +var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2; +var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd; +var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary +// (unstable) APIs that have been removed. Can we remove the symbols? + +var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf; +var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf; +var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0; +var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1; +var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8; +var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3; +var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4; +var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9; +var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5; +var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6; +var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7; + +function isValidElementType(type) { + return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill. + type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE); +} + +function typeOf(object) { + if (typeof object === 'object' && object !== null) { + var $$typeof = object.$$typeof; + + switch ($$typeof) { + case REACT_ELEMENT_TYPE: + var type = object.type; + + switch (type) { + case REACT_ASYNC_MODE_TYPE: + case REACT_CONCURRENT_MODE_TYPE: + case REACT_FRAGMENT_TYPE: + case REACT_PROFILER_TYPE: + case REACT_STRICT_MODE_TYPE: + case REACT_SUSPENSE_TYPE: + return type; + + default: + var $$typeofType = type && type.$$typeof; + + switch ($$typeofType) { + case REACT_CONTEXT_TYPE: + case REACT_FORWARD_REF_TYPE: + case REACT_LAZY_TYPE: + case REACT_MEMO_TYPE: + case REACT_PROVIDER_TYPE: + return $$typeofType; + + default: + return $$typeof; + } + + } + + case REACT_PORTAL_TYPE: + return $$typeof; + } + } + + return undefined; +} // AsyncMode is deprecated along with isAsyncMode + +var AsyncMode = REACT_ASYNC_MODE_TYPE; +var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE; +var ContextConsumer = REACT_CONTEXT_TYPE; +var ContextProvider = REACT_PROVIDER_TYPE; +var Element = REACT_ELEMENT_TYPE; +var ForwardRef = REACT_FORWARD_REF_TYPE; +var Fragment = REACT_FRAGMENT_TYPE; +var Lazy = REACT_LAZY_TYPE; +var Memo = REACT_MEMO_TYPE; +var Portal = REACT_PORTAL_TYPE; +var Profiler = REACT_PROFILER_TYPE; +var StrictMode = REACT_STRICT_MODE_TYPE; +var Suspense = REACT_SUSPENSE_TYPE; +var hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated + +function isAsyncMode(object) { + { + if (!hasWarnedAboutDeprecatedIsAsyncMode) { + hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint + + console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.'); + } + } + + return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE; +} +function isConcurrentMode(object) { + return typeOf(object) === REACT_CONCURRENT_MODE_TYPE; +} +function isContextConsumer(object) { + return typeOf(object) === REACT_CONTEXT_TYPE; +} +function isContextProvider(object) { + return typeOf(object) === REACT_PROVIDER_TYPE; +} +function isElement(object) { + return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; +} +function isForwardRef(object) { + return typeOf(object) === REACT_FORWARD_REF_TYPE; +} +function isFragment(object) { + return typeOf(object) === REACT_FRAGMENT_TYPE; +} +function isLazy(object) { + return typeOf(object) === REACT_LAZY_TYPE; +} +function isMemo(object) { + return typeOf(object) === REACT_MEMO_TYPE; +} +function isPortal(object) { + return typeOf(object) === REACT_PORTAL_TYPE; +} +function isProfiler(object) { + return typeOf(object) === REACT_PROFILER_TYPE; +} +function isStrictMode(object) { + return typeOf(object) === REACT_STRICT_MODE_TYPE; +} +function isSuspense(object) { + return typeOf(object) === REACT_SUSPENSE_TYPE; +} + +exports.AsyncMode = AsyncMode; +exports.ConcurrentMode = ConcurrentMode; +exports.ContextConsumer = ContextConsumer; +exports.ContextProvider = ContextProvider; +exports.Element = Element; +exports.ForwardRef = ForwardRef; +exports.Fragment = Fragment; +exports.Lazy = Lazy; +exports.Memo = Memo; +exports.Portal = Portal; +exports.Profiler = Profiler; +exports.StrictMode = StrictMode; +exports.Suspense = Suspense; +exports.isAsyncMode = isAsyncMode; +exports.isConcurrentMode = isConcurrentMode; +exports.isContextConsumer = isContextConsumer; +exports.isContextProvider = isContextProvider; +exports.isElement = isElement; +exports.isForwardRef = isForwardRef; +exports.isFragment = isFragment; +exports.isLazy = isLazy; +exports.isMemo = isMemo; +exports.isPortal = isPortal; +exports.isProfiler = isProfiler; +exports.isStrictMode = isStrictMode; +exports.isSuspense = isSuspense; +exports.isValidElementType = isValidElementType; +exports.typeOf = typeOf; + })(); +} + +}).call(this,require('_process')) + +},{"_process":3}],294:[function(require,module,exports){ +/** @license React v16.13.1 + * react-is.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +'use strict';var b="function"===typeof Symbol&&Symbol.for,c=b?Symbol.for("react.element"):60103,d=b?Symbol.for("react.portal"):60106,e=b?Symbol.for("react.fragment"):60107,f=b?Symbol.for("react.strict_mode"):60108,g=b?Symbol.for("react.profiler"):60114,h=b?Symbol.for("react.provider"):60109,k=b?Symbol.for("react.context"):60110,l=b?Symbol.for("react.async_mode"):60111,m=b?Symbol.for("react.concurrent_mode"):60111,n=b?Symbol.for("react.forward_ref"):60112,p=b?Symbol.for("react.suspense"):60113,q=b? +Symbol.for("react.suspense_list"):60120,r=b?Symbol.for("react.memo"):60115,t=b?Symbol.for("react.lazy"):60116,v=b?Symbol.for("react.block"):60121,w=b?Symbol.for("react.fundamental"):60117,x=b?Symbol.for("react.responder"):60118,y=b?Symbol.for("react.scope"):60119; +function z(a){if("object"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d; +exports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return"object"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t}; +exports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p}; +exports.isValidElementType=function(a){return"string"===typeof a||"function"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||"object"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z; + +},{}],295:[function(require,module,exports){ +(function (process){ +'use strict'; + +if (process.env.NODE_ENV === 'production') { + module.exports = require('./cjs/react-is.production.min.js'); +} else { + module.exports = require('./cjs/react-is.development.js'); +} + +}).call(this,require('_process')) + +},{"./cjs/react-is.development.js":293,"./cjs/react-is.production.min.js":294,"_process":3}],296:[function(require,module,exports){ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("prop-types"),require("react"),require("signature_pad"),require("trim-canvas")):"function"==typeof define&&define.amd?define(["prop-types","react","signature_pad","trim-canvas"],t):"object"==typeof exports?exports.SignatureCanvas=t(require("prop-types"),require("react"),require("signature_pad"),require("trim-canvas")):e.SignatureCanvas=t(e["prop-types"],e.react,e.signature_pad,e["trim-canvas"])}(this,function(e,t,n,r){return function(e){function t(r){if(n[r])return n[r].exports;var a=n[r]={exports:{},id:r,loaded:!1};return e[r].call(a.exports,a,a.exports,t),a.loaded=!0,a.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function a(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function u(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=Object.assign||function(e){for(var t=1;t 1 && arguments[1] !== undefined ? arguments[1] : 'span'; + + return function (_React$Component) { + _inherits(Active, _React$Component); + + function Active() { + var _ref; + + var _temp, _this, _ret; + + _classCallCheck(this, Active); + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Active.__proto__ || Object.getPrototypeOf(Active)).call.apply(_ref, [this].concat(args))), _this), _this.state = { active: false }, _this.handleMouseDown = function () { + return _this.setState({ active: true }); + }, _this.handleMouseUp = function () { + return _this.setState({ active: false }); + }, _this.render = function () { + return _react2.default.createElement( + Span, + { onMouseDown: _this.handleMouseDown, onMouseUp: _this.handleMouseUp }, + _react2.default.createElement(Component, _extends({}, _this.props, _this.state)) + ); + }, _temp), _possibleConstructorReturn(_this, _ret); + } + + return Active; + }(_react2.default.Component); +}; + +exports.default = active; +},{"react":"react"}],299:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.hover = undefined; + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var hover = exports.hover = function hover(Component) { + var Span = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'span'; + + return function (_React$Component) { + _inherits(Hover, _React$Component); + + function Hover() { + var _ref; + + var _temp, _this, _ret; + + _classCallCheck(this, Hover); + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Hover.__proto__ || Object.getPrototypeOf(Hover)).call.apply(_ref, [this].concat(args))), _this), _this.state = { hover: false }, _this.handleMouseOver = function () { + return _this.setState({ hover: true }); + }, _this.handleMouseOut = function () { + return _this.setState({ hover: false }); + }, _this.render = function () { + return _react2.default.createElement( + Span, + { onMouseOver: _this.handleMouseOver, onMouseOut: _this.handleMouseOut }, + _react2.default.createElement(Component, _extends({}, _this.props, _this.state)) + ); + }, _temp), _possibleConstructorReturn(_this, _ret); + } + + return Hover; + }(_react2.default.Component); +}; + +exports.default = hover; +},{"react":"react"}],300:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.flattenNames = undefined; + +var _isString2 = require('lodash/isString'); + +var _isString3 = _interopRequireDefault(_isString2); + +var _forOwn2 = require('lodash/forOwn'); + +var _forOwn3 = _interopRequireDefault(_forOwn2); + +var _isPlainObject2 = require('lodash/isPlainObject'); + +var _isPlainObject3 = _interopRequireDefault(_isPlainObject2); + +var _map2 = require('lodash/map'); + +var _map3 = _interopRequireDefault(_map2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var flattenNames = exports.flattenNames = function flattenNames() { + var things = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; + + var names = []; + + (0, _map3.default)(things, function (thing) { + if (Array.isArray(thing)) { + flattenNames(thing).map(function (name) { + return names.push(name); + }); + } else if ((0, _isPlainObject3.default)(thing)) { + (0, _forOwn3.default)(thing, function (value, key) { + value === true && names.push(key); + names.push(key + '-' + value); + }); + } else if ((0, _isString3.default)(thing)) { + names.push(thing); + } + }); + + return names; +}; + +exports.default = flattenNames; +},{"lodash/forOwn":198,"lodash/isPlainObject":212,"lodash/isString":214,"lodash/map":220}],301:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ReactCSS = exports.loop = exports.handleActive = exports.handleHover = exports.hover = undefined; + +var _flattenNames = require('./flattenNames'); + +var _flattenNames2 = _interopRequireDefault(_flattenNames); + +var _mergeClasses = require('./mergeClasses'); + +var _mergeClasses2 = _interopRequireDefault(_mergeClasses); + +var _autoprefix = require('./autoprefix'); + +var _autoprefix2 = _interopRequireDefault(_autoprefix); + +var _hover2 = require('./components/hover'); + +var _hover3 = _interopRequireDefault(_hover2); + +var _active = require('./components/active'); + +var _active2 = _interopRequireDefault(_active); + +var _loop2 = require('./loop'); + +var _loop3 = _interopRequireDefault(_loop2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +exports.hover = _hover3.default; +exports.handleHover = _hover3.default; +exports.handleActive = _active2.default; +exports.loop = _loop3.default; +var ReactCSS = exports.ReactCSS = function ReactCSS(classes) { + for (var _len = arguments.length, activations = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + activations[_key - 1] = arguments[_key]; + } + + var activeNames = (0, _flattenNames2.default)(activations); + var merged = (0, _mergeClasses2.default)(classes, activeNames); + return (0, _autoprefix2.default)(merged); +}; + +exports.default = ReactCSS; +},{"./autoprefix":297,"./components/active":298,"./components/hover":299,"./flattenNames":300,"./loop":302,"./mergeClasses":303}],302:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +var loopable = function loopable(i, length) { + var props = {}; + var setProp = function setProp(name) { + var value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + + props[name] = value; + }; + + i === 0 && setProp('first-child'); + i === length - 1 && setProp('last-child'); + (i === 0 || i % 2 === 0) && setProp('even'); + Math.abs(i % 2) === 1 && setProp('odd'); + setProp('nth-child', i); + + return props; +}; + +exports.default = loopable; +},{}],303:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.mergeClasses = undefined; + +var _forOwn2 = require('lodash/forOwn'); + +var _forOwn3 = _interopRequireDefault(_forOwn2); + +var _cloneDeep2 = require('lodash/cloneDeep'); + +var _cloneDeep3 = _interopRequireDefault(_cloneDeep2); + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var mergeClasses = exports.mergeClasses = function mergeClasses(classes) { + var activeNames = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; + + var styles = classes.default && (0, _cloneDeep3.default)(classes.default) || {}; + activeNames.map(function (name) { + var toMerge = classes[name]; + if (toMerge) { + (0, _forOwn3.default)(toMerge, function (value, key) { + if (!styles[key]) { + styles[key] = {}; + } + + styles[key] = _extends({}, styles[key], toMerge[key]); + }); + } + + return name; + }); + return styles; +}; + +exports.default = mergeClasses; +},{"lodash/cloneDeep":192,"lodash/forOwn":198}],304:[function(require,module,exports){ +/*! + * Signature Pad v2.3.2 + * https://github.com/szimek/signature_pad + * + * Copyright 2017 Szymon Nowak + * Released under the MIT license + * + * The main idea and some parts of the code (e.g. drawing variable width Bézier curve) are taken from: + * http://corner.squareup.com/2012/07/smoother-signatures.html + * + * Implementation of interpolation using cubic Bézier curves is taken from: + * http://benknowscode.wordpress.com/2012/09/14/path-interpolation-using-cubic-bezier-and-control-point-estimation-in-javascript + * + * Algorithm for approximated length of a Bézier curve is taken from: + * http://www.lemoda.net/maths/bezier-length/index.html + * + */ + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global.SignaturePad = factory()); +}(this, (function () { 'use strict'; + +function Point(x, y, time) { + this.x = x; + this.y = y; + this.time = time || new Date().getTime(); +} + +Point.prototype.velocityFrom = function (start) { + return this.time !== start.time ? this.distanceTo(start) / (this.time - start.time) : 1; +}; + +Point.prototype.distanceTo = function (start) { + return Math.sqrt(Math.pow(this.x - start.x, 2) + Math.pow(this.y - start.y, 2)); +}; + +Point.prototype.equals = function (other) { + return this.x === other.x && this.y === other.y && this.time === other.time; +}; + +function Bezier(startPoint, control1, control2, endPoint) { + this.startPoint = startPoint; + this.control1 = control1; + this.control2 = control2; + this.endPoint = endPoint; +} + +// Returns approximated length. +Bezier.prototype.length = function () { + var steps = 10; + var length = 0; + var px = void 0; + var py = void 0; + + for (var i = 0; i <= steps; i += 1) { + var t = i / steps; + var cx = this._point(t, this.startPoint.x, this.control1.x, this.control2.x, this.endPoint.x); + var cy = this._point(t, this.startPoint.y, this.control1.y, this.control2.y, this.endPoint.y); + if (i > 0) { + var xdiff = cx - px; + var ydiff = cy - py; + length += Math.sqrt(xdiff * xdiff + ydiff * ydiff); + } + px = cx; + py = cy; + } + + return length; +}; + +/* eslint-disable no-multi-spaces, space-in-parens */ +Bezier.prototype._point = function (t, start, c1, c2, end) { + return start * (1.0 - t) * (1.0 - t) * (1.0 - t) + 3.0 * c1 * (1.0 - t) * (1.0 - t) * t + 3.0 * c2 * (1.0 - t) * t * t + end * t * t * t; +}; + +/* eslint-disable */ + +// http://stackoverflow.com/a/27078401/815507 +function throttle(func, wait, options) { + var context, args, result; + var timeout = null; + var previous = 0; + if (!options) options = {}; + var later = function later() { + previous = options.leading === false ? 0 : Date.now(); + timeout = null; + result = func.apply(context, args); + if (!timeout) context = args = null; + }; + return function () { + var now = Date.now(); + if (!previous && options.leading === false) previous = now; + var remaining = wait - (now - previous); + context = this; + args = arguments; + if (remaining <= 0 || remaining > wait) { + if (timeout) { + clearTimeout(timeout); + timeout = null; + } + previous = now; + result = func.apply(context, args); + if (!timeout) context = args = null; + } else if (!timeout && options.trailing !== false) { + timeout = setTimeout(later, remaining); + } + return result; + }; +} + +function SignaturePad(canvas, options) { + var self = this; + var opts = options || {}; + + this.velocityFilterWeight = opts.velocityFilterWeight || 0.7; + this.minWidth = opts.minWidth || 0.5; + this.maxWidth = opts.maxWidth || 2.5; + this.throttle = 'throttle' in opts ? opts.throttle : 16; // in miliseconds + this.minDistance = 'minDistance' in opts ? opts.minDistance : 5; + + if (this.throttle) { + this._strokeMoveUpdate = throttle(SignaturePad.prototype._strokeUpdate, this.throttle); + } else { + this._strokeMoveUpdate = SignaturePad.prototype._strokeUpdate; + } + + this.dotSize = opts.dotSize || function () { + return (this.minWidth + this.maxWidth) / 2; + }; + this.penColor = opts.penColor || 'black'; + this.backgroundColor = opts.backgroundColor || 'rgba(0,0,0,0)'; + this.onBegin = opts.onBegin; + this.onEnd = opts.onEnd; + + this._canvas = canvas; + this._ctx = canvas.getContext('2d'); + this.clear(); + + // We need add these inline so they are available to unbind while still having + // access to 'self' we could use _.bind but it's not worth adding a dependency. + this._handleMouseDown = function (event) { + if (event.which === 1) { + self._mouseButtonDown = true; + self._strokeBegin(event); + } + }; + + this._handleMouseMove = function (event) { + if (self._mouseButtonDown) { + self._strokeMoveUpdate(event); + } + }; + + this._handleMouseUp = function (event) { + if (event.which === 1 && self._mouseButtonDown) { + self._mouseButtonDown = false; + self._strokeEnd(event); + } + }; + + this._handleTouchStart = function (event) { + if (event.targetTouches.length === 1) { + var touch = event.changedTouches[0]; + self._strokeBegin(touch); + } + }; + + this._handleTouchMove = function (event) { + // Prevent scrolling. + event.preventDefault(); + + var touch = event.targetTouches[0]; + self._strokeMoveUpdate(touch); + }; + + this._handleTouchEnd = function (event) { + var wasCanvasTouched = event.target === self._canvas; + if (wasCanvasTouched) { + event.preventDefault(); + self._strokeEnd(event); + } + }; + + // Enable mouse and touch event handlers + this.on(); +} + +// Public methods +SignaturePad.prototype.clear = function () { + var ctx = this._ctx; + var canvas = this._canvas; + + ctx.fillStyle = this.backgroundColor; + ctx.clearRect(0, 0, canvas.width, canvas.height); + ctx.fillRect(0, 0, canvas.width, canvas.height); + + this._data = []; + this._reset(); + this._isEmpty = true; +}; + +SignaturePad.prototype.fromDataURL = function (dataUrl) { + var _this = this; + + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + var image = new Image(); + var ratio = options.ratio || window.devicePixelRatio || 1; + var width = options.width || this._canvas.width / ratio; + var height = options.height || this._canvas.height / ratio; + + this._reset(); + image.src = dataUrl; + image.onload = function () { + _this._ctx.drawImage(image, 0, 0, width, height); + }; + this._isEmpty = false; +}; + +SignaturePad.prototype.toDataURL = function (type) { + var _canvas; + + switch (type) { + case 'image/svg+xml': + return this._toSVG(); + default: + for (var _len = arguments.length, options = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + options[_key - 1] = arguments[_key]; + } + + return (_canvas = this._canvas).toDataURL.apply(_canvas, [type].concat(options)); + } +}; + +SignaturePad.prototype.on = function () { + this._handleMouseEvents(); + this._handleTouchEvents(); +}; + +SignaturePad.prototype.off = function () { + this._canvas.removeEventListener('mousedown', this._handleMouseDown); + this._canvas.removeEventListener('mousemove', this._handleMouseMove); + document.removeEventListener('mouseup', this._handleMouseUp); + + this._canvas.removeEventListener('touchstart', this._handleTouchStart); + this._canvas.removeEventListener('touchmove', this._handleTouchMove); + this._canvas.removeEventListener('touchend', this._handleTouchEnd); +}; + +SignaturePad.prototype.isEmpty = function () { + return this._isEmpty; +}; + +// Private methods +SignaturePad.prototype._strokeBegin = function (event) { + this._data.push([]); + this._reset(); + this._strokeUpdate(event); + + if (typeof this.onBegin === 'function') { + this.onBegin(event); + } +}; + +SignaturePad.prototype._strokeUpdate = function (event) { + var x = event.clientX; + var y = event.clientY; + + var point = this._createPoint(x, y); + var lastPointGroup = this._data[this._data.length - 1]; + var lastPoint = lastPointGroup && lastPointGroup[lastPointGroup.length - 1]; + var isLastPointTooClose = lastPoint && point.distanceTo(lastPoint) < this.minDistance; + + // Skip this point if it's too close to the previous one + if (!(lastPoint && isLastPointTooClose)) { + var _addPoint = this._addPoint(point), + curve = _addPoint.curve, + widths = _addPoint.widths; + + if (curve && widths) { + this._drawCurve(curve, widths.start, widths.end); + } + + this._data[this._data.length - 1].push({ + x: point.x, + y: point.y, + time: point.time, + color: this.penColor + }); + } +}; + +SignaturePad.prototype._strokeEnd = function (event) { + var canDrawCurve = this.points.length > 2; + var point = this.points[0]; // Point instance + + if (!canDrawCurve && point) { + this._drawDot(point); + } + + if (point) { + var lastPointGroup = this._data[this._data.length - 1]; + var lastPoint = lastPointGroup[lastPointGroup.length - 1]; // plain object + + // When drawing a dot, there's only one point in a group, so without this check + // such group would end up with exactly the same 2 points. + if (!point.equals(lastPoint)) { + lastPointGroup.push({ + x: point.x, + y: point.y, + time: point.time, + color: this.penColor + }); + } + } + + if (typeof this.onEnd === 'function') { + this.onEnd(event); + } +}; + +SignaturePad.prototype._handleMouseEvents = function () { + this._mouseButtonDown = false; + + this._canvas.addEventListener('mousedown', this._handleMouseDown); + this._canvas.addEventListener('mousemove', this._handleMouseMove); + document.addEventListener('mouseup', this._handleMouseUp); +}; + +SignaturePad.prototype._handleTouchEvents = function () { + // Pass touch events to canvas element on mobile IE11 and Edge. + this._canvas.style.msTouchAction = 'none'; + this._canvas.style.touchAction = 'none'; + + this._canvas.addEventListener('touchstart', this._handleTouchStart); + this._canvas.addEventListener('touchmove', this._handleTouchMove); + this._canvas.addEventListener('touchend', this._handleTouchEnd); +}; + +SignaturePad.prototype._reset = function () { + this.points = []; + this._lastVelocity = 0; + this._lastWidth = (this.minWidth + this.maxWidth) / 2; + this._ctx.fillStyle = this.penColor; +}; + +SignaturePad.prototype._createPoint = function (x, y, time) { + var rect = this._canvas.getBoundingClientRect(); + + return new Point(x - rect.left, y - rect.top, time || new Date().getTime()); +}; + +SignaturePad.prototype._addPoint = function (point) { + var points = this.points; + var tmp = void 0; + + points.push(point); + + if (points.length > 2) { + // To reduce the initial lag make it work with 3 points + // by copying the first point to the beginning. + if (points.length === 3) points.unshift(points[0]); + + tmp = this._calculateCurveControlPoints(points[0], points[1], points[2]); + var c2 = tmp.c2; + tmp = this._calculateCurveControlPoints(points[1], points[2], points[3]); + var c3 = tmp.c1; + var curve = new Bezier(points[1], c2, c3, points[2]); + var widths = this._calculateCurveWidths(curve); + + // Remove the first element from the list, + // so that we always have no more than 4 points in points array. + points.shift(); + + return { curve: curve, widths: widths }; + } + + return {}; +}; + +SignaturePad.prototype._calculateCurveControlPoints = function (s1, s2, s3) { + var dx1 = s1.x - s2.x; + var dy1 = s1.y - s2.y; + var dx2 = s2.x - s3.x; + var dy2 = s2.y - s3.y; + + var m1 = { x: (s1.x + s2.x) / 2.0, y: (s1.y + s2.y) / 2.0 }; + var m2 = { x: (s2.x + s3.x) / 2.0, y: (s2.y + s3.y) / 2.0 }; + + var l1 = Math.sqrt(dx1 * dx1 + dy1 * dy1); + var l2 = Math.sqrt(dx2 * dx2 + dy2 * dy2); + + var dxm = m1.x - m2.x; + var dym = m1.y - m2.y; + + var k = l2 / (l1 + l2); + var cm = { x: m2.x + dxm * k, y: m2.y + dym * k }; + + var tx = s2.x - cm.x; + var ty = s2.y - cm.y; + + return { + c1: new Point(m1.x + tx, m1.y + ty), + c2: new Point(m2.x + tx, m2.y + ty) + }; +}; + +SignaturePad.prototype._calculateCurveWidths = function (curve) { + var startPoint = curve.startPoint; + var endPoint = curve.endPoint; + var widths = { start: null, end: null }; + + var velocity = this.velocityFilterWeight * endPoint.velocityFrom(startPoint) + (1 - this.velocityFilterWeight) * this._lastVelocity; + + var newWidth = this._strokeWidth(velocity); + + widths.start = this._lastWidth; + widths.end = newWidth; + + this._lastVelocity = velocity; + this._lastWidth = newWidth; + + return widths; +}; + +SignaturePad.prototype._strokeWidth = function (velocity) { + return Math.max(this.maxWidth / (velocity + 1), this.minWidth); +}; + +SignaturePad.prototype._drawPoint = function (x, y, size) { + var ctx = this._ctx; + + ctx.moveTo(x, y); + ctx.arc(x, y, size, 0, 2 * Math.PI, false); + this._isEmpty = false; +}; + +SignaturePad.prototype._drawCurve = function (curve, startWidth, endWidth) { + var ctx = this._ctx; + var widthDelta = endWidth - startWidth; + var drawSteps = Math.floor(curve.length()); + + ctx.beginPath(); + + for (var i = 0; i < drawSteps; i += 1) { + // Calculate the Bezier (x, y) coordinate for this step. + var t = i / drawSteps; + var tt = t * t; + var ttt = tt * t; + var u = 1 - t; + var uu = u * u; + var uuu = uu * u; + + var x = uuu * curve.startPoint.x; + x += 3 * uu * t * curve.control1.x; + x += 3 * u * tt * curve.control2.x; + x += ttt * curve.endPoint.x; + + var y = uuu * curve.startPoint.y; + y += 3 * uu * t * curve.control1.y; + y += 3 * u * tt * curve.control2.y; + y += ttt * curve.endPoint.y; + + var width = startWidth + ttt * widthDelta; + this._drawPoint(x, y, width); + } + + ctx.closePath(); + ctx.fill(); +}; + +SignaturePad.prototype._drawDot = function (point) { + var ctx = this._ctx; + var width = typeof this.dotSize === 'function' ? this.dotSize() : this.dotSize; + + ctx.beginPath(); + this._drawPoint(point.x, point.y, width); + ctx.closePath(); + ctx.fill(); +}; + +SignaturePad.prototype._fromData = function (pointGroups, drawCurve, drawDot) { + for (var i = 0; i < pointGroups.length; i += 1) { + var group = pointGroups[i]; + + if (group.length > 1) { + for (var j = 0; j < group.length; j += 1) { + var rawPoint = group[j]; + var point = new Point(rawPoint.x, rawPoint.y, rawPoint.time); + var color = rawPoint.color; + + if (j === 0) { + // First point in a group. Nothing to draw yet. + + // All points in the group have the same color, so it's enough to set + // penColor just at the beginning. + this.penColor = color; + this._reset(); + + this._addPoint(point); + } else if (j !== group.length - 1) { + // Middle point in a group. + var _addPoint2 = this._addPoint(point), + curve = _addPoint2.curve, + widths = _addPoint2.widths; + + if (curve && widths) { + drawCurve(curve, widths, color); + } + } else { + // Last point in a group. Do nothing. + } + } + } else { + this._reset(); + var _rawPoint = group[0]; + drawDot(_rawPoint); + } + } +}; + +SignaturePad.prototype._toSVG = function () { + var _this2 = this; + + var pointGroups = this._data; + var canvas = this._canvas; + var ratio = Math.max(window.devicePixelRatio || 1, 1); + var minX = 0; + var minY = 0; + var maxX = canvas.width / ratio; + var maxY = canvas.height / ratio; + var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg'); + + svg.setAttributeNS(null, 'width', canvas.width); + svg.setAttributeNS(null, 'height', canvas.height); + + this._fromData(pointGroups, function (curve, widths, color) { + var path = document.createElement('path'); + + // Need to check curve for NaN values, these pop up when drawing + // lines on the canvas that are not continuous. E.g. Sharp corners + // or stopping mid-stroke and than continuing without lifting mouse. + if (!isNaN(curve.control1.x) && !isNaN(curve.control1.y) && !isNaN(curve.control2.x) && !isNaN(curve.control2.y)) { + var attr = 'M ' + curve.startPoint.x.toFixed(3) + ',' + curve.startPoint.y.toFixed(3) + ' ' + ('C ' + curve.control1.x.toFixed(3) + ',' + curve.control1.y.toFixed(3) + ' ') + (curve.control2.x.toFixed(3) + ',' + curve.control2.y.toFixed(3) + ' ') + (curve.endPoint.x.toFixed(3) + ',' + curve.endPoint.y.toFixed(3)); + + path.setAttribute('d', attr); + path.setAttribute('stroke-width', (widths.end * 2.25).toFixed(3)); + path.setAttribute('stroke', color); + path.setAttribute('fill', 'none'); + path.setAttribute('stroke-linecap', 'round'); + + svg.appendChild(path); + } + }, function (rawPoint) { + var circle = document.createElement('circle'); + var dotSize = typeof _this2.dotSize === 'function' ? _this2.dotSize() : _this2.dotSize; + circle.setAttribute('r', dotSize); + circle.setAttribute('cx', rawPoint.x); + circle.setAttribute('cy', rawPoint.y); + circle.setAttribute('fill', rawPoint.color); + + svg.appendChild(circle); + }); + + var prefix = 'data:image/svg+xml;base64,'; + var header = ''; + var body = svg.innerHTML; + + // IE hack for missing innerHTML property on SVGElement + if (body === undefined) { + var dummy = document.createElement('dummy'); + var nodes = svg.childNodes; + dummy.innerHTML = ''; + + for (var i = 0; i < nodes.length; i += 1) { + dummy.appendChild(nodes[i].cloneNode(true)); + } + + body = dummy.innerHTML; + } + + var footer = ''; + var data = header + body + footer; + + return prefix + btoa(data); +}; + +SignaturePad.prototype.fromData = function (pointGroups) { + var _this3 = this; + + this.clear(); + + this._fromData(pointGroups, function (curve, widths) { + return _this3._drawCurve(curve, widths.start, widths.end); + }, function (rawPoint) { + return _this3._drawDot(rawPoint); + }); + + this._data = pointGroups; +}; + +SignaturePad.prototype.toData = function () { + return this._data; +}; + +return SignaturePad; + +}))); + +},{}],305:[function(require,module,exports){ +// TinyColor v1.4.2 +// https://github.com/bgrins/TinyColor +// Brian Grinstead, MIT License + +(function(Math) { + +var trimLeft = /^\s+/, + trimRight = /\s+$/, + tinyCounter = 0, + mathRound = Math.round, + mathMin = Math.min, + mathMax = Math.max, + mathRandom = Math.random; + +function tinycolor (color, opts) { + + color = (color) ? color : ''; + opts = opts || { }; + + // If input is already a tinycolor, return itself + if (color instanceof tinycolor) { + return color; + } + // If we are called as a function, call using new instead + if (!(this instanceof tinycolor)) { + return new tinycolor(color, opts); + } + + var rgb = inputToRGB(color); + this._originalInput = color, + this._r = rgb.r, + this._g = rgb.g, + this._b = rgb.b, + this._a = rgb.a, + this._roundA = mathRound(100*this._a) / 100, + this._format = opts.format || rgb.format; + this._gradientType = opts.gradientType; + + // Don't let the range of [0,255] come back in [0,1]. + // Potentially lose a little bit of precision here, but will fix issues where + // .5 gets interpreted as half of the total, instead of half of 1 + // If it was supposed to be 128, this was already taken care of by `inputToRgb` + if (this._r < 1) { this._r = mathRound(this._r); } + if (this._g < 1) { this._g = mathRound(this._g); } + if (this._b < 1) { this._b = mathRound(this._b); } + + this._ok = rgb.ok; + this._tc_id = tinyCounter++; +} + +tinycolor.prototype = { + isDark: function() { + return this.getBrightness() < 128; + }, + isLight: function() { + return !this.isDark(); + }, + isValid: function() { + return this._ok; + }, + getOriginalInput: function() { + return this._originalInput; + }, + getFormat: function() { + return this._format; + }, + getAlpha: function() { + return this._a; + }, + getBrightness: function() { + //http://www.w3.org/TR/AERT#color-contrast + var rgb = this.toRgb(); + return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000; + }, + getLuminance: function() { + //http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef + var rgb = this.toRgb(); + var RsRGB, GsRGB, BsRGB, R, G, B; + RsRGB = rgb.r/255; + GsRGB = rgb.g/255; + BsRGB = rgb.b/255; + + if (RsRGB <= 0.03928) {R = RsRGB / 12.92;} else {R = Math.pow(((RsRGB + 0.055) / 1.055), 2.4);} + if (GsRGB <= 0.03928) {G = GsRGB / 12.92;} else {G = Math.pow(((GsRGB + 0.055) / 1.055), 2.4);} + if (BsRGB <= 0.03928) {B = BsRGB / 12.92;} else {B = Math.pow(((BsRGB + 0.055) / 1.055), 2.4);} + return (0.2126 * R) + (0.7152 * G) + (0.0722 * B); + }, + setAlpha: function(value) { + this._a = boundAlpha(value); + this._roundA = mathRound(100*this._a) / 100; + return this; + }, + toHsv: function() { + var hsv = rgbToHsv(this._r, this._g, this._b); + return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this._a }; + }, + toHsvString: function() { + var hsv = rgbToHsv(this._r, this._g, this._b); + var h = mathRound(hsv.h * 360), s = mathRound(hsv.s * 100), v = mathRound(hsv.v * 100); + return (this._a == 1) ? + "hsv(" + h + ", " + s + "%, " + v + "%)" : + "hsva(" + h + ", " + s + "%, " + v + "%, "+ this._roundA + ")"; + }, + toHsl: function() { + var hsl = rgbToHsl(this._r, this._g, this._b); + return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this._a }; + }, + toHslString: function() { + var hsl = rgbToHsl(this._r, this._g, this._b); + var h = mathRound(hsl.h * 360), s = mathRound(hsl.s * 100), l = mathRound(hsl.l * 100); + return (this._a == 1) ? + "hsl(" + h + ", " + s + "%, " + l + "%)" : + "hsla(" + h + ", " + s + "%, " + l + "%, "+ this._roundA + ")"; + }, + toHex: function(allow3Char) { + return rgbToHex(this._r, this._g, this._b, allow3Char); + }, + toHexString: function(allow3Char) { + return '#' + this.toHex(allow3Char); + }, + toHex8: function(allow4Char) { + return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char); + }, + toHex8String: function(allow4Char) { + return '#' + this.toHex8(allow4Char); + }, + toRgb: function() { + return { r: mathRound(this._r), g: mathRound(this._g), b: mathRound(this._b), a: this._a }; + }, + toRgbString: function() { + return (this._a == 1) ? + "rgb(" + mathRound(this._r) + ", " + mathRound(this._g) + ", " + mathRound(this._b) + ")" : + "rgba(" + mathRound(this._r) + ", " + mathRound(this._g) + ", " + mathRound(this._b) + ", " + this._roundA + ")"; + }, + toPercentageRgb: function() { + return { r: mathRound(bound01(this._r, 255) * 100) + "%", g: mathRound(bound01(this._g, 255) * 100) + "%", b: mathRound(bound01(this._b, 255) * 100) + "%", a: this._a }; + }, + toPercentageRgbString: function() { + return (this._a == 1) ? + "rgb(" + mathRound(bound01(this._r, 255) * 100) + "%, " + mathRound(bound01(this._g, 255) * 100) + "%, " + mathRound(bound01(this._b, 255) * 100) + "%)" : + "rgba(" + mathRound(bound01(this._r, 255) * 100) + "%, " + mathRound(bound01(this._g, 255) * 100) + "%, " + mathRound(bound01(this._b, 255) * 100) + "%, " + this._roundA + ")"; + }, + toName: function() { + if (this._a === 0) { + return "transparent"; + } + + if (this._a < 1) { + return false; + } + + return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false; + }, + toFilter: function(secondColor) { + var hex8String = '#' + rgbaToArgbHex(this._r, this._g, this._b, this._a); + var secondHex8String = hex8String; + var gradientType = this._gradientType ? "GradientType = 1, " : ""; + + if (secondColor) { + var s = tinycolor(secondColor); + secondHex8String = '#' + rgbaToArgbHex(s._r, s._g, s._b, s._a); + } + + return "progid:DXImageTransform.Microsoft.gradient("+gradientType+"startColorstr="+hex8String+",endColorstr="+secondHex8String+")"; + }, + toString: function(format) { + var formatSet = !!format; + format = format || this._format; + + var formattedString = false; + var hasAlpha = this._a < 1 && this._a >= 0; + var needsAlphaFormat = !formatSet && hasAlpha && (format === "hex" || format === "hex6" || format === "hex3" || format === "hex4" || format === "hex8" || format === "name"); + + if (needsAlphaFormat) { + // Special case for "transparent", all other non-alpha formats + // will return rgba when there is transparency. + if (format === "name" && this._a === 0) { + return this.toName(); + } + return this.toRgbString(); + } + if (format === "rgb") { + formattedString = this.toRgbString(); + } + if (format === "prgb") { + formattedString = this.toPercentageRgbString(); + } + if (format === "hex" || format === "hex6") { + formattedString = this.toHexString(); + } + if (format === "hex3") { + formattedString = this.toHexString(true); + } + if (format === "hex4") { + formattedString = this.toHex8String(true); + } + if (format === "hex8") { + formattedString = this.toHex8String(); + } + if (format === "name") { + formattedString = this.toName(); + } + if (format === "hsl") { + formattedString = this.toHslString(); + } + if (format === "hsv") { + formattedString = this.toHsvString(); + } + + return formattedString || this.toHexString(); + }, + clone: function() { + return tinycolor(this.toString()); + }, + + _applyModification: function(fn, args) { + var color = fn.apply(null, [this].concat([].slice.call(args))); + this._r = color._r; + this._g = color._g; + this._b = color._b; + this.setAlpha(color._a); + return this; + }, + lighten: function() { + return this._applyModification(lighten, arguments); + }, + brighten: function() { + return this._applyModification(brighten, arguments); + }, + darken: function() { + return this._applyModification(darken, arguments); + }, + desaturate: function() { + return this._applyModification(desaturate, arguments); + }, + saturate: function() { + return this._applyModification(saturate, arguments); + }, + greyscale: function() { + return this._applyModification(greyscale, arguments); + }, + spin: function() { + return this._applyModification(spin, arguments); + }, + + _applyCombination: function(fn, args) { + return fn.apply(null, [this].concat([].slice.call(args))); + }, + analogous: function() { + return this._applyCombination(analogous, arguments); + }, + complement: function() { + return this._applyCombination(complement, arguments); + }, + monochromatic: function() { + return this._applyCombination(monochromatic, arguments); + }, + splitcomplement: function() { + return this._applyCombination(splitcomplement, arguments); + }, + triad: function() { + return this._applyCombination(triad, arguments); + }, + tetrad: function() { + return this._applyCombination(tetrad, arguments); + } +}; + +// If input is an object, force 1 into "1.0" to handle ratios properly +// String input requires "1.0" as input, so 1 will be treated as 1 +tinycolor.fromRatio = function(color, opts) { + if (typeof color == "object") { + var newColor = {}; + for (var i in color) { + if (color.hasOwnProperty(i)) { + if (i === "a") { + newColor[i] = color[i]; + } + else { + newColor[i] = convertToPercentage(color[i]); + } + } + } + color = newColor; + } + + return tinycolor(color, opts); +}; + +// Given a string or object, convert that input to RGB +// Possible string inputs: +// +// "red" +// "#f00" or "f00" +// "#ff0000" or "ff0000" +// "#ff000000" or "ff000000" +// "rgb 255 0 0" or "rgb (255, 0, 0)" +// "rgb 1.0 0 0" or "rgb (1, 0, 0)" +// "rgba (255, 0, 0, 1)" or "rgba 255, 0, 0, 1" +// "rgba (1.0, 0, 0, 1)" or "rgba 1.0, 0, 0, 1" +// "hsl(0, 100%, 50%)" or "hsl 0 100% 50%" +// "hsla(0, 100%, 50%, 1)" or "hsla 0 100% 50%, 1" +// "hsv(0, 100%, 100%)" or "hsv 0 100% 100%" +// +function inputToRGB(color) { + + var rgb = { r: 0, g: 0, b: 0 }; + var a = 1; + var s = null; + var v = null; + var l = null; + var ok = false; + var format = false; + + if (typeof color == "string") { + color = stringInputToObject(color); + } + + if (typeof color == "object") { + if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) { + rgb = rgbToRgb(color.r, color.g, color.b); + ok = true; + format = String(color.r).substr(-1) === "%" ? "prgb" : "rgb"; + } + else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) { + s = convertToPercentage(color.s); + v = convertToPercentage(color.v); + rgb = hsvToRgb(color.h, s, v); + ok = true; + format = "hsv"; + } + else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) { + s = convertToPercentage(color.s); + l = convertToPercentage(color.l); + rgb = hslToRgb(color.h, s, l); + ok = true; + format = "hsl"; + } + + if (color.hasOwnProperty("a")) { + a = color.a; + } + } + + a = boundAlpha(a); + + return { + ok: ok, + format: color.format || format, + r: mathMin(255, mathMax(rgb.r, 0)), + g: mathMin(255, mathMax(rgb.g, 0)), + b: mathMin(255, mathMax(rgb.b, 0)), + a: a + }; +} + + +// Conversion Functions +// -------------------- + +// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from: +// + +// `rgbToRgb` +// Handle bounds / percentage checking to conform to CSS color spec +// +// *Assumes:* r, g, b in [0, 255] or [0, 1] +// *Returns:* { r, g, b } in [0, 255] +function rgbToRgb(r, g, b){ + return { + r: bound01(r, 255) * 255, + g: bound01(g, 255) * 255, + b: bound01(b, 255) * 255 + }; +} + +// `rgbToHsl` +// Converts an RGB color value to HSL. +// *Assumes:* r, g, and b are contained in [0, 255] or [0, 1] +// *Returns:* { h, s, l } in [0,1] +function rgbToHsl(r, g, b) { + + r = bound01(r, 255); + g = bound01(g, 255); + b = bound01(b, 255); + + var max = mathMax(r, g, b), min = mathMin(r, g, b); + var h, s, l = (max + min) / 2; + + if(max == min) { + h = s = 0; // achromatic + } + else { + var d = max - min; + s = l > 0.5 ? d / (2 - max - min) : d / (max + min); + switch(max) { + case r: h = (g - b) / d + (g < b ? 6 : 0); break; + case g: h = (b - r) / d + 2; break; + case b: h = (r - g) / d + 4; break; + } + + h /= 6; + } + + return { h: h, s: s, l: l }; +} + +// `hslToRgb` +// Converts an HSL color value to RGB. +// *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100] +// *Returns:* { r, g, b } in the set [0, 255] +function hslToRgb(h, s, l) { + var r, g, b; + + h = bound01(h, 360); + s = bound01(s, 100); + l = bound01(l, 100); + + function hue2rgb(p, q, t) { + if(t < 0) t += 1; + if(t > 1) t -= 1; + if(t < 1/6) return p + (q - p) * 6 * t; + if(t < 1/2) return q; + if(t < 2/3) return p + (q - p) * (2/3 - t) * 6; + return p; + } + + if(s === 0) { + r = g = b = l; // achromatic + } + else { + var q = l < 0.5 ? l * (1 + s) : l + s - l * s; + var p = 2 * l - q; + r = hue2rgb(p, q, h + 1/3); + g = hue2rgb(p, q, h); + b = hue2rgb(p, q, h - 1/3); + } + + return { r: r * 255, g: g * 255, b: b * 255 }; +} + +// `rgbToHsv` +// Converts an RGB color value to HSV +// *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1] +// *Returns:* { h, s, v } in [0,1] +function rgbToHsv(r, g, b) { + + r = bound01(r, 255); + g = bound01(g, 255); + b = bound01(b, 255); + + var max = mathMax(r, g, b), min = mathMin(r, g, b); + var h, s, v = max; + + var d = max - min; + s = max === 0 ? 0 : d / max; + + if(max == min) { + h = 0; // achromatic + } + else { + switch(max) { + case r: h = (g - b) / d + (g < b ? 6 : 0); break; + case g: h = (b - r) / d + 2; break; + case b: h = (r - g) / d + 4; break; + } + h /= 6; + } + return { h: h, s: s, v: v }; +} + +// `hsvToRgb` +// Converts an HSV color value to RGB. +// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100] +// *Returns:* { r, g, b } in the set [0, 255] + function hsvToRgb(h, s, v) { + + h = bound01(h, 360) * 6; + s = bound01(s, 100); + v = bound01(v, 100); + + var i = Math.floor(h), + f = h - i, + p = v * (1 - s), + q = v * (1 - f * s), + t = v * (1 - (1 - f) * s), + mod = i % 6, + r = [v, q, p, p, t, v][mod], + g = [t, v, v, q, p, p][mod], + b = [p, p, t, v, v, q][mod]; + + return { r: r * 255, g: g * 255, b: b * 255 }; +} + +// `rgbToHex` +// Converts an RGB color to hex +// Assumes r, g, and b are contained in the set [0, 255] +// Returns a 3 or 6 character hex +function rgbToHex(r, g, b, allow3Char) { + + var hex = [ + pad2(mathRound(r).toString(16)), + pad2(mathRound(g).toString(16)), + pad2(mathRound(b).toString(16)) + ]; + + // Return a 3 character hex if possible + if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) { + return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0); + } + + return hex.join(""); +} + +// `rgbaToHex` +// Converts an RGBA color plus alpha transparency to hex +// Assumes r, g, b are contained in the set [0, 255] and +// a in [0, 1]. Returns a 4 or 8 character rgba hex +function rgbaToHex(r, g, b, a, allow4Char) { + + var hex = [ + pad2(mathRound(r).toString(16)), + pad2(mathRound(g).toString(16)), + pad2(mathRound(b).toString(16)), + pad2(convertDecimalToHex(a)) + ]; + + // Return a 4 character hex if possible + if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) { + return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0); + } + + return hex.join(""); +} + +// `rgbaToArgbHex` +// Converts an RGBA color to an ARGB Hex8 string +// Rarely used, but required for "toFilter()" +function rgbaToArgbHex(r, g, b, a) { + + var hex = [ + pad2(convertDecimalToHex(a)), + pad2(mathRound(r).toString(16)), + pad2(mathRound(g).toString(16)), + pad2(mathRound(b).toString(16)) + ]; + + return hex.join(""); +} + +// `equals` +// Can be called with any tinycolor input +tinycolor.equals = function (color1, color2) { + if (!color1 || !color2) { return false; } + return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString(); +}; + +tinycolor.random = function() { + return tinycolor.fromRatio({ + r: mathRandom(), + g: mathRandom(), + b: mathRandom() + }); +}; + + +// Modification Functions +// ---------------------- +// Thanks to less.js for some of the basics here +// + +function desaturate(color, amount) { + amount = (amount === 0) ? 0 : (amount || 10); + var hsl = tinycolor(color).toHsl(); + hsl.s -= amount / 100; + hsl.s = clamp01(hsl.s); + return tinycolor(hsl); +} + +function saturate(color, amount) { + amount = (amount === 0) ? 0 : (amount || 10); + var hsl = tinycolor(color).toHsl(); + hsl.s += amount / 100; + hsl.s = clamp01(hsl.s); + return tinycolor(hsl); +} + +function greyscale(color) { + return tinycolor(color).desaturate(100); +} + +function lighten (color, amount) { + amount = (amount === 0) ? 0 : (amount || 10); + var hsl = tinycolor(color).toHsl(); + hsl.l += amount / 100; + hsl.l = clamp01(hsl.l); + return tinycolor(hsl); +} + +function brighten(color, amount) { + amount = (amount === 0) ? 0 : (amount || 10); + var rgb = tinycolor(color).toRgb(); + rgb.r = mathMax(0, mathMin(255, rgb.r - mathRound(255 * - (amount / 100)))); + rgb.g = mathMax(0, mathMin(255, rgb.g - mathRound(255 * - (amount / 100)))); + rgb.b = mathMax(0, mathMin(255, rgb.b - mathRound(255 * - (amount / 100)))); + return tinycolor(rgb); +} + +function darken (color, amount) { + amount = (amount === 0) ? 0 : (amount || 10); + var hsl = tinycolor(color).toHsl(); + hsl.l -= amount / 100; + hsl.l = clamp01(hsl.l); + return tinycolor(hsl); +} + +// Spin takes a positive or negative amount within [-360, 360] indicating the change of hue. +// Values outside of this range will be wrapped into this range. +function spin(color, amount) { + var hsl = tinycolor(color).toHsl(); + var hue = (hsl.h + amount) % 360; + hsl.h = hue < 0 ? 360 + hue : hue; + return tinycolor(hsl); +} + +// Combination Functions +// --------------------- +// Thanks to jQuery xColor for some of the ideas behind these +// + +function complement(color) { + var hsl = tinycolor(color).toHsl(); + hsl.h = (hsl.h + 180) % 360; + return tinycolor(hsl); +} + +function triad(color) { + var hsl = tinycolor(color).toHsl(); + var h = hsl.h; + return [ + tinycolor(color), + tinycolor({ h: (h + 120) % 360, s: hsl.s, l: hsl.l }), + tinycolor({ h: (h + 240) % 360, s: hsl.s, l: hsl.l }) + ]; +} + +function tetrad(color) { + var hsl = tinycolor(color).toHsl(); + var h = hsl.h; + return [ + tinycolor(color), + tinycolor({ h: (h + 90) % 360, s: hsl.s, l: hsl.l }), + tinycolor({ h: (h + 180) % 360, s: hsl.s, l: hsl.l }), + tinycolor({ h: (h + 270) % 360, s: hsl.s, l: hsl.l }) + ]; +} + +function splitcomplement(color) { + var hsl = tinycolor(color).toHsl(); + var h = hsl.h; + return [ + tinycolor(color), + tinycolor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l}), + tinycolor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l}) + ]; +} + +function analogous(color, results, slices) { + results = results || 6; + slices = slices || 30; + + var hsl = tinycolor(color).toHsl(); + var part = 360 / slices; + var ret = [tinycolor(color)]; + + for (hsl.h = ((hsl.h - (part * results >> 1)) + 720) % 360; --results; ) { + hsl.h = (hsl.h + part) % 360; + ret.push(tinycolor(hsl)); + } + return ret; +} + +function monochromatic(color, results) { + results = results || 6; + var hsv = tinycolor(color).toHsv(); + var h = hsv.h, s = hsv.s, v = hsv.v; + var ret = []; + var modification = 1 / results; + + while (results--) { + ret.push(tinycolor({ h: h, s: s, v: v})); + v = (v + modification) % 1; + } + + return ret; +} + +// Utility Functions +// --------------------- + +tinycolor.mix = function(color1, color2, amount) { + amount = (amount === 0) ? 0 : (amount || 50); + + var rgb1 = tinycolor(color1).toRgb(); + var rgb2 = tinycolor(color2).toRgb(); + + var p = amount / 100; + + var rgba = { + r: ((rgb2.r - rgb1.r) * p) + rgb1.r, + g: ((rgb2.g - rgb1.g) * p) + rgb1.g, + b: ((rgb2.b - rgb1.b) * p) + rgb1.b, + a: ((rgb2.a - rgb1.a) * p) + rgb1.a + }; + + return tinycolor(rgba); +}; + + +// Readability Functions +// --------------------- +// false +// tinycolor.isReadable("#000", "#111",{level:"AA",size:"large"}) => false +tinycolor.isReadable = function(color1, color2, wcag2) { + var readability = tinycolor.readability(color1, color2); + var wcag2Parms, out; + + out = false; + + wcag2Parms = validateWCAG2Parms(wcag2); + switch (wcag2Parms.level + wcag2Parms.size) { + case "AAsmall": + case "AAAlarge": + out = readability >= 4.5; + break; + case "AAlarge": + out = readability >= 3; + break; + case "AAAsmall": + out = readability >= 7; + break; + } + return out; + +}; + +// `mostReadable` +// Given a base color and a list of possible foreground or background +// colors for that base, returns the most readable color. +// Optionally returns Black or White if the most readable color is unreadable. +// *Example* +// tinycolor.mostReadable(tinycolor.mostReadable("#123", ["#124", "#125"],{includeFallbackColors:false}).toHexString(); // "#112255" +// tinycolor.mostReadable(tinycolor.mostReadable("#123", ["#124", "#125"],{includeFallbackColors:true}).toHexString(); // "#ffffff" +// tinycolor.mostReadable("#a8015a", ["#faf3f3"],{includeFallbackColors:true,level:"AAA",size:"large"}).toHexString(); // "#faf3f3" +// tinycolor.mostReadable("#a8015a", ["#faf3f3"],{includeFallbackColors:true,level:"AAA",size:"small"}).toHexString(); // "#ffffff" +tinycolor.mostReadable = function(baseColor, colorList, args) { + var bestColor = null; + var bestScore = 0; + var readability; + var includeFallbackColors, level, size ; + args = args || {}; + includeFallbackColors = args.includeFallbackColors ; + level = args.level; + size = args.size; + + for (var i= 0; i < colorList.length ; i++) { + readability = tinycolor.readability(baseColor, colorList[i]); + if (readability > bestScore) { + bestScore = readability; + bestColor = tinycolor(colorList[i]); + } + } + + if (tinycolor.isReadable(baseColor, bestColor, {"level":level,"size":size}) || !includeFallbackColors) { + return bestColor; + } + else { + args.includeFallbackColors=false; + return tinycolor.mostReadable(baseColor,["#fff", "#000"],args); + } +}; + + +// Big List of Colors +// ------------------ +// +var names = tinycolor.names = { + aliceblue: "f0f8ff", + antiquewhite: "faebd7", + aqua: "0ff", + aquamarine: "7fffd4", + azure: "f0ffff", + beige: "f5f5dc", + bisque: "ffe4c4", + black: "000", + blanchedalmond: "ffebcd", + blue: "00f", + blueviolet: "8a2be2", + brown: "a52a2a", + burlywood: "deb887", + burntsienna: "ea7e5d", + cadetblue: "5f9ea0", + chartreuse: "7fff00", + chocolate: "d2691e", + coral: "ff7f50", + cornflowerblue: "6495ed", + cornsilk: "fff8dc", + crimson: "dc143c", + cyan: "0ff", + darkblue: "00008b", + darkcyan: "008b8b", + darkgoldenrod: "b8860b", + darkgray: "a9a9a9", + darkgreen: "006400", + darkgrey: "a9a9a9", + darkkhaki: "bdb76b", + darkmagenta: "8b008b", + darkolivegreen: "556b2f", + darkorange: "ff8c00", + darkorchid: "9932cc", + darkred: "8b0000", + darksalmon: "e9967a", + darkseagreen: "8fbc8f", + darkslateblue: "483d8b", + darkslategray: "2f4f4f", + darkslategrey: "2f4f4f", + darkturquoise: "00ced1", + darkviolet: "9400d3", + deeppink: "ff1493", + deepskyblue: "00bfff", + dimgray: "696969", + dimgrey: "696969", + dodgerblue: "1e90ff", + firebrick: "b22222", + floralwhite: "fffaf0", + forestgreen: "228b22", + fuchsia: "f0f", + gainsboro: "dcdcdc", + ghostwhite: "f8f8ff", + gold: "ffd700", + goldenrod: "daa520", + gray: "808080", + green: "008000", + greenyellow: "adff2f", + grey: "808080", + honeydew: "f0fff0", + hotpink: "ff69b4", + indianred: "cd5c5c", + indigo: "4b0082", + ivory: "fffff0", + khaki: "f0e68c", + lavender: "e6e6fa", + lavenderblush: "fff0f5", + lawngreen: "7cfc00", + lemonchiffon: "fffacd", + lightblue: "add8e6", + lightcoral: "f08080", + lightcyan: "e0ffff", + lightgoldenrodyellow: "fafad2", + lightgray: "d3d3d3", + lightgreen: "90ee90", + lightgrey: "d3d3d3", + lightpink: "ffb6c1", + lightsalmon: "ffa07a", + lightseagreen: "20b2aa", + lightskyblue: "87cefa", + lightslategray: "789", + lightslategrey: "789", + lightsteelblue: "b0c4de", + lightyellow: "ffffe0", + lime: "0f0", + limegreen: "32cd32", + linen: "faf0e6", + magenta: "f0f", + maroon: "800000", + mediumaquamarine: "66cdaa", + mediumblue: "0000cd", + mediumorchid: "ba55d3", + mediumpurple: "9370db", + mediumseagreen: "3cb371", + mediumslateblue: "7b68ee", + mediumspringgreen: "00fa9a", + mediumturquoise: "48d1cc", + mediumvioletred: "c71585", + midnightblue: "191970", + mintcream: "f5fffa", + mistyrose: "ffe4e1", + moccasin: "ffe4b5", + navajowhite: "ffdead", + navy: "000080", + oldlace: "fdf5e6", + olive: "808000", + olivedrab: "6b8e23", + orange: "ffa500", + orangered: "ff4500", + orchid: "da70d6", + palegoldenrod: "eee8aa", + palegreen: "98fb98", + paleturquoise: "afeeee", + palevioletred: "db7093", + papayawhip: "ffefd5", + peachpuff: "ffdab9", + peru: "cd853f", + pink: "ffc0cb", + plum: "dda0dd", + powderblue: "b0e0e6", + purple: "800080", + rebeccapurple: "663399", + red: "f00", + rosybrown: "bc8f8f", + royalblue: "4169e1", + saddlebrown: "8b4513", + salmon: "fa8072", + sandybrown: "f4a460", + seagreen: "2e8b57", + seashell: "fff5ee", + sienna: "a0522d", + silver: "c0c0c0", + skyblue: "87ceeb", + slateblue: "6a5acd", + slategray: "708090", + slategrey: "708090", + snow: "fffafa", + springgreen: "00ff7f", + steelblue: "4682b4", + tan: "d2b48c", + teal: "008080", + thistle: "d8bfd8", + tomato: "ff6347", + turquoise: "40e0d0", + violet: "ee82ee", + wheat: "f5deb3", + white: "fff", + whitesmoke: "f5f5f5", + yellow: "ff0", + yellowgreen: "9acd32" +}; + +// Make it easy to access colors via `hexNames[hex]` +var hexNames = tinycolor.hexNames = flip(names); + + +// Utilities +// --------- + +// `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }` +function flip(o) { + var flipped = { }; + for (var i in o) { + if (o.hasOwnProperty(i)) { + flipped[o[i]] = i; + } + } + return flipped; +} + +// Return a valid alpha value [0,1] with all invalid values being set to 1 +function boundAlpha(a) { + a = parseFloat(a); + + if (isNaN(a) || a < 0 || a > 1) { + a = 1; + } + + return a; +} + +// Take input from [0, n] and return it as [0, 1] +function bound01(n, max) { + if (isOnePointZero(n)) { n = "100%"; } + + var processPercent = isPercentage(n); + n = mathMin(max, mathMax(0, parseFloat(n))); + + // Automatically convert percentage into number + if (processPercent) { + n = parseInt(n * max, 10) / 100; + } + + // Handle floating point rounding errors + if ((Math.abs(n - max) < 0.000001)) { + return 1; + } + + // Convert into [0, 1] range if it isn't already + return (n % max) / parseFloat(max); +} + +// Force a number between 0 and 1 +function clamp01(val) { + return mathMin(1, mathMax(0, val)); +} + +// Parse a base-16 hex value into a base-10 integer +function parseIntFromHex(val) { + return parseInt(val, 16); +} + +// Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1 +// +function isOnePointZero(n) { + return typeof n == "string" && n.indexOf('.') != -1 && parseFloat(n) === 1; +} + +// Check to see if string passed in is a percentage +function isPercentage(n) { + return typeof n === "string" && n.indexOf('%') != -1; +} + +// Force a hex value to have 2 characters +function pad2(c) { + return c.length == 1 ? '0' + c : '' + c; +} + +// Replace a decimal with it's percentage value +function convertToPercentage(n) { + if (n <= 1) { + n = (n * 100) + "%"; + } + + return n; +} + +// Converts a decimal to a hex value +function convertDecimalToHex(d) { + return Math.round(parseFloat(d) * 255).toString(16); +} +// Converts a hex value to a decimal +function convertHexToDecimal(h) { + return (parseIntFromHex(h) / 255); +} + +var matchers = (function() { + + // + var CSS_INTEGER = "[-\\+]?\\d+%?"; + + // + var CSS_NUMBER = "[-\\+]?\\d*\\.\\d+%?"; + + // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome. + var CSS_UNIT = "(?:" + CSS_NUMBER + ")|(?:" + CSS_INTEGER + ")"; + + // Actual matching. + // Parentheses and commas are optional, but not required. + // Whitespace can take the place of commas or opening paren + var PERMISSIVE_MATCH3 = "[\\s|\\(]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")\\s*\\)?"; + var PERMISSIVE_MATCH4 = "[\\s|\\(]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")\\s*\\)?"; + + return { + CSS_UNIT: new RegExp(CSS_UNIT), + rgb: new RegExp("rgb" + PERMISSIVE_MATCH3), + rgba: new RegExp("rgba" + PERMISSIVE_MATCH4), + hsl: new RegExp("hsl" + PERMISSIVE_MATCH3), + hsla: new RegExp("hsla" + PERMISSIVE_MATCH4), + hsv: new RegExp("hsv" + PERMISSIVE_MATCH3), + hsva: new RegExp("hsva" + PERMISSIVE_MATCH4), + hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, + hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/, + hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, + hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/ + }; +})(); + +// `isValidCSSUnit` +// Take in a single string / number and check to see if it looks like a CSS unit +// (see `matchers` above for definition). +function isValidCSSUnit(color) { + return !!matchers.CSS_UNIT.exec(color); +} + +// `stringInputToObject` +// Permissive string parsing. Take in a number of formats, and output an object +// based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}` +function stringInputToObject(color) { + + color = color.replace(trimLeft,'').replace(trimRight, '').toLowerCase(); + var named = false; + if (names[color]) { + color = names[color]; + named = true; + } + else if (color == 'transparent') { + return { r: 0, g: 0, b: 0, a: 0, format: "name" }; + } + + // Try to match string input using regular expressions. + // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360] + // Just return an object and let the conversion functions handle that. + // This way the result will be the same whether the tinycolor is initialized with string or object. + var match; + if ((match = matchers.rgb.exec(color))) { + return { r: match[1], g: match[2], b: match[3] }; + } + if ((match = matchers.rgba.exec(color))) { + return { r: match[1], g: match[2], b: match[3], a: match[4] }; + } + if ((match = matchers.hsl.exec(color))) { + return { h: match[1], s: match[2], l: match[3] }; + } + if ((match = matchers.hsla.exec(color))) { + return { h: match[1], s: match[2], l: match[3], a: match[4] }; + } + if ((match = matchers.hsv.exec(color))) { + return { h: match[1], s: match[2], v: match[3] }; + } + if ((match = matchers.hsva.exec(color))) { + return { h: match[1], s: match[2], v: match[3], a: match[4] }; + } + if ((match = matchers.hex8.exec(color))) { + return { + r: parseIntFromHex(match[1]), + g: parseIntFromHex(match[2]), + b: parseIntFromHex(match[3]), + a: convertHexToDecimal(match[4]), + format: named ? "name" : "hex8" + }; + } + if ((match = matchers.hex6.exec(color))) { + return { + r: parseIntFromHex(match[1]), + g: parseIntFromHex(match[2]), + b: parseIntFromHex(match[3]), + format: named ? "name" : "hex" + }; + } + if ((match = matchers.hex4.exec(color))) { + return { + r: parseIntFromHex(match[1] + '' + match[1]), + g: parseIntFromHex(match[2] + '' + match[2]), + b: parseIntFromHex(match[3] + '' + match[3]), + a: convertHexToDecimal(match[4] + '' + match[4]), + format: named ? "name" : "hex8" + }; + } + if ((match = matchers.hex3.exec(color))) { + return { + r: parseIntFromHex(match[1] + '' + match[1]), + g: parseIntFromHex(match[2] + '' + match[2]), + b: parseIntFromHex(match[3] + '' + match[3]), + format: named ? "name" : "hex" + }; + } + + return false; +} + +function validateWCAG2Parms(parms) { + // return valid WCAG2 parms for isReadable. + // If input parms are invalid, return {"level":"AA", "size":"small"} + var level, size; + parms = parms || {"level":"AA", "size":"small"}; + level = (parms.level || "AA").toUpperCase(); + size = (parms.size || "small").toLowerCase(); + if (level !== "AA" && level !== "AAA") { + level = "AA"; + } + if (size !== "small" && size !== "large") { + size = "small"; + } + return {"level":level, "size":size}; +} + +// Node: Export function +if (typeof module !== "undefined" && module.exports) { + module.exports = tinycolor; +} +// AMD/requirejs: Define the module +else if (typeof define === 'function' && define.amd) { + define(function () {return tinycolor;}); +} +// Browser: Expose to window +else { + window.tinycolor = tinycolor; +} + +})(Math); + +},{}],306:[function(require,module,exports){ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.trimCanvas=t():e.trimCanvas=t()}(this,function(){return function(e){function t(n){if(r[n])return r[n].exports;var o=r[n]={exports:{},id:n,loaded:!1};return e[n].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var r={};return t.m=e,t.c=r,t.p="",t(0)}([function(e,t){"use strict";function r(e){var t=e.getContext("2d"),r=e.width,n=e.height,o=t.getImageData(0,0,r,n).data,f=a(!0,r,n,o),i=a(!1,r,n,o),c=u(!0,r,n,o),d=u(!1,r,n,o),p=d-c+1,l=i-f+1,s=t.getImageData(c,f,p,l);return e.width=p,e.height=l,t.clearRect(0,0,p,l),t.putImageData(s,0,0),e}function n(e,t,r,n){return{red:n[4*(r*t+e)],green:n[4*(r*t+e)+1],blue:n[4*(r*t+e)+2],alpha:n[4*(r*t+e)+3]}}function o(e,t,r,o){return n(e,t,r,o).alpha}function a(e,t,r,n){for(var a=e?1:-1,u=e?0:r-1,f=u;e?f-1;f+=a)for(var i=0;i-1;f+=a)for(var i=0;i 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","/*\r\n Copyright (c) 2018 [Glacies UG, Berlin, Germany] (http://glacies.de)\r\n Developer: Thilina Hasantha (http://lk.linkedin.com/in/thilinah | https://github.com/thilinah)\r\n */\r\n\r\n/**\r\n * RequestCache\r\n */\r\n\r\nclass MemoryStorage {\r\n constructor() {\r\n this.data = {};\r\n }\r\n\r\n getItem(key) {\r\n return this.data[key];\r\n }\r\n\r\n setItem(key, data) {\r\n this.data[key] = data;\r\n }\r\n\r\n removeAllByPrefix(prefix) {\r\n const keys = Object.keys(this.data);\r\n for (let i = 0; i < keys.length; i++) {\r\n if (keys[i].indexOf(prefix) > 0) {\r\n delete this.data[keys[i]];\r\n }\r\n }\r\n }\r\n}\r\n\r\n\r\nclass RequestCache {\r\n constructor(storage) {\r\n if (!storage) {\r\n this.storage = new MemoryStorage();\r\n } else {\r\n this.storage = storage;\r\n }\r\n }\r\n\r\n getKey(url, params) {\r\n let key = `${url}|`;\r\n for (const index in params) {\r\n key += `${index}=${params[index]}|`;\r\n }\r\n return key;\r\n }\r\n\r\n /*\r\n invalidateTable(table) {\r\n let key;\r\n for (let i = 0; i < this.storage.length; i++) {\r\n key = this.storage.key(i);\r\n if (key.indexOf(`t=${table}`) > 0) {\r\n this.storage.removeItem(key);\r\n }\r\n }\r\n }\r\n */\r\n\r\n invalidateTable(table) {\r\n this.storage.removeAllByPrefix(`t=${table}`);\r\n }\r\n\r\n\r\n getData(key) {\r\n const data = this.storage.getItem(key);\r\n if (!data) {\r\n return null;\r\n }\r\n\r\n return data;\r\n }\r\n\r\n setData(key, data) {\r\n\r\n if (data.status !== undefined && data.status != null && data.status !== 'SUCCESS') {\r\n return null;\r\n }\r\n this.storage.setItem(key, data);\r\n return data;\r\n }\r\n}\r\n\r\nexport default RequestCache;\r\n","/* global baseUrl, clientUrl */\r\n/*\r\n Copyright (c) 2018 [Glacies UG, Berlin, Germany] (http://glacies.de)\r\n Developer: Thilina Hasantha (http://lk.linkedin.com/in/thilinah | https://github.com/thilinah)\r\n */\r\n\r\nimport IceApiClient from './IceApiClient';\r\nimport ModuleBase from './ModuleBase';\r\nimport RequestCache from '../api-common/RequestCache';\r\nimport MasterDataReader from './MasterDataReader';\r\n\r\nclass AdapterBase extends ModuleBase {\r\n constructor(endPoint, tab, filter, orderBy) {\r\n super();\r\n this.moduleRelativeURL = null;\r\n this.tableData = [];\r\n this.sourceData = [];\r\n this.filter = null;\r\n this.origFilter = null;\r\n this.orderBy = null;\r\n this.currentElement = null;\r\n this.initAdapter(endPoint, tab, filter, orderBy);\r\n }\r\n\r\n initAdapter(endPoint, tab, filter, orderBy) {\r\n this.moduleRelativeURL = baseUrl;\r\n this.table = endPoint;\r\n if (tab === undefined || tab === null) {\r\n this.tab = endPoint;\r\n } else {\r\n this.tab = tab;\r\n }\r\n\r\n if (filter === undefined || filter === null) {\r\n this.filter = null;\r\n } else {\r\n this.filter = filter;\r\n }\r\n\r\n this.origFilter = this.filter;\r\n\r\n if (orderBy === undefined || orderBy === null) {\r\n this.orderBy = null;\r\n } else {\r\n this.orderBy = orderBy;\r\n }\r\n\r\n this.trackEvent('initAdapter', tab);\r\n\r\n this.requestCache = new RequestCache();\r\n }\r\n\r\n initMasterDataReader() {\r\n this.masterDataReader = new MasterDataReader(this);\r\n }\r\n\r\n setupApiClient(token) {\r\n this.apiClient = new IceApiClient(this.apiUrl, token, window.CLIENT_BASE_URL, true);\r\n }\r\n\r\n setApiUrl(apiUrl) {\r\n this.apiUrl = apiUrl;\r\n }\r\n\r\n setFilter(filter) {\r\n this.filter = filter;\r\n }\r\n\r\n preSetFilterExternal(filter) {\r\n this.initialFilter = filter;\r\n }\r\n\r\n setFilterExternal(_filter) {\r\n let filter = _filter;\r\n if (filter === undefined || filter === null) {\r\n filter = this.initialFilter;\r\n }\r\n\r\n if (filter === undefined || filter === null) {\r\n return;\r\n }\r\n\r\n this.setFilter(filter);\r\n this.filtersAlreadySet = true;\r\n $(`#${this.getTableName()}_resetFilters`).show();\r\n this.currentFilterString = this.getFilterString(filter);\r\n }\r\n\r\n getFilter() {\r\n return this.filter;\r\n }\r\n\r\n setOrderBy(orderBy) {\r\n this.orderBy = orderBy;\r\n }\r\n\r\n getOrderBy() {\r\n return this.orderBy;\r\n }\r\n\r\n getFile(name) {\r\n this.trackEvent('file', name);\r\n return new Promise((resolve, reject) => {\r\n $.getJSON(this.moduleRelativeURL, { a: 'file', name }, (data) => {\r\n if (data.status === 'SUCCESS') {\r\n resolve(data.data);\r\n } else {\r\n reject();\r\n }\r\n }).fail(() => reject());\r\n });\r\n }\r\n\r\n /**\r\n * @method add\r\n * @param object {Array} object data to be added to database\r\n * @param getFunctionCallBackData {Array} once a success is returned call get() function for this module with these parameters\r\n * @param _callGetFunction {Boolean} if false the get function of the module will not be called (default: true)\r\n * @param successCallback {Function} this will get called after success response\r\n */\r\n\r\n add(object, getFunctionCallBackData, callGetFunction, successCallback) {\r\n const that = this;\r\n if (callGetFunction === undefined || callGetFunction === null) {\r\n // eslint-disable-next-line no-param-reassign\r\n callGetFunction = true;\r\n }\r\n $(object).attr('a', 'add');\r\n $(object).attr('t', this.table);\r\n that.showLoader();\r\n this.requestCache.invalidateTable(this.table);\r\n $.post(this.moduleRelativeURL, object, (data) => {\r\n if (data.status === 'SUCCESS') {\r\n that.addSuccessCallBack(getFunctionCallBackData, data.object, callGetFunction, successCallback, that);\r\n } else {\r\n that.addFailCallBack(getFunctionCallBackData, data.object);\r\n }\r\n }, 'json')\r\n .fail((e) => {\r\n if (e.status === 403) {\r\n that.showMessage('Access Forbidden', e.responseJSON.message);\r\n }\r\n })\r\n .always(() => { that.hideLoader(); });\r\n this.trackEvent('add', this.tab, this.table);\r\n }\r\n\r\n addSuccessCallBack(callBackData, serverData, callGetFunction, successCallback, thisObject) {\r\n if (callGetFunction) {\r\n this.get(callBackData);\r\n }\r\n this.initFieldMasterData();\r\n if (successCallback !== undefined && successCallback !== null) {\r\n successCallback.apply(thisObject, [serverData]);\r\n }\r\n this.trackEvent('addSuccess', this.tab, this.table);\r\n }\r\n\r\n addFailCallBack(callBackData, serverData) {\r\n try {\r\n this.closePlainMessage();\r\n } catch (e) {\r\n // No need to report\r\n }\r\n this.showMessage('Error saving', serverData);\r\n this.trackEvent('addFailed', this.tab, this.table);\r\n }\r\n\r\n deleteObj(id, callBackData) {\r\n const that = this;\r\n that.showLoader();\r\n this.requestCache.invalidateTable(this.table);\r\n $.post(this.moduleRelativeURL, { t: this.table, a: 'delete', id }, (data) => {\r\n if (data.status === 'SUCCESS') {\r\n that.deleteSuccessCallBack(callBackData, data.object);\r\n } else {\r\n that.deleteFailCallBack(callBackData, data.object);\r\n }\r\n }, 'json')\r\n .fail((e) => {\r\n if (e.status === 403) {\r\n that.showMessage('Access Forbidden', e.responseJSON.message);\r\n }\r\n })\r\n .always(() => { that.hideLoader(); });\r\n this.trackEvent('delete', this.tab, this.table);\r\n }\r\n\r\n // eslint-disable-next-line no-unused-vars\r\n deleteSuccessCallBack(callBackData, serverData) {\r\n this.get(callBackData);\r\n this.clearDeleteParams();\r\n }\r\n\r\n deleteFailCallBack(callBackData, serverData) {\r\n this.clearDeleteParams();\r\n this.showMessage('Error Occurred while Deleting Item', serverData);\r\n }\r\n\r\n get(callBackData) {\r\n const that = this;\r\n\r\n if (this.getRemoteTable()) {\r\n this.createTableServer(this.getTableName());\r\n $(`#${this.getTableName()}Form`).hide();\r\n $(`#${this.getTableName()}`).show();\r\n return;\r\n }\r\n\r\n let sourceMappingJson = JSON.stringify(this.getSourceMapping());\r\n\r\n let filterJson = '';\r\n if (this.getFilter() !== null) {\r\n filterJson = JSON.stringify(this.getFilter());\r\n }\r\n\r\n let orderBy = '';\r\n if (this.getOrderBy() !== null) {\r\n orderBy = this.getOrderBy();\r\n }\r\n\r\n sourceMappingJson = this.fixJSON(sourceMappingJson);\r\n filterJson = this.fixJSON(filterJson);\r\n\r\n that.showLoader();\r\n $.post(this.moduleRelativeURL, {\r\n t: this.table, a: 'get', sm: sourceMappingJson, ft: filterJson, ob: orderBy,\r\n }, (data) => {\r\n if (data.status === 'SUCCESS') {\r\n that.getSuccessCallBack(callBackData, data.object);\r\n } else {\r\n that.getFailCallBack(callBackData, data.object);\r\n }\r\n }, 'json')\r\n .fail((e) => {\r\n if (e.status === 403) {\r\n that.showMessage('Access Forbidden', e.responseJSON.message);\r\n }\r\n })\r\n .always(() => { that.hideLoader(); });\r\n\r\n that.initFieldMasterData();\r\n\r\n this.trackEvent('get', this.tab, this.table);\r\n // var url = this.getDataUrl();\r\n // console.log(url);\r\n }\r\n\r\n\r\n getDataUrl(_columns) {\r\n const sourceMappingJson = JSON.stringify(this.getSourceMapping());\r\n\r\n const columns = JSON.stringify(_columns);\r\n\r\n let filterJson = '';\r\n if (this.getFilter() !== null) {\r\n filterJson = JSON.stringify(this.getFilter());\r\n }\r\n\r\n let orderBy = '';\r\n if (this.getOrderBy() !== null) {\r\n orderBy = this.getOrderBy();\r\n }\r\n\r\n let url = this.moduleRelativeURL.replace('service.php', 'data.php');\r\n url = `${url}?t=${this.table}`;\r\n url = `${url}&sm=${this.fixJSON(sourceMappingJson)}`;\r\n url = `${url}&cl=${this.fixJSON(columns)}`;\r\n url = `${url}&ft=${this.fixJSON(filterJson)}`;\r\n url = `${url}&ob=${orderBy}`;\r\n\r\n if (this.isSubProfileTable()) {\r\n url = `${url}&type=sub`;\r\n }\r\n\r\n if (this.remoteTableSkipProfileRestriction()) {\r\n url = `${url}&skip=1`;\r\n }\r\n\r\n return url;\r\n }\r\n\r\n isSubProfileTable() {\r\n return false;\r\n }\r\n\r\n remoteTableSkipProfileRestriction() {\r\n return false;\r\n }\r\n\r\n preProcessTableData(row) {\r\n return row;\r\n }\r\n\r\n getSuccessCallBack(callBackData, serverData) {\r\n const data = [];\r\n const mapping = this.getDataMapping();\r\n for (let i = 0; i < serverData.length; i++) {\r\n const row = [];\r\n for (let j = 0; j < mapping.length; j++) {\r\n row[j] = serverData[i][mapping[j]];\r\n }\r\n data.push(this.preProcessTableData(row));\r\n }\r\n this.sourceData = serverData;\r\n if (callBackData.callBack !== undefined && callBackData.callBack !== null) {\r\n if (callBackData.callBackData === undefined || callBackData.callBackData === null) {\r\n callBackData.callBackData = [];\r\n }\r\n callBackData.callBackData.push(serverData);\r\n callBackData.callBackData.push(data);\r\n this.callFunction(callBackData.callBack, callBackData.callBackData);\r\n }\r\n\r\n this.tableData = data;\r\n\r\n if (!(callBackData.noRender !== undefined && callBackData.noRender !== null && callBackData.noRender === true)) {\r\n this.createTable(this.getTableName());\r\n $(`#${this.getTableName()}Form`).hide();\r\n $(`#${this.getTableName()}`).show();\r\n }\r\n }\r\n\r\n // eslint-disable-next-line no-unused-vars\r\n getFailCallBack(callBackData, serverData) {\r\n\r\n }\r\n\r\n\r\n getElement(id, callBackData, clone) {\r\n const that = this;\r\n let sourceMappingJson = JSON.stringify(this.getSourceMapping());\r\n sourceMappingJson = this.fixJSON(sourceMappingJson);\r\n that.showLoader();\r\n $.post(this.moduleRelativeURL, {\r\n t: this.table, a: 'getElement', id, sm: sourceMappingJson,\r\n }, function (data) {\r\n if (data.status === 'SUCCESS') {\r\n if (clone) {\r\n delete data.object.id;\r\n }\r\n this.currentElement = data.object;\r\n that.getElementSuccessCallBack.apply(that, [callBackData, data.object]);\r\n } else {\r\n that.getElementFailCallBack.apply(that, [callBackData, data.object]);\r\n }\r\n }, 'json')\r\n .fail((e) => {\r\n if (e.status === 403) {\r\n that.showMessage('Access Forbidden', e.responseJSON.message);\r\n }\r\n })\r\n .always(() => { that.hideLoader(); });\r\n this.trackEvent('getElement', this.tab, this.table);\r\n }\r\n\r\n getElementSuccessCallBack(callBackData, serverData) {\r\n if (callBackData.callBack !== undefined && callBackData.callBack !== null) {\r\n if (callBackData.callBackData === undefined || callBackData.callBackData === null) {\r\n callBackData.callBackData = [];\r\n }\r\n callBackData.callBackData.push(serverData);\r\n this.callFunction(callBackData.callBack, callBackData.callBackData, this);\r\n }\r\n this.currentElement = serverData;\r\n if (!(callBackData.noRender !== undefined && callBackData.noRender !== null && callBackData.noRender === true)) {\r\n this.renderForm(serverData);\r\n }\r\n }\r\n\r\n // eslint-disable-next-line no-unused-vars\r\n getElementFailCallBack(callBackData, serverData) {\r\n\r\n }\r\n\r\n\r\n getTableData() {\r\n return this.tableData;\r\n }\r\n\r\n getTableName() {\r\n return this.tab;\r\n }\r\n\r\n getFieldValues(fieldMaster, callBackData) {\r\n const that = this;\r\n let method = '';\r\n let methodParams = '';\r\n if (fieldMaster[3] !== undefined && fieldMaster[3] !== null) {\r\n // eslint-disable-next-line prefer-destructuring\r\n method = fieldMaster[3];\r\n }\r\n\r\n if (fieldMaster[4] !== undefined && fieldMaster[4] !== null) {\r\n methodParams = JSON.stringify(fieldMaster[4]);\r\n }\r\n\r\n const key = this.requestCache.getKey(this.moduleRelativeURL, {\r\n t: fieldMaster[0], key: fieldMaster[1], value: fieldMaster[2], method, methodParams, a: 'getFieldValues',\r\n });\r\n const cacheData = this.requestCache.getData(key);\r\n\r\n if (cacheData !== null && cacheData !== undefined) {\r\n if (cacheData.status === 'SUCCESS') {\r\n callBackData.callBackData.push(cacheData.data);\r\n if (callBackData.callBackSuccess !== null && callBackData.callBackSuccess !== undefined) {\r\n callBackData.callBackData.push(callBackData.callBackSuccess);\r\n }\r\n that.callFunction(callBackData.callBack, callBackData.callBackData);\r\n }\r\n } else {\r\n const callbackWraper = function (data) {\r\n if (data.status === 'SUCCESS') {\r\n that.requestCache.setData(this.success.key, data);\r\n const localCallBackData = callBackData;\r\n localCallBackData.callBackData = [callBackData.callBackData[0]];\r\n localCallBackData.callBackData.push(data.data);\r\n if (localCallBackData.callBackSuccess !== null && localCallBackData.callBackSuccess !== undefined) {\r\n localCallBackData.callBackData.push(callBackData.callBackSuccess);\r\n }\r\n that.callFunction(localCallBackData.callBack, localCallBackData.callBackData);\r\n } else if (data.message === 'Access violation') {\r\n alert(`Error : ${callbackWraper.table} ${data.message}`);\r\n }\r\n };\r\n\r\n callbackWraper.key = key;\r\n // eslint-disable-next-line prefer-destructuring\r\n callbackWraper.table = fieldMaster[0];\r\n\r\n $.post(this.moduleRelativeURL, {\r\n t: fieldMaster[0], key: fieldMaster[1], value: fieldMaster[2], method, methodParams, a: 'getFieldValues',\r\n }, callbackWraper, 'json');\r\n }\r\n }\r\n\r\n setAdminProfile(empId) {\r\n try {\r\n localStorage.clear();\r\n } catch (e) {\r\n // No need to report\r\n }\r\n $.post(this.moduleRelativeURL, { a: 'setAdminEmp', empid: empId }, () => {\r\n // eslint-disable-next-line no-restricted-globals\r\n top.location.href = clientUrl;\r\n }, 'json');\r\n }\r\n\r\n customAction(subAction, module, request, callBackData, isPost) {\r\n const that = this;\r\n request = this.fixJSON(request);\r\n if (!isPost) {\r\n $.getJSON(this.moduleRelativeURL, {\r\n t: this.table, a: 'ca', sa: subAction, mod: module, req: request,\r\n }, (data) => {\r\n if (data.status === 'SUCCESS') {\r\n callBackData.callBackData.push(data.data);\r\n that.callFunction(callBackData.callBackSuccess, callBackData.callBackData);\r\n } else {\r\n callBackData.callBackData.push(data.data);\r\n that.callFunction(callBackData.callBackFail, callBackData.callBackData);\r\n }\r\n });\r\n } else {\r\n $.post(this.moduleRelativeURL, {\r\n t: this.table, a: 'ca', sa: subAction, mod: module, req: request,\r\n }, (data) => {\r\n if (data.status === 'SUCCESS') {\r\n callBackData.callBackData.push(data.data);\r\n that.callFunction(callBackData.callBackSuccess, callBackData.callBackData);\r\n } else {\r\n callBackData.callBackData.push(data.data);\r\n that.callFunction(callBackData.callBackFail, callBackData.callBackData);\r\n }\r\n }, 'json');\r\n }\r\n }\r\n\r\n\r\n sendCustomRequest(action, params, successCallback, failCallback) {\r\n params.a = action;\r\n $.post(this.moduleRelativeURL, params, (data) => {\r\n if (data.status === 'SUCCESS') {\r\n successCallback(data.data);\r\n } else {\r\n failCallback(data.data);\r\n }\r\n }, 'json');\r\n }\r\n\r\n\r\n getCustomActionUrl(action, params) {\r\n params.a = action;\r\n let str = '';\r\n for (const key in params) {\r\n if (params.hasOwnProperty(key)) {\r\n if (str !== '') {\r\n str += '&';\r\n }\r\n str += `${key}=${params[key]}`;\r\n }\r\n }\r\n return `${this.moduleRelativeURL}?${str}`;\r\n }\r\n\r\n\r\n getClientDataUrl() {\r\n return `${this.moduleRelativeURL.replace('service.php', '')}data/`;\r\n }\r\n\r\n getCustomUrl(str) {\r\n return this.moduleRelativeURL.replace('service.php', str);\r\n }\r\n}\r\n\r\nexport default AdapterBase;\r\n","/*\r\n Copyright (c) 2018 [Glacies UG, Berlin, Germany] (http://glacies.de)\r\n Developer: Thilina Hasantha (http://lk.linkedin.com/in/thilinah | https://github.com/thilinah)\r\n */\r\n/* global tinyMCE */\r\nconst ValidationRules = {\r\n\r\n float(str) {\r\n const floatstr = /^[-+]?[0-9]+(\\.[0-9]+)?$/;\r\n if (str != null && str.match(floatstr)) {\r\n return true;\r\n }\r\n return false;\r\n },\r\n\r\n number(str) {\r\n const numstr = /^[0-9]+$/;\r\n if (str != null && str.match(numstr)) {\r\n return true;\r\n }\r\n return false;\r\n },\r\n\r\n numberOrEmpty(str) {\r\n if (str === '') {\r\n return true;\r\n }\r\n const numstr = /^[0-9]+$/;\r\n if (str != null && str.match(numstr)) {\r\n return true;\r\n }\r\n return false;\r\n },\r\n\r\n email(str) {\r\n const emailPattern = /^\\s*[\\w\\-+_]+(\\.[\\w\\-+_]+)*@[\\w\\-+_]+\\.[\\w\\-+_]+(\\.[\\w\\-+_]+)*\\s*$/;\r\n return str != null && emailPattern.test(str);\r\n },\r\n\r\n emailOrEmpty(str) {\r\n if (str === '') {\r\n return true;\r\n }\r\n const emailPattern = /^\\s*[\\w\\-+_]+(\\.[\\w\\-+_]+)*@[\\w\\-+_]+\\.[\\w\\-+_]+(\\.[\\w\\-+_]+)*\\s*$/;\r\n return str != null && emailPattern.test(str);\r\n },\r\n\r\n username(str) {\r\n const username = /^[a-zA-Z0-9.-]+$/;\r\n return str != null && username.test(str);\r\n },\r\n\r\n input(str) {\r\n if (str != null && str.length > 0) {\r\n return true;\r\n }\r\n return false;\r\n },\r\n};\r\n\r\nclass FormValidation {\r\n constructor(formId, validateAll, options) {\r\n this.tempOptions = {};\r\n this.formId = formId;\r\n this.formError = false;\r\n this.formObject = null;\r\n this.errorMessages = '';\r\n this.popupDialog = null;\r\n this.validateAll = validateAll;\r\n this.errorMap = [];\r\n\r\n this.settings = { thirdPartyPopup: null, LabelErrorClass: false, ShowPopup: true };\r\n\r\n this.settings = jQuery.extend(this.settings, options);\r\n\r\n this.inputTypes = ['text', 'radio', 'checkbox', 'file', 'password', 'select-one', 'select-multi', 'textarea', 'fileupload', 'signature'];\r\n\r\n this.validator = ValidationRules;\r\n }\r\n\r\n // eslint-disable-next-line no-unused-vars\r\n clearError(formInput, overrideMessage) {\r\n const id = formInput.attr('id');\r\n $(`#${this.formId} #field_${id}`).removeClass('error');\r\n $(`#${this.formId} #help_${id}`).html('');\r\n }\r\n\r\n // eslint-disable-next-line no-unused-vars\r\n addError(formInput, overrideMessage) {\r\n this.formError = true;\r\n if (formInput.attr('message') != null) {\r\n this.errorMessages += (`${formInput.attr('message')}\\n`);\r\n this.errorMap[formInput.attr('name')] = formInput.attr('message');\r\n } else {\r\n this.errorMap[formInput.attr('name')] = '';\r\n }\r\n\r\n const id = formInput.attr('id');\r\n const validation = formInput.attr('validation');\r\n const message = formInput.attr('validation');\r\n $(`#${this.formId} #field_${id}`).addClass('error');\r\n if (message === undefined || message == null || message === '') {\r\n $(`#${this.formId} #help_err_${id}`).html(message);\r\n } else if (validation === undefined || validation == null || validation === '') {\r\n $(`#${this.formId} #help_err_${id}`).html('Required');\r\n } else if (validation === 'float' || validation === 'number') {\r\n $(`#${this.formId} #help_err_${id}`).html('Number required');\r\n } else if (validation === 'email') {\r\n $(`#${this.formId} #help_err_${id}`).html('Email required');\r\n } else {\r\n $(`#${this.formId} #help_err_${id}`).html('Required');\r\n }\r\n }\r\n\r\n\r\n showErrors() {\r\n if (this.formError) {\r\n if (this.settings.thirdPartyPopup !== undefined && this.settings.thirdPartyPopup != null) {\r\n this.settings.thirdPartyPopup.alert();\r\n } else if (this.settings.ShowPopup === true) {\r\n if (this.tempOptions.popupTop !== undefined && this.tempOptions.popupTop != null) {\r\n this.alert('Errors Found', this.errorMessages, this.tempOptions.popupTop);\r\n } else {\r\n this.alert('Errors Found', this.errorMessages, -1);\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n checkValues(options) {\r\n this.tempOptions = options;\r\n const that = this;\r\n this.formError = false;\r\n this.errorMessages = '';\r\n this.formObject = {};\r\n // eslint-disable-next-line consistent-return\r\n const validate = function (inputObject) {\r\n let inputValue = null;\r\n const name = inputObject.attr('name');\r\n if (that.settings.LabelErrorClass !== false) {\r\n $(`label[for='${name}']`).removeClass(that.settings.LabelErrorClass);\r\n }\r\n const id = inputObject.attr('id');\r\n const type = inputObject.attr('type');\r\n\r\n if (inputObject.hasClass('select2-focusser') || inputObject.hasClass('select2-input')) {\r\n return true;\r\n }\r\n\r\n if (jQuery.inArray(type, that.inputTypes) >= 0) {\r\n if (inputObject.hasClass('uploadInput')) {\r\n inputValue = inputObject.attr('val');\r\n } else if (type === 'radio' || type === 'checkbox') {\r\n inputValue = $(`input[name='${name}']:checked`).val();\r\n } else if (inputObject.hasClass('select2Field')) {\r\n if ($(`#${that.formId} #${id}`).select2('data') != null && $(`#${that.formId} #${id}`).select2('data') !== undefined) {\r\n inputValue = $(`#${that.formId} #${id}`).select2('data').id;\r\n } else {\r\n inputValue = '';\r\n }\r\n } else if (inputObject.hasClass('select2Multi')) {\r\n if ($(`#${that.formId} #${id}`).select2('data') != null && $(`#${that.formId} #${id}`).select2('data') !== undefined) {\r\n const inputValueObjects = $(`#${that.formId} #${id}`).select2('data');\r\n inputValue = [];\r\n for (let i = 0; i < inputValueObjects.length; i++) {\r\n inputValue.push(inputValueObjects[i].id);\r\n }\r\n inputValue = JSON.stringify(inputValue);\r\n } else {\r\n inputValue = '';\r\n }\r\n } else if (inputObject.hasClass('signatureField')) {\r\n if ($(`#${that.formId} #${id}`).data('signaturePad').isEmpty()) {\r\n inputValue = '';\r\n } else {\r\n inputValue = $(`#${id}`).data('signaturePad').toDataURL();\r\n }\r\n } else if (inputObject.hasClass('simplemde')) {\r\n inputValue = $(`#${that.formId} #${id}`).data('simplemde').value();\r\n } else if (inputObject.hasClass('code')) {\r\n inputValue = $(`#${that.formId} #${id}`).data('codemirror').getValue();\r\n } else if (inputObject.hasClass('tinymce')) {\r\n inputValue = tinyMCE.get(id).getContent({ format: 'raw' });\r\n } else {\r\n inputValue = inputObject.val();\r\n }\r\n\r\n const validation = inputObject.attr('validation');\r\n let valid = false;\r\n\r\n if (validation !== undefined && validation != null && that.validator[validation] !== undefined && that.validator[validation] != null) {\r\n valid = that.validator[validation](inputValue);\r\n } else {\r\n if (that.validateAll) {\r\n if (validation !== undefined && validation != null && validation === 'none') {\r\n valid = true;\r\n } else {\r\n valid = that.validator.input(inputValue);\r\n }\r\n } else {\r\n valid = true;\r\n }\r\n that.formObject[id] = inputValue;\r\n }\r\n\r\n if (!valid) {\r\n that.addError(inputObject, null);\r\n } else {\r\n that.clearError(inputObject, null);\r\n that.formObject[id] = inputValue;\r\n }\r\n }\r\n };\r\n\r\n let inputs = $(`#${this.formId} :input`);\r\n inputs.each(function () {\r\n validate($(this));\r\n });\r\n\r\n inputs = $(`#${this.formId} .uploadInput`);\r\n inputs.each(function () {\r\n validate($(this));\r\n });\r\n\r\n this.showErrors();\r\n this.tempOptions = {};\r\n return !this.formError;\r\n }\r\n\r\n getFormParameters() {\r\n return this.formObject;\r\n }\r\n\r\n\r\n alert(title, text) {\r\n alert(text);\r\n }\r\n\r\n static getValidationRules() {\r\n return ValidationRules;\r\n }\r\n}\r\n\r\n\r\nexport default FormValidation;\r\n","const axios = require('axios');\r\n\r\nclass IceApiClient {\r\n constructor(baseUrl, token, clientBaseUrl, legacyApiWrapper = true) {\r\n this.baseUrl = baseUrl;\r\n this.token = token;\r\n this.clientBaseUrl = clientBaseUrl;\r\n this.legacyApiWrapper = legacyApiWrapper;\r\n }\r\n\r\n get(endpoint) {\r\n if (this.legacyApiWrapper) {\r\n const url = `${this.clientBaseUrl}api/index.php?token=${this.token}&method=get&url=/${endpoint}`;\r\n return axios.get(url);\r\n }\r\n\r\n return axios.get(this.baseUrl + endpoint, {\r\n headers: {\r\n Authorization: `Bearer ${this.token}`,\r\n },\r\n });\r\n }\r\n}\r\n\r\nexport default IceApiClient;\r\n","const axios = require('axios');\r\n\r\nclass IceDataPipe {\r\n constructor(adapter, pageSize = 10) {\r\n this.adapter = adapter;\r\n this.pageSize = pageSize;\r\n }\r\n\r\n readMetaData() {\r\n this.adapter.initFieldMasterData();\r\n }\r\n\r\n get({\r\n page, search, sortField, sortOrder, filters, limit,\r\n }) {\r\n const pageSize = limit || this.pageSize;\r\n const start = (page - 1) * pageSize;\r\n const dataUrl = this.getDataUrl(\r\n this.adapter.getDataMapping(),\r\n search,\r\n filters,\r\n );\r\n let url = `${dataUrl}&iDisplayStart=${start}&iDisplayLength=${pageSize}`;\r\n url = this.applySortingData(this.adapter.getDataMapping(), url, sortField, sortOrder);\r\n // $.post(url, (data) => {\r\n // that.getSuccessCallBack(callBackData, data);\r\n // }, 'json').always(() => { that.hideLoader(); });\r\n url = `${url}&version=v2`;\r\n return axios.post(url, {})\r\n .then((data) => {\r\n const key = this.getRequestKey(page, search, sortField, sortOrder, filters, limit);\r\n const response = {\r\n items: data.data.objects,\r\n total: data.data.totalRecords,\r\n };\r\n if (this.adapter.localStorageEnabled) {\r\n window.localStorage.setItem(key, JSON.stringify(response));\r\n }\r\n\r\n return response;\r\n });\r\n }\r\n\r\n getCachedResponse({\r\n page, search, sortField, sortOrder, filters, limit,\r\n }) {\r\n const key = this.getRequestKey(page, search, sortField, sortOrder, filters, limit);\r\n const cachedResponse = window.localStorage.getItem(key);\r\n if (!cachedResponse) {\r\n return null;\r\n }\r\n\r\n return JSON.parse(cachedResponse);\r\n }\r\n\r\n clearCachedResponse({\r\n page, search, sortField, sortOrder, filters, limit,\r\n }) {\r\n const key = this.getRequestKey(page, search, sortField, sortOrder, filters, limit);\r\n window.localStorage.setItem(key, null);\r\n }\r\n\r\n getRequestKey(page, search, sortField, sortOrder, filters, limit) {\r\n return `${this.adapter.table}|${page}|${search}|${sortField}|${sortOrder}|${filters}|${limit}`;\r\n }\r\n\r\n applySortingData(columns, url, sortField, sortOrder) {\r\n let orderBy = '';\r\n if (sortField) {\r\n url = `${url}&sorting=1`;\r\n url = `${url}&iSortCol_0=${columns.indexOf(sortField)}`;\r\n url = `${url}&sSortDir_0=${(sortOrder === 'descend') ? 'DESC' : 'ASC'}`;\r\n } else if (this.adapter.getOrderBy() !== null) {\r\n // Setting the fix ordering\r\n orderBy = this.adapter.getOrderBy();\r\n url = `${url}&ob=${orderBy}`;\r\n }\r\n\r\n return url;\r\n }\r\n\r\n getDataUrl(_columns, searchTerm, filters) {\r\n const sourceMappingJson = JSON.stringify(this.adapter.getSourceMapping());\r\n\r\n const columns = JSON.stringify(_columns);\r\n\r\n let filterJson = '';\r\n if (this.adapter.getFilter() !== null) {\r\n filterJson = JSON.stringify(this.adapter.getFilter());\r\n }\r\n\r\n let url = this.adapter.moduleRelativeURL.replace('service.php', 'data.php');\r\n url = `${url}?t=${this.adapter.table}`;\r\n url = `${url}&sm=${sourceMappingJson}`;\r\n url = `${url}&cl=${columns}`;\r\n url = `${url}&ft=${filterJson}`;\r\n\r\n if (searchTerm && searchTerm.trim() !== '') {\r\n url += `&sSearch=${searchTerm}`;\r\n }\r\n\r\n if (this.adapter.isSubProfileTable()) {\r\n url = `${url}&type=sub`;\r\n }\r\n\r\n if (this.adapter.remoteTableSkipProfileRestriction()) {\r\n url = `${url}&skip=1`;\r\n }\r\n\r\n return url;\r\n }\r\n}\r\n\r\nexport default IceDataPipe;\r\n","const axios = require('axios');\r\n\r\nclass MasterDataReader {\r\n constructor(adapter) {\r\n this.adapter = adapter;\r\n this.requestCache = this.adapter.requestCache;\r\n }\r\n\r\n fetchMasterData(fieldMaster) {\r\n let method = '';\r\n let methodParams = '';\r\n if (fieldMaster[3] != null) {\r\n method = fieldMaster[3];\r\n }\r\n\r\n if (fieldMaster[4] != null) {\r\n methodParams = JSON.stringify(fieldMaster[4]);\r\n }\r\n\r\n const key = this.requestCache.getKey(this.adapter.moduleRelativeURL, {\r\n t: fieldMaster[0], key: fieldMaster[1], value: fieldMaster[2], method, methodParams, a: 'getFieldValues',\r\n });\r\n\r\n const cacheData = this.requestCache.getData(key);\r\n if (cacheData != null && cacheData.status === 'SUCCESS') {\r\n return new Promise((resolve, reject) => resolve(cacheData.data));\r\n }\r\n\r\n const urlData = {\r\n t: fieldMaster[0],\r\n key: fieldMaster[1],\r\n value: fieldMaster[2],\r\n method,\r\n methodParams,\r\n a: 'getFieldValues',\r\n };\r\n let url = `${this.adapter.moduleRelativeURL}?_url=1`;\r\n for (const index in urlData) {\r\n url = `${url}&${index}=${encodeURIComponent(urlData[index])}`;\r\n }\r\n // TODO - Should be a get request\r\n return axios.post(url, {})\r\n .then((response) => {\r\n if (response.data.status !== 'SUCCESS') {\r\n throw Error(`Response for ${key} failed`);\r\n }\r\n this.requestCache.setData(key, response.data);\r\n\r\n return response.data.data;\r\n });\r\n }\r\n\r\n updateAllMasterData() {\r\n const remoteSourceFields = this.adapter.getRemoteSourceFields();\r\n const promiseList = [];\r\n for (let i = 0; i < remoteSourceFields.length; i++) {\r\n const fieldRemote = remoteSourceFields[i];\r\n if (fieldRemote[1]['remote-source'] !== undefined && fieldRemote[1]['remote-source'] != null) {\r\n let key = `${fieldRemote[1]['remote-source'][0]}_${fieldRemote[1]['remote-source'][1]}_${fieldRemote[1]['remote-source'][2]}`;\r\n if (fieldRemote[1]['remote-source'].length === 4) {\r\n key = `${key}_${fieldRemote[1]['remote-source'][3]}`;\r\n }\r\n const masterDataPromise = this.fetchMasterData(fieldRemote[1]['remote-source'])\r\n .then((data) => {\r\n this.adapter.fieldMasterData[key] = data;\r\n });\r\n promiseList.push(masterDataPromise);\r\n }\r\n }\r\n\r\n return Promise.all(promiseList);\r\n }\r\n}\r\n\r\nexport default MasterDataReader;\r\n","/* global tinymce, SimpleMDE, modJs, SignaturePad, modulesInstalled */\r\n/* eslint-disable prefer-destructuring */\r\n/*\r\n Copyright (c) 2018 [Glacies UG, Berlin, Germany] (http://glacies.de)\r\n Developer: Thilina Hasantha (http://lk.linkedin.com/in/thilinah | https://github.com/thilinah)\r\n */\r\nimport FormValidation from './FormValidation';\r\n/**\r\n * The base class for providing core functions to all module classes.\r\n * @class Base.js\r\n */\r\n\r\nclass ModuleBase {\r\n constructor() {\r\n this.deleteParams = {};\r\n this.createRemoteTable = false;\r\n this.instanceId = 'None';\r\n this.ga = [];\r\n this.showAddNew = true;\r\n this.showEdit = true;\r\n this.showDelete = true;\r\n this.showSave = true;\r\n this.showCancel = true;\r\n this.showFormOnPopup = false;\r\n this.filtersAlreadySet = false;\r\n this.currentFilterString = '';\r\n this.sorting = 0;\r\n this.settings = {};\r\n this.translations = {};\r\n this.customFields = [];\r\n this.csrfRequired = false;\r\n\r\n this.fieldTemplates = null;\r\n this.templates = null;\r\n this.customTemplates = null;\r\n this.emailTemplates = null;\r\n this.fieldMasterData = {};\r\n this.fieldMasterDataKeys = {};\r\n this.fieldMasterDataCallback = null;\r\n this.sourceMapping = null;\r\n this.currentId = null;\r\n this.currentElement = null;\r\n this.user = null;\r\n this.currentProfile = null;\r\n this.permissions = {};\r\n this.baseUrl = null;\r\n this.clientUrl = null;\r\n this.that = this;\r\n }\r\n\r\n // eslint-disable-next-line no-unused-vars\r\n init(appName, currentView, dataUrl, permissions) {\r\n\r\n }\r\n\r\n initForm() {\r\n\r\n }\r\n\r\n setObjectTypeName(objectTypeName) {\r\n this.objectTypeName = objectTypeName;\r\n }\r\n\r\n /**\r\n * Some browsers do not support sending JSON in get parameters. Set this to true to avoid sending JSON\r\n * @method setNoJSONRequests\r\n * @param val {Boolean}\r\n */\r\n setNoJSONRequests(val) {\r\n this.noJSONRequests = val;\r\n }\r\n\r\n\r\n setPermissions(permissions) {\r\n this.permissions = permissions;\r\n }\r\n\r\n sortingStarted(val) {\r\n this.sorting = val;\r\n }\r\n\r\n /**\r\n * Check if the current user has a permission\r\n * @method checkPermission\r\n * @param permission {String}\r\n * @example\r\n * this.checkPermission(\"Upload/Delete Profile Image\")\r\n */\r\n checkPermission(permission) {\r\n if (this.permissions[permission] === undefined || this.permissions[permission] == null || this.permissions[permission] === 'Yes') {\r\n return 'Yes';\r\n }\r\n return this.permissions[permission];\r\n }\r\n\r\n setBaseUrl(url) {\r\n this.baseUrl = url;\r\n }\r\n\r\n setClientUrl(url) {\r\n this.clientUrl = url;\r\n }\r\n\r\n setUser(user) {\r\n this.user = user;\r\n }\r\n\r\n getUser() {\r\n return this.user;\r\n }\r\n\r\n setInstanceId(id) {\r\n this.instanceId = id;\r\n }\r\n\r\n setCSRFRequired(val) {\r\n this.csrfRequired = val;\r\n }\r\n\r\n scrollToTop() {\r\n $('html, body').animate({ scrollTop: 0 }, 'fast');\r\n }\r\n\r\n scrollToBottom() {\r\n $('html, body').animate({ scrollTop: $(document).height() }, 'slow');\r\n }\r\n\r\n scrollToElement(element) {\r\n if ($(window).height() <= element.offset().top) {\r\n $('html, body').animate({ scrollTop: element.offset().top }, 'slow');\r\n }\r\n }\r\n\r\n scrollToElementBottom(element) {\r\n if ($(window).height() <= element.offset().top + element.height()) {\r\n $('html, body').animate({ scrollTop: element.offset().top + element.height() }, 'slow');\r\n }\r\n }\r\n\r\n\r\n setTranslations(txt) {\r\n this.translations = txt.messages[''];\r\n }\r\n\r\n setTranslationsSubModules(translations) {\r\n this.translations = translations;\r\n }\r\n\r\n gt(key) {\r\n if (this.translations[key] === undefined || this.translations[key] === null) {\r\n console.log(`Tr:${key}`);\r\n return key;\r\n }\r\n return this.translations[key][0];\r\n }\r\n\r\n addToLangTerms(key) {\r\n let termsArr;\r\n const terms = localStorage.getItem('terms');\r\n if (terms === undefined) {\r\n termsArr = {};\r\n } else {\r\n try {\r\n termsArr = JSON.parse(terms);\r\n } catch (e) {\r\n termsArr = {};\r\n }\r\n }\r\n\r\n if (this.translations[key] === undefined) {\r\n termsArr[key] = key;\r\n localStorage.setItem('terms', JSON.stringify(termsArr));\r\n }\r\n }\r\n\r\n /**\r\n * If this method returned false the action buttons in data table for modules will not be displayed.\r\n * Override this method in module lib.js to hide action buttons\r\n * @method showActionButtons\r\n * @param permission {String}\r\n * @example\r\n * EmployeeLeaveEntitlementAdapter.method('showActionButtons() {\r\n * return false;\r\n * }\r\n */\r\n showActionButtons() {\r\n return true;\r\n }\r\n\r\n trackEvent(action, label, value) {\r\n try {\r\n if (label === undefined || label == null) {\r\n this.ga.push(['_trackEvent', this.instanceId, action]);\r\n } else if (value === undefined || value == null) {\r\n this.ga.push(['_trackEvent', this.instanceId, action, label]);\r\n } else {\r\n this.ga.push(['_trackEvent', this.instanceId, action, label, value]);\r\n }\r\n } catch (e) {\r\n // Do nothing\r\n }\r\n }\r\n\r\n\r\n setCurrentProfile(currentProfile) {\r\n this.currentProfile = currentProfile;\r\n }\r\n\r\n /**\r\n * Get the current profile\r\n * @method getCurrentProfile\r\n * @returns Profile of the current user if the profile is not switched if not switched profile\r\n */\r\n\r\n getCurrentProfile() {\r\n return this.currentProfile;\r\n }\r\n\r\n /**\r\n * Retrive data required to create select boxes for add new /edit forms for a given module. This is called when loading the module\r\n * @method initFieldMasterData\r\n * @param callback {Function} call this once loading completed\r\n * @param callback {Function} call this once all field loading completed. This indicate that the form can be displayed saftly\r\n * @example\r\n * ReportAdapter.method('renderForm(object) {\r\n * var that = this;\r\n * this.processFormFieldsWithObject(object);\r\n * var cb = function(){\r\n * that.super.renderForm(object);\r\n * };\r\n * this.initFieldMasterData(cb);\r\n * }\r\n */\r\n initFieldMasterData(callback, loadAllCallback, loadAllCallbackData) {\r\n this.fieldMasterData = {};\r\n this.fieldMasterDataKeys = {};\r\n this.fieldMasterDataCallback = loadAllCallback;\r\n this.fieldMasterDataCallbackData = loadAllCallbackData;\r\n\r\n const remoteSourceFields = this.getRemoteSourceFields();\r\n\r\n for (let i = 0; i < remoteSourceFields.length; i++) {\r\n const fieldRemote = remoteSourceFields[i];\r\n if (fieldRemote[1]['remote-source'] !== undefined && fieldRemote[1]['remote-source'] != null) {\r\n // let key = `${fieldRemote[1]['remote-source'][0]}_${fieldRemote[1]['remote-source'][1]}_${fieldRemote[1]['remote-source'][2]}`;\r\n // if (fieldRemote[1]['remote-source'].length === 4) {\r\n // key = `${key}_${fieldRemote[1]['remote-source'][3]}`;\r\n // }\r\n const key = this.getRemoteSourceKey(fieldRemote);\r\n this.fieldMasterDataKeys[key] = false;\r\n\r\n const callBackData = {};\r\n callBackData.callBack = 'initFieldMasterDataResponse';\r\n callBackData.callBackData = [key];\r\n if (callback !== null && callback !== undefined) {\r\n callBackData.callBackSuccess = callback;\r\n }\r\n this.getFieldValues(fieldRemote[1]['remote-source'], callBackData);\r\n }\r\n }\r\n }\r\n\r\n\r\n initSourceMappings() {\r\n this.sourceMapping = {};\r\n\r\n const remoteSourceFields = this.getRemoteSourceFields();\r\n\r\n for (let i = 0; i < remoteSourceFields.length; i++) {\r\n const fieldRemote = remoteSourceFields[i];\r\n if (fieldRemote[1]['remote-source'] !== undefined && fieldRemote[1]['remote-source'] != null) {\r\n this.sourceMapping[fieldRemote[0]] = fieldRemote[1]['remote-source'];\r\n }\r\n }\r\n }\r\n\r\n getRemoteSourceKey(field) {\r\n let key = `${field[1]['remote-source'][0]}_${field[1]['remote-source'][1]}_${field[1]['remote-source'][2]}`;\r\n if (field[1]['remote-source'].length > 3) {\r\n key = `${key}_${field[1]['remote-source'][3]}`;\r\n }\r\n\r\n return key;\r\n }\r\n\r\n getRemoteSourceFields() {\r\n let values;\r\n const fields = this.getFormFields();\r\n const filterFields = this.getFilters();\r\n\r\n if (filterFields != null) {\r\n for (let j = 0; j < filterFields.length; j++) {\r\n values = this.getMetaFieldValues(filterFields[j][0], fields);\r\n if (values == null || (values.type !== 'select' && values.type !== 'select2' && values.type !== 'select2multi')) {\r\n fields.push(filterFields[j]);\r\n }\r\n }\r\n }\r\n\r\n const remoteSourceFields = [];\r\n const remoteSourceFieldKeys = [];\r\n let field = null;\r\n let fieldSub = null;\r\n for (let i = 0; i < fields.length; i++) {\r\n field = fields[i];\r\n if (field[1]['remote-source'] !== undefined && field[1]['remote-source'] !== null) {\r\n const key = this.getRemoteSourceKey(field);\r\n if (remoteSourceFieldKeys.indexOf(key) < 0) {\r\n remoteSourceFields.push(field);\r\n remoteSourceFieldKeys.push(key);\r\n }\r\n } else if (field[1].form !== undefined && field[1].form !== null) {\r\n for (let j = 0; j < field[1].form.length; j++) {\r\n fieldSub = field[1].form[j];\r\n if (fieldSub[1]['remote-source'] !== undefined && fieldSub[1]['remote-source'] !== null) {\r\n const key = this.getRemoteSourceKey(fieldSub);\r\n if (remoteSourceFieldKeys.indexOf(key) < 0) {\r\n remoteSourceFields.push(fieldSub);\r\n remoteSourceFieldKeys.push(key);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n return remoteSourceFields;\r\n }\r\n\r\n /**\r\n * Pass true to this method after creating module JS object to open new/edit entry form for the module on a popup.\r\n * @method setShowFormOnPopup\r\n * @param val {Boolean}\r\n * @example\r\n * modJs.subModJsList['tabCandidateApplication'] = new CandidateApplicationAdapter('Application','CandidateApplication',{\"candidate\":data.id}\r\n * modJs.subModJsList['tabCandidateApplication'].setShowFormOnPopup(true);\r\n */\r\n\r\n setShowFormOnPopup(val) {\r\n this.showFormOnPopup = val;\r\n }\r\n\r\n /**\r\n * Set this to true to if you need the datatable to load data page by page instead of loading all data at once.\r\n * @method setRemoteTable\r\n * @param val {Boolean}\r\n * @example\r\n * modJs.subModJsList['tabCandidateApplication'] = new CandidateApplicationAdapter('Application','CandidateApplication',{\"candidate\":data.id}\r\n * modJs.subModJsList['tabCandidateApplication'].setRemoteTable(true);\r\n */\r\n\r\n setRemoteTable(val) {\r\n this.createRemoteTable = val;\r\n }\r\n\r\n setSettings(val) {\r\n this.settings = val;\r\n }\r\n\r\n getRemoteTable() {\r\n return this.createRemoteTable;\r\n }\r\n\r\n isAllLoaded(fieldMasterDataKeys) {\r\n for (const key in fieldMasterDataKeys) {\r\n if (fieldMasterDataKeys[key] === false) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n // eslint-disable-next-line no-unused-vars\r\n initFieldMasterDataResponse(key, data, callback, loadAllCallbackData) {\r\n this.fieldMasterData[key] = data;\r\n this.fieldMasterDataKeys[key] = true;\r\n\r\n if (callback !== undefined && callback !== null) {\r\n callback();\r\n }\r\n\r\n if (this.fieldMasterDataCallback !== null\r\n && this.fieldMasterDataCallback !== undefined\r\n && this.isAllLoaded(this.fieldMasterDataKeys)\r\n && (this.fieldMasterDataCallbackData !== null && this.fieldMasterDataCallbackData !== undefined)\r\n ) {\r\n this.fieldMasterDataCallback(this.fieldMasterDataCallbackData);\r\n } else if (this.fieldMasterDataCallback !== null\r\n && this.fieldMasterDataCallback !== undefined\r\n && this.isAllLoaded(this.fieldMasterDataKeys)\r\n ) {\r\n this.fieldMasterDataCallback();\r\n }\r\n }\r\n\r\n getMetaFieldValues(key, fields) {\r\n for (let i = 0; i < fields.length; i++) {\r\n if (key === fields[i][0]) {\r\n return fields[i][1];\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n getThemeColors() {\r\n const colors = ['red', 'yellow', 'aqua', 'blue',\r\n 'light-blue', 'green', 'navy', 'teal', 'olive', 'orange',\r\n 'fuchsia', 'purple'];\r\n\r\n return colors;\r\n }\r\n\r\n getColorByRandomString(string) {\r\n const colors = this.getThemeColors();\r\n const k = string.charCodeAt(0);\r\n return colors[k % colors.length];\r\n }\r\n\r\n getColorByFileType(type) {\r\n type = type.toLowerCase();\r\n\r\n const colorMap = {};\r\n colorMap.pdf = 'red';\r\n colorMap.csv = 'yellow';\r\n colorMap.xls = 'green';\r\n colorMap.xlsx = 'green';\r\n colorMap.doc = 'light-blue';\r\n colorMap.docx = 'light-blue';\r\n colorMap.docx = 'blue';\r\n colorMap.ppt = 'orange';\r\n colorMap.pptx = 'orange';\r\n colorMap.jpg = 'teal';\r\n colorMap.jpeg = 'teal';\r\n colorMap.gif = 'green';\r\n colorMap.png = 'yellow';\r\n colorMap.bmp = 'fuchsia';\r\n\r\n\r\n if (colorMap[type] !== undefined || colorMap[type] != null) {\r\n return colorMap[type];\r\n }\r\n return this.getColorByRandomString(type);\r\n }\r\n\r\n getIconByFileType(type) {\r\n type = type.toLowerCase();\r\n\r\n const iconMap = {};\r\n iconMap.pdf = 'fa fa-file-pdf-o';\r\n iconMap.csv = 'fa fa fa-file-code-o';\r\n iconMap.xls = 'fa fa-file-excel-o';\r\n iconMap.xlsx = 'fa fa-file-excel-o';\r\n iconMap.doc = 'fa fa-file-word-o';\r\n iconMap.docx = 'fa fa-file-word-o';\r\n iconMap.ppt = 'fa fa-file-powerpoint-o';\r\n iconMap.pptx = 'fa fa-file-powerpoint-o';\r\n iconMap.jpg = 'fa fa-file-image-o';\r\n iconMap.jpeg = 'fa fa-file-image-o';\r\n iconMap.gif = 'fa fa-file-image-o';\r\n iconMap.png = 'fa fa-file-image-o';\r\n iconMap.bmp = 'fa fa-file-image-o';\r\n iconMap.txt = 'fa fa-file-text-o';\r\n iconMap.rtf = 'fa fa-file-text-o';\r\n\r\n\r\n if (iconMap[type] !== undefined || iconMap[type] != null) {\r\n return iconMap[type];\r\n }\r\n return 'fa fa-file-o';\r\n }\r\n\r\n getSourceMapping() {\r\n return this.sourceMapping;\r\n }\r\n\r\n setTesting(testing) {\r\n this.testing = testing;\r\n }\r\n\r\n consoleLog(message) {\r\n if (this.testing) {\r\n console.log(message);\r\n }\r\n }\r\n\r\n setClientMessages(msgList) {\r\n this.msgList = msgList;\r\n }\r\n\r\n setTemplates(templates) {\r\n this.templates = templates;\r\n }\r\n\r\n\r\n getWSProperty(array, key) {\r\n if (array.hasOwnProperty(key)) {\r\n return array[key];\r\n }\r\n return null;\r\n }\r\n\r\n\r\n getClientMessage(key) {\r\n return this.getWSProperty(this.msgList, key);\r\n }\r\n\r\n\r\n getTemplate(key) {\r\n return this.getWSProperty(this.templates, key);\r\n }\r\n\r\n setGoogleAnalytics(gaq) {\r\n this.gaq = gaq;\r\n }\r\n\r\n\r\n showView(view) {\r\n if (this.currentView != null) {\r\n this.previousView = this.currentView;\r\n $(`#${this.currentView}`).hide();\r\n }\r\n $(`#${view}`).show();\r\n this.currentView = view;\r\n this.moveToTop();\r\n }\r\n\r\n showPreviousView() {\r\n this.showView(this.previousView);\r\n }\r\n\r\n\r\n moveToTop() {\r\n\r\n }\r\n\r\n\r\n callFunction(callback, cbParams, thisParam) {\r\n if ($.isFunction(callback)) {\r\n try {\r\n if (thisParam === undefined || thisParam === null) {\r\n callback.apply(document, cbParams);\r\n } else {\r\n callback.apply(thisParam, cbParams);\r\n }\r\n } catch (e) {\r\n console.log(e.message);\r\n }\r\n } else {\r\n const f = this[callback];\r\n if ($.isFunction(f)) {\r\n try {\r\n f.apply(this, cbParams);\r\n } catch (e) {\r\n console.log(e.message);\r\n }\r\n }\r\n }\r\n }\r\n\r\n getTableTopButtonHtml() {\r\n let html = '';\r\n if (this.getShowAddNew()) {\r\n html = ``;\r\n }\r\n\r\n if (this.getFilters() != null) {\r\n if (html !== '') {\r\n html += '  ';\r\n }\r\n html += ``;\r\n html += '  ';\r\n if (this.filtersAlreadySet) {\r\n html += '';\r\n } else {\r\n html += '';\r\n }\r\n }\r\n\r\n html = html.replace(/__id__/g, this.getTableName());\r\n\r\n if (this.currentFilterString !== '' && this.currentFilterString != null) {\r\n html = html.replace(/__filterString__/g, this.currentFilterString);\r\n } else {\r\n html = html.replace(/__filterString__/g, 'Reset Filters');\r\n }\r\n\r\n if (html !== '') {\r\n html = `
    ${html}
    `;\r\n }\r\n\r\n return html;\r\n }\r\n\r\n\r\n getActionButtonHeader() {\r\n return { sTitle: '', sClass: 'center' };\r\n }\r\n\r\n getTableHTMLTemplate() {\r\n return '
    ';\r\n }\r\n\r\n isSortable() {\r\n return true;\r\n }\r\n\r\n /**\r\n * Create the data table on provided element id\r\n * @method createTable\r\n * @param val {Boolean}\r\n */\r\n\r\n createTable(elementId) {\r\n const that = this;\r\n\r\n if (this.getRemoteTable()) {\r\n this.createTableServer(elementId);\r\n return;\r\n }\r\n\r\n\r\n const headers = this.getHeaders();\r\n\r\n // add translations\r\n for (const index in headers) {\r\n headers[index].sTitle = this.gt(headers[index].sTitle);\r\n }\r\n\r\n const data = this.getTableData();\r\n\r\n if (this.showActionButtons()) {\r\n headers.push(this.getActionButtonHeader());\r\n }\r\n\r\n\r\n if (this.showActionButtons()) {\r\n for (let i = 0; i < data.length; i++) {\r\n data[i].push(this.getActionButtonsHtml(data[i][0], data[i]));\r\n }\r\n }\r\n\r\n let html = '';\r\n html = this.getTableTopButtonHtml() + this.getTableHTMLTemplate();\r\n /*\r\n if(this.getShowAddNew()){\r\n html = this.getTableTopButtonHtml()+'
    ';\r\n }else{\r\n html = '
    ';\r\n }\r\n */\r\n // Find current page\r\n const activePage = $(`#${elementId} .dataTables_paginate .active a`).html();\r\n let start = 0;\r\n if (activePage !== undefined && activePage != null) {\r\n start = parseInt(activePage, 10) * 15 - 15;\r\n }\r\n\r\n $(`#${elementId}`).html(html);\r\n\r\n const dataTableParams = {\r\n oLanguage: {\r\n sLengthMenu: '_MENU_ records per page',\r\n },\r\n aaData: data,\r\n aoColumns: headers,\r\n bSort: that.isSortable(),\r\n iDisplayLength: 15,\r\n iDisplayStart: start,\r\n };\r\n\r\n\r\n const customTableParams = this.getCustomTableParams();\r\n\r\n $.extend(dataTableParams, customTableParams);\r\n\r\n $(`#${elementId} #grid`).dataTable(dataTableParams);\r\n\r\n $('.dataTables_paginate ul').addClass('pagination');\r\n $('.dataTables_length').hide();\r\n $('.dataTables_filter input').addClass('form-control');\r\n $('.dataTables_filter input').attr('placeholder', 'Search');\r\n $('.dataTables_filter label').contents().filter(function () {\r\n return (this.nodeType === 3);\r\n }).remove();\r\n $('.tableActionButton').tooltip();\r\n }\r\n\r\n /**\r\n * Create a data table on provided element id which loads data page by page\r\n * @method createTableServer\r\n * @param val {Boolean}\r\n */\r\n\r\n createTableServer(elementId) {\r\n const that = this;\r\n const headers = this.getHeaders();\r\n\r\n headers.push({ sTitle: '', sClass: 'center' });\r\n\r\n // add translations\r\n for (const index in headers) {\r\n headers[index].sTitle = this.gt(headers[index].sTitle);\r\n }\r\n\r\n let html = '';\r\n html = this.getTableTopButtonHtml() + this.getTableHTMLTemplate();\r\n\r\n // Find current page\r\n const activePage = $(`#${elementId} .dataTables_paginate .active a`).html();\r\n let start = 0;\r\n if (activePage !== undefined && activePage != null) {\r\n start = parseInt(activePage, 10) * 15 - 15;\r\n }\r\n\r\n\r\n $(`#${elementId}`).html(html);\r\n\r\n const dataTableParams = {\r\n oLanguage: {\r\n sLengthMenu: '_MENU_ records per page',\r\n },\r\n bProcessing: true,\r\n bServerSide: true,\r\n sAjaxSource: that.getDataUrl(that.getDataMapping()),\r\n aoColumns: headers,\r\n bSort: that.isSortable(),\r\n parent: that,\r\n iDisplayLength: 15,\r\n iDisplayStart: start,\r\n };\r\n\r\n if (this.showActionButtons()) {\r\n dataTableParams.aoColumnDefs = [\r\n {\r\n fnRender: that.getActionButtons,\r\n aTargets: [that.getDataMapping().length],\r\n },\r\n ];\r\n }\r\n\r\n const customTableParams = this.getCustomTableParams();\r\n\r\n $.extend(dataTableParams, customTableParams);\r\n\r\n $(`#${elementId} #grid`).dataTable(dataTableParams);\r\n\r\n $('.dataTables_paginate ul').addClass('pagination');\r\n $('.dataTables_length').hide();\r\n $('.dataTables_filter input').addClass('form-control');\r\n $('.dataTables_filter input').attr('placeholder', 'Search');\r\n $('.dataTables_filter label').contents().filter(function () {\r\n return (this.nodeType === 3);\r\n }).remove();\r\n\r\n $('.tableActionButton').tooltip();\r\n }\r\n\r\n /**\r\n * This should be overridden in module lib.js classes to return module headers which are used to create the data table.\r\n * @method getHeaders\r\n * @example\r\n SettingAdapter.method('getHeaders() {\r\n return [\r\n { \"sTitle\": \"ID\" ,\"bVisible\":false},\r\n { \"sTitle\": \"Name\" },\r\n { \"sTitle\": \"Value\"},\r\n { \"sTitle\": \"Details\"}\r\n ];\r\n }\r\n */\r\n getHeaders() {\r\n\r\n }\r\n\r\n\r\n /**\r\n * This should be overridden in module lib.js classes to return module field values which are used to create the data table.\r\n * @method getDataMapping\r\n * @example\r\n SettingAdapter.method('getDataMapping() {\r\n return [\r\n \"id\",\r\n \"name\",\r\n \"value\",\r\n \"description\"\r\n ];\r\n }\r\n */\r\n\r\n getDataMapping() {\r\n\r\n }\r\n\r\n /**\r\n * This should be overridden in module lib.js classes to return module from fields which are used to create the add/edit form and also used for initializing select box values in form.\r\n * @method getFormFields\r\n * @example\r\n SettingAdapter.method('getFormFields() {\r\n return [\r\n [ \"id\", {\"label\":\"ID\",\"type\":\"hidden\"}],\r\n [ \"value\", {\"label\":\"Value\",\"type\":\"text\",\"validation\":\"none\"}]\r\n ];\r\n }\r\n */\r\n getFormFields() {\r\n\r\n }\r\n\r\n getTableColumns() {\r\n return [];\r\n }\r\n\r\n getTableData() {\r\n\r\n }\r\n\r\n /**\r\n * This can be overridden in module lib.js classes inorder to show a filter form\r\n * @method getFilters\r\n * @example\r\n EmployeeAdapter.method('getFilters() {\r\n return [\r\n [ \"job_title\", {\"label\":\"Job Title\",\"type\":\"select2\",\"allow-null\":true,\"null-label\":\"All Job Titles\",\"remote-source\":[\"JobTitle\",\"id\",\"name\"]}],\r\n [ \"department\", {\"label\":\"Department\",\"type\":\"select2\",\"allow-null\":true,\"null-label\":\"All Departments\",\"remote-source\":[\"CompanyStructure\",\"id\",\"title\"]}],\r\n [ \"supervisor\", {\"label\":\"Supervisor\",\"type\":\"select2\",\"allow-null\":true,\"null-label\":\"Anyone\",\"remote-source\":[\"Employee\",\"id\",\"first_name+last_name\"]}]\r\n ];\r\n }\r\n */\r\n getFilters() {\r\n return null;\r\n }\r\n\r\n /**\r\n * Show the edit form for an item\r\n * @method edit\r\n * @param id {int} id of the item to edit\r\n */\r\n edit(id) {\r\n this.currentId = id;\r\n this.getElement(id, []);\r\n }\r\n\r\n copyRow(id) {\r\n this.getElement(id, [], true);\r\n }\r\n\r\n renderModel(id, header, body) {\r\n $(`#${id}ModelBody`).html('');\r\n\r\n if (body === undefined || body == null) {\r\n body = '';\r\n }\r\n\r\n $(`#${id}ModelLabel`).html(header);\r\n $(`#${id}ModelBody`).html(body);\r\n }\r\n\r\n\r\n renderYesNoModel(header, body, yesBtnName, noBtnName, callback, callbackParams) {\r\n const that = this;\r\n const modelId = '#yesnoModel';\r\n\r\n if (body === undefined || body == null) {\r\n body = '';\r\n }\r\n\r\n $(`${modelId}Label`).html(header);\r\n $(`${modelId}Body`).html(body);\r\n if (yesBtnName != null) {\r\n $(`${modelId}YesBtn`).html(yesBtnName);\r\n }\r\n if (noBtnName != null) {\r\n $(`${modelId}NoBtn`).html(noBtnName);\r\n }\r\n\r\n $(`${modelId}YesBtn`).off().on('click', () => {\r\n if (callback !== undefined && callback != null) {\r\n callback.apply(that, callbackParams);\r\n that.cancelYesno();\r\n }\r\n });\r\n\r\n $(modelId).modal({\r\n backdrop: 'static',\r\n });\r\n }\r\n\r\n renderModelFromDom(id, header, element) {\r\n $(`#${id}ModelBody`).html('');\r\n\r\n if (element === undefined || element == null) {\r\n element = $('
    ');\r\n }\r\n\r\n $(`#${id}ModelLabel`).html(header);\r\n $(`#${id}ModelBody`).html('');\r\n $(`#${id}ModelBody`).append(element);\r\n }\r\n\r\n /**\r\n * Delete an item\r\n * @method deleteRow\r\n * @param id {int} id of the item to edit\r\n */\r\n\r\n deleteRow(id) {\r\n this.deleteParams.id = id;\r\n this.renderModel('delete', 'Confirm Deletion', 'Are you sure you want to delete this item ?');\r\n $('#deleteModel').modal('show');\r\n }\r\n\r\n /**\r\n * Show a popup with message\r\n * @method showMessage\r\n * @param title {String} title of the message box\r\n * @param message {String} message\r\n * @param closeCallback {Function} this will be called once the dialog is closed (optional)\r\n * @param closeCallback {Function} data to pass to close callback (optional)\r\n * @param closeCallbackData\r\n * @param isPlain {Boolean} if true buttons are not shown (optional / default = true)\r\n * @example\r\n * this.showMessage(\"Error Occured while Applying Leave\", callBackData);\r\n */\r\n showMessage(title, message, closeCallback = null, closeCallbackData = null, isPlain = false) {\r\n const that = this;\r\n let modelId = '';\r\n if (isPlain) {\r\n modelId = '#plainMessageModel';\r\n } else {\r\n modelId = '#messageModel';\r\n }\r\n\r\n $(modelId).off();\r\n\r\n if (isPlain) {\r\n this.renderModel('plainMessage', title, message);\r\n } else {\r\n this.renderModel('message', title, message);\r\n }\r\n\r\n if (closeCallback !== null && closeCallback !== undefined) {\r\n $(modelId).modal({ show: true });\r\n $(modelId).on('hidden.bs.modal', () => {\r\n closeCallback.apply(that, closeCallbackData);\r\n $('.modal-backdrop').remove();\r\n });\r\n } else {\r\n $(modelId).modal({\r\n backdrop: 'static',\r\n });\r\n }\r\n }\r\n\r\n showDomElement(title, element, closeCallback, closeCallbackData, isPlain) {\r\n const that = this;\r\n let modelId = '';\r\n if (isPlain) {\r\n modelId = '#dataMessageModel';\r\n } else {\r\n modelId = '#messageModel';\r\n }\r\n\r\n $(modelId).unbind('hide');\r\n\r\n if (isPlain) {\r\n this.renderModelFromDom('dataMessage', title, element);\r\n } else {\r\n this.renderModelFromDom('message', title, element);\r\n }\r\n\r\n\r\n if (closeCallback !== null && closeCallback !== undefined) {\r\n $(modelId).modal({ show: true });\r\n $(modelId).on('hidden.bs.modal', () => {\r\n closeCallback.apply(that, closeCallbackData);\r\n $('.modal-backdrop').remove();\r\n });\r\n } else {\r\n $(modelId).modal({\r\n backdrop: 'static',\r\n });\r\n }\r\n }\r\n\r\n confirmDelete() {\r\n if (this.deleteParams.id !== undefined || this.deleteParams.id != null) {\r\n this.deleteObj(this.deleteParams.id, []);\r\n }\r\n $('#deleteModel').modal('hide');\r\n }\r\n\r\n cancelDelete() {\r\n $('#deleteModel').modal('hide');\r\n this.deleteParams.id = null;\r\n }\r\n\r\n closeMessage() {\r\n $('#messageModel').modal('hide');\r\n }\r\n\r\n cancelYesno() {\r\n $('#yesnoModel').modal('hide');\r\n }\r\n\r\n closePlainMessage() {\r\n $('#plainMessageModel').modal('hide');\r\n $('#dataMessageModel').modal('hide');\r\n }\r\n\r\n closeDataMessage() {\r\n $('#dataMessageModel').modal('hide');\r\n }\r\n\r\n\r\n /**\r\n * Create or edit an element\r\n * @method save\r\n * @param getFunctionCallBackData {Array} once a success is returned call get() function for this module with these parameters\r\n * @param successCallback {Function} this will get called after success response\r\n */\r\n\r\n save(callGetFunction, successCallback) {\r\n const validator = new FormValidation(`${this.getTableName()}_submit`, true, { ShowPopup: false, LabelErrorClass: 'error' });\r\n if (validator.checkValues()) {\r\n let params = validator.getFormParameters();\r\n params = this.forceInjectValuesBeforeSave(params);\r\n const msg = this.doCustomValidation(params);\r\n if (msg == null) {\r\n if (this.csrfRequired) {\r\n params.csrf = $(`#${this.getTableName()}Form`).data('csrf');\r\n }\r\n const id = $(`#${this.getTableName()}_submit #id`).val();\r\n if (id != null && id !== undefined && id !== '') {\r\n params.id = id;\r\n }\r\n params = this.makeEmptyDateFieldsNull(params);\r\n this.add(params, [], callGetFunction, successCallback);\r\n } else {\r\n $(`#${this.getTableName()}Form .label`).html(msg);\r\n $(`#${this.getTableName()}Form .label`).show();\r\n this.scrollToTop();\r\n }\r\n }\r\n }\r\n\r\n\r\n makeEmptyDateFieldsNull(params) {\r\n const fields = this.getFormFields();\r\n fields.forEach((field) => {\r\n if ((field[1].type === 'date' || field[1].type === 'datetime')\r\n && (params[field[0]] === '' || params[field[0]] === '0000-00-00' || params[field[0]] === '0000-00-00 00:00:00')) {\r\n if (field[1].validation === 'none') {\r\n params[field[0]] = 'NULL';\r\n } else {\r\n delete params[field[0]];\r\n }\r\n }\r\n });\r\n return params;\r\n }\r\n\r\n validatePassword(password) {\r\n if (password.length < 8) {\r\n return this.gt('Password too short');\r\n }\r\n\r\n if (password.length > 30) {\r\n return this.gt('Password too long');\r\n }\r\n\r\n const numberTester = /.*[0-9]+.*$/;\r\n if (!password.match(numberTester)) {\r\n return this.gt('Password must include at least one number');\r\n }\r\n\r\n const lowerTester = /.*[a-z]+.*$/;\r\n if (!password.match(lowerTester)) {\r\n return this.gt('Password must include at least one lowercase letter');\r\n }\r\n\r\n const upperTester = /.*[A-Z]+.*$/;\r\n if (!password.match(upperTester)) {\r\n return this.gt('Password must include at least one uppercase letter');\r\n }\r\n\r\n const symbolTester = /.*[\\W]+.*$/;\r\n if (!password.match(symbolTester)) {\r\n return this.gt('Password must include at least one symbol');\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Override this method to inject attitional parameters or modify existing parameters retrived from\r\n * add/edit form before sending to the server\r\n * @method forceInjectValuesBeforeSave\r\n * @param params {Array} keys and values in form\r\n * @returns {Array} modified parameters\r\n */\r\n forceInjectValuesBeforeSave(params) {\r\n return params;\r\n }\r\n\r\n /**\r\n * Override this method to do custom validations at client side\r\n * @method doCustomValidation\r\n * @param params {Array} keys and values in form\r\n * @returns {Null or String} return null if validation success, returns error message if unsuccessful\r\n * @example\r\n EmployeeLeaveAdapter.method('doCustomValidation(params) {\r\n try{\r\n if(params['date_start'] != params['date_end']){\r\n var ds = new Date(params['date_start']);\r\n var de = new Date(params['date_end']);\r\n if(de < ds){\r\n return \"Start date should be earlier than end date of the leave period\";\r\n }\r\n }\r\n }catch(e){\r\n\r\n }\r\n return null;\r\n}\r\n */\r\n // eslint-disable-next-line no-unused-vars\r\n doCustomValidation(params) {\r\n return null;\r\n }\r\n\r\n filterQuery() {\r\n const validator = new FormValidation(`${this.getTableName()}_filter`, true, { ShowPopup: false, LabelErrorClass: 'error' });\r\n if (validator.checkValues()) {\r\n const params = validator.getFormParameters();\r\n if (this.doCustomFilterValidation(params)) {\r\n // remove null params\r\n for (const prop in params) {\r\n if (params.hasOwnProperty(prop)) {\r\n if (params[prop] === 'NULL') {\r\n delete (params[prop]);\r\n }\r\n }\r\n }\r\n\r\n this.setFilter(params);\r\n this.filtersAlreadySet = true;\r\n $(`#${this.getTableName()}_resetFilters`).show();\r\n this.currentFilterString = this.getFilterString(params);\r\n\r\n this.get([]);\r\n this.closePlainMessage();\r\n }\r\n }\r\n }\r\n\r\n\r\n getFilterString(filters) {\r\n let str = '';\r\n let rmf; let source; let values; let select2MVal; let value; let\r\n valueOrig;\r\n\r\n const filterFields = this.getFilters();\r\n\r\n\r\n if (values == null) {\r\n values = [];\r\n }\r\n\r\n for (const prop in filters) {\r\n if (filters.hasOwnProperty(prop)) {\r\n values = this.getMetaFieldValues(prop, filterFields);\r\n if (!values) {\r\n continue;\r\n }\r\n value = '';\r\n valueOrig = null;\r\n\r\n if ((values.type === 'select' || values.type === 'select2')) {\r\n if (values['remote-source'] !== undefined && values['remote-source'] != null) {\r\n rmf = values['remote-source'];\r\n if (filters[prop] === 'NULL') {\r\n if (values['null-label'] !== undefined && values['null-label'] != null) {\r\n value = values['null-label'];\r\n } else {\r\n value = 'Not Selected';\r\n }\r\n } else {\r\n let key = `${rmf[0]}_${rmf[1]}_${rmf[2]}`;\r\n if (rmf.length > 3) {\r\n key = `${key}_${rmf[3]}`;\r\n }\r\n // value = this.fieldMasterData[`${rmf[0]}_${rmf[1]}_${rmf[2]}`][filters[prop]];\r\n value = this.fieldMasterData[key][filters[prop]];\r\n valueOrig = value;\r\n }\r\n } else {\r\n source = values.source[0];\r\n if (filters[prop] === 'NULL') {\r\n if (values['null-label'] !== undefined && values['null-label'] != null) {\r\n value = values['null-label'];\r\n } else {\r\n value = 'Not Selected';\r\n }\r\n } else {\r\n for (let i = 0; i < source.length; i++) {\r\n if (filters[prop] === values.source[i][0]) {\r\n value = values.source[i][1];\r\n valueOrig = value;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n } else if (values.type === 'select2multi') {\r\n select2MVal = [];\r\n try {\r\n select2MVal = JSON.parse(filters[prop]);\r\n } catch (e) {\r\n // Do nothing\r\n }\r\n\r\n value = select2MVal.join(',');\r\n if (value !== '') {\r\n valueOrig = value;\r\n }\r\n } else {\r\n value = filters[prop];\r\n if (value !== '') {\r\n valueOrig = value;\r\n }\r\n }\r\n\r\n if (valueOrig != null) {\r\n if (str !== '') {\r\n str += ' | ';\r\n }\r\n\r\n str += `${values.label} = ${value}`;\r\n }\r\n }\r\n }\r\n\r\n return str;\r\n }\r\n\r\n /**\r\n * Override this method to do custom validations at client side for values selected in filters\r\n * @method doCustomFilterValidation\r\n * @param params {Array} keys and values in form\r\n * @returns {Null or String} return null if validation success, returns error message if unsuccessful\r\n */\r\n doCustomFilterValidation(params) {\r\n return true;\r\n }\r\n\r\n\r\n /**\r\n * Reset selected filters\r\n * @method resetFilters\r\n */\r\n\r\n resetFilters() {\r\n this.filter = this.origFilter;\r\n this.filtersAlreadySet = false;\r\n $(`#${this.getTableName()}_resetFilters`).hide();\r\n this.currentFilterString = '';\r\n this.get([]);\r\n }\r\n\r\n\r\n showFilters(object) {\r\n let formHtml = this.templates.filterTemplate;\r\n let html = '';\r\n const fields = this.getFilters();\r\n\r\n for (let i = 0; i < fields.length; i++) {\r\n const metaField = this.getMetaFieldForRendering(fields[i][0]);\r\n if (metaField === '' || metaField === undefined) {\r\n html += this.renderFormField(fields[i]);\r\n } else {\r\n const metaVal = object[metaField];\r\n if (metaVal !== '' && metaVal != null && metaVal !== undefined && metaVal.trim() !== '') {\r\n html += this.renderFormField(JSON.parse(metaVal));\r\n } else {\r\n html += this.renderFormField(fields[i]);\r\n }\r\n }\r\n }\r\n formHtml = formHtml.replace(/_id_/g, `${this.getTableName()}_filter`);\r\n formHtml = formHtml.replace(/_fields_/g, html);\r\n\r\n const randomFormId = this.generateRandom(14);\r\n const $tempDomObj = $('
    ');\r\n $tempDomObj.attr('id', randomFormId);\r\n\r\n $tempDomObj.html(formHtml);\r\n\r\n\r\n $tempDomObj.find('.datefield').datepicker({ viewMode: 2 });\r\n $tempDomObj.find('.timefield').datetimepicker({\r\n language: 'en',\r\n pickDate: false,\r\n });\r\n $tempDomObj.find('.datetimefield').datetimepicker({\r\n language: 'en',\r\n });\r\n\r\n $tempDomObj.find('.colorpick').colorpicker();\r\n tinymce.init({\r\n selector: `#${$tempDomObj.attr('id')} .tinymce`,\r\n height: '400',\r\n });\r\n\r\n $tempDomObj.find('.simplemde').each(function () {\r\n const simplemde = new SimpleMDE({ element: $(this)[0] });\r\n $(this).data('simplemde', simplemde);\r\n // simplemde.value($(this).val());\r\n });\r\n\r\n // $tempDomObj.find('.select2Field').select2();\r\n $tempDomObj.find('.select2Field').each(function () {\r\n $(this).select2().select2('val', $(this).find('option:eq(0)').val());\r\n });\r\n\r\n $tempDomObj.find('.select2Multi').each(function () {\r\n $(this).select2().on('change', function (e) {\r\n const parentRow = $(this).parents('.row');\r\n const height = parentRow.find('.select2-choices').height();\r\n parentRow.height(parseInt(height, 10));\r\n });\r\n });\r\n\r\n /*\r\n $tempDomObj.find('.signatureField').each(function() {\r\n $(this).data('signaturePad',new SignaturePad($(this)));\r\n });\r\n */\r\n\r\n // var tHtml = $tempDomObj.wrap('
    ').parent().html();\r\n this.showDomElement('Edit', $tempDomObj, null, null, true);\r\n $('.filterBtn').off();\r\n $('.filterBtn').on('click', (e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n try {\r\n modJs.filterQuery();\r\n } catch (err) {\r\n console.log(err);\r\n console.log(err.message);\r\n }\r\n return false;\r\n });\r\n\r\n if (this.filter !== undefined && this.filter != null && this.filter !== '') {\r\n this.fillForm(this.filter, `#${this.getTableName()}_filter`, this.getFilters());\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Override this method in your module class to make changes to data fo the form before showing the form\r\n * @method preRenderForm\r\n * @param object {Array} keys value list for populating form\r\n */\r\n\r\n preRenderForm(object) {\r\n\r\n }\r\n\r\n /**\r\n * Create the form\r\n * @method renderForm\r\n * @param object {Array} keys value list for populating form\r\n */\r\n\r\n renderForm(object) {\r\n const signatureIds = [];\r\n if (object == null || object === undefined) {\r\n this.currentId = null;\r\n }\r\n\r\n this.preRenderForm(object);\r\n\r\n let formHtml = this.templates.formTemplate;\r\n let html = '';\r\n const fields = this.getFormFields();\r\n\r\n for (let i = 0; i < fields.length; i++) {\r\n const metaField = this.getMetaFieldForRendering(fields[i][0]);\r\n if (metaField === '' || metaField === undefined) {\r\n html += this.renderFormField(fields[i]);\r\n } else {\r\n const metaVal = object[metaField];\r\n if (metaVal !== '' && metaVal != null && metaVal !== undefined && metaVal.trim() !== '') {\r\n html += this.renderFormField(JSON.parse(metaVal));\r\n } else {\r\n html += this.renderFormField(fields[i]);\r\n }\r\n }\r\n }\r\n formHtml = formHtml.replace(/_id_/g, `${this.getTableName()}_submit`);\r\n formHtml = formHtml.replace(/_fields_/g, html);\r\n\r\n\r\n let $tempDomObj;\r\n const randomFormId = this.generateRandom(14);\r\n if (!this.showFormOnPopup) {\r\n $tempDomObj = $(`#${this.getTableName()}Form`);\r\n } else {\r\n $tempDomObj = $('
    ');\r\n $tempDomObj.attr('id', randomFormId);\r\n }\r\n\r\n $tempDomObj.html(formHtml);\r\n\r\n\r\n $tempDomObj.find('.datefield').datepicker({ viewMode: 2 });\r\n $tempDomObj.find('.timefield').datetimepicker({\r\n language: 'en',\r\n pickDate: false,\r\n });\r\n $tempDomObj.find('.datetimefield').datetimepicker({\r\n language: 'en',\r\n });\r\n\r\n $tempDomObj.find('.colorpick').colorpicker();\r\n\r\n tinymce.init({\r\n selector: `#${$tempDomObj.attr('id')} .tinymce`,\r\n height: '400',\r\n });\r\n\r\n $tempDomObj.find('.simplemde').each(function () {\r\n const simplemde = new SimpleMDE({ element: $(this)[0] });\r\n $(this).data('simplemde', simplemde);\r\n // simplemde.value($(this).val());\r\n });\r\n\r\n const codeMirror = this.codeMirror;\r\n if (codeMirror) {\r\n $tempDomObj.find('.code').each(function () {\r\n const editor = codeMirror.fromTextArea($(this)[0], {\r\n lineNumbers: false,\r\n matchBrackets: true,\r\n continueComments: 'Enter',\r\n extraKeys: { 'Ctrl-Q': 'toggleComment' },\r\n });\r\n $(this).data('codemirror', editor);\r\n });\r\n }\r\n\r\n\r\n // $tempDomObj.find('.select2Field').select2();\r\n $tempDomObj.find('.select2Field').each(function () {\r\n $(this).select2().select2('val', $(this).find('option:eq(0)').val());\r\n });\r\n\r\n $tempDomObj.find('.select2Multi').each(function () {\r\n $(this).select2().on('change', function (e) {\r\n const parentRow = $(this).parents('.row');\r\n const height = parentRow.find('.select2-choices').height();\r\n parentRow.height(parseInt(height, 10));\r\n });\r\n });\r\n\r\n\r\n $tempDomObj.find('.signatureField').each(function () {\r\n // $(this).data('signaturePad',new SignaturePad($(this)));\r\n signatureIds.push($(this).attr('id'));\r\n });\r\n\r\n for (let i = 0; i < fields.length; i++) {\r\n if (fields[i][1].type === 'datagroup') {\r\n $tempDomObj.find(`#${fields[i][0]}`).data('field', fields[i]);\r\n }\r\n }\r\n\r\n if (this.showSave === false) {\r\n $tempDomObj.find('.saveBtn').remove();\r\n } else {\r\n $tempDomObj.find('.saveBtn').off();\r\n $tempDomObj.find('.saveBtn').data('modJs', this);\r\n $tempDomObj.find('.saveBtn').on('click', function () {\r\n if ($(this).data('modJs').saveSuccessItemCallback != null && $(this).data('modJs').saveSuccessItemCallback !== undefined) {\r\n $(this).data('modJs').save($(this).data('modJs').retriveItemsAfterSave(), $(this).data('modJs').saveSuccessItemCallback);\r\n } else {\r\n $(this).data('modJs').save();\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n\r\n if (this.showCancel === false) {\r\n $tempDomObj.find('.cancelBtn').remove();\r\n } else {\r\n $tempDomObj.find('.cancelBtn').off();\r\n $tempDomObj.find('.cancelBtn').data('modJs', this);\r\n $tempDomObj.find('.cancelBtn').on('click', function () {\r\n $(this).data('modJs').cancel();\r\n return false;\r\n });\r\n }\r\n\r\n // Input mask\r\n $tempDomObj.find('[mask]').each(function () {\r\n $(this).inputmask($(this).attr('mask'));\r\n });\r\n\r\n $tempDomObj.find('[datemask]').each(function () {\r\n $(this).inputmask({\r\n mask: 'y-1-2',\r\n placeholder: 'YYYY-MM-DD',\r\n leapday: '-02-29',\r\n separator: '-',\r\n alias: 'yyyy/mm/dd',\r\n });\r\n });\r\n\r\n $tempDomObj.find('[datetimemask]').each(function () {\r\n $(this).inputmask('datetime', {\r\n mask: 'y-2-1 h:s:00',\r\n placeholder: 'YYYY-MM-DD hh:mm:ss',\r\n leapday: '-02-29',\r\n separator: '-',\r\n alias: 'yyyy/mm/dd',\r\n });\r\n });\r\n\r\n if (!this.showFormOnPopup) {\r\n $(`#${this.getTableName()}Form`).show();\r\n $(`#${this.getTableName()}`).hide();\r\n\r\n for (let i = 0; i < signatureIds.length; i++) {\r\n $(`#${signatureIds[i]}`)\r\n .data('signaturePad',\r\n new SignaturePad(document.getElementById(signatureIds[i])));\r\n }\r\n\r\n if (object !== undefined && object != null) {\r\n this.fillForm(object);\r\n } else {\r\n this.setDefaultValues();\r\n }\r\n\r\n this.scrollToTop();\r\n } else {\r\n // var tHtml = $tempDomObj.wrap('
    ').parent().html();\r\n // this.showMessage(\"Edit\",tHtml,null,null,true);\r\n this.showMessage('Edit', '', null, null, true);\r\n\r\n $('#plainMessageModel .modal-body').html('');\r\n $('#plainMessageModel .modal-body').append($tempDomObj);\r\n\r\n\r\n for (let i = 0; i < signatureIds.length; i++) {\r\n $(`#${signatureIds[i]}`)\r\n .data('signaturePad',\r\n new SignaturePad(document.getElementById(signatureIds[i])));\r\n }\r\n\r\n if (object !== undefined && object != null) {\r\n this.fillForm(object, `#${randomFormId}`);\r\n } else {\r\n this.setDefaultValues(`#${randomFormId}`);\r\n }\r\n }\r\n\r\n this.postRenderForm(object, $tempDomObj);\r\n }\r\n\r\n setDefaultValues(formId, fields) {\r\n if (fields == null || fields === undefined) {\r\n fields = this.getFormFields();\r\n }\r\n\r\n if (formId == null || formId === undefined || formId === '') {\r\n formId = `#${this.getTableName()}Form`;\r\n }\r\n\r\n\r\n for (let i = 0; i < fields.length; i++) {\r\n if (fields[i][1].type !== 'text' && fields[i][1].type !== 'textarea') {\r\n continue;\r\n }\r\n\r\n if (fields[i][1].default !== undefined && fields[i][1].default !== null) {\r\n $(`${formId} #${fields[i][0]}`).val(fields[i][1].default);\r\n }\r\n }\r\n }\r\n\r\n retriveItemsAfterSave() {\r\n return true;\r\n }\r\n\r\n /**\r\n * Override this method in your module class to make changes to data fo the form after showing it\r\n * @method postRenderForm\r\n * @param object {Array} keys value list for populating form\r\n * @param $tempDomObj {DOM} a DOM element for the form\r\n * @example\r\n * UserAdapter.method('postRenderForm(object, $tempDomObj) {\r\n if(object == null || object == undefined){\r\n $tempDomObj.find(\"#changePasswordBtn\").remove();\r\n }\r\n }\r\n */\r\n\r\n postRenderForm(object, $tempDomObj) {\r\n\r\n }\r\n\r\n /**\r\n * Convert data group field to HTML\r\n * @method dataGroupToHtml\r\n * @param val {String} value in the field\r\n * @param field {Array} field meta data\r\n */\r\n\r\n dataGroupToHtml(val, field) {\r\n const data = JSON.parse(val);\r\n\r\n\r\n let t; let sortFunction; let item; let itemHtml; let itemVal;\r\n\r\n const deleteButton = '
  • ';\r\n const editButton = '
  • ';\r\n\r\n const template = field[1].html;\r\n\r\n if (data != null && data !== undefined && field[1]['sort-function'] !== undefined && field[1]['sort-function'] != null) {\r\n data.sort(field[1]['sort-function']);\r\n }\r\n\r\n\r\n const html = $(`
    `);\r\n\r\n\r\n for (let i = 0; i < data.length; i++) {\r\n item = data[i];\r\n\r\n if (field[1]['pre-format-function'] !== undefined && field[1]['pre-format-function'] != null) {\r\n item = field[1]['pre-format-function'].apply(this, [item]);\r\n }\r\n\r\n t = template;\r\n t = t.replace('#_delete_#', deleteButton);\r\n t = t.replace('#_edit_#', editButton);\r\n t = t.replace(/#_id_#/g, item.id);\r\n\r\n for (const key in item) {\r\n itemVal = item[key];\r\n if (itemVal !== undefined && itemVal != null && typeof itemVal === 'string') {\r\n itemVal = itemVal.replace(/(?:\\r\\n|\\r|\\n)/g, '
    ');\r\n }\r\n t = t.replace(`#_${key}_#`, itemVal);\r\n }\r\n\r\n if (field[1].render !== undefined && field[1].render != null) {\r\n t = t.replace('#_renderFunction_#', field[1].render(item));\r\n }\r\n\r\n itemHtml = $(t);\r\n itemHtml.attr('fieldId', `${field[0]}_div`);\r\n html.append(itemHtml);\r\n }\r\n\r\n\r\n return html;\r\n }\r\n\r\n /**\r\n * Reset the DataGroup for a given field\r\n * @method resetDataGroup\r\n * @param field {Array} field meta data\r\n */\r\n resetDataGroup(field) {\r\n $(`#${field[0]}`).val('');\r\n $(`#${field[0]}_div`).html('');\r\n }\r\n\r\n showDataGroup(field, object, callback) {\r\n let formHtml = this.templates.datagroupTemplate;\r\n let html = '';\r\n const fields = field[1].form;\r\n\r\n if (object !== undefined && object != null && object.id !== undefined) {\r\n this.currentDataGroupItemId = object.id;\r\n } else {\r\n this.currentDataGroupItemId = null;\r\n }\r\n\r\n for (let i = 0; i < fields.length; i++) {\r\n html += this.renderFormField(fields[i]);\r\n }\r\n formHtml = formHtml.replace(/_id_/g, `${this.getTableName()}_field_${field[0]}`);\r\n formHtml = formHtml.replace(/_fields_/g, html);\r\n\r\n const randomFormId = this.generateRandom(14);\r\n const $tempDomObj = $('
    ');\r\n $tempDomObj.attr('id', randomFormId);\r\n\r\n $tempDomObj.html(formHtml);\r\n\r\n\r\n $tempDomObj.find('.datefield').datepicker({ viewMode: 2 });\r\n $tempDomObj.find('.timefield').datetimepicker({\r\n language: 'en',\r\n pickDate: false,\r\n });\r\n $tempDomObj.find('.datetimefield').datetimepicker({\r\n language: 'en',\r\n });\r\n\r\n $tempDomObj.find('.colorpick').colorpicker();\r\n\r\n tinymce.init({\r\n selector: `#${$tempDomObj.attr('id')} .tinymce`,\r\n height: '400',\r\n });\r\n\r\n $tempDomObj.find('.simplemde').each(function () {\r\n const simplemde = new SimpleMDE({ element: $(this)[0] });\r\n $(this).data('simplemde', simplemde);\r\n // simplemde.value($(this).val());\r\n });\r\n\r\n $tempDomObj.find('.select2Field').each(function () {\r\n $(this).select2().select2('val', $(this).find('option:eq(0)').val());\r\n });\r\n\r\n\r\n $tempDomObj.find('.select2Multi').each(function () {\r\n $(this).select2().on('change', function (e) {\r\n const parentRow = $(this).parents('.row');\r\n const height = parentRow.find('.select2-choices').height();\r\n parentRow.height(parseInt(height, 10));\r\n });\r\n });\r\n\r\n\r\n this.currentDataGroupField = field;\r\n this.showDomElement(`Add ${field[1].label}`, $tempDomObj, null, null, true);\r\n\r\n if (object !== undefined && object != null) {\r\n this.fillForm(object, `#${this.getTableName()}_field_${field[0]}`, field[1].form);\r\n } else {\r\n this.setDefaultValues(`#${this.getTableName()}_field_${field[0]}`, field[1].form);\r\n }\r\n\r\n\r\n $('.groupAddBtn').off();\r\n if (object !== undefined && object != null && object.id !== undefined) {\r\n $('.groupAddBtn').on('click', (e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n try {\r\n modJs.editDataGroup(callback);\r\n } catch (err) {\r\n console.log(`Error editing data group: ${err.message}`);\r\n }\r\n return false;\r\n });\r\n } else {\r\n $('.groupAddBtn').on('click', (e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n try {\r\n modJs.addDataGroup(callback);\r\n } catch (err) {\r\n console.log(`Error adding data group: ${err.message}`);\r\n }\r\n return false;\r\n });\r\n }\r\n }\r\n\r\n addDataGroup(callback, existingData) {\r\n const field = this.currentDataGroupField;\r\n let tempParams;\r\n $(`#${this.getTableName()}_field_${field[0]}_error`).html('');\r\n $(`#${this.getTableName()}_field_${field[0]}_error`).hide();\r\n const validator = new FormValidation(`${this.getTableName()}_field_${field[0]}`, true, { ShowPopup: false, LabelErrorClass: 'error' });\r\n if (validator.checkValues()) {\r\n let params = validator.getFormParameters();\r\n if (field[1]['custom-validate-function'] !== undefined && field[1]['custom-validate-function'] != null) {\r\n tempParams = field[1]['custom-validate-function'].apply(this, [params]);\r\n if (tempParams.valid) {\r\n params = tempParams.params;\r\n } else {\r\n $(`#${this.getTableName()}_field_${field[0]}_error`).html(tempParams.message);\r\n $(`#${this.getTableName()}_field_${field[0]}_error`).show();\r\n return false;\r\n }\r\n }\r\n let val = '[]';\r\n if (existingData) {\r\n val = existingData;\r\n } else {\r\n val = $(`#${field[0]}`).val();\r\n if (val === '' || val == null) {\r\n val = '[]';\r\n }\r\n }\r\n const data = JSON.parse(val);\r\n\r\n params.id = `${field[0]}_${this.dataGroupGetNextAutoIncrementId(data)}`;\r\n data.push(params);\r\n\r\n\r\n if (field[1]['sort-function'] !== undefined && field[1]['sort-function'] != null) {\r\n data.sort(field[1]['sort-function']);\r\n }\r\n\r\n val = JSON.stringify(data);\r\n\r\n const html = this.dataGroupToHtml(val, field);\r\n if (callback) {\r\n callback(val);\r\n }\r\n\r\n $(`#${field[0]}_div`).html('');\r\n $(`#${field[0]}_div`).append(html);\r\n\r\n this.makeDataGroupSortable(field, $(`#${field[0]}_div_inner`));\r\n\r\n\r\n $(`#${field[0]}`).val(val);\r\n this.orderDataGroup(field);\r\n\r\n this.closeDataMessage();\r\n\r\n this.showMessage('Item Added', 'This change will be effective only when you save the form');\r\n }\r\n return true;\r\n }\r\n\r\n nl2br(str, len) {\r\n let t = '';\r\n try {\r\n const arr = str.split(' ');\r\n let count = 0;\r\n for (let i = 0; i < arr.length; i++) {\r\n count += arr[i].length + 1;\r\n if (count > len) {\r\n t += `${arr[i]}
    `;\r\n count = 0;\r\n } else {\r\n t += `${arr[i]} `;\r\n }\r\n }\r\n } catch (e) {\r\n // Do nothing\r\n }\r\n return t;\r\n }\r\n\r\n makeDataGroupSortable(field, obj) {\r\n obj.data('field', field);\r\n obj.data('firstSort', true);\r\n obj.sortable({\r\n\r\n create() {\r\n $(this).height($(this).height());\r\n },\r\n\r\n 'ui-floating': false,\r\n start(e, uiStart) {\r\n $('#sortable-ul-selector-id').sortable({\r\n sort(event, ui) {\r\n const $target = $(event.target);\r\n if (!/html|body/i.test($target.offsetParent()[0].tagName)) {\r\n const top = event.pageY - $target.offsetParent().offset().top - (ui.helper.outerHeight(true) / 2);\r\n ui.helper.css({ top: `${top}px` });\r\n }\r\n },\r\n });\r\n },\r\n revert: true,\r\n stop() {\r\n modJs.orderDataGroup($(this).data('field'));\r\n },\r\n axis: 'y',\r\n scroll: false,\r\n placeholder: 'sortable-placeholder',\r\n cursor: 'move',\r\n });\r\n }\r\n\r\n orderDataGroup(field, callback) {\r\n const newArr = []; let\r\n id;\r\n const list = $(`#${field[0]}_div_inner [fieldid='${field[0]}_div']`);\r\n let val = $(`#${field[0]}`).val();\r\n if (val === '' || val == null) {\r\n val = '[]';\r\n }\r\n const data = JSON.parse(val);\r\n list.each(function () {\r\n id = $(this).attr('id');\r\n for (const index in data) {\r\n if (data[index].id === id) {\r\n newArr.push(data[index]);\r\n break;\r\n }\r\n }\r\n });\r\n\r\n $(`#${field[0]}`).val(JSON.stringify(newArr));\r\n\r\n if (callback != null) {\r\n callback(newArr);\r\n }\r\n }\r\n\r\n\r\n editDataGroup(callback, existingData) {\r\n const field = this.currentDataGroupField;\r\n const id = this.currentDataGroupItemId;\r\n const validator = new FormValidation(`${this.getTableName()}_field_${field[0]}`, true, { ShowPopup: false, LabelErrorClass: 'error' });\r\n if (validator.checkValues()) {\r\n let params = validator.getFormParameters();\r\n\r\n if (field[1]['custom-validate-function'] !== undefined && field[1]['custom-validate-function'] != null) {\r\n const tempParams = field[1]['custom-validate-function'].apply(this, [params]);\r\n if (tempParams.valid) {\r\n params = tempParams.params;\r\n } else {\r\n $(`#${this.getTableName()}_field_${field[0]}_error`).html(tempParams.message);\r\n $(`#${this.getTableName()}_field_${field[0]}_error`).show();\r\n return false;\r\n }\r\n }\r\n\r\n\r\n if (this.doCustomFilterValidation(params)) {\r\n let val = '[]';\r\n if (existingData) {\r\n val = existingData;\r\n } else {\r\n val = $(`#${field[0]}`).val();\r\n if (val === '' || val == null) {\r\n val = '[]';\r\n }\r\n }\r\n const data = JSON.parse(val);\r\n\r\n let editVal = {};\r\n let editValIndex = -1;\r\n const newVals = [];\r\n for (let i = 0; i < data.length; i++) {\r\n const item = data[i];\r\n if (item.id === id) {\r\n editVal = item;\r\n editValIndex = i;\r\n }\r\n newVals.push(item);\r\n }\r\n\r\n\r\n params.id = editVal.id;\r\n newVals[editValIndex] = params;\r\n\r\n if (field[1]['sort-function'] !== undefined && field[1]['sort-function'] != null) {\r\n newVals.sort(field[1]['sort-function']);\r\n }\r\n\r\n val = JSON.stringify(newVals);\r\n $(`#${field[0]}`).val(val);\r\n\r\n const html = this.dataGroupToHtml(val, field);\r\n\r\n if (callback) {\r\n callback(newVals);\r\n }\r\n\r\n this.orderDataGroup(field);\r\n\r\n $(`#${field[0]}_div`).html('');\r\n $(`#${field[0]}_div`).append(html);\r\n\r\n this.makeDataGroupSortable(field, $(`#${field[0]}_div_inner`));\r\n\r\n\r\n this.closeDataMessage();\r\n\r\n this.showMessage('Item Edited', 'This change will be effective only when you save the form');\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n editDataGroupItem(id, existingData, field) {\r\n const fieldId = id.substring(0, id.lastIndexOf('_'));\r\n\r\n let val;\r\n if (existingData) {\r\n val = decodeURI(existingData);\r\n } else {\r\n val = $(`#${fieldId}`).val();\r\n }\r\n const data = JSON.parse(val);\r\n\r\n let editVal = {};\r\n\r\n for (let i = 0; i < data.length; i++) {\r\n const item = data[i];\r\n if (item.id === id) {\r\n editVal = item;\r\n }\r\n }\r\n\r\n if (field) {\r\n field = JSON.parse(decodeURI(field));\r\n } else {\r\n field = $(`#${fieldId}`).data('field');\r\n }\r\n\r\n this.showDataGroup(field, editVal);\r\n }\r\n\r\n dataGroupGetNextAutoIncrementId(data) {\r\n let autoId = 1; let\r\n id;\r\n for (let i = 0; i < data.length; i++) {\r\n const item = data[i];\r\n if (item.id === undefined || item.id == null) {\r\n item.id = 1;\r\n }\r\n id = item.id.substring(item.id.lastIndexOf('_') + 1, item.id.length);\r\n if (id >= autoId) {\r\n autoId = parseInt(id, 10) + 1;\r\n }\r\n }\r\n\r\n return autoId;\r\n }\r\n\r\n\r\n deleteDataGroupItem(id, existingData) {\r\n const fieldId = id.substring(0, id.lastIndexOf('_'));\r\n\r\n let val;\r\n if (existingData) {\r\n val = decodeURI(existingData);\r\n } else {\r\n val = $(`#${fieldId}`).val();\r\n }\r\n const data = JSON.parse(val);\r\n\r\n const newVal = [];\r\n\r\n for (let i = 0; i < data.length; i++) {\r\n const item = data[i];\r\n if (item.id !== id) {\r\n newVal.push(item);\r\n }\r\n }\r\n\r\n $(`#${fieldId}`).val(JSON.stringify(newVal));\r\n\r\n $(`#${id}`).remove();\r\n\r\n this.showMessage('Item Removed', 'Item removed. This change will be effective only when you save the form');\r\n }\r\n\r\n\r\n /**\r\n * Fill a form with required values after showing it\r\n * @method fillForm\r\n * @param object {Array} form data\r\n * @param formId {String} id of the form\r\n * @param formId {Array} field meta data\r\n */\r\n\r\n fillForm(object, formId, fields) {\r\n let placeHolderVal;\r\n if (fields == null || fields === undefined) {\r\n fields = this.getFormFields();\r\n }\r\n\r\n if (formId == null || formId === undefined || formId === '') {\r\n formId = `#${this.getTableName()}Form`;\r\n }\r\n\r\n\r\n for (let i = 0; i < fields.length; i++) {\r\n if (fields[i][1].type === 'date') {\r\n if (object[fields[i][0]] !== '0000-00-00' && object[fields[i][0]] !== '' && object[fields[i][0]] != null && object[fields[i][0]] !== undefined) {\r\n $(`${formId} #${fields[i][0]}_date`).datepicker('setValue', object[fields[i][0]]);\r\n }\r\n } else if (fields[i][1].type === 'colorpick') {\r\n if (object[fields[i][0]] != null && object[fields[i][0]] !== undefined) {\r\n $(`${formId} #${fields[i][0]}_colorpick`).colorpicker('setValue', object[fields[i][0]]);\r\n $(`${formId} #${fields[i][0]}`).val(object[fields[i][0]]);\r\n }\r\n } else if (fields[i][1].type === 'datetime' || fields[i][1].type === 'time') {\r\n if (object[fields[i][0]] !== '0000-00-00 00:00:00' && object[fields[i][0]] !== '' && object[fields[i][0]] != null && object[fields[i][0]] !== undefined) {\r\n const tempDate = object[fields[i][0]];\r\n const arr = tempDate.split(' ');\r\n const dateArr = arr[0].split('-');\r\n const timeArr = arr[1].split(':');\r\n $(`${formId} #${fields[i][0]}_datetime`).data('datetimepicker').setLocalDate(new Date(dateArr[0], parseInt(dateArr[1], 10) - 1, dateArr[2], timeArr[0], timeArr[1], timeArr[2]));\r\n }\r\n } else if (fields[i][1].type === 'label') {\r\n $(`${formId} #${fields[i][0]}`).html(object[fields[i][0]]);\r\n } else if (fields[i][1].type === 'placeholder') {\r\n if (fields[i][1]['remote-source'] !== undefined && fields[i][1]['remote-source'] != null) {\r\n // const key = `${fields[i][1]['remote-source'][0]}_${fields[i][1]['remote-source'][1]}_${fields[i][1]['remote-source'][2]}`;\r\n const key = this.getRemoteSourceKey(fields[i]);\r\n placeHolderVal = this.fieldMasterData[key][object[fields[i][0]]];\r\n } else {\r\n placeHolderVal = object[fields[i][0]];\r\n }\r\n\r\n if (placeHolderVal === undefined || placeHolderVal == null) {\r\n placeHolderVal = '';\r\n } else {\r\n try {\r\n placeHolderVal = placeHolderVal.replace(/(?:\\r\\n|\\r|\\n)/g, '
    ');\r\n } catch (e) {\r\n // Do nothing\r\n }\r\n }\r\n\r\n if (fields[i][1].formatter !== undefined && fields[i][1].formatter && $.isFunction(fields[i][1].formatter)) {\r\n try {\r\n placeHolderVal = fields[i][1].formatter(placeHolderVal);\r\n } catch (e) {\r\n // Do nothing\r\n }\r\n }\r\n\r\n $(`${formId} #${fields[i][0]}`).html(placeHolderVal);\r\n } else if (fields[i][1].type === 'fileupload') {\r\n if (object[fields[i][0]] != null && object[fields[i][0]] !== undefined && object[fields[i][0]] !== '') {\r\n $(`${formId} #${fields[i][0]}`).html(object[fields[i][0]]);\r\n $(`${formId} #${fields[i][0]}`).attr('val', object[fields[i][0]]);\r\n $(`${formId} #${fields[i][0]}`).show();\r\n $(`${formId} #${fields[i][0]}_download`).show();\r\n $(`${formId} #${fields[i][0]}_remove`).show();\r\n }\r\n if (fields[i][1].readonly === true) {\r\n $(`${formId} #${fields[i][0]}_upload`).remove();\r\n }\r\n } else if (fields[i][1].type === 'select') {\r\n if (object[fields[i][0]] === undefined || object[fields[i][0]] == null || object[fields[i][0]] === '') {\r\n object[fields[i][0]] = 'NULL';\r\n }\r\n $(`${formId} #${fields[i][0]}`).val(object[fields[i][0]]);\r\n } else if (fields[i][1].type === 'select2') {\r\n if (object[fields[i][0]] === undefined || object[fields[i][0]] == null || object[fields[i][0]] === '') {\r\n object[fields[i][0]] = 'NULL';\r\n }\r\n $(`${formId} #${fields[i][0]}`).select2('val', object[fields[i][0]]);\r\n } else if (fields[i][1].type === 'select2multi') {\r\n // TODO - SM\r\n if (object[fields[i][0]] === undefined || object[fields[i][0]] == null || object[fields[i][0]] === '') {\r\n object[fields[i][0]] = 'NULL';\r\n }\r\n\r\n let msVal = [];\r\n if (object[fields[i][0]] !== undefined && object[fields[i][0]] != null && object[fields[i][0]] !== '') {\r\n try {\r\n msVal = JSON.parse(object[fields[i][0]]);\r\n } catch (e) {\r\n // Do nothing\r\n }\r\n }\r\n\r\n $(`${formId} #${fields[i][0]}`).select2('val', msVal);\r\n const select2Height = $(`${formId} #${fields[i][0]}`).find('.select2-choices').height();\r\n $(`${formId} #${fields[i][0]}`).find('.controls').css('min-height', `${select2Height}px`);\r\n $(`${formId} #${fields[i][0]}`).css('min-height', `${select2Height}px`);\r\n } else if (fields[i][1].type === 'datagroup') {\r\n try {\r\n const html = this.dataGroupToHtml(object[fields[i][0]], fields[i]);\r\n $(`${formId} #${fields[i][0]}`).val(object[fields[i][0]]);\r\n $(`${formId} #${fields[i][0]}_div`).html('');\r\n $(`${formId} #${fields[i][0]}_div`).append(html);\r\n\r\n this.makeDataGroupSortable(fields[i], $(`${formId} #${fields[i][0]}_div_inner`));\r\n } catch (e) {\r\n // Do nothing\r\n }\r\n } else if (fields[i][1].type === 'signature') {\r\n if (object[fields[i][0]] !== '' || object[fields[i][0]] !== undefined\r\n || object[fields[i][0]] != null) {\r\n $(`${formId} #${fields[i][0]}`).data('signaturePad').fromDataURL(object[fields[i][0]]);\r\n }\r\n } else if (fields[i][1].type === 'simplemde') {\r\n $(`${formId} #${fields[i][0]}`).data('simplemde').value(object[fields[i][0]]);\r\n } else if (fields[i][1].type === 'code') {\r\n const cm = $(`${formId} #${fields[i][0]}`).data('codemirror');\r\n if (cm) {\r\n cm.getDoc().setValue(object[fields[i][0]]);\r\n }\r\n } else {\r\n $(`${formId} #${fields[i][0]}`).val(object[fields[i][0]]);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Cancel edit or add new on modules\r\n * @method cancel\r\n */\r\n\r\n cancel() {\r\n $(`#${this.getTableName()}Form`).hide();\r\n $(`#${this.getTableName()}`).show();\r\n }\r\n\r\n renderFormField(field) {\r\n let userId = 0;\r\n if (this.fieldTemplates[field[1].type] === undefined || this.fieldTemplates[field[1].type] == null) {\r\n return '';\r\n }\r\n let t = this.fieldTemplates[field[1].type];\r\n field[1].label = this.gt(field[1].label);\r\n if (field[1].validation !== 'none' && field[1].validation !== 'emailOrEmpty' && field[1].validation !== 'numberOrEmpty' && field[1].type !== 'placeholder' && field[1].label.indexOf('*') < 0) {\r\n const tempSelectBoxes = ['select', 'select2'];\r\n if (!(tempSelectBoxes.indexOf(field[1].type) >= 0 && field[1]['allow-null'] === true)) {\r\n field[1].label = `${field[1].label}*`;\r\n }\r\n }\r\n\r\n if (field[1].type === 'select' || field[1].type === 'select2' || field[1].type === 'select2multi') {\r\n t = t.replace(/_id_/g, field[0]);\r\n t = t.replace(/_label_/g, field[1].label);\r\n if (field[1].source !== undefined && field[1].source != null) {\r\n t = t.replace('_options_', this.renderFormSelectOptions(field[1].source, field));\r\n } else if (field[1]['remote-source'] !== undefined && field[1]['remote-source'] != null) {\r\n // let key = `${field[1]['remote-source'][0]}_${field[1]['remote-source'][1]}_${field[1]['remote-source'][2]}`;\r\n // if (field[1]['remote-source'].length === 4) {\r\n // key = `${key}_${field[1]['remote-source'][3]}`;\r\n // }\r\n const key = this.getRemoteSourceKey(field);\r\n t = t.replace('_options_', this.renderFormSelectOptionsRemote(this.fieldMasterData[key], field));\r\n }\r\n } else if (field[1].type === 'colorpick') {\r\n t = t.replace(/_id_/g, field[0]);\r\n t = t.replace(/_label_/g, field[1].label);\r\n } else if (field[1].type === 'date') {\r\n t = t.replace(/_id_/g, field[0]);\r\n t = t.replace(/_label_/g, field[1].label);\r\n } else if (field[1].type === 'datetime') {\r\n t = t.replace(/_id_/g, field[0]);\r\n t = t.replace(/_label_/g, field[1].label);\r\n } else if (field[1].type === 'time') {\r\n t = t.replace(/_id_/g, field[0]);\r\n t = t.replace(/_label_/g, field[1].label);\r\n } else if (field[1].type === 'fileupload') {\r\n t = t.replace(/_id_/g, field[0]);\r\n t = t.replace(/_label_/g, field[1].label);\r\n const ce = this.getCurrentProfile();\r\n if (ce != null && ce !== undefined) {\r\n userId = ce.id;\r\n } else {\r\n userId = this.getUser().id * -1;\r\n }\r\n t = t.replace(/_userId_/g, userId);\r\n t = t.replace(/_group_/g, this.tab);\r\n\r\n if (field[1].filetypes !== undefined && field[1].filetypes != null) {\r\n t = t.replace(/_filetypes_/g, field[1].filetypes);\r\n } else {\r\n t = t.replace(/_filetypes_/g, 'all');\r\n }\r\n\r\n t = t.replace(/_rand_/g, this.generateRandom(14));\r\n } else if (field[1].type === 'datagroup') {\r\n t = t.replace(/_id_/g, field[0]);\r\n t = t.replace(/_label_/g, field[1].label);\r\n } else if (field[1].type === 'signature') {\r\n t = t.replace(/_id_/g, field[0]);\r\n t = t.replace(/_label_/g, field[1].label);\r\n } else if (field[1].type === 'tinymce' || field[1].type === 'simplemde') {\r\n t = t.replace(/_id_/g, field[0]);\r\n t = t.replace(/_label_/g, field[1].label);\r\n } else {\r\n t = t.replace(/_id_/g, field[0]);\r\n t = t.replace(/_label_/g, field[1].label);\r\n }\r\n\r\n\r\n if (field[1].validation !== undefined && field[1].validation != null && field[1].validation !== '') {\r\n t = t.replace(/_validation_/g, `validation=\"${field[1].validation}\"`);\r\n } else {\r\n t = t.replace(/_validation_/g, '');\r\n }\r\n\r\n if (field[1].help !== undefined && field[1].help !== null) {\r\n t = t.replace(/_helpline_/g, field[1].help);\r\n t = t.replace(/_hidden_class_help_/g, '');\r\n } else {\r\n t = t.replace(/_helpline_/g, '');\r\n t = t.replace(/_hidden_class_help_/g, 'hide');\r\n }\r\n\r\n if (field[1].placeholder !== undefined && field[1].placeholder !== null) {\r\n t = t.replace(/_placeholder_/g, `placeholder=\"${field[1].placeholder}\"`);\r\n } else {\r\n t = t.replace(/_placeholder_/g, '');\r\n }\r\n\r\n if (field[1].mask !== undefined && field[1].mask !== null) {\r\n t = t.replace(/_mask_/g, `mask=\"${field[1].mask}\"`);\r\n } else {\r\n t = t.replace(/_mask_/g, '');\r\n }\r\n\r\n return t;\r\n }\r\n\r\n renderFormSelectOptions(options, field) {\r\n let html = '';\r\n\r\n if (field != null && field !== undefined) {\r\n if (field[1]['allow-null'] === true) {\r\n if (field[1]['null-label'] !== undefined && field[1]['null-label'] != null) {\r\n html += ``;\r\n } else {\r\n html += '';\r\n }\r\n }\r\n }\r\n\r\n\r\n // Sort options\r\n\r\n const tuples = [];\r\n\r\n for (const key in options) {\r\n tuples.push(options[key]);\r\n }\r\n if (field[1].sort === true) {\r\n tuples.sort((a, b) => {\r\n a = a[1];\r\n b = b[1];\r\n\r\n // eslint-disable-next-line no-nested-ternary\r\n return a < b ? -1 : (a > b ? 1 : 0);\r\n });\r\n }\r\n\r\n\r\n for (let i = 0; i < tuples.length; i++) {\r\n const prop = tuples[i][0];\r\n const value = tuples[i][1];\r\n let t = '';\r\n t = t.replace('_id_', prop);\r\n t = t.replace('_val_', this.gt(value));\r\n html += t;\r\n }\r\n return html;\r\n }\r\n\r\n renderFormSelectOptionsRemote(options, field) {\r\n let html = '';\r\n if (field[1]['allow-null'] === true) {\r\n if (field[1]['null-label'] !== undefined && field[1]['null-label'] != null) {\r\n html += ``;\r\n } else {\r\n html += '';\r\n }\r\n }\r\n\r\n // Sort options\r\n\r\n const tuples = [];\r\n\r\n for (const key in options) {\r\n tuples.push([key, options[key]]);\r\n }\r\n if (field[1].sort === 'true') {\r\n tuples.sort((a, b) => {\r\n a = a[1];\r\n b = b[1];\r\n\r\n // eslint-disable-next-line no-nested-ternary\r\n return a < b ? -1 : (a > b ? 1 : 0);\r\n });\r\n }\r\n\r\n for (let i = 0; i < tuples.length; i++) {\r\n const prop = tuples[i][0];\r\n const value = tuples[i][1];\r\n\r\n let t = '';\r\n t = t.replace('_id_', prop);\r\n t = t.replace('_val_', this.gt(value));\r\n html += t;\r\n }\r\n\r\n\r\n return html;\r\n }\r\n\r\n setCustomTemplates(templates) {\r\n this.customTemplates = templates;\r\n }\r\n\r\n setEmailTemplates(templates) {\r\n this.emailTemplates = templates;\r\n }\r\n\r\n getCustomTemplate(file) {\r\n return this.customTemplates[file];\r\n }\r\n\r\n setFieldTemplates(templates) {\r\n this.fieldTemplates = templates;\r\n }\r\n\r\n\r\n getMetaFieldForRendering(fieldName) {\r\n return '';\r\n }\r\n\r\n clearDeleteParams() {\r\n this.deleteParams = {};\r\n }\r\n\r\n getShowAddNew() {\r\n return this.showAddNew;\r\n }\r\n\r\n /**\r\n * Override this method to change add new button label\r\n * @method getAddNewLabel\r\n */\r\n\r\n getAddNewLabel() {\r\n return 'Add New';\r\n }\r\n\r\n /**\r\n * Used to set whether to show the add new button for a module\r\n * @method setShowAddNew\r\n * @param showAddNew {Boolean} value\r\n */\r\n\r\n setShowAddNew(showAddNew) {\r\n this.showAddNew = showAddNew;\r\n }\r\n\r\n /**\r\n * Used to set whether to show delete button for each entry in module\r\n * @method setShowDelete\r\n * @param val {Boolean} value\r\n */\r\n setShowDelete(val) {\r\n this.showDelete = val;\r\n }\r\n\r\n\r\n /**\r\n * Used to set whether to show edit button for each entry in module\r\n * @method setShowEdit\r\n * @param val {Boolean} value\r\n */\r\n\r\n setShowEdit(val) {\r\n this.showEdit = val;\r\n }\r\n\r\n /**\r\n * Used to set whether to show save button in form\r\n * @method setShowSave\r\n * @param val {Boolean} value\r\n */\r\n\r\n\r\n setShowSave(val) {\r\n this.showSave = val;\r\n }\r\n\r\n\r\n /**\r\n * Used to set whether to show cancel button in form\r\n * @method setShowCancel\r\n * @param val {Boolean} value\r\n */\r\n\r\n setShowCancel(val) {\r\n this.showCancel = val;\r\n }\r\n\r\n /**\r\n * Datatable option array will be extended with associative array provided here\r\n * @method getCustomTableParams\r\n * @param val {Boolean} value\r\n */\r\n\r\n\r\n getCustomTableParams() {\r\n return {};\r\n }\r\n\r\n getActionButtons(obj) {\r\n return modJs.getActionButtonsHtml(obj.aData[0], obj.aData);\r\n }\r\n\r\n\r\n /**\r\n * This return html for action buttons in each row. Override this method if you need to make changes to action buttons.\r\n * @method getActionButtonsHtml\r\n * @param id {int} id of the row\r\n * @param data {Array} data for the row\r\n * @returns {String} html for action buttons\r\n */\r\n\r\n getActionButtonsHtml(id, data) {\r\n const editButton = '';\r\n const deleteButton = '';\r\n const cloneButton = '';\r\n let html = '
    _edit__delete__clone_
    ';\r\n\r\n if (this.showAddNew) {\r\n html = html.replace('_clone_', cloneButton);\r\n } else {\r\n html = html.replace('_clone_', '');\r\n }\r\n\r\n if (this.showDelete) {\r\n html = html.replace('_delete_', deleteButton);\r\n } else {\r\n html = html.replace('_delete_', '');\r\n }\r\n\r\n if (this.showEdit) {\r\n html = html.replace('_edit_', editButton);\r\n } else {\r\n html = html.replace('_edit_', '');\r\n }\r\n\r\n html = html.replace(/_id_/g, id);\r\n html = html.replace(/_BASE_/g, this.baseUrl);\r\n return html;\r\n }\r\n\r\n\r\n /**\r\n * Generates a random string\r\n * @method generateRandom\r\n * @param length {int} required length of the string\r\n * @returns {String} random string\r\n */\r\n\r\n generateRandom(length) {\r\n const d = new Date();\r\n const chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\r\n let result = '';\r\n for (let i = length; i > 0; --i) result += chars[Math.round(Math.random() * (chars.length - 1))];\r\n return result + d.getTime();\r\n }\r\n\r\n\r\n checkFileType(elementName, fileTypes) {\r\n const fileElement = document.getElementById(elementName);\r\n let fileExtension = '';\r\n if (fileElement.value.lastIndexOf('.') > 0) {\r\n fileExtension = fileElement.value.substring(fileElement.value.lastIndexOf('.') + 1, fileElement.value.length);\r\n }\r\n\r\n fileExtension = fileExtension.toLowerCase();\r\n\r\n const allowed = fileTypes.split(',');\r\n\r\n if (allowed.indexOf(fileExtension) < 0) {\r\n fileElement.value = '';\r\n this.showMessage('File Type Error', 'Selected file type is not supported');\r\n this.clearFileElement(elementName);\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n clearFileElement(elementName) {\r\n let control = $(`#${elementName}`);\r\n control.replaceWith(control = control.val('').clone(true));\r\n }\r\n\r\n\r\n fixJSON(json) {\r\n if (this.noJSONRequests === '1') {\r\n json = window.btoa(json);\r\n }\r\n return json;\r\n }\r\n\r\n\r\n getClientDate(date) {\r\n const offset = this.getClientGMTOffset();\r\n const tzDate = date.addMinutes(offset * 60);\r\n return tzDate;\r\n }\r\n\r\n getClientGMTOffset() {\r\n const rightNow = new Date();\r\n const jan1 = new Date(rightNow.getFullYear(), 0, 1, 0, 0, 0, 0);\r\n const temp = jan1.toGMTString();\r\n const jan2 = new Date(temp.substring(0, temp.lastIndexOf(' ') - 1));\r\n return (jan1 - jan2) / (1000 * 60 * 60);\r\n }\r\n\r\n /**\r\n * Override this method in a module to provide the help link for the module. Help link of the module on frontend will get updated with this.\r\n * @method getHelpLink\r\n * @returns {String} help link\r\n */\r\n\r\n getHelpLink() {\r\n return null;\r\n }\r\n\r\n showLoader() {\r\n $('#iceloader').show();\r\n }\r\n\r\n hideLoader() {\r\n $('#iceloader').hide();\r\n }\r\n\r\n generateOptions(data) {\r\n const template = '';\r\n let options = '';\r\n for (const index in data) {\r\n options += template.replace('__val__', index).replace('__text__', data[index]);\r\n }\r\n\r\n return options;\r\n }\r\n\r\n isModuleInstalled(type, name) {\r\n if (modulesInstalled === undefined || modulesInstalled === null) {\r\n return false;\r\n }\r\n\r\n return (modulesInstalled[`${type}_${name}`] === 1);\r\n }\r\n\r\n\r\n setCustomFields(fields) {\r\n let field; let\r\n parsed;\r\n for (let i = 0; i < fields.length; i++) {\r\n field = fields[i];\r\n if (field.display !== 'Hidden' && field.data !== '' && field.data !== undefined) {\r\n try {\r\n parsed = JSON.parse(field.data);\r\n if (parsed === undefined || parsed == null) {\r\n continue;\r\n } else if (parsed.length !== 2) {\r\n continue;\r\n } else if (parsed[1].type === undefined || parsed[1].type == null) {\r\n continue;\r\n }\r\n this.customFields.push(parsed);\r\n } catch (e) {\r\n // Do nothing\r\n }\r\n }\r\n }\r\n }\r\n\r\n addCustomFields(fields) {\r\n for (let i = 0; i < this.customFields.length; i++) {\r\n fields.push(this.customFields[i]);\r\n }\r\n\r\n return fields;\r\n }\r\n\r\n getImageUrlFromName(firstName, lastName) {\r\n let seed = firstName.substring(0, 1);\r\n if (!lastName && lastName.length > 0) {\r\n seed += firstName.substring(firstName.length - 1, 1);\r\n } else {\r\n seed += lastName.substring(0, 1);\r\n }\r\n\r\n const arr = `${firstName}${lastName}`.split('');\r\n seed += arr.reduce((acc, item) => parseInt(item.charCodeAt(0), 10) + acc, 0);\r\n\r\n return `https://avatars.dicebear.com/api/initials/:${seed}.svg`;\r\n }\r\n\r\n downloadPdf(type, data) {\r\n const url = `${this.clientUrl}service.php?a=pdf&h=${type}&data=${data}`;\r\n window.open(url,'_blank');\r\n }\r\n}\r\n\r\nexport default ModuleBase;\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { Space, Tag } from 'antd';\r\nimport {\r\n EditOutlined, DeleteOutlined, CopyOutlined, MonitorOutlined,\r\n} from '@ant-design/icons';\r\nimport AdapterBase from './AdapterBase';\r\nimport IceFormModal from '../components/IceFormModal';\r\nimport IceStepFormModal from '../components/IceStepFromModal';\r\nimport IceTable from '../components/IceTable';\r\nimport MasterDataReader from './MasterDataReader';\r\n\r\n\r\nclass ReactModalAdapterBase extends AdapterBase {\r\n static get MODAL_TYPE_NORMAL() { return 'Normal'; }\r\n\r\n static get MODAL_TYPE_STEPS() { return 'Steps'; }\r\n\r\n constructor(endPoint, tab, filter, orderBy) {\r\n super(endPoint, tab, filter, orderBy);\r\n this.modalType = this.MODAL_TYPE_NORMAL;\r\n this.dataPipe = null;\r\n this.formInitialized = false;\r\n this.tableInitialized = false;\r\n this.access = [];\r\n this.localStorageEnabled = false;\r\n this.isV2 = true;\r\n this.masterDataReader = new MasterDataReader(this);\r\n }\r\n\r\n enableLocalStorage() {\r\n this.localStorageEnabled = true;\r\n }\r\n\r\n setModalType(type) {\r\n this.modalType = type;\r\n }\r\n\r\n setDataPipe(dataPipe) {\r\n this.dataPipe = dataPipe;\r\n }\r\n\r\n setAccess(access) {\r\n this.access = access;\r\n }\r\n\r\n hasAccess(type) {\r\n return this.access.indexOf(type) > 0;\r\n }\r\n\r\n hasCustomButtons() {\r\n return false;\r\n }\r\n\r\n initTable() {\r\n if (this.tableInitialized) {\r\n return false;\r\n }\r\n const tableDom = document.getElementById(`${this.tab}Table`);\r\n if (tableDom) {\r\n this.tableContainer = React.createRef();\r\n let columns = this.getTableColumns();\r\n if (this.hasAccess('save')\r\n || this.hasAccess('delete')\r\n || this.hasAccess('element')\r\n || this.hasCustomButtons()\r\n ) {\r\n columns.push({\r\n title: 'Actions',\r\n key: 'actions',\r\n render: this.getTableActionButtonJsx(this),\r\n });\r\n }\r\n\r\n columns = columns.map((item) => {\r\n item.title = this.gt(item.title);\r\n return item;\r\n });\r\n\r\n ReactDOM.render(\r\n \r\n {this.getTableChildComponents()}\r\n ,\r\n tableDom,\r\n );\r\n }\r\n\r\n this.tableInitialized = true;\r\n\r\n return true;\r\n }\r\n\r\n initForm() {\r\n if (this.formInitialized) {\r\n return false;\r\n }\r\n this.formContainer = React.createRef();\r\n if (this.modalType === this.MODAL_TYPE_NORMAL) {\r\n ReactDOM.render(\r\n ,\r\n document.getElementById(`${this.tab}Form`),\r\n );\r\n } else {\r\n ReactDOM.render(\r\n ,\r\n document.getElementById(`${this.tab}Form`),\r\n );\r\n }\r\n\r\n const filterDom = document.getElementById(`${this.tab}FilterForm`);\r\n if (filterDom && this.getFilters()) {\r\n this.filtersContainer = React.createRef();\r\n ReactDOM.render(\r\n {\r\n this.setFilter(values);\r\n this.filtersAlreadySet = true;\r\n this.get([]);\r\n this.tableContainer.current.setFilterData(values);\r\n closeModal();\r\n }}\r\n />,\r\n filterDom,\r\n );\r\n }\r\n\r\n this.formInitialized = true;\r\n return true;\r\n }\r\n\r\n getTableChildComponents() {\r\n return false;\r\n }\r\n\r\n reloadCurrentElement() {\r\n this.viewElement(this.currentId);\r\n }\r\n\r\n getTableActionButtonJsx(adapter) {\r\n return (text, record) => (\r\n \r\n {adapter.hasAccess('save') && adapter.showEdit\r\n && (\r\n modJs.edit(record.id)} style={{ cursor: 'pointer' }}>\r\n \r\n {` ${adapter.gt('Edit')}`}\r\n \r\n )}\r\n {adapter.hasAccess('element')\r\n && (\r\n modJs.viewElement(record.id)} style={{ cursor: 'pointer' }}>\r\n \r\n {` ${adapter.gt('View')}`}\r\n \r\n )}\r\n {adapter.hasAccess('delete') && adapter.showDelete\r\n && (\r\n modJs.deleteRow(record.id)} style={{ cursor: 'pointer' }}>\r\n \r\n {` ${adapter.gt('Delete')}`}\r\n \r\n )}\r\n {adapter.hasAccess('save')\r\n && (\r\n modJs.copyRow(record.id)} style={{ cursor: 'pointer' }}>\r\n \r\n {` ${adapter.gt('Copy')}`}\r\n \r\n )}\r\n \r\n );\r\n }\r\n\r\n setTableLoading(value) {\r\n this.tableContainer.current.setLoading(value);\r\n }\r\n\r\n /**\r\n * Show the view form for an item\r\n * @method viewElement\r\n * @param id {int} id of the item to view\r\n */\r\n viewElement(id) {\r\n this.setTableLoading(true);\r\n this.currentId = id;\r\n this.getElement(id, {\r\n noRender: true,\r\n callBack: (element) => {\r\n this.showElement(element);\r\n this.setTableLoading(false);\r\n },\r\n });\r\n }\r\n\r\n showElement(element) {\r\n this.renderForm(element, true);\r\n }\r\n\r\n /**\r\n * Show the edit form for an item\r\n * @method edit\r\n * @param id {int} id of the item to edit\r\n */\r\n edit(id) {\r\n this.setTableLoading(true);\r\n this.currentId = id;\r\n this.getElement(id, []);\r\n }\r\n\r\n renderForm(object = null, viewOnly = false) {\r\n if (object == null) {\r\n this.currentId = null;\r\n this.currentElement = null;\r\n }\r\n this.setTableLoading(false);\r\n this.initForm();\r\n this.formContainer.current.setViewOnly(viewOnly);\r\n this.formContainer.current.show(object);\r\n }\r\n\r\n showFilters() {\r\n this.initForm();\r\n this.filtersContainer.current.show(this.filter);\r\n }\r\n\r\n resetFilters() {\r\n this.filter = this.origFilter;\r\n this.filtersAlreadySet = false;\r\n this.currentFilterString = '';\r\n this.get([]);\r\n this.tableContainer.current.setFilterData(this.filter);\r\n }\r\n\r\n get() {\r\n if (this.tableContainer && this.tableContainer.current) {\r\n this.tableContainer.current.setCurrentElement(null);\r\n }\r\n this.initTable();\r\n this.masterDataReader.updateAllMasterData()\r\n .then(() => {\r\n this.tableContainer.current.reload();\r\n });\r\n\r\n this.trackEvent('get', this.tab, this.table);\r\n }\r\n\r\n showLoader() {\r\n // $('#iceloader').show();\r\n }\r\n\r\n addActualFieldsForStepModal(steps, fields) {\r\n return steps.map((item) => {\r\n item.fields = item.fields.reduce((acc, fieldName) => {\r\n const field = fields.find(([name]) => name === fieldName);\r\n if (field) {\r\n acc.push(field);\r\n }\r\n return acc;\r\n }, []);\r\n\r\n return item;\r\n });\r\n }\r\n\r\n getFormOptions() {\r\n return {\r\n width: 1024,\r\n twoColumnLayout: false,\r\n };\r\n }\r\n}\r\n\r\nexport default ReactModalAdapterBase;\r\n","import React, { useState, useRef, useEffect } from \"react\";\r\nimport { SketchPicker } from 'react-color';\r\n\r\nfunction useComponentVisible(initialIsVisible) {\r\n const [isComponentVisible, setIsComponentVisible] = useState(initialIsVisible);\r\n const ref = useRef(null);\r\n\r\n const handleClickOutside = (event) => {\r\n if (ref.current && !ref.current.contains(event.target)) {\r\n setIsComponentVisible(false);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n document.addEventListener('click', handleClickOutside, true);\r\n return () => {\r\n document.removeEventListener('click', handleClickOutside, true);\r\n };\r\n });\r\n\r\n return { ref, isComponentVisible, setIsComponentVisible };\r\n}\r\n\r\nfunction IceColorPick(props) {\r\n const { value, onChange, readOnly } = props;\r\n\r\n const { ref, isComponentVisible, setIsComponentVisible } = useComponentVisible(true);\r\n\r\n const [color, setColor] = useState(value || '#FFF');\r\n const [showPicker, setShowPicker] = useState(false);\r\n\r\n useEffect(() => {\r\n if (!isComponentVisible) {\r\n setShowPicker(false);\r\n }\r\n }, [isComponentVisible])\r\n\r\n useEffect(() => {\r\n if (value) {\r\n setColor(value);\r\n }\r\n \r\n }, [value]);\r\n\r\n return
    \r\n {\r\n if (!showPicker) {\r\n setIsComponentVisible(true);\r\n }\r\n setShowPicker(!showPicker);\r\n }}\r\n style={ { backgroundColor: color} }\r\n />\r\n
    \r\n {\r\n onChange(hex);\r\n setColor(hex);\r\n }}\r\n />\r\n
    \r\n
    ;\r\n} \r\n\r\nexport default IceColorPick;\r\n","import React from \"react\";\r\nimport {Button, Form, Select, Space, Card, Modal, Table} from \"antd\";\r\n// import IceDataGroupModal from \"./IceDataGroupModal\";\r\nimport IceFormModal from \"./IceFormModal\";\r\nimport ReactDOM from \"react-dom\";\r\nconst { Option } = Select;\r\n\r\nclass IceDataGroup extends React.Component {\r\n state = {};\r\n\r\n constructor(props) {\r\n super(props);\r\n this.onChange = props.onChange;\r\n this.formReference = React.createRef();\r\n }\r\n\r\n render() {\r\n const { field, adapter } = this.props;\r\n let { value } = this.props;\r\n\r\n value = this.parseValue(value);\r\n value = value.map(item => ({ ...item, key:item.id } ));\r\n const columns = JSON.parse(JSON.stringify(field[1].columns));\r\n\r\n if (!this.props.readOnly) {\r\n columns.push({\r\n title: 'Action',\r\n key: 'action',\r\n render: (text, record) => (\r\n this.getDefaultButtons(record.id)\r\n ),\r\n });\r\n }\r\n\r\n return (\r\n <>\r\n {!this.props.readOnly &&\r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n );\r\n }\r\n\r\n createForm(field, adapter, object) {\r\n this.formContainer = React.createRef();\r\n const formFields = field[1].form;\r\n formFields.unshift(['id', { label: 'ID', type: 'hidden' }]);\r\n ReactDOM.render(\r\n ,\r\n document.getElementById('dataGroup'),\r\n );\r\n this.formContainer.current.show(object);\r\n }\r\n\r\n unmountForm() {\r\n ReactDOM.unmountComponentAtNode(document.getElementById('dataGroup'));\r\n }\r\n\r\n show(data) {\r\n if (!data) {\r\n this.setState({ visible: true });\r\n this.updateFields(data);\r\n } else {\r\n this.setState({ visible: true });\r\n if (this.formReference.current) {\r\n this.updateFields(data);\r\n } else {\r\n this.waitForIt(\r\n () => this.formReference.current != null,\r\n () => { this.updateFields(data); },\r\n 100,\r\n );\r\n }\r\n }\r\n }\r\n\r\n parseValue(value) {\r\n try {\r\n value = JSON.parse(value);\r\n } catch (e) {\r\n value = [];\r\n }\r\n if (value == null) {\r\n value = [];\r\n }\r\n return value;\r\n }\r\n\r\n save(params, errorCallback, closeCallback) {\r\n const {field, value } = this.props;\r\n\r\n if (field[1]['custom-validate-function'] != null) {\r\n let tempParams = field[1]['custom-validate-function'].apply(this, [params]);\r\n if (tempParams.valid) {\r\n params = tempParams.params;\r\n } else {\r\n errorCallback(tempParams.message);\r\n return false;\r\n }\r\n }\r\n\r\n const data = this.parseValue(value);\r\n\r\n let newData = [];\r\n if (!params.id) {\r\n params.id = `${field[0]}_${this.dataGroupGetNextAutoIncrementId(data)}`;\r\n data.push(params);\r\n newData = data;\r\n } else {\r\n for (let i = 0; i < data.length; i++) {\r\n const item = data[i];\r\n if (item.id !== params.id) {\r\n newData.push(item);\r\n } else {\r\n newData.push(params);\r\n }\r\n }\r\n }\r\n\r\n if (field[1]['sort-function'] != null) {\r\n newData.sort(field[1]['sort-function']);\r\n }\r\n\r\n const val = JSON.stringify(newData);\r\n\r\n this.onChange(val);\r\n\r\n this.unmountForm();\r\n }\r\n\r\n createCard(item) {\r\n const { field } = this.props;\r\n if (field[1]['pre-format-function'] != null) {\r\n item = field[1]['pre-format-function'].apply(this, [item]);\r\n }\r\n\r\n const template = field[1].html;\r\n let t = template.replace('#_delete_#', '');\r\n t = t.replace('#_edit_#', '');\r\n t = t.replace(/#_id_#/g, item.id);\r\n\r\n for (const key in item) {\r\n let itemVal = item[key];\r\n if (itemVal !== undefined && itemVal != null && typeof itemVal === 'string') {\r\n itemVal = itemVal.replace(/(?:\\r\\n|\\r|\\n)/g, '
    ');\r\n }\r\n t = t.replace(`#_${key}_#`, itemVal);\r\n }\r\n\r\n if (field[1].render !== undefined && field[1].render != null) {\r\n t = t.replace('#_renderFunction_#', field[1].render(item));\r\n }\r\n\r\n return (\r\n \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n getDefaultButtons(id) {\r\n return (\r\n \r\n {this.editDataGroupItem(id)}}>
  • \r\n {this.deleteDataGroupItem(id)}}>
  • \r\n \r\n );\r\n }\r\n\r\n deleteDataGroupItem(id) {\r\n const {value} = this.props;\r\n const data = this.parseValue(value);\r\n\r\n const newVal = [];\r\n\r\n for (let i = 0; i < data.length; i++) {\r\n const item = data[i];\r\n if (item.id !== id) {\r\n newVal.push(item);\r\n }\r\n }\r\n\r\n const val = JSON.stringify(newVal);\r\n\r\n this.onChange(val);\r\n }\r\n\r\n editDataGroupItem(id) {\r\n const { field, adapter, value } = this.props;\r\n const data = this.parseValue(value);\r\n\r\n let editVal = {};\r\n\r\n for (let i = 0; i < data.length; i++) {\r\n const item = data[i];\r\n if (item.id === id) {\r\n editVal = item;\r\n }\r\n }\r\n\r\n this.createForm(field, adapter, editVal);\r\n }\r\n\r\n resetDataGroup() {\r\n this.onChange('[]');\r\n }\r\n\r\n dataGroupGetNextAutoIncrementId(data) {\r\n let autoId = 1; let id;\r\n for (let i = 0; i < data.length; i++) {\r\n const item = data[i];\r\n if (item.id === undefined || item.id == null) {\r\n item.id = 1;\r\n }\r\n id = item.id.substring(item.id.lastIndexOf('_') + 1, item.id.length);\r\n if (id >= autoId) {\r\n autoId = parseInt(id, 10) + 1;\r\n }\r\n }\r\n\r\n return autoId;\r\n }\r\n\r\n}\r\n\r\nexport default IceDataGroup;\r\n","import React from 'react';\r\nimport {\r\n Alert, Col, DatePicker, TimePicker, Form, Input, Row,\r\n} from 'antd';\r\nimport moment from 'moment';\r\nimport IceUpload from './IceUpload';\r\nimport IceDataGroup from './IceDataGroup';\r\nimport IceSelect from './IceSelect';\r\nimport IceLabel from './IceLabel';\r\nimport IceColorPick from './IceColorPick';\r\nimport IceSignature from './IceSignature';\r\n\r\n\r\nconst ValidationRules = {\r\n\r\n float(str) {\r\n const floatstr = /^[-+]?[0-9]+(\\.[0-9]+)?$/;\r\n if (str != null && str.match(floatstr)) {\r\n return true;\r\n }\r\n return false;\r\n },\r\n\r\n number(str) {\r\n const numstr = /^[0-9]+$/;\r\n if (str != null && str.match(numstr)) {\r\n return true;\r\n }\r\n return false;\r\n },\r\n\r\n numberOrEmpty(str) {\r\n if (str === '') {\r\n return true;\r\n }\r\n const numstr = /^[0-9]+$/;\r\n if (str != null && str.match(numstr)) {\r\n return true;\r\n }\r\n return false;\r\n },\r\n\r\n email(str) {\r\n const emailPattern = /^\\s*[\\w\\-+_]+(\\.[\\w\\-+_]+)*@[\\w\\-+_]+\\.[\\w\\-+_]+(\\.[\\w\\-+_]+)*\\s*$/;\r\n return str != null && emailPattern.test(str);\r\n },\r\n\r\n emailOrEmpty(str) {\r\n if (str === '') {\r\n return true;\r\n }\r\n const emailPattern = /^\\s*[\\w\\-+_]+(\\.[\\w\\-+_]+)*@[\\w\\-+_]+\\.[\\w\\-+_]+(\\.[\\w\\-+_]+)*\\s*$/;\r\n return str != null && emailPattern.test(str);\r\n },\r\n\r\n username(str) {\r\n const username = /^[a-zA-Z0-9.-]+$/;\r\n return str != null && username.test(str);\r\n },\r\n};\r\n\r\n\r\nclass IceForm extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.validationRules = {};\r\n this.state = {\r\n validations: {},\r\n errorMsg: false,\r\n };\r\n this.formReference = React.createRef();\r\n }\r\n\r\n showError(errorMsg) {\r\n this.setState({ errorMsg });\r\n }\r\n\r\n hideError() {\r\n this.setState({ errorMsg: false });\r\n }\r\n\r\n isReady() {\r\n return this.formReference.current != null;\r\n }\r\n\r\n validateFields() {\r\n return this.formReference.current.validateFields();\r\n }\r\n\r\n render() {\r\n const { fields, twoColumnLayout, adapter } = this.props;\r\n let formInputs = [];\r\n const formInputs1 = [];\r\n const formInputs2 = [];\r\n const columns = !twoColumnLayout ? 1 : 2;\r\n for (let i = 0; i < fields.length; i++) {\r\n formInputs.push(\r\n adapter.beforeRenderFieldHook(\r\n fields[i][0],\r\n this.createFromField(fields[i], this.props.viewOnly),\r\n fields[i][1]\r\n )\r\n );\r\n }\r\n formInputs = formInputs.filter(input => !!input);\r\n\r\n for (let i = 0; i < formInputs.length; i++) {\r\n \r\n if (formInputs[i] != null) {\r\n if (columns === 1) {\r\n formInputs1.push(formInputs[i]);\r\n } else if (i % 2 === 0) {\r\n formInputs1.push(formInputs[i]);\r\n } else {\r\n formInputs2.push(formInputs[i]);\r\n }\r\n }\r\n }\r\n\r\n const onFormLayoutChange = () => { };\r\n\r\n return (\r\n \r\n {this.state.errorMsg\r\n && (\r\n <>\r\n \r\n
    \r\n \r\n )}\r\n {columns === 1 && formInputs1}\r\n {columns === 2 && (\r\n \r\n
  • \r\n {formInputs1}\r\n \r\n \r\n {formInputs2}\r\n \r\n \r\n )}\r\n \r\n );\r\n }\r\n\r\n isValid() {\r\n return Object.keys(this.validationRules).reduce((acc, fieldName) => acc && (this.state[fieldName] === 'success' || this.state[fieldName] == null), true);\r\n }\r\n\r\n validateOnChange(event) {\r\n const validationRule = this.validationRules[event.target.id];\r\n const { validations } = this.state;\r\n\r\n if (validationRule) {\r\n if (validationRule.rule(event.target.value)) {\r\n this.state[event.target.id] = 'success';\r\n this.state[`${event.target.id}_message`] = null;\r\n } else {\r\n this.state[event.target.id] = 'error';\r\n this.state[`${event.target.id}_message`] = validationRule.message;\r\n }\r\n }\r\n this.setState({ validations });\r\n }\r\n\r\n createFromField(field, viewOnly = false) {\r\n let userId = 0;\r\n const rules = [];\r\n const requiredRule = { required: true };\r\n const [name, data] = field;\r\n const { adapter, layout } = this.props;\r\n let validationRule = null;\r\n data.label = adapter.gt(data.label);\r\n\r\n const labelSpan = layout === 'vertical' ? { span: 24 } : { span: 6 };\r\n\r\n const tempSelectBoxes = ['select', 'select2', 'select2multi'];\r\n if (tempSelectBoxes.indexOf(data.type) >= 0 && data['allow-null'] === true) {\r\n requiredRule.required = false;\r\n } else if (data.validation === 'none'\r\n || data.validation === 'emailOrEmpty'\r\n || data.validation === 'numberOrEmpty'\r\n ) {\r\n requiredRule.required = false;\r\n } else {\r\n requiredRule.required = true;\r\n requiredRule.message = this.generateFieldMessage(data.label);\r\n }\r\n\r\n rules.push(requiredRule);\r\n\r\n if (data.type === 'hidden') {\r\n requiredRule.required = false;\r\n return (\r\n \r\n \r\n \r\n );\r\n } if (data.type === 'text') {\r\n if (data.validation) {\r\n data.validation = data.validation.replace('OrEmpty', '');\r\n validationRule = this.getValidationRule(data);\r\n if (validationRule) {\r\n this.validationRules[name] = {\r\n rule: validationRule,\r\n message: `Invalid value for ${data.label}`,\r\n };\r\n }\r\n }\r\n if (validationRule != null) {\r\n return (\r\n \r\n {viewOnly\r\n ? \r\n : }\r\n \r\n );\r\n }\r\n return (\r\n \r\n {viewOnly\r\n ? \r\n : }\r\n \r\n );\r\n } if (data.type === 'textarea') {\r\n if (!data.rows) {\r\n data.rows = 4;\r\n }\r\n return (\r\n \r\n {viewOnly\r\n ? \r\n : }\r\n \r\n );\r\n } if (data.type === 'date') {\r\n return (\r\n \r\n \r\n \r\n );\r\n } if (data.type === 'datetime') {\r\n return (\r\n \r\n \r\n \r\n );\r\n } if (data.type === 'time') {\r\n return (\r\n \r\n \r\n \r\n );\r\n } if (data.type === 'fileupload') {\r\n const currentEmployee = adapter.getCurrentProfile();\r\n if (currentEmployee != null) {\r\n userId = currentEmployee.id;\r\n } else {\r\n userId = adapter.getUser().id * -1;\r\n }\r\n\r\n if (data.filetypes == null) {\r\n data.filetypes = '.doc,.docx,.xml,'\r\n + 'application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,'\r\n + 'image/*,'\r\n + '.pdf';\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n } if (data.type === 'datagroup') {\r\n return (\r\n \r\n \r\n \r\n );\r\n } if (data.type === 'select2' || data.type === 'select' || data.type === 'select2multi') {\r\n return (\r\n \r\n \r\n \r\n );\r\n } if (data.type === 'colorpick') {\r\n return (\r\n \r\n \r\n \r\n );\r\n } if (data.type === 'signature') {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n return null;\r\n }\r\n\r\n generateFieldMessage(label) {\r\n return `${label}: ${this.props.adapter.gt('is required')}`;\r\n }\r\n\r\n getValidationRule(data) {\r\n if (ValidationRules[data.validation] == null) {\r\n return null;\r\n }\r\n\r\n return ValidationRules[data.validation];\r\n }\r\n\r\n dataToFormFields(data, fields) {\r\n for (let i = 0; i < fields.length; i++) {\r\n const [key, formInputData] = fields[i];\r\n if (formInputData.type === 'date') {\r\n data[key] = data[key] ? moment(data[key], 'YYYY-MM-DD') : null;\r\n } else if (formInputData.type === 'datetime') {\r\n data[key] = data[key] ? moment(data[key], 'YYYY-MM-DD HH:mm:ss') : null;\r\n } else if (formInputData.type === 'time') {\r\n data[key] = data[key] ? moment(data[key], 'HH:mm') : null;\r\n }\r\n }\r\n\r\n return data;\r\n }\r\n\r\n formFieldsToData(params, fields) {\r\n for (let i = 0; i < fields.length; i++) {\r\n const [key, formInputData] = fields[i];\r\n if (formInputData.type === 'date') {\r\n params[key] = params[key] ? params[key].format('YYYY-MM-DD') : 'NULL';\r\n } else if (formInputData.type === 'datetime') {\r\n params[key] = params[key] ? params[key].format('YYYY-MM-DD HH:mm:ss') : 'NULL';\r\n } else if (formInputData.type === 'time') {\r\n params[key] = params[key] ? params[key].format('HH:mm') : 'NULL';\r\n } else if ((formInputData.type === 'select' || formInputData.type === 'select2') && params[key] == null) {\r\n params[key] = 'NULL';\r\n }\r\n }\r\n\r\n return params;\r\n }\r\n\r\n updateFields(data) {\r\n const { fields } = this.props;\r\n data = this.dataToFormFields(data, fields);\r\n this.formReference.current.resetFields();\r\n if (data == null) {\r\n return;\r\n }\r\n try {\r\n this.formReference.current.setFieldsValue(data);\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n\r\n resetFields() {\r\n this.formReference.current.resetFields();\r\n }\r\n\r\n setFieldsValue(data) {\r\n this.formReference.current.setFieldsValue(data);\r\n }\r\n\r\n save(params, success) {\r\n const { adapter, fields } = this.props;\r\n let values = params;\r\n values = adapter.forceInjectValuesBeforeSave(values);\r\n const msg = adapter.doCustomValidation(values);\r\n if (msg !== null) {\r\n this.showError(msg);\r\n return;\r\n }\r\n if (adapter.csrfRequired) {\r\n values.csrf = $(`#${adapter.getTableName()}Form`).data('csrf');\r\n }\r\n\r\n const id = (adapter.currentElement != null) ? adapter.currentElement.id : null;\r\n if (id != null && id !== '') {\r\n values.id = id;\r\n }\r\n values = this.formFieldsToData(values, fields);\r\n adapter.add(values, [], () => adapter.get([]), () => {\r\n this.formReference.current.resetFields();\r\n this.showError(false);\r\n success();\r\n });\r\n }\r\n}\r\n\r\nexport default IceForm;\r\n","import React from 'react';\r\nimport {\r\n Button, Col, Modal, Row, Space,\r\n} from 'antd';\r\nimport IceForm from './IceForm';\r\n\r\nclass IceFormModal extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n visible: false,\r\n viewOnly: false,\r\n loading: false,\r\n };\r\n this.iceFormReference = React.createRef();\r\n this.width = 800;\r\n }\r\n\r\n setViewOnly(value) {\r\n this.setState({ viewOnly: value });\r\n }\r\n\r\n show(data) {\r\n this.props.adapter.beforeRenderFieldHook = this.props.adapter.beforeRenderField ? this.props.adapter.beforeRenderField(data) : (fieldName, field) => field;\r\n if (!data) {\r\n this.setState({ visible: true });\r\n if (this.iceFormReference.current) {\r\n this.iceFormReference.current.resetFields();\r\n }\r\n } else {\r\n this.setState({ visible: true });\r\n if (this.iceFormReference.current && this.iceFormReference.current.isReady()) {\r\n this.iceFormReference.current.updateFields(data);\r\n } else {\r\n this.waitForIt(\r\n () => this.iceFormReference.current && this.iceFormReference.current.isReady(),\r\n () => { this.iceFormReference.current.updateFields(data); },\r\n 1000,\r\n );\r\n }\r\n }\r\n }\r\n\r\n waitForIt(condition, callback, time) {\r\n setTimeout(() => {\r\n if (condition()) {\r\n callback();\r\n } else {\r\n this.waitForIt(condition, callback, time);\r\n }\r\n }, time);\r\n }\r\n\r\n hide() {\r\n this.setState({ visible: false });\r\n }\r\n\r\n save(params) {\r\n this.iceFormReference.current.save(params, () => { this.closeModal(); });\r\n }\r\n\r\n closeModal() {\r\n this.hide();\r\n this.iceFormReference.current.showError(false);\r\n }\r\n\r\n render() {\r\n const {\r\n fields, adapter, saveCallback, cancelCallback,\r\n } = this.props;\r\n\r\n const additionalProps = {};\r\n additionalProps.footer = (\r\n \r\n \r\n \r\n \r\n \r\n {\r\n this.setState({ loading: true });\r\n const iceFrom = this.iceFormReference.current;\r\n iceFrom\r\n .validateFields()\r\n .then((values) => {\r\n if (!iceFrom.isValid()) {\r\n this.setState({ loading: false });\r\n return;\r\n }\r\n if (saveCallback) {\r\n saveCallback(values, iceFrom.showError.bind(this), this.closeModal.bind(this));\r\n } else {\r\n this.save(values);\r\n }\r\n this.setState({ loading: false });\r\n })\r\n .catch((info) => {\r\n this.setState({ loading: false });\r\n });\r\n }}\r\n >\r\n {this.state.viewOnly ? this.props.adapter.gt('Done') : this.props.adapter.gt('Save')}\r\n \r\n \r\n \r\n \r\n );\r\n\r\n if (this.state.viewOnly) {\r\n additionalProps.footer = null;\r\n }\r\n\r\n return (\r\n {\r\n if (cancelCallback) {\r\n cancelCallback();\r\n } else {\r\n this.closeModal();\r\n }\r\n }}\r\n {...additionalProps}\r\n >\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\n\r\nexport default IceFormModal;\r\n","import React from 'react';\r\nimport { Space } from 'antd';\r\n\r\nclass IceLabel extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n render() {\r\n const { value } = this.props;\r\n\r\n return (\r\n \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n nl2br(str) {\r\n return (`${str}`).replace(/([^>\\r\\n]?)(\\r\\n|\\n\\r|\\r|\\n)/g, '
    ');\r\n }\r\n}\r\n\r\nexport default IceLabel;\r\n","import React from 'react';\r\nimport { Form, Select } from 'antd';\r\n\r\nconst { Option } = Select;\r\n\r\nclass IceSelect extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.onChange = props.onChange;\r\n }\r\n\r\n render() {\r\n let options;\r\n const { field, adapter } = this.props;\r\n let { value } = this.props;\r\n const data = field[1];\r\n if (data['remote-source'] != null) {\r\n let key = `${data['remote-source'][0]}_${data['remote-source'][1]}_${data['remote-source'][2]}`;\r\n if (data['remote-source'].length === 4) {\r\n key = `${key}_${data['remote-source'][3]}`;\r\n }\r\n options = adapter.fieldMasterData[key];\r\n } else {\r\n options = data.source;\r\n }\r\n const optionData = this.getFormSelectOptionsRemote(options, field, adapter);\r\n\r\n // value should be an array if multi-select\r\n if (data.type === 'select2multi') {\r\n try {\r\n value = JSON.parse(value);\r\n if (value == null) {\r\n value = [];\r\n }\r\n value = value.map((item) => `${item}`);\r\n } catch (e) {\r\n value = [];\r\n }\r\n }\r\n\r\n return (\r\n input != null\r\n && option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0\r\n }\r\n value={value}\r\n options={optionData}\r\n allowClear\r\n onChange={this.handleChange.bind(this)}\r\n disabled={this.props.readOnly}\r\n />\r\n );\r\n }\r\n\r\n handleChange(value) {\r\n const { field } = this.props;\r\n const data = field[1];\r\n if (data.type === 'select2multi') {\r\n this.onChange(JSON.stringify(value));\r\n } else {\r\n this.onChange(value);\r\n }\r\n }\r\n\r\n makeOption(option) {\r\n return ;\r\n }\r\n\r\n getFormSelectOptionsRemote(options, field, adapter) {\r\n const optionData = [];\r\n\r\n if (Array.isArray(options)) {\r\n for (let i = 0; i < options.length; i++) {\r\n optionData.push({\r\n label: options[i][1],\r\n value: options[i][0],\r\n });\r\n }\r\n } else {\r\n for (const key in options) {\r\n optionData.push({\r\n label: options[key],\r\n value: key,\r\n });\r\n }\r\n }\r\n\r\n // if (field[1].sort === 'true') {\r\n // tuples.sort((a, b) => {\r\n // a = a[1];\r\n // b = b[1];\r\n //\r\n // // eslint-disable-next-line no-nested-ternary\r\n // return a < b ? -1 : (a > b ? 1 : 0);\r\n // });\r\n // }\r\n\r\n // for (let i = 0; i < tuples.length; i++) {\r\n // const prop = tuples[i][0];\r\n // const value = tuples[i][1];\r\n // optionData.push([prop, adapter.gt(value)]);\r\n // }\r\n\r\n return optionData;\r\n }\r\n}\r\n\r\nexport default IceSelect;\r\n","import React from 'react';\r\nimport SignatureCanvas from 'react-signature-canvas';\r\nimport { Button, Modal, Tag } from 'antd';\r\nimport { VerifiedOutlined } from '@ant-design/icons';\r\n\r\nclass IceSignature extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.onChange = props.onChange;\r\n this.state = {\r\n visible: false,\r\n };\r\n this.signature = React.createRef();\r\n }\r\n\r\n componentDidMount() {\r\n }\r\n\r\n show() {\r\n this.setState({ visible: true });\r\n }\r\n\r\n setSignature(ref) {\r\n if (ref == null) {\r\n return;\r\n }\r\n const { value } = this.props;\r\n if (value != null && value.length > 10) {\r\n ref.fromDataURL(value);\r\n }\r\n }\r\n\r\n hide() {\r\n this.setState({ visible: false });\r\n }\r\n\r\n clear() {\r\n this.signature.clear();\r\n }\r\n\r\n save() {\r\n const data = this.signature.toDataURL('image/png');\r\n this.onChange(data);\r\n this.setState({ visible: false });\r\n }\r\n\r\n render() {\r\n const { readOnly } = this.props;\r\n\r\n return (\r\n <>\r\n { this.hide(); }}\r\n footer={[\r\n ,\r\n ,\r\n ,\r\n ]}\r\n >\r\n { this.signature = ref; this.setSignature(ref); }} canvasProps={{ width: 250, height: 200, className: 'sigCanvas', ...( readOnly ? { readOnly } : {}), }} />\r\n \r\n { this.show(); }}>\r\n \r\n {' '}\r\n Sign\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default IceSignature;\r\n","import React from 'react';\r\nimport {\r\n Button, Divider, Steps, Row, Col, Space,\r\n} from 'antd';\r\nimport IceForm from './IceForm';\r\n\r\nconst { Step } = Steps;\r\n\r\nclass IceStepForm extends IceForm {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.onChange = props.onChange;\r\n\r\n let steps = this.props.fields.map((item) => ({\r\n ...item,\r\n ref: React.createRef(),\r\n }));\r\n\r\n steps = steps.map((item) => {\r\n const { ref, fields } = item;\r\n item.content = (\r\n \r\n );\r\n\r\n return item;\r\n });\r\n\r\n this.state = {\r\n current: 0,\r\n steps,\r\n loading: false,\r\n };\r\n }\r\n\r\n moveToStep(current) {\r\n this.setState({ current });\r\n }\r\n\r\n next() {\r\n if (this.validateFields(false) === false) {\r\n return;\r\n }\r\n\r\n this.showError(false);\r\n const current = this.state.current + 1;\r\n this.setState({ current });\r\n }\r\n\r\n prev() {\r\n const current = this.state.current - 1;\r\n if (current < 0) {\r\n return;\r\n }\r\n this.setState({ current });\r\n }\r\n\r\n render() {\r\n const { adapter } = this.props;\r\n const { current, steps } = this.state;\r\n return (\r\n <>\r\n \r\n {steps.map((item, index) => (\r\n this.moveToStep(index)} />\r\n ))}\r\n \r\n \r\n
    \r\n {steps.map((item, index) => (\r\n
    \r\n {item.content}\r\n
    \r\n ))}\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n {current < steps.length - 1 && (\r\n \r\n )}\r\n {current > 0 && (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n async saveData() {\r\n this.setState({ loading: true });\r\n const data = await this.validateFields(true);\r\n if (data) {\r\n this.save(data, () => this.props.closeModal());\r\n }\r\n this.setState({ loading: false });\r\n }\r\n\r\n save(params, success) {\r\n const { adapter } = this.props;\r\n adapter.add(params, [], () => adapter.get([]), () => {\r\n this.resetFields();\r\n this.showError(false);\r\n success();\r\n });\r\n }\r\n\r\n updateFields(data) {\r\n this.state.steps.forEach((item) => {\r\n const subData = {};\r\n item.fields.forEach(([key]) => {\r\n subData[key] = data[key];\r\n });\r\n this.updateFieldsSubForm(item.ref, item.fields, subData);\r\n });\r\n }\r\n\r\n updateFieldsSubForm(ref, fields, data) {\r\n data = this.dataToFormFields(data, fields);\r\n ref.current.resetFields();\r\n if (data == null) {\r\n return;\r\n }\r\n try {\r\n ref.current.setFieldsValue(data);\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n\r\n async validateFields(all) {\r\n const { adapter } = this.props;\r\n const steps = all ? this.state.steps : this.state.steps.slice(0, this.state.current + 1);\r\n const promiseList = steps.map(\r\n (item) => item.ref.current.validateFields()\r\n .then((values) => {\r\n if (!item.ref.current.isValid()) {\r\n return false;\r\n }\r\n return values;\r\n })\r\n .catch(() => false),\r\n );\r\n\r\n const allData = await Promise.all(promiseList);\r\n const failedIndex = allData.findIndex((item) => item === false);\r\n\r\n if (failedIndex >= 0) {\r\n this.setState({ current: failedIndex });\r\n\r\n return false;\r\n }\r\n\r\n let values = Object.assign({}, ...allData);\r\n values = adapter.forceInjectValuesBeforeSave(values);\r\n const msg = adapter.doCustomValidation(values);\r\n\r\n if (msg !== null) {\r\n this.showError(msg);\r\n return false;\r\n }\r\n\r\n if (adapter.csrfRequired) {\r\n values.csrf = $(`#${adapter.getTableName()}Form`).data('csrf');\r\n }\r\n\r\n const id = (adapter.currentElement != null) ? adapter.currentElement.id : null;\r\n if (id != null && id !== '') {\r\n values.id = id;\r\n }\r\n\r\n const fields = [].concat.apply([], this.state.steps.map((item) => item.fields));\r\n\r\n return this.formFieldsToData(values, fields);\r\n }\r\n\r\n getSubFormData(ref, fields, params) {\r\n const { adapter } = this.props;\r\n let values = params;\r\n values = adapter.forceInjectValuesBeforeSave(values);\r\n const msg = adapter.doCustomValidation(values);\r\n if (msg !== null) {\r\n ref.current.showError(msg);\r\n return;\r\n }\r\n\r\n if (adapter.csrfRequired) {\r\n values.csrf = $(`#${adapter.getTableName()}Form`).data('csrf');\r\n }\r\n\r\n const id = (adapter.currentElement != null) ? adapter.currentElement.id : null;\r\n if (id != null && id !== '') {\r\n values.id = id;\r\n }\r\n\r\n return this.formFieldsToData(values, fields);\r\n }\r\n\r\n showError(errorMsg) {\r\n this.state.steps.forEach((item) => item.ref.current.showError(errorMsg));\r\n }\r\n\r\n resetFields() {\r\n this.state.steps.forEach((item) => item.ref.current.resetFields());\r\n }\r\n\r\n hideError() {\r\n this.state.steps.forEach((item) => item.ref.current.hideError());\r\n }\r\n\r\n isReady() {\r\n return this.state.steps.reduce((acc, item) => acc && item.ref.current != null, true);\r\n }\r\n}\r\n\r\nexport default IceStepForm;\r\n","import React from 'react';\r\nimport { Modal } from 'antd';\r\nimport IceFormModal from './IceFormModal';\r\nimport IceStepForm from './IceStepForm';\r\n\r\nclass IceStepFormModal extends IceFormModal {\r\n constructor(props) {\r\n super(props);\r\n this.width = 850;\r\n }\r\n\r\n show(data) {\r\n this.props.adapter.beforeRenderFieldHook = this.props.adapter.beforeRenderField ? this.props.adapter.beforeRenderField(data) : (fieldName, field) => field;\r\n if (!data) {\r\n this.setState({ visible: true });\r\n if (this.iceFormReference.current) {\r\n this.iceFormReference.current.resetFields();\r\n }\r\n } else {\r\n this.setState({ visible: true });\r\n if (this.iceFormReference.current && this.iceFormReference.current.isReady()) {\r\n this.iceFormReference.current.moveToStep(0);\r\n this.iceFormReference.current.updateFields(data);\r\n } else {\r\n this.waitForIt(\r\n () => this.iceFormReference.current && this.iceFormReference.current.isReady(),\r\n () => {\r\n this.iceFormReference.current.updateFields(data);\r\n this.iceFormReference.current.moveToStep(0);\r\n },\r\n 1000,\r\n );\r\n }\r\n }\r\n }\r\n\r\n hide() {\r\n this.iceFormReference.current.moveToStep(0);\r\n this.setState({ visible: false });\r\n }\r\n\r\n render() {\r\n const { fields, adapter } = this.props;\r\n const { width, twoColumnLayout, layout } = this.props.adapter.getFormOptions();\r\n return (\r\n {\r\n this.closeModal();\r\n }}\r\n >\r\n { this.closeModal(); }}\r\n twoColumnLayout={twoColumnLayout || false}\r\n layout={layout}\r\n />\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default IceStepFormModal;\r\n","import React, {Component} from 'react';\r\nimport {Col, Form, Input, Row, Table, Space, Button, Tag, message} from 'antd';\r\nimport {\r\n FilterOutlined,\r\n PlusCircleOutlined,\r\n} from '@ant-design/icons';\r\nconst { Search } = Input;\r\n\r\nclass IceTable extends React.Component {\r\n state = {\r\n data: [],\r\n pagination: {},\r\n loading: true,\r\n fetchConfig: false,\r\n //filter: null,\r\n showLoading: true,\r\n currentElement: null,\r\n fetchCompleted: false,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n componentDidMount() {\r\n const fetchConfig = {\r\n page: 1,\r\n };\r\n message.config({\r\n top: 40,\r\n });\r\n this.setState({\r\n fetchConfig,\r\n //filter: this.props.adapter.filter,\r\n pagination: { 'pageSize': this.props.reader.pageSize }\r\n });\r\n //this.fetch(fetchConfig);\r\n }\r\n\r\n handleTableChange = (pagination, filters, sorter) => {\r\n const pager = { ...this.state.pagination };\r\n const { search } = this.state;\r\n pager.current = pagination.current;\r\n this.setState({\r\n pagination: pager,\r\n });\r\n\r\n const fetchConfig = {\r\n limit: pagination.pageSize,\r\n page: pagination.current,\r\n sortField: sorter.field,\r\n sortOrder: sorter.order,\r\n filters: JSON.stringify(filters),\r\n search: search,\r\n };\r\n\r\n this.setState({\r\n fetchConfig\r\n });\r\n\r\n this.fetch(fetchConfig);\r\n };\r\n\r\n reload = () => {\r\n const fetchConfig = this.state.fetchConfig;\r\n if (fetchConfig) {\r\n this.fetch(fetchConfig)\r\n }\r\n };\r\n\r\n search = (value) => {\r\n this.setState({ search: value });\r\n const fetchConfig = this.state.fetchConfig;\r\n console.log(fetchConfig);\r\n if (fetchConfig) {\r\n fetchConfig.search = value;\r\n this.setState({\r\n fetchConfig\r\n });\r\n this.fetch(fetchConfig)\r\n }\r\n }\r\n\r\n addNew = () => {\r\n this.props.adapter.renderForm();\r\n }\r\n\r\n showFilters = () => {\r\n this.props.adapter.showFilters();\r\n }\r\n\r\n setFilterData = (filter) => {\r\n this.setState({\r\n filter,\r\n });\r\n }\r\n\r\n setCurrentElement = (currentElement) => {\r\n this.setState({currentElement});\r\n }\r\n\r\n setLoading(value) {\r\n this.setState({ loading: value });\r\n }\r\n\r\n fetch = (params = {}) => {\r\n //this.setState({ loading: this.state.showLoading });\r\n this.setState({ loading: true });\r\n //const hideMessage = message.loading({ content: 'Loading Latest Data ...', key: 'loadingTable', duration: 1});\r\n const pagination = { ...this.state.pagination };\r\n\r\n if (this.props.adapter.localStorageEnabled) {\r\n try {\r\n const cachedResponse = this.props.reader.getCachedResponse(params);\r\n if (cachedResponse.items) {\r\n this.setState({\r\n loading: false,\r\n data: cachedResponse.items,\r\n pagination,\r\n showLoading: false,\r\n });\r\n } else {\r\n this.props.reader.clearCachedResponse(params);\r\n }\r\n } catch (e) {\r\n this.props.reader.clearCachedResponse(params);\r\n }\r\n }\r\n\r\n this.props.reader.get(params)\r\n .then(data => {\r\n // Read total count from server\r\n // pagination.total = data.totalCount;\r\n pagination.total = data.total;\r\n //hideMessage();\r\n // setTimeout(\r\n // () => message.success({ content: 'Loading Completed!', key: 'loadingSuccess', duration: 1 }),\r\n // 600\r\n // );\r\n this.setState({\r\n loading: false,\r\n data: data.items,\r\n pagination,\r\n showLoading: false,\r\n fetchCompleted: true,\r\n });\r\n });\r\n };\r\n\r\n getChildrenWithProps(element) {\r\n const childrenWithProps = React.Children.map(this.props.children, child => {\r\n // checking isValidElement is the safe way and avoids a typescript error too\r\n const props = {\r\n element,\r\n adapter: this.props.adapter,\r\n loading: this.state.loading,\r\n };\r\n if (React.isValidElement(child)) {\r\n return React.cloneElement(child, props);\r\n }\r\n return child;\r\n });\r\n\r\n return childrenWithProps;\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {!this.state.currentElement &&\r\n \r\n \r\n \r\n \r\n {this.props.adapter.hasAccess('save') && this.props.adapter.getShowAddNew() &&\r\n \r\n }\r\n {this.props.adapter.getFilters() &&\r\n \r\n }\r\n\r\n {this.state.fetchCompleted\r\n && this.props.adapter.getFilters()\r\n && this.props.adapter.filter != null\r\n && this.props.adapter.filter !== []\r\n && this.props.adapter.filter !== ''\r\n && this.props.adapter.getFilterString(this.props.adapter.filter) !== '' &&\r\n this.props.adapter.resetFilters()}\r\n visible={this.props.adapter.filter != null && this.props.adapter.filter !== [] && this.props.adapter.filter !== ''}\r\n >\r\n {this.props.adapter.getFilterString(this.props.adapter.filter)}\r\n \r\n }\r\n\r\n \r\n \r\n \r\n this.form = formRef}\r\n name=\"advanced_search\"\r\n className=\"ant-advanced-search-form\"\r\n >\r\n \r\n this.search(value)}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n index % 2 === 0 ? 'table-row-light' : 'table-row-dark'}\r\n columns={this.props.columns}\r\n rowKey={record => record.id}\r\n dataSource={this.state.data}\r\n pagination={this.state.pagination}\r\n loading={this.state.loading}\r\n onChange={this.handleTableChange}\r\n reader={this.props.dataPipe}\r\n />\r\n \r\n \r\n \r\n }\r\n {this.state.currentElement &&\r\n this.getChildrenWithProps(this.state.currentElement)\r\n }\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default IceTable;\r\n","import React from \"react\";\r\nimport {Button, message, Space, Upload, Tag} from \"antd\";\r\nimport { UploadOutlined, DownloadOutlined, DeleteOutlined } from '@ant-design/icons';\r\n\r\nclass IceUpload extends React.Component {\r\n state = {\r\n fileList: [],\r\n uploaded: false,\r\n };\r\n\r\n _isMounted = false;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.onChange = props.onChange;\r\n }\r\n\r\n componentDidMount() {\r\n this._isMounted = true;\r\n message.config({\r\n top: 55,\r\n duration: 2,\r\n });\r\n }\r\n\r\n componentWillUnmount() {\r\n this._isMounted = false;\r\n }\r\n\r\n handleDelete = () => {\r\n this.setState({ fileList: [], value: null, uploaded: false});\r\n this.onChange(null);\r\n };\r\n\r\n handleView = () => {\r\n let currentValue = this.props.value;\r\n if (this.state.value != null && this.state.value !== '') {\r\n currentValue = this.state.value;\r\n }\r\n if (currentValue == null || currentValue === '') {\r\n message.error('File not found');\r\n return;\r\n }\r\n\r\n const { adapter } = this.props;\r\n\r\n adapter.getFile(currentValue)\r\n .then((data) => {\r\n const file = {\r\n key: data.uid,\r\n uid: data.uid,\r\n name: data.name,\r\n status: data.status,\r\n url: data.filename,\r\n };\r\n window.open(file.url);\r\n }).catch((e) => {\r\n\r\n });\r\n };\r\n\r\n handleChange = info => {\r\n let fileList = [...info.fileList];\r\n\r\n if (fileList.length === 0) {\r\n this.setState({ value: null });\r\n this.onChange(null);\r\n this.setState({fileList: []});\r\n this.setState({uploaded: false});\r\n return;\r\n }\r\n\r\n fileList = fileList.slice(-1);\r\n\r\n if (fileList[0].response && fileList[0].response.status === 'error') {\r\n this.setState({ value: null });\r\n this.onChange(null);\r\n this.setState({fileList: []});\r\n this.setState({uploaded: false});\r\n message.error(`Error: ${fileList[0].response.message}`);\r\n return;\r\n }\r\n\r\n fileList = fileList.map(file => {\r\n if (file.response) {\r\n // Component will show file.url as link\r\n file.name = file.response.name;\r\n file.url = file.response.url;\r\n }\r\n return file;\r\n });\r\n\r\n this.setState({fileList});\r\n this.setState({ value: this.getFileName(fileList), uploaded: true });\r\n this.onChange(this.getFileName(fileList));\r\n };\r\n\r\n getFileName(fileList) {\r\n let file = null;\r\n if (fileList) {\r\n file = fileList[0];\r\n }\r\n\r\n return file ? file.name : '';\r\n }\r\n\r\n generateRandom(length) {\r\n const d = new Date();\r\n const chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\r\n let result = '';\r\n for (let i = length; i > 0; --i) result += chars[Math.round(Math.random() * (chars.length - 1))];\r\n return result + d.getTime();\r\n }\r\n\r\n render() {\r\n let fileName = this.generateRandom(14);\r\n\r\n const props = {\r\n action: `${window.CLIENT_BASE_URL}fileupload-new.php?user=${this.props.user}&file_group=${this.props.fileGroup}&file_name=${fileName}`,\r\n onChange: this.handleChange,\r\n onRemove: this.handleDelete,\r\n multiple: false,\r\n listType: 'picture',\r\n };\r\n\r\n return (\r\n \r\n {!this.props.readOnly &&\r\n \r\n \r\n \r\n \r\n {' '}\r\n Upload\r\n \r\n \r\n \r\n }\r\n \r\n { (((this.props.value != null && this.props.value !== '') || (this.state.value != null && this.state.value !== '')) && !this.state.uploaded) &&\r\n \r\n }\r\n { (((this.props.value != null && this.props.value !== '') || (this.state.value != null && this.state.value !== '')) && !this.state.uploaded && !this.props.readOnly) &&\r\n \r\n }\r\n \r\n \r\n\r\n );\r\n }\r\n}\r\n\r\nexport default IceUpload;\r\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar DEFAULT_SIZE = 24;\n\nexports.default = function (_ref) {\n var _ref$fill = _ref.fill,\n fill = _ref$fill === undefined ? 'currentColor' : _ref$fill,\n _ref$width = _ref.width,\n width = _ref$width === undefined ? DEFAULT_SIZE : _ref$width,\n _ref$height = _ref.height,\n height = _ref$height === undefined ? DEFAULT_SIZE : _ref$height,\n _ref$style = _ref.style,\n style = _ref$style === undefined ? {} : _ref$style,\n props = _objectWithoutProperties(_ref, ['fill', 'width', 'height', 'style']);\n\n return _react2.default.createElement(\n 'svg',\n _extends({\n viewBox: '0 0 ' + DEFAULT_SIZE + ' ' + DEFAULT_SIZE,\n style: _extends({ fill: fill, width: width, height: height }, style)\n }, props),\n _react2.default.createElement('path', { d: 'M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z' })\n );\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar DEFAULT_SIZE = 24;\n\nexports.default = function (_ref) {\n var _ref$fill = _ref.fill,\n fill = _ref$fill === undefined ? 'currentColor' : _ref$fill,\n _ref$width = _ref.width,\n width = _ref$width === undefined ? DEFAULT_SIZE : _ref$width,\n _ref$height = _ref.height,\n height = _ref$height === undefined ? DEFAULT_SIZE : _ref$height,\n _ref$style = _ref.style,\n style = _ref$style === undefined ? {} : _ref$style,\n props = _objectWithoutProperties(_ref, ['fill', 'width', 'height', 'style']);\n\n return _react2.default.createElement(\n 'svg',\n _extends({\n viewBox: '0 0 ' + DEFAULT_SIZE + ' ' + DEFAULT_SIZE,\n style: _extends({ fill: fill, width: width, height: height }, style)\n }, props),\n _react2.default.createElement('path', { d: 'M12,18.17L8.83,15L7.42,16.41L12,21L16.59,16.41L15.17,15M12,5.83L15.17,9L16.58,7.59L12,3L7.41,7.59L8.83,9L12,5.83Z' })\n );\n};","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n if (\n (utils.isBlob(requestData) || utils.isFile(requestData)) &&\n requestData.type\n ) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = unescape(encodeURIComponent(config.auth.password)) || '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n // Listen for ready state\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n };\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(timeoutErrorMessage, config, 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== 'json') {\n throw e;\n }\n }\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n // Hook up interceptors middleware\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData(\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData(\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData(\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n var defaultToConfig2Keys = [\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n ];\n var directMergeKeys = ['validateStatus'];\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n }\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n utils.forEach(directMergeKeys, function merge(prop) {\n if (prop in config2) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys)\n .concat(directMergeKeys);\n\n var otherKeys = Object\n .keys(config1)\n .concat(Object.keys(config2))\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, mergeDeepProperties);\n\n return config;\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nvar defaults = {\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) { /* Ignore */ }\n }\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignMergeValue;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var copyObject = require('./_copyObject'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","var Stack = require('./_Stack'),\n arrayEach = require('./_arrayEach'),\n assignValue = require('./_assignValue'),\n baseAssign = require('./_baseAssign'),\n baseAssignIn = require('./_baseAssignIn'),\n cloneBuffer = require('./_cloneBuffer'),\n copyArray = require('./_copyArray'),\n copySymbols = require('./_copySymbols'),\n copySymbolsIn = require('./_copySymbolsIn'),\n getAllKeys = require('./_getAllKeys'),\n getAllKeysIn = require('./_getAllKeysIn'),\n getTag = require('./_getTag'),\n initCloneArray = require('./_initCloneArray'),\n initCloneByTag = require('./_initCloneByTag'),\n initCloneObject = require('./_initCloneObject'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isMap = require('./isMap'),\n isObject = require('./isObject'),\n isSet = require('./isSet'),\n keys = require('./keys'),\n keysIn = require('./keysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nmodule.exports = baseClone;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nmodule.exports = baseCreate;\n","var baseForOwn = require('./_baseForOwn'),\n createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n","var baseEach = require('./_baseEach'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nmodule.exports = baseMap;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","var Stack = require('./_Stack'),\n assignMergeValue = require('./_assignMergeValue'),\n baseFor = require('./_baseFor'),\n baseMergeDeep = require('./_baseMergeDeep'),\n isObject = require('./isObject'),\n keysIn = require('./keysIn'),\n safeGet = require('./_safeGet');\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nmodule.exports = baseMerge;\n","var assignMergeValue = require('./_assignMergeValue'),\n cloneBuffer = require('./_cloneBuffer'),\n cloneTypedArray = require('./_cloneTypedArray'),\n copyArray = require('./_copyArray'),\n initCloneObject = require('./_initCloneObject'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLikeObject = require('./isArrayLikeObject'),\n isBuffer = require('./isBuffer'),\n isFunction = require('./isFunction'),\n isObject = require('./isObject'),\n isPlainObject = require('./isPlainObject'),\n isTypedArray = require('./isTypedArray'),\n safeGet = require('./_safeGet'),\n toPlainObject = require('./toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nmodule.exports = baseMergeDeep;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var identity = require('./identity');\n\n/**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\nfunction castFunction(value) {\n return typeof value == 'function' ? value : identity;\n}\n\nmodule.exports = castFunction;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nmodule.exports = cloneRegExp;\n","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n","var copyObject = require('./_copyObject'),\n getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n","var copyObject = require('./_copyObject'),\n getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbolsIn = require('./_getSymbolsIn'),\n keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var arrayPush = require('./_arrayPush'),\n getPrototype = require('./_getPrototype'),\n getSymbols = require('./_getSymbols'),\n stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nmodule.exports = getSymbolsIn;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nmodule.exports = initCloneArray;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n cloneDataView = require('./_cloneDataView'),\n cloneRegExp = require('./_cloneRegExp'),\n cloneSymbol = require('./_cloneSymbol'),\n cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nmodule.exports = initCloneByTag;\n","var baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nmodule.exports = safeGet;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = cloneDeep;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","module.exports = require('./forEach');\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var arrayEach = require('./_arrayEach'),\n baseEach = require('./_baseEach'),\n castFunction = require('./_castFunction'),\n isArray = require('./isArray');\n\n/**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, castFunction(iteratee));\n}\n\nmodule.exports = forEach;\n","var baseForOwn = require('./_baseForOwn'),\n castFunction = require('./_castFunction');\n\n/**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forOwn(object, iteratee) {\n return object && baseForOwn(object, castFunction(iteratee));\n}\n\nmodule.exports = forOwn;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var isArrayLike = require('./isArrayLike'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var baseIsMap = require('./_baseIsMap'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","var baseIsSet = require('./_baseIsSet'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n","var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","/**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\nfunction isUndefined(value) {\n return value === undefined;\n}\n\nmodule.exports = isUndefined;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n isArray = require('./isArray');\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, baseIteratee(iteratee, 3));\n}\n\nmodule.exports = map;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var baseMerge = require('./_baseMerge'),\n createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nmodule.exports = merge;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var debounce = require('./debounce'),\n isObject = require('./isObject');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nmodule.exports = throttle;\n","var isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","(function(root, factory) {\n if (typeof define === 'function' && define.amd) {\n define([], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.materialColors = factory();\n }\n})(this, function() {\n return {\"red\":{\"50\":\"#ffebee\",\"100\":\"#ffcdd2\",\"200\":\"#ef9a9a\",\"300\":\"#e57373\",\"400\":\"#ef5350\",\"500\":\"#f44336\",\"600\":\"#e53935\",\"700\":\"#d32f2f\",\"800\":\"#c62828\",\"900\":\"#b71c1c\",\"a100\":\"#ff8a80\",\"a200\":\"#ff5252\",\"a400\":\"#ff1744\",\"a700\":\"#d50000\"},\"pink\":{\"50\":\"#fce4ec\",\"100\":\"#f8bbd0\",\"200\":\"#f48fb1\",\"300\":\"#f06292\",\"400\":\"#ec407a\",\"500\":\"#e91e63\",\"600\":\"#d81b60\",\"700\":\"#c2185b\",\"800\":\"#ad1457\",\"900\":\"#880e4f\",\"a100\":\"#ff80ab\",\"a200\":\"#ff4081\",\"a400\":\"#f50057\",\"a700\":\"#c51162\"},\"purple\":{\"50\":\"#f3e5f5\",\"100\":\"#e1bee7\",\"200\":\"#ce93d8\",\"300\":\"#ba68c8\",\"400\":\"#ab47bc\",\"500\":\"#9c27b0\",\"600\":\"#8e24aa\",\"700\":\"#7b1fa2\",\"800\":\"#6a1b9a\",\"900\":\"#4a148c\",\"a100\":\"#ea80fc\",\"a200\":\"#e040fb\",\"a400\":\"#d500f9\",\"a700\":\"#aa00ff\"},\"deepPurple\":{\"50\":\"#ede7f6\",\"100\":\"#d1c4e9\",\"200\":\"#b39ddb\",\"300\":\"#9575cd\",\"400\":\"#7e57c2\",\"500\":\"#673ab7\",\"600\":\"#5e35b1\",\"700\":\"#512da8\",\"800\":\"#4527a0\",\"900\":\"#311b92\",\"a100\":\"#b388ff\",\"a200\":\"#7c4dff\",\"a400\":\"#651fff\",\"a700\":\"#6200ea\"},\"indigo\":{\"50\":\"#e8eaf6\",\"100\":\"#c5cae9\",\"200\":\"#9fa8da\",\"300\":\"#7986cb\",\"400\":\"#5c6bc0\",\"500\":\"#3f51b5\",\"600\":\"#3949ab\",\"700\":\"#303f9f\",\"800\":\"#283593\",\"900\":\"#1a237e\",\"a100\":\"#8c9eff\",\"a200\":\"#536dfe\",\"a400\":\"#3d5afe\",\"a700\":\"#304ffe\"},\"blue\":{\"50\":\"#e3f2fd\",\"100\":\"#bbdefb\",\"200\":\"#90caf9\",\"300\":\"#64b5f6\",\"400\":\"#42a5f5\",\"500\":\"#2196f3\",\"600\":\"#1e88e5\",\"700\":\"#1976d2\",\"800\":\"#1565c0\",\"900\":\"#0d47a1\",\"a100\":\"#82b1ff\",\"a200\":\"#448aff\",\"a400\":\"#2979ff\",\"a700\":\"#2962ff\"},\"lightBlue\":{\"50\":\"#e1f5fe\",\"100\":\"#b3e5fc\",\"200\":\"#81d4fa\",\"300\":\"#4fc3f7\",\"400\":\"#29b6f6\",\"500\":\"#03a9f4\",\"600\":\"#039be5\",\"700\":\"#0288d1\",\"800\":\"#0277bd\",\"900\":\"#01579b\",\"a100\":\"#80d8ff\",\"a200\":\"#40c4ff\",\"a400\":\"#00b0ff\",\"a700\":\"#0091ea\"},\"cyan\":{\"50\":\"#e0f7fa\",\"100\":\"#b2ebf2\",\"200\":\"#80deea\",\"300\":\"#4dd0e1\",\"400\":\"#26c6da\",\"500\":\"#00bcd4\",\"600\":\"#00acc1\",\"700\":\"#0097a7\",\"800\":\"#00838f\",\"900\":\"#006064\",\"a100\":\"#84ffff\",\"a200\":\"#18ffff\",\"a400\":\"#00e5ff\",\"a700\":\"#00b8d4\"},\"teal\":{\"50\":\"#e0f2f1\",\"100\":\"#b2dfdb\",\"200\":\"#80cbc4\",\"300\":\"#4db6ac\",\"400\":\"#26a69a\",\"500\":\"#009688\",\"600\":\"#00897b\",\"700\":\"#00796b\",\"800\":\"#00695c\",\"900\":\"#004d40\",\"a100\":\"#a7ffeb\",\"a200\":\"#64ffda\",\"a400\":\"#1de9b6\",\"a700\":\"#00bfa5\"},\"green\":{\"50\":\"#e8f5e9\",\"100\":\"#c8e6c9\",\"200\":\"#a5d6a7\",\"300\":\"#81c784\",\"400\":\"#66bb6a\",\"500\":\"#4caf50\",\"600\":\"#43a047\",\"700\":\"#388e3c\",\"800\":\"#2e7d32\",\"900\":\"#1b5e20\",\"a100\":\"#b9f6ca\",\"a200\":\"#69f0ae\",\"a400\":\"#00e676\",\"a700\":\"#00c853\"},\"lightGreen\":{\"50\":\"#f1f8e9\",\"100\":\"#dcedc8\",\"200\":\"#c5e1a5\",\"300\":\"#aed581\",\"400\":\"#9ccc65\",\"500\":\"#8bc34a\",\"600\":\"#7cb342\",\"700\":\"#689f38\",\"800\":\"#558b2f\",\"900\":\"#33691e\",\"a100\":\"#ccff90\",\"a200\":\"#b2ff59\",\"a400\":\"#76ff03\",\"a700\":\"#64dd17\"},\"lime\":{\"50\":\"#f9fbe7\",\"100\":\"#f0f4c3\",\"200\":\"#e6ee9c\",\"300\":\"#dce775\",\"400\":\"#d4e157\",\"500\":\"#cddc39\",\"600\":\"#c0ca33\",\"700\":\"#afb42b\",\"800\":\"#9e9d24\",\"900\":\"#827717\",\"a100\":\"#f4ff81\",\"a200\":\"#eeff41\",\"a400\":\"#c6ff00\",\"a700\":\"#aeea00\"},\"yellow\":{\"50\":\"#fffde7\",\"100\":\"#fff9c4\",\"200\":\"#fff59d\",\"300\":\"#fff176\",\"400\":\"#ffee58\",\"500\":\"#ffeb3b\",\"600\":\"#fdd835\",\"700\":\"#fbc02d\",\"800\":\"#f9a825\",\"900\":\"#f57f17\",\"a100\":\"#ffff8d\",\"a200\":\"#ffff00\",\"a400\":\"#ffea00\",\"a700\":\"#ffd600\"},\"amber\":{\"50\":\"#fff8e1\",\"100\":\"#ffecb3\",\"200\":\"#ffe082\",\"300\":\"#ffd54f\",\"400\":\"#ffca28\",\"500\":\"#ffc107\",\"600\":\"#ffb300\",\"700\":\"#ffa000\",\"800\":\"#ff8f00\",\"900\":\"#ff6f00\",\"a100\":\"#ffe57f\",\"a200\":\"#ffd740\",\"a400\":\"#ffc400\",\"a700\":\"#ffab00\"},\"orange\":{\"50\":\"#fff3e0\",\"100\":\"#ffe0b2\",\"200\":\"#ffcc80\",\"300\":\"#ffb74d\",\"400\":\"#ffa726\",\"500\":\"#ff9800\",\"600\":\"#fb8c00\",\"700\":\"#f57c00\",\"800\":\"#ef6c00\",\"900\":\"#e65100\",\"a100\":\"#ffd180\",\"a200\":\"#ffab40\",\"a400\":\"#ff9100\",\"a700\":\"#ff6d00\"},\"deepOrange\":{\"50\":\"#fbe9e7\",\"100\":\"#ffccbc\",\"200\":\"#ffab91\",\"300\":\"#ff8a65\",\"400\":\"#ff7043\",\"500\":\"#ff5722\",\"600\":\"#f4511e\",\"700\":\"#e64a19\",\"800\":\"#d84315\",\"900\":\"#bf360c\",\"a100\":\"#ff9e80\",\"a200\":\"#ff6e40\",\"a400\":\"#ff3d00\",\"a700\":\"#dd2c00\"},\"brown\":{\"50\":\"#efebe9\",\"100\":\"#d7ccc8\",\"200\":\"#bcaaa4\",\"300\":\"#a1887f\",\"400\":\"#8d6e63\",\"500\":\"#795548\",\"600\":\"#6d4c41\",\"700\":\"#5d4037\",\"800\":\"#4e342e\",\"900\":\"#3e2723\"},\"grey\":{\"50\":\"#fafafa\",\"100\":\"#f5f5f5\",\"200\":\"#eeeeee\",\"300\":\"#e0e0e0\",\"400\":\"#bdbdbd\",\"500\":\"#9e9e9e\",\"600\":\"#757575\",\"700\":\"#616161\",\"800\":\"#424242\",\"900\":\"#212121\"},\"blueGrey\":{\"50\":\"#eceff1\",\"100\":\"#cfd8dc\",\"200\":\"#b0bec5\",\"300\":\"#90a4ae\",\"400\":\"#78909c\",\"500\":\"#607d8b\",\"600\":\"#546e7a\",\"700\":\"#455a64\",\"800\":\"#37474f\",\"900\":\"#263238\"},\"darkText\":{\"primary\":\"rgba(0, 0, 0, 0.87)\",\"secondary\":\"rgba(0, 0, 0, 0.54)\",\"disabled\":\"rgba(0, 0, 0, 0.38)\",\"dividers\":\"rgba(0, 0, 0, 0.12)\"},\"lightText\":{\"primary\":\"rgba(255, 255, 255, 1)\",\"secondary\":\"rgba(255, 255, 255, 0.7)\",\"disabled\":\"rgba(255, 255, 255, 0.5)\",\"dividers\":\"rgba(255, 255, 255, 0.12)\"},\"darkIcons\":{\"active\":\"rgba(0, 0, 0, 0.54)\",\"inactive\":\"rgba(0, 0, 0, 0.38)\"},\"lightIcons\":{\"active\":\"rgba(255, 255, 255, 1)\",\"inactive\":\"rgba(255, 255, 255, 0.5)\"},\"white\":\"#ffffff\",\"black\":\"#000000\"};\n});\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = Function.call.bind(Object.prototype.hasOwnProperty);\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar has = Function.call.bind(Object.prototype.hasOwnProperty);\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.AlphaPicker = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactcss = require('reactcss');\n\nvar _reactcss2 = _interopRequireDefault(_reactcss);\n\nvar _common = require('../common');\n\nvar _AlphaPointer = require('./AlphaPointer');\n\nvar _AlphaPointer2 = _interopRequireDefault(_AlphaPointer);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar AlphaPicker = exports.AlphaPicker = function AlphaPicker(_ref) {\n var rgb = _ref.rgb,\n hsl = _ref.hsl,\n width = _ref.width,\n height = _ref.height,\n onChange = _ref.onChange,\n direction = _ref.direction,\n style = _ref.style,\n renderers = _ref.renderers,\n pointer = _ref.pointer,\n _ref$className = _ref.className,\n className = _ref$className === undefined ? '' : _ref$className;\n\n var styles = (0, _reactcss2.default)({\n 'default': {\n picker: {\n position: 'relative',\n width: width,\n height: height\n },\n alpha: {\n radius: '2px',\n style: style\n }\n }\n });\n\n return _react2.default.createElement(\n 'div',\n { style: styles.picker, className: 'alpha-picker ' + className },\n _react2.default.createElement(_common.Alpha, _extends({}, styles.alpha, {\n rgb: rgb,\n hsl: hsl,\n pointer: pointer,\n renderers: renderers,\n onChange: onChange,\n direction: direction\n }))\n );\n};\n\nAlphaPicker.defaultProps = {\n width: '316px',\n height: '16px',\n direction: 'horizontal',\n pointer: _AlphaPointer2.default\n};\n\nexports.default = (0, _common.ColorWrap)(AlphaPicker);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.AlphaPointer = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactcss = require('reactcss');\n\nvar _reactcss2 = _interopRequireDefault(_reactcss);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar AlphaPointer = exports.AlphaPointer = function AlphaPointer(_ref) {\n var direction = _ref.direction;\n\n var styles = (0, _reactcss2.default)({\n 'default': {\n picker: {\n width: '18px',\n height: '18px',\n borderRadius: '50%',\n transform: 'translate(-9px, -1px)',\n backgroundColor: 'rgb(248, 248, 248)',\n boxShadow: '0 1px 4px 0 rgba(0, 0, 0, 0.37)'\n }\n },\n 'vertical': {\n picker: {\n transform: 'translate(-3px, -9px)'\n }\n }\n }, { vertical: direction === 'vertical' });\n\n return _react2.default.createElement('div', { style: styles.picker });\n};\n\nexports.default = AlphaPointer;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Block = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactcss = require('reactcss');\n\nvar _reactcss2 = _interopRequireDefault(_reactcss);\n\nvar _merge = require('lodash/merge');\n\nvar _merge2 = _interopRequireDefault(_merge);\n\nvar _color = require('../../helpers/color');\n\nvar color = _interopRequireWildcard(_color);\n\nvar _common = require('../common');\n\nvar _BlockSwatches = require('./BlockSwatches');\n\nvar _BlockSwatches2 = _interopRequireDefault(_BlockSwatches);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Block = exports.Block = function Block(_ref) {\n var onChange = _ref.onChange,\n onSwatchHover = _ref.onSwatchHover,\n hex = _ref.hex,\n colors = _ref.colors,\n width = _ref.width,\n triangle = _ref.triangle,\n _ref$styles = _ref.styles,\n passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n _ref$className = _ref.className,\n className = _ref$className === undefined ? '' : _ref$className;\n\n var transparent = hex === 'transparent';\n var handleChange = function handleChange(hexCode, e) {\n color.isValidHex(hexCode) && onChange({\n hex: hexCode,\n source: 'hex'\n }, e);\n };\n\n var styles = (0, _reactcss2.default)((0, _merge2.default)({\n 'default': {\n card: {\n width: width,\n background: '#fff',\n boxShadow: '0 1px rgba(0,0,0,.1)',\n borderRadius: '6px',\n position: 'relative'\n },\n head: {\n height: '110px',\n background: hex,\n borderRadius: '6px 6px 0 0',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n position: 'relative'\n },\n body: {\n padding: '10px'\n },\n label: {\n fontSize: '18px',\n color: color.getContrastingColor(hex),\n position: 'relative'\n },\n triangle: {\n width: '0px',\n height: '0px',\n borderStyle: 'solid',\n borderWidth: '0 10px 10px 10px',\n borderColor: 'transparent transparent ' + hex + ' transparent',\n position: 'absolute',\n top: '-10px',\n left: '50%',\n marginLeft: '-10px'\n },\n input: {\n width: '100%',\n fontSize: '12px',\n color: '#666',\n border: '0px',\n outline: 'none',\n height: '22px',\n boxShadow: 'inset 0 0 0 1px #ddd',\n borderRadius: '4px',\n padding: '0 7px',\n boxSizing: 'border-box'\n }\n },\n 'hide-triangle': {\n triangle: {\n display: 'none'\n }\n }\n }, passedStyles), { 'hide-triangle': triangle === 'hide' });\n\n return _react2.default.createElement(\n 'div',\n { style: styles.card, className: 'block-picker ' + className },\n _react2.default.createElement('div', { style: styles.triangle }),\n _react2.default.createElement(\n 'div',\n { style: styles.head },\n transparent && _react2.default.createElement(_common.Checkboard, { borderRadius: '6px 6px 0 0' }),\n _react2.default.createElement(\n 'div',\n { style: styles.label },\n hex\n )\n ),\n _react2.default.createElement(\n 'div',\n { style: styles.body },\n _react2.default.createElement(_BlockSwatches2.default, { colors: colors, onClick: handleChange, onSwatchHover: onSwatchHover }),\n _react2.default.createElement(_common.EditableInput, {\n style: { input: styles.input },\n value: hex,\n onChange: handleChange\n })\n )\n );\n};\n\nBlock.propTypes = {\n width: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]),\n colors: _propTypes2.default.arrayOf(_propTypes2.default.string),\n triangle: _propTypes2.default.oneOf(['top', 'hide']),\n styles: _propTypes2.default.object\n};\n\nBlock.defaultProps = {\n width: 170,\n colors: ['#D9E3F0', '#F47373', '#697689', '#37D67A', '#2CCCE4', '#555555', '#dce775', '#ff8a65', '#ba68c8'],\n triangle: 'top',\n styles: {}\n};\n\nexports.default = (0, _common.ColorWrap)(Block);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.BlockSwatches = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactcss = require('reactcss');\n\nvar _reactcss2 = _interopRequireDefault(_reactcss);\n\nvar _map = require('lodash/map');\n\nvar _map2 = _interopRequireDefault(_map);\n\nvar _common = require('../common');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar BlockSwatches = exports.BlockSwatches = function BlockSwatches(_ref) {\n var colors = _ref.colors,\n onClick = _ref.onClick,\n onSwatchHover = _ref.onSwatchHover;\n\n var styles = (0, _reactcss2.default)({\n 'default': {\n swatches: {\n marginRight: '-10px'\n },\n swatch: {\n width: '22px',\n height: '22px',\n float: 'left',\n marginRight: '10px',\n marginBottom: '10px',\n borderRadius: '4px'\n },\n clear: {\n clear: 'both'\n }\n }\n });\n\n return _react2.default.createElement(\n 'div',\n { style: styles.swatches },\n (0, _map2.default)(colors, function (c) {\n return _react2.default.createElement(_common.Swatch, {\n key: c,\n color: c,\n style: styles.swatch,\n onClick: onClick,\n onHover: onSwatchHover,\n focusStyle: {\n boxShadow: '0 0 4px ' + c\n }\n });\n }),\n _react2.default.createElement('div', { style: styles.clear })\n );\n};\n\nexports.default = BlockSwatches;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Chrome = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactcss = require('reactcss');\n\nvar _reactcss2 = _interopRequireDefault(_reactcss);\n\nvar _merge = require('lodash/merge');\n\nvar _merge2 = _interopRequireDefault(_merge);\n\nvar _common = require('../common');\n\nvar _ChromeFields = require('./ChromeFields');\n\nvar _ChromeFields2 = _interopRequireDefault(_ChromeFields);\n\nvar _ChromePointer = require('./ChromePointer');\n\nvar _ChromePointer2 = _interopRequireDefault(_ChromePointer);\n\nvar _ChromePointerCircle = require('./ChromePointerCircle');\n\nvar _ChromePointerCircle2 = _interopRequireDefault(_ChromePointerCircle);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Chrome = exports.Chrome = function Chrome(_ref) {\n var width = _ref.width,\n onChange = _ref.onChange,\n disableAlpha = _ref.disableAlpha,\n rgb = _ref.rgb,\n hsl = _ref.hsl,\n hsv = _ref.hsv,\n hex = _ref.hex,\n renderers = _ref.renderers,\n _ref$styles = _ref.styles,\n passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n _ref$className = _ref.className,\n className = _ref$className === undefined ? '' : _ref$className,\n defaultView = _ref.defaultView;\n\n var styles = (0, _reactcss2.default)((0, _merge2.default)({\n 'default': {\n picker: {\n width: width,\n background: '#fff',\n borderRadius: '2px',\n boxShadow: '0 0 2px rgba(0,0,0,.3), 0 4px 8px rgba(0,0,0,.3)',\n boxSizing: 'initial',\n fontFamily: 'Menlo'\n },\n saturation: {\n width: '100%',\n paddingBottom: '55%',\n position: 'relative',\n borderRadius: '2px 2px 0 0',\n overflow: 'hidden'\n },\n Saturation: {\n radius: '2px 2px 0 0'\n },\n body: {\n padding: '16px 16px 12px'\n },\n controls: {\n display: 'flex'\n },\n color: {\n width: '32px'\n },\n swatch: {\n marginTop: '6px',\n width: '16px',\n height: '16px',\n borderRadius: '8px',\n position: 'relative',\n overflow: 'hidden'\n },\n active: {\n absolute: '0px 0px 0px 0px',\n borderRadius: '8px',\n boxShadow: 'inset 0 0 0 1px rgba(0,0,0,.1)',\n background: 'rgba(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ', ' + rgb.a + ')',\n zIndex: '2'\n },\n toggles: {\n flex: '1'\n },\n hue: {\n height: '10px',\n position: 'relative',\n marginBottom: '8px'\n },\n Hue: {\n radius: '2px'\n },\n alpha: {\n height: '10px',\n position: 'relative'\n },\n Alpha: {\n radius: '2px'\n }\n },\n 'disableAlpha': {\n color: {\n width: '22px'\n },\n alpha: {\n display: 'none'\n },\n hue: {\n marginBottom: '0px'\n },\n swatch: {\n width: '10px',\n height: '10px',\n marginTop: '0px'\n }\n }\n }, passedStyles), { disableAlpha: disableAlpha });\n\n return _react2.default.createElement(\n 'div',\n { style: styles.picker, className: 'chrome-picker ' + className },\n _react2.default.createElement(\n 'div',\n { style: styles.saturation },\n _react2.default.createElement(_common.Saturation, {\n style: styles.Saturation,\n hsl: hsl,\n hsv: hsv,\n pointer: _ChromePointerCircle2.default,\n onChange: onChange\n })\n ),\n _react2.default.createElement(\n 'div',\n { style: styles.body },\n _react2.default.createElement(\n 'div',\n { style: styles.controls, className: 'flexbox-fix' },\n _react2.default.createElement(\n 'div',\n { style: styles.color },\n _react2.default.createElement(\n 'div',\n { style: styles.swatch },\n _react2.default.createElement('div', { style: styles.active }),\n _react2.default.createElement(_common.Checkboard, { renderers: renderers })\n )\n ),\n _react2.default.createElement(\n 'div',\n { style: styles.toggles },\n _react2.default.createElement(\n 'div',\n { style: styles.hue },\n _react2.default.createElement(_common.Hue, {\n style: styles.Hue,\n hsl: hsl,\n pointer: _ChromePointer2.default,\n onChange: onChange\n })\n ),\n _react2.default.createElement(\n 'div',\n { style: styles.alpha },\n _react2.default.createElement(_common.Alpha, {\n style: styles.Alpha,\n rgb: rgb,\n hsl: hsl,\n pointer: _ChromePointer2.default,\n renderers: renderers,\n onChange: onChange\n })\n )\n )\n ),\n _react2.default.createElement(_ChromeFields2.default, {\n rgb: rgb,\n hsl: hsl,\n hex: hex,\n view: defaultView,\n onChange: onChange,\n disableAlpha: disableAlpha\n })\n )\n );\n};\n\nChrome.propTypes = {\n width: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]),\n disableAlpha: _propTypes2.default.bool,\n styles: _propTypes2.default.object,\n defaultView: _propTypes2.default.oneOf([\"hex\", \"rgb\", \"hsl\"])\n};\n\nChrome.defaultProps = {\n width: 225,\n disableAlpha: false,\n styles: {}\n};\n\nexports.default = (0, _common.ColorWrap)(Chrome);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ChromeFields = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactcss = require('reactcss');\n\nvar _reactcss2 = _interopRequireDefault(_reactcss);\n\nvar _color = require('../../helpers/color');\n\nvar color = _interopRequireWildcard(_color);\n\nvar _isUndefined = require('lodash/isUndefined');\n\nvar _isUndefined2 = _interopRequireDefault(_isUndefined);\n\nvar _common = require('../common');\n\nvar _UnfoldMoreHorizontalIcon = require('@icons/material/UnfoldMoreHorizontalIcon');\n\nvar _UnfoldMoreHorizontalIcon2 = _interopRequireDefault(_UnfoldMoreHorizontalIcon);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /* eslint-disable react/no-did-mount-set-state, no-param-reassign */\n\nvar ChromeFields = exports.ChromeFields = function (_React$Component) {\n _inherits(ChromeFields, _React$Component);\n\n function ChromeFields(props) {\n _classCallCheck(this, ChromeFields);\n\n var _this = _possibleConstructorReturn(this, (ChromeFields.__proto__ || Object.getPrototypeOf(ChromeFields)).call(this));\n\n _this.toggleViews = function () {\n if (_this.state.view === 'hex') {\n _this.setState({ view: 'rgb' });\n } else if (_this.state.view === 'rgb') {\n _this.setState({ view: 'hsl' });\n } else if (_this.state.view === 'hsl') {\n if (_this.props.hsl.a === 1) {\n _this.setState({ view: 'hex' });\n } else {\n _this.setState({ view: 'rgb' });\n }\n }\n };\n\n _this.handleChange = function (data, e) {\n if (data.hex) {\n color.isValidHex(data.hex) && _this.props.onChange({\n hex: data.hex,\n source: 'hex'\n }, e);\n } else if (data.r || data.g || data.b) {\n _this.props.onChange({\n r: data.r || _this.props.rgb.r,\n g: data.g || _this.props.rgb.g,\n b: data.b || _this.props.rgb.b,\n source: 'rgb'\n }, e);\n } else if (data.a) {\n if (data.a < 0) {\n data.a = 0;\n } else if (data.a > 1) {\n data.a = 1;\n }\n\n _this.props.onChange({\n h: _this.props.hsl.h,\n s: _this.props.hsl.s,\n l: _this.props.hsl.l,\n a: Math.round(data.a * 100) / 100,\n source: 'rgb'\n }, e);\n } else if (data.h || data.s || data.l) {\n // Remove any occurances of '%'.\n if (typeof data.s === 'string' && data.s.includes('%')) {\n data.s = data.s.replace('%', '');\n }\n if (typeof data.l === 'string' && data.l.includes('%')) {\n data.l = data.l.replace('%', '');\n }\n\n // We store HSL as a unit interval so we need to override the 1 input to 0.01\n if (data.s == 1) {\n data.s = 0.01;\n } else if (data.l == 1) {\n data.l = 0.01;\n }\n\n _this.props.onChange({\n h: data.h || _this.props.hsl.h,\n s: Number(!(0, _isUndefined2.default)(data.s) ? data.s : _this.props.hsl.s),\n l: Number(!(0, _isUndefined2.default)(data.l) ? data.l : _this.props.hsl.l),\n source: 'hsl'\n }, e);\n }\n };\n\n _this.showHighlight = function (e) {\n e.currentTarget.style.background = '#eee';\n };\n\n _this.hideHighlight = function (e) {\n e.currentTarget.style.background = 'transparent';\n };\n\n if (props.hsl.a !== 1 && props.view === \"hex\") {\n _this.state = {\n view: \"rgb\"\n };\n } else {\n _this.state = {\n view: props.view\n };\n }\n return _this;\n }\n\n _createClass(ChromeFields, [{\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var styles = (0, _reactcss2.default)({\n 'default': {\n wrap: {\n paddingTop: '16px',\n display: 'flex'\n },\n fields: {\n flex: '1',\n display: 'flex',\n marginLeft: '-6px'\n },\n field: {\n paddingLeft: '6px',\n width: '100%'\n },\n alpha: {\n paddingLeft: '6px',\n width: '100%'\n },\n toggle: {\n width: '32px',\n textAlign: 'right',\n position: 'relative'\n },\n icon: {\n marginRight: '-4px',\n marginTop: '12px',\n cursor: 'pointer',\n position: 'relative'\n },\n iconHighlight: {\n position: 'absolute',\n width: '24px',\n height: '28px',\n background: '#eee',\n borderRadius: '4px',\n top: '10px',\n left: '12px',\n display: 'none'\n },\n input: {\n fontSize: '11px',\n color: '#333',\n width: '100%',\n borderRadius: '2px',\n border: 'none',\n boxShadow: 'inset 0 0 0 1px #dadada',\n height: '21px',\n textAlign: 'center'\n },\n label: {\n textTransform: 'uppercase',\n fontSize: '11px',\n lineHeight: '11px',\n color: '#969696',\n textAlign: 'center',\n display: 'block',\n marginTop: '12px'\n },\n svg: {\n fill: '#333',\n width: '24px',\n height: '24px',\n border: '1px transparent solid',\n borderRadius: '5px'\n }\n },\n 'disableAlpha': {\n alpha: {\n display: 'none'\n }\n }\n }, this.props, this.state);\n\n var fields = void 0;\n if (this.state.view === 'hex') {\n fields = _react2.default.createElement(\n 'div',\n { style: styles.fields, className: 'flexbox-fix' },\n _react2.default.createElement(\n 'div',\n { style: styles.field },\n _react2.default.createElement(_common.EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'hex', value: this.props.hex,\n onChange: this.handleChange\n })\n )\n );\n } else if (this.state.view === 'rgb') {\n fields = _react2.default.createElement(\n 'div',\n { style: styles.fields, className: 'flexbox-fix' },\n _react2.default.createElement(\n 'div',\n { style: styles.field },\n _react2.default.createElement(_common.EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'r',\n value: this.props.rgb.r,\n onChange: this.handleChange\n })\n ),\n _react2.default.createElement(\n 'div',\n { style: styles.field },\n _react2.default.createElement(_common.EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'g',\n value: this.props.rgb.g,\n onChange: this.handleChange\n })\n ),\n _react2.default.createElement(\n 'div',\n { style: styles.field },\n _react2.default.createElement(_common.EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'b',\n value: this.props.rgb.b,\n onChange: this.handleChange\n })\n ),\n _react2.default.createElement(\n 'div',\n { style: styles.alpha },\n _react2.default.createElement(_common.EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'a',\n value: this.props.rgb.a,\n arrowOffset: 0.01,\n onChange: this.handleChange\n })\n )\n );\n } else if (this.state.view === 'hsl') {\n fields = _react2.default.createElement(\n 'div',\n { style: styles.fields, className: 'flexbox-fix' },\n _react2.default.createElement(\n 'div',\n { style: styles.field },\n _react2.default.createElement(_common.EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'h',\n value: Math.round(this.props.hsl.h),\n onChange: this.handleChange\n })\n ),\n _react2.default.createElement(\n 'div',\n { style: styles.field },\n _react2.default.createElement(_common.EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 's',\n value: Math.round(this.props.hsl.s * 100) + '%',\n onChange: this.handleChange\n })\n ),\n _react2.default.createElement(\n 'div',\n { style: styles.field },\n _react2.default.createElement(_common.EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'l',\n value: Math.round(this.props.hsl.l * 100) + '%',\n onChange: this.handleChange\n })\n ),\n _react2.default.createElement(\n 'div',\n { style: styles.alpha },\n _react2.default.createElement(_common.EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'a',\n value: this.props.hsl.a,\n arrowOffset: 0.01,\n onChange: this.handleChange\n })\n )\n );\n }\n\n return _react2.default.createElement(\n 'div',\n { style: styles.wrap, className: 'flexbox-fix' },\n fields,\n _react2.default.createElement(\n 'div',\n { style: styles.toggle },\n _react2.default.createElement(\n 'div',\n { style: styles.icon, onClick: this.toggleViews, ref: function ref(icon) {\n return _this2.icon = icon;\n } },\n _react2.default.createElement(_UnfoldMoreHorizontalIcon2.default, {\n style: styles.svg,\n onMouseOver: this.showHighlight,\n onMouseEnter: this.showHighlight,\n onMouseOut: this.hideHighlight\n })\n )\n )\n );\n }\n }], [{\n key: 'getDerivedStateFromProps',\n value: function getDerivedStateFromProps(nextProps, state) {\n if (nextProps.hsl.a !== 1 && state.view === 'hex') {\n return { view: 'rgb' };\n }\n return null;\n }\n }]);\n\n return ChromeFields;\n}(_react2.default.Component);\n\nChromeFields.defaultProps = {\n view: \"hex\"\n};\n\nexports.default = ChromeFields;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ChromePointer = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactcss = require('reactcss');\n\nvar _reactcss2 = _interopRequireDefault(_reactcss);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ChromePointer = exports.ChromePointer = function ChromePointer() {\n var styles = (0, _reactcss2.default)({\n 'default': {\n picker: {\n width: '12px',\n height: '12px',\n borderRadius: '6px',\n transform: 'translate(-6px, -1px)',\n backgroundColor: 'rgb(248, 248, 248)',\n boxShadow: '0 1px 4px 0 rgba(0, 0, 0, 0.37)'\n }\n }\n });\n\n return _react2.default.createElement('div', { style: styles.picker });\n};\n\nexports.default = ChromePointer;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ChromePointerCircle = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactcss = require('reactcss');\n\nvar _reactcss2 = _interopRequireDefault(_reactcss);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ChromePointerCircle = exports.ChromePointerCircle = function ChromePointerCircle() {\n var styles = (0, _reactcss2.default)({\n 'default': {\n picker: {\n width: '12px',\n height: '12px',\n borderRadius: '6px',\n boxShadow: 'inset 0 0 0 1px #fff',\n transform: 'translate(-6px, -6px)'\n }\n }\n });\n\n return _react2.default.createElement('div', { style: styles.picker });\n};\n\nexports.default = ChromePointerCircle;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Circle = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactcss = require('reactcss');\n\nvar _reactcss2 = _interopRequireDefault(_reactcss);\n\nvar _map = require('lodash/map');\n\nvar _map2 = _interopRequireDefault(_map);\n\nvar _merge = require('lodash/merge');\n\nvar _merge2 = _interopRequireDefault(_merge);\n\nvar _materialColors = require('material-colors');\n\nvar material = _interopRequireWildcard(_materialColors);\n\nvar _common = require('../common');\n\nvar _CircleSwatch = require('./CircleSwatch');\n\nvar _CircleSwatch2 = _interopRequireDefault(_CircleSwatch);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Circle = exports.Circle = function Circle(_ref) {\n var width = _ref.width,\n onChange = _ref.onChange,\n onSwatchHover = _ref.onSwatchHover,\n colors = _ref.colors,\n hex = _ref.hex,\n circleSize = _ref.circleSize,\n _ref$styles = _ref.styles,\n passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n circleSpacing = _ref.circleSpacing,\n _ref$className = _ref.className,\n className = _ref$className === undefined ? '' : _ref$className;\n\n var styles = (0, _reactcss2.default)((0, _merge2.default)({\n 'default': {\n card: {\n width: width,\n display: 'flex',\n flexWrap: 'wrap',\n marginRight: -circleSpacing,\n marginBottom: -circleSpacing\n }\n }\n }, passedStyles));\n\n var handleChange = function handleChange(hexCode, e) {\n return onChange({ hex: hexCode, source: 'hex' }, e);\n };\n\n return _react2.default.createElement(\n 'div',\n { style: styles.card, className: 'circle-picker ' + className },\n (0, _map2.default)(colors, function (c) {\n return _react2.default.createElement(_CircleSwatch2.default, {\n key: c,\n color: c,\n onClick: handleChange,\n onSwatchHover: onSwatchHover,\n active: hex === c.toLowerCase(),\n circleSize: circleSize,\n circleSpacing: circleSpacing\n });\n })\n );\n};\n\nCircle.propTypes = {\n width: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]),\n circleSize: _propTypes2.default.number,\n circleSpacing: _propTypes2.default.number,\n styles: _propTypes2.default.object\n};\n\nCircle.defaultProps = {\n width: 252,\n circleSize: 28,\n circleSpacing: 14,\n colors: [material.red['500'], material.pink['500'], material.purple['500'], material.deepPurple['500'], material.indigo['500'], material.blue['500'], material.lightBlue['500'], material.cyan['500'], material.teal['500'], material.green['500'], material.lightGreen['500'], material.lime['500'], material.yellow['500'], material.amber['500'], material.orange['500'], material.deepOrange['500'], material.brown['500'], material.blueGrey['500']],\n styles: {}\n};\n\nexports.default = (0, _common.ColorWrap)(Circle);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CircleSwatch = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactcss = require('reactcss');\n\nvar _reactcss2 = _interopRequireDefault(_reactcss);\n\nvar _common = require('../common');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar CircleSwatch = exports.CircleSwatch = function CircleSwatch(_ref) {\n var color = _ref.color,\n onClick = _ref.onClick,\n onSwatchHover = _ref.onSwatchHover,\n hover = _ref.hover,\n active = _ref.active,\n circleSize = _ref.circleSize,\n circleSpacing = _ref.circleSpacing;\n\n var styles = (0, _reactcss2.default)({\n 'default': {\n swatch: {\n width: circleSize,\n height: circleSize,\n marginRight: circleSpacing,\n marginBottom: circleSpacing,\n transform: 'scale(1)',\n transition: '100ms transform ease'\n },\n Swatch: {\n borderRadius: '50%',\n background: 'transparent',\n boxShadow: 'inset 0 0 0 ' + (circleSize / 2 + 1) + 'px ' + color,\n transition: '100ms box-shadow ease'\n }\n },\n 'hover': {\n swatch: {\n transform: 'scale(1.2)'\n }\n },\n 'active': {\n Swatch: {\n boxShadow: 'inset 0 0 0 3px ' + color\n }\n }\n }, { hover: hover, active: active });\n\n return _react2.default.createElement(\n 'div',\n { style: styles.swatch },\n _react2.default.createElement(_common.Swatch, {\n style: styles.Swatch,\n color: color,\n onClick: onClick,\n onHover: onSwatchHover,\n focusStyle: { boxShadow: styles.Swatch.boxShadow + ', 0 0 5px ' + color }\n })\n );\n};\n\nCircleSwatch.defaultProps = {\n circleSize: 28,\n circleSpacing: 14\n};\n\nexports.default = (0, _reactcss.handleHover)(CircleSwatch);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Alpha = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactcss = require('reactcss');\n\nvar _reactcss2 = _interopRequireDefault(_reactcss);\n\nvar _alpha = require('../../helpers/alpha');\n\nvar alpha = _interopRequireWildcard(_alpha);\n\nvar _Checkboard = require('./Checkboard');\n\nvar _Checkboard2 = _interopRequireDefault(_Checkboard);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Alpha = exports.Alpha = function (_ref) {\n _inherits(Alpha, _ref);\n\n function Alpha() {\n var _ref2;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Alpha);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref2 = Alpha.__proto__ || Object.getPrototypeOf(Alpha)).call.apply(_ref2, [this].concat(args))), _this), _this.handleChange = function (e) {\n var change = alpha.calculateChange(e, _this.props.hsl, _this.props.direction, _this.props.a, _this.container);\n change && typeof _this.props.onChange === 'function' && _this.props.onChange(change, e);\n }, _this.handleMouseDown = function (e) {\n _this.handleChange(e);\n window.addEventListener('mousemove', _this.handleChange);\n window.addEventListener('mouseup', _this.handleMouseUp);\n }, _this.handleMouseUp = function () {\n _this.unbindEventListeners();\n }, _this.unbindEventListeners = function () {\n window.removeEventListener('mousemove', _this.handleChange);\n window.removeEventListener('mouseup', _this.handleMouseUp);\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Alpha, [{\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.unbindEventListeners();\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var rgb = this.props.rgb;\n var styles = (0, _reactcss2.default)({\n 'default': {\n alpha: {\n absolute: '0px 0px 0px 0px',\n borderRadius: this.props.radius\n },\n checkboard: {\n absolute: '0px 0px 0px 0px',\n overflow: 'hidden',\n borderRadius: this.props.radius\n },\n gradient: {\n absolute: '0px 0px 0px 0px',\n background: 'linear-gradient(to right, rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ', 0) 0%,\\n rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ', 1) 100%)',\n boxShadow: this.props.shadow,\n borderRadius: this.props.radius\n },\n container: {\n position: 'relative',\n height: '100%',\n margin: '0 3px'\n },\n pointer: {\n position: 'absolute',\n left: rgb.a * 100 + '%'\n },\n slider: {\n width: '4px',\n borderRadius: '1px',\n height: '8px',\n boxShadow: '0 0 2px rgba(0, 0, 0, .6)',\n background: '#fff',\n marginTop: '1px',\n transform: 'translateX(-2px)'\n }\n },\n 'vertical': {\n gradient: {\n background: 'linear-gradient(to bottom, rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ', 0) 0%,\\n rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ', 1) 100%)'\n },\n pointer: {\n left: 0,\n top: rgb.a * 100 + '%'\n }\n },\n 'overwrite': _extends({}, this.props.style)\n }, {\n vertical: this.props.direction === 'vertical',\n overwrite: true\n });\n\n return _react2.default.createElement(\n 'div',\n { style: styles.alpha },\n _react2.default.createElement(\n 'div',\n { style: styles.checkboard },\n _react2.default.createElement(_Checkboard2.default, { renderers: this.props.renderers })\n ),\n _react2.default.createElement('div', { style: styles.gradient }),\n _react2.default.createElement(\n 'div',\n {\n style: styles.container,\n ref: function ref(container) {\n return _this2.container = container;\n },\n onMouseDown: this.handleMouseDown,\n onTouchMove: this.handleChange,\n onTouchStart: this.handleChange\n },\n _react2.default.createElement(\n 'div',\n { style: styles.pointer },\n this.props.pointer ? _react2.default.createElement(this.props.pointer, this.props) : _react2.default.createElement('div', { style: styles.slider })\n )\n )\n );\n }\n }]);\n\n return Alpha;\n}(_react.PureComponent || _react.Component);\n\nexports.default = Alpha;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Checkboard = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactcss = require('reactcss');\n\nvar _reactcss2 = _interopRequireDefault(_reactcss);\n\nvar _checkboard = require('../../helpers/checkboard');\n\nvar checkboard = _interopRequireWildcard(_checkboard);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Checkboard = exports.Checkboard = function Checkboard(_ref) {\n var white = _ref.white,\n grey = _ref.grey,\n size = _ref.size,\n renderers = _ref.renderers,\n borderRadius = _ref.borderRadius,\n boxShadow = _ref.boxShadow,\n children = _ref.children;\n\n var styles = (0, _reactcss2.default)({\n 'default': {\n grid: {\n borderRadius: borderRadius,\n boxShadow: boxShadow,\n absolute: '0px 0px 0px 0px',\n background: 'url(' + checkboard.get(white, grey, size, renderers.canvas) + ') center left'\n }\n }\n });\n return (0, _react.isValidElement)(children) ? _react2.default.cloneElement(children, _extends({}, children.props, { style: _extends({}, children.props.style, styles.grid) })) : _react2.default.createElement('div', { style: styles.grid });\n};\n\nCheckboard.defaultProps = {\n size: 8,\n white: 'transparent',\n grey: 'rgba(0,0,0,.08)',\n renderers: {}\n};\n\nexports.default = Checkboard;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ColorWrap = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _debounce = require('lodash/debounce');\n\nvar _debounce2 = _interopRequireDefault(_debounce);\n\nvar _color = require('../../helpers/color');\n\nvar color = _interopRequireWildcard(_color);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ColorWrap = exports.ColorWrap = function ColorWrap(Picker) {\n var ColorPicker = function (_ref) {\n _inherits(ColorPicker, _ref);\n\n function ColorPicker(props) {\n _classCallCheck(this, ColorPicker);\n\n var _this = _possibleConstructorReturn(this, (ColorPicker.__proto__ || Object.getPrototypeOf(ColorPicker)).call(this));\n\n _this.handleChange = function (data, event) {\n var isValidColor = color.simpleCheckForValidColor(data);\n if (isValidColor) {\n var colors = color.toState(data, data.h || _this.state.oldHue);\n _this.setState(colors);\n _this.props.onChangeComplete && _this.debounce(_this.props.onChangeComplete, colors, event);\n _this.props.onChange && _this.props.onChange(colors, event);\n }\n };\n\n _this.handleSwatchHover = function (data, event) {\n var isValidColor = color.simpleCheckForValidColor(data);\n if (isValidColor) {\n var colors = color.toState(data, data.h || _this.state.oldHue);\n _this.props.onSwatchHover && _this.props.onSwatchHover(colors, event);\n }\n };\n\n _this.state = _extends({}, color.toState(props.color, 0));\n\n _this.debounce = (0, _debounce2.default)(function (fn, data, event) {\n fn(data, event);\n }, 100);\n return _this;\n }\n\n _createClass(ColorPicker, [{\n key: 'render',\n value: function render() {\n var optionalEvents = {};\n if (this.props.onSwatchHover) {\n optionalEvents.onSwatchHover = this.handleSwatchHover;\n }\n\n return _react2.default.createElement(Picker, _extends({}, this.props, this.state, {\n onChange: this.handleChange\n }, optionalEvents));\n }\n }], [{\n key: 'getDerivedStateFromProps',\n value: function getDerivedStateFromProps(nextProps, state) {\n return _extends({}, color.toState(nextProps.color, state.oldHue));\n }\n }]);\n\n return ColorPicker;\n }(_react.PureComponent || _react.Component);\n\n ColorPicker.propTypes = _extends({}, Picker.propTypes);\n\n ColorPicker.defaultProps = _extends({}, Picker.defaultProps, {\n color: {\n h: 250,\n s: 0.50,\n l: 0.20,\n a: 1\n }\n });\n\n return ColorPicker;\n};\n\nexports.default = ColorWrap;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.EditableInput = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactcss = require('reactcss');\n\nvar _reactcss2 = _interopRequireDefault(_reactcss);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar DEFAULT_ARROW_OFFSET = 1;\n\nvar UP_KEY_CODE = 38;\nvar DOWN_KEY_CODE = 40;\nvar VALID_KEY_CODES = [UP_KEY_CODE, DOWN_KEY_CODE];\nvar isValidKeyCode = function isValidKeyCode(keyCode) {\n return VALID_KEY_CODES.indexOf(keyCode) > -1;\n};\nvar getNumberValue = function getNumberValue(value) {\n return Number(String(value).replace(/%/g, ''));\n};\n\nvar idCounter = 1;\n\nvar EditableInput = exports.EditableInput = function (_ref) {\n _inherits(EditableInput, _ref);\n\n function EditableInput(props) {\n _classCallCheck(this, EditableInput);\n\n var _this = _possibleConstructorReturn(this, (EditableInput.__proto__ || Object.getPrototypeOf(EditableInput)).call(this));\n\n _this.handleBlur = function () {\n if (_this.state.blurValue) {\n _this.setState({ value: _this.state.blurValue, blurValue: null });\n }\n };\n\n _this.handleChange = function (e) {\n _this.setUpdatedValue(e.target.value, e);\n };\n\n _this.handleKeyDown = function (e) {\n // In case `e.target.value` is a percentage remove the `%` character\n // and update accordingly with a percentage\n // https://github.com/casesandberg/react-color/issues/383\n var value = getNumberValue(e.target.value);\n if (!isNaN(value) && isValidKeyCode(e.keyCode)) {\n var offset = _this.getArrowOffset();\n var updatedValue = e.keyCode === UP_KEY_CODE ? value + offset : value - offset;\n\n _this.setUpdatedValue(updatedValue, e);\n }\n };\n\n _this.handleDrag = function (e) {\n if (_this.props.dragLabel) {\n var newValue = Math.round(_this.props.value + e.movementX);\n if (newValue >= 0 && newValue <= _this.props.dragMax) {\n _this.props.onChange && _this.props.onChange(_this.getValueObjectWithLabel(newValue), e);\n }\n }\n };\n\n _this.handleMouseDown = function (e) {\n if (_this.props.dragLabel) {\n e.preventDefault();\n _this.handleDrag(e);\n window.addEventListener('mousemove', _this.handleDrag);\n window.addEventListener('mouseup', _this.handleMouseUp);\n }\n };\n\n _this.handleMouseUp = function () {\n _this.unbindEventListeners();\n };\n\n _this.unbindEventListeners = function () {\n window.removeEventListener('mousemove', _this.handleDrag);\n window.removeEventListener('mouseup', _this.handleMouseUp);\n };\n\n _this.state = {\n value: String(props.value).toUpperCase(),\n blurValue: String(props.value).toUpperCase()\n };\n\n _this.inputId = 'rc-editable-input-' + idCounter++;\n return _this;\n }\n\n _createClass(EditableInput, [{\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps, prevState) {\n if (this.props.value !== this.state.value && (prevProps.value !== this.props.value || prevState.value !== this.state.value)) {\n if (this.input === document.activeElement) {\n this.setState({ blurValue: String(this.props.value).toUpperCase() });\n } else {\n this.setState({ value: String(this.props.value).toUpperCase(), blurValue: !this.state.blurValue && String(this.props.value).toUpperCase() });\n }\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.unbindEventListeners();\n }\n }, {\n key: 'getValueObjectWithLabel',\n value: function getValueObjectWithLabel(value) {\n return _defineProperty({}, this.props.label, value);\n }\n }, {\n key: 'getArrowOffset',\n value: function getArrowOffset() {\n return this.props.arrowOffset || DEFAULT_ARROW_OFFSET;\n }\n }, {\n key: 'setUpdatedValue',\n value: function setUpdatedValue(value, e) {\n var onChangeValue = this.props.label ? this.getValueObjectWithLabel(value) : value;\n this.props.onChange && this.props.onChange(onChangeValue, e);\n\n this.setState({ value: value });\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var styles = (0, _reactcss2.default)({\n 'default': {\n wrap: {\n position: 'relative'\n }\n },\n 'user-override': {\n wrap: this.props.style && this.props.style.wrap ? this.props.style.wrap : {},\n input: this.props.style && this.props.style.input ? this.props.style.input : {},\n label: this.props.style && this.props.style.label ? this.props.style.label : {}\n },\n 'dragLabel-true': {\n label: {\n cursor: 'ew-resize'\n }\n }\n }, {\n 'user-override': true\n }, this.props);\n\n return _react2.default.createElement(\n 'div',\n { style: styles.wrap },\n _react2.default.createElement('input', {\n id: this.inputId,\n style: styles.input,\n ref: function ref(input) {\n return _this2.input = input;\n },\n value: this.state.value,\n onKeyDown: this.handleKeyDown,\n onChange: this.handleChange,\n onBlur: this.handleBlur,\n placeholder: this.props.placeholder,\n spellCheck: 'false'\n }),\n this.props.label && !this.props.hideLabel ? _react2.default.createElement(\n 'label',\n {\n htmlFor: this.inputId,\n style: styles.label,\n onMouseDown: this.handleMouseDown\n },\n this.props.label\n ) : null\n );\n }\n }]);\n\n return EditableInput;\n}(_react.PureComponent || _react.Component);\n\nexports.default = EditableInput;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Hue = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactcss = require('reactcss');\n\nvar _reactcss2 = _interopRequireDefault(_reactcss);\n\nvar _hue = require('../../helpers/hue');\n\nvar hue = _interopRequireWildcard(_hue);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Hue = exports.Hue = function (_ref) {\n _inherits(Hue, _ref);\n\n function Hue() {\n var _ref2;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Hue);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref2 = Hue.__proto__ || Object.getPrototypeOf(Hue)).call.apply(_ref2, [this].concat(args))), _this), _this.handleChange = function (e) {\n var change = hue.calculateChange(e, _this.props.direction, _this.props.hsl, _this.container);\n change && typeof _this.props.onChange === 'function' && _this.props.onChange(change, e);\n }, _this.handleMouseDown = function (e) {\n _this.handleChange(e);\n window.addEventListener('mousemove', _this.handleChange);\n window.addEventListener('mouseup', _this.handleMouseUp);\n }, _this.handleMouseUp = function () {\n _this.unbindEventListeners();\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Hue, [{\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.unbindEventListeners();\n }\n }, {\n key: 'unbindEventListeners',\n value: function unbindEventListeners() {\n window.removeEventListener('mousemove', this.handleChange);\n window.removeEventListener('mouseup', this.handleMouseUp);\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _props$direction = this.props.direction,\n direction = _props$direction === undefined ? 'horizontal' : _props$direction;\n\n\n var styles = (0, _reactcss2.default)({\n 'default': {\n hue: {\n absolute: '0px 0px 0px 0px',\n borderRadius: this.props.radius,\n boxShadow: this.props.shadow\n },\n container: {\n padding: '0 2px',\n position: 'relative',\n height: '100%',\n borderRadius: this.props.radius\n },\n pointer: {\n position: 'absolute',\n left: this.props.hsl.h * 100 / 360 + '%'\n },\n slider: {\n marginTop: '1px',\n width: '4px',\n borderRadius: '1px',\n height: '8px',\n boxShadow: '0 0 2px rgba(0, 0, 0, .6)',\n background: '#fff',\n transform: 'translateX(-2px)'\n }\n },\n 'vertical': {\n pointer: {\n left: '0px',\n top: -(this.props.hsl.h * 100 / 360) + 100 + '%'\n }\n }\n }, { vertical: direction === 'vertical' });\n\n return _react2.default.createElement(\n 'div',\n { style: styles.hue },\n _react2.default.createElement(\n 'div',\n {\n className: 'hue-' + direction,\n style: styles.container,\n ref: function ref(container) {\n return _this2.container = container;\n },\n onMouseDown: this.handleMouseDown,\n onTouchMove: this.handleChange,\n onTouchStart: this.handleChange\n },\n _react2.default.createElement(\n 'style',\n null,\n '\\n .hue-horizontal {\\n background: linear-gradient(to right, #f00 0%, #ff0 17%, #0f0\\n 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);\\n background: -webkit-linear-gradient(to right, #f00 0%, #ff0\\n 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);\\n }\\n\\n .hue-vertical {\\n background: linear-gradient(to top, #f00 0%, #ff0 17%, #0f0 33%,\\n #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);\\n background: -webkit-linear-gradient(to top, #f00 0%, #ff0 17%,\\n #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);\\n }\\n '\n ),\n _react2.default.createElement(\n 'div',\n { style: styles.pointer },\n this.props.pointer ? _react2.default.createElement(this.props.pointer, this.props) : _react2.default.createElement('div', { style: styles.slider })\n )\n )\n );\n }\n }]);\n\n return Hue;\n}(_react.PureComponent || _react.Component);\n\nexports.default = Hue;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Raised = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactcss = require('reactcss');\n\nvar _reactcss2 = _interopRequireDefault(_reactcss);\n\nvar _merge = require('lodash/merge');\n\nvar _merge2 = _interopRequireDefault(_merge);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Raised = exports.Raised = function Raised(_ref) {\n var zDepth = _ref.zDepth,\n radius = _ref.radius,\n background = _ref.background,\n children = _ref.children,\n _ref$styles = _ref.styles,\n passedStyles = _ref$styles === undefined ? {} : _ref$styles;\n\n var styles = (0, _reactcss2.default)((0, _merge2.default)({\n 'default': {\n wrap: {\n position: 'relative',\n display: 'inline-block'\n },\n content: {\n position: 'relative'\n },\n bg: {\n absolute: '0px 0px 0px 0px',\n boxShadow: '0 ' + zDepth + 'px ' + zDepth * 4 + 'px rgba(0,0,0,.24)',\n borderRadius: radius,\n background: background\n }\n },\n 'zDepth-0': {\n bg: {\n boxShadow: 'none'\n }\n },\n\n 'zDepth-1': {\n bg: {\n boxShadow: '0 2px 10px rgba(0,0,0,.12), 0 2px 5px rgba(0,0,0,.16)'\n }\n },\n 'zDepth-2': {\n bg: {\n boxShadow: '0 6px 20px rgba(0,0,0,.19), 0 8px 17px rgba(0,0,0,.2)'\n }\n },\n 'zDepth-3': {\n bg: {\n boxShadow: '0 17px 50px rgba(0,0,0,.19), 0 12px 15px rgba(0,0,0,.24)'\n }\n },\n 'zDepth-4': {\n bg: {\n boxShadow: '0 25px 55px rgba(0,0,0,.21), 0 16px 28px rgba(0,0,0,.22)'\n }\n },\n 'zDepth-5': {\n bg: {\n boxShadow: '0 40px 77px rgba(0,0,0,.22), 0 27px 24px rgba(0,0,0,.2)'\n }\n },\n 'square': {\n bg: {\n borderRadius: '0'\n }\n },\n 'circle': {\n bg: {\n borderRadius: '50%'\n }\n }\n }, passedStyles), { 'zDepth-1': zDepth === 1 });\n\n return _react2.default.createElement(\n 'div',\n { style: styles.wrap },\n _react2.default.createElement('div', { style: styles.bg }),\n _react2.default.createElement(\n 'div',\n { style: styles.content },\n children\n )\n );\n};\n\nRaised.propTypes = {\n background: _propTypes2.default.string,\n zDepth: _propTypes2.default.oneOf([0, 1, 2, 3, 4, 5]),\n radius: _propTypes2.default.number,\n styles: _propTypes2.default.object\n};\n\nRaised.defaultProps = {\n background: '#fff',\n zDepth: 1,\n radius: 2,\n styles: {}\n};\n\nexports.default = Raised;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Saturation = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactcss = require('reactcss');\n\nvar _reactcss2 = _interopRequireDefault(_reactcss);\n\nvar _throttle = require('lodash/throttle');\n\nvar _throttle2 = _interopRequireDefault(_throttle);\n\nvar _saturation = require('../../helpers/saturation');\n\nvar saturation = _interopRequireWildcard(_saturation);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Saturation = exports.Saturation = function (_ref) {\n _inherits(Saturation, _ref);\n\n function Saturation(props) {\n _classCallCheck(this, Saturation);\n\n var _this = _possibleConstructorReturn(this, (Saturation.__proto__ || Object.getPrototypeOf(Saturation)).call(this, props));\n\n _this.handleChange = function (e) {\n typeof _this.props.onChange === 'function' && _this.throttle(_this.props.onChange, saturation.calculateChange(e, _this.props.hsl, _this.container), e);\n };\n\n _this.handleMouseDown = function (e) {\n _this.handleChange(e);\n var renderWindow = _this.getContainerRenderWindow();\n renderWindow.addEventListener('mousemove', _this.handleChange);\n renderWindow.addEventListener('mouseup', _this.handleMouseUp);\n };\n\n _this.handleMouseUp = function () {\n _this.unbindEventListeners();\n };\n\n _this.throttle = (0, _throttle2.default)(function (fn, data, e) {\n fn(data, e);\n }, 50);\n return _this;\n }\n\n _createClass(Saturation, [{\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.throttle.cancel();\n this.unbindEventListeners();\n }\n }, {\n key: 'getContainerRenderWindow',\n value: function getContainerRenderWindow() {\n var container = this.container;\n\n var renderWindow = window;\n while (!renderWindow.document.contains(container) && renderWindow.parent !== renderWindow) {\n renderWindow = renderWindow.parent;\n }\n return renderWindow;\n }\n }, {\n key: 'unbindEventListeners',\n value: function unbindEventListeners() {\n var renderWindow = this.getContainerRenderWindow();\n renderWindow.removeEventListener('mousemove', this.handleChange);\n renderWindow.removeEventListener('mouseup', this.handleMouseUp);\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _ref2 = this.props.style || {},\n color = _ref2.color,\n white = _ref2.white,\n black = _ref2.black,\n pointer = _ref2.pointer,\n circle = _ref2.circle;\n\n var styles = (0, _reactcss2.default)({\n 'default': {\n color: {\n absolute: '0px 0px 0px 0px',\n background: 'hsl(' + this.props.hsl.h + ',100%, 50%)',\n borderRadius: this.props.radius\n },\n white: {\n absolute: '0px 0px 0px 0px',\n borderRadius: this.props.radius\n },\n black: {\n absolute: '0px 0px 0px 0px',\n boxShadow: this.props.shadow,\n borderRadius: this.props.radius\n },\n pointer: {\n position: 'absolute',\n top: -(this.props.hsv.v * 100) + 100 + '%',\n left: this.props.hsv.s * 100 + '%',\n cursor: 'default'\n },\n circle: {\n width: '4px',\n height: '4px',\n boxShadow: '0 0 0 1.5px #fff, inset 0 0 1px 1px rgba(0,0,0,.3),\\n 0 0 1px 2px rgba(0,0,0,.4)',\n borderRadius: '50%',\n cursor: 'hand',\n transform: 'translate(-2px, -2px)'\n }\n },\n 'custom': {\n color: color,\n white: white,\n black: black,\n pointer: pointer,\n circle: circle\n }\n }, { 'custom': !!this.props.style });\n\n return _react2.default.createElement(\n 'div',\n {\n style: styles.color,\n ref: function ref(container) {\n return _this2.container = container;\n },\n onMouseDown: this.handleMouseDown,\n onTouchMove: this.handleChange,\n onTouchStart: this.handleChange\n },\n _react2.default.createElement(\n 'style',\n null,\n '\\n .saturation-white {\\n background: -webkit-linear-gradient(to right, #fff, rgba(255,255,255,0));\\n background: linear-gradient(to right, #fff, rgba(255,255,255,0));\\n }\\n .saturation-black {\\n background: -webkit-linear-gradient(to top, #000, rgba(0,0,0,0));\\n background: linear-gradient(to top, #000, rgba(0,0,0,0));\\n }\\n '\n ),\n _react2.default.createElement(\n 'div',\n { style: styles.white, className: 'saturation-white' },\n _react2.default.createElement('div', { style: styles.black, className: 'saturation-black' }),\n _react2.default.createElement(\n 'div',\n { style: styles.pointer },\n this.props.pointer ? _react2.default.createElement(this.props.pointer, this.props) : _react2.default.createElement('div', { style: styles.circle })\n )\n )\n );\n }\n }]);\n\n return Saturation;\n}(_react.PureComponent || _react.Component);\n\nexports.default = Saturation;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Swatch = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactcss = require('reactcss');\n\nvar _reactcss2 = _interopRequireDefault(_reactcss);\n\nvar _interaction = require('../../helpers/interaction');\n\nvar _Checkboard = require('./Checkboard');\n\nvar _Checkboard2 = _interopRequireDefault(_Checkboard);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ENTER = 13;\n\nvar Swatch = exports.Swatch = function Swatch(_ref) {\n var color = _ref.color,\n style = _ref.style,\n _ref$onClick = _ref.onClick,\n onClick = _ref$onClick === undefined ? function () {} : _ref$onClick,\n onHover = _ref.onHover,\n _ref$title = _ref.title,\n title = _ref$title === undefined ? color : _ref$title,\n children = _ref.children,\n focus = _ref.focus,\n _ref$focusStyle = _ref.focusStyle,\n focusStyle = _ref$focusStyle === undefined ? {} : _ref$focusStyle;\n\n var transparent = color === 'transparent';\n var styles = (0, _reactcss2.default)({\n default: {\n swatch: _extends({\n background: color,\n height: '100%',\n width: '100%',\n cursor: 'pointer',\n position: 'relative',\n outline: 'none'\n }, style, focus ? focusStyle : {})\n }\n });\n\n var handleClick = function handleClick(e) {\n return onClick(color, e);\n };\n var handleKeyDown = function handleKeyDown(e) {\n return e.keyCode === ENTER && onClick(color, e);\n };\n var handleHover = function handleHover(e) {\n return onHover(color, e);\n };\n\n var optionalEvents = {};\n if (onHover) {\n optionalEvents.onMouseOver = handleHover;\n }\n\n return _react2.default.createElement(\n 'div',\n _extends({\n style: styles.swatch,\n onClick: handleClick,\n title: title,\n tabIndex: 0,\n onKeyDown: handleKeyDown\n }, optionalEvents),\n children,\n transparent && _react2.default.createElement(_Checkboard2.default, {\n borderRadius: styles.swatch.borderRadius,\n boxShadow: 'inset 0 0 0 1px rgba(0,0,0,0.1)'\n })\n );\n};\n\nexports.default = (0, _interaction.handleFocus)(Swatch);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Alpha = require('./Alpha');\n\nObject.defineProperty(exports, 'Alpha', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Alpha).default;\n }\n});\n\nvar _Checkboard = require('./Checkboard');\n\nObject.defineProperty(exports, 'Checkboard', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Checkboard).default;\n }\n});\n\nvar _EditableInput = require('./EditableInput');\n\nObject.defineProperty(exports, 'EditableInput', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_EditableInput).default;\n }\n});\n\nvar _Hue = require('./Hue');\n\nObject.defineProperty(exports, 'Hue', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Hue).default;\n }\n});\n\nvar _Raised = require('./Raised');\n\nObject.defineProperty(exports, 'Raised', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Raised).default;\n }\n});\n\nvar _Saturation = require('./Saturation');\n\nObject.defineProperty(exports, 'Saturation', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Saturation).default;\n }\n});\n\nvar _ColorWrap = require('./ColorWrap');\n\nObject.defineProperty(exports, 'ColorWrap', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_ColorWrap).default;\n }\n});\n\nvar _Swatch = require('./Swatch');\n\nObject.defineProperty(exports, 'Swatch', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Swatch).default;\n }\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Compact = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactcss = require('reactcss');\n\nvar _reactcss2 = _interopRequireDefault(_reactcss);\n\nvar _map = require('lodash/map');\n\nvar _map2 = _interopRequireDefault(_map);\n\nvar _merge = require('lodash/merge');\n\nvar _merge2 = _interopRequireDefault(_merge);\n\nvar _color = require('../../helpers/color');\n\nvar color = _interopRequireWildcard(_color);\n\nvar _common = require('../common');\n\nvar _CompactColor = require('./CompactColor');\n\nvar _CompactColor2 = _interopRequireDefault(_CompactColor);\n\nvar _CompactFields = require('./CompactFields');\n\nvar _CompactFields2 = _interopRequireDefault(_CompactFields);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Compact = exports.Compact = function Compact(_ref) {\n var onChange = _ref.onChange,\n onSwatchHover = _ref.onSwatchHover,\n colors = _ref.colors,\n hex = _ref.hex,\n rgb = _ref.rgb,\n _ref$styles = _ref.styles,\n passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n _ref$className = _ref.className,\n className = _ref$className === undefined ? '' : _ref$className;\n\n var styles = (0, _reactcss2.default)((0, _merge2.default)({\n 'default': {\n Compact: {\n background: '#f6f6f6',\n radius: '4px'\n },\n compact: {\n paddingTop: '5px',\n paddingLeft: '5px',\n boxSizing: 'initial',\n width: '240px'\n },\n clear: {\n clear: 'both'\n }\n }\n }, passedStyles));\n\n var handleChange = function handleChange(data, e) {\n if (data.hex) {\n color.isValidHex(data.hex) && onChange({\n hex: data.hex,\n source: 'hex'\n }, e);\n } else {\n onChange(data, e);\n }\n };\n\n return _react2.default.createElement(\n _common.Raised,\n { style: styles.Compact, styles: passedStyles },\n _react2.default.createElement(\n 'div',\n { style: styles.compact, className: 'compact-picker ' + className },\n _react2.default.createElement(\n 'div',\n null,\n (0, _map2.default)(colors, function (c) {\n return _react2.default.createElement(_CompactColor2.default, {\n key: c,\n color: c,\n active: c.toLowerCase() === hex,\n onClick: handleChange,\n onSwatchHover: onSwatchHover\n });\n }),\n _react2.default.createElement('div', { style: styles.clear })\n ),\n _react2.default.createElement(_CompactFields2.default, { hex: hex, rgb: rgb, onChange: handleChange })\n )\n );\n};\n\nCompact.propTypes = {\n colors: _propTypes2.default.arrayOf(_propTypes2.default.string),\n styles: _propTypes2.default.object\n};\n\nCompact.defaultProps = {\n colors: ['#4D4D4D', '#999999', '#FFFFFF', '#F44E3B', '#FE9200', '#FCDC00', '#DBDF00', '#A4DD00', '#68CCCA', '#73D8FF', '#AEA1FF', '#FDA1FF', '#333333', '#808080', '#cccccc', '#D33115', '#E27300', '#FCC400', '#B0BC00', '#68BC00', '#16A5A5', '#009CE0', '#7B64FF', '#FA28FF', '#000000', '#666666', '#B3B3B3', '#9F0500', '#C45100', '#FB9E00', '#808900', '#194D33', '#0C797D', '#0062B1', '#653294', '#AB149E'],\n styles: {}\n};\n\nexports.default = (0, _common.ColorWrap)(Compact);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CompactColor = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactcss = require('reactcss');\n\nvar _reactcss2 = _interopRequireDefault(_reactcss);\n\nvar _color = require('../../helpers/color');\n\nvar colorUtils = _interopRequireWildcard(_color);\n\nvar _common = require('../common');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar CompactColor = exports.CompactColor = function CompactColor(_ref) {\n var color = _ref.color,\n _ref$onClick = _ref.onClick,\n onClick = _ref$onClick === undefined ? function () {} : _ref$onClick,\n onSwatchHover = _ref.onSwatchHover,\n active = _ref.active;\n\n var styles = (0, _reactcss2.default)({\n 'default': {\n color: {\n background: color,\n width: '15px',\n height: '15px',\n float: 'left',\n marginRight: '5px',\n marginBottom: '5px',\n position: 'relative',\n cursor: 'pointer'\n },\n dot: {\n absolute: '5px 5px 5px 5px',\n background: colorUtils.getContrastingColor(color),\n borderRadius: '50%',\n opacity: '0'\n }\n },\n 'active': {\n dot: {\n opacity: '1'\n }\n },\n 'color-#FFFFFF': {\n color: {\n boxShadow: 'inset 0 0 0 1px #ddd'\n },\n dot: {\n background: '#000'\n }\n },\n 'transparent': {\n dot: {\n background: '#000'\n }\n }\n }, { active: active, 'color-#FFFFFF': color === '#FFFFFF', 'transparent': color === 'transparent' });\n\n return _react2.default.createElement(\n _common.Swatch,\n {\n style: styles.color,\n color: color,\n onClick: onClick,\n onHover: onSwatchHover,\n focusStyle: { boxShadow: '0 0 4px ' + color }\n },\n _react2.default.createElement('div', { style: styles.dot })\n );\n};\n\nexports.default = CompactColor;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CompactFields = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactcss = require('reactcss');\n\nvar _reactcss2 = _interopRequireDefault(_reactcss);\n\nvar _common = require('../common');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar CompactFields = exports.CompactFields = function CompactFields(_ref) {\n var hex = _ref.hex,\n rgb = _ref.rgb,\n onChange = _ref.onChange;\n\n var styles = (0, _reactcss2.default)({\n 'default': {\n fields: {\n display: 'flex',\n paddingBottom: '6px',\n paddingRight: '5px',\n position: 'relative'\n },\n active: {\n position: 'absolute',\n top: '6px',\n left: '5px',\n height: '9px',\n width: '9px',\n background: hex\n },\n HEXwrap: {\n flex: '6',\n position: 'relative'\n },\n HEXinput: {\n width: '80%',\n padding: '0px',\n paddingLeft: '20%',\n border: 'none',\n outline: 'none',\n background: 'none',\n fontSize: '12px',\n color: '#333',\n height: '16px'\n },\n HEXlabel: {\n display: 'none'\n },\n RGBwrap: {\n flex: '3',\n position: 'relative'\n },\n RGBinput: {\n width: '70%',\n padding: '0px',\n paddingLeft: '30%',\n border: 'none',\n outline: 'none',\n background: 'none',\n fontSize: '12px',\n color: '#333',\n height: '16px'\n },\n RGBlabel: {\n position: 'absolute',\n top: '3px',\n left: '0px',\n lineHeight: '16px',\n textTransform: 'uppercase',\n fontSize: '12px',\n color: '#999'\n }\n }\n });\n\n var handleChange = function handleChange(data, e) {\n if (data.r || data.g || data.b) {\n onChange({\n r: data.r || rgb.r,\n g: data.g || rgb.g,\n b: data.b || rgb.b,\n source: 'rgb'\n }, e);\n } else {\n onChange({\n hex: data.hex,\n source: 'hex'\n }, e);\n }\n };\n\n return _react2.default.createElement(\n 'div',\n { style: styles.fields, className: 'flexbox-fix' },\n _react2.default.createElement('div', { style: styles.active }),\n _react2.default.createElement(_common.EditableInput, {\n style: { wrap: styles.HEXwrap, input: styles.HEXinput, label: styles.HEXlabel },\n label: 'hex',\n value: hex,\n onChange: handleChange\n }),\n _react2.default.createElement(_common.EditableInput, {\n style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n label: 'r',\n value: rgb.r,\n onChange: handleChange\n }),\n _react2.default.createElement(_common.EditableInput, {\n style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n label: 'g',\n value: rgb.g,\n onChange: handleChange\n }),\n _react2.default.createElement(_common.EditableInput, {\n style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n label: 'b',\n value: rgb.b,\n onChange: handleChange\n })\n );\n};\n\nexports.default = CompactFields;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Github = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactcss = require('reactcss');\n\nvar _reactcss2 = _interopRequireDefault(_reactcss);\n\nvar _map = require('lodash/map');\n\nvar _map2 = _interopRequireDefault(_map);\n\nvar _merge = require('lodash/merge');\n\nvar _merge2 = _interopRequireDefault(_merge);\n\nvar _common = require('../common');\n\nvar _GithubSwatch = require('./GithubSwatch');\n\nvar _GithubSwatch2 = _interopRequireDefault(_GithubSwatch);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Github = exports.Github = function Github(_ref) {\n var width = _ref.width,\n colors = _ref.colors,\n onChange = _ref.onChange,\n onSwatchHover = _ref.onSwatchHover,\n triangle = _ref.triangle,\n _ref$styles = _ref.styles,\n passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n _ref$className = _ref.className,\n className = _ref$className === undefined ? '' : _ref$className;\n\n var styles = (0, _reactcss2.default)((0, _merge2.default)({\n 'default': {\n card: {\n width: width,\n background: '#fff',\n border: '1px solid rgba(0,0,0,0.2)',\n boxShadow: '0 3px 12px rgba(0,0,0,0.15)',\n borderRadius: '4px',\n position: 'relative',\n padding: '5px',\n display: 'flex',\n flexWrap: 'wrap'\n },\n triangle: {\n position: 'absolute',\n border: '7px solid transparent',\n borderBottomColor: '#fff'\n },\n triangleShadow: {\n position: 'absolute',\n border: '8px solid transparent',\n borderBottomColor: 'rgba(0,0,0,0.15)'\n }\n },\n 'hide-triangle': {\n triangle: {\n display: 'none'\n },\n triangleShadow: {\n display: 'none'\n }\n },\n 'top-left-triangle': {\n triangle: {\n top: '-14px',\n left: '10px'\n },\n triangleShadow: {\n top: '-16px',\n left: '9px'\n }\n },\n 'top-right-triangle': {\n triangle: {\n top: '-14px',\n right: '10px'\n },\n triangleShadow: {\n top: '-16px',\n right: '9px'\n }\n },\n 'bottom-left-triangle': {\n triangle: {\n top: '35px',\n left: '10px',\n transform: 'rotate(180deg)'\n },\n triangleShadow: {\n top: '37px',\n left: '9px',\n transform: 'rotate(180deg)'\n }\n },\n 'bottom-right-triangle': {\n triangle: {\n top: '35px',\n right: '10px',\n transform: 'rotate(180deg)'\n },\n triangleShadow: {\n top: '37px',\n right: '9px',\n transform: 'rotate(180deg)'\n }\n }\n }, passedStyles), {\n 'hide-triangle': triangle === 'hide',\n 'top-left-triangle': triangle === 'top-left',\n 'top-right-triangle': triangle === 'top-right',\n 'bottom-left-triangle': triangle === 'bottom-left',\n 'bottom-right-triangle': triangle === 'bottom-right'\n });\n\n var handleChange = function handleChange(hex, e) {\n return onChange({ hex: hex, source: 'hex' }, e);\n };\n\n return _react2.default.createElement(\n 'div',\n { style: styles.card, className: 'github-picker ' + className },\n _react2.default.createElement('div', { style: styles.triangleShadow }),\n _react2.default.createElement('div', { style: styles.triangle }),\n (0, _map2.default)(colors, function (c) {\n return _react2.default.createElement(_GithubSwatch2.default, {\n color: c,\n key: c,\n onClick: handleChange,\n onSwatchHover: onSwatchHover\n });\n })\n );\n};\n\nGithub.propTypes = {\n width: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]),\n colors: _propTypes2.default.arrayOf(_propTypes2.default.string),\n triangle: _propTypes2.default.oneOf(['hide', 'top-left', 'top-right', 'bottom-left', 'bottom-right']),\n styles: _propTypes2.default.object\n};\n\nGithub.defaultProps = {\n width: 200,\n colors: ['#B80000', '#DB3E00', '#FCCB00', '#008B02', '#006B76', '#1273DE', '#004DCF', '#5300EB', '#EB9694', '#FAD0C3', '#FEF3BD', '#C1E1C5', '#BEDADC', '#C4DEF6', '#BED3F3', '#D4C4FB'],\n triangle: 'top-left',\n styles: {}\n};\n\nexports.default = (0, _common.ColorWrap)(Github);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.GithubSwatch = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactcss = require('reactcss');\n\nvar _reactcss2 = _interopRequireDefault(_reactcss);\n\nvar _common = require('../common');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar GithubSwatch = exports.GithubSwatch = function GithubSwatch(_ref) {\n var hover = _ref.hover,\n color = _ref.color,\n onClick = _ref.onClick,\n onSwatchHover = _ref.onSwatchHover;\n\n var hoverSwatch = {\n position: 'relative',\n zIndex: '2',\n outline: '2px solid #fff',\n boxShadow: '0 0 5px 2px rgba(0,0,0,0.25)'\n };\n\n var styles = (0, _reactcss2.default)({\n 'default': {\n swatch: {\n width: '25px',\n height: '25px',\n fontSize: '0'\n }\n },\n 'hover': {\n swatch: hoverSwatch\n }\n }, { hover: hover });\n\n return _react2.default.createElement(\n 'div',\n { style: styles.swatch },\n _react2.default.createElement(_common.Swatch, {\n color: color,\n onClick: onClick,\n onHover: onSwatchHover,\n focusStyle: hoverSwatch\n })\n );\n};\n\nexports.default = (0, _reactcss.handleHover)(GithubSwatch);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Google = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactcss = require('reactcss');\n\nvar _reactcss2 = _interopRequireDefault(_reactcss);\n\nvar _merge = require('lodash/merge');\n\nvar _merge2 = _interopRequireDefault(_merge);\n\nvar _common = require('../common');\n\nvar _GooglePointerCircle = require('./GooglePointerCircle');\n\nvar _GooglePointerCircle2 = _interopRequireDefault(_GooglePointerCircle);\n\nvar _GooglePointer = require('./GooglePointer');\n\nvar _GooglePointer2 = _interopRequireDefault(_GooglePointer);\n\nvar _GoogleFields = require('./GoogleFields');\n\nvar _GoogleFields2 = _interopRequireDefault(_GoogleFields);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Google = exports.Google = function Google(_ref) {\n var width = _ref.width,\n onChange = _ref.onChange,\n rgb = _ref.rgb,\n hsl = _ref.hsl,\n hsv = _ref.hsv,\n hex = _ref.hex,\n header = _ref.header,\n _ref$styles = _ref.styles,\n passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n _ref$className = _ref.className,\n className = _ref$className === undefined ? '' : _ref$className;\n\n var styles = (0, _reactcss2.default)((0, _merge2.default)({\n 'default': {\n picker: {\n width: width,\n background: '#fff',\n border: '1px solid #dfe1e5',\n boxSizing: 'initial',\n display: 'flex',\n flexWrap: 'wrap',\n borderRadius: '8px 8px 0px 0px'\n },\n head: {\n height: '57px',\n width: '100%',\n paddingTop: '16px',\n paddingBottom: '16px',\n paddingLeft: '16px',\n fontSize: '20px',\n boxSizing: 'border-box',\n fontFamily: 'Roboto-Regular,HelveticaNeue,Arial,sans-serif'\n },\n saturation: {\n width: '70%',\n padding: '0px',\n position: 'relative',\n overflow: 'hidden'\n },\n swatch: {\n width: '30%',\n height: '228px',\n padding: '0px',\n background: 'rgba(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ', 1)',\n position: 'relative',\n overflow: 'hidden'\n },\n body: {\n margin: 'auto',\n width: '95%'\n },\n controls: {\n display: 'flex',\n boxSizing: 'border-box',\n height: '52px',\n paddingTop: '22px'\n },\n color: {\n width: '32px'\n },\n hue: {\n height: '8px',\n position: 'relative',\n margin: '0px 16px 0px 16px',\n width: '100%'\n },\n Hue: {\n radius: '2px'\n }\n }\n }, passedStyles));\n return _react2.default.createElement(\n 'div',\n { style: styles.picker, className: 'google-picker ' + className },\n _react2.default.createElement(\n 'div',\n { style: styles.head },\n header\n ),\n _react2.default.createElement('div', { style: styles.swatch }),\n _react2.default.createElement(\n 'div',\n { style: styles.saturation },\n _react2.default.createElement(_common.Saturation, {\n hsl: hsl,\n hsv: hsv,\n pointer: _GooglePointerCircle2.default,\n onChange: onChange\n })\n ),\n _react2.default.createElement(\n 'div',\n { style: styles.body },\n _react2.default.createElement(\n 'div',\n { style: styles.controls, className: 'flexbox-fix' },\n _react2.default.createElement(\n 'div',\n { style: styles.hue },\n _react2.default.createElement(_common.Hue, {\n style: styles.Hue,\n hsl: hsl,\n radius: '4px',\n pointer: _GooglePointer2.default,\n onChange: onChange\n })\n )\n ),\n _react2.default.createElement(_GoogleFields2.default, {\n rgb: rgb,\n hsl: hsl,\n hex: hex,\n hsv: hsv,\n onChange: onChange\n })\n )\n );\n};\n\nGoogle.propTypes = {\n width: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]),\n styles: _propTypes2.default.object,\n header: _propTypes2.default.string\n\n};\n\nGoogle.defaultProps = {\n width: 652,\n styles: {},\n header: 'Color picker'\n};\n\nexports.default = (0, _common.ColorWrap)(Google);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.GoogleFields = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactcss = require('reactcss');\n\nvar _reactcss2 = _interopRequireDefault(_reactcss);\n\nvar _color = require('../../helpers/color');\n\nvar color = _interopRequireWildcard(_color);\n\nvar _common = require('../common');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar GoogleFields = exports.GoogleFields = function GoogleFields(_ref) {\n var onChange = _ref.onChange,\n rgb = _ref.rgb,\n hsl = _ref.hsl,\n hex = _ref.hex,\n hsv = _ref.hsv;\n\n\n var handleChange = function handleChange(data, e) {\n if (data.hex) {\n color.isValidHex(data.hex) && onChange({\n hex: data.hex,\n source: 'hex'\n }, e);\n } else if (data.rgb) {\n var values = data.rgb.split(',');\n color.isvalidColorString(data.rgb, 'rgb') && onChange({\n r: values[0],\n g: values[1],\n b: values[2],\n a: 1,\n source: 'rgb'\n }, e);\n } else if (data.hsv) {\n var _values = data.hsv.split(',');\n if (color.isvalidColorString(data.hsv, 'hsv')) {\n _values[2] = _values[2].replace('%', '');\n _values[1] = _values[1].replace('%', '');\n _values[0] = _values[0].replace('°', '');\n if (_values[1] == 1) {\n _values[1] = 0.01;\n } else if (_values[2] == 1) {\n _values[2] = 0.01;\n }\n onChange({\n h: Number(_values[0]),\n s: Number(_values[1]),\n v: Number(_values[2]),\n source: 'hsv'\n }, e);\n }\n } else if (data.hsl) {\n var _values2 = data.hsl.split(',');\n if (color.isvalidColorString(data.hsl, 'hsl')) {\n _values2[2] = _values2[2].replace('%', '');\n _values2[1] = _values2[1].replace('%', '');\n _values2[0] = _values2[0].replace('°', '');\n if (hsvValue[1] == 1) {\n hsvValue[1] = 0.01;\n } else if (hsvValue[2] == 1) {\n hsvValue[2] = 0.01;\n }\n onChange({\n h: Number(_values2[0]),\n s: Number(_values2[1]),\n v: Number(_values2[2]),\n source: 'hsl'\n }, e);\n }\n }\n };\n\n var styles = (0, _reactcss2.default)({\n 'default': {\n wrap: {\n display: 'flex',\n height: '100px',\n marginTop: '4px'\n },\n fields: {\n width: '100%'\n },\n column: {\n paddingTop: '10px',\n display: 'flex',\n justifyContent: 'space-between'\n },\n double: {\n padding: '0px 4.4px',\n boxSizing: 'border-box'\n },\n input: {\n width: '100%',\n height: '38px',\n boxSizing: 'border-box',\n padding: '4px 10% 3px',\n textAlign: 'center',\n border: '1px solid #dadce0',\n fontSize: '11px',\n textTransform: 'lowercase',\n borderRadius: '5px',\n outline: 'none',\n fontFamily: 'Roboto,Arial,sans-serif'\n },\n input2: {\n height: '38px',\n width: '100%',\n border: '1px solid #dadce0',\n boxSizing: 'border-box',\n fontSize: '11px',\n textTransform: 'lowercase',\n borderRadius: '5px',\n outline: 'none',\n paddingLeft: '10px',\n fontFamily: 'Roboto,Arial,sans-serif'\n },\n label: {\n textAlign: 'center',\n fontSize: '12px',\n background: '#fff',\n position: 'absolute',\n textTransform: 'uppercase',\n color: '#3c4043',\n width: '35px',\n top: '-6px',\n left: '0',\n right: '0',\n marginLeft: 'auto',\n marginRight: 'auto',\n fontFamily: 'Roboto,Arial,sans-serif'\n },\n label2: {\n left: '10px',\n textAlign: 'center',\n fontSize: '12px',\n background: '#fff',\n position: 'absolute',\n textTransform: 'uppercase',\n color: '#3c4043',\n width: '32px',\n top: '-6px',\n fontFamily: 'Roboto,Arial,sans-serif'\n },\n single: {\n flexGrow: '1',\n margin: '0px 4.4px'\n }\n }\n });\n\n var rgbValue = rgb.r + ', ' + rgb.g + ', ' + rgb.b;\n var hslValue = Math.round(hsl.h) + '\\xB0, ' + Math.round(hsl.s * 100) + '%, ' + Math.round(hsl.l * 100) + '%';\n var hsvValue = Math.round(hsv.h) + '\\xB0, ' + Math.round(hsv.s * 100) + '%, ' + Math.round(hsv.v * 100) + '%';\n\n return _react2.default.createElement(\n 'div',\n { style: styles.wrap, className: 'flexbox-fix' },\n _react2.default.createElement(\n 'div',\n { style: styles.fields },\n _react2.default.createElement(\n 'div',\n { style: styles.double },\n _react2.default.createElement(_common.EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'hex',\n value: hex,\n onChange: handleChange\n })\n ),\n _react2.default.createElement(\n 'div',\n { style: styles.column },\n _react2.default.createElement(\n 'div',\n { style: styles.single },\n _react2.default.createElement(_common.EditableInput, {\n style: { input: styles.input2, label: styles.label2 },\n label: 'rgb',\n value: rgbValue,\n onChange: handleChange\n })\n ),\n _react2.default.createElement(\n 'div',\n { style: styles.single },\n _react2.default.createElement(_common.EditableInput, {\n style: { input: styles.input2, label: styles.label2 },\n label: 'hsv',\n value: hsvValue,\n onChange: handleChange\n })\n ),\n _react2.default.createElement(\n 'div',\n { style: styles.single },\n _react2.default.createElement(_common.EditableInput, {\n style: { input: styles.input2, label: styles.label2 },\n label: 'hsl',\n value: hslValue,\n onChange: handleChange\n })\n )\n )\n )\n );\n};\n\nexports.default = GoogleFields;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.GooglePointer = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactcss = require('reactcss');\n\nvar _reactcss2 = _interopRequireDefault(_reactcss);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar GooglePointer = exports.GooglePointer = function GooglePointer(props) {\n var styles = (0, _reactcss2.default)({\n 'default': {\n picker: {\n width: '20px',\n height: '20px',\n borderRadius: '22px',\n transform: 'translate(-10px, -7px)',\n background: 'hsl(' + Math.round(props.hsl.h) + ', 100%, 50%)',\n border: '2px white solid'\n }\n }\n });\n\n return _react2.default.createElement('div', { style: styles.picker });\n};\n\nGooglePointer.propTypes = {\n hsl: _propTypes2.default.shape({\n h: _propTypes2.default.number,\n s: _propTypes2.default.number,\n l: _propTypes2.default.number,\n a: _propTypes2.default.number\n })\n};\n\nGooglePointer.defaultProps = {\n hsl: { a: 1, h: 249.94, l: 0.2, s: 0.50 }\n};\n\nexports.default = GooglePointer;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.GooglePointerCircle = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactcss = require('reactcss');\n\nvar _reactcss2 = _interopRequireDefault(_reactcss);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar GooglePointerCircle = exports.GooglePointerCircle = function GooglePointerCircle(props) {\n var styles = (0, _reactcss2.default)({\n 'default': {\n picker: {\n width: '20px',\n height: '20px',\n borderRadius: '22px',\n border: '2px #fff solid',\n transform: 'translate(-12px, -13px)',\n background: 'hsl(' + Math.round(props.hsl.h) + ', ' + Math.round(props.hsl.s * 100) + '%, ' + Math.round(props.hsl.l * 100) + '%)'\n }\n }\n });\n\n return _react2.default.createElement('div', { style: styles.picker });\n};\n\nGooglePointerCircle.propTypes = {\n hsl: _propTypes2.default.shape({\n h: _propTypes2.default.number,\n s: _propTypes2.default.number,\n l: _propTypes2.default.number,\n a: _propTypes2.default.number\n })\n};\n\nGooglePointerCircle.defaultProps = {\n hsl: { a: 1, h: 249.94, l: 0.2, s: 0.50 }\n};\n\nexports.default = GooglePointerCircle;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.HuePicker = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactcss = require('reactcss');\n\nvar _reactcss2 = _interopRequireDefault(_reactcss);\n\nvar _merge = require('lodash/merge');\n\nvar _merge2 = _interopRequireDefault(_merge);\n\nvar _common = require('../common');\n\nvar _HuePointer = require('./HuePointer');\n\nvar _HuePointer2 = _interopRequireDefault(_HuePointer);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar HuePicker = exports.HuePicker = function HuePicker(_ref) {\n var width = _ref.width,\n height = _ref.height,\n onChange = _ref.onChange,\n hsl = _ref.hsl,\n direction = _ref.direction,\n pointer = _ref.pointer,\n _ref$styles = _ref.styles,\n passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n _ref$className = _ref.className,\n className = _ref$className === undefined ? '' : _ref$className;\n\n var styles = (0, _reactcss2.default)((0, _merge2.default)({\n 'default': {\n picker: {\n position: 'relative',\n width: width,\n height: height\n },\n hue: {\n radius: '2px'\n }\n }\n }, passedStyles));\n\n // Overwrite to provide pure hue color\n var handleChange = function handleChange(data) {\n return onChange({ a: 1, h: data.h, l: 0.5, s: 1 });\n };\n\n return _react2.default.createElement(\n 'div',\n { style: styles.picker, className: 'hue-picker ' + className },\n _react2.default.createElement(_common.Hue, _extends({}, styles.hue, {\n hsl: hsl,\n pointer: pointer,\n onChange: handleChange,\n direction: direction\n }))\n );\n};\n\nHuePicker.propTypes = {\n styles: _propTypes2.default.object\n};\nHuePicker.defaultProps = {\n width: '316px',\n height: '16px',\n direction: 'horizontal',\n pointer: _HuePointer2.default,\n styles: {}\n};\n\nexports.default = (0, _common.ColorWrap)(HuePicker);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SliderPointer = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactcss = require('reactcss');\n\nvar _reactcss2 = _interopRequireDefault(_reactcss);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar SliderPointer = exports.SliderPointer = function SliderPointer(_ref) {\n var direction = _ref.direction;\n\n var styles = (0, _reactcss2.default)({\n 'default': {\n picker: {\n width: '18px',\n height: '18px',\n borderRadius: '50%',\n transform: 'translate(-9px, -1px)',\n backgroundColor: 'rgb(248, 248, 248)',\n boxShadow: '0 1px 4px 0 rgba(0, 0, 0, 0.37)'\n }\n },\n 'vertical': {\n picker: {\n transform: 'translate(-3px, -9px)'\n }\n }\n }, { vertical: direction === 'vertical' });\n\n return _react2.default.createElement('div', { style: styles.picker });\n};\n\nexports.default = SliderPointer;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Material = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactcss = require('reactcss');\n\nvar _reactcss2 = _interopRequireDefault(_reactcss);\n\nvar _merge = require('lodash/merge');\n\nvar _merge2 = _interopRequireDefault(_merge);\n\nvar _color = require('../../helpers/color');\n\nvar color = _interopRequireWildcard(_color);\n\nvar _common = require('../common');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Material = exports.Material = function Material(_ref) {\n var onChange = _ref.onChange,\n hex = _ref.hex,\n rgb = _ref.rgb,\n _ref$styles = _ref.styles,\n passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n _ref$className = _ref.className,\n className = _ref$className === undefined ? '' : _ref$className;\n\n var styles = (0, _reactcss2.default)((0, _merge2.default)({\n 'default': {\n material: {\n width: '98px',\n height: '98px',\n padding: '16px',\n fontFamily: 'Roboto'\n },\n HEXwrap: {\n position: 'relative'\n },\n HEXinput: {\n width: '100%',\n marginTop: '12px',\n fontSize: '15px',\n color: '#333',\n padding: '0px',\n border: '0px',\n borderBottom: '2px solid ' + hex,\n outline: 'none',\n height: '30px'\n },\n HEXlabel: {\n position: 'absolute',\n top: '0px',\n left: '0px',\n fontSize: '11px',\n color: '#999999',\n textTransform: 'capitalize'\n },\n Hex: {\n style: {}\n },\n RGBwrap: {\n position: 'relative'\n },\n RGBinput: {\n width: '100%',\n marginTop: '12px',\n fontSize: '15px',\n color: '#333',\n padding: '0px',\n border: '0px',\n borderBottom: '1px solid #eee',\n outline: 'none',\n height: '30px'\n },\n RGBlabel: {\n position: 'absolute',\n top: '0px',\n left: '0px',\n fontSize: '11px',\n color: '#999999',\n textTransform: 'capitalize'\n },\n split: {\n display: 'flex',\n marginRight: '-10px',\n paddingTop: '11px'\n },\n third: {\n flex: '1',\n paddingRight: '10px'\n }\n }\n }, passedStyles));\n\n var handleChange = function handleChange(data, e) {\n if (data.hex) {\n color.isValidHex(data.hex) && onChange({\n hex: data.hex,\n source: 'hex'\n }, e);\n } else if (data.r || data.g || data.b) {\n onChange({\n r: data.r || rgb.r,\n g: data.g || rgb.g,\n b: data.b || rgb.b,\n source: 'rgb'\n }, e);\n }\n };\n\n return _react2.default.createElement(\n _common.Raised,\n { styles: passedStyles },\n _react2.default.createElement(\n 'div',\n { style: styles.material, className: 'material-picker ' + className },\n _react2.default.createElement(_common.EditableInput, {\n style: { wrap: styles.HEXwrap, input: styles.HEXinput, label: styles.HEXlabel },\n label: 'hex',\n value: hex,\n onChange: handleChange\n }),\n _react2.default.createElement(\n 'div',\n { style: styles.split, className: 'flexbox-fix' },\n _react2.default.createElement(\n 'div',\n { style: styles.third },\n _react2.default.createElement(_common.EditableInput, {\n style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n label: 'r', value: rgb.r,\n onChange: handleChange\n })\n ),\n _react2.default.createElement(\n 'div',\n { style: styles.third },\n _react2.default.createElement(_common.EditableInput, {\n style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n label: 'g',\n value: rgb.g,\n onChange: handleChange\n })\n ),\n _react2.default.createElement(\n 'div',\n { style: styles.third },\n _react2.default.createElement(_common.EditableInput, {\n style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n label: 'b',\n value: rgb.b,\n onChange: handleChange\n })\n )\n )\n )\n );\n};\n\nexports.default = (0, _common.ColorWrap)(Material);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Photoshop = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactcss = require('reactcss');\n\nvar _reactcss2 = _interopRequireDefault(_reactcss);\n\nvar _merge = require('lodash/merge');\n\nvar _merge2 = _interopRequireDefault(_merge);\n\nvar _common = require('../common');\n\nvar _PhotoshopFields = require('./PhotoshopFields');\n\nvar _PhotoshopFields2 = _interopRequireDefault(_PhotoshopFields);\n\nvar _PhotoshopPointerCircle = require('./PhotoshopPointerCircle');\n\nvar _PhotoshopPointerCircle2 = _interopRequireDefault(_PhotoshopPointerCircle);\n\nvar _PhotoshopPointer = require('./PhotoshopPointer');\n\nvar _PhotoshopPointer2 = _interopRequireDefault(_PhotoshopPointer);\n\nvar _PhotoshopButton = require('./PhotoshopButton');\n\nvar _PhotoshopButton2 = _interopRequireDefault(_PhotoshopButton);\n\nvar _PhotoshopPreviews = require('./PhotoshopPreviews');\n\nvar _PhotoshopPreviews2 = _interopRequireDefault(_PhotoshopPreviews);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Photoshop = exports.Photoshop = function (_React$Component) {\n _inherits(Photoshop, _React$Component);\n\n function Photoshop(props) {\n _classCallCheck(this, Photoshop);\n\n var _this = _possibleConstructorReturn(this, (Photoshop.__proto__ || Object.getPrototypeOf(Photoshop)).call(this));\n\n _this.state = {\n currentColor: props.hex\n };\n return _this;\n }\n\n _createClass(Photoshop, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n _props$styles = _props.styles,\n passedStyles = _props$styles === undefined ? {} : _props$styles,\n _props$className = _props.className,\n className = _props$className === undefined ? '' : _props$className;\n\n var styles = (0, _reactcss2.default)((0, _merge2.default)({\n 'default': {\n picker: {\n background: '#DCDCDC',\n borderRadius: '4px',\n boxShadow: '0 0 0 1px rgba(0,0,0,.25), 0 8px 16px rgba(0,0,0,.15)',\n boxSizing: 'initial',\n width: '513px'\n },\n head: {\n backgroundImage: 'linear-gradient(-180deg, #F0F0F0 0%, #D4D4D4 100%)',\n borderBottom: '1px solid #B1B1B1',\n boxShadow: 'inset 0 1px 0 0 rgba(255,255,255,.2), inset 0 -1px 0 0 rgba(0,0,0,.02)',\n height: '23px',\n lineHeight: '24px',\n borderRadius: '4px 4px 0 0',\n fontSize: '13px',\n color: '#4D4D4D',\n textAlign: 'center'\n },\n body: {\n padding: '15px 15px 0',\n display: 'flex'\n },\n saturation: {\n width: '256px',\n height: '256px',\n position: 'relative',\n border: '2px solid #B3B3B3',\n borderBottom: '2px solid #F0F0F0',\n overflow: 'hidden'\n },\n hue: {\n position: 'relative',\n height: '256px',\n width: '19px',\n marginLeft: '10px',\n border: '2px solid #B3B3B3',\n borderBottom: '2px solid #F0F0F0'\n },\n controls: {\n width: '180px',\n marginLeft: '10px'\n },\n top: {\n display: 'flex'\n },\n previews: {\n width: '60px'\n },\n actions: {\n flex: '1',\n marginLeft: '20px'\n }\n }\n }, passedStyles));\n\n return _react2.default.createElement(\n 'div',\n { style: styles.picker, className: 'photoshop-picker ' + className },\n _react2.default.createElement(\n 'div',\n { style: styles.head },\n this.props.header\n ),\n _react2.default.createElement(\n 'div',\n { style: styles.body, className: 'flexbox-fix' },\n _react2.default.createElement(\n 'div',\n { style: styles.saturation },\n _react2.default.createElement(_common.Saturation, {\n hsl: this.props.hsl,\n hsv: this.props.hsv,\n pointer: _PhotoshopPointerCircle2.default,\n onChange: this.props.onChange\n })\n ),\n _react2.default.createElement(\n 'div',\n { style: styles.hue },\n _react2.default.createElement(_common.Hue, {\n direction: 'vertical',\n hsl: this.props.hsl,\n pointer: _PhotoshopPointer2.default,\n onChange: this.props.onChange\n })\n ),\n _react2.default.createElement(\n 'div',\n { style: styles.controls },\n _react2.default.createElement(\n 'div',\n { style: styles.top, className: 'flexbox-fix' },\n _react2.default.createElement(\n 'div',\n { style: styles.previews },\n _react2.default.createElement(_PhotoshopPreviews2.default, {\n rgb: this.props.rgb,\n currentColor: this.state.currentColor\n })\n ),\n _react2.default.createElement(\n 'div',\n { style: styles.actions },\n _react2.default.createElement(_PhotoshopButton2.default, { label: 'OK', onClick: this.props.onAccept, active: true }),\n _react2.default.createElement(_PhotoshopButton2.default, { label: 'Cancel', onClick: this.props.onCancel }),\n _react2.default.createElement(_PhotoshopFields2.default, {\n onChange: this.props.onChange,\n rgb: this.props.rgb,\n hsv: this.props.hsv,\n hex: this.props.hex\n })\n )\n )\n )\n )\n );\n }\n }]);\n\n return Photoshop;\n}(_react2.default.Component);\n\nPhotoshop.propTypes = {\n header: _propTypes2.default.string,\n styles: _propTypes2.default.object\n};\n\nPhotoshop.defaultProps = {\n header: 'Color Picker',\n styles: {}\n};\n\nexports.default = (0, _common.ColorWrap)(Photoshop);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PhotoshopButton = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactcss = require('reactcss');\n\nvar _reactcss2 = _interopRequireDefault(_reactcss);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar PhotoshopButton = exports.PhotoshopButton = function PhotoshopButton(_ref) {\n var onClick = _ref.onClick,\n label = _ref.label,\n children = _ref.children,\n active = _ref.active;\n\n var styles = (0, _reactcss2.default)({\n 'default': {\n button: {\n backgroundImage: 'linear-gradient(-180deg, #FFFFFF 0%, #E6E6E6 100%)',\n border: '1px solid #878787',\n borderRadius: '2px',\n height: '20px',\n boxShadow: '0 1px 0 0 #EAEAEA',\n fontSize: '14px',\n color: '#000',\n lineHeight: '20px',\n textAlign: 'center',\n marginBottom: '10px',\n cursor: 'pointer'\n }\n },\n 'active': {\n button: {\n boxShadow: '0 0 0 1px #878787'\n }\n }\n }, { active: active });\n\n return _react2.default.createElement(\n 'div',\n { style: styles.button, onClick: onClick },\n label || children\n );\n};\n\nexports.default = PhotoshopButton;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PhotoshopPicker = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactcss = require('reactcss');\n\nvar _reactcss2 = _interopRequireDefault(_reactcss);\n\nvar _color = require('../../helpers/color');\n\nvar color = _interopRequireWildcard(_color);\n\nvar _common = require('../common');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar PhotoshopPicker = exports.PhotoshopPicker = function PhotoshopPicker(_ref) {\n var onChange = _ref.onChange,\n rgb = _ref.rgb,\n hsv = _ref.hsv,\n hex = _ref.hex;\n\n var styles = (0, _reactcss2.default)({\n 'default': {\n fields: {\n paddingTop: '5px',\n paddingBottom: '9px',\n width: '80px',\n position: 'relative'\n },\n divider: {\n height: '5px'\n },\n RGBwrap: {\n position: 'relative'\n },\n RGBinput: {\n marginLeft: '40%',\n width: '40%',\n height: '18px',\n border: '1px solid #888888',\n boxShadow: 'inset 0 1px 1px rgba(0,0,0,.1), 0 1px 0 0 #ECECEC',\n marginBottom: '5px',\n fontSize: '13px',\n paddingLeft: '3px',\n marginRight: '10px'\n },\n RGBlabel: {\n left: '0px',\n top: '0px',\n width: '34px',\n textTransform: 'uppercase',\n fontSize: '13px',\n height: '18px',\n lineHeight: '22px',\n position: 'absolute'\n },\n HEXwrap: {\n position: 'relative'\n },\n HEXinput: {\n marginLeft: '20%',\n width: '80%',\n height: '18px',\n border: '1px solid #888888',\n boxShadow: 'inset 0 1px 1px rgba(0,0,0,.1), 0 1px 0 0 #ECECEC',\n marginBottom: '6px',\n fontSize: '13px',\n paddingLeft: '3px'\n },\n HEXlabel: {\n position: 'absolute',\n top: '0px',\n left: '0px',\n width: '14px',\n textTransform: 'uppercase',\n fontSize: '13px',\n height: '18px',\n lineHeight: '22px'\n },\n fieldSymbols: {\n position: 'absolute',\n top: '5px',\n right: '-7px',\n fontSize: '13px'\n },\n symbol: {\n height: '20px',\n lineHeight: '22px',\n paddingBottom: '7px'\n }\n }\n });\n\n var handleChange = function handleChange(data, e) {\n if (data['#']) {\n color.isValidHex(data['#']) && onChange({\n hex: data['#'],\n source: 'hex'\n }, e);\n } else if (data.r || data.g || data.b) {\n onChange({\n r: data.r || rgb.r,\n g: data.g || rgb.g,\n b: data.b || rgb.b,\n source: 'rgb'\n }, e);\n } else if (data.h || data.s || data.v) {\n onChange({\n h: data.h || hsv.h,\n s: data.s || hsv.s,\n v: data.v || hsv.v,\n source: 'hsv'\n }, e);\n }\n };\n\n return _react2.default.createElement(\n 'div',\n { style: styles.fields },\n _react2.default.createElement(_common.EditableInput, {\n style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n label: 'h',\n value: Math.round(hsv.h),\n onChange: handleChange\n }),\n _react2.default.createElement(_common.EditableInput, {\n style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n label: 's',\n value: Math.round(hsv.s * 100),\n onChange: handleChange\n }),\n _react2.default.createElement(_common.EditableInput, {\n style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n label: 'v',\n value: Math.round(hsv.v * 100),\n onChange: handleChange\n }),\n _react2.default.createElement('div', { style: styles.divider }),\n _react2.default.createElement(_common.EditableInput, {\n style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n label: 'r',\n value: rgb.r,\n onChange: handleChange\n }),\n _react2.default.createElement(_common.EditableInput, {\n style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n label: 'g',\n value: rgb.g,\n onChange: handleChange\n }),\n _react2.default.createElement(_common.EditableInput, {\n style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n label: 'b',\n value: rgb.b,\n onChange: handleChange\n }),\n _react2.default.createElement('div', { style: styles.divider }),\n _react2.default.createElement(_common.EditableInput, {\n style: { wrap: styles.HEXwrap, input: styles.HEXinput, label: styles.HEXlabel },\n label: '#',\n value: hex.replace('#', ''),\n onChange: handleChange\n }),\n _react2.default.createElement(\n 'div',\n { style: styles.fieldSymbols },\n _react2.default.createElement(\n 'div',\n { style: styles.symbol },\n '\\xB0'\n ),\n _react2.default.createElement(\n 'div',\n { style: styles.symbol },\n '%'\n ),\n _react2.default.createElement(\n 'div',\n { style: styles.symbol },\n '%'\n )\n )\n );\n};\n\nexports.default = PhotoshopPicker;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PhotoshopPointerCircle = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactcss = require('reactcss');\n\nvar _reactcss2 = _interopRequireDefault(_reactcss);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar PhotoshopPointerCircle = exports.PhotoshopPointerCircle = function PhotoshopPointerCircle() {\n var styles = (0, _reactcss2.default)({\n 'default': {\n triangle: {\n width: 0,\n height: 0,\n borderStyle: 'solid',\n borderWidth: '4px 0 4px 6px',\n borderColor: 'transparent transparent transparent #fff',\n position: 'absolute',\n top: '1px',\n left: '1px'\n },\n triangleBorder: {\n width: 0,\n height: 0,\n borderStyle: 'solid',\n borderWidth: '5px 0 5px 8px',\n borderColor: 'transparent transparent transparent #555'\n },\n\n left: {\n Extend: 'triangleBorder',\n transform: 'translate(-13px, -4px)'\n },\n leftInside: {\n Extend: 'triangle',\n transform: 'translate(-8px, -5px)'\n },\n\n right: {\n Extend: 'triangleBorder',\n transform: 'translate(20px, -14px) rotate(180deg)'\n },\n rightInside: {\n Extend: 'triangle',\n transform: 'translate(-8px, -5px)'\n }\n }\n });\n\n return _react2.default.createElement(\n 'div',\n { style: styles.pointer },\n _react2.default.createElement(\n 'div',\n { style: styles.left },\n _react2.default.createElement('div', { style: styles.leftInside })\n ),\n _react2.default.createElement(\n 'div',\n { style: styles.right },\n _react2.default.createElement('div', { style: styles.rightInside })\n )\n );\n};\n\nexports.default = PhotoshopPointerCircle;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PhotoshopPointerCircle = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactcss = require('reactcss');\n\nvar _reactcss2 = _interopRequireDefault(_reactcss);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar PhotoshopPointerCircle = exports.PhotoshopPointerCircle = function PhotoshopPointerCircle(_ref) {\n var hsl = _ref.hsl;\n\n var styles = (0, _reactcss2.default)({\n 'default': {\n picker: {\n width: '12px',\n height: '12px',\n borderRadius: '6px',\n boxShadow: 'inset 0 0 0 1px #fff',\n transform: 'translate(-6px, -6px)'\n }\n },\n 'black-outline': {\n picker: {\n boxShadow: 'inset 0 0 0 1px #000'\n }\n }\n }, { 'black-outline': hsl.l > 0.5 });\n\n return _react2.default.createElement('div', { style: styles.picker });\n};\n\nexports.default = PhotoshopPointerCircle;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PhotoshopPreviews = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactcss = require('reactcss');\n\nvar _reactcss2 = _interopRequireDefault(_reactcss);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar PhotoshopPreviews = exports.PhotoshopPreviews = function PhotoshopPreviews(_ref) {\n var rgb = _ref.rgb,\n currentColor = _ref.currentColor;\n\n var styles = (0, _reactcss2.default)({\n 'default': {\n swatches: {\n border: '1px solid #B3B3B3',\n borderBottom: '1px solid #F0F0F0',\n marginBottom: '2px',\n marginTop: '1px'\n },\n new: {\n height: '34px',\n background: 'rgb(' + rgb.r + ',' + rgb.g + ', ' + rgb.b + ')',\n boxShadow: 'inset 1px 0 0 #000, inset -1px 0 0 #000, inset 0 1px 0 #000'\n },\n current: {\n height: '34px',\n background: currentColor,\n boxShadow: 'inset 1px 0 0 #000, inset -1px 0 0 #000, inset 0 -1px 0 #000'\n },\n label: {\n fontSize: '14px',\n color: '#000',\n textAlign: 'center'\n }\n }\n });\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { style: styles.label },\n 'new'\n ),\n _react2.default.createElement(\n 'div',\n { style: styles.swatches },\n _react2.default.createElement('div', { style: styles.new }),\n _react2.default.createElement('div', { style: styles.current })\n ),\n _react2.default.createElement(\n 'div',\n { style: styles.label },\n 'current'\n )\n );\n};\n\nexports.default = PhotoshopPreviews;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Sketch = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactcss = require('reactcss');\n\nvar _reactcss2 = _interopRequireDefault(_reactcss);\n\nvar _merge = require('lodash/merge');\n\nvar _merge2 = _interopRequireDefault(_merge);\n\nvar _common = require('../common');\n\nvar _SketchFields = require('./SketchFields');\n\nvar _SketchFields2 = _interopRequireDefault(_SketchFields);\n\nvar _SketchPresetColors = require('./SketchPresetColors');\n\nvar _SketchPresetColors2 = _interopRequireDefault(_SketchPresetColors);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Sketch = exports.Sketch = function Sketch(_ref) {\n var width = _ref.width,\n rgb = _ref.rgb,\n hex = _ref.hex,\n hsv = _ref.hsv,\n hsl = _ref.hsl,\n onChange = _ref.onChange,\n onSwatchHover = _ref.onSwatchHover,\n disableAlpha = _ref.disableAlpha,\n presetColors = _ref.presetColors,\n renderers = _ref.renderers,\n _ref$styles = _ref.styles,\n passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n _ref$className = _ref.className,\n className = _ref$className === undefined ? '' : _ref$className;\n\n var styles = (0, _reactcss2.default)((0, _merge2.default)({\n 'default': _extends({\n picker: {\n width: width,\n padding: '10px 10px 0',\n boxSizing: 'initial',\n background: '#fff',\n borderRadius: '4px',\n boxShadow: '0 0 0 1px rgba(0,0,0,.15), 0 8px 16px rgba(0,0,0,.15)'\n },\n saturation: {\n width: '100%',\n paddingBottom: '75%',\n position: 'relative',\n overflow: 'hidden'\n },\n Saturation: {\n radius: '3px',\n shadow: 'inset 0 0 0 1px rgba(0,0,0,.15), inset 0 0 4px rgba(0,0,0,.25)'\n },\n controls: {\n display: 'flex'\n },\n sliders: {\n padding: '4px 0',\n flex: '1'\n },\n color: {\n width: '24px',\n height: '24px',\n position: 'relative',\n marginTop: '4px',\n marginLeft: '4px',\n borderRadius: '3px'\n },\n activeColor: {\n absolute: '0px 0px 0px 0px',\n borderRadius: '2px',\n background: 'rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ',' + rgb.a + ')',\n boxShadow: 'inset 0 0 0 1px rgba(0,0,0,.15), inset 0 0 4px rgba(0,0,0,.25)'\n },\n hue: {\n position: 'relative',\n height: '10px',\n overflow: 'hidden'\n },\n Hue: {\n radius: '2px',\n shadow: 'inset 0 0 0 1px rgba(0,0,0,.15), inset 0 0 4px rgba(0,0,0,.25)'\n },\n\n alpha: {\n position: 'relative',\n height: '10px',\n marginTop: '4px',\n overflow: 'hidden'\n },\n Alpha: {\n radius: '2px',\n shadow: 'inset 0 0 0 1px rgba(0,0,0,.15), inset 0 0 4px rgba(0,0,0,.25)'\n }\n }, passedStyles),\n 'disableAlpha': {\n color: {\n height: '10px'\n },\n hue: {\n height: '10px'\n },\n alpha: {\n display: 'none'\n }\n }\n }, passedStyles), { disableAlpha: disableAlpha });\n\n return _react2.default.createElement(\n 'div',\n { style: styles.picker, className: 'sketch-picker ' + className },\n _react2.default.createElement(\n 'div',\n { style: styles.saturation },\n _react2.default.createElement(_common.Saturation, {\n style: styles.Saturation,\n hsl: hsl,\n hsv: hsv,\n onChange: onChange\n })\n ),\n _react2.default.createElement(\n 'div',\n { style: styles.controls, className: 'flexbox-fix' },\n _react2.default.createElement(\n 'div',\n { style: styles.sliders },\n _react2.default.createElement(\n 'div',\n { style: styles.hue },\n _react2.default.createElement(_common.Hue, {\n style: styles.Hue,\n hsl: hsl,\n onChange: onChange\n })\n ),\n _react2.default.createElement(\n 'div',\n { style: styles.alpha },\n _react2.default.createElement(_common.Alpha, {\n style: styles.Alpha,\n rgb: rgb,\n hsl: hsl,\n renderers: renderers,\n onChange: onChange\n })\n )\n ),\n _react2.default.createElement(\n 'div',\n { style: styles.color },\n _react2.default.createElement(_common.Checkboard, null),\n _react2.default.createElement('div', { style: styles.activeColor })\n )\n ),\n _react2.default.createElement(_SketchFields2.default, {\n rgb: rgb,\n hsl: hsl,\n hex: hex,\n onChange: onChange,\n disableAlpha: disableAlpha\n }),\n _react2.default.createElement(_SketchPresetColors2.default, {\n colors: presetColors,\n onClick: onChange,\n onSwatchHover: onSwatchHover\n })\n );\n};\n\nSketch.propTypes = {\n disableAlpha: _propTypes2.default.bool,\n width: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]),\n styles: _propTypes2.default.object\n};\n\nSketch.defaultProps = {\n disableAlpha: false,\n width: 200,\n styles: {},\n presetColors: ['#D0021B', '#F5A623', '#F8E71C', '#8B572A', '#7ED321', '#417505', '#BD10E0', '#9013FE', '#4A90E2', '#50E3C2', '#B8E986', '#000000', '#4A4A4A', '#9B9B9B', '#FFFFFF']\n};\n\nexports.default = (0, _common.ColorWrap)(Sketch);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SketchFields = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactcss = require('reactcss');\n\nvar _reactcss2 = _interopRequireDefault(_reactcss);\n\nvar _color = require('../../helpers/color');\n\nvar color = _interopRequireWildcard(_color);\n\nvar _common = require('../common');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* eslint-disable no-param-reassign */\n\nvar SketchFields = exports.SketchFields = function SketchFields(_ref) {\n var onChange = _ref.onChange,\n rgb = _ref.rgb,\n hsl = _ref.hsl,\n hex = _ref.hex,\n disableAlpha = _ref.disableAlpha;\n\n var styles = (0, _reactcss2.default)({\n 'default': {\n fields: {\n display: 'flex',\n paddingTop: '4px'\n },\n single: {\n flex: '1',\n paddingLeft: '6px'\n },\n alpha: {\n flex: '1',\n paddingLeft: '6px'\n },\n double: {\n flex: '2'\n },\n input: {\n width: '80%',\n padding: '4px 10% 3px',\n border: 'none',\n boxShadow: 'inset 0 0 0 1px #ccc',\n fontSize: '11px'\n },\n label: {\n display: 'block',\n textAlign: 'center',\n fontSize: '11px',\n color: '#222',\n paddingTop: '3px',\n paddingBottom: '4px',\n textTransform: 'capitalize'\n }\n },\n 'disableAlpha': {\n alpha: {\n display: 'none'\n }\n }\n }, { disableAlpha: disableAlpha });\n\n var handleChange = function handleChange(data, e) {\n if (data.hex) {\n color.isValidHex(data.hex) && onChange({\n hex: data.hex,\n source: 'hex'\n }, e);\n } else if (data.r || data.g || data.b) {\n onChange({\n r: data.r || rgb.r,\n g: data.g || rgb.g,\n b: data.b || rgb.b,\n a: rgb.a,\n source: 'rgb'\n }, e);\n } else if (data.a) {\n if (data.a < 0) {\n data.a = 0;\n } else if (data.a > 100) {\n data.a = 100;\n }\n\n data.a /= 100;\n onChange({\n h: hsl.h,\n s: hsl.s,\n l: hsl.l,\n a: data.a,\n source: 'rgb'\n }, e);\n }\n };\n\n return _react2.default.createElement(\n 'div',\n { style: styles.fields, className: 'flexbox-fix' },\n _react2.default.createElement(\n 'div',\n { style: styles.double },\n _react2.default.createElement(_common.EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'hex',\n value: hex.replace('#', ''),\n onChange: handleChange\n })\n ),\n _react2.default.createElement(\n 'div',\n { style: styles.single },\n _react2.default.createElement(_common.EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'r',\n value: rgb.r,\n onChange: handleChange,\n dragLabel: 'true',\n dragMax: '255'\n })\n ),\n _react2.default.createElement(\n 'div',\n { style: styles.single },\n _react2.default.createElement(_common.EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'g',\n value: rgb.g,\n onChange: handleChange,\n dragLabel: 'true',\n dragMax: '255'\n })\n ),\n _react2.default.createElement(\n 'div',\n { style: styles.single },\n _react2.default.createElement(_common.EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'b',\n value: rgb.b,\n onChange: handleChange,\n dragLabel: 'true',\n dragMax: '255'\n })\n ),\n _react2.default.createElement(\n 'div',\n { style: styles.alpha },\n _react2.default.createElement(_common.EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'a',\n value: Math.round(rgb.a * 100),\n onChange: handleChange,\n dragLabel: 'true',\n dragMax: '100'\n })\n )\n );\n};\n\nexports.default = SketchFields;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SketchPresetColors = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactcss = require('reactcss');\n\nvar _reactcss2 = _interopRequireDefault(_reactcss);\n\nvar _common = require('../common');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar SketchPresetColors = exports.SketchPresetColors = function SketchPresetColors(_ref) {\n var colors = _ref.colors,\n _ref$onClick = _ref.onClick,\n onClick = _ref$onClick === undefined ? function () {} : _ref$onClick,\n onSwatchHover = _ref.onSwatchHover;\n\n var styles = (0, _reactcss2.default)({\n 'default': {\n colors: {\n margin: '0 -10px',\n padding: '10px 0 0 10px',\n borderTop: '1px solid #eee',\n display: 'flex',\n flexWrap: 'wrap',\n position: 'relative'\n },\n swatchWrap: {\n width: '16px',\n height: '16px',\n margin: '0 10px 10px 0'\n },\n swatch: {\n borderRadius: '3px',\n boxShadow: 'inset 0 0 0 1px rgba(0,0,0,.15)'\n }\n },\n 'no-presets': {\n colors: {\n display: 'none'\n }\n }\n }, {\n 'no-presets': !colors || !colors.length\n });\n\n var handleClick = function handleClick(hex, e) {\n onClick({\n hex: hex,\n source: 'hex'\n }, e);\n };\n\n return _react2.default.createElement(\n 'div',\n { style: styles.colors, className: 'flexbox-fix' },\n colors.map(function (colorObjOrString) {\n var c = typeof colorObjOrString === 'string' ? { color: colorObjOrString } : colorObjOrString;\n var key = '' + c.color + (c.title || '');\n return _react2.default.createElement(\n 'div',\n { key: key, style: styles.swatchWrap },\n _react2.default.createElement(_common.Swatch, _extends({}, c, {\n style: styles.swatch,\n onClick: handleClick,\n onHover: onSwatchHover,\n focusStyle: {\n boxShadow: 'inset 0 0 0 1px rgba(0,0,0,.15), 0 0 4px ' + c.color\n }\n }))\n );\n })\n );\n};\n\nSketchPresetColors.propTypes = {\n colors: _propTypes2.default.arrayOf(_propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.shape({\n color: _propTypes2.default.string,\n title: _propTypes2.default.string\n })])).isRequired\n};\n\nexports.default = SketchPresetColors;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Slider = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactcss = require('reactcss');\n\nvar _reactcss2 = _interopRequireDefault(_reactcss);\n\nvar _merge = require('lodash/merge');\n\nvar _merge2 = _interopRequireDefault(_merge);\n\nvar _common = require('../common');\n\nvar _SliderSwatches = require('./SliderSwatches');\n\nvar _SliderSwatches2 = _interopRequireDefault(_SliderSwatches);\n\nvar _SliderPointer = require('./SliderPointer');\n\nvar _SliderPointer2 = _interopRequireDefault(_SliderPointer);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Slider = exports.Slider = function Slider(_ref) {\n var hsl = _ref.hsl,\n onChange = _ref.onChange,\n pointer = _ref.pointer,\n _ref$styles = _ref.styles,\n passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n _ref$className = _ref.className,\n className = _ref$className === undefined ? '' : _ref$className;\n\n var styles = (0, _reactcss2.default)((0, _merge2.default)({\n 'default': {\n hue: {\n height: '12px',\n position: 'relative'\n },\n Hue: {\n radius: '2px'\n }\n }\n }, passedStyles));\n\n return _react2.default.createElement(\n 'div',\n { style: styles.wrap || {}, className: 'slider-picker ' + className },\n _react2.default.createElement(\n 'div',\n { style: styles.hue },\n _react2.default.createElement(_common.Hue, {\n style: styles.Hue,\n hsl: hsl,\n pointer: pointer,\n onChange: onChange\n })\n ),\n _react2.default.createElement(\n 'div',\n { style: styles.swatches },\n _react2.default.createElement(_SliderSwatches2.default, { hsl: hsl, onClick: onChange })\n )\n );\n};\n\nSlider.propTypes = {\n styles: _propTypes2.default.object\n};\nSlider.defaultProps = {\n pointer: _SliderPointer2.default,\n styles: {}\n};\n\nexports.default = (0, _common.ColorWrap)(Slider);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SliderPointer = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactcss = require('reactcss');\n\nvar _reactcss2 = _interopRequireDefault(_reactcss);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar SliderPointer = exports.SliderPointer = function SliderPointer() {\n var styles = (0, _reactcss2.default)({\n 'default': {\n picker: {\n width: '14px',\n height: '14px',\n borderRadius: '6px',\n transform: 'translate(-7px, -1px)',\n backgroundColor: 'rgb(248, 248, 248)',\n boxShadow: '0 1px 4px 0 rgba(0, 0, 0, 0.37)'\n }\n }\n });\n\n return _react2.default.createElement('div', { style: styles.picker });\n};\n\nexports.default = SliderPointer;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SliderSwatch = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactcss = require('reactcss');\n\nvar _reactcss2 = _interopRequireDefault(_reactcss);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar SliderSwatch = exports.SliderSwatch = function SliderSwatch(_ref) {\n var hsl = _ref.hsl,\n offset = _ref.offset,\n _ref$onClick = _ref.onClick,\n onClick = _ref$onClick === undefined ? function () {} : _ref$onClick,\n active = _ref.active,\n first = _ref.first,\n last = _ref.last;\n\n var styles = (0, _reactcss2.default)({\n 'default': {\n swatch: {\n height: '12px',\n background: 'hsl(' + hsl.h + ', 50%, ' + offset * 100 + '%)',\n cursor: 'pointer'\n }\n },\n 'first': {\n swatch: {\n borderRadius: '2px 0 0 2px'\n }\n },\n 'last': {\n swatch: {\n borderRadius: '0 2px 2px 0'\n }\n },\n 'active': {\n swatch: {\n transform: 'scaleY(1.8)',\n borderRadius: '3.6px/2px'\n }\n }\n }, { active: active, first: first, last: last });\n\n var handleClick = function handleClick(e) {\n return onClick({\n h: hsl.h,\n s: 0.5,\n l: offset,\n source: 'hsl'\n }, e);\n };\n\n return _react2.default.createElement('div', { style: styles.swatch, onClick: handleClick });\n};\n\nexports.default = SliderSwatch;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SliderSwatches = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactcss = require('reactcss');\n\nvar _reactcss2 = _interopRequireDefault(_reactcss);\n\nvar _SliderSwatch = require('./SliderSwatch');\n\nvar _SliderSwatch2 = _interopRequireDefault(_SliderSwatch);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar SliderSwatches = exports.SliderSwatches = function SliderSwatches(_ref) {\n var onClick = _ref.onClick,\n hsl = _ref.hsl;\n\n var styles = (0, _reactcss2.default)({\n 'default': {\n swatches: {\n marginTop: '20px'\n },\n swatch: {\n boxSizing: 'border-box',\n width: '20%',\n paddingRight: '1px',\n float: 'left'\n },\n clear: {\n clear: 'both'\n }\n }\n });\n\n // Acceptible difference in floating point equality\n var epsilon = 0.1;\n\n return _react2.default.createElement(\n 'div',\n { style: styles.swatches },\n _react2.default.createElement(\n 'div',\n { style: styles.swatch },\n _react2.default.createElement(_SliderSwatch2.default, {\n hsl: hsl,\n offset: '.80',\n active: Math.abs(hsl.l - 0.80) < epsilon && Math.abs(hsl.s - 0.50) < epsilon,\n onClick: onClick,\n first: true\n })\n ),\n _react2.default.createElement(\n 'div',\n { style: styles.swatch },\n _react2.default.createElement(_SliderSwatch2.default, {\n hsl: hsl,\n offset: '.65',\n active: Math.abs(hsl.l - 0.65) < epsilon && Math.abs(hsl.s - 0.50) < epsilon,\n onClick: onClick\n })\n ),\n _react2.default.createElement(\n 'div',\n { style: styles.swatch },\n _react2.default.createElement(_SliderSwatch2.default, {\n hsl: hsl,\n offset: '.50',\n active: Math.abs(hsl.l - 0.50) < epsilon && Math.abs(hsl.s - 0.50) < epsilon,\n onClick: onClick\n })\n ),\n _react2.default.createElement(\n 'div',\n { style: styles.swatch },\n _react2.default.createElement(_SliderSwatch2.default, {\n hsl: hsl,\n offset: '.35',\n active: Math.abs(hsl.l - 0.35) < epsilon && Math.abs(hsl.s - 0.50) < epsilon,\n onClick: onClick\n })\n ),\n _react2.default.createElement(\n 'div',\n { style: styles.swatch },\n _react2.default.createElement(_SliderSwatch2.default, {\n hsl: hsl,\n offset: '.20',\n active: Math.abs(hsl.l - 0.20) < epsilon && Math.abs(hsl.s - 0.50) < epsilon,\n onClick: onClick,\n last: true\n })\n ),\n _react2.default.createElement('div', { style: styles.clear })\n );\n};\n\nexports.default = SliderSwatches;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Swatches = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactcss = require('reactcss');\n\nvar _reactcss2 = _interopRequireDefault(_reactcss);\n\nvar _map = require('lodash/map');\n\nvar _map2 = _interopRequireDefault(_map);\n\nvar _merge = require('lodash/merge');\n\nvar _merge2 = _interopRequireDefault(_merge);\n\nvar _materialColors = require('material-colors');\n\nvar material = _interopRequireWildcard(_materialColors);\n\nvar _common = require('../common');\n\nvar _SwatchesGroup = require('./SwatchesGroup');\n\nvar _SwatchesGroup2 = _interopRequireDefault(_SwatchesGroup);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Swatches = exports.Swatches = function Swatches(_ref) {\n var width = _ref.width,\n height = _ref.height,\n onChange = _ref.onChange,\n onSwatchHover = _ref.onSwatchHover,\n colors = _ref.colors,\n hex = _ref.hex,\n _ref$styles = _ref.styles,\n passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n _ref$className = _ref.className,\n className = _ref$className === undefined ? '' : _ref$className;\n\n var styles = (0, _reactcss2.default)((0, _merge2.default)({\n 'default': {\n picker: {\n width: width,\n height: height\n },\n overflow: {\n height: height,\n overflowY: 'scroll'\n },\n body: {\n padding: '16px 0 6px 16px'\n },\n clear: {\n clear: 'both'\n }\n }\n }, passedStyles));\n\n var handleChange = function handleChange(data, e) {\n return onChange({ hex: data, source: 'hex' }, e);\n };\n\n return _react2.default.createElement(\n 'div',\n { style: styles.picker, className: 'swatches-picker ' + className },\n _react2.default.createElement(\n _common.Raised,\n null,\n _react2.default.createElement(\n 'div',\n { style: styles.overflow },\n _react2.default.createElement(\n 'div',\n { style: styles.body },\n (0, _map2.default)(colors, function (group) {\n return _react2.default.createElement(_SwatchesGroup2.default, {\n key: group.toString(),\n group: group,\n active: hex,\n onClick: handleChange,\n onSwatchHover: onSwatchHover\n });\n }),\n _react2.default.createElement('div', { style: styles.clear })\n )\n )\n )\n );\n};\n\nSwatches.propTypes = {\n width: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]),\n height: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]),\n colors: _propTypes2.default.arrayOf(_propTypes2.default.arrayOf(_propTypes2.default.string)),\n styles: _propTypes2.default.object\n\n /* eslint-disable max-len */\n};Swatches.defaultProps = {\n width: 320,\n height: 240,\n colors: [[material.red['900'], material.red['700'], material.red['500'], material.red['300'], material.red['100']], [material.pink['900'], material.pink['700'], material.pink['500'], material.pink['300'], material.pink['100']], [material.purple['900'], material.purple['700'], material.purple['500'], material.purple['300'], material.purple['100']], [material.deepPurple['900'], material.deepPurple['700'], material.deepPurple['500'], material.deepPurple['300'], material.deepPurple['100']], [material.indigo['900'], material.indigo['700'], material.indigo['500'], material.indigo['300'], material.indigo['100']], [material.blue['900'], material.blue['700'], material.blue['500'], material.blue['300'], material.blue['100']], [material.lightBlue['900'], material.lightBlue['700'], material.lightBlue['500'], material.lightBlue['300'], material.lightBlue['100']], [material.cyan['900'], material.cyan['700'], material.cyan['500'], material.cyan['300'], material.cyan['100']], [material.teal['900'], material.teal['700'], material.teal['500'], material.teal['300'], material.teal['100']], ['#194D33', material.green['700'], material.green['500'], material.green['300'], material.green['100']], [material.lightGreen['900'], material.lightGreen['700'], material.lightGreen['500'], material.lightGreen['300'], material.lightGreen['100']], [material.lime['900'], material.lime['700'], material.lime['500'], material.lime['300'], material.lime['100']], [material.yellow['900'], material.yellow['700'], material.yellow['500'], material.yellow['300'], material.yellow['100']], [material.amber['900'], material.amber['700'], material.amber['500'], material.amber['300'], material.amber['100']], [material.orange['900'], material.orange['700'], material.orange['500'], material.orange['300'], material.orange['100']], [material.deepOrange['900'], material.deepOrange['700'], material.deepOrange['500'], material.deepOrange['300'], material.deepOrange['100']], [material.brown['900'], material.brown['700'], material.brown['500'], material.brown['300'], material.brown['100']], [material.blueGrey['900'], material.blueGrey['700'], material.blueGrey['500'], material.blueGrey['300'], material.blueGrey['100']], ['#000000', '#525252', '#969696', '#D9D9D9', '#FFFFFF']],\n styles: {}\n};\n\nexports.default = (0, _common.ColorWrap)(Swatches);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SwatchesColor = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactcss = require('reactcss');\n\nvar _reactcss2 = _interopRequireDefault(_reactcss);\n\nvar _color = require('../../helpers/color');\n\nvar colorUtils = _interopRequireWildcard(_color);\n\nvar _common = require('../common');\n\nvar _CheckIcon = require('@icons/material/CheckIcon');\n\nvar _CheckIcon2 = _interopRequireDefault(_CheckIcon);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar SwatchesColor = exports.SwatchesColor = function SwatchesColor(_ref) {\n var color = _ref.color,\n _ref$onClick = _ref.onClick,\n onClick = _ref$onClick === undefined ? function () {} : _ref$onClick,\n onSwatchHover = _ref.onSwatchHover,\n first = _ref.first,\n last = _ref.last,\n active = _ref.active;\n\n var styles = (0, _reactcss2.default)({\n 'default': {\n color: {\n width: '40px',\n height: '24px',\n cursor: 'pointer',\n background: color,\n marginBottom: '1px'\n },\n check: {\n color: colorUtils.getContrastingColor(color),\n marginLeft: '8px',\n display: 'none'\n }\n },\n 'first': {\n color: {\n overflow: 'hidden',\n borderRadius: '2px 2px 0 0'\n }\n },\n 'last': {\n color: {\n overflow: 'hidden',\n borderRadius: '0 0 2px 2px'\n }\n },\n 'active': {\n check: {\n display: 'block'\n }\n },\n 'color-#FFFFFF': {\n color: {\n boxShadow: 'inset 0 0 0 1px #ddd'\n },\n check: {\n color: '#333'\n }\n },\n 'transparent': {\n check: {\n color: '#333'\n }\n }\n }, {\n first: first,\n last: last,\n active: active,\n 'color-#FFFFFF': color === '#FFFFFF',\n 'transparent': color === 'transparent'\n });\n\n return _react2.default.createElement(\n _common.Swatch,\n {\n color: color,\n style: styles.color,\n onClick: onClick,\n onHover: onSwatchHover,\n focusStyle: { boxShadow: '0 0 4px ' + color }\n },\n _react2.default.createElement(\n 'div',\n { style: styles.check },\n _react2.default.createElement(_CheckIcon2.default, null)\n )\n );\n};\n\nexports.default = SwatchesColor;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SwatchesGroup = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactcss = require('reactcss');\n\nvar _reactcss2 = _interopRequireDefault(_reactcss);\n\nvar _map = require('lodash/map');\n\nvar _map2 = _interopRequireDefault(_map);\n\nvar _SwatchesColor = require('./SwatchesColor');\n\nvar _SwatchesColor2 = _interopRequireDefault(_SwatchesColor);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar SwatchesGroup = exports.SwatchesGroup = function SwatchesGroup(_ref) {\n var onClick = _ref.onClick,\n onSwatchHover = _ref.onSwatchHover,\n group = _ref.group,\n active = _ref.active;\n\n var styles = (0, _reactcss2.default)({\n 'default': {\n group: {\n paddingBottom: '10px',\n width: '40px',\n float: 'left',\n marginRight: '10px'\n }\n }\n });\n\n return _react2.default.createElement(\n 'div',\n { style: styles.group },\n (0, _map2.default)(group, function (color, i) {\n return _react2.default.createElement(_SwatchesColor2.default, {\n key: color,\n color: color,\n active: color.toLowerCase() === active,\n first: i === 0,\n last: i === group.length - 1,\n onClick: onClick,\n onSwatchHover: onSwatchHover\n });\n })\n );\n};\n\nexports.default = SwatchesGroup;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Twitter = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactcss = require('reactcss');\n\nvar _reactcss2 = _interopRequireDefault(_reactcss);\n\nvar _map = require('lodash/map');\n\nvar _map2 = _interopRequireDefault(_map);\n\nvar _merge = require('lodash/merge');\n\nvar _merge2 = _interopRequireDefault(_merge);\n\nvar _color = require('../../helpers/color');\n\nvar color = _interopRequireWildcard(_color);\n\nvar _common = require('../common');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Twitter = exports.Twitter = function Twitter(_ref) {\n var onChange = _ref.onChange,\n onSwatchHover = _ref.onSwatchHover,\n hex = _ref.hex,\n colors = _ref.colors,\n width = _ref.width,\n triangle = _ref.triangle,\n _ref$styles = _ref.styles,\n passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n _ref$className = _ref.className,\n className = _ref$className === undefined ? '' : _ref$className;\n\n var styles = (0, _reactcss2.default)((0, _merge2.default)({\n 'default': {\n card: {\n width: width,\n background: '#fff',\n border: '0 solid rgba(0,0,0,0.25)',\n boxShadow: '0 1px 4px rgba(0,0,0,0.25)',\n borderRadius: '4px',\n position: 'relative'\n },\n body: {\n padding: '15px 9px 9px 15px'\n },\n label: {\n fontSize: '18px',\n color: '#fff'\n },\n triangle: {\n width: '0px',\n height: '0px',\n borderStyle: 'solid',\n borderWidth: '0 9px 10px 9px',\n borderColor: 'transparent transparent #fff transparent',\n position: 'absolute'\n },\n triangleShadow: {\n width: '0px',\n height: '0px',\n borderStyle: 'solid',\n borderWidth: '0 9px 10px 9px',\n borderColor: 'transparent transparent rgba(0,0,0,.1) transparent',\n position: 'absolute'\n },\n hash: {\n background: '#F0F0F0',\n height: '30px',\n width: '30px',\n borderRadius: '4px 0 0 4px',\n float: 'left',\n color: '#98A1A4',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n },\n input: {\n width: '100px',\n fontSize: '14px',\n color: '#666',\n border: '0px',\n outline: 'none',\n height: '28px',\n boxShadow: 'inset 0 0 0 1px #F0F0F0',\n boxSizing: 'content-box',\n borderRadius: '0 4px 4px 0',\n float: 'left',\n paddingLeft: '8px'\n },\n swatch: {\n width: '30px',\n height: '30px',\n float: 'left',\n borderRadius: '4px',\n margin: '0 6px 6px 0'\n },\n clear: {\n clear: 'both'\n }\n },\n 'hide-triangle': {\n triangle: {\n display: 'none'\n },\n triangleShadow: {\n display: 'none'\n }\n },\n 'top-left-triangle': {\n triangle: {\n top: '-10px',\n left: '12px'\n },\n triangleShadow: {\n top: '-11px',\n left: '12px'\n }\n },\n 'top-right-triangle': {\n triangle: {\n top: '-10px',\n right: '12px'\n },\n triangleShadow: {\n top: '-11px',\n right: '12px'\n }\n }\n }, passedStyles), {\n 'hide-triangle': triangle === 'hide',\n 'top-left-triangle': triangle === 'top-left',\n 'top-right-triangle': triangle === 'top-right'\n });\n\n var handleChange = function handleChange(hexcode, e) {\n color.isValidHex(hexcode) && onChange({\n hex: hexcode,\n source: 'hex'\n }, e);\n };\n\n return _react2.default.createElement(\n 'div',\n { style: styles.card, className: 'twitter-picker ' + className },\n _react2.default.createElement('div', { style: styles.triangleShadow }),\n _react2.default.createElement('div', { style: styles.triangle }),\n _react2.default.createElement(\n 'div',\n { style: styles.body },\n (0, _map2.default)(colors, function (c, i) {\n return _react2.default.createElement(_common.Swatch, {\n key: i,\n color: c,\n hex: c,\n style: styles.swatch,\n onClick: handleChange,\n onHover: onSwatchHover,\n focusStyle: {\n boxShadow: '0 0 4px ' + c\n }\n });\n }),\n _react2.default.createElement(\n 'div',\n { style: styles.hash },\n '#'\n ),\n _react2.default.createElement(_common.EditableInput, {\n label: null,\n style: { input: styles.input },\n value: hex.replace('#', ''),\n onChange: handleChange\n }),\n _react2.default.createElement('div', { style: styles.clear })\n )\n );\n};\n\nTwitter.propTypes = {\n width: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]),\n triangle: _propTypes2.default.oneOf(['hide', 'top-left', 'top-right']),\n colors: _propTypes2.default.arrayOf(_propTypes2.default.string),\n styles: _propTypes2.default.object\n};\n\nTwitter.defaultProps = {\n width: 276,\n colors: ['#FF6900', '#FCB900', '#7BDCB5', '#00D084', '#8ED1FC', '#0693E3', '#ABB8C3', '#EB144C', '#F78DA7', '#9900EF'],\n triangle: 'top-left',\n styles: {}\n};\n\nexports.default = (0, _common.ColorWrap)(Twitter);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar calculateChange = exports.calculateChange = function calculateChange(e, hsl, direction, initialA, container) {\n var containerWidth = container.clientWidth;\n var containerHeight = container.clientHeight;\n var x = typeof e.pageX === 'number' ? e.pageX : e.touches[0].pageX;\n var y = typeof e.pageY === 'number' ? e.pageY : e.touches[0].pageY;\n var left = x - (container.getBoundingClientRect().left + window.pageXOffset);\n var top = y - (container.getBoundingClientRect().top + window.pageYOffset);\n\n if (direction === 'vertical') {\n var a = void 0;\n if (top < 0) {\n a = 0;\n } else if (top > containerHeight) {\n a = 1;\n } else {\n a = Math.round(top * 100 / containerHeight) / 100;\n }\n\n if (hsl.a !== a) {\n return {\n h: hsl.h,\n s: hsl.s,\n l: hsl.l,\n a: a,\n source: 'rgb'\n };\n }\n } else {\n var _a = void 0;\n if (left < 0) {\n _a = 0;\n } else if (left > containerWidth) {\n _a = 1;\n } else {\n _a = Math.round(left * 100 / containerWidth) / 100;\n }\n\n if (initialA !== _a) {\n return {\n h: hsl.h,\n s: hsl.s,\n l: hsl.l,\n a: _a,\n source: 'rgb'\n };\n }\n }\n return null;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar checkboardCache = {};\n\nvar render = exports.render = function render(c1, c2, size, serverCanvas) {\n if (typeof document === 'undefined' && !serverCanvas) {\n return null;\n }\n var canvas = serverCanvas ? new serverCanvas() : document.createElement('canvas');\n canvas.width = size * 2;\n canvas.height = size * 2;\n var ctx = canvas.getContext('2d');\n if (!ctx) {\n return null;\n } // If no context can be found, return early.\n ctx.fillStyle = c1;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n ctx.fillStyle = c2;\n ctx.fillRect(0, 0, size, size);\n ctx.translate(size, size);\n ctx.fillRect(0, 0, size, size);\n return canvas.toDataURL();\n};\n\nvar get = exports.get = function get(c1, c2, size, serverCanvas) {\n var key = c1 + '-' + c2 + '-' + size + (serverCanvas ? '-server' : '');\n\n if (checkboardCache[key]) {\n return checkboardCache[key];\n }\n\n var checkboard = render(c1, c2, size, serverCanvas);\n checkboardCache[key] = checkboard;\n return checkboard;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isvalidColorString = exports.red = exports.getContrastingColor = exports.isValidHex = exports.toState = exports.simpleCheckForValidColor = undefined;\n\nvar _each = require('lodash/each');\n\nvar _each2 = _interopRequireDefault(_each);\n\nvar _tinycolor = require('tinycolor2');\n\nvar _tinycolor2 = _interopRequireDefault(_tinycolor);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar simpleCheckForValidColor = exports.simpleCheckForValidColor = function simpleCheckForValidColor(data) {\n var keysToCheck = ['r', 'g', 'b', 'a', 'h', 's', 'l', 'v'];\n var checked = 0;\n var passed = 0;\n (0, _each2.default)(keysToCheck, function (letter) {\n if (data[letter]) {\n checked += 1;\n if (!isNaN(data[letter])) {\n passed += 1;\n }\n if (letter === 's' || letter === 'l') {\n var percentPatt = /^\\d+%$/;\n if (percentPatt.test(data[letter])) {\n passed += 1;\n }\n }\n }\n });\n return checked === passed ? data : false;\n};\n\nvar toState = exports.toState = function toState(data, oldHue) {\n var color = data.hex ? (0, _tinycolor2.default)(data.hex) : (0, _tinycolor2.default)(data);\n var hsl = color.toHsl();\n var hsv = color.toHsv();\n var rgb = color.toRgb();\n var hex = color.toHex();\n if (hsl.s === 0) {\n hsl.h = oldHue || 0;\n hsv.h = oldHue || 0;\n }\n var transparent = hex === '000000' && rgb.a === 0;\n\n return {\n hsl: hsl,\n hex: transparent ? 'transparent' : '#' + hex,\n rgb: rgb,\n hsv: hsv,\n oldHue: data.h || oldHue || hsl.h,\n source: data.source\n };\n};\n\nvar isValidHex = exports.isValidHex = function isValidHex(hex) {\n if (hex === 'transparent') {\n return true;\n }\n // disable hex4 and hex8\n var lh = String(hex).charAt(0) === '#' ? 1 : 0;\n return hex.length !== 4 + lh && hex.length < 7 + lh && (0, _tinycolor2.default)(hex).isValid();\n};\n\nvar getContrastingColor = exports.getContrastingColor = function getContrastingColor(data) {\n if (!data) {\n return '#fff';\n }\n var col = toState(data);\n if (col.hex === 'transparent') {\n return 'rgba(0,0,0,0.4)';\n }\n var yiq = (col.rgb.r * 299 + col.rgb.g * 587 + col.rgb.b * 114) / 1000;\n return yiq >= 128 ? '#000' : '#fff';\n};\n\nvar red = exports.red = {\n hsl: { a: 1, h: 0, l: 0.5, s: 1 },\n hex: '#ff0000',\n rgb: { r: 255, g: 0, b: 0, a: 1 },\n hsv: { h: 0, s: 1, v: 1, a: 1 }\n};\n\nvar isvalidColorString = exports.isvalidColorString = function isvalidColorString(string, type) {\n var stringWithoutDegree = string.replace('°', '');\n return (0, _tinycolor2.default)(type + ' (' + stringWithoutDegree + ')')._ok;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar calculateChange = exports.calculateChange = function calculateChange(e, direction, hsl, container) {\n var containerWidth = container.clientWidth;\n var containerHeight = container.clientHeight;\n var x = typeof e.pageX === 'number' ? e.pageX : e.touches[0].pageX;\n var y = typeof e.pageY === 'number' ? e.pageY : e.touches[0].pageY;\n var left = x - (container.getBoundingClientRect().left + window.pageXOffset);\n var top = y - (container.getBoundingClientRect().top + window.pageYOffset);\n\n if (direction === 'vertical') {\n var h = void 0;\n if (top < 0) {\n h = 359;\n } else if (top > containerHeight) {\n h = 0;\n } else {\n var percent = -(top * 100 / containerHeight) + 100;\n h = 360 * percent / 100;\n }\n\n if (hsl.h !== h) {\n return {\n h: h,\n s: hsl.s,\n l: hsl.l,\n a: hsl.a,\n source: 'hsl'\n };\n }\n } else {\n var _h = void 0;\n if (left < 0) {\n _h = 0;\n } else if (left > containerWidth) {\n _h = 359;\n } else {\n var _percent = left * 100 / containerWidth;\n _h = 360 * _percent / 100;\n }\n\n if (hsl.h !== _h) {\n return {\n h: _h,\n s: hsl.s,\n l: hsl.l,\n a: hsl.a,\n source: 'hsl'\n };\n }\n }\n return null;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.handleFocus = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /* eslint-disable no-invalid-this */\n\n\nvar handleFocus = exports.handleFocus = function handleFocus(Component) {\n var Span = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'span';\n return function (_React$Component) {\n _inherits(Focus, _React$Component);\n\n function Focus() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Focus);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Focus.__proto__ || Object.getPrototypeOf(Focus)).call.apply(_ref, [this].concat(args))), _this), _this.state = { focus: false }, _this.handleFocus = function () {\n return _this.setState({ focus: true });\n }, _this.handleBlur = function () {\n return _this.setState({ focus: false });\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Focus, [{\n key: 'render',\n value: function render() {\n return _react2.default.createElement(\n Span,\n { onFocus: this.handleFocus, onBlur: this.handleBlur },\n _react2.default.createElement(Component, _extends({}, this.props, this.state))\n );\n }\n }]);\n\n return Focus;\n }(_react2.default.Component);\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar calculateChange = exports.calculateChange = function calculateChange(e, hsl, container) {\n var _container$getBoundin = container.getBoundingClientRect(),\n containerWidth = _container$getBoundin.width,\n containerHeight = _container$getBoundin.height;\n\n var x = typeof e.pageX === 'number' ? e.pageX : e.touches[0].pageX;\n var y = typeof e.pageY === 'number' ? e.pageY : e.touches[0].pageY;\n var left = x - (container.getBoundingClientRect().left + window.pageXOffset);\n var top = y - (container.getBoundingClientRect().top + window.pageYOffset);\n\n if (left < 0) {\n left = 0;\n } else if (left > containerWidth) {\n left = containerWidth;\n }\n\n if (top < 0) {\n top = 0;\n } else if (top > containerHeight) {\n top = containerHeight;\n }\n\n var saturation = left / containerWidth;\n var bright = 1 - top / containerHeight;\n\n return {\n h: hsl.h,\n s: saturation,\n v: bright,\n a: hsl.a,\n source: 'hsv'\n };\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CustomPicker = exports.GooglePicker = exports.TwitterPicker = exports.SwatchesPicker = exports.SliderPicker = exports.SketchPicker = exports.PhotoshopPicker = exports.MaterialPicker = exports.HuePicker = exports.GithubPicker = exports.CompactPicker = exports.ChromePicker = exports.default = exports.CirclePicker = exports.BlockPicker = exports.AlphaPicker = undefined;\n\nvar _Alpha = require('./components/alpha/Alpha');\n\nObject.defineProperty(exports, 'AlphaPicker', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Alpha).default;\n }\n});\n\nvar _Block = require('./components/block/Block');\n\nObject.defineProperty(exports, 'BlockPicker', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Block).default;\n }\n});\n\nvar _Circle = require('./components/circle/Circle');\n\nObject.defineProperty(exports, 'CirclePicker', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Circle).default;\n }\n});\n\nvar _Chrome = require('./components/chrome/Chrome');\n\nObject.defineProperty(exports, 'ChromePicker', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Chrome).default;\n }\n});\n\nvar _Compact = require('./components/compact/Compact');\n\nObject.defineProperty(exports, 'CompactPicker', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Compact).default;\n }\n});\n\nvar _Github = require('./components/github/Github');\n\nObject.defineProperty(exports, 'GithubPicker', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Github).default;\n }\n});\n\nvar _Hue = require('./components/hue/Hue');\n\nObject.defineProperty(exports, 'HuePicker', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Hue).default;\n }\n});\n\nvar _Material = require('./components/material/Material');\n\nObject.defineProperty(exports, 'MaterialPicker', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Material).default;\n }\n});\n\nvar _Photoshop = require('./components/photoshop/Photoshop');\n\nObject.defineProperty(exports, 'PhotoshopPicker', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Photoshop).default;\n }\n});\n\nvar _Sketch = require('./components/sketch/Sketch');\n\nObject.defineProperty(exports, 'SketchPicker', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Sketch).default;\n }\n});\n\nvar _Slider = require('./components/slider/Slider');\n\nObject.defineProperty(exports, 'SliderPicker', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Slider).default;\n }\n});\n\nvar _Swatches = require('./components/swatches/Swatches');\n\nObject.defineProperty(exports, 'SwatchesPicker', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Swatches).default;\n }\n});\n\nvar _Twitter = require('./components/twitter/Twitter');\n\nObject.defineProperty(exports, 'TwitterPicker', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Twitter).default;\n }\n});\n\nvar _Google = require('./components/google/Google');\n\nObject.defineProperty(exports, 'GooglePicker', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Google).default;\n }\n});\n\nvar _ColorWrap = require('./components/common/ColorWrap');\n\nObject.defineProperty(exports, 'CustomPicker', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_ColorWrap).default;\n }\n});\n\nvar _Chrome2 = _interopRequireDefault(_Chrome);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _Chrome2.default;","/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"prop-types\"),require(\"react\"),require(\"signature_pad\"),require(\"trim-canvas\")):\"function\"==typeof define&&define.amd?define([\"prop-types\",\"react\",\"signature_pad\",\"trim-canvas\"],t):\"object\"==typeof exports?exports.SignatureCanvas=t(require(\"prop-types\"),require(\"react\"),require(\"signature_pad\"),require(\"trim-canvas\")):e.SignatureCanvas=t(e[\"prop-types\"],e.react,e.signature_pad,e[\"trim-canvas\"])}(this,function(e,t,n,r){return function(e){function t(r){if(n[r])return n[r].exports;var a=n[r]={exports:{},id:r,loaded:!1};return e[r].call(a.exports,a,a.exports,t),a.loaded=!0,a.exports}var n={};return t.m=e,t.c=n,t.p=\"\",t(0)}([function(e,t,n){\"use strict\";function r(e){return e&&e.__esModule?e:{default:e}}function a(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function o(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function i(e,t){if(!e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!t||\"object\"!=typeof t&&\"function\"!=typeof t?e:t}function u(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,\"__esModule\",{value:!0});var s=Object.assign||function(e){for(var t=1;t 1 && arguments[1] !== undefined ? arguments[1] : 'span';\n\n return function (_React$Component) {\n _inherits(Active, _React$Component);\n\n function Active() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Active);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Active.__proto__ || Object.getPrototypeOf(Active)).call.apply(_ref, [this].concat(args))), _this), _this.state = { active: false }, _this.handleMouseDown = function () {\n return _this.setState({ active: true });\n }, _this.handleMouseUp = function () {\n return _this.setState({ active: false });\n }, _this.render = function () {\n return _react2.default.createElement(\n Span,\n { onMouseDown: _this.handleMouseDown, onMouseUp: _this.handleMouseUp },\n _react2.default.createElement(Component, _extends({}, _this.props, _this.state))\n );\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n return Active;\n }(_react2.default.Component);\n};\n\nexports.default = active;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.hover = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar hover = exports.hover = function hover(Component) {\n var Span = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'span';\n\n return function (_React$Component) {\n _inherits(Hover, _React$Component);\n\n function Hover() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Hover);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Hover.__proto__ || Object.getPrototypeOf(Hover)).call.apply(_ref, [this].concat(args))), _this), _this.state = { hover: false }, _this.handleMouseOver = function () {\n return _this.setState({ hover: true });\n }, _this.handleMouseOut = function () {\n return _this.setState({ hover: false });\n }, _this.render = function () {\n return _react2.default.createElement(\n Span,\n { onMouseOver: _this.handleMouseOver, onMouseOut: _this.handleMouseOut },\n _react2.default.createElement(Component, _extends({}, _this.props, _this.state))\n );\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n return Hover;\n }(_react2.default.Component);\n};\n\nexports.default = hover;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.flattenNames = undefined;\n\nvar _isString2 = require('lodash/isString');\n\nvar _isString3 = _interopRequireDefault(_isString2);\n\nvar _forOwn2 = require('lodash/forOwn');\n\nvar _forOwn3 = _interopRequireDefault(_forOwn2);\n\nvar _isPlainObject2 = require('lodash/isPlainObject');\n\nvar _isPlainObject3 = _interopRequireDefault(_isPlainObject2);\n\nvar _map2 = require('lodash/map');\n\nvar _map3 = _interopRequireDefault(_map2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar flattenNames = exports.flattenNames = function flattenNames() {\n var things = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n var names = [];\n\n (0, _map3.default)(things, function (thing) {\n if (Array.isArray(thing)) {\n flattenNames(thing).map(function (name) {\n return names.push(name);\n });\n } else if ((0, _isPlainObject3.default)(thing)) {\n (0, _forOwn3.default)(thing, function (value, key) {\n value === true && names.push(key);\n names.push(key + '-' + value);\n });\n } else if ((0, _isString3.default)(thing)) {\n names.push(thing);\n }\n });\n\n return names;\n};\n\nexports.default = flattenNames;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ReactCSS = exports.loop = exports.handleActive = exports.handleHover = exports.hover = undefined;\n\nvar _flattenNames = require('./flattenNames');\n\nvar _flattenNames2 = _interopRequireDefault(_flattenNames);\n\nvar _mergeClasses = require('./mergeClasses');\n\nvar _mergeClasses2 = _interopRequireDefault(_mergeClasses);\n\nvar _autoprefix = require('./autoprefix');\n\nvar _autoprefix2 = _interopRequireDefault(_autoprefix);\n\nvar _hover2 = require('./components/hover');\n\nvar _hover3 = _interopRequireDefault(_hover2);\n\nvar _active = require('./components/active');\n\nvar _active2 = _interopRequireDefault(_active);\n\nvar _loop2 = require('./loop');\n\nvar _loop3 = _interopRequireDefault(_loop2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.hover = _hover3.default;\nexports.handleHover = _hover3.default;\nexports.handleActive = _active2.default;\nexports.loop = _loop3.default;\nvar ReactCSS = exports.ReactCSS = function ReactCSS(classes) {\n for (var _len = arguments.length, activations = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n activations[_key - 1] = arguments[_key];\n }\n\n var activeNames = (0, _flattenNames2.default)(activations);\n var merged = (0, _mergeClasses2.default)(classes, activeNames);\n return (0, _autoprefix2.default)(merged);\n};\n\nexports.default = ReactCSS;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar loopable = function loopable(i, length) {\n var props = {};\n var setProp = function setProp(name) {\n var value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n props[name] = value;\n };\n\n i === 0 && setProp('first-child');\n i === length - 1 && setProp('last-child');\n (i === 0 || i % 2 === 0) && setProp('even');\n Math.abs(i % 2) === 1 && setProp('odd');\n setProp('nth-child', i);\n\n return props;\n};\n\nexports.default = loopable;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.mergeClasses = undefined;\n\nvar _forOwn2 = require('lodash/forOwn');\n\nvar _forOwn3 = _interopRequireDefault(_forOwn2);\n\nvar _cloneDeep2 = require('lodash/cloneDeep');\n\nvar _cloneDeep3 = _interopRequireDefault(_cloneDeep2);\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar mergeClasses = exports.mergeClasses = function mergeClasses(classes) {\n var activeNames = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n\n var styles = classes.default && (0, _cloneDeep3.default)(classes.default) || {};\n activeNames.map(function (name) {\n var toMerge = classes[name];\n if (toMerge) {\n (0, _forOwn3.default)(toMerge, function (value, key) {\n if (!styles[key]) {\n styles[key] = {};\n }\n\n styles[key] = _extends({}, styles[key], toMerge[key]);\n });\n }\n\n return name;\n });\n return styles;\n};\n\nexports.default = mergeClasses;","/*!\n * Signature Pad v2.3.2\n * https://github.com/szimek/signature_pad\n *\n * Copyright 2017 Szymon Nowak\n * Released under the MIT license\n *\n * The main idea and some parts of the code (e.g. drawing variable width Bézier curve) are taken from:\n * http://corner.squareup.com/2012/07/smoother-signatures.html\n *\n * Implementation of interpolation using cubic Bézier curves is taken from:\n * http://benknowscode.wordpress.com/2012/09/14/path-interpolation-using-cubic-bezier-and-control-point-estimation-in-javascript\n *\n * Algorithm for approximated length of a Bézier curve is taken from:\n * http://www.lemoda.net/maths/bezier-length/index.html\n *\n */\n\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.SignaturePad = factory());\n}(this, (function () { 'use strict';\n\nfunction Point(x, y, time) {\n this.x = x;\n this.y = y;\n this.time = time || new Date().getTime();\n}\n\nPoint.prototype.velocityFrom = function (start) {\n return this.time !== start.time ? this.distanceTo(start) / (this.time - start.time) : 1;\n};\n\nPoint.prototype.distanceTo = function (start) {\n return Math.sqrt(Math.pow(this.x - start.x, 2) + Math.pow(this.y - start.y, 2));\n};\n\nPoint.prototype.equals = function (other) {\n return this.x === other.x && this.y === other.y && this.time === other.time;\n};\n\nfunction Bezier(startPoint, control1, control2, endPoint) {\n this.startPoint = startPoint;\n this.control1 = control1;\n this.control2 = control2;\n this.endPoint = endPoint;\n}\n\n// Returns approximated length.\nBezier.prototype.length = function () {\n var steps = 10;\n var length = 0;\n var px = void 0;\n var py = void 0;\n\n for (var i = 0; i <= steps; i += 1) {\n var t = i / steps;\n var cx = this._point(t, this.startPoint.x, this.control1.x, this.control2.x, this.endPoint.x);\n var cy = this._point(t, this.startPoint.y, this.control1.y, this.control2.y, this.endPoint.y);\n if (i > 0) {\n var xdiff = cx - px;\n var ydiff = cy - py;\n length += Math.sqrt(xdiff * xdiff + ydiff * ydiff);\n }\n px = cx;\n py = cy;\n }\n\n return length;\n};\n\n/* eslint-disable no-multi-spaces, space-in-parens */\nBezier.prototype._point = function (t, start, c1, c2, end) {\n return start * (1.0 - t) * (1.0 - t) * (1.0 - t) + 3.0 * c1 * (1.0 - t) * (1.0 - t) * t + 3.0 * c2 * (1.0 - t) * t * t + end * t * t * t;\n};\n\n/* eslint-disable */\n\n// http://stackoverflow.com/a/27078401/815507\nfunction throttle(func, wait, options) {\n var context, args, result;\n var timeout = null;\n var previous = 0;\n if (!options) options = {};\n var later = function later() {\n previous = options.leading === false ? 0 : Date.now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n return function () {\n var now = Date.now();\n if (!previous && options.leading === false) previous = now;\n var remaining = wait - (now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n}\n\nfunction SignaturePad(canvas, options) {\n var self = this;\n var opts = options || {};\n\n this.velocityFilterWeight = opts.velocityFilterWeight || 0.7;\n this.minWidth = opts.minWidth || 0.5;\n this.maxWidth = opts.maxWidth || 2.5;\n this.throttle = 'throttle' in opts ? opts.throttle : 16; // in miliseconds\n this.minDistance = 'minDistance' in opts ? opts.minDistance : 5;\n\n if (this.throttle) {\n this._strokeMoveUpdate = throttle(SignaturePad.prototype._strokeUpdate, this.throttle);\n } else {\n this._strokeMoveUpdate = SignaturePad.prototype._strokeUpdate;\n }\n\n this.dotSize = opts.dotSize || function () {\n return (this.minWidth + this.maxWidth) / 2;\n };\n this.penColor = opts.penColor || 'black';\n this.backgroundColor = opts.backgroundColor || 'rgba(0,0,0,0)';\n this.onBegin = opts.onBegin;\n this.onEnd = opts.onEnd;\n\n this._canvas = canvas;\n this._ctx = canvas.getContext('2d');\n this.clear();\n\n // We need add these inline so they are available to unbind while still having\n // access to 'self' we could use _.bind but it's not worth adding a dependency.\n this._handleMouseDown = function (event) {\n if (event.which === 1) {\n self._mouseButtonDown = true;\n self._strokeBegin(event);\n }\n };\n\n this._handleMouseMove = function (event) {\n if (self._mouseButtonDown) {\n self._strokeMoveUpdate(event);\n }\n };\n\n this._handleMouseUp = function (event) {\n if (event.which === 1 && self._mouseButtonDown) {\n self._mouseButtonDown = false;\n self._strokeEnd(event);\n }\n };\n\n this._handleTouchStart = function (event) {\n if (event.targetTouches.length === 1) {\n var touch = event.changedTouches[0];\n self._strokeBegin(touch);\n }\n };\n\n this._handleTouchMove = function (event) {\n // Prevent scrolling.\n event.preventDefault();\n\n var touch = event.targetTouches[0];\n self._strokeMoveUpdate(touch);\n };\n\n this._handleTouchEnd = function (event) {\n var wasCanvasTouched = event.target === self._canvas;\n if (wasCanvasTouched) {\n event.preventDefault();\n self._strokeEnd(event);\n }\n };\n\n // Enable mouse and touch event handlers\n this.on();\n}\n\n// Public methods\nSignaturePad.prototype.clear = function () {\n var ctx = this._ctx;\n var canvas = this._canvas;\n\n ctx.fillStyle = this.backgroundColor;\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n\n this._data = [];\n this._reset();\n this._isEmpty = true;\n};\n\nSignaturePad.prototype.fromDataURL = function (dataUrl) {\n var _this = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var image = new Image();\n var ratio = options.ratio || window.devicePixelRatio || 1;\n var width = options.width || this._canvas.width / ratio;\n var height = options.height || this._canvas.height / ratio;\n\n this._reset();\n image.src = dataUrl;\n image.onload = function () {\n _this._ctx.drawImage(image, 0, 0, width, height);\n };\n this._isEmpty = false;\n};\n\nSignaturePad.prototype.toDataURL = function (type) {\n var _canvas;\n\n switch (type) {\n case 'image/svg+xml':\n return this._toSVG();\n default:\n for (var _len = arguments.length, options = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n options[_key - 1] = arguments[_key];\n }\n\n return (_canvas = this._canvas).toDataURL.apply(_canvas, [type].concat(options));\n }\n};\n\nSignaturePad.prototype.on = function () {\n this._handleMouseEvents();\n this._handleTouchEvents();\n};\n\nSignaturePad.prototype.off = function () {\n this._canvas.removeEventListener('mousedown', this._handleMouseDown);\n this._canvas.removeEventListener('mousemove', this._handleMouseMove);\n document.removeEventListener('mouseup', this._handleMouseUp);\n\n this._canvas.removeEventListener('touchstart', this._handleTouchStart);\n this._canvas.removeEventListener('touchmove', this._handleTouchMove);\n this._canvas.removeEventListener('touchend', this._handleTouchEnd);\n};\n\nSignaturePad.prototype.isEmpty = function () {\n return this._isEmpty;\n};\n\n// Private methods\nSignaturePad.prototype._strokeBegin = function (event) {\n this._data.push([]);\n this._reset();\n this._strokeUpdate(event);\n\n if (typeof this.onBegin === 'function') {\n this.onBegin(event);\n }\n};\n\nSignaturePad.prototype._strokeUpdate = function (event) {\n var x = event.clientX;\n var y = event.clientY;\n\n var point = this._createPoint(x, y);\n var lastPointGroup = this._data[this._data.length - 1];\n var lastPoint = lastPointGroup && lastPointGroup[lastPointGroup.length - 1];\n var isLastPointTooClose = lastPoint && point.distanceTo(lastPoint) < this.minDistance;\n\n // Skip this point if it's too close to the previous one\n if (!(lastPoint && isLastPointTooClose)) {\n var _addPoint = this._addPoint(point),\n curve = _addPoint.curve,\n widths = _addPoint.widths;\n\n if (curve && widths) {\n this._drawCurve(curve, widths.start, widths.end);\n }\n\n this._data[this._data.length - 1].push({\n x: point.x,\n y: point.y,\n time: point.time,\n color: this.penColor\n });\n }\n};\n\nSignaturePad.prototype._strokeEnd = function (event) {\n var canDrawCurve = this.points.length > 2;\n var point = this.points[0]; // Point instance\n\n if (!canDrawCurve && point) {\n this._drawDot(point);\n }\n\n if (point) {\n var lastPointGroup = this._data[this._data.length - 1];\n var lastPoint = lastPointGroup[lastPointGroup.length - 1]; // plain object\n\n // When drawing a dot, there's only one point in a group, so without this check\n // such group would end up with exactly the same 2 points.\n if (!point.equals(lastPoint)) {\n lastPointGroup.push({\n x: point.x,\n y: point.y,\n time: point.time,\n color: this.penColor\n });\n }\n }\n\n if (typeof this.onEnd === 'function') {\n this.onEnd(event);\n }\n};\n\nSignaturePad.prototype._handleMouseEvents = function () {\n this._mouseButtonDown = false;\n\n this._canvas.addEventListener('mousedown', this._handleMouseDown);\n this._canvas.addEventListener('mousemove', this._handleMouseMove);\n document.addEventListener('mouseup', this._handleMouseUp);\n};\n\nSignaturePad.prototype._handleTouchEvents = function () {\n // Pass touch events to canvas element on mobile IE11 and Edge.\n this._canvas.style.msTouchAction = 'none';\n this._canvas.style.touchAction = 'none';\n\n this._canvas.addEventListener('touchstart', this._handleTouchStart);\n this._canvas.addEventListener('touchmove', this._handleTouchMove);\n this._canvas.addEventListener('touchend', this._handleTouchEnd);\n};\n\nSignaturePad.prototype._reset = function () {\n this.points = [];\n this._lastVelocity = 0;\n this._lastWidth = (this.minWidth + this.maxWidth) / 2;\n this._ctx.fillStyle = this.penColor;\n};\n\nSignaturePad.prototype._createPoint = function (x, y, time) {\n var rect = this._canvas.getBoundingClientRect();\n\n return new Point(x - rect.left, y - rect.top, time || new Date().getTime());\n};\n\nSignaturePad.prototype._addPoint = function (point) {\n var points = this.points;\n var tmp = void 0;\n\n points.push(point);\n\n if (points.length > 2) {\n // To reduce the initial lag make it work with 3 points\n // by copying the first point to the beginning.\n if (points.length === 3) points.unshift(points[0]);\n\n tmp = this._calculateCurveControlPoints(points[0], points[1], points[2]);\n var c2 = tmp.c2;\n tmp = this._calculateCurveControlPoints(points[1], points[2], points[3]);\n var c3 = tmp.c1;\n var curve = new Bezier(points[1], c2, c3, points[2]);\n var widths = this._calculateCurveWidths(curve);\n\n // Remove the first element from the list,\n // so that we always have no more than 4 points in points array.\n points.shift();\n\n return { curve: curve, widths: widths };\n }\n\n return {};\n};\n\nSignaturePad.prototype._calculateCurveControlPoints = function (s1, s2, s3) {\n var dx1 = s1.x - s2.x;\n var dy1 = s1.y - s2.y;\n var dx2 = s2.x - s3.x;\n var dy2 = s2.y - s3.y;\n\n var m1 = { x: (s1.x + s2.x) / 2.0, y: (s1.y + s2.y) / 2.0 };\n var m2 = { x: (s2.x + s3.x) / 2.0, y: (s2.y + s3.y) / 2.0 };\n\n var l1 = Math.sqrt(dx1 * dx1 + dy1 * dy1);\n var l2 = Math.sqrt(dx2 * dx2 + dy2 * dy2);\n\n var dxm = m1.x - m2.x;\n var dym = m1.y - m2.y;\n\n var k = l2 / (l1 + l2);\n var cm = { x: m2.x + dxm * k, y: m2.y + dym * k };\n\n var tx = s2.x - cm.x;\n var ty = s2.y - cm.y;\n\n return {\n c1: new Point(m1.x + tx, m1.y + ty),\n c2: new Point(m2.x + tx, m2.y + ty)\n };\n};\n\nSignaturePad.prototype._calculateCurveWidths = function (curve) {\n var startPoint = curve.startPoint;\n var endPoint = curve.endPoint;\n var widths = { start: null, end: null };\n\n var velocity = this.velocityFilterWeight * endPoint.velocityFrom(startPoint) + (1 - this.velocityFilterWeight) * this._lastVelocity;\n\n var newWidth = this._strokeWidth(velocity);\n\n widths.start = this._lastWidth;\n widths.end = newWidth;\n\n this._lastVelocity = velocity;\n this._lastWidth = newWidth;\n\n return widths;\n};\n\nSignaturePad.prototype._strokeWidth = function (velocity) {\n return Math.max(this.maxWidth / (velocity + 1), this.minWidth);\n};\n\nSignaturePad.prototype._drawPoint = function (x, y, size) {\n var ctx = this._ctx;\n\n ctx.moveTo(x, y);\n ctx.arc(x, y, size, 0, 2 * Math.PI, false);\n this._isEmpty = false;\n};\n\nSignaturePad.prototype._drawCurve = function (curve, startWidth, endWidth) {\n var ctx = this._ctx;\n var widthDelta = endWidth - startWidth;\n var drawSteps = Math.floor(curve.length());\n\n ctx.beginPath();\n\n for (var i = 0; i < drawSteps; i += 1) {\n // Calculate the Bezier (x, y) coordinate for this step.\n var t = i / drawSteps;\n var tt = t * t;\n var ttt = tt * t;\n var u = 1 - t;\n var uu = u * u;\n var uuu = uu * u;\n\n var x = uuu * curve.startPoint.x;\n x += 3 * uu * t * curve.control1.x;\n x += 3 * u * tt * curve.control2.x;\n x += ttt * curve.endPoint.x;\n\n var y = uuu * curve.startPoint.y;\n y += 3 * uu * t * curve.control1.y;\n y += 3 * u * tt * curve.control2.y;\n y += ttt * curve.endPoint.y;\n\n var width = startWidth + ttt * widthDelta;\n this._drawPoint(x, y, width);\n }\n\n ctx.closePath();\n ctx.fill();\n};\n\nSignaturePad.prototype._drawDot = function (point) {\n var ctx = this._ctx;\n var width = typeof this.dotSize === 'function' ? this.dotSize() : this.dotSize;\n\n ctx.beginPath();\n this._drawPoint(point.x, point.y, width);\n ctx.closePath();\n ctx.fill();\n};\n\nSignaturePad.prototype._fromData = function (pointGroups, drawCurve, drawDot) {\n for (var i = 0; i < pointGroups.length; i += 1) {\n var group = pointGroups[i];\n\n if (group.length > 1) {\n for (var j = 0; j < group.length; j += 1) {\n var rawPoint = group[j];\n var point = new Point(rawPoint.x, rawPoint.y, rawPoint.time);\n var color = rawPoint.color;\n\n if (j === 0) {\n // First point in a group. Nothing to draw yet.\n\n // All points in the group have the same color, so it's enough to set\n // penColor just at the beginning.\n this.penColor = color;\n this._reset();\n\n this._addPoint(point);\n } else if (j !== group.length - 1) {\n // Middle point in a group.\n var _addPoint2 = this._addPoint(point),\n curve = _addPoint2.curve,\n widths = _addPoint2.widths;\n\n if (curve && widths) {\n drawCurve(curve, widths, color);\n }\n } else {\n // Last point in a group. Do nothing.\n }\n }\n } else {\n this._reset();\n var _rawPoint = group[0];\n drawDot(_rawPoint);\n }\n }\n};\n\nSignaturePad.prototype._toSVG = function () {\n var _this2 = this;\n\n var pointGroups = this._data;\n var canvas = this._canvas;\n var ratio = Math.max(window.devicePixelRatio || 1, 1);\n var minX = 0;\n var minY = 0;\n var maxX = canvas.width / ratio;\n var maxY = canvas.height / ratio;\n var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n\n svg.setAttributeNS(null, 'width', canvas.width);\n svg.setAttributeNS(null, 'height', canvas.height);\n\n this._fromData(pointGroups, function (curve, widths, color) {\n var path = document.createElement('path');\n\n // Need to check curve for NaN values, these pop up when drawing\n // lines on the canvas that are not continuous. E.g. Sharp corners\n // or stopping mid-stroke and than continuing without lifting mouse.\n if (!isNaN(curve.control1.x) && !isNaN(curve.control1.y) && !isNaN(curve.control2.x) && !isNaN(curve.control2.y)) {\n var attr = 'M ' + curve.startPoint.x.toFixed(3) + ',' + curve.startPoint.y.toFixed(3) + ' ' + ('C ' + curve.control1.x.toFixed(3) + ',' + curve.control1.y.toFixed(3) + ' ') + (curve.control2.x.toFixed(3) + ',' + curve.control2.y.toFixed(3) + ' ') + (curve.endPoint.x.toFixed(3) + ',' + curve.endPoint.y.toFixed(3));\n\n path.setAttribute('d', attr);\n path.setAttribute('stroke-width', (widths.end * 2.25).toFixed(3));\n path.setAttribute('stroke', color);\n path.setAttribute('fill', 'none');\n path.setAttribute('stroke-linecap', 'round');\n\n svg.appendChild(path);\n }\n }, function (rawPoint) {\n var circle = document.createElement('circle');\n var dotSize = typeof _this2.dotSize === 'function' ? _this2.dotSize() : _this2.dotSize;\n circle.setAttribute('r', dotSize);\n circle.setAttribute('cx', rawPoint.x);\n circle.setAttribute('cy', rawPoint.y);\n circle.setAttribute('fill', rawPoint.color);\n\n svg.appendChild(circle);\n });\n\n var prefix = 'data:image/svg+xml;base64,';\n var header = '';\n var body = svg.innerHTML;\n\n // IE hack for missing innerHTML property on SVGElement\n if (body === undefined) {\n var dummy = document.createElement('dummy');\n var nodes = svg.childNodes;\n dummy.innerHTML = '';\n\n for (var i = 0; i < nodes.length; i += 1) {\n dummy.appendChild(nodes[i].cloneNode(true));\n }\n\n body = dummy.innerHTML;\n }\n\n var footer = '';\n var data = header + body + footer;\n\n return prefix + btoa(data);\n};\n\nSignaturePad.prototype.fromData = function (pointGroups) {\n var _this3 = this;\n\n this.clear();\n\n this._fromData(pointGroups, function (curve, widths) {\n return _this3._drawCurve(curve, widths.start, widths.end);\n }, function (rawPoint) {\n return _this3._drawDot(rawPoint);\n });\n\n this._data = pointGroups;\n};\n\nSignaturePad.prototype.toData = function () {\n return this._data;\n};\n\nreturn SignaturePad;\n\n})));\n","// TinyColor v1.4.2\n// https://github.com/bgrins/TinyColor\n// Brian Grinstead, MIT License\n\n(function(Math) {\n\nvar trimLeft = /^\\s+/,\n trimRight = /\\s+$/,\n tinyCounter = 0,\n mathRound = Math.round,\n mathMin = Math.min,\n mathMax = Math.max,\n mathRandom = Math.random;\n\nfunction tinycolor (color, opts) {\n\n color = (color) ? color : '';\n opts = opts || { };\n\n // If input is already a tinycolor, return itself\n if (color instanceof tinycolor) {\n return color;\n }\n // If we are called as a function, call using new instead\n if (!(this instanceof tinycolor)) {\n return new tinycolor(color, opts);\n }\n\n var rgb = inputToRGB(color);\n this._originalInput = color,\n this._r = rgb.r,\n this._g = rgb.g,\n this._b = rgb.b,\n this._a = rgb.a,\n this._roundA = mathRound(100*this._a) / 100,\n this._format = opts.format || rgb.format;\n this._gradientType = opts.gradientType;\n\n // Don't let the range of [0,255] come back in [0,1].\n // Potentially lose a little bit of precision here, but will fix issues where\n // .5 gets interpreted as half of the total, instead of half of 1\n // If it was supposed to be 128, this was already taken care of by `inputToRgb`\n if (this._r < 1) { this._r = mathRound(this._r); }\n if (this._g < 1) { this._g = mathRound(this._g); }\n if (this._b < 1) { this._b = mathRound(this._b); }\n\n this._ok = rgb.ok;\n this._tc_id = tinyCounter++;\n}\n\ntinycolor.prototype = {\n isDark: function() {\n return this.getBrightness() < 128;\n },\n isLight: function() {\n return !this.isDark();\n },\n isValid: function() {\n return this._ok;\n },\n getOriginalInput: function() {\n return this._originalInput;\n },\n getFormat: function() {\n return this._format;\n },\n getAlpha: function() {\n return this._a;\n },\n getBrightness: function() {\n //http://www.w3.org/TR/AERT#color-contrast\n var rgb = this.toRgb();\n return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;\n },\n getLuminance: function() {\n //http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n var rgb = this.toRgb();\n var RsRGB, GsRGB, BsRGB, R, G, B;\n RsRGB = rgb.r/255;\n GsRGB = rgb.g/255;\n BsRGB = rgb.b/255;\n\n if (RsRGB <= 0.03928) {R = RsRGB / 12.92;} else {R = Math.pow(((RsRGB + 0.055) / 1.055), 2.4);}\n if (GsRGB <= 0.03928) {G = GsRGB / 12.92;} else {G = Math.pow(((GsRGB + 0.055) / 1.055), 2.4);}\n if (BsRGB <= 0.03928) {B = BsRGB / 12.92;} else {B = Math.pow(((BsRGB + 0.055) / 1.055), 2.4);}\n return (0.2126 * R) + (0.7152 * G) + (0.0722 * B);\n },\n setAlpha: function(value) {\n this._a = boundAlpha(value);\n this._roundA = mathRound(100*this._a) / 100;\n return this;\n },\n toHsv: function() {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this._a };\n },\n toHsvString: function() {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n var h = mathRound(hsv.h * 360), s = mathRound(hsv.s * 100), v = mathRound(hsv.v * 100);\n return (this._a == 1) ?\n \"hsv(\" + h + \", \" + s + \"%, \" + v + \"%)\" :\n \"hsva(\" + h + \", \" + s + \"%, \" + v + \"%, \"+ this._roundA + \")\";\n },\n toHsl: function() {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this._a };\n },\n toHslString: function() {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n var h = mathRound(hsl.h * 360), s = mathRound(hsl.s * 100), l = mathRound(hsl.l * 100);\n return (this._a == 1) ?\n \"hsl(\" + h + \", \" + s + \"%, \" + l + \"%)\" :\n \"hsla(\" + h + \", \" + s + \"%, \" + l + \"%, \"+ this._roundA + \")\";\n },\n toHex: function(allow3Char) {\n return rgbToHex(this._r, this._g, this._b, allow3Char);\n },\n toHexString: function(allow3Char) {\n return '#' + this.toHex(allow3Char);\n },\n toHex8: function(allow4Char) {\n return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char);\n },\n toHex8String: function(allow4Char) {\n return '#' + this.toHex8(allow4Char);\n },\n toRgb: function() {\n return { r: mathRound(this._r), g: mathRound(this._g), b: mathRound(this._b), a: this._a };\n },\n toRgbString: function() {\n return (this._a == 1) ?\n \"rgb(\" + mathRound(this._r) + \", \" + mathRound(this._g) + \", \" + mathRound(this._b) + \")\" :\n \"rgba(\" + mathRound(this._r) + \", \" + mathRound(this._g) + \", \" + mathRound(this._b) + \", \" + this._roundA + \")\";\n },\n toPercentageRgb: function() {\n return { r: mathRound(bound01(this._r, 255) * 100) + \"%\", g: mathRound(bound01(this._g, 255) * 100) + \"%\", b: mathRound(bound01(this._b, 255) * 100) + \"%\", a: this._a };\n },\n toPercentageRgbString: function() {\n return (this._a == 1) ?\n \"rgb(\" + mathRound(bound01(this._r, 255) * 100) + \"%, \" + mathRound(bound01(this._g, 255) * 100) + \"%, \" + mathRound(bound01(this._b, 255) * 100) + \"%)\" :\n \"rgba(\" + mathRound(bound01(this._r, 255) * 100) + \"%, \" + mathRound(bound01(this._g, 255) * 100) + \"%, \" + mathRound(bound01(this._b, 255) * 100) + \"%, \" + this._roundA + \")\";\n },\n toName: function() {\n if (this._a === 0) {\n return \"transparent\";\n }\n\n if (this._a < 1) {\n return false;\n }\n\n return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false;\n },\n toFilter: function(secondColor) {\n var hex8String = '#' + rgbaToArgbHex(this._r, this._g, this._b, this._a);\n var secondHex8String = hex8String;\n var gradientType = this._gradientType ? \"GradientType = 1, \" : \"\";\n\n if (secondColor) {\n var s = tinycolor(secondColor);\n secondHex8String = '#' + rgbaToArgbHex(s._r, s._g, s._b, s._a);\n }\n\n return \"progid:DXImageTransform.Microsoft.gradient(\"+gradientType+\"startColorstr=\"+hex8String+\",endColorstr=\"+secondHex8String+\")\";\n },\n toString: function(format) {\n var formatSet = !!format;\n format = format || this._format;\n\n var formattedString = false;\n var hasAlpha = this._a < 1 && this._a >= 0;\n var needsAlphaFormat = !formatSet && hasAlpha && (format === \"hex\" || format === \"hex6\" || format === \"hex3\" || format === \"hex4\" || format === \"hex8\" || format === \"name\");\n\n if (needsAlphaFormat) {\n // Special case for \"transparent\", all other non-alpha formats\n // will return rgba when there is transparency.\n if (format === \"name\" && this._a === 0) {\n return this.toName();\n }\n return this.toRgbString();\n }\n if (format === \"rgb\") {\n formattedString = this.toRgbString();\n }\n if (format === \"prgb\") {\n formattedString = this.toPercentageRgbString();\n }\n if (format === \"hex\" || format === \"hex6\") {\n formattedString = this.toHexString();\n }\n if (format === \"hex3\") {\n formattedString = this.toHexString(true);\n }\n if (format === \"hex4\") {\n formattedString = this.toHex8String(true);\n }\n if (format === \"hex8\") {\n formattedString = this.toHex8String();\n }\n if (format === \"name\") {\n formattedString = this.toName();\n }\n if (format === \"hsl\") {\n formattedString = this.toHslString();\n }\n if (format === \"hsv\") {\n formattedString = this.toHsvString();\n }\n\n return formattedString || this.toHexString();\n },\n clone: function() {\n return tinycolor(this.toString());\n },\n\n _applyModification: function(fn, args) {\n var color = fn.apply(null, [this].concat([].slice.call(args)));\n this._r = color._r;\n this._g = color._g;\n this._b = color._b;\n this.setAlpha(color._a);\n return this;\n },\n lighten: function() {\n return this._applyModification(lighten, arguments);\n },\n brighten: function() {\n return this._applyModification(brighten, arguments);\n },\n darken: function() {\n return this._applyModification(darken, arguments);\n },\n desaturate: function() {\n return this._applyModification(desaturate, arguments);\n },\n saturate: function() {\n return this._applyModification(saturate, arguments);\n },\n greyscale: function() {\n return this._applyModification(greyscale, arguments);\n },\n spin: function() {\n return this._applyModification(spin, arguments);\n },\n\n _applyCombination: function(fn, args) {\n return fn.apply(null, [this].concat([].slice.call(args)));\n },\n analogous: function() {\n return this._applyCombination(analogous, arguments);\n },\n complement: function() {\n return this._applyCombination(complement, arguments);\n },\n monochromatic: function() {\n return this._applyCombination(monochromatic, arguments);\n },\n splitcomplement: function() {\n return this._applyCombination(splitcomplement, arguments);\n },\n triad: function() {\n return this._applyCombination(triad, arguments);\n },\n tetrad: function() {\n return this._applyCombination(tetrad, arguments);\n }\n};\n\n// If input is an object, force 1 into \"1.0\" to handle ratios properly\n// String input requires \"1.0\" as input, so 1 will be treated as 1\ntinycolor.fromRatio = function(color, opts) {\n if (typeof color == \"object\") {\n var newColor = {};\n for (var i in color) {\n if (color.hasOwnProperty(i)) {\n if (i === \"a\") {\n newColor[i] = color[i];\n }\n else {\n newColor[i] = convertToPercentage(color[i]);\n }\n }\n }\n color = newColor;\n }\n\n return tinycolor(color, opts);\n};\n\n// Given a string or object, convert that input to RGB\n// Possible string inputs:\n//\n// \"red\"\n// \"#f00\" or \"f00\"\n// \"#ff0000\" or \"ff0000\"\n// \"#ff000000\" or \"ff000000\"\n// \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n// \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n// \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n// \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n// \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n// \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n// \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n//\nfunction inputToRGB(color) {\n\n var rgb = { r: 0, g: 0, b: 0 };\n var a = 1;\n var s = null;\n var v = null;\n var l = null;\n var ok = false;\n var format = false;\n\n if (typeof color == \"string\") {\n color = stringInputToObject(color);\n }\n\n if (typeof color == \"object\") {\n if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {\n rgb = rgbToRgb(color.r, color.g, color.b);\n ok = true;\n format = String(color.r).substr(-1) === \"%\" ? \"prgb\" : \"rgb\";\n }\n else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {\n s = convertToPercentage(color.s);\n v = convertToPercentage(color.v);\n rgb = hsvToRgb(color.h, s, v);\n ok = true;\n format = \"hsv\";\n }\n else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {\n s = convertToPercentage(color.s);\n l = convertToPercentage(color.l);\n rgb = hslToRgb(color.h, s, l);\n ok = true;\n format = \"hsl\";\n }\n\n if (color.hasOwnProperty(\"a\")) {\n a = color.a;\n }\n }\n\n a = boundAlpha(a);\n\n return {\n ok: ok,\n format: color.format || format,\n r: mathMin(255, mathMax(rgb.r, 0)),\n g: mathMin(255, mathMax(rgb.g, 0)),\n b: mathMin(255, mathMax(rgb.b, 0)),\n a: a\n };\n}\n\n\n// Conversion Functions\n// --------------------\n\n// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n// \n\n// `rgbToRgb`\n// Handle bounds / percentage checking to conform to CSS color spec\n// \n// *Assumes:* r, g, b in [0, 255] or [0, 1]\n// *Returns:* { r, g, b } in [0, 255]\nfunction rgbToRgb(r, g, b){\n return {\n r: bound01(r, 255) * 255,\n g: bound01(g, 255) * 255,\n b: bound01(b, 255) * 255\n };\n}\n\n// `rgbToHsl`\n// Converts an RGB color value to HSL.\n// *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n// *Returns:* { h, s, l } in [0,1]\nfunction rgbToHsl(r, g, b) {\n\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n\n var max = mathMax(r, g, b), min = mathMin(r, g, b);\n var h, s, l = (max + min) / 2;\n\n if(max == min) {\n h = s = 0; // achromatic\n }\n else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch(max) {\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n case g: h = (b - r) / d + 2; break;\n case b: h = (r - g) / d + 4; break;\n }\n\n h /= 6;\n }\n\n return { h: h, s: s, l: l };\n}\n\n// `hslToRgb`\n// Converts an HSL color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\nfunction hslToRgb(h, s, l) {\n var r, g, b;\n\n h = bound01(h, 360);\n s = bound01(s, 100);\n l = bound01(l, 100);\n\n function hue2rgb(p, q, t) {\n if(t < 0) t += 1;\n if(t > 1) t -= 1;\n if(t < 1/6) return p + (q - p) * 6 * t;\n if(t < 1/2) return q;\n if(t < 2/3) return p + (q - p) * (2/3 - t) * 6;\n return p;\n }\n\n if(s === 0) {\n r = g = b = l; // achromatic\n }\n else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1/3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1/3);\n }\n\n return { r: r * 255, g: g * 255, b: b * 255 };\n}\n\n// `rgbToHsv`\n// Converts an RGB color value to HSV\n// *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n// *Returns:* { h, s, v } in [0,1]\nfunction rgbToHsv(r, g, b) {\n\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n\n var max = mathMax(r, g, b), min = mathMin(r, g, b);\n var h, s, v = max;\n\n var d = max - min;\n s = max === 0 ? 0 : d / max;\n\n if(max == min) {\n h = 0; // achromatic\n }\n else {\n switch(max) {\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n case g: h = (b - r) / d + 2; break;\n case b: h = (r - g) / d + 4; break;\n }\n h /= 6;\n }\n return { h: h, s: s, v: v };\n}\n\n// `hsvToRgb`\n// Converts an HSV color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\n function hsvToRgb(h, s, v) {\n\n h = bound01(h, 360) * 6;\n s = bound01(s, 100);\n v = bound01(v, 100);\n\n var i = Math.floor(h),\n f = h - i,\n p = v * (1 - s),\n q = v * (1 - f * s),\n t = v * (1 - (1 - f) * s),\n mod = i % 6,\n r = [v, q, p, p, t, v][mod],\n g = [t, v, v, q, p, p][mod],\n b = [p, p, t, v, v, q][mod];\n\n return { r: r * 255, g: g * 255, b: b * 255 };\n}\n\n// `rgbToHex`\n// Converts an RGB color to hex\n// Assumes r, g, and b are contained in the set [0, 255]\n// Returns a 3 or 6 character hex\nfunction rgbToHex(r, g, b, allow3Char) {\n\n var hex = [\n pad2(mathRound(r).toString(16)),\n pad2(mathRound(g).toString(16)),\n pad2(mathRound(b).toString(16))\n ];\n\n // Return a 3 character hex if possible\n if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n }\n\n return hex.join(\"\");\n}\n\n// `rgbaToHex`\n// Converts an RGBA color plus alpha transparency to hex\n// Assumes r, g, b are contained in the set [0, 255] and\n// a in [0, 1]. Returns a 4 or 8 character rgba hex\nfunction rgbaToHex(r, g, b, a, allow4Char) {\n\n var hex = [\n pad2(mathRound(r).toString(16)),\n pad2(mathRound(g).toString(16)),\n pad2(mathRound(b).toString(16)),\n pad2(convertDecimalToHex(a))\n ];\n\n // Return a 4 character hex if possible\n if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);\n }\n\n return hex.join(\"\");\n}\n\n// `rgbaToArgbHex`\n// Converts an RGBA color to an ARGB Hex8 string\n// Rarely used, but required for \"toFilter()\"\nfunction rgbaToArgbHex(r, g, b, a) {\n\n var hex = [\n pad2(convertDecimalToHex(a)),\n pad2(mathRound(r).toString(16)),\n pad2(mathRound(g).toString(16)),\n pad2(mathRound(b).toString(16))\n ];\n\n return hex.join(\"\");\n}\n\n// `equals`\n// Can be called with any tinycolor input\ntinycolor.equals = function (color1, color2) {\n if (!color1 || !color2) { return false; }\n return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString();\n};\n\ntinycolor.random = function() {\n return tinycolor.fromRatio({\n r: mathRandom(),\n g: mathRandom(),\n b: mathRandom()\n });\n};\n\n\n// Modification Functions\n// ----------------------\n// Thanks to less.js for some of the basics here\n// \n\nfunction desaturate(color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var hsl = tinycolor(color).toHsl();\n hsl.s -= amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n}\n\nfunction saturate(color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var hsl = tinycolor(color).toHsl();\n hsl.s += amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n}\n\nfunction greyscale(color) {\n return tinycolor(color).desaturate(100);\n}\n\nfunction lighten (color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var hsl = tinycolor(color).toHsl();\n hsl.l += amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n}\n\nfunction brighten(color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var rgb = tinycolor(color).toRgb();\n rgb.r = mathMax(0, mathMin(255, rgb.r - mathRound(255 * - (amount / 100))));\n rgb.g = mathMax(0, mathMin(255, rgb.g - mathRound(255 * - (amount / 100))));\n rgb.b = mathMax(0, mathMin(255, rgb.b - mathRound(255 * - (amount / 100))));\n return tinycolor(rgb);\n}\n\nfunction darken (color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var hsl = tinycolor(color).toHsl();\n hsl.l -= amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n}\n\n// Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.\n// Values outside of this range will be wrapped into this range.\nfunction spin(color, amount) {\n var hsl = tinycolor(color).toHsl();\n var hue = (hsl.h + amount) % 360;\n hsl.h = hue < 0 ? 360 + hue : hue;\n return tinycolor(hsl);\n}\n\n// Combination Functions\n// ---------------------\n// Thanks to jQuery xColor for some of the ideas behind these\n// \n\nfunction complement(color) {\n var hsl = tinycolor(color).toHsl();\n hsl.h = (hsl.h + 180) % 360;\n return tinycolor(hsl);\n}\n\nfunction triad(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [\n tinycolor(color),\n tinycolor({ h: (h + 120) % 360, s: hsl.s, l: hsl.l }),\n tinycolor({ h: (h + 240) % 360, s: hsl.s, l: hsl.l })\n ];\n}\n\nfunction tetrad(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [\n tinycolor(color),\n tinycolor({ h: (h + 90) % 360, s: hsl.s, l: hsl.l }),\n tinycolor({ h: (h + 180) % 360, s: hsl.s, l: hsl.l }),\n tinycolor({ h: (h + 270) % 360, s: hsl.s, l: hsl.l })\n ];\n}\n\nfunction splitcomplement(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [\n tinycolor(color),\n tinycolor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l}),\n tinycolor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l})\n ];\n}\n\nfunction analogous(color, results, slices) {\n results = results || 6;\n slices = slices || 30;\n\n var hsl = tinycolor(color).toHsl();\n var part = 360 / slices;\n var ret = [tinycolor(color)];\n\n for (hsl.h = ((hsl.h - (part * results >> 1)) + 720) % 360; --results; ) {\n hsl.h = (hsl.h + part) % 360;\n ret.push(tinycolor(hsl));\n }\n return ret;\n}\n\nfunction monochromatic(color, results) {\n results = results || 6;\n var hsv = tinycolor(color).toHsv();\n var h = hsv.h, s = hsv.s, v = hsv.v;\n var ret = [];\n var modification = 1 / results;\n\n while (results--) {\n ret.push(tinycolor({ h: h, s: s, v: v}));\n v = (v + modification) % 1;\n }\n\n return ret;\n}\n\n// Utility Functions\n// ---------------------\n\ntinycolor.mix = function(color1, color2, amount) {\n amount = (amount === 0) ? 0 : (amount || 50);\n\n var rgb1 = tinycolor(color1).toRgb();\n var rgb2 = tinycolor(color2).toRgb();\n\n var p = amount / 100;\n\n var rgba = {\n r: ((rgb2.r - rgb1.r) * p) + rgb1.r,\n g: ((rgb2.g - rgb1.g) * p) + rgb1.g,\n b: ((rgb2.b - rgb1.b) * p) + rgb1.b,\n a: ((rgb2.a - rgb1.a) * p) + rgb1.a\n };\n\n return tinycolor(rgba);\n};\n\n\n// Readability Functions\n// ---------------------\n// false\n// tinycolor.isReadable(\"#000\", \"#111\",{level:\"AA\",size:\"large\"}) => false\ntinycolor.isReadable = function(color1, color2, wcag2) {\n var readability = tinycolor.readability(color1, color2);\n var wcag2Parms, out;\n\n out = false;\n\n wcag2Parms = validateWCAG2Parms(wcag2);\n switch (wcag2Parms.level + wcag2Parms.size) {\n case \"AAsmall\":\n case \"AAAlarge\":\n out = readability >= 4.5;\n break;\n case \"AAlarge\":\n out = readability >= 3;\n break;\n case \"AAAsmall\":\n out = readability >= 7;\n break;\n }\n return out;\n\n};\n\n// `mostReadable`\n// Given a base color and a list of possible foreground or background\n// colors for that base, returns the most readable color.\n// Optionally returns Black or White if the most readable color is unreadable.\n// *Example*\n// tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:false}).toHexString(); // \"#112255\"\n// tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:true}).toHexString(); // \"#ffffff\"\n// tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"large\"}).toHexString(); // \"#faf3f3\"\n// tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"small\"}).toHexString(); // \"#ffffff\"\ntinycolor.mostReadable = function(baseColor, colorList, args) {\n var bestColor = null;\n var bestScore = 0;\n var readability;\n var includeFallbackColors, level, size ;\n args = args || {};\n includeFallbackColors = args.includeFallbackColors ;\n level = args.level;\n size = args.size;\n\n for (var i= 0; i < colorList.length ; i++) {\n readability = tinycolor.readability(baseColor, colorList[i]);\n if (readability > bestScore) {\n bestScore = readability;\n bestColor = tinycolor(colorList[i]);\n }\n }\n\n if (tinycolor.isReadable(baseColor, bestColor, {\"level\":level,\"size\":size}) || !includeFallbackColors) {\n return bestColor;\n }\n else {\n args.includeFallbackColors=false;\n return tinycolor.mostReadable(baseColor,[\"#fff\", \"#000\"],args);\n }\n};\n\n\n// Big List of Colors\n// ------------------\n// \nvar names = tinycolor.names = {\n aliceblue: \"f0f8ff\",\n antiquewhite: \"faebd7\",\n aqua: \"0ff\",\n aquamarine: \"7fffd4\",\n azure: \"f0ffff\",\n beige: \"f5f5dc\",\n bisque: \"ffe4c4\",\n black: \"000\",\n blanchedalmond: \"ffebcd\",\n blue: \"00f\",\n blueviolet: \"8a2be2\",\n brown: \"a52a2a\",\n burlywood: \"deb887\",\n burntsienna: \"ea7e5d\",\n cadetblue: \"5f9ea0\",\n chartreuse: \"7fff00\",\n chocolate: \"d2691e\",\n coral: \"ff7f50\",\n cornflowerblue: \"6495ed\",\n cornsilk: \"fff8dc\",\n crimson: \"dc143c\",\n cyan: \"0ff\",\n darkblue: \"00008b\",\n darkcyan: \"008b8b\",\n darkgoldenrod: \"b8860b\",\n darkgray: \"a9a9a9\",\n darkgreen: \"006400\",\n darkgrey: \"a9a9a9\",\n darkkhaki: \"bdb76b\",\n darkmagenta: \"8b008b\",\n darkolivegreen: \"556b2f\",\n darkorange: \"ff8c00\",\n darkorchid: \"9932cc\",\n darkred: \"8b0000\",\n darksalmon: \"e9967a\",\n darkseagreen: \"8fbc8f\",\n darkslateblue: \"483d8b\",\n darkslategray: \"2f4f4f\",\n darkslategrey: \"2f4f4f\",\n darkturquoise: \"00ced1\",\n darkviolet: \"9400d3\",\n deeppink: \"ff1493\",\n deepskyblue: \"00bfff\",\n dimgray: \"696969\",\n dimgrey: \"696969\",\n dodgerblue: \"1e90ff\",\n firebrick: \"b22222\",\n floralwhite: \"fffaf0\",\n forestgreen: \"228b22\",\n fuchsia: \"f0f\",\n gainsboro: \"dcdcdc\",\n ghostwhite: \"f8f8ff\",\n gold: \"ffd700\",\n goldenrod: \"daa520\",\n gray: \"808080\",\n green: \"008000\",\n greenyellow: \"adff2f\",\n grey: \"808080\",\n honeydew: \"f0fff0\",\n hotpink: \"ff69b4\",\n indianred: \"cd5c5c\",\n indigo: \"4b0082\",\n ivory: \"fffff0\",\n khaki: \"f0e68c\",\n lavender: \"e6e6fa\",\n lavenderblush: \"fff0f5\",\n lawngreen: \"7cfc00\",\n lemonchiffon: \"fffacd\",\n lightblue: \"add8e6\",\n lightcoral: \"f08080\",\n lightcyan: \"e0ffff\",\n lightgoldenrodyellow: \"fafad2\",\n lightgray: \"d3d3d3\",\n lightgreen: \"90ee90\",\n lightgrey: \"d3d3d3\",\n lightpink: \"ffb6c1\",\n lightsalmon: \"ffa07a\",\n lightseagreen: \"20b2aa\",\n lightskyblue: \"87cefa\",\n lightslategray: \"789\",\n lightslategrey: \"789\",\n lightsteelblue: \"b0c4de\",\n lightyellow: \"ffffe0\",\n lime: \"0f0\",\n limegreen: \"32cd32\",\n linen: \"faf0e6\",\n magenta: \"f0f\",\n maroon: \"800000\",\n mediumaquamarine: \"66cdaa\",\n mediumblue: \"0000cd\",\n mediumorchid: \"ba55d3\",\n mediumpurple: \"9370db\",\n mediumseagreen: \"3cb371\",\n mediumslateblue: \"7b68ee\",\n mediumspringgreen: \"00fa9a\",\n mediumturquoise: \"48d1cc\",\n mediumvioletred: \"c71585\",\n midnightblue: \"191970\",\n mintcream: \"f5fffa\",\n mistyrose: \"ffe4e1\",\n moccasin: \"ffe4b5\",\n navajowhite: \"ffdead\",\n navy: \"000080\",\n oldlace: \"fdf5e6\",\n olive: \"808000\",\n olivedrab: \"6b8e23\",\n orange: \"ffa500\",\n orangered: \"ff4500\",\n orchid: \"da70d6\",\n palegoldenrod: \"eee8aa\",\n palegreen: \"98fb98\",\n paleturquoise: \"afeeee\",\n palevioletred: \"db7093\",\n papayawhip: \"ffefd5\",\n peachpuff: \"ffdab9\",\n peru: \"cd853f\",\n pink: \"ffc0cb\",\n plum: \"dda0dd\",\n powderblue: \"b0e0e6\",\n purple: \"800080\",\n rebeccapurple: \"663399\",\n red: \"f00\",\n rosybrown: \"bc8f8f\",\n royalblue: \"4169e1\",\n saddlebrown: \"8b4513\",\n salmon: \"fa8072\",\n sandybrown: \"f4a460\",\n seagreen: \"2e8b57\",\n seashell: \"fff5ee\",\n sienna: \"a0522d\",\n silver: \"c0c0c0\",\n skyblue: \"87ceeb\",\n slateblue: \"6a5acd\",\n slategray: \"708090\",\n slategrey: \"708090\",\n snow: \"fffafa\",\n springgreen: \"00ff7f\",\n steelblue: \"4682b4\",\n tan: \"d2b48c\",\n teal: \"008080\",\n thistle: \"d8bfd8\",\n tomato: \"ff6347\",\n turquoise: \"40e0d0\",\n violet: \"ee82ee\",\n wheat: \"f5deb3\",\n white: \"fff\",\n whitesmoke: \"f5f5f5\",\n yellow: \"ff0\",\n yellowgreen: \"9acd32\"\n};\n\n// Make it easy to access colors via `hexNames[hex]`\nvar hexNames = tinycolor.hexNames = flip(names);\n\n\n// Utilities\n// ---------\n\n// `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }`\nfunction flip(o) {\n var flipped = { };\n for (var i in o) {\n if (o.hasOwnProperty(i)) {\n flipped[o[i]] = i;\n }\n }\n return flipped;\n}\n\n// Return a valid alpha value [0,1] with all invalid values being set to 1\nfunction boundAlpha(a) {\n a = parseFloat(a);\n\n if (isNaN(a) || a < 0 || a > 1) {\n a = 1;\n }\n\n return a;\n}\n\n// Take input from [0, n] and return it as [0, 1]\nfunction bound01(n, max) {\n if (isOnePointZero(n)) { n = \"100%\"; }\n\n var processPercent = isPercentage(n);\n n = mathMin(max, mathMax(0, parseFloat(n)));\n\n // Automatically convert percentage into number\n if (processPercent) {\n n = parseInt(n * max, 10) / 100;\n }\n\n // Handle floating point rounding errors\n if ((Math.abs(n - max) < 0.000001)) {\n return 1;\n }\n\n // Convert into [0, 1] range if it isn't already\n return (n % max) / parseFloat(max);\n}\n\n// Force a number between 0 and 1\nfunction clamp01(val) {\n return mathMin(1, mathMax(0, val));\n}\n\n// Parse a base-16 hex value into a base-10 integer\nfunction parseIntFromHex(val) {\n return parseInt(val, 16);\n}\n\n// Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n// \nfunction isOnePointZero(n) {\n return typeof n == \"string\" && n.indexOf('.') != -1 && parseFloat(n) === 1;\n}\n\n// Check to see if string passed in is a percentage\nfunction isPercentage(n) {\n return typeof n === \"string\" && n.indexOf('%') != -1;\n}\n\n// Force a hex value to have 2 characters\nfunction pad2(c) {\n return c.length == 1 ? '0' + c : '' + c;\n}\n\n// Replace a decimal with it's percentage value\nfunction convertToPercentage(n) {\n if (n <= 1) {\n n = (n * 100) + \"%\";\n }\n\n return n;\n}\n\n// Converts a decimal to a hex value\nfunction convertDecimalToHex(d) {\n return Math.round(parseFloat(d) * 255).toString(16);\n}\n// Converts a hex value to a decimal\nfunction convertHexToDecimal(h) {\n return (parseIntFromHex(h) / 255);\n}\n\nvar matchers = (function() {\n\n // \n var CSS_INTEGER = \"[-\\\\+]?\\\\d+%?\";\n\n // \n var CSS_NUMBER = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\";\n\n // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome.\n var CSS_UNIT = \"(?:\" + CSS_NUMBER + \")|(?:\" + CSS_INTEGER + \")\";\n\n // Actual matching.\n // Parentheses and commas are optional, but not required.\n // Whitespace can take the place of commas or opening paren\n var PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n var PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n\n return {\n CSS_UNIT: new RegExp(CSS_UNIT),\n rgb: new RegExp(\"rgb\" + PERMISSIVE_MATCH3),\n rgba: new RegExp(\"rgba\" + PERMISSIVE_MATCH4),\n hsl: new RegExp(\"hsl\" + PERMISSIVE_MATCH3),\n hsla: new RegExp(\"hsla\" + PERMISSIVE_MATCH4),\n hsv: new RegExp(\"hsv\" + PERMISSIVE_MATCH3),\n hsva: new RegExp(\"hsva\" + PERMISSIVE_MATCH4),\n hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/\n };\n})();\n\n// `isValidCSSUnit`\n// Take in a single string / number and check to see if it looks like a CSS unit\n// (see `matchers` above for definition).\nfunction isValidCSSUnit(color) {\n return !!matchers.CSS_UNIT.exec(color);\n}\n\n// `stringInputToObject`\n// Permissive string parsing. Take in a number of formats, and output an object\n// based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\nfunction stringInputToObject(color) {\n\n color = color.replace(trimLeft,'').replace(trimRight, '').toLowerCase();\n var named = false;\n if (names[color]) {\n color = names[color];\n named = true;\n }\n else if (color == 'transparent') {\n return { r: 0, g: 0, b: 0, a: 0, format: \"name\" };\n }\n\n // Try to match string input using regular expressions.\n // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n // Just return an object and let the conversion functions handle that.\n // This way the result will be the same whether the tinycolor is initialized with string or object.\n var match;\n if ((match = matchers.rgb.exec(color))) {\n return { r: match[1], g: match[2], b: match[3] };\n }\n if ((match = matchers.rgba.exec(color))) {\n return { r: match[1], g: match[2], b: match[3], a: match[4] };\n }\n if ((match = matchers.hsl.exec(color))) {\n return { h: match[1], s: match[2], l: match[3] };\n }\n if ((match = matchers.hsla.exec(color))) {\n return { h: match[1], s: match[2], l: match[3], a: match[4] };\n }\n if ((match = matchers.hsv.exec(color))) {\n return { h: match[1], s: match[2], v: match[3] };\n }\n if ((match = matchers.hsva.exec(color))) {\n return { h: match[1], s: match[2], v: match[3], a: match[4] };\n }\n if ((match = matchers.hex8.exec(color))) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n a: convertHexToDecimal(match[4]),\n format: named ? \"name\" : \"hex8\"\n };\n }\n if ((match = matchers.hex6.exec(color))) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n if ((match = matchers.hex4.exec(color))) {\n return {\n r: parseIntFromHex(match[1] + '' + match[1]),\n g: parseIntFromHex(match[2] + '' + match[2]),\n b: parseIntFromHex(match[3] + '' + match[3]),\n a: convertHexToDecimal(match[4] + '' + match[4]),\n format: named ? \"name\" : \"hex8\"\n };\n }\n if ((match = matchers.hex3.exec(color))) {\n return {\n r: parseIntFromHex(match[1] + '' + match[1]),\n g: parseIntFromHex(match[2] + '' + match[2]),\n b: parseIntFromHex(match[3] + '' + match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n\n return false;\n}\n\nfunction validateWCAG2Parms(parms) {\n // return valid WCAG2 parms for isReadable.\n // If input parms are invalid, return {\"level\":\"AA\", \"size\":\"small\"}\n var level, size;\n parms = parms || {\"level\":\"AA\", \"size\":\"small\"};\n level = (parms.level || \"AA\").toUpperCase();\n size = (parms.size || \"small\").toLowerCase();\n if (level !== \"AA\" && level !== \"AAA\") {\n level = \"AA\";\n }\n if (size !== \"small\" && size !== \"large\") {\n size = \"small\";\n }\n return {\"level\":level, \"size\":size};\n}\n\n// Node: Export function\nif (typeof module !== \"undefined\" && module.exports) {\n module.exports = tinycolor;\n}\n// AMD/requirejs: Define the module\nelse if (typeof define === 'function' && define.amd) {\n define(function () {return tinycolor;});\n}\n// Browser: Expose to window\nelse {\n window.tinycolor = tinycolor;\n}\n\n})(Math);\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.trimCanvas=t():e.trimCanvas=t()}(this,function(){return function(e){function t(n){if(r[n])return r[n].exports;var o=r[n]={exports:{},id:n,loaded:!1};return e[n].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var r={};return t.m=e,t.c=r,t.p=\"\",t(0)}([function(e,t){\"use strict\";function r(e){var t=e.getContext(\"2d\"),r=e.width,n=e.height,o=t.getImageData(0,0,r,n).data,f=a(!0,r,n,o),i=a(!1,r,n,o),c=u(!0,r,n,o),d=u(!1,r,n,o),p=d-c+1,l=i-f+1,s=t.getImageData(c,f,p,l);return e.width=p,e.height=l,t.clearRect(0,0,p,l),t.putImageData(s,0,0),e}function n(e,t,r,n){return{red:n[4*(r*t+e)],green:n[4*(r*t+e)+1],blue:n[4*(r*t+e)+2],alpha:n[4*(r*t+e)+3]}}function o(e,t,r,o){return n(e,t,r,o).alpha}function a(e,t,r,n){for(var a=e?1:-1,u=e?0:r-1,f=u;e?f-1;f+=a)for(var i=0;i-1;f+=a)for(var i=0;iup(); + + } + + public function uninstall() { + $migration = new Migration(); + return $migration->down(); + + } + + public function setupModuleClassDefinitions() + { + + } + + public function setupRestEndPoints() + { + + } +} \ No newline at end of file diff --git a/extensions/invoices/src/Invoices/Migration.php b/extensions/invoices/src/Invoices/Migration.php new file mode 100644 index 00000000..58552a56 --- /dev/null +++ b/extensions/invoices/src/Invoices/Migration.php @@ -0,0 +1,51 @@ +executeQuery($sql); + } + + public function down() + { + $sql = <<<'SQL' +DROP TABLE IF EXISTS `Invoices`; +SQL; + return $this->executeQuery($sql); + } +} \ No newline at end of file diff --git a/extensions/invoices/src/Invoices/Model/Invoice.php b/extensions/invoices/src/Invoices/Model/Invoice.php new file mode 100644 index 00000000..ec0be19a --- /dev/null +++ b/extensions/invoices/src/Invoices/Model/Invoice.php @@ -0,0 +1,23 @@ +getCurrentUser(); +echo "Welcome ".$user->username."
    "; + +echo "Invoices
    "; +*/ +use Classes\PermissionManager; +use Invoices\Model\Invoice; + +?>
    + + + +
    +
    +
    +
    +
    +
    +
    + +
    +
    + $user->user_level, + 'permissions' => [ + 'Invoice' => PermissionManager::checkGeneralAccess(new Invoice()), + ] +]; +?> + + + diff --git a/extensions/invoices/web/js/index.js b/extensions/invoices/web/js/index.js new file mode 100644 index 00000000..ba9630f6 --- /dev/null +++ b/extensions/invoices/web/js/index.js @@ -0,0 +1,17 @@ +import InvoiceAdapter from './lib'; +import IceDataPipe from '../../../../web/api/IceDataPipe'; + +function init(data) { + const modJsList = []; + + modJsList.tabInvoices =new InvoiceAdapter('Invoices', 'Invoices','',''); + modJsList.tabInvoices.setObjectTypeName('Invoices'); + modJsList.tabInvoices.setDataPipe(new IceDataPipe(modJsList.tabVInvoices)); + modJsList.tabInvoices.setAccess(data.permissions.Invoices); + + window.modJs = modJsList.tabInvoices; + window.modJsList = modJsList; +} + +window.initAdminInvoices = init; + diff --git a/extensions/invoices/web/js/lib.js b/extensions/invoices/web/js/lib.js new file mode 100644 index 00000000..383b5617 --- /dev/null +++ b/extensions/invoices/web/js/lib.js @@ -0,0 +1,119 @@ +import ReactModalAdapterBase from '../../../../web/api/ReactModalAdapterBase'; + +/** + * VatInvoiceAdapter + */ + +class InvoiceAdapter extends ReactModalAdapterBase { + /*constructor(endPoint, tab, filter, orderBy) { + super(endPoint, tab, filter, orderBy); + this.fieldNameMap = {}; + this.hiddenFields = {}; + this.tableFields = {}; + this.formOnlyFields = {}; + }*/ + + getDataMapping() { + return [ + 'id', + 'paymentId', + 'invoiceId', + 'description', + 'buyerName', + 'buyerAddress', + 'buyerPostalAddress', + 'buyerVatId', + 'buyerEmail', + 'sellerName', + 'sellerAddress', + 'sellerVatId', + 'amount', + 'vat', + 'vatRate', + 'issuedDate', + 'paidDate', + 'status', + 'acceptPayments', + 'created', + 'updated', + 'link', + 'paymentLink' + ]; + } + + getHeaders() { + return [ + { sTitle: 'ID', bVisible: false }, + { sTitle: 'Payment Id' }, + { sTitle: 'Invoice ID' }, + { sTitle: 'Description' }, + { sTitle: 'Buyer Name' }, + { sTitle: 'Buyer Address' }, + { sTitle: 'Buyer Postal Code' }, + { sTitle: 'Buyer Country' }, + { sTitle: 'Buyer Vat Id' }, + { sTitle: 'Buyer Email' }, + { sTitle: 'Seller Name' }, + { sTitle: 'Seller Country' }, + { sTitle: 'Seller Vat Id' }, + { sTitle: 'Amount' }, + { sTitle: 'Vat' }, + { sTitle: 'Vat Rate' }, + { sTitle: 'Issued Date' }, + { sTitle: 'Paid Date' }, + { sTitle: 'Status' }, + { sTitle: 'Accept Payments' }, + { sTitle: 'Created' }, + { sTitle: 'Updated' }, + { sTitle: 'Link' }, + { sTitle: 'Payment Link' }, + ]; + } + + getFormFields() { + return [ + [ 'id', {"label":"ID","type":"hidden"}], + [ 'paymentId', {"label":"Payment Id","type":"text","validation":"int"}], + [ 'invoiceId', {"label":"Invoice Id","type":"text","validation":"int"}], + [ 'description', {"label":"Description","type":"textarea","validation":"none"}], + [ 'buyerName', {"label":"Buyer Name","type":"text"}], + [ 'buyerAddress', {"label":"Buyer Address","type":"textarea"}], + [ 'buyerPostalCode', {"label":"Buyer Postal Code","type":"text"}], + [ 'buyerCountry', {"label":"Buyer Country","type":"select2", "source": this.getCountryList()}], + [ 'buyerVatId', {"label":"Buyer Vat Id","type":"text","validation":"none"}], + [ 'buyerEmail', {"label":"Buyer Email","type":"text"}], + [ 'sellerName', {"label":"Seller Name","type":"text"}], + [ 'sellerAddress', {"label":"Seller Address","type":"text"}], + [ 'sellerCountry', {"label":"Seller Country","type":"select2", "source": this.getCountryList()}], + [ 'sellerVatId', {"label":"Seller Vat Id","type":"text"}], + [ 'amount', {"label":"Amount with VAT","type":"text", "validation":"float"}], + [ 'vat', {"label":"Vat","type":"text", "validation":"float"}], + [ 'vatRate', {"label":"Vat Rate","type":"text", "validation":"float"}], + [ 'issuedDate', {"label":"Issued Date","type":"datetime", "validation":""}], + [ 'paidDate', {"label":"Paid Date","type":"datetime", "validation":""}], + [ 'status', {"label":"Status","type":"select","source":[["Pending","Pending"],["Paid","Paid"],["Processing","Processing"],["Draft","Draft"],["Sent","Sent"],["Canceled","Canceled"]]}], + [ 'acceptPayments', {"label":"Accept Payments","type":"select","source":[["0","No"],["1","Yes"]]}], + [ 'created', {"label":"Created","type":"datetime", "validation":""}], + [ 'updated', {"label":"Updated","type":"datetime", "validation":""}], + [ 'link', {"label":"Link","type":"placeholder"}], + [ 'paymentLink', {"label":"Payment Link","type":"placeholder"}], + ]; + } + + getTableColumns() { + return [ + { + title: 'Payment Id', + dataIndex: 'paymentId', + sorter: true, + }, + { + title: 'Invoice Id', + dataIndex: 'invoiceId', + sorter: true, + }, + ]; + } +} + +module.exports ={InvoiceAdapter}; \ No newline at end of file diff --git a/web/dist/admin-bundle.js b/web/dist/admin-bundle.js index e44fe0f5..e929e840 100644 --- a/web/dist/admin-bundle.js +++ b/web/dist/admin-bundle.js @@ -1,9 +1,44619 @@ -var _0x1121=['lastType','setRemoteTable','[object\x20Arguments]','isValid','group','_message','sketch-picker\x20','lineDiv','relative','input[name=\x27','gutterMarkers','#5300EB','__esModule','cursors','browser','_date','indirect_supervisors','coverStart','Circle','./isSet','37px','initSourceMappings','./_baseIsMatch','confirmation_date','extend','getAttribute','children','#ff3d00','electricChars','getHelpLink','changePassword','querySelector','__lodash_hash_undefined__','#ffab00','info','Issued\x20Date','Asset\x20Type','stop','Hiring\x20Pipeline','selectionEnd','onClick','0\x204px\x204px\x200','triangleBorder','alpha','isParent','Code','cleanGeneration','_handleMouseDown','#8ED1FC','Error\x20occured\x20while\x20getting\x20data','newlineAndIndent','lastAnchorNode','img','getSourceDataById','Alpha','Filter','Lower\x20Limit\x20Condition','env','Card','ImmigrationStatus','Error\x20adding\x20data\x20group:\x20','Provinces','Time-In','fixJSON','multi','#c62828','../../lib/codemirror','formObject','#f06292','columnNumber','last_name','getTimeUtilization','rgba(0,0,0,0.4)','createTableServer','Profiler','_tc_id','./AdapterBase','deduction_group','openStatus','getMonth','isSubProfileTable','AttendanceGraphAdapter','key','Loan\x20Type','doc_number','toName','#98A1A4','Copy','getModeAt','#efebe9','filters','teLeft','Parameters','file:','#006064','removeAllListeners','millisecond','map_lat','use','lastSavedEmployee','#388e3c','180px;','b0e0e6','indentUnit','setLoading','Restricted\x20Admin','#0091ea','Postal/Zip\x20Code','Personal\x20Information','modal','vars','viewOnly','./CompactColor','EmployeeDataImporter','./_stackHas','Authorization','order','Authentication\x20Email','006400','begin','codemirror','Department','ew-resize','Company\x20Payroll','out_ip','firstLine','appendChild','closeBrackets','Invalid\x20','motion','birthday','__core-js_shared__','NoBtn','forceScroll','#F47373','CodeMirror-lines','lineGutter','#yesnoModel','marital_status','inset\x200\x200\x200\x201px\x20#dadada','fa\x20fa-file-powerpoint-o','writing','set','setDataPipe','setIsComponentVisible','min-height','origin','transparent\x20transparent\x20transparent\x20#fff','goLineUp','Middle','Shift','screenReaderLabelChanged','Avatar','uploaded','renderForm','implements','#cddc39','scrollbarStyle','#f4511e','#fb8c00','skipToEnd','DeleteOutlined','_isMounted','currentWheelTarget','findColumn','bind','__proto__','status','_format','setValue','reverse','#c5e1a5','Divider','approver2','Name','CurrencyType','#194D33','If\x20salary\x20component\x20','markText','#81d4fa','keyName','lineStart','registerGlobalHelper','photoAttendance','export','lastAnchorOffset','abc','_filter_error','ffebcd','AttendanceAdapter','consoleLog','\x20','Greater\x20than\x20or\x20Equal','handlers','select2Field','fastPoll','Symbol','auto','offsetParent','fillForm','0\x201px\x204px\x20rgba(0,0,0,0.25)','disableVert','lineNumbers','CodeMirror-overwrite','#ff0000','SliderSwatches','Expiry\x20Date','6px\x206px\x200\x200','Travel\x20Date','PureComponent','#4527a0','_clone_','PayFrequency','cancelToken','yyyy/mm/dd','EmploymentStatus','_val_','lodash/isUndefined','first_name+last_name','status_from','LeaveType','_handleMouseUp','unlinkDoc','ranges','get','AAlarge','adjustWidthTo','isMemo','_submit\x20#id','indentWithTabs','#punchOutLocation','

    ','circleSize','removeListener','trim-canvas','boolean','gutters','cloneNode','008b8b','./_baseMerge','./_arrayPush','Admin','./PhotoshopPreviews','./_copyObject','defineMode','masterDataReader','datagroup','#1565c0','f0f','Upper\x20Limit','isWordChar','./components/compact/Compact','rmClass','pay_grade','trimCanvas','stateAfter','_resetFilters','Specification','addEventListener','undefined','','HuePicker','File\x20not\x20found','#ffee58','force','.datetimefield','abrupt','ChromeFields','node','@icons/material/CheckIcon','method','Allowed\x20User\x20Roles','Contact\x20details','parentNode','#4fc3f7','fail','Company\x20Structure\x20is\x20having\x20a\x20cyclic\x20dependency','ffe4b5','2px\x20solid\x20#F0F0F0','#ffb300','#d81b60','#b388ff','buffer','disabled','#008B02','getAllDataSuccessCallBack','\x20#help_err_','8fbc8f','10px\x2010px\x200','8b4513','Object','Init','wrapperHeight','inset\x200\x200\x200\x201px\x20rgba(0,0,0,.15),\x20inset\x200\x200\x204px\x20rgba(0,0,0,.25)','setAlpha','near','./_baseIsEqual','focusNode','nationality_Name','6a5acd','#tabPageAttendanceGraph\x20div','valueOf','codepoint','./_Symbol','scale(1.2)','#e57373','eol','timeout\x20of\x20','rtlMoveVisually','updateDataSuccessCallBack','nth-child','Search','./_arraySome','1e90ff','socketPath','Show','_formFileds','savePunch','lodash/isPlainObject','Please\x20select\x20one\x20or\x20more\x20module\x20groups','y-2-1\x20h:s:00','OvertimeCategoryAdapter','#333333','$set','SliderPicker','formContainer','.dataTables_paginate\x20ul','scroll','','Time','ProjectAdapter','field_validation','setRequestHeader','','extendSelection','sub_columns','duration','getActionButtons','coverGutterNextToScrollbar','offsetTop','react.profiler','spread','setShowAddNew','#5e35b1','clearWhenEmpty','inputRead','#bbdefb','createTaskList','isCancel','Module','Full\x20Professional\x20Proficiency','ModuleAdapter','form','[object\x20Set]','numberOfAttendanceLastWeek','#tabPageTimeUtilizationGraph\x20svg','css','e9967a','emailTemplates','#ffb74d','moveInputWithCursor','_edit__delete_','fill','handleMouseOver','overtimerequest','./_toSource','cm-invalidchar','0000-00-00\x2000:00:00','tinycolor','terms','toGMTString','minWidth','+move','ppt','sendCustomRequest','#ff5722','react.block','errorMap','_edit__delete__status__logs_',')\x5cs*\x5c)?','FilterOutlined','#e040fb','objectTypeName','additional_permissions','#3d5afe','closePath','then','issues','screen','','span','SalaryComponent','triples','lastIndex','even','isV2','30%','this','textContent','_field_','metaKey','renderFormNew','\x20Employees','translate(20px,\x20-14px)\x20rotate(180deg)','daa520','toStringTag','remoteTableSkipProfileRestriction','maybeUnhiddenMarkers','tempOptions','lte','./debounce','sampleValue','Description','#e0f7fa','Edit','picture','field_type','inset\x200\x200\x200\x20','payrollColumn','request','white','0\x200\x202px\x20rgba(0,\x200,\x200,\x20.6)','startHeight','DataImportAdapter','SketchPicker','findParent','Right','blinker','Mod','hasOwnProperty','#aed581','supportedLanguage','#plainMessageModel','&type=sub','eatSpace','groups','ForwardRef','lodash/cloneDeep','inset\x200\x200\x200\x201px\x20#F0F0F0','registerHelper','Mobile\x20Phone','<>','bottom-left','ensurePolled','fillRect','Decimal','sizerWidth','Error:\x20','lodash/map','./_baseIsEqualDeep','markers','Cmd-','Confirmation\x20Date','[object\x20Uint8ClampedArray]','left:\x20','translate(','expire_notification','initialFilter','Passwords\x20don\x27t\x20match','_process','d3d3d3','#18ffff','yyyy\x20MMM\x20d\x20\x20HH:mm','#33691e','#84ffff','Github','[object\x20AsyncFunction]','_status',',\x201)','getValue','Number','#4A90E2','Error\x20:\x20','isDark','This\x20document\x20is\x20already\x20in\x20use.','upload','isReadable','highlight','tabSkill','px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20height:\x20','autoRefresh','getTableActionButtonJsx','Are\x20you\x20sure\x20you\x20want\x20to\x20terminate\x20this\x20employee\x20contract?\x20You\x20will\x20still\x20be\x20able\x20to\x20access\x20all\x20details\x20of\x20this\x20employee.','Error\x20occurred\x20while\x20activating\x20Employee','map_out_lat','#f6f6f6','Share\x20Employees','','Reset\x20Filters','_drawPoint','types','activeColor','lastColumnValue','abstract','checkboard','useEffect','getDataUrl','keyword\x20c','!--','isAllLoaded','All\x20Modules','bottom-right','inputId','startStyle','File','goLineRight','./_arrayEach','required','findNext','Field\x20Type','translate(-9px,\x20-1px)','gutterClick','addRange','TravelRequest','Calculation\x20Exemptions','enumerable','?_url=1','#ffc400','../../../../components/TagList','copyRow','xRel','faebd7','./_setToArray','_toSVG','cmpPos','iter','deleteEmployee','#PayrollData','FieldNameAdapter','sort-function','edit','replace','./_mapCacheSet','ffa500','cm-tab-wrap-hack','@antv/g2plot','fa\x20fa-file-excel-o','__data__','','rgba(0,\x200,\x200,\x200.38)','#FCDC00','LeaveStartingBalance','isStandardBrowserEnv','focused','isSame','clientHeight','0\x200\x202px\x202px','image/svg+xml','beforeChange','IceDataPipe','debugger','scrollWidth','option:eq(0)','onUploadProgress','

    ','GithubSwatch','Value','Previous','gif','#424242','preRenderForm','°,\x20','clearCachedResponse','4b0082','PayrollEmployee','charCode','[object\x20RegExp]','./_createBaseEach','CodeMirror-gutters','ConnectionAdapter','`,\x20expected\x20an\x20object.','array','setScrollTop','className','fulfilled','getElement','position:\x20relative;','none','9932cc','All\x20Loan\x20Types','pageSize','blue','LabelErrorClass','updateDataFailCallBack','hasSelection','#616161','\x20.dataTables_paginate\x20.active\x20a','Last\x20Name','srcElement','style','keyof','New\x20State:','./dispatchRequest','pollInterval','./_mapCacheDelete','detectingSelectAll','./_Stack','0\x2010px\x2010px\x2010px','gutterBackground','primIndex','setInstanceId','stack','currentView','vardef','terminateEmployee','Email\x20or\x20Empty','every','HORIZONTAL_AXIS','#ffccbc','@ant-design/icons','#attendnaceMapCanvasOut','previousSibling','Employee\x20Number','#_delete_##_edit_##_renderFunction_#','handleTaskHover','headers','./../helpers/parseHeaders','editable','Errors\x20Found','travelrequest','componentDidMount','education_id','Hue','content-length','tokenize','table-row-light','19px','80px','./_baseMergeDeep','onKeyPress','unbindEventListeners','_datetime','#1de9b6','not','transformResponse','getJSON','preProcessRemoteTableData','23px','changeStatus','a52a2a','f5fffa','#263238','Button','getValidationRules','hue-picker\x20','./LogViewAdapter','parents','fieldMasterDataKeys','countryCompany','hover','./components/hover','./_initCloneObject','_canvas','CodeMirror-hscrollbar','Invalid\x20name\x20for\x20custom\x20field','Passport','Number\x20required','CompactColor','NationalityAdapter','Password\x20must\x20include\x20at\x20least\x20one\x20number','.select2Multi','_children','reportedViewFrom','upperCondition','delay','lastWrapHeight','Attachment\x202','Line','Slider','Popover','EmployeeSubLanguageAdapter','job_title','#4e342e','deleteDataGroupItem','switch','theme','legacyApiWrapper','lineWidgetChanged','lineWise','peek','init','dcdcdc','setColumnFieldName','./components/ConnectionTab','setPhotoAttendance','fill-opacity','Row','sourceData','Granted\x20On','Cancelled','display_order','goPageDown','getCSVData','First\x20Level\x20Approver','single','shadowRoot','./isArrayLikeObject','data/','historyEventDelay','attachment2','incdec','day','extends','cm-text','getRangeAt','./components/alpha/Alpha','columnMain','Monthly\x20Installment','scrollToTop','Salary\x20Component\x20Type','createTask','RGBwrap','EmployeeCertificationAdapter','Female','#3c4043','\x0aValid\x20keys:\x20','isElement','showAll','eatWhile','','propertyIsEnumerable','selectionDiv','#ffcdd2','_trackEvent','20px','f0fff0','updateFields','getFullYear','nl2br','delayingBlurEvent','viewWidth','Gender','selectionStart','handleHover','`,\x20expected\x20a\x20ReactNode.','getCustomTemplate','setCustomFields','toLowerCase','application/ld+json','this\x20hasn\x27t\x20been\x20initialised\x20-\x20super()\x20hasn\x27t\x20been\x20called','renderers','atom','fa\x20fa\x20fa-file-code-o','ExperienceLevel','Form\x20#','isForwardRef','return_date','resolve','0\x200\x200\x201.5px\x20#fff,\x20inset\x200\x200\x201px\x201px\x20rgba(0,0,0,.3),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x200\x200\x201px\x202px\x20rgba(0,0,0,.4)','encodeURI','lastIndexOf','range','CompanyStructure','saveUserSuccessCallBack','isValidHex','admin=payroll','./PhotoshopFields','#00acc1','weekdaysMin','getTimezonesWithOffset','numberOfEmployees','text/typescript','22px','1px\x20solid\x20black','&file_group=','errorMessages','showLoader','isComponentVisible','application/x-javascript','url(','`\x20of\x20component\x20`','#653294','toRgbString','year','#969696','getDerivedStateFromProps','months','Super\x20expression\x20must\x20either\x20be\x20null\x20or\x20a\x20function,\x20not\x20','blankLine','prependListener','./components/sketch/Sketch','enum','daysInMonth','getDataMapping','513px','ClientAdapter','./_listCacheClear','Work\x20related\x20details','renderModel','tagName','#827717','checkPermission','stat','changePasswordSuccessCallBack','Error\x20Occurred\x20while\x20Deleting\x20Item','orange','tabIndex','fffaf0','#ec407a','6b8e23','token','inset\x200\x200\x200\x201px\x20rgba(0,0,0,.15),\x200\x200\x204px\x20','StatusModel','./toString','clientUrl','setState','./_assignValue','getIconByFileType','.modal-backdrop','reportedViewTo','react.suspense','CodeMirror.Init','MODAL_TYPE_NORMAL','checkFileType','#6200ea','_excludeOurProps','modJsList','2px\x20#fff\x20solid','city','svg:g','#ff8f00','Leave\x20Type','1px\x20solid\x20rgba(0,0,0,0.2)','`,\x20expected\x20instance\x20of\x20`','replaceAll','formOnlyFields','0\x200\x205px\x202px\x20rgba(0,0,0,0.25)','skipTo','wordChars','Greater\x20than','killLine','First\x20Contact\x20Date','Component','pred','#attendanceMap','findPrev','teTop','Company\x20Vacation\x20Usage','addFour','swatches','react.strict_mode','#039be5','./_baseProperty','lastOp','.controls','thirdPartyPopup','expiry','#3949ab','lastChild','responseJSON','./lib','#536dfe','f0ffff','getUri','smartIndent','last_installment_date','EmployeeOvertimeAdminAdapter','-10px','property','DocumentAdapter','widgetNode','EmployeeProjectAdapter','getColorByFileType','searchTerm','#attendnaceCanvasOut','CSV\x20Field\x20Name','showPreviousView','Symbol(src)_1.','#00e676','html,\x20body','createRange','brown','98fb98','rgba(0,0,0,.08)','getRequestKey','inset\x200\x200\x200\x201px\x20#ccc','CirclePicker','Minutes','is\x20required','process.chdir\x20is\x20not\x20supported','#_delete_##_edit_#Date:\x20#_date_#


    #_note_#','findWordAt','userAgent','Memo','funding','#e64a19','other','instanceId','
    ','CommonCustomFieldAdapter','hasAccess','cellDataUpdates','showErrors','handleMouseUp','#1a237e','getData','admin=modules','\x5c$&','msgList','Male','getLuminance','goalColumn','success','createTable','Cancel','pagination','#EB144C','#757575','maybeHiddenMarkers','Job\x20Title','.colorpick','CustomPicker','PayGrade','supervisor','ASC','goDocStart','_colorpick','Max\x20Salary','2px\x20solid\x20','jsonld-keyword','visible','address2','textOrig','8px\x20solid\x20transparent','progid:DXImageTransform.Microsoft.gradient(','FilterForm','rectangle','ScrollLock','bottom','Lower\x20Limit','null-label','Time-Out','goPageUp','hsla','default_value','Error\x20occured\x20while\x20terminating\x20Employee','amber','currentTarget','share_departments','Start\x20Time','#9e9d24','overtime','./stubFalse','setTableType','projection','fa\x20fa-file-o','mix','tableInitialized','detail','2px\x20white\x20solid','fileupload-new.php?user=','./components/photoshop/Photoshop','#f5f5f5','Valid\x20Thru','0\x203px','wholeLineUpdateBefore','scrollTo','4169e1','scrollbarsClipped','loop','constructor','ff1493','#73D8FF','px;\x20left:\x20','../../../api/FormValidation','\x20Filters','concat','../../../api/ReactCustomFieldAdapter','setRowFieldName','fa\x20fa-edit','_handleTouchEnd','Step','getStatusOptions','lowercase','specification','ontimeout','getItem','cyan','doCustomFilterValidation','#00e5ff','bgClass','rect','institute','detachEvent','deletePayrollGroup','ExpensesCategory','_handlers','Employee','../utils','scrollbarFiller','hideHighlight','Data\x20Import\x20Definition','employment_status','tasks','fields','Expected\x20a\x20function','Alt-','./ModuleBase','./_assocIndexOf','Error\x20Saving\x20User','generateFieldMessage','getValueObjectWithLabel','client','y-1-2','SwatchesColor','CodeMirror-code','element','getMetaFieldForRendering','-4px','type','AAsmall','listeners','offsetLeft','.simplemde','delWordBefore','default_module','Report','Space','orderDataGroup','addFailed','./now','','commonAncestorContainer','&method=get&url=/','./_arrayMap','Typography','./_nodeUtil','Super\x20expression\x20must\x20either\x20be\x20null\x20or\x20a\x20function','800080','mobile_phone','nic_num','button','[object\x20Float64Array]','*compose','../../helpers/checkboard','#bcaaa4','\x22\x20width=\x22','substring','compact','#bdbdbd','#FCB900','defineExtension','Basic\x20','removeAllByPrefix','EmployeeSalary','show','json','hsl','15px','\x20Entries\x20Last\x20Week','','helperType','`,\x20expected\x20an\x20array.','Saturation','\x20:input','getTimeUtilizationSuccessCallBack','#ffd600','Click','fieldNameMap','Taxi','If\x20the\x20type\x20is\x20Reference\x20then\x20\x27Depends\x20On\x20Field\x27\x20can\x20not\x20be\x20empty','shared','_upload','moveOnDrag','+input','clearError','popupDialog','move','#0062B1','a0522d','16px\x200\x206px\x2016px','Column','desaturate','HEXinput','../components/IceStepFromModal','./_equalObjects','smart','employee_Name','Min\x20Salary\x20should\x20be\x20smaller\x20than\x20Max\x20Salary','./flattenNames','url','onBegin','EducationAdapter','#00b8d4','makeDataGroupSortable','./_equalByTag','timeout','trim','Steps','label[for=\x27','currentColor','Institute','EmployeeSkillAdapter','getMetaFieldValues','90ee90','0\x202px\x202px\x200','xxxxxxxxxx','Text\x20Field','f4a460','receivedFocus',',100%,\x2050%)','6px','that','./keysIn','.saveBtnTable','indentSelection','return','f5f5f5','setViewOnly','slowPoll','interface','./_stackDelete','tableData','0\x2017px\x2050px\x20rgba(0,0,0,.19),\x200\x2012px\x2015px\x20rgba(0,0,0,.24)','_resizeCanvas','fileList','','./_stringToPath','ECONNABORTED','pollSelection','unmountComponentAtNode','rgb','setDirection','ffc0cb','.dataTables_filter\x20input','prev','argv','./ChromePointer','  ','Required','needsContentAttribute','drawEmployeeDistributionChart','fillStyle','./_cloneDataView','2f4f4f','indentation','altKey','hideFirstChars','JobTitleAdapter','./_arrayFilter','The\x20','Chrome','phrases','debounce','application/x-www-form-urlencoded;charset=utf-8','CodeMirror-gutter-wrapper','maxContentLength','Triple','delCharBefore','#999','lineSep','hsva(','toISOString','#ffd180','#e0e0e0','gradient','fieldset','CopyOutlined','rowTable','CancelToken','color','field','dragenter','alert','#ffd54f','Request\x20failed\x20with\x20status\x20code\x20','charts/company-leave-entitlement','#8e24aa','Invalid\x20attempt\x20to\x20destructure\x20non-iterable\x20instance.\x0aIn\x20order\x20to\x20be\x20iterable,\x20non-array\x20objects\x20must\x20have\x20a\x20[Symbol.iterator]()\x20method.','008000','documentElement','Download\x20Report\x20\x20','deleteParams','8px','#attendnaceCanvasPunchInTime','deviceYDPI','../../../api/ReactModalAdapterBase','mousemove','Immigration\x20Status','resize','call','showEdit','ff8c00','#attendancePhotoModel','deviceXDPI','Contact\x20Email','period_months','rgba(255,\x20255,\x20255,\x201)','beforeRenderFieldHook','EmployeeSubEmergencyContactAdapter','scrollLeft','saturation','widths','./components/material/Material','fffafa','showDomElement','Selected\x20file\x20type\x20is\x20not\x20supported','simpleCheckForValidColor','lineWidgetAdded','\x20failed','slider','callFunction','CodeMirror-gutter\x20','getSpinner','radiusX','#64dd17','update','lineWiseCopyCut','setShowDelete','BlockPicker','%,\x20','../../../api/ApproveAdminAdapter','getDate','config','draggable','prependOnceListener','50%','third','numberOfCourses','next','expires=','translations','_blank','writable','indexOf','./eq','setUneditable','\x20->\x20','#417505','selectAll','insert','inset\x200\x200\x200\x201px\x20#fff','./CompactFields','cm-ignore-events','childNodes','atomic','Upload','addGraph','endPoint','@icons/material/UnfoldMoreHorizontalIcon','Double','_initLocalFormFields','./_hashSet','Download','./../utils','#f4ff81','poll','Input','./transformData','Other','change','class','insertInner','#ff6f00','#2196f3','filter','Currency','0px\x2016px\x200px\x2016px','source','processing','Child','remoteFieldsExists','[object\x20Array]','sizer','plainMessage','resetSelectionOnContextMenu','delete','gutterContextMenu','specialChars','px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20height:\x20','gutterFiller','setShowCancel','lineNumChars','react-is','./Checkboard','_remove','rgba(255,\x20255,\x20255,\x200.5)','lines','showSelection','./cancel/CancelToken','ColorWrap','_status_','cd853f','cancelYesno','Min\x20Salary','isModuleInstalled','&iDisplayStart=','xsrfHeaderName',',\x20100%,\x2050%)','Attendance\x20Data','refresh','admin=charts','Inconsistent\x20bindings\x20for\x20','application/xml','submit','byteLength','rangeCount','length','LanguageAdapter','globalVars','position:\x20absolute;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20top:\x20','#changePasswordBtn','stateChange','TwitterPicker','PhotoshopButton','moveH','Suspended','Add\x20','content-type','__text__','Element','useState','getStatusFieldPosition','tableType','floor','toString','DataImportFileAdapter','00f','[object\x20Uint8Array]','setSelection','data.php','_lastVelocity','Signature','valueTable','UsageAdapter','split','modulePathName','payslipTemplate','default','#558b2f','./components/twitter/Twitter','Dropdown','itemNameLower','#0097a7','goDocEnd','cursorActivityHandlers','def','getActionButtonHeader','Employee\x20Salary','location','require','','image_out','&ob=','tabCustomField','isConcurrentMode','./_baseForOwn','msTouchAction','path','return;','object-assign','unbind','display','Multi\x20Select','employee','Swatch','copied','Upper\x20Limit\x20Condition','789','#80deea','Total','Home\x20Phone','Share\x20with\x20Employee','contenteditable','Statistic','updateFieldsSubForm','./isSymbol','','21px','#ffff00','IE_PROTO','./keys','cachedTextHeight','radio','previousView','#651fff','position:\x20absolute;\x20width:\x2030px;\x20height:\x2030px;\x0a\x20\x20\x20\x20\x20\x20top:\x20','mode','user-agent','colorpicker-preview','./_objectToString','goGroupLeft','#ff5252','getUserModules','CompanyLeaveEntitlementChart','0px','work_station_id','pop','application/typescript','./_baseMap','join','suppressEdits','cancel','check','SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED','has','CSS_UNIT','closeChangePassword',',.1f','isView','nothing','charts/employee-check-ins','isTypedArray','isReady','await','stringify','inline-block','cursorScrollMargin','#ff9800','#ffffff','toggle','user','#attendnaceCanvasInWrapper','showFormOnPopup','typescript','username','maps','charCodeAt','role','\x20and\x20','UserRoleAdapter','#c6ff00','SignaturePad','getFilter','addListener','lex','fieldSymbols','EmployeeEducationAdapter','defineOption','lineWrapping','goLineEnd','-16px','Form','Middle\x20Name','getAllResponseHeaders','getMode','./hasIn','./_memoizeCapped','dummy','Password\x20must\x20include\x20at\x20least\x20one\x20symbol','LineWidget','viewportMargin','dataGroup','getSelection','Document\x20Id','-11px','#F5A623','./SliderSwatches','0px\x204.4px','getRemoteSourceKey','#_delete_##_edit_##_label_#:#_value_#','deduction_allowed','&data=','.dataTables_filter\x20label','create','#fff3e0','Confirm\x20Deletion','alpha-picker\x20','[]{}','.dataTables_length','9{0,10}.99','modEmployeeDeleteProfileImageCallBack','#ff9e80','canvasProps','ffdab9','#D0021B','fff','Projects','getAttendanceSuccessCallBack','rgba(0,\x200,\x200,\x200.12)','getHeaders','setAdminEmp','head','maxLookAhead','./_basePropertyDeep','RGBlabel','#c2185b','Validation','home_phone','191970','./_WeakMap','./_mapCacheGet','indent','attachment','generateOptions','Employee\x20contract\x20terminated.\x20You\x20can\x20find\x20terminated\x20employee\x20information\x20under\x20Terminated\x20Employees\x20menu.','#FEF3BD','./_baseToString','groupSpacing','16px','100','getNameFromFieldName','composing','text/plain','progress','\x20C\x20','CustomFieldAdapter','Enter','closeBefore','triangle','./AlphaPointer','photoshop-picker\x20','share_employees','getFile','numberOfUsers','onSwatchHover','getTableColumns','offsetHeight','SUCCESS','downloadPdf',')=([^;]*)','#cfd8dc','#d84315',',\x201)\x20100%)','modeOption','clearTimeout\x20has\x20not\x20been\x20defined','goCharLeft','async','Item\x20removed.\x20This\x20change\x20will\x20be\x20effective\x20only\x20when\x20you\x20save\x20the\x20form','lexical','nextLine','scrollCursorIntoView','fff0f5','swatches-picker\x20','./components/github/Github','File\x20Type\x20Error','statementIndent','unmountForm','YYYY-MM-DD\x20hh:mm:ss','maxLine','forceUpdate','./SystemData','EmployeeCompanyLoanAdapter','GithubPicker','#bf360c','#ea80fc','month','menu+name','target','(?:[-\x5c+]?\x5cd*\x5c.\x5cd+%?)|(?:[-\x5c+]?\x5cd+%?)','./adapters/xhr','#PayrollForm','./_baseIsNative','_addPoint','documentname','issued','deleteEmployeeFailCallback','256px','Client','Set','#000000','[object\x20Undefined]','modifyCSVHeader','Data\x20Type','throw','tinymce','getImageData','href','material-colors','./PhotoshopPointer','solid','top','SyncOutlined','hex4','afeeee','options','PayslipTemplateAdapter','skip','../../helpers/interaction','layout','e_stopPropagation','translate(-10px,\x20-7px)','translateX(-2px)','#90caf9','','HiringPipeline','top-left','Access\x20Forbidden','handleKeyDown','map_lng','typeOf','clearRedo','datetimepicker','./_listCacheGet','UserAdapter','[object\x20String]','barMeasure','$1.*?','CodeMirror-cursor\x20CodeMirror-secondarycursor','datepicker','66cdaa','fetchConfig','`,\x20but\x20its\x20value\x20is\x20`undefined`.','text/javascript','other_id','position:\x20static','#adminUsersChangePwd\x20#conpwd','List','#ede7f6','','keyword\x20b','cut','-02-29','#808080','.saveBtn','emailOrEmpty','twitter-picker\x20','#FCCB00','./HuePointer','date','numberOfLeaves','[\x5cs|\x5c(]+(','There\x20were\x20no\x20data\x20for\x20selected\x20filters','./_stackSet','dims','./isLength','errorMsg','Salary\x20Component','4px\x200','#dce775','handler','-server','\x27].edit(\x27_id_\x27);return\x20false;\x22\x20type=\x22button\x22\x20style=\x22position:\x20absolute;bottom:\x205px;right:\x2035px;font-size:\x2013px;\x22\x20tooltip=\x22Edit\x22>','setScrollLeft','moveToTop','anchor','0px\x200px\x200px\x200px','doCustomValidation','0\x20-10px','enabled','double','Owner','Descriptions','#numberOfCandidates','wheelDX','./_getPrototype','fieldMasterDataCallback','All\x20Employees','lodash/debounce','gte','getElementSuccessCallBack','toUpperCase','deepCopy','items','\x20at\x20index\x20','Limited\x20Working\x20Proficiency','PhoneTwoTone','PageDown','drop','formError','handleView','min-width:\x201px','Province','Leave\x20Group','lineNumber','simplemde','PrintScrn','locale','1px\x20transparent\x20solid','flush','undone','bc8f8f','insertBefore','initForm','#283593','AttendanceStatusAdapter','toggleComment','showControls','#ffcc80','dragleave','formInitialized','isRequired','./ReactModalAdapterBase','pptx','User\x20Level','execCommand','events','path=','logicalXDPI','isURLSearchParams','Compact','#880e4f','responseEncoding','15px\x2015px\x200','#A4DD00','valid_until','updateDataAllFailCallBack','./IceLabel','#ffab40','leaveSubmitMethodAlone','http://blog.icehrm.com/docs/settings/','setUpdatedValue','https://avatars.dicebear.com/api/initials/:','&sm=','clearOnEnter','tabCompanyGraph','getClientRects','bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN','#helptext','Custom\x20Field','onerror','application/x-json','#4A4A4A','configureMouse','throwIfRequested','map_out_snapshot','#b71c1c','Error\x20occured\x20while\x20deleting\x20Payroll\x20Group','addModeClass','isNumber','setPrototypeOf','./_getMapData','subtract','#00838f','getValidationRule','isAxiosError','getLogs','#D9E3F0','c0c0c0','\x20=\x20','Group','setData','now','drawCompanyLeaveEntitlementChart','#7B64FF','Qualifications','space-between','#dd2c00','getCustomUrl','signal','NODE_ENV','Download\x20Report','deleteFailCallBack','react-signature-canvas','Elementary\x20Proficiency','capitalize','You\x27re\x20all\x20caught\x20up!','Parent','lineNumberFormatter','total','props','activateEmployee','./_castFunction','14px','csvData','ffd700','steps-action','attributes','rc-editable-input-','#69f0ae','construct','optionChange','react.scope','dataPipe','483d8b','\x20#grid','px;\x0a\x20\x20\x20\x20\x20\x20z-index:\x201000;\x20background:\x20',',\x2050%,\x20','Payroll\x20Data','find','Fragment','getFormOptions','isArray','ffdead','SketchFields','fromData','sorting','oldHue','CircleSwatch','import','#B0BC00','product','Date','wrapper','#c5cae9','From','All\x20Languages','validate','Please\x20select\x20','#attendnaceMapCanvasOutWrapper','Pause','\x22\x20height=\x22','rgba(255,\x20255,\x20255,\x200.7)','8px\x208px\x200px\x200px','gutter-row','./_cloneSymbol','#f57f17','MODAL_TYPE_STEPS','markerCleared','objectType','primary','#ff8a80','#eceff1','CompanyDocumentAdapter','hash','validateCellValue','`.\x0aBad\x20object:\x20','.groupAddBtn','clientWidth','\x20Active','react.suspense_list','oldDisplayWidth','modeSpec','renderModelFromDom','isAsyncMode','./IceFormModal','responseURL','operation','Address\x20Line\x201','gutterWidth','rbottom','rgb(248,\x20248,\x20248)','onDownloadProgress','110px','pay_frequency','defaultView','#b39ddb','_strokeBegin','typeof','PauseCircleOutlined','wrapClass','#ffeb3b','right','amd','react.responder','Deduction','innerHTML','address','application/json','defineMIME','calculateChange','zeroWidthHack','Create\x20User','Approved','./_MapCache','permissions','drag','setSize','editableTableWidget','1px','Job\x20Title\x20Code','meta','setTypes','PDF','([{}])','outer','handled','focus','oneOfType','createDocumentFragment','contextmenu','abs','#d7ccc8','Depends\x20On','YesBtn','viewOffset','setApiUrl','Social\x20Security\x20Number','filetypes','baseURL','parseValue','fetchMasterData','_div_inner\x20[fieldid=\x27','removeChild','#68CCCA','wrapperWidth','quasi','dblclick','Axios','moveToElementText','Heads','transform','showActionButtons','Tag','Swatches','licenseId','text','#punchInIp','expire_notification_month','Date\x20Added','#ef9a9a','coordsChar','./memoize','filtersAlreadySet','ReportGenAdapter','upperLimit','tabSize','overwriteToggle','\x0a\x0a\x0a\x0a','bmp','job_title_Name','toUTCString','../core/buildFullPath','`,\x20but\x20its\x20value\x20is\x20`null`.','#37474f','Password\x20too\x20short','7cfc00','cssText','./_overRest','zIndex','EmployeeDependentAdapter','nativeBarWidth','contact_email','Joined\x20Date','#697689','responseText','event','./_initCloneByTag','createTextRange','which','itemName','leftInside','#ff8a65','ffb6c1','iterator','validations','Tasks','#f57c00','#e6ee9c','Pending','block-picker\x20','10px','eat','createRef','google-picker\x20','Copy\x20System\x20Report','hideLabel','colorder','saveCallback','department','PropTypes','#ef6c00','linear-gradient(to\x20bottom,\x20rgba(','.completeBtnTable','Contact\x20Number','Color\x20Picker','allow-null','8b008b','NIC','tabindex','getStatusOptionsData','','maxLineChanged','dragDrop','#plainMessageModel\x20.modal-body','#f0f4c3','#Payroll','process.binding\x20is\x20not\x20supported','getHistory','indigo','./components/swatches/Swatches','_handleTouchStart','optimizelegibility','1000px','attachEvent','./MasterDataReader','viewHeight','./_baseIsArguments','SalaryComponentType','0\x200\x200\x201px\x20rgba(0,0,0,.15),\x200\x208px\x2016px\x20rgba(0,0,0,.15)','fun','checkValues','jsonld','secure','#a5d6a7','#_delete_#','placeholder','28px','data_import_definition','lodash/merge','word','string','Rented\x20Vehicle','__CANCEL__','License\x20Valid\x20Until','2px','validatePassword','wheelDY','keys','#B8E986','purpose','sendCellDataUpdates','0\x20solid\x20rgba(0,0,0,0.25)','hasCustomButtons','hex3','columnIDMap','EmployeeSubEducationAdapter','lineSeparator','hsv','Driving\x20License\x20No','react.fundamental','modJs','sigCanvas','isFragment','#03a9f4','flexbox-fix','renderFormSelectOptionsRemote','\x0a','MODULE_NOT_FOUND','hex8','lodash/each','\x20CodeMirror-linebackground','setAdminProfile','activeElt','Modal','hideLoader','signatureField','val','startState','#009CE0','closeCreateUser','clientX','height','hideError','initMasterDataReader','Google','validateStatus','CodeMirror-scroll','getAllDataFailCallBack','./_safeGet','Request\x20aborted','colorpick','steps','adapter','div','timezone','toHsl','isDayjs','#F78DA7','#78909c','Select','.50','maxLineLength','void','focusOffset','yellow','saveUsageFailCallBack','cm-tab','data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==','activeElement','filterQuery','StrictMode','dot','render','hasClass','Label','px\x20','datagroupTemplate','findMarks','ee82ee','Reset','Help\x20Text','purple','scroller','scale','keydown','blur','getAllData','./InterceptorManager','getSuccessCallBack','Searchable\x20DropDown','markerChanged','addError','transport','System\x20Data','allowDropFileTypes','$$typeof','position:\x20absolute;\x20left:\x20','#e53935','goWordLeft','lodash/forOwn','isLazy','','.row','getOption','-7px','handleDelete','dc143c','value','Speaking','patch','','_lastWidth','colors','./_coreJsData','[object\x20Float32Array]','reloadCurrentElement','','\x20.uploadInput','fuchsia','createFromField','mustUpdate','./_copyArray','tabEmployeeLanguage','#messageModel','react.forward_ref','size','-6px','permission','()[]{}\x27\x27\x22\x22','removeAllRanges','menu','ReportAdapter','./_baseMatches','40e0d0','jpg','sticky','innerHeight','container','inset\x200\x200\x200\x201px\x20rgba(0,0,0,0.1)','maxGeneration','getUser','goLineStart','setTranslationsSubModules','#9900EF','merge','ContextConsumer','AsyncMode','Timezone','./_baseKeys','marker','70%','cursorBlinkRate','ProvinceAdapter','#42a5f5','transparent\x20transparent\x20rgba(0,0,0,.1)\x20transparent','fixedPos','#ccff90','rowId','column','autocorrect','viewElement','CodeMirror-scrollbar-filler','isValidElementType','Select\x20Pay\x20Frequency','CurrencyTypeAdapter','5px\x200\x205px\x208px','alert_on_missing','datum','initial','setEnd','#AEA1FF','Purpose','terminateEmployeeSuccessCallback','./cancel/Cancel','Progress','uppercase','goLineDown','e_stop','isBlob','reduce','ReviewTemplate','gray','contains','#2CCCE4',',endColorstr=','else','./_isPrototype','#afb42b','getTableTopButtonHtml','[object\x20process]','attendnaceCanvasIn','getColorByRandomString','send','dragLabel','lookupKey','understanding','wheelEventPixels','toHex','End','timeoutErrorMessage','d8bfd8','goGroupRight','ReactCSS','#f3e5f5','handleActive','#ff80ab','.timefield','caches','touchstart','stroke-width','./_baseAssignValue','#448aff','codemirror/addon/display/autorefresh','generation','','./_cloneTypedArray','emit','employees/','7b68ee','scrollToPos','8a2be2','toggles','insertTab','fa\x20fa-file-text-o','
    ','includes','Editable','Job\x20Titles','ownerDocument','spellcheck','wordCharacters','visitLink','`\x20has\x20invalid\x20PropType\x20notation\x20inside\x20arrayOf.','fetchCompleted','./_SetCache','keyHandled','Clear','error','fa\x20fa-file-image-o','.paydayCheck','38px','Timeline','travel_from','ArchivedEmployee','Are\x20you\x20sure\x20you\x20want\x20to\x20archive\x20this\x20employee?\x20Data\x20for\x20this\x20employee\x20will\x20be\x20saved\x20to\x20an\x20archive\x20table.\x20But\x20you\x20will\x20not\x20be\x20able\x20to\x20covert\x20the\x20archived\x20employee\x20data\x20into\x20a\x20normal\x20employee.','updateFromDOM','validator','getArrowOffset','Alt','./_hashGet','#e0f2f1','onCancel','We\x20found\x20a\x20cyclic\x20dependency\x20due\x20to\x20following\x20reasons:
    ','resetWarningCache','referer','.code','devicePixelRatio','mod_order','[object\x20Map]','+delete','anchorOffset','presentation','#333','Ctrl','EmployeeAdapter','./ChromePointerCircle','updateData','currentFilterString','push','Submit','_isEmpty','UserRole','pre-format-function','./components/circle/Circle','Task\x20List','select','httpsAgent','Start\x20Date','keyMaps','storage','

    ','getTokenTypeAt','getTableChildComponents','./_createAssigner','#4dd0e1','CompactFields','AlphaPointer','Visible\x20To','grid','#D4C4FB','axis','UserDataImporter','first_name','setSignature','Hide','control2','#81c784','#2e7d32','X-XSRF-TOKEN','sol','time','Clocked\x20In\x20Status','0\x200\x202px\x20rgba(0,0,0,.3),\x200\x204px\x208px\x20rgba(0,0,0,.3)','hitSide','goLineStartSmart','Head\x20Office','match','gaq','_gradientType','context','CodeMirror-gutter-filler','Text','admin=','addToken','#455a64','Loan\x20Period\x20(Months)','select2-focusser','OvertimeCategory','flattenNames','spans_','loadRemoteDataForSettings','EmployeeSalaryAdapter','saveSuccessCallback','inset\x200\x200\x200\x201px\x20rgba(0,0,0,.15)','prepareSelection','react.provider','undo','multiBarChart','changedTouches','Payroll\x20Columns','#009688','inclusiveRight','./_equalArrays','GoogleFields','\x20for\x20all\x20ranges','explicitlyCleared','waitForIt','696969','Processing','toggleOverwrite','getFieldValues','lastWrapWidth','#adminUsersChangePwd_error','isPlainObject','User\x20Name','#212121','updateProfileImage','ant-advanced-search-form','redo','transitionDuration','Education','closeMessage','lowerCondition','validation','__wrapped__','lineNumWidth','hsl(','CodeMirror-linewidget','Employee\x20deleted.\x20You\x20can\x20find\x20archived\x20information\x20for\x20this\x20employee\x20in\x20Archived\x20Employees\x20tab','settings','replaceRange','minHeight','handleFocus','cachedPaddingH','bookmark','_submit','HoliDay','remote-source','penColor','after','calculation_columns','#E27300','customAction','postRenderForm','arc','./_baseCreate','saturation-white','http://blog.icehrm.com/docs/projects/','downloadArchivedEmployee','Body','gutter','offsetWidth','#999999','country','addCustomFields','updateAllMasterData','proxy','Block','current','readFromDOMSoon','string-2','./_setToString','Married','aqua','countColumn','#9F0500','Time\x20Zone','#9c27b0','#B80000','overlays','&sSortDir_0=','./_getNative','hostname','BlockSwatches','CompanyLeaveEntitlementChartLoader','rest','borderRightWidth','#43a047','_global','isStrictMode','setPermissions','Hidden','#50E3C2','ethnicity','./utils','addToLangTerms','prototype','Address\x20Line\x202','body','10px\x200\x200\x2010px','getOwnPropertyNames','#a7ffeb','./../helpers/buildURL','removed','position:\x20relative;\x20z-index:\x201','./_stackGet','touchmove','#ABB8C3','getKey','hsva','sent','#f44336','./_baseClone','drawOnlineOfflineEmployeeChart','#fff9c4','./_baseUnary','./IceDataGroup','./property','keyMap','Yes','redraw','_originalInput','./isArguments','Roboto','N/A','CodeMirror-gutter-background\x20','action','_download_','isProfiler','onload','Rail','_edit__process__clone__delete_','link','transparent\x20transparent\x20transparent\x20#555','./_baseHasIn','user_roles','Priority','circle','oncopy','splitSpaces','_roundA','Password\x20must\x20include\x20at\x20least\x20one\x20uppercase\x20letter','Inserting\x20collapsed\x20marker\x20partially\x20overlapping\x20an\x20existing\x20one','rgba','rows',':checked','Pos','#7986cb','fromDataURL','radius','hide','numberOfProjects','undoSelection','3.6px/2px','getCustomActionUrl','backgroundColor','work_email','visibility','30px','renderFormField','inset\x200\x201px\x201px\x20rgba(0,0,0,.1),\x200\x201px\x200\x200\x20#ECECEC','form-control','#fafafa','','Add/Edit','formFieldsToData','modulePath','renderedView','margin-left:\x20-','visible_to','localVars','from','32cd32','background','keyword\x20a','resetDataGroup','page','startColorstr=','user_level','ops','util','_div_inner','`,\x20expected\x20a\x20single\x20ReactElement.','calculation_hook','Raised','func','unhide','maxWidth','./_mapToArray','#9ccc65','Employment\x20Status','Job\x20Details','EmergencyContactAdapter','If\x20the\x20type\x20is\x20Reference\x20then\x20\x27Depends\x20On\x20Field\x27\x20should\x20be\x20empty','CompanyLoan','./Saturation','Unit','sortOrder','lastFocusOffset','outerHeight','Sub\x20Unit','Regional\x20Office','#d32f2f','preparedSelection','reduceXTicks','columns','light-blue','isPortal','../../../components/TaskList','LoginOutlined','','mousedown','EmployeeOnlineOfflineChart','access','.filterBtn','./GoogleFields','true','materialColors','image_in','getInputField','Employee\x20Distribution','#546e7a','PayrollColumnTemplateAdapter','currentReport','./Raised','getSubItemHtml','getTabViewEmployeeFilterButtonJsx','twoColumnLayout','iter\x20insert\x20remove\x20copy\x20getEditor\x20constructor','compare','validateOnChange','_ok','autoCloseBrackets','__filterString__\x20','Overlays\x20may\x20not\x20be\x20stateful.','retry-after','240px','work_phone','message','addFailCallBack','reading','fff5ee','toHexString','for','max-forwards','readAsText','_strokeUpdate','#FB9E00','goCharRight','#ff6e40','linear-gradient(-180deg,\x20#F0F0F0\x200%,\x20#D4D4D4\x20100%)','98px','./isArray','EthnicityAdapter','hasFocus','openLine','margin','helper','textarea','toRgb','disableInput','[object\x20Error]','CodeMirror-sizer','_construct','enableLocalStorage',')[,|\x5cs]+(','viewFrom','pathname','rgba(','isSet','fieldMasterData','png','AخA','selectionsMayTouch','80%','status_to','image','JobTitle','file','fieldMasterDataCallbackData','eject','Tr:','notes','_applyCombination','#ef5350','run','cantEdit','nodeType','small','createRemoteTable','_div','VerifiedOutlined','rightInside','sortField','block','black','CodeMirror-wrap','convertToRelativeTime','formTemplate','PhotoshopPointerCircle','32px','d2b48c','12px','getSeconds','namespace','getTime','field_label','EmployeeSubDependentAdapter','getCachedResponse','[object\x20Uint32Array]','hurry','common','YYYY-MM-DDTHH:mm:ssZ','dragFunctions','data:image/svg+xml;base64,','#BD10E0','getFilters','before','maxWait','Tabs','EmployeeDistributionChart','#ffa726','chdir','deleteSuccessCallBack','putImageData','getOwnPropertyDescriptor','lineMeasure','setDefaultValues','Twitter','fixCyclicParent','#29b6f6','16px\x2016px\x2012px','componentDidUpdate','getMinutes','id_number','width','initializeReactDashboard','_ctx','\x20Courses','0\x203px\x2012px\x20rgba(0,0,0,0.15)','SliderSwatch','currentElement','Professional\x20Working\x20Proficiency','reader','component','gracePeriod','1px\x20solid\x20#878787','Content-Type','Separators','User\x20Roles','retriveItemsAfterSave','getTableData','Writing','Inactive','.signatureField','Upload\x20Profile\x20Image','vert','Company\x20Url','checked','baseToken','draggingText','defineProperty','viewFailCallBack','_point','./components/common/ColorWrap','Direct\x20Supervisor','./_baseAssignIn','setStart','Seconds','startPoint','forEach','None','ClockCircleOutlined','position','position:\x20relative','specialCharPlaceholder','Enabled','pageY','in_ip','boxShadow','showPunchImages','StartToEnd','hour','translate(-3px,\x20-9px)','test','gender','field_options','search','scrollbars','showPrimarySelection','\x20on\x20','setAttributeNS','#C4DEF6','User','getField','#ffe082','Contact','blurValue','offset','wheelStartX','radiusY','isFunction','convertToTree','#ff6d00','../helpers/isAbsoluteURL','_delete_','dataMessage','hasHeights','note','Employee\x20Data','Address','0000-00-00','data','columnFieldName','diagonal','compositionend','./stubArray','dataType','getContext','lastSelOrigin','EmployeeSubSkillsAdapter','Project','Benifit','setAccess','processFormFieldsWithObject','descend','validUntil','ffa07a','CodeMirror-cursors\x20CodeMirror-dragcursors','checkedZeroWidth','input\x20search\x20text','./defaults','slow','travel_date','externalMeasured','`\x20of\x20type\x20`','attendnaceMapCanvasIn','travel_to','9px','fromRatio','detach','args','../common','./_baseKeysIn','EmployeeExpense','function','./_Map','Restricted\x20Manager','#666','enableZeroWidthBar','January_February_March_April_May_June_July_August_September_October_November_December','./isObject','#004d40','40px','./IceSignature','canvas','../cancel/isCancel','EditableInput','setupApiClient','ID\x20Number','Uint8Array','_reset','Not\x20Processed','scrollToBottom','TerminatedEmployeeAdapter','host','keySeq','./GooglePointerCircle','getShowAddNew','Termination\x20Date','f00','','speaking','#40c4ff','Paragraph','html','&version=v2','#f48fb1','updateMaxLine','./components/slider/Slider','large','inputStyles','./helpers/normalizeHeaderName','2px\x202px\x200\x200','setTemplates','leading','#311b92','fatArrowAt','parameters','./isArrayLike','6495ed','PageUp','initTable','touches','0\x200\x2024\x2024','Rejected','f0f8ff','date_start','Buffer','All\x20Departments','Language','RGBinput','case','AlphaPicker','regexp','./_overArg','renderFormSelectOptions','codeMirror','CodeMirror','#64ffda','slider-picker\x20','Type','`\x20is\x20marked\x20as\x20required\x20in\x20`','https://icehrm.gitbook.io/icehrm/training-and-reviews/document-management','#7e57c2','rtl','Version','0\x201px\x204px\x200\x20rgba(0,\x200,\x200,\x200.37)','Company\x20Name','0\x206px\x2020px\x20rgba(0,0,0,.19),\x200\x208px\x2017px\x20rgba(0,0,0,.2)','Listening','./_getTag','#fce4ec','prop-types','Differance\x20between\x20start\x20and\x20end\x20dates\x20should\x20not\x20be\x20more\x20than\x2090\x20days','./_listCacheSet','callee','react.memo','private','px;','setObjectTypeName','./helpers/spread','templates','City','getLogsSuccessCallBack','history','nocursor','barLeft','#7cb342','setCurrentProfile','forceInjectValuesBeforeSave','getTimezoneOffset','15px\x209px\x209px\x2015px','./checkPropTypes','lastSelOp','tables','_drawCurve','cursorDiv','#2962ff','_mouseButtonDown','setCurrentPayroll','0\x202px','Restricted\x20Employee','#ff1744','if-unmodified-since','d2691e','tabJobTitle','react.context','_div\x27]','End\x20Date','code','showMessage','faf0e6','7fffd4','unix','ChromePointerCircle','#attendnaceMapCanvasIn','random','readyState','preventDefault','#B3B3B3','delCharAfter','13px','#26c6da','datetime','CompactPicker','./_freeGlobal','changePasswordFailCallBack','CodeMirror-crosshair','ShowPopup','MonitorOutlined','#c8e6c9','nodeName','blueGrey','Parent\x20Structure','./_baseSetToString','tabPayGrade','Work\x20Station\x20Id','./_cloneArrayBuffer','Last\x20Installment\x20Date','Home','tab','startOf','ensure','fieldTemplates','callBackFail','\x20','keyword\x20d','attachment1','showMultipleSelections','Error','`,\x20expected\x20one\x20of\x20','Columns','grey','Less\x20than\x20or\x20Equal','updateAllData','authorization','inclusiveLeft','./_cacheHas','#numberOfCourses','Sketch','_id_','full','setOrderBy','./_Promise','getThemeColors','var','moveV','tableContainer','singleSelection','Field\x20Label','nextTick','isInteger','Ethnicity','getEditButtonJsx','Hours','noJSONRequests','distanceTo','Work\x20Email','date_added','./_cloneRegExp','title','handleMouseDown','attr','Alert\x20If\x20Not\x20Found','highlightFrontier','100ms\x20box-shadow\x20ease','#fff8e1','transposeChars','left','./SketchFields','barWidth','Loan\x20Amount','_calculateCurveControlPoints','cursorCoords','0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ','configurable','HH:mm','Property\x20`','lookAhead','./_castPath','PayrollAdapter','&skip=1','On\x20Hold','canceled','pageXOffset','round','#ff7043','control1','EmployeeImmigrationAdapter','slice','beforeCursorEnter','SliderPointer','scrollToElementBottom','select2-input','isStream','end','MMM\x20d\x20\x20HH:mm','changed','PayrollColumnAdapter','validationRules','_val_','selectionChanged','react.portal','[datetimemask]','sof','employment_status_Name','localStorage','showAllTasks','Field\x20Options','isString','over','Option','min_salary','teal','lowerLimit','sortingStarted','_data','idField','new','charCoords','lastLine','lineOracle','styleClasses','#6d4c41','getTextArea','inputStyle','b8860b','orderBy','Employee\x20Check-Ins','[object\x20Int8Array]','#303f9f','','marginLeft','','Title','User\x20created\x20successfully.\x20But\x20there\x20was\x20a\x20problem\x20sending\x20welcome\x20email.','1px\x20solid\x20#eee','province','ratio','altGraphKey','setFieldsValue','endOf','triggerOnKeyDown','Material','showCursorWhenSelecting','GradientType\x20=\x201,\x20','7fff00','Date\x20Time','Select\x20','description','#666666','#ffd740','activeTouch','download','replacedWith','card','CodeMirror-gutter-elt','HEXlabel','Notify\x20Expiry\x20Before\x20One\x20Month','Cannot\x20find\x20module\x20\x27','getActiveSubordinateEmployees','isvalidColorString','File\x20Upload','Down','dispatch','barHeight','min','input2','share_with_employee','scrollHeight','./PhotoshopButton','first-child','moveTo','getElementById','#PayrollDataButtons','./ChromeFields','#aeea00','rotate(180deg)','splice','pageYOffset','currentProfile','explode','cd5c5c','skill_id','off','terminateEmployeeFailCallback','#ff4081','private_email','attach','executor\x20must\x20be\x20a\x20function.','Second\x20Level\x20Approver','inset\x200\x200\x200\x201px\x20#ddd','forceCompositionEnd','activateEmployeeSuccessCallback','keyNames','Col','#4a148c','shape','#e8f5e9','Roboto,Arial,sans-serif','rgba(255,\x20255,\x20255,\x200.12)','#e1f5fe','./_hashClear','\x20#field_','#f8bbd0','out_time','toHex8','./_getSymbols','#deleteModel','DataImport','\x27].deleteRow(\x27_id_\x27);return\x20false;\x22\x20type=\x22button\x22\x20style=\x22position:\x20absolute;bottom:\x205px;right:\x205px;font-size:\x2013px;\x22\x20tooltip=\x22Delete\x22>','DashboardAdapter','Note','EmployeeLanguageAdapter','Skill','btoa','./_baseFor','overflow','trailingSpace','Shift-','PayrollColumn','abcdefghijklmnopqrst','outside','setModalType','getSelections','dragstart','[object\x20GeneratorFunction]','uid','Employee\x20Expenses','widget','colorpicker','#7c4dff','process','../../../api/BaseGraphAdapter','ownsGroup','#d1c4e9','Error\x20occurred\x20while\x20deleting\x20Employee','addSuccessCallBack','#7ED321','onEnd','above','modeExtensions','PhotoshopPicker','macDefault','./cjs/react-is.production.min.js','operator','elementFromPoint','Amount','setTables','log','bool','measure','#_edit_#','text/ecmascript','beforeRenderField','selectingText','getElementsByClassName','save','[object\x20Uint16Array]','#_delete_##_edit_##_type_#\x20#_label_#\x20
    \x20#_text_#','mimeModes','checkPropTypes','getOwnPropertySymbols','SettingAdapter','touchend','translate(-2px,\x20-2px)','hue','Employee\x20contract\x20re-activated.','System\x20Report','','showFilters','minDistance','all','This\x20change\x20will\x20be\x20effective\x20only\x20when\x20you\x20save\x20the\x20form','#FF6900','clearHistory','certification_id','keyCode','assign','tabConnection','removeAttribute','addToHistory','setCurrentElement','stroke','./_getAllKeysIn','redoSelection','getHelpers','showElement','reactcss','domain=','saveFailCallback','pairs','https://icehrm.gitbook.io/icehrm/employees/employee-information-setup','csrf','','charAt','sendAllCellDataUpdates','DOMMouseScroll','setCSRFRequired','editDataGroupItem','Sample\x20Value','./constant','Employee\x20Profile','./components/EmployeeProfile',',\x200)\x200%,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20rgba(','#6a1b9a','#1976d2','activateEmployeeFailCallback','25px','Basic\x20Information','System\x20Issues','../../helpers/alpha','lineNo','Original\x20Text','scaleY(1.8)','deepPurple','CodeMirror-linenumber\x20CodeMirror-gutter-elt','admin=employees','Date\x20of\x20Birth','#673ab7','Number\x20or\x20Empty','100ms\x20transform\x20ease','./toNumber','ImmigrationDocument','closeDataMessage','','https:','0\x207px','deletePayrollGroupFailCallback','isContextConsumer','./_DataView','getNoDataMessage','_calculateCurveWidths','yAxis','icon','signaturePad','./_nativeKeysIn','ImmigrationStatusAdapter','Columns\x20to\x20Subtract','[mask]','maybeSpill','./_baseGetAllKeys','open','57px','&cl=','#16A5A5','getFilterString','adff2f','PayrollDataAdapter','rgba(0,\x200,\x200,\x200.54)','./_nativeCreate','Spin','generateRandom','code+name','changeObjs','red','#b3e5fc','react.concurrent_mode','textMapped','employee_id','indentLess','deleteEmployeeSuccessCallback','./IceForm','0\x200\x204px\x20','heads','Option\x20Value','Function\x20Type','translate(-6px,\x20-1px)','.select2Field','geekblue','showHighlight','./_getRawTag','Common\x20Data\x20Importer','coverEnd','module_id','#f1f8e9','(^|;\x5cs*)(','actions','#0288d1','rangeAmounts','708090','getFileName','#a1887f','oneOf','#D33115','src','isDate','#EB9694','local','updatedDisplay','makeEmptyDateFieldsNull','#0d47a1','resolveMode','./_isKey','$utils','renderYesNoModel','\x20in\x20the\x20document.','./_setCacheHas','Industry','initAdapter','paste','#tempReportTable','Column\x20Order','onChangeComplete','Valid\x20Until','set-cookie','isBuffer','service.php','.cancelBtn','trackEvent','Payroll\x20Group','setSelections','#f50057','shadow','Checkboard','arrayOf','#00897b','First\x20Name','maxScrollLeft','electricInput','Password\x20changed\x20successfully','extendSelectionsBy','travel','points','createElement','@@toStringTag','borderBottom','#4db6ac','','addDataGroup','selectionInEditor','exec','priority','paddingBottom','./Hue','position:\x20relative;\x20outline:\x20none','last-child','first_contact_date','4px','delWrappedLineRight','fff8dc','vertical','isSuspense','#FFFFFF','[object\x20Int32Array]','jpeg','handleMouseOut','?t=','Map','#F44E3B','nextSibling','undoDepth','./../helpers/isURLSameOrigin','tabLanguage','marked','#numberOfLeaves','marginBottom','getSourceMapping','Next','lastSelTime','window','','sqrt','&iDisplayLength=','Item','./components/active','processFailCallBack','Payroll\x20Column','Notify\x20Expiry','#ba68c8','Arguments','\x20failed\x20to\x20advance\x20stream.','ffe4c4','Successful','fetch','getCursor','YYYY-MM-DD\x20HH:mm:ss','numberOfTimeEntries','_checkClearOnResize','unit','react-dom','xsrfCookieName','map','#department','toHex8String','#punchInLocation','click','fileupload','reject','clientY','toTextArea','cm-$&','./SketchPresetColors','help','./_baseIsMap','Menu','ff7f50','Plane','sharedHist','ssn_num','content','Widowed','#0277bd','currentId','deleteProfileImage','pollContent','11px','fdf5e6','PlusCircleOutlined','handleTableChange','replaceSelections','mouseup','Leave\x20Rule','#createUserModel','Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday','viewport','getActionButtonsHtml','dda0dd','SketchPresetColors','4px\x204px\x200\x200','Notify\x20Expiry\x20Before\x20One\x20Day','','\x20Request\x20status\x20changed\x20successfully','4px\x200\x200\x204px','TaskListWrap','olive','./_baseGet','divider','#00D084','replaceSelection','setTableLoading','wheelStartY','./lib/axios','response','Private\x20Email','./_arrayLikeKeys','#8bc34a','#9fa8da','Calling\x20PropTypes\x20validators\x20directly\x20is\x20not\x20supported\x20by\x20the\x20`prop-types`\x20package.\x20Use\x20`PropTypes.checkPropTypes()`\x20to\x20call\x20them.\x20Read\x20more\x20at\x20http://fb.me/use-check-prop-types','\x20#grid\x20.editcell','updateInput','87cefa','Lazy','./_Uint8Array','popupTop','swapDoc','9400d3','#e1bee7','','customTemplates','./_getAllKeys','keyup','changes','aria-label','removeClass','ffffe0','MedicineBoxOutlined','/educations','number','direction','Differance\x20between\x20start\x20and\x20end\x20dates\x20should\x20not\x20be\x20more\x20than\x2045\x20days,\x20when\x20creating\x20chart\x20for\x20all\x20employees','./Cancel','dashed','salary_components','map_snapshot','clearRect','formReference','DataView','#iceloader','public','scrollY','#f9a825','false','formId','Single','pre','drawImage','#9575cd','Calling\x20PropTypes\x20validators\x20directly\x20is\x20not\x20supported\x20by\x20the\x20`prop-types`\x20package.\x20Use\x20PropTypes.checkPropTypes()\x20to\x20call\x20them.\x20Read\x20more\x20at\x20http://fb.me/use-check-prop-types','getTemplate','shiftKey','getLine','getTableFields','svg:svg','Active','Payslip\x20Template','collapse','hue-','008080','supportsTouch','trailing','./mergeConfig','#e8eaf6','preProcessTableData','antd','Visa','.doc,.docx,.xml,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,image/*,.pdf','linear-gradient(-180deg,\x20#FFFFFF\x200%,\x20#E6E6E6\x20100%)','isFormData','.cm-tab','All\x20Qualifications','hidden','display:\x20inline-block;\x20width:\x201px;\x20margin-right:\x20-1px','gutterClass','hiddenFields','payroll_','pcDefault','_handleTouchEvents','./SwatchesColor','circle-picker\x20','componentWillUnmount','\x20View\x20File','$locale','httpAgent','postal_code','currency','react-color','Compulsory','opaque','javascript','built','equals','Get\x20Details','1px\x20solid\x20#B3B3B3','alert_before_day_number','#1273DE','saveUsage','read','./_baseAssign','exports','update_path','Native\x20or\x20Bilingual\x20Proficiency','details','View','DatePicker','line','horizontal','Deactivate','put','lang','0\x202px\x2010px\x20rgba(0,0,0,.12),\x200\x202px\x205px\x20rgba(0,0,0,.16)','./mergeClasses','NULL','somethingSelected',',\x200\x200\x205px\x20','defaultProps','saveUsageSuccessCallBack','processSuccessCallBack','`\x20of\x20value\x20`','228b22','./GithubSwatch','sourceMapping','Company','EmergencyContact','#numberOfEmployees','transparent','deleteRow','DeductionAdapter','#795548','255','firstChild','getFailCallBack','deleteLine','monthly_installment','Qualification','Permission','defineProperties','format','admin=users','[object\x20DataView]','flattenSpans','_edit__download__clone__delete_','handleSwatchHover','scrollToElement','getImages','readOnlyChanged','attendnaceMapCanvasOut','classes','filterTemplate','beginPath','./_hashHas','autofocus','Variable:','316px','Payslip\x20Fields','department_Name','Draft','00bfff','da70d6','isMap','delayedCallbacks','contextMenuPending','noRender','px;\x20width:\x20','ModelLabel','Display\x20Section','fixedGutter','viewChanged','insertAt','#D9D9D9','deduction_exemptions','eee8aa','nodeIdCounter','#dcedc8','\x20property','cancelCallback','Divorced','Cancellation\x20Requested','getClientMessage','#00bcd4','#3e2723','arguments','dataGroupGetNextAutoIncrementId','#_name_#\x20#_delete_##_edit_#Title:\x20#_title_#
    Type:\x20#_type_#\x20
    Sample:\x20#_sampleValue_#
     #_help_#
    ','EmployeeOnlineOfflineChartLoader','moduleRelativeURL','markedSpans','cursorActivityCalled','controls','Reference','File\x20imported\x20successfully.','colorpicker-container','reload','5px\x205px\x205px\x205px','TaskListLoader','first','ModelBody','rememberSelection','variable','document','cursorHeight','resetFilters','setGoogleAnalytics','Certification','#b9f6ca','[object\x20ArrayBuffer]','#attendnaceCanvasPunchOutTime','chrome-picker\x20','getSubFormData','react.fragment','./_baseGetTag','timeoutMessage','','_img_','sort','#F0F0F0','approver1','mover','CodeMirror-linenumbers','sortable','Holidays','#8d6e63','align','addAdditionalRequestData','_photo_','./Alpha','getAddNewLabel','./_toKey','_edit__delete__photo_','Are\x20you\x20sure\x20you\x20want\x20to\x20delete\x20this\x20item\x20?','()[]{}\x27\x27\x22\x22``','joined_date','exit','#ab47bc','isFile','3px','If\x20the\x20type\x20is\x20Reference\x20this\x20field\x20should\x20referring\x20another\x20object','dragCursor','5px','#00695c','max_salary','endStyle','valid','808080','getAttendanceFailCallBack','ImmigrationDocumentAdapter','Relationship','showDelete','driving_license','#FDA1FF','.select2-choices','\x20*\x20','getBoundingClientRect','#2979ff','Default\x20Value','0000cd','#ad1457','`,\x20expected\x20a\x20single\x20ReactElement\x20type.','gradientType','stopPropagation','Expenses\x20Payment\x20Method','tableFields','0\x200\x200\x201px\x20#878787','post','heightForcer','triple','splitLines','email','resetFields','+transpose','Supervisor','../../../api/AdapterBase','./_copySymbols','defaultPrevented','#fff','SharedTextMarker','an\x20','overlay\x20','custom-validate-function','onChange','statusChangeId','middle_name','#DBDF00','0\x2040px\x2077px\x20rgba(0,0,0,.22),\x200\x2027px\x2024px\x20rgba(0,0,0,.2)','addSuccess','iterN','text-anchor','getRemoteSourceFields','rotateLabels','Manager','animate','Marital\x20Status','columnTable','tickFormat','Error\x20Occured\x20while\x20getting\x20data\x20for\x20chart','isValidElement','EditOutlined','60px','deleteObj','numberOrEmpty','getLogsFailCallBack','#fdd835','contact_number','null','FullYear','copy','application/x-www-form-urlencoded','SSN/NRIC','#82b1ff','0ff','raw','abort','#FFF','lineSpace','PaydayAdapter','nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111','heights','contentEditable','parent','#1b5e20','handleBlur','40%','scale(1)','github-picker\x20','_fromData','[object\x20Object]','dayjs','./_initCloneArray','showError','week','extractTag','Access\x20violation','HEXwrap','downloadTemplate','deb887','cachedCharWidth','#C1E1C5','#00c853','prop','signature','Company\x20Logo','gutterLeft','pasteLinesPerSelection','Dropped','Id\x20Number','#01579b','baseUrl','isReadOnly','horiz','b22222','files','lineNumInnerWidth','Pay\x20Grades','ArchivedEmployeeAdapter','Completed\x20On','#cccccc','clear','../../helpers/color','fa\x20fa-file-word-o','#512da8','f5deb3','bias','enter','getContainerRenderWindow','There\x20is\x20no\x20line\x20','Clocked\x20In','allocUnsafe','handleDrag','cloneElement','No\x20Default\x20Module','Action','#FE9200','addNew','EmploymentStatusAdapter','100%','project','#525252','PayrollDataImporter','modeFrontier','_applyModification','Company\x20Structure','_drawDot','#field_heads','

    _date_  _status_
    _note_
    ','`\x20supplied\x20to\x20`','','Document',';\x0a\x20\x20\x20\x20\x20\x20outline:\x20none;\x20border-width:\x200;\x20outline:\x20none;\x20overflow:\x20hidden;\x20opacity:\x20.05;\x20filter:\x20alpha(opacity=5);','inset\x201px\x200\x200\x20#000,\x20inset\x20-1px\x200\x200\x20#000,\x20inset\x200\x201px\x200\x20#000','ltr','\x20CodeMirror-wrap','Loan\x20Start\x20Date','parse','filename','reason','immigration_status','#7b1fa2','closeModal','_filter','rgba(0,0,0,0)','./IceUpload','label2','getContrastingColor','State','indentLine','float','_strokeEnd','Details','[object\x20Date]','./adapters/http','expire_notification_week','dependOn','Delete','clientLeft','e6e6fa','componentType','Donut','ms\x20exceeded','#attendancePhoto','getText','moved','contents','0\x209px\x2010px\x209px','index','_options_','nationality','active','borderRadius','lightBlue','./_isStrictComparable','Table','names','formatter','mask','hex','?g=admin&n=users&m=admin_Admin&action=new&object=','_top','static','viewTo','numberOfCompanyStuctures','initFieldMasterData','__text__','linked','#9e9e9e','./isBuffer','Login\x20As','doc','./_matchesStrictComparable','#ff9100','each','Expenses\x20Category','#fbe9e7','tabCompanyStructure','Pie','category','alert_before_expiry','Empty\x20Report','getTableHTMLTemplate','#numberOfTimeEntries','800000','./PhotoshopPointerCircle','tabEmployeeEducation','PhotoshopPreviews','#b2ff59','Unrecognized\x20modifier\x20name:\x20','table','.datefield','getSubHeaderTitle','getWrapperElement','\x20.tinymce','./Swatch','EmployeeDistributionChartLoader','getBrightness','moveStart','callBackSuccess','#ffecb3','start_time','isEmpty','./helpers/bind','transition','Milliseconds','clientBaseUrl','hex6','4px\x2010%\x203px','compositionupdate','toState','#8c9eff','textClass','Predefined\x20Calculations','top-right',')]}\x27\x22:;>','last','max','char','[object\x20WeakMap]','Supervisors\x20and\x20reports','rowFieldName','AAAlarge','toData','validateFields','toFixed','Skills','stream','[object\x20Function]','applySortingData','getOrderBy','filtersContainer','Own\x20Vehicle','[object\x20Number]','copyState','#payday_all','pow','./_ListCache','velocityFrom','moment','34px','SwatchesPicker','localStorageEnabled','','updateDataAllSuccessCallBack','output','#607d8b','#ffab91','application/javascript','setFieldNameMap','tabEmployeeSkill','react.async_mode','autoprefix','handleChange','changeStatusSuccessCallBack','#pay_period','setShowSave','createTextNode','react.element','comment','label','GooglePointer','#1e88e5','modalType','module','changePasswordConfirm','compositionstart','bdb76b','#66bb6a',')\x20center\x20left','append','parentElement','./_assignMergeValue','profile_image','#adminUsersModel','Status','entries','scrollTop','propTypes','dispatchEvent','currentStyle','Path','./_baseEach','Select2','setSettings','Total\x20Funding\x20Proposed','#tabPageCompanyGraph','#000','_process_','./SwatchesGroup','https://icehrm.com/renew-icehrmpro-license/','markerAdded','#76ff03','aoColumnDefs','[datemask]','dragMax','No\x20Lower\x20Limit','getMappedFields','steps-content','#tabPageAttendanceGraph\x20svg','Object.assign\x20cannot\x20be\x20called\x20with\x20null\x20or\x20undefined','\x20/\x20','EmployeeSubDocumentAdapter','showView','Notes','selectstart','rgba(0,\x200,\x200,\x200.87)','UTC','../../helpers/saturation','https://icehrm.gitbook.io/icehrm/time-and-attendance/attendance-time-management','#b0bec5','#64b5f6','iceFormReference','Empty','once','Pay\x20Frequency','Paid','normalizeKeyMap','skipThree','556b2f','MailTwoTone','handleMouseEvents','Success','#eee','cutIncoming','showSave','Employee\x20Projects','green','wheelDeltaX','velocityFilterWeight','charts/employees-distribution','clearFileElement','wrap','getWSProperty','delGroupAfter','EmployeeTravelRecordAdminAdapter','setAttribute','toggleViews','docHeight','Table\x20and\x20Form','000080','flex','./_getSymbolsIn','getFormFields','../helpers/combineURLs','saveData','','./_isMasked','#b2ebf2','confirmDelete','admin=attendance','#9B9B9B','minute','Ctrl-','defineDocExtension','getFormSelectOptionsRemote','application/json;charset=utf-8','-14px','createUser','reset','modeProps','./_apply','moveToStep','#00b0ff','inset\x201px\x200\x200\x20#000,\x20inset\x20-1px\x200\x200\x20#000,\x20inset\x200\x20-1px\x200\x20#000','Invariant\x20Violation','#4D4D4D','finishInit','ff4500','isUndefined','Left','state','px\x20solid\x20transparent','\x27]:checked','withCredentials','gutterTotalWidth','Depends\x20On\x20Field','ctrlKey','start_date','pollingFast','path.link','approver3','#e65100','#eeff41','#689f38','SwatchesGroup','maxHighlightLength','quarter','SalaryComponentAdapter','lightGreen','isContextProvider','./factoryWithThrowingShims','#26a69a','translate(-6px,\x20-6px)','dob','\x20cm-force-border','deletePayrollGroupSuccessCallback','isObject','pasteIncoming','24px','#eeeeee','getInitDataFailCallBack','Completed','@@iterator','All\x20Skills','collapsed','pageX','This\x20document\x20will\x20be\x20visible\x20to\x20employees\x20from\x20selected\x20department.\x20If\x20no\x20department\x20is\x20selected\x20only\x20Admin\x20users\x20can\x20see\x20this','beforeSelectionChange','./_createBaseFor','clearDeleteParams','swatch','\x27s\x20parent\x20structure\x20set\x20to\x20','rgba(0,0,0,0.15)','loan','AttendanceDataImporter','#80cbc4','setItem','CodeMirror-line','removeKeyMap','selectLeft','Additional\x20details','./_mapCacheHas','_createPoint','#e3f2fd','Renew','apply','targetTouches','deepOrange','#DCDCDC','Days\x20for\x20Expiry\x20Alert','_download','overwrite','protocol','Password\x20Change','5.58.1','_error','react','modeGen','.80','No\x20Upper\x20Limit','start','translate(-8px,\x20-5px)','LeaveGroup','goWordRight','marginTop','curve','currentDataGroupItemId','Other\x20ID','getTimeUtilizationFailCallBack','getRemoteTable','removeInner','workTime','Form\x20.label','User\x20Levels','processDataFile','__filterString__\x20','vendor','
    ','Nationality','Travel\x20From','triangleShadow','rgb(','keyword','[object\x20Symbol]','toPercentageRgbString','bottom-center','End\x20date\x20should\x20be\x20a\x20later\x20date\x20than\x20start\x20date','listSelections','finish','showDataGroup','paddingRight','tooltip','_handleTouchMove','objects','widgets','CLIENT_BASE_URL','readOnly','getInitData','touchcancel','map_out_lng','col','All\x20Job\x20Titles','Doc','lime','Identification','material-picker\x20','./_cloneBuffer','dataToFormFields','scrollIntoView','createForm','bad','empty','updateLineNumbers','Return\x20Date','getTableName','5f9ea0','return\x20this','Reading','Sign','CodeMirror.Pass','axios','getHelper','Bearer\x20','surround','DeductionGroup','getDataItem','#ffebee','7px\x20solid\x20transparent','req','callBack','language_id','isArrayBufferView','typing','function_type','Category','Attachment','replaceChild','GooglePicker','dotSize','SignatureCanvas','Notes_days_\x20','links','','count','throttle','getPrototypeOf','CodeMirror-line-like','getTokenAt','getSignaturePad','Anyone','proxy-authorization','#fbc02d','8b0000','#ffa000','polling','Error\x20Occurred\x20while\x20retrieving\x20candidate','defineInitHook','0\x206px\x206px\x200','sliders','#c0ca33','done','onTimeout','ConcurrentMode','amount','employeeCount','\x20status','#d50000','rtop','Invalid\x20attempt\x20to\x20spread\x20non-iterable\x20instance.\x0aIn\x20order\x20to\x20be\x20iterable,\x20non-array\x20objects\x20must\x20have\x20a\x20[Symbol.iterator]()\x20method.','./enhanceError','#5c6bc0','','vis','Select','params','_reason','tabEmploymentStatus','readability','getOwnPropertyDescriptors','version','singleCursorHeightPerLine','border','baseTokenPos','curOp','#fff59d','Experience\x20Level','colorpicker-component\x20','disableHoriz','volcano','Third\x20Level\x20Approver','EmployeeSubCertificationAdapter','catch','getDataItemByKeyValues','origFilter','#3f51b5','Disabled','b0c4de','./_Hash','Country','sel','createField','relationship','CodeMirror-composing','../../../api/ReactLegacyModalAdapterBase','','TabPane','showCancel','bogus','TimeUtilizationGraphAdapter','./IceColorPick','0\x201px\x20rgba(0,0,0,.1)','0123456789','readDOMTimeout','transparent\x20transparent\x20#fff\x20transparent','getImagesSuccessCallback','cache','#ffca28','#BEDADC','#ffe57f','Work','styles','attachment3','initAdminJobs','utcOffset','./isPlainObject','OrEmpty','dataTransfer','numberOfCandidates','Error\x20occurred\x20while\x20changing\x20','_edit_
    ','$offset','focusStyle','getRange','.35','interceptors','dataGroupToHtml','./_listCacheHas','header','substr','setCustomTemplates','auth','
    ','pos','getCustomTableParams','setFilter','customFields','getImageUrlFromName','./identity','End\x20Time','ref','tabCertification','fa\x20fa-file-pdf-o','inputStyle\x20can\x20not\x20(yet)\x20be\x20changed\x20in\x20a\x20running\x20editor','address1','requestCache','PermissionAdapter','lastColumnPos','add','select-multi','view','linkText','pointerEvents','inputmask','getDefaultButtons','select2','Accept','Error\x20saving','#ffea00','removeEventListener','228px','#ce93d8','toJSON','termination_date'];(function(_0x284d5f,_0x11214e){var _0x3ab63f=function(_0x30465a){while(--_0x30465a){_0x284d5f['push'](_0x284d5f['shift']());}};_0x3ab63f(++_0x11214e);}(_0x1121,0xad));var _0x3ab6=function(_0x284d5f,_0x11214e){_0x284d5f=_0x284d5f-0x0;var _0x3ab63f=_0x1121[_0x284d5f];return _0x3ab63f;};var _0x404097=_0x3ab6;!function e(_0x30465a,_0x1843ee,_0x42a0f1){var _0x1d99dd=_0x3ab6;function _0x114d9c(_0x234440,_0xaf89fa){var _0x3f9384=_0x3ab6;if(!_0x1843ee[_0x234440]){if(!_0x30465a[_0x234440]){var _0x3e6498='function'==typeof require&&require;if(!_0xaf89fa&&_0x3e6498)return _0x3e6498(_0x234440,!0x0);if(_0x451d23)return _0x451d23(_0x234440,!0x0);var _0x1373b0=new Error(_0x3f9384('0xc06')+_0x234440+'\x27');throw _0x1373b0['code']=_0x3f9384('0x7e2'),_0x1373b0;}var _0x25b07a=_0x1843ee[_0x234440]={'exports':{}};_0x30465a[_0x234440][0x0][_0x3f9384('0x4b0')](_0x25b07a[_0x3f9384('0xddc')],function(_0x12ea57){return _0x114d9c(_0x30465a[_0x234440][0x1][_0x12ea57]||_0x12ea57);},_0x25b07a,_0x25b07a[_0x3f9384('0xddc')],e,_0x30465a,_0x1843ee,_0x42a0f1);}return _0x1843ee[_0x234440][_0x3f9384('0xddc')];}for(var _0x451d23=_0x1d99dd('0xae9')==typeof require&&require,_0x5a4782=0x0;_0x5a4782<_0x42a0f1['length'];_0x5a4782++)_0x114d9c(_0x42a0f1[_0x5a4782]);return _0x114d9c;}({0x1:[function(_0x3208b6,_0x1e9aa0,_0x321fb1){var _0xe003b5=_0x3ab6,_0x4b79d8,_0x164fc0,_0x5264f4=_0x1e9aa0[_0xe003b5('0xddc')]={};function _0x1dcc24(){throw new Error('setTimeout\x20has\x20not\x20been\x20defined');}function _0x21f0d7(){var _0x54bfda=_0xe003b5;throw new Error(_0x54bfda('0x5ff'));}function _0xb2be49(_0x285be9){var _0x3f26de=_0xe003b5;if(_0x4b79d8===setTimeout)return setTimeout(_0x285be9,0x0);if((_0x4b79d8===_0x1dcc24||!_0x4b79d8)&&setTimeout)return _0x4b79d8=setTimeout,setTimeout(_0x285be9,0x0);try{return _0x4b79d8(_0x285be9,0x0);}catch(_0x2155df){try{return _0x4b79d8[_0x3f26de('0x4b0')](null,_0x285be9,0x0);}catch(_0x38028c){return _0x4b79d8[_0x3f26de('0x4b0')](this,_0x285be9,0x0);}}}!function(){var _0x52bb82=_0xe003b5;try{_0x4b79d8=_0x52bb82('0xae9')==typeof setTimeout?setTimeout:_0x1dcc24;}catch(_0x2a4b10){_0x4b79d8=_0x1dcc24;}try{_0x164fc0='function'==typeof clearTimeout?clearTimeout:_0x21f0d7;}catch(_0x471d94){_0x164fc0=_0x21f0d7;}}();var _0x4787f8,_0x1a81e2=[],_0x4da9c6=!0x1,_0x3c4eaf=-0x1;function _0x1ec3f0(){var _0x1dd7ec=_0xe003b5;_0x4da9c6&&_0x4787f8&&(_0x4da9c6=!0x1,_0x4787f8[_0x1dd7ec('0x525')]?_0x1a81e2=_0x4787f8[_0x1dd7ec('0x3cc')](_0x1a81e2):_0x3c4eaf=-0x1,_0x1a81e2[_0x1dd7ec('0x525')]&&_0x466acb());}function _0x466acb(){var _0x6ffb9b=_0xe003b5;if(!_0x4da9c6){var _0x2ff3c1=_0xb2be49(_0x1ec3f0);_0x4da9c6=!0x0;for(var _0x3581cb=_0x1a81e2[_0x6ffb9b('0x525')];_0x3581cb;){for(_0x4787f8=_0x1a81e2,_0x1a81e2=[];++_0x3c4eaf<_0x3581cb;)_0x4787f8&&_0x4787f8[_0x3c4eaf][_0x6ffb9b('0xa49')]();_0x3c4eaf=-0x1,_0x3581cb=_0x1a81e2[_0x6ffb9b('0x525')];}_0x4787f8=null,_0x4da9c6=!0x1,function(_0x25c76c){var _0x43d367=_0x6ffb9b;if(_0x164fc0===clearTimeout)return clearTimeout(_0x25c76c);if((_0x164fc0===_0x21f0d7||!_0x164fc0)&&clearTimeout)return _0x164fc0=clearTimeout,clearTimeout(_0x25c76c);try{_0x164fc0(_0x25c76c);}catch(_0x55a25c){try{return _0x164fc0['call'](null,_0x25c76c);}catch(_0x5b68bc){return _0x164fc0[_0x43d367('0x4b0')](this,_0x25c76c);}}}(_0x2ff3c1);}}function _0x145470(_0x325e73,_0x5af811){var _0x1f7e79=_0xe003b5;this['fun']=_0x325e73,this[_0x1f7e79('0x1bb')]=_0x5af811;}function _0x53ad17(){}_0x5264f4[_0xe003b5('0xb99')]=function(_0x1325d8){var _0x50fcf8=_0xe003b5,_0x5314f6=new Array(arguments['length']-0x1);if(arguments[_0x50fcf8('0x525')]>0x1)for(var _0x5d9d54=0x1;_0x5d9d540xa?''[_0x12e30c('0x3cc')](_0x5cb76b['substring'](0x0,0xa),'..'):_0x5cb76b:void 0x0;}},{'key':_0x13f6da('0xc68'),'value':function(){var _0x1ed524=_0x13f6da,_0x58373f=new _0xfa4f5d[(_0x1ed524('0x544'))](''[_0x1ed524('0x3cc')](this[_0x1ed524('0x107b')](),_0x1ed524('0x959')),!0x0,{'ShowPopup':!0x1,'LabelErrorClass':_0x1ed524('0x8d9')});if(_0x58373f[_0x1ed524('0x7bd')]()){var _0x439258=_0x58373f[_0x1ed524('0x223')](),_0x1e8179=this[_0x1ed524('0x66f')](_0x439258);if(null==_0x1e8179){var _0x22fed5=$('#'['concat'](this[_0x1ed524('0x107b')](),_0x1ed524('0x37')))[_0x1ed524('0x7eb')]();null!=_0x22fed5&&void 0x0!==_0x22fed5&&''!==_0x22fed5&&(_0x439258['id']=_0x22fed5);var _0x459a29=JSON[_0x1ed524('0x591')](_0x439258),_0x89d2cc=[];_0x89d2cc['callBackData']=[],_0x89d2cc[_0x1ed524('0xf53')]=_0x1ed524('0x92e'),_0x89d2cc[_0x1ed524('0xb7f')]=_0x1ed524('0xc89'),this[_0x1ed524('0x960')](_0x1ed524('0x90'),_0x1ed524('0xfea'),_0x459a29,_0x89d2cc);}else{var _0x3f3556=$('#'[_0x1ed524('0x3cc')](this[_0x1ed524('0x107b')](),_0x1ed524('0x1051')));_0x3f3556['html'](_0x1e8179),_0x3f3556[_0x1ed524('0x41b')]();}}}},{'key':_0x13f6da('0x92e'),'value':function(_0x451519){this['get'](_0x451519);}},{'key':_0x13f6da('0xc89'),'value':function(_0x1447fd){var _0x20f098=_0x13f6da;this[_0x20f098('0xb5d')]('Error\x20saving\x20attendance\x20entry',_0x1447fd);}},{'key':_0x13f6da('0x1190'),'value':function(){var _0x88c800=_0x13f6da;return _0x88c800('0x44')!==this[_0x88c800('0x597')][_0x88c800('0x9de')]&&_0x88c800('0x11a9')!==this[_0x88c800('0x597')][_0x88c800('0x9de')];}},{'key':_0x13f6da('0xaa8'),'value':function(_0x5bf6b8){var _0x43811f=_0x13f6da,_0xa69ecb=JSON[_0x43811f('0x591')]({'id':_0x5bf6b8}),_0x1723c9=[];_0x1723c9[_0x43811f('0x234')]=[],_0x1723c9[_0x43811f('0xf53')]=_0x43811f('0x1105'),_0x1723c9[_0x43811f('0xb7f')]=_0x43811f('0x246'),this[_0x43811f('0x960')](_0x43811f('0xe09'),'admin=attendance',_0xa69ecb,_0x1723c9);}},{'key':'getImagesSuccessCallback','value':function(_0x10d144){var _0x4b274f=_0x13f6da;if($(_0x4b274f('0xb62'))[_0x4b274f('0x109c')](),$(_0x4b274f('0x598'))[_0x4b274f('0xb07')](_0x4b274f('0x9cf')),$(_0x4b274f('0x366'))[_0x4b274f('0x109c')](),$('#attendnaceCanvasOutWrapper')['html'](_0x4b274f('0xd8')),$(_0x4b274f('0x4aa'))[_0x4b274f('0xb07')](''),$(_0x4b274f('0xe47'))[_0x4b274f('0xb07')](''),$(_0x4b274f('0xd4c'))[_0x4b274f('0xb07')](''),$(_0x4b274f('0x39'))[_0x4b274f('0xb07')](''),$(_0x4b274f('0x769'))[_0x4b274f('0xb07')](''),$('#punchOutIp')['html'](''),$('#attendnaceMapCanvasIn')[_0x4b274f('0x109c')](),$('#attendnaceMapCanvasInWrapper')[_0x4b274f('0xb07')](_0x4b274f('0x57')),$(_0x4b274f('0x1e2'))[_0x4b274f('0x109c')](),$(_0x4b274f('0x707'))['html'](''),$(_0x4b274f('0x4b3'))['modal'](_0x4b274f('0x41b')),$('#attendnaceCanvasEmp')[_0x4b274f('0xb07')](_0x10d144[_0x4b274f('0x43b')]),_0x10d144[_0x4b274f('0x25e')]&&$(_0x4b274f('0x4aa'))[_0x4b274f('0xb07')](Date[_0x4b274f('0xf01')](_0x10d144[_0x4b274f('0x25e')])[_0x4b274f('0x537')](_0x4b274f('0x121'))),_0x10d144['image_in']){$(_0x4b274f('0xf1b'))[_0x4b274f('0x41b')]();var _0x37af1c=document[_0x4b274f('0xc14')](_0x4b274f('0x885'));try{var _0x2958ff=_0x37af1c[_0x4b274f('0xace')]('2d'),_0x4b821d=new Image();_0x4b821d[_0x4b274f('0x9ad')]=function(){_0x2958ff['drawImage'](_0x4b821d,0x0,0x0);},_0x4b821d[_0x4b274f('0xce8')]=_0x10d144[_0x4b274f('0xa06')];}catch(_0xd7ff48){console[_0x4b274f('0xc60')](_0xd7ff48);}}if(_0x10d144[_0x4b274f('0xc34')]&&$('#attendnaceCanvasPunchOutTime')['html'](Date[_0x4b274f('0xf01')](_0x10d144['out_time'])[_0x4b274f('0x537')](_0x4b274f('0x121'))),_0x10d144[_0x4b274f('0x552')]){$(_0x4b274f('0xf1b'))['show']();var _0x4bb105=document[_0x4b274f('0xc14')]('attendnaceCanvasOut');try{var _0x5591b2=_0x4bb105[_0x4b274f('0xace')]('2d'),_0x18b9a9=new Image();_0x18b9a9['onload']=function(){var _0x52267c=_0x4b274f;_0x5591b2[_0x52267c('0xda7')](_0x18b9a9,0x0,0x0);},_0x18b9a9[_0x4b274f('0xce8')]=_0x10d144[_0x4b274f('0x552')];}catch(_0x461589){console[_0x4b274f('0xc60')](_0x461589);}}if(_0x10d144['map_lat']&&($(_0x4b274f('0x348'))[_0x4b274f('0x41b')](),$(_0x4b274f('0xd4c'))['html'](''[_0x4b274f('0x3cc')](_0x10d144[_0x4b274f('0x11a1')],',')['concat'](_0x10d144[_0x4b274f('0x63f')]))),_0x10d144[_0x4b274f('0x137')]&&($('#attendanceMap')[_0x4b274f('0x41b')](),$(_0x4b274f('0x39'))['html'](''[_0x4b274f('0x3cc')](_0x10d144[_0x4b274f('0x137')],',')[_0x4b274f('0x3cc')](_0x10d144[_0x4b274f('0x106c')]))),_0x10d144['in_ip']&&$(_0x4b274f('0x769'))[_0x4b274f('0xb07')](_0x10d144[_0x4b274f('0xaa6')]),_0x10d144['out_ip']&&$('#punchOutIp')[_0x4b274f('0xb07')](_0x10d144[_0x4b274f('0x11bc')]),_0x10d144[_0x4b274f('0xd9b')]){$(_0x4b274f('0x348'))[_0x4b274f('0x41b')]();var _0x2eb854=document[_0x4b274f('0xc14')](_0x4b274f('0xae0'));try{var _0x303d6c=_0x2eb854['getContext']('2d'),_0x136e2c=new Image();_0x136e2c['onload']=function(){_0x303d6c['drawImage'](_0x136e2c,0x0,0x0);},_0x136e2c[_0x4b274f('0xce8')]=_0x10d144['map_snapshot'];}catch(_0x28301c){console[_0x4b274f('0xc60')](_0x28301c);}}if(_0x10d144[_0x4b274f('0x6bd')]){$('#attendanceMap')[_0x4b274f('0x41b')]();var _0x6052ad=document['getElementById'](_0x4b274f('0xe0b'));try{var _0x5b1c46=_0x6052ad[_0x4b274f('0xace')]('2d'),_0x3cd02a=new Image();_0x3cd02a[_0x4b274f('0x9ad')]=function(){var _0x34630d=_0x4b274f;_0x5b1c46[_0x34630d('0xda7')](_0x3cd02a,0x0,0x0);},_0x3cd02a[_0x4b274f('0xce8')]=_0x10d144[_0x4b274f('0x6bd')];}catch(_0x96c78f){console[_0x4b274f('0xc60')](_0x96c78f);}}}},{'key':'getImagesFailCallback','value':function(_0x5aeb43){var _0x11f402=_0x13f6da;this['showMessage'](_0x11f402('0xb84'),_0x5aeb43);}},{'key':'getActionButtonsHtml','value':function(_0x5ca795,_0xe529df){var _0x5407f2=_0x13f6da,_0x3d4948;return _0x3d4948=(_0x3d4948=0x1===this[_0x5407f2('0xa')]?_0x5407f2('0xe5d'):_0x5407f2('0xbc'))[_0x5407f2('0x166')](_0x5407f2('0xe59'),_0x5407f2('0xefa')),_0x3d4948=this['showDelete']?_0x3d4948['replace'](_0x5407f2('0xac1'),_0x5407f2('0xd70')):_0x3d4948[_0x5407f2('0x166')](_0x5407f2('0xac1'),''),_0x3d4948=(_0x3d4948=(_0x3d4948=this[_0x5407f2('0x4b1')]?_0x3d4948[_0x5407f2('0x166')](_0x5407f2('0x260'),_0x5407f2('0x7a9')):_0x3d4948[_0x5407f2('0x166')]('_edit_',''))[_0x5407f2('0x166')](/_id_/g,_0x5ca795))[_0x5407f2('0x166')](/_BASE_/g,this[_0x5407f2('0xed3')]);}},{'key':_0x13f6da('0x115d'),'value':function(){return'https://icehrm.gitbook.io/icehrm/time-and-attendance/attendance-time-management';}}]),_0x55400a;}(_0x3fd33d[_0x58f035('0x544')]),_0x2fd952=function(_0x592657){var _0x41e503=_0x58f035;_0x1b2fa3(_0x8a1add,_0x592657);var _0x1ddf9c=_0x303f18(_0x8a1add);function _0x8a1add(){var _0x307d49=_0x3ab6;return _0x453980(this,_0x8a1add),_0x1ddf9c[_0x307d49('0x1036')](this,arguments);}return _0x14bae7(_0x8a1add,[{'key':_0x41e503('0x315'),'value':function(){return['id','employee','status'];}},{'key':_0x41e503('0x5d2'),'value':function(){var _0x5e57e4=_0x41e503;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':_0x5e57e4('0x3e1')},{'sTitle':_0x5e57e4('0x919')}];}},{'key':'getFormFields','value':function(){return[];}},{'key':_0x41e503('0xa68'),'value':function(){var _0x4af5f8=_0x41e503;return[[_0x4af5f8('0x55e'),{'label':_0x4af5f8('0x3e1'),'type':_0x4af5f8('0x1137'),'allow-null':!0x1,'remote-source':[_0x4af5f8('0x3e1'),'id',_0x4af5f8('0x2d')]}]];}},{'key':_0x41e503('0xd6b'),'value':function(_0x34cae5,_0x33dd58){var _0x208d92=_0x41e503,_0x38e5fc='
    ';return _0x38e5fc=_0x38e5fc[_0x208d92('0x166')](/_BASE_/g,this[_0x208d92('0xed3')]),'Not\x20Clocked\x20In'==_0x33dd58[0x2]?_0x38e5fc=_0x38e5fc[_0x208d92('0x166')](/_COLOR_/g,_0x208d92('0x87c')):'Clocked\x20Out'==_0x33dd58[0x2]?_0x38e5fc=_0x38e5fc[_0x208d92('0x166')](/_COLOR_/g,'yellow'):_0x208d92('0xee6')==_0x33dd58[0x2]&&(_0x38e5fc=_0x38e5fc['replace'](/_COLOR_/g,_0x208d92('0xfd3'))),_0x38e5fc;}},{'key':_0x41e503('0x1190'),'value':function(){var _0x13c6de=_0x41e503;return _0x13c6de('0x44')!==this['user']['user_level']&&_0x13c6de('0x11a9')!==this[_0x13c6de('0x597')][_0x13c6de('0x9de')];}},{'key':_0x41e503('0x115d'),'value':function(){var _0x2438f5=_0x41e503;return _0x2438f5('0xfc1');}}]),_0x8a1add;}(_0x3fd33d[_0x58f035('0x544')]);_0x49253d[_0x58f035('0xddc')]={'AttendanceAdapter':_0x2faee7,'AttendanceStatusAdapter':_0x2fd952};},{'../../../api/AdapterBase':0x39,'../../../api/FormValidation':0x3d}],0x4:[function(_0x467196,_0x83ae73,_0x3fa72f){var _0x570640=_0x3ab6;'use strict';var _0x42ceca=_0x467196(_0x570640('0x358'));window[_0x570640('0x1191')]=_0x42ceca[_0x570640('0x1191')],window[_0x570640('0x10ff')]=_0x42ceca[_0x570640('0x10ff')];},{'./lib':0x5}],0x5:[function(_0x4fd664,_0xb9987e,_0x324db0){var _0x3c3e33=_0x3ab6;'use strict';var _0x152574,_0x34993c=(_0x152574=_0x4fd664(_0x3c3e33('0xc50')))&&_0x152574[_0x3c3e33('0x114c')]?_0x152574:{'default':_0x152574};function _0x26c60e(_0x416a78){var _0x2a8cec=_0x3c3e33;return(_0x26c60e=_0x2a8cec('0xae9')==typeof Symbol&&_0x2a8cec('0x245')==typeof Symbol['iterator']?function(_0x318b49){return typeof _0x318b49;}:function(_0x23f912){var _0x527201=_0x2a8cec;return _0x23f912&&_0x527201('0xae9')==typeof Symbol&&_0x23f912[_0x527201('0x3c6')]===Symbol&&_0x23f912!==Symbol[_0x527201('0x98c')]?'symbol':typeof _0x23f912;})(_0x416a78);}function _0x4f7aa5(_0x3ed0b9,_0x2963ff){var _0x3cd746=_0x3c3e33;if(!(_0x3ed0b9 instanceof _0x2963ff))throw new TypeError(_0x3cd746('0x202'));}function _0x2caa99(_0x2ae681,_0xf365da){var _0x5166b0=_0x3c3e33;for(var _0x12a459=0x0;_0x12a459<_0xf365da[_0x5166b0('0x525')];_0x12a459++){var _0x3cad15=_0xf365da[_0x12a459];_0x3cad15[_0x5166b0('0x156')]=_0x3cad15[_0x5166b0('0x156')]||!0x1,_0x3cad15[_0x5166b0('0xbb2')]=!0x0,'value'in _0x3cad15&&(_0x3cad15[_0x5166b0('0x4db')]=!0x0),Object[_0x5166b0('0xa95')](_0x2ae681,_0x3cad15[_0x5166b0('0x1192')],_0x3cad15);}}function _0x78126e(_0x32ded6,_0x506229,_0x570c40){var _0x44568a=_0x3c3e33;return _0x506229&&_0x2caa99(_0x32ded6[_0x44568a('0x98c')],_0x506229),_0x570c40&&_0x2caa99(_0x32ded6,_0x570c40),_0x32ded6;}function _0xea74cc(_0x2730e5){return function(){var _0x4f19a3=_0x3ab6,_0x1f288f,_0x4aff71=_0x516d06(_0x2730e5);if(_0x47f733()){var _0x4f2787=_0x516d06(this)[_0x4f19a3('0x3c6')];_0x1f288f=Reflect[_0x4f19a3('0x6ea')](_0x4aff71,arguments,_0x4f2787);}else _0x1f288f=_0x4aff71[_0x4f19a3('0x1036')](this,arguments);return _0x2c73ee(this,_0x1f288f);};}function _0x2c73ee(_0x25dde2,_0x49fc88){var _0x430d0=_0x3c3e33;return!_0x49fc88||_0x430d0('0x21e')!==_0x26c60e(_0x49fc88)&&_0x430d0('0xae9')!=typeof _0x49fc88?function(_0x4e58c1){if(void 0x0===_0x4e58c1)throw new ReferenceError('this\x20hasn\x27t\x20been\x20initialised\x20-\x20super()\x20hasn\x27t\x20been\x20called');return _0x4e58c1;}(_0x25dde2):_0x49fc88;}function _0x47f733(){var _0x18d563=_0x3c3e33;if(_0x18d563('0x56')==typeof Reflect||!Reflect['construct'])return!0x1;if(Reflect[_0x18d563('0x6ea')][_0x18d563('0x16e')])return!0x1;if('function'==typeof Proxy)return!0x0;try{return Date[_0x18d563('0x98c')]['toString'][_0x18d563('0x4b0')](Reflect['construct'](Date,[],function(){})),!0x0;}catch(_0x3056c7){return!0x1;}}function _0x516d06(_0x596357){var _0x85abe=_0x3c3e33;return(_0x516d06=Object[_0x85abe('0x6c2')]?Object[_0x85abe('0x10c0')]:function(_0x40f406){var _0x12b8c5=_0x85abe;return _0x40f406[_0x12b8c5('0x11e6')]||Object['getPrototypeOf'](_0x40f406);})(_0x596357);}function _0x1812ad(_0x54f38a,_0x41436b){var _0x1e5754=_0x3c3e33;if(_0x1e5754('0xae9')!=typeof _0x41436b&&null!==_0x41436b)throw new TypeError('Super\x20expression\x20must\x20either\x20be\x20null\x20or\x20a\x20function');_0x54f38a[_0x1e5754('0x98c')]=Object[_0x1e5754('0x5c2')](_0x41436b&&_0x41436b['prototype'],{'constructor':{'value':_0x54f38a,'writable':!0x0,'configurable':!0x0}}),_0x41436b&&_0x439f0e(_0x54f38a,_0x41436b);}function _0x439f0e(_0x3f4b8c,_0x30e7f5){var _0x1bdbcd=_0x3c3e33;return(_0x439f0e=Object[_0x1bdbcd('0x6c2')]||function(_0x350772,_0x22ee06){var _0x266b46=_0x1bdbcd;return _0x350772[_0x266b46('0x11e6')]=_0x22ee06,_0x350772;})(_0x3f4b8c,_0x30e7f5);}var _0x41b441=function(_0x45ff0d){var _0x1b59ad=_0x3c3e33;_0x1812ad(_0x11d5fb,_0x45ff0d);var _0xd6c2f3=_0xea74cc(_0x11d5fb);function _0x11d5fb(){var _0x538715=_0x3ab6;return _0x4f7aa5(this,_0x11d5fb),_0xd6c2f3[_0x538715('0x1036')](this,arguments);}return _0x78126e(_0x11d5fb,[{'key':_0x1b59ad('0xfe3'),'value':function(){return[];}},{'key':_0x1b59ad('0xa68'),'value':function(){var _0x4991d7=_0x1b59ad;return[[_0x4991d7('0x55e'),{'label':_0x4991d7('0x3e1'),'type':_0x4991d7('0x1137'),'allow-null':!0x0,'null-label':'All\x20Employees','remote-source':[_0x4991d7('0x3e1'),'id',_0x4991d7('0x2d')]}],[_0x4991d7('0x1045'),{'label':_0x4991d7('0x901'),'type':'date','validation':''}],[_0x4991d7('0xbc6'),{'label':'End\x20Date','type':_0x4991d7('0x65d'),'validation':''}]];}},{'key':_0x1b59ad('0x33'),'value':function(){var _0x48f8bb=_0x1b59ad;this[_0x48f8bb('0xf31')](),this['getTimeUtilization']();}},{'key':_0x1b59ad('0x3d8'),'value':function(_0x325921){var _0x286fdb=_0x1b59ad,_0x45df8a=$('#'[_0x286fdb('0x3cc')](this[_0x286fdb('0xf4a')],_0x286fdb('0xe')));if(_0x45df8a[_0x286fdb('0xb07')](''),_0x45df8a[_0x286fdb('0x9c2')](),Date[_0x286fdb('0xf01')](_0x325921[_0x286fdb('0x1045')])[_0x286fdb('0xa5d')]()>Date[_0x286fdb('0xf01')](_0x325921['end'])['getTime']())return _0x45df8a[_0x286fdb('0xb07')]('End\x20date\x20should\x20be\x20a\x20later\x20date\x20than\x20start\x20date'),_0x45df8a[_0x286fdb('0x41b')](),!0x1;var _0x232301=(Date['parse'](_0x325921[_0x286fdb('0xbc6')])['getTime']()-Date[_0x286fdb('0xf01')](_0x325921['start'])['getTime']())/0x5265c00;return _0x232301>0x2d&&(void 0x0===_0x325921[_0x286fdb('0x55e')]||null==_0x325921[_0x286fdb('0x55e')]||_0x286fdb('0xde9')===_0x325921[_0x286fdb('0x55e')])?(_0x45df8a['html'](_0x286fdb('0xd97')),_0x45df8a['show'](),!0x1):!(_0x232301>0x5a)||(_0x45df8a[_0x286fdb('0xb07')](_0x286fdb('0xb38')),_0x45df8a[_0x286fdb('0x41b')](),!0x1);}},{'key':_0x1b59ad('0x1187'),'value':function(_0x587421,_0x5d5a00){var _0x4caa9b=_0x1b59ad;_0x587421={},null!=this[_0x4caa9b('0x4fb')]&&void 0x0!==this[_0x4caa9b('0x4fb')]&&(_0x4caa9b('0xde9')!==this['filter'][_0x4caa9b('0x55e')]&&(_0x587421['employee']=this[_0x4caa9b('0x4fb')][_0x4caa9b('0x55e')]),_0x587421[_0x4caa9b('0x1045')]=this['filter'][_0x4caa9b('0x1045')],_0x587421[_0x4caa9b('0xbc6')]=this[_0x4caa9b('0x4fb')][_0x4caa9b('0xbc6')]);var _0x51f57b=JSON[_0x4caa9b('0x591')](_0x587421);(_0x5d5a00=null==_0x5d5a00?[]:_0x5d5a00)['callBackData']=[],_0x5d5a00[_0x4caa9b('0xf53')]=_0x4caa9b('0x5d0'),_0x5d5a00['callBackFail']=_0x4caa9b('0xe6d'),this[_0x4caa9b('0x960')]('getAttendance',_0x4caa9b('0x51f'),_0x51f57b,_0x5d5a00);}},{'key':_0x1b59ad('0xe6d'),'value':function(_0x55a8f6){this['showMessage']('Error\x20Occured\x20while\x20getting\x20data\x20for\x20chart',_0x55a8f6);}},{'key':'getAttendanceSuccessCallBack','value':function(_0x386f0d){var _0x5b749d=_0x1b59ad,_0x26f650=this[_0x5b749d('0x883')]();$(_0x5b749d('0xfb7'))[_0x5b749d('0x109c')](),$(_0x5b749d('0x7f'))[_0x5b749d('0x109c')]();var _0x280ee3=$(_0x5b749d('0x18f'));_0x280ee3['html'](''),_0x280ee3[_0x5b749d('0xb07')](''[_0x5b749d('0x3cc')](_0x26f650,_0x5b749d('0xb03'))),nv[_0x5b749d('0x4e9')](function(){var _0x305810=_0x5b749d,_0x20f1ac=nv[_0x305810('0x231')][_0x305810('0x933')]()[_0x305810('0xa2c')]({'bottom':0xc8})['transitionDuration'](0x0)[_0x305810('0x9f8')](!0x0)['rotateLabels'](0x2d)[_0x305810('0x697')](!0x1)[_0x305810('0x5e4')](0.1);return _0x20f1ac[_0x305810('0xcb4')][_0x305810('0xe9e')](d3[_0x305810('0xe02')](_0x305810('0x58a'))),_0x20f1ac['dispatch']['on'](_0x305810('0x52a'),function(_0x3c95da){var _0x13c910=_0x305810;nv['log'](_0x13c910('0x1cf'),JSON['stringify'](_0x3c95da));}),_0x20f1ac[_0x305810('0x1064')](function(_0x50569c,_0x345547,_0x169bec,_0x5d9439,_0x5e6bbd){var _0x5ae6a1=_0x305810;return _0x5ae6a1('0x904')[_0x5ae6a1('0x3cc')](_0x50569c,'

    ')+_0x5ae6a1('0x1aa')[_0x5ae6a1('0x3cc')](_0x169bec,'\x20on\x20')['concat'](_0x345547,_0x5ae6a1('0x3a'));}),d3[_0x305810('0x8ff')](_0x305810('0xfb7'))[_0x305810('0x86e')](_0x386f0d)[_0x305810('0x4b0')](_0x20f1ac),_0x20f1ac;});}},{'key':_0x1b59ad('0x115d'),'value':function(){return'https://icehrm.gitbook.io/icehrm/insights/analytics';}}]),_0x11d5fb;}(_0x34993c[_0x3c3e33('0x544')]),_0x565366=function(_0x3b16a2){var _0x36ae7e=_0x3c3e33;_0x1812ad(_0x439987,_0x3b16a2);var _0x44a7e2=_0xea74cc(_0x439987);function _0x439987(){return _0x4f7aa5(this,_0x439987),_0x44a7e2['apply'](this,arguments);}return _0x78126e(_0x439987,[{'key':_0x36ae7e('0xfe3'),'value':function(){return[];}},{'key':_0x36ae7e('0xa68'),'value':function(){var _0x9f232=_0x36ae7e;return[[_0x9f232('0x55e'),{'label':_0x9f232('0x3e1'),'type':_0x9f232('0x1137'),'allow-null':!0x0,'null-label':_0x9f232('0x679'),'remote-source':[_0x9f232('0x3e1'),'id',_0x9f232('0x2d')]}],[_0x9f232('0x1045'),{'label':'Start\x20Date','type':_0x9f232('0x65d'),'validation':''}],['end',{'label':_0x9f232('0xb5b'),'type':_0x9f232('0x65d'),'validation':''}]];}},{'key':'get','value':function(){var _0x467f8a=_0x36ae7e;this[_0x467f8a('0xf31')](),this['getTimeUtilization']();}},{'key':_0x36ae7e('0x3d8'),'value':function(_0x503a30){var _0x3026ed=_0x36ae7e,_0x1f967e=$('#'[_0x3026ed('0x3cc')](this[_0x3026ed('0xf4a')],_0x3026ed('0xe')));if(_0x1f967e[_0x3026ed('0xb07')](''),_0x1f967e['hide'](),Date['parse'](_0x503a30['start'])['getTime']()>Date[_0x3026ed('0xf01')](_0x503a30[_0x3026ed('0xbc6')])[_0x3026ed('0xa5d')]())return _0x1f967e[_0x3026ed('0xb07')](_0x3026ed('0x105f')),_0x1f967e[_0x3026ed('0x41b')](),!0x1;var _0x1f2e8d=(Date[_0x3026ed('0xf01')](_0x503a30['end'])[_0x3026ed('0xa5d')]()-Date[_0x3026ed('0xf01')](_0x503a30[_0x3026ed('0x1045')])['getTime']())/0x5265c00;return _0x1f2e8d>0x2d&&(void 0x0===_0x503a30[_0x3026ed('0x55e')]||null==_0x503a30[_0x3026ed('0x55e')]||_0x3026ed('0xde9')===_0x503a30['employee'])?(_0x1f967e[_0x3026ed('0xb07')](_0x3026ed('0xd97')),_0x1f967e['show'](),!0x1):!(_0x1f2e8d>0x5a)||(_0x1f967e[_0x3026ed('0xb07')](_0x3026ed('0xb38')),_0x1f967e[_0x3026ed('0x41b')](),!0x1);}},{'key':'getTimeUtilization','value':function(_0x1eacee,_0x218e1d){var _0x4227b6=_0x36ae7e;_0x1eacee={},null!=this[_0x4227b6('0x4fb')]&&void 0x0!==this[_0x4227b6('0x4fb')]&&(_0x4227b6('0xde9')!==this['filter'][_0x4227b6('0x55e')]&&(_0x1eacee[_0x4227b6('0x55e')]=this[_0x4227b6('0x4fb')][_0x4227b6('0x55e')]),_0x1eacee[_0x4227b6('0x1045')]=this['filter'][_0x4227b6('0x1045')],_0x1eacee[_0x4227b6('0xbc6')]=this[_0x4227b6('0x4fb')][_0x4227b6('0xbc6')]);var _0x2e0136=JSON[_0x4227b6('0x591')](_0x1eacee);(_0x218e1d=null==_0x218e1d?[]:_0x218e1d)[_0x4227b6('0x234')]=[],_0x218e1d[_0x4227b6('0xf53')]=_0x4227b6('0x425'),_0x218e1d[_0x4227b6('0xb7f')]=_0x4227b6('0x104d'),this[_0x4227b6('0x960')](_0x4227b6('0x1187'),_0x4227b6('0x51f'),_0x2e0136,_0x218e1d);}},{'key':_0x36ae7e('0x104d'),'value':function(_0x3a292b){var _0x3ea6d1=_0x36ae7e;this[_0x3ea6d1('0xb5d')](_0x3ea6d1('0xe9f'),_0x3a292b);}},{'key':'getTimeUtilizationSuccessCallBack','value':function(_0x85e4d){var _0x21f3d3=_0x36ae7e,_0x1417a1=this[_0x21f3d3('0x883')]();$(_0x21f3d3('0xb6'))['remove'](),$('#tabPageTimeUtilizationGraph\x20div')[_0x21f3d3('0x109c')]();var _0x550f0c=$(_0x21f3d3('0x10b6'));_0x550f0c[_0x21f3d3('0xb07')](''),_0x550f0c[_0x21f3d3('0xb07')](''[_0x21f3d3('0x3cc')](_0x1417a1,_0x21f3d3('0xb03'))),nv[_0x21f3d3('0x4e9')](function(){var _0x335114=_0x21f3d3,_0x2a0366=nv[_0x335114('0x231')][_0x335114('0x933')]()[_0x335114('0xa2c')]({'bottom':0xc8})[_0x335114('0x949')](0x0)['reduceXTicks'](!0x0)[_0x335114('0xe99')](0x2d)['showControls'](!0x0)[_0x335114('0x5e4')](0.1);return _0x2a0366[_0x335114('0xcb4')][_0x335114('0xe9e')](d3[_0x335114('0xe02')](_0x335114('0x58a'))),d3['select'](_0x335114('0xb6'))[_0x335114('0x86e')](_0x85e4d)[_0x335114('0x4b0')](_0x2a0366),_0x2a0366[_0x335114('0xc0b')]['on'](_0x335114('0x52a'),function(_0x2c8c29){var _0xf55dcd=_0x335114;nv[_0xf55dcd('0xc60')](_0xf55dcd('0x1cf'),JSON[_0xf55dcd('0x591')](_0x2c8c29));}),_0x2a0366[_0x335114('0x1064')](function(_0x3f65b3,_0x43ac65,_0x2b0d54,_0x81da3d,_0x59a3dd){var _0x1565f3=_0x335114;return _0x1565f3('0x904')[_0x1565f3('0x3cc')](_0x3f65b3,'

    ')+'

    '[_0x1565f3('0x3cc')](_0x2b0d54,_0x1565f3('0xab2'))[_0x1565f3('0x3cc')](_0x43ac65,_0x1565f3('0x3a'));}),_0x2a0366;});}},{'key':_0x36ae7e('0x115d'),'value':function(){return'https://icehrm.gitbook.io/icehrm/insights/analytics';}}]),_0x439987;}(_0x34993c[_0x3c3e33('0x544')]);_0xb9987e[_0x3c3e33('0xddc')]={'AttendanceGraphAdapter':_0x41b441,'TimeUtilizationGraphAdapter':_0x565366};},{'../../../api/BaseGraphAdapter':0x3b}],0x6:[function(_0xe468d6,_0x1c09c3,_0x137d3f){var _0x5a6f5e=_0x3ab6;'use strict';var _0x4bbd34=_0xe468d6('./lib');window['ClientAdapter']=_0x4bbd34[_0x5a6f5e('0x317')];},{'./lib':0x7}],0x7:[function(_0x28102f,_0x468041,_0x2381bb){var _0x4b1cf4=_0x3ab6;'use strict';var _0x3896eb;function _0x1b5209(_0x4ed870){var _0x2ca565=_0x3ab6;return(_0x1b5209=_0x2ca565('0xae9')==typeof Symbol&&_0x2ca565('0x245')==typeof Symbol[_0x2ca565('0x78e')]?function(_0x335282){return typeof _0x335282;}:function(_0x8bcd7c){var _0x520da5=_0x2ca565;return _0x8bcd7c&&_0x520da5('0xae9')==typeof Symbol&&_0x8bcd7c[_0x520da5('0x3c6')]===Symbol&&_0x8bcd7c!==Symbol[_0x520da5('0x98c')]?_0x520da5('0x245'):typeof _0x8bcd7c;})(_0x4ed870);}function _0xb9602b(_0x506ee2,_0x9496c){var _0x3d062a=_0x3ab6;for(var _0x3d2048=0x0;_0x3d2048<_0x9496c['length'];_0x3d2048++){var _0x764b08=_0x9496c[_0x3d2048];_0x764b08[_0x3d062a('0x156')]=_0x764b08[_0x3d062a('0x156')]||!0x1,_0x764b08[_0x3d062a('0xbb2')]=!0x0,'value'in _0x764b08&&(_0x764b08[_0x3d062a('0x4db')]=!0x0),Object[_0x3d062a('0xa95')](_0x506ee2,_0x764b08[_0x3d062a('0x1192')],_0x764b08);}}function _0x4f557b(_0x398f3a,_0x3cafbd){var _0x50a7e5=_0x3ab6;return!_0x3cafbd||_0x50a7e5('0x21e')!==_0x1b5209(_0x3cafbd)&&_0x50a7e5('0xae9')!=typeof _0x3cafbd?function(_0x422494){var _0x2ad3ac=_0x50a7e5;if(void 0x0===_0x422494)throw new ReferenceError(_0x2ad3ac('0x2e9'));return _0x422494;}(_0x398f3a):_0x3cafbd;}function _0x28ffe0(){var _0x16ac93=_0x3ab6;if('undefined'==typeof Reflect||!Reflect[_0x16ac93('0x6ea')])return!0x1;if(Reflect[_0x16ac93('0x6ea')]['sham'])return!0x1;if('function'==typeof Proxy)return!0x0;try{return Date[_0x16ac93('0x98c')][_0x16ac93('0x537')][_0x16ac93('0x4b0')](Reflect[_0x16ac93('0x6ea')](Date,[],function(){})),!0x0;}catch(_0x132e73){return!0x1;}}function _0x546017(_0xd9476f){var _0x56eadd=_0x3ab6;return(_0x546017=Object[_0x56eadd('0x6c2')]?Object[_0x56eadd('0x10c0')]:function(_0x3edc5c){var _0x4ba63f=_0x56eadd;return _0x3edc5c[_0x4ba63f('0x11e6')]||Object['getPrototypeOf'](_0x3edc5c);})(_0xd9476f);}function _0xa3336c(_0x20cb09,_0x2420ae){var _0x57153e=_0x3ab6;return(_0xa3336c=Object[_0x57153e('0x6c2')]||function(_0x12d8a9,_0x5b0f31){return _0x12d8a9['__proto__']=_0x5b0f31,_0x12d8a9;})(_0x20cb09,_0x2420ae);}var _0xaefdaa=function(_0x4b2b94){var _0x21424f=_0x3ab6;!function(_0x276f23,_0x5ad2d4){var _0x88b505=_0x3ab6;if(_0x88b505('0xae9')!=typeof _0x5ad2d4&&null!==_0x5ad2d4)throw new TypeError(_0x88b505('0x409'));_0x276f23['prototype']=Object['create'](_0x5ad2d4&&_0x5ad2d4[_0x88b505('0x98c')],{'constructor':{'value':_0x276f23,'writable':!0x0,'configurable':!0x0}}),_0x5ad2d4&&_0xa3336c(_0x276f23,_0x5ad2d4);}(_0x727698,_0x4b2b94);var _0x2b996b,_0x5cb810,_0x25d0d2,_0x3db46d,_0x281729=(_0x2b996b=_0x727698,function(){var _0xe43b99=_0x3ab6,_0x2fb3d9,_0xf76867=_0x546017(_0x2b996b);if(_0x28ffe0()){var _0x5c57eb=_0x546017(this)[_0xe43b99('0x3c6')];_0x2fb3d9=Reflect['construct'](_0xf76867,arguments,_0x5c57eb);}else _0x2fb3d9=_0xf76867[_0xe43b99('0x1036')](this,arguments);return _0x4f557b(this,_0x2fb3d9);});function _0x727698(_0x428c6b,_0x339c23,_0x475446,_0xb7ec15){var _0x17923c=_0x3ab6,_0x35ae9c;return function(_0x1f60d6,_0x430754){var _0x5df966=_0x3ab6;if(!(_0x1f60d6 instanceof _0x430754))throw new TypeError(_0x5df966('0x202'));}(this,_0x727698),(_0x35ae9c=_0x281729['call'](this,_0x428c6b,_0x339c23,_0x475446,_0xb7ec15))[_0x17923c('0x428')]={},_0x35ae9c['hiddenFields']={},_0x35ae9c[_0x17923c('0xe7e')]={},_0x35ae9c['formOnlyFields']={},_0x35ae9c;}return _0x5cb810=_0x727698,(_0x25d0d2=[{'key':_0x21424f('0x315'),'value':function(){var _0x2a71cb=_0x21424f;return['id','name',_0x2a71cb('0xddf'),_0x2a71cb('0x737'),_0x2a71cb('0xea7')];}},{'key':_0x21424f('0x5d2'),'value':function(){var _0x1fe63e=_0x21424f;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':_0x1fe63e('0x1')},{'sTitle':_0x1fe63e('0xf10')},{'sTitle':_0x1fe63e('0xac6')},{'sTitle':'Contact\x20Number'}];}},{'key':_0x21424f('0x5f6'),'value':function(){var _0x4fadd2=_0x21424f;return[{'title':'Name','dataIndex':_0x4fadd2('0x263'),'sorter':!0x0},{'title':_0x4fadd2('0xf10'),'dataIndex':_0x4fadd2('0xddf'),'sorter':!0x0},{'title':'Address','dataIndex':'address','sorter':!0x0},{'title':'Contact\x20Number','dataIndex':_0x4fadd2('0xea7'),'sorter':!0x0}];}},{'key':_0x21424f('0xfe3'),'value':function(){var _0x801314=_0x21424f;return this['showSave']?[['id',{'label':'ID','type':_0x801314('0xdc0')}],[_0x801314('0x263'),{'label':_0x801314('0x1'),'type':_0x801314('0x768')}],['details',{'label':_0x801314('0xf10'),'type':'textarea','validation':_0x801314('0x1c1')}],[_0x801314('0x737'),{'label':_0x801314('0xac6'),'type':_0x801314('0xa2e'),'validation':_0x801314('0x1c1')}],[_0x801314('0xea7'),{'label':'Contact\x20Number','type':_0x801314('0x768'),'validation':_0x801314('0x1c1')}],['contact_email',{'label':_0x801314('0x4b5'),'type':_0x801314('0x768'),'validation':_0x801314('0x1c1')}],['company_url',{'label':_0x801314('0xa91'),'type':_0x801314('0x768'),'validation':_0x801314('0x1c1')}],[_0x801314('0x11e7'),{'label':_0x801314('0xf9f'),'type':_0x801314('0x8ff'),'source':[[_0x801314('0xdaf'),'Active'],[_0x801314('0xa8d'),_0x801314('0xa8d')]]}],[_0x801314('0xd1c'),{'label':_0x801314('0x345'),'type':_0x801314('0x65d'),'validation':_0x801314('0x1c1')}]]:[['id',{'label':'ID','type':_0x801314('0xdc0')}],[_0x801314('0x263'),{'label':_0x801314('0x1'),'type':_0x801314('0x7c2')}],[_0x801314('0xddf'),{'label':_0x801314('0xf10'),'type':_0x801314('0x7c2'),'validation':_0x801314('0x1c1')}],[_0x801314('0x737'),{'label':_0x801314('0xac6'),'type':_0x801314('0x7c2'),'validation':_0x801314('0x1c1')}],['contact_number',{'label':_0x801314('0x7a2'),'type':_0x801314('0x7c2'),'validation':_0x801314('0x1c1')}],[_0x801314('0x782'),{'label':_0x801314('0x4b5'),'type':'placeholder','validation':_0x801314('0x1c1')}],['company_url',{'label':'Company\x20Url','type':'placeholder','validation':_0x801314('0x1c1')}],['status',{'label':'Status','type':_0x801314('0x7c2'),'source':[[_0x801314('0xdaf'),'Active'],['Inactive',_0x801314('0xa8d')]]}],[_0x801314('0xd1c'),{'label':_0x801314('0x345'),'type':_0x801314('0x7c2'),'validation':_0x801314('0x1c1')}]];}},{'key':_0x21424f('0x115d'),'value':function(){var _0x4f2b3d=_0x21424f;return _0x4f2b3d('0x965');}}])&&_0xb9602b(_0x5cb810[_0x21424f('0x98c')],_0x25d0d2),_0x3db46d&&_0xb9602b(_0x5cb810,_0x3db46d),_0x727698;}(((_0x3896eb=_0x28102f(_0x4b1cf4('0x4ac')))&&_0x3896eb['__esModule']?_0x3896eb:{'default':_0x3896eb})[_0x4b1cf4('0x544')]);_0x468041[_0x4b1cf4('0xddc')]={'ClientAdapter':_0xaefdaa};},{'../../../api/ReactModalAdapterBase':0x46}],0x8:[function(_0x3df7d9,_0x530feb,_0x31059e){var _0x201e6f=_0x3ab6;'use strict';var _0x2e8301,_0x5c6d0a=_0x3df7d9(_0x201e6f('0x358')),_0xdfe79d=(_0x2e8301=_0x3df7d9(_0x201e6f('0x25c')))&&_0x2e8301[_0x201e6f('0x114c')]?_0x2e8301:{'default':_0x2e8301};window['initAdminCompanyStructure']=function(_0x8b94db){var _0x4adcbc=_0x201e6f,_0x3ab3cf={};_0x3ab3cf[_0x4adcbc('0xf3d')]=new _0x5c6d0a['CompanyStructureAdapter']('CompanyStructure'),_0x3ab3cf[_0x4adcbc('0xf3d')][_0x4adcbc('0xb3e')](_0x4adcbc('0xef5')),_0x3ab3cf[_0x4adcbc('0xf3d')][_0x4adcbc('0x11cf')](new _0xdfe79d[(_0x4adcbc('0x544'))](_0x3ab3cf[_0x4adcbc('0xf3d')])),_0x3ab3cf[_0x4adcbc('0xf3d')][_0x4adcbc('0xad3')](_0x8b94db[_0x4adcbc('0x73f')][_0x4adcbc('0x2f6')]),_0x3ab3cf[_0x4adcbc('0xf3d')][_0x4adcbc('0x2e6')](_0x8b94db[_0x4adcbc('0x1124')]),_0x3ab3cf[_0x4adcbc('0x6b3')]=new _0x5c6d0a['CompanyGraphAdapter'](_0x4adcbc('0x2f6')),window[_0x4adcbc('0x7db')]=_0x3ab3cf['tabCompanyStructure'],window[_0x4adcbc('0x336')]=_0x3ab3cf;};},{'../../../api/IceDataPipe':0x3f,'./lib':0x9}],0x9:[function(_0x521647,_0x12b81d,_0x5f2e10){var _0x373626=_0x3ab6;'use strict';var _0x17b082=_0x4aea58(_0x521647(_0x373626('0x4ac'))),_0x5c88ef=_0x4aea58(_0x521647('../../../api/AdapterBase'));function _0x4aea58(_0x5b0f84){var _0x1cd92b=_0x373626;return _0x5b0f84&&_0x5b0f84[_0x1cd92b('0x114c')]?_0x5b0f84:{'default':_0x5b0f84};}function _0x537a24(_0xbfd67){var _0x168cc1=_0x373626;return(_0x537a24='function'==typeof Symbol&&_0x168cc1('0x245')==typeof Symbol['iterator']?function(_0x2909af){return typeof _0x2909af;}:function(_0x2ae1f7){var _0x4b6411=_0x168cc1;return _0x2ae1f7&&_0x4b6411('0xae9')==typeof Symbol&&_0x2ae1f7['constructor']===Symbol&&_0x2ae1f7!==Symbol['prototype']?_0x4b6411('0x245'):typeof _0x2ae1f7;})(_0xbfd67);}function _0x3e3335(_0x2a821f,_0x221d9f){var _0x3e1621=_0x373626;if(!(_0x2a821f instanceof _0x221d9f))throw new TypeError(_0x3e1621('0x202'));}function _0x2c1cbb(_0xa475ae,_0x125d03){var _0x40d815=_0x373626;for(var _0x477e56=0x0;_0x477e56<_0x125d03[_0x40d815('0x525')];_0x477e56++){var _0x4f1d6d=_0x125d03[_0x477e56];_0x4f1d6d[_0x40d815('0x156')]=_0x4f1d6d['enumerable']||!0x1,_0x4f1d6d['configurable']=!0x0,_0x40d815('0x832')in _0x4f1d6d&&(_0x4f1d6d[_0x40d815('0x4db')]=!0x0),Object[_0x40d815('0xa95')](_0xa475ae,_0x4f1d6d[_0x40d815('0x1192')],_0x4f1d6d);}}function _0x2f7d02(_0x5a6ba1,_0x1ca56b,_0x5d66b4){var _0xcbd856=_0x373626;return _0x1ca56b&&_0x2c1cbb(_0x5a6ba1[_0xcbd856('0x98c')],_0x1ca56b),_0x5d66b4&&_0x2c1cbb(_0x5a6ba1,_0x5d66b4),_0x5a6ba1;}function _0x45ec3e(_0x4d8b8d){return function(){var _0x1b339e=_0x3ab6,_0x3dc17d,_0x14786f=_0x377d03(_0x4d8b8d);if(_0x136e6e()){var _0x4ea0e1=_0x377d03(this)['constructor'];_0x3dc17d=Reflect['construct'](_0x14786f,arguments,_0x4ea0e1);}else _0x3dc17d=_0x14786f[_0x1b339e('0x1036')](this,arguments);return _0x1bcd61(this,_0x3dc17d);};}function _0x1bcd61(_0x4e7cff,_0x5bb05c){var _0x441250=_0x373626;return!_0x5bb05c||'object'!==_0x537a24(_0x5bb05c)&&_0x441250('0xae9')!=typeof _0x5bb05c?function(_0x2244b2){var _0x3d89f2=_0x441250;if(void 0x0===_0x2244b2)throw new ReferenceError(_0x3d89f2('0x2e9'));return _0x2244b2;}(_0x4e7cff):_0x5bb05c;}function _0x136e6e(){var _0x5e0163=_0x373626;if(_0x5e0163('0x56')==typeof Reflect||!Reflect[_0x5e0163('0x6ea')])return!0x1;if(Reflect[_0x5e0163('0x6ea')][_0x5e0163('0x16e')])return!0x1;if(_0x5e0163('0xae9')==typeof Proxy)return!0x0;try{return Date[_0x5e0163('0x98c')][_0x5e0163('0x537')][_0x5e0163('0x4b0')](Reflect[_0x5e0163('0x6ea')](Date,[],function(){})),!0x0;}catch(_0x37bf86){return!0x1;}}function _0x377d03(_0x4e8808){var _0x372353=_0x373626;return(_0x377d03=Object['setPrototypeOf']?Object[_0x372353('0x10c0')]:function(_0x47faa0){var _0x320b16=_0x372353;return _0x47faa0[_0x320b16('0x11e6')]||Object[_0x320b16('0x10c0')](_0x47faa0);})(_0x4e8808);}function _0x2c4b6f(_0x1c653d,_0x3c8dbf){var _0x404056=_0x373626;if('function'!=typeof _0x3c8dbf&&null!==_0x3c8dbf)throw new TypeError('Super\x20expression\x20must\x20either\x20be\x20null\x20or\x20a\x20function');_0x1c653d[_0x404056('0x98c')]=Object[_0x404056('0x5c2')](_0x3c8dbf&&_0x3c8dbf[_0x404056('0x98c')],{'constructor':{'value':_0x1c653d,'writable':!0x0,'configurable':!0x0}}),_0x3c8dbf&&_0x5f235a(_0x1c653d,_0x3c8dbf);}function _0x5f235a(_0xb4ffc6,_0x4eb318){return(_0x5f235a=Object['setPrototypeOf']||function(_0x3a7554,_0x103dac){var _0x3d2185=_0x3ab6;return _0x3a7554[_0x3d2185('0x11e6')]=_0x103dac,_0x3a7554;})(_0xb4ffc6,_0x4eb318);}var _0x44c38c=function(_0x491eea){var _0x19f9c7=_0x373626;_0x2c4b6f(_0x30c632,_0x491eea);var _0x19d2b2=_0x45ec3e(_0x30c632);function _0x30c632(){var _0x4d6c01=_0x3ab6;return _0x3e3335(this,_0x30c632),_0x19d2b2[_0x4d6c01('0x1036')](this,arguments);}return _0x2f7d02(_0x30c632,[{'key':_0x19f9c7('0x315'),'value':function(){var _0x5e258b=_0x19f9c7;return['id','title','address',_0x5e258b('0x3f7'),_0x5e258b('0x96b'),'timezone',_0x5e258b('0xeb7')];}},{'key':_0x19f9c7('0x5d2'),'value':function(){var _0x4fc3a4=_0x19f9c7;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':'Name'},{'sTitle':'Address','bSortable':!0x1},{'sTitle':_0x4fc3a4('0xb2b')},{'sTitle':'Country','sClass':_0x4fc3a4('0x1ed')},{'sTitle':_0x4fc3a4('0x978')},{'sTitle':_0x4fc3a4('0xb74')}];}},{'key':_0x19f9c7('0x5f6'),'value':function(){var _0x36e522=_0x19f9c7;return[{'title':'Name','dataIndex':_0x36e522('0xba3'),'sorter':!0x0},{'title':_0x36e522('0xac6'),'dataIndex':_0x36e522('0x737')},{'title':'Type','dataIndex':'type'},{'title':_0x36e522('0x10f5'),'dataIndex':'country'},{'title':'Time\x20Zone','dataIndex':_0x36e522('0x7fd')},{'title':'Parent\x20Structure','dataIndex':_0x36e522('0xeb7')}];}},{'key':_0x19f9c7('0xfe3'),'value':function(){var _0x523ebb=_0x19f9c7;return this['addCustomFields']([['id',{'label':'ID','type':_0x523ebb('0xdc0'),'validation':''}],['title',{'label':_0x523ebb('0x1'),'type':'text','validation':''}],[_0x523ebb('0xbfc'),{'label':'Details','type':'textarea','validation':''}],['address',{'label':'Address','type':'textarea','validation':_0x523ebb('0x1c1')}],[_0x523ebb('0x3f7'),{'label':_0x523ebb('0xb2b'),'type':_0x523ebb('0x8ff'),'source':[[_0x523ebb('0xdf3'),'Company'],[_0x523ebb('0x91d'),_0x523ebb('0x91d')],['Regional\x20Office',_0x523ebb('0x9f5')],[_0x523ebb('0x11b9'),'Department'],[_0x523ebb('0x9f0'),'Unit'],[_0x523ebb('0x9f4'),_0x523ebb('0x9f4')],[_0x523ebb('0x4f5'),_0x523ebb('0x4f5')]]}],['country',{'label':_0x523ebb('0x10f5'),'type':'select2','remote-source':[_0x523ebb('0x10f5'),_0x523ebb('0xb5c'),'name']}],[_0x523ebb('0x7fd'),{'label':_0x523ebb('0x978'),'type':_0x523ebb('0x1137'),'allow-null':!0x1,'remote-source':[_0x523ebb('0x85a'),'name',_0x523ebb('0xddf'),'getTimezonesWithOffset']}],[_0x523ebb('0xeb7'),{'label':_0x523ebb('0xb74'),'type':_0x523ebb('0x8ff'),'allow-null':!0x0,'remote-source':[_0x523ebb('0x2f6'),'id',_0x523ebb('0xba3')]}],[_0x523ebb('0xcd3'),{'label':_0x523ebb('0x762'),'type':_0x523ebb('0x256'),'allow-null':!0x0,'remote-source':[_0x523ebb('0x3e1'),'id','first_name+last_name']}]]);}},{'key':_0x19f9c7('0x961'),'value':function(_0xa3e8cd,_0x9282a2){var _0x300158=_0x19f9c7;null!=_0xa3e8cd&&null!==_0xa3e8cd['id']&&void 0x0!==_0xa3e8cd['id']&&''!==_0xa3e8cd['id']||_0x9282a2['find'](_0x300158('0xef7'))[_0x300158('0x9c2')]();}},{'key':_0x19f9c7('0x115d'),'value':function(){var _0x2ca21c=_0x19f9c7;return _0x2ca21c('0xc8b');}}]),_0x30c632;}(_0x17b082[_0x373626('0x544')]),_0xc45900=function(_0x5e55fb){var _0x5e956d=_0x373626;_0x2c4b6f(_0x5a2959,_0x5e55fb);var _0x216630=_0x45ec3e(_0x5a2959);function _0x5a2959(_0x1c48c7,_0x3eadf3,_0x178cc4,_0x2622ce){var _0x115166=_0x3ab6,_0x50c028;return _0x3e3335(this,_0x5a2959),(_0x50c028=_0x216630['call'](this,_0x1c48c7,_0x3eadf3,_0x178cc4,_0x2622ce))[_0x115166('0xe25')]=0x0,_0x50c028;}return _0x2f7d02(_0x5a2959,[{'key':_0x5e956d('0x315'),'value':function(){var _0x34a5a7=_0x5e956d;return['id',_0x34a5a7('0xba3'),'address',_0x34a5a7('0x3f7'),_0x34a5a7('0x96b'),_0x34a5a7('0x7fd'),'parent'];}},{'key':_0x5e956d('0x5d2'),'value':function(){var _0xfd704a=_0x5e956d;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':_0xfd704a('0x1')},{'sTitle':_0xfd704a('0xac6'),'bSortable':!0x1},{'sTitle':_0xfd704a('0xb2b')},{'sTitle':_0xfd704a('0x10f5'),'sClass':'center'},{'sTitle':_0xfd704a('0x978')},{'sTitle':'Parent\x20Structure'}];}},{'key':_0x5e956d('0xfe3'),'value':function(){var _0x41ae89=_0x5e956d;return[['id',{'label':'ID','type':_0x41ae89('0xdc0'),'validation':''}],[_0x41ae89('0xba3'),{'label':_0x41ae89('0x1'),'type':_0x41ae89('0x768'),'validation':''}],[_0x41ae89('0xbfc'),{'label':_0x41ae89('0xf10'),'type':_0x41ae89('0xa2e'),'validation':''}],[_0x41ae89('0x737'),{'label':_0x41ae89('0xac6'),'type':'textarea','validation':_0x41ae89('0x1c1')}],[_0x41ae89('0x3f7'),{'label':_0x41ae89('0xb2b'),'type':_0x41ae89('0x8ff'),'source':[[_0x41ae89('0xdf3'),_0x41ae89('0xdf3')],['Head\x20Office',_0x41ae89('0x91d')],[_0x41ae89('0x9f5'),'Regional\x20Office'],[_0x41ae89('0x11b9'),_0x41ae89('0x11b9')],[_0x41ae89('0x9f0'),_0x41ae89('0x9f0')],[_0x41ae89('0x9f4'),_0x41ae89('0x9f4')],[_0x41ae89('0x4f5'),_0x41ae89('0x4f5')]]}],[_0x41ae89('0x96b'),{'label':_0x41ae89('0x10f5'),'type':'select2','remote-source':[_0x41ae89('0x10f5'),_0x41ae89('0xb5c'),_0x41ae89('0x263')]}],['timezone',{'label':_0x41ae89('0x978'),'type':_0x41ae89('0x1137'),'allow-null':!0x1,'remote-source':['Timezone',_0x41ae89('0x263'),'details',_0x41ae89('0x2fd')]}],[_0x41ae89('0xeb7'),{'label':_0x41ae89('0xb74'),'type':_0x41ae89('0x8ff'),'allow-null':!0x0,'remote-source':[_0x41ae89('0x2f6'),'id',_0x41ae89('0xba3')]}],[_0x41ae89('0xcd3'),{'label':_0x41ae89('0x762'),'type':'select2multi','allow-null':!0x0,'remote-source':[_0x41ae89('0x3e1'),'id',_0x41ae89('0x2d')]}]];}},{'key':_0x5e956d('0xabe'),'value':function(_0x3621f4){var _0x4f94a8=_0x5e956d;for(var _0x426c96={'id':-0x1,'title':'','name':'','children':[]},_0x4408df=null,_0x398fee=0x0;_0x398fee<_0x3621f4[_0x4f94a8('0x525')];_0x398fee++)_0x3621f4[_0x398fee][_0x4f94a8('0x263')]=_0x3621f4[_0x398fee][_0x4f94a8('0xba3')],null!=_0x3621f4[_0x398fee][_0x4f94a8('0xeb7')]&&void 0x0!==_0x3621f4[_0x398fee][_0x4f94a8('0xeb7')]&&null!=(_0x4408df=this[_0x4f94a8('0xfc')](_0x3621f4,_0x3621f4[_0x398fee][_0x4f94a8('0xeb7')]))&&(void 0x0!==_0x4408df[_0x4f94a8('0x115a')]&&null!=_0x4408df[_0x4f94a8('0x115a')]||(_0x4408df[_0x4f94a8('0x115a')]=[]),_0x4408df[_0x4f94a8('0x115a')]['push'](_0x3621f4[_0x398fee]));for(var _0x309241=0x0;_0x309241<_0x3621f4[_0x4f94a8('0x525')];_0x309241++)null!=_0x3621f4[_0x309241][_0x4f94a8('0xeb7')]&&void 0x0!==_0x3621f4[_0x309241][_0x4f94a8('0xeb7')]||_0x426c96['children'][_0x4f94a8('0x8f8')](_0x3621f4[_0x309241]);return _0x426c96;}},{'key':'findParent','value':function(_0xd5975a,_0x4d131a){var _0x43b321=_0x5e956d;for(var _0x30c66c=0x0;_0x30c66c<_0xd5975a[_0x43b321('0x525')];_0x30c66c++)if(_0xd5975a[_0x30c66c][_0x43b321('0xba3')]===_0x4d131a||_0xd5975a[_0x30c66c][_0x43b321('0xba3')]===_0x4d131a)return _0xd5975a[_0x30c66c];return null;}},{'key':'createTable','value':function(_0x2b2866){var _0x42aecc=_0x5e956d;$(_0x42aecc('0xfaa'))[_0x42aecc('0xb07')]('');var _0x5b600d=this['sourceData'],_0x4a2bb6=this[_0x42aecc('0xabe')](_0x5b600d),_0x5bdd53=[0x14,0x78,0x14,0x78],_0x325cb7=0x1388-_0x5bdd53[0x1]-_0x5bdd53[0x3],_0x43f5aa=0x3e8-_0x5bdd53[0x0]-_0x5bdd53[0x2],_0x2eeddd=d3['layout']['tree']()[_0x42aecc('0x844')]([_0x43f5aa,_0x325cb7]);this['diagonal']=d3[_0x42aecc('0x49e')][_0x42aecc('0xaca')]()[_0x42aecc('0x3b6')](function(_0x971870){return[_0x971870['y'],_0x971870['x']];}),this[_0x42aecc('0x10db')]=d3['select'](_0x42aecc('0xfaa'))[_0x42aecc('0xf9a')](_0x42aecc('0xdae'))['attr']('width',_0x325cb7+_0x5bdd53[0x1]+_0x5bdd53[0x3])[_0x42aecc('0xba5')](_0x42aecc('0x7f0'),_0x43f5aa+_0x5bdd53[0x0]+_0x5bdd53[0x2])[_0x42aecc('0xf9a')](_0x42aecc('0x339'))[_0x42aecc('0xba5')](_0x42aecc('0x763'),_0x42aecc('0x11a')['concat'](_0x5bdd53[0x3],',')['concat'](_0x5bdd53[0x0],')'));var _0x4ee514=_0x4a2bb6;_0x4ee514['x0']=_0x43f5aa/0x2,_0x4ee514['y0']=0x0,this['update'](_0x4ee514,_0x2eeddd,_0x4ee514);}},{'key':'update','value':function(_0x3f0c7f,_0x110a39,_0x240865){var _0x99e3f3=_0x5e956d,_0x337c1e=this,_0x53d9af=d3[_0x99e3f3('0x786')]&&d3[_0x99e3f3('0x786')]['altKey']?0x1388:0x1f4,_0x1f40d8=_0x110a39['nodes'](_0x240865)[_0x99e3f3('0x11ea')]();_0x1f40d8['forEach'](function(_0x23bfc2){_0x23bfc2['y']=0xb4*_0x23bfc2['depth'];});var _0x29087f=_0x337c1e[_0x99e3f3('0x10db')]['selectAll']('g.node')[_0x99e3f3('0xac8')](_0x1f40d8,function(_0x3dd605){var _0x72ecdd=_0x99e3f3;return _0x3dd605['id']||(_0x3dd605['id']=++_0x337c1e[_0x72ecdd('0xe25')]);}),_0x44a7e5=_0x29087f[_0x99e3f3('0xee3')]()[_0x99e3f3('0xf9a')](_0x99e3f3('0x339'))[_0x99e3f3('0xba5')](_0x99e3f3('0x4f7'),_0x99e3f3('0x5f'))[_0x99e3f3('0xba5')](_0x99e3f3('0x763'),function(_0x4ed1a9){var _0x40ea53=_0x99e3f3;return'translate('[_0x40ea53('0x3cc')](_0x3f0c7f['y0'],',')[_0x40ea53('0x3cc')](_0x3f0c7f['x0'],')');})['on'](_0x99e3f3('0xd4d'),function(_0x3a6b79){var _0x343baa=_0x99e3f3;_0x337c1e['toggle'](_0x3a6b79),_0x337c1e[_0x343baa('0x4ca')](_0x3a6b79,_0x110a39,_0x240865);});_0x44a7e5[_0x99e3f3('0xf9a')]('svg:circle')[_0x99e3f3('0xba5')]('r',0.000001)[_0x99e3f3('0x1cd')](_0x99e3f3('0xbd'),function(_0x3ad9d2){var _0x31a4a0=_0x99e3f3;return _0x3ad9d2[_0x31a4a0('0x29b')]?'lightsteelblue':'#fff';}),_0x44a7e5['append']('svg:text')[_0x99e3f3('0xba5')]('x',function(_0x7ba09f){return _0x7ba09f['children']||_0x7ba09f['_children']?-0xa:0xa;})[_0x99e3f3('0xba5')]('dy','.35em')[_0x99e3f3('0xba5')](_0x99e3f3('0xe97'),function(_0x31ce5c){var _0x3199d6=_0x99e3f3;return _0x31ce5c[_0x3199d6('0x115a')]||_0x31ce5c[_0x3199d6('0x29b')]?_0x3199d6('0xbc6'):_0x3199d6('0x1045');})[_0x99e3f3('0x768')](function(_0x3ef82c){return _0x3ef82c['name'];})[_0x99e3f3('0x1cd')](_0x99e3f3('0x2b3'),0.000001);var _0x40e73c=_0x29087f[_0x99e3f3('0xf58')]()[_0x99e3f3('0xa3')](_0x53d9af)[_0x99e3f3('0xba5')]('transform',function(_0x17df09){var _0x286ca0=_0x99e3f3;return _0x286ca0('0x11a')[_0x286ca0('0x3cc')](_0x17df09['y'],',')[_0x286ca0('0x3cc')](_0x17df09['x'],')');});_0x40e73c['select']('circle')[_0x99e3f3('0xba5')]('r',4.5)[_0x99e3f3('0x1cd')](_0x99e3f3('0xbd'),function(_0x17bf34){var _0x5321f9=_0x99e3f3;return _0x17bf34['_children']?_0x5321f9('0x181'):_0x5321f9('0xe8b');}),_0x40e73c[_0x99e3f3('0x8ff')](_0x99e3f3('0x768'))[_0x99e3f3('0x1cd')]('fill-opacity',0x1);var _0x464f1f=_0x29087f[_0x99e3f3('0xe61')]()['transition']()['duration'](_0x53d9af)[_0x99e3f3('0xba5')](_0x99e3f3('0x763'),function(_0x369e54){var _0x32edab=_0x99e3f3;return _0x32edab('0x11a')[_0x32edab('0x3cc')](_0x3f0c7f['y'],',')[_0x32edab('0x3cc')](_0x3f0c7f['x'],')');})[_0x99e3f3('0x109c')]();_0x464f1f[_0x99e3f3('0x8ff')](_0x99e3f3('0x9b5'))['attr']('r',0.000001),_0x464f1f[_0x99e3f3('0x8ff')](_0x99e3f3('0x768'))['style'](_0x99e3f3('0x2b3'),0.000001);var _0x4388e1=_0x337c1e[_0x99e3f3('0x10db')][_0x99e3f3('0x4e1')](_0x99e3f3('0x1008'))[_0x99e3f3('0xac8')](_0x110a39[_0x99e3f3('0x10bc')](_0x1f40d8),function(_0x30b22d){return _0x30b22d['target']['id'];});_0x4388e1[_0x99e3f3('0xee3')]()[_0x99e3f3('0x4e2')](_0x99e3f3('0x1fc'),'g')[_0x99e3f3('0xba5')](_0x99e3f3('0x4f7'),_0x99e3f3('0x9b0'))[_0x99e3f3('0xba5')]('d',function(_0x31189d){var _0x1d7678=_0x99e3f3,_0xbd3cc3={'x':_0x3f0c7f['x0'],'y':_0x3f0c7f['y0']};return _0x337c1e[_0x1d7678('0xaca')]({'source':_0xbd3cc3,'target':_0xbd3cc3});})[_0x99e3f3('0xf58')]()['duration'](_0x53d9af)[_0x99e3f3('0xba5')]('d',_0x337c1e[_0x99e3f3('0xaca')]),_0x4388e1[_0x99e3f3('0xf58')]()[_0x99e3f3('0xa3')](_0x53d9af)[_0x99e3f3('0xba5')]('d',_0x337c1e['diagonal']),_0x4388e1[_0x99e3f3('0xe61')]()[_0x99e3f3('0xf58')]()[_0x99e3f3('0xa3')](_0x53d9af)[_0x99e3f3('0xba5')]('d',function(_0x43db74){var _0x43dafb=_0x99e3f3,_0x351c55={'x':_0x3f0c7f['x'],'y':_0x3f0c7f['y']};return _0x337c1e[_0x43dafb('0xaca')]({'source':_0x351c55,'target':_0x351c55});})[_0x99e3f3('0x109c')](),_0x1f40d8[_0x99e3f3('0xa9e')](function(_0x479eb6){_0x479eb6['x0']=_0x479eb6['x'],_0x479eb6['y0']=_0x479eb6['y'];});}},{'key':_0x5e956d('0x596'),'value':function(_0x1230f4){var _0x1b5624=_0x5e956d;_0x1230f4[_0x1b5624('0x115a')]?(_0x1230f4[_0x1b5624('0x29b')]=_0x1230f4[_0x1b5624('0x115a')],_0x1230f4[_0x1b5624('0x115a')]=null):(_0x1230f4[_0x1b5624('0x115a')]=_0x1230f4[_0x1b5624('0x29b')],_0x1230f4[_0x1b5624('0x29b')]=null);}},{'key':'getSourceDataById','value':function(_0x8fabbf){var _0xf438c0=_0x5e956d;for(var _0xce5c2a=0x0;_0xce5c2a_0x396202[_0xefca8e('0x525')])&&(_0x4f8225=_0x396202[_0xefca8e('0x525')]);for(var _0x446fe1=0x0,_0x3b4bd9=new Array(_0x4f8225);_0x446fe1<_0x4f8225;_0x446fe1++)_0x3b4bd9[_0x446fe1]=_0x396202[_0x446fe1];return _0x3b4bd9;}_0x57fbc6['Typography']['Link'];var _0x5f4b1a=function(_0x2bb7c2){var _0x4cbb09=_0x578e14,_0xeec784=_0x4515d5((0x0,_0x5337e8[_0x4cbb09('0x533')])(!0x1),0x2),_0x21aefa=_0xeec784[0x0],_0x3d87ff=_0xeec784[0x1],_0x358198=_0x2bb7c2[_0x4cbb09('0xac8')],_0x544d5d=_0x2bb7c2[_0x4cbb09('0xd6')];return _0x5337e8[_0x4cbb09('0x544')][_0x4cbb09('0xd0f')](_0x57fbc6[_0x4cbb09('0x3ff')],{'direction':'vertical','style':{'width':_0x4cbb09('0xeef')}},_0x544d5d[_0x4cbb09('0x525')]>0x0&&_0x5337e8[_0x4cbb09('0x544')][_0x4cbb09('0xd0f')](_0x57fbc6[_0x4cbb09('0x117a')],{'title':_0x4cbb09('0xc9d')},_0x5337e8[_0x4cbb09('0x544')][_0x4cbb09('0xd0f')](_0x57fbc6[_0x4cbb09('0x3ff')],{'direction':_0x4cbb09('0xd20'),'style':{'width':_0x4cbb09('0xeef')}},_0x544d5d[_0x4cbb09('0xd49')](function(_0x7aec8e){var _0x16b5be=_0x4cbb09;return _0x5337e8['default']['createElement'](_0x57fbc6['Space'],null,_0x5337e8[_0x16b5be('0x544')][_0x16b5be('0xd0f')](_0x57fbc6['Alert'],{'message':_0x7aec8e[_0x16b5be('0xa1a')],'type':_0x7aec8e[_0x16b5be('0x3f7')],'showIcon':!0x0}),_0x7aec8e['link']&&_0x5337e8[_0x16b5be('0x544')][_0x16b5be('0xd0f')](_0x57fbc6[_0x16b5be('0x288')],{'onClick':function(){var _0x5163fb=_0x16b5be;window[_0x5163fb('0xcbd')](_0x7aec8e[_0x5163fb('0x9b0')],_0x5163fb('0x4da'));}},_0x7aec8e[_0x16b5be('0x1133')]));}))),_0x5337e8[_0x4cbb09('0x544')][_0x4cbb09('0xd0f')](_0x57fbc6[_0x4cbb09('0x117a')],{'title':_0x4cbb09('0xc73')},_0x5337e8[_0x4cbb09('0x544')][_0x4cbb09('0xd0f')](_0x57fbc6[_0x4cbb09('0xf27')],{'columns':[{'title':_0x4cbb09('0x1'),'dataIndex':_0x4cbb09('0x263'),'key':_0x4cbb09('0x263')},{'title':_0x4cbb09('0x1ac'),'dataIndex':'value','key':_0x4cbb09('0x832')}],'dataSource':_0x358198}),_0x5337e8[_0x4cbb09('0x544')][_0x4cbb09('0xd0f')](_0x57fbc6[_0x4cbb09('0x288')],{'type':_0x4cbb09('0x712'),'icon':_0x5337e8[_0x4cbb09('0x544')]['createElement'](_0x428ef1[_0x4cbb09('0x48b')],null),'onClick':function(){_0x3d87ff(!0x0);}},_0x4cbb09('0x799'))),_0x5337e8[_0x4cbb09('0x544')]['createElement'](_0x57fbc6['Modal'],{'title':_0x4cbb09('0x824'),'visible':_0x21aefa,'onOk':function(){_0x3d87ff(!0x1);},'onCancel':function(){_0x3d87ff(!0x1);}},_0x358198[_0x4cbb09('0xd49')](function(_0x12d4c6){var _0xedec6=_0x4cbb09;return _0x5337e8[_0xedec6('0x544')]['createElement']('p',null,''[_0xedec6('0x3cc')](_0x12d4c6[_0xedec6('0x263')],':')['concat'](_0x12d4c6[_0xedec6('0x832')]));})));};_0x2ce855[_0x578e14('0x544')]=_0x5f4b1a;},{'@ant-design/icons':_0x404097('0x1e1'),'antd':'antd','react':'react'}],0xd:[function(_0x5d4885,_0x48303b,_0x50bede){var _0x5dac76=_0x404097;'use strict';var _0xa911bb=_0x5d4885(_0x5dac76('0x358'));window['initAdminConnection']=function(_0x1367cf){var _0x3bc60d=_0x5dac76,_0x240ec8={};_0x240ec8[_0x3bc60d('0xc7e')]=new _0xa911bb[(_0x3bc60d('0x1b9'))](_0x1367cf),window[_0x3bc60d('0x7db')]=_0x240ec8['tabConnection'],window[_0x3bc60d('0x336')]=_0x240ec8;};},{'./lib':0xe}],0xe:[function(_0x39cfd3,_0x3c855a,_0x13e96d){var _0x4b4bd5=_0x404097;'use strict';var _0x451b83=_0x3ef93b(_0x39cfd3(_0x4b4bd5('0x1041'))),_0x15f078=_0x3ef93b(_0x39cfd3(_0x4b4bd5('0xd47'))),_0x4b76f0=_0x3ef93b(_0x39cfd3(_0x4b4bd5('0x4ac'))),_0x42bef9=_0x3ef93b(_0x39cfd3(_0x4b4bd5('0x2b1')));function _0x3ef93b(_0xcec9a2){var _0x2eaa80=_0x4b4bd5;return _0xcec9a2&&_0xcec9a2[_0x2eaa80('0x114c')]?_0xcec9a2:{'default':_0xcec9a2};}function _0x32cd2b(_0x5ea0d1){var _0x40f5df=_0x4b4bd5;return(_0x32cd2b='function'==typeof Symbol&&_0x40f5df('0x245')==typeof Symbol[_0x40f5df('0x78e')]?function(_0x5a16d5){return typeof _0x5a16d5;}:function(_0x57cfbb){var _0x3bc8ba=_0x40f5df;return _0x57cfbb&&_0x3bc8ba('0xae9')==typeof Symbol&&_0x57cfbb[_0x3bc8ba('0x3c6')]===Symbol&&_0x57cfbb!==Symbol[_0x3bc8ba('0x98c')]?_0x3bc8ba('0x245'):typeof _0x57cfbb;})(_0x5ea0d1);}function _0xd11a55(_0xb938b0,_0x4158fe){var _0x5bec0a=_0x4b4bd5;for(var _0x57a405=0x0;_0x57a405<_0x4158fe[_0x5bec0a('0x525')];_0x57a405++){var _0x477bfd=_0x4158fe[_0x57a405];_0x477bfd['enumerable']=_0x477bfd['enumerable']||!0x1,_0x477bfd['configurable']=!0x0,_0x5bec0a('0x832')in _0x477bfd&&(_0x477bfd[_0x5bec0a('0x4db')]=!0x0),Object[_0x5bec0a('0xa95')](_0xb938b0,_0x477bfd[_0x5bec0a('0x1192')],_0x477bfd);}}function _0xeb7b21(_0x103b6b,_0x6e7412){var _0x4283ed=_0x4b4bd5;return!_0x6e7412||_0x4283ed('0x21e')!==_0x32cd2b(_0x6e7412)&&_0x4283ed('0xae9')!=typeof _0x6e7412?function(_0x20b119){var _0x27c6ec=_0x4283ed;if(void 0x0===_0x20b119)throw new ReferenceError(_0x27c6ec('0x2e9'));return _0x20b119;}(_0x103b6b):_0x6e7412;}function _0x3915e9(){var _0x4cb8a7=_0x4b4bd5;if('undefined'==typeof Reflect||!Reflect[_0x4cb8a7('0x6ea')])return!0x1;if(Reflect['construct']['sham'])return!0x1;if(_0x4cb8a7('0xae9')==typeof Proxy)return!0x0;try{return Date['prototype']['toString'][_0x4cb8a7('0x4b0')](Reflect[_0x4cb8a7('0x6ea')](Date,[],function(){})),!0x0;}catch(_0x378e6e){return!0x1;}}function _0x5bc994(_0x50130d){var _0x1ee408=_0x4b4bd5;return(_0x5bc994=Object[_0x1ee408('0x6c2')]?Object[_0x1ee408('0x10c0')]:function(_0x422415){var _0x5df1f1=_0x1ee408;return _0x422415['__proto__']||Object[_0x5df1f1('0x10c0')](_0x422415);})(_0x50130d);}function _0xd25e54(_0x2dd57c,_0x1b94f1){return(_0xd25e54=Object['setPrototypeOf']||function(_0x5d72c9,_0xc78962){var _0x45d484=_0x3ab6;return _0x5d72c9[_0x45d484('0x11e6')]=_0xc78962,_0x5d72c9;})(_0x2dd57c,_0x1b94f1);}var _0x49c7be=function(_0x4e140a){var _0x37574e=_0x4b4bd5;!function(_0x17c15d,_0x54b888){var _0x8ba27b=_0x3ab6;if(_0x8ba27b('0xae9')!=typeof _0x54b888&&null!==_0x54b888)throw new TypeError(_0x8ba27b('0x409'));_0x17c15d[_0x8ba27b('0x98c')]=Object[_0x8ba27b('0x5c2')](_0x54b888&&_0x54b888['prototype'],{'constructor':{'value':_0x17c15d,'writable':!0x0,'configurable':!0x0}}),_0x54b888&&_0xd25e54(_0x17c15d,_0x54b888);}(_0x41d598,_0x4e140a);var _0x39ce80,_0x477aae,_0x32593f,_0x5e4012,_0x2a497a=(_0x39ce80=_0x41d598,function(){var _0x2801d4=_0x3ab6,_0x3f27d6,_0x3d5502=_0x5bc994(_0x39ce80);if(_0x3915e9()){var _0x3924c1=_0x5bc994(this)['constructor'];_0x3f27d6=Reflect[_0x2801d4('0x6ea')](_0x3d5502,arguments,_0x3924c1);}else _0x3f27d6=_0x3d5502[_0x2801d4('0x1036')](this,arguments);return _0xeb7b21(this,_0x3f27d6);});function _0x41d598(_0x226698){var _0x5f3a9d=_0x3ab6,_0x5a8aad;return function(_0x377a98,_0x34216f){var _0x15a521=_0x3ab6;if(!(_0x377a98 instanceof _0x34216f))throw new TypeError(_0x15a521('0x202'));}(this,_0x41d598),(_0x5a8aad=_0x2a497a['call'](this,'','','',''))[_0x5f3a9d('0xac8')]=_0x226698,_0x5a8aad;}return _0x477aae=_0x41d598,(_0x32593f=[{'key':_0x37574e('0x33'),'value':function(_0xbcbfe8){var _0x1df76d=_0x37574e,_0x43cfcd=this['data']['components'];_0x15f078[_0x1df76d('0x544')][_0x1df76d('0x80f')](_0x451b83[_0x1df76d('0x544')][_0x1df76d('0xd0f')](_0x42bef9['default'],_0x43cfcd),document[_0x1df76d('0xc14')]('connectionData'));}},{'key':'initSourceMappings','value':function(){}}])&&_0xd11a55(_0x477aae['prototype'],_0x32593f),_0x5e4012&&_0xd11a55(_0x477aae,_0x5e4012),_0x41d598;}(_0x4b76f0[_0x4b4bd5('0x544')]);_0x3c855a['exports']={'ConnectionAdapter':_0x49c7be};},{'../../../api/ReactModalAdapterBase':0x46,'./components/ConnectionTab':0xa,'react':_0x404097('0x1041'),'react-dom':_0x404097('0xd47')}],0xf:[function(_0x5d7f70,_0x212a14,_0x2905d7){var _0x452f1d=_0x404097;'use strict';var _0x2bedc8,_0x55e1c3=_0x5d7f70(_0x452f1d('0x358')),_0x42354f=(_0x2bedc8=_0x5d7f70('../../../api/IceDataPipe'))&&_0x2bedc8['__esModule']?_0x2bedc8:{'default':_0x2bedc8};window[_0x452f1d('0x1097')]=function(_0x58c303){var _0x39567e=_0x452f1d,_0x2918c9={};_0x2918c9[_0x39567e('0x554')]=new _0x55e1c3[(_0x39567e('0x37f'))]('CustomField',_0x39567e('0x180'),{},''),_0x2918c9[_0x39567e('0x554')][_0x39567e('0x1141')](!0x0),_0x2918c9[_0x39567e('0x554')]['setObjectTypeName'](_0x39567e('0x6b7')),_0x2918c9[_0x39567e('0x554')][_0x39567e('0x11cf')](new _0x42354f['default'](_0x2918c9[_0x39567e('0x554')])),_0x2918c9[_0x39567e('0x554')][_0x39567e('0xad3')](_0x58c303[_0x39567e('0x73f')][_0x39567e('0x180')]),_0x2918c9[_0x39567e('0x554')][_0x39567e('0x746')](_0x58c303[_0x39567e('0x13d')]),window[_0x39567e('0x7db')]=_0x2918c9[_0x39567e('0x554')],window[_0x39567e('0x336')]=_0x2918c9;};},{'../../../api/IceDataPipe':0x3f,'./lib':0x10}],0x10:[function(_0x2115bb,_0x2a1920,_0x50cb24){var _0x3368a1=_0x404097;'use strict';var _0x3d73c3;function _0x57a815(_0x1151a0){var _0x50c9ea=_0x3ab6;return(_0x57a815='function'==typeof Symbol&&'symbol'==typeof Symbol[_0x50c9ea('0x78e')]?function(_0x5c53b5){return typeof _0x5c53b5;}:function(_0x32baa6){var _0x4adb2b=_0x50c9ea;return _0x32baa6&&_0x4adb2b('0xae9')==typeof Symbol&&_0x32baa6[_0x4adb2b('0x3c6')]===Symbol&&_0x32baa6!==Symbol['prototype']?_0x4adb2b('0x245'):typeof _0x32baa6;})(_0x1151a0);}function _0x2fad67(_0x1f3b7b,_0x2c20f7){var _0x204e24=_0x3ab6;if(!(_0x1f3b7b instanceof _0x2c20f7))throw new TypeError(_0x204e24('0x202'));}function _0x35ac46(_0x16f726,_0x59938e){var _0x5545bd=_0x3ab6;for(var _0x4a2bc6=0x0;_0x4a2bc6<_0x59938e[_0x5545bd('0x525')];_0x4a2bc6++){var _0x12daa7=_0x59938e[_0x4a2bc6];_0x12daa7['enumerable']=_0x12daa7[_0x5545bd('0x156')]||!0x1,_0x12daa7['configurable']=!0x0,_0x5545bd('0x832')in _0x12daa7&&(_0x12daa7[_0x5545bd('0x4db')]=!0x0),Object[_0x5545bd('0xa95')](_0x16f726,_0x12daa7[_0x5545bd('0x1192')],_0x12daa7);}}function _0x503bb7(_0xb4890,_0x4d1b35){var _0x486b14=_0x3ab6;return!_0x4d1b35||'object'!==_0x57a815(_0x4d1b35)&&_0x486b14('0xae9')!=typeof _0x4d1b35?function(_0x293198){var _0x91ca3a=_0x486b14;if(void 0x0===_0x293198)throw new ReferenceError(_0x91ca3a('0x2e9'));return _0x293198;}(_0xb4890):_0x4d1b35;}function _0x241b19(){var _0x2686e2=_0x3ab6;if('undefined'==typeof Reflect||!Reflect['construct'])return!0x1;if(Reflect[_0x2686e2('0x6ea')]['sham'])return!0x1;if(_0x2686e2('0xae9')==typeof Proxy)return!0x0;try{return Date[_0x2686e2('0x98c')][_0x2686e2('0x537')][_0x2686e2('0x4b0')](Reflect[_0x2686e2('0x6ea')](Date,[],function(){})),!0x0;}catch(_0x27f943){return!0x1;}}function _0x23f88f(_0x18c2cc){var _0x169627=_0x3ab6;return(_0x23f88f=Object[_0x169627('0x6c2')]?Object[_0x169627('0x10c0')]:function(_0x20ec62){var _0x3055f9=_0x169627;return _0x20ec62[_0x3055f9('0x11e6')]||Object[_0x3055f9('0x10c0')](_0x20ec62);})(_0x18c2cc);}function _0x589c87(_0x2c549d,_0x2d6c52){var _0x1ddfbb=_0x3ab6;return(_0x589c87=Object[_0x1ddfbb('0x6c2')]||function(_0x36bc41,_0x495f69){var _0xc613f7=_0x1ddfbb;return _0x36bc41[_0xc613f7('0x11e6')]=_0x495f69,_0x36bc41;})(_0x2c549d,_0x2d6c52);}var _0x3a3960=function(_0x4f6ec5){var _0x2baeec=_0x3ab6;!function(_0x47c58a,_0x46e0a){var _0x15c16f=_0x3ab6;if(_0x15c16f('0xae9')!=typeof _0x46e0a&&null!==_0x46e0a)throw new TypeError(_0x15c16f('0x409'));_0x47c58a[_0x15c16f('0x98c')]=Object['create'](_0x46e0a&&_0x46e0a[_0x15c16f('0x98c')],{'constructor':{'value':_0x47c58a,'writable':!0x0,'configurable':!0x0}}),_0x46e0a&&_0x589c87(_0x47c58a,_0x46e0a);}(_0x39a23d,_0x4f6ec5);var _0x20a362,_0x42be11,_0x25dcfc,_0x9a9c1e,_0xf6a929=(_0x20a362=_0x39a23d,function(){var _0xaeddf0=_0x3ab6,_0x4fe916,_0x415994=_0x23f88f(_0x20a362);if(_0x241b19()){var _0x29f97d=_0x23f88f(this)[_0xaeddf0('0x3c6')];_0x4fe916=Reflect[_0xaeddf0('0x6ea')](_0x415994,arguments,_0x29f97d);}else _0x4fe916=_0x415994[_0xaeddf0('0x1036')](this,arguments);return _0x503bb7(this,_0x4fe916);});function _0x39a23d(){var _0x439d2c=_0x3ab6;return _0x2fad67(this,_0x39a23d),_0xf6a929[_0x439d2c('0x1036')](this,arguments);}return _0x42be11=_0x39a23d,(_0x25dcfc=[{'key':_0x2baeec('0x315'),'value':function(){var _0x548b31=_0x2baeec;return['id',_0x548b31('0x263'),'type','field_type','field_label',_0x548b31('0x55c'),'display_order'];}},{'key':'getHeaders','value':function(){var _0x191c5a=_0x2baeec;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':_0x191c5a('0x1')},{'sTitle':_0x191c5a('0x21c')},{'sTitle':_0x191c5a('0x150')},{'sTitle':_0x191c5a('0xb98')},{'sTitle':'Display\x20Status'},{'sTitle':'Priority'}];}},{'key':_0x2baeec('0x5f6'),'value':function(){var _0x2d8c02=_0x2baeec;return[{'title':'Name','dataIndex':'name','sorter':!0x0},{'title':_0x2d8c02('0x21c'),'dataIndex':_0x2d8c02('0x3f7'),'sorter':!0x0},{'title':_0x2d8c02('0xb98'),'dataIndex':_0x2d8c02('0xa5e')},{'title':_0x2d8c02('0x150'),'dataIndex':_0x2d8c02('0xf3')},{'title':_0x2d8c02('0x8c8'),'dataIndex':'display','sorter':!0x0},{'title':_0x2d8c02('0x9b4'),'dataIndex':_0x2d8c02('0x2b8'),'sorter':!0x0}];}},{'key':_0x2baeec('0x746'),'value':function(_0x48e4c4){this['types']=_0x48e4c4;}},{'key':_0x2baeec('0xfe3'),'value':function(){var _0x376332=_0x2baeec;return[['id',{'label':'ID','type':_0x376332('0xdc0')}],[_0x376332('0xa5e'),{'label':_0x376332('0xb98'),'type':_0x376332('0x768'),'validation':''}],['type',{'label':_0x376332('0x21c'),'type':_0x376332('0x1137'),'source':this[_0x376332('0x13d')]}],[_0x376332('0xf3'),{'label':_0x376332('0x150'),'type':'select','source':[[_0x376332('0x768'),_0x376332('0x44f')],[_0x376332('0xa2e'),'Text\x20Area'],[_0x376332('0x8ff'),'Select'],['select2',_0x376332('0xfa7')],[_0x376332('0x256'),_0x376332('0x55d')],[_0x376332('0xd4e'),_0x376332('0xc09')],[_0x376332('0x65d'),_0x376332('0x700')],[_0x376332('0xb6a'),_0x376332('0xbfa')],[_0x376332('0x918'),_0x376332('0x9c')],['signature',_0x376332('0x53e')]]}],['field_validation',{'label':_0x376332('0x5d9'),'type':_0x376332('0x1137'),'validation':_0x376332('0x1c1'),'sort':'none','null-label':'Required','allow-null':!0x0,'source':[['none','None'],[_0x376332('0xd95'),'Number'],[_0x376332('0xea4'),'Number\x20or\x20Empty'],['float',_0x376332('0x110')],[_0x376332('0xe84'),'Email'],[_0x376332('0x659'),_0x376332('0x1dd')]]}],[_0x376332('0xaae'),{'label':_0x376332('0xbd3'),'type':_0x376332('0x49'),'form':[['label',{'label':'Label','type':'text','validation':''}],[_0x376332('0x832'),{'label':_0x376332('0x1ac'),'type':'text','validation':_0x376332('0x1c1')}]],'html':_0x376332('0x5be'),'columns':[{'title':_0x376332('0x811'),'dataIndex':_0x376332('0xf90'),'key':_0x376332('0xf90')},{'title':_0x376332('0xcd4'),'dataIndex':_0x376332('0x832'),'key':_0x376332('0x832')}],'validation':_0x376332('0x1c1')}],[_0x376332('0x2b8'),{'label':_0x376332('0x9b4'),'type':_0x376332('0x768'),'validation':_0x376332('0x1c1')}]];}},{'key':_0x2baeec('0xa68'),'value':function(){var _0x348a92=_0x2baeec;return[['type',{'label':_0x348a92('0x21c'),'type':_0x348a92('0x1137'),'allow-null':!0x0,'source':this[_0x348a92('0x13d')]}]];}},{'key':'forceInjectValuesBeforeSave','value':function(_0x468101){var _0x4a7c05=_0x2baeec,_0x360927,_0x2437b6=['',{}],_0x11a523=[];if(_0x2437b6[0x1]['label']=_0x468101[_0x4a7c05('0xa5e')],_0x2437b6[0x1][_0x4a7c05('0x3f7')]=_0x468101['field_type'],_0x2437b6[0x1]['validation']=_0x468101[_0x4a7c05('0x9e')],[_0x4a7c05('0x8ff'),_0x4a7c05('0x1137'),_0x4a7c05('0x256')]['indexOf'](_0x468101[_0x4a7c05('0xf3')])>=0x0){for(var _0x172489 in _0x360927=''===_0x468101[_0x4a7c05('0xaae')]||void 0x0===_0x468101[_0x4a7c05('0xaae')]?[]:JSON[_0x4a7c05('0xf01')](_0x468101[_0x4a7c05('0xaae')]))_0x11a523[_0x4a7c05('0x8f8')]([_0x360927[_0x172489][_0x4a7c05('0x832')],_0x360927[_0x172489]['label']]);_0x2437b6[0x1][_0x4a7c05('0x4fe')]=_0x11a523;}return null!=_0x468101['field_validation']&&void 0x0!==_0x468101[_0x4a7c05('0x9e')]||(_0x468101[_0x4a7c05('0x9e')]=''),null==this['currentElement']||null==this['currentElement']['name']||''===this[_0x4a7c05('0xa81')][_0x4a7c05('0x263')]?_0x468101[_0x4a7c05('0x263')]=this[_0x4a7c05('0x5e7')](_0x468101[_0x4a7c05('0xa5e')]):_0x468101[_0x4a7c05('0x263')]=this[_0x4a7c05('0xa81')][_0x4a7c05('0x263')],_0x2437b6[0x0]=_0x468101[_0x4a7c05('0x263')],_0x468101['data']=JSON[_0x4a7c05('0x591')](_0x2437b6),_0x468101[_0x4a7c05('0x55c')]='Form',_0x468101[_0x4a7c05('0x2b8')]=parseInt(_0x468101[_0x4a7c05('0x2b8')]),Number[_0x4a7c05('0xb9a')](_0x468101[_0x4a7c05('0x2b8')])||(_0x468101[_0x4a7c05('0x2b8')]=0x1),_0x468101;}}])&&_0x35ac46(_0x42be11[_0x2baeec('0x98c')],_0x25dcfc),_0x9a9c1e&&_0x35ac46(_0x42be11,_0x9a9c1e),_0x39a23d;}(((_0x3d73c3=_0x2115bb(_0x3368a1('0x3cd')))&&_0x3d73c3[_0x3368a1('0x114c')]?_0x3d73c3:{'default':_0x3d73c3})[_0x3368a1('0x544')]);_0x2a1920[_0x3368a1('0xddc')]={'CommonCustomFieldAdapter':_0x3a3960};},{'../../../api/ReactCustomFieldAdapter':0x44}],0x11:[function(_0x50e16c,_0x4c97fc,_0x2bf943){var _0x4cf3af=_0x404097;'use strict';var _0x342e77=_0x50e16c('./lib');window[_0x4cf3af('0xc3a')]=_0x342e77[_0x4cf3af('0xc3a')];},{'./lib':0x12}],0x12:[function(_0x4886f5,_0xf5b014,_0x5b698a){var _0x11d5fc=_0x404097;'use strict';var _0x438446=_0x20e9eb(_0x4886f5(_0x11d5fc('0x1041'))),_0xe28c0a=_0x4886f5(_0x11d5fc('0xdb9')),_0x784d9e=_0x4886f5(_0x11d5fc('0x16a')),_0x5d8bd1=_0x20e9eb(_0x4886f5(_0x11d5fc('0xd47'))),_0x4a04c0=_0x20e9eb(_0x4886f5(_0x11d5fc('0xe88'))),_0x18fcf5=_0x20e9eb(_0x4886f5(_0x11d5fc('0x9fc')));function _0x20e9eb(_0x91119d){var _0x371dc9=_0x11d5fc;return _0x91119d&&_0x91119d[_0x371dc9('0x114c')]?_0x91119d:{'default':_0x91119d};}function _0x38c585(_0x3a4f14){var _0x525f29=_0x11d5fc;return(_0x38c585=_0x525f29('0xae9')==typeof Symbol&&'symbol'==typeof Symbol[_0x525f29('0x78e')]?function(_0x3ec196){return typeof _0x3ec196;}:function(_0x5481c9){var _0x1a0908=_0x525f29;return _0x5481c9&&_0x1a0908('0xae9')==typeof Symbol&&_0x5481c9[_0x1a0908('0x3c6')]===Symbol&&_0x5481c9!==Symbol[_0x1a0908('0x98c')]?_0x1a0908('0x245'):typeof _0x5481c9;})(_0x3a4f14);}function _0xf4049c(_0x553af7,_0x48b61a){if(!(_0x553af7 instanceof _0x48b61a))throw new TypeError('Cannot\x20call\x20a\x20class\x20as\x20a\x20function');}function _0x2e37f3(_0x1c82a5,_0x52da78){var _0x4c8aac=_0x11d5fc;for(var _0x4f4f73=0x0;_0x4f4f73<_0x52da78[_0x4c8aac('0x525')];_0x4f4f73++){var _0x2b24cc=_0x52da78[_0x4f4f73];_0x2b24cc['enumerable']=_0x2b24cc['enumerable']||!0x1,_0x2b24cc[_0x4c8aac('0xbb2')]=!0x0,_0x4c8aac('0x832')in _0x2b24cc&&(_0x2b24cc[_0x4c8aac('0x4db')]=!0x0),Object[_0x4c8aac('0xa95')](_0x1c82a5,_0x2b24cc['key'],_0x2b24cc);}}function _0x323d2c(_0x509599,_0x22d34e){var _0x174cfd=_0x11d5fc;return!_0x22d34e||_0x174cfd('0x21e')!==_0x38c585(_0x22d34e)&&'function'!=typeof _0x22d34e?function(_0x345cae){var _0x568eac=_0x174cfd;if(void 0x0===_0x345cae)throw new ReferenceError(_0x568eac('0x2e9'));return _0x345cae;}(_0x509599):_0x22d34e;}function _0x2fbfc1(){var _0x23cc4f=_0x11d5fc;if(_0x23cc4f('0x56')==typeof Reflect||!Reflect[_0x23cc4f('0x6ea')])return!0x1;if(Reflect[_0x23cc4f('0x6ea')][_0x23cc4f('0x16e')])return!0x1;if(_0x23cc4f('0xae9')==typeof Proxy)return!0x0;try{return Date[_0x23cc4f('0x98c')][_0x23cc4f('0x537')][_0x23cc4f('0x4b0')](Reflect['construct'](Date,[],function(){})),!0x0;}catch(_0x4aafc6){return!0x1;}}function _0x418ca2(_0x26958d){var _0x4c4cdd=_0x11d5fc;return(_0x418ca2=Object[_0x4c4cdd('0x6c2')]?Object[_0x4c4cdd('0x10c0')]:function(_0x31e94f){var _0x16927e=_0x4c4cdd;return _0x31e94f[_0x16927e('0x11e6')]||Object['getPrototypeOf'](_0x31e94f);})(_0x26958d);}function _0x1a944b(_0xfae2f6,_0x552781){var _0x3c1005=_0x11d5fc;return(_0x1a944b=Object[_0x3c1005('0x6c2')]||function(_0x396d6f,_0x28790d){return _0x396d6f['__proto__']=_0x28790d,_0x396d6f;})(_0xfae2f6,_0x552781);}var _0x3219a5=function(_0x42bd18){var _0x550690=_0x11d5fc;!function(_0x1751e4,_0x352bd8){var _0x2d2076=_0x3ab6;if(_0x2d2076('0xae9')!=typeof _0x352bd8&&null!==_0x352bd8)throw new TypeError(_0x2d2076('0x409'));_0x1751e4[_0x2d2076('0x98c')]=Object[_0x2d2076('0x5c2')](_0x352bd8&&_0x352bd8[_0x2d2076('0x98c')],{'constructor':{'value':_0x1751e4,'writable':!0x0,'configurable':!0x0}}),_0x352bd8&&_0x1a944b(_0x1751e4,_0x352bd8);}(_0x48b493,_0x42bd18);var _0x10208b,_0x1788c7,_0x5026d3,_0x16b2c9,_0x3e92a7=(_0x10208b=_0x48b493,function(){var _0x399d7f=_0x3ab6,_0x34ab49,_0x35c46c=_0x418ca2(_0x10208b);if(_0x2fbfc1()){var _0x36ec0d=_0x418ca2(this)[_0x399d7f('0x3c6')];_0x34ab49=Reflect[_0x399d7f('0x6ea')](_0x35c46c,arguments,_0x36ec0d);}else _0x34ab49=_0x35c46c['apply'](this,arguments);return _0x323d2c(this,_0x34ab49);});function _0x48b493(){var _0x1a822e=_0x3ab6;return _0xf4049c(this,_0x48b493),_0x3e92a7[_0x1a822e('0x1036')](this,arguments);}return _0x1788c7=_0x48b493,(_0x5026d3=[{'key':'getDataMapping','value':function(){return[];}},{'key':_0x550690('0x5d2'),'value':function(){return[];}},{'key':'getFormFields','value':function(){return[];}},{'key':_0x550690('0x33'),'value':function(_0x486774){var _0xc032fc=_0x550690;this[_0xc032fc('0xa7c')]();}},{'key':_0x550690('0x106a'),'value':function(){var _0x3bfe50=_0x550690,_0x1349ec=JSON[_0x3bfe50('0x591')]({}),_0x137d2e=[];_0x137d2e[_0x3bfe50('0x234')]=[],_0x137d2e[_0x3bfe50('0xf53')]=_0x3bfe50('0x255'),_0x137d2e[_0x3bfe50('0xb7f')]=_0x3bfe50('0x101d'),this[_0x3bfe50('0x960')](_0x3bfe50('0x106a'),'admin=dashboard',_0x1349ec,_0x137d2e);}},{'key':_0x550690('0x255'),'value':function(_0x5262a6){var _0x437440=_0x550690;$(_0x437440('0xdf5'))['html'](''[_0x437440('0x3cc')](_0x5262a6[_0x437440('0x2fe')],_0x437440('0xe5'))),$('#numberOfCompanyStuctures')[_0x437440('0xb07')](''[_0x437440('0x3cc')](_0x5262a6[_0x437440('0xf30')],'\x20Departments')),$('#numberOfUsers')[_0x437440('0xb07')](''[_0x437440('0x3cc')](_0x5262a6[_0x437440('0x5f4')],'\x20Users')),$('#numberOfProjects')[_0x437440('0xb07')](''[_0x437440('0x3cc')](_0x5262a6[_0x437440('0x9c3')],'\x20Active\x20Projects')),$('#numberOfAttendanceLastWeek')[_0x437440('0xb07')](''['concat'](_0x5262a6[_0x437440('0xb5')],_0x437440('0x41f'))),$(_0x437440('0xd2e'))[_0x437440('0xb07')](''[_0x437440('0x3cc')](_0x5262a6[_0x437440('0x65e')],'\x20Upcoming')),$(_0x437440('0xf43'))[_0x437440('0xb07')](_0x5262a6[_0x437440('0xd44')]),$(_0x437440('0x675'))[_0x437440('0xb07')](''[_0x437440('0x3cc')](_0x5262a6[_0x437440('0x1112')],'\x20Candidates')),$('#numberOfJobs')[_0x437440('0xb07')](''[_0x437440('0x3cc')](_0x5262a6['numberOfJobs'],_0x437440('0x71b'))),$(_0x437440('0xb8d'))[_0x437440('0xb07')](''[_0x437440('0x3cc')](_0x5262a6[_0x437440('0x4d6')],_0x437440('0xa7e')));}},{'key':'getInitDataFailCallBack','value':function(_0x277130){}},{'key':_0x550690('0x4c7'),'value':function(){var _0x4b66f9=_0x550690;return _0x438446[_0x4b66f9('0x544')][_0x4b66f9('0xd0f')](_0xe28c0a[_0x4b66f9('0x2b4')],null,_0x438446['default'][_0x4b66f9('0xd0f')](_0xe28c0a[_0x4b66f9('0xc2a')],{'span':0x8},'\x20'),_0x438446[_0x4b66f9('0x544')]['createElement'](_0xe28c0a['Col'],{'span':0x8},_0x438446[_0x4b66f9('0x544')][_0x4b66f9('0xd0f')](_0xe28c0a[_0x4b66f9('0xcc6')],{'size':'large'})),_0x438446[_0x4b66f9('0x544')][_0x4b66f9('0xd0f')](_0xe28c0a[_0x4b66f9('0xc2a')],{'span':0x8},'\x20'));}},{'key':_0x550690('0xa7c'),'value':function(){var _0x23cd1a=_0x550690;this[_0x23cd1a('0x99d')](),this[_0x23cd1a('0x471')](),this['buildTaskList']();}},{'key':'buildTaskList','value':function(){var _0x5b5232=_0x550690;document[_0x5b5232('0xc14')](_0x5b5232('0xd73'))[_0x5b5232('0x1cd')][_0x5b5232('0x55c')]='none',_0x5d8bd1[_0x5b5232('0x544')][_0x5b5232('0x80f')](this['getSpinner'](),document[_0x5b5232('0xc14')](_0x5b5232('0xe3b'))),this[_0x5b5232('0x221')]['get'](_0x5b5232('0x3e7'))[_0x5b5232('0xd5')](function(_0x33dc28){var _0x5c8c39=_0x5b5232;document['getElementById']('TaskListWrap')[_0x5c8c39('0x1cd')][_0x5c8c39('0x55c')]='block',_0x5d8bd1[_0x5c8c39('0x544')][_0x5c8c39('0x80f')](_0x438446['default'][_0x5c8c39('0xd0f')](_0x18fcf5[_0x5c8c39('0x544')],{'tasks':_0x33dc28[_0x5c8c39('0xac8')]}),document['getElementById']('TaskList')),_0x5d8bd1[_0x5c8c39('0x544')][_0x5c8c39('0x466')](document['getElementById'](_0x5c8c39('0xe3b')));});}},{'key':_0x550690('0x471'),'value':function(){var _0x185d9b=_0x550690,_0x4e31de=this;document[_0x185d9b('0xc14')](_0x185d9b('0xa6c'))[_0x185d9b('0x1cd')][_0x185d9b('0x55c')]='none',_0x5d8bd1[_0x185d9b('0x544')][_0x185d9b('0x80f')](this[_0x185d9b('0x4c7')](),document[_0x185d9b('0xc14')](_0x185d9b('0xf50'))),this[_0x185d9b('0x221')][_0x185d9b('0x33')](_0x185d9b('0xfd6'))[_0x185d9b('0xd5')](function(_0x1c476c){var _0x49a65e=_0x185d9b,_0x454d7d=Object[_0x49a65e('0x7ce')](_0x1c476c[_0x49a65e('0xac8')])[_0x49a65e('0xd49')](function(_0x4573f0){var _0x2657b3=_0x49a65e;return{'type':_0x4573f0[_0x2657b3('0xc8e')](0x0)[_0x2657b3('0x67d')]()+_0x4573f0[_0x2657b3('0xbc0')](0x1),'value':_0x1c476c['data'][_0x4573f0]};}),_0x186caa={'forceFit':!0x0,'title':{'visible':!0x0,'text':_0x4e31de['gt'](_0x49a65e('0xa08'))},'description':{'visible':!0x1,'text':''},'statistic':{'visible':!0x0,'content':{'value':_0x454d7d[_0x49a65e('0x87a')](function(_0x150996,_0x95f46c){var _0x232dfd=_0x49a65e;return _0x150996+_0x95f46c[_0x232dfd('0x832')];},0x0),'name':_0x4e31de['gt'](_0x49a65e('0x564'))}},'legend':{'visible':!0x0,'position':_0x49a65e('0x105e')},'radius':0.8,'padding':_0x49a65e('0x18'),'data':_0x454d7d,'angleField':_0x49a65e('0x832'),'colorField':'type','label':{'visible':!0x0,'type':_0x49a65e('0x749'),'offset':0x14}};_0x5d8bd1[_0x49a65e('0x544')][_0x49a65e('0x466')](document[_0x49a65e('0xc14')](_0x49a65e('0xf50'))),document['getElementById'](_0x49a65e('0xa6c'))[_0x49a65e('0x1cd')]['display']='block',new _0x784d9e[(_0x49a65e('0xf3e'))](document['getElementById']('EmployeeDistributionChart'),_0x186caa)['render']();});}},{'key':'drawOnlineOfflineEmployeeChart','value':function(){var _0x14f58c=_0x550690,_0x1fc549=this;document[_0x14f58c('0xc14')](_0x14f58c('0xa00'))['style']['display']='none',_0x5d8bd1[_0x14f58c('0x544')][_0x14f58c('0x80f')](this['getSpinner'](),document[_0x14f58c('0xc14')](_0x14f58c('0xe31'))),this['apiClient']['get'](_0x14f58c('0x58d'))['then'](function(_0x317804){var _0x169739=_0x14f58c,_0x5b3fe8=Object[_0x169739('0x7ce')](_0x317804[_0x169739('0xac8')])[_0x169739('0xd49')](function(_0x128e1f){return{'type':_0x128e1f,'value':_0x317804['data'][_0x128e1f]};}),_0x449c70={'forceFit':!0x0,'title':{'visible':!0x0,'text':_0x1fc549['gt'](_0x169739('0xbe7'))},'description':{'visible':!0x1,'text':''},'statistic':{'visible':!0x0,'content':{'value':_0x5b3fe8[_0x169739('0x87a')](function(_0x36461a,_0xa753a2){var _0x2bcf72=_0x169739;return _0x36461a+_0xa753a2[_0x2bcf72('0x832')];},0x0),'name':_0x1fc549['gt']('Total')}},'legend':{'visible':!0x0,'position':_0x169739('0x105e')},'radius':0.8,'padding':'auto','data':_0x5b3fe8,'angleField':_0x169739('0x832'),'colorField':_0x169739('0x3f7')};_0x5d8bd1['default'][_0x169739('0x466')](document[_0x169739('0xc14')](_0x169739('0xe31'))),document[_0x169739('0xc14')]('EmployeeOnlineOfflineChart')[_0x169739('0x1cd')]['display']=_0x169739('0xa52'),new _0x784d9e[(_0x169739('0xf19'))](document[_0x169739('0xc14')](_0x169739('0xa00')),_0x449c70)[_0x169739('0x80f')]();});}},{'key':_0x550690('0x6cf'),'value':function(){var _0x41c0d9=_0x550690,_0x588190=this;document['getElementById'](_0x41c0d9('0x57c'))['style'][_0x41c0d9('0x55c')]=_0x41c0d9('0x1c1'),_0x5d8bd1[_0x41c0d9('0x544')][_0x41c0d9('0x80f')](this[_0x41c0d9('0x4c7')](),document[_0x41c0d9('0xc14')](_0x41c0d9('0x980'))),this[_0x41c0d9('0x221')]['get'](_0x41c0d9('0x494'))[_0x41c0d9('0xd5')](function(_0x4e1162){var _0x366bf7=_0x41c0d9,_0x4c9f67=Object[_0x366bf7('0x7ce')](_0x4e1162[_0x366bf7('0xac8')])[_0x366bf7('0xd49')](function(_0x1b531e){var _0x1c5c5a=_0x366bf7;return{'type':_0x1b531e,'value':_0x4e1162[_0x1c5c5a('0xac8')][_0x1b531e]};}),_0x28be18={'forceFit':!0x0,'title':{'visible':!0x0,'text':_0x588190['gt'](_0x366bf7('0x34b'))},'description':{'visible':!0x1,'text':''},'statistic':{'visible':!0x0,'content':{'value':_0x4c9f67['reduce'](function(_0x400512,_0x10da2c){var _0x52f998=_0x366bf7;return _0x400512+_0x10da2c[_0x52f998('0x832')];},0x0),'name':_0x588190['gt'](_0x366bf7('0x564'))}},'legend':{'visible':!0x0,'position':_0x366bf7('0x105e')},'radius':0.8,'padding':_0x366bf7('0x18'),'data':_0x4c9f67,'angleField':_0x366bf7('0x832'),'colorField':_0x366bf7('0x3f7')};_0x5d8bd1[_0x366bf7('0x544')][_0x366bf7('0x466')](document['getElementById'](_0x366bf7('0x980'))),document['getElementById'](_0x366bf7('0x57c'))['style'][_0x366bf7('0x55c')]=_0x366bf7('0xa52'),new _0x784d9e[(_0x366bf7('0xf19'))](document['getElementById'](_0x366bf7('0x57c')),_0x28be18)[_0x366bf7('0x80f')]();});}}])&&_0x2e37f3(_0x1788c7[_0x550690('0x98c')],_0x5026d3),_0x16b2c9&&_0x2e37f3(_0x1788c7,_0x16b2c9),_0x48b493;}(_0x4a04c0[_0x11d5fc('0x544')]);_0xf5b014['exports']={'DashboardAdapter':_0x3219a5};},{'../../../api/AdapterBase':0x39,'../../../components/TaskList':0x55,'@antv/g2plot':'@antv/g2plot','antd':'antd','react':'react','react-dom':_0x404097('0xd47')}],0x13:[function(_0x10ea8c,_0x639305,_0x37f957){var _0x194e5c=_0x404097;'use strict';var _0x27f4e0=_0x10ea8c('./lib');window[_0x194e5c('0xfa')]=_0x27f4e0[_0x194e5c('0xfa')],window[_0x194e5c('0x538')]=_0x27f4e0['DataImportFileAdapter'];},{'./lib':0x14}],0x14:[function(_0x141558,_0x3227dd,_0x15a3c0){var _0x560352=_0x404097;'use strict';var _0x2b97ea,_0x2c84e8=(_0x2b97ea=_0x141558(_0x560352('0xe88')))&&_0x2b97ea[_0x560352('0x114c')]?_0x2b97ea:{'default':_0x2b97ea};function _0x3949d2(_0x7cc275){var _0x16178a=_0x560352;return(_0x3949d2=_0x16178a('0xae9')==typeof Symbol&&_0x16178a('0x245')==typeof Symbol[_0x16178a('0x78e')]?function(_0x1fe7a3){return typeof _0x1fe7a3;}:function(_0x25fa3e){var _0x147ea3=_0x16178a;return _0x25fa3e&&_0x147ea3('0xae9')==typeof Symbol&&_0x25fa3e[_0x147ea3('0x3c6')]===Symbol&&_0x25fa3e!==Symbol[_0x147ea3('0x98c')]?_0x147ea3('0x245'):typeof _0x25fa3e;})(_0x7cc275);}function _0x2f00ee(_0x14a4fa,_0x5abff6){var _0x31fbd8=_0x560352;if(!(_0x14a4fa instanceof _0x5abff6))throw new TypeError(_0x31fbd8('0x202'));}function _0x32a1e6(_0x2f5cdb,_0xfcd629){var _0x596686=_0x560352;for(var _0x1f0151=0x0;_0x1f0151<_0xfcd629[_0x596686('0x525')];_0x1f0151++){var _0x511e11=_0xfcd629[_0x1f0151];_0x511e11[_0x596686('0x156')]=_0x511e11[_0x596686('0x156')]||!0x1,_0x511e11[_0x596686('0xbb2')]=!0x0,'value'in _0x511e11&&(_0x511e11[_0x596686('0x4db')]=!0x0),Object[_0x596686('0xa95')](_0x2f5cdb,_0x511e11[_0x596686('0x1192')],_0x511e11);}}function _0x20f796(_0x2e909f,_0x235ff8,_0x2e7895){return _0x235ff8&&_0x32a1e6(_0x2e909f['prototype'],_0x235ff8),_0x2e7895&&_0x32a1e6(_0x2e909f,_0x2e7895),_0x2e909f;}function _0x269bcc(_0x58405f){return function(){var _0xaa8f2=_0x3ab6,_0x555fb5,_0x2a5afa=_0x504690(_0x58405f);if(_0x44192a()){var _0x98050f=_0x504690(this)[_0xaa8f2('0x3c6')];_0x555fb5=Reflect[_0xaa8f2('0x6ea')](_0x2a5afa,arguments,_0x98050f);}else _0x555fb5=_0x2a5afa[_0xaa8f2('0x1036')](this,arguments);return _0x1da89a(this,_0x555fb5);};}function _0x1da89a(_0x4e1dfa,_0x3ea1c5){var _0x361eaf=_0x560352;return!_0x3ea1c5||_0x361eaf('0x21e')!==_0x3949d2(_0x3ea1c5)&&'function'!=typeof _0x3ea1c5?function(_0x419c3d){var _0x23a902=_0x361eaf;if(void 0x0===_0x419c3d)throw new ReferenceError(_0x23a902('0x2e9'));return _0x419c3d;}(_0x4e1dfa):_0x3ea1c5;}function _0x44192a(){var _0x364311=_0x560352;if('undefined'==typeof Reflect||!Reflect['construct'])return!0x1;if(Reflect['construct'][_0x364311('0x16e')])return!0x1;if(_0x364311('0xae9')==typeof Proxy)return!0x0;try{return Date[_0x364311('0x98c')][_0x364311('0x537')][_0x364311('0x4b0')](Reflect['construct'](Date,[],function(){})),!0x0;}catch(_0x410d07){return!0x1;}}function _0x504690(_0x47901f){var _0x5c5856=_0x560352;return(_0x504690=Object[_0x5c5856('0x6c2')]?Object[_0x5c5856('0x10c0')]:function(_0x3187b0){var _0xdde6ed=_0x5c5856;return _0x3187b0[_0xdde6ed('0x11e6')]||Object[_0xdde6ed('0x10c0')](_0x3187b0);})(_0x47901f);}function _0x29606c(_0x341e22,_0x335f34){var _0xbaab02=_0x560352;if('function'!=typeof _0x335f34&&null!==_0x335f34)throw new TypeError(_0xbaab02('0x409'));_0x341e22['prototype']=Object[_0xbaab02('0x5c2')](_0x335f34&&_0x335f34[_0xbaab02('0x98c')],{'constructor':{'value':_0x341e22,'writable':!0x0,'configurable':!0x0}}),_0x335f34&&_0x5a6226(_0x341e22,_0x335f34);}function _0x5a6226(_0x1fe3ae,_0x4e5aec){var _0x5505d8=_0x560352;return(_0x5a6226=Object[_0x5505d8('0x6c2')]||function(_0x83af81,_0x3e6c70){return _0x83af81['__proto__']=_0x3e6c70,_0x83af81;})(_0x1fe3ae,_0x4e5aec);}var _0xd2bedd=function(_0x1aeaa1){var _0x3ac33e=_0x560352;_0x29606c(_0x46f811,_0x1aeaa1);var _0x27b860=_0x269bcc(_0x46f811);function _0x46f811(){return _0x2f00ee(this,_0x46f811),_0x27b860['apply'](this,arguments);}return _0x20f796(_0x46f811,[{'key':_0x3ac33e('0x315'),'value':function(){var _0x1b09ab=_0x3ac33e;return['id',_0x1b09ab('0x263'),_0x1b09ab('0xacd'),_0x1b09ab('0xddf')];}},{'key':_0x3ac33e('0x5d2'),'value':function(){var _0x4bdae4=_0x3ac33e;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':_0x4bdae4('0x1')},{'sTitle':_0x4bdae4('0x625')},{'sTitle':_0x4bdae4('0xf10')}];}},{'key':_0x3ac33e('0xfe3'),'value':function(){var _0x4cb628=_0x3ac33e;return[['id',{'label':'ID','type':_0x4cb628('0xdc0')}],[_0x4cb628('0x263'),{'label':_0x4cb628('0x1'),'type':_0x4cb628('0x768'),'validation':''}],[_0x4cb628('0xacd'),{'label':'Data\x20Type','type':_0x4cb628('0x8ff'),'sort':_0x4cb628('0x1c1'),'source':[[_0x4cb628('0x11b1'),_0x4cb628('0xac5')],[_0x4cb628('0x102b'),_0x4cb628('0x51d')],[_0x4cb628('0xef2'),_0x4cb628('0x6f2')],[_0x4cb628('0x90f'),_0x4cb628('0x205')],['CommonDataImporter',_0x4cb628('0xcdb')]]}],[_0x4cb628('0x711'),{'label':_0x4cb628('0x21c'),'type':_0x4cb628('0x8ff'),'sort':_0x4cb628('0x1c1'),'allow-null':!0x0,'null-label':_0x4cb628('0xa9f'),'source':[[_0x4cb628('0x19d'),_0x4cb628('0x1f1')],[_0x4cb628('0x95a'),_0x4cb628('0xe55')],[_0x4cb628('0xae8'),_0x4cb628('0xc4b')],[_0x4cb628('0xad1'),_0x4cb628('0x5cf')],['EmployeeProject',_0x4cb628('0xfd2')],['EmployeeSalary',_0x4cb628('0x54e')],['PayrollEmployee',_0x4cb628('0x11bb')],[_0x4cb628('0x620'),_0x4cb628('0x238')],['Province',_0x4cb628('0x117d')],[_0x4cb628('0xcf5'),'Industry'],[_0x4cb628('0xcf5'),_0x4cb628('0xcf5')],['EmergencyContact',_0x4cb628('0x249')],[_0x4cb628('0xb9b'),_0x4cb628('0xb9b')],[_0x4cb628('0x1057'),_0x4cb628('0x1057')],[_0x4cb628('0xa41'),_0x4cb628('0x8cf')],['PayFrequency',_0x4cb628('0xfc7')],[_0x4cb628('0x1b4'),'Payroll\x20Employees'],['SalaryComponent',_0x4cb628('0x185')],[_0x4cb628('0x41a'),_0x4cb628('0x54e')],[_0x4cb628('0x2f6'),_0x4cb628('0xef5')]]}],[_0x4cb628('0xddf'),{'label':'Details','type':_0x4cb628('0xa2e'),'validation':'none'}],[_0x4cb628('0x9f9'),{'label':_0x4cb628('0xb86'),'type':_0x4cb628('0x49'),'form':[[_0x4cb628('0x263'),{'label':_0x4cb628('0x367'),'type':_0x4cb628('0x768'),'validation':''}],['title',{'label':'Field\x20Title','type':_0x4cb628('0x768'),'validation':_0x4cb628('0x1c1')}],[_0x4cb628('0x3f7'),{'label':_0x4cb628('0xb2b'),'type':_0x4cb628('0x8ff'),'sort':'none','source':[[_0x4cb628('0x1099'),_0x4cb628('0x1099')],['Reference','Reference']]}],[_0x4cb628('0xf14'),{'label':_0x4cb628('0x751'),'type':_0x4cb628('0x8ff'),'allow-null':!0x0,'null-label':_0x4cb628('0x9a8'),'source':[[_0x4cb628('0xdf4'),'Emergency\x20Contacts'],[_0x4cb628('0xb9b'),_0x4cb628('0xb9b')],['Nationality',_0x4cb628('0x1057')],[_0x4cb628('0xa41'),_0x4cb628('0xa41')],[_0x4cb628('0x27'),_0x4cb628('0xfc7')],[_0x4cb628('0x396'),_0x4cb628('0x194')],[_0x4cb628('0x2a'),_0x4cb628('0x9ea')],[_0x4cb628('0x2f6'),_0x4cb628('0xef5')],[_0x4cb628('0x3e1'),_0x4cb628('0x3e1')],[_0x4cb628('0x117b'),_0x4cb628('0x4ae')],[_0x4cb628('0xcf5'),_0x4cb628('0xcf5')],[_0x4cb628('0x2'),_0x4cb628('0x2')],['Document','Document'],[_0x4cb628('0x94a'),_0x4cb628('0x94a')],[_0x4cb628('0x3df'),_0x4cb628('0xf3b')],['ExpensesPaymentMethod',_0x4cb628('0xe7d')],[_0x4cb628('0x2ed'),_0x4cb628('0x10e8')],['Form',_0x4cb628('0x5ac')],[_0x4cb628('0x63b'),_0x4cb628('0x1166')],[_0x4cb628('0x95a'),_0x4cb628('0x95a')],['Language',_0x4cb628('0xb20')],[_0x4cb628('0x1047'),_0x4cb628('0x689')],['LeavePeriod','Leave\x20Period'],['LeaveRule',_0x4cb628('0xd67')],[_0x4cb628('0x2f'),_0x4cb628('0x33b')],[_0x4cb628('0x929'),'Overtime\x20Category'],['Project',_0x4cb628('0xad1')],['Client',_0x4cb628('0x620')],[_0x4cb628('0x87b'),'Review\x20Template'],[_0x4cb628('0xda'),_0x4cb628('0x665')],[_0x4cb628('0x7ba'),'Salary\x20Component\x20Type'],['Skill','Skill'],[_0x4cb628('0x85a'),_0x4cb628('0x85a')],['AssetType',_0x4cb628('0x1164')],[_0x4cb628('0xad2'),'Benifit'],[_0x4cb628('0xe44'),_0x4cb628('0xe44')],['Country','Country'],[_0x4cb628('0x688'),_0x4cb628('0x688')],[_0x4cb628('0x264'),_0x4cb628('0x264')],['User',_0x4cb628('0xab5')]]}],['dependOnField',{'label':_0x4cb628('0x1004'),'type':_0x4cb628('0x8ff'),'allow-null':!0x0,'null-label':_0x4cb628('0x9a8'),'source':[['id','id'],[_0x4cb628('0xcce'),_0x4cb628('0xcce')],['name',_0x4cb628('0x263')],[_0x4cb628('0xb5c'),'code'],[_0x4cb628('0xba3'),_0x4cb628('0xba3')],[_0x4cb628('0x55e'),_0x4cb628('0x55e')]]}],[_0x4cb628('0xbdc'),{'label':_0x4cb628('0x10b2'),'type':_0x4cb628('0x8ff'),'validation':'','source':[['No','No'],[_0x4cb628('0x9a3'),_0x4cb628('0x9a3')]]}],[_0x4cb628('0xee'),{'label':_0x4cb628('0xc93'),'type':'text'}],[_0x4cb628('0xd54'),{'label':_0x4cb628('0x817'),'type':'text'}]],'html':_0x4cb628('0xe30'),'validation':'none','custom-validate-function':function(_0x42d2bd){var _0xef3b0e=_0x4cb628,_0x51c3a1={};return _0x51c3a1[_0xef3b0e('0x10dd')]=_0x42d2bd,_0x51c3a1[_0xef3b0e('0xe6b')]=!0x0,_0xef3b0e('0xe36')===_0x42d2bd[_0xef3b0e('0x3f7')]?'NULL'===_0x42d2bd[_0xef3b0e('0xf14')]?(_0x51c3a1[_0xef3b0e('0xa1a')]=_0xef3b0e('0xe65'),_0x51c3a1[_0xef3b0e('0xe6b')]=!0x1):null!=dependOnField&&_0xef3b0e('0xde9')!==dependOnField||(_0x51c3a1['message']=_0xef3b0e('0x42a'),_0x51c3a1['valid']=!0x1):_0xef3b0e('0x1099')===_0x42d2bd[_0xef3b0e('0x3f7')]&&(_0xef3b0e('0xde9')!==_0x42d2bd[_0xef3b0e('0xf14')]?(_0x51c3a1[_0xef3b0e('0xa1a')]='If\x20the\x20type\x20is\x20Reference\x20this\x20field\x20should\x20not\x20refer\x20another\x20object',_0x51c3a1[_0xef3b0e('0xe6b')]=!0x1):null!=dependOnField&&_0xef3b0e('0xde9')!==dependOnField||(_0x51c3a1[_0xef3b0e('0xa1a')]=_0xef3b0e('0x9ed'),_0x51c3a1[_0xef3b0e('0xe6b')]=!0x1)),_0x51c3a1;}}]];}},{'key':_0x3ac33e('0xd6b'),'value':function(_0x40a2f8,_0x439f53){var _0x5d5f93=_0x3ac33e,_0x2bcd64=_0x5d5f93('0xe06');return _0x2bcd64=this[_0x5d5f93('0x224')]?_0x2bcd64[_0x5d5f93('0x166')](_0x5d5f93('0x26'),_0x5d5f93('0xfe6')):_0x2bcd64[_0x5d5f93('0x166')](_0x5d5f93('0x26'),''),_0x2bcd64=this['showDelete']?_0x2bcd64[_0x5d5f93('0x166')](_0x5d5f93('0xac1'),_0x5d5f93('0xd70')):_0x2bcd64[_0x5d5f93('0x166')]('_delete_',''),_0x2bcd64=(_0x2bcd64=(_0x2bcd64=(_0x2bcd64=(_0x2bcd64=this[_0x5d5f93('0x4b1')]?_0x2bcd64[_0x5d5f93('0x166')](_0x5d5f93('0x260'),_0x5d5f93('0x7a9')):_0x2bcd64[_0x5d5f93('0x166')](_0x5d5f93('0x260'),''))[_0x5d5f93('0x166')](_0x5d5f93('0x9ab'),_0x5d5f93('0x403')))[_0x5d5f93('0x166')](/_id_/g,_0x40a2f8))['replace'](/_status_/g,_0x439f53[0x6]))['replace'](/_BASE_/g,this['baseUrl']);}},{'key':_0x3ac33e('0xec6'),'value':function(_0x52ce0f){var _0x3d76bb=_0x3ac33e,_0x381d8d={'t':this[_0x3d76bb('0xf4a')],'sa':_0x3d76bb('0xec6'),'mod':'admin=data'};_0x381d8d[_0x3d76bb('0x1089')]=JSON[_0x3d76bb('0x591')]({'id':_0x52ce0f});var _0x1cb59f=modJs[_0x3d76bb('0x9c6')]('ca',_0x381d8d);window['open'](_0x1cb59f,_0x3d76bb('0x4da'));}}]),_0x46f811;}(_0x2c84e8[_0x560352('0x544')]),_0x4d4880=function(_0xf0b5b){var _0x26e67b=_0x560352;_0x29606c(_0x1e2e5f,_0xf0b5b);var _0x50518d=_0x269bcc(_0x1e2e5f);function _0x1e2e5f(){return _0x2f00ee(this,_0x1e2e5f),_0x50518d['apply'](this,arguments);}return _0x20f796(_0x1e2e5f,[{'key':_0x26e67b('0x315'),'value':function(){var _0x4b68cd=_0x26e67b;return['id',_0x4b68cd('0x263'),'data_import_definition',_0x4b68cd('0x11e7')];}},{'key':_0x26e67b('0x5d2'),'value':function(){var _0x1da170=_0x26e67b;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':_0x1da170('0x1')},{'sTitle':_0x1da170('0x3e5')},{'sTitle':'Status'}];}},{'key':_0x26e67b('0xfe3'),'value':function(){var _0x16af93=_0x26e67b;return[['id',{'label':'ID','type':_0x16af93('0xdc0')}],['name',{'label':'Name','type':_0x16af93('0x768'),'validation':''}],[_0x16af93('0x7c4'),{'label':'Data\x20Import\x20Definitions','type':'select','remote-source':[_0x16af93('0xc38'),'id',_0x16af93('0x263')]}],['file',{'label':'File\x20to\x20Import','type':_0x16af93('0xd4e'),'validation':'','filetypes':'csv,txt'}],[_0x16af93('0xddf'),{'label':'Last\x20Export\x20Result','type':_0x16af93('0xa2e'),'validation':_0x16af93('0x1c1')}]];}},{'key':'getActionButtonsHtml','value':function(_0x272cc0,_0x1d6151){var _0x42c703=_0x26e67b,_0x258e59='_edit__process__clone__delete_';return _0x258e59=this[_0x42c703('0x224')]?_0x258e59[_0x42c703('0x166')](_0x42c703('0x26'),''):_0x258e59[_0x42c703('0x166')]('_clone_',''),_0x258e59=this[_0x42c703('0xe70')]?_0x258e59[_0x42c703('0x166')]('_delete_',''):_0x258e59['replace']('_delete_',''),_0x258e59=this[_0x42c703('0x4b1')]?_0x258e59[_0x42c703('0x166')](_0x42c703('0x260'),_0x42c703('0x7a9')):_0x258e59['replace']('_edit_',''),_0x258e59=(_0x258e59=(_0x258e59=(_0x258e59=_0x42c703('0xafa')===_0x1d6151[0x3]?_0x258e59[_0x42c703('0x166')]('_process_',_0x42c703('0xf7f')):_0x258e59['replace']('_process_',''))[_0x42c703('0x166')](/_id_/g,_0x272cc0))[_0x42c703('0x166')](/_status_/g,_0x1d6151[0x6]))[_0x42c703('0x166')](/_BASE_/g,this[_0x42c703('0xed3')]);}},{'key':_0x26e67b('0xc4f'),'value':function(_0x31522b){var _0x82ccec=_0x26e67b,_0x184f78={'id':_0x31522b},_0x1451f6=JSON['stringify'](_0x184f78),_0xa85f99=[];_0xa85f99['callBackData']=[],_0xa85f99[_0x82ccec('0xf53')]='processSuccessCallBack',_0xa85f99[_0x82ccec('0xb7f')]=_0x82ccec('0xd39'),this[_0x82ccec('0x960')](_0x82ccec('0x1053'),'admin=data',_0x1451f6,_0xa85f99);}},{'key':_0x26e67b('0xdee'),'value':function(_0x4a6037){var _0x425930=_0x26e67b;this['showMessage'](_0x425930('0xfce'),_0x425930('0xe37')),this[_0x425930('0x33')]([]);}},{'key':_0x26e67b('0xd39'),'value':function(_0x561320){var _0x52de7c=_0x26e67b;this[_0x52de7c('0xb5d')](_0x52de7c('0xb84'),'File\x20import\x20unsuccessful.\x20Result:'[_0x52de7c('0x3cc')](_0x561320));}}]),_0x1e2e5f;}(_0x2c84e8[_0x560352('0x544')]);_0x3227dd[_0x560352('0xddc')]={'DataImportAdapter':_0xd2bedd,'DataImportFileAdapter':_0x4d4880};},{'../../../api/AdapterBase':0x39}],0x15:[function(_0x36b0b3,_0x5b5235,_0x701e53){var _0x6280e5=_0x404097;'use strict';var _0x49445e=_0x36b0b3(_0x6280e5('0x358'));window[_0x6280e5('0x361')]=_0x49445e[_0x6280e5('0x361')],window[_0x6280e5('0x715')]=_0x49445e[_0x6280e5('0x715')],window['EmployeeDocumentAdapter']=_0x49445e['EmployeeDocumentAdapter'];},{'./lib':0x16}],0x16:[function(_0x550a97,_0x51a40b,_0x1b971a){var _0x381a35=_0x404097;'use strict';var _0x4c3303,_0x42d437=(_0x4c3303=_0x550a97('../../../api/AdapterBase'))&&_0x4c3303['__esModule']?_0x4c3303:{'default':_0x4c3303};function _0x363938(_0x4ba7d3){var _0x4f8a97=_0x3ab6;return(_0x363938=_0x4f8a97('0xae9')==typeof Symbol&&_0x4f8a97('0x245')==typeof Symbol[_0x4f8a97('0x78e')]?function(_0x338fc0){return typeof _0x338fc0;}:function(_0x52fe33){return _0x52fe33&&'function'==typeof Symbol&&_0x52fe33['constructor']===Symbol&&_0x52fe33!==Symbol['prototype']?'symbol':typeof _0x52fe33;})(_0x4ba7d3);}function _0x218c06(_0x4109dc,_0x47ec66){var _0x1862cb=_0x3ab6;if(!(_0x4109dc instanceof _0x47ec66))throw new TypeError(_0x1862cb('0x202'));}function _0x35239c(_0x1348ce,_0x2e1601){var _0x47b9b7=_0x3ab6;for(var _0x50b6af=0x0;_0x50b6af<_0x2e1601[_0x47b9b7('0x525')];_0x50b6af++){var _0x2aaf23=_0x2e1601[_0x50b6af];_0x2aaf23[_0x47b9b7('0x156')]=_0x2aaf23['enumerable']||!0x1,_0x2aaf23[_0x47b9b7('0xbb2')]=!0x0,_0x47b9b7('0x832')in _0x2aaf23&&(_0x2aaf23['writable']=!0x0),Object['defineProperty'](_0x1348ce,_0x2aaf23[_0x47b9b7('0x1192')],_0x2aaf23);}}function _0x3411db(_0x4adcb3,_0x34dd30,_0x29fffd){var _0x46fb7c=_0x3ab6;return _0x34dd30&&_0x35239c(_0x4adcb3[_0x46fb7c('0x98c')],_0x34dd30),_0x29fffd&&_0x35239c(_0x4adcb3,_0x29fffd),_0x4adcb3;}function _0x4d0204(_0x5c4680){return function(){var _0x45f318=_0x3ab6,_0x359443,_0x290be6=_0x3a64f6(_0x5c4680);if(_0x1de86a()){var _0x219dd2=_0x3a64f6(this)[_0x45f318('0x3c6')];_0x359443=Reflect['construct'](_0x290be6,arguments,_0x219dd2);}else _0x359443=_0x290be6[_0x45f318('0x1036')](this,arguments);return _0x23f8ed(this,_0x359443);};}function _0x23f8ed(_0x2169c,_0x5649ce){var _0x2fb67b=_0x3ab6;return!_0x5649ce||_0x2fb67b('0x21e')!==_0x363938(_0x5649ce)&&_0x2fb67b('0xae9')!=typeof _0x5649ce?function(_0x578156){if(void 0x0===_0x578156)throw new ReferenceError('this\x20hasn\x27t\x20been\x20initialised\x20-\x20super()\x20hasn\x27t\x20been\x20called');return _0x578156;}(_0x2169c):_0x5649ce;}function _0x1de86a(){var _0x5363d2=_0x3ab6;if(_0x5363d2('0x56')==typeof Reflect||!Reflect[_0x5363d2('0x6ea')])return!0x1;if(Reflect['construct'][_0x5363d2('0x16e')])return!0x1;if(_0x5363d2('0xae9')==typeof Proxy)return!0x0;try{return Date[_0x5363d2('0x98c')][_0x5363d2('0x537')]['call'](Reflect[_0x5363d2('0x6ea')](Date,[],function(){})),!0x0;}catch(_0x35a25b){return!0x1;}}function _0x3a64f6(_0x889da0){var _0x1df6f1=_0x3ab6;return(_0x3a64f6=Object['setPrototypeOf']?Object[_0x1df6f1('0x10c0')]:function(_0x29824f){var _0xea2042=_0x1df6f1;return _0x29824f['__proto__']||Object[_0xea2042('0x10c0')](_0x29824f);})(_0x889da0);}function _0xf9289(_0x5cab88,_0x593aa9){var _0x8e989a=_0x3ab6;if(_0x8e989a('0xae9')!=typeof _0x593aa9&&null!==_0x593aa9)throw new TypeError(_0x8e989a('0x409'));_0x5cab88['prototype']=Object['create'](_0x593aa9&&_0x593aa9[_0x8e989a('0x98c')],{'constructor':{'value':_0x5cab88,'writable':!0x0,'configurable':!0x0}}),_0x593aa9&&_0x548e35(_0x5cab88,_0x593aa9);}function _0x548e35(_0x9d2c7c,_0x864dfd){var _0x55f874=_0x3ab6;return(_0x548e35=Object[_0x55f874('0x6c2')]||function(_0x1ea147,_0x33170a){var _0x2bbd3c=_0x55f874;return _0x1ea147[_0x2bbd3c('0x11e6')]=_0x33170a,_0x1ea147;})(_0x9d2c7c,_0x864dfd);}var _0x192d2a=function(_0x2eee7b){var _0x225882=_0x3ab6;_0xf9289(_0x22f899,_0x2eee7b);var _0x3fdbfc=_0x4d0204(_0x22f899);function _0x22f899(){var _0x256a02=_0x3ab6;return _0x218c06(this,_0x22f899),_0x3fdbfc[_0x256a02('0x1036')](this,arguments);}return _0x3411db(_0x22f899,[{'key':_0x225882('0x315'),'value':function(){var _0x4c4c47=_0x225882;return['id',_0x4c4c47('0x263'),_0x4c4c47('0xddf')];}},{'key':_0x225882('0x5d2'),'value':function(){var _0x22bc61=_0x225882;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':_0x22bc61('0x1')},{'sTitle':'Details'}];}},{'key':'getFormFields','value':function(){var _0x4b2daa=_0x225882;return[['id',{'label':'ID','type':'hidden'}],['name',{'label':_0x4b2daa('0x1'),'type':_0x4b2daa('0x768'),'validation':''}],[_0x4b2daa('0x11b'),{'label':_0x4b2daa('0xd3b'),'type':_0x4b2daa('0x8ff'),'source':[[_0x4b2daa('0x9a3'),'Yes'],['No','No']]}],[_0x4b2daa('0x76a'),{'label':_0x4b2daa('0xc05'),'type':'select','source':[[_0x4b2daa('0x9a3'),_0x4b2daa('0x9a3')],['No','No']]}],[_0x4b2daa('0xf13'),{'label':'Notify\x20Expiry\x20Before\x20One\x20Week','type':_0x4b2daa('0x8ff'),'source':[[_0x4b2daa('0x9a3'),'Yes'],['No','No']]}],['expire_notification_day',{'label':_0x4b2daa('0xd6f'),'type':_0x4b2daa('0x8ff'),'source':[[_0x4b2daa('0x9a3'),_0x4b2daa('0x9a3')],['No','No']]}],[_0x4b2daa('0xc0f'),{'label':_0x4b2daa('0x566'),'type':_0x4b2daa('0x8ff'),'source':[['Yes',_0x4b2daa('0x9a3')],['No','No']]}],[_0x4b2daa('0xddf'),{'label':'Details','type':_0x4b2daa('0xa2e'),'validation':'none'}]];}},{'key':_0x225882('0x115d'),'value':function(){var _0x2d23eb=_0x225882;return _0x2d23eb('0xb2d');}}]),_0x22f899;}(_0x42d437[_0x381a35('0x544')]),_0x42eab3=function(_0x1cb53d){var _0x5824db=_0x381a35;_0xf9289(_0x585b04,_0x1cb53d);var _0x3d6b66=_0x4d0204(_0x585b04);function _0x585b04(){var _0x47bb44=_0x3ab6;return _0x218c06(this,_0x585b04),_0x3d6b66[_0x47bb44('0x1036')](this,arguments);}return _0x3411db(_0x585b04,[{'key':_0x5824db('0x315'),'value':function(){var _0x22c0cb=_0x5824db;return['id',_0x22c0cb('0x263'),_0x22c0cb('0xddf'),_0x22c0cb('0x11e7')];}},{'key':_0x5824db('0x5d2'),'value':function(){var _0x5f5671=_0x5824db;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':'Name'},{'sTitle':_0x5f5671('0xf10')},{'sTitle':_0x5f5671('0xf9f')}];}},{'key':'getFormFields','value':function(){var _0x180bf2=_0x5824db;return[['id',{'label':'ID','type':_0x180bf2('0xdc0')}],[_0x180bf2('0x263'),{'label':_0x180bf2('0x1'),'type':_0x180bf2('0x768'),'validation':''}],[_0x180bf2('0xddf'),{'label':_0x180bf2('0xf10'),'type':_0x180bf2('0xa2e'),'validation':_0x180bf2('0x1c1')}],[_0x180bf2('0x11e7'),{'label':_0x180bf2('0xf9f'),'type':_0x180bf2('0x8ff'),'source':[[_0x180bf2('0xdaf'),'Active'],[_0x180bf2('0xa8d'),_0x180bf2('0xa8d')],[_0x180bf2('0xe15'),_0x180bf2('0xe15')]]}],['attachment',{'label':_0x180bf2('0x1090'),'type':_0x180bf2('0xd4e')}],[_0x180bf2('0x3b0'),{'label':_0x180bf2('0x8bc'),'type':_0x180bf2('0x256'),'allow-null':!0x0,'null-label':_0x180bf2('0xb1f'),'remote-source':[_0x180bf2('0x2f6'),'id',_0x180bf2('0xba3')],'help':_0x180bf2('0x1023')}],[_0x180bf2('0x5f2'),{'label':_0x180bf2('0x139'),'type':_0x180bf2('0x256'),'allow-null':!0x0,'null-label':_0x180bf2('0x679'),'remote-source':['Employee','id',_0x180bf2('0x2d')],'validation':_0x180bf2('0x1c1'),'help':'Instead\x20of\x20sharing\x20with\x20all\x20the\x20employees\x20in\x20a\x20department,\x20you\x20can\x20share\x20it\x20only\x20with\x20specific\x20employees'}]];}}]),_0x585b04;}(_0x42d437[_0x381a35('0x544')]),_0xa70f3e=function(_0x28b685){var _0x11e810=_0x381a35;_0xf9289(_0x2d496a,_0x28b685);var _0x786684=_0x4d0204(_0x2d496a);function _0x2d496a(){var _0x5d9ee0=_0x3ab6;return _0x218c06(this,_0x2d496a),_0x786684[_0x5d9ee0('0x1036')](this,arguments);}return _0x3411db(_0x2d496a,[{'key':_0x11e810('0x315'),'value':function(){var _0x21998b=_0x11e810;return['id','employee',_0x21998b('0xe40'),'details','date_added',_0x21998b('0x11e7'),_0x21998b('0x5df')];}},{'key':_0x11e810('0x5d2'),'value':function(){var _0x475369=_0x11e810;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':_0x475369('0x3e1')},{'sTitle':_0x475369('0xefb')},{'sTitle':_0x475369('0xf10')},{'sTitle':_0x475369('0x76b')},{'sTitle':'Status'},{'sTitle':'Attachment','bVisible':!0x1}];}},{'key':_0x11e810('0xfe3'),'value':function(){var _0x278afa=_0x11e810;return[['id',{'label':'ID','type':'hidden'}],[_0x278afa('0x55e'),{'label':_0x278afa('0x3e1'),'type':'select2','sort':_0x278afa('0x1c1'),'allow-null':!0x1,'remote-source':[_0x278afa('0x3e1'),'id',_0x278afa('0x2d'),_0x278afa('0xc07')]}],['document',{'label':_0x278afa('0xefb'),'type':_0x278afa('0x1137'),'remote-source':[_0x278afa('0xefb'),'id',_0x278afa('0x263')]}],[_0x278afa('0xba1'),{'label':'Date\x20Added','type':_0x278afa('0x65d'),'validation':''}],[_0x278afa('0x6a9'),{'label':_0x278afa('0xcfb'),'type':_0x278afa('0x65d'),'validation':_0x278afa('0x1c1')}],[_0x278afa('0x11e7'),{'label':'Status','type':_0x278afa('0x8ff'),'source':[['Active',_0x278afa('0xdaf')],[_0x278afa('0xa8d'),'Inactive'],[_0x278afa('0xe15'),_0x278afa('0xe15')]]}],[_0x278afa('0x9d5'),{'label':_0x278afa('0x90b'),'type':_0x278afa('0x8ff'),'source':[[_0x278afa('0x673'),_0x278afa('0x673')],[_0x278afa('0xe9a'),'Manager'],[_0x278afa('0x44'),_0x278afa('0x44')]]}],[_0x278afa('0xddf'),{'label':_0x278afa('0xf10'),'type':_0x278afa('0xa2e'),'validation':_0x278afa('0x1c1')}],['attachment',{'label':'Attachment','type':'fileupload','validation':''}]];}},{'key':'getFilters','value':function(){var _0x174c3c=_0x11e810;return[[_0x174c3c('0x55e'),{'label':'Employee','type':_0x174c3c('0x1137'),'remote-source':['Employee','id',_0x174c3c('0x2d'),_0x174c3c('0xc07')]}]];}},{'key':_0x11e810('0xd6b'),'value':function(_0x882de,_0x5de3ca){var _0x5c6f2a=_0x11e810,_0x1d78c6=_0x5c6f2a('0x462');return _0x1d78c6=(_0x1d78c6=(_0x1d78c6=_0x1d78c6[_0x5c6f2a('0x166')](/_id_/g,_0x882de))[_0x5c6f2a('0x166')](/_attachment_/g,_0x5de3ca[0x6]))[_0x5c6f2a('0x166')](/_BASE_/g,this['baseUrl']);}},{'key':_0x11e810('0x1190'),'value':function(){var _0xf1ac89=_0x11e810;return _0xf1ac89('0x44')!==this[_0xf1ac89('0x597')][_0xf1ac89('0x9de')]&&_0xf1ac89('0x11a9')!==this[_0xf1ac89('0x597')]['user_level'];}}]),_0x2d496a;}(_0x42d437[_0x381a35('0x544')]);_0x51a40b[_0x381a35('0xddc')]={'DocumentAdapter':_0x192d2a,'CompanyDocumentAdapter':_0x42eab3,'EmployeeDocumentAdapter':_0xa70f3e};},{'../../../api/AdapterBase':0x39}],0x17:[function(_0x32e28b,_0x4771ad,_0x47144a){var _0x420a85=_0x404097;'use strict';Object['defineProperty'](_0x47144a,_0x420a85('0x114c'),{'value':!0x0}),_0x47144a[_0x420a85('0x544')]=void 0x0;var _0x17cf7a,_0xe38cb8=function(_0x5caca4){var _0x29925f=_0x420a85;if(_0x5caca4&&_0x5caca4[_0x29925f('0x114c')])return _0x5caca4;if(null===_0x5caca4||_0x29925f('0x21e')!==_0x58c330(_0x5caca4)&&_0x29925f('0xae9')!=typeof _0x5caca4)return{'default':_0x5caca4};var _0x548164=_0x36c248();if(_0x548164&&_0x548164[_0x29925f('0x587')](_0x5caca4))return _0x548164['get'](_0x5caca4);var _0x484a6f={},_0x4bdb86=Object[_0x29925f('0xa95')]&&Object[_0x29925f('0xa71')];for(var _0x58c539 in _0x5caca4)if(Object[_0x29925f('0x98c')][_0x29925f('0x100')][_0x29925f('0x4b0')](_0x5caca4,_0x58c539)){var _0x5f5abe=_0x4bdb86?Object[_0x29925f('0xa71')](_0x5caca4,_0x58c539):null;_0x5f5abe&&(_0x5f5abe[_0x29925f('0x33')]||_0x5f5abe['set'])?Object[_0x29925f('0xa95')](_0x484a6f,_0x58c539,_0x5f5abe):_0x484a6f[_0x58c539]=_0x5caca4[_0x58c539];}return _0x484a6f[_0x29925f('0x544')]=_0x5caca4,_0x548164&&_0x548164[_0x29925f('0x11ce')](_0x5caca4,_0x484a6f),_0x484a6f;}(_0x32e28b(_0x420a85('0x1041'))),_0x253e11=_0x32e28b(_0x420a85('0xdb9')),_0x1fcaae=_0x32e28b(_0x420a85('0x1e1')),_0x262130=(_0x17cf7a=_0x32e28b(_0x420a85('0x159')))&&_0x17cf7a[_0x420a85('0x114c')]?_0x17cf7a:{'default':_0x17cf7a};function _0x36c248(){var _0x368742=_0x420a85;if(_0x368742('0xae9')!=typeof WeakMap)return null;var _0x2ca410=new WeakMap();return _0x36c248=function(){return _0x2ca410;},_0x2ca410;}function _0x58c330(_0x2675d1){var _0xdf935c=_0x420a85;return(_0x58c330=_0xdf935c('0xae9')==typeof Symbol&&_0xdf935c('0x245')==typeof Symbol[_0xdf935c('0x78e')]?function(_0x2abae){return typeof _0x2abae;}:function(_0x1762de){var _0x57bbfb=_0xdf935c;return _0x1762de&&_0x57bbfb('0xae9')==typeof Symbol&&_0x1762de[_0x57bbfb('0x3c6')]===Symbol&&_0x1762de!==Symbol[_0x57bbfb('0x98c')]?_0x57bbfb('0x245'):typeof _0x1762de;})(_0x2675d1);}function _0xd4fa2a(_0x29cc6f,_0x26eb60){var _0x1086d7=_0x420a85;for(var _0x51da44=0x0;_0x51da44<_0x26eb60['length'];_0x51da44++){var _0x4a2c23=_0x26eb60[_0x51da44];_0x4a2c23['enumerable']=_0x4a2c23['enumerable']||!0x1,_0x4a2c23[_0x1086d7('0xbb2')]=!0x0,_0x1086d7('0x832')in _0x4a2c23&&(_0x4a2c23[_0x1086d7('0x4db')]=!0x0),Object[_0x1086d7('0xa95')](_0x29cc6f,_0x4a2c23[_0x1086d7('0x1192')],_0x4a2c23);}}function _0x413d91(_0xbe69be,_0x498618){var _0x1bd75e=_0x420a85;return!_0x498618||_0x1bd75e('0x21e')!==_0x58c330(_0x498618)&&_0x1bd75e('0xae9')!=typeof _0x498618?function(_0x3ac3ec){var _0x5a6d7e=_0x1bd75e;if(void 0x0===_0x3ac3ec)throw new ReferenceError(_0x5a6d7e('0x2e9'));return _0x3ac3ec;}(_0xbe69be):_0x498618;}function _0xa4bef2(){var _0x483b60=_0x420a85;if(_0x483b60('0x56')==typeof Reflect||!Reflect['construct'])return!0x1;if(Reflect[_0x483b60('0x6ea')][_0x483b60('0x16e')])return!0x1;if('function'==typeof Proxy)return!0x0;try{return Date[_0x483b60('0x98c')]['toString'][_0x483b60('0x4b0')](Reflect[_0x483b60('0x6ea')](Date,[],function(){})),!0x0;}catch(_0x15d281){return!0x1;}}function _0x1ad5d8(_0xcad2f8){var _0x5351df=_0x420a85;return(_0x1ad5d8=Object[_0x5351df('0x6c2')]?Object['getPrototypeOf']:function(_0x12abff){var _0xc34e9a=_0x5351df;return _0x12abff['__proto__']||Object[_0xc34e9a('0x10c0')](_0x12abff);})(_0xcad2f8);}function _0x2ed44b(_0x1bd475,_0x408fb8){var _0x2c1d1d=_0x420a85;return(_0x2ed44b=Object[_0x2c1d1d('0x6c2')]||function(_0x58bb15,_0x150251){var _0x4b8bff=_0x2c1d1d;return _0x58bb15[_0x4b8bff('0x11e6')]=_0x150251,_0x58bb15;})(_0x1bd475,_0x408fb8);}_0x253e11[_0x420a85('0x4f3')]['Search'];var _0x46d20e=_0x253e11[_0x420a85('0x407')][_0x420a85('0xbed')],_0x470cf2=_0x253e11[_0x420a85('0x407')]['Text'],_0x5c327a=_0x253e11['Tabs'][_0x420a85('0x10fc')],_0x18c92f=function(_0x30237a){var _0x457135=_0x420a85;!function(_0x1f1ca4,_0x426762){var _0x4b2d74=_0x3ab6;if('function'!=typeof _0x426762&&null!==_0x426762)throw new TypeError(_0x4b2d74('0x409'));_0x1f1ca4[_0x4b2d74('0x98c')]=Object['create'](_0x426762&&_0x426762[_0x4b2d74('0x98c')],{'constructor':{'value':_0x1f1ca4,'writable':!0x0,'configurable':!0x0}}),_0x426762&&_0x2ed44b(_0x1f1ca4,_0x426762);}(_0x3fb128,_0x30237a);var _0x581253,_0x11a553,_0x501f2b,_0x81b434,_0x2edc84=(_0x581253=_0x3fb128,function(){var _0xa07e38=_0x3ab6,_0x4801a8,_0x28f5d0=_0x1ad5d8(_0x581253);if(_0xa4bef2()){var _0x11ee2b=_0x1ad5d8(this)['constructor'];_0x4801a8=Reflect['construct'](_0x28f5d0,arguments,_0x11ee2b);}else _0x4801a8=_0x28f5d0[_0xa07e38('0x1036')](this,arguments);return _0x413d91(this,_0x4801a8);});function _0x3fb128(_0x5ea287){var _0x2faed3=_0x3ab6,_0x10cbc3;return function(_0x44ba81,_0x5a545e){if(!(_0x44ba81 instanceof _0x5a545e))throw new TypeError('Cannot\x20call\x20a\x20class\x20as\x20a\x20function');}(this,_0x3fb128),(_0x10cbc3=_0x2edc84[_0x2faed3('0x4b0')](this,_0x5ea287))[_0x2faed3('0xfff')]={'loading':!0x0},_0x10cbc3;}return _0x11a553=_0x3fb128,(_0x501f2b=[{'key':_0x457135('0x946'),'value':function(){var _0x582a0c=_0x457135;showUploadDialog(_0x582a0c('0x173')[_0x582a0c('0x3cc')](this[_0x582a0c('0x6e0')][_0x582a0c('0x3f4')]['id'],'_')[_0x582a0c('0x3cc')](new Date()[_0x582a0c('0xa5d')]()),_0x582a0c('0xa8f'),_0x582a0c('0xf9d'),this['props'][_0x582a0c('0x3f4')]['id'],_0x582a0c('0x173')[_0x582a0c('0x3cc')](this[_0x582a0c('0x6e0')][_0x582a0c('0x3f4')]['id']),_0x582a0c('0xae9'),_0x582a0c('0x83a'),'image');}},{'key':_0x457135('0xb9c'),'value':function(){var _0x54ee76=_0x457135,_0xd56b53=this;return _0xe38cb8[_0x54ee76('0x544')]['createElement'](_0xe38cb8['default'][_0x54ee76('0x6f4')],null,this[_0x54ee76('0x6e0')][_0x54ee76('0x219')]&&_0xe38cb8[_0x54ee76('0x544')][_0x54ee76('0xd0f')](_0x253e11['Tag'],{'icon':_0xe38cb8[_0x54ee76('0x544')]['createElement'](_0x1fcaae[_0x54ee76('0x62e')],{'spin':!0x0}),'color':_0x54ee76('0x4ff')},this['props'][_0x54ee76('0x7fb')]['gt'](_0x54ee76('0xf1'))),!this[_0x54ee76('0x6e0')][_0x54ee76('0x219')]&&_0xe38cb8[_0x54ee76('0x544')]['createElement'](_0x253e11[_0x54ee76('0x765')],{'icon':_0xe38cb8[_0x54ee76('0x544')][_0x54ee76('0xd0f')](_0x1fcaae['EditOutlined'],null),'color':'processing','onClick':function(){var _0x4b0b37=_0x54ee76;return modJs[_0x4b0b37('0x165')](_0xd56b53[_0x4b0b37('0x6e0')][_0x4b0b37('0x3f4')]['id']);}},this[_0x54ee76('0x6e0')][_0x54ee76('0x7fb')]['gt'](_0x54ee76('0xf1'))));}},{'key':_0x457135('0xa0e'),'value':function(_0xdeabed){var _0x33d94e=_0x457135,_0x2d1e55=this;return _0xe38cb8[_0x33d94e('0x544')]['createElement'](_0x253e11[_0x33d94e('0x765')],{'icon':_0xe38cb8[_0x33d94e('0x544')][_0x33d94e('0xd0f')](_0x1fcaae[_0x33d94e('0xea1')],null),'color':_0x33d94e('0x4ff'),'onClick':function(){var _0x351f50=_0x33d94e;switchTab(_0xdeabed,{'employee':_0x2d1e55['props'][_0x351f50('0x3f4')]['id']});}},this[_0x33d94e('0x6e0')][_0x33d94e('0x7fb')]['gt'](_0x33d94e('0xf1')));}},{'key':_0x457135('0x80f'),'value':function(){var _0x2b1a93=_0x457135,_0x4d4e8b=this;return _0xe38cb8[_0x2b1a93('0x544')][_0x2b1a93('0xd0f')](_0xe38cb8[_0x2b1a93('0x544')][_0x2b1a93('0x6f4')],null,_0xe38cb8['default'][_0x2b1a93('0xd0f')](_0x253e11['Row'],{'direction':_0x2b1a93('0xd20'),'style':{'width':_0x2b1a93('0xeef'),'padding':_0x2b1a93('0x795')},'gutter':0x18},_0xe38cb8[_0x2b1a93('0x544')]['createElement'](_0x253e11[_0x2b1a93('0xc2a')],{'span':0x18},_0xe38cb8['default']['createElement'](_0x253e11['Card'],{'title':this[_0x2b1a93('0x6e0')]['adapter']['gt'](_0x2b1a93('0xc95')),'extra':this[_0x2b1a93('0xb9c')](),'style':{'width':_0x2b1a93('0xeef')}},_0xe38cb8[_0x2b1a93('0x544')]['createElement'](_0x253e11['Space'],{'size':_0x2b1a93('0xb0c')},_0xe38cb8['default'][_0x2b1a93('0xd0f')](_0x253e11[_0x2b1a93('0x11d8')],{'size':0x8c,'src':this[_0x2b1a93('0x6e0')][_0x2b1a93('0x3f4')][_0x2b1a93('0xa40')],'onClick':function(){var _0x2daa60=_0x2b1a93;return _0x4d4e8b[_0x2daa60('0x946')]();}}),_0xe38cb8[_0x2b1a93('0x544')][_0x2b1a93('0xd0f')](_0x253e11[_0x2b1a93('0x3ff')],{'direction':_0x2b1a93('0xd20')},_0xe38cb8[_0x2b1a93('0x544')][_0x2b1a93('0xd0f')](_0x46d20e,{'level':0x4},''[_0x2b1a93('0x3cc')](this[_0x2b1a93('0x6e0')][_0x2b1a93('0x3f4')][_0x2b1a93('0x910')],'\x20')[_0x2b1a93('0x3cc')](this[_0x2b1a93('0x6e0')][_0x2b1a93('0x3f4')][_0x2b1a93('0x1186')])),_0xe38cb8[_0x2b1a93('0x544')]['createElement'](_0x253e11['Space'],null,_0xe38cb8[_0x2b1a93('0x544')][_0x2b1a93('0xd0f')](_0x1fcaae[_0x2b1a93('0x682')],null),_0xe38cb8[_0x2b1a93('0x544')]['createElement'](_0x470cf2,{'copyable':!0x0},'\x20'['concat'](this['props'][_0x2b1a93('0x3f4')][_0x2b1a93('0x40b')]||''))),_0xe38cb8[_0x2b1a93('0x544')]['createElement'](_0x253e11[_0x2b1a93('0x3ff')],null,_0xe38cb8[_0x2b1a93('0x544')][_0x2b1a93('0xd0f')](_0x1fcaae[_0x2b1a93('0xfcc')],null),_0xe38cb8[_0x2b1a93('0x544')][_0x2b1a93('0xd0f')](_0x470cf2,{'copyable':!0x0},'\x20'[_0x2b1a93('0x3cc')](this[_0x2b1a93('0x6e0')][_0x2b1a93('0x3f4')][_0x2b1a93('0x9c8')]||'')))),_0xe38cb8[_0x2b1a93('0x544')]['createElement'](_0x253e11[_0x2b1a93('0x674')],{'title':'','bordered':!0x0,'style':{'width':_0x2b1a93('0xeef'),'padding':_0x2b1a93('0x795')}},_0xe38cb8[_0x2b1a93('0x544')][_0x2b1a93('0xd0f')](_0x253e11[_0x2b1a93('0x674')][_0x2b1a93('0xd37')],{'label':this[_0x2b1a93('0x6e0')]['adapter']['gt'](_0x2b1a93('0x1e4')),'span':0x3},this[_0x2b1a93('0x6e0')][_0x2b1a93('0x3f4')][_0x2b1a93('0xcce')]),_0xe38cb8[_0x2b1a93('0x544')][_0x2b1a93('0xd0f')](_0x253e11['Descriptions'][_0x2b1a93('0xd37')],{'label':this[_0x2b1a93('0x6e0')][_0x2b1a93('0x7fb')]['gt'](_0x2b1a93('0xaf7')),'span':0x3},this['props'][_0x2b1a93('0x3f4')][_0x2b1a93('0x40c')]||''),this[_0x2b1a93('0x6e0')]['element'][_0x2b1a93('0xd5a')]&&''!==this[_0x2b1a93('0x6e0')]['element']['ssn_num']&&_0xe38cb8[_0x2b1a93('0x544')]['createElement'](_0x253e11['Descriptions'][_0x2b1a93('0xd37')],{'label':this['props'][_0x2b1a93('0x7fb')]['gt'](_0x2b1a93('0x755')),'span':0x3},this[_0x2b1a93('0x6e0')][_0x2b1a93('0x3f4')][_0x2b1a93('0xd5a')]||'')))))),_0xe38cb8['default'][_0x2b1a93('0xd0f')](_0x253e11[_0x2b1a93('0x2b4')],{'direction':_0x2b1a93('0xd20'),'style':{'width':'100%','padding':_0x2b1a93('0x795')},'gutter':0x18},_0xe38cb8[_0x2b1a93('0x544')][_0x2b1a93('0xd0f')](_0x253e11[_0x2b1a93('0xa6b')],{'type':_0x2b1a93('0xc02'),'style':{'width':'100%'}},_0xe38cb8[_0x2b1a93('0x544')][_0x2b1a93('0xd0f')](_0x5c327a,{'tab':_0x2b1a93('0xc9c'),'key':'1','style':{'width':'100%'}},_0xe38cb8[_0x2b1a93('0x544')][_0x2b1a93('0xd0f')](_0x253e11[_0x2b1a93('0x2b4')],{'direction':'vertical','style':{'width':_0x2b1a93('0xeef'),'padding':_0x2b1a93('0x795')},'gutter':0x18},_0xe38cb8[_0x2b1a93('0x544')][_0x2b1a93('0xd0f')](_0x253e11[_0x2b1a93('0xc2a')],{'span':0x18},_0xe38cb8[_0x2b1a93('0x544')][_0x2b1a93('0xd0f')](_0x253e11[_0x2b1a93('0x117a')],{'title':this[_0x2b1a93('0x6e0')]['adapter']['gt'](_0x2b1a93('0x11ac')),'extra':this[_0x2b1a93('0xb9c')](),'style':{'width':_0x2b1a93('0xeef')}},_0xe38cb8[_0x2b1a93('0x544')][_0x2b1a93('0xd0f')](_0x253e11[_0x2b1a93('0x674')],{'title':'','bordered':!0x0},_0xe38cb8[_0x2b1a93('0x544')]['createElement'](_0x253e11[_0x2b1a93('0x674')][_0x2b1a93('0xd37')],{'label':this['props']['adapter']['gt'](_0x2b1a93('0xca5'))},this[_0x2b1a93('0x6e0')][_0x2b1a93('0x3f4')][_0x2b1a93('0x11c2')]||''),_0xe38cb8[_0x2b1a93('0x544')][_0x2b1a93('0xd0f')](_0x253e11[_0x2b1a93('0x674')]['Item'],{'label':this[_0x2b1a93('0x6e0')][_0x2b1a93('0x7fb')]['gt'](_0x2b1a93('0x2e1'))},this[_0x2b1a93('0x6e0')]['element'][_0x2b1a93('0xaad')]),_0xe38cb8[_0x2b1a93('0x544')][_0x2b1a93('0xd0f')](_0x253e11[_0x2b1a93('0x674')][_0x2b1a93('0xd37')],{'label':this[_0x2b1a93('0x6e0')]['adapter']['gt'](_0x2b1a93('0x1057'))},this[_0x2b1a93('0x6e0')][_0x2b1a93('0x3f4')][_0x2b1a93('0x7d')]),_0xe38cb8[_0x2b1a93('0x544')][_0x2b1a93('0xd0f')](_0x253e11['Descriptions'][_0x2b1a93('0xd37')],{'label':this['props'][_0x2b1a93('0x7fb')]['gt']('Marital\x20Status')},this['props'][_0x2b1a93('0x3f4')]['marital_status']),_0xe38cb8[_0x2b1a93('0x544')][_0x2b1a93('0xd0f')](_0x253e11[_0x2b1a93('0x674')][_0x2b1a93('0xd37')],{'label':this[_0x2b1a93('0x6e0')][_0x2b1a93('0x7fb')]['gt']('Joined\x20Date')},this['props'][_0x2b1a93('0x3f4')][_0x2b1a93('0xe60')]),_0xe38cb8[_0x2b1a93('0x544')]['createElement'](_0x253e11[_0x2b1a93('0x674')][_0x2b1a93('0xd37')],{'label':this[_0x2b1a93('0x6e0')][_0x2b1a93('0x7fb')]['gt']('Driving\x20License\x20No')},this[_0x2b1a93('0x6e0')][_0x2b1a93('0x3f4')][_0x2b1a93('0xe71')]||''),_0xe38cb8['default'][_0x2b1a93('0xd0f')](_0x253e11['Descriptions'][_0x2b1a93('0xd37')],{'label':this[_0x2b1a93('0x6e0')][_0x2b1a93('0x7fb')]['gt']('Other\x20ID')},this[_0x2b1a93('0x6e0')]['element'][_0x2b1a93('0x64e')]||'')))),_0xe38cb8[_0x2b1a93('0x544')]['createElement'](_0x253e11[_0x2b1a93('0xc2a')],{'span':0x18},_0xe38cb8[_0x2b1a93('0x544')][_0x2b1a93('0xd0f')](_0x253e11[_0x2b1a93('0x117a')],{'title':this[_0x2b1a93('0x6e0')]['adapter']['gt']('Contact\x20Information'),'extra':this[_0x2b1a93('0xb9c')](),'style':{'width':_0x2b1a93('0xeef')}},_0xe38cb8[_0x2b1a93('0x544')]['createElement'](_0x253e11['Descriptions'],{'title':'','bordered':!0x0},_0xe38cb8[_0x2b1a93('0x544')]['createElement'](_0x253e11[_0x2b1a93('0x674')][_0x2b1a93('0xd37')],{'label':this[_0x2b1a93('0x6e0')]['adapter']['gt'](_0x2b1a93('0xac6')),'span':0x3},''[_0x2b1a93('0x3cc')](this[_0x2b1a93('0x6e0')][_0x2b1a93('0x3f4')][_0x2b1a93('0x112c')],',\x20')[_0x2b1a93('0x3cc')](this[_0x2b1a93('0x6e0')][_0x2b1a93('0x3f4')][_0x2b1a93('0x39f')]||'')),_0xe38cb8[_0x2b1a93('0x544')]['createElement'](_0x253e11[_0x2b1a93('0x674')][_0x2b1a93('0xd37')],{'label':this[_0x2b1a93('0x6e0')][_0x2b1a93('0x7fb')]['gt'](_0x2b1a93('0xb41'))},this[_0x2b1a93('0x6e0')][_0x2b1a93('0x3f4')][_0x2b1a93('0x338')]),_0xe38cb8['default']['createElement'](_0x253e11[_0x2b1a93('0x674')][_0x2b1a93('0xd37')],{'label':this[_0x2b1a93('0x6e0')][_0x2b1a93('0x7fb')]['gt'](_0x2b1a93('0x10f5'))},this['props']['element']['country_Name']),_0xe38cb8['default'][_0x2b1a93('0xd0f')](_0x253e11[_0x2b1a93('0x674')][_0x2b1a93('0xd37')],{'label':this['props'][_0x2b1a93('0x7fb')]['gt'](_0x2b1a93('0x11ab'))},this[_0x2b1a93('0x6e0')][_0x2b1a93('0x3f4')][_0x2b1a93('0xdcd')]),_0xe38cb8[_0x2b1a93('0x544')]['createElement'](_0x253e11['Descriptions'][_0x2b1a93('0xd37')],{'label':this[_0x2b1a93('0x6e0')][_0x2b1a93('0x7fb')]['gt']('Home\x20Phone'),'span':0x2},_0xe38cb8[_0x2b1a93('0x544')][_0x2b1a93('0xd0f')](_0x253e11[_0x2b1a93('0x3ff')],null,_0xe38cb8[_0x2b1a93('0x544')][_0x2b1a93('0xd0f')](_0x1fcaae[_0x2b1a93('0x682')],null),_0xe38cb8[_0x2b1a93('0x544')][_0x2b1a93('0xd0f')](_0x470cf2,{'copyable':!0x0},'\x20'[_0x2b1a93('0x3cc')](this[_0x2b1a93('0x6e0')]['element']['home_phone']||'')))),_0xe38cb8[_0x2b1a93('0x544')][_0x2b1a93('0xd0f')](_0x253e11[_0x2b1a93('0x674')]['Item'],{'label':this[_0x2b1a93('0x6e0')]['adapter']['gt'](_0x2b1a93('0x21d')),'span':0x2},_0xe38cb8['default']['createElement'](_0x253e11[_0x2b1a93('0x3ff')],null,_0xe38cb8[_0x2b1a93('0x544')][_0x2b1a93('0xd0f')](_0x1fcaae[_0x2b1a93('0x682')],null),_0xe38cb8[_0x2b1a93('0x544')]['createElement'](_0x470cf2,{'copyable':!0x0},'\x20'['concat'](this['props'][_0x2b1a93('0x3f4')][_0x2b1a93('0xa19')]||'')))),_0xe38cb8['default'][_0x2b1a93('0xd0f')](_0x253e11['Descriptions'][_0x2b1a93('0xd37')],{'label':this[_0x2b1a93('0x6e0')][_0x2b1a93('0x7fb')]['gt'](_0x2b1a93('0xd7d')),'span':0x2},_0xe38cb8['default']['createElement'](_0x253e11[_0x2b1a93('0x3ff')],null,_0xe38cb8[_0x2b1a93('0x544')]['createElement'](_0x1fcaae[_0x2b1a93('0xfcc')],null),_0xe38cb8['default']['createElement'](_0x470cf2,{'copyable':!0x0},'\x20'[_0x2b1a93('0x3cc')](this['props']['element'][_0x2b1a93('0xc22')]||''))))))),_0xe38cb8[_0x2b1a93('0x544')][_0x2b1a93('0xd0f')](_0x253e11[_0x2b1a93('0xc2a')],{'span':0x18},_0xe38cb8[_0x2b1a93('0x544')][_0x2b1a93('0xd0f')](_0x253e11[_0x2b1a93('0x117a')],{'title':this[_0x2b1a93('0x6e0')][_0x2b1a93('0x7fb')]['gt'](_0x2b1a93('0x9eb')),'extra':this['getEditButtonJsx'](),'style':{'width':_0x2b1a93('0xeef')}},_0xe38cb8[_0x2b1a93('0x544')][_0x2b1a93('0xd0f')](_0x253e11[_0x2b1a93('0x674')],{'title':'','bordered':!0x0},_0xe38cb8['default'][_0x2b1a93('0xd0f')](_0x253e11['Descriptions']['Item'],{'label':this['props'][_0x2b1a93('0x7fb')]['gt'](_0x2b1a93('0x393')),'span':0x2},this[_0x2b1a93('0x6e0')]['element'][_0x2b1a93('0x776')]),_0xe38cb8[_0x2b1a93('0x544')]['createElement'](_0x253e11[_0x2b1a93('0x674')][_0x2b1a93('0xd37')],{'label':this[_0x2b1a93('0x6e0')]['adapter']['gt'](_0x2b1a93('0x9ea'))},this[_0x2b1a93('0x6e0')][_0x2b1a93('0x3f4')][_0x2b1a93('0xbd0')]),_0xe38cb8[_0x2b1a93('0x544')][_0x2b1a93('0xd0f')](_0x253e11[_0x2b1a93('0x674')][_0x2b1a93('0xd37')],{'label':this[_0x2b1a93('0x6e0')][_0x2b1a93('0x7fb')]['gt'](_0x2b1a93('0x11b9'))},this[_0x2b1a93('0x6e0')][_0x2b1a93('0x3f4')][_0x2b1a93('0xe14')]),_0xe38cb8['default'][_0x2b1a93('0xd0f')](_0x253e11[_0x2b1a93('0x674')][_0x2b1a93('0xd37')],{'label':this[_0x2b1a93('0x6e0')][_0x2b1a93('0x7fb')]['gt']('Supervisor')},this[_0x2b1a93('0x6e0')]['element']['supervisor_Name'])))))),_0xe38cb8[_0x2b1a93('0x544')][_0x2b1a93('0xd0f')](_0x5c327a,{'tab':this[_0x2b1a93('0x6e0')][_0x2b1a93('0x7fb')]['gt'](_0x2b1a93('0x6d1')),'key':'2','style':{'width':'100%'}},_0xe38cb8[_0x2b1a93('0x544')]['createElement'](_0x253e11['Row'],{'style':{'width':'100%','padding':_0x2b1a93('0x795')},'gutter':0x18},_0xe38cb8[_0x2b1a93('0x544')][_0x2b1a93('0xd0f')](_0x253e11[_0x2b1a93('0xc2a')],{'span':0x6},_0xe38cb8[_0x2b1a93('0x544')][_0x2b1a93('0xd0f')](_0x253e11[_0x2b1a93('0x117a')],{'title':this[_0x2b1a93('0x6e0')][_0x2b1a93('0x7fb')]['gt'](_0x2b1a93('0xf6e')),'extra':this[_0x2b1a93('0xa0e')](_0x2b1a93('0xf86')),'style':{'width':_0x2b1a93('0xeef')}},_0xe38cb8[_0x2b1a93('0x544')][_0x2b1a93('0xd0f')](_0x262130[_0x2b1a93('0x544')],{'color':_0x2b1a93('0xcd8'),'apiClient':this[_0x2b1a93('0x6e0')][_0x2b1a93('0x7fb')][_0x2b1a93('0x221')],'url':_0x2b1a93('0x8a0')['concat'](this[_0x2b1a93('0x6e0')][_0x2b1a93('0x3f4')]['id'],_0x2b1a93('0x1e6')),'extractTag':function(_0x15b67e){var _0x10accc=_0x2b1a93;return _0x15b67e[_0x10accc('0xc1e')][_0x10accc('0x55c')];}}))),_0xe38cb8[_0x2b1a93('0x544')]['createElement'](_0x253e11[_0x2b1a93('0xc2a')],{'span':0x6},_0xe38cb8['default']['createElement'](_0x253e11[_0x2b1a93('0x117a')],{'title':this['props'][_0x2b1a93('0x7fb')]['gt'](_0x2b1a93('0x94a')),'extra':this[_0x2b1a93('0xa0e')](_0x2b1a93('0xf46')),'style':{'width':_0x2b1a93('0xeef')}},_0xe38cb8[_0x2b1a93('0x544')][_0x2b1a93('0xd0f')](_0x262130[_0x2b1a93('0x544')],{'color':_0x2b1a93('0x3d7'),'apiClient':this[_0x2b1a93('0x6e0')]['adapter'][_0x2b1a93('0x221')],'url':_0x2b1a93('0x8a0')[_0x2b1a93('0x3cc')](this[_0x2b1a93('0x6e0')][_0x2b1a93('0x3f4')]['id'],_0x2b1a93('0xd94')),'extractTag':function(_0x3efcb6){var _0x2b5681=_0x2b1a93;return _0x3efcb6[_0x2b5681('0x273')][_0x2b5681('0x55c')];}}))),_0xe38cb8[_0x2b1a93('0x544')]['createElement'](_0x253e11[_0x2b1a93('0xc2a')],{'span':0x6},_0xe38cb8['default'][_0x2b1a93('0xd0f')](_0x253e11[_0x2b1a93('0x117a')],{'title':this['props']['adapter']['gt'](_0x2b1a93('0x10a1')),'extra':this['getTabViewEmployeeFilterButtonJsx']('tabEmployeeCertification'),'style':{'width':_0x2b1a93('0xeef')}},_0xe38cb8[_0x2b1a93('0x544')][_0x2b1a93('0xd0f')](_0x262130[_0x2b1a93('0x544')],{'color':_0x2b1a93('0x10eb'),'apiClient':this[_0x2b1a93('0x6e0')][_0x2b1a93('0x7fb')]['apiClient'],'url':_0x2b1a93('0x8a0')['concat'](this['props']['element']['id'],'/certifications'),'extractTag':function(_0x302def){var _0x4283d5=_0x2b1a93;return _0x302def[_0x4283d5('0xc7b')]['display'];}}))),_0xe38cb8[_0x2b1a93('0x544')][_0x2b1a93('0xd0f')](_0x253e11['Col'],{'span':0x6},_0xe38cb8[_0x2b1a93('0x544')][_0x2b1a93('0xd0f')](_0x253e11[_0x2b1a93('0x117a')],{'title':this[_0x2b1a93('0x6e0')][_0x2b1a93('0x7fb')]['gt']('Languages'),'extra':this['getTabViewEmployeeFilterButtonJsx'](_0x2b1a93('0x841')),'style':{'width':_0x2b1a93('0xeef')}},_0xe38cb8[_0x2b1a93('0x544')]['createElement'](_0x262130['default'],{'color':_0x2b1a93('0x321'),'apiClient':this[_0x2b1a93('0x6e0')][_0x2b1a93('0x7fb')][_0x2b1a93('0x221')],'url':_0x2b1a93('0x8a0')[_0x2b1a93('0x3cc')](this[_0x2b1a93('0x6e0')][_0x2b1a93('0x3f4')]['id'],'/languages'),'extractTag':function(_0x210088){var _0x51e27a=_0x2b1a93;return _0x210088[_0x51e27a('0x108b')][_0x51e27a('0x55c')];}}))))))));}}])&&_0xd4fa2a(_0x11a553[_0x457135('0x98c')],_0x501f2b),_0x81b434&&_0xd4fa2a(_0x11a553,_0x81b434),_0x3fb128;}(_0xe38cb8[_0x420a85('0x544')]['Component']);_0x47144a[_0x420a85('0x544')]=_0x18c92f;},{'../../../../components/TagList':0x54,'@ant-design/icons':_0x404097('0x1e1'),'antd':_0x404097('0xdb9'),'react':'react'}],0x18:[function(_0x252bbf,_0x510a8b,_0x87033c){var _0x37dcd0=_0x404097;'use strict';var _0x3c3e2c,_0x2498c7=_0x252bbf(_0x37dcd0('0x358')),_0x5dce77=(_0x3c3e2c=_0x252bbf(_0x37dcd0('0x25c')))&&_0x3c3e2c['__esModule']?_0x3c3e2c:{'default':_0x3c3e2c};window['EmployeeAdapter']=_0x2498c7[_0x37dcd0('0x8f4')],window[_0x37dcd0('0xafc')]=_0x2498c7[_0x37dcd0('0xafc')],window[_0x37dcd0('0xeda')]=_0x2498c7['ArchivedEmployeeAdapter'],window[_0x37dcd0('0x44a')]=_0x2498c7[_0x37dcd0('0x44a')],window[_0x37dcd0('0x5a7')]=_0x2498c7[_0x37dcd0('0x5a7')],window['EmployeeCertificationAdapter']=_0x2498c7[_0x37dcd0('0x2ce')],window['EmployeeLanguageAdapter']=_0x2498c7[_0x37dcd0('0xc3c')],window[_0x37dcd0('0x780')]=_0x2498c7[_0x37dcd0('0x780')],window[_0x37dcd0('0x9ec')]=_0x2498c7['EmergencyContactAdapter'],window[_0x37dcd0('0xbbf')]=_0x2498c7[_0x37dcd0('0xbbf')],window[_0x37dcd0('0xad0')]=_0x2498c7[_0x37dcd0('0xad0')],window[_0x37dcd0('0x7d6')]=_0x2498c7[_0x37dcd0('0x7d6')],window[_0x37dcd0('0x10ed')]=_0x2498c7[_0x37dcd0('0x10ed')],window[_0x37dcd0('0x2a4')]=_0x2498c7[_0x37dcd0('0x2a4')],window[_0x37dcd0('0xa5f')]=_0x2498c7['EmployeeSubDependentAdapter'],window[_0x37dcd0('0x4b9')]=_0x2498c7[_0x37dcd0('0x4b9')],window[_0x37dcd0('0xfba')]=_0x2498c7[_0x37dcd0('0xfba')],window[_0x37dcd0('0x1a5')]=_0x5dce77[_0x37dcd0('0x544')];},{'../../../api/IceDataPipe':0x3f,'./lib':0x19}],0x19:[function(_0x228148,_0x1db2ba,_0x2135b1){var _0x5792fb=_0x404097;'use strict';var _0x2d096f=_0x1984f7(_0x228148(_0x5792fb('0x1041'))),_0x566dd6=_0x228148(_0x5792fb('0xdb9')),_0x5a0d00=_0x228148(_0x5792fb('0x1e1')),_0x3c5d82=(_0x1984f7(_0x228148(_0x5792fb('0xe88'))),_0x1984f7(_0x228148(_0x5792fb('0x8af'))),_0x1984f7(_0x228148(_0x5792fb('0x10fa'))),_0x1984f7(_0x228148(_0x5792fb('0x4ac')))),_0x1b07e0=_0x1984f7(_0x228148(_0x5792fb('0xc96')));function _0x1984f7(_0x528bc4){var _0x14f79d=_0x5792fb;return _0x528bc4&&_0x528bc4[_0x14f79d('0x114c')]?_0x528bc4:{'default':_0x528bc4};}function _0x4b5fa0(_0x6efab2){var _0x403510=_0x5792fb;return(_0x4b5fa0=_0x403510('0xae9')==typeof Symbol&&_0x403510('0x245')==typeof Symbol[_0x403510('0x78e')]?function(_0x554fb0){return typeof _0x554fb0;}:function(_0x274be0){var _0x37d2e1=_0x403510;return _0x274be0&&'function'==typeof Symbol&&_0x274be0[_0x37d2e1('0x3c6')]===Symbol&&_0x274be0!==Symbol['prototype']?_0x37d2e1('0x245'):typeof _0x274be0;})(_0x6efab2);}function _0x3905db(_0x4afec4,_0x4d6368){var _0x55ca5d=_0x5792fb;if(!(_0x4afec4 instanceof _0x4d6368))throw new TypeError(_0x55ca5d('0x202'));}function _0x536a59(_0x522aa7,_0xe73ede){var _0x385086=_0x5792fb;for(var _0x46ea12=0x0;_0x46ea12<_0xe73ede[_0x385086('0x525')];_0x46ea12++){var _0xd75e82=_0xe73ede[_0x46ea12];_0xd75e82[_0x385086('0x156')]=_0xd75e82[_0x385086('0x156')]||!0x1,_0xd75e82[_0x385086('0xbb2')]=!0x0,_0x385086('0x832')in _0xd75e82&&(_0xd75e82['writable']=!0x0),Object[_0x385086('0xa95')](_0x522aa7,_0xd75e82[_0x385086('0x1192')],_0xd75e82);}}function _0x52e48a(_0x36ff01,_0x52f93e,_0x3ba9aa){var _0x4a5386=_0x5792fb;return _0x52f93e&&_0x536a59(_0x36ff01[_0x4a5386('0x98c')],_0x52f93e),_0x3ba9aa&&_0x536a59(_0x36ff01,_0x3ba9aa),_0x36ff01;}function _0x4a311f(_0x527a7a){return function(){var _0xf25db4=_0x3ab6,_0x2d4613,_0x296850=_0x57524a(_0x527a7a);if(_0x47f394()){var _0x492e0d=_0x57524a(this)[_0xf25db4('0x3c6')];_0x2d4613=Reflect['construct'](_0x296850,arguments,_0x492e0d);}else _0x2d4613=_0x296850[_0xf25db4('0x1036')](this,arguments);return _0x5c56c5(this,_0x2d4613);};}function _0x5c56c5(_0x27b16a,_0x42dd6c){var _0x4cb7f3=_0x5792fb;return!_0x42dd6c||'object'!==_0x4b5fa0(_0x42dd6c)&&_0x4cb7f3('0xae9')!=typeof _0x42dd6c?function(_0x233acd){var _0x1d4196=_0x4cb7f3;if(void 0x0===_0x233acd)throw new ReferenceError(_0x1d4196('0x2e9'));return _0x233acd;}(_0x27b16a):_0x42dd6c;}function _0x47f394(){var _0x164dda=_0x5792fb;if(_0x164dda('0x56')==typeof Reflect||!Reflect[_0x164dda('0x6ea')])return!0x1;if(Reflect[_0x164dda('0x6ea')][_0x164dda('0x16e')])return!0x1;if(_0x164dda('0xae9')==typeof Proxy)return!0x0;try{return Date[_0x164dda('0x98c')][_0x164dda('0x537')][_0x164dda('0x4b0')](Reflect['construct'](Date,[],function(){})),!0x0;}catch(_0x55305e){return!0x1;}}function _0x57524a(_0x2e3399){var _0x500987=_0x5792fb;return(_0x57524a=Object[_0x500987('0x6c2')]?Object['getPrototypeOf']:function(_0x40498b){var _0x29f812=_0x500987;return _0x40498b[_0x29f812('0x11e6')]||Object['getPrototypeOf'](_0x40498b);})(_0x2e3399);}function _0x33a087(_0x112dbe,_0x311b0f){var _0xb7c110=_0x5792fb;if(_0xb7c110('0xae9')!=typeof _0x311b0f&&null!==_0x311b0f)throw new TypeError(_0xb7c110('0x409'));_0x112dbe[_0xb7c110('0x98c')]=Object['create'](_0x311b0f&&_0x311b0f[_0xb7c110('0x98c')],{'constructor':{'value':_0x112dbe,'writable':!0x0,'configurable':!0x0}}),_0x311b0f&&_0x1a1ac2(_0x112dbe,_0x311b0f);}function _0x1a1ac2(_0x2e741a,_0x1d0e52){var _0x31045c=_0x5792fb;return(_0x1a1ac2=Object[_0x31045c('0x6c2')]||function(_0x2c9750,_0x123d6b){var _0x278a02=_0x31045c;return _0x2c9750[_0x278a02('0x11e6')]=_0x123d6b,_0x2c9750;})(_0x2e741a,_0x1d0e52);}var _0x4e1cfc=function(_0x2d1ce2){var _0x414140=_0x5792fb;_0x33a087(_0x30195c,_0x2d1ce2);var _0x21d3c4=_0x4a311f(_0x30195c);function _0x30195c(){var _0x17e8cf=_0x3ab6;return _0x3905db(this,_0x30195c),_0x21d3c4[_0x17e8cf('0x1036')](this,arguments);}return _0x52e48a(_0x30195c,[{'key':_0x414140('0x1190'),'value':function(){var _0x555c5b=_0x414140;return'Admin'!==this[_0x555c5b('0x597')][_0x555c5b('0x9de')]&&_0x555c5b('0x11a9')!==this[_0x555c5b('0x597')]['user_level'];}}]),_0x30195c;}(_0x3c5d82[_0x5792fb('0x544')]),_0x2dadde=function(_0x3bef82){var _0x25f976=_0x5792fb;_0x33a087(_0x30daa1,_0x3bef82);var _0x5d6cce=_0x4a311f(_0x30daa1);function _0x30daa1(_0x2c8418,_0x57035d,_0x1cd6f6,_0x4eb80f){var _0x53aebb=_0x3ab6,_0x34debb;return _0x3905db(this,_0x30daa1),(_0x34debb=_0x5d6cce[_0x53aebb('0x4b0')](this,_0x2c8418,_0x57035d,_0x1cd6f6,_0x4eb80f))[_0x53aebb('0x428')]={},_0x34debb[_0x53aebb('0xdc3')]={},_0x34debb['tableFields']={},_0x34debb['formOnlyFields']={},_0x34debb;}return _0x52e48a(_0x30daa1,[{'key':'isSubProfileTable','value':function(){var _0x259772=_0x3ab6;return'Admin'!==this['user'][_0x259772('0x9de')]&&'Restricted\x20Admin'!==this[_0x259772('0x597')][_0x259772('0x9de')];}},{'key':_0x25f976('0xf85'),'value':function(_0x1f7c42){var _0x30f711=_0x25f976;for(var _0x2c8830,_0x56aeb4=0x0;_0x56aeb4<_0x1f7c42[_0x30f711('0x525')];_0x56aeb4++)_0x2c8830=_0x1f7c42[_0x56aeb4],this['fieldNameMap'][_0x2c8830[_0x30f711('0x263')]]=_0x2c8830,_0x30f711('0x987')===_0x2c8830[_0x30f711('0x55c')]?this[_0x30f711('0xdc3')][_0x2c8830[_0x30f711('0x263')]]=_0x2c8830:_0x30f711('0xfdf')===_0x2c8830[_0x30f711('0x55c')]||_0x30f711('0x5ac')===_0x2c8830[_0x30f711('0x55c')]?this[_0x30f711('0xe7e')][_0x2c8830['name']]=_0x2c8830:this[_0x30f711('0x33f')][_0x2c8830['name']]=_0x2c8830;}},{'key':_0x25f976('0x1122'),'value':function(){var _0x40e518=_0x25f976,_0x126349=this;return{'aoColumnDefs':[{'fnRender':function(_0x37f367,_0x20397b){var _0x18f554=_0x3ab6;return _0x126349[_0x18f554('0x282')](_0x37f367,_0x20397b,0x1);},'aTargets':[0x1]},{'fnRender':_0x126349[_0x40e518('0xa4')],'aTargets':[_0x126349[_0x40e518('0x315')]()['length']]}]};}},{'key':'preProcessRemoteTableData','value':function(_0x2f0ba1,_0x2ae765,_0x5703df){var _0x83b3f6=_0x25f976;if(0x1===_0x5703df)return _0x83b3f6('0x551')['replace'](_0x83b3f6('0xe4e'),_0x2ae765);return _0x2ae765;}},{'key':_0x25f976('0xf42'),'value':function(){return'';}},{'key':_0x25f976('0xdad'),'value':function(){var _0x4360da=_0x25f976;return['id',_0x4360da('0xa40'),_0x4360da('0xcce'),_0x4360da('0x910'),'last_name',_0x4360da('0x79d'),_0x4360da('0x397')];}},{'key':'getDataMapping','value':function(){var _0x24380a=_0x25f976;for(var _0x3d5939=this[_0x24380a('0xdad')](),_0x3eaa79=[],_0xe978f7=0x0;_0xe978f7<_0x3d5939[_0x24380a('0x525')];_0xe978f7++)void 0x0!==this[_0x24380a('0xdc3')][_0x3d5939[_0xe978f7]]&&null!==this[_0x24380a('0xdc3')][_0x3d5939[_0xe978f7]]||void 0x0!==this[_0x24380a('0x33f')][_0x3d5939[_0xe978f7]]&&null!==this[_0x24380a('0x33f')][_0x3d5939[_0xe978f7]]||_0x3eaa79[_0x24380a('0x8f8')](_0x3d5939[_0xe978f7]);return _0x3eaa79;}},{'key':'getHeaders','value':function(){var _0x4305f1=_0x25f976;for(var _0x3499ee=this[_0x4305f1('0xdad')](),_0x30ddc1=[{'sTitle':'ID','bVisible':!0x1},{'sTitle':'','bSortable':!0x1}],_0x1d7203='',_0x590702=0x0;_0x590702<_0x3499ee[_0x4305f1('0x525')];_0x590702++)void 0x0!==this[_0x4305f1('0xdc3')][_0x3499ee[_0x590702]]&&null!==this[_0x4305f1('0xdc3')][_0x3499ee[_0x590702]]||void 0x0!==this[_0x4305f1('0x33f')][_0x3499ee[_0x590702]]&&null!==this['formOnlyFields'][_0x3499ee[_0x590702]]||void 0x0!==this[_0x4305f1('0x428')][_0x3499ee[_0x590702]]&&null!==this['fieldNameMap'][_0x3499ee[_0x590702]]&&(null==(_0x1d7203=this[_0x4305f1('0x428')][_0x3499ee[_0x590702]][_0x4305f1('0xccd')])||''===_0x1d7203?_0x30ddc1[_0x4305f1('0x8f8')]({'sTitle':_0x1d7203}):'gender'===_0x3499ee[_0x590702]?_0x30ddc1['push']({'sTitle':_0x1d7203,'translate':!0x0}):_0x30ddc1[_0x4305f1('0x8f8')]({'sTitle':_0x1d7203}));return _0x30ddc1;}},{'key':_0x25f976('0x5f6'),'value':function(){var _0x35f369=_0x25f976;for(var _0xff3646=this[_0x35f369('0x315')](),_0x3c58ee=this[_0x35f369('0x5d2')](),_0x47ca55=[],_0x188062=0x1;_0x188062<_0xff3646['length'];_0x188062++)_0x47ca55[_0x35f369('0x8f8')]({'title':_0x3c58ee[_0x188062][_0x35f369('0x10a3')],'dataIndex':_0xff3646[_0x188062],'sorter':!0x0}),_0x35f369('0xa40')===_0xff3646[_0x188062]&&(_0x47ca55[_0x188062-0x1][_0x35f369('0x80f')]=function(_0x445957,_0x598ee9){var _0x23d28a=_0x35f369;return _0x2d096f[_0x23d28a('0x544')][_0x23d28a('0xd0f')](_0x566dd6['Avatar'],{'src':_0x445957});});return _0x47ca55;}},{'key':_0x25f976('0xc86'),'value':function(_0x45c2f7){var _0x487ffc=_0x25f976;this['tableContainer'][_0x487ffc('0x970')][_0x487ffc('0xc81')](_0x45c2f7);}},{'key':'getTableChildComponents','value':function(){var _0x2def23=_0x25f976;return _0x2d096f[_0x2def23('0x544')][_0x2def23('0xd0f')](_0x1b07e0[_0x2def23('0x544')],null);}},{'key':_0x25f976('0xfe3'),'value':function(){var _0x247819=_0x25f976;for(var _0x1e53d7,_0x4cbc0e,_0x5b534c=[],_0x2e1ec9=[['id',{'label':'ID','type':_0x247819('0xdc0'),'validation':''}],[_0x247819('0xcce'),{'label':'Employee\x20Number','type':_0x247819('0x768'),'validation':''}],[_0x247819('0x910'),{'label':'First\x20Name','type':_0x247819('0x768'),'validation':''}],[_0x247819('0xe92'),{'label':_0x247819('0x5ad'),'type':_0x247819('0x768'),'validation':_0x247819('0x1c1')}],[_0x247819('0x1186'),{'label':'Last\x20Name','type':_0x247819('0x768'),'validation':''}],[_0x247819('0xf22'),{'label':_0x247819('0x1057'),'type':_0x247819('0x1137'),'remote-source':['Nationality','id','name']}],[_0x247819('0x11c2'),{'label':_0x247819('0xca5'),'type':_0x247819('0x65d'),'validation':''}],[_0x247819('0xaad'),{'label':_0x247819('0x2e1'),'type':'select','source':[['Male',_0x247819('0x389')],['Female','Female'],['Other','Other']]}],[_0x247819('0x11ca'),{'label':_0x247819('0xe9c'),'type':_0x247819('0x8ff'),'source':[['Married',_0x247819('0x974')],[_0x247819('0xda5'),_0x247819('0xda5')],['Divorced',_0x247819('0xe29')],[_0x247819('0xd5c'),_0x247819('0xd5c')],['Other',_0x247819('0x4f5')]]}],[_0x247819('0x989'),{'label':_0x247819('0xb9b'),'type':_0x247819('0x1137'),'allow-null':!0x0,'remote-source':[_0x247819('0xb9b'),'id','name']}],[_0x247819('0xf04'),{'label':_0x247819('0x4ae'),'type':_0x247819('0x1137'),'allow-null':!0x0,'remote-source':[_0x247819('0x117b'),'id',_0x247819('0x263')]}],['ssn_num',{'label':_0x247819('0xeac'),'type':_0x247819('0x768'),'validation':_0x247819('0x1c1')}],[_0x247819('0x40c'),{'label':_0x247819('0x7a6'),'type':_0x247819('0x768'),'validation':_0x247819('0x1c1')}],[_0x247819('0x64e'),{'label':_0x247819('0x104c'),'type':'text','validation':_0x247819('0x1c1')}],[_0x247819('0xe71'),{'label':'Driving\x20License\x20No','type':_0x247819('0x768'),'validation':_0x247819('0x1c1')}],[_0x247819('0x3e6'),{'label':_0x247819('0x9ea'),'type':_0x247819('0x1137'),'remote-source':[_0x247819('0x2a'),'id',_0x247819('0x263')]}],[_0x247819('0x79d'),{'label':_0x247819('0x11b9'),'type':_0x247819('0x1137'),'remote-source':[_0x247819('0x2f6'),'id','title']}],[_0x247819('0x2a5'),{'label':_0x247819('0x393'),'type':_0x247819('0x1137'),'remote-source':['JobTitle','id',_0x247819('0x263')]}],['pay_grade',{'label':_0x247819('0x194'),'type':_0x247819('0x1137'),'allow-null':!0x0,'remote-source':[_0x247819('0x396'),'id',_0x247819('0x263')]}],[_0x247819('0xe60'),{'label':_0x247819('0x783'),'type':'date','validation':''}],[_0x247819('0x1157'),{'label':_0x247819('0x117'),'type':'date','validation':_0x247819('0x1c1')}],[_0x247819('0x113f'),{'label':_0x247819('0xb01'),'type':_0x247819('0x65d'),'validation':_0x247819('0x1c1')}],[_0x247819('0x57e'),{'label':_0x247819('0xb77'),'type':_0x247819('0x768'),'validation':_0x247819('0x1c1')}],[_0x247819('0x112c'),{'label':_0x247819('0x724'),'type':_0x247819('0x768'),'validation':_0x247819('0x1c1')}],[_0x247819('0x39f'),{'label':_0x247819('0x98d'),'type':'text','validation':'none'}],[_0x247819('0x338'),{'label':_0x247819('0xb41'),'type':_0x247819('0x768'),'validation':_0x247819('0x1c1')}],[_0x247819('0x96b'),{'label':_0x247819('0x10f5'),'type':'select2','remote-source':[_0x247819('0x10f5'),_0x247819('0xb5c'),_0x247819('0x263')]}],['province',{'label':_0x247819('0xf0c'),'type':_0x247819('0x1137'),'allow-null':!0x0,'remote-source':[_0x247819('0x688'),'id',_0x247819('0x263')]}],['postal_code',{'label':'Postal/Zip\x20Code','type':_0x247819('0x768'),'validation':_0x247819('0x1c1')}],[_0x247819('0x5da'),{'label':_0x247819('0x565'),'type':'text','validation':_0x247819('0x1c1')}],[_0x247819('0x40b'),{'label':_0x247819('0x10b'),'type':_0x247819('0x768'),'validation':_0x247819('0x1c1')}],[_0x247819('0xa19'),{'label':_0x247819('0x21d'),'type':_0x247819('0x768'),'validation':_0x247819('0x1c1')}],[_0x247819('0x9c8'),{'label':'Work\x20Email','type':_0x247819('0x768'),'validation':_0x247819('0x659')}],[_0x247819('0xc22'),{'label':_0x247819('0xd7d'),'type':_0x247819('0x768'),'validation':'emailOrEmpty'}],[_0x247819('0x397'),{'label':_0x247819('0xa99'),'type':_0x247819('0x1137'),'allow-null':!0x0,'remote-source':[_0x247819('0x3e1'),'id',_0x247819('0x2d')]}],['indirect_supervisors',{'label':_0x247819('0x237'),'type':_0x247819('0x256'),'allow-null':!0x0,'remote-source':[_0x247819('0x3e1'),'id',_0x247819('0x2d')]}],[_0x247819('0xe51'),{'label':_0x247819('0x2bb'),'type':_0x247819('0x1137'),'allow-null':!0x0,'null-label':_0x247819('0xa9f'),'remote-source':['Employee','id',_0x247819('0x2d')]}],[_0x247819('0x0'),{'label':_0x247819('0xc25'),'type':_0x247819('0x1137'),'allow-null':!0x0,'null-label':_0x247819('0xa9f'),'remote-source':['Employee','id','first_name+last_name']}],['approver3',{'label':_0x247819('0x10ec'),'type':'select2','allow-null':!0x0,'null-label':'None','remote-source':['Employee','id',_0x247819('0x2d')]}],[_0x247819('0xa46'),{'label':_0x247819('0xfbc'),'type':'datagroup','form':[[_0x247819('0xac4'),{'label':_0x247819('0xc3b'),'type':'textarea','validation':''}]],'html':_0x247819('0x376'),'validation':'none','columns':[{'title':_0x247819('0xc3b'),'dataIndex':_0x247819('0xac4'),'key':_0x247819('0xac4')}],'sort-function':function(_0xe20a73,_0x4c9c3c){var _0x3c1254=_0x247819;return Date[_0x3c1254('0xf01')](_0xe20a73[_0x3c1254('0x65d')])[_0x3c1254('0xa5d')]()0x0&&_0x3452f1['push']({'title':this['gt'](_0x480542('0x4f5')),'description':this['gt'](_0x480542('0x1031')),'fields':this[_0x480542('0x1124')][_0x480542('0xd49')](function(_0x2fdb68){return _0x2fdb68[0x0];})}),this['addActualFieldsForStepModal'](_0x3452f1,_0x2715db);}},{'key':_0x25f976('0xa68'),'value':function(){var _0x3b637d=_0x25f976;return[[_0x3b637d('0x2a5'),{'label':'Job\x20Title','type':_0x3b637d('0x1137'),'allow-null':!0x0,'null-label':'All\x20Job\x20Titles','remote-source':[_0x3b637d('0xa41'),'id',_0x3b637d('0x263')]}],[_0x3b637d('0x79d'),{'label':_0x3b637d('0x11b9'),'type':_0x3b637d('0x1137'),'allow-null':!0x0,'null-label':'All\x20Departments','remote-source':[_0x3b637d('0x2f6'),'id','title']}],[_0x3b637d('0x397'),{'label':_0x3b637d('0xe87'),'type':'select2','allow-null':!0x0,'null-label':'Anyone','remote-source':[_0x3b637d('0x3e1'),'id',_0x3b637d('0x2d')]}]];}},{'key':_0x25f976('0x134'),'value':function(_0x383580){return function(_0x107d13,_0x496041){var _0x28f130=_0x3ab6;return _0x2d096f['default']['createElement'](_0x566dd6[_0x28f130('0x3ff')],{'size':_0x28f130('0x1e8')},_0x2d096f[_0x28f130('0x544')][_0x28f130('0xd0f')](_0x566dd6[_0x28f130('0x765')],{'color':_0x28f130('0x321'),'onClick':function(){var _0x4d4dd9=_0x28f130;return modJs[_0x4d4dd9('0x7e6')](_0x496041['id']);},'style':{'cursor':_0x28f130('0x184')}},_0x2d096f[_0x28f130('0x544')][_0x28f130('0xd0f')](_0x5a0d00[_0x28f130('0x9fd')],null),'\x20'[_0x28f130('0x3cc')](_0x383580['gt'](_0x28f130('0xf36')))),_0x383580[_0x28f130('0x380')]('save')&&_0x383580[_0x28f130('0x4b1')]&&_0x2d096f[_0x28f130('0x544')]['createElement'](_0x566dd6[_0x28f130('0x765')],{'color':_0x28f130('0xfd3'),'onClick':function(){var _0x4c9932=_0x28f130;return modJs[_0x4c9932('0x165')](_0x496041['id']);},'style':{'cursor':_0x28f130('0x184')}},_0x2d096f[_0x28f130('0x544')][_0x28f130('0xd0f')](_0x5a0d00[_0x28f130('0xea1')],null),'\x20'[_0x28f130('0x3cc')](_0x383580['gt']('Edit'))),_0x383580[_0x28f130('0x380')](_0x28f130('0x3f4'))&&_0x2d096f[_0x28f130('0x544')][_0x28f130('0xd0f')](_0x566dd6[_0x28f130('0x765')],{'color':_0x28f130('0x1c5'),'onClick':function(){var _0x3adef2=_0x28f130;return modJs[_0x3adef2('0x867')](_0x496041['id']);},'style':{'cursor':_0x28f130('0x184')}},_0x2d096f[_0x28f130('0x544')]['createElement'](_0x5a0d00['MonitorOutlined'],null),'\x20'[_0x28f130('0x3cc')](_0x383580['gt'](_0x28f130('0xde0')))),_0x383580[_0x28f130('0x380')](_0x28f130('0x506'))&&_0x383580[_0x28f130('0xe70')]&&_0x2d096f[_0x28f130('0x544')][_0x28f130('0xd0f')](_0x566dd6['Tag'],{'color':'volcano','onClick':function(){var _0x5a66a7=_0x28f130;return modJs[_0x5a66a7('0x1dc')](_0x496041['id']);},'style':{'cursor':_0x28f130('0x184')}},_0x2d096f[_0x28f130('0x544')][_0x28f130('0xd0f')](_0x5a0d00['DeleteOutlined'],null),'\x20'[_0x28f130('0x3cc')](_0x383580['gt'](_0x28f130('0xde4')))),_0x383580[_0x28f130('0x380')](_0x28f130('0xc68'))&&_0x2d096f[_0x28f130('0x544')][_0x28f130('0xd0f')](_0x566dd6[_0x28f130('0x765')],{'color':'cyan','onClick':function(){var _0x251cce=_0x28f130;return modJs[_0x251cce('0x15a')](_0x496041['id']);},'style':{'cursor':_0x28f130('0x184')}},_0x2d096f[_0x28f130('0x544')][_0x28f130('0xd0f')](_0x5a0d00[_0x28f130('0x48b')],null),'\x20'['concat'](_0x383580['gt'](_0x28f130('0x1197')))));};}},{'key':_0x25f976('0xd6b'),'value':function(_0x3bf04b){var _0x392996=_0x25f976,_0x5958fc=_0x392996('0x653');!0x1===this[_0x392996('0xe70')]&&(_0x5958fc='');var _0x57c29b=_0x392996('0x774')[_0x392996('0x3cc')](_0x5958fc,_0x392996('0x7e1'));return _0x57c29b=(_0x57c29b=_0x57c29b[_0x392996('0x166')](/_id_/g,_0x3bf04b))['replace'](/_BASE_/g,this[_0x392996('0xed3')]);}},{'key':'getHelpLink','value':function(){return'https://thilinah.gitbooks.io/icehrm-guide/content/employee-information-setup.html';}},{'key':'saveSuccessItemCallback','value':function(_0x2dc580){var _0x14bd33=_0x25f976;this[_0x14bd33('0x11a3')]=_0x2dc580,null===this['currentId']&&$('#createUserModel')[_0x14bd33('0x11ad')](_0x14bd33('0x41b'));}},{'key':_0x25f976('0x7ee'),'value':function(){var _0x473d90=_0x25f976;$(_0x473d90('0xd68'))[_0x473d90('0x11ad')](_0x473d90('0x9c2'));}},{'key':_0x25f976('0xff2'),'value':function(){var _0x28c751=_0x25f976,_0x362ae2={};_0x362ae2[_0x28c751('0x55e')]=this[_0x28c751('0x11a3')]['id'],_0x362ae2[_0x28c751('0x9de')]=_0x28c751('0x3e1'),_0x362ae2['email']=this[_0x28c751('0x11a3')][_0x28c751('0x9c8')],_0x362ae2['username']=this[_0x28c751('0x11a3')][_0x28c751('0x9c8')][_0x28c751('0x541')]('@')[0x0],top[_0x28c751('0x54f')]['href']=this['getCustomUrl'](_0x28c751('0xf2c')[_0x28c751('0x3cc')](Base64[_0x28c751('0x2f3')](JSON[_0x28c751('0x591')](_0x362ae2))));}},{'key':'deleteEmployee','value':function(_0x380d17){var _0x5a46d6=_0x25f976;if(confirm(_0x5a46d6('0x8e0'))){var _0x2cce9c=[];_0x2cce9c[_0x5a46d6('0x234')]=[],_0x2cce9c[_0x5a46d6('0xf53')]=_0x5a46d6('0xcd0'),_0x2cce9c[_0x5a46d6('0xb7f')]='deleteEmployeeFailCallback',this['customAction'](_0x5a46d6('0x161'),'admin=employees',JSON[_0x5a46d6('0x591')]({'id':_0x380d17}),_0x2cce9c);}}},{'key':'deleteEmployeeSuccessCallback','value':function(_0x4809a6){var _0x22c628=_0x25f976;this[_0x22c628('0xb5d')](_0x22c628('0x8c3'),_0x22c628('0x952')),this[_0x22c628('0x33')]([]);}},{'key':_0x25f976('0x61e'),'value':function(_0x366296){var _0x79f61d=_0x25f976;this[_0x79f61d('0xb5d')](_0x79f61d('0xc53'),_0x366296);}},{'key':_0x25f976('0x1dc'),'value':function(_0xa09375){var _0x22c66b=_0x25f976;if(confirm(_0x22c66b('0x135'))){var _0x4cd1e6={};_0x4cd1e6['id']=_0xa09375;var _0x1bb30c=JSON[_0x22c66b('0x591')](_0x4cd1e6),_0x2119c9=[];_0x2119c9['callBackData']=[],_0x2119c9[_0x22c66b('0xf53')]=_0x22c66b('0x873'),_0x2119c9[_0x22c66b('0xb7f')]=_0x22c66b('0xc20'),this[_0x22c66b('0x960')](_0x22c66b('0x1dc'),_0x22c66b('0xca4'),_0x1bb30c,_0x2119c9);}}},{'key':_0x25f976('0x873'),'value':function(_0x35d4b7){var _0x28cf1a=_0x25f976;this[_0x28cf1a('0xb5d')](_0x28cf1a('0xfce'),_0x28cf1a('0x5e1')),this['get']([]);}},{'key':'terminateEmployeeFailCallback','value':function(_0x533ecf){var _0x20ece8=_0x25f976;this[_0x20ece8('0xb5d')](_0x20ece8('0x3ad'),_0x533ecf);}},{'key':_0x25f976('0x6e1'),'value':function(_0x13d996){var _0x2890fe=_0x25f976;if(confirm('Are\x20you\x20sure\x20you\x20want\x20to\x20re-activate\x20this\x20employee\x20contract?')){var _0x10b539={};_0x10b539['id']=_0x13d996;var _0x207b9c=JSON[_0x2890fe('0x591')](_0x10b539),_0x40cf14=[];_0x40cf14[_0x2890fe('0x234')]=[],_0x40cf14['callBackSuccess']=_0x2890fe('0xc28'),_0x40cf14[_0x2890fe('0xb7f')]='activateEmployeeFailCallback',this[_0x2890fe('0x960')]('activateEmployee',_0x2890fe('0xca4'),_0x207b9c,_0x40cf14);}}},{'key':_0x25f976('0xc28'),'value':function(_0x212809){var _0x412c82=_0x25f976;this[_0x412c82('0xb5d')](_0x412c82('0xfce'),_0x412c82('0xc72')),this[_0x412c82('0x33')]([]);}},{'key':_0x25f976('0xc9a'),'value':function(_0x53af80){var _0x5828a4=_0x25f976;this['showMessage'](_0x5828a4('0x136'),_0x53af80);}},{'key':'view','value':function(_0x48e3f8){var _0x2a71fe=_0x25f976;this[_0x2a71fe('0xd5e')]=_0x48e3f8;var _0x48d2fa={'id':_0x48e3f8,'map':JSON[_0x2a71fe('0x591')](this['getSourceMapping']())},_0x2fcc2d=JSON[_0x2a71fe('0x591')](_0x48d2fa),_0x44ab30=[];_0x44ab30[_0x2a71fe('0x234')]=[],_0x44ab30['callBackSuccess']='renderEmployee',_0x44ab30['callBackFail']=_0x2a71fe('0xa96'),this[_0x2a71fe('0x960')](_0x2a71fe('0x33'),'modules=employees',_0x2fcc2d,_0x44ab30);}},{'key':_0x25f976('0xa96'),'value':function(_0x5969f2){var _0x3e3f12=_0x25f976;this[_0x3e3f12('0xb5d')](_0x3e3f12('0xb84'),_0x3e3f12('0x10ca'));}},{'key':_0x25f976('0xd5f'),'value':function(_0x30dbac){var _0x31d04e=_0x25f976,_0x38dce3={'id':_0x30dbac},_0x3d3b3e=JSON[_0x31d04e('0x591')](_0x38dce3),_0x4fc8aa=[];_0x4fc8aa[_0x31d04e('0x234')]=[],_0x4fc8aa['callBackSuccess']=_0x31d04e('0x5c9'),_0x4fc8aa[_0x31d04e('0xb7f')]=_0x31d04e('0x5c9'),this[_0x31d04e('0x960')](_0x31d04e('0xd5f'),'modules=employees',_0x3d3b3e,_0x4fc8aa);}},{'key':_0x25f976('0x5c9'),'value':function(_0x185996){}}]),_0x30daa1;}(_0x3c5d82[_0x5792fb('0x544')]),_0x502e63=function(_0x4ced7b){var _0xf2246e=_0x5792fb;_0x33a087(_0x162524,_0x4ced7b);var _0x2defaf=_0x4a311f(_0x162524);function _0x162524(){var _0xa06818=_0x3ab6;return _0x3905db(this,_0x162524),_0x2defaf[_0xa06818('0x1036')](this,arguments);}return _0x52e48a(_0x162524,[{'key':'getDataMapping','value':function(){var _0x136958=_0x3ab6;return['id',_0x136958('0xcce'),_0x136958('0x910'),_0x136958('0x1186'),_0x136958('0x40b'),'department',_0x136958('0xaad'),'supervisor'];}},{'key':_0xf2246e('0x5d2'),'value':function(){var _0x504e16=_0xf2246e;return[{'sTitle':'ID'},{'sTitle':'','bSortable':!0x1},{'sTitle':'Employee\x20Number'},{'sTitle':_0x504e16('0xd08')},{'sTitle':_0x504e16('0x1cb')},{'sTitle':'Mobile'},{'sTitle':_0x504e16('0x11b9')},{'sTitle':_0x504e16('0x2e1')},{'sTitle':_0x504e16('0xe87')}];}},{'key':_0xf2246e('0x5f6'),'value':function(){var _0x10d4c1=_0xf2246e;return[{'title':_0x10d4c1('0x1e4'),'dataIndex':'employee_id','sorter':!0x0},{'title':_0x10d4c1('0xd08'),'dataIndex':'first_name'},{'title':_0x10d4c1('0x1cb'),'dataIndex':_0x10d4c1('0x1186')},{'title':_0x10d4c1('0x11b9'),'dataIndex':_0x10d4c1('0x79d')},{'title':'Supervisor','dataIndex':_0x10d4c1('0x397')}];}},{'key':_0xf2246e('0xa68'),'value':function(){var _0x10258e=_0xf2246e;return[[_0x10258e('0x2a5'),{'label':_0x10258e('0x393'),'type':_0x10258e('0x1137'),'allow-null':!0x0,'null-label':'All\x20Job\x20Titles','remote-source':[_0x10258e('0xa41'),'id',_0x10258e('0x263')]}],[_0x10258e('0x79d'),{'label':_0x10258e('0x11b9'),'type':_0x10258e('0x1137'),'allow-null':!0x0,'null-label':'All\x20Departments','remote-source':[_0x10258e('0x2f6'),'id',_0x10258e('0xba3')]}],[_0x10258e('0x397'),{'label':_0x10258e('0xe87'),'type':_0x10258e('0x1137'),'allow-null':!0x0,'null-label':'Anyone','remote-source':[_0x10258e('0x3e1'),'id',_0x10258e('0x2d')]}]];}},{'key':_0xf2246e('0xd6b'),'value':function(_0x8d083d){var _0x381ae3=_0xf2246e,_0x3b9850='\x0a\x0a\x0a\x0a';return _0x3b9850=(_0x3b9850=_0x3b9850[_0x381ae3('0x166')](/_id_/g,_0x8d083d))[_0x381ae3('0x166')](/_BASE_/g,this['baseUrl']);}},{'key':_0xf2246e('0xc00'),'value':function(_0x52ab73){var _0x4cb5dc=_0xf2246e,_0x395dbc={'t':_0x4cb5dc('0x8df'),'sa':_0x4cb5dc('0x966'),'mod':_0x4cb5dc('0xca4')};_0x395dbc[_0x4cb5dc('0x1089')]=JSON[_0x4cb5dc('0x591')]({'id':_0x52ab73});var _0x5c3270=modJs['getCustomActionUrl']('ca',_0x395dbc);window[_0x4cb5dc('0xcbd')](_0x5c3270,_0x4cb5dc('0x4da'));}},{'key':_0xf2246e('0x134'),'value':function(_0xe7a501){return function(_0x7cb33,_0x4825a2){var _0x115a5e=_0x3ab6;return _0x2d096f[_0x115a5e('0x544')][_0x115a5e('0xd0f')](_0x566dd6[_0x115a5e('0x3ff')],{'size':'middle'},_0x2d096f[_0x115a5e('0x544')][_0x115a5e('0xd0f')](_0x566dd6[_0x115a5e('0x765')],{'color':'cyan','onClick':function(){return modJs['activateEmployee'](_0x4825a2['id']);},'style':{'cursor':_0x115a5e('0x184')}},_0x2d096f[_0x115a5e('0x544')][_0x115a5e('0xd0f')](_0x5a0d00['UndoOutlined'],null),'\x20'[_0x115a5e('0x3cc')](_0xe7a501['gt']('Activate'))),_0xe7a501[_0x115a5e('0x380')]('delete')&&_0xe7a501['showDelete']&&_0x2d096f[_0x115a5e('0x544')][_0x115a5e('0xd0f')](_0x566dd6['Tag'],{'color':_0x115a5e('0x10eb'),'onClick':function(){return modJs['deleteEmployee'](_0x4825a2['id']);},'style':{'cursor':_0x115a5e('0x184')}},_0x2d096f['default']['createElement'](_0x5a0d00[_0x115a5e('0x11e1')],null),'\x20'[_0x115a5e('0x3cc')](_0xe7a501['gt'](_0x115a5e('0xf15')))));};}}]),_0x162524;}(_0x2dadde),_0x666568=function(_0x396c40){var _0x7eb4=_0x5792fb;_0x33a087(_0x488903,_0x396c40);var _0x1b0bfe=_0x4a311f(_0x488903);function _0x488903(){var _0x4b4226=_0x3ab6;return _0x3905db(this,_0x488903),_0x1b0bfe[_0x4b4226('0x1036')](this,arguments);}return _0x52e48a(_0x488903,[{'key':_0x7eb4('0x315'),'value':function(){var _0x2596c1=_0x7eb4;return['id',_0x2596c1('0xcce'),_0x2596c1('0x910'),_0x2596c1('0x1186'),_0x2596c1('0x9c8'),_0x2596c1('0x79d'),_0x2596c1('0xaad'),_0x2596c1('0x397')];}},{'key':'getHeaders','value':function(){var _0x2670d0=_0x7eb4;return[{'sTitle':'ID'},{'sTitle':_0x2670d0('0x1e4')},{'sTitle':'First\x20Name'},{'sTitle':_0x2670d0('0x1cb')},{'sTitle':_0x2670d0('0xba0')},{'sTitle':_0x2670d0('0x11b9')},{'sTitle':_0x2670d0('0x2e1')},{'sTitle':_0x2670d0('0xe87')}];}},{'key':_0x7eb4('0x5f6'),'value':function(){var _0x7883b5=_0x7eb4;return[{'title':'Employee\x20Number','dataIndex':_0x7883b5('0xcce'),'sorter':!0x0},{'title':_0x7883b5('0xd08'),'dataIndex':_0x7883b5('0x910')},{'title':'Last\x20Name','dataIndex':_0x7883b5('0x1186')},{'title':_0x7883b5('0x11b9'),'dataIndex':_0x7883b5('0x79d')},{'title':_0x7883b5('0xe87'),'dataIndex':_0x7883b5('0x397')}];}},{'key':'getFormFields','value':function(){var _0xe1452f=_0x7eb4;return[['id',{'label':'ID','type':'hidden','validation':''}],[_0xe1452f('0xcce'),{'label':_0xe1452f('0x1e4'),'type':_0xe1452f('0x768'),'validation':''}],[_0xe1452f('0x910'),{'label':_0xe1452f('0xd08'),'type':_0xe1452f('0x768'),'validation':''}],[_0xe1452f('0xe92'),{'label':_0xe1452f('0x5ad'),'type':_0xe1452f('0x768'),'validation':_0xe1452f('0x1c1')}],['last_name',{'label':_0xe1452f('0x1cb'),'type':_0xe1452f('0x768'),'validation':''}],[_0xe1452f('0xaad'),{'label':_0xe1452f('0x2e1'),'type':_0xe1452f('0x8ff'),'source':[[_0xe1452f('0x389'),_0xe1452f('0x389')],[_0xe1452f('0x2cf'),_0xe1452f('0x2cf')],['Other','Other']]}],[_0xe1452f('0xd5a'),{'label':_0xe1452f('0xeac'),'type':_0xe1452f('0x768'),'validation':_0xe1452f('0x1c1')}],['nic_num',{'label':_0xe1452f('0x7a6'),'type':_0xe1452f('0x768'),'validation':_0xe1452f('0x1c1')}],[_0xe1452f('0x64e'),{'label':_0xe1452f('0x104c'),'type':_0xe1452f('0x768'),'validation':_0xe1452f('0x1c1')}],[_0xe1452f('0xe71'),{'label':_0xe1452f('0x7d9'),'type':'text','validation':_0xe1452f('0x1c1')}],[_0xe1452f('0x79d'),{'label':_0xe1452f('0x11b9'),'type':'select2','remote-source':['CompanyStructure','id',_0xe1452f('0xba3')]}],[_0xe1452f('0x397'),{'label':'Supervisor','type':'select2','allow-null':!0x0,'remote-source':[_0xe1452f('0x3e1'),'id',_0xe1452f('0x2d')]}]];}},{'key':'getFilters','value':function(){var _0x1b87fd=_0x7eb4;return[[_0x1b87fd('0x2a5'),{'label':'Job\x20Title','type':_0x1b87fd('0x1137'),'allow-null':!0x0,'null-label':_0x1b87fd('0x106e'),'remote-source':[_0x1b87fd('0xa41'),'id',_0x1b87fd('0x263')]}],[_0x1b87fd('0x79d'),{'label':_0x1b87fd('0x11b9'),'type':_0x1b87fd('0x1137'),'allow-null':!0x0,'null-label':'All\x20Departments','remote-source':['CompanyStructure','id','title']}],[_0x1b87fd('0x397'),{'label':_0x1b87fd('0xe87'),'type':_0x1b87fd('0x1137'),'allow-null':!0x0,'null-label':_0x1b87fd('0x10c4'),'remote-source':[_0x1b87fd('0x3e1'),'id',_0x1b87fd('0x2d')]}]];}},{'key':'getActionButtonsHtml','value':function(_0x4e8445){var _0x30647d=_0x7eb4,_0xef765a=_0x30647d('0xa0');return _0xef765a=(_0xef765a=_0xef765a['replace'](/_id_/g,_0x4e8445))['replace'](/_BASE_/g,this[_0x30647d('0xed3')]);}},{'key':'download','value':function(_0x6d6b44){var _0x4d3f48=_0x7eb4,_0x4a576b={'t':_0x4d3f48('0x8df'),'sa':_0x4d3f48('0x966'),'mod':_0x4d3f48('0xca4')};_0x4a576b[_0x4d3f48('0x1089')]=JSON[_0x4d3f48('0x591')]({'id':_0x6d6b44});var _0x39a4b1=modJs[_0x4d3f48('0x9c6')]('ca',_0x4a576b);window[_0x4d3f48('0xcbd')](_0x39a4b1,_0x4d3f48('0x4da'));}},{'key':'getTableActionButtonJsx','value':function(_0x21149b){return function(_0x294dc1,_0x20b3cb){var _0x1323ba=_0x3ab6;return _0x2d096f[_0x1323ba('0x544')][_0x1323ba('0xd0f')](_0x566dd6[_0x1323ba('0x3ff')],{'size':_0x1323ba('0x1e8')},_0x21149b[_0x1323ba('0x380')]('element')&&_0x2d096f[_0x1323ba('0x544')][_0x1323ba('0xd0f')](_0x566dd6[_0x1323ba('0x765')],{'color':_0x1323ba('0x1c5'),'onClick':function(){var _0x390fe6=_0x1323ba;return modJs[_0x390fe6('0x867')](_0x20b3cb['id']);},'style':{'cursor':_0x1323ba('0x184')}},_0x2d096f[_0x1323ba('0x544')][_0x1323ba('0xd0f')](_0x5a0d00['MonitorOutlined'],null),'\x20'[_0x1323ba('0x3cc')](_0x21149b['gt'](_0x1323ba('0xde0')))),_0x2d096f[_0x1323ba('0x544')][_0x1323ba('0xd0f')](_0x566dd6['Tag'],{'color':_0x1323ba('0x3d7'),'onClick':function(){var _0x553184=_0x1323ba;return modJs[_0x553184('0xc00')](_0x20b3cb['id']);},'style':{'cursor':'pointer'}},_0x2d096f['default'][_0x1323ba('0xd0f')](_0x5a0d00['CloudDownloadOutlined'],null),'\x20'[_0x1323ba('0x3cc')](_0x21149b['gt'](_0x1323ba('0x4ef')))),_0x21149b[_0x1323ba('0x380')](_0x1323ba('0x506'))&&_0x21149b[_0x1323ba('0xe70')]&&_0x2d096f['default']['createElement'](_0x566dd6['Tag'],{'color':'volcano','onClick':function(){var _0x50af9a=_0x1323ba;return modJs[_0x50af9a('0xdf7')](_0x20b3cb['id']);},'style':{'cursor':_0x1323ba('0x184')}},_0x2d096f[_0x1323ba('0x544')][_0x1323ba('0xd0f')](_0x5a0d00[_0x1323ba('0x11e1')],null),'\x20'['concat'](_0x21149b['gt']('Delete'))));};}}]),_0x488903;}(_0x4e1cfc),_0xcf3ec7=function(_0x5657b7){var _0x23e3e9=_0x5792fb;_0x33a087(_0x2d7bfd,_0x5657b7);var _0x37cc3b=_0x4a311f(_0x2d7bfd);function _0x2d7bfd(){return _0x3905db(this,_0x2d7bfd),_0x37cc3b['apply'](this,arguments);}return _0x52e48a(_0x2d7bfd,[{'key':_0x23e3e9('0x315'),'value':function(){var _0x5e7b26=_0x23e3e9;return['id',_0x5e7b26('0x55e'),_0x5e7b26('0xc1e'),'details'];}},{'key':_0x23e3e9('0x5d2'),'value':function(){var _0x16eb65=_0x23e3e9;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':_0x16eb65('0x3e1')},{'sTitle':_0x16eb65('0xc3d')},{'sTitle':_0x16eb65('0xf10')}];}},{'key':_0x23e3e9('0x5f6'),'value':function(){var _0x3e93c8=_0x23e3e9;return[{'title':_0x3e93c8('0x3e1'),'dataIndex':_0x3e93c8('0x55e'),'sorter':!0x0},{'title':_0x3e93c8('0xc3d'),'dataIndex':_0x3e93c8('0xc1e'),'sorter':!0x0},{'title':_0x3e93c8('0xf10'),'dataIndex':_0x3e93c8('0xddf')}];}},{'key':_0x23e3e9('0xfe3'),'value':function(){var _0x43b743=_0x23e3e9;return[['id',{'label':'ID','type':_0x43b743('0xdc0')}],['employee',{'label':_0x43b743('0x3e1'),'type':_0x43b743('0x1137'),'sort':_0x43b743('0x1c1'),'allow-null':!0x1,'remote-source':[_0x43b743('0x3e1'),'id',_0x43b743('0x2d'),_0x43b743('0xc07')]}],[_0x43b743('0xc1e'),{'label':_0x43b743('0xc3d'),'type':_0x43b743('0x1137'),'allow-null':!0x0,'remote-source':[_0x43b743('0xc3d'),'id','name']}],[_0x43b743('0xddf'),{'label':_0x43b743('0xf10'),'type':_0x43b743('0xa2e'),'validation':''}]];}},{'key':_0x23e3e9('0xa68'),'value':function(){var _0x9a1c00=_0x23e3e9;return[['employee',{'label':_0x9a1c00('0x3e1'),'type':'select2','sort':_0x9a1c00('0x1c1'),'allow-null':!0x1,'remote-source':[_0x9a1c00('0x3e1'),'id',_0x9a1c00('0x2d'),_0x9a1c00('0xc07')]}],[_0x9a1c00('0xc1e'),{'label':_0x9a1c00('0xc3d'),'type':_0x9a1c00('0x1137'),'allow-null':!0x0,'null-label':_0x9a1c00('0x1020'),'remote-source':[_0x9a1c00('0xc3d'),'id',_0x9a1c00('0x263')]}]];}},{'key':_0x23e3e9('0x1190'),'value':function(){var _0x3bc676=_0x23e3e9;return _0x3bc676('0x44')!==this[_0x3bc676('0x597')][_0x3bc676('0x9de')]&&_0x3bc676('0x11a9')!==this[_0x3bc676('0x597')][_0x3bc676('0x9de')];}}]),_0x2d7bfd;}(_0x3c5d82[_0x5792fb('0x544')]),_0x366622=function(_0x3182df){var _0x491599=_0x5792fb;_0x33a087(_0x3ded20,_0x3182df);var _0x1e7c6a=_0x4a311f(_0x3ded20);function _0x3ded20(){var _0x48a8fe=_0x3ab6;return _0x3905db(this,_0x3ded20),_0x1e7c6a[_0x48a8fe('0x1036')](this,arguments);}return _0x52e48a(_0x3ded20,[{'key':_0x491599('0x315'),'value':function(){var _0x4f23b0=_0x491599;return['id',_0x4f23b0('0x55e'),_0x4f23b0('0x273'),_0x4f23b0('0x3dc'),_0x4f23b0('0xb1d'),_0x4f23b0('0x18a')];}},{'key':_0x491599('0x5f6'),'value':function(){var _0x359ba9=_0x491599;return[{'title':_0x359ba9('0x3e1'),'dataIndex':'employee','sorter':!0x0},{'title':_0x359ba9('0xdff'),'dataIndex':_0x359ba9('0x273'),'sorter':!0x0},{'title':_0x359ba9('0x449'),'dataIndex':_0x359ba9('0x3dc'),'sorter':!0x0},{'title':'Start\x20Date','dataIndex':_0x359ba9('0xb1d'),'sorter':!0x0},{'title':_0x359ba9('0xedb'),'dataIndex':_0x359ba9('0x18a'),'sorter':!0x0}];}},{'key':_0x491599('0x5d2'),'value':function(){var _0x195722=_0x491599;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':_0x195722('0x3e1')},{'sTitle':_0x195722('0xdff')},{'sTitle':'Institute'},{'sTitle':_0x195722('0x901')},{'sTitle':_0x195722('0xedb')}];}},{'key':_0x491599('0xfe3'),'value':function(){var _0x3152ae=_0x491599;return[['id',{'label':'ID','type':_0x3152ae('0xdc0')}],[_0x3152ae('0x55e'),{'label':_0x3152ae('0x3e1'),'type':_0x3152ae('0x1137'),'sort':'none','allow-null':!0x1,'remote-source':[_0x3152ae('0x3e1'),'id','first_name+last_name',_0x3152ae('0xc07')]}],[_0x3152ae('0x273'),{'label':_0x3152ae('0xdff'),'type':'select2','allow-null':!0x1,'remote-source':[_0x3152ae('0x94a'),'id',_0x3152ae('0x263')]}],[_0x3152ae('0x3dc'),{'label':_0x3152ae('0x449'),'type':_0x3152ae('0x768'),'validation':''}],[_0x3152ae('0xb1d'),{'label':_0x3152ae('0x901'),'type':'date','validation':_0x3152ae('0x1c1')}],[_0x3152ae('0x18a'),{'label':_0x3152ae('0xedb'),'type':_0x3152ae('0x65d'),'validation':'none'}]];}},{'key':_0x491599('0xa68'),'value':function(){var _0x597cc8=_0x491599;return[[_0x597cc8('0x55e'),{'label':'Employee','type':_0x597cc8('0x1137'),'sort':'none','allow-null':!0x1,'remote-source':[_0x597cc8('0x3e1'),'id',_0x597cc8('0x2d'),_0x597cc8('0xc07')]}],[_0x597cc8('0x273'),{'label':'Qualification','type':'select2','allow-null':!0x0,'null-label':_0x597cc8('0xdbf'),'remote-source':[_0x597cc8('0x94a'),'id',_0x597cc8('0x263')]}]];}},{'key':'isSubProfileTable','value':function(){var _0x10e740=_0x491599;return _0x10e740('0x44')!==this[_0x10e740('0x597')][_0x10e740('0x9de')]&&_0x10e740('0x11a9')!==this['user']['user_level'];}}]),_0x3ded20;}(_0x4e1cfc),_0x2dc276=function(_0x31dd45){var _0x4ed8a9=_0x5792fb;_0x33a087(_0x29184e,_0x31dd45);var _0x41fc27=_0x4a311f(_0x29184e);function _0x29184e(){var _0x2db94b=_0x3ab6;return _0x3905db(this,_0x29184e),_0x41fc27[_0x2db94b('0x1036')](this,arguments);}return _0x52e48a(_0x29184e,[{'key':_0x4ed8a9('0x315'),'value':function(){var _0x402ebe=_0x4ed8a9;return['id',_0x402ebe('0x55e'),_0x402ebe('0xc7b'),_0x402ebe('0x3dc'),_0x402ebe('0xb1d'),_0x402ebe('0x18a')];}},{'key':_0x4ed8a9('0x5d2'),'value':function(){var _0x53a0e6=_0x4ed8a9;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':'Employee'},{'sTitle':_0x53a0e6('0xe44')},{'sTitle':_0x53a0e6('0x449')},{'sTitle':_0x53a0e6('0x2b6')},{'sTitle':_0x53a0e6('0x3bf')}];}},{'key':_0x4ed8a9('0x5f6'),'value':function(){var _0x2688c8=_0x4ed8a9;return[{'title':'Employee','dataIndex':_0x2688c8('0x55e'),'sorter':!0x0},{'title':_0x2688c8('0xe44'),'dataIndex':_0x2688c8('0xc7b'),'sorter':!0x0},{'title':_0x2688c8('0x449'),'dataIndex':_0x2688c8('0x3dc'),'sorter':!0x0},{'title':_0x2688c8('0x2b6'),'dataIndex':_0x2688c8('0xb1d'),'sorter':!0x0},{'title':_0x2688c8('0xcfb'),'dataIndex':_0x2688c8('0x18a'),'sorter':!0x0}];}},{'key':_0x4ed8a9('0xfe3'),'value':function(){var _0x2bbed5=_0x4ed8a9;return[['id',{'label':'ID','type':_0x2bbed5('0xdc0')}],['employee',{'label':_0x2bbed5('0x3e1'),'type':_0x2bbed5('0x1137'),'sort':_0x2bbed5('0x1c1'),'allow-null':!0x1,'remote-source':[_0x2bbed5('0x3e1'),'id',_0x2bbed5('0x2d'),_0x2bbed5('0xc07')]}],[_0x2bbed5('0xc7b'),{'label':'Certification','type':_0x2bbed5('0x1137'),'allow-null':!0x1,'remote-source':[_0x2bbed5('0xe44'),'id',_0x2bbed5('0x263')]}],['institute',{'label':_0x2bbed5('0x449'),'type':_0x2bbed5('0x768'),'validation':''}],[_0x2bbed5('0xb1d'),{'label':_0x2bbed5('0x2b6'),'type':_0x2bbed5('0x65d'),'validation':_0x2bbed5('0x1c1')}],[_0x2bbed5('0x18a'),{'label':_0x2bbed5('0x3bf'),'type':_0x2bbed5('0x65d'),'validation':'none'}]];}},{'key':_0x4ed8a9('0xa68'),'value':function(){var _0x1a8d2c=_0x4ed8a9;return[[_0x1a8d2c('0x55e'),{'label':'Employee','type':'select2','sort':_0x1a8d2c('0x1c1'),'allow-null':!0x1,'remote-source':['Employee','id',_0x1a8d2c('0x2d'),_0x1a8d2c('0xc07')]}],[_0x1a8d2c('0xc7b'),{'label':_0x1a8d2c('0xe44'),'type':_0x1a8d2c('0x1137'),'allow-null':!0x0,'null-label':'All\x20Certifications','remote-source':['Certification','id','name']}]];}},{'key':_0x4ed8a9('0x1190'),'value':function(){var _0x30956b=_0x4ed8a9;return _0x30956b('0x44')!==this['user'][_0x30956b('0x9de')]&&_0x30956b('0x11a9')!==this[_0x30956b('0x597')][_0x30956b('0x9de')];}}]),_0x29184e;}(_0x4e1cfc),_0x5cdad6=function(_0x108341){var _0x2429bb=_0x5792fb;_0x33a087(_0x391855,_0x108341);var _0x33acd8=_0x4a311f(_0x391855);function _0x391855(){var _0x2044b1=_0x3ab6;return _0x3905db(this,_0x391855),_0x33acd8[_0x2044b1('0x1036')](this,arguments);}return _0x52e48a(_0x391855,[{'key':_0x2429bb('0x315'),'value':function(){var _0x57f0ba=_0x2429bb;return['id',_0x57f0ba('0x55e'),_0x57f0ba('0x108b'),'reading',_0x57f0ba('0xb04'),'writing',_0x57f0ba('0x88a')];}},{'key':_0x2429bb('0x5d2'),'value':function(){var _0x54409b=_0x2429bb;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':'Employee'},{'sTitle':_0x54409b('0xb20')},{'sTitle':'Reading'},{'sTitle':_0x54409b('0x833')},{'sTitle':_0x54409b('0xa8c')},{'sTitle':_0x54409b('0xb34')}];}},{'key':_0x2429bb('0x5f6'),'value':function(){var _0x5d8a78=_0x2429bb;return[{'title':_0x5d8a78('0x3e1'),'dataIndex':_0x5d8a78('0x55e'),'sorter':!0x0},{'title':_0x5d8a78('0xb20'),'dataIndex':_0x5d8a78('0x108b'),'sorter':!0x0},{'title':_0x5d8a78('0x107e'),'dataIndex':_0x5d8a78('0xa1c'),'sorter':!0x0},{'title':_0x5d8a78('0x833'),'dataIndex':'speaking','sorter':!0x0},{'title':_0x5d8a78('0xa8c'),'dataIndex':_0x5d8a78('0x11cd'),'sorter':!0x0},{'title':_0x5d8a78('0xb34'),'dataIndex':_0x5d8a78('0x88a'),'sorter':!0x0}];}},{'key':'getFormFields','value':function(){var _0x2176a0=_0x2429bb,_0x5c3bf2=[[_0x2176a0('0x6da'),_0x2176a0('0x6da')],[_0x2176a0('0x681'),_0x2176a0('0x681')],['Professional\x20Working\x20Proficiency',_0x2176a0('0xa82')],[_0x2176a0('0xb1'),_0x2176a0('0xb1')],[_0x2176a0('0xdde'),_0x2176a0('0xdde')]];return[['id',{'label':'ID','type':'hidden'}],[_0x2176a0('0x55e'),{'label':_0x2176a0('0x3e1'),'type':_0x2176a0('0x1137'),'sort':_0x2176a0('0x1c1'),'allow-null':!0x1,'remote-source':[_0x2176a0('0x3e1'),'id',_0x2176a0('0x2d'),'getActiveSubordinateEmployees']}],[_0x2176a0('0x108b'),{'label':'Language','type':_0x2176a0('0x1137'),'allow-null':!0x1,'remote-source':[_0x2176a0('0xb20'),'id',_0x2176a0('0x263')]}],['reading',{'label':_0x2176a0('0x107e'),'type':'select','source':_0x5c3bf2}],['speaking',{'label':_0x2176a0('0x833'),'type':'select','source':_0x5c3bf2}],[_0x2176a0('0x11cd'),{'label':'Writing','type':_0x2176a0('0x8ff'),'source':_0x5c3bf2}],['understanding',{'label':'Listening','type':_0x2176a0('0x8ff'),'source':_0x5c3bf2}]];}},{'key':'getFilters','value':function(){var _0x4354c4=_0x2429bb;return[[_0x4354c4('0x55e'),{'label':_0x4354c4('0x3e1'),'type':'select2','sort':'none','allow-null':!0x1,'remote-source':['Employee','id','first_name+last_name',_0x4354c4('0xc07')]}],['language_id',{'label':_0x4354c4('0xb20'),'type':_0x4354c4('0x1137'),'allow-null':!0x0,'null-label':_0x4354c4('0x704'),'remote-source':['Language','id',_0x4354c4('0x263')]}]];}},{'key':_0x2429bb('0x1190'),'value':function(){var _0x3ba819=_0x2429bb;return _0x3ba819('0x44')!==this[_0x3ba819('0x597')][_0x3ba819('0x9de')]&&_0x3ba819('0x11a9')!==this[_0x3ba819('0x597')][_0x3ba819('0x9de')];}}]),_0x391855;}(_0x4e1cfc),_0x54f903=function(_0x272f27){var _0x124efe=_0x5792fb;_0x33a087(_0x1b0e9a,_0x272f27);var _0x15b80c=_0x4a311f(_0x1b0e9a);function _0x1b0e9a(){var _0x499477=_0x3ab6;return _0x3905db(this,_0x1b0e9a),_0x15b80c[_0x499477('0x1036')](this,arguments);}return _0x52e48a(_0x1b0e9a,[{'key':_0x124efe('0x315'),'value':function(){var _0x629ea0=_0x124efe;return['id','employee',_0x629ea0('0x263'),_0x629ea0('0x10f8'),_0x629ea0('0x1016'),_0x629ea0('0xa7a')];}},{'key':'getHeaders','value':function(){var _0x52414c=_0x124efe;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':'Employee'},{'sTitle':_0x52414c('0x1')},{'sTitle':_0x52414c('0xe6f')},{'sTitle':_0x52414c('0xca5')},{'sTitle':'Id\x20Number'}];}},{'key':'getTableColumns','value':function(){var _0x49fdfa=_0x124efe;return[{'title':_0x49fdfa('0x3e1'),'dataIndex':_0x49fdfa('0x55e'),'sorter':!0x0},{'title':_0x49fdfa('0x1'),'dataIndex':_0x49fdfa('0x263'),'sorter':!0x0},{'title':_0x49fdfa('0xe6f'),'dataIndex':_0x49fdfa('0x10f8'),'sorter':!0x0},{'title':_0x49fdfa('0xca5'),'dataIndex':_0x49fdfa('0x1016'),'sorter':!0x0},{'title':_0x49fdfa('0xed1'),'dataIndex':'id_number'}];}},{'key':'getFormFields','value':function(){var _0x4bfecb=_0x124efe;return[['id',{'label':'ID','type':'hidden'}],[_0x4bfecb('0x55e'),{'label':_0x4bfecb('0x3e1'),'type':_0x4bfecb('0x1137'),'sort':_0x4bfecb('0x1c1'),'allow-null':!0x1,'remote-source':[_0x4bfecb('0x3e1'),'id',_0x4bfecb('0x2d'),_0x4bfecb('0xc07')]}],['name',{'label':'Name','type':'text','validation':''}],['relationship',{'label':_0x4bfecb('0xe6f'),'type':_0x4bfecb('0x8ff'),'source':[[_0x4bfecb('0x500'),_0x4bfecb('0x500')],['Spouse','Spouse'],[_0x4bfecb('0x6dd'),_0x4bfecb('0x6dd')],[_0x4bfecb('0x4f5'),_0x4bfecb('0x4f5')]]}],[_0x4bfecb('0x1016'),{'label':_0x4bfecb('0xca5'),'type':_0x4bfecb('0x65d'),'validation':''}],[_0x4bfecb('0xa7a'),{'label':_0x4bfecb('0xed1'),'type':'text','validation':'none'}]];}},{'key':_0x124efe('0xa68'),'value':function(){var _0x2c0b01=_0x124efe;return[[_0x2c0b01('0x55e'),{'label':_0x2c0b01('0x3e1'),'type':_0x2c0b01('0x1137'),'sort':_0x2c0b01('0x1c1'),'allow-null':!0x1,'remote-source':[_0x2c0b01('0x3e1'),'id','first_name+last_name',_0x2c0b01('0xc07')]}]];}},{'key':_0x124efe('0x1190'),'value':function(){var _0x26bd08=_0x124efe;return _0x26bd08('0x44')!==this['user'][_0x26bd08('0x9de')]&&_0x26bd08('0x11a9')!==this[_0x26bd08('0x597')]['user_level'];}}]),_0x1b0e9a;}(_0x4e1cfc),_0x2e2728=function(_0x1be0a1){var _0x244966=_0x5792fb;_0x33a087(_0x5268ac,_0x1be0a1);var _0x4e1328=_0x4a311f(_0x5268ac);function _0x5268ac(){return _0x3905db(this,_0x5268ac),_0x4e1328['apply'](this,arguments);}return _0x52e48a(_0x5268ac,[{'key':'getDataMapping','value':function(){var _0x518837=_0x3ab6;return['id',_0x518837('0x55e'),_0x518837('0x263'),_0x518837('0x10f8'),_0x518837('0x5da'),'work_phone',_0x518837('0x40b')];}},{'key':_0x244966('0x5d2'),'value':function(){var _0x1c66bb=_0x244966;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':_0x1c66bb('0x3e1')},{'sTitle':_0x1c66bb('0x1')},{'sTitle':_0x1c66bb('0xe6f')},{'sTitle':_0x1c66bb('0x565')},{'sTitle':_0x1c66bb('0x21d')},{'sTitle':_0x1c66bb('0x10b')}];}},{'key':_0x244966('0x5f6'),'value':function(){var _0x19a36c=_0x244966;return[{'title':_0x19a36c('0x3e1'),'dataIndex':_0x19a36c('0x55e'),'sorter':!0x0},{'title':_0x19a36c('0x1'),'dataIndex':_0x19a36c('0x263'),'sorter':!0x0},{'title':'Relationship','dataIndex':_0x19a36c('0x10f8'),'sorter':!0x0},{'title':_0x19a36c('0x565'),'dataIndex':_0x19a36c('0x5da')},{'title':'Work\x20Phone','dataIndex':_0x19a36c('0xa19')},{'title':_0x19a36c('0x10b'),'dataIndex':'mobile_phone'}];}},{'key':_0x244966('0xfe3'),'value':function(){var _0x3c582d=_0x244966;return[['id',{'label':'ID','type':_0x3c582d('0xdc0')}],['employee',{'label':_0x3c582d('0x3e1'),'type':_0x3c582d('0x1137'),'sort':'none','allow-null':!0x1,'remote-source':['Employee','id',_0x3c582d('0x2d'),_0x3c582d('0xc07')]}],[_0x3c582d('0x263'),{'label':'Name','type':_0x3c582d('0x768'),'validation':''}],[_0x3c582d('0x10f8'),{'label':_0x3c582d('0xe6f'),'type':_0x3c582d('0x768'),'validation':_0x3c582d('0x1c1')}],[_0x3c582d('0x5da'),{'label':_0x3c582d('0x565'),'type':_0x3c582d('0x768'),'validation':'none'}],[_0x3c582d('0xa19'),{'label':_0x3c582d('0x21d'),'type':_0x3c582d('0x768'),'validation':'none'}],['mobile_phone',{'label':_0x3c582d('0x10b'),'type':_0x3c582d('0x768'),'validation':_0x3c582d('0x1c1')}]];}},{'key':'getFilters','value':function(){var _0x233c26=_0x244966;return[[_0x233c26('0x55e'),{'label':'Employee','type':'select2','sort':_0x233c26('0x1c1'),'allow-null':!0x1,'remote-source':[_0x233c26('0x3e1'),'id',_0x233c26('0x2d'),_0x233c26('0xc07')]}]];}},{'key':_0x244966('0x1190'),'value':function(){var _0x2914d6=_0x244966;return'Admin'!==this['user'][_0x2914d6('0x9de')]&&_0x2914d6('0x11a9')!==this['user']['user_level'];}}]),_0x5268ac;}(_0x4e1cfc),_0x171eb0=function(_0x281233){var _0x16c1bf=_0x5792fb;_0x33a087(_0x43f1e0,_0x281233);var _0x3208e1=_0x4a311f(_0x43f1e0);function _0x43f1e0(){var _0x504a26=_0x3ab6;return _0x3905db(this,_0x43f1e0),_0x3208e1[_0x504a26('0x1036')](this,arguments);}return _0x52e48a(_0x43f1e0,[{'key':_0x16c1bf('0x315'),'value':function(){var _0x1960ed=_0x16c1bf;return['id','employee',_0x1960ed('0xe40'),_0x1960ed('0x1194'),_0x1960ed('0x61d'),_0x1960ed('0x354'),_0x1960ed('0x11e7'),_0x1960ed('0xddf')];}},{'key':_0x16c1bf('0x5d2'),'value':function(){var _0x38581f=_0x16c1bf;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':'Employee'},{'sTitle':_0x38581f('0xefb'),'sClass':_0x38581f('0x2c8')},{'sTitle':_0x38581f('0x129')},{'sTitle':_0x38581f('0x1163')},{'sTitle':_0x38581f('0x21')},{'sTitle':'Status'},{'sTitle':_0x38581f('0xf10')}];}},{'key':_0x16c1bf('0xfe3'),'value':function(){var _0x3869a2=_0x16c1bf;return[['id',{'label':'ID','type':_0x3869a2('0xdc0')}],[_0x3869a2('0x55e'),{'label':_0x3869a2('0x3e1'),'type':'select2','sort':_0x3869a2('0x1c1'),'allow-null':!0x1,'remote-source':['Employee','id',_0x3869a2('0x2d'),_0x3869a2('0xc07')]}],['document',{'label':_0x3869a2('0xefb'),'type':_0x3869a2('0x1137'),'source':[[_0x3869a2('0x295'),_0x3869a2('0x295')],[_0x3869a2('0xdba'),_0x3869a2('0xdba')]]}],['doc_number',{'label':_0x3869a2('0x129'),'type':_0x3869a2('0x768'),'validation':''}],[_0x3869a2('0x61d'),{'label':_0x3869a2('0x1163'),'type':_0x3869a2('0x65d'),'validation':''}],['expiry',{'label':_0x3869a2('0x21'),'type':_0x3869a2('0x65d'),'validation':''}],['status',{'label':'Status','type':'text','validation':_0x3869a2('0x1c1')}],[_0x3869a2('0xddf'),{'label':_0x3869a2('0xf10'),'type':_0x3869a2('0xa2e'),'validation':_0x3869a2('0x1c1')}]];}},{'key':_0x16c1bf('0xa68'),'value':function(){var _0x363c31=_0x16c1bf;return[[_0x363c31('0x55e'),{'label':_0x363c31('0x3e1'),'type':_0x363c31('0x1137'),'remote-source':[_0x363c31('0x3e1'),'id','first_name+last_name']}]];}},{'key':_0x16c1bf('0x1190'),'value':function(){var _0x5558c8=_0x16c1bf;return _0x5558c8('0x44')!==this[_0x5558c8('0x597')][_0x5558c8('0x9de')]&&_0x5558c8('0x11a9')!==this[_0x5558c8('0x597')]['user_level'];}}]),_0x43f1e0;}(_0x4e1cfc);_0x1db2ba[_0x5792fb('0xddc')]={'EmployeeAdapter':_0x2dadde,'TerminatedEmployeeAdapter':_0x502e63,'ArchivedEmployeeAdapter':_0x666568,'EmployeeSkillAdapter':_0xcf3ec7,'EmployeeEducationAdapter':_0x366622,'EmployeeCertificationAdapter':_0x2dc276,'EmployeeLanguageAdapter':_0x5cdad6,'EmployeeDependentAdapter':_0x54f903,'EmergencyContactAdapter':_0x2e2728,'EmployeeImmigrationAdapter':_0x171eb0};},{'../../../api/AdapterBase':0x39,'../../../api/ReactLegacyModalAdapterBase':0x45,'../../../api/ReactModalAdapterBase':0x46,'../../../api/SubAdapterBase':0x47,'./components/EmployeeProfile':0x17,'@ant-design/icons':_0x404097('0x1e1'),'antd':'antd','react':'react'}],0x1a:[function(_0x1d430b,_0x318257,_0x26c38e){var _0x19118a=_0x404097;'use strict';var _0x43144c=_0x1d430b(_0x19118a('0x358'));window[_0x19118a('0x163')]=_0x43144c[_0x19118a('0x163')];},{'./lib':0x1b}],0x1b:[function(_0x543248,_0x486737,_0x444de3){var _0x38f86e=_0x404097;'use strict';var _0x3f0259;function _0x2414b9(_0x26bd16){var _0x2af56e=_0x3ab6;return(_0x2414b9='function'==typeof Symbol&&_0x2af56e('0x245')==typeof Symbol['iterator']?function(_0x35197c){return typeof _0x35197c;}:function(_0x83710b){var _0x323390=_0x2af56e;return _0x83710b&&_0x323390('0xae9')==typeof Symbol&&_0x83710b[_0x323390('0x3c6')]===Symbol&&_0x83710b!==Symbol[_0x323390('0x98c')]?_0x323390('0x245'):typeof _0x83710b;})(_0x26bd16);}function _0x3df729(_0x334909,_0x64949){var _0x3068e1=_0x3ab6;if(!(_0x334909 instanceof _0x64949))throw new TypeError(_0x3068e1('0x202'));}function _0x316bd4(_0xa5f0b5,_0x1399dc){var _0xcfb79e=_0x3ab6;for(var _0x18464e=0x0;_0x18464e<_0x1399dc[_0xcfb79e('0x525')];_0x18464e++){var _0x1e6ba7=_0x1399dc[_0x18464e];_0x1e6ba7[_0xcfb79e('0x156')]=_0x1e6ba7[_0xcfb79e('0x156')]||!0x1,_0x1e6ba7[_0xcfb79e('0xbb2')]=!0x0,'value'in _0x1e6ba7&&(_0x1e6ba7[_0xcfb79e('0x4db')]=!0x0),Object[_0xcfb79e('0xa95')](_0xa5f0b5,_0x1e6ba7[_0xcfb79e('0x1192')],_0x1e6ba7);}}function _0x3f9457(_0x14823c,_0x4963ee){var _0x3b4654=_0x3ab6;return!_0x4963ee||_0x3b4654('0x21e')!==_0x2414b9(_0x4963ee)&&_0x3b4654('0xae9')!=typeof _0x4963ee?function(_0x3b8a3e){if(void 0x0===_0x3b8a3e)throw new ReferenceError('this\x20hasn\x27t\x20been\x20initialised\x20-\x20super()\x20hasn\x27t\x20been\x20called');return _0x3b8a3e;}(_0x14823c):_0x4963ee;}function _0x478d46(){var _0x11544a=_0x3ab6;if('undefined'==typeof Reflect||!Reflect[_0x11544a('0x6ea')])return!0x1;if(Reflect[_0x11544a('0x6ea')][_0x11544a('0x16e')])return!0x1;if(_0x11544a('0xae9')==typeof Proxy)return!0x0;try{return Date[_0x11544a('0x98c')]['toString'][_0x11544a('0x4b0')](Reflect[_0x11544a('0x6ea')](Date,[],function(){})),!0x0;}catch(_0x1c2468){return!0x1;}}function _0x107e79(_0x599362){var _0x463dbe=_0x3ab6;return(_0x107e79=Object[_0x463dbe('0x6c2')]?Object['getPrototypeOf']:function(_0xc24d51){var _0x108afe=_0x463dbe;return _0xc24d51[_0x108afe('0x11e6')]||Object['getPrototypeOf'](_0xc24d51);})(_0x599362);}function _0x43fd5d(_0x2c7b51,_0x4dd36f){var _0x4d04c8=_0x3ab6;return(_0x43fd5d=Object[_0x4d04c8('0x6c2')]||function(_0x35b642,_0xb83446){var _0x543543=_0x4d04c8;return _0x35b642[_0x543543('0x11e6')]=_0xb83446,_0x35b642;})(_0x2c7b51,_0x4dd36f);}var _0x3909e6=function(_0x4baea6){var _0x4be768=_0x3ab6;!function(_0x12c096,_0x2e954f){var _0x3be861=_0x3ab6;if(_0x3be861('0xae9')!=typeof _0x2e954f&&null!==_0x2e954f)throw new TypeError(_0x3be861('0x409'));_0x12c096[_0x3be861('0x98c')]=Object[_0x3be861('0x5c2')](_0x2e954f&&_0x2e954f[_0x3be861('0x98c')],{'constructor':{'value':_0x12c096,'writable':!0x0,'configurable':!0x0}}),_0x2e954f&&_0x43fd5d(_0x12c096,_0x2e954f);}(_0x20872d,_0x4baea6);var _0xa29069,_0x579240,_0x1cd681,_0x427ef8,_0x21f9c7=(_0xa29069=_0x20872d,function(){var _0x43f345=_0x3ab6,_0x15bb30,_0x6376e3=_0x107e79(_0xa29069);if(_0x478d46()){var _0x42c323=_0x107e79(this)[_0x43f345('0x3c6')];_0x15bb30=Reflect[_0x43f345('0x6ea')](_0x6376e3,arguments,_0x42c323);}else _0x15bb30=_0x6376e3[_0x43f345('0x1036')](this,arguments);return _0x3f9457(this,_0x15bb30);});function _0x20872d(){var _0x1817c2=_0x3ab6;return _0x3df729(this,_0x20872d),_0x21f9c7[_0x1817c2('0x1036')](this,arguments);}return _0x579240=_0x20872d,(_0x1cd681=[{'key':_0x4be768('0x315'),'value':function(){var _0x342006=_0x4be768;return['id',_0x342006('0x263'),_0x342006('0x3a0'),_0x342006('0xccd'),_0x342006('0x55c')];}},{'key':_0x4be768('0x5d2'),'value':function(){var _0x29c85f=_0x4be768;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':'Name'},{'sTitle':_0x29c85f('0xca0')},{'sTitle':'Mapped\x20Text'},{'sTitle':_0x29c85f('0x8c8')}];}},{'key':_0x4be768('0xfe3'),'value':function(){var _0x4c0243=_0x4be768;return[['id',{'label':'ID','type':_0x4c0243('0xdc0')}],[_0x4c0243('0x3f7'),{'label':'Type','type':_0x4c0243('0x7c2'),'validation':''}],['name',{'label':_0x4c0243('0x1'),'type':_0x4c0243('0x7c2'),'validation':''}],[_0x4c0243('0x3a0'),{'label':_0x4c0243('0xca0'),'type':_0x4c0243('0x7c2'),'validation':''}],[_0x4c0243('0xccd'),{'label':'Mapped\x20Text','type':_0x4c0243('0x768'),'validation':''}],['display',{'label':_0x4c0243('0x8c8'),'type':_0x4c0243('0x8ff'),'source':[[_0x4c0243('0x5ac'),_0x4c0243('0x8e')],['Hidden',_0x4c0243('0x987')]]}]];}}])&&_0x316bd4(_0x579240[_0x4be768('0x98c')],_0x1cd681),_0x427ef8&&_0x316bd4(_0x579240,_0x427ef8),_0x20872d;}(((_0x3f0259=_0x543248('../../../api/AdapterBase'))&&_0x3f0259[_0x38f86e('0x114c')]?_0x3f0259:{'default':_0x3f0259})[_0x38f86e('0x544')]);_0x486737['exports']={'FieldNameAdapter':_0x3909e6};},{'../../../api/AdapterBase':0x39}],0x1c:[function(_0x257bae,_0x5cbdc3,_0x4b54ec){var _0x6e737d=_0x404097;'use strict';var _0x34369f,_0x417e81=_0x257bae('./lib'),_0x15faf5=(_0x34369f=_0x257bae('../../../api/IceDataPipe'))&&_0x34369f[_0x6e737d('0x114c')]?_0x34369f:{'default':_0x34369f};window[_0x6e737d('0x110d')]=function(_0x44415a){var _0x102065=_0x6e737d,_0x2f1ea1=[];_0x2f1ea1['tabJobTitle']=new _0x417e81[(_0x102065('0x478'))](_0x102065('0xa41'),'JobTitle','',''),_0x2f1ea1[_0x102065('0xb58')][_0x102065('0xb3e')](_0x102065('0x8cf')),_0x2f1ea1['tabJobTitle'][_0x102065('0x11cf')](new _0x15faf5['default'](_0x2f1ea1['tabJobTitle'])),_0x2f1ea1[_0x102065('0xb58')][_0x102065('0xad3')](_0x44415a[_0x102065('0x73f')][_0x102065('0xa41')]),_0x2f1ea1[_0x102065('0xb76')]=new _0x417e81['PayGradeAdapter']('PayGrade',_0x102065('0x396'),'',''),_0x2f1ea1[_0x102065('0xb76')][_0x102065('0xb3e')](_0x102065('0xed9')),_0x2f1ea1[_0x102065('0xb76')]['setDataPipe'](new _0x15faf5[(_0x102065('0x544'))](_0x2f1ea1[_0x102065('0xb76')])),_0x2f1ea1[_0x102065('0xb76')][_0x102065('0xad3')](_0x44415a[_0x102065('0x73f')][_0x102065('0x396')]),_0x2f1ea1[_0x102065('0x10df')]=new _0x417e81[(_0x102065('0xeee'))](_0x102065('0x2a'),_0x102065('0x2a'),'',''),_0x2f1ea1[_0x102065('0x10df')][_0x102065('0xb3e')]('Employment\x20Status'),_0x2f1ea1['tabEmploymentStatus'][_0x102065('0x11cf')](new _0x15faf5['default'](_0x2f1ea1[_0x102065('0x10df')])),_0x2f1ea1[_0x102065('0x10df')][_0x102065('0xad3')](_0x44415a[_0x102065('0x73f')][_0x102065('0x2a')]),window[_0x102065('0x7db')]=_0x2f1ea1[_0x102065('0xb58')],window[_0x102065('0x336')]=_0x2f1ea1;};},{'../../../api/IceDataPipe':0x3f,'./lib':0x1d}],0x1d:[function(_0x4ccae3,_0x1754df,_0x477b8){var _0x212da7=_0x404097;'use strict';var _0x23216d,_0x11ffae=(_0x23216d=_0x4ccae3(_0x212da7('0x4ac')))&&_0x23216d[_0x212da7('0x114c')]?_0x23216d:{'default':_0x23216d};function _0xc66830(_0x2a3d06){var _0x527f00=_0x212da7;return(_0xc66830='function'==typeof Symbol&&_0x527f00('0x245')==typeof Symbol['iterator']?function(_0x4b2b00){return typeof _0x4b2b00;}:function(_0x1b5c9f){var _0x31a81b=_0x527f00;return _0x1b5c9f&&_0x31a81b('0xae9')==typeof Symbol&&_0x1b5c9f[_0x31a81b('0x3c6')]===Symbol&&_0x1b5c9f!==Symbol['prototype']?_0x31a81b('0x245'):typeof _0x1b5c9f;})(_0x2a3d06);}function _0x2735a0(_0x1fe33e,_0x4587d4){var _0xe905cf=_0x212da7;if(!(_0x1fe33e instanceof _0x4587d4))throw new TypeError(_0xe905cf('0x202'));}function _0xed8a3d(_0x554f42,_0x5398ee){var _0x735361=_0x212da7;for(var _0x30a1e8=0x0;_0x30a1e8<_0x5398ee[_0x735361('0x525')];_0x30a1e8++){var _0x44c20c=_0x5398ee[_0x30a1e8];_0x44c20c[_0x735361('0x156')]=_0x44c20c['enumerable']||!0x1,_0x44c20c['configurable']=!0x0,'value'in _0x44c20c&&(_0x44c20c['writable']=!0x0),Object[_0x735361('0xa95')](_0x554f42,_0x44c20c['key'],_0x44c20c);}}function _0x2a0e94(_0x14cede,_0x36264,_0x1e2d37){var _0x316393=_0x212da7;return _0x36264&&_0xed8a3d(_0x14cede[_0x316393('0x98c')],_0x36264),_0x1e2d37&&_0xed8a3d(_0x14cede,_0x1e2d37),_0x14cede;}function _0xacb9b3(_0x1d4a73){return function(){var _0x43ad6c=_0x3ab6,_0x5c9b41,_0x2c0707=_0x1dcd02(_0x1d4a73);if(_0xafa2ab()){var _0x1ad924=_0x1dcd02(this)[_0x43ad6c('0x3c6')];_0x5c9b41=Reflect[_0x43ad6c('0x6ea')](_0x2c0707,arguments,_0x1ad924);}else _0x5c9b41=_0x2c0707['apply'](this,arguments);return _0x525e32(this,_0x5c9b41);};}function _0x525e32(_0x33f19e,_0x5daecc){var _0x24331b=_0x212da7;return!_0x5daecc||'object'!==_0xc66830(_0x5daecc)&&_0x24331b('0xae9')!=typeof _0x5daecc?function(_0x1f3527){var _0xf40947=_0x24331b;if(void 0x0===_0x1f3527)throw new ReferenceError(_0xf40947('0x2e9'));return _0x1f3527;}(_0x33f19e):_0x5daecc;}function _0xafa2ab(){var _0x51c1e8=_0x212da7;if(_0x51c1e8('0x56')==typeof Reflect||!Reflect[_0x51c1e8('0x6ea')])return!0x1;if(Reflect[_0x51c1e8('0x6ea')]['sham'])return!0x1;if('function'==typeof Proxy)return!0x0;try{return Date[_0x51c1e8('0x98c')][_0x51c1e8('0x537')]['call'](Reflect[_0x51c1e8('0x6ea')](Date,[],function(){})),!0x0;}catch(_0x1d2702){return!0x1;}}function _0x1dcd02(_0x2e329f){var _0x3bd83c=_0x212da7;return(_0x1dcd02=Object['setPrototypeOf']?Object[_0x3bd83c('0x10c0')]:function(_0x10f02c){var _0x344e3d=_0x3bd83c;return _0x10f02c[_0x344e3d('0x11e6')]||Object[_0x344e3d('0x10c0')](_0x10f02c);})(_0x2e329f);}function _0x882a4b(_0x2f2429,_0x4bf61c){var _0xc841d9=_0x212da7;if(_0xc841d9('0xae9')!=typeof _0x4bf61c&&null!==_0x4bf61c)throw new TypeError(_0xc841d9('0x409'));_0x2f2429[_0xc841d9('0x98c')]=Object[_0xc841d9('0x5c2')](_0x4bf61c&&_0x4bf61c['prototype'],{'constructor':{'value':_0x2f2429,'writable':!0x0,'configurable':!0x0}}),_0x4bf61c&&_0x590616(_0x2f2429,_0x4bf61c);}function _0x590616(_0x56df1d,_0x4e60b1){var _0x4471eb=_0x212da7;return(_0x590616=Object[_0x4471eb('0x6c2')]||function(_0x4eff72,_0x18a20a){var _0x1b1270=_0x4471eb;return _0x4eff72[_0x1b1270('0x11e6')]=_0x18a20a,_0x4eff72;})(_0x56df1d,_0x4e60b1);}var _0x3f4257=function(_0x46b78d){var _0x177b2b=_0x212da7;_0x882a4b(_0xbcefc4,_0x46b78d);var _0x2bd3bc=_0xacb9b3(_0xbcefc4);function _0xbcefc4(){var _0x228ea8=_0x3ab6;return _0x2735a0(this,_0xbcefc4),_0x2bd3bc[_0x228ea8('0x1036')](this,arguments);}return _0x2a0e94(_0xbcefc4,[{'key':_0x177b2b('0x315'),'value':function(){var _0x4b1795=_0x177b2b;return['id',_0x4b1795('0xb5c'),_0x4b1795('0x263')];}},{'key':_0x177b2b('0x5d2'),'value':function(){return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':'Code'},{'sTitle':'Name'}];}},{'key':_0x177b2b('0xfe3'),'value':function(){var _0x3bcd9c=_0x177b2b;return[['id',{'label':'ID','type':_0x3bcd9c('0xdc0')}],[_0x3bcd9c('0xb5c'),{'label':_0x3bcd9c('0x744'),'type':_0x3bcd9c('0x768')}],['name',{'label':_0x3bcd9c('0x393'),'type':_0x3bcd9c('0x768')}],[_0x3bcd9c('0xbfc'),{'label':_0x3bcd9c('0xef'),'type':_0x3bcd9c('0xa2e')}],[_0x3bcd9c('0x3d4'),{'label':_0x3bcd9c('0x54'),'type':'textarea'}]];}},{'key':_0x177b2b('0x5f6'),'value':function(){var _0x55d3bb=_0x177b2b;return[{'title':_0x55d3bb('0x744'),'dataIndex':_0x55d3bb('0xb5c'),'sorter':!0x0},{'title':'Job\x20Title','dataIndex':'name','sorter':!0x0}];}}]),_0xbcefc4;}(_0x11ffae['default']),_0x25e385=function(_0x4896ef){var _0x2fbbc5=_0x212da7;_0x882a4b(_0x4b9359,_0x4896ef);var _0x3d2b2f=_0xacb9b3(_0x4b9359);function _0x4b9359(){var _0x197d89=_0x3ab6;return _0x2735a0(this,_0x4b9359),_0x3d2b2f[_0x197d89('0x1036')](this,arguments);}return _0x2a0e94(_0x4b9359,[{'key':_0x2fbbc5('0x315'),'value':function(){var _0x14f683=_0x2fbbc5;return['id',_0x14f683('0x263'),_0x14f683('0xdce'),_0x14f683('0xbd7'),_0x14f683('0xe69')];}},{'key':_0x2fbbc5('0x5d2'),'value':function(){var _0x50fc71=_0x2fbbc5;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':_0x50fc71('0x1')},{'sTitle':_0x50fc71('0x4fc')},{'sTitle':_0x50fc71('0x518')},{'sTitle':_0x50fc71('0x39b')}];}},{'key':_0x2fbbc5('0xfe3'),'value':function(){var _0x38404d=_0x2fbbc5;return[['id',{'label':'ID','type':_0x38404d('0xdc0')}],[_0x38404d('0x263'),{'label':'Pay\x20Grade\x20Name','type':'text'}],[_0x38404d('0xdce'),{'label':_0x38404d('0x4fc'),'type':_0x38404d('0x1137'),'remote-source':[_0x38404d('0x2'),_0x38404d('0xb5c'),_0x38404d('0x263')]}],[_0x38404d('0xbd7'),{'label':_0x38404d('0x518'),'type':_0x38404d('0x768'),'validation':'float'}],[_0x38404d('0xe69'),{'label':'Max\x20Salary','type':_0x38404d('0x768'),'validation':_0x38404d('0xf0e')}]];}},{'key':'getTableColumns','value':function(){var _0x2e3cf4=_0x2fbbc5;return[{'title':'Name','dataIndex':_0x2e3cf4('0x263'),'sorter':!0x0},{'title':_0x2e3cf4('0x4fc'),'dataIndex':_0x2e3cf4('0xdce')},{'title':_0x2e3cf4('0x518'),'dataIndex':_0x2e3cf4('0xbd7')},{'title':'Max\x20Salary','dataIndex':_0x2e3cf4('0xe69')}];}},{'key':'doCustomValidation','value':function(_0x48c47b){var _0x1de122=_0x2fbbc5;try{if(parseFloat(_0x48c47b[_0x1de122('0xbd7')])>parseFloat(_0x48c47b[_0x1de122('0xe69')]))return _0x1de122('0x43c');}catch(_0x15b26d){}return null;}}]),_0x4b9359;}(_0x11ffae[_0x212da7('0x544')]),_0xcb3ecf=function(_0x5a47c8){var _0x26194d=_0x212da7;_0x882a4b(_0x61a01e,_0x5a47c8);var _0x4053c9=_0xacb9b3(_0x61a01e);function _0x61a01e(){var _0x2e7f77=_0x3ab6;return _0x2735a0(this,_0x61a01e),_0x4053c9[_0x2e7f77('0x1036')](this,arguments);}return _0x2a0e94(_0x61a01e,[{'key':'getDataMapping','value':function(){var _0x3f0986=_0x3ab6;return['id',_0x3f0986('0x263'),'description'];}},{'key':'getHeaders','value':function(){var _0x587f2b=_0x3ab6;return[{'sTitle':'ID'},{'sTitle':_0x587f2b('0x1')},{'sTitle':'Description'}];}},{'key':_0x26194d('0xfe3'),'value':function(){var _0xfd03aa=_0x26194d;return[['id',{'label':'ID','type':_0xfd03aa('0xdc0')}],[_0xfd03aa('0x263'),{'label':_0xfd03aa('0x9ea'),'type':_0xfd03aa('0x768')}],[_0xfd03aa('0xbfc'),{'label':_0xfd03aa('0xef'),'type':_0xfd03aa('0xa2e'),'validation':''}]];}},{'key':_0x26194d('0x5f6'),'value':function(){var _0x273815=_0x26194d;return[{'title':_0x273815('0x9ea'),'dataIndex':_0x273815('0x263'),'sorter':!0x0},{'title':_0x273815('0xef'),'dataIndex':'description'}];}}]),_0x61a01e;}(_0x11ffae[_0x212da7('0x544')]);_0x1754df['exports']={'JobTitleAdapter':_0x3f4257,'PayGradeAdapter':_0x25e385,'EmploymentStatusAdapter':_0xcb3ecf};},{'../../../api/ReactModalAdapterBase':0x46}],0x1e:[function(_0x4ad791,_0x4c604c,_0x42d11d){var _0x5613c5=_0x404097;'use strict';var _0x1a5428=_0x4ad791(_0x5613c5('0x358'));window['CompanyLoanAdapter']=_0x1a5428['CompanyLoanAdapter'],window[_0x5613c5('0x610')]=_0x1a5428[_0x5613c5('0x610')];},{'./lib':0x1f}],0x1f:[function(_0x48fbe2,_0x59c62b,_0x4289a5){var _0x4848b0=_0x404097;'use strict';var _0x401c1e,_0x1ed137=(_0x401c1e=_0x48fbe2(_0x4848b0('0xe88')))&&_0x401c1e[_0x4848b0('0x114c')]?_0x401c1e:{'default':_0x401c1e};function _0x2751bd(_0x73ab7d){var _0x4d3013=_0x4848b0;return(_0x2751bd=_0x4d3013('0xae9')==typeof Symbol&&_0x4d3013('0x245')==typeof Symbol[_0x4d3013('0x78e')]?function(_0x548799){return typeof _0x548799;}:function(_0x48e933){var _0x4c9824=_0x4d3013;return _0x48e933&&_0x4c9824('0xae9')==typeof Symbol&&_0x48e933['constructor']===Symbol&&_0x48e933!==Symbol[_0x4c9824('0x98c')]?'symbol':typeof _0x48e933;})(_0x73ab7d);}function _0x5303be(_0x4cfd91,_0x491480){var _0x3ada6b=_0x4848b0;if(!(_0x4cfd91 instanceof _0x491480))throw new TypeError(_0x3ada6b('0x202'));}function _0xa2f512(_0x82c932,_0x1ae90b){var _0x497a07=_0x4848b0;for(var _0x24c09e=0x0;_0x24c09e<_0x1ae90b[_0x497a07('0x525')];_0x24c09e++){var _0x4d14ce=_0x1ae90b[_0x24c09e];_0x4d14ce[_0x497a07('0x156')]=_0x4d14ce[_0x497a07('0x156')]||!0x1,_0x4d14ce['configurable']=!0x0,_0x497a07('0x832')in _0x4d14ce&&(_0x4d14ce[_0x497a07('0x4db')]=!0x0),Object[_0x497a07('0xa95')](_0x82c932,_0x4d14ce[_0x497a07('0x1192')],_0x4d14ce);}}function _0x3f19e8(_0x251f99,_0x59e4d4,_0x6bd1f){var _0x509406=_0x4848b0;return _0x59e4d4&&_0xa2f512(_0x251f99[_0x509406('0x98c')],_0x59e4d4),_0x6bd1f&&_0xa2f512(_0x251f99,_0x6bd1f),_0x251f99;}function _0x1f0d90(_0x10e696){return function(){var _0x52f312=_0x3ab6,_0x48c72d,_0x2a873a=_0x2a809a(_0x10e696);if(_0xd0aff4()){var _0x54a412=_0x2a809a(this)[_0x52f312('0x3c6')];_0x48c72d=Reflect['construct'](_0x2a873a,arguments,_0x54a412);}else _0x48c72d=_0x2a873a[_0x52f312('0x1036')](this,arguments);return _0x1c05cf(this,_0x48c72d);};}function _0x1c05cf(_0x329425,_0x5127b2){var _0x39af2e=_0x4848b0;return!_0x5127b2||_0x39af2e('0x21e')!==_0x2751bd(_0x5127b2)&&'function'!=typeof _0x5127b2?function(_0x2bba12){var _0x642ae2=_0x39af2e;if(void 0x0===_0x2bba12)throw new ReferenceError(_0x642ae2('0x2e9'));return _0x2bba12;}(_0x329425):_0x5127b2;}function _0xd0aff4(){var _0x3fe84b=_0x4848b0;if(_0x3fe84b('0x56')==typeof Reflect||!Reflect[_0x3fe84b('0x6ea')])return!0x1;if(Reflect[_0x3fe84b('0x6ea')]['sham'])return!0x1;if('function'==typeof Proxy)return!0x0;try{return Date[_0x3fe84b('0x98c')][_0x3fe84b('0x537')][_0x3fe84b('0x4b0')](Reflect[_0x3fe84b('0x6ea')](Date,[],function(){})),!0x0;}catch(_0x42d4c8){return!0x1;}}function _0x2a809a(_0x1114ff){var _0x3e44a1=_0x4848b0;return(_0x2a809a=Object[_0x3e44a1('0x6c2')]?Object[_0x3e44a1('0x10c0')]:function(_0x295300){var _0x4b41ca=_0x3e44a1;return _0x295300[_0x4b41ca('0x11e6')]||Object[_0x4b41ca('0x10c0')](_0x295300);})(_0x1114ff);}function _0x59b8ab(_0x2a5169,_0x498054){var _0x5608d2=_0x4848b0;if('function'!=typeof _0x498054&&null!==_0x498054)throw new TypeError(_0x5608d2('0x409'));_0x2a5169[_0x5608d2('0x98c')]=Object[_0x5608d2('0x5c2')](_0x498054&&_0x498054['prototype'],{'constructor':{'value':_0x2a5169,'writable':!0x0,'configurable':!0x0}}),_0x498054&&_0x2d599b(_0x2a5169,_0x498054);}function _0x2d599b(_0x2ec8af,_0x1bb572){var _0xd78ecd=_0x4848b0;return(_0x2d599b=Object[_0xd78ecd('0x6c2')]||function(_0x519cba,_0x3a9c05){var _0x5ecffd=_0xd78ecd;return _0x519cba[_0x5ecffd('0x11e6')]=_0x3a9c05,_0x519cba;})(_0x2ec8af,_0x1bb572);}var _0x4ee056=function(_0x41e2cd){var _0x4fe6b9=_0x4848b0;_0x59b8ab(_0x125a42,_0x41e2cd);var _0x31fa7e=_0x1f0d90(_0x125a42);function _0x125a42(){var _0x5e87b2=_0x3ab6;return _0x5303be(this,_0x125a42),_0x31fa7e[_0x5e87b2('0x1036')](this,arguments);}return _0x3f19e8(_0x125a42,[{'key':'getDataMapping','value':function(){var _0x90eb24=_0x3ab6;return['id',_0x90eb24('0x263'),_0x90eb24('0xddf')];}},{'key':_0x4fe6b9('0x5d2'),'value':function(){var _0x141012=_0x4fe6b9;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':_0x141012('0x1')},{'sTitle':_0x141012('0xf10')}];}},{'key':'getFormFields','value':function(){var _0x2e2fd4=_0x4fe6b9;return[['id',{'label':'ID','type':_0x2e2fd4('0xdc0')}],[_0x2e2fd4('0x263'),{'label':'Name','type':_0x2e2fd4('0x768'),'validation':''}],[_0x2e2fd4('0xddf'),{'label':_0x2e2fd4('0xf10'),'type':_0x2e2fd4('0xa2e'),'validation':_0x2e2fd4('0x1c1')}]];}}]),_0x125a42;}(_0x1ed137['default']),_0x40fbf5=function(_0x42e4f8){var _0x1a2608=_0x4848b0;_0x59b8ab(_0xe45c33,_0x42e4f8);var _0x112322=_0x1f0d90(_0xe45c33);function _0xe45c33(){var _0x11c826=_0x3ab6;return _0x5303be(this,_0xe45c33),_0x112322[_0x11c826('0x1036')](this,arguments);}return _0x3f19e8(_0xe45c33,[{'key':_0x1a2608('0x315'),'value':function(){var _0x131092=_0x1a2608;return['id',_0x131092('0x55e'),_0x131092('0x102a'),_0x131092('0x1006'),_0x131092('0x4b6'),_0x131092('0xdce'),'amount',_0x131092('0x11e7')];}},{'key':_0x1a2608('0x5d2'),'value':function(){var _0x111c19=_0x1a2608;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':_0x111c19('0x3e1')},{'sTitle':_0x111c19('0x1193')},{'sTitle':_0x111c19('0xf00')},{'sTitle':_0x111c19('0x927')},{'sTitle':_0x111c19('0x4fc')},{'sTitle':_0x111c19('0xc5e')},{'sTitle':'Status'}];}},{'key':_0x1a2608('0xfe3'),'value':function(){var _0x220c75=_0x1a2608;return[['id',{'label':'ID','type':'hidden'}],[_0x220c75('0x55e'),{'label':_0x220c75('0x3e1'),'type':_0x220c75('0x1137'),'remote-source':[_0x220c75('0x3e1'),'id','first_name+last_name']}],[_0x220c75('0x102a'),{'label':_0x220c75('0x1193'),'type':_0x220c75('0x8ff'),'remote-source':[_0x220c75('0x9ee'),'id',_0x220c75('0x263')]}],['start_date',{'label':_0x220c75('0xf00'),'type':_0x220c75('0x65d'),'validation':''}],[_0x220c75('0x35d'),{'label':_0x220c75('0xb79'),'type':'date','validation':_0x220c75('0x1c1')}],[_0x220c75('0x4b6'),{'label':_0x220c75('0x927'),'type':_0x220c75('0x768'),'validation':_0x220c75('0xd95')}],['currency',{'label':_0x220c75('0x4fc'),'type':_0x220c75('0x1137'),'remote-source':[_0x220c75('0x2'),'id',_0x220c75('0x263')]}],[_0x220c75('0x10d2'),{'label':_0x220c75('0xbae'),'type':_0x220c75('0x768'),'validation':'float'}],[_0x220c75('0xdfe'),{'label':_0x220c75('0x2c9'),'type':'text','validation':_0x220c75('0xf0e')}],[_0x220c75('0x11e7'),{'label':_0x220c75('0xf9f'),'type':_0x220c75('0x8ff'),'source':[[_0x220c75('0x73d'),'Approved'],[_0x220c75('0xfc8'),_0x220c75('0xfc8')],['Suspended',_0x220c75('0x52e')]]}],[_0x220c75('0xddf'),{'label':_0x220c75('0xf10'),'type':_0x220c75('0xa2e'),'validation':_0x220c75('0x1c1')}]];}},{'key':_0x1a2608('0xa68'),'value':function(){var _0x3f2fa2=_0x1a2608;return[[_0x3f2fa2('0x55e'),{'label':_0x3f2fa2('0x3e1'),'type':_0x3f2fa2('0x1137'),'allow-null':!0x0,'null-label':_0x3f2fa2('0x679'),'remote-source':[_0x3f2fa2('0x3e1'),'id',_0x3f2fa2('0x2d')]}],[_0x3f2fa2('0x102a'),{'label':_0x3f2fa2('0x1193'),'type':_0x3f2fa2('0x8ff'),'allow-null':!0x0,'null-label':_0x3f2fa2('0x1c3'),'remote-source':[_0x3f2fa2('0x9ee'),'id','name']}]];}}]),_0xe45c33;}(_0x1ed137[_0x4848b0('0x544')]);_0x59c62b[_0x4848b0('0xddc')]={'CompanyLoanAdapter':_0x4ee056,'EmployeeCompanyLoanAdapter':_0x40fbf5};},{'../../../api/AdapterBase':0x39}],0x20:[function(_0x416f5f,_0x5136b0,_0x3b426d){var _0x525ad5=_0x404097;'use strict';var _0x930710=_0x416f5f(_0x525ad5('0x358'));window['CountryAdapter']=_0x930710['CountryAdapter'],window[_0x525ad5('0x85f')]=_0x930710[_0x525ad5('0x85f')],window['CurrencyTypeAdapter']=_0x930710[_0x525ad5('0x86b')],window['NationalityAdapter']=_0x930710[_0x525ad5('0x298')],window['ImmigrationStatusAdapter']=_0x930710[_0x525ad5('0xcb8')],window[_0x525ad5('0xa29')]=_0x930710[_0x525ad5('0xa29')];},{'./lib':0x21}],0x21:[function(_0x2306d0,_0x9b5e0e,_0x105232){var _0xe97ffe=_0x404097;'use strict';var _0x5ed8be=_0x5a5f54(_0x2306d0(_0xe97ffe('0xe88'))),_0x2d6eeb=_0x5a5f54(_0x2306d0(_0xe97ffe('0x10a4')));function _0x5a5f54(_0x5055ce){var _0x55b185=_0xe97ffe;return _0x5055ce&&_0x5055ce[_0x55b185('0x114c')]?_0x5055ce:{'default':_0x5055ce};}function _0xc00ed7(_0x47c95c){var _0x37f2a7=_0xe97ffe;return(_0xc00ed7=_0x37f2a7('0xae9')==typeof Symbol&&_0x37f2a7('0x245')==typeof Symbol['iterator']?function(_0x20d0dc){return typeof _0x20d0dc;}:function(_0x648563){var _0x498eca=_0x37f2a7;return _0x648563&&_0x498eca('0xae9')==typeof Symbol&&_0x648563[_0x498eca('0x3c6')]===Symbol&&_0x648563!==Symbol[_0x498eca('0x98c')]?_0x498eca('0x245'):typeof _0x648563;})(_0x47c95c);}function _0x591b3a(_0x56e47a,_0x374de7){var _0x31519f=_0xe97ffe;if(!(_0x56e47a instanceof _0x374de7))throw new TypeError(_0x31519f('0x202'));}function _0x30619b(_0x2b4938,_0x5ee1f1){var _0x584a4c=_0xe97ffe;for(var _0xa6ff1d=0x0;_0xa6ff1d<_0x5ee1f1[_0x584a4c('0x525')];_0xa6ff1d++){var _0x31aeca=_0x5ee1f1[_0xa6ff1d];_0x31aeca[_0x584a4c('0x156')]=_0x31aeca['enumerable']||!0x1,_0x31aeca[_0x584a4c('0xbb2')]=!0x0,_0x584a4c('0x832')in _0x31aeca&&(_0x31aeca[_0x584a4c('0x4db')]=!0x0),Object[_0x584a4c('0xa95')](_0x2b4938,_0x31aeca[_0x584a4c('0x1192')],_0x31aeca);}}function _0x289d08(_0x1a5a32,_0x57b829,_0x5eb4e9){var _0x1f756b=_0xe97ffe;return _0x57b829&&_0x30619b(_0x1a5a32[_0x1f756b('0x98c')],_0x57b829),_0x5eb4e9&&_0x30619b(_0x1a5a32,_0x5eb4e9),_0x1a5a32;}function _0x577ad2(_0x6effb2){return function(){var _0x3d7faa=_0x3ab6,_0x164f96,_0x1ecc99=_0x47cd60(_0x6effb2);if(_0x47f4d3()){var _0x5ae80b=_0x47cd60(this)[_0x3d7faa('0x3c6')];_0x164f96=Reflect[_0x3d7faa('0x6ea')](_0x1ecc99,arguments,_0x5ae80b);}else _0x164f96=_0x1ecc99['apply'](this,arguments);return _0x3a7835(this,_0x164f96);};}function _0x3a7835(_0x4efb14,_0x522735){var _0x40a71b=_0xe97ffe;return!_0x522735||_0x40a71b('0x21e')!==_0xc00ed7(_0x522735)&&_0x40a71b('0xae9')!=typeof _0x522735?function(_0xc5ff03){var _0x2ec323=_0x40a71b;if(void 0x0===_0xc5ff03)throw new ReferenceError(_0x2ec323('0x2e9'));return _0xc5ff03;}(_0x4efb14):_0x522735;}function _0x47f4d3(){var _0x24070a=_0xe97ffe;if(_0x24070a('0x56')==typeof Reflect||!Reflect[_0x24070a('0x6ea')])return!0x1;if(Reflect[_0x24070a('0x6ea')][_0x24070a('0x16e')])return!0x1;if(_0x24070a('0xae9')==typeof Proxy)return!0x0;try{return Date[_0x24070a('0x98c')]['toString']['call'](Reflect[_0x24070a('0x6ea')](Date,[],function(){})),!0x0;}catch(_0x2d6c37){return!0x1;}}function _0x47cd60(_0x17fdab){var _0x4ccbe7=_0xe97ffe;return(_0x47cd60=Object['setPrototypeOf']?Object[_0x4ccbe7('0x10c0')]:function(_0x3e4b4b){var _0x4b5cef=_0x4ccbe7;return _0x3e4b4b['__proto__']||Object[_0x4b5cef('0x10c0')](_0x3e4b4b);})(_0x17fdab);}function _0x296bef(_0x5d155d,_0x6b4274){var _0x4f7809=_0xe97ffe;if(_0x4f7809('0xae9')!=typeof _0x6b4274&&null!==_0x6b4274)throw new TypeError(_0x4f7809('0x409'));_0x5d155d['prototype']=Object[_0x4f7809('0x5c2')](_0x6b4274&&_0x6b4274[_0x4f7809('0x98c')],{'constructor':{'value':_0x5d155d,'writable':!0x0,'configurable':!0x0}}),_0x6b4274&&_0x496fa2(_0x5d155d,_0x6b4274);}function _0x496fa2(_0x2f47f6,_0x481aeb){var _0x408f41=_0xe97ffe;return(_0x496fa2=Object[_0x408f41('0x6c2')]||function(_0x574f10,_0x32e8ce){var _0x9c0f6d=_0x408f41;return _0x574f10[_0x9c0f6d('0x11e6')]=_0x32e8ce,_0x574f10;})(_0x2f47f6,_0x481aeb);}var _0x5f6978=function(_0x43eb4a){var _0x5c2253=_0xe97ffe;_0x296bef(_0x4950ee,_0x43eb4a);var _0x3299f8=_0x577ad2(_0x4950ee);function _0x4950ee(){var _0x429019=_0x3ab6;return _0x591b3a(this,_0x4950ee),_0x3299f8[_0x429019('0x1036')](this,arguments);}return _0x289d08(_0x4950ee,[{'key':_0x5c2253('0x315'),'value':function(){var _0x78ca06=_0x5c2253;return['id',_0x78ca06('0xb5c'),'name'];}},{'key':_0x5c2253('0x5d2'),'value':function(){var _0x27486a=_0x5c2253;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':_0x27486a('0x116d')},{'sTitle':_0x27486a('0x1')}];}},{'key':'getFormFields','value':function(){var _0x2d5074=_0x5c2253;return[['id',{'label':'ID','type':'hidden'}],[_0x2d5074('0xb5c'),{'label':_0x2d5074('0x116d'),'type':_0x2d5074('0x768'),'validation':''}],[_0x2d5074('0x263'),{'label':'Name','type':'text','validation':''}]];}}]),_0x4950ee;}(_0x5ed8be['default']),_0x515d3b=function(_0x389858){var _0x1bbb88=_0xe97ffe;_0x296bef(_0x1fcb74,_0x389858);var _0x370816=_0x577ad2(_0x1fcb74);function _0x1fcb74(){var _0x25b26f=_0x3ab6;return _0x591b3a(this,_0x1fcb74),_0x370816[_0x25b26f('0x1036')](this,arguments);}return _0x289d08(_0x1fcb74,[{'key':'getDataMapping','value':function(){var _0x39469d=_0x3ab6;return['id',_0x39469d('0xb5c'),_0x39469d('0x263'),'country'];}},{'key':_0x1bbb88('0x5d2'),'value':function(){var _0x534c40=_0x1bbb88;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':_0x534c40('0x116d')},{'sTitle':_0x534c40('0x1')},{'sTitle':_0x534c40('0x10f5')}];}},{'key':'getFormFields','value':function(){var _0x141723=_0x1bbb88;return[['id',{'label':'ID','type':_0x141723('0xdc0')}],[_0x141723('0xb5c'),{'label':_0x141723('0x116d'),'type':'text','validation':''}],['name',{'label':_0x141723('0x1'),'type':'text','validation':''}],['country',{'label':_0x141723('0x10f5'),'type':_0x141723('0x1137'),'remote-source':[_0x141723('0x10f5'),_0x141723('0xb5c'),_0x141723('0x263')]}]];}},{'key':'getFilters','value':function(){var _0x309c02=_0x1bbb88;return[[_0x309c02('0x96b'),{'label':_0x309c02('0x10f5'),'type':_0x309c02('0x1137'),'remote-source':[_0x309c02('0x10f5'),'code','name']}]];}}]),_0x1fcb74;}(_0x5ed8be[_0xe97ffe('0x544')]),_0x5f00b5=function(_0x1d79a3){var _0x339c49=_0xe97ffe;_0x296bef(_0xfe5f70,_0x1d79a3);var _0x16ea8d=_0x577ad2(_0xfe5f70);function _0xfe5f70(){var _0x2c94d0=_0x3ab6;return _0x591b3a(this,_0xfe5f70),_0x16ea8d[_0x2c94d0('0x1036')](this,arguments);}return _0x289d08(_0xfe5f70,[{'key':_0x339c49('0x315'),'value':function(){var _0x1aa6bb=_0x339c49;return['id',_0x1aa6bb('0xb5c'),_0x1aa6bb('0x263')];}},{'key':_0x339c49('0x5d2'),'value':function(){var _0x5b6eff=_0x339c49;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':_0x5b6eff('0x116d')},{'sTitle':'Name'}];}},{'key':_0x339c49('0xfe3'),'value':function(){var _0x2662e4=_0x339c49;return[['id',{'label':'ID','type':_0x2662e4('0xdc0')}],[_0x2662e4('0xb5c'),{'label':'Code','type':_0x2662e4('0x768'),'validation':''}],['name',{'label':_0x2662e4('0x1'),'type':_0x2662e4('0x768'),'validation':''}]];}}]),_0xfe5f70;}(_0x5ed8be[_0xe97ffe('0x544')]),_0x35ad88=function(_0x614a32){_0x296bef(_0x4d886b,_0x614a32);var _0x4aa223=_0x577ad2(_0x4d886b);function _0x4d886b(){var _0x59caaf=_0x3ab6;return _0x591b3a(this,_0x4d886b),_0x4aa223[_0x59caaf('0x1036')](this,arguments);}return _0x4d886b;}(_0x2d6eeb['default']),_0x26debc=function(_0x416307){_0x296bef(_0x136e4c,_0x416307);var _0x19b608=_0x577ad2(_0x136e4c);function _0x136e4c(){var _0x56681e=_0x3ab6;return _0x591b3a(this,_0x136e4c),_0x19b608[_0x56681e('0x1036')](this,arguments);}return _0x136e4c;}(_0x2d6eeb[_0xe97ffe('0x544')]),_0x523b77=function(_0x537044){_0x296bef(_0x2e74f4,_0x537044);var _0x2103f7=_0x577ad2(_0x2e74f4);function _0x2e74f4(){var _0x4e3e62=_0x3ab6;return _0x591b3a(this,_0x2e74f4),_0x2103f7[_0x4e3e62('0x1036')](this,arguments);}return _0x2e74f4;}(_0x2d6eeb[_0xe97ffe('0x544')]);_0x9b5e0e[_0xe97ffe('0xddc')]={'CountryAdapter':_0x5f6978,'ProvinceAdapter':_0x515d3b,'CurrencyTypeAdapter':_0x5f00b5,'NationalityAdapter':_0x35ad88,'ImmigrationStatusAdapter':_0x26debc,'EthnicityAdapter':_0x523b77};},{'../../../api/AdapterBase':0x39,'../../../api/IdNameAdapter':0x40}],0x22:[function(_0x5f5256,_0x16937b,_0x3d53bc){var _0x24b738=_0x404097;'use strict';var _0xdffc78=_0x5f5256(_0x24b738('0x358'));window[_0x24b738('0xb2')]=_0xdffc78[_0x24b738('0xb2')],window[_0x24b738('0x540')]=_0xdffc78[_0x24b738('0x540')];},{'./lib':0x23}],0x23:[function(_0x435141,_0x452b6b,_0x470361){var _0x51a78c=_0x404097;'use strict';var _0x5c8927,_0x187607=(_0x5c8927=_0x435141(_0x51a78c('0xe88')))&&_0x5c8927[_0x51a78c('0x114c')]?_0x5c8927:{'default':_0x5c8927};function _0x558920(_0x2b8860){var _0x53fd0f=_0x51a78c;return(_0x558920='function'==typeof Symbol&&_0x53fd0f('0x245')==typeof Symbol[_0x53fd0f('0x78e')]?function(_0x4ff6c3){return typeof _0x4ff6c3;}:function(_0x11dfe6){var _0x1e190b=_0x53fd0f;return _0x11dfe6&&_0x1e190b('0xae9')==typeof Symbol&&_0x11dfe6[_0x1e190b('0x3c6')]===Symbol&&_0x11dfe6!==Symbol[_0x1e190b('0x98c')]?_0x1e190b('0x245'):typeof _0x11dfe6;})(_0x2b8860);}function _0x53f52a(_0x366e08,_0x3eca8a){var _0x639716=_0x51a78c;if(!(_0x366e08 instanceof _0x3eca8a))throw new TypeError(_0x639716('0x202'));}function _0x256888(_0x335ae5,_0x52d304){var _0x22f6f5=_0x51a78c;for(var _0x22b505=0x0;_0x22b505<_0x52d304[_0x22f6f5('0x525')];_0x22b505++){var _0x3d25c5=_0x52d304[_0x22b505];_0x3d25c5['enumerable']=_0x3d25c5[_0x22f6f5('0x156')]||!0x1,_0x3d25c5[_0x22f6f5('0xbb2')]=!0x0,_0x22f6f5('0x832')in _0x3d25c5&&(_0x3d25c5['writable']=!0x0),Object[_0x22f6f5('0xa95')](_0x335ae5,_0x3d25c5[_0x22f6f5('0x1192')],_0x3d25c5);}}function _0x185320(_0x392077,_0x2b5ef1,_0x4ffc49){var _0x2d0ce0=_0x51a78c;return _0x2b5ef1&&_0x256888(_0x392077[_0x2d0ce0('0x98c')],_0x2b5ef1),_0x4ffc49&&_0x256888(_0x392077,_0x4ffc49),_0x392077;}function _0x5625a6(_0x2c0d1f){return function(){var _0x42cae9=_0x3ab6,_0x386e8e,_0x46f2aa=_0x26f5d0(_0x2c0d1f);if(_0x10c205()){var _0x45fd37=_0x26f5d0(this)[_0x42cae9('0x3c6')];_0x386e8e=Reflect['construct'](_0x46f2aa,arguments,_0x45fd37);}else _0x386e8e=_0x46f2aa[_0x42cae9('0x1036')](this,arguments);return _0x2441a5(this,_0x386e8e);};}function _0x2441a5(_0x39cbf0,_0xddc30a){var _0x37c143=_0x51a78c;return!_0xddc30a||_0x37c143('0x21e')!==_0x558920(_0xddc30a)&&_0x37c143('0xae9')!=typeof _0xddc30a?function(_0x1d3b0a){var _0x2c5094=_0x37c143;if(void 0x0===_0x1d3b0a)throw new ReferenceError(_0x2c5094('0x2e9'));return _0x1d3b0a;}(_0x39cbf0):_0xddc30a;}function _0x10c205(){var _0x2229cb=_0x51a78c;if('undefined'==typeof Reflect||!Reflect[_0x2229cb('0x6ea')])return!0x1;if(Reflect[_0x2229cb('0x6ea')][_0x2229cb('0x16e')])return!0x1;if('function'==typeof Proxy)return!0x0;try{return Date[_0x2229cb('0x98c')][_0x2229cb('0x537')]['call'](Reflect[_0x2229cb('0x6ea')](Date,[],function(){})),!0x0;}catch(_0x568051){return!0x1;}}function _0x26f5d0(_0x27d6fc){var _0x41847a=_0x51a78c;return(_0x26f5d0=Object[_0x41847a('0x6c2')]?Object[_0x41847a('0x10c0')]:function(_0x3d2e7e){var _0x2bf9f6=_0x41847a;return _0x3d2e7e[_0x2bf9f6('0x11e6')]||Object[_0x2bf9f6('0x10c0')](_0x3d2e7e);})(_0x27d6fc);}function _0x397b58(_0x5cd0fb,_0x30763b){var _0x28808a=_0x51a78c;if('function'!=typeof _0x30763b&&null!==_0x30763b)throw new TypeError(_0x28808a('0x409'));_0x5cd0fb[_0x28808a('0x98c')]=Object[_0x28808a('0x5c2')](_0x30763b&&_0x30763b[_0x28808a('0x98c')],{'constructor':{'value':_0x5cd0fb,'writable':!0x0,'configurable':!0x0}}),_0x30763b&&_0x281c6c(_0x5cd0fb,_0x30763b);}function _0x281c6c(_0x5d2797,_0x1b11ce){var _0x171fdf=_0x51a78c;return(_0x281c6c=Object[_0x171fdf('0x6c2')]||function(_0x5b4a0c,_0x38836b){var _0x268a88=_0x171fdf;return _0x5b4a0c[_0x268a88('0x11e6')]=_0x38836b,_0x5b4a0c;})(_0x5d2797,_0x1b11ce);}var _0x25f735=function(_0x4762d1){var _0x4ded94=_0x51a78c;_0x397b58(_0x56e3c7,_0x4762d1);var _0x425aba=_0x5625a6(_0x56e3c7);function _0x56e3c7(){var _0x533810=_0x3ab6;return _0x53f52a(this,_0x56e3c7),_0x425aba[_0x533810('0x1036')](this,arguments);}return _0x185320(_0x56e3c7,[{'key':_0x4ded94('0x315'),'value':function(){var _0x394b15=_0x4ded94;return['id','label',_0x394b15('0x849'),'mod_group',_0x394b15('0x8ed'),'status','version',_0x394b15('0xddd')];}},{'key':'getHeaders','value':function(){var _0x205db3=_0x4ded94;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':_0x205db3('0x1')},{'sTitle':_0x205db3('0xd56'),'bVisible':!0x1},{'sTitle':_0x205db3('0x6cc')},{'sTitle':'Order'},{'sTitle':'Status'},{'sTitle':_0x205db3('0xb30'),'bVisible':!0x1},{'sTitle':_0x205db3('0xfa5'),'bVisible':!0x1}];}},{'key':'getFormFields','value':function(){var _0x4e7c7e=_0x4ded94;return[['id',{'label':'ID','type':_0x4e7c7e('0xdc0')}],[_0x4e7c7e('0xf90'),{'label':'Label','type':_0x4e7c7e('0x768'),'validation':''}],[_0x4e7c7e('0x11e7'),{'label':_0x4e7c7e('0xf9f'),'type':'select','source':[[_0x4e7c7e('0xaa4'),_0x4e7c7e('0xaa4')],[_0x4e7c7e('0x10f2'),_0x4e7c7e('0x10f2')]]}],['user_levels',{'label':_0x4e7c7e('0x1052'),'type':_0x4e7c7e('0x256'),'source':[[_0x4e7c7e('0x44'),_0x4e7c7e('0x44')],[_0x4e7c7e('0xe9a'),_0x4e7c7e('0xe9a')],[_0x4e7c7e('0x3e1'),'Employee']]}],[_0x4e7c7e('0x9b3'),{'label':_0x4e7c7e('0x62'),'type':'select2multi','remote-source':['UserRole','id',_0x4e7c7e('0x263')]}],['user_roles_blacklist',{'label':'Disallowed\x20User\x20Roles','type':_0x4e7c7e('0x256'),'remote-source':['UserRole','id','name']}]];}},{'key':_0x4ded94('0xd6b'),'value':function(_0x350ef3,_0x68a474){var _0x1bf0b3=_0x4ded94,_0x587676=_0x1bf0b3('0x19a');return _0x587676=(_0x587676=_0x587676[_0x1bf0b3('0x166')](/_id_/g,_0x350ef3))['replace'](/_BASE_/g,this[_0x1bf0b3('0xed3')]);}}]),_0x56e3c7;}(_0x187607[_0x51a78c('0x544')]),_0x187d0d=function(_0x1de300){var _0x464fd2=_0x51a78c;_0x397b58(_0x2d7772,_0x1de300);var _0x3bab29=_0x5625a6(_0x2d7772);function _0x2d7772(){var _0x3f2b82=_0x3ab6;return _0x53f52a(this,_0x2d7772),_0x3bab29[_0x3f2b82('0x1036')](this,arguments);}return _0x185320(_0x2d7772,[{'key':_0x464fd2('0x315'),'value':function(){return[];}},{'key':_0x464fd2('0x5d2'),'value':function(){return[];}},{'key':_0x464fd2('0xfe3'),'value':function(){return[];}},{'key':'get','value':function(_0x99d106){}},{'key':'saveUsage','value':function(){var _0x168638=_0x464fd2,_0x31081f={},_0x4b54c8=[];if($('.module-check')[_0x168638('0xf3a')](function(){var _0x5290c2=_0x168638;$(this)['is'](_0x5290c2('0x9bd'))&&_0x4b54c8[_0x5290c2('0x8f8')]($(this)[_0x5290c2('0x7eb')]());}),0x0!==_0x4b54c8[_0x168638('0x525')]){_0x31081f[_0x168638('0x106')]=_0x4b54c8[_0x168638('0x582')](',');var _0x208550=JSON[_0x168638('0x591')](_0x31081f),_0x6d1843=[];_0x6d1843[_0x168638('0x234')]=[],_0x6d1843['callBackSuccess']=_0x168638('0x255'),_0x6d1843['callBackFail']=_0x168638('0x101d'),this[_0x168638('0x960')](_0x168638('0xdd9'),_0x168638('0x386'),_0x208550,_0x6d1843);}else alert(_0x168638('0x92'));}},{'key':_0x464fd2('0xded'),'value':function(_0x2495d4){}},{'key':_0x464fd2('0x808'),'value':function(_0x1dbc83){}}]),_0x2d7772;}(_0x187607[_0x51a78c('0x544')]);_0x452b6b[_0x51a78c('0xddc')]={'ModuleAdapter':_0x25f735,'UsageAdapter':_0x187d0d};},{'../../../api/AdapterBase':0x39}],0x24:[function(_0x57d8c9,_0x408d9b,_0x45b733){var _0x366a80=_0x404097;'use strict';var _0x333b64=_0x57d8c9(_0x366a80('0x358'));window['OvertimeCategoryAdapter']=_0x333b64[_0x366a80('0x94')],window[_0x366a80('0x35e')]=_0x333b64[_0x366a80('0x35e')];},{'./lib':0x25}],0x25:[function(_0xc51506,_0x514395,_0x2dfa37){var _0x2c4bf9=_0x404097;'use strict';var _0x363590=_0x45d48a(_0xc51506(_0x2c4bf9('0xe88'))),_0x17c053=_0x45d48a(_0xc51506(_0x2c4bf9('0x4cf')));function _0x45d48a(_0x16e760){var _0x10ede4=_0x2c4bf9;return _0x16e760&&_0x16e760[_0x10ede4('0x114c')]?_0x16e760:{'default':_0x16e760};}function _0x4546a5(_0x20d9a5){var _0x168c5e=_0x2c4bf9;return(_0x4546a5=_0x168c5e('0xae9')==typeof Symbol&&'symbol'==typeof Symbol['iterator']?function(_0x266143){return typeof _0x266143;}:function(_0x16b3de){var _0x365ceb=_0x168c5e;return _0x16b3de&&_0x365ceb('0xae9')==typeof Symbol&&_0x16b3de['constructor']===Symbol&&_0x16b3de!==Symbol['prototype']?'symbol':typeof _0x16b3de;})(_0x20d9a5);}function _0x194642(_0x4a65a6,_0x6fa218){if(!(_0x4a65a6 instanceof _0x6fa218))throw new TypeError('Cannot\x20call\x20a\x20class\x20as\x20a\x20function');}function _0x268702(_0x3fe841,_0x492f0b){var _0x564aa5=_0x2c4bf9;for(var _0x452035=0x0;_0x452035<_0x492f0b[_0x564aa5('0x525')];_0x452035++){var _0x408d84=_0x492f0b[_0x452035];_0x408d84['enumerable']=_0x408d84[_0x564aa5('0x156')]||!0x1,_0x408d84['configurable']=!0x0,_0x564aa5('0x832')in _0x408d84&&(_0x408d84[_0x564aa5('0x4db')]=!0x0),Object[_0x564aa5('0xa95')](_0x3fe841,_0x408d84['key'],_0x408d84);}}function _0x140327(_0x131c51,_0x12d62a,_0x940367){var _0x5640bd=_0x2c4bf9;return _0x12d62a&&_0x268702(_0x131c51[_0x5640bd('0x98c')],_0x12d62a),_0x940367&&_0x268702(_0x131c51,_0x940367),_0x131c51;}function _0x37de69(_0x4a3e7a){return function(){var _0x75f1a6=_0x3ab6,_0x2fdb33,_0x50d65f=_0x4a66f2(_0x4a3e7a);if(_0xa4cbcd()){var _0x1062e7=_0x4a66f2(this)[_0x75f1a6('0x3c6')];_0x2fdb33=Reflect[_0x75f1a6('0x6ea')](_0x50d65f,arguments,_0x1062e7);}else _0x2fdb33=_0x50d65f[_0x75f1a6('0x1036')](this,arguments);return _0x3b5b07(this,_0x2fdb33);};}function _0x3b5b07(_0x405cf9,_0x5938c6){var _0x480d7b=_0x2c4bf9;return!_0x5938c6||_0x480d7b('0x21e')!==_0x4546a5(_0x5938c6)&&_0x480d7b('0xae9')!=typeof _0x5938c6?function(_0x1ae6ef){var _0x4b9664=_0x480d7b;if(void 0x0===_0x1ae6ef)throw new ReferenceError(_0x4b9664('0x2e9'));return _0x1ae6ef;}(_0x405cf9):_0x5938c6;}function _0xa4cbcd(){var _0x4a89a6=_0x2c4bf9;if(_0x4a89a6('0x56')==typeof Reflect||!Reflect[_0x4a89a6('0x6ea')])return!0x1;if(Reflect[_0x4a89a6('0x6ea')][_0x4a89a6('0x16e')])return!0x1;if('function'==typeof Proxy)return!0x0;try{return Date[_0x4a89a6('0x98c')][_0x4a89a6('0x537')][_0x4a89a6('0x4b0')](Reflect[_0x4a89a6('0x6ea')](Date,[],function(){})),!0x0;}catch(_0x3410ce){return!0x1;}}function _0x4a66f2(_0x3c84ac){var _0xadf8da=_0x2c4bf9;return(_0x4a66f2=Object[_0xadf8da('0x6c2')]?Object[_0xadf8da('0x10c0')]:function(_0xcda680){var _0x47a1de=_0xadf8da;return _0xcda680['__proto__']||Object[_0x47a1de('0x10c0')](_0xcda680);})(_0x3c84ac);}function _0x474c4b(_0x496e26,_0x22c329){var _0x894c02=_0x2c4bf9;if(_0x894c02('0xae9')!=typeof _0x22c329&&null!==_0x22c329)throw new TypeError(_0x894c02('0x409'));_0x496e26[_0x894c02('0x98c')]=Object['create'](_0x22c329&&_0x22c329[_0x894c02('0x98c')],{'constructor':{'value':_0x496e26,'writable':!0x0,'configurable':!0x0}}),_0x22c329&&_0x4f7ea3(_0x496e26,_0x22c329);}function _0x4f7ea3(_0x325352,_0x34c3c5){return(_0x4f7ea3=Object['setPrototypeOf']||function(_0xe30b5e,_0x3d23d4){var _0x2a0435=_0x3ab6;return _0xe30b5e[_0x2a0435('0x11e6')]=_0x3d23d4,_0xe30b5e;})(_0x325352,_0x34c3c5);}var _0x335b1e=function(_0x19aa62){var _0x19c65c=_0x2c4bf9;_0x474c4b(_0x2baf10,_0x19aa62);var _0x5c74fb=_0x37de69(_0x2baf10);function _0x2baf10(){var _0x431e32=_0x3ab6;return _0x194642(this,_0x2baf10),_0x5c74fb[_0x431e32('0x1036')](this,arguments);}return _0x140327(_0x2baf10,[{'key':_0x19c65c('0x315'),'value':function(){var _0xc63085=_0x19c65c;return['id',_0xc63085('0x263')];}},{'key':_0x19c65c('0x5d2'),'value':function(){var _0x2355e6=_0x19c65c;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':_0x2355e6('0x1')}];}},{'key':_0x19c65c('0xfe3'),'value':function(){var _0x49b2f8=_0x19c65c;return[['id',{'label':'ID','type':'hidden'}],[_0x49b2f8('0x263'),{'label':_0x49b2f8('0x1'),'type':'text','validation':''}]];}}]),_0x2baf10;}(_0x363590[_0x2c4bf9('0x544')]),_0x36f0df=function(_0x512ad8){var _0x394052=_0x2c4bf9;_0x474c4b(_0x312e5f,_0x512ad8);var _0x54268d=_0x37de69(_0x312e5f);function _0x312e5f(_0x12fdc4,_0x1d1b3f,_0xda5da2,_0x205193){var _0x3b1921=_0x3ab6,_0x9bbb37;return _0x194642(this,_0x312e5f),(_0x9bbb37=_0x54268d[_0x3b1921('0x4b0')](this,_0x12fdc4,_0x1d1b3f,_0xda5da2,_0x205193))[_0x3b1921('0x78a')]='OvertimeRequest',_0x9bbb37[_0x3b1921('0x548')]=_0x3b1921('0xbf'),_0x9bbb37[_0x3b1921('0x542')]=_0x3b1921('0x3b3'),_0x9bbb37;}return _0x140327(_0x312e5f,[{'key':'getDataMapping','value':function(){var _0x5de48f=_0x3ab6;return['id',_0x5de48f('0x55e'),_0x5de48f('0xf3f'),_0x5de48f('0xf55'),'end_time',_0x5de48f('0xef0'),_0x5de48f('0x11e7')];}},{'key':_0x394052('0x5d2'),'value':function(){var _0x3163ca=_0x394052;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':_0x3163ca('0x3e1')},{'sTitle':_0x3163ca('0x108f')},{'sTitle':_0x3163ca('0x3b1')},{'sTitle':_0x3163ca('0x1127')},{'sTitle':_0x3163ca('0xad1')},{'sTitle':_0x3163ca('0xf9f')}];}},{'key':_0x394052('0xfe3'),'value':function(){var _0x4c0a58=_0x394052;return[['id',{'label':'ID','type':'hidden'}],[_0x4c0a58('0x55e'),{'label':_0x4c0a58('0x3e1'),'type':_0x4c0a58('0x1137'),'sort':_0x4c0a58('0x1c1'),'allow-null':!0x1,'remote-source':[_0x4c0a58('0x3e1'),'id','first_name+last_name',_0x4c0a58('0xc07')]}],[_0x4c0a58('0xf3f'),{'label':'Category','type':_0x4c0a58('0x1137'),'allow-null':!0x1,'remote-source':[_0x4c0a58('0x929'),'id',_0x4c0a58('0x263')]}],[_0x4c0a58('0xf55'),{'label':'Start\x20Time','type':_0x4c0a58('0xb6a'),'validation':''}],[_0x4c0a58('0x247'),{'label':_0x4c0a58('0x1127'),'type':'datetime','validation':''}],[_0x4c0a58('0xef0'),{'label':_0x4c0a58('0xad1'),'type':'select2','allow-null':!0x0,'null=label':'none','remote-source':['Project','id',_0x4c0a58('0x263')]}],[_0x4c0a58('0xa46'),{'label':_0x4c0a58('0xfbc'),'type':_0x4c0a58('0xa2e'),'validation':_0x4c0a58('0x1c1')}]];}}]),_0x312e5f;}(_0x17c053[_0x2c4bf9('0x544')]);_0x514395[_0x2c4bf9('0xddc')]={'OvertimeCategoryAdapter':_0x335b1e,'EmployeeOvertimeAdminAdapter':_0x36f0df};},{'../../../api/AdapterBase':0x39,'../../../api/ApproveAdminAdapter':0x3a}],0x26:[function(_0xe4aa4e,_0x5f1a4a,_0x3f8e08){var _0x311538=_0x404097;'use strict';var _0xee78cf=_0xe4aa4e('./lib');window['PaydayAdapter']=_0xee78cf[_0x311538('0xeb3')],window['PayrollAdapter']=_0xee78cf[_0x311538('0xbb7')],window[_0x311538('0xcc3')]=_0xee78cf['PayrollDataAdapter'],window['PayrollColumnAdapter']=_0xee78cf[_0x311538('0xbc9')],window['PayrollColumnTemplateAdapter']=_0xee78cf[_0x311538('0xa0a')],window['PayrollEmployeeAdapter']=_0xee78cf['PayrollEmployeeAdapter'],window[_0x311538('0xdf8')]=_0xee78cf[_0x311538('0xdf8')],window['DeductionGroupAdapter']=_0xee78cf['DeductionGroupAdapter'],window[_0x311538('0x632')]=_0xee78cf[_0x311538('0x632')];},{'./lib':0x27}],0x27:[function(_0x1fbe49,_0x2f4fd0,_0x40fe37){var _0x3c0bd2=_0x404097;'use strict';var _0x2aa8d1=_0x4adf9b(_0x1fbe49(_0x3c0bd2('0xe88'))),_0x5ae2a8=_0x4adf9b(_0x1fbe49('../../../api/TableEditAdapter'));function _0x4adf9b(_0x4af793){var _0x331001=_0x3c0bd2;return _0x4af793&&_0x4af793[_0x331001('0x114c')]?_0x4af793:{'default':_0x4af793};}function _0x398036(_0x2f13c8){var _0x2d15cb=_0x3c0bd2;return(_0x398036=_0x2d15cb('0xae9')==typeof Symbol&&_0x2d15cb('0x245')==typeof Symbol['iterator']?function(_0x26c0eb){return typeof _0x26c0eb;}:function(_0x3c0f30){var _0x1d3905=_0x2d15cb;return _0x3c0f30&&_0x1d3905('0xae9')==typeof Symbol&&_0x3c0f30[_0x1d3905('0x3c6')]===Symbol&&_0x3c0f30!==Symbol[_0x1d3905('0x98c')]?_0x1d3905('0x245'):typeof _0x3c0f30;})(_0x2f13c8);}function _0xef1092(_0x1c292f,_0x29e7b7){var _0x1db16b=_0x3c0bd2;if(!(_0x1c292f instanceof _0x29e7b7))throw new TypeError(_0x1db16b('0x202'));}function _0x282e90(_0x542c3d,_0x2ec259){var _0x5f5cbf=_0x3c0bd2;for(var _0x30f36c=0x0;_0x30f36c<_0x2ec259[_0x5f5cbf('0x525')];_0x30f36c++){var _0x21fac6=_0x2ec259[_0x30f36c];_0x21fac6[_0x5f5cbf('0x156')]=_0x21fac6[_0x5f5cbf('0x156')]||!0x1,_0x21fac6[_0x5f5cbf('0xbb2')]=!0x0,'value'in _0x21fac6&&(_0x21fac6[_0x5f5cbf('0x4db')]=!0x0),Object['defineProperty'](_0x542c3d,_0x21fac6['key'],_0x21fac6);}}function _0x40b5be(_0x4d033c,_0x20e92d,_0x3268c3){var _0x1a0375=_0x3c0bd2;return _0x20e92d&&_0x282e90(_0x4d033c[_0x1a0375('0x98c')],_0x20e92d),_0x3268c3&&_0x282e90(_0x4d033c,_0x3268c3),_0x4d033c;}function _0x4c0c80(_0x36399f,_0x3e5ffc,_0x3aa97d){var _0x38069f=_0x3c0bd2;return(_0x4c0c80=_0x38069f('0x56')!=typeof Reflect&&Reflect[_0x38069f('0x33')]?Reflect[_0x38069f('0x33')]:function(_0x19bf6d,_0x377e6c,_0x52dbf6){var _0x1477b1=_0x38069f,_0x48e26d=function(_0x17c91c,_0x3d9ede){var _0x379671=_0x3ab6;for(;!Object[_0x379671('0x98c')][_0x379671('0x100')][_0x379671('0x4b0')](_0x17c91c,_0x3d9ede)&&null!==(_0x17c91c=_0x3592e9(_0x17c91c)););return _0x17c91c;}(_0x19bf6d,_0x377e6c);if(_0x48e26d){var _0x1dba39=Object[_0x1477b1('0xa71')](_0x48e26d,_0x377e6c);return _0x1dba39['get']?_0x1dba39[_0x1477b1('0x33')]['call'](_0x52dbf6):_0x1dba39[_0x1477b1('0x832')];}})(_0x36399f,_0x3e5ffc,_0x3aa97d||_0x36399f);}function _0xf44213(_0x1f63a9){return function(){var _0x52f443=_0x3ab6,_0x291b8c,_0x337caf=_0x3592e9(_0x1f63a9);if(_0x45b581()){var _0x8d0c3=_0x3592e9(this)[_0x52f443('0x3c6')];_0x291b8c=Reflect[_0x52f443('0x6ea')](_0x337caf,arguments,_0x8d0c3);}else _0x291b8c=_0x337caf['apply'](this,arguments);return _0x19998f(this,_0x291b8c);};}function _0x19998f(_0x1a5020,_0x462458){var _0x24c579=_0x3c0bd2;return!_0x462458||_0x24c579('0x21e')!==_0x398036(_0x462458)&&'function'!=typeof _0x462458?function(_0x4058dd){if(void 0x0===_0x4058dd)throw new ReferenceError('this\x20hasn\x27t\x20been\x20initialised\x20-\x20super()\x20hasn\x27t\x20been\x20called');return _0x4058dd;}(_0x1a5020):_0x462458;}function _0x45b581(){var _0x2a501d=_0x3c0bd2;if(_0x2a501d('0x56')==typeof Reflect||!Reflect[_0x2a501d('0x6ea')])return!0x1;if(Reflect[_0x2a501d('0x6ea')][_0x2a501d('0x16e')])return!0x1;if(_0x2a501d('0xae9')==typeof Proxy)return!0x0;try{return Date[_0x2a501d('0x98c')][_0x2a501d('0x537')][_0x2a501d('0x4b0')](Reflect['construct'](Date,[],function(){})),!0x0;}catch(_0x44ba0e){return!0x1;}}function _0x3592e9(_0x58af90){return(_0x3592e9=Object['setPrototypeOf']?Object['getPrototypeOf']:function(_0x2f4f73){var _0x435cb2=_0x3ab6;return _0x2f4f73[_0x435cb2('0x11e6')]||Object[_0x435cb2('0x10c0')](_0x2f4f73);})(_0x58af90);}function _0x171140(_0x31e5a5,_0x4fe7f7){var _0x23129d=_0x3c0bd2;if(_0x23129d('0xae9')!=typeof _0x4fe7f7&&null!==_0x4fe7f7)throw new TypeError(_0x23129d('0x409'));_0x31e5a5['prototype']=Object[_0x23129d('0x5c2')](_0x4fe7f7&&_0x4fe7f7[_0x23129d('0x98c')],{'constructor':{'value':_0x31e5a5,'writable':!0x0,'configurable':!0x0}}),_0x4fe7f7&&_0x4c92ae(_0x31e5a5,_0x4fe7f7);}function _0x4c92ae(_0x45bc47,_0x8ded38){var _0x281523=_0x3c0bd2;return(_0x4c92ae=Object[_0x281523('0x6c2')]||function(_0x1b4532,_0x21929e){return _0x1b4532['__proto__']=_0x21929e,_0x1b4532;})(_0x45bc47,_0x8ded38);}_0x1fbe49('codemirror/mode/javascript/javascript'),_0x1fbe49('codemirror/addon/edit/closebrackets'),_0x1fbe49(_0x3c0bd2('0x89b'));var _0x2ef20b=_0x1fbe49(_0x3c0bd2('0x11b8')),_0x5b63c4=function(_0x74735e){var _0x2a35a2=_0x3c0bd2;_0x171140(_0x423bc3,_0x74735e);var _0xa6b168=_0xf44213(_0x423bc3);function _0x423bc3(){var _0x59ff75=_0x3ab6;return _0xef1092(this,_0x423bc3),_0xa6b168[_0x59ff75('0x1036')](this,arguments);}return _0x40b5be(_0x423bc3,[{'key':_0x2a35a2('0x315'),'value':function(){return['id','name'];}},{'key':_0x2a35a2('0x5d2'),'value':function(){var _0x21533d=_0x2a35a2;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':_0x21533d('0x86a')}];}},{'key':_0x2a35a2('0xfe3'),'value':function(){var _0x2a01fe=_0x2a35a2;return[['name',{'label':_0x2a01fe('0x1'),'type':_0x2a01fe('0x768'),'validation':''}]];}},{'key':_0x2a35a2('0xe5b'),'value':function(){return'Run\x20Payroll';}},{'key':_0x2a35a2('0x38d'),'value':function(_0x3849e3){var _0x40e8ab=_0x2a35a2;$(_0x40e8ab('0xf77'))[_0x40e8ab('0xc1f')](),_0x4c0c80(_0x3592e9(_0x423bc3[_0x40e8ab('0x98c')]),_0x40e8ab('0x38d'),this)['call'](this,_0x3849e3),$(_0x40e8ab('0xf77'))[_0x40e8ab('0xc1f')]()['on'](_0x40e8ab('0xd4d'),function(){var _0x4318c7=_0x40e8ab;$(this)['is'](':checked')?$(_0x4318c7('0x8db'))['prop'](_0x4318c7('0xa92'),!0x0):$(_0x4318c7('0x8db'))[_0x4318c7('0xecb')](_0x4318c7('0xa92'),!0x1);});}},{'key':_0x2a35a2('0xd6b'),'value':function(_0x5213a2,_0xb0c06a){var _0x42b225=_0x2a35a2,_0x5c0428=_0x42b225('0x1114');return _0x5c0428=(_0x5c0428=(_0x5c0428=_0x5c0428[_0x42b225('0x166')]('_edit_',_0x42b225('0x9fe')))[_0x42b225('0x166')](/_id_/g,_0x5213a2))[_0x42b225('0x166')](/_BASE_/g,this[_0x42b225('0xed3')]);}},{'key':_0x2a35a2('0x54d'),'value':function(){var _0x281ac3=_0x2a35a2;return{'sTitle':_0x281ac3('0xe4d'),'sClass':_0x281ac3('0x1ed')};}}]),_0x423bc3;}(_0x2aa8d1[_0x3c0bd2('0x544')]),_0x1b1f2c=function(_0x1465b6){var _0x57f9ff=_0x3c0bd2;_0x171140(_0x1f2e0b,_0x1465b6);var _0x14d5c9=_0xf44213(_0x1f2e0b);function _0x1f2e0b(){var _0xbe4210=_0x3ab6;return _0xef1092(this,_0x1f2e0b),_0x14d5c9[_0xbe4210('0x1036')](this,arguments);}return _0x40b5be(_0x1f2e0b,[{'key':_0x57f9ff('0x315'),'value':function(){var _0x526718=_0x57f9ff;return['id','name','pay_period',_0x526718('0x79d'),_0x526718('0xb1d'),_0x526718('0x18a'),_0x526718('0x11e7')];}},{'key':_0x57f9ff('0x5d2'),'value':function(){var _0x1c033e=_0x57f9ff;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':'Name'},{'sTitle':_0x1c033e('0xfc7')},{'sTitle':_0x1c033e('0x11b9')},{'sTitle':'Date\x20Start'},{'sTitle':'Date\x20End'},{'sTitle':_0x1c033e('0xf9f')}];}},{'key':_0x57f9ff('0xfe3'),'value':function(){var _0x551edc=_0x57f9ff;return[['id',{'label':'ID','type':_0x551edc('0xdc0')}],[_0x551edc('0x263'),{'label':_0x551edc('0x1'),'type':'text'}],['pay_period',{'label':'Pay\x20Frequency','type':_0x551edc('0x8ff'),'remote-source':[_0x551edc('0x27'),'id',_0x551edc('0x263')],'sort':'none'}],['deduction_group',{'label':_0x551edc('0xd01'),'type':_0x551edc('0x8ff'),'remote-source':[_0x551edc('0x1085'),'id',_0x551edc('0x263')],'sort':'none'}],[_0x551edc('0x543'),{'label':_0x551edc('0xdb0'),'type':_0x551edc('0x8ff'),'remote-source':['PayslipTemplate','id',_0x551edc('0x263')]}],['department',{'label':_0x551edc('0x11b9'),'type':_0x551edc('0x1137'),'remote-source':[_0x551edc('0x2f6'),'id',_0x551edc('0xba3')],'sort':_0x551edc('0x1c1')}],[_0x551edc('0xb1d'),{'label':_0x551edc('0x901'),'type':'date','validation':''}],[_0x551edc('0x18a'),{'label':_0x551edc('0xb5b'),'type':_0x551edc('0x65d'),'validation':''}],[_0x551edc('0x9f9'),{'label':_0x551edc('0x935'),'type':_0x551edc('0x256'),'remote-source':[_0x551edc('0xc43'),'id',_0x551edc('0x263')]}],['status',{'label':_0x551edc('0xf9f'),'type':_0x551edc('0x8ff'),'source':[[_0x551edc('0xe15'),_0x551edc('0xe15')],[_0x551edc('0x101e'),_0x551edc('0x101e')]],'sort':_0x551edc('0x1c1')}]];}},{'key':'postRenderForm','value':function(_0x196957,_0x3d0c35){var _0x1b8563=_0x57f9ff;null!=_0x196957&&void 0x0!==_0x196957&&void 0x0!==_0x196957['id']&&null!=_0x196957['id']&&(_0x3d0c35['find'](_0x1b8563('0xf8b'))[_0x1b8563('0xba5')]('disabled',_0x1b8563('0x6e')),_0x3d0c35[_0x1b8563('0x6f3')](_0x1b8563('0xd4a'))[_0x1b8563('0xba5')](_0x1b8563('0x6e'),_0x1b8563('0x6e')));}},{'key':_0x57f9ff('0xc4f'),'value':function(_0x33385b,_0x54e692){var _0x20c7f5=_0x57f9ff;modJs=modJsList[_0x20c7f5('0x8ba')],modJs[_0x20c7f5('0xb52')](_0x33385b),$(_0x20c7f5('0x7ae'))[_0x20c7f5('0x9c2')](),$(_0x20c7f5('0x162'))[_0x20c7f5('0x41b')](),$('#PayrollDataButtons')[_0x20c7f5('0x41b')](),'Completed'===_0x54e692?($(_0x20c7f5('0x7a1'))[_0x20c7f5('0x9c2')](),$(_0x20c7f5('0x456'))[_0x20c7f5('0x9c2')]()):($(_0x20c7f5('0x7a1'))[_0x20c7f5('0x41b')](),$(_0x20c7f5('0x456'))[_0x20c7f5('0x41b')]()),modJs[_0x20c7f5('0x33')]([]);}},{'key':_0x57f9ff('0xd6b'),'value':function(_0x3a7c4b,_0x44ebfe){var _0x2f0919=_0x57f9ff,_0x5c04cf=_0x2f0919('0x9af');return _0x5c04cf=this[_0x2f0919('0x224')]?_0x5c04cf[_0x2f0919('0x166')]('_clone_',_0x2f0919('0xfe6')):_0x5c04cf[_0x2f0919('0x166')]('_clone_',''),_0x5c04cf=this[_0x2f0919('0xe70')]?_0x5c04cf[_0x2f0919('0x166')](_0x2f0919('0xac1'),''):_0x5c04cf[_0x2f0919('0x166')](_0x2f0919('0xac1'),''),_0x5c04cf=(_0x5c04cf=(_0x5c04cf=(_0x5c04cf=(_0x5c04cf=this['showEdit']?_0x5c04cf['replace'](_0x2f0919('0x260'),_0x2f0919('0x7a9')):_0x5c04cf[_0x2f0919('0x166')](_0x2f0919('0x260'),''))[_0x2f0919('0x166')](_0x2f0919('0xfac'),_0x2f0919('0xf7f')))['replace'](/_id_/g,_0x3a7c4b))['replace'](/_status_/g,_0x44ebfe[0x6]))[_0x2f0919('0x166')](/_BASE_/g,this['baseUrl']);}},{'key':_0x57f9ff('0x33'),'value':function(_0x495066){var _0x2d83b1=_0x57f9ff;$(_0x2d83b1('0x162'))['hide'](),$(_0x2d83b1('0x619'))[_0x2d83b1('0x9c2')](),$(_0x2d83b1('0xc15'))[_0x2d83b1('0x9c2')](),$(_0x2d83b1('0x7ae'))[_0x2d83b1('0x41b')](),modJsList[_0x2d83b1('0x8ba')][_0x2d83b1('0xb52')](null),_0x4c0c80(_0x3592e9(_0x1f2e0b[_0x2d83b1('0x98c')]),'get',this)[_0x2d83b1('0x4b0')](this,_0x495066);}},{'key':_0x57f9ff('0x115d'),'value':function(){return'https://icehrm.gitbook.io/icehrm/payroll-and-expenses/payroll-management';}}]),_0x1f2e0b;}(_0x2aa8d1['default']),_0x52f141=function(_0x449017){var _0x232004=_0x3c0bd2;_0x171140(_0x147406,_0x449017);var _0x192c9b=_0xf44213(_0x147406);function _0x147406(_0x97b25b,_0x4f6279,_0x37665c,_0x44a7ed){var _0x1d5c83=_0x3ab6,_0x5b5fb2;return _0xef1092(this,_0x147406),(_0x5b5fb2=_0x192c9b['call'](this,_0x97b25b,_0x4f6279,_0x37665c,_0x44a7ed))['cellDataUpdates']={},_0x5b5fb2[_0x1d5c83('0x235')]=null,_0x5b5fb2;}return _0x40b5be(_0x147406,[{'key':_0x232004('0x717'),'value':function(_0x50c920,_0x3b75ba,_0x32c6b3){var _0x4959fa=_0x232004;return modJs[_0x4959fa('0x232')](_0x50c920[_0x4959fa('0xac8')]('colId'),_0x50c920[_0x4959fa('0xac8')]('rowId'),_0x32c6b3),!0x0;}},{'key':_0x232004('0xb52'),'value':function(_0x33ce1d){this['payrollId']=_0x33ce1d;}},{'key':_0x232004('0xe58'),'value':function(_0x23d2d9,_0x420561){var _0x3374f7=_0x232004;return(_0x3374f7('0x8f6')===_0x23d2d9||_0x3374f7('0xb89')===_0x23d2d9||_0x3374f7('0x81d')===_0x23d2d9)&&(_0x420561[_0x3374f7('0x235')]=this['payrollId']),_0x420561;}},{'key':_0x232004('0x624'),'value':function(_0x442492){var _0x1367a9=_0x232004;return _0x442492[_0x1367a9('0x8c9')](''),_0x442492;}},{'key':_0x232004('0x2ba'),'value':function(){var _0x18d2f7=_0x232004;for(var _0x682da2='',_0x1bc7c4=0x0;_0x1bc7c4','gte':'>=','lt':'<','lte':'<='};return _0x3733d5[_0x46874d];};return'No\x20Lower\x20Limit'!==_0x153e99[_0x4e30c0('0x94c')]&&(_0x4cc302+=''['concat'](_0x153e99[_0x4e30c0('0xbd9')],'\x20')[_0x4e30c0('0x3cc')](_0x474a7b(_0x153e99[_0x4e30c0('0x94c')]),'\x20')),'No\x20Upper\x20Limit'!==_0x153e99[_0x4e30c0('0x29d')]&&(_0x4cc302+=_0x4e30c0('0x59f'),_0x4cc302+=''[_0x4e30c0('0x3cc')](_0x474a7b(_0x153e99['upperCondition']),'\x20')[_0x4e30c0('0x3cc')](_0x153e99[_0x4e30c0('0x771')],'\x20')),''===_0x4cc302?'Deduction\x20is\x20'[_0x4e30c0('0x3cc')](_0x153e99[_0x4e30c0('0x10d2')],_0x4e30c0('0x93a')):_0x4e30c0('0x4')[_0x4e30c0('0x3cc')](_0x4cc302,'\x20deduction\x20is\x20')['concat'](_0x153e99[_0x4e30c0('0x10d2')]);}}],['deduction_group',{'label':_0x24a69f('0xd01'),'type':'select2','allow-null':!0x1,'remote-source':[_0x24a69f('0x1085'),'id','name']}]];}}]),_0x33868b;}(_0x2aa8d1[_0x3c0bd2('0x544')]),_0x499416=function(_0x4205d8){var _0x463a0e=_0x3c0bd2;_0x171140(_0x3a2ff8,_0x4205d8);var _0x471499=_0xf44213(_0x3a2ff8);function _0x3a2ff8(){var _0x27ae66=_0x3ab6;return _0xef1092(this,_0x3a2ff8),_0x471499[_0x27ae66('0x1036')](this,arguments);}return _0x40b5be(_0x3a2ff8,[{'key':'getDataMapping','value':function(){return['id','name','description'];}},{'key':_0x463a0e('0x5d2'),'value':function(){var _0x2aaed1=_0x463a0e;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':_0x2aaed1('0x1')},{'sTitle':_0x2aaed1('0xf10')}];}},{'key':_0x463a0e('0xfe3'),'value':function(){var _0xcff693=_0x463a0e;return[['id',{'label':'ID','type':_0xcff693('0xdc0')}],['name',{'label':_0xcff693('0x1'),'type':_0xcff693('0x768'),'validation':''}],[_0xcff693('0xbfc'),{'label':_0xcff693('0xf10'),'type':_0xcff693('0xa2e'),'validation':'none'}]];}},{'key':_0x463a0e('0xd6b'),'value':function(_0x12993b){var _0x57f9d1=_0x463a0e,_0x57c458=_0x57f9d1('0xcac');return _0x57c458=(_0x57c458=_0x57c458[_0x57f9d1('0x166')](/_id_/g,_0x12993b))['replace'](/_BASE_/g,this[_0x57f9d1('0xed3')]);}},{'key':_0x463a0e('0x3de'),'value':function(_0x186723){var _0xef0ee7=_0x463a0e;if(confirm('Are\x20you\x20sure\x20you\x20want\x20to\x20delete\x20this\x20payroll\x20group?\x20Deleting\x20the\x20payroll\x20group\x20will\x20delete\x20all\x20the\x20Payroll\x20columns\x20and\x20Saved\x20calculations\x20attached\x20to\x20this\x20Payroll\x20Group')){var _0x130ecd={};_0x130ecd['id']=_0x186723;var _0x46b470=JSON[_0xef0ee7('0x591')](_0x130ecd),_0x1d315c=[];_0x1d315c[_0xef0ee7('0x234')]=[],_0x1d315c[_0xef0ee7('0xf53')]='deletePayrollGroupSuccessCallback',_0x1d315c[_0xef0ee7('0xb7f')]=_0xef0ee7('0xcaf'),this['customAction'](_0xef0ee7('0x3de'),_0xef0ee7('0x2f9'),_0x46b470,_0x1d315c);}}},{'key':_0x463a0e('0x1018'),'value':function(_0x1fb0ee){var _0x583a72=_0x463a0e;this[_0x583a72('0xb5d')](_0x583a72('0xfce'),'Payroll\x20Group\x20Deleted\x20'),this[_0x583a72('0x33')]([]);}},{'key':_0x463a0e('0xcaf'),'value':function(_0x4c29ed){var _0x2d6600=_0x463a0e;this['showMessage'](_0x2d6600('0x6bf'),_0x4c29ed);}}]),_0x3a2ff8;}(_0x2aa8d1[_0x3c0bd2('0x544')]),_0x5b81da=function(_0x388888){var _0x2e17a2=_0x3c0bd2;_0x171140(_0x1b1351,_0x388888);var _0x2affed=_0xf44213(_0x1b1351);function _0x1b1351(){var _0x3148a8=_0x3ab6;return _0xef1092(this,_0x1b1351),_0x2affed[_0x3148a8('0x1036')](this,arguments);}return _0x40b5be(_0x1b1351,[{'key':'getDataMapping','value':function(){var _0x291a65=_0x3ab6;return['id',_0x291a65('0x263')];}},{'key':_0x2e17a2('0x5d2'),'value':function(){return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':'Name'}];}},{'key':_0x2e17a2('0xfe3'),'value':function(){var _0x2b9e2c=_0x2e17a2;return[['id',{'label':'ID','type':_0x2b9e2c('0xdc0')}],['name',{'label':_0x2b9e2c('0x1'),'type':_0x2b9e2c('0x768'),'validation':''}],[_0x2b9e2c('0xac8'),{'label':_0x2b9e2c('0xe13'),'type':'datagroup','form':[[_0x2b9e2c('0x3f7'),{'label':_0x2b9e2c('0xb2b'),'type':_0x2b9e2c('0x8ff'),'sort':_0x2b9e2c('0x1c1'),'source':[[_0x2b9e2c('0xd3a'),_0x2b9e2c('0xd3a')],['Text',_0x2b9e2c('0x923')],[_0x2b9e2c('0xb32'),_0x2b9e2c('0xb32')],[_0x2b9e2c('0xecd'),'Company\x20Logo'],[_0x2b9e2c('0xa88'),_0x2b9e2c('0xa88')]]}],[_0x2b9e2c('0xf5'),{'label':_0x2b9e2c('0xd3a'),'type':'select2','sort':_0x2b9e2c('0x1c1'),'allow-null':!0x0,'null-label':_0x2b9e2c('0xa9f'),'remote-source':[_0x2b9e2c('0xc43'),'id',_0x2b9e2c('0x263')]}],[_0x2b9e2c('0xf90'),{'label':'Label','type':_0x2b9e2c('0x768'),'validation':_0x2b9e2c('0x1c1')}],['text',{'label':_0x2b9e2c('0x923'),'type':'textarea','validation':'none'}],[_0x2b9e2c('0x11e7'),{'label':'Status','type':_0x2b9e2c('0x8ff'),'sort':_0x2b9e2c('0x1c1'),'source':[[_0x2b9e2c('0x8e'),_0x2b9e2c('0x8e')],['Hide',_0x2b9e2c('0x912')]]}]],'html':_0x2b9e2c('0xc6a'),'validation':_0x2b9e2c('0x1c1'),'custom-validate-function':function(_0xc3de3e){var _0x223f1b=_0x2b9e2c,_0x39cead={'valid':!0x0};return _0x223f1b('0xd3a')===_0xc3de3e[_0x223f1b('0x3f7')]?_0x223f1b('0xde9')===_0xc3de3e[_0x223f1b('0xf5')]&&(_0x39cead[_0x223f1b('0xe6b')]=!0x1,_0x39cead[_0x223f1b('0xa1a')]='Please\x20select\x20payroll\x20column'):_0xc3de3e[_0x223f1b('0xf5')]='NULL',_0x223f1b('0x923')===_0xc3de3e[_0x223f1b('0x3f7')]&&''===_0xc3de3e[_0x223f1b('0x768')]&&(_0x39cead[_0x223f1b('0xe6b')]=!0x1,_0x39cead[_0x223f1b('0xa1a')]='Text\x20can\x20not\x20be\x20empty'),_0x39cead[_0x223f1b('0x10dd')]=_0xc3de3e,_0x39cead;}}]];}}]),_0x1b1351;}(_0x2aa8d1[_0x3c0bd2('0x544')]);_0x2f4fd0[_0x3c0bd2('0xddc')]={'PaydayAdapter':_0x5b63c4,'PayrollAdapter':_0x1b1f2c,'PayrollDataAdapter':_0x52f141,'PayrollColumnAdapter':_0x2cc486,'PayrollColumnTemplateAdapter':_0xbc5e36,'PayrollEmployeeAdapter':_0x519735,'DeductionAdapter':_0x25450d,'DeductionGroupAdapter':_0x499416,'PayslipTemplateAdapter':_0x5b81da};},{'../../../api/AdapterBase':0x39,'../../../api/TableEditAdapter':0x48,'codemirror':'codemirror','codemirror/addon/display/autorefresh':0x72,'codemirror/addon/edit/closebrackets':0x73,'codemirror/mode/javascript/javascript':0x75}],0x28:[function(_0x36a0ed,_0x4efb34,_0x4170fe){var _0x25ee1e=_0x404097;'use strict';var _0x46ba0b=_0x36a0ed(_0x25ee1e('0x358'));window[_0x25ee1e('0x112e')]=_0x46ba0b[_0x25ee1e('0x112e')];},{'./lib':0x29}],0x29:[function(_0x3e8db3,_0xbb1f86,_0x127ea2){var _0xffa3e3=_0x404097;'use strict';var _0x3a19bf;function _0x2ef1eb(_0x2c4978){var _0x48eb79=_0x3ab6;return(_0x2ef1eb=_0x48eb79('0xae9')==typeof Symbol&&_0x48eb79('0x245')==typeof Symbol[_0x48eb79('0x78e')]?function(_0x48793a){return typeof _0x48793a;}:function(_0x31ff8b){var _0x123f74=_0x48eb79;return _0x31ff8b&&_0x123f74('0xae9')==typeof Symbol&&_0x31ff8b[_0x123f74('0x3c6')]===Symbol&&_0x31ff8b!==Symbol['prototype']?_0x123f74('0x245'):typeof _0x31ff8b;})(_0x2c4978);}function _0x5ae3c9(_0x10f125,_0x3df3c4){if(!(_0x10f125 instanceof _0x3df3c4))throw new TypeError('Cannot\x20call\x20a\x20class\x20as\x20a\x20function');}function _0x3ed57c(_0x226576,_0x11977a){var _0x2f8f70=_0x3ab6;for(var _0x5f076e=0x0;_0x5f076e<_0x11977a[_0x2f8f70('0x525')];_0x5f076e++){var _0x5f18d2=_0x11977a[_0x5f076e];_0x5f18d2[_0x2f8f70('0x156')]=_0x5f18d2[_0x2f8f70('0x156')]||!0x1,_0x5f18d2[_0x2f8f70('0xbb2')]=!0x0,_0x2f8f70('0x832')in _0x5f18d2&&(_0x5f18d2['writable']=!0x0),Object[_0x2f8f70('0xa95')](_0x226576,_0x5f18d2[_0x2f8f70('0x1192')],_0x5f18d2);}}function _0x4173c4(_0x4b976c,_0x5fd145,_0x162975){var _0xe3d58a=_0x3ab6;return(_0x4173c4=_0xe3d58a('0x56')!=typeof Reflect&&Reflect[_0xe3d58a('0x33')]?Reflect[_0xe3d58a('0x33')]:function(_0x47298a,_0x336b3d,_0x34aabb){var _0x553dbf=_0xe3d58a,_0x552541=function(_0x5623b6,_0xbd51eb){var _0x51eabb=_0x3ab6;for(;!Object['prototype']['hasOwnProperty'][_0x51eabb('0x4b0')](_0x5623b6,_0xbd51eb)&&null!==(_0x5623b6=_0x40aa12(_0x5623b6)););return _0x5623b6;}(_0x47298a,_0x336b3d);if(_0x552541){var _0x2179c5=Object['getOwnPropertyDescriptor'](_0x552541,_0x336b3d);return _0x2179c5['get']?_0x2179c5[_0x553dbf('0x33')]['call'](_0x34aabb):_0x2179c5[_0x553dbf('0x832')];}})(_0x4b976c,_0x5fd145,_0x162975||_0x4b976c);}function _0x39ff91(_0x47f4bf,_0x5580ba){var _0x4e928d=_0x3ab6;return!_0x5580ba||_0x4e928d('0x21e')!==_0x2ef1eb(_0x5580ba)&&'function'!=typeof _0x5580ba?function(_0x4a40d5){var _0x138c51=_0x4e928d;if(void 0x0===_0x4a40d5)throw new ReferenceError(_0x138c51('0x2e9'));return _0x4a40d5;}(_0x47f4bf):_0x5580ba;}function _0x28970c(){var _0x952ac9=_0x3ab6;if(_0x952ac9('0x56')==typeof Reflect||!Reflect[_0x952ac9('0x6ea')])return!0x1;if(Reflect[_0x952ac9('0x6ea')][_0x952ac9('0x16e')])return!0x1;if(_0x952ac9('0xae9')==typeof Proxy)return!0x0;try{return Date[_0x952ac9('0x98c')]['toString'][_0x952ac9('0x4b0')](Reflect[_0x952ac9('0x6ea')](Date,[],function(){})),!0x0;}catch(_0x17b570){return!0x1;}}function _0x40aa12(_0x52832b){var _0x205443=_0x3ab6;return(_0x40aa12=Object[_0x205443('0x6c2')]?Object[_0x205443('0x10c0')]:function(_0x4c3333){var _0x2a6b55=_0x205443;return _0x4c3333[_0x2a6b55('0x11e6')]||Object[_0x2a6b55('0x10c0')](_0x4c3333);})(_0x52832b);}function _0x596748(_0x41412a,_0x3dd1da){var _0x8d0a5=_0x3ab6;return(_0x596748=Object[_0x8d0a5('0x6c2')]||function(_0x2b0e23,_0x320c07){var _0x32cd2c=_0x8d0a5;return _0x2b0e23[_0x32cd2c('0x11e6')]=_0x320c07,_0x2b0e23;})(_0x41412a,_0x3dd1da);}var _0x1e731e=function(_0x5646dd){var _0x67cdd0=_0x3ab6;!function(_0x48cff8,_0x15693c){var _0x44fa72=_0x3ab6;if(_0x44fa72('0xae9')!=typeof _0x15693c&&null!==_0x15693c)throw new TypeError('Super\x20expression\x20must\x20either\x20be\x20null\x20or\x20a\x20function');_0x48cff8[_0x44fa72('0x98c')]=Object[_0x44fa72('0x5c2')](_0x15693c&&_0x15693c[_0x44fa72('0x98c')],{'constructor':{'value':_0x48cff8,'writable':!0x0,'configurable':!0x0}}),_0x15693c&&_0x596748(_0x48cff8,_0x15693c);}(_0x25d462,_0x5646dd);var _0x5ef3c2,_0x5adac8,_0x4dac65,_0x31750b,_0x533c96=(_0x5ef3c2=_0x25d462,function(){var _0x358a3b=_0x3ab6,_0x305cb1,_0x2a3f53=_0x40aa12(_0x5ef3c2);if(_0x28970c()){var _0x2b2b4e=_0x40aa12(this)[_0x358a3b('0x3c6')];_0x305cb1=Reflect[_0x358a3b('0x6ea')](_0x2a3f53,arguments,_0x2b2b4e);}else _0x305cb1=_0x2a3f53[_0x358a3b('0x1036')](this,arguments);return _0x39ff91(this,_0x305cb1);});function _0x25d462(){return _0x5ae3c9(this,_0x25d462),_0x533c96['apply'](this,arguments);}return _0x5adac8=_0x25d462,(_0x4dac65=[{'key':_0x67cdd0('0x315'),'value':function(){var _0x234046=_0x67cdd0;return['id',_0x234046('0x9de'),_0x234046('0xcdd'),_0x234046('0x846'),_0x234046('0x832')];}},{'key':_0x67cdd0('0x5d2'),'value':function(){var _0x2abdb6=_0x67cdd0;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':_0x2abdb6('0x69e')},{'sTitle':'Module'},{'sTitle':_0x2abdb6('0xe00')},{'sTitle':_0x2abdb6('0x1ac')}];}},{'key':_0x67cdd0('0xfe3'),'value':function(){var _0x31a282=_0x67cdd0;return[['id',{'label':'ID','type':_0x31a282('0xdc0')}],[_0x31a282('0x9de'),{'label':'User\x20Level','type':'placeholder','validation':_0x31a282('0x1c1')}],['module_id',{'label':'Module','type':_0x31a282('0x7c2'),'remote-source':['Module','id',_0x31a282('0x615')]}],[_0x31a282('0x846'),{'label':_0x31a282('0xe00'),'type':_0x31a282('0x7c2'),'validation':_0x31a282('0x1c1')}],[_0x31a282('0x832'),{'label':_0x31a282('0x1ac'),'type':_0x31a282('0x768'),'validation':_0x31a282('0x1c1')}]];}},{'key':_0x67cdd0('0xa68'),'value':function(){var _0x41b90a=_0x67cdd0;return[[_0x41b90a('0xcdd'),{'label':_0x41b90a('0xb0'),'type':_0x41b90a('0x1137'),'allow-null':!0x0,'null-label':_0x41b90a('0x147'),'remote-source':[_0x41b90a('0xb0'),'id',_0x41b90a('0x615')]}]];}},{'key':_0x67cdd0('0xd6b'),'value':function(_0x14b171,_0x53d144){var _0x1fbc56=_0x67cdd0,_0x3b1a55=_0x1fbc56('0x835');return _0x3b1a55=(_0x3b1a55=_0x3b1a55[_0x1fbc56('0x166')](/_id_/g,_0x14b171))[_0x1fbc56('0x166')](/_BASE_/g,this['baseUrl']);}},{'key':_0x67cdd0('0x3f5'),'value':function(_0x15374d){var _0x162577=_0x67cdd0;return _0x162577('0x832')===_0x15374d?'meta':'';}},{'key':_0x67cdd0('0x1a'),'value':function(_0x23e683){var _0x400a9d=_0x67cdd0;_0x4173c4(_0x40aa12(_0x25d462[_0x400a9d('0x98c')]),_0x400a9d('0x1a'),this)['call'](this,_0x23e683),$(_0x400a9d('0x6b6'))[_0x400a9d('0xb07')](_0x23e683[_0x400a9d('0xbfc')]);}}])&&_0x3ed57c(_0x5adac8[_0x67cdd0('0x98c')],_0x4dac65),_0x31750b&&_0x3ed57c(_0x5adac8,_0x31750b),_0x25d462;}(((_0x3a19bf=_0x3e8db3(_0xffa3e3('0xe88')))&&_0x3a19bf[_0xffa3e3('0x114c')]?_0x3a19bf:{'default':_0x3a19bf})[_0xffa3e3('0x544')]);_0xbb1f86[_0xffa3e3('0xddc')]={'PermissionAdapter':_0x1e731e};},{'../../../api/AdapterBase':0x39}],0x2a:[function(_0x13f264,_0x263b98,_0x4e3b21){var _0x35e218=_0x404097;'use strict';var _0x16fdb9=_0x13f264(_0x35e218('0x358'));window['ProjectAdapter']=_0x16fdb9[_0x35e218('0x9d')],window[_0x35e218('0x363')]=_0x16fdb9[_0x35e218('0x363')];},{'./lib':0x2b}],0x2b:[function(_0x2d03d1,_0x33f366,_0x3c60be){var _0x307424=_0x404097;'use strict';var _0x557858,_0x463c50=(_0x557858=_0x2d03d1(_0x307424('0x4ac')))&&_0x557858[_0x307424('0x114c')]?_0x557858:{'default':_0x557858};function _0x37e5ef(_0x65f70e){var _0xec93d5=_0x307424;return(_0x37e5ef=_0xec93d5('0xae9')==typeof Symbol&&_0xec93d5('0x245')==typeof Symbol[_0xec93d5('0x78e')]?function(_0x421356){return typeof _0x421356;}:function(_0x5cc9c8){var _0x3a2984=_0xec93d5;return _0x5cc9c8&&'function'==typeof Symbol&&_0x5cc9c8[_0x3a2984('0x3c6')]===Symbol&&_0x5cc9c8!==Symbol['prototype']?_0x3a2984('0x245'):typeof _0x5cc9c8;})(_0x65f70e);}function _0x5d3d4d(_0x492b45,_0x10881f){if(!(_0x492b45 instanceof _0x10881f))throw new TypeError('Cannot\x20call\x20a\x20class\x20as\x20a\x20function');}function _0x3f2d4c(_0x5705b1,_0x5a53f1){var _0x1afb8d=_0x307424;for(var _0x39e846=0x0;_0x39e846<_0x5a53f1[_0x1afb8d('0x525')];_0x39e846++){var _0x3dcdeb=_0x5a53f1[_0x39e846];_0x3dcdeb[_0x1afb8d('0x156')]=_0x3dcdeb[_0x1afb8d('0x156')]||!0x1,_0x3dcdeb[_0x1afb8d('0xbb2')]=!0x0,'value'in _0x3dcdeb&&(_0x3dcdeb[_0x1afb8d('0x4db')]=!0x0),Object[_0x1afb8d('0xa95')](_0x5705b1,_0x3dcdeb[_0x1afb8d('0x1192')],_0x3dcdeb);}}function _0x3d2cc7(_0x33ff8e,_0x513d56,_0x16398f){return _0x513d56&&_0x3f2d4c(_0x33ff8e['prototype'],_0x513d56),_0x16398f&&_0x3f2d4c(_0x33ff8e,_0x16398f),_0x33ff8e;}function _0x2c5b8d(_0x219fdd){return function(){var _0x33e1b6=_0x3ab6,_0x231736,_0x12947e=_0x1010b4(_0x219fdd);if(_0x2b79cf()){var _0x1a2762=_0x1010b4(this)[_0x33e1b6('0x3c6')];_0x231736=Reflect[_0x33e1b6('0x6ea')](_0x12947e,arguments,_0x1a2762);}else _0x231736=_0x12947e[_0x33e1b6('0x1036')](this,arguments);return _0x540295(this,_0x231736);};}function _0x540295(_0x2b50c9,_0x4d5caa){var _0x5e2448=_0x307424;return!_0x4d5caa||_0x5e2448('0x21e')!==_0x37e5ef(_0x4d5caa)&&'function'!=typeof _0x4d5caa?function(_0x17bf82){var _0x5ce6d2=_0x5e2448;if(void 0x0===_0x17bf82)throw new ReferenceError(_0x5ce6d2('0x2e9'));return _0x17bf82;}(_0x2b50c9):_0x4d5caa;}function _0x2b79cf(){var _0x4e7fe4=_0x307424;if(_0x4e7fe4('0x56')==typeof Reflect||!Reflect['construct'])return!0x1;if(Reflect[_0x4e7fe4('0x6ea')]['sham'])return!0x1;if(_0x4e7fe4('0xae9')==typeof Proxy)return!0x0;try{return Date[_0x4e7fe4('0x98c')]['toString']['call'](Reflect['construct'](Date,[],function(){})),!0x0;}catch(_0x3c75cf){return!0x1;}}function _0x1010b4(_0x227846){var _0x469105=_0x307424;return(_0x1010b4=Object[_0x469105('0x6c2')]?Object[_0x469105('0x10c0')]:function(_0x1d150b){var _0x3518b7=_0x469105;return _0x1d150b[_0x3518b7('0x11e6')]||Object[_0x3518b7('0x10c0')](_0x1d150b);})(_0x227846);}function _0x389fd4(_0x3e9c18,_0x209f88){var _0x13fc18=_0x307424;if(_0x13fc18('0xae9')!=typeof _0x209f88&&null!==_0x209f88)throw new TypeError(_0x13fc18('0x409'));_0x3e9c18[_0x13fc18('0x98c')]=Object['create'](_0x209f88&&_0x209f88[_0x13fc18('0x98c')],{'constructor':{'value':_0x3e9c18,'writable':!0x0,'configurable':!0x0}}),_0x209f88&&_0x4f8f0a(_0x3e9c18,_0x209f88);}function _0x4f8f0a(_0x419d61,_0x3de513){var _0x181d87=_0x307424;return(_0x4f8f0a=Object[_0x181d87('0x6c2')]||function(_0x40a27d,_0x2b1355){return _0x40a27d['__proto__']=_0x2b1355,_0x40a27d;})(_0x419d61,_0x3de513);}var _0x2245e3=function(_0x92d7e1){var _0x25d18c=_0x307424;_0x389fd4(_0x1a8b6e,_0x92d7e1);var _0x126656=_0x2c5b8d(_0x1a8b6e);function _0x1a8b6e(_0x117c4f,_0x25b930,_0x36cac6,_0x38032d){var _0x3d94d3=_0x3ab6,_0x3fd5b2;return _0x5d3d4d(this,_0x1a8b6e),(_0x3fd5b2=_0x126656[_0x3d94d3('0x4b0')](this,_0x117c4f,_0x25b930,_0x36cac6,_0x38032d))[_0x3d94d3('0x428')]={},_0x3fd5b2[_0x3d94d3('0xdc3')]={},_0x3fd5b2[_0x3d94d3('0xe7e')]={},_0x3fd5b2[_0x3d94d3('0x33f')]={},_0x3fd5b2;}return _0x3d2cc7(_0x1a8b6e,[{'key':_0x25d18c('0x315'),'value':function(){var _0x55a703=_0x25d18c;return['id','name',_0x55a703('0x3f0')];}},{'key':_0x25d18c('0x5d2'),'value':function(){var _0x4b168e=_0x25d18c;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':_0x4b168e('0x1')},{'sTitle':_0x4b168e('0x620')}];}},{'key':_0x25d18c('0x5f6'),'value':function(){var _0x1dba1b=_0x25d18c;return[{'title':'Name','dataIndex':_0x1dba1b('0x263'),'sorter':!0x0},{'title':_0x1dba1b('0x620'),'dataIndex':_0x1dba1b('0x3f0'),'sorter':!0x0}];}},{'key':_0x25d18c('0xfe3'),'value':function(){var _0x3f8489=_0x25d18c;return this[_0x3f8489('0xfd1')]?[['id',{'label':'ID','type':'hidden'}],[_0x3f8489('0x263'),{'label':_0x3f8489('0x1'),'type':_0x3f8489('0x768')}],['client',{'label':_0x3f8489('0x620'),'type':_0x3f8489('0x1137'),'allow-null':!0x0,'remote-source':['Client','id',_0x3f8489('0x263')]}],[_0x3f8489('0xddf'),{'label':'Details','type':'textarea','validation':_0x3f8489('0x1c1')}],[_0x3f8489('0x11e7'),{'label':'Status','type':_0x3f8489('0x8ff'),'source':[['Active','Active'],[_0x3f8489('0xbb9'),'On\x20Hold'],[_0x3f8489('0x101e'),_0x3f8489('0x101e')],[_0x3f8489('0xed0'),_0x3f8489('0xed0')]]}]]:[['id',{'label':'ID','type':_0x3f8489('0xdc0')}],[_0x3f8489('0x263'),{'label':_0x3f8489('0x1'),'type':'placeholder'}],[_0x3f8489('0x3f0'),{'label':_0x3f8489('0x620'),'type':'placeholder','allow-null':!0x0,'remote-source':[_0x3f8489('0x620'),'id','name']}],[_0x3f8489('0xddf'),{'label':'Details','type':_0x3f8489('0x7c2'),'validation':_0x3f8489('0x1c1')}],['status',{'label':_0x3f8489('0xf9f'),'type':'select','source':[['Active','Active'],[_0x3f8489('0xbb9'),_0x3f8489('0xbb9')],[_0x3f8489('0x101e'),_0x3f8489('0x101e')],['Dropped',_0x3f8489('0xed0')]]}]];}},{'key':_0x25d18c('0x115d'),'value':function(){var _0x256adc=_0x25d18c;return _0x256adc('0x965');}}]),_0x1a8b6e;}(_0x463c50[_0x307424('0x544')]),_0x27f44c=function(_0x43beaf){var _0x288811=_0x307424;_0x389fd4(_0x356489,_0x43beaf);var _0x1f42e7=_0x2c5b8d(_0x356489);function _0x356489(_0x561930,_0x86e286,_0x517c77,_0x34b0ac){var _0x582721=_0x3ab6,_0xadc156;return _0x5d3d4d(this,_0x356489),(_0xadc156=_0x1f42e7[_0x582721('0x4b0')](this,_0x561930,_0x86e286,_0x517c77,_0x34b0ac))['fieldNameMap']={},_0xadc156[_0x582721('0xdc3')]={},_0xadc156[_0x582721('0xe7e')]={},_0xadc156[_0x582721('0x33f')]={},_0xadc156;}return _0x3d2cc7(_0x356489,[{'key':_0x288811('0x315'),'value':function(){var _0x178c0d=_0x288811;return['id','employee',_0x178c0d('0xef0')];}},{'key':_0x288811('0x5d2'),'value':function(){var _0x33dfc5=_0x288811;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':_0x33dfc5('0x3e1')},{'sTitle':_0x33dfc5('0xad1')}];}},{'key':'getTableColumns','value':function(){var _0x2ca52d=_0x288811;return[{'title':_0x2ca52d('0x3e1'),'dataIndex':'employee','sorter':!0x0},{'title':_0x2ca52d('0xad1'),'dataIndex':_0x2ca52d('0xef0'),'sorter':!0x0}];}},{'key':_0x288811('0xfe3'),'value':function(){var _0x3eb78b=_0x288811;return[['id',{'label':'ID','type':_0x3eb78b('0xdc0')}],[_0x3eb78b('0x55e'),{'label':_0x3eb78b('0x3e1'),'type':_0x3eb78b('0x1137'),'remote-source':[_0x3eb78b('0x3e1'),'id','first_name+last_name']}],[_0x3eb78b('0xef0'),{'label':_0x3eb78b('0xad1'),'type':_0x3eb78b('0x1137'),'remote-source':[_0x3eb78b('0xad1'),'id','name']}],['details',{'label':_0x3eb78b('0xf10'),'type':_0x3eb78b('0xa2e'),'validation':_0x3eb78b('0x1c1')}]];}},{'key':'getFilters','value':function(){var _0x177dfe=_0x288811;return[[_0x177dfe('0x55e'),{'label':_0x177dfe('0x3e1'),'type':_0x177dfe('0x1137'),'remote-source':[_0x177dfe('0x3e1'),'id',_0x177dfe('0x2d')]}]];}},{'key':_0x288811('0x115d'),'value':function(){var _0x48f578=_0x288811;return _0x48f578('0x965');}}]),_0x356489;}(_0x463c50['default']);_0x33f366[_0x307424('0xddc')]={'ProjectAdapter':_0x2245e3,'EmployeeProjectAdapter':_0x27f44c};},{'../../../api/ReactModalAdapterBase':0x46}],0x2c:[function(_0x2f127d,_0x22eb27,_0x4e3337){var _0xb0465a=_0x404097;'use strict';var _0x23ef14,_0x5bc916=_0x2f127d(_0xb0465a('0x358')),_0x39c995=(_0x23ef14=_0x2f127d('../../../api/IceDataPipe'))&&_0x23ef14[_0xb0465a('0x114c')]?_0x23ef14:{'default':_0x23ef14};window['initAdminQualifications']=function(_0x1135a6){var _0x6d3c50=_0xb0465a,_0x2d035d=[];_0x2d035d[_0x6d3c50('0x131')]=new _0x5bc916['SkillAdapter']('Skill'),_0x2d035d[_0x6d3c50('0x131')]['setObjectTypeName'](_0x6d3c50('0xf6e')),_0x2d035d['tabSkill'][_0x6d3c50('0x11cf')](new _0x39c995['default'](_0x2d035d['tabSkill'])),_0x2d035d[_0x6d3c50('0x131')][_0x6d3c50('0xad3')](_0x1135a6['permissions']['Skill']),_0x2d035d[_0x6d3c50('0x8ad')]=new _0x5bc916[(_0x6d3c50('0x440'))]('Education'),_0x2d035d[_0x6d3c50('0x8ad')][_0x6d3c50('0xb3e')]('Education'),_0x2d035d[_0x6d3c50('0x8ad')][_0x6d3c50('0x11cf')](new _0x39c995[(_0x6d3c50('0x544'))](_0x2d035d[_0x6d3c50('0x8ad')])),_0x2d035d[_0x6d3c50('0x8ad')]['setAccess'](_0x1135a6[_0x6d3c50('0x73f')][_0x6d3c50('0x94a')]),_0x2d035d['tabCertification']=new _0x5bc916['CertificationAdapter'](_0x6d3c50('0xe44')),_0x2d035d[_0x6d3c50('0x1129')][_0x6d3c50('0xb3e')]('Education'),_0x2d035d['tabCertification'][_0x6d3c50('0x11cf')](new _0x39c995[(_0x6d3c50('0x544'))](_0x2d035d[_0x6d3c50('0x1129')])),_0x2d035d[_0x6d3c50('0x1129')][_0x6d3c50('0xad3')](_0x1135a6[_0x6d3c50('0x73f')][_0x6d3c50('0xe44')]),_0x2d035d[_0x6d3c50('0xd2c')]=new _0x5bc916[(_0x6d3c50('0x526'))](_0x6d3c50('0xb20')),_0x2d035d[_0x6d3c50('0xd2c')][_0x6d3c50('0xb3e')]('Language'),_0x2d035d[_0x6d3c50('0xd2c')][_0x6d3c50('0x11cf')](new _0x39c995['default'](_0x2d035d[_0x6d3c50('0xd2c')])),_0x2d035d['tabLanguage'][_0x6d3c50('0xad3')](_0x1135a6[_0x6d3c50('0x73f')][_0x6d3c50('0xb20')]),window[_0x6d3c50('0x7db')]=_0x2d035d[_0x6d3c50('0x131')],window[_0x6d3c50('0x336')]=_0x2d035d;};},{'../../../api/IceDataPipe':0x3f,'./lib':0x2d}],0x2d:[function(_0x2f1f4e,_0x52ecbc,_0x58058a){var _0x4778da=_0x404097;'use strict';_0x5124bb(_0x2f1f4e(_0x4778da('0xe88')));var _0x5008f6=_0x5124bb(_0x2f1f4e('../../../api/ReactModalAdapterBase'));function _0x5124bb(_0x484b13){var _0x109f90=_0x4778da;return _0x484b13&&_0x484b13[_0x109f90('0x114c')]?_0x484b13:{'default':_0x484b13};}function _0x3db35f(_0x521143){var _0x2a53de=_0x4778da;return(_0x3db35f=_0x2a53de('0xae9')==typeof Symbol&&_0x2a53de('0x245')==typeof Symbol[_0x2a53de('0x78e')]?function(_0x1bb9cd){return typeof _0x1bb9cd;}:function(_0x1c5d70){var _0x3a56f0=_0x2a53de;return _0x1c5d70&&'function'==typeof Symbol&&_0x1c5d70[_0x3a56f0('0x3c6')]===Symbol&&_0x1c5d70!==Symbol[_0x3a56f0('0x98c')]?_0x3a56f0('0x245'):typeof _0x1c5d70;})(_0x521143);}function _0x1eb95e(_0x3046a7,_0x4064e9){var _0x467d04=_0x4778da;if(!(_0x3046a7 instanceof _0x4064e9))throw new TypeError(_0x467d04('0x202'));}function _0x5c4c63(_0x42bc62,_0x2953f8){var _0x18a05f=_0x4778da;for(var _0xaae4ec=0x0;_0xaae4ec<_0x2953f8[_0x18a05f('0x525')];_0xaae4ec++){var _0x1589ca=_0x2953f8[_0xaae4ec];_0x1589ca[_0x18a05f('0x156')]=_0x1589ca[_0x18a05f('0x156')]||!0x1,_0x1589ca[_0x18a05f('0xbb2')]=!0x0,_0x18a05f('0x832')in _0x1589ca&&(_0x1589ca['writable']=!0x0),Object[_0x18a05f('0xa95')](_0x42bc62,_0x1589ca['key'],_0x1589ca);}}function _0x1107f9(_0x243b9e,_0x1f606b,_0x4c231f){return _0x1f606b&&_0x5c4c63(_0x243b9e['prototype'],_0x1f606b),_0x4c231f&&_0x5c4c63(_0x243b9e,_0x4c231f),_0x243b9e;}function _0x2618bb(_0x556e00){return function(){var _0x2d2184=_0x3ab6,_0x388f5d,_0x29e206=_0x353646(_0x556e00);if(_0x2582b3()){var _0x2d96ba=_0x353646(this)[_0x2d2184('0x3c6')];_0x388f5d=Reflect[_0x2d2184('0x6ea')](_0x29e206,arguments,_0x2d96ba);}else _0x388f5d=_0x29e206[_0x2d2184('0x1036')](this,arguments);return _0x19a00e(this,_0x388f5d);};}function _0x19a00e(_0x17dff6,_0x266061){var _0x29cf0c=_0x4778da;return!_0x266061||'object'!==_0x3db35f(_0x266061)&&_0x29cf0c('0xae9')!=typeof _0x266061?function(_0xafe1e4){if(void 0x0===_0xafe1e4)throw new ReferenceError('this\x20hasn\x27t\x20been\x20initialised\x20-\x20super()\x20hasn\x27t\x20been\x20called');return _0xafe1e4;}(_0x17dff6):_0x266061;}function _0x2582b3(){var _0x50ac2d=_0x4778da;if(_0x50ac2d('0x56')==typeof Reflect||!Reflect[_0x50ac2d('0x6ea')])return!0x1;if(Reflect[_0x50ac2d('0x6ea')][_0x50ac2d('0x16e')])return!0x1;if(_0x50ac2d('0xae9')==typeof Proxy)return!0x0;try{return Date['prototype'][_0x50ac2d('0x537')][_0x50ac2d('0x4b0')](Reflect[_0x50ac2d('0x6ea')](Date,[],function(){})),!0x0;}catch(_0x576568){return!0x1;}}function _0x353646(_0xbfa8cf){var _0x5122c3=_0x4778da;return(_0x353646=Object['setPrototypeOf']?Object[_0x5122c3('0x10c0')]:function(_0x5a955c){var _0x400c62=_0x5122c3;return _0x5a955c[_0x400c62('0x11e6')]||Object[_0x400c62('0x10c0')](_0x5a955c);})(_0xbfa8cf);}function _0x48bf17(_0x1a22a3,_0x55c8f2){var _0x207b42=_0x4778da;if('function'!=typeof _0x55c8f2&&null!==_0x55c8f2)throw new TypeError('Super\x20expression\x20must\x20either\x20be\x20null\x20or\x20a\x20function');_0x1a22a3['prototype']=Object[_0x207b42('0x5c2')](_0x55c8f2&&_0x55c8f2[_0x207b42('0x98c')],{'constructor':{'value':_0x1a22a3,'writable':!0x0,'configurable':!0x0}}),_0x55c8f2&&_0x44272b(_0x1a22a3,_0x55c8f2);}function _0x44272b(_0x234672,_0x5de460){var _0x4ba05d=_0x4778da;return(_0x44272b=Object[_0x4ba05d('0x6c2')]||function(_0x38dd64,_0x450f76){var _0x2ec22a=_0x4ba05d;return _0x38dd64[_0x2ec22a('0x11e6')]=_0x450f76,_0x38dd64;})(_0x234672,_0x5de460);}var _0x393b7a=function(_0x571da3){var _0x223f65=_0x4778da;_0x48bf17(_0x2e3a89,_0x571da3);var _0x4d143d=_0x2618bb(_0x2e3a89);function _0x2e3a89(){var _0x4e7a74=_0x3ab6;return _0x1eb95e(this,_0x2e3a89),_0x4d143d[_0x4e7a74('0x1036')](this,arguments);}return _0x1107f9(_0x2e3a89,[{'key':_0x223f65('0x315'),'value':function(){var _0x414a57=_0x223f65;return['id',_0x414a57('0x263'),_0x414a57('0xbfc')];}},{'key':_0x223f65('0x5d2'),'value':function(){var _0x1947c5=_0x223f65;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':_0x1947c5('0x1')},{'sTitle':_0x1947c5('0xef')}];}},{'key':_0x223f65('0xfe3'),'value':function(){var _0x44cc4e=_0x223f65;return[['id',{'label':'ID','type':_0x44cc4e('0xdc0')}],[_0x44cc4e('0x263'),{'label':_0x44cc4e('0x1'),'type':_0x44cc4e('0x768')}],['description',{'label':_0x44cc4e('0xef'),'type':'textarea','validation':''}]];}},{'key':_0x223f65('0x5f6'),'value':function(){var _0x44e2b6=_0x223f65;return[{'title':_0x44e2b6('0x1'),'dataIndex':'name','sorter':!0x0},{'title':_0x44e2b6('0xef'),'dataIndex':'description'}];}}]),_0x2e3a89;}(_0x5008f6['default']),_0x2052b3=function(_0x148d6f){var _0x42ceb3=_0x4778da;_0x48bf17(_0x140ba7,_0x148d6f);var _0x49c7fc=_0x2618bb(_0x140ba7);function _0x140ba7(){return _0x1eb95e(this,_0x140ba7),_0x49c7fc['apply'](this,arguments);}return _0x1107f9(_0x140ba7,[{'key':'getDataMapping','value':function(){var _0x5d6aff=_0x3ab6;return['id',_0x5d6aff('0x263'),_0x5d6aff('0xbfc')];}},{'key':_0x42ceb3('0x5d2'),'value':function(){var _0x57916a=_0x42ceb3;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':_0x57916a('0x1')},{'sTitle':_0x57916a('0xef')}];}},{'key':_0x42ceb3('0xfe3'),'value':function(){var _0x240f83=_0x42ceb3;return[['id',{'label':'ID','type':'hidden'}],['name',{'label':_0x240f83('0x1'),'type':_0x240f83('0x768')}],[_0x240f83('0xbfc'),{'label':'Description','type':_0x240f83('0xa2e'),'validation':''}]];}},{'key':_0x42ceb3('0x5f6'),'value':function(){var _0x2a4321=_0x42ceb3;return[{'title':_0x2a4321('0x1'),'dataIndex':_0x2a4321('0x263'),'sorter':!0x0},{'title':_0x2a4321('0xef'),'dataIndex':'description'}];}}]),_0x140ba7;}(_0x5008f6[_0x4778da('0x544')]),_0x596a70=function(_0x2252ca){var _0x371eeb=_0x4778da;_0x48bf17(_0x54b3f3,_0x2252ca);var _0xe48903=_0x2618bb(_0x54b3f3);function _0x54b3f3(){var _0x551d95=_0x3ab6;return _0x1eb95e(this,_0x54b3f3),_0xe48903[_0x551d95('0x1036')](this,arguments);}return _0x1107f9(_0x54b3f3,[{'key':_0x371eeb('0x315'),'value':function(){var _0x2df505=_0x371eeb;return['id','name',_0x2df505('0xbfc')];}},{'key':'getHeaders','value':function(){var _0xbba2fd=_0x371eeb;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':_0xbba2fd('0x1')},{'sTitle':_0xbba2fd('0xef')}];}},{'key':'getFormFields','value':function(){var _0x44a79c=_0x371eeb;return[['id',{'label':'ID','type':'hidden'}],[_0x44a79c('0x263'),{'label':_0x44a79c('0x1'),'type':_0x44a79c('0x768')}],['description',{'label':'Description','type':_0x44a79c('0xa2e'),'validation':''}]];}},{'key':'getTableColumns','value':function(){var _0x3b442e=_0x371eeb;return[{'title':_0x3b442e('0x1'),'dataIndex':'name','sorter':!0x0},{'title':_0x3b442e('0xef'),'dataIndex':'description'}];}}]),_0x54b3f3;}(_0x5008f6[_0x4778da('0x544')]),_0x1a2763=function(_0x1b9c35){var _0x464039=_0x4778da;_0x48bf17(_0x45baab,_0x1b9c35);var _0x53857b=_0x2618bb(_0x45baab);function _0x45baab(){var _0x2c3575=_0x3ab6;return _0x1eb95e(this,_0x45baab),_0x53857b[_0x2c3575('0x1036')](this,arguments);}return _0x1107f9(_0x45baab,[{'key':_0x464039('0x315'),'value':function(){return['id','name','description'];}},{'key':_0x464039('0x5d2'),'value':function(){var _0x4711fe=_0x464039;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':_0x4711fe('0x1')},{'sTitle':_0x4711fe('0xef')}];}},{'key':_0x464039('0xfe3'),'value':function(){var _0x5c9ba6=_0x464039;return[['id',{'label':'ID','type':_0x5c9ba6('0xdc0')}],[_0x5c9ba6('0x263'),{'label':_0x5c9ba6('0x1'),'type':'text'}],[_0x5c9ba6('0xbfc'),{'label':_0x5c9ba6('0xef'),'type':_0x5c9ba6('0xa2e'),'validation':''}]];}},{'key':_0x464039('0x5f6'),'value':function(){var _0x59ac77=_0x464039;return[{'title':_0x59ac77('0x1'),'dataIndex':_0x59ac77('0x263'),'sorter':!0x0},{'title':'Description','dataIndex':'description'}];}}]),_0x45baab;}(_0x5008f6[_0x4778da('0x544')]);_0x52ecbc['exports']={'SkillAdapter':_0x393b7a,'EducationAdapter':_0x2052b3,'CertificationAdapter':_0x596a70,'LanguageAdapter':_0x1a2763};},{'../../../api/AdapterBase':0x39,'../../../api/ReactModalAdapterBase':0x46}],0x2e:[function(_0x2b0b13,_0x7d0dd9,_0x4883f6){var _0x4eb324=_0x404097;'use strict';var _0x3ab70f=_0x2b0b13('./lib');window['ReportAdapter']=_0x3ab70f[_0x4eb324('0x84a')],window[_0x4eb324('0x770')]=_0x3ab70f[_0x4eb324('0x770')];},{'./lib':0x2f}],0x2f:[function(_0x2804fc,_0x34ad0a,_0x526eec){var _0x3c3450=_0x404097;'use strict';var _0x40f04f,_0x574417=(_0x40f04f=_0x2804fc(_0x3c3450('0xe88')))&&_0x40f04f[_0x3c3450('0x114c')]?_0x40f04f:{'default':_0x40f04f};function _0x1ab21(_0x2fa924){var _0x4eaf73=_0x3c3450;return(_0x1ab21=_0x4eaf73('0xae9')==typeof Symbol&&_0x4eaf73('0x245')==typeof Symbol['iterator']?function(_0x53ca53){return typeof _0x53ca53;}:function(_0x17a0b0){var _0x23feba=_0x4eaf73;return _0x17a0b0&&_0x23feba('0xae9')==typeof Symbol&&_0x17a0b0[_0x23feba('0x3c6')]===Symbol&&_0x17a0b0!==Symbol[_0x23feba('0x98c')]?_0x23feba('0x245'):typeof _0x17a0b0;})(_0x2fa924);}function _0x569583(_0x172c83,_0x558ca8){var _0x58f305=_0x3c3450;if(!(_0x172c83 instanceof _0x558ca8))throw new TypeError(_0x58f305('0x202'));}function _0x533877(_0x2dcf1f,_0x517951){var _0x54a73c=_0x3c3450;for(var _0x5bb591=0x0;_0x5bb591<_0x517951[_0x54a73c('0x525')];_0x5bb591++){var _0x83ba5d=_0x517951[_0x5bb591];_0x83ba5d[_0x54a73c('0x156')]=_0x83ba5d[_0x54a73c('0x156')]||!0x1,_0x83ba5d[_0x54a73c('0xbb2')]=!0x0,'value'in _0x83ba5d&&(_0x83ba5d[_0x54a73c('0x4db')]=!0x0),Object['defineProperty'](_0x2dcf1f,_0x83ba5d['key'],_0x83ba5d);}}function _0x1a23f0(_0x1e9c8b,_0x59de5d,_0x2f286b){return _0x59de5d&&_0x533877(_0x1e9c8b['prototype'],_0x59de5d),_0x2f286b&&_0x533877(_0x1e9c8b,_0x2f286b),_0x1e9c8b;}function _0x30cdc2(_0x1e67ed){return function(){var _0x31d871=_0x3ab6,_0xdaf508,_0x18403a=_0x5ce64b(_0x1e67ed);if(_0x410ced()){var _0x240892=_0x5ce64b(this)[_0x31d871('0x3c6')];_0xdaf508=Reflect['construct'](_0x18403a,arguments,_0x240892);}else _0xdaf508=_0x18403a['apply'](this,arguments);return _0x2a87d7(this,_0xdaf508);};}function _0x2a87d7(_0x18d62c,_0x1a86ef){var _0x4195c6=_0x3c3450;return!_0x1a86ef||'object'!==_0x1ab21(_0x1a86ef)&&_0x4195c6('0xae9')!=typeof _0x1a86ef?function(_0x2caa55){if(void 0x0===_0x2caa55)throw new ReferenceError('this\x20hasn\x27t\x20been\x20initialised\x20-\x20super()\x20hasn\x27t\x20been\x20called');return _0x2caa55;}(_0x18d62c):_0x1a86ef;}function _0x410ced(){var _0x19259b=_0x3c3450;if(_0x19259b('0x56')==typeof Reflect||!Reflect[_0x19259b('0x6ea')])return!0x1;if(Reflect[_0x19259b('0x6ea')][_0x19259b('0x16e')])return!0x1;if(_0x19259b('0xae9')==typeof Proxy)return!0x0;try{return Date[_0x19259b('0x98c')][_0x19259b('0x537')]['call'](Reflect['construct'](Date,[],function(){})),!0x0;}catch(_0x525270){return!0x1;}}function _0x5ce64b(_0xa7d874){var _0x941872=_0x3c3450;return(_0x5ce64b=Object[_0x941872('0x6c2')]?Object[_0x941872('0x10c0')]:function(_0x55f9bd){var _0x5c1055=_0x941872;return _0x55f9bd[_0x5c1055('0x11e6')]||Object[_0x5c1055('0x10c0')](_0x55f9bd);})(_0xa7d874);}function _0x7bac7b(_0x2506eb,_0x4b581e){var _0x54994e=_0x3c3450;if(_0x54994e('0xae9')!=typeof _0x4b581e&&null!==_0x4b581e)throw new TypeError(_0x54994e('0x409'));_0x2506eb[_0x54994e('0x98c')]=Object[_0x54994e('0x5c2')](_0x4b581e&&_0x4b581e[_0x54994e('0x98c')],{'constructor':{'value':_0x2506eb,'writable':!0x0,'configurable':!0x0}}),_0x4b581e&&_0x32d794(_0x2506eb,_0x4b581e);}function _0x32d794(_0x3371f0,_0x5702a6){return(_0x32d794=Object['setPrototypeOf']||function(_0x206905,_0x11e442){var _0x4aeb54=_0x3ab6;return _0x206905[_0x4aeb54('0x11e6')]=_0x11e442,_0x206905;})(_0x3371f0,_0x5702a6);}var _0x48b253=function(_0x2f03c3){var _0x4d73e6=_0x3c3450;_0x7bac7b(_0x540684,_0x2f03c3);var _0x309f38=_0x30cdc2(_0x540684);function _0x540684(_0x53a174,_0x182eba,_0x1762fa,_0x1fe6d9){var _0xc94cfa=_0x3ab6,_0x4b3987;return _0x569583(this,_0x540684),(_0x4b3987=_0x309f38[_0xc94cfa('0x4b0')](this,_0x53a174,_0x182eba,_0x1762fa,_0x1fe6d9))[_0xc94cfa('0xa33')](),_0x4b3987;}return _0x1a23f0(_0x540684,[{'key':'_construct','value':function(){var _0x367042=_0x3ab6;this[_0x367042('0x8f')]=[['id',{'label':'ID','type':_0x367042('0xdc0')}],[_0x367042('0x263'),{'label':_0x367042('0x1'),'type':_0x367042('0xf90'),'validation':''}],[_0x367042('0xb14'),{'label':_0x367042('0x119c'),'type':_0x367042('0x48a'),'validation':_0x367042('0x1c1')}]],this[_0x367042('0x501')]=!0x1;}},{'key':'_initLocalFormFields','value':function(){var _0x52c222=_0x3ab6;this[_0x52c222('0x8f')]=[['id',{'label':'ID','type':_0x52c222('0xdc0')}],[_0x52c222('0x263'),{'label':_0x52c222('0x1'),'type':_0x52c222('0xf90'),'validation':''}],[_0x52c222('0xb14'),{'label':_0x52c222('0x119c'),'type':'fieldset','validation':_0x52c222('0x1c1')}]];}},{'key':'setRemoteFieldExists','value':function(_0x320e7a){this['remoteFieldsExists']=_0x320e7a;}},{'key':'getDataMapping','value':function(){var _0x2ce42d=_0x3ab6;return['id','icon','name',_0x2ce42d('0xddf'),_0x2ce42d('0xb14')];}},{'key':_0x4d73e6('0x5d2'),'value':function(){var _0x37a436=_0x4d73e6;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':'','bSortable':!0x1,'sWidth':_0x37a436('0x300')},{'sTitle':_0x37a436('0x1'),'sWidth':_0x37a436('0xdf')},{'sTitle':'Details'},{'sTitle':'Parameters','bVisible':!0x1}];}},{'key':_0x4d73e6('0xfe3'),'value':function(){var _0x18c21d=_0x4d73e6;return this[_0x18c21d('0x8f')];}},{'key':_0x4d73e6('0xad4'),'value':function(_0x3815ff){var _0x2743ae=_0x4d73e6,_0x1bf5b6=this;this[_0x2743ae('0x4ed')]();var _0x4edd34=this[_0x2743ae('0x8f')][_0x2743ae('0x525')],_0x288080=[];this[_0x2743ae('0x501')]=!0x1;for(var _0x1c6548=0x0;_0x1c6548<_0x4edd34;_0x1c6548++)if(_0x2743ae('0x48a')===this[_0x2743ae('0x8f')][_0x1c6548][0x1][_0x2743ae('0x3f7')]){var _0x3a278f=JSON[_0x2743ae('0xf01')](_0x3815ff[this[_0x2743ae('0x8f')][_0x1c6548][0x0]]);_0x288080[_0x2743ae('0x8f8')](this['_formFileds'][_0x1c6548][0x0]),_0x3a278f[_0x2743ae('0xa9e')](function(_0x15358e){var _0x241a1d=_0x2743ae;_0x1bf5b6['_formFileds']['push'](_0x15358e),void 0x0!==_0x15358e[0x1][_0x241a1d('0x95b')]&&null!=_0x15358e[0x1]['remote-source']&&(_0x1bf5b6[_0x241a1d('0x501')]=!0x0);});}var _0x27aa8e=[];_0x1bf5b6[_0x2743ae('0x8f')][_0x2743ae('0xa9e')](function(_0x16ac69){var _0x5a8e4e=_0x2743ae;jQuery[_0x5a8e4e('0x10ba')](_0x16ac69[0x0],_0x288080)<0x0&&_0x27aa8e[_0x5a8e4e('0x8f8')](_0x16ac69);}),_0x1bf5b6[_0x2743ae('0x8f')]=_0x27aa8e;}},{'key':_0x4d73e6('0x11da'),'value':function(_0x2b4069){var _0x28263c=_0x4d73e6,_0x2732a2=this;if(this[_0x28263c('0xad4')](_0x2b4069),this[_0x28263c('0x501')])this[_0x28263c('0xf31')](function(){var _0x4b34f4=_0x28263c;_0x2732a2[_0x4b34f4('0xe4')](_0x2b4069);});else this[_0x28263c('0xf31')](),_0x2732a2[_0x28263c('0xe4')](_0x2b4069);this[_0x28263c('0xa0b')]=_0x2b4069;}},{'key':_0x4d73e6('0xe4'),'value':function(_0x5a0109){var _0x29562e=_0x4d73e6,_0x26001e=[];null!=_0x5a0109&&void 0x0!==_0x5a0109||(this[_0x29562e('0xd5e')]=null),this[_0x29562e('0x1b0')](_0x5a0109);for(var _0x9873e,_0x27fcb0=this[_0x29562e('0xb40')][_0x29562e('0xa56')],_0x3a9c67='',_0x448e34=this[_0x29562e('0xfe3')](),_0x223168=0x0;_0x223168<_0x448e34[_0x29562e('0x525')];_0x223168++){var _0x5c32f6=this[_0x29562e('0x3f5')](_0x448e34[_0x223168][0x0]);if(''===_0x5c32f6||void 0x0===_0x5c32f6)_0x3a9c67+=this[_0x29562e('0x9cb')](_0x448e34[_0x223168]);else{var _0x268d65=_0x5a0109[_0x5c32f6];''!==_0x268d65&&null!=_0x268d65&&void 0x0!==_0x268d65&&''!==_0x268d65[_0x29562e('0x445')]()?_0x3a9c67+=this['renderFormField'](JSON[_0x29562e('0xf01')](_0x268d65)):_0x3a9c67+=this['renderFormField'](_0x448e34[_0x223168]);}}_0x27fcb0=(_0x27fcb0=_0x27fcb0[_0x29562e('0x166')](/_id_/g,''[_0x29562e('0x3cc')](this[_0x29562e('0x107b')](),_0x29562e('0x959'))))[_0x29562e('0x166')](/_fields_/g,_0x3a9c67);var _0x39e652=this[_0x29562e('0xcc7')](0xe);this[_0x29562e('0x599')]?(_0x9873e=$(_0x29562e('0xbea')))[_0x29562e('0xba5')]('id',_0x39e652):_0x9873e=$('#'['concat'](this[_0x29562e('0x107b')](),_0x29562e('0x5ac'))),_0x9873e[_0x29562e('0xb07')](_0x27fcb0),_0x9873e['find'](_0x29562e('0xf4b'))[_0x29562e('0x649')]({'viewMode':0x2}),_0x9873e[_0x29562e('0x6f3')]('.timefield')[_0x29562e('0x642')]({'language':'en','pickDate':!0x1}),_0x9873e[_0x29562e('0x6f3')](_0x29562e('0x5c'))[_0x29562e('0x642')]({'language':'en'}),_0x9873e[_0x29562e('0x6f3')](_0x29562e('0x394'))[_0x29562e('0xc4d')](),_0x9873e[_0x29562e('0x6f3')](_0x29562e('0xcd7'))[_0x29562e('0xf3a')](function(){var _0x33a896=_0x29562e;$(this)[_0x33a896('0x1137')]()[_0x33a896('0x1137')]('val',$(this)[_0x33a896('0x6f3')]('option:eq(0)')[_0x33a896('0x7eb')]());}),_0x9873e[_0x29562e('0x6f3')](_0x29562e('0x29a'))['each'](function(){var _0x30478e=_0x29562e;$(this)[_0x30478e('0x1137')]()['on'](_0x30478e('0x4f6'),function(_0x50a617){var _0x999e04=_0x30478e,_0x296f8f=$(this)['parents'](_0x999e04('0x82d')),_0x2cacbd=_0x296f8f[_0x999e04('0x6f3')](_0x999e04('0xe73'))[_0x999e04('0x7f0')]();_0x296f8f[_0x999e04('0x7f0')](parseInt(_0x2cacbd,0xa));});}),_0x9873e[_0x29562e('0x6f3')]('.signatureField')['each'](function(){var _0x525421=_0x29562e;_0x26001e[_0x525421('0x8f8')]($(this)['attr']('id'));});for(var _0x3871b5=0x0;_0x3871b5<_0x448e34['length'];_0x3871b5++)_0x29562e('0x49')===_0x448e34[_0x3871b5][0x1]['type']&&_0x9873e['find']('#'[_0x29562e('0x3cc')](_0x448e34[_0x3871b5][0x0]))['data']('field',_0x448e34[_0x3871b5]);if(!0x1===this['showSave']?_0x9873e[_0x29562e('0x6f3')](_0x29562e('0x658'))['remove']():(_0x9873e[_0x29562e('0x6f3')](_0x29562e('0x658'))[_0x29562e('0xc1f')](),_0x9873e[_0x29562e('0x6f3')](_0x29562e('0x658'))['data']('modJs',this),_0x9873e[_0x29562e('0x6f3')](_0x29562e('0x658'))['on'](_0x29562e('0xd4d'),function(){var _0x365f3d=_0x29562e;return null!=$(this)[_0x365f3d('0xac8')](_0x365f3d('0x7db'))['saveSuccessItemCallback']&&void 0x0!==$(this)['data'](_0x365f3d('0x7db'))[_0x365f3d('0x8aa')]?$(this)[_0x365f3d('0xac8')](_0x365f3d('0x7db'))[_0x365f3d('0xc68')]($(this)[_0x365f3d('0xac8')](_0x365f3d('0x7db'))[_0x365f3d('0xa8a')](),$(this)[_0x365f3d('0xac8')](_0x365f3d('0x7db'))[_0x365f3d('0x8aa')]):$(this)[_0x365f3d('0xac8')](_0x365f3d('0x7db'))[_0x365f3d('0xc68')](),!0x1;})),!0x1===this[_0x29562e('0x10fd')]?_0x9873e[_0x29562e('0x6f3')](_0x29562e('0xcff'))[_0x29562e('0x109c')]():(_0x9873e['find']('.cancelBtn')[_0x29562e('0xc1f')](),_0x9873e[_0x29562e('0x6f3')](_0x29562e('0xcff'))[_0x29562e('0xac8')](_0x29562e('0x7db'),this),_0x9873e[_0x29562e('0x6f3')](_0x29562e('0xcff'))['on'](_0x29562e('0xd4d'),function(){var _0x5c1df6=_0x29562e;return $(this)['data'](_0x5c1df6('0x7db'))[_0x5c1df6('0x584')](),!0x1;})),this['showFormOnPopup']){this['showMessage'](_0x29562e('0xf1'),'',null,null,!0x0),$('#plainMessageModel\x20.modal-body')[_0x29562e('0xb07')](''),$(_0x29562e('0x7ac'))['append'](_0x9873e);for(var _0x5080d2=0x0;_0x5080d2<_0x26001e[_0x29562e('0x525')];_0x5080d2++)$('#'[_0x29562e('0x3cc')](_0x26001e[_0x5080d2]))[_0x29562e('0xac8')](_0x29562e('0xcb6'),new SignaturePad(document[_0x29562e('0xc14')](_0x26001e[_0x5080d2])));void 0x0!==_0x5a0109&&null!=_0x5a0109&&this['fillForm'](_0x5a0109,'#'['concat'](_0x39e652));}else{$('#'[_0x29562e('0x3cc')](this[_0x29562e('0x107b')](),_0x29562e('0x5ac')))[_0x29562e('0x41b')](),$('#'[_0x29562e('0x3cc')](this[_0x29562e('0x107b')]()))[_0x29562e('0x9c2')]();for(var _0x3e22b1=0x0;_0x3e22b1<_0x26001e[_0x29562e('0x525')];_0x3e22b1++)$('#'[_0x29562e('0x3cc')](_0x26001e[_0x3e22b1]))['data']('signaturePad',new SignaturePad(document[_0x29562e('0xc14')](_0x26001e[_0x3e22b1])));void 0x0!==_0x5a0109&&null!=_0x5a0109&&this['fillForm'](_0x5a0109);}this[_0x29562e('0x961')](_0x5a0109,_0x9873e);}},{'key':_0x4d73e6('0xd6b'),'value':function(_0x4f585e,_0xa8f21b){var _0x542ba8=_0x4d73e6,_0x2f41f5=_0x542ba8('0xd13');return _0x2f41f5=(_0x2f41f5=_0x2f41f5[_0x542ba8('0x166')](/_id_/g,_0x4f585e))[_0x542ba8('0x166')](/_BASE_/g,this[_0x542ba8('0xed3')]);}},{'key':_0x4d73e6('0xc54'),'value':function(_0x48924f,_0x305997){var _0xbcf27e=_0x4d73e6,_0x3fad44,_0x3f7ad3=_0x305997[0x0];if(_0x3fad44=(_0x3fad44=0x0===_0x3f7ad3[_0xbcf27e('0x4dc')](_0xbcf27e('0xcad'))?'';return _0x112237=(_0x112237=_0x112237['replace'](/_id_/g,_0x56442d))[_0x2b4a58('0x166')](/_BASE_/g,this['baseUrl']);}},{'key':_0x5dd906('0x3f5'),'value':function(_0x493f3f){var _0x215cae=_0x5dd906;return'value'===_0x493f3f?_0x215cae('0x745'):'';}},{'key':_0x5dd906('0x165'),'value':function(_0x3dbdf7){var _0x86564e=_0x5dd906;this['loadRemoteDataForSettings'](),_0xb0480(_0x5f0204(_0x1e3777[_0x86564e('0x98c')]),_0x86564e('0x165'),this)[_0x86564e('0x4b0')](this,_0x3dbdf7);}},{'key':_0x5dd906('0x1a'),'value':function(_0x434046){var _0x3adb7f=_0x5dd906,_0x1668ac=_0x434046[this[_0x3adb7f('0x3f5')]('value')],_0x28eb9e=null;''!==_0x1668ac&&void 0x0!==_0x1668ac&&(_0x28eb9e=[['id',{'label':'ID','type':_0x3adb7f('0xdc0')}],JSON[_0x3adb7f('0xf01')](_0x1668ac)]),_0xb0480(_0x5f0204(_0x1e3777[_0x3adb7f('0x98c')]),'fillForm',this)[_0x3adb7f('0x4b0')](this,_0x434046,null,_0x28eb9e),$(_0x3adb7f('0x6b6'))[_0x3adb7f('0xb07')](_0x434046[_0x3adb7f('0xbfc')]);}},{'key':_0x5dd906('0x92c'),'value':function(){var _0x4e01c7=_0x5dd906,_0x462444=[],_0x1d0e8d=null;for(var _0x1c2cda in(_0x462444[_0x4e01c7('0x8f8')]([_0x4e01c7('0x96b'),{'label':_0x4e01c7('0x10f5'),'type':_0x4e01c7('0x256'),'remote-source':[_0x4e01c7('0x10f5'),'id','name']}]),_0x462444[_0x4e01c7('0x8f8')]([_0x4e01c7('0x28e'),{'label':_0x4e01c7('0x10f5'),'type':_0x4e01c7('0x1137'),'remote-source':[_0x4e01c7('0x10f5'),'code','name']}]),_0x462444[_0x4e01c7('0x8f8')]([_0x4e01c7('0xdce'),{'label':_0x4e01c7('0x4fc'),'type':_0x4e01c7('0x256'),'remote-source':[_0x4e01c7('0x2'),'id',_0x4e01c7('0xcc8')]}]),_0x462444['push']([_0x4e01c7('0xf22'),{'label':_0x4e01c7('0x1057'),'type':_0x4e01c7('0x256'),'remote-source':[_0x4e01c7('0x1057'),'id','name']}]),_0x462444['push']([_0x4e01c7('0x102'),{'label':_0x4e01c7('0x1ac'),'type':'select2','allow-null':!0x1,'remote-source':[_0x4e01c7('0x4a4'),'name',_0x4e01c7('0xbfc')]}]),_0x462444))if(void 0x0!==(_0x1d0e8d=_0x462444[_0x1c2cda])[0x1][_0x4e01c7('0x95b')]&&null!==_0x1d0e8d[0x1][_0x4e01c7('0x95b')]){var _0x3af119=''[_0x4e01c7('0x3cc')](_0x1d0e8d[0x1][_0x4e01c7('0x95b')][0x0],'_')[_0x4e01c7('0x3cc')](_0x1d0e8d[0x1][_0x4e01c7('0x95b')][0x1],'_')[_0x4e01c7('0x3cc')](_0x1d0e8d[0x1][_0x4e01c7('0x95b')][0x2]);this[_0x4e01c7('0x28d')][_0x3af119]=!0x1,this[_0x4e01c7('0xdf2')][_0x1d0e8d[0x0]]=_0x1d0e8d[0x1][_0x4e01c7('0x95b')];var _0x12c0df={'callBack':_0x4e01c7('0x187')};_0x12c0df[_0x4e01c7('0x234')]=[_0x3af119],this[_0x4e01c7('0x940')](_0x1d0e8d[0x1][_0x4e01c7('0x95b')],_0x12c0df);}}},{'key':_0x5dd906('0x115d'),'value':function(){var _0x849a93=_0x5dd906;return _0x849a93('0x6ae');}}])&&_0x337396(_0x112842[_0x5dd906('0x98c')],_0x2e13a6),_0x5d0bf0&&_0x337396(_0x112842,_0x5d0bf0),_0x1e3777;}(((_0x4160c4=_0x5f0a24(_0xa28aec('0xe88')))&&_0x4160c4[_0xa28aec('0x114c')]?_0x4160c4:{'default':_0x4160c4})[_0xa28aec('0x544')]);_0x5dad62[_0xa28aec('0xddc')]={'SettingAdapter':_0x4c1a60};},{'../../../api/AdapterBase':0x39}],0x34:[function(_0x11e4b6,_0x407b93,_0x796ad8){var _0x14d8ea=_0x404097;'use strict';var _0x127147=_0x11e4b6(_0x14d8ea('0x358'));window['ImmigrationDocumentAdapter']=_0x127147[_0x14d8ea('0xe6e')],window['EmployeeImmigrationAdapter']=_0x127147['EmployeeImmigrationAdapter'],window[_0x14d8ea('0xfdb')]=_0x127147[_0x14d8ea('0xfdb')],window[_0x14d8ea('0x5ec')]=_0x127147[_0x14d8ea('0x5ec')];},{'./lib':0x35}],0x35:[function(_0x177500,_0x23564f,_0x164378){var _0x387bdf=_0x404097;'use strict';var _0x778d61=_0x41cabd(_0x177500(_0x387bdf('0xe88'))),_0x4d9be6=_0x41cabd(_0x177500('../../../api/CustomFieldAdapter')),_0x4b306e=_0x41cabd(_0x177500(_0x387bdf('0x4cf')));function _0x41cabd(_0x21b7c5){return _0x21b7c5&&_0x21b7c5['__esModule']?_0x21b7c5:{'default':_0x21b7c5};}function _0x4e34cd(_0x520855){var _0x21646b=_0x387bdf;return(_0x4e34cd=_0x21646b('0xae9')==typeof Symbol&&_0x21646b('0x245')==typeof Symbol['iterator']?function(_0x2a4ffa){return typeof _0x2a4ffa;}:function(_0x22500c){var _0x21bc0a=_0x21646b;return _0x22500c&&_0x21bc0a('0xae9')==typeof Symbol&&_0x22500c[_0x21bc0a('0x3c6')]===Symbol&&_0x22500c!==Symbol[_0x21bc0a('0x98c')]?_0x21bc0a('0x245'):typeof _0x22500c;})(_0x520855);}function _0x130480(_0xe760a2,_0x4ea907){var _0xf7c0bd=_0x387bdf;if(!(_0xe760a2 instanceof _0x4ea907))throw new TypeError(_0xf7c0bd('0x202'));}function _0x137ea6(_0x1544b1,_0x3357ef){var _0x3bba8c=_0x387bdf;for(var _0x43e4db=0x0;_0x43e4db<_0x3357ef['length'];_0x43e4db++){var _0x290294=_0x3357ef[_0x43e4db];_0x290294[_0x3bba8c('0x156')]=_0x290294[_0x3bba8c('0x156')]||!0x1,_0x290294[_0x3bba8c('0xbb2')]=!0x0,_0x3bba8c('0x832')in _0x290294&&(_0x290294[_0x3bba8c('0x4db')]=!0x0),Object[_0x3bba8c('0xa95')](_0x1544b1,_0x290294[_0x3bba8c('0x1192')],_0x290294);}}function _0x262d36(_0xb46904,_0x6cd777,_0x1dae99){var _0x38903f=_0x387bdf;return _0x6cd777&&_0x137ea6(_0xb46904[_0x38903f('0x98c')],_0x6cd777),_0x1dae99&&_0x137ea6(_0xb46904,_0x1dae99),_0xb46904;}function _0x9405ae(_0x138065){return function(){var _0x511232=_0x3ab6,_0x26c495,_0x2c0116=_0x1122c3(_0x138065);if(_0x2f5b4e()){var _0x385b59=_0x1122c3(this)[_0x511232('0x3c6')];_0x26c495=Reflect[_0x511232('0x6ea')](_0x2c0116,arguments,_0x385b59);}else _0x26c495=_0x2c0116[_0x511232('0x1036')](this,arguments);return _0x582773(this,_0x26c495);};}function _0x582773(_0x3c3af5,_0xe214c3){var _0x272ad1=_0x387bdf;return!_0xe214c3||'object'!==_0x4e34cd(_0xe214c3)&&_0x272ad1('0xae9')!=typeof _0xe214c3?function(_0x4a1091){var _0x31e236=_0x272ad1;if(void 0x0===_0x4a1091)throw new ReferenceError(_0x31e236('0x2e9'));return _0x4a1091;}(_0x3c3af5):_0xe214c3;}function _0x2f5b4e(){var _0x127731=_0x387bdf;if(_0x127731('0x56')==typeof Reflect||!Reflect[_0x127731('0x6ea')])return!0x1;if(Reflect['construct'][_0x127731('0x16e')])return!0x1;if(_0x127731('0xae9')==typeof Proxy)return!0x0;try{return Date[_0x127731('0x98c')]['toString'][_0x127731('0x4b0')](Reflect[_0x127731('0x6ea')](Date,[],function(){})),!0x0;}catch(_0xe96deb){return!0x1;}}function _0x1122c3(_0x3b90b5){var _0x11c7c2=_0x387bdf;return(_0x1122c3=Object[_0x11c7c2('0x6c2')]?Object[_0x11c7c2('0x10c0')]:function(_0x2ba271){var _0xf29fcf=_0x11c7c2;return _0x2ba271[_0xf29fcf('0x11e6')]||Object[_0xf29fcf('0x10c0')](_0x2ba271);})(_0x3b90b5);}function _0x343f31(_0x233a03,_0x30c3ac){var _0x537d21=_0x387bdf;if('function'!=typeof _0x30c3ac&&null!==_0x30c3ac)throw new TypeError(_0x537d21('0x409'));_0x233a03[_0x537d21('0x98c')]=Object[_0x537d21('0x5c2')](_0x30c3ac&&_0x30c3ac['prototype'],{'constructor':{'value':_0x233a03,'writable':!0x0,'configurable':!0x0}}),_0x30c3ac&&_0x9ca46(_0x233a03,_0x30c3ac);}function _0x9ca46(_0x4d18e1,_0x381e60){return(_0x9ca46=Object['setPrototypeOf']||function(_0x31a1a9,_0x3de082){var _0x5280d8=_0x3ab6;return _0x31a1a9[_0x5280d8('0x11e6')]=_0x3de082,_0x31a1a9;})(_0x4d18e1,_0x381e60);}var _0x3a4812=function(_0x4ec431){var _0x2fda54=_0x387bdf;_0x343f31(_0x577ccd,_0x4ec431);var _0x273a70=_0x9405ae(_0x577ccd);function _0x577ccd(){var _0x156743=_0x3ab6;return _0x130480(this,_0x577ccd),_0x273a70[_0x156743('0x1036')](this,arguments);}return _0x262d36(_0x577ccd,[{'key':_0x2fda54('0x315'),'value':function(){var _0x14ed09=_0x2fda54;return['id',_0x14ed09('0x263'),'details',_0x14ed09('0x14e'),_0x14ed09('0x86d'),_0x14ed09('0xf40')];}},{'key':'getHeaders','value':function(){var _0x5e20d0=_0x2fda54;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':_0x5e20d0('0x1')},{'sTitle':_0x5e20d0('0xf10')},{'sTitle':_0x5e20d0('0xdd0')},{'sTitle':'Alert\x20If\x20Not\x20Found'},{'sTitle':'Alert\x20Before\x20Expiry'}];}},{'key':'getFormFields','value':function(){var _0x122c75=_0x2fda54;for(var _0x2f1321=[['id',{'label':'ID','type':_0x122c75('0xdc0')}],['name',{'label':_0x122c75('0x1'),'type':_0x122c75('0x768'),'validation':''}],['details',{'label':_0x122c75('0xf10'),'type':_0x122c75('0xa2e'),'validation':_0x122c75('0x1c1')}],[_0x122c75('0x14e'),{'label':_0x122c75('0xdd0'),'type':'select','source':[['No','No'],['Yes','Yes']]}],[_0x122c75('0x86d'),{'label':_0x122c75('0xba6'),'type':_0x122c75('0x8ff'),'source':[['No','No'],[_0x122c75('0x9a3'),_0x122c75('0x9a3')]]}],['alert_before_expiry',{'label':'Alert\x20Before\x20Expiry','type':'select','source':[['No','No'],['Yes',_0x122c75('0x9a3')]]}],[_0x122c75('0xdd7'),{'label':_0x122c75('0x103a'),'type':_0x122c75('0x768'),'validation':''}]],_0x460b8e=0x0;_0x460b8e',_0x8a0e4f+='\x20You\x20may\x20create\x20a\x20new\x20employee\x20through\x20\x27Admin\x27->\x27Employees\x27\x20menu'),_0x8a0e4f;}},{'key':_0x4d78f2('0xc68'),'value':function(){var _0x61b390=_0x4d78f2,_0x156569=new _0x3e78f2[(_0x61b390('0x544'))](''[_0x61b390('0x3cc')](this[_0x61b390('0x107b')](),'_submit'),!0x0,{'ShowPopup':!0x1,'LabelErrorClass':_0x61b390('0x8d9')});if(_0x156569[_0x61b390('0x7bd')]()){var _0x5254f9=_0x156569[_0x61b390('0x223')](),_0x1d0e32=this[_0x61b390('0x66f')](_0x5254f9);if(null==_0x1d0e32){var _0x2d9b82=$('#'[_0x61b390('0x3cc')](this[_0x61b390('0x107b')](),_0x61b390('0x37')))[_0x61b390('0x7eb')]();if(_0x5254f9['csrf']=$('#'[_0x61b390('0x3cc')](this[_0x61b390('0x107b')](),_0x61b390('0x5ac')))['data'](_0x61b390('0xc8c')),null!=_0x2d9b82&&void 0x0!==_0x2d9b82&&''!==_0x2d9b82)_0x5254f9['id']=_0x2d9b82,this[_0x61b390('0x1130')](_0x5254f9,[]);else{var _0x29aa86=JSON['stringify'](_0x5254f9),_0x1d9956=[];_0x1d9956[_0x61b390('0x234')]=[],_0x1d9956[_0x61b390('0xf53')]=_0x61b390('0x2f7'),_0x1d9956['callBackFail']=_0x61b390('0x177'),this[_0x61b390('0x960')]('saveUser',_0x61b390('0xe03'),_0x29aa86,_0x1d9956);}}else this[_0x61b390('0xb5d')](_0x61b390('0x3ed'),_0x1d0e32);}}},{'key':_0x4d78f2('0xf95'),'value':function(){var _0x52937b=_0x4d78f2;$(_0x52937b('0x942'))['hide']();var _0x4c938e=$('#adminUsersChangePwd\x20#newpwd')[_0x52937b('0x7eb')](),_0x1138e6=$(_0x52937b('0x650'))[_0x52937b('0x7eb')]();if(_0x1138e6!==_0x4c938e)return $(_0x52937b('0x942'))[_0x52937b('0xb07')](_0x52937b('0x11d')),void $(_0x52937b('0x942'))['show']();var _0x238c95=this[_0x52937b('0x7cc')](_0x4c938e);if(null!=_0x238c95)return $(_0x52937b('0x942'))['html'](_0x238c95),void $('#adminUsersChangePwd_error')[_0x52937b('0x41b')]();var _0x1945f1={'id':this[_0x52937b('0xd5e')],'pwd':_0x1138e6},_0x4776f5=JSON[_0x52937b('0x591')](_0x1945f1),_0x3fa960=[];_0x3fa960['callBackData']=[],_0x3fa960[_0x52937b('0xf53')]=_0x52937b('0x31f'),_0x3fa960[_0x52937b('0xb7f')]=_0x52937b('0xb6d'),this['customAction'](_0x52937b('0x115e'),_0x52937b('0xe03'),_0x4776f5,_0x3fa960);}},{'key':'closeChangePassword','value':function(){var _0x5110b7=_0x4d78f2;$(_0x5110b7('0xf9e'))[_0x5110b7('0x11ad')](_0x5110b7('0x9c2'));}},{'key':_0x4d78f2('0x31f'),'value':function(_0x50e553,_0x154d14){var _0x3886d4=_0x4d78f2;this[_0x3886d4('0x589')](),this[_0x3886d4('0xb5d')](_0x3886d4('0x103e'),_0x3886d4('0xd0b'));}},{'key':_0x4d78f2('0xb6d'),'value':function(_0x23e7ba,_0xdd803a){var _0x1dcef9=_0x4d78f2;this[_0x1dcef9('0x589')](),this[_0x1dcef9('0xb5d')](_0x1dcef9('0xb84'),_0x23e7ba);}}]),_0x4e7e5c;}(_0x693bd3['default']),_0x98d570=function(_0x57b7e9){var _0x1c29bd=_0x429433;_0x119711(_0x4261e6,_0x57b7e9);var _0x4f44b8=_0x559084(_0x4261e6);function _0x4261e6(_0x32c25d,_0x28a751,_0xc2a3f2,_0x2359b0){var _0x533a19=_0x3ab6,_0x1648dd;return _0x35c234(this,_0x4261e6),(_0x1648dd=_0x4f44b8[_0x533a19('0x4b0')](this,_0x32c25d,_0x28a751,_0xc2a3f2,_0x2359b0))[_0x533a19('0xb4d')]=[],_0x1648dd;}return _0x3ac7e0(_0x4261e6,[{'key':_0x1c29bd('0x315'),'value':function(){var _0x5dbe32=_0x1c29bd;return['id',_0x5dbe32('0x263')];}},{'key':_0x1c29bd('0x5d2'),'value':function(){return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':'Name'}];}},{'key':_0x1c29bd('0x5f6'),'value':function(){var _0x322993=_0x1c29bd;return[{'title':'ID','dataIndex':'id','sorter':!0x0},{'title':_0x322993('0x1'),'dataIndex':'name','sorter':!0x0}];}},{'key':_0x1c29bd('0xc5f'),'value':function(_0x6548c3){var _0x2227df=_0x1c29bd;this[_0x2227df('0xb4d')]=_0x6548c3;}},{'key':_0x1c29bd('0xfe3'),'value':function(){var _0x2fe88a=_0x1c29bd;return[['id',{'label':'ID','type':_0x2fe88a('0xdc0')}],[_0x2fe88a('0x263'),{'label':_0x2fe88a('0x1'),'type':_0x2fe88a('0x768'),'validation':''}],[_0x2fe88a('0xd2'),{'label':'Additional\x20Permissions','type':'datagroup','form':[[_0x2fe88a('0xf4a'),{'label':'Table','type':_0x2fe88a('0x1137'),'source':this[_0x2fe88a('0xb4d')]}],[_0x2fe88a('0x73f'),{'label':'Permissions','type':_0x2fe88a('0x256'),'allow-null':!0x0,'source':[[_0x2fe88a('0x33'),_0x2fe88a('0x651')],['element',_0x2fe88a('0xdd5')],[_0x2fe88a('0xc68'),_0x2fe88a('0x9d0')],[_0x2fe88a('0x506'),_0x2fe88a('0xf15')]]}]],'columns':[{'title':_0x2fe88a('0xf27'),'dataIndex':'table','key':_0x2fe88a('0xf4a')},{'title':'Permissions','dataIndex':'permissions','key':_0x2fe88a('0x73f')}],'validation':_0x2fe88a('0x1c1')}]];}}]),_0x4261e6;}(_0x11a479[_0x429433('0x544')]);_0x3e43a9['exports']={'UserAdapter':_0x19c5d0,'UserRoleAdapter':_0x98d570};},{'../../../api/AdapterBase':0x39,'../../../api/FormValidation':0x3d,'../../../api/ReactModalAdapterBase':0x46}],0x38:[function(_0x31551d,_0x2ee962,_0xa319d1){var _0x1567cb=_0x404097;'use strict';function _0x4480c5(_0x6892b5,_0x416386){var _0x32c2d4=_0x3ab6;if(!(_0x6892b5 instanceof _0x416386))throw new TypeError(_0x32c2d4('0x202'));}function _0x4d970d(_0x4d7b43,_0x5c6371){var _0x29fd33=_0x3ab6;for(var _0x3f1db5=0x0;_0x3f1db5<_0x5c6371[_0x29fd33('0x525')];_0x3f1db5++){var _0x19941f=_0x5c6371[_0x3f1db5];_0x19941f[_0x29fd33('0x156')]=_0x19941f[_0x29fd33('0x156')]||!0x1,_0x19941f[_0x29fd33('0xbb2')]=!0x0,_0x29fd33('0x832')in _0x19941f&&(_0x19941f[_0x29fd33('0x4db')]=!0x0),Object[_0x29fd33('0xa95')](_0x4d7b43,_0x19941f[_0x29fd33('0x1192')],_0x19941f);}}function _0x3f8254(_0x3469b6,_0x523f8e,_0x2b32f7){var _0xad8e23=_0x3ab6;return _0x523f8e&&_0x4d970d(_0x3469b6[_0xad8e23('0x98c')],_0x523f8e),_0x2b32f7&&_0x4d970d(_0x3469b6,_0x2b32f7),_0x3469b6;}Object[_0x1567cb('0xa95')](_0xa319d1,_0x1567cb('0x114c'),{'value':!0x0}),_0xa319d1['default']=void 0x0;var _0x22c738=function(){var _0x4b445a=_0x1567cb;function _0x46dace(){_0x4480c5(this,_0x46dace),this['data']={};}return _0x3f8254(_0x46dace,[{'key':_0x4b445a('0x3d6'),'value':function(_0x5b3568){var _0x29a677=_0x4b445a;return this[_0x29a677('0xac8')][_0x5b3568];}},{'key':_0x4b445a('0x102d'),'value':function(_0x474eaa,_0x34a6c8){this['data'][_0x474eaa]=_0x34a6c8;}},{'key':_0x4b445a('0x419'),'value':function(_0x3cd482){var _0x3c180e=_0x4b445a;for(var _0x4ef0f5=Object[_0x3c180e('0x7ce')](this[_0x3c180e('0xac8')]),_0x59b025=0x0;_0x59b025<_0x4ef0f5[_0x3c180e('0x525')];_0x59b025++)_0x4ef0f5[_0x59b025][_0x3c180e('0x4dc')](_0x3cd482)>0x0&&delete this[_0x3c180e('0xac8')][_0x4ef0f5[_0x59b025]];}}]),_0x46dace;}(),_0x3ef5af=function(){var _0x407945=_0x1567cb;function _0x16d30b(_0x1bb5ca){var _0x15f66a=_0x3ab6;_0x4480c5(this,_0x16d30b),this[_0x15f66a('0x903')]=_0x1bb5ca||new _0x22c738();}return _0x3f8254(_0x16d30b,[{'key':_0x407945('0x998'),'value':function(_0x377c0e,_0x32d1c5){var _0x3ed111=_0x407945,_0x21ec0b=''[_0x3ed111('0x3cc')](_0x377c0e,'|');for(var _0x20fe9d in _0x32d1c5)_0x21ec0b+=''['concat'](_0x20fe9d,'=')[_0x3ed111('0x3cc')](_0x32d1c5[_0x20fe9d],'|');return _0x21ec0b;}},{'key':'invalidateTable','value':function(_0xa24b23){var _0x5146c3=_0x407945;this[_0x5146c3('0x903')][_0x5146c3('0x419')]('t='['concat'](_0xa24b23));}},{'key':_0x407945('0x385'),'value':function(_0x192cdc){var _0x4ea2a5=_0x407945,_0x40ed9a=this[_0x4ea2a5('0x903')]['getItem'](_0x192cdc);return _0x40ed9a||null;}},{'key':'setData','value':function(_0x457cb8,_0x18eb5d){var _0x171cd5=_0x407945;return void 0x0!==_0x18eb5d[_0x171cd5('0x11e7')]&&null!=_0x18eb5d[_0x171cd5('0x11e7')]&&_0x171cd5('0x5f8')!==_0x18eb5d[_0x171cd5('0x11e7')]?null:(this[_0x171cd5('0x903')]['setItem'](_0x457cb8,_0x18eb5d),_0x18eb5d);}}]),_0x16d30b;}();_0xa319d1[_0x1567cb('0x544')]=_0x3ef5af;},{}],0x39:[function(_0x10f5b5,_0x192dbe,_0x43ac77){var _0x426103=_0x404097;'use strict';Object[_0x426103('0xa95')](_0x43ac77,'__esModule',{'value':!0x0}),_0x43ac77[_0x426103('0x544')]=void 0x0;var _0x2921ac=_0x36d22c(_0x10f5b5(_0x426103('0x23e'))),_0x260ac1=_0x36d22c(_0x10f5b5(_0x426103('0x3eb'))),_0x51ea50=_0x36d22c(_0x10f5b5('../api-common/RequestCache')),_0x1dd416=_0x36d22c(_0x10f5b5(_0x426103('0x7b7')));function _0x36d22c(_0x42c7cc){var _0x5574e8=_0x426103;return _0x42c7cc&&_0x42c7cc[_0x5574e8('0x114c')]?_0x42c7cc:{'default':_0x42c7cc};}function _0x5b4a98(_0x521d22){var _0x52e7aa=_0x426103;return(_0x5b4a98='function'==typeof Symbol&&_0x52e7aa('0x245')==typeof Symbol[_0x52e7aa('0x78e')]?function(_0x1448ce){return typeof _0x1448ce;}:function(_0x594dfc){var _0x2cf6b4=_0x52e7aa;return _0x594dfc&&_0x2cf6b4('0xae9')==typeof Symbol&&_0x594dfc[_0x2cf6b4('0x3c6')]===Symbol&&_0x594dfc!==Symbol[_0x2cf6b4('0x98c')]?'symbol':typeof _0x594dfc;})(_0x521d22);}function _0x5b337b(_0x3129c2,_0x2e4818){var _0x5595f5=_0x426103;for(var _0xc95928=0x0;_0xc95928<_0x2e4818[_0x5595f5('0x525')];_0xc95928++){var _0x165a48=_0x2e4818[_0xc95928];_0x165a48[_0x5595f5('0x156')]=_0x165a48['enumerable']||!0x1,_0x165a48[_0x5595f5('0xbb2')]=!0x0,_0x5595f5('0x832')in _0x165a48&&(_0x165a48[_0x5595f5('0x4db')]=!0x0),Object[_0x5595f5('0xa95')](_0x3129c2,_0x165a48[_0x5595f5('0x1192')],_0x165a48);}}function _0x1011b3(_0x2253f5,_0x457e85){var _0x5cf160=_0x426103;return!_0x457e85||_0x5cf160('0x21e')!==_0x5b4a98(_0x457e85)&&_0x5cf160('0xae9')!=typeof _0x457e85?function(_0x157cae){var _0x4a8a78=_0x5cf160;if(void 0x0===_0x157cae)throw new ReferenceError(_0x4a8a78('0x2e9'));return _0x157cae;}(_0x2253f5):_0x457e85;}function _0x180053(){var _0x3659d5=_0x426103;if(_0x3659d5('0x56')==typeof Reflect||!Reflect['construct'])return!0x1;if(Reflect[_0x3659d5('0x6ea')][_0x3659d5('0x16e')])return!0x1;if('function'==typeof Proxy)return!0x0;try{return Date[_0x3659d5('0x98c')][_0x3659d5('0x537')]['call'](Reflect['construct'](Date,[],function(){})),!0x0;}catch(_0x17a97c){return!0x1;}}function _0x378b18(_0x1fc700){return(_0x378b18=Object['setPrototypeOf']?Object['getPrototypeOf']:function(_0x46f586){var _0x5f7d7e=_0x3ab6;return _0x46f586[_0x5f7d7e('0x11e6')]||Object[_0x5f7d7e('0x10c0')](_0x46f586);})(_0x1fc700);}function _0x5293e0(_0x121868,_0x3a66ac){var _0x3a6305=_0x426103;return(_0x5293e0=Object[_0x3a6305('0x6c2')]||function(_0x4a4a95,_0x374616){var _0x3cccbb=_0x3a6305;return _0x4a4a95[_0x3cccbb('0x11e6')]=_0x374616,_0x4a4a95;})(_0x121868,_0x3a66ac);}var _0x339f75=function(_0x1347da){var _0x248274=_0x426103;!function(_0x4a20ac,_0x59eff1){var _0x1e6f6b=_0x3ab6;if('function'!=typeof _0x59eff1&&null!==_0x59eff1)throw new TypeError(_0x1e6f6b('0x409'));_0x4a20ac[_0x1e6f6b('0x98c')]=Object['create'](_0x59eff1&&_0x59eff1['prototype'],{'constructor':{'value':_0x4a20ac,'writable':!0x0,'configurable':!0x0}}),_0x59eff1&&_0x5293e0(_0x4a20ac,_0x59eff1);}(_0x4d9b4d,_0x1347da);var _0x104235,_0x33e2ea,_0x434291,_0x157ed1,_0x3a7b12=(_0x104235=_0x4d9b4d,function(){var _0x4cab60=_0x3ab6,_0x206006,_0x4352fb=_0x378b18(_0x104235);if(_0x180053()){var _0x3d3341=_0x378b18(this)[_0x4cab60('0x3c6')];_0x206006=Reflect[_0x4cab60('0x6ea')](_0x4352fb,arguments,_0x3d3341);}else _0x206006=_0x4352fb[_0x4cab60('0x1036')](this,arguments);return _0x1011b3(this,_0x206006);});function _0x4d9b4d(_0x1551df,_0x4cc2f8,_0xb5126,_0x1b5914){var _0x14b574=_0x3ab6,_0x33c4a9;return function(_0x19b823,_0x40b349){var _0x4c2428=_0x3ab6;if(!(_0x19b823 instanceof _0x40b349))throw new TypeError(_0x4c2428('0x202'));}(this,_0x4d9b4d),(_0x33c4a9=_0x3a7b12[_0x14b574('0x4b0')](this))[_0x14b574('0xe32')]=null,_0x33c4a9[_0x14b574('0x45e')]=[],_0x33c4a9['sourceData']=[],_0x33c4a9[_0x14b574('0x4fb')]=null,_0x33c4a9[_0x14b574('0x10f0')]=null,_0x33c4a9[_0x14b574('0xbe6')]=null,_0x33c4a9['currentElement']=null,_0x33c4a9['initAdapter'](_0x1551df,_0x4cc2f8,_0xb5126,_0x1b5914),_0x33c4a9;}return _0x33e2ea=_0x4d9b4d,(_0x434291=[{'key':'initAdapter','value':function(_0x30392b,_0x5e66ca,_0x498d4f,_0x16f8d6){var _0x366511=_0x3ab6;this[_0x366511('0xe32')]=baseUrl,this[_0x366511('0xf4a')]=_0x30392b,this[_0x366511('0xb7b')]=null==_0x5e66ca?_0x30392b:_0x5e66ca,this[_0x366511('0x4fb')]=null==_0x498d4f?null:_0x498d4f,this[_0x366511('0x10f0')]=this[_0x366511('0x4fb')],this[_0x366511('0xbe6')]=null==_0x16f8d6?null:_0x16f8d6,this[_0x366511('0xd00')](_0x366511('0xcf6'),_0x5e66ca),this['requestCache']=new _0x51ea50[(_0x366511('0x544'))]();}},{'key':_0x248274('0x7f2'),'value':function(){var _0x208d9e=_0x248274;this['masterDataReader']=new _0x1dd416[(_0x208d9e('0x544'))](this);}},{'key':_0x248274('0xaf6'),'value':function(_0xf92206){var _0x1c565e=_0x248274;this[_0x1c565e('0x221')]=new _0x2921ac[(_0x1c565e('0x544'))](this[_0x1c565e('0x210')],_0xf92206,window[_0x1c565e('0x1068')],!0x0);}},{'key':_0x248274('0x754'),'value':function(_0x988548){this['apiUrl']=_0x988548;}},{'key':_0x248274('0x1123'),'value':function(_0x5dbb8b){this['filter']=_0x5dbb8b;}},{'key':'preSetFilterExternal','value':function(_0x492f0f){var _0x378af1=_0x248274;this[_0x378af1('0x11c')]=_0x492f0f;}},{'key':'setFilterExternal','value':function(_0x54bf4e){var _0x4a16ad=_0x248274,_0x430bbd=_0x54bf4e;null==_0x430bbd&&(_0x430bbd=this[_0x4a16ad('0x11c')]),null!=_0x430bbd&&(this[_0x4a16ad('0x1123')](_0x430bbd),this[_0x4a16ad('0x76f')]=!0x0,$('#'['concat'](this['getTableName'](),_0x4a16ad('0x53')))[_0x4a16ad('0x41b')](),this[_0x4a16ad('0x8f7')]=this[_0x4a16ad('0xcc1')](_0x430bbd));}},{'key':'getFilter','value':function(){var _0x27fd39=_0x248274;return this[_0x27fd39('0x4fb')];}},{'key':_0x248274('0xb91'),'value':function(_0x5d0b48){var _0x4e5140=_0x248274;this[_0x4e5140('0xbe6')]=_0x5d0b48;}},{'key':_0x248274('0xf72'),'value':function(){var _0x4dd68d=_0x248274;return this[_0x4dd68d('0xbe6')];}},{'key':'getFile','value':function(_0xc5854){var _0x242de2=_0x248274,_0x416e6a=this;return this[_0x242de2('0xd00')](_0x242de2('0xa42'),_0xc5854),new Promise(function(_0x5970ea,_0x12bc57){var _0x2c7979=_0x242de2;$[_0x2c7979('0x281')](_0x416e6a['moduleRelativeURL'],{'a':_0x2c7979('0xa42'),'name':_0xc5854},function(_0x34ea69){var _0x30c712=_0x2c7979;_0x30c712('0x5f8')===_0x34ea69[_0x30c712('0x11e7')]?_0x5970ea(_0x34ea69[_0x30c712('0xac8')]):_0x12bc57();})[_0x2c7979('0x66')](function(){return _0x12bc57();});});}},{'key':_0x248274('0x1130'),'value':function(_0x251306,_0x2e8c98,_0x32a49a,_0x580355){var _0x19c03c=_0x248274,_0x2f2139=this;null==_0x32a49a&&(_0x32a49a=!0x0),$(_0x251306)[_0x19c03c('0xba5')]('a',_0x19c03c('0x1130')),$(_0x251306)['attr']('t',this['table']),_0x2f2139[_0x19c03c('0x304')](),this[_0x19c03c('0x112d')][_0x19c03c('0x171')](this[_0x19c03c('0xf4a')]),$[_0x19c03c('0xe80')](this[_0x19c03c('0xe32')],_0x251306,function(_0x3090a5){var _0x22ba07=_0x19c03c;_0x22ba07('0x5f8')===_0x3090a5[_0x22ba07('0x11e7')]?_0x2f2139[_0x22ba07('0xc54')](_0x2e8c98,_0x3090a5[_0x22ba07('0x21e')],_0x32a49a,_0x580355,_0x2f2139):_0x2f2139[_0x22ba07('0xa1b')](_0x2e8c98,_0x3090a5[_0x22ba07('0x21e')]);},_0x19c03c('0x41c'))['fail'](function(_0x3b811c){var _0x12e9fd=_0x19c03c;0x193===_0x3b811c[_0x12e9fd('0x11e7')]&&_0x2f2139['showMessage'](_0x12e9fd('0x63d'),_0x3b811c['responseJSON']['message']);})[_0x19c03c('0x222')](function(){var _0x55bfaf=_0x19c03c;_0x2f2139[_0x55bfaf('0x7e9')]();}),this[_0x19c03c('0xd00')](_0x19c03c('0x1130'),this[_0x19c03c('0xb7b')],this[_0x19c03c('0xf4a')]);}},{'key':'addSuccessCallBack','value':function(_0x24cf01,_0x2019a5,_0x488259,_0x4ddafb,_0x26e64c){var _0xff6382=_0x248274;_0x488259&&this[_0xff6382('0x33')](_0x24cf01),this[_0xff6382('0xf31')](),null!=_0x4ddafb&&_0x4ddafb[_0xff6382('0x1036')](_0x26e64c,[_0x2019a5]),this[_0xff6382('0xd00')](_0xff6382('0xe95'),this[_0xff6382('0xb7b')],this['table']);}},{'key':'addFailCallBack','value':function(_0x34708c,_0xff48cf){var _0x43725b=_0x248274;try{this['closePlainMessage']();}catch(_0x1bbc6c){}this[_0x43725b('0xb5d')](_0x43725b('0x1139'),_0xff48cf),this[_0x43725b('0xd00')](_0x43725b('0x401'),this[_0x43725b('0xb7b')],this[_0x43725b('0xf4a')]);}},{'key':'deleteObj','value':function(_0x5c7dd3,_0x1ddd9d){var _0x5356cb=_0x248274,_0x4821d2=this;_0x4821d2[_0x5356cb('0x304')](),this[_0x5356cb('0x112d')][_0x5356cb('0x171')](this[_0x5356cb('0xf4a')]),$[_0x5356cb('0xe80')](this[_0x5356cb('0xe32')],{'t':this['table'],'a':'delete','id':_0x5c7dd3},function(_0x70f7b7){var _0x32707a=_0x5356cb;_0x32707a('0x5f8')===_0x70f7b7[_0x32707a('0x11e7')]?_0x4821d2[_0x32707a('0xa6f')](_0x1ddd9d,_0x70f7b7[_0x32707a('0x21e')]):_0x4821d2[_0x32707a('0x6d8')](_0x1ddd9d,_0x70f7b7[_0x32707a('0x21e')]);},_0x5356cb('0x41c'))[_0x5356cb('0x66')](function(_0x578ae7){var _0x11b6c5=_0x5356cb;0x193===_0x578ae7[_0x11b6c5('0x11e7')]&&_0x4821d2['showMessage'](_0x11b6c5('0x63d'),_0x578ae7[_0x11b6c5('0x357')][_0x11b6c5('0xa1a')]);})[_0x5356cb('0x222')](function(){var _0xf7cfa2=_0x5356cb;_0x4821d2[_0xf7cfa2('0x7e9')]();}),this['trackEvent']('delete',this[_0x5356cb('0xb7b')],this[_0x5356cb('0xf4a')]);}},{'key':_0x248274('0xa6f'),'value':function(_0x54819c,_0x426a29){var _0x2a26a9=_0x248274;this[_0x2a26a9('0x33')](_0x54819c),this['clearDeleteParams']();}},{'key':_0x248274('0x6d8'),'value':function(_0x7caa38,_0x496849){var _0x544d14=_0x248274;this[_0x544d14('0x1026')](),this[_0x544d14('0xb5d')](_0x544d14('0x320'),_0x496849);}},{'key':_0x248274('0x33'),'value':function(_0x3bbad1){var _0x55e2b1=_0x248274,_0x2a4c60=this;if(this[_0x55e2b1('0x104e')]())return this[_0x55e2b1('0x1189')](this[_0x55e2b1('0x107b')]()),$('#'['concat'](this[_0x55e2b1('0x107b')](),_0x55e2b1('0x5ac')))[_0x55e2b1('0x9c2')](),void $('#'[_0x55e2b1('0x3cc')](this[_0x55e2b1('0x107b')]()))['show']();var _0x1fd880=JSON['stringify'](this['getSourceMapping']()),_0x197408='';null!==this[_0x55e2b1('0x5a3')]()&&(_0x197408=JSON[_0x55e2b1('0x591')](this[_0x55e2b1('0x5a3')]()));var _0x45f301='';null!==this[_0x55e2b1('0xf72')]()&&(_0x45f301=this[_0x55e2b1('0xf72')]()),_0x1fd880=this[_0x55e2b1('0x117f')](_0x1fd880),_0x197408=this[_0x55e2b1('0x117f')](_0x197408),_0x2a4c60[_0x55e2b1('0x304')](),$[_0x55e2b1('0xe80')](this[_0x55e2b1('0xe32')],{'t':this[_0x55e2b1('0xf4a')],'a':_0x55e2b1('0x33'),'sm':_0x1fd880,'ft':_0x197408,'ob':_0x45f301},function(_0x245d73){var _0x3111db=_0x55e2b1;_0x3111db('0x5f8')===_0x245d73['status']?_0x2a4c60[_0x3111db('0x81f')](_0x3bbad1,_0x245d73[_0x3111db('0x21e')]):_0x2a4c60['getFailCallBack'](_0x3bbad1,_0x245d73['object']);},_0x55e2b1('0x41c'))[_0x55e2b1('0x66')](function(_0x28a92b){var _0x10916a=_0x55e2b1;0x193===_0x28a92b[_0x10916a('0x11e7')]&&_0x2a4c60[_0x10916a('0xb5d')](_0x10916a('0x63d'),_0x28a92b['responseJSON']['message']);})['always'](function(){var _0xb58b29=_0x55e2b1;_0x2a4c60[_0xb58b29('0x7e9')]();}),_0x2a4c60[_0x55e2b1('0xf31')](),this[_0x55e2b1('0xd00')](_0x55e2b1('0x33'),this[_0x55e2b1('0xb7b')],this[_0x55e2b1('0xf4a')]);}},{'key':_0x248274('0x143'),'value':function(_0x5b9510){var _0xe29fb7=_0x248274,_0x3d88db=JSON[_0xe29fb7('0x591')](this['getSourceMapping']()),_0x197a0c=JSON[_0xe29fb7('0x591')](_0x5b9510),_0xca05b2='';null!==this['getFilter']()&&(_0xca05b2=JSON[_0xe29fb7('0x591')](this[_0xe29fb7('0x5a3')]()));var _0xdefd2='';null!==this[_0xe29fb7('0xf72')]()&&(_0xdefd2=this[_0xe29fb7('0xf72')]());var _0x529277=this[_0xe29fb7('0xe32')]['replace'](_0xe29fb7('0xcfe'),'data.php');return _0x529277=''[_0xe29fb7('0x3cc')](_0x529277,_0xe29fb7('0xd26'))['concat'](this['table']),_0x529277=''[_0xe29fb7('0x3cc')](_0x529277,_0xe29fb7('0x6b1'))[_0xe29fb7('0x3cc')](this[_0xe29fb7('0x117f')](_0x3d88db)),_0x529277=''[_0xe29fb7('0x3cc')](_0x529277,_0xe29fb7('0xcbf'))['concat'](this[_0xe29fb7('0x117f')](_0x197a0c)),_0x529277=''['concat'](_0x529277,'&ft=')[_0xe29fb7('0x3cc')](this[_0xe29fb7('0x117f')](_0xca05b2)),_0x529277=''[_0xe29fb7('0x3cc')](_0x529277,_0xe29fb7('0x553'))[_0xe29fb7('0x3cc')](_0xdefd2),this[_0xe29fb7('0x1190')]()&&(_0x529277=''['concat'](_0x529277,_0xe29fb7('0x104'))),this['remoteTableSkipProfileRestriction']()&&(_0x529277=''['concat'](_0x529277,_0xe29fb7('0xbb8'))),_0x529277;}},{'key':_0x248274('0x1190'),'value':function(){return!0x1;}},{'key':_0x248274('0xe9'),'value':function(){return!0x1;}},{'key':_0x248274('0xdb8'),'value':function(_0x2d999a){return _0x2d999a;}},{'key':'getSuccessCallBack','value':function(_0x332c31,_0x25614e){var _0x11f0cd=_0x248274;for(var _0x18b4de=[],_0xb82fa=this[_0x11f0cd('0x315')](),_0x2451ea=0x0;_0x2451ea<_0x25614e[_0x11f0cd('0x525')];_0x2451ea++){for(var _0x4bda33=[],_0xe9cdc6=0x0;_0xe9cdc6<_0xb82fa[_0x11f0cd('0x525')];_0xe9cdc6++)_0x4bda33[_0xe9cdc6]=_0x25614e[_0x2451ea][_0xb82fa[_0xe9cdc6]];_0x18b4de[_0x11f0cd('0x8f8')](this[_0x11f0cd('0xdb8')](_0x4bda33));}this[_0x11f0cd('0x2b5')]=_0x25614e,void 0x0!==_0x332c31['callBack']&&null!==_0x332c31[_0x11f0cd('0x108a')]&&(void 0x0!==_0x332c31['callBackData']&&null!==_0x332c31[_0x11f0cd('0x234')]||(_0x332c31['callBackData']=[]),_0x332c31[_0x11f0cd('0x234')][_0x11f0cd('0x8f8')](_0x25614e),_0x332c31['callBackData'][_0x11f0cd('0x8f8')](_0x18b4de),this['callFunction'](_0x332c31[_0x11f0cd('0x108a')],_0x332c31[_0x11f0cd('0x234')])),this['tableData']=_0x18b4de,void 0x0!==_0x332c31[_0x11f0cd('0xe1b')]&&null!==_0x332c31[_0x11f0cd('0xe1b')]&&!0x0===_0x332c31['noRender']||(this[_0x11f0cd('0x38d')](this['getTableName']()),$('#'['concat'](this[_0x11f0cd('0x107b')](),_0x11f0cd('0x5ac')))[_0x11f0cd('0x9c2')](),$('#'['concat'](this['getTableName']()))[_0x11f0cd('0x41b')]());}},{'key':_0x248274('0xdfc'),'value':function(_0x133625,_0x5d7a58){}},{'key':_0x248274('0x1bf'),'value':function(_0x2db245,_0x5b2e20,_0x557f8f){var _0xad0a63=_0x248274,_0x2ba19a=this,_0xb82714=JSON[_0xad0a63('0x591')](this[_0xad0a63('0xd30')]());_0xb82714=this[_0xad0a63('0x117f')](_0xb82714),_0x2ba19a[_0xad0a63('0x304')](),$[_0xad0a63('0xe80')](this[_0xad0a63('0xe32')],{'t':this[_0xad0a63('0xf4a')],'a':_0xad0a63('0x1bf'),'id':_0x2db245,'sm':_0xb82714},function(_0xe7a671){var _0x1b961b=_0xad0a63;_0x1b961b('0x5f8')===_0xe7a671['status']?(_0x557f8f&&delete _0xe7a671['object']['id'],this['currentElement']=_0xe7a671[_0x1b961b('0x21e')],_0x2ba19a[_0x1b961b('0x67c')][_0x1b961b('0x1036')](_0x2ba19a,[_0x5b2e20,_0xe7a671[_0x1b961b('0x21e')]])):_0x2ba19a['getElementFailCallBack'][_0x1b961b('0x1036')](_0x2ba19a,[_0x5b2e20,_0xe7a671[_0x1b961b('0x21e')]]);},_0xad0a63('0x41c'))['fail'](function(_0x19c902){var _0x4a0785=_0xad0a63;0x193===_0x19c902[_0x4a0785('0x11e7')]&&_0x2ba19a[_0x4a0785('0xb5d')]('Access\x20Forbidden',_0x19c902['responseJSON'][_0x4a0785('0xa1a')]);})['always'](function(){var _0x497730=_0xad0a63;_0x2ba19a[_0x497730('0x7e9')]();}),this[_0xad0a63('0xd00')]('getElement',this[_0xad0a63('0xb7b')],this[_0xad0a63('0xf4a')]);}},{'key':_0x248274('0x67c'),'value':function(_0x27d99a,_0x469d27){var _0x469ed1=_0x248274;void 0x0!==_0x27d99a[_0x469ed1('0x108a')]&&null!==_0x27d99a[_0x469ed1('0x108a')]&&(void 0x0!==_0x27d99a[_0x469ed1('0x234')]&&null!==_0x27d99a[_0x469ed1('0x234')]||(_0x27d99a[_0x469ed1('0x234')]=[]),_0x27d99a[_0x469ed1('0x234')][_0x469ed1('0x8f8')](_0x469d27),this['callFunction'](_0x27d99a['callBack'],_0x27d99a['callBackData'],this)),this[_0x469ed1('0xa81')]=_0x469d27,void 0x0!==_0x27d99a['noRender']&&null!==_0x27d99a['noRender']&&!0x0===_0x27d99a[_0x469ed1('0xe1b')]||this['renderForm'](_0x469d27);}},{'key':'getElementFailCallBack','value':function(_0x367113,_0x59a950){}},{'key':_0x248274('0xa8b'),'value':function(){return this['tableData'];}},{'key':_0x248274('0x107b'),'value':function(){var _0x47f3ad=_0x248274;return this[_0x47f3ad('0xb7b')];}},{'key':_0x248274('0x940'),'value':function(_0x2e7f78,_0x9cc626){var _0x440714=_0x248274,_0x41905d=this,_0x3e3ba8='',_0x3222ed='';void 0x0!==_0x2e7f78[0x3]&&null!==_0x2e7f78[0x3]&&(_0x3e3ba8=_0x2e7f78[0x3]),void 0x0!==_0x2e7f78[0x4]&&null!==_0x2e7f78[0x4]&&(_0x3222ed=JSON['stringify'](_0x2e7f78[0x4]));var _0x341d99=this[_0x440714('0x112d')][_0x440714('0x998')](this[_0x440714('0xe32')],{'t':_0x2e7f78[0x0],'key':_0x2e7f78[0x1],'value':_0x2e7f78[0x2],'method':_0x3e3ba8,'methodParams':_0x3222ed,'a':_0x440714('0x940')}),_0x5034b6=this['requestCache'][_0x440714('0x385')](_0x341d99);if(null!=_0x5034b6)_0x440714('0x5f8')===_0x5034b6[_0x440714('0x11e7')]&&(_0x9cc626['callBackData'][_0x440714('0x8f8')](_0x5034b6[_0x440714('0xac8')]),null!==_0x9cc626[_0x440714('0xf53')]&&void 0x0!==_0x9cc626[_0x440714('0xf53')]&&_0x9cc626[_0x440714('0x234')][_0x440714('0x8f8')](_0x9cc626[_0x440714('0xf53')]),_0x41905d[_0x440714('0x4c5')](_0x9cc626[_0x440714('0x108a')],_0x9cc626[_0x440714('0x234')]));else{var _0x3208e0=function _0x2ce09e(_0x4d172a){var _0x968e9a=_0x440714;if('SUCCESS'===_0x4d172a[_0x968e9a('0x11e7')]){_0x41905d[_0x968e9a('0x112d')][_0x968e9a('0x6cd')](this[_0x968e9a('0x38c')][_0x968e9a('0x1192')],_0x4d172a);var _0x61109=_0x9cc626;_0x61109[_0x968e9a('0x234')]=[_0x9cc626[_0x968e9a('0x234')][0x0]],_0x61109['callBackData']['push'](_0x4d172a[_0x968e9a('0xac8')]),null!==_0x61109[_0x968e9a('0xf53')]&&void 0x0!==_0x61109[_0x968e9a('0xf53')]&&_0x61109[_0x968e9a('0x234')]['push'](_0x9cc626[_0x968e9a('0xf53')]),_0x41905d[_0x968e9a('0x4c5')](_0x61109[_0x968e9a('0x108a')],_0x61109[_0x968e9a('0x234')]);}else _0x968e9a('0xec4')===_0x4d172a[_0x968e9a('0xa1a')]&&alert(_0x968e9a('0x12b')[_0x968e9a('0x3cc')](_0x2ce09e['table'],'\x20')[_0x968e9a('0x3cc')](_0x4d172a['message']));};_0x3208e0[_0x440714('0x1192')]=_0x341d99,_0x3208e0['table']=_0x2e7f78[0x0],$[_0x440714('0xe80')](this['moduleRelativeURL'],{'t':_0x2e7f78[0x0],'key':_0x2e7f78[0x1],'value':_0x2e7f78[0x2],'method':_0x3e3ba8,'methodParams':_0x3222ed,'a':'getFieldValues'},_0x3208e0,'json');}}},{'key':_0x248274('0x7e6'),'value':function(_0x5ee81b){var _0x8ed55f=_0x248274;try{localStorage[_0x8ed55f('0xedd')]();}catch(_0x169574){}$[_0x8ed55f('0xe80')](this[_0x8ed55f('0xe32')],{'a':_0x8ed55f('0x5d3'),'empid':_0x5ee81b},function(){var _0x23265c=_0x8ed55f;top[_0x23265c('0x54f')]['href']=clientUrl;},_0x8ed55f('0x41c'));}},{'key':'customAction','value':function(_0x1e636a,_0xb3181b,_0x367887,_0x455e3d,_0x4b8f0f){var _0x2f928b=_0x248274,_0x2c652=this;_0x367887=this[_0x2f928b('0x117f')](_0x367887),_0x4b8f0f?$['post'](this['moduleRelativeURL'],{'t':this['table'],'a':'ca','sa':_0x1e636a,'mod':_0xb3181b,'req':_0x367887},function(_0x3d18f5){var _0x5d0b2e=_0x2f928b;_0x5d0b2e('0x5f8')===_0x3d18f5['status']?(_0x455e3d[_0x5d0b2e('0x234')][_0x5d0b2e('0x8f8')](_0x3d18f5[_0x5d0b2e('0xac8')]),_0x2c652[_0x5d0b2e('0x4c5')](_0x455e3d[_0x5d0b2e('0xf53')],_0x455e3d[_0x5d0b2e('0x234')])):(_0x455e3d[_0x5d0b2e('0x234')][_0x5d0b2e('0x8f8')](_0x3d18f5[_0x5d0b2e('0xac8')]),_0x2c652['callFunction'](_0x455e3d['callBackFail'],_0x455e3d[_0x5d0b2e('0x234')]));},'json'):$[_0x2f928b('0x281')](this[_0x2f928b('0xe32')],{'t':this[_0x2f928b('0xf4a')],'a':'ca','sa':_0x1e636a,'mod':_0xb3181b,'req':_0x367887},function(_0x3d593c){var _0x541ded=_0x2f928b;_0x541ded('0x5f8')===_0x3d593c[_0x541ded('0x11e7')]?(_0x455e3d[_0x541ded('0x234')][_0x541ded('0x8f8')](_0x3d593c['data']),_0x2c652['callFunction'](_0x455e3d[_0x541ded('0xf53')],_0x455e3d[_0x541ded('0x234')])):(_0x455e3d[_0x541ded('0x234')][_0x541ded('0x8f8')](_0x3d593c[_0x541ded('0xac8')]),_0x2c652['callFunction'](_0x455e3d['callBackFail'],_0x455e3d[_0x541ded('0x234')]));});}},{'key':_0x248274('0xc9'),'value':function(_0x542f71,_0x2287b4,_0x2f7af3,_0x26cc6a){var _0x2eb73e=_0x248274;_0x2287b4['a']=_0x542f71,$['post'](this[_0x2eb73e('0xe32')],_0x2287b4,function(_0x38b3fb){var _0x42e966=_0x2eb73e;_0x42e966('0x5f8')===_0x38b3fb['status']?_0x2f7af3(_0x38b3fb['data']):_0x26cc6a(_0x38b3fb[_0x42e966('0xac8')]);},_0x2eb73e('0x41c'));}},{'key':_0x248274('0x9c6'),'value':function(_0x2713aa,_0x1360a7){var _0x1a7976=_0x248274;_0x1360a7['a']=_0x2713aa;var _0x702694='';for(var _0x27be65 in _0x1360a7)_0x1360a7[_0x1a7976('0x100')](_0x27be65)&&(''!==_0x702694&&(_0x702694+='&'),_0x702694+=''[_0x1a7976('0x3cc')](_0x27be65,'=')['concat'](_0x1360a7[_0x27be65]));return''[_0x1a7976('0x3cc')](this[_0x1a7976('0xe32')],'?')[_0x1a7976('0x3cc')](_0x702694);}},{'key':_0x248274('0x175'),'value':function(){var _0x29aa3a=_0x248274;return''['concat'](this['moduleRelativeURL'][_0x29aa3a('0x166')](_0x29aa3a('0xcfe'),''),_0x29aa3a('0x2bf'));}},{'key':_0x248274('0x6d4'),'value':function(_0x4c2327){var _0x5e96f6=_0x248274;return this[_0x5e96f6('0xe32')][_0x5e96f6('0x166')](_0x5e96f6('0xcfe'),_0x4c2327);}}])&&_0x5b337b(_0x33e2ea[_0x248274('0x98c')],_0x434291),_0x157ed1&&_0x5b337b(_0x33e2ea,_0x157ed1),_0x4d9b4d;}(_0x260ac1[_0x426103('0x544')]);_0x43ac77[_0x426103('0x544')]=_0x339f75;},{'../api-common/RequestCache':0x38,'./IceApiClient':0x3e,'./MasterDataReader':0x42,'./ModuleBase':0x43}],0x3a:[function(_0x11a980,_0x43612e,_0x5cb0c3){var _0x302d65=_0x404097;'use strict';var _0x4d2fd2;function _0x509dd0(_0x54eeda){var _0x7f0ca6=_0x3ab6;return(_0x509dd0=_0x7f0ca6('0xae9')==typeof Symbol&&'symbol'==typeof Symbol[_0x7f0ca6('0x78e')]?function(_0x3f3c2a){return typeof _0x3f3c2a;}:function(_0x3ac2f8){var _0x317680=_0x7f0ca6;return _0x3ac2f8&&'function'==typeof Symbol&&_0x3ac2f8[_0x317680('0x3c6')]===Symbol&&_0x3ac2f8!==Symbol[_0x317680('0x98c')]?_0x317680('0x245'):typeof _0x3ac2f8;})(_0x54eeda);}function _0x490700(_0x218b5a,_0x5097ea){var _0x8e436e=_0x3ab6;for(var _0x4d4f74=0x0;_0x4d4f74<_0x5097ea[_0x8e436e('0x525')];_0x4d4f74++){var _0x1b0de2=_0x5097ea[_0x4d4f74];_0x1b0de2[_0x8e436e('0x156')]=_0x1b0de2['enumerable']||!0x1,_0x1b0de2[_0x8e436e('0xbb2')]=!0x0,_0x8e436e('0x832')in _0x1b0de2&&(_0x1b0de2[_0x8e436e('0x4db')]=!0x0),Object[_0x8e436e('0xa95')](_0x218b5a,_0x1b0de2[_0x8e436e('0x1192')],_0x1b0de2);}}function _0x22159a(_0x558161,_0x2191d6){return!_0x2191d6||'object'!==_0x509dd0(_0x2191d6)&&'function'!=typeof _0x2191d6?function(_0x194c89){var _0x15e958=_0x3ab6;if(void 0x0===_0x194c89)throw new ReferenceError(_0x15e958('0x2e9'));return _0x194c89;}(_0x558161):_0x2191d6;}function _0x1c6391(){var _0x583768=_0x3ab6;if(_0x583768('0x56')==typeof Reflect||!Reflect[_0x583768('0x6ea')])return!0x1;if(Reflect[_0x583768('0x6ea')]['sham'])return!0x1;if(_0x583768('0xae9')==typeof Proxy)return!0x0;try{return Date[_0x583768('0x98c')][_0x583768('0x537')][_0x583768('0x4b0')](Reflect[_0x583768('0x6ea')](Date,[],function(){})),!0x0;}catch(_0x551a00){return!0x1;}}function _0x3a7175(_0x458567){var _0x2b05e8=_0x3ab6;return(_0x3a7175=Object['setPrototypeOf']?Object[_0x2b05e8('0x10c0')]:function(_0x272e19){var _0x5bb1b7=_0x2b05e8;return _0x272e19[_0x5bb1b7('0x11e6')]||Object['getPrototypeOf'](_0x272e19);})(_0x458567);}function _0x30344c(_0x20a629,_0x34fb61){var _0x37652e=_0x3ab6;return(_0x30344c=Object[_0x37652e('0x6c2')]||function(_0x19df72,_0x7b4133){return _0x19df72['__proto__']=_0x7b4133,_0x19df72;})(_0x20a629,_0x34fb61);}Object[_0x302d65('0xa95')](_0x5cb0c3,_0x302d65('0x114c'),{'value':!0x0}),_0x5cb0c3['default']=void 0x0;var _0x307ddf=function(_0x5d107a){var _0x2692af=_0x302d65;!function(_0x428c35,_0x290706){var _0x44ff44=_0x3ab6;if(_0x44ff44('0xae9')!=typeof _0x290706&&null!==_0x290706)throw new TypeError('Super\x20expression\x20must\x20either\x20be\x20null\x20or\x20a\x20function');_0x428c35[_0x44ff44('0x98c')]=Object['create'](_0x290706&&_0x290706[_0x44ff44('0x98c')],{'constructor':{'value':_0x428c35,'writable':!0x0,'configurable':!0x0}}),_0x290706&&_0x30344c(_0x428c35,_0x290706);}(_0x2804c1,_0x5d107a);var _0x1aa397,_0x1f6b37,_0x557594,_0x286baa,_0x5f1cc0=(_0x1aa397=_0x2804c1,function(){var _0x4fc136=_0x3ab6,_0x32c397,_0x360c83=_0x3a7175(_0x1aa397);if(_0x1c6391()){var _0x4e92e5=_0x3a7175(this)[_0x4fc136('0x3c6')];_0x32c397=Reflect[_0x4fc136('0x6ea')](_0x360c83,arguments,_0x4e92e5);}else _0x32c397=_0x360c83[_0x4fc136('0x1036')](this,arguments);return _0x22159a(this,_0x32c397);});function _0x2804c1(_0x429034,_0x5bbf7b,_0x5dfe41,_0x1f42b6){return function(_0x20eb84,_0x42b1d9){var _0x4c3592=_0x3ab6;if(!(_0x20eb84 instanceof _0x42b1d9))throw new TypeError(_0x4c3592('0x202'));}(this,_0x2804c1),_0x5f1cc0['call'](this,_0x429034,_0x5bbf7b,_0x5dfe41,_0x1f42b6);}return _0x1f6b37=_0x2804c1,(_0x557594=[{'key':'getStatusFieldPosition','value':function(){var _0x3aa32b=_0x3ab6;return this[_0x3aa32b('0x315')]()[_0x3aa32b('0x525')]-0x1;}},{'key':_0x2692af('0x118e'),'value':function(_0x4d1a3e,_0x3a7f82){var _0x50c957=_0x2692af;$('#'['concat'](this['itemNameLower'],_0x50c957('0x328')))[_0x50c957('0x11ad')](_0x50c957('0x41b')),$('#'['concat'](this[_0x50c957('0x548')],_0x50c957('0x126')))['html'](this[_0x50c957('0x3d2')](_0x3a7f82)),$('#'[_0x50c957('0x3cc')](this[_0x50c957('0x548')],_0x50c957('0x126')))['val'](_0x3a7f82),this['statusChangeId']=_0x4d1a3e;}},{'key':'closeDialog','value':function(){var _0x2d2e2d=_0x2692af;$('#'['concat'](this[_0x2d2e2d('0x548')],_0x2d2e2d('0x328')))[_0x2d2e2d('0x11ad')]('hide');}},{'key':'changeStatus','value':function(){var _0x5aa4f6=_0x2692af,_0x3d8a60=$('#'[_0x5aa4f6('0x3cc')](this['itemNameLower'],'_status'))[_0x5aa4f6('0x7eb')](),_0x2b107e=$('#'[_0x5aa4f6('0x3cc')](this[_0x5aa4f6('0x548')],_0x5aa4f6('0x10de')))[_0x5aa4f6('0x7eb')]();if(null!=_0x3d8a60&&null!=_0x3d8a60&&''!=_0x3d8a60){var _0x45538f={'id':this[_0x5aa4f6('0xe91')],'status':_0x3d8a60,'reason':_0x2b107e},_0xf76326=JSON['stringify'](_0x45538f),_0xfae763=[];_0xfae763[_0x5aa4f6('0x234')]=[],_0xfae763['callBackSuccess']=_0x5aa4f6('0xf8a'),_0xfae763[_0x5aa4f6('0xb7f')]='changeStatusFailCallBack',this[_0x5aa4f6('0x960')](_0x5aa4f6('0x284'),'admin='[_0x5aa4f6('0x3cc')](this['modulePathName']),_0xf76326,_0xfae763),this['closeDialog'](),this[_0x5aa4f6('0xe91')]=null;}else this[_0x5aa4f6('0xb5d')](_0x5aa4f6('0xb84'),_0x5aa4f6('0x706')[_0x5aa4f6('0x3cc')](this[_0x5aa4f6('0x548')],_0x5aa4f6('0x10d4')));}},{'key':_0x2692af('0xf8a'),'value':function(_0x1e7c25){var _0x5d6d9e=_0x2692af;this['showMessage'](_0x5d6d9e('0xd40'),''[_0x5d6d9e('0x3cc')](this[_0x5d6d9e('0x78a')],_0x5d6d9e('0xd71'))),this[_0x5d6d9e('0x33')]([]);}},{'key':'changeStatusFailCallBack','value':function(_0x4813d2){var _0x559471=_0x2692af;this[_0x559471('0xb5d')](_0x559471('0xb84'),_0x559471('0x1113')['concat'](this['itemName'],'\x20request\x20status'));}},{'key':'getActionButtonsHtml','value':function(_0x24d50a,_0x5dccad){var _0xe32277=_0x2692af,_0x31b87a=_0xe32277('0xcd'),_0x59402e=this['getStatusOptionsData'](_0x5dccad[this[_0xe32277('0x534')]()]);return _0x31b87a=(_0x31b87a=Object[_0xe32277('0x7ce')](_0x59402e)[_0xe32277('0x525')]>0x0?_0x31b87a[_0xe32277('0x166')](_0xe32277('0x515'),_0xe32277('0xd8b')):_0x31b87a['replace']('_status_',''))[_0xe32277('0x166')]('_logs_',_0xe32277('0x63a')),_0x31b87a=this['showDelete']?_0x31b87a[_0xe32277('0x166')]('_delete_',_0xe32277('0xd70')):_0x31b87a['replace']('_delete_',''),_0x31b87a=(_0x31b87a=(_0x31b87a=(_0x31b87a=this[_0xe32277('0x4b1')]?_0x31b87a[_0xe32277('0x166')](_0xe32277('0x260'),_0xe32277('0x7a9')):_0x31b87a[_0xe32277('0x166')](_0xe32277('0x260'),''))[_0xe32277('0x166')](/_id_/g,_0x24d50a))[_0xe32277('0x166')](/_BASE_/g,this[_0xe32277('0xed3')]))[_0xe32277('0x166')](/_cstatus_/g,_0x5dccad[this[_0xe32277('0x534')]()]);}},{'key':_0x2692af('0x1190'),'value':function(){var _0x17645f=_0x2692af;return _0x17645f('0x44')!==this['user'][_0x17645f('0x9de')]&&_0x17645f('0x11a9')!==this['user']['user_level'];}},{'key':_0x2692af('0x7a8'),'value':function(_0x586477){var _0x47ee3f=_0x2692af,_0x5ae834={};return _0x47ee3f('0x73d')===_0x586477||(_0x47ee3f('0x793')===_0x586477?(_0x5ae834[_0x47ee3f('0x73d')]=_0x47ee3f('0x73d'),_0x5ae834[_0x47ee3f('0xb1b')]=_0x47ee3f('0xb1b')):_0x47ee3f('0xb1b')===_0x586477||_0x47ee3f('0x2b7')===_0x586477||_0x47ee3f('0x93e')===_0x586477||(_0x5ae834['Cancellation\x20Requested']=_0x47ee3f('0xe2a'),_0x5ae834[_0x47ee3f('0x2b7')]='Cancelled')),_0x5ae834;}},{'key':'getStatusOptions','value':function(_0x59ee0c){var _0x3323b0=_0x2692af;return this['generateOptions'](this[_0x3323b0('0x7a8')](_0x59ee0c));}}])&&_0x490700(_0x1f6b37[_0x2692af('0x98c')],_0x557594),_0x286baa&&_0x490700(_0x1f6b37,_0x286baa),_0x2804c1;}(((_0x4d2fd2=_0x11a980(_0x302d65('0x28b')))&&_0x4d2fd2[_0x302d65('0x114c')]?_0x4d2fd2:{'default':_0x4d2fd2})[_0x302d65('0x544')]);_0x5cb0c3['default']=_0x307ddf;},{'./LogViewAdapter':0x41}],0x3b:[function(_0x52dcd4,_0x944cb5,_0x1d8f97){var _0x1d7bcf=_0x404097;'use strict';var _0x5744a1;function _0x52dd11(_0xb24d59){var _0x269332=_0x3ab6;return(_0x52dd11=_0x269332('0xae9')==typeof Symbol&&'symbol'==typeof Symbol[_0x269332('0x78e')]?function(_0x5078db){return typeof _0x5078db;}:function(_0x1f67ad){var _0x54b960=_0x269332;return _0x1f67ad&&'function'==typeof Symbol&&_0x1f67ad[_0x54b960('0x3c6')]===Symbol&&_0x1f67ad!==Symbol[_0x54b960('0x98c')]?_0x54b960('0x245'):typeof _0x1f67ad;})(_0xb24d59);}function _0x2942ee(_0x5d6cf3,_0x3cee3c){var _0x2a8938=_0x3ab6;if(!(_0x5d6cf3 instanceof _0x3cee3c))throw new TypeError(_0x2a8938('0x202'));}function _0x25fea7(_0x3b1b81,_0x31ac8b){var _0x53c724=_0x3ab6;for(var _0x12f9d0=0x0;_0x12f9d0<_0x31ac8b[_0x53c724('0x525')];_0x12f9d0++){var _0x20a0b2=_0x31ac8b[_0x12f9d0];_0x20a0b2[_0x53c724('0x156')]=_0x20a0b2[_0x53c724('0x156')]||!0x1,_0x20a0b2[_0x53c724('0xbb2')]=!0x0,_0x53c724('0x832')in _0x20a0b2&&(_0x20a0b2[_0x53c724('0x4db')]=!0x0),Object['defineProperty'](_0x3b1b81,_0x20a0b2[_0x53c724('0x1192')],_0x20a0b2);}}function _0x33455d(_0x2f3526,_0x3c6168){var _0x24ac92=_0x3ab6;return!_0x3c6168||'object'!==_0x52dd11(_0x3c6168)&&_0x24ac92('0xae9')!=typeof _0x3c6168?function(_0x90a4d8){var _0x24e969=_0x24ac92;if(void 0x0===_0x90a4d8)throw new ReferenceError(_0x24e969('0x2e9'));return _0x90a4d8;}(_0x2f3526):_0x3c6168;}function _0x3a0f34(){var _0x5a21ba=_0x3ab6;if(_0x5a21ba('0x56')==typeof Reflect||!Reflect[_0x5a21ba('0x6ea')])return!0x1;if(Reflect[_0x5a21ba('0x6ea')][_0x5a21ba('0x16e')])return!0x1;if('function'==typeof Proxy)return!0x0;try{return Date[_0x5a21ba('0x98c')][_0x5a21ba('0x537')]['call'](Reflect[_0x5a21ba('0x6ea')](Date,[],function(){})),!0x0;}catch(_0x3b4eda){return!0x1;}}function _0x4926dc(_0x5a037b){var _0x1d1e0a=_0x3ab6;return(_0x4926dc=Object[_0x1d1e0a('0x6c2')]?Object[_0x1d1e0a('0x10c0')]:function(_0x4a7ccb){var _0x51173c=_0x1d1e0a;return _0x4a7ccb[_0x51173c('0x11e6')]||Object[_0x51173c('0x10c0')](_0x4a7ccb);})(_0x5a037b);}function _0x12d2bc(_0x4d5e6b,_0x26d2b5){var _0x13f550=_0x3ab6;return(_0x12d2bc=Object[_0x13f550('0x6c2')]||function(_0x24cbba,_0x2730ca){return _0x24cbba['__proto__']=_0x2730ca,_0x24cbba;})(_0x4d5e6b,_0x26d2b5);}Object[_0x1d7bcf('0xa95')](_0x1d8f97,_0x1d7bcf('0x114c'),{'value':!0x0}),_0x1d8f97[_0x1d7bcf('0x544')]=void 0x0;var _0x53e56b=function(_0x593070){var _0x47302b=_0x1d7bcf;!function(_0x12008a,_0x14194f){var _0x3cf300=_0x3ab6;if('function'!=typeof _0x14194f&&null!==_0x14194f)throw new TypeError(_0x3cf300('0x409'));_0x12008a['prototype']=Object[_0x3cf300('0x5c2')](_0x14194f&&_0x14194f['prototype'],{'constructor':{'value':_0x12008a,'writable':!0x0,'configurable':!0x0}}),_0x14194f&&_0x12d2bc(_0x12008a,_0x14194f);}(_0x11d1fd,_0x593070);var _0x2e21a1,_0x3deae5,_0x16483e,_0x392ff6,_0xdd9958=(_0x2e21a1=_0x11d1fd,function(){var _0x466cdd=_0x3ab6,_0x20baaf,_0x9ebda3=_0x4926dc(_0x2e21a1);if(_0x3a0f34()){var _0x3ae980=_0x4926dc(this)[_0x466cdd('0x3c6')];_0x20baaf=Reflect[_0x466cdd('0x6ea')](_0x9ebda3,arguments,_0x3ae980);}else _0x20baaf=_0x9ebda3[_0x466cdd('0x1036')](this,arguments);return _0x33455d(this,_0x20baaf);});function _0x11d1fd(){return _0x2942ee(this,_0x11d1fd),_0xdd9958['apply'](this,arguments);}return _0x3deae5=_0x11d1fd,(_0x16483e=[{'key':_0x47302b('0x315'),'value':function(){return[];}},{'key':_0x47302b('0x5d2'),'value':function(){return[];}},{'key':_0x47302b('0xfe3'),'value':function(){return[];}},{'key':_0x47302b('0x38d'),'value':function(_0x3d8cee){}}])&&_0x25fea7(_0x3deae5[_0x47302b('0x98c')],_0x16483e),_0x392ff6&&_0x25fea7(_0x3deae5,_0x392ff6),_0x11d1fd;}(((_0x5744a1=_0x52dcd4(_0x1d7bcf('0x118c')))&&_0x5744a1[_0x1d7bcf('0x114c')]?_0x5744a1:{'default':_0x5744a1})[_0x1d7bcf('0x544')]);_0x1d8f97['default']=_0x53e56b;},{'./AdapterBase':0x39}],0x3c:[function(_0x1522c4,_0x5d8610,_0x4283bc){var _0x23812a=_0x404097;'use strict';var _0x1993f7;function _0x3e43c2(_0x1ba12b){var _0x58b29a=_0x3ab6;return(_0x3e43c2=_0x58b29a('0xae9')==typeof Symbol&&_0x58b29a('0x245')==typeof Symbol[_0x58b29a('0x78e')]?function(_0x3c7510){return typeof _0x3c7510;}:function(_0x540908){var _0x2aa9fd=_0x58b29a;return _0x540908&&'function'==typeof Symbol&&_0x540908[_0x2aa9fd('0x3c6')]===Symbol&&_0x540908!==Symbol[_0x2aa9fd('0x98c')]?_0x2aa9fd('0x245'):typeof _0x540908;})(_0x1ba12b);}function _0x246c5d(_0x5e9655,_0x4bf8f4){var _0x59df5a=_0x3ab6;for(var _0x3478dc=0x0;_0x3478dc<_0x4bf8f4[_0x59df5a('0x525')];_0x3478dc++){var _0x3c0821=_0x4bf8f4[_0x3478dc];_0x3c0821[_0x59df5a('0x156')]=_0x3c0821[_0x59df5a('0x156')]||!0x1,_0x3c0821[_0x59df5a('0xbb2')]=!0x0,_0x59df5a('0x832')in _0x3c0821&&(_0x3c0821[_0x59df5a('0x4db')]=!0x0),Object['defineProperty'](_0x5e9655,_0x3c0821['key'],_0x3c0821);}}function _0x1b9c1e(_0x4fb2bb,_0x5bebcb){var _0x1dde18=_0x3ab6;return!_0x5bebcb||'object'!==_0x3e43c2(_0x5bebcb)&&_0x1dde18('0xae9')!=typeof _0x5bebcb?function(_0x251901){var _0x31beaf=_0x1dde18;if(void 0x0===_0x251901)throw new ReferenceError(_0x31beaf('0x2e9'));return _0x251901;}(_0x4fb2bb):_0x5bebcb;}function _0x53032b(){var _0x12113b=_0x3ab6;if(_0x12113b('0x56')==typeof Reflect||!Reflect[_0x12113b('0x6ea')])return!0x1;if(Reflect['construct']['sham'])return!0x1;if(_0x12113b('0xae9')==typeof Proxy)return!0x0;try{return Date[_0x12113b('0x98c')][_0x12113b('0x537')]['call'](Reflect[_0x12113b('0x6ea')](Date,[],function(){})),!0x0;}catch(_0x378006){return!0x1;}}function _0x2ebe8d(_0x46e153){var _0x52af9f=_0x3ab6;return(_0x2ebe8d=Object[_0x52af9f('0x6c2')]?Object[_0x52af9f('0x10c0')]:function(_0x156324){var _0x32f4e0=_0x52af9f;return _0x156324['__proto__']||Object[_0x32f4e0('0x10c0')](_0x156324);})(_0x46e153);}function _0x5bd22e(_0x39fc3a,_0x279e7b){return(_0x5bd22e=Object['setPrototypeOf']||function(_0x2e5c03,_0x5580ac){var _0x52a632=_0x3ab6;return _0x2e5c03[_0x52a632('0x11e6')]=_0x5580ac,_0x2e5c03;})(_0x39fc3a,_0x279e7b);}Object[_0x23812a('0xa95')](_0x4283bc,_0x23812a('0x114c'),{'value':!0x0}),_0x4283bc[_0x23812a('0x544')]=void 0x0;var _0x45af2e=function(_0x5040ce){var _0x48369a=_0x23812a;!function(_0x54b29b,_0x5ed789){var _0x41e8a3=_0x3ab6;if(_0x41e8a3('0xae9')!=typeof _0x5ed789&&null!==_0x5ed789)throw new TypeError(_0x41e8a3('0x409'));_0x54b29b[_0x41e8a3('0x98c')]=Object[_0x41e8a3('0x5c2')](_0x5ed789&&_0x5ed789[_0x41e8a3('0x98c')],{'constructor':{'value':_0x54b29b,'writable':!0x0,'configurable':!0x0}}),_0x5ed789&&_0x5bd22e(_0x54b29b,_0x5ed789);}(_0x19b881,_0x5040ce);var _0x21b240,_0xdefa96,_0x504078,_0x5d7e7f,_0x3e918d=(_0x21b240=_0x19b881,function(){var _0x23f661=_0x3ab6,_0x1616a3,_0x436786=_0x2ebe8d(_0x21b240);if(_0x53032b()){var _0x4ef0cc=_0x2ebe8d(this)[_0x23f661('0x3c6')];_0x1616a3=Reflect[_0x23f661('0x6ea')](_0x436786,arguments,_0x4ef0cc);}else _0x1616a3=_0x436786[_0x23f661('0x1036')](this,arguments);return _0x1b9c1e(this,_0x1616a3);});function _0x19b881(_0x3b8134,_0x48fd0c,_0x14f00c,_0x4901f7){var _0x5d60cf=_0x3ab6,_0x5dd272;return function(_0x1b82a2,_0x453cfc){if(!(_0x1b82a2 instanceof _0x453cfc))throw new TypeError('Cannot\x20call\x20a\x20class\x20as\x20a\x20function');}(this,_0x19b881),(_0x5dd272=_0x3e918d['call'](this,_0x3b8134,_0x48fd0c,_0x14f00c,_0x4901f7))[_0x5d60cf('0x535')]='',_0x5dd272;}return _0xdefa96=_0x19b881,(_0x504078=[{'key':_0x48369a('0x315'),'value':function(){var _0x23596c=_0x48369a;return['id',_0x23596c('0x263'),_0x23596c('0x55c'),_0x23596c('0x2b8')];}},{'key':_0x48369a('0x5d2'),'value':function(){var _0x32f224=_0x48369a;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':'Name'},{'sTitle':'Display\x20Status'},{'sTitle':_0x32f224('0x9b4')}];}},{'key':_0x48369a('0xfe3'),'value':function(){var _0x269796=_0x48369a;return[['id',{'label':'ID','type':_0x269796('0xdc0')}],[_0x269796('0x263'),{'label':_0x269796('0x1'),'type':_0x269796('0x768'),'validation':''}],[_0x269796('0x55c'),{'label':'Display\x20Status','type':_0x269796('0x8ff'),'source':[[_0x269796('0x5ac'),_0x269796('0x8e')],[_0x269796('0x987'),_0x269796('0x987')]]}],['field_type',{'label':_0x269796('0x150'),'type':_0x269796('0x8ff'),'source':[['text',_0x269796('0x44f')],[_0x269796('0xa2e'),'Multiline\x20Text'],[_0x269796('0x8ff'),_0x269796('0x547')],['select2',_0x269796('0x820')],['select2multi',_0x269796('0x55d')],[_0x269796('0xd4e'),'File\x20Upload'],[_0x269796('0x65d'),'Date'],[_0x269796('0xb6a'),_0x269796('0xbfa')],[_0x269796('0x918'),_0x269796('0x9c')],[_0x269796('0xecc'),_0x269796('0x53e')]]}],['field_label',{'label':_0x269796('0xb98'),'type':_0x269796('0x768'),'validation':''}],['field_validation',{'label':'Validation','type':_0x269796('0x1137'),'validation':_0x269796('0x1c1'),'sort':_0x269796('0x1c1'),'null-label':_0x269796('0x46f'),'allow-null':!0x0,'source':[[_0x269796('0x1c1'),_0x269796('0xa9f')],[_0x269796('0xd95'),_0x269796('0x129')],[_0x269796('0xea4'),_0x269796('0xca7')],[_0x269796('0xf0e'),_0x269796('0x110')],[_0x269796('0xe84'),_0x269796('0x17a')],[_0x269796('0x659'),'Email\x20or\x20Empty']]}],['field_options',{'label':'Field\x20Options','type':_0x269796('0x49'),'form':[['label',{'label':_0x269796('0x811'),'type':_0x269796('0x768'),'validation':''}],[_0x269796('0x832'),{'label':_0x269796('0x1ac'),'type':'text','validation':_0x269796('0x1c1')}]],'html':_0x269796('0x5be'),'validation':_0x269796('0x1c1')}],[_0x269796('0x2b8'),{'label':_0x269796('0x9b4'),'type':_0x269796('0x768'),'validation':_0x269796('0xd95')}],['display_section',{'label':_0x269796('0xe1e'),'type':_0x269796('0x768'),'validation':_0x269796('0x1c1')}]];}},{'key':_0x48369a('0x3b5'),'value':function(_0x44dc13){var _0x338a14=_0x48369a;this[_0x338a14('0x535')]=_0x44dc13;}},{'key':_0x48369a('0x66f'),'value':function(_0x409fbe){var _0x20579b=_0x48369a,_0x392f47;return null!=(_0x392f47=_0x409fbe[_0x20579b('0x263')])&&/^[a-z][a-z0-9._]+$/[_0x20579b('0xaac')](_0x392f47)?null:'Invalid\x20name\x20for\x20custom\x20field';}},{'key':_0x48369a('0xb48'),'value':function(_0x19ca18){var _0x1bfe59=_0x48369a,_0x22d5e3,_0x543219=[_0x19ca18[_0x1bfe59('0x263')]],_0x116832=[];if(_0x543219[_0x1bfe59('0x8f8')]({}),_0x543219[0x1][_0x1bfe59('0xf90')]=_0x19ca18[_0x1bfe59('0xa5e')],_0x543219[0x1][_0x1bfe59('0x3f7')]=_0x19ca18['field_type'],_0x543219[0x1][_0x1bfe59('0x94d')]=_0x19ca18['field_validation'],[_0x1bfe59('0x8ff'),_0x1bfe59('0x1137'),_0x1bfe59('0x256')][_0x1bfe59('0x4dc')](_0x19ca18['field_type'])>=0x0){for(var _0x706ae3 in _0x22d5e3=''===_0x19ca18['field_options']||void 0x0===_0x19ca18['field_options']?[]:JSON[_0x1bfe59('0xf01')](_0x19ca18[_0x1bfe59('0xaae')]))_0x116832[_0x1bfe59('0x8f8')]([_0x22d5e3[_0x706ae3][_0x1bfe59('0x832')],_0x22d5e3[_0x706ae3][_0x1bfe59('0xf90')]]);_0x543219[0x1][_0x1bfe59('0x4fe')]=_0x116832;}return null!=_0x19ca18[_0x1bfe59('0x9e')]&&void 0x0!==_0x19ca18[_0x1bfe59('0x9e')]||(_0x19ca18[_0x1bfe59('0x9e')]=''),_0x19ca18[_0x1bfe59('0xac8')]=JSON[_0x1bfe59('0x591')](_0x543219),_0x19ca18[_0x1bfe59('0x3f7')]=this[_0x1bfe59('0x535')],_0x19ca18;}}])&&_0x246c5d(_0xdefa96[_0x48369a('0x98c')],_0x504078),_0x5d7e7f&&_0x246c5d(_0xdefa96,_0x5d7e7f),_0x19b881;}(((_0x1993f7=_0x1522c4(_0x23812a('0x118c')))&&_0x1993f7[_0x23812a('0x114c')]?_0x1993f7:{'default':_0x1993f7})[_0x23812a('0x544')]);_0x4283bc[_0x23812a('0x544')]=_0x45af2e;},{'./AdapterBase':0x39}],0x3d:[function(_0x43d7cc,_0x32790c,_0x28c669){var _0x393a56=_0x404097;'use strict';function _0x3791c1(_0x29aa75,_0x3c45eb){var _0x20d652=_0x3ab6;for(var _0x54ff9f=0x0;_0x54ff9f<_0x3c45eb[_0x20d652('0x525')];_0x54ff9f++){var _0x293652=_0x3c45eb[_0x54ff9f];_0x293652[_0x20d652('0x156')]=_0x293652[_0x20d652('0x156')]||!0x1,_0x293652[_0x20d652('0xbb2')]=!0x0,'value'in _0x293652&&(_0x293652[_0x20d652('0x4db')]=!0x0),Object['defineProperty'](_0x29aa75,_0x293652['key'],_0x293652);}}Object[_0x393a56('0xa95')](_0x28c669,'__esModule',{'value':!0x0}),_0x28c669['default']=void 0x0;var _0x2e9180={'float':function(_0x2a634c){var _0x436f6a=_0x393a56;return!(null==_0x2a634c||!_0x2a634c[_0x436f6a('0x91e')](/^[-+]?[0-9]+(\.[0-9]+)?$/));},'number':function(_0x17fd88){return!(null==_0x17fd88||!_0x17fd88['match'](/^[0-9]+$/));},'numberOrEmpty':function(_0x59fe52){if(''===_0x59fe52)return!0x0;return!(null==_0x59fe52||!_0x59fe52['match'](/^[0-9]+$/));},'email':function(_0x165874){var _0x1cafd2=_0x393a56;return null!=_0x165874&&/^\s*[\w\-+_]+(\.[\w\-+_]+)*@[\w\-+_]+\.[\w\-+_]+(\.[\w\-+_]+)*\s*$/[_0x1cafd2('0xaac')](_0x165874);},'emailOrEmpty':function(_0x251ef2){var _0x1e2104=_0x393a56;if(''===_0x251ef2)return!0x0;return null!=_0x251ef2&&/^\s*[\w\-+_]+(\.[\w\-+_]+)*@[\w\-+_]+\.[\w\-+_]+(\.[\w\-+_]+)*\s*$/[_0x1e2104('0xaac')](_0x251ef2);},'username':function(_0x2b3c2e){var _0xe6c513=_0x393a56;return null!=_0x2b3c2e&&/^[a-zA-Z0-9.-]+$/[_0xe6c513('0xaac')](_0x2b3c2e);},'input':function(_0x241889){var _0x226dcd=_0x393a56;return null!=_0x241889&&_0x241889[_0x226dcd('0x525')]>0x0;}},_0x5cae6b=function(){var _0x31bc9c=_0x393a56;function _0x205fc1(_0x1719c3,_0x3a70f7,_0x50f64e){var _0x9ae8e9=_0x3ab6;!function(_0x18884c,_0x39e952){var _0x24c8a0=_0x3ab6;if(!(_0x18884c instanceof _0x39e952))throw new TypeError(_0x24c8a0('0x202'));}(this,_0x205fc1),this[_0x9ae8e9('0xeb')]={},this[_0x9ae8e9('0xda4')]=_0x1719c3,this[_0x9ae8e9('0x685')]=!0x1,this[_0x9ae8e9('0x1183')]=null,this[_0x9ae8e9('0x303')]='',this[_0x9ae8e9('0x430')]=null,this['validateAll']=_0x3a70f7,this[_0x9ae8e9('0xcc')]=[],this['settings']={'thirdPartyPopup':null,'LabelErrorClass':!0x1,'ShowPopup':!0x0},this[_0x9ae8e9('0x953')]=jQuery[_0x9ae8e9('0x1158')](this[_0x9ae8e9('0x953')],_0x50f64e),this[_0x9ae8e9('0x8cb')]=[_0x9ae8e9('0x768'),_0x9ae8e9('0x571'),_0x9ae8e9('0x8b3'),_0x9ae8e9('0xa42'),'password','select-one',_0x9ae8e9('0x1131'),_0x9ae8e9('0xa2e'),_0x9ae8e9('0xd4e'),_0x9ae8e9('0xecc')],this[_0x9ae8e9('0x8e2')]=_0x2e9180;}var _0x405b54,_0x4fbe89,_0x50207c;return _0x405b54=_0x205fc1,_0x4fbe89=[{'key':_0x31bc9c('0x42f'),'value':function(_0x126c55,_0x58264b){var _0x3a8e59=_0x31bc9c,_0x67c0bc=_0x126c55['attr']('id');$('#'[_0x3a8e59('0x3cc')](this[_0x3a8e59('0xda4')],_0x3a8e59('0xc32'))['concat'](_0x67c0bc))[_0x3a8e59('0xd91')](_0x3a8e59('0x8d9')),$('#'['concat'](this['formId'],'\x20#help_')[_0x3a8e59('0x3cc')](_0x67c0bc))[_0x3a8e59('0xb07')]('');}},{'key':_0x31bc9c('0x822'),'value':function(_0x4965cc,_0x572aaf){var _0xb853bd=_0x31bc9c;this['formError']=!0x0,null!=_0x4965cc[_0xb853bd('0xba5')](_0xb853bd('0xa1a'))?(this[_0xb853bd('0x303')]+=''[_0xb853bd('0x3cc')](_0x4965cc[_0xb853bd('0xba5')](_0xb853bd('0xa1a')),'\x0a'),this[_0xb853bd('0xcc')][_0x4965cc[_0xb853bd('0xba5')]('name')]=_0x4965cc[_0xb853bd('0xba5')](_0xb853bd('0xa1a'))):this[_0xb853bd('0xcc')][_0x4965cc[_0xb853bd('0xba5')](_0xb853bd('0x263'))]='';var _0xccec35=_0x4965cc[_0xb853bd('0xba5')]('id'),_0x15f69c=_0x4965cc[_0xb853bd('0xba5')](_0xb853bd('0x94d')),_0x35847b=_0x4965cc['attr']('validation');$('#'[_0xb853bd('0x3cc')](this['formId'],'\x20#field_')['concat'](_0xccec35))[_0xb853bd('0x25b')](_0xb853bd('0x8d9')),void 0x0===_0x35847b||null==_0x35847b||''===_0x35847b?$('#'[_0xb853bd('0x3cc')](this['formId'],'\x20#help_err_')[_0xb853bd('0x3cc')](_0xccec35))['html'](_0x35847b):void 0x0===_0x15f69c||null==_0x15f69c||''===_0x15f69c?$('#'[_0xb853bd('0x3cc')](this[_0xb853bd('0xda4')],_0xb853bd('0x71'))[_0xb853bd('0x3cc')](_0xccec35))[_0xb853bd('0xb07')](_0xb853bd('0x46f')):_0xb853bd('0xf0e')===_0x15f69c||_0xb853bd('0xd95')===_0x15f69c?$('#'[_0xb853bd('0x3cc')](this[_0xb853bd('0xda4')],_0xb853bd('0x71'))['concat'](_0xccec35))[_0xb853bd('0xb07')](_0xb853bd('0x296')):_0xb853bd('0xe84')===_0x15f69c?$('#'[_0xb853bd('0x3cc')](this[_0xb853bd('0xda4')],_0xb853bd('0x71'))['concat'](_0xccec35))[_0xb853bd('0xb07')]('Email\x20required'):$('#'['concat'](this[_0xb853bd('0xda4')],_0xb853bd('0x71'))['concat'](_0xccec35))[_0xb853bd('0xb07')](_0xb853bd('0x46f'));}},{'key':_0x31bc9c('0x382'),'value':function(){var _0x301a53=_0x31bc9c;this['formError']&&(void 0x0!==this[_0x301a53('0x953')][_0x301a53('0x353')]&&null!=this['settings'][_0x301a53('0x353')]?this[_0x301a53('0x953')][_0x301a53('0x353')]['alert']():!0x0===this[_0x301a53('0x953')][_0x301a53('0xb6f')]&&(void 0x0!==this[_0x301a53('0xeb')][_0x301a53('0xd87')]&&null!=this['tempOptions']['popupTop']?this[_0x301a53('0x491')](_0x301a53('0x270'),this['errorMessages'],this['tempOptions'][_0x301a53('0xd87')]):this['alert'](_0x301a53('0x270'),this[_0x301a53('0x303')],-0x1)));}},{'key':_0x31bc9c('0x7bd'),'value':function(_0x2c8069){var _0x5bab3f=_0x31bc9c;this[_0x5bab3f('0xeb')]=_0x2c8069;var _0x1c48e1=this;this[_0x5bab3f('0x685')]=!0x1,this[_0x5bab3f('0x303')]='',this[_0x5bab3f('0x1183')]={};var _0x4b24c1=function(_0x4c40da){var _0x542efa=_0x5bab3f,_0x4f22c6=null,_0x1a5e63=_0x4c40da[_0x542efa('0xba5')]('name');!0x1!==_0x1c48e1[_0x542efa('0x953')]['LabelErrorClass']&&$(_0x542efa('0x447')['concat'](_0x1a5e63,'\x27]'))[_0x542efa('0xd91')](_0x1c48e1[_0x542efa('0x953')][_0x542efa('0x1c6')]);var _0x5baaa6=_0x4c40da[_0x542efa('0xba5')]('id'),_0x17728c=_0x4c40da[_0x542efa('0xba5')]('type');if(_0x4c40da[_0x542efa('0x810')](_0x542efa('0x928'))||_0x4c40da[_0x542efa('0x810')](_0x542efa('0xbc4')))return!0x0;if(jQuery[_0x542efa('0x10ba')](_0x17728c,_0x1c48e1[_0x542efa('0x8cb')])>=0x0){if(_0x4c40da[_0x542efa('0x810')]('uploadInput'))_0x4f22c6=_0x4c40da['attr'](_0x542efa('0x7eb'));else{if(_0x542efa('0x571')===_0x17728c||_0x542efa('0x8b3')===_0x17728c)_0x4f22c6=$(_0x542efa('0x1149')[_0x542efa('0x3cc')](_0x1a5e63,_0x542efa('0x1001')))[_0x542efa('0x7eb')]();else{if(_0x4c40da[_0x542efa('0x810')](_0x542efa('0x15')))_0x4f22c6=null!=$('#'[_0x542efa('0x3cc')](_0x1c48e1[_0x542efa('0xda4')],'\x20#')['concat'](_0x5baaa6))[_0x542efa('0x1137')](_0x542efa('0xac8'))&&void 0x0!==$('#'[_0x542efa('0x3cc')](_0x1c48e1['formId'],'\x20#')[_0x542efa('0x3cc')](_0x5baaa6))[_0x542efa('0x1137')]('data')?$('#'['concat'](_0x1c48e1[_0x542efa('0xda4')],'\x20#')['concat'](_0x5baaa6))[_0x542efa('0x1137')](_0x542efa('0xac8'))['id']:'';else{if(_0x4c40da[_0x542efa('0x810')]('select2Multi')){if(null!=$('#'['concat'](_0x1c48e1['formId'],'\x20#')[_0x542efa('0x3cc')](_0x5baaa6))['select2'](_0x542efa('0xac8'))&&void 0x0!==$('#'[_0x542efa('0x3cc')](_0x1c48e1[_0x542efa('0xda4')],'\x20#')['concat'](_0x5baaa6))[_0x542efa('0x1137')](_0x542efa('0xac8'))){var _0x2906ec=$('#'[_0x542efa('0x3cc')](_0x1c48e1[_0x542efa('0xda4')],'\x20#')[_0x542efa('0x3cc')](_0x5baaa6))['select2']('data');_0x4f22c6=[];for(var _0x27c823=0x0;_0x27c823<_0x2906ec[_0x542efa('0x525')];_0x27c823++)_0x4f22c6['push'](_0x2906ec[_0x27c823]['id']);_0x4f22c6=JSON[_0x542efa('0x591')](_0x4f22c6);}else _0x4f22c6='';}else _0x4f22c6=_0x4c40da[_0x542efa('0x810')](_0x542efa('0x7ea'))?$('#'[_0x542efa('0x3cc')](_0x1c48e1[_0x542efa('0xda4')],'\x20#')['concat'](_0x5baaa6))[_0x542efa('0xac8')](_0x542efa('0xcb6'))['isEmpty']()?'':$('#'['concat'](_0x5baaa6))[_0x542efa('0xac8')]('signaturePad')['toDataURL']():_0x4c40da[_0x542efa('0x810')](_0x542efa('0x68b'))?$('#'[_0x542efa('0x3cc')](_0x1c48e1[_0x542efa('0xda4')],'\x20#')[_0x542efa('0x3cc')](_0x5baaa6))['data']('simplemde')[_0x542efa('0x832')]():_0x4c40da[_0x542efa('0x810')](_0x542efa('0xb5c'))?$('#'[_0x542efa('0x3cc')](_0x1c48e1[_0x542efa('0xda4')],'\x20#')[_0x542efa('0x3cc')](_0x5baaa6))[_0x542efa('0xac8')](_0x542efa('0x11b8'))[_0x542efa('0x128')]():_0x4c40da[_0x542efa('0x810')](_0x542efa('0x627'))?tinyMCE[_0x542efa('0x33')](_0x5baaa6)[_0x542efa('0x1ec')]({'format':_0x542efa('0xeaf')}):_0x4c40da[_0x542efa('0x7eb')]();}}}var _0x925604=_0x4c40da[_0x542efa('0xba5')](_0x542efa('0x94d')),_0x4203ab=!0x1;void 0x0!==_0x925604&&null!=_0x925604&&void 0x0!==_0x1c48e1[_0x542efa('0x8e2')][_0x925604]&&null!=_0x1c48e1['validator'][_0x925604]?_0x4203ab=_0x1c48e1[_0x542efa('0x8e2')][_0x925604](_0x4f22c6):(_0x4203ab=!_0x1c48e1['validateAll']||void 0x0!==_0x925604&&null!=_0x925604&&'none'===_0x925604||_0x1c48e1['validator'][_0x542efa('0x20c')](_0x4f22c6),_0x1c48e1[_0x542efa('0x1183')][_0x5baaa6]=_0x4f22c6),_0x4203ab?(_0x1c48e1[_0x542efa('0x42f')](_0x4c40da,null),_0x1c48e1['formObject'][_0x5baaa6]=_0x4f22c6):_0x1c48e1['addError'](_0x4c40da,null);}},_0x214b16=$('#'['concat'](this['formId'],_0x5bab3f('0x424')));return _0x214b16['each'](function(){_0x4b24c1($(this));}),(_0x214b16=$('#'[_0x5bab3f('0x3cc')](this[_0x5bab3f('0xda4')],_0x5bab3f('0x83c'))))['each'](function(){_0x4b24c1($(this));}),this[_0x5bab3f('0x382')](),this['tempOptions']={},!this['formError'];}},{'key':_0x31bc9c('0x223'),'value':function(){var _0x1bb48b=_0x31bc9c;return this[_0x1bb48b('0x1183')];}},{'key':'alert','value':function(_0x1073f2){var _0x389958=_0x31bc9c;function _0x38a880(_0x5ce8f2,_0x1d3687){var _0x100c2f=_0x3ab6;return _0x1073f2[_0x100c2f('0x1036')](this,arguments);}return _0x38a880[_0x389958('0x537')]=function(){var _0x2d791b=_0x389958;return _0x1073f2[_0x2d791b('0x537')]();},_0x38a880;}(function(_0x30231e,_0x54d031){alert(_0x54d031);})}],_0x50207c=[{'key':_0x31bc9c('0x289'),'value':function(){return _0x2e9180;}}],_0x4fbe89&&_0x3791c1(_0x405b54['prototype'],_0x4fbe89),_0x50207c&&_0x3791c1(_0x405b54,_0x50207c),_0x205fc1;}();_0x28c669[_0x393a56('0x544')]=_0x5cae6b;},{}],0x3e:[function(_0x17ee84,_0x9b58a1,_0x5f2296){var _0x588581=_0x404097;'use strict';function _0x44c7fd(_0x952053,_0x42b559){var _0x2b07b9=_0x3ab6;if(!(_0x952053 instanceof _0x42b559))throw new TypeError(_0x2b07b9('0x202'));}function _0x3806cb(_0x1ac8f4,_0x4d8af4){var _0x4401fb=_0x3ab6;for(var _0x1baa11=0x0;_0x1baa11<_0x4d8af4['length'];_0x1baa11++){var _0x4e8e08=_0x4d8af4[_0x1baa11];_0x4e8e08[_0x4401fb('0x156')]=_0x4e8e08[_0x4401fb('0x156')]||!0x1,_0x4e8e08[_0x4401fb('0xbb2')]=!0x0,'value'in _0x4e8e08&&(_0x4e8e08[_0x4401fb('0x4db')]=!0x0),Object[_0x4401fb('0xa95')](_0x1ac8f4,_0x4e8e08[_0x4401fb('0x1192')],_0x4e8e08);}}Object[_0x588581('0xa95')](_0x5f2296,_0x588581('0x114c'),{'value':!0x0}),_0x5f2296[_0x588581('0x544')]=void 0x0;var _0x54d349=_0x17ee84(_0x588581('0x1081')),_0x104027=function(){var _0xe2160a=_0x588581;function _0x3b216e(_0x5b8f7b,_0x34d9a3,_0x28b9cc){var _0x1f75e7=_0x3ab6,_0xdec787=!(arguments[_0x1f75e7('0x525')]>0x3&&void 0x0!==arguments[0x3])||arguments[0x3];_0x44c7fd(this,_0x3b216e),this[_0x1f75e7('0xed3')]=_0x5b8f7b,this[_0x1f75e7('0x326')]=_0x34d9a3,this[_0x1f75e7('0xf5a')]=_0x28b9cc,this[_0x1f75e7('0x2aa')]=_0xdec787;}var _0x544769,_0x38dc76,_0xb1202d;return _0x544769=_0x3b216e,(_0x38dc76=[{'key':_0xe2160a('0x33'),'value':function(_0x193f1a){var _0x413863=_0xe2160a;if(this[_0x413863('0x2aa')]){var _0x345097=''[_0x413863('0x3cc')](this[_0x413863('0xf5a')],'api/index.php?token=')[_0x413863('0x3cc')](this[_0x413863('0x326')],_0x413863('0x405'))['concat'](_0x193f1a);return _0x54d349[_0x413863('0x33')](_0x345097);}return _0x54d349[_0x413863('0x33')](this[_0x413863('0xed3')]+_0x193f1a,{'headers':{'Authorization':_0x413863('0x1083')['concat'](this['token'])}});}}])&&_0x3806cb(_0x544769[_0xe2160a('0x98c')],_0x38dc76),_0xb1202d&&_0x3806cb(_0x544769,_0xb1202d),_0x3b216e;}();_0x5f2296[_0x588581('0x544')]=_0x104027;},{'axios':0x58}],0x3f:[function(_0x47f0fc,_0x2df70c,_0x1cae3e){var _0x35d350=_0x404097;'use strict';function _0x42bbc5(_0x3f53d2,_0x1118c1){if(!(_0x3f53d2 instanceof _0x1118c1))throw new TypeError('Cannot\x20call\x20a\x20class\x20as\x20a\x20function');}function _0x41a464(_0x1cb225,_0x55e837){var _0x367f92=_0x3ab6;for(var _0x9a2529=0x0;_0x9a2529<_0x55e837[_0x367f92('0x525')];_0x9a2529++){var _0x5d6bb8=_0x55e837[_0x9a2529];_0x5d6bb8[_0x367f92('0x156')]=_0x5d6bb8[_0x367f92('0x156')]||!0x1,_0x5d6bb8['configurable']=!0x0,'value'in _0x5d6bb8&&(_0x5d6bb8[_0x367f92('0x4db')]=!0x0),Object['defineProperty'](_0x1cb225,_0x5d6bb8['key'],_0x5d6bb8);}}Object[_0x35d350('0xa95')](_0x1cae3e,'__esModule',{'value':!0x0}),_0x1cae3e['default']=void 0x0;var _0x193457=_0x47f0fc(_0x35d350('0x1081')),_0x450908=function(){var _0x125dbc=_0x35d350;function _0xfd366b(_0x269784){var _0x59c456=_0x3ab6,_0x44ce68=arguments[_0x59c456('0x525')]>0x1&&void 0x0!==arguments[0x1]?arguments[0x1]:0xa;_0x42bbc5(this,_0xfd366b),this[_0x59c456('0x7fb')]=_0x269784,this[_0x59c456('0x1c4')]=_0x44ce68;}var _0xf70521,_0xbd134e,_0x3314ed;return _0xf70521=_0xfd366b,(_0xbd134e=[{'key':'readMetaData','value':function(){this['adapter']['initFieldMasterData']();}},{'key':'get','value':function(_0x3d98e0){var _0x355ced=_0x3ab6,_0x2542e8=this,_0x366b64=_0x3d98e0[_0x355ced('0x9dc')],_0x420fea=_0x3d98e0[_0x355ced('0xaaf')],_0x53a683=_0x3d98e0[_0x355ced('0xa51')],_0x54f96d=_0x3d98e0[_0x355ced('0x9f1')],_0x5c49c7=_0x3d98e0[_0x355ced('0x119a')],_0x61b658=_0x3d98e0[_0x355ced('0x22e')],_0x238d41=_0x61b658||this[_0x355ced('0x1c4')],_0x13e33b=(_0x366b64-0x1)*_0x238d41,_0x3cd977=this['getDataUrl'](this[_0x355ced('0x7fb')][_0x355ced('0x315')](),_0x420fea,_0x5c49c7),_0x285fe6=''[_0x355ced('0x3cc')](_0x3cd977,_0x355ced('0x51a'))[_0x355ced('0x3cc')](_0x13e33b,_0x355ced('0xd36'))[_0x355ced('0x3cc')](_0x238d41);return _0x285fe6=this[_0x355ced('0xf71')](this[_0x355ced('0x7fb')][_0x355ced('0x315')](),_0x285fe6,_0x53a683,_0x54f96d),_0x285fe6=''[_0x355ced('0x3cc')](_0x285fe6,_0x355ced('0xb08')),_0x193457[_0x355ced('0xe80')](_0x285fe6,{})['then'](function(_0x5c31cd){var _0x333117=_0x355ced,_0x38ff58=_0x2542e8[_0x333117('0x370')](_0x366b64,_0x420fea,_0x53a683,_0x54f96d,_0x5c49c7,_0x61b658),_0x2390c0={'items':_0x5c31cd[_0x333117('0xac8')][_0x333117('0x1066')],'total':_0x5c31cd['data']['totalRecords']};return _0x2542e8[_0x333117('0x7fb')][_0x333117('0xf7e')]&&window['localStorage'][_0x333117('0x102d')](_0x38ff58,JSON[_0x333117('0x591')](_0x2390c0)),_0x2390c0;});}},{'key':_0x125dbc('0xa60'),'value':function(_0x2e38af){var _0x560b9b=_0x125dbc,_0x43fd55=_0x2e38af[_0x560b9b('0x9dc')],_0x341d54=_0x2e38af[_0x560b9b('0xaaf')],_0x5f2a75=_0x2e38af['sortField'],_0x152527=_0x2e38af['sortOrder'],_0xb70578=_0x2e38af['filters'],_0x5af815=_0x2e38af['limit'],_0x286cb4=this[_0x560b9b('0x370')](_0x43fd55,_0x341d54,_0x5f2a75,_0x152527,_0xb70578,_0x5af815),_0x3db90a=window[_0x560b9b('0xbd1')][_0x560b9b('0x3d6')](_0x286cb4);return _0x3db90a?JSON['parse'](_0x3db90a):null;}},{'key':_0x125dbc('0x1b2'),'value':function(_0x3967ee){var _0xc572ba=_0x125dbc,_0x5ac9ea=_0x3967ee[_0xc572ba('0x9dc')],_0x5f3e1d=_0x3967ee[_0xc572ba('0xaaf')],_0x21a98c=_0x3967ee[_0xc572ba('0xa51')],_0x534886=_0x3967ee[_0xc572ba('0x9f1')],_0x107192=_0x3967ee['filters'],_0x2b7af3=_0x3967ee[_0xc572ba('0x22e')],_0x294924=this[_0xc572ba('0x370')](_0x5ac9ea,_0x5f3e1d,_0x21a98c,_0x534886,_0x107192,_0x2b7af3);window[_0xc572ba('0xbd1')][_0xc572ba('0x102d')](_0x294924,null);}},{'key':_0x125dbc('0x370'),'value':function(_0x4d8fd9,_0x103635,_0x3c4baa,_0x189579,_0x5e3202,_0x434be6){var _0x6d5f83=_0x125dbc;return''['concat'](this[_0x6d5f83('0x7fb')][_0x6d5f83('0xf4a')],'|')[_0x6d5f83('0x3cc')](_0x4d8fd9,'|')['concat'](_0x103635,'|')[_0x6d5f83('0x3cc')](_0x3c4baa,'|')[_0x6d5f83('0x3cc')](_0x189579,'|')[_0x6d5f83('0x3cc')](_0x5e3202,'|')[_0x6d5f83('0x3cc')](_0x434be6);}},{'key':_0x125dbc('0xf71'),'value':function(_0x5d725a,_0x1d18e6,_0xa1c6d4,_0x35f594){var _0x3b9b14=_0x125dbc,_0xaddbb5='';return _0xa1c6d4?(_0x1d18e6=''['concat'](_0x1d18e6,'&sorting=1'),_0x1d18e6=''[_0x3b9b14('0x3cc')](_0x1d18e6,'&iSortCol_0=')['concat'](_0x5d725a[_0x3b9b14('0x4dc')](_0xa1c6d4)),_0x1d18e6=''['concat'](_0x1d18e6,_0x3b9b14('0x97c'))[_0x3b9b14('0x3cc')](_0x3b9b14('0xad5')===_0x35f594?'DESC':_0x3b9b14('0x398'))):null!==this['adapter'][_0x3b9b14('0xf72')]()&&(_0xaddbb5=this[_0x3b9b14('0x7fb')][_0x3b9b14('0xf72')](),_0x1d18e6=''[_0x3b9b14('0x3cc')](_0x1d18e6,'&ob=')['concat'](_0xaddbb5)),_0x1d18e6;}},{'key':_0x125dbc('0x143'),'value':function(_0x3184b4,_0x4cd5df,_0x47eaf1){var _0x51a532=_0x125dbc,_0x46b282=JSON[_0x51a532('0x591')](this[_0x51a532('0x7fb')][_0x51a532('0xd30')]()),_0x3c22c7=JSON[_0x51a532('0x591')](_0x3184b4),_0x437a2f='';null!==this[_0x51a532('0x7fb')][_0x51a532('0x5a3')]()&&(_0x437a2f=JSON[_0x51a532('0x591')](this['adapter'][_0x51a532('0x5a3')]()));var _0x5108ab=this[_0x51a532('0x7fb')][_0x51a532('0xe32')]['replace'](_0x51a532('0xcfe'),_0x51a532('0x53c'));return _0x5108ab=''[_0x51a532('0x3cc')](_0x5108ab,_0x51a532('0xd26'))['concat'](this[_0x51a532('0x7fb')][_0x51a532('0xf4a')]),_0x5108ab=''[_0x51a532('0x3cc')](_0x5108ab,_0x51a532('0x6b1'))['concat'](_0x46b282),_0x5108ab=''[_0x51a532('0x3cc')](_0x5108ab,_0x51a532('0xcbf'))[_0x51a532('0x3cc')](_0x3c22c7),_0x5108ab=''[_0x51a532('0x3cc')](_0x5108ab,_0x51a532('0x8ae'))[_0x51a532('0x3cc')](_0x437a2f),_0x4cd5df&&''!==_0x4cd5df['trim']()&&(_0x5108ab+='&sSearch='[_0x51a532('0x3cc')](_0x4cd5df)),this['adapter'][_0x51a532('0x1190')]()&&(_0x5108ab=''[_0x51a532('0x3cc')](_0x5108ab,'&type=sub')),this[_0x51a532('0x7fb')][_0x51a532('0xe9')]()&&(_0x5108ab=''['concat'](_0x5108ab,_0x51a532('0xbb8'))),_0x5108ab;}}])&&_0x41a464(_0xf70521['prototype'],_0xbd134e),_0x3314ed&&_0x41a464(_0xf70521,_0x3314ed),_0xfd366b;}();_0x1cae3e[_0x35d350('0x544')]=_0x450908;},{'axios':0x58}],0x40:[function(_0x313de8,_0x3f200d,_0x12f2fb){var _0x4b9e7c=_0x404097;'use strict';var _0x32fb89;function _0x2b11c9(_0x1d3822){var _0x1a00c4=_0x3ab6;return(_0x2b11c9=_0x1a00c4('0xae9')==typeof Symbol&&_0x1a00c4('0x245')==typeof Symbol['iterator']?function(_0x50e614){return typeof _0x50e614;}:function(_0x5d3a61){var _0x658840=_0x1a00c4;return _0x5d3a61&&_0x658840('0xae9')==typeof Symbol&&_0x5d3a61['constructor']===Symbol&&_0x5d3a61!==Symbol[_0x658840('0x98c')]?'symbol':typeof _0x5d3a61;})(_0x1d3822);}function _0x3ccb5a(_0x553d3c,_0x443a84){var _0x30b0c0=_0x3ab6;for(var _0x2c5412=0x0;_0x2c5412<_0x443a84['length'];_0x2c5412++){var _0x10501f=_0x443a84[_0x2c5412];_0x10501f[_0x30b0c0('0x156')]=_0x10501f[_0x30b0c0('0x156')]||!0x1,_0x10501f[_0x30b0c0('0xbb2')]=!0x0,'value'in _0x10501f&&(_0x10501f[_0x30b0c0('0x4db')]=!0x0),Object[_0x30b0c0('0xa95')](_0x553d3c,_0x10501f[_0x30b0c0('0x1192')],_0x10501f);}}function _0xac31c8(_0x149f50,_0x27c6d4){var _0x29d9d8=_0x3ab6;return!_0x27c6d4||_0x29d9d8('0x21e')!==_0x2b11c9(_0x27c6d4)&&_0x29d9d8('0xae9')!=typeof _0x27c6d4?function(_0x3830ac){var _0x21f7b3=_0x29d9d8;if(void 0x0===_0x3830ac)throw new ReferenceError(_0x21f7b3('0x2e9'));return _0x3830ac;}(_0x149f50):_0x27c6d4;}function _0x762aa9(){var _0x1fc295=_0x3ab6;if(_0x1fc295('0x56')==typeof Reflect||!Reflect['construct'])return!0x1;if(Reflect[_0x1fc295('0x6ea')]['sham'])return!0x1;if(_0x1fc295('0xae9')==typeof Proxy)return!0x0;try{return Date['prototype'][_0x1fc295('0x537')][_0x1fc295('0x4b0')](Reflect[_0x1fc295('0x6ea')](Date,[],function(){})),!0x0;}catch(_0x979f){return!0x1;}}function _0x464fdc(_0x4e3105){var _0x4c16c8=_0x3ab6;return(_0x464fdc=Object['setPrototypeOf']?Object[_0x4c16c8('0x10c0')]:function(_0x2fa437){var _0x55e91c=_0x4c16c8;return _0x2fa437[_0x55e91c('0x11e6')]||Object[_0x55e91c('0x10c0')](_0x2fa437);})(_0x4e3105);}function _0x358e2a(_0x19c2dc,_0xd680f1){var _0x2790fe=_0x3ab6;return(_0x358e2a=Object[_0x2790fe('0x6c2')]||function(_0x1833f0,_0x36645a){var _0x424b03=_0x2790fe;return _0x1833f0[_0x424b03('0x11e6')]=_0x36645a,_0x1833f0;})(_0x19c2dc,_0xd680f1);}Object[_0x4b9e7c('0xa95')](_0x12f2fb,'__esModule',{'value':!0x0}),_0x12f2fb[_0x4b9e7c('0x544')]=void 0x0;var _0xd2c439=function(_0x25b474){var _0x16350d=_0x4b9e7c;!function(_0xb4ea67,_0x4f734b){var _0x21dd08=_0x3ab6;if(_0x21dd08('0xae9')!=typeof _0x4f734b&&null!==_0x4f734b)throw new TypeError(_0x21dd08('0x409'));_0xb4ea67[_0x21dd08('0x98c')]=Object['create'](_0x4f734b&&_0x4f734b['prototype'],{'constructor':{'value':_0xb4ea67,'writable':!0x0,'configurable':!0x0}}),_0x4f734b&&_0x358e2a(_0xb4ea67,_0x4f734b);}(_0x52ec32,_0x25b474);var _0x503027,_0x25e6a7,_0x55d4a9,_0x1a248a,_0x3750b0=(_0x503027=_0x52ec32,function(){var _0x36e8f3=_0x3ab6,_0x5207bb,_0x110532=_0x464fdc(_0x503027);if(_0x762aa9()){var _0x3f0442=_0x464fdc(this)[_0x36e8f3('0x3c6')];_0x5207bb=Reflect[_0x36e8f3('0x6ea')](_0x110532,arguments,_0x3f0442);}else _0x5207bb=_0x110532[_0x36e8f3('0x1036')](this,arguments);return _0xac31c8(this,_0x5207bb);});function _0x52ec32(_0x346700,_0x43a00c,_0x8fd8e0,_0xa83b07){var _0x185d8d=_0x3ab6;return function(_0x465131,_0x5816ec){var _0x1eb703=_0x3ab6;if(!(_0x465131 instanceof _0x5816ec))throw new TypeError(_0x1eb703('0x202'));}(this,_0x52ec32),_0x3750b0[_0x185d8d('0x4b0')](this,_0x346700,_0x43a00c,_0x8fd8e0,_0xa83b07);}return _0x25e6a7=_0x52ec32,(_0x55d4a9=[{'key':_0x16350d('0x315'),'value':function(){var _0x445e99=_0x16350d;return['id',_0x445e99('0x263')];}},{'key':_0x16350d('0x5d2'),'value':function(){var _0x29964b=_0x16350d;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':_0x29964b('0x1')}];}},{'key':_0x16350d('0xfe3'),'value':function(){var _0x1a1c29=_0x16350d;return[['id',{'label':'ID','type':'hidden'}],[_0x1a1c29('0x263'),{'label':'Name','type':_0x1a1c29('0x768'),'validation':''}]];}}])&&_0x3ccb5a(_0x25e6a7[_0x16350d('0x98c')],_0x55d4a9),_0x1a248a&&_0x3ccb5a(_0x25e6a7,_0x1a248a),_0x52ec32;}(((_0x32fb89=_0x313de8(_0x4b9e7c('0x118c')))&&_0x32fb89[_0x4b9e7c('0x114c')]?_0x32fb89:{'default':_0x32fb89})['default']);_0x12f2fb['default']=_0xd2c439;},{'./AdapterBase':0x39}],0x41:[function(_0x1a1eeb,_0x5973b2,_0x30ec4e){var _0x149676=_0x404097;'use strict';var _0x45152c;function _0xd31186(_0xe03197){var _0x3bb418=_0x3ab6;return(_0xd31186='function'==typeof Symbol&&_0x3bb418('0x245')==typeof Symbol[_0x3bb418('0x78e')]?function(_0x2d5b6a){return typeof _0x2d5b6a;}:function(_0x1d6f13){var _0x100aeb=_0x3bb418;return _0x1d6f13&&_0x100aeb('0xae9')==typeof Symbol&&_0x1d6f13[_0x100aeb('0x3c6')]===Symbol&&_0x1d6f13!==Symbol[_0x100aeb('0x98c')]?_0x100aeb('0x245'):typeof _0x1d6f13;})(_0xe03197);}function _0x2b4b17(_0x2995f8,_0x3cd7c8){if(!(_0x2995f8 instanceof _0x3cd7c8))throw new TypeError('Cannot\x20call\x20a\x20class\x20as\x20a\x20function');}function _0x42a580(_0x135da5,_0x3b8cae){var _0x231ac6=_0x3ab6;for(var _0x3b4d1f=0x0;_0x3b4d1f<_0x3b8cae[_0x231ac6('0x525')];_0x3b4d1f++){var _0x5dd296=_0x3b8cae[_0x3b4d1f];_0x5dd296['enumerable']=_0x5dd296[_0x231ac6('0x156')]||!0x1,_0x5dd296[_0x231ac6('0xbb2')]=!0x0,_0x231ac6('0x832')in _0x5dd296&&(_0x5dd296[_0x231ac6('0x4db')]=!0x0),Object[_0x231ac6('0xa95')](_0x135da5,_0x5dd296[_0x231ac6('0x1192')],_0x5dd296);}}function _0x1e087b(_0x4e7746,_0x34d58b){var _0x10bc33=_0x3ab6;return!_0x34d58b||_0x10bc33('0x21e')!==_0xd31186(_0x34d58b)&&_0x10bc33('0xae9')!=typeof _0x34d58b?function(_0x11653f){var _0x431e05=_0x10bc33;if(void 0x0===_0x11653f)throw new ReferenceError(_0x431e05('0x2e9'));return _0x11653f;}(_0x4e7746):_0x34d58b;}function _0x3380e4(){var _0x100096=_0x3ab6;if(_0x100096('0x56')==typeof Reflect||!Reflect[_0x100096('0x6ea')])return!0x1;if(Reflect[_0x100096('0x6ea')][_0x100096('0x16e')])return!0x1;if(_0x100096('0xae9')==typeof Proxy)return!0x0;try{return Date[_0x100096('0x98c')][_0x100096('0x537')][_0x100096('0x4b0')](Reflect[_0x100096('0x6ea')](Date,[],function(){})),!0x0;}catch(_0x22c434){return!0x1;}}function _0x2892f3(_0x590735){var _0x50e411=_0x3ab6;return(_0x2892f3=Object[_0x50e411('0x6c2')]?Object[_0x50e411('0x10c0')]:function(_0x2e8e37){var _0xa765ec=_0x50e411;return _0x2e8e37[_0xa765ec('0x11e6')]||Object[_0xa765ec('0x10c0')](_0x2e8e37);})(_0x590735);}function _0x46bf9e(_0x506ba2,_0x133378){var _0x236fda=_0x3ab6;return(_0x46bf9e=Object[_0x236fda('0x6c2')]||function(_0x5c859b,_0x18c568){return _0x5c859b['__proto__']=_0x18c568,_0x5c859b;})(_0x506ba2,_0x133378);}Object[_0x149676('0xa95')](_0x30ec4e,_0x149676('0x114c'),{'value':!0x0}),_0x30ec4e['default']=void 0x0;var _0x360c8f=function(_0x2979d8){var _0x17f68f=_0x149676;!function(_0x11d951,_0x5ede66){var _0x1395a0=_0x3ab6;if('function'!=typeof _0x5ede66&&null!==_0x5ede66)throw new TypeError('Super\x20expression\x20must\x20either\x20be\x20null\x20or\x20a\x20function');_0x11d951[_0x1395a0('0x98c')]=Object[_0x1395a0('0x5c2')](_0x5ede66&&_0x5ede66['prototype'],{'constructor':{'value':_0x11d951,'writable':!0x0,'configurable':!0x0}}),_0x5ede66&&_0x46bf9e(_0x11d951,_0x5ede66);}(_0x427464,_0x2979d8);var _0x46003c,_0x1083e6,_0x574bab,_0x5bbe07,_0x1bfb85=(_0x46003c=_0x427464,function(){var _0x3b8c96=_0x3ab6,_0x1cde0e,_0x9020f2=_0x2892f3(_0x46003c);if(_0x3380e4()){var _0xaca1af=_0x2892f3(this)['constructor'];_0x1cde0e=Reflect[_0x3b8c96('0x6ea')](_0x9020f2,arguments,_0xaca1af);}else _0x1cde0e=_0x9020f2[_0x3b8c96('0x1036')](this,arguments);return _0x1e087b(this,_0x1cde0e);});function _0x427464(){var _0x2d95d1=_0x3ab6;return _0x2b4b17(this,_0x427464),_0x1bfb85[_0x2d95d1('0x1036')](this,arguments);}return _0x1083e6=_0x427464,(_0x574bab=[{'key':_0x17f68f('0x6c8'),'value':function(_0x3d0682){var _0x350349=_0x17f68f,_0x4dc6c7={'id':_0x3d0682},_0x2f8a2d=JSON['stringify'](_0x4dc6c7),_0x328369=[];_0x328369['callBackData']=[],_0x328369['callBackSuccess']=_0x350349('0xb42'),_0x328369['callBackFail']=_0x350349('0xea5'),this['customAction'](_0x350349('0x6c8'),_0x350349('0x924')['concat'](this['modulePathName']),_0x2f8a2d,_0x328369);}},{'key':_0x17f68f('0xb42'),'value':function(_0xd317fd){var _0x4af542=_0x17f68f;for(var _0x12c2d4=_0x4af542('0x10bb'),_0x3fbceb=_0xd317fd[_0x4af542('0xac8')],_0x3ab022='',_0x41379e='',_0x10ef8a=0x0;_0x10ef8a<_0x3fbceb[_0x4af542('0x525')];_0x10ef8a++){var _0x3faeaf=_0x4af542('0x8cc');_0x41379e+=_0x3faeaf=(_0x3faeaf=(_0x3faeaf=_0x3faeaf['replace'](/_date_/g,_0x3fbceb[_0x10ef8a][_0x4af542('0x918')]))['replace'](/_status_/g,''['concat'](_0x3fbceb[_0x10ef8a][_0x4af542('0x2e')],_0x4af542('0x4df'))[_0x4af542('0x3cc')](_0x3fbceb[_0x10ef8a][_0x4af542('0xa3f')])))[_0x4af542('0x166')](/_note_/g,_0x3fbceb[_0x10ef8a][_0x4af542('0xac4')]);}''!==_0x41379e&&(_0x3ab022+=_0x12c2d4=_0x12c2d4[_0x4af542('0x166')]('_days_',_0x41379e)),this[_0x4af542('0xb5d')]('Logs',_0x3ab022),timeUtils[_0x4af542('0xa55')]($(_0x4af542('0x8b6')));}},{'key':_0x17f68f('0xea5'),'value':function(_0x2c987d){var _0x34b132=_0x17f68f;this[_0x34b132('0xb5d')](_0x34b132('0xb84'),_0x34b132('0x1171'));}}])&&_0x42a580(_0x1083e6[_0x17f68f('0x98c')],_0x574bab),_0x5bbe07&&_0x42a580(_0x1083e6,_0x5bbe07),_0x427464;}(((_0x45152c=_0x1a1eeb(_0x149676('0x118c')))&&_0x45152c[_0x149676('0x114c')]?_0x45152c:{'default':_0x45152c})[_0x149676('0x544')]);_0x30ec4e['default']=_0x360c8f;},{'./AdapterBase':0x39}],0x42:[function(_0x6e3754,_0x31c571,_0x1d4df8){var _0x8e8f65=_0x404097;'use strict';function _0x2a19d8(_0x38b0e5,_0x1a019f){var _0x32e70c=_0x3ab6;for(var _0x3cbddb=0x0;_0x3cbddb<_0x1a019f[_0x32e70c('0x525')];_0x3cbddb++){var _0x180e5a=_0x1a019f[_0x3cbddb];_0x180e5a[_0x32e70c('0x156')]=_0x180e5a[_0x32e70c('0x156')]||!0x1,_0x180e5a[_0x32e70c('0xbb2')]=!0x0,_0x32e70c('0x832')in _0x180e5a&&(_0x180e5a['writable']=!0x0),Object['defineProperty'](_0x38b0e5,_0x180e5a['key'],_0x180e5a);}}Object['defineProperty'](_0x1d4df8,_0x8e8f65('0x114c'),{'value':!0x0}),_0x1d4df8['default']=void 0x0;var _0x32c72f=_0x6e3754(_0x8e8f65('0x1081')),_0x19404b=function(){var _0x478c4d=_0x8e8f65;function _0x44a9da(_0x1f8c83){var _0xf79faf=_0x3ab6;!function(_0x5b6410,_0x35e1bb){var _0x2bb8b2=_0x3ab6;if(!(_0x5b6410 instanceof _0x35e1bb))throw new TypeError(_0x2bb8b2('0x202'));}(this,_0x44a9da),this[_0xf79faf('0x7fb')]=_0x1f8c83,this[_0xf79faf('0x112d')]=this[_0xf79faf('0x7fb')]['requestCache'];}var _0x112f5d,_0x7ac56b,_0x1490aa;return _0x112f5d=_0x44a9da,(_0x7ac56b=[{'key':_0x478c4d('0x759'),'value':function(_0x198022){var _0x3d6618=_0x478c4d,_0x307e51=this,_0x3e2f46='',_0x2e5835='';null!=_0x198022[0x3]&&(_0x3e2f46=_0x198022[0x3]),null!=_0x198022[0x4]&&(_0x2e5835=JSON[_0x3d6618('0x591')](_0x198022[0x4]));var _0x21c3dc=this['requestCache'][_0x3d6618('0x998')](this[_0x3d6618('0x7fb')][_0x3d6618('0xe32')],{'t':_0x198022[0x0],'key':_0x198022[0x1],'value':_0x198022[0x2],'method':_0x3e2f46,'methodParams':_0x2e5835,'a':_0x3d6618('0x940')}),_0x5529b6=this[_0x3d6618('0x112d')][_0x3d6618('0x385')](_0x21c3dc);if(null!=_0x5529b6&&_0x3d6618('0x5f8')===_0x5529b6[_0x3d6618('0x11e7')])return new Promise(function(_0x5b4968,_0x3b391b){var _0x146296=_0x3d6618;return _0x5b4968(_0x5529b6[_0x146296('0xac8')]);});var _0x1bc31e={'t':_0x198022[0x0],'key':_0x198022[0x1],'value':_0x198022[0x2],'method':_0x3e2f46,'methodParams':_0x2e5835,'a':_0x3d6618('0x940')},_0x2727ab=''[_0x3d6618('0x3cc')](this[_0x3d6618('0x7fb')][_0x3d6618('0xe32')],_0x3d6618('0x157'));for(var _0x45dcc4 in _0x1bc31e)_0x2727ab=''['concat'](_0x2727ab,'&')[_0x3d6618('0x3cc')](_0x45dcc4,'=')['concat'](encodeURIComponent(_0x1bc31e[_0x45dcc4]));return _0x32c72f[_0x3d6618('0xe80')](_0x2727ab,{})[_0x3d6618('0xd5')](function(_0x1aa600){var _0x430583=_0x3d6618;if(_0x430583('0x5f8')!==_0x1aa600['data'][_0x430583('0x11e7')])throw Error(_0x430583('0x109d')[_0x430583('0x3cc')](_0x21c3dc,_0x430583('0x4c3')));return _0x307e51['requestCache'][_0x430583('0x6cd')](_0x21c3dc,_0x1aa600[_0x430583('0xac8')]),_0x1aa600['data']['data'];});}},{'key':_0x478c4d('0x96d'),'value':function(){var _0x584c68=_0x478c4d;for(var _0x1312b2=this,_0x21d331=this[_0x584c68('0x7fb')]['getRemoteSourceFields'](),_0x355254=[],_0x3c67d9=0x0;_0x3c67d9<_0x21d331['length'];_0x3c67d9++){var _0x58ac4a=_0x21d331[_0x3c67d9];void 0x0!==_0x58ac4a[0x1]['remote-source']&&null!=_0x58ac4a[0x1][_0x584c68('0x95b')]&&function(){var _0x169fd0=_0x584c68,_0x12b8bc=''[_0x169fd0('0x3cc')](_0x58ac4a[0x1]['remote-source'][0x0],'_')[_0x169fd0('0x3cc')](_0x58ac4a[0x1][_0x169fd0('0x95b')][0x1],'_')[_0x169fd0('0x3cc')](_0x58ac4a[0x1]['remote-source'][0x2]);0x4===_0x58ac4a[0x1]['remote-source'][_0x169fd0('0x525')]&&(_0x12b8bc=''[_0x169fd0('0x3cc')](_0x12b8bc,'_')[_0x169fd0('0x3cc')](_0x58ac4a[0x1][_0x169fd0('0x95b')][0x3]));var _0x1e50bd=_0x1312b2['fetchMasterData'](_0x58ac4a[0x1][_0x169fd0('0x95b')])[_0x169fd0('0xd5')](function(_0x1a657c){var _0x10bef4=_0x169fd0;_0x1312b2[_0x10bef4('0x7fb')][_0x10bef4('0xa3a')][_0x12b8bc]=_0x1a657c;});_0x355254[_0x169fd0('0x8f8')](_0x1e50bd);}();}return Promise[_0x584c68('0xc77')](_0x355254);}}])&&_0x2a19d8(_0x112f5d[_0x478c4d('0x98c')],_0x7ac56b),_0x1490aa&&_0x2a19d8(_0x112f5d,_0x1490aa),_0x44a9da;}();_0x1d4df8[_0x8e8f65('0x544')]=_0x19404b;},{'axios':0x58}],0x43:[function(_0x3774a3,_0x5f0448,_0x54f9db){var _0x4db838=_0x404097;'use strict';Object[_0x4db838('0xa95')](_0x54f9db,_0x4db838('0x114c'),{'value':!0x0}),_0x54f9db['default']=void 0x0;var _0x1c06d2,_0x32c06c=(_0x1c06d2=_0x3774a3('./FormValidation'))&&_0x1c06d2['__esModule']?_0x1c06d2:{'default':_0x1c06d2};function _0x3c4fd1(_0x2fc84e,_0x48e56c){var _0x31f4fb=_0x4db838;for(var _0x45de2e=0x0;_0x45de2e<_0x48e56c[_0x31f4fb('0x525')];_0x45de2e++){var _0x5b1c7b=_0x48e56c[_0x45de2e];_0x5b1c7b['enumerable']=_0x5b1c7b[_0x31f4fb('0x156')]||!0x1,_0x5b1c7b[_0x31f4fb('0xbb2')]=!0x0,_0x31f4fb('0x832')in _0x5b1c7b&&(_0x5b1c7b[_0x31f4fb('0x4db')]=!0x0),Object['defineProperty'](_0x2fc84e,_0x5b1c7b[_0x31f4fb('0x1192')],_0x5b1c7b);}}var _0x1305ab=function(){var _0x30b7d4=_0x4db838;function _0x5b8cbb(){var _0x33c53b=_0x3ab6;!function(_0x4f735b,_0x5aa0e9){var _0x33e43a=_0x3ab6;if(!(_0x4f735b instanceof _0x5aa0e9))throw new TypeError(_0x33e43a('0x202'));}(this,_0x5b8cbb),this[_0x33c53b('0x4a8')]={},this[_0x33c53b('0xa4d')]=!0x1,this[_0x33c53b('0x37d')]='None',this['ga']=[],this[_0x33c53b('0x224')]=!0x0,this[_0x33c53b('0x4b1')]=!0x0,this[_0x33c53b('0xe70')]=!0x0,this['showSave']=!0x0,this[_0x33c53b('0x10fd')]=!0x0,this['showFormOnPopup']=!0x1,this[_0x33c53b('0x76f')]=!0x1,this['currentFilterString']='',this[_0x33c53b('0x6fa')]=0x0,this[_0x33c53b('0x953')]={},this[_0x33c53b('0x4d9')]={},this[_0x33c53b('0x1124')]=[],this['csrfRequired']=!0x1,this[_0x33c53b('0xb7e')]=null,this[_0x33c53b('0xb40')]=null,this['customTemplates']=null,this[_0x33c53b('0xb9')]=null,this['fieldMasterData']={},this['fieldMasterDataKeys']={},this[_0x33c53b('0x678')]=null,this['sourceMapping']=null,this['currentId']=null,this['currentElement']=null,this[_0x33c53b('0x597')]=null,this['currentProfile']=null,this[_0x33c53b('0x73f')]={},this[_0x33c53b('0xed3')]=null,this[_0x33c53b('0x32a')]=null,this[_0x33c53b('0x454')]=this;}var _0x39281f,_0x5ae454,_0x48d07b;return _0x39281f=_0x5b8cbb,(_0x5ae454=[{'key':_0x30b7d4('0x2ae'),'value':function(_0x398ca8,_0x3bf3e8,_0x4a2010,_0x45785d){}},{'key':_0x30b7d4('0x693'),'value':function(){}},{'key':_0x30b7d4('0xb3e'),'value':function(_0x58cfdc){this['objectTypeName']=_0x58cfdc;}},{'key':'setNoJSONRequests','value':function(_0x1bd9da){this['noJSONRequests']=_0x1bd9da;}},{'key':_0x30b7d4('0x986'),'value':function(_0x97de8){this['permissions']=_0x97de8;}},{'key':_0x30b7d4('0xbda'),'value':function(_0x5b45a4){var _0x355e49=_0x30b7d4;this[_0x355e49('0x6fa')]=_0x5b45a4;}},{'key':_0x30b7d4('0x31d'),'value':function(_0x35d461){var _0x5b135e=_0x30b7d4;return void 0x0===this[_0x5b135e('0x73f')][_0x35d461]||null==this['permissions'][_0x35d461]||_0x5b135e('0x9a3')===this[_0x5b135e('0x73f')][_0x35d461]?_0x5b135e('0x9a3'):this[_0x5b135e('0x73f')][_0x35d461];}},{'key':'setBaseUrl','value':function(_0x480796){var _0x3ef529=_0x30b7d4;this[_0x3ef529('0xed3')]=_0x480796;}},{'key':'setClientUrl','value':function(_0x23148c){var _0x2c13e6=_0x30b7d4;this[_0x2c13e6('0x32a')]=_0x23148c;}},{'key':'setUser','value':function(_0x8a2579){var _0xbfafac=_0x30b7d4;this[_0xbfafac('0x597')]=_0x8a2579;}},{'key':'getUser','value':function(){var _0x5ef29b=_0x30b7d4;return this[_0x5ef29b('0x597')];}},{'key':_0x30b7d4('0x1d8'),'value':function(_0x9aeb6b){var _0x26b864=_0x30b7d4;this[_0x26b864('0x37d')]=_0x9aeb6b;}},{'key':_0x30b7d4('0xc91'),'value':function(_0x36a56a){var _0x1f42c2=_0x30b7d4;this[_0x1f42c2('0x176')]=_0x36a56a;}},{'key':_0x30b7d4('0x2ca'),'value':function(){var _0x4781c2=_0x30b7d4;$(_0x4781c2('0x36b'))['animate']({'scrollTop':0x0},_0x4781c2('0x21b'));}},{'key':_0x30b7d4('0xafb'),'value':function(){var _0x25e29d=_0x30b7d4;$('html,\x20body')[_0x25e29d('0xe9b')]({'scrollTop':$(document)[_0x25e29d('0x7f0')]()},_0x25e29d('0xadc'));}},{'key':_0x30b7d4('0xe08'),'value':function(_0x3eb832){var _0x1a2cef=_0x30b7d4;$(window)[_0x1a2cef('0x7f0')]()<=_0x3eb832[_0x1a2cef('0xaba')]()['top']&&$(_0x1a2cef('0x36b'))[_0x1a2cef('0xe9b')]({'scrollTop':_0x3eb832[_0x1a2cef('0xaba')]()[_0x1a2cef('0x62d')]},'slow');}},{'key':_0x30b7d4('0xbc3'),'value':function(_0xa450b8){var _0x3944f2=_0x30b7d4;$(window)['height']()<=_0xa450b8['offset']()[_0x3944f2('0x62d')]+_0xa450b8[_0x3944f2('0x7f0')]()&&$(_0x3944f2('0x36b'))[_0x3944f2('0xe9b')]({'scrollTop':_0xa450b8[_0x3944f2('0xaba')]()[_0x3944f2('0x62d')]+_0xa450b8[_0x3944f2('0x7f0')]()},_0x3944f2('0xadc'));}},{'key':'setTranslations','value':function(_0x138c92){var _0x3a07c2=_0x30b7d4;this[_0x3a07c2('0x4d9')]=_0x138c92[_0x3a07c2('0x10a6')][''];}},{'key':_0x30b7d4('0x855'),'value':function(_0x2484a0){var _0xeb5607=_0x30b7d4;this[_0xeb5607('0x4d9')]=_0x2484a0;}},{'key':'gt','value':function(_0x42950d){var _0x5b5f91=_0x30b7d4;return void 0x0===this['translations'][_0x42950d]||null===this[_0x5b5f91('0x4d9')][_0x42950d]?(console[_0x5b5f91('0xc60')](_0x5b5f91('0xa45')[_0x5b5f91('0x3cc')](_0x42950d)),_0x42950d):this['translations'][_0x42950d][0x0];}},{'key':_0x30b7d4('0x98b'),'value':function(_0x3375de){var _0x46348d=_0x30b7d4,_0x8d32be,_0x1c7914=localStorage[_0x46348d('0x3d6')]('terms');if(void 0x0===_0x1c7914)_0x8d32be={};else try{_0x8d32be=JSON[_0x46348d('0xf01')](_0x1c7914);}catch(_0x5454de){_0x8d32be={};}void 0x0===this[_0x46348d('0x4d9')][_0x3375de]&&(_0x8d32be[_0x3375de]=_0x3375de,localStorage[_0x46348d('0x102d')](_0x46348d('0xc4'),JSON[_0x46348d('0x591')](_0x8d32be)));}},{'key':_0x30b7d4('0x764'),'value':function(){return!0x0;}},{'key':_0x30b7d4('0xd00'),'value':function(_0x2954a2,_0x3900dc,_0x3a691c){var _0x1f0e82=_0x30b7d4;try{void 0x0===_0x3900dc||null==_0x3900dc?this['ga'][_0x1f0e82('0x8f8')]([_0x1f0e82('0x2d9'),this[_0x1f0e82('0x37d')],_0x2954a2]):void 0x0===_0x3a691c||null==_0x3a691c?this['ga'][_0x1f0e82('0x8f8')](['_trackEvent',this[_0x1f0e82('0x37d')],_0x2954a2,_0x3900dc]):this['ga']['push'](['_trackEvent',this[_0x1f0e82('0x37d')],_0x2954a2,_0x3900dc,_0x3a691c]);}catch(_0x30ac0f){}}},{'key':_0x30b7d4('0xb47'),'value':function(_0x51a7e9){var _0x380c49=_0x30b7d4;this[_0x380c49('0xc1b')]=_0x51a7e9;}},{'key':'getCurrentProfile','value':function(){var _0x1ef8dc=_0x30b7d4;return this[_0x1ef8dc('0xc1b')];}},{'key':_0x30b7d4('0xf31'),'value':function(_0xa168b5,_0x53afb0,_0x5271fe){var _0x1cb9c2=_0x30b7d4;this[_0x1cb9c2('0xa3a')]={},this[_0x1cb9c2('0x28d')]={},this['fieldMasterDataCallback']=_0x53afb0,this[_0x1cb9c2('0xa43')]=_0x5271fe;for(var _0x1af8ab=this[_0x1cb9c2('0xe98')](),_0x3fe9fd=0x0;_0x3fe9fd<_0x1af8ab[_0x1cb9c2('0x525')];_0x3fe9fd++){var _0xe78cb2=_0x1af8ab[_0x3fe9fd];if(void 0x0!==_0xe78cb2[0x1][_0x1cb9c2('0x95b')]&&null!=_0xe78cb2[0x1]['remote-source']){var _0x85c249=this[_0x1cb9c2('0x5bd')](_0xe78cb2);this[_0x1cb9c2('0x28d')][_0x85c249]=!0x1;var _0x55dc8a={'callBack':_0x1cb9c2('0x187')};_0x55dc8a['callBackData']=[_0x85c249],null!=_0xa168b5&&(_0x55dc8a[_0x1cb9c2('0xf53')]=_0xa168b5),this['getFieldValues'](_0xe78cb2[0x1][_0x1cb9c2('0x95b')],_0x55dc8a);}}}},{'key':_0x30b7d4('0x1155'),'value':function(){var _0x48229b=_0x30b7d4;this['sourceMapping']={};for(var _0x15c6da=this[_0x48229b('0xe98')](),_0x3402de=0x0;_0x3402de<_0x15c6da[_0x48229b('0x525')];_0x3402de++){var _0x4043f3=_0x15c6da[_0x3402de];void 0x0!==_0x4043f3[0x1][_0x48229b('0x95b')]&&null!=_0x4043f3[0x1]['remote-source']&&(this[_0x48229b('0xdf2')][_0x4043f3[0x0]]=_0x4043f3[0x1][_0x48229b('0x95b')]);}}},{'key':_0x30b7d4('0x5bd'),'value':function(_0x247c16){var _0x538194=_0x30b7d4,_0x28d096=''[_0x538194('0x3cc')](_0x247c16[0x1][_0x538194('0x95b')][0x0],'_')[_0x538194('0x3cc')](_0x247c16[0x1][_0x538194('0x95b')][0x1],'_')[_0x538194('0x3cc')](_0x247c16[0x1][_0x538194('0x95b')][0x2]);return _0x247c16[0x1][_0x538194('0x95b')][_0x538194('0x525')]>0x3&&(_0x28d096=''['concat'](_0x28d096,'_')[_0x538194('0x3cc')](_0x247c16[0x1][_0x538194('0x95b')][0x3])),_0x28d096;}},{'key':_0x30b7d4('0xe98'),'value':function(){var _0x53831f=_0x30b7d4,_0x406240,_0x44296e=this[_0x53831f('0xfe3')](),_0x35b827=this['getFilters']();if(null!=_0x35b827)for(var _0x346cf1=0x0;_0x346cf1<_0x35b827[_0x53831f('0x525')];_0x346cf1++)(null==(_0x406240=this[_0x53831f('0x44b')](_0x35b827[_0x346cf1][0x0],_0x44296e))||_0x53831f('0x8ff')!==_0x406240[_0x53831f('0x3f7')]&&'select2'!==_0x406240[_0x53831f('0x3f7')]&&'select2multi'!==_0x406240[_0x53831f('0x3f7')])&&_0x44296e[_0x53831f('0x8f8')](_0x35b827[_0x346cf1]);for(var _0x23787d=[],_0xfbac55=[],_0x518b86=null,_0x24262a=null,_0x298f05=0x0;_0x298f05<_0x44296e[_0x53831f('0x525')];_0x298f05++)if(void 0x0!==(_0x518b86=_0x44296e[_0x298f05])[0x1][_0x53831f('0x95b')]&&null!==_0x518b86[0x1][_0x53831f('0x95b')]){var _0x5914c0=this[_0x53831f('0x5bd')](_0x518b86);_0xfbac55[_0x53831f('0x4dc')](_0x5914c0)<0x0&&(_0x23787d['push'](_0x518b86),_0xfbac55[_0x53831f('0x8f8')](_0x5914c0));}else{if(void 0x0!==_0x518b86[0x1][_0x53831f('0xb3')]&&null!==_0x518b86[0x1][_0x53831f('0xb3')])for(var _0x100a0d=0x0;_0x100a0d<_0x518b86[0x1]['form']['length'];_0x100a0d++)if(void 0x0!==(_0x24262a=_0x518b86[0x1]['form'][_0x100a0d])[0x1][_0x53831f('0x95b')]&&null!==_0x24262a[0x1]['remote-source']){var _0x3f38b1=this[_0x53831f('0x5bd')](_0x24262a);_0xfbac55[_0x53831f('0x4dc')](_0x3f38b1)<0x0&&(_0x23787d[_0x53831f('0x8f8')](_0x24262a),_0xfbac55[_0x53831f('0x8f8')](_0x3f38b1));}}return _0x23787d;}},{'key':'setShowFormOnPopup','value':function(_0x4f9688){var _0x15fc84=_0x30b7d4;this[_0x15fc84('0x599')]=_0x4f9688;}},{'key':_0x30b7d4('0x1141'),'value':function(_0x2e8de3){var _0x100597=_0x30b7d4;this[_0x100597('0xa4d')]=_0x2e8de3;}},{'key':_0x30b7d4('0xfa8'),'value':function(_0x587354){this['settings']=_0x587354;}},{'key':'getRemoteTable','value':function(){var _0x22f423=_0x30b7d4;return this[_0x22f423('0xa4d')];}},{'key':_0x30b7d4('0x146'),'value':function(_0x366c4a){for(var _0x577f1a in _0x366c4a)if(!0x1===_0x366c4a[_0x577f1a])return!0x1;return!0x0;}},{'key':_0x30b7d4('0x187'),'value':function(_0x5cd6af,_0x2799fd,_0x4d2f15,_0x3ab830){var _0x526159=_0x30b7d4;this['fieldMasterData'][_0x5cd6af]=_0x2799fd,this[_0x526159('0x28d')][_0x5cd6af]=!0x0,null!=_0x4d2f15&&_0x4d2f15(),null!==this[_0x526159('0x678')]&&void 0x0!==this[_0x526159('0x678')]&&this['isAllLoaded'](this[_0x526159('0x28d')])&&null!==this[_0x526159('0xa43')]&&void 0x0!==this[_0x526159('0xa43')]?this[_0x526159('0x678')](this[_0x526159('0xa43')]):null!==this[_0x526159('0x678')]&&void 0x0!==this[_0x526159('0x678')]&&this[_0x526159('0x146')](this[_0x526159('0x28d')])&&this[_0x526159('0x678')]();}},{'key':_0x30b7d4('0x44b'),'value':function(_0x2b5c73,_0x43156e){var _0x1dde04=_0x30b7d4;for(var _0x3fc20b=0x0;_0x3fc20b<_0x43156e[_0x1dde04('0x525')];_0x3fc20b++)if(_0x2b5c73===_0x43156e[_0x3fc20b][0x0])return _0x43156e[_0x3fc20b][0x1];return null;}},{'key':_0x30b7d4('0xb93'),'value':function(){var _0x15ffc2=_0x30b7d4;return['red','yellow',_0x15ffc2('0x975'),_0x15ffc2('0x1c5'),_0x15ffc2('0x9fa'),_0x15ffc2('0xfd3'),'navy','teal',_0x15ffc2('0xd74'),'orange',_0x15ffc2('0x83d'),_0x15ffc2('0x818')];}},{'key':_0x30b7d4('0x886'),'value':function(_0x5eafd7){var _0x3f75d9=_0x30b7d4,_0x3ac4d2=this[_0x3f75d9('0xb93')]();return _0x3ac4d2[_0x5eafd7['charCodeAt'](0x0)%_0x3ac4d2[_0x3f75d9('0x525')]];}},{'key':_0x30b7d4('0x364'),'value':function(_0x161b2a){var _0x499789=_0x30b7d4;_0x161b2a=_0x161b2a[_0x499789('0x2e7')]();var _0x5df030={'pdf':_0x499789('0xcca'),'csv':_0x499789('0x807'),'xls':_0x499789('0xfd3'),'xlsx':'green','doc':_0x499789('0x9fa'),'docx':_0x499789('0x9fa')};return _0x5df030['docx']=_0x499789('0x1c5'),_0x5df030[_0x499789('0xc8')]=_0x499789('0x321'),_0x5df030[_0x499789('0x69d')]=_0x499789('0x321'),_0x5df030[_0x499789('0x84d')]=_0x499789('0xbd8'),_0x5df030[_0x499789('0xd24')]='teal',_0x5df030[_0x499789('0x1ae')]='green',_0x5df030[_0x499789('0xa3b')]=_0x499789('0x807'),_0x5df030[_0x499789('0x775')]=_0x499789('0x83d'),void 0x0!==_0x5df030[_0x161b2a]||null!=_0x5df030[_0x161b2a]?_0x5df030[_0x161b2a]:this[_0x499789('0x886')](_0x161b2a);}},{'key':_0x30b7d4('0x32d'),'value':function(_0x1ac1f8){var _0x4087d5=_0x30b7d4,_0x5cfcff={'pdf':_0x4087d5('0x112a'),'csv':_0x4087d5('0x2ec'),'xls':'fa\x20fa-file-excel-o','xlsx':_0x4087d5('0x16b'),'doc':_0x4087d5('0xedf'),'docx':_0x4087d5('0xedf'),'ppt':'fa\x20fa-file-powerpoint-o','pptx':_0x4087d5('0x11cc'),'jpg':_0x4087d5('0x8da'),'jpeg':_0x4087d5('0x8da'),'gif':_0x4087d5('0x8da'),'png':_0x4087d5('0x8da'),'bmp':_0x4087d5('0x8da'),'txt':_0x4087d5('0x8a6'),'rtf':_0x4087d5('0x8a6')};return void 0x0!==_0x5cfcff[_0x1ac1f8=_0x1ac1f8[_0x4087d5('0x2e7')]()]||null!=_0x5cfcff[_0x1ac1f8]?_0x5cfcff[_0x1ac1f8]:_0x4087d5('0x3b7');}},{'key':'getSourceMapping','value':function(){var _0x4369f5=_0x30b7d4;return this[_0x4369f5('0xdf2')];}},{'key':'setTesting','value':function(_0xa2ae8d){this['testing']=_0xa2ae8d;}},{'key':_0x30b7d4('0x11'),'value':function(_0x5be33){var _0x1bf7a4=_0x30b7d4;this['testing']&&console[_0x1bf7a4('0xc60')](_0x5be33);}},{'key':'setClientMessages','value':function(_0x456069){var _0x58477b=_0x30b7d4;this[_0x58477b('0x388')]=_0x456069;}},{'key':_0x30b7d4('0xb10'),'value':function(_0x2b38aa){var _0x7894bb=_0x30b7d4;this[_0x7894bb('0xb40')]=_0x2b38aa;}},{'key':'getWSProperty','value':function(_0x239eb4,_0x596690){return _0x239eb4['hasOwnProperty'](_0x596690)?_0x239eb4[_0x596690]:null;}},{'key':_0x30b7d4('0xe2b'),'value':function(_0x2dc77b){var _0x1d9ca3=_0x30b7d4;return this[_0x1d9ca3('0xfd9')](this['msgList'],_0x2dc77b);}},{'key':_0x30b7d4('0xdaa'),'value':function(_0x46187f){var _0x1455f6=_0x30b7d4;return this[_0x1455f6('0xfd9')](this[_0x1455f6('0xb40')],_0x46187f);}},{'key':_0x30b7d4('0xe43'),'value':function(_0x1dc55d){var _0x5de933=_0x30b7d4;this[_0x5de933('0x91f')]=_0x1dc55d;}},{'key':_0x30b7d4('0xfbb'),'value':function(_0x272220){var _0x54d153=_0x30b7d4;null!=this[_0x54d153('0x1da')]&&(this[_0x54d153('0x572')]=this[_0x54d153('0x1da')],$('#'['concat'](this[_0x54d153('0x1da')]))[_0x54d153('0x9c2')]()),$('#'[_0x54d153('0x3cc')](_0x272220))[_0x54d153('0x41b')](),this['currentView']=_0x272220,this[_0x54d153('0x66c')]();}},{'key':_0x30b7d4('0x368'),'value':function(){var _0x43266d=_0x30b7d4;this[_0x43266d('0xfbb')](this[_0x43266d('0x572')]);}},{'key':_0x30b7d4('0x66c'),'value':function(){}},{'key':_0x30b7d4('0x4c5'),'value':function(_0x431192,_0x1a0e47,_0x326c85){var _0x2fcc89=_0x30b7d4;if($['isFunction'](_0x431192))try{null==_0x326c85?_0x431192[_0x2fcc89('0x1036')](document,_0x1a0e47):_0x431192[_0x2fcc89('0x1036')](_0x326c85,_0x1a0e47);}catch(_0x2a6af0){console[_0x2fcc89('0xc60')](_0x2a6af0[_0x2fcc89('0xa1a')]);}else{var _0x25c750=this[_0x431192];if($[_0x2fcc89('0xabd')](_0x25c750))try{_0x25c750[_0x2fcc89('0x1036')](this,_0x1a0e47);}catch(_0x5f1a0c){console['log'](_0x5f1a0c[_0x2fcc89('0xa1a')]);}}}},{'key':_0x30b7d4('0x883'),'value':function(){var _0x111da0=_0x30b7d4,_0x5d4bed='';return this[_0x111da0('0xb00')]()&&(_0x5d4bed=_0x111da0('0x10bd')[_0x111da0('0x3cc')](this['gt'](this[_0x111da0('0xe5b')]()),_0x111da0('0x12'))),null!=this[_0x111da0('0xa68')]()&&(''!==_0x5d4bed&&(_0x5d4bed+=_0x111da0('0x46e')),_0x5d4bed+=_0x111da0('0xbec')[_0x111da0('0x3cc')](this['gt'](_0x111da0('0x1177')),_0x111da0('0xb80')),_0x5d4bed+=_0x111da0('0x46e'),this['filtersAlreadySet']?_0x5d4bed+=_0x111da0('0xa15'):_0x5d4bed+=_0x111da0('0x1054')),_0x5d4bed=_0x5d4bed['replace'](/__id__/g,this[_0x111da0('0x107b')]()),''!==(_0x5d4bed=''!==this[_0x111da0('0x8f7')]&&null!=this[_0x111da0('0x8f7')]?_0x5d4bed[_0x111da0('0x166')](/__filterString__/g,this['currentFilterString']):_0x5d4bed[_0x111da0('0x166')](/__filterString__/g,_0x111da0('0x13b')))&&(_0x5d4bed=_0x111da0('0x82c')['concat'](_0x5d4bed,'')),_0x5d4bed;}},{'key':'getActionButtonHeader','value':function(){var _0x4a4953=_0x30b7d4;return{'sTitle':'','sClass':_0x4a4953('0x1ed')};}},{'key':_0x30b7d4('0xf42'),'value':function(){return'';}},{'key':'isSortable','value':function(){return!0x0;}},{'key':'createTable','value':function(_0x54eb2a){var _0x51986f=_0x30b7d4;if(this[_0x51986f('0x104e')]())this['createTableServer'](_0x54eb2a);else{var _0x30ebd5=this[_0x51986f('0x5d2')]();for(var _0x8b102c in _0x30ebd5)_0x30ebd5[_0x8b102c][_0x51986f('0x10a3')]=this['gt'](_0x30ebd5[_0x8b102c][_0x51986f('0x10a3')]);var _0x2575c9,_0x149e62=this[_0x51986f('0xa8b')]();if(this['showActionButtons']()&&_0x30ebd5[_0x51986f('0x8f8')](this[_0x51986f('0x54d')]()),this[_0x51986f('0x764')]())for(var _0x1d437e=0x0;_0x1d437e<_0x149e62['length'];_0x1d437e++)_0x149e62[_0x1d437e][_0x51986f('0x8f8')](this['getActionButtonsHtml'](_0x149e62[_0x1d437e][0x0],_0x149e62[_0x1d437e]));_0x2575c9=this[_0x51986f('0x883')]()+this['getTableHTMLTemplate']();var _0x5c3a4a=$('#'['concat'](_0x54eb2a,'\x20.dataTables_paginate\x20.active\x20a'))['html'](),_0x4a5ae1=0x0;void 0x0!==_0x5c3a4a&&null!=_0x5c3a4a&&(_0x4a5ae1=0xf*parseInt(_0x5c3a4a,0xa)-0xf),$('#'['concat'](_0x54eb2a))['html'](_0x2575c9);var _0x5df213={'oLanguage':{'sLengthMenu':_0x51986f('0x203')},'aaData':_0x149e62,'aoColumns':_0x30ebd5,'bSort':this[_0x51986f('0x244')](),'iDisplayLength':0xf,'iDisplayStart':_0x4a5ae1},_0x1f8747=this[_0x51986f('0x1122')]();$[_0x51986f('0x1158')](_0x5df213,_0x1f8747),$('#'[_0x51986f('0x3cc')](_0x54eb2a,_0x51986f('0x6ef')))[_0x51986f('0x172')](_0x5df213),$(_0x51986f('0x99'))[_0x51986f('0x25b')]('pagination'),$(_0x51986f('0x5c7'))[_0x51986f('0x9c2')](),$(_0x51986f('0x46a'))[_0x51986f('0x25b')]('form-control'),$('.dataTables_filter\x20input')['attr'](_0x51986f('0x7c2'),'Search'),$('.dataTables_filter\x20label')[_0x51986f('0xf1e')]()[_0x51986f('0x4fb')](function(){return 0x3===this['nodeType'];})[_0x51986f('0x109c')](),$('.tableActionButton')[_0x51986f('0x1064')]();}}},{'key':_0x30b7d4('0x1189'),'value':function(_0x32a6db){var _0x4fd8d1=_0x30b7d4,_0x131edc,_0x436e11=this[_0x4fd8d1('0x5d2')]();for(var _0x4257f9 in(_0x436e11[_0x4fd8d1('0x8f8')]({'sTitle':'','sClass':_0x4fd8d1('0x1ed')}),_0x436e11))_0x436e11[_0x4257f9]['sTitle']=this['gt'](_0x436e11[_0x4257f9][_0x4fd8d1('0x10a3')]);_0x131edc=this[_0x4fd8d1('0x883')]()+this[_0x4fd8d1('0xf42')]();var _0x4824bc=$('#'['concat'](_0x32a6db,'\x20.dataTables_paginate\x20.active\x20a'))[_0x4fd8d1('0xb07')](),_0x4deabd=0x0;void 0x0!==_0x4824bc&&null!=_0x4824bc&&(_0x4deabd=0xf*parseInt(_0x4824bc,0xa)-0xf),$('#'[_0x4fd8d1('0x3cc')](_0x32a6db))[_0x4fd8d1('0xb07')](_0x131edc);var _0x3a877b={'oLanguage':{'sLengthMenu':'_MENU_\x20records\x20per\x20page'},'bProcessing':!0x0,'bServerSide':!0x0,'sAjaxSource':this['getDataUrl'](this[_0x4fd8d1('0x315')]()),'aoColumns':_0x436e11,'bSort':this[_0x4fd8d1('0x244')](),'parent':this,'iDisplayLength':0xf,'iDisplayStart':_0x4deabd};this[_0x4fd8d1('0x764')]()&&(_0x3a877b[_0x4fd8d1('0xfb1')]=[{'fnRender':this[_0x4fd8d1('0xa4')],'aTargets':[this[_0x4fd8d1('0x315')]()['length']]}]);var _0xfd1997=this[_0x4fd8d1('0x1122')]();$[_0x4fd8d1('0x1158')](_0x3a877b,_0xfd1997),$('#'[_0x4fd8d1('0x3cc')](_0x32a6db,_0x4fd8d1('0x6ef')))[_0x4fd8d1('0x172')](_0x3a877b),$(_0x4fd8d1('0x99'))[_0x4fd8d1('0x25b')](_0x4fd8d1('0x38f')),$(_0x4fd8d1('0x5c7'))[_0x4fd8d1('0x9c2')](),$(_0x4fd8d1('0x46a'))['addClass'](_0x4fd8d1('0x9cd')),$(_0x4fd8d1('0x46a'))[_0x4fd8d1('0xba5')](_0x4fd8d1('0x7c2'),_0x4fd8d1('0x8a')),$(_0x4fd8d1('0x5c1'))['contents']()[_0x4fd8d1('0x4fb')](function(){var _0x5f122a=_0x4fd8d1;return 0x3===this[_0x5f122a('0xa4b')];})[_0x4fd8d1('0x109c')](),$(_0x4fd8d1('0x1fb'))['tooltip']();}},{'key':_0x30b7d4('0x5d2'),'value':function(){}},{'key':'getDataMapping','value':function(){}},{'key':_0x30b7d4('0xfe3'),'value':function(){}},{'key':_0x30b7d4('0x5f6'),'value':function(){return[];}},{'key':_0x30b7d4('0xa8b'),'value':function(){}},{'key':_0x30b7d4('0xa68'),'value':function(){return null;}},{'key':_0x30b7d4('0x165'),'value':function(_0x10437e){var _0x5c0651=_0x30b7d4;this['currentId']=_0x10437e,this[_0x5c0651('0x1bf')](_0x10437e,[]);}},{'key':_0x30b7d4('0x15a'),'value':function(_0x52665e){var _0x1a4b78=_0x30b7d4;this[_0x1a4b78('0x1bf')](_0x52665e,[],!0x0);}},{'key':_0x30b7d4('0x31a'),'value':function(_0x1df202,_0x141bd6,_0x1e7928){var _0x5dbbad=_0x30b7d4;$('#'['concat'](_0x1df202,_0x5dbbad('0xe3d')))[_0x5dbbad('0xb07')](''),void 0x0!==_0x1e7928&&null!=_0x1e7928||(_0x1e7928=''),$('#'[_0x5dbbad('0x3cc')](_0x1df202,_0x5dbbad('0xe1d')))[_0x5dbbad('0xb07')](_0x141bd6),$('#'[_0x5dbbad('0x3cc')](_0x1df202,_0x5dbbad('0xe3d')))[_0x5dbbad('0xb07')](_0x1e7928);}},{'key':_0x30b7d4('0xcf2'),'value':function(_0x308a64,_0x5d09a7,_0x244b1f,_0x1f6f04,_0x43b584,_0x2ef888){var _0x33d221=_0x30b7d4,_0x41d64b=this,_0x2da4ad=_0x33d221('0x11c9');void 0x0!==_0x5d09a7&&null!=_0x5d09a7||(_0x5d09a7=''),$(''[_0x33d221('0x3cc')](_0x2da4ad,_0x33d221('0x811')))['html'](_0x308a64),$(''[_0x33d221('0x3cc')](_0x2da4ad,_0x33d221('0x967')))[_0x33d221('0xb07')](_0x5d09a7),null!=_0x244b1f&&$(''['concat'](_0x2da4ad,_0x33d221('0x752')))[_0x33d221('0xb07')](_0x244b1f),null!=_0x1f6f04&&$(''[_0x33d221('0x3cc')](_0x2da4ad,_0x33d221('0x11c4')))[_0x33d221('0xb07')](_0x1f6f04),$(''[_0x33d221('0x3cc')](_0x2da4ad,_0x33d221('0x752')))[_0x33d221('0xc1f')]()['on'](_0x33d221('0xd4d'),function(){var _0x1b7a66=_0x33d221;void 0x0!==_0x43b584&&null!=_0x43b584&&(_0x43b584[_0x1b7a66('0x1036')](_0x41d64b,_0x2ef888),_0x41d64b[_0x1b7a66('0x517')]());}),$(_0x2da4ad)[_0x33d221('0x11ad')]({'backdrop':_0x33d221('0xf2e')});}},{'key':'renderModelFromDom','value':function(_0x39a62c,_0x506076,_0x14c41b){var _0x4a35b6=_0x30b7d4;$('#'[_0x4a35b6('0x3cc')](_0x39a62c,'ModelBody'))[_0x4a35b6('0xb07')](''),void 0x0!==_0x14c41b&&null!=_0x14c41b||(_0x14c41b=$(_0x4a35b6('0x1120'))),$('#'[_0x4a35b6('0x3cc')](_0x39a62c,_0x4a35b6('0xe1d')))['html'](_0x506076),$('#'[_0x4a35b6('0x3cc')](_0x39a62c,_0x4a35b6('0xe3d')))[_0x4a35b6('0xb07')](''),$('#'[_0x4a35b6('0x3cc')](_0x39a62c,_0x4a35b6('0xe3d')))['append'](_0x14c41b);}},{'key':_0x30b7d4('0xdf7'),'value':function(_0x146e74){var _0x91fe09=_0x30b7d4;this[_0x91fe09('0x4a8')]['id']=_0x146e74,this[_0x91fe09('0x31a')](_0x91fe09('0x506'),_0x91fe09('0x5c4'),_0x91fe09('0xe5e')),$(_0x91fe09('0xc37'))[_0x91fe09('0x11ad')](_0x91fe09('0x41b'));}},{'key':_0x30b7d4('0xb5d'),'value':function(_0x3a9080,_0x29443e){var _0x36dd90=_0x30b7d4,_0x2f325d=arguments[_0x36dd90('0x525')]>0x2&&void 0x0!==arguments[0x2]?arguments[0x2]:null,_0x365337=arguments[_0x36dd90('0x525')]>0x3&&void 0x0!==arguments[0x3]?arguments[0x3]:null,_0x55077b=arguments[_0x36dd90('0x525')]>0x4&&void 0x0!==arguments[0x4]&&arguments[0x4],_0x3d233a=this,_0x460fe2='';_0x460fe2=_0x55077b?'#plainMessageModel':_0x36dd90('0x842'),$(_0x460fe2)[_0x36dd90('0xc1f')](),_0x55077b?this['renderModel'](_0x36dd90('0x504'),_0x3a9080,_0x29443e):this[_0x36dd90('0x31a')](_0x36dd90('0xa1a'),_0x3a9080,_0x29443e),null!=_0x2f325d?($(_0x460fe2)[_0x36dd90('0x11ad')]({'show':!0x0}),$(_0x460fe2)['on'](_0x36dd90('0x192'),function(){var _0x18d3a7=_0x36dd90;_0x2f325d[_0x18d3a7('0x1036')](_0x3d233a,_0x365337),$(_0x18d3a7('0x32e'))[_0x18d3a7('0x109c')]();})):$(_0x460fe2)[_0x36dd90('0x11ad')]({'backdrop':_0x36dd90('0xf2e')});}},{'key':_0x30b7d4('0x4bf'),'value':function(_0x4224c8,_0x27c275,_0x24ff82,_0x4306fe,_0x20137e){var _0x24f733=_0x30b7d4,_0x571663=this,_0x4f5173='';_0x4f5173=_0x20137e?_0x24f733('0x259'):_0x24f733('0x842'),$(_0x4f5173)[_0x24f733('0x55b')](_0x24f733('0x9c2')),_0x20137e?this[_0x24f733('0x71f')](_0x24f733('0xac2'),_0x4224c8,_0x27c275):this[_0x24f733('0x71f')]('message',_0x4224c8,_0x27c275),null!=_0x24ff82?($(_0x4f5173)['modal']({'show':!0x0}),$(_0x4f5173)['on'](_0x24f733('0x192'),function(){var _0x12ef52=_0x24f733;_0x24ff82[_0x12ef52('0x1036')](_0x571663,_0x4306fe),$(_0x12ef52('0x32e'))[_0x12ef52('0x109c')]();})):$(_0x4f5173)[_0x24f733('0x11ad')]({'backdrop':_0x24f733('0xf2e')});}},{'key':_0x30b7d4('0xfe9'),'value':function(){var _0x507afe=_0x30b7d4;void 0x0===this[_0x507afe('0x4a8')]['id']&&null==this[_0x507afe('0x4a8')]['id']||this[_0x507afe('0xea3')](this['deleteParams']['id'],[]),$('#deleteModel')[_0x507afe('0x11ad')]('hide');}},{'key':'cancelDelete','value':function(){var _0x39625b=_0x30b7d4;$('#deleteModel')[_0x39625b('0x11ad')](_0x39625b('0x9c2')),this[_0x39625b('0x4a8')]['id']=null;}},{'key':_0x30b7d4('0x94b'),'value':function(){var _0x283fe3=_0x30b7d4;$(_0x283fe3('0x842'))[_0x283fe3('0x11ad')](_0x283fe3('0x9c2'));}},{'key':_0x30b7d4('0x517'),'value':function(){var _0x216185=_0x30b7d4;$(_0x216185('0x11c9'))[_0x216185('0x11ad')](_0x216185('0x9c2'));}},{'key':'closePlainMessage','value':function(){var _0x574184=_0x30b7d4;$(_0x574184('0x103'))['modal'](_0x574184('0x9c2')),$(_0x574184('0x259'))[_0x574184('0x11ad')]('hide');}},{'key':'closeDataMessage','value':function(){var _0xb1f737=_0x30b7d4;$(_0xb1f737('0x259'))[_0xb1f737('0x11ad')](_0xb1f737('0x9c2'));}},{'key':_0x30b7d4('0xc68'),'value':function(_0x3667a1,_0x20fb12){var _0x10dcd4=_0x30b7d4,_0x13d849=new _0x32c06c[(_0x10dcd4('0x544'))](''[_0x10dcd4('0x3cc')](this[_0x10dcd4('0x107b')](),_0x10dcd4('0x959')),!0x0,{'ShowPopup':!0x1,'LabelErrorClass':_0x10dcd4('0x8d9')});if(_0x13d849['checkValues']()){var _0x370ada=_0x13d849[_0x10dcd4('0x223')]();_0x370ada=this[_0x10dcd4('0xb48')](_0x370ada);var _0x214583=this['doCustomValidation'](_0x370ada);if(null==_0x214583){this[_0x10dcd4('0x176')]&&(_0x370ada['csrf']=$('#'[_0x10dcd4('0x3cc')](this['getTableName'](),_0x10dcd4('0x5ac')))[_0x10dcd4('0xac8')]('csrf'));var _0x4d3e0e=$('#'[_0x10dcd4('0x3cc')](this[_0x10dcd4('0x107b')](),'_submit\x20#id'))[_0x10dcd4('0x7eb')]();null!=_0x4d3e0e&&void 0x0!==_0x4d3e0e&&''!==_0x4d3e0e&&(_0x370ada['id']=_0x4d3e0e),_0x370ada=this[_0x10dcd4('0xced')](_0x370ada),this['add'](_0x370ada,[],_0x3667a1,_0x20fb12);}else $('#'['concat'](this['getTableName'](),_0x10dcd4('0x1051')))[_0x10dcd4('0xb07')](_0x214583),$('#'[_0x10dcd4('0x3cc')](this[_0x10dcd4('0x107b')](),'Form\x20.label'))['show'](),this['scrollToTop']();}}},{'key':_0x30b7d4('0xced'),'value':function(_0x59cd11){var _0x51c29d=_0x30b7d4;return this[_0x51c29d('0xfe3')]()[_0x51c29d('0xa9e')](function(_0x13db10){var _0x33bea7=_0x51c29d;_0x33bea7('0x65d')!==_0x13db10[0x1][_0x33bea7('0x3f7')]&&_0x33bea7('0xb6a')!==_0x13db10[0x1][_0x33bea7('0x3f7')]||''!==_0x59cd11[_0x13db10[0x0]]&&_0x33bea7('0xac7')!==_0x59cd11[_0x13db10[0x0]]&&_0x33bea7('0xc2')!==_0x59cd11[_0x13db10[0x0]]||(_0x33bea7('0x1c1')===_0x13db10[0x1][_0x33bea7('0x94d')]?_0x59cd11[_0x13db10[0x0]]=_0x33bea7('0xde9'):delete _0x59cd11[_0x13db10[0x0]]);}),_0x59cd11;}},{'key':'validatePassword','value':function(_0x595530){var _0x40bdb5=_0x30b7d4;return _0x595530[_0x40bdb5('0x525')]<0x8?this['gt'](_0x40bdb5('0x77b')):_0x595530[_0x40bdb5('0x525')]>0x1e?this['gt']('Password\x20too\x20long'):_0x595530[_0x40bdb5('0x91e')](/.*[0-9]+.*$/)?_0x595530['match'](/.*[a-z]+.*$/)?_0x595530[_0x40bdb5('0x91e')](/.*[A-Z]+.*$/)?_0x595530['match'](/.*[\W]+.*$/)?null:this['gt'](_0x40bdb5('0x5b3')):this['gt'](_0x40bdb5('0x9b9')):this['gt']('Password\x20must\x20include\x20at\x20least\x20one\x20lowercase\x20letter'):this['gt'](_0x40bdb5('0x299'));}},{'key':'forceInjectValuesBeforeSave','value':function(_0x361ef8){return _0x361ef8;}},{'key':_0x30b7d4('0x66f'),'value':function(_0x4408a9){return null;}},{'key':_0x30b7d4('0x80c'),'value':function(){var _0x55955f=_0x30b7d4,_0x1f10a9=new _0x32c06c[(_0x55955f('0x544'))](''[_0x55955f('0x3cc')](this[_0x55955f('0x107b')](),_0x55955f('0xf07')),!0x0,{'ShowPopup':!0x1,'LabelErrorClass':_0x55955f('0x8d9')});if(_0x1f10a9[_0x55955f('0x7bd')]()){var _0x2413f8=_0x1f10a9['getFormParameters']();if(this[_0x55955f('0x3d8')](_0x2413f8)){for(var _0x999964 in _0x2413f8)_0x2413f8[_0x55955f('0x100')](_0x999964)&&_0x55955f('0xde9')===_0x2413f8[_0x999964]&&delete _0x2413f8[_0x999964];this[_0x55955f('0x1123')](_0x2413f8),this['filtersAlreadySet']=!0x0,$('#'['concat'](this[_0x55955f('0x107b')](),_0x55955f('0x53')))[_0x55955f('0x41b')](),this['currentFilterString']=this[_0x55955f('0xcc1')](_0x2413f8),this[_0x55955f('0x33')]([]),this['closePlainMessage']();}}}},{'key':_0x30b7d4('0xcc1'),'value':function(_0x22fdaf){var _0x499154=_0x30b7d4,_0x998f42,_0x406893,_0x47615e,_0x24e1d4,_0x259864,_0x2481e5,_0x126833='',_0x1b5cce=this[_0x499154('0xa68')]();for(var _0x585fa9 in(null==_0x47615e&&(_0x47615e=[]),_0x22fdaf))if(_0x22fdaf[_0x499154('0x100')](_0x585fa9)){if(!(_0x47615e=this[_0x499154('0x44b')](_0x585fa9,_0x1b5cce)))continue;if(_0x259864='',_0x2481e5=null,_0x499154('0x8ff')===_0x47615e[_0x499154('0x3f7')]||_0x499154('0x1137')===_0x47615e[_0x499154('0x3f7')]){if(void 0x0!==_0x47615e[_0x499154('0x95b')]&&null!=_0x47615e[_0x499154('0x95b')]){if(_0x998f42=_0x47615e[_0x499154('0x95b')],_0x499154('0xde9')===_0x22fdaf[_0x585fa9])_0x259864=void 0x0!==_0x47615e[_0x499154('0x3a8')]&&null!=_0x47615e['null-label']?_0x47615e[_0x499154('0x3a8')]:'Not\x20Selected';else{var _0x2f4488=''[_0x499154('0x3cc')](_0x998f42[0x0],'_')[_0x499154('0x3cc')](_0x998f42[0x1],'_')[_0x499154('0x3cc')](_0x998f42[0x2]);_0x998f42[_0x499154('0x525')]>0x3&&(_0x2f4488=''[_0x499154('0x3cc')](_0x2f4488,'_')[_0x499154('0x3cc')](_0x998f42[0x3])),_0x2481e5=_0x259864=this['fieldMasterData'][_0x2f4488][_0x22fdaf[_0x585fa9]];}}else{if(_0x406893=_0x47615e['source'][0x0],_0x499154('0xde9')===_0x22fdaf[_0x585fa9])_0x259864=void 0x0!==_0x47615e[_0x499154('0x3a8')]&&null!=_0x47615e[_0x499154('0x3a8')]?_0x47615e[_0x499154('0x3a8')]:'Not\x20Selected';else for(var _0x1b0dc9=0x0;_0x1b0dc9<_0x406893[_0x499154('0x525')];_0x1b0dc9++)if(_0x22fdaf[_0x585fa9]===_0x47615e[_0x499154('0x4fe')][_0x1b0dc9][0x0]){_0x2481e5=_0x259864=_0x47615e[_0x499154('0x4fe')][_0x1b0dc9][0x1];break;}}}else{if(_0x499154('0x256')===_0x47615e[_0x499154('0x3f7')]){_0x24e1d4=[];try{_0x24e1d4=JSON[_0x499154('0xf01')](_0x22fdaf[_0x585fa9]);}catch(_0x569a34){}''!==(_0x259864=_0x24e1d4[_0x499154('0x582')](','))&&(_0x2481e5=_0x259864);}else''!==(_0x259864=_0x22fdaf[_0x585fa9])&&(_0x2481e5=_0x259864);}null!=_0x2481e5&&(''!==_0x126833&&(_0x126833+='\x20|\x20'),_0x126833+=''[_0x499154('0x3cc')](_0x47615e[_0x499154('0xf90')],_0x499154('0x6cb'))['concat'](_0x259864));}return _0x126833;}},{'key':_0x30b7d4('0x3d8'),'value':function(_0x1cb553){return!0x0;}},{'key':_0x30b7d4('0xe42'),'value':function(){var _0x3cb366=_0x30b7d4;this[_0x3cb366('0x4fb')]=this[_0x3cb366('0x10f0')],this[_0x3cb366('0x76f')]=!0x1,$('#'['concat'](this['getTableName'](),_0x3cb366('0x53')))[_0x3cb366('0x9c2')](),this['currentFilterString']='',this[_0x3cb366('0x33')]([]);}},{'key':_0x30b7d4('0xc75'),'value':function(_0x56a26b){var _0x476701=_0x30b7d4;for(var _0x11d65c=this[_0x476701('0xb40')][_0x476701('0xe0d')],_0x20f447='',_0x383c95=this[_0x476701('0xa68')](),_0x49a77b=0x0;_0x49a77b<_0x383c95[_0x476701('0x525')];_0x49a77b++){var _0x3b5bf9=this['getMetaFieldForRendering'](_0x383c95[_0x49a77b][0x0]);if(''===_0x3b5bf9||void 0x0===_0x3b5bf9)_0x20f447+=this[_0x476701('0x9cb')](_0x383c95[_0x49a77b]);else{var _0x39a3de=_0x56a26b[_0x3b5bf9];''!==_0x39a3de&&null!=_0x39a3de&&void 0x0!==_0x39a3de&&''!==_0x39a3de[_0x476701('0x445')]()?_0x20f447+=this[_0x476701('0x9cb')](JSON[_0x476701('0xf01')](_0x39a3de)):_0x20f447+=this['renderFormField'](_0x383c95[_0x49a77b]);}}_0x11d65c=(_0x11d65c=_0x11d65c[_0x476701('0x166')](/_id_/g,''[_0x476701('0x3cc')](this[_0x476701('0x107b')](),'_filter')))[_0x476701('0x166')](/_fields_/g,_0x20f447);var _0x34adc4=this[_0x476701('0xcc7')](0xe),_0x488629=$(_0x476701('0xbea'));_0x488629['attr']('id',_0x34adc4),_0x488629[_0x476701('0xb07')](_0x11d65c),_0x488629[_0x476701('0x6f3')](_0x476701('0xf4b'))['datepicker']({'viewMode':0x2}),_0x488629[_0x476701('0x6f3')](_0x476701('0x895'))[_0x476701('0x642')]({'language':'en','pickDate':!0x1}),_0x488629['find'](_0x476701('0x5c'))[_0x476701('0x642')]({'language':'en'}),_0x488629[_0x476701('0x6f3')]('.colorpick')[_0x476701('0xc4d')](),tinymce[_0x476701('0x2ae')]({'selector':'#'[_0x476701('0x3cc')](_0x488629[_0x476701('0xba5')]('id'),_0x476701('0xf4e')),'height':_0x476701('0x196')}),_0x488629[_0x476701('0x6f3')](_0x476701('0x3fb'))['each'](function(){var _0x3e3abb=_0x476701,_0x2e0ddd=new SimpleMDE({'element':$(this)[0x0]});$(this)[_0x3e3abb('0xac8')](_0x3e3abb('0x68b'),_0x2e0ddd);}),_0x488629[_0x476701('0x6f3')](_0x476701('0xcd7'))[_0x476701('0xf3a')](function(){var _0x46ca90=_0x476701;$(this)[_0x46ca90('0x1137')]()['select2'](_0x46ca90('0x7eb'),$(this)[_0x46ca90('0x6f3')](_0x46ca90('0x1a8'))[_0x46ca90('0x7eb')]());}),_0x488629[_0x476701('0x6f3')](_0x476701('0x29a'))[_0x476701('0xf3a')](function(){var _0x4d8e8d=_0x476701;$(this)[_0x4d8e8d('0x1137')]()['on']('change',function(_0xf251fa){var _0x3d4998=_0x4d8e8d,_0xa9c444=$(this)[_0x3d4998('0x28c')](_0x3d4998('0x82d')),_0x380f6a=_0xa9c444[_0x3d4998('0x6f3')]('.select2-choices')[_0x3d4998('0x7f0')]();_0xa9c444[_0x3d4998('0x7f0')](parseInt(_0x380f6a,0xa));});}),this[_0x476701('0x4bf')]('Edit',_0x488629,null,null,!0x0),$('.filterBtn')[_0x476701('0xc1f')](),$(_0x476701('0xa02'))['on'](_0x476701('0xd4d'),function(_0x2a37bf){var _0x338c36=_0x476701;_0x2a37bf['preventDefault'](),_0x2a37bf['stopPropagation']();try{modJs[_0x338c36('0x80c')]();}catch(_0x75d677){console[_0x338c36('0xc60')](_0x75d677),console[_0x338c36('0xc60')](_0x75d677[_0x338c36('0xa1a')]);}return!0x1;}),void 0x0!==this[_0x476701('0x4fb')]&&null!=this[_0x476701('0x4fb')]&&''!==this[_0x476701('0x4fb')]&&this[_0x476701('0x1a')](this[_0x476701('0x4fb')],'#'[_0x476701('0x3cc')](this[_0x476701('0x107b')](),_0x476701('0xf07')),this[_0x476701('0xa68')]());}},{'key':_0x30b7d4('0x1b0'),'value':function(_0x3ed6d4){}},{'key':_0x30b7d4('0x11da'),'value':function(_0x31ec18){var _0x101fbb=_0x30b7d4,_0x1a62e3=[];null!=_0x31ec18&&void 0x0!==_0x31ec18||(this[_0x101fbb('0xd5e')]=null),this[_0x101fbb('0x1b0')](_0x31ec18);for(var _0x36c211,_0x4d6bf5=this['templates']['formTemplate'],_0x1055f4='',_0x2f1e79=this['getFormFields'](),_0x470234=0x0;_0x470234<_0x2f1e79[_0x101fbb('0x525')];_0x470234++){var _0x347b27=this['getMetaFieldForRendering'](_0x2f1e79[_0x470234][0x0]);if(''===_0x347b27||void 0x0===_0x347b27)_0x1055f4+=this[_0x101fbb('0x9cb')](_0x2f1e79[_0x470234]);else{var _0x52cf50=_0x31ec18[_0x347b27];''!==_0x52cf50&&null!=_0x52cf50&&void 0x0!==_0x52cf50&&''!==_0x52cf50[_0x101fbb('0x445')]()?_0x1055f4+=this[_0x101fbb('0x9cb')](JSON['parse'](_0x52cf50)):_0x1055f4+=this['renderFormField'](_0x2f1e79[_0x470234]);}}_0x4d6bf5=(_0x4d6bf5=_0x4d6bf5[_0x101fbb('0x166')](/_id_/g,''[_0x101fbb('0x3cc')](this[_0x101fbb('0x107b')](),'_submit')))['replace'](/_fields_/g,_0x1055f4);var _0x519a03=this[_0x101fbb('0xcc7')](0xe);this[_0x101fbb('0x599')]?(_0x36c211=$(''))[_0x101fbb('0xba5')]('id',_0x519a03):_0x36c211=$('#'[_0x101fbb('0x3cc')](this[_0x101fbb('0x107b')](),_0x101fbb('0x5ac'))),_0x36c211[_0x101fbb('0xb07')](_0x4d6bf5),_0x36c211[_0x101fbb('0x6f3')](_0x101fbb('0xf4b'))['datepicker']({'viewMode':0x2}),_0x36c211[_0x101fbb('0x6f3')]('.timefield')['datetimepicker']({'language':'en','pickDate':!0x1}),_0x36c211[_0x101fbb('0x6f3')](_0x101fbb('0x5c'))[_0x101fbb('0x642')]({'language':'en'}),_0x36c211[_0x101fbb('0x6f3')](_0x101fbb('0x394'))['colorpicker'](),tinymce['init']({'selector':'#'['concat'](_0x36c211[_0x101fbb('0xba5')]('id'),'\x20.tinymce'),'height':_0x101fbb('0x196')}),_0x36c211[_0x101fbb('0x6f3')](_0x101fbb('0x3fb'))[_0x101fbb('0xf3a')](function(){var _0x179c3f=_0x101fbb,_0x4d89c9=new SimpleMDE({'element':$(this)[0x0]});$(this)[_0x179c3f('0xac8')](_0x179c3f('0x68b'),_0x4d89c9);});var _0x408b58=this[_0x101fbb('0xb27')];_0x408b58&&_0x36c211[_0x101fbb('0x6f3')](_0x101fbb('0x8eb'))[_0x101fbb('0xf3a')](function(){var _0x5706b0=_0x101fbb,_0x8cf9be=_0x408b58['fromTextArea']($(this)[0x0],{'lineNumbers':!0x1,'matchBrackets':!0x0,'continueComments':_0x5706b0('0x5ed'),'extraKeys':{'Ctrl-Q':_0x5706b0('0x696')}});$(this)[_0x5706b0('0xac8')](_0x5706b0('0x11b8'),_0x8cf9be);}),_0x36c211[_0x101fbb('0x6f3')](_0x101fbb('0xcd7'))['each'](function(){var _0x38e93c=_0x101fbb;$(this)[_0x38e93c('0x1137')]()[_0x38e93c('0x1137')](_0x38e93c('0x7eb'),$(this)[_0x38e93c('0x6f3')](_0x38e93c('0x1a8'))[_0x38e93c('0x7eb')]());}),_0x36c211['find'](_0x101fbb('0x29a'))['each'](function(){$(this)['select2']()['on']('change',function(_0x3842e5){var _0x1d6448=_0x3ab6,_0x37a708=$(this)[_0x1d6448('0x28c')](_0x1d6448('0x82d')),_0x41a634=_0x37a708['find'](_0x1d6448('0xe73'))['height']();_0x37a708[_0x1d6448('0x7f0')](parseInt(_0x41a634,0xa));});}),_0x36c211['find'](_0x101fbb('0xa8e'))[_0x101fbb('0xf3a')](function(){var _0x22aae4=_0x101fbb;_0x1a62e3[_0x22aae4('0x8f8')]($(this)['attr']('id'));});for(var _0x238e9e=0x0;_0x238e9e<_0x2f1e79[_0x101fbb('0x525')];_0x238e9e++)'datagroup'===_0x2f1e79[_0x238e9e][0x1][_0x101fbb('0x3f7')]&&_0x36c211['find']('#'[_0x101fbb('0x3cc')](_0x2f1e79[_0x238e9e][0x0]))['data']('field',_0x2f1e79[_0x238e9e]);if(!0x1===this[_0x101fbb('0xfd1')]?_0x36c211[_0x101fbb('0x6f3')]('.saveBtn')[_0x101fbb('0x109c')]():(_0x36c211[_0x101fbb('0x6f3')](_0x101fbb('0x658'))[_0x101fbb('0xc1f')](),_0x36c211[_0x101fbb('0x6f3')](_0x101fbb('0x658'))['data'](_0x101fbb('0x7db'),this),_0x36c211['find'](_0x101fbb('0x658'))['on'](_0x101fbb('0xd4d'),function(){var _0x29dfe8=_0x101fbb;return null!=$(this)[_0x29dfe8('0xac8')](_0x29dfe8('0x7db'))['saveSuccessItemCallback']&&void 0x0!==$(this)[_0x29dfe8('0xac8')](_0x29dfe8('0x7db'))[_0x29dfe8('0x8aa')]?$(this)[_0x29dfe8('0xac8')]('modJs')[_0x29dfe8('0xc68')]($(this)[_0x29dfe8('0xac8')](_0x29dfe8('0x7db'))[_0x29dfe8('0xa8a')](),$(this)[_0x29dfe8('0xac8')](_0x29dfe8('0x7db'))[_0x29dfe8('0x8aa')]):$(this)['data'](_0x29dfe8('0x7db'))[_0x29dfe8('0xc68')](),!0x1;})),!0x1===this[_0x101fbb('0x10fd')]?_0x36c211[_0x101fbb('0x6f3')]('.cancelBtn')['remove']():(_0x36c211[_0x101fbb('0x6f3')](_0x101fbb('0xcff'))['off'](),_0x36c211[_0x101fbb('0x6f3')](_0x101fbb('0xcff'))[_0x101fbb('0xac8')]('modJs',this),_0x36c211[_0x101fbb('0x6f3')](_0x101fbb('0xcff'))['on'](_0x101fbb('0xd4d'),function(){var _0x4eda19=_0x101fbb;return $(this)['data'](_0x4eda19('0x7db'))[_0x4eda19('0x584')](),!0x1;})),_0x36c211[_0x101fbb('0x6f3')](_0x101fbb('0xcba'))['each'](function(){var _0x49a41e=_0x101fbb;$(this)[_0x49a41e('0x1135')]($(this)[_0x49a41e('0xba5')](_0x49a41e('0xf2a')));}),_0x36c211[_0x101fbb('0x6f3')](_0x101fbb('0xfb2'))[_0x101fbb('0xf3a')](function(){var _0x5c05e0=_0x101fbb;$(this)['inputmask']({'mask':_0x5c05e0('0x3f1'),'placeholder':_0x5c05e0('0x8bf'),'leapday':_0x5c05e0('0x656'),'separator':'-','alias':_0x5c05e0('0x29')});}),_0x36c211[_0x101fbb('0x6f3')](_0x101fbb('0xbce'))[_0x101fbb('0xf3a')](function(){var _0x3bb666=_0x101fbb;$(this)['inputmask'](_0x3bb666('0xb6a'),{'mask':_0x3bb666('0x93'),'placeholder':_0x3bb666('0x60c'),'leapday':_0x3bb666('0x656'),'separator':'-','alias':'yyyy/mm/dd'});}),this[_0x101fbb('0x599')]){this[_0x101fbb('0xb5d')](_0x101fbb('0xf1'),'',null,null,!0x0),$(_0x101fbb('0x7ac'))[_0x101fbb('0xb07')](''),$(_0x101fbb('0x7ac'))[_0x101fbb('0xf9a')](_0x36c211);for(var _0x3e40a3=0x0;_0x3e40a3<_0x1a62e3[_0x101fbb('0x525')];_0x3e40a3++)$('#'[_0x101fbb('0x3cc')](_0x1a62e3[_0x3e40a3]))[_0x101fbb('0xac8')](_0x101fbb('0xcb6'),new SignaturePad(document['getElementById'](_0x1a62e3[_0x3e40a3])));void 0x0!==_0x31ec18&&null!=_0x31ec18?this[_0x101fbb('0x1a')](_0x31ec18,'#'[_0x101fbb('0x3cc')](_0x519a03)):this[_0x101fbb('0xa73')]('#'[_0x101fbb('0x3cc')](_0x519a03));}else{$('#'[_0x101fbb('0x3cc')](this[_0x101fbb('0x107b')](),_0x101fbb('0x5ac')))[_0x101fbb('0x41b')](),$('#'[_0x101fbb('0x3cc')](this[_0x101fbb('0x107b')]()))[_0x101fbb('0x9c2')]();for(var _0x43718e=0x0;_0x43718e<_0x1a62e3[_0x101fbb('0x525')];_0x43718e++)$('#'[_0x101fbb('0x3cc')](_0x1a62e3[_0x43718e]))[_0x101fbb('0xac8')](_0x101fbb('0xcb6'),new SignaturePad(document[_0x101fbb('0xc14')](_0x1a62e3[_0x43718e])));void 0x0!==_0x31ec18&&null!=_0x31ec18?this['fillForm'](_0x31ec18):this[_0x101fbb('0xa73')](),this[_0x101fbb('0x2ca')]();}this[_0x101fbb('0x961')](_0x31ec18,_0x36c211);}},{'key':'setDefaultValues','value':function(_0x46c2b1,_0x92f707){var _0x50d63a=_0x30b7d4;null!=_0x92f707&&void 0x0!==_0x92f707||(_0x92f707=this[_0x50d63a('0xfe3')]()),null!=_0x46c2b1&&void 0x0!==_0x46c2b1&&''!==_0x46c2b1||(_0x46c2b1='#'[_0x50d63a('0x3cc')](this['getTableName'](),'Form'));for(var _0x7bf023=0x0;_0x7bf023<_0x92f707[_0x50d63a('0x525')];_0x7bf023++)_0x50d63a('0x768')!==_0x92f707[_0x7bf023][0x1][_0x50d63a('0x3f7')]&&_0x50d63a('0xa2e')!==_0x92f707[_0x7bf023][0x1][_0x50d63a('0x3f7')]||void 0x0!==_0x92f707[_0x7bf023][0x1]['default']&&null!==_0x92f707[_0x7bf023][0x1]['default']&&$(''['concat'](_0x46c2b1,'\x20#')[_0x50d63a('0x3cc')](_0x92f707[_0x7bf023][0x0]))[_0x50d63a('0x7eb')](_0x92f707[_0x7bf023][0x1]['default']);}},{'key':'retriveItemsAfterSave','value':function(){return!0x0;}},{'key':_0x30b7d4('0x961'),'value':function(_0xa96d00,_0x3702ed){}},{'key':_0x30b7d4('0x111a'),'value':function(_0x4c4ced,_0x21867d){var _0x5c90df=_0x30b7d4,_0x2c7aec,_0x3267ca,_0x166c02,_0x522ec5,_0x68b136=JSON['parse'](_0x4c4ced),_0x5b12b6=_0x21867d[0x1][_0x5c90df('0xb07')];null!=_0x68b136&&void 0x0!==_0x68b136&&void 0x0!==_0x21867d[0x1][_0x5c90df('0x164')]&&null!=_0x21867d[0x1][_0x5c90df('0x164')]&&_0x68b136[_0x5c90df('0xe4f')](_0x21867d[0x1][_0x5c90df('0x164')]);for(var _0x3210d5=$(_0x5c90df('0x8a7')[_0x5c90df('0x3cc')](_0x21867d[0x0],'_div_inner\x22>')),_0x46686b=0x0;_0x46686b<_0x68b136[_0x5c90df('0x525')];_0x46686b++){for(var _0x550ed5 in(_0x3267ca=_0x68b136[_0x46686b],void 0x0!==_0x21867d[0x1][_0x5c90df('0x8fc')]&&null!=_0x21867d[0x1][_0x5c90df('0x8fc')]&&(_0x3267ca=_0x21867d[0x1]['pre-format-function']['apply'](this,[_0x3267ca])),_0x2c7aec=(_0x2c7aec=(_0x2c7aec=(_0x2c7aec=_0x5b12b6)[_0x5c90df('0x166')](_0x5c90df('0x7c1'),_0x5c90df('0x9b')))[_0x5c90df('0x166')](_0x5c90df('0xc63'),_0x5c90df('0x89d')))['replace'](/#_id_#/g,_0x3267ca['id']),_0x3267ca))void 0x0!==(_0x522ec5=_0x3267ca[_0x550ed5])&&null!=_0x522ec5&&_0x5c90df('0x7c7')==typeof _0x522ec5&&(_0x522ec5=_0x522ec5[_0x5c90df('0x166')](/(?:\r\n|\r|\n)/g,'')),_0x2c7aec=_0x2c7aec['replace']('#_'[_0x5c90df('0x3cc')](_0x550ed5,'_#'),_0x522ec5);void 0x0!==_0x21867d[0x1]['render']&&null!=_0x21867d[0x1][_0x5c90df('0x80f')]&&(_0x2c7aec=_0x2c7aec[_0x5c90df('0x166')]('#_renderFunction_#',_0x21867d[0x1][_0x5c90df('0x80f')](_0x3267ca))),(_0x166c02=$(_0x2c7aec))[_0x5c90df('0xba5')]('fieldId',''[_0x5c90df('0x3cc')](_0x21867d[0x0],_0x5c90df('0xa4e'))),_0x3210d5[_0x5c90df('0xf9a')](_0x166c02);}return _0x3210d5;}},{'key':_0x30b7d4('0x9db'),'value':function(_0x2e4ae5){var _0x4b7f7e=_0x30b7d4;$('#'[_0x4b7f7e('0x3cc')](_0x2e4ae5[0x0]))['val'](''),$('#'[_0x4b7f7e('0x3cc')](_0x2e4ae5[0x0],'_div'))[_0x4b7f7e('0xb07')]('');}},{'key':'showDataGroup','value':function(_0x31317b,_0x37cf2b,_0x248c44){var _0x3383fa=_0x30b7d4,_0x1e57bf=this[_0x3383fa('0xb40')][_0x3383fa('0x813')],_0x55eb49='',_0xdefe6e=_0x31317b[0x1][_0x3383fa('0xb3')];void 0x0!==_0x37cf2b&&null!=_0x37cf2b&&void 0x0!==_0x37cf2b['id']?this[_0x3383fa('0x104b')]=_0x37cf2b['id']:this[_0x3383fa('0x104b')]=null;for(var _0x3f87d2=0x0;_0x3f87d2<_0xdefe6e[_0x3383fa('0x525')];_0x3f87d2++)_0x55eb49+=this[_0x3383fa('0x9cb')](_0xdefe6e[_0x3f87d2]);_0x1e57bf=(_0x1e57bf=_0x1e57bf['replace'](/_id_/g,''[_0x3383fa('0x3cc')](this[_0x3383fa('0x107b')](),_0x3383fa('0xe2'))[_0x3383fa('0x3cc')](_0x31317b[0x0])))[_0x3383fa('0x166')](/_fields_/g,_0x55eb49);var _0x1674d7=this['generateRandom'](0xe),_0x1f6b3f=$('');_0x1f6b3f[_0x3383fa('0xba5')]('id',_0x1674d7),_0x1f6b3f[_0x3383fa('0xb07')](_0x1e57bf),_0x1f6b3f[_0x3383fa('0x6f3')](_0x3383fa('0xf4b'))['datepicker']({'viewMode':0x2}),_0x1f6b3f[_0x3383fa('0x6f3')](_0x3383fa('0x895'))[_0x3383fa('0x642')]({'language':'en','pickDate':!0x1}),_0x1f6b3f['find'](_0x3383fa('0x5c'))[_0x3383fa('0x642')]({'language':'en'}),_0x1f6b3f['find'](_0x3383fa('0x394'))[_0x3383fa('0xc4d')](),tinymce[_0x3383fa('0x2ae')]({'selector':'#'[_0x3383fa('0x3cc')](_0x1f6b3f[_0x3383fa('0xba5')]('id'),_0x3383fa('0xf4e')),'height':_0x3383fa('0x196')}),_0x1f6b3f['find'](_0x3383fa('0x3fb'))[_0x3383fa('0xf3a')](function(){var _0x53c24b=_0x3383fa,_0x3b5b0b=new SimpleMDE({'element':$(this)[0x0]});$(this)[_0x53c24b('0xac8')](_0x53c24b('0x68b'),_0x3b5b0b);}),_0x1f6b3f[_0x3383fa('0x6f3')](_0x3383fa('0xcd7'))['each'](function(){var _0x4dc49a=_0x3383fa;$(this)[_0x4dc49a('0x1137')]()['select2'](_0x4dc49a('0x7eb'),$(this)[_0x4dc49a('0x6f3')](_0x4dc49a('0x1a8'))['val']());}),_0x1f6b3f['find'](_0x3383fa('0x29a'))[_0x3383fa('0xf3a')](function(){var _0x50261c=_0x3383fa;$(this)[_0x50261c('0x1137')]()['on']('change',function(_0x3a5390){var _0x3f40dd=_0x50261c,_0x2fe848=$(this)[_0x3f40dd('0x28c')]('.row'),_0x47aa9c=_0x2fe848[_0x3f40dd('0x6f3')](_0x3f40dd('0xe73'))[_0x3f40dd('0x7f0')]();_0x2fe848[_0x3f40dd('0x7f0')](parseInt(_0x47aa9c,0xa));});}),this['currentDataGroupField']=_0x31317b,this['showDomElement'](_0x3383fa('0x52f')[_0x3383fa('0x3cc')](_0x31317b[0x1]['label']),_0x1f6b3f,null,null,!0x0),void 0x0!==_0x37cf2b&&null!=_0x37cf2b?this[_0x3383fa('0x1a')](_0x37cf2b,'#'[_0x3383fa('0x3cc')](this[_0x3383fa('0x107b')](),_0x3383fa('0xe2'))[_0x3383fa('0x3cc')](_0x31317b[0x0]),_0x31317b[0x1][_0x3383fa('0xb3')]):this[_0x3383fa('0xa73')]('#'[_0x3383fa('0x3cc')](this[_0x3383fa('0x107b')](),'_field_')[_0x3383fa('0x3cc')](_0x31317b[0x0]),_0x31317b[0x1][_0x3383fa('0xb3')]),$(_0x3383fa('0x719'))['off'](),void 0x0!==_0x37cf2b&&null!=_0x37cf2b&&void 0x0!==_0x37cf2b['id']?$(_0x3383fa('0x719'))['on']('click',function(_0x2dbec9){var _0x4fbb70=_0x3383fa;_0x2dbec9[_0x4fbb70('0xb65')](),_0x2dbec9[_0x4fbb70('0xe7c')]();try{modJs['editDataGroup'](_0x248c44);}catch(_0x309e2e){console[_0x4fbb70('0xc60')](_0x4fbb70('0x1e9')[_0x4fbb70('0x3cc')](_0x309e2e[_0x4fbb70('0xa1a')]));}return!0x1;}):$(_0x3383fa('0x719'))['on'](_0x3383fa('0xd4d'),function(_0x4f195d){var _0x4b06e2=_0x3383fa;_0x4f195d[_0x4b06e2('0xb65')](),_0x4f195d[_0x4b06e2('0xe7c')]();try{modJs[_0x4b06e2('0xd14')](_0x248c44);}catch(_0x4231a7){console[_0x4b06e2('0xc60')](_0x4b06e2('0x117c')[_0x4b06e2('0x3cc')](_0x4231a7[_0x4b06e2('0xa1a')]));}return!0x1;});}},{'key':_0x30b7d4('0xd14'),'value':function(_0x35d624,_0x2c7d3d){var _0x592a03=_0x30b7d4,_0x406717,_0x8ec3c6=this['currentDataGroupField'];$('#'[_0x592a03('0x3cc')](this[_0x592a03('0x107b')](),_0x592a03('0xe2'))[_0x592a03('0x3cc')](_0x8ec3c6[0x0],'_error'))['html'](''),$('#'['concat'](this[_0x592a03('0x107b')](),_0x592a03('0xe2'))[_0x592a03('0x3cc')](_0x8ec3c6[0x0],_0x592a03('0x1040')))[_0x592a03('0x9c2')]();var _0x26b452=new _0x32c06c['default'](''[_0x592a03('0x3cc')](this['getTableName'](),_0x592a03('0xe2'))[_0x592a03('0x3cc')](_0x8ec3c6[0x0]),!0x0,{'ShowPopup':!0x1,'LabelErrorClass':'error'});if(_0x26b452[_0x592a03('0x7bd')]()){var _0x191c80=_0x26b452[_0x592a03('0x223')]();if(void 0x0!==_0x8ec3c6[0x1][_0x592a03('0xe8f')]&&null!=_0x8ec3c6[0x1][_0x592a03('0xe8f')]){if(!(_0x406717=_0x8ec3c6[0x1][_0x592a03('0xe8f')][_0x592a03('0x1036')](this,[_0x191c80]))[_0x592a03('0xe6b')])return $('#'[_0x592a03('0x3cc')](this[_0x592a03('0x107b')](),_0x592a03('0xe2'))[_0x592a03('0x3cc')](_0x8ec3c6[0x0],_0x592a03('0x1040')))[_0x592a03('0xb07')](_0x406717[_0x592a03('0xa1a')]),$('#'[_0x592a03('0x3cc')](this['getTableName'](),'_field_')['concat'](_0x8ec3c6[0x0],_0x592a03('0x1040')))[_0x592a03('0x41b')](),!0x1;_0x191c80=_0x406717[_0x592a03('0x10dd')];}var _0x4c3442='[]';_0x2c7d3d?_0x4c3442=_0x2c7d3d:''!==(_0x4c3442=$('#'[_0x592a03('0x3cc')](_0x8ec3c6[0x0]))[_0x592a03('0x7eb')]())&&null!=_0x4c3442||(_0x4c3442='[]');var _0x39598e=JSON['parse'](_0x4c3442);_0x191c80['id']=''[_0x592a03('0x3cc')](_0x8ec3c6[0x0],'_')[_0x592a03('0x3cc')](this[_0x592a03('0xe2f')](_0x39598e)),_0x39598e[_0x592a03('0x8f8')](_0x191c80),void 0x0!==_0x8ec3c6[0x1][_0x592a03('0x164')]&&null!=_0x8ec3c6[0x1][_0x592a03('0x164')]&&_0x39598e[_0x592a03('0xe4f')](_0x8ec3c6[0x1]['sort-function']),_0x4c3442=JSON[_0x592a03('0x591')](_0x39598e);var _0x401d1f=this[_0x592a03('0x111a')](_0x4c3442,_0x8ec3c6);_0x35d624&&_0x35d624(_0x4c3442),$('#'[_0x592a03('0x3cc')](_0x8ec3c6[0x0],'_div'))[_0x592a03('0xb07')](''),$('#'[_0x592a03('0x3cc')](_0x8ec3c6[0x0],_0x592a03('0xa4e')))[_0x592a03('0xf9a')](_0x401d1f),this[_0x592a03('0x442')](_0x8ec3c6,$('#'[_0x592a03('0x3cc')](_0x8ec3c6[0x0],_0x592a03('0x9e1')))),$('#'[_0x592a03('0x3cc')](_0x8ec3c6[0x0]))[_0x592a03('0x7eb')](_0x4c3442),this[_0x592a03('0x400')](_0x8ec3c6),this['closeDataMessage'](),this[_0x592a03('0xb5d')]('Item\x20Added',_0x592a03('0xc78'));}return!0x0;}},{'key':_0x30b7d4('0x2de'),'value':function(_0x2b4d3a,_0x33caa7){var _0x476e03=_0x30b7d4,_0x403f35='';try{for(var _0x470844=_0x2b4d3a[_0x476e03('0x541')]('\x20'),_0x550ea=0x0,_0x287223=0x0;_0x287223<_0x470844[_0x476e03('0x525')];_0x287223++)(_0x550ea+=_0x470844[_0x287223][_0x476e03('0x525')]+0x1)>_0x33caa7?(_0x403f35+=''[_0x476e03('0x3cc')](_0x470844[_0x287223],_0x476e03('0x37e')),_0x550ea=0x0):_0x403f35+=''[_0x476e03('0x3cc')](_0x470844[_0x287223],'\x20');}catch(_0x5ddf3f){}return _0x403f35;}},{'key':_0x30b7d4('0x442'),'value':function(_0x1c6122,_0x23a888){var _0x1b129b=_0x30b7d4;_0x23a888['data']('field',_0x1c6122),_0x23a888['data']('firstSort',!0x0),_0x23a888[_0x1b129b('0xe54')]({'create':function(){var _0x47ae6e=_0x1b129b;$(this)[_0x47ae6e('0x7f0')]($(this)['height']());},'ui-floating':!0x1,'start':function(_0x54b525,_0x4dd505){var _0x17ce93=_0x1b129b;$('#sortable-ul-selector-id')[_0x17ce93('0xe54')]({'sort':function(_0x2f0687,_0x5e3c45){var _0x950933=_0x17ce93,_0x27f7f9=$(_0x2f0687[_0x950933('0x616')]);if(!/html|body/i[_0x950933('0xaac')](_0x27f7f9[_0x950933('0x19')]()[0x0][_0x950933('0x31b')])){var _0x50d7e2=_0x2f0687[_0x950933('0xaa5')]-_0x27f7f9[_0x950933('0x19')]()[_0x950933('0xaba')]()[_0x950933('0x62d')]-_0x5e3c45[_0x950933('0xa2d')][_0x950933('0x9f3')](!0x0)/0x2;_0x5e3c45[_0x950933('0xa2d')]['css']({'top':''[_0x950933('0x3cc')](_0x50d7e2,'px')});}}});},'revert':!0x0,'stop':function(){var _0x4329a5=_0x1b129b;modJs['orderDataGroup']($(this)[_0x4329a5('0xac8')](_0x4329a5('0x48f')));},'axis':'y','scroll':!0x1,'placeholder':'sortable-placeholder','cursor':_0x1b129b('0x431')});}},{'key':_0x30b7d4('0x400'),'value':function(_0x3445b6,_0x3133c3){var _0xd96eeb=_0x30b7d4,_0x1affcf,_0xf5f058=[],_0x5b653e=$('#'[_0xd96eeb('0x3cc')](_0x3445b6[0x0],_0xd96eeb('0x75a'))[_0xd96eeb('0x3cc')](_0x3445b6[0x0],_0xd96eeb('0xb5a'))),_0x49c6f3=$('#'[_0xd96eeb('0x3cc')](_0x3445b6[0x0]))[_0xd96eeb('0x7eb')]();''!==_0x49c6f3&&null!=_0x49c6f3||(_0x49c6f3='[]');var _0x32c213=JSON[_0xd96eeb('0xf01')](_0x49c6f3);_0x5b653e[_0xd96eeb('0xf3a')](function(){var _0x5e3101=_0xd96eeb;for(var _0x56c611 in(_0x1affcf=$(this)[_0x5e3101('0xba5')]('id'),_0x32c213))if(_0x32c213[_0x56c611]['id']===_0x1affcf){_0xf5f058[_0x5e3101('0x8f8')](_0x32c213[_0x56c611]);break;}}),$('#'[_0xd96eeb('0x3cc')](_0x3445b6[0x0]))[_0xd96eeb('0x7eb')](JSON[_0xd96eeb('0x591')](_0xf5f058)),null!=_0x3133c3&&_0x3133c3(_0xf5f058);}},{'key':'editDataGroup','value':function(_0x23ea2a,_0x46d875){var _0x16b93b=_0x30b7d4,_0x3f7b7a=this[_0x16b93b('0x233')],_0x5b5d3c=this[_0x16b93b('0x104b')],_0x837888=new _0x32c06c[(_0x16b93b('0x544'))](''[_0x16b93b('0x3cc')](this[_0x16b93b('0x107b')](),_0x16b93b('0xe2'))[_0x16b93b('0x3cc')](_0x3f7b7a[0x0]),!0x0,{'ShowPopup':!0x1,'LabelErrorClass':_0x16b93b('0x8d9')});if(_0x837888['checkValues']()){var _0x45cd68=_0x837888[_0x16b93b('0x223')]();if(void 0x0!==_0x3f7b7a[0x1][_0x16b93b('0xe8f')]&&null!=_0x3f7b7a[0x1][_0x16b93b('0xe8f')]){var _0x502114=_0x3f7b7a[0x1][_0x16b93b('0xe8f')]['apply'](this,[_0x45cd68]);if(!_0x502114['valid'])return $('#'[_0x16b93b('0x3cc')](this[_0x16b93b('0x107b')](),_0x16b93b('0xe2'))[_0x16b93b('0x3cc')](_0x3f7b7a[0x0],_0x16b93b('0x1040')))[_0x16b93b('0xb07')](_0x502114[_0x16b93b('0xa1a')]),$('#'['concat'](this[_0x16b93b('0x107b')](),'_field_')[_0x16b93b('0x3cc')](_0x3f7b7a[0x0],_0x16b93b('0x1040')))[_0x16b93b('0x41b')](),!0x1;_0x45cd68=_0x502114[_0x16b93b('0x10dd')];}if(this[_0x16b93b('0x3d8')](_0x45cd68)){var _0xb3a3c7='[]';_0x46d875?_0xb3a3c7=_0x46d875:''!==(_0xb3a3c7=$('#'[_0x16b93b('0x3cc')](_0x3f7b7a[0x0]))[_0x16b93b('0x7eb')]())&&null!=_0xb3a3c7||(_0xb3a3c7='[]');for(var _0xbe1b74=JSON['parse'](_0xb3a3c7),_0x2ba8a2={},_0x259fb4=-0x1,_0x2190a2=[],_0x10e681=0x0;_0x10e681<_0xbe1b74[_0x16b93b('0x525')];_0x10e681++){var _0x134804=_0xbe1b74[_0x10e681];_0x134804['id']===_0x5b5d3c&&(_0x2ba8a2=_0x134804,_0x259fb4=_0x10e681),_0x2190a2[_0x16b93b('0x8f8')](_0x134804);}_0x45cd68['id']=_0x2ba8a2['id'],_0x2190a2[_0x259fb4]=_0x45cd68,void 0x0!==_0x3f7b7a[0x1]['sort-function']&&null!=_0x3f7b7a[0x1][_0x16b93b('0x164')]&&_0x2190a2[_0x16b93b('0xe4f')](_0x3f7b7a[0x1]['sort-function']),_0xb3a3c7=JSON[_0x16b93b('0x591')](_0x2190a2),$('#'[_0x16b93b('0x3cc')](_0x3f7b7a[0x0]))['val'](_0xb3a3c7);var _0x56d2c7=this[_0x16b93b('0x111a')](_0xb3a3c7,_0x3f7b7a);_0x23ea2a&&_0x23ea2a(_0x2190a2),this[_0x16b93b('0x400')](_0x3f7b7a),$('#'[_0x16b93b('0x3cc')](_0x3f7b7a[0x0],_0x16b93b('0xa4e')))[_0x16b93b('0xb07')](''),$('#'[_0x16b93b('0x3cc')](_0x3f7b7a[0x0],_0x16b93b('0xa4e')))[_0x16b93b('0xf9a')](_0x56d2c7),this[_0x16b93b('0x442')](_0x3f7b7a,$('#'['concat'](_0x3f7b7a[0x0],_0x16b93b('0x9e1')))),this[_0x16b93b('0xcab')](),this[_0x16b93b('0xb5d')]('Item\x20Edited','This\x20change\x20will\x20be\x20effective\x20only\x20when\x20you\x20save\x20the\x20form');}}return!0x0;}},{'key':_0x30b7d4('0xc92'),'value':function(_0x56b015,_0x20f5c7,_0x23274a){var _0x59b34a=_0x30b7d4,_0x4c7355,_0x4ab8e4=_0x56b015[_0x59b34a('0x413')](0x0,_0x56b015[_0x59b34a('0x2f4')]('_'));_0x4c7355=_0x20f5c7?decodeURI(_0x20f5c7):$('#'[_0x59b34a('0x3cc')](_0x4ab8e4))[_0x59b34a('0x7eb')]();for(var _0x1d83e1=JSON[_0x59b34a('0xf01')](_0x4c7355),_0x37acfd={},_0x2dd265=0x0;_0x2dd265<_0x1d83e1[_0x59b34a('0x525')];_0x2dd265++){var _0x480d97=_0x1d83e1[_0x2dd265];_0x480d97['id']===_0x56b015&&(_0x37acfd=_0x480d97);}_0x23274a=_0x23274a?JSON['parse'](decodeURI(_0x23274a)):$('#'[_0x59b34a('0x3cc')](_0x4ab8e4))[_0x59b34a('0xac8')]('field'),this[_0x59b34a('0x1062')](_0x23274a,_0x37acfd);}},{'key':'dataGroupGetNextAutoIncrementId','value':function(_0x39bc2e){var _0x3f55c2=_0x30b7d4;for(var _0x52ba41,_0x1c071e=0x1,_0x52f745=0x0;_0x52f745<_0x39bc2e[_0x3f55c2('0x525')];_0x52f745++){var _0x4334b8=_0x39bc2e[_0x52f745];void 0x0!==_0x4334b8['id']&&null!=_0x4334b8['id']||(_0x4334b8['id']=0x1),(_0x52ba41=_0x4334b8['id'][_0x3f55c2('0x413')](_0x4334b8['id']['lastIndexOf']('_')+0x1,_0x4334b8['id'][_0x3f55c2('0x525')]))>=_0x1c071e&&(_0x1c071e=parseInt(_0x52ba41,0xa)+0x1);}return _0x1c071e;}},{'key':'deleteDataGroupItem','value':function(_0x2d7d19,_0x4eb2d7){var _0x11b210=_0x30b7d4,_0x2a627c,_0xe71999=_0x2d7d19[_0x11b210('0x413')](0x0,_0x2d7d19['lastIndexOf']('_'));_0x2a627c=_0x4eb2d7?decodeURI(_0x4eb2d7):$('#'[_0x11b210('0x3cc')](_0xe71999))[_0x11b210('0x7eb')]();for(var _0x276c1f=JSON[_0x11b210('0xf01')](_0x2a627c),_0xc10b4a=[],_0x4fd60b=0x0;_0x4fd60b<_0x276c1f['length'];_0x4fd60b++){var _0x15381f=_0x276c1f[_0x4fd60b];_0x15381f['id']!==_0x2d7d19&&_0xc10b4a[_0x11b210('0x8f8')](_0x15381f);}$('#'[_0x11b210('0x3cc')](_0xe71999))['val'](JSON[_0x11b210('0x591')](_0xc10b4a)),$('#'[_0x11b210('0x3cc')](_0x2d7d19))[_0x11b210('0x109c')](),this[_0x11b210('0xb5d')]('Item\x20Removed',_0x11b210('0x602'));}},{'key':_0x30b7d4('0x1a'),'value':function(_0x4f0284,_0x5f2f44,_0x456854){var _0xe02431=_0x30b7d4,_0x1bd8ae;null!=_0x456854&&void 0x0!==_0x456854||(_0x456854=this[_0xe02431('0xfe3')]()),null!=_0x5f2f44&&void 0x0!==_0x5f2f44&&''!==_0x5f2f44||(_0x5f2f44='#'[_0xe02431('0x3cc')](this[_0xe02431('0x107b')](),_0xe02431('0x5ac')));for(var _0x2cf78e=0x0;_0x2cf78e<_0x456854[_0xe02431('0x525')];_0x2cf78e++)if(_0xe02431('0x65d')===_0x456854[_0x2cf78e][0x1]['type'])_0xe02431('0xac7')!==_0x4f0284[_0x456854[_0x2cf78e][0x0]]&&''!==_0x4f0284[_0x456854[_0x2cf78e][0x0]]&&null!=_0x4f0284[_0x456854[_0x2cf78e][0x0]]&&void 0x0!==_0x4f0284[_0x456854[_0x2cf78e][0x0]]&&$(''[_0xe02431('0x3cc')](_0x5f2f44,'\x20#')[_0xe02431('0x3cc')](_0x456854[_0x2cf78e][0x0],_0xe02431('0x114f')))[_0xe02431('0x649')](_0xe02431('0x11e9'),_0x4f0284[_0x456854[_0x2cf78e][0x0]]);else{if(_0xe02431('0x7f9')===_0x456854[_0x2cf78e][0x1]['type'])null!=_0x4f0284[_0x456854[_0x2cf78e][0x0]]&&void 0x0!==_0x4f0284[_0x456854[_0x2cf78e][0x0]]&&($(''['concat'](_0x5f2f44,'\x20#')[_0xe02431('0x3cc')](_0x456854[_0x2cf78e][0x0],_0xe02431('0x39a')))[_0xe02431('0xc4d')](_0xe02431('0x11e9'),_0x4f0284[_0x456854[_0x2cf78e][0x0]]),$(''[_0xe02431('0x3cc')](_0x5f2f44,'\x20#')[_0xe02431('0x3cc')](_0x456854[_0x2cf78e][0x0]))[_0xe02431('0x7eb')](_0x4f0284[_0x456854[_0x2cf78e][0x0]]));else{if(_0xe02431('0xb6a')===_0x456854[_0x2cf78e][0x1][_0xe02431('0x3f7')]||_0xe02431('0x918')===_0x456854[_0x2cf78e][0x1][_0xe02431('0x3f7')]){if(_0xe02431('0xc2')!==_0x4f0284[_0x456854[_0x2cf78e][0x0]]&&''!==_0x4f0284[_0x456854[_0x2cf78e][0x0]]&&null!=_0x4f0284[_0x456854[_0x2cf78e][0x0]]&&void 0x0!==_0x4f0284[_0x456854[_0x2cf78e][0x0]]){var _0x55712a=_0x4f0284[_0x456854[_0x2cf78e][0x0]][_0xe02431('0x541')]('\x20'),_0x3a4f6=_0x55712a[0x0][_0xe02431('0x541')]('-'),_0x81cf23=_0x55712a[0x1][_0xe02431('0x541')](':');$(''[_0xe02431('0x3cc')](_0x5f2f44,'\x20#')[_0xe02431('0x3cc')](_0x456854[_0x2cf78e][0x0],_0xe02431('0x27d')))[_0xe02431('0xac8')](_0xe02431('0x642'))['setLocalDate'](new Date(_0x3a4f6[0x0],parseInt(_0x3a4f6[0x1],0xa)-0x1,_0x3a4f6[0x2],_0x81cf23[0x0],_0x81cf23[0x1],_0x81cf23[0x2]));}}else{if(_0xe02431('0xf90')===_0x456854[_0x2cf78e][0x1][_0xe02431('0x3f7')])$(''[_0xe02431('0x3cc')](_0x5f2f44,'\x20#')[_0xe02431('0x3cc')](_0x456854[_0x2cf78e][0x0]))['html'](_0x4f0284[_0x456854[_0x2cf78e][0x0]]);else{if('placeholder'===_0x456854[_0x2cf78e][0x1][_0xe02431('0x3f7')]){if(void 0x0!==_0x456854[_0x2cf78e][0x1]['remote-source']&&null!=_0x456854[_0x2cf78e][0x1][_0xe02431('0x95b')]){var _0x18f1da=this[_0xe02431('0x5bd')](_0x456854[_0x2cf78e]);_0x1bd8ae=this[_0xe02431('0xa3a')][_0x18f1da][_0x4f0284[_0x456854[_0x2cf78e][0x0]]];}else _0x1bd8ae=_0x4f0284[_0x456854[_0x2cf78e][0x0]];if(void 0x0===_0x1bd8ae||null==_0x1bd8ae)_0x1bd8ae='';else try{_0x1bd8ae=_0x1bd8ae[_0xe02431('0x166')](/(?:\r\n|\r|\n)/g,_0xe02431('0x10fb'));}catch(_0x313d2e){}if(void 0x0!==_0x456854[_0x2cf78e][0x1][_0xe02431('0xf29')]&&_0x456854[_0x2cf78e][0x1][_0xe02431('0xf29')]&&$[_0xe02431('0xabd')](_0x456854[_0x2cf78e][0x1][_0xe02431('0xf29')]))try{_0x1bd8ae=_0x456854[_0x2cf78e][0x1][_0xe02431('0xf29')](_0x1bd8ae);}catch(_0x39ead4){}$(''['concat'](_0x5f2f44,'\x20#')[_0xe02431('0x3cc')](_0x456854[_0x2cf78e][0x0]))[_0xe02431('0xb07')](_0x1bd8ae);}else{if(_0xe02431('0xd4e')===_0x456854[_0x2cf78e][0x1]['type'])null!=_0x4f0284[_0x456854[_0x2cf78e][0x0]]&&void 0x0!==_0x4f0284[_0x456854[_0x2cf78e][0x0]]&&''!==_0x4f0284[_0x456854[_0x2cf78e][0x0]]&&($(''[_0xe02431('0x3cc')](_0x5f2f44,'\x20#')[_0xe02431('0x3cc')](_0x456854[_0x2cf78e][0x0]))[_0xe02431('0xb07')](_0x4f0284[_0x456854[_0x2cf78e][0x0]]),$(''[_0xe02431('0x3cc')](_0x5f2f44,'\x20#')[_0xe02431('0x3cc')](_0x456854[_0x2cf78e][0x0]))[_0xe02431('0xba5')](_0xe02431('0x7eb'),_0x4f0284[_0x456854[_0x2cf78e][0x0]]),$(''[_0xe02431('0x3cc')](_0x5f2f44,'\x20#')['concat'](_0x456854[_0x2cf78e][0x0]))[_0xe02431('0x41b')](),$(''[_0xe02431('0x3cc')](_0x5f2f44,'\x20#')[_0xe02431('0x3cc')](_0x456854[_0x2cf78e][0x0],_0xe02431('0x103b')))[_0xe02431('0x41b')](),$(''[_0xe02431('0x3cc')](_0x5f2f44,'\x20#')[_0xe02431('0x3cc')](_0x456854[_0x2cf78e][0x0],_0xe02431('0x50f')))['show']()),!0x0===_0x456854[_0x2cf78e][0x1]['readonly']&&$(''[_0xe02431('0x3cc')](_0x5f2f44,'\x20#')[_0xe02431('0x3cc')](_0x456854[_0x2cf78e][0x0],_0xe02431('0x42c')))[_0xe02431('0x109c')]();else{if(_0xe02431('0x8ff')===_0x456854[_0x2cf78e][0x1][_0xe02431('0x3f7')])void 0x0!==_0x4f0284[_0x456854[_0x2cf78e][0x0]]&&null!=_0x4f0284[_0x456854[_0x2cf78e][0x0]]&&''!==_0x4f0284[_0x456854[_0x2cf78e][0x0]]||(_0x4f0284[_0x456854[_0x2cf78e][0x0]]=_0xe02431('0xde9')),$(''[_0xe02431('0x3cc')](_0x5f2f44,'\x20#')[_0xe02431('0x3cc')](_0x456854[_0x2cf78e][0x0]))[_0xe02431('0x7eb')](_0x4f0284[_0x456854[_0x2cf78e][0x0]]);else{if(_0xe02431('0x1137')===_0x456854[_0x2cf78e][0x1][_0xe02431('0x3f7')])void 0x0!==_0x4f0284[_0x456854[_0x2cf78e][0x0]]&&null!=_0x4f0284[_0x456854[_0x2cf78e][0x0]]&&''!==_0x4f0284[_0x456854[_0x2cf78e][0x0]]||(_0x4f0284[_0x456854[_0x2cf78e][0x0]]=_0xe02431('0xde9')),$(''[_0xe02431('0x3cc')](_0x5f2f44,'\x20#')[_0xe02431('0x3cc')](_0x456854[_0x2cf78e][0x0]))[_0xe02431('0x1137')](_0xe02431('0x7eb'),_0x4f0284[_0x456854[_0x2cf78e][0x0]]);else{if(_0xe02431('0x256')===_0x456854[_0x2cf78e][0x1][_0xe02431('0x3f7')]){void 0x0!==_0x4f0284[_0x456854[_0x2cf78e][0x0]]&&null!=_0x4f0284[_0x456854[_0x2cf78e][0x0]]&&''!==_0x4f0284[_0x456854[_0x2cf78e][0x0]]||(_0x4f0284[_0x456854[_0x2cf78e][0x0]]=_0xe02431('0xde9'));var _0x3a378d=[];if(void 0x0!==_0x4f0284[_0x456854[_0x2cf78e][0x0]]&&null!=_0x4f0284[_0x456854[_0x2cf78e][0x0]]&&''!==_0x4f0284[_0x456854[_0x2cf78e][0x0]])try{_0x3a378d=JSON[_0xe02431('0xf01')](_0x4f0284[_0x456854[_0x2cf78e][0x0]]);}catch(_0x3602a0){}$(''[_0xe02431('0x3cc')](_0x5f2f44,'\x20#')[_0xe02431('0x3cc')](_0x456854[_0x2cf78e][0x0]))[_0xe02431('0x1137')](_0xe02431('0x7eb'),_0x3a378d);var _0x5c5c92=$(''['concat'](_0x5f2f44,'\x20#')[_0xe02431('0x3cc')](_0x456854[_0x2cf78e][0x0]))[_0xe02431('0x6f3')](_0xe02431('0xe73'))[_0xe02431('0x7f0')]();$(''[_0xe02431('0x3cc')](_0x5f2f44,'\x20#')[_0xe02431('0x3cc')](_0x456854[_0x2cf78e][0x0]))[_0xe02431('0x6f3')](_0xe02431('0x352'))[_0xe02431('0xb7')](_0xe02431('0x11d1'),''[_0xe02431('0x3cc')](_0x5c5c92,'px')),$(''[_0xe02431('0x3cc')](_0x5f2f44,'\x20#')[_0xe02431('0x3cc')](_0x456854[_0x2cf78e][0x0]))[_0xe02431('0xb7')](_0xe02431('0x11d1'),''['concat'](_0x5c5c92,'px'));}else{if(_0xe02431('0x49')===_0x456854[_0x2cf78e][0x1]['type'])try{var _0x589f65=this['dataGroupToHtml'](_0x4f0284[_0x456854[_0x2cf78e][0x0]],_0x456854[_0x2cf78e]);$(''[_0xe02431('0x3cc')](_0x5f2f44,'\x20#')['concat'](_0x456854[_0x2cf78e][0x0]))[_0xe02431('0x7eb')](_0x4f0284[_0x456854[_0x2cf78e][0x0]]),$(''['concat'](_0x5f2f44,'\x20#')[_0xe02431('0x3cc')](_0x456854[_0x2cf78e][0x0],_0xe02431('0xa4e')))[_0xe02431('0xb07')](''),$(''['concat'](_0x5f2f44,'\x20#')[_0xe02431('0x3cc')](_0x456854[_0x2cf78e][0x0],_0xe02431('0xa4e')))['append'](_0x589f65),this[_0xe02431('0x442')](_0x456854[_0x2cf78e],$(''[_0xe02431('0x3cc')](_0x5f2f44,'\x20#')[_0xe02431('0x3cc')](_0x456854[_0x2cf78e][0x0],_0xe02431('0x9e1'))));}catch(_0x31e20e){}else{if(_0xe02431('0xecc')===_0x456854[_0x2cf78e][0x1][_0xe02431('0x3f7')])''===_0x4f0284[_0x456854[_0x2cf78e][0x0]]&&void 0x0===_0x4f0284[_0x456854[_0x2cf78e][0x0]]&&null==_0x4f0284[_0x456854[_0x2cf78e][0x0]]||$(''[_0xe02431('0x3cc')](_0x5f2f44,'\x20#')['concat'](_0x456854[_0x2cf78e][0x0]))[_0xe02431('0xac8')](_0xe02431('0xcb6'))['fromDataURL'](_0x4f0284[_0x456854[_0x2cf78e][0x0]]);else{if('simplemde'===_0x456854[_0x2cf78e][0x1]['type'])$(''[_0xe02431('0x3cc')](_0x5f2f44,'\x20#')[_0xe02431('0x3cc')](_0x456854[_0x2cf78e][0x0]))[_0xe02431('0xac8')]('simplemde')[_0xe02431('0x832')](_0x4f0284[_0x456854[_0x2cf78e][0x0]]);else{if(_0xe02431('0xb5c')===_0x456854[_0x2cf78e][0x1]['type']){var _0x1e1c33=$(''[_0xe02431('0x3cc')](_0x5f2f44,'\x20#')[_0xe02431('0x3cc')](_0x456854[_0x2cf78e][0x0]))['data']('codemirror');_0x1e1c33&&_0x1e1c33['getDoc']()[_0xe02431('0x11e9')](_0x4f0284[_0x456854[_0x2cf78e][0x0]]);}else $(''[_0xe02431('0x3cc')](_0x5f2f44,'\x20#')[_0xe02431('0x3cc')](_0x456854[_0x2cf78e][0x0]))[_0xe02431('0x7eb')](_0x4f0284[_0x456854[_0x2cf78e][0x0]]);}}}}}}}}}}}}}},{'key':_0x30b7d4('0x584'),'value':function(){var _0x24a69d=_0x30b7d4;$('#'[_0x24a69d('0x3cc')](this[_0x24a69d('0x107b')](),_0x24a69d('0x5ac')))[_0x24a69d('0x9c2')](),$('#'[_0x24a69d('0x3cc')](this[_0x24a69d('0x107b')]()))[_0x24a69d('0x41b')]();}},{'key':'renderFormField','value':function(_0x22ce78){var _0x4a69e0=_0x30b7d4,_0x2cf0c8=0x0;if(void 0x0===this[_0x4a69e0('0xb7e')][_0x22ce78[0x1][_0x4a69e0('0x3f7')]]||null==this[_0x4a69e0('0xb7e')][_0x22ce78[0x1][_0x4a69e0('0x3f7')]])return'';var _0x439be7=this['fieldTemplates'][_0x22ce78[0x1][_0x4a69e0('0x3f7')]];if(_0x22ce78[0x1]['label']=this['gt'](_0x22ce78[0x1][_0x4a69e0('0xf90')]),_0x4a69e0('0x1c1')!==_0x22ce78[0x1]['validation']&&'emailOrEmpty'!==_0x22ce78[0x1][_0x4a69e0('0x94d')]&&'numberOrEmpty'!==_0x22ce78[0x1][_0x4a69e0('0x94d')]&&_0x4a69e0('0x7c2')!==_0x22ce78[0x1][_0x4a69e0('0x3f7')]&&_0x22ce78[0x1][_0x4a69e0('0xf90')][_0x4a69e0('0x4dc')]('*')<0x0&&([_0x4a69e0('0x8ff'),_0x4a69e0('0x1137')]['indexOf'](_0x22ce78[0x1][_0x4a69e0('0x3f7')])>=0x0&&!0x0===_0x22ce78[0x1][_0x4a69e0('0x7a4')]||(_0x22ce78[0x1][_0x4a69e0('0xf90')]=''[_0x4a69e0('0x3cc')](_0x22ce78[0x1][_0x4a69e0('0xf90')],'*'))),_0x4a69e0('0x8ff')===_0x22ce78[0x1]['type']||'select2'===_0x22ce78[0x1][_0x4a69e0('0x3f7')]||_0x4a69e0('0x256')===_0x22ce78[0x1][_0x4a69e0('0x3f7')]){if(_0x439be7=(_0x439be7=_0x439be7[_0x4a69e0('0x166')](/_id_/g,_0x22ce78[0x0]))[_0x4a69e0('0x166')](/_label_/g,_0x22ce78[0x1][_0x4a69e0('0xf90')]),void 0x0!==_0x22ce78[0x1][_0x4a69e0('0x4fe')]&&null!=_0x22ce78[0x1][_0x4a69e0('0x4fe')])_0x439be7=_0x439be7[_0x4a69e0('0x166')](_0x4a69e0('0xf21'),this[_0x4a69e0('0xb26')](_0x22ce78[0x1][_0x4a69e0('0x4fe')],_0x22ce78));else{if(void 0x0!==_0x22ce78[0x1][_0x4a69e0('0x95b')]&&null!=_0x22ce78[0x1]['remote-source']){var _0x3658c9=this['getRemoteSourceKey'](_0x22ce78);_0x439be7=_0x439be7['replace'](_0x4a69e0('0xf21'),this[_0x4a69e0('0x7e0')](this[_0x4a69e0('0xa3a')][_0x3658c9],_0x22ce78));}}}else{if(_0x4a69e0('0x7f9')===_0x22ce78[0x1][_0x4a69e0('0x3f7')])_0x439be7=(_0x439be7=_0x439be7[_0x4a69e0('0x166')](/_id_/g,_0x22ce78[0x0]))[_0x4a69e0('0x166')](/_label_/g,_0x22ce78[0x1][_0x4a69e0('0xf90')]);else{if(_0x4a69e0('0x65d')===_0x22ce78[0x1][_0x4a69e0('0x3f7')])_0x439be7=(_0x439be7=_0x439be7['replace'](/_id_/g,_0x22ce78[0x0]))[_0x4a69e0('0x166')](/_label_/g,_0x22ce78[0x1][_0x4a69e0('0xf90')]);else{if(_0x4a69e0('0xb6a')===_0x22ce78[0x1][_0x4a69e0('0x3f7')])_0x439be7=(_0x439be7=_0x439be7[_0x4a69e0('0x166')](/_id_/g,_0x22ce78[0x0]))[_0x4a69e0('0x166')](/_label_/g,_0x22ce78[0x1]['label']);else{if(_0x4a69e0('0x918')===_0x22ce78[0x1][_0x4a69e0('0x3f7')])_0x439be7=(_0x439be7=_0x439be7[_0x4a69e0('0x166')](/_id_/g,_0x22ce78[0x0]))[_0x4a69e0('0x166')](/_label_/g,_0x22ce78[0x1][_0x4a69e0('0xf90')]);else{if(_0x4a69e0('0xd4e')===_0x22ce78[0x1][_0x4a69e0('0x3f7')]){_0x439be7=(_0x439be7=_0x439be7['replace'](/_id_/g,_0x22ce78[0x0]))['replace'](/_label_/g,_0x22ce78[0x1]['label']);var _0x22df31=this['getCurrentProfile']();_0x2cf0c8=null!=_0x22df31&&void 0x0!==_0x22df31?_0x22df31['id']:-0x1*this[_0x4a69e0('0x853')]()['id'],_0x439be7=(_0x439be7=_0x439be7[_0x4a69e0('0x166')](/_userId_/g,_0x2cf0c8))[_0x4a69e0('0x166')](/_group_/g,this[_0x4a69e0('0xb7b')]),_0x439be7=(_0x439be7=void 0x0!==_0x22ce78[0x1][_0x4a69e0('0x756')]&&null!=_0x22ce78[0x1]['filetypes']?_0x439be7[_0x4a69e0('0x166')](/_filetypes_/g,_0x22ce78[0x1][_0x4a69e0('0x756')]):_0x439be7[_0x4a69e0('0x166')](/_filetypes_/g,'all'))['replace'](/_rand_/g,this[_0x4a69e0('0xcc7')](0xe));}else'datagroup'===_0x22ce78[0x1][_0x4a69e0('0x3f7')]||_0x4a69e0('0xecc')===_0x22ce78[0x1][_0x4a69e0('0x3f7')]||_0x4a69e0('0x627')===_0x22ce78[0x1][_0x4a69e0('0x3f7')]||_0x22ce78[0x1]['type'],_0x439be7=(_0x439be7=_0x439be7[_0x4a69e0('0x166')](/_id_/g,_0x22ce78[0x0]))[_0x4a69e0('0x166')](/_label_/g,_0x22ce78[0x1][_0x4a69e0('0xf90')]);}}}}}return _0x439be7=void 0x0!==_0x22ce78[0x1][_0x4a69e0('0x94d')]&&null!=_0x22ce78[0x1][_0x4a69e0('0x94d')]&&''!==_0x22ce78[0x1]['validation']?_0x439be7[_0x4a69e0('0x166')](/_validation_/g,_0x4a69e0('0x243')[_0x4a69e0('0x3cc')](_0x22ce78[0x1][_0x4a69e0('0x94d')],'\x22')):_0x439be7[_0x4a69e0('0x166')](/_validation_/g,''),_0x439be7=void 0x0!==_0x22ce78[0x1]['help']&&null!==_0x22ce78[0x1]['help']?(_0x439be7=_0x439be7['replace'](/_helpline_/g,_0x22ce78[0x1][_0x4a69e0('0xd54')]))[_0x4a69e0('0x166')](/_hidden_class_help_/g,''):(_0x439be7=_0x439be7[_0x4a69e0('0x166')](/_helpline_/g,''))[_0x4a69e0('0x166')](/_hidden_class_help_/g,_0x4a69e0('0x9c2')),_0x439be7=void 0x0!==_0x22ce78[0x1][_0x4a69e0('0x7c2')]&&null!==_0x22ce78[0x1][_0x4a69e0('0x7c2')]?_0x439be7['replace'](/_placeholder_/g,'placeholder=\x22'[_0x4a69e0('0x3cc')](_0x22ce78[0x1][_0x4a69e0('0x7c2')],'\x22')):_0x439be7[_0x4a69e0('0x166')](/_placeholder_/g,''),_0x439be7=void 0x0!==_0x22ce78[0x1]['mask']&&null!==_0x22ce78[0x1][_0x4a69e0('0xf2a')]?_0x439be7['replace'](/_mask_/g,'mask=\x22'[_0x4a69e0('0x3cc')](_0x22ce78[0x1]['mask'],'\x22')):_0x439be7[_0x4a69e0('0x166')](/_mask_/g,'');}},{'key':_0x30b7d4('0xb26'),'value':function(_0x51b07e,_0x4e2720){var _0x567677=_0x30b7d4,_0x404f5c='';null!=_0x4e2720&&void 0x0!==_0x4e2720&&!0x0===_0x4e2720[0x1][_0x567677('0x7a4')]&&(void 0x0!==_0x4e2720[0x1]['null-label']&&null!=_0x4e2720[0x1][_0x567677('0x3a8')]?_0x404f5c+=_0x567677('0x420')[_0x567677('0x3cc')](this['gt'](_0x4e2720[0x1][_0x567677('0x3a8')]),_0x567677('0x13a')):_0x404f5c+=_0x567677('0x802'));var _0xa95a3a=[];for(var _0x217343 in _0x51b07e)_0xa95a3a['push'](_0x51b07e[_0x217343]);!0x0===_0x4e2720[0x1][_0x567677('0xe4f')]&&_0xa95a3a[_0x567677('0xe4f')](function(_0x5a4bb1,_0x27cac0){return(_0x5a4bb1=_0x5a4bb1[0x1])<(_0x27cac0=_0x27cac0[0x1])?-0x1:_0x5a4bb1>_0x27cac0?0x1:0x0;});for(var _0x16271f=0x0;_0x16271f<_0xa95a3a[_0x567677('0x525')];_0x16271f++){var _0x4c1afd=_0xa95a3a[_0x16271f][0x0],_0x1e193b=_0xa95a3a[_0x16271f][0x1],_0x40ca58=_0x567677('0xbcb');_0x404f5c+=_0x40ca58=(_0x40ca58=_0x40ca58['replace'](_0x567677('0xb8f'),_0x4c1afd))[_0x567677('0x166')](_0x567677('0x2b'),this['gt'](_0x1e193b));}return _0x404f5c;}},{'key':_0x30b7d4('0x7e0'),'value':function(_0x2bfa9c,_0x5aee6d){var _0x244965=_0x30b7d4,_0x493aca='';!0x0===_0x5aee6d[0x1][_0x244965('0x7a4')]&&(void 0x0!==_0x5aee6d[0x1][_0x244965('0x3a8')]&&null!=_0x5aee6d[0x1][_0x244965('0x3a8')]?_0x493aca+=_0x244965('0x420')['concat'](this['gt'](_0x5aee6d[0x1][_0x244965('0x3a8')]),_0x244965('0x13a')):_0x493aca+=_0x244965('0x802'));var _0x5ceb58=[];for(var _0x4798c1 in _0x2bfa9c)_0x5ceb58[_0x244965('0x8f8')]([_0x4798c1,_0x2bfa9c[_0x4798c1]]);_0x244965('0xa04')===_0x5aee6d[0x1][_0x244965('0xe4f')]&&_0x5ceb58[_0x244965('0xe4f')](function(_0x3cd04b,_0x1c4037){return(_0x3cd04b=_0x3cd04b[0x1])<(_0x1c4037=_0x1c4037[0x1])?-0x1:_0x3cd04b>_0x1c4037?0x1:0x0;});for(var _0x4808fd=0x0;_0x4808fd<_0x5ceb58[_0x244965('0x525')];_0x4808fd++){var _0xc2c674=_0x5ceb58[_0x4808fd][0x0],_0x15a255=_0x5ceb58[_0x4808fd][0x1],_0x43e396=_0x244965('0xbcb');_0x493aca+=_0x43e396=(_0x43e396=_0x43e396[_0x244965('0x166')](_0x244965('0xb8f'),_0xc2c674))[_0x244965('0x166')](_0x244965('0x2b'),this['gt'](_0x15a255));}return _0x493aca;}},{'key':_0x30b7d4('0x111e'),'value':function(_0x555421){var _0x24f74c=_0x30b7d4;this[_0x24f74c('0xd8c')]=_0x555421;}},{'key':'setEmailTemplates','value':function(_0x8c9c09){var _0x5a2b00=_0x30b7d4;this[_0x5a2b00('0xb9')]=_0x8c9c09;}},{'key':_0x30b7d4('0x2e5'),'value':function(_0x8d5138){var _0x5127e2=_0x30b7d4;return this[_0x5127e2('0xd8c')][_0x8d5138];}},{'key':'setFieldTemplates','value':function(_0x589a0c){this['fieldTemplates']=_0x589a0c;}},{'key':_0x30b7d4('0x3f5'),'value':function(_0x2571d8){return'';}},{'key':'clearDeleteParams','value':function(){this['deleteParams']={};}},{'key':_0x30b7d4('0xb00'),'value':function(){return this['showAddNew'];}},{'key':_0x30b7d4('0xe5b'),'value':function(){return'Add\x20New';}},{'key':_0x30b7d4('0xa9'),'value':function(_0x3dbe03){var _0x5ed0f6=_0x30b7d4;this[_0x5ed0f6('0x224')]=_0x3dbe03;}},{'key':_0x30b7d4('0x4cc'),'value':function(_0x184c8f){var _0x3f1afb=_0x30b7d4;this[_0x3f1afb('0xe70')]=_0x184c8f;}},{'key':'setShowEdit','value':function(_0xafea){var _0x1f82ed=_0x30b7d4;this[_0x1f82ed('0x4b1')]=_0xafea;}},{'key':_0x30b7d4('0xf8c'),'value':function(_0x4dc21b){var _0x99bb04=_0x30b7d4;this[_0x99bb04('0xfd1')]=_0x4dc21b;}},{'key':_0x30b7d4('0x50b'),'value':function(_0x4f0031){var _0xa1a8f5=_0x30b7d4;this[_0xa1a8f5('0x10fd')]=_0x4f0031;}},{'key':'getCustomTableParams','value':function(){return{};}},{'key':_0x30b7d4('0xa4'),'value':function(_0x3b4ce8){var _0x1b8f2b=_0x30b7d4;return modJs['getActionButtonsHtml'](_0x3b4ce8[_0x1b8f2b('0x18b')][0x0],_0x3b4ce8[_0x1b8f2b('0x18b')]);}},{'key':_0x30b7d4('0xd6b'),'value':function(_0x138a8a,_0x4250a6){var _0x3e1d8f=_0x30b7d4,_0x574847='_edit__delete__clone_';return _0x574847=this[_0x3e1d8f('0x224')]?_0x574847[_0x3e1d8f('0x166')](_0x3e1d8f('0x26'),''):_0x574847[_0x3e1d8f('0x166')](_0x3e1d8f('0x26'),''),_0x574847=this[_0x3e1d8f('0xe70')]?_0x574847[_0x3e1d8f('0x166')](_0x3e1d8f('0xac1'),_0x3e1d8f('0xd70')):_0x574847[_0x3e1d8f('0x166')](_0x3e1d8f('0xac1'),''),_0x574847=(_0x574847=(_0x574847=this['showEdit']?_0x574847[_0x3e1d8f('0x166')](_0x3e1d8f('0x260'),''):_0x574847['replace'](_0x3e1d8f('0x260'),''))[_0x3e1d8f('0x166')](/_id_/g,_0x138a8a))[_0x3e1d8f('0x166')](/_BASE_/g,this[_0x3e1d8f('0xed3')]);}},{'key':_0x30b7d4('0xcc7'),'value':function(_0x135875){var _0x23e292=_0x30b7d4;for(var _0x199cd8=new Date(),_0x32bd17=_0x23e292('0xbb1'),_0x246f14='',_0x400669=_0x135875;_0x400669>0x0;--_0x400669)_0x246f14+=_0x32bd17[Math[_0x23e292('0xbbc')](Math[_0x23e292('0xb63')]()*(_0x32bd17[_0x23e292('0x525')]-0x1))];return _0x246f14+_0x199cd8[_0x23e292('0xa5d')]();}},{'key':_0x30b7d4('0x333'),'value':function(_0x5e5963,_0x1be293){var _0x22fa8c=_0x30b7d4,_0x106f54=document[_0x22fa8c('0xc14')](_0x5e5963),_0x5c28d8='';return _0x106f54[_0x22fa8c('0x832')]['lastIndexOf']('.')>0x0&&(_0x5c28d8=_0x106f54['value']['substring'](_0x106f54['value'][_0x22fa8c('0x2f4')]('.')+0x1,_0x106f54['value'][_0x22fa8c('0x525')])),_0x5c28d8=_0x5c28d8['toLowerCase'](),!(_0x1be293[_0x22fa8c('0x541')](',')[_0x22fa8c('0x4dc')](_0x5c28d8)<0x0&&(_0x106f54[_0x22fa8c('0x832')]='',this['showMessage'](_0x22fa8c('0x609'),_0x22fa8c('0x4c0')),this['clearFileElement'](_0x5e5963),0x1));}},{'key':_0x30b7d4('0xfd7'),'value':function(_0x4c3f81){var _0x34880e=_0x30b7d4,_0x1129a8=$('#'[_0x34880e('0x3cc')](_0x4c3f81));_0x1129a8['replaceWith'](_0x1129a8=_0x1129a8[_0x34880e('0x7eb')]('')['clone'](!0x0));}},{'key':_0x30b7d4('0x117f'),'value':function(_0x253c07){var _0x2eb315=_0x30b7d4;return'1'===this[_0x2eb315('0xb9e')]&&(_0x253c07=window[_0x2eb315('0xc3e')](_0x253c07)),_0x253c07;}},{'key':'getClientDate','value':function(_0xcdf93d){var _0x264109=this['getClientGMTOffset']();return _0xcdf93d['addMinutes'](0x3c*_0x264109);}},{'key':'getClientGMTOffset','value':function(){var _0x502e20=_0x30b7d4,_0x41d355=new Date(),_0x2a3bc9=new Date(_0x41d355['getFullYear'](),0x0,0x1,0x0,0x0,0x0,0x0),_0xee0e91=_0x2a3bc9[_0x502e20('0xc5')]();return(_0x2a3bc9-new Date(_0xee0e91['substring'](0x0,_0xee0e91['lastIndexOf']('\x20')-0x1)))/0x36ee80;}},{'key':_0x30b7d4('0x115d'),'value':function(){return null;}},{'key':_0x30b7d4('0x304'),'value':function(){var _0x55e6e4=_0x30b7d4;$(_0x55e6e4('0xd9f'))['show']();}},{'key':'hideLoader','value':function(){var _0x10dff8=_0x30b7d4;$(_0x10dff8('0xd9f'))[_0x10dff8('0x9c2')]();}},{'key':_0x30b7d4('0x5e0'),'value':function(_0x1334b2){var _0x53da05=_0x30b7d4,_0x216a47='';for(var _0x17a605 in _0x1334b2)_0x216a47+=_0x53da05('0x531')['replace']('__val__',_0x17a605)[_0x53da05('0x166')](_0x53da05('0xf32'),_0x1334b2[_0x17a605]);return _0x216a47;}},{'key':_0x30b7d4('0x519'),'value':function(_0x476ecf,_0xbb9a29){var _0x253b9a=_0x30b7d4;return void 0x0!==modulesInstalled&&null!==modulesInstalled&&0x1===modulesInstalled[''['concat'](_0x476ecf,'_')[_0x253b9a('0x3cc')](_0xbb9a29)];}},{'key':'setCustomFields','value':function(_0x561f2e){var _0x212504=_0x30b7d4;for(var _0x1f20f2,_0x5e593a,_0xe759f9=0x0;_0xe759f9<_0x561f2e[_0x212504('0x525')];_0xe759f9++)if(_0x212504('0x987')!==(_0x1f20f2=_0x561f2e[_0xe759f9])['display']&&''!==_0x1f20f2[_0x212504('0xac8')]&&void 0x0!==_0x1f20f2[_0x212504('0xac8')])try{if(void 0x0===(_0x5e593a=JSON[_0x212504('0xf01')](_0x1f20f2['data']))||null==_0x5e593a)continue;if(0x2!==_0x5e593a[_0x212504('0x525')])continue;if(void 0x0===_0x5e593a[0x1][_0x212504('0x3f7')]||null==_0x5e593a[0x1][_0x212504('0x3f7')])continue;this[_0x212504('0x1124')]['push'](_0x5e593a);}catch(_0x413543){}}},{'key':_0x30b7d4('0x96c'),'value':function(_0x557666){var _0x562d3a=_0x30b7d4;for(var _0x60260e=0x0;_0x60260e0x0?_0x2b7b2a+=_0x40dc81['substring'](_0x40dc81[_0x2012ae('0x525')]-0x1,0x1):_0x2b7b2a+=_0x47387d['substring'](0x0,0x1),_0x2b7b2a+=''['concat'](_0x40dc81)['concat'](_0x47387d)[_0x2012ae('0x541')]('')[_0x2012ae('0x87a')](function(_0x57afc6,_0x470933){return parseInt(_0x470933['charCodeAt'](0x0),0xa)+_0x57afc6;},0x0),_0x2012ae('0x6b0')[_0x2012ae('0x3cc')](_0x2b7b2a,'.svg');}},{'key':_0x30b7d4('0x5f9'),'value':function(_0x131639,_0x42439d){var _0x11ba38=_0x30b7d4,_0x5ea808=''['concat'](this[_0x11ba38('0x32a')],'service.php?a=pdf&h=')[_0x11ba38('0x3cc')](_0x131639,_0x11ba38('0x5c0'))[_0x11ba38('0x3cc')](_0x42439d);window[_0x11ba38('0xcbd')](_0x5ea808,_0x11ba38('0x4da'));}}])&&_0x3c4fd1(_0x39281f[_0x30b7d4('0x98c')],_0x5ae454),_0x48d07b&&_0x3c4fd1(_0x39281f,_0x48d07b),_0x5b8cbb;}();_0x54f9db[_0x4db838('0x544')]=_0x1305ab;},{'./FormValidation':0x3d}],0x44:[function(_0x50be37,_0x277d8a,_0x24a67e){var _0x107d0c=_0x404097;'use strict';Object['defineProperty'](_0x24a67e,_0x107d0c('0x114c'),{'value':!0x0}),_0x24a67e['default']=void 0x0,(_0x47d633(_0x50be37(_0x107d0c('0x1041'))),_0x50be37(_0x107d0c('0xdb9')));function _0x47d633(_0x2f239d){var _0x214387=_0x107d0c;return _0x2f239d&&_0x2f239d[_0x214387('0x114c')]?_0x2f239d:{'default':_0x2f239d};}function _0x45794d(_0x14c8c6){var _0x5c9e41=_0x107d0c;return(_0x45794d='function'==typeof Symbol&&_0x5c9e41('0x245')==typeof Symbol[_0x5c9e41('0x78e')]?function(_0x3fa2da){return typeof _0x3fa2da;}:function(_0x271719){var _0x1e17e0=_0x5c9e41;return _0x271719&&'function'==typeof Symbol&&_0x271719[_0x1e17e0('0x3c6')]===Symbol&&_0x271719!==Symbol[_0x1e17e0('0x98c')]?'symbol':typeof _0x271719;})(_0x14c8c6);}function _0x18f1cc(_0x1052c2,_0x5924e8){var _0x1e4b69=_0x107d0c;for(var _0x51cef9=0x0;_0x51cef9<_0x5924e8['length'];_0x51cef9++){var _0xc5b13f=_0x5924e8[_0x51cef9];_0xc5b13f[_0x1e4b69('0x156')]=_0xc5b13f['enumerable']||!0x1,_0xc5b13f[_0x1e4b69('0xbb2')]=!0x0,_0x1e4b69('0x832')in _0xc5b13f&&(_0xc5b13f[_0x1e4b69('0x4db')]=!0x0),Object[_0x1e4b69('0xa95')](_0x1052c2,_0xc5b13f[_0x1e4b69('0x1192')],_0xc5b13f);}}function _0x17bede(_0x2d9160,_0x15cdf6){var _0x489bc9=_0x107d0c;return!_0x15cdf6||_0x489bc9('0x21e')!==_0x45794d(_0x15cdf6)&&_0x489bc9('0xae9')!=typeof _0x15cdf6?function(_0x421a92){var _0x104f10=_0x489bc9;if(void 0x0===_0x421a92)throw new ReferenceError(_0x104f10('0x2e9'));return _0x421a92;}(_0x2d9160):_0x15cdf6;}function _0x2a85a6(){var _0x709f69=_0x107d0c;if(_0x709f69('0x56')==typeof Reflect||!Reflect['construct'])return!0x1;if(Reflect[_0x709f69('0x6ea')][_0x709f69('0x16e')])return!0x1;if(_0x709f69('0xae9')==typeof Proxy)return!0x0;try{return Date[_0x709f69('0x98c')][_0x709f69('0x537')][_0x709f69('0x4b0')](Reflect[_0x709f69('0x6ea')](Date,[],function(){})),!0x0;}catch(_0xe4c35f){return!0x1;}}function _0x1d587b(_0xa08848){var _0x4436ff=_0x107d0c;return(_0x1d587b=Object[_0x4436ff('0x6c2')]?Object[_0x4436ff('0x10c0')]:function(_0x476d17){return _0x476d17['__proto__']||Object['getPrototypeOf'](_0x476d17);})(_0xa08848);}function _0x49cd45(_0x4a0a87,_0xee6bf6){var _0x2d272a=_0x107d0c;return(_0x49cd45=Object[_0x2d272a('0x6c2')]||function(_0x30d776,_0x45b8b7){return _0x30d776['__proto__']=_0x45b8b7,_0x30d776;})(_0x4a0a87,_0xee6bf6);}var _0x528159=function(_0x3aad0b){var _0x5d8491=_0x107d0c;!function(_0x4d573b,_0x27cecb){var _0x4330e5=_0x3ab6;if(_0x4330e5('0xae9')!=typeof _0x27cecb&&null!==_0x27cecb)throw new TypeError(_0x4330e5('0x409'));_0x4d573b[_0x4330e5('0x98c')]=Object[_0x4330e5('0x5c2')](_0x27cecb&&_0x27cecb[_0x4330e5('0x98c')],{'constructor':{'value':_0x4d573b,'writable':!0x0,'configurable':!0x0}}),_0x27cecb&&_0x49cd45(_0x4d573b,_0x27cecb);}(_0xccdbaf,_0x3aad0b);var _0x298364,_0x34ccb9,_0x2079dd,_0xc3aea5,_0x5883b8=(_0x298364=_0xccdbaf,function(){var _0x5a42c4=_0x3ab6,_0x14bec1,_0x252a37=_0x1d587b(_0x298364);if(_0x2a85a6()){var _0x545a12=_0x1d587b(this)[_0x5a42c4('0x3c6')];_0x14bec1=Reflect[_0x5a42c4('0x6ea')](_0x252a37,arguments,_0x545a12);}else _0x14bec1=_0x252a37[_0x5a42c4('0x1036')](this,arguments);return _0x17bede(this,_0x14bec1);});function _0xccdbaf(_0xe9c62,_0x4de224,_0x106ba0,_0x1caf6c){var _0x19fb30=_0x3ab6,_0x458f46;return function(_0x269ea6,_0x513965){var _0x31b492=_0x3ab6;if(!(_0x269ea6 instanceof _0x513965))throw new TypeError(_0x31b492('0x202'));}(this,_0xccdbaf),(_0x458f46=_0x5883b8['call'](this,_0xe9c62,_0x4de224,_0x106ba0,_0x1caf6c))[_0x19fb30('0x535')]='',_0x458f46;}return _0x34ccb9=_0xccdbaf,(_0x2079dd=[{'key':_0x5d8491('0x315'),'value':function(){var _0x412c3f=_0x5d8491;return['id','name',_0x412c3f('0xf3'),_0x412c3f('0xa5e'),_0x412c3f('0x55c'),'display_order'];}},{'key':'getHeaders','value':function(){var _0x2ccf93=_0x5d8491;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':'Name'},{'sTitle':_0x2ccf93('0x150')},{'sTitle':_0x2ccf93('0xb98')},{'sTitle':_0x2ccf93('0x8c8')},{'sTitle':_0x2ccf93('0x9b4')}];}},{'key':_0x5d8491('0x5f6'),'value':function(){var _0x2e743f=_0x5d8491;return[{'title':_0x2e743f('0x1'),'dataIndex':_0x2e743f('0x263'),'sorter':!0x0},{'title':_0x2e743f('0xb98'),'dataIndex':_0x2e743f('0xa5e')},{'title':_0x2e743f('0x150'),'dataIndex':_0x2e743f('0xf3')},{'title':_0x2e743f('0x8c8'),'dataIndex':'display','sorter':!0x0},{'title':_0x2e743f('0x9b4'),'dataIndex':_0x2e743f('0x2b8'),'sorter':!0x0}];}},{'key':_0x5d8491('0xfe3'),'value':function(){var _0x20b36f=_0x5d8491;return[['id',{'label':'ID','type':_0x20b36f('0xdc0')}],[_0x20b36f('0xa5e'),{'label':_0x20b36f('0xb98'),'type':_0x20b36f('0x768'),'validation':''}],[_0x20b36f('0xf3'),{'label':_0x20b36f('0x150'),'type':_0x20b36f('0x8ff'),'source':[[_0x20b36f('0x768'),_0x20b36f('0x44f')],[_0x20b36f('0xa2e'),'Multiline\x20Text'],[_0x20b36f('0x8ff'),_0x20b36f('0x547')],[_0x20b36f('0x1137'),_0x20b36f('0x820')],[_0x20b36f('0x256'),_0x20b36f('0x55d')],[_0x20b36f('0xd4e'),'File\x20Upload'],[_0x20b36f('0x65d'),_0x20b36f('0x700')],[_0x20b36f('0xb6a'),_0x20b36f('0xbfa')],['time',_0x20b36f('0x9c')],[_0x20b36f('0xecc'),_0x20b36f('0x53e')]]}],[_0x20b36f('0x9e'),{'label':_0x20b36f('0x5d9'),'type':_0x20b36f('0x1137'),'validation':_0x20b36f('0x1c1'),'sort':_0x20b36f('0x1c1'),'null-label':'Required','allow-null':!0x0,'source':[[_0x20b36f('0x1c1'),'None'],[_0x20b36f('0xd95'),'Number'],[_0x20b36f('0xea4'),_0x20b36f('0xca7')],[_0x20b36f('0xf0e'),'Decimal'],[_0x20b36f('0xe84'),_0x20b36f('0x17a')],[_0x20b36f('0x659'),_0x20b36f('0x1dd')]]}],['field_options',{'label':_0x20b36f('0xbd3'),'type':'datagroup','form':[['label',{'label':_0x20b36f('0x811'),'type':_0x20b36f('0x768'),'validation':''}],[_0x20b36f('0x832'),{'label':_0x20b36f('0x1ac'),'type':'text','validation':'none'}]],'html':_0x20b36f('0x5be'),'columns':[{'title':_0x20b36f('0x811'),'dataIndex':_0x20b36f('0xf90'),'key':'label'},{'title':_0x20b36f('0xcd4'),'dataIndex':_0x20b36f('0x832'),'key':_0x20b36f('0x832')}],'validation':'none'}],['display_order',{'label':_0x20b36f('0x9b4'),'type':'text','validation':_0x20b36f('0x1c1')}]];}},{'key':_0x5d8491('0x5e7'),'value':function(_0x181ebe){var _0x44e74c=_0x5d8491;return _0x181ebe[_0x44e74c('0x166')](/[^a-z0-9+]+/gi,'')['toLowerCase']();}},{'key':_0x5d8491('0x3b5'),'value':function(_0x45c616){this['tableType']=_0x45c616;}},{'key':'doCustomValidation','value':function(_0x5780d7){var _0x2c5888=_0x5d8491,_0x2786e6=function(_0xd5dd05){return null!=_0xd5dd05&&/^[a-z][a-z0-9._]+$/['test'](_0xd5dd05);};if(null==this[_0x2c5888('0xa81')]||null==this[_0x2c5888('0xa81')][_0x2c5888('0x263')]||''===this[_0x2c5888('0xa81')][_0x2c5888('0x263')]){if(_0x5780d7[_0x2c5888('0x263')]=this['getNameFromFieldName'](_0x5780d7[_0x2c5888('0xa5e')]),!_0x2786e6(_0x5780d7[_0x2c5888('0x263')]))return'Invalid\x20field\x20label\x20for\x20custom\x20field';}else _0x5780d7[_0x2c5888('0x263')]=this[_0x2c5888('0xa81')][_0x2c5888('0x263')];return _0x2786e6(_0x5780d7['name'])?null:_0x2c5888('0x294');}},{'key':'forceInjectValuesBeforeSave','value':function(_0x235429){var _0x29068a=_0x5d8491,_0x11dcde,_0x3467bc=['',{}],_0x36a51e=[];if(_0x3467bc[0x1]['label']=_0x235429['field_label'],_0x3467bc[0x1][_0x29068a('0x3f7')]=_0x235429[_0x29068a('0xf3')],_0x3467bc[0x1]['validation']=_0x235429[_0x29068a('0x9e')],[_0x29068a('0x8ff'),'select2',_0x29068a('0x256')]['indexOf'](_0x235429[_0x29068a('0xf3')])>=0x0){for(var _0x3416b7 in _0x11dcde=''===_0x235429[_0x29068a('0xaae')]||void 0x0===_0x235429[_0x29068a('0xaae')]?[]:JSON['parse'](_0x235429[_0x29068a('0xaae')]))_0x36a51e[_0x29068a('0x8f8')]([_0x11dcde[_0x3416b7][_0x29068a('0x832')],_0x11dcde[_0x3416b7]['label']]);_0x3467bc[0x1]['source']=_0x36a51e;}return null!=_0x235429[_0x29068a('0x9e')]&&void 0x0!==_0x235429[_0x29068a('0x9e')]||(_0x235429[_0x29068a('0x9e')]=''),_0x235429[_0x29068a('0x3f7')]=this[_0x29068a('0x535')],null==this[_0x29068a('0xa81')]||null==this[_0x29068a('0xa81')][_0x29068a('0x263')]||''===this['currentElement'][_0x29068a('0x263')]?_0x235429['name']=this['getNameFromFieldName'](_0x235429[_0x29068a('0xa5e')]):_0x235429[_0x29068a('0x263')]=this[_0x29068a('0xa81')]['name'],_0x3467bc[0x0]=_0x235429[_0x29068a('0x263')],_0x235429[_0x29068a('0xac8')]=JSON[_0x29068a('0x591')](_0x3467bc),_0x235429['display']='Form',_0x235429[_0x29068a('0x2b8')]=parseInt(_0x235429['display_order']),Number['isInteger'](_0x235429[_0x29068a('0x2b8')])||(_0x235429[_0x29068a('0x2b8')]=0x1),_0x235429;}}])&&_0x18f1cc(_0x34ccb9[_0x5d8491('0x98c')],_0x2079dd),_0xc3aea5&&_0x18f1cc(_0x34ccb9,_0xc3aea5),_0xccdbaf;}(_0x47d633(_0x50be37(_0x107d0c('0x69c')))['default']);_0x24a67e['default']=_0x528159;},{'./ReactModalAdapterBase':0x46,'antd':'antd','react':_0x404097('0x1041')}],0x45:[function(_0x594a74,_0x141665,_0x24e491){var _0x5d6e59=_0x404097;'use strict';var _0x5ab8cc;function _0x264e7c(_0x23f14b){var _0xec6050=_0x3ab6;return(_0x264e7c=_0xec6050('0xae9')==typeof Symbol&&_0xec6050('0x245')==typeof Symbol['iterator']?function(_0x41bd89){return typeof _0x41bd89;}:function(_0x253e78){var _0xe5589a=_0xec6050;return _0x253e78&&_0xe5589a('0xae9')==typeof Symbol&&_0x253e78[_0xe5589a('0x3c6')]===Symbol&&_0x253e78!==Symbol[_0xe5589a('0x98c')]?_0xe5589a('0x245'):typeof _0x253e78;})(_0x23f14b);}function _0x2dd7c2(_0x3e81e1,_0x1f5b3c){var _0x466280=_0x3ab6;if(!(_0x3e81e1 instanceof _0x1f5b3c))throw new TypeError(_0x466280('0x202'));}function _0x1f604d(_0x4c596c,_0x773651){var _0x3bd87a=_0x3ab6;for(var _0xb623b9=0x0;_0xb623b9<_0x773651[_0x3bd87a('0x525')];_0xb623b9++){var _0x4492e8=_0x773651[_0xb623b9];_0x4492e8[_0x3bd87a('0x156')]=_0x4492e8[_0x3bd87a('0x156')]||!0x1,_0x4492e8[_0x3bd87a('0xbb2')]=!0x0,'value'in _0x4492e8&&(_0x4492e8['writable']=!0x0),Object[_0x3bd87a('0xa95')](_0x4c596c,_0x4492e8[_0x3bd87a('0x1192')],_0x4492e8);}}function _0x4edc5f(_0x26dfd4,_0x2ba2bd){var _0x2cec1=_0x3ab6;return!_0x2ba2bd||'object'!==_0x264e7c(_0x2ba2bd)&&_0x2cec1('0xae9')!=typeof _0x2ba2bd?function(_0x55477c){var _0x491af9=_0x2cec1;if(void 0x0===_0x55477c)throw new ReferenceError(_0x491af9('0x2e9'));return _0x55477c;}(_0x26dfd4):_0x2ba2bd;}function _0x5a8e9b(){var _0x34b8db=_0x3ab6;if(_0x34b8db('0x56')==typeof Reflect||!Reflect[_0x34b8db('0x6ea')])return!0x1;if(Reflect['construct'][_0x34b8db('0x16e')])return!0x1;if(_0x34b8db('0xae9')==typeof Proxy)return!0x0;try{return Date[_0x34b8db('0x98c')]['toString'][_0x34b8db('0x4b0')](Reflect['construct'](Date,[],function(){})),!0x0;}catch(_0x966793){return!0x1;}}function _0x5d0ac1(_0x27d607){var _0x21b952=_0x3ab6;return(_0x5d0ac1=Object[_0x21b952('0x6c2')]?Object[_0x21b952('0x10c0')]:function(_0x196b33){var _0x11cd0e=_0x21b952;return _0x196b33[_0x11cd0e('0x11e6')]||Object[_0x11cd0e('0x10c0')](_0x196b33);})(_0x27d607);}function _0x1bbd10(_0x208bf5,_0x4cfc6f){var _0x5cf2ed=_0x3ab6;return(_0x1bbd10=Object[_0x5cf2ed('0x6c2')]||function(_0x31730b,_0x2b26ae){var _0x2a2799=_0x5cf2ed;return _0x31730b[_0x2a2799('0x11e6')]=_0x2b26ae,_0x31730b;})(_0x208bf5,_0x4cfc6f);}Object[_0x5d6e59('0xa95')](_0x24e491,'__esModule',{'value':!0x0}),_0x24e491[_0x5d6e59('0x544')]=void 0x0;var _0x5e8ee3=function(_0xbbcfcc){var _0x4b940a=_0x5d6e59;!function(_0x345db0,_0x43ba05){var _0x55f279=_0x3ab6;if(_0x55f279('0xae9')!=typeof _0x43ba05&&null!==_0x43ba05)throw new TypeError(_0x55f279('0x409'));_0x345db0[_0x55f279('0x98c')]=Object['create'](_0x43ba05&&_0x43ba05[_0x55f279('0x98c')],{'constructor':{'value':_0x345db0,'writable':!0x0,'configurable':!0x0}}),_0x43ba05&&_0x1bbd10(_0x345db0,_0x43ba05);}(_0x56cde0,_0xbbcfcc);var _0x45bd3b,_0x13acd0,_0x26f75a,_0x2e97e8,_0xea5c79=(_0x45bd3b=_0x56cde0,function(){var _0x3b1013=_0x3ab6,_0x4b6a62,_0x50136c=_0x5d0ac1(_0x45bd3b);if(_0x5a8e9b()){var _0x22e227=_0x5d0ac1(this)['constructor'];_0x4b6a62=Reflect[_0x3b1013('0x6ea')](_0x50136c,arguments,_0x22e227);}else _0x4b6a62=_0x50136c[_0x3b1013('0x1036')](this,arguments);return _0x4edc5f(this,_0x4b6a62);});function _0x56cde0(){var _0x5bc9bf=_0x3ab6;return _0x2dd7c2(this,_0x56cde0),_0xea5c79[_0x5bc9bf('0x1036')](this,arguments);}return _0x13acd0=_0x56cde0,(_0x26f75a=[{'key':_0x4b940a('0x33'),'value':function(_0x51e7df){var _0x5c6ef9=_0x4b940a,_0x47e166=this;if(this[_0x5c6ef9('0x104e')]())return this[_0x5c6ef9('0x1189')](this[_0x5c6ef9('0x107b')]()),$('#'[_0x5c6ef9('0x3cc')](this['getTableName'](),'Form'))[_0x5c6ef9('0x9c2')](),void $('#'['concat'](this[_0x5c6ef9('0x107b')]()))[_0x5c6ef9('0x41b')]();var _0x2b2cb6=JSON[_0x5c6ef9('0x591')](this[_0x5c6ef9('0xd30')]()),_0x4a6d76='';null!==this[_0x5c6ef9('0x5a3')]()&&(_0x4a6d76=JSON[_0x5c6ef9('0x591')](this[_0x5c6ef9('0x5a3')]()));var _0x5d7672='';null!==this['getOrderBy']()&&(_0x5d7672=this['getOrderBy']()),_0x2b2cb6=this[_0x5c6ef9('0x117f')](_0x2b2cb6),_0x4a6d76=this[_0x5c6ef9('0x117f')](_0x4a6d76),_0x47e166[_0x5c6ef9('0x304')](),$[_0x5c6ef9('0xe80')](this[_0x5c6ef9('0xe32')],{'t':this[_0x5c6ef9('0xf4a')],'a':'get','sm':_0x2b2cb6,'ft':_0x4a6d76,'ob':_0x5d7672},function(_0x5a969f){var _0x38f1b4=_0x5c6ef9;_0x38f1b4('0x5f8')===_0x5a969f[_0x38f1b4('0x11e7')]?_0x47e166[_0x38f1b4('0x81f')](_0x51e7df,_0x5a969f['object']):_0x47e166['getFailCallBack'](_0x51e7df,_0x5a969f[_0x38f1b4('0x21e')]);},'json')['fail'](function(_0x5f46c6){var _0x34e0e8=_0x5c6ef9;0x193===_0x5f46c6['status']&&_0x47e166['showMessage']('Access\x20Forbidden',_0x5f46c6[_0x34e0e8('0x357')][_0x34e0e8('0xa1a')]);})[_0x5c6ef9('0x222')](function(){var _0x394136=_0x5c6ef9;_0x47e166[_0x394136('0x7e9')]();}),_0x47e166[_0x5c6ef9('0xf31')](),this[_0x5c6ef9('0xd00')](_0x5c6ef9('0x33'),this[_0x5c6ef9('0xb7b')],this[_0x5c6ef9('0xf4a')]);}},{'key':_0x4b940a('0xc75'),'value':function(_0x3e907a){var _0x5470d5=_0x4b940a;for(var _0x37a89c=this[_0x5470d5('0xb40')][_0x5470d5('0xe0d')],_0x26a39b='',_0x44c4f4=this[_0x5470d5('0xa68')](),_0x4eac88=0x0;_0x4eac88<_0x44c4f4[_0x5470d5('0x525')];_0x4eac88++){var _0xe3e364=this['getMetaFieldForRendering'](_0x44c4f4[_0x4eac88][0x0]);if(''===_0xe3e364||void 0x0===_0xe3e364)_0x26a39b+=this[_0x5470d5('0x9cb')](_0x44c4f4[_0x4eac88]);else{var _0x1151e2=_0x3e907a[_0xe3e364];''!==_0x1151e2&&null!=_0x1151e2&&void 0x0!==_0x1151e2&&''!==_0x1151e2[_0x5470d5('0x445')]()?_0x26a39b+=this[_0x5470d5('0x9cb')](JSON[_0x5470d5('0xf01')](_0x1151e2)):_0x26a39b+=this['renderFormField'](_0x44c4f4[_0x4eac88]);}}_0x37a89c=(_0x37a89c=_0x37a89c['replace'](/_id_/g,''['concat'](this[_0x5470d5('0x107b')](),_0x5470d5('0xf07'))))[_0x5470d5('0x166')](/_fields_/g,_0x26a39b);var _0x521802=this[_0x5470d5('0xcc7')](0xe),_0xf5b163=$(_0x5470d5('0xbea'));_0xf5b163[_0x5470d5('0xba5')]('id',_0x521802),_0xf5b163[_0x5470d5('0xb07')](_0x37a89c),_0xf5b163[_0x5470d5('0x6f3')](_0x5470d5('0xf4b'))[_0x5470d5('0x649')]({'viewMode':0x2}),_0xf5b163[_0x5470d5('0x6f3')](_0x5470d5('0x895'))[_0x5470d5('0x642')]({'language':'en','pickDate':!0x1}),_0xf5b163['find'](_0x5470d5('0x5c'))[_0x5470d5('0x642')]({'language':'en'}),_0xf5b163[_0x5470d5('0x6f3')](_0x5470d5('0x394'))['colorpicker'](),tinymce['init']({'selector':'#'[_0x5470d5('0x3cc')](_0xf5b163[_0x5470d5('0xba5')]('id'),_0x5470d5('0xf4e')),'height':_0x5470d5('0x196')}),_0xf5b163['find']('.simplemde')[_0x5470d5('0xf3a')](function(){var _0x409a2b=_0x5470d5,_0x27f897=new SimpleMDE({'element':$(this)[0x0]});$(this)[_0x409a2b('0xac8')](_0x409a2b('0x68b'),_0x27f897);}),_0xf5b163[_0x5470d5('0x6f3')](_0x5470d5('0xcd7'))[_0x5470d5('0xf3a')](function(){var _0x211d8a=_0x5470d5;$(this)['select2']()['select2']('val',$(this)[_0x211d8a('0x6f3')](_0x211d8a('0x1a8'))['val']());}),_0xf5b163[_0x5470d5('0x6f3')](_0x5470d5('0x29a'))[_0x5470d5('0xf3a')](function(){var _0x14d55d=_0x5470d5;$(this)['select2']()['on'](_0x14d55d('0x4f6'),function(_0xa30e11){var _0xebb6f0=_0x14d55d,_0x5cff6f=$(this)[_0xebb6f0('0x28c')](_0xebb6f0('0x82d')),_0x190e10=_0x5cff6f[_0xebb6f0('0x6f3')](_0xebb6f0('0xe73'))['height']();_0x5cff6f[_0xebb6f0('0x7f0')](parseInt(_0x190e10,0xa));});}),this['showDomElement'](_0x5470d5('0xf1'),_0xf5b163,null,null,!0x0),$(_0x5470d5('0xa02'))[_0x5470d5('0xc1f')](),$(_0x5470d5('0xa02'))['on'](_0x5470d5('0xd4d'),function(_0x19e872){var _0x11575b=_0x5470d5;_0x19e872['preventDefault'](),_0x19e872['stopPropagation']();try{modJs[_0x11575b('0x80c')]();}catch(_0x375954){}return!0x1;}),void 0x0!==this[_0x5470d5('0x4fb')]&&null!=this[_0x5470d5('0x4fb')]&&''!==this[_0x5470d5('0x4fb')]&&this[_0x5470d5('0x1a')](this['filter'],'#'[_0x5470d5('0x3cc')](this[_0x5470d5('0x107b')](),_0x5470d5('0xf07')),this[_0x5470d5('0xa68')]());}},{'key':_0x4b940a('0xe42'),'value':function(){var _0x2a55e2=_0x4b940a;this[_0x2a55e2('0x4fb')]=this[_0x2a55e2('0x10f0')],this['filtersAlreadySet']=!0x1,$('#'[_0x2a55e2('0x3cc')](this[_0x2a55e2('0x107b')](),_0x2a55e2('0x53')))[_0x2a55e2('0x9c2')](),this[_0x2a55e2('0x8f7')]='',this['get']([]);}}])&&_0x1f604d(_0x13acd0[_0x4b940a('0x98c')],_0x26f75a),_0x2e97e8&&_0x1f604d(_0x13acd0,_0x2e97e8),_0x56cde0;}(((_0x5ab8cc=_0x594a74(_0x5d6e59('0x69c')))&&_0x5ab8cc[_0x5d6e59('0x114c')]?_0x5ab8cc:{'default':_0x5ab8cc})[_0x5d6e59('0x544')]);_0x24e491[_0x5d6e59('0x544')]=_0x5e8ee3;},{'./ReactModalAdapterBase':0x46}],0x46:[function(_0xc7b914,_0x3f4158,_0x373601){var _0x51055d=_0x404097;'use strict';Object[_0x51055d('0xa95')](_0x373601,_0x51055d('0x114c'),{'value':!0x0}),_0x373601[_0x51055d('0x544')]=void 0x0;var _0x2c368b=_0x58fba7(_0xc7b914(_0x51055d('0x1041'))),_0x4a29e7=_0x58fba7(_0xc7b914(_0x51055d('0xd47'))),_0xaaebc9=_0xc7b914(_0x51055d('0xdb9')),_0x26d025=_0xc7b914('@ant-design/icons'),_0x55740c=_0x58fba7(_0xc7b914('./AdapterBase')),_0xf0ec1c=_0x58fba7(_0xc7b914(_0x51055d('0x179'))),_0x433752=_0x58fba7(_0xc7b914(_0x51055d('0x438'))),_0x4af7aa=_0x58fba7(_0xc7b914('../components/IceTable')),_0x59e07f=_0x58fba7(_0xc7b914(_0x51055d('0x7b7')));function _0x58fba7(_0x5d8c7e){var _0xd5249f=_0x51055d;return _0x5d8c7e&&_0x5d8c7e[_0xd5249f('0x114c')]?_0x5d8c7e:{'default':_0x5d8c7e};}function _0x3340af(_0x2353ac){var _0x5b76d7=_0x51055d;return(_0x3340af=_0x5b76d7('0xae9')==typeof Symbol&&_0x5b76d7('0x245')==typeof Symbol[_0x5b76d7('0x78e')]?function(_0x5e3ffd){return typeof _0x5e3ffd;}:function(_0x4e12a1){var _0xb1e980=_0x5b76d7;return _0x4e12a1&&_0xb1e980('0xae9')==typeof Symbol&&_0x4e12a1[_0xb1e980('0x3c6')]===Symbol&&_0x4e12a1!==Symbol[_0xb1e980('0x98c')]?'symbol':typeof _0x4e12a1;})(_0x2353ac);}function _0x463076(_0xf2d5aa,_0x5cab0b){return function(_0x483e23){var _0x312785=_0x3ab6;if(Array[_0x312785('0x6f6')](_0x483e23))return _0x483e23;}(_0xf2d5aa)||function(_0x3c977f,_0x342a79){var _0x15b3bf=_0x3ab6;if('undefined'==typeof Symbol||!(Symbol[_0x15b3bf('0x78e')]in Object(_0x3c977f)))return;var _0x453389=[],_0x42d900=!0x0,_0x293384=!0x1,_0x12b986=void 0x0;try{for(var _0x880252,_0x318540=_0x3c977f[Symbol[_0x15b3bf('0x78e')]]();!(_0x42d900=(_0x880252=_0x318540[_0x15b3bf('0x4d7')]())[_0x15b3bf('0x10cf')])&&(_0x453389[_0x15b3bf('0x8f8')](_0x880252[_0x15b3bf('0x832')]),!_0x342a79||_0x453389['length']!==_0x342a79);_0x42d900=!0x0);}catch(_0x420134){_0x293384=!0x0,_0x12b986=_0x420134;}finally{try{_0x42d900||null==_0x318540['return']||_0x318540[_0x15b3bf('0x458')]();}finally{if(_0x293384)throw _0x12b986;}}return _0x453389;}(_0xf2d5aa,_0x5cab0b)||function(_0x30e852,_0x1b9434){var _0x27df48=_0x3ab6;if(!_0x30e852)return;if('string'==typeof _0x30e852)return _0x403c18(_0x30e852,_0x1b9434);var _0x36953a=Object[_0x27df48('0x98c')]['toString'][_0x27df48('0x4b0')](_0x30e852)[_0x27df48('0xbc0')](0x8,-0x1);_0x27df48('0x75')===_0x36953a&&_0x30e852[_0x27df48('0x3c6')]&&(_0x36953a=_0x30e852['constructor'][_0x27df48('0x263')]);if(_0x27df48('0xd27')===_0x36953a||_0x27df48('0x621')===_0x36953a)return Array[_0x27df48('0x9d7')](_0x36953a);if(_0x27df48('0xd3d')===_0x36953a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/[_0x27df48('0xaac')](_0x36953a))return _0x403c18(_0x30e852,_0x1b9434);}(_0xf2d5aa,_0x5cab0b)||function(){var _0x327bc7=_0x3ab6;throw new TypeError(_0x327bc7('0x496'));}();}function _0x403c18(_0x528b51,_0x3ef209){var _0x105980=_0x51055d;(null==_0x3ef209||_0x3ef209>_0x528b51[_0x105980('0x525')])&&(_0x3ef209=_0x528b51['length']);for(var _0x28ab30=0x0,_0x7b59c2=new Array(_0x3ef209);_0x28ab30<_0x3ef209;_0x28ab30++)_0x7b59c2[_0x28ab30]=_0x528b51[_0x28ab30];return _0x7b59c2;}function _0x272a2b(_0xb7f708,_0x137886){var _0x5a1b18=_0x51055d;for(var _0x17f2ad=0x0;_0x17f2ad<_0x137886['length'];_0x17f2ad++){var _0x4ea061=_0x137886[_0x17f2ad];_0x4ea061[_0x5a1b18('0x156')]=_0x4ea061['enumerable']||!0x1,_0x4ea061['configurable']=!0x0,'value'in _0x4ea061&&(_0x4ea061['writable']=!0x0),Object[_0x5a1b18('0xa95')](_0xb7f708,_0x4ea061[_0x5a1b18('0x1192')],_0x4ea061);}}function _0x485f62(_0x52090e,_0x315453,_0x26d314){var _0x120abd=_0x51055d;return _0x315453&&_0x272a2b(_0x52090e[_0x120abd('0x98c')],_0x315453),_0x26d314&&_0x272a2b(_0x52090e,_0x26d314),_0x52090e;}function _0x3ac835(_0x14e878,_0x4b3812){var _0x6abe8=_0x51055d;return!_0x4b3812||_0x6abe8('0x21e')!==_0x3340af(_0x4b3812)&&_0x6abe8('0xae9')!=typeof _0x4b3812?_0x37653a(_0x14e878):_0x4b3812;}function _0x37653a(_0x2ef92a){if(void 0x0===_0x2ef92a)throw new ReferenceError('this\x20hasn\x27t\x20been\x20initialised\x20-\x20super()\x20hasn\x27t\x20been\x20called');return _0x2ef92a;}function _0x57f134(){var _0x1be5f0=_0x51055d;if('undefined'==typeof Reflect||!Reflect[_0x1be5f0('0x6ea')])return!0x1;if(Reflect['construct']['sham'])return!0x1;if('function'==typeof Proxy)return!0x0;try{return Date['prototype'][_0x1be5f0('0x537')][_0x1be5f0('0x4b0')](Reflect['construct'](Date,[],function(){})),!0x0;}catch(_0x5e2689){return!0x1;}}function _0x238637(_0x32f9a2){var _0x55bdfc=_0x51055d;return(_0x238637=Object[_0x55bdfc('0x6c2')]?Object['getPrototypeOf']:function(_0x5bb367){var _0x129587=_0x55bdfc;return _0x5bb367['__proto__']||Object[_0x129587('0x10c0')](_0x5bb367);})(_0x32f9a2);}function _0x591c97(_0x163936,_0x38f175){var _0x2ac477=_0x51055d;return(_0x591c97=Object[_0x2ac477('0x6c2')]||function(_0x5bb8df,_0x37a245){return _0x5bb8df['__proto__']=_0x37a245,_0x5bb8df;})(_0x163936,_0x38f175);}var _0x1304bb=function(_0x3b442d){var _0x35bc6c=_0x51055d;!function(_0x1c1303,_0x4886da){var _0x35eea5=_0x3ab6;if(_0x35eea5('0xae9')!=typeof _0x4886da&&null!==_0x4886da)throw new TypeError(_0x35eea5('0x409'));_0x1c1303[_0x35eea5('0x98c')]=Object[_0x35eea5('0x5c2')](_0x4886da&&_0x4886da[_0x35eea5('0x98c')],{'constructor':{'value':_0x1c1303,'writable':!0x0,'configurable':!0x0}}),_0x4886da&&_0x591c97(_0x1c1303,_0x4886da);}(_0x2f689c,_0x3b442d);var _0x10a791,_0x1bd608=(_0x10a791=_0x2f689c,function(){var _0x27ebc9=_0x3ab6,_0x57b1f5,_0x568a16=_0x238637(_0x10a791);if(_0x57f134()){var _0x17a58b=_0x238637(this)['constructor'];_0x57b1f5=Reflect[_0x27ebc9('0x6ea')](_0x568a16,arguments,_0x17a58b);}else _0x57b1f5=_0x568a16[_0x27ebc9('0x1036')](this,arguments);return _0x3ac835(this,_0x57b1f5);});function _0x2f689c(_0x133f96,_0x227af8,_0x168273,_0x31ec17){var _0x50b8b=_0x3ab6,_0x2287f5;return function(_0x5ceaa2,_0x4cbf80){var _0x380194=_0x3ab6;if(!(_0x5ceaa2 instanceof _0x4cbf80))throw new TypeError(_0x380194('0x202'));}(this,_0x2f689c),(_0x2287f5=_0x1bd608['call'](this,_0x133f96,_0x227af8,_0x168273,_0x31ec17))['modalType']=_0x2287f5[_0x50b8b('0x332')],_0x2287f5['dataPipe']=null,_0x2287f5[_0x50b8b('0x69a')]=!0x1,_0x2287f5[_0x50b8b('0x3b9')]=!0x1,_0x2287f5[_0x50b8b('0xa01')]=[],_0x2287f5['localStorageEnabled']=!0x1,_0x2287f5[_0x50b8b('0xde')]=!0x0,_0x2287f5[_0x50b8b('0x48')]=new _0x59e07f[(_0x50b8b('0x544'))](_0x37653a(_0x2287f5)),_0x2287f5;}return _0x485f62(_0x2f689c,null,[{'key':_0x35bc6c('0x332'),'get':function(){var _0x492632=_0x35bc6c;return _0x492632('0x1099');}},{'key':_0x35bc6c('0x70f'),'get':function(){var _0x42d199=_0x35bc6c;return _0x42d199('0x446');}}]),_0x485f62(_0x2f689c,[{'key':_0x35bc6c('0xa34'),'value':function(){var _0x1d8789=_0x35bc6c;this[_0x1d8789('0xf7e')]=!0x0;}},{'key':_0x35bc6c('0xc46'),'value':function(_0x1a3f8d){var _0x363003=_0x35bc6c;this[_0x363003('0xf93')]=_0x1a3f8d;}},{'key':_0x35bc6c('0x11cf'),'value':function(_0x218368){var _0x2afa5d=_0x35bc6c;this[_0x2afa5d('0x6ed')]=_0x218368;}},{'key':_0x35bc6c('0xad3'),'value':function(_0x32558a){var _0x20364d=_0x35bc6c;this[_0x20364d('0xa01')]=_0x32558a;}},{'key':_0x35bc6c('0x380'),'value':function(_0x115795){var _0x4cc2da=_0x35bc6c;return this[_0x4cc2da('0xa01')][_0x4cc2da('0x4dc')](_0x115795)>0x0;}},{'key':_0x35bc6c('0x7d3'),'value':function(){return!0x1;}},{'key':_0x35bc6c('0xb18'),'value':function(){var _0x41d0df=_0x35bc6c,_0x1928fd=this;if(this[_0x41d0df('0x3b9')])return!0x1;var _0x1adfde=document[_0x41d0df('0xc14')](''[_0x41d0df('0x3cc')](this[_0x41d0df('0xb7b')],_0x41d0df('0xf27')));if(_0x1adfde){this['tableContainer']=_0x2c368b[_0x41d0df('0x544')][_0x41d0df('0x797')]();var _0x356de2=this[_0x41d0df('0x5f6')]();(this[_0x41d0df('0x380')]('save')||this[_0x41d0df('0x380')]('delete')||this[_0x41d0df('0x380')](_0x41d0df('0x3f4'))||this['hasCustomButtons']())&&_0x356de2[_0x41d0df('0x8f8')]({'title':'Actions','key':_0x41d0df('0xce0'),'render':this[_0x41d0df('0x134')](this)}),_0x356de2=_0x356de2[_0x41d0df('0xd49')](function(_0x3c97af){var _0x19079a=_0x41d0df;return _0x3c97af[_0x19079a('0xba3')]=_0x1928fd['gt'](_0x3c97af['title']),_0x3c97af;}),_0x4a29e7[_0x41d0df('0x544')]['render'](_0x2c368b[_0x41d0df('0x544')]['createElement'](_0x4af7aa['default'],{'ref':this[_0x41d0df('0xb96')],'reader':this[_0x41d0df('0x6ed')],'columns':_0x356de2,'adapter':this},this[_0x41d0df('0x906')]()),_0x1adfde);}return this[_0x41d0df('0x3b9')]=!0x0,!0x0;}},{'key':_0x35bc6c('0x693'),'value':function(){var _0x5da083=_0x35bc6c,_0x746f4b=this;if(this[_0x5da083('0x69a')])return!0x1;this[_0x5da083('0x98')]=_0x2c368b[_0x5da083('0x544')][_0x5da083('0x797')](),this['modalType']===this['MODAL_TYPE_NORMAL']?_0x4a29e7[_0x5da083('0x544')][_0x5da083('0x80f')](_0x2c368b[_0x5da083('0x544')]['createElement'](_0xf0ec1c[_0x5da083('0x544')],{'ref':this[_0x5da083('0x98')],'fields':this[_0x5da083('0xfe3')](),'adapter':this,'formReference':this['formReference']}),document[_0x5da083('0xc14')](''[_0x5da083('0x3cc')](this['tab'],'Form'))):_0x4a29e7['default'][_0x5da083('0x80f')](_0x2c368b[_0x5da083('0x544')][_0x5da083('0xd0f')](_0x433752['default'],{'ref':this[_0x5da083('0x98')],'fields':this[_0x5da083('0xfb5')](),'adapter':this,'formReference':this[_0x5da083('0xd9d')]}),document[_0x5da083('0xc14')](''[_0x5da083('0x3cc')](this['tab'],_0x5da083('0x5ac'))));var _0x264f7c=document[_0x5da083('0xc14')](''[_0x5da083('0x3cc')](this[_0x5da083('0xb7b')],_0x5da083('0x3a3')));return _0x264f7c&&this[_0x5da083('0xa68')]()&&(this[_0x5da083('0xf73')]=_0x2c368b['default']['createRef'](),_0x4a29e7[_0x5da083('0x544')]['render'](_0x2c368b[_0x5da083('0x544')][_0x5da083('0xd0f')](_0xf0ec1c['default'],{'ref':this[_0x5da083('0xf73')],'fields':this[_0x5da083('0xa68')](),'adapter':this,'saveCallback':function(_0x18510d,_0x21429e,_0x26be06){var _0xa3bee6=_0x5da083;_0x746f4b[_0xa3bee6('0x1123')](_0x18510d),_0x746f4b[_0xa3bee6('0x76f')]=!0x0,_0x746f4b[_0xa3bee6('0x33')]([]),_0x746f4b['tableContainer'][_0xa3bee6('0x970')][_0xa3bee6('0x22f')](_0x18510d),_0x26be06();}}),_0x264f7c)),this[_0x5da083('0x69a')]=!0x0,!0x0;}},{'key':_0x35bc6c('0x906'),'value':function(){return!0x1;}},{'key':_0x35bc6c('0x83a'),'value':function(){var _0x31ea4f=_0x35bc6c;this['viewElement'](this[_0x31ea4f('0xd5e')]);}},{'key':_0x35bc6c('0x134'),'value':function(_0x56e7c4){return function(_0x328ce3,_0x6b5923){var _0x45bddb=_0x3ab6;return _0x2c368b[_0x45bddb('0x544')]['createElement'](_0xaaebc9[_0x45bddb('0x3ff')],{'size':_0x45bddb('0x1e8')},_0x56e7c4[_0x45bddb('0x380')](_0x45bddb('0xc68'))&&_0x56e7c4['showEdit']&&_0x2c368b[_0x45bddb('0x544')][_0x45bddb('0xd0f')](_0xaaebc9[_0x45bddb('0x765')],{'color':_0x45bddb('0xfd3'),'onClick':function(){var _0x3b63d4=_0x45bddb;return modJs[_0x3b63d4('0x165')](_0x6b5923['id']);},'style':{'cursor':_0x45bddb('0x184')}},_0x2c368b[_0x45bddb('0x544')][_0x45bddb('0xd0f')](_0x26d025[_0x45bddb('0xea1')],null),'\x20'[_0x45bddb('0x3cc')](_0x56e7c4['gt'](_0x45bddb('0xf1')))),_0x56e7c4['hasAccess'](_0x45bddb('0x3f4'))&&_0x2c368b['default'][_0x45bddb('0xd0f')](_0xaaebc9[_0x45bddb('0x765')],{'color':_0x45bddb('0x1c5'),'onClick':function(){var _0x3e84af=_0x45bddb;return modJs[_0x3e84af('0x867')](_0x6b5923['id']);},'style':{'cursor':'pointer'}},_0x2c368b[_0x45bddb('0x544')][_0x45bddb('0xd0f')](_0x26d025[_0x45bddb('0xb70')],null),'\x20'[_0x45bddb('0x3cc')](_0x56e7c4['gt']('View'))),_0x56e7c4[_0x45bddb('0x380')](_0x45bddb('0x506'))&&_0x56e7c4[_0x45bddb('0xe70')]&&_0x2c368b[_0x45bddb('0x544')]['createElement'](_0xaaebc9[_0x45bddb('0x765')],{'color':_0x45bddb('0x10eb'),'onClick':function(){var _0x1207d7=_0x45bddb;return modJs[_0x1207d7('0xdf7')](_0x6b5923['id']);},'style':{'cursor':_0x45bddb('0x184')}},_0x2c368b[_0x45bddb('0x544')][_0x45bddb('0xd0f')](_0x26d025[_0x45bddb('0x11e1')],null),'\x20'[_0x45bddb('0x3cc')](_0x56e7c4['gt'](_0x45bddb('0xf15')))),_0x56e7c4[_0x45bddb('0x380')](_0x45bddb('0xc68'))&&_0x2c368b[_0x45bddb('0x544')][_0x45bddb('0xd0f')](_0xaaebc9['Tag'],{'color':_0x45bddb('0x3d7'),'onClick':function(){var _0x15962f=_0x45bddb;return modJs[_0x15962f('0x15a')](_0x6b5923['id']);},'style':{'cursor':_0x45bddb('0x184')}},_0x2c368b['default'][_0x45bddb('0xd0f')](_0x26d025['CopyOutlined'],null),'\x20'['concat'](_0x56e7c4['gt'](_0x45bddb('0x1197')))));};}},{'key':_0x35bc6c('0xd79'),'value':function(_0x5180bb){var _0x5ed7e7=_0x35bc6c;this['tableContainer'][_0x5ed7e7('0x970')][_0x5ed7e7('0x11a8')](_0x5180bb);}},{'key':_0x35bc6c('0x867'),'value':function(_0x47a733){var _0x21182f=_0x35bc6c,_0x5c196a=this;this['setTableLoading'](!0x0),this[_0x21182f('0xd5e')]=_0x47a733,this[_0x21182f('0x1bf')](_0x47a733,{'noRender':!0x0,'callBack':function(_0x4ae86a){var _0x582610=_0x21182f;_0x5c196a[_0x582610('0xc86')](_0x4ae86a),_0x5c196a[_0x582610('0xd79')](!0x1);}});}},{'key':_0x35bc6c('0xc86'),'value':function(_0x1467cc){this['renderForm'](_0x1467cc,!0x0);}},{'key':_0x35bc6c('0x165'),'value':function(_0x9bf9a){var _0x1dc2d8=_0x35bc6c;this[_0x1dc2d8('0xd79')](!0x0),this[_0x1dc2d8('0xd5e')]=_0x9bf9a,this['getElement'](_0x9bf9a,[]);}},{'key':_0x35bc6c('0x11da'),'value':function(){var _0x2005b3=_0x35bc6c,_0x692939=arguments[_0x2005b3('0x525')]>0x0&&void 0x0!==arguments[0x0]?arguments[0x0]:null,_0x504c1e=arguments[_0x2005b3('0x525')]>0x1&&void 0x0!==arguments[0x1]&&arguments[0x1];null==_0x692939&&(this[_0x2005b3('0xd5e')]=null,this['currentElement']=null),this[_0x2005b3('0xd79')](!0x1),this[_0x2005b3('0x693')](),this[_0x2005b3('0x98')]['current'][_0x2005b3('0x45a')](_0x504c1e),this[_0x2005b3('0x98')]['current'][_0x2005b3('0x41b')](_0x692939);}},{'key':_0x35bc6c('0xc75'),'value':function(){var _0x1a3c43=_0x35bc6c;this[_0x1a3c43('0x693')](),this[_0x1a3c43('0xf73')]['current'][_0x1a3c43('0x41b')](this[_0x1a3c43('0x4fb')]);}},{'key':_0x35bc6c('0xe42'),'value':function(){var _0x1a4812=_0x35bc6c;this['filter']=this[_0x1a4812('0x10f0')],this[_0x1a4812('0x76f')]=!0x1,this[_0x1a4812('0x8f7')]='',this[_0x1a4812('0x33')]([]),this['tableContainer'][_0x1a4812('0x970')][_0x1a4812('0x22f')](this['filter']);}},{'key':_0x35bc6c('0x33'),'value':function(){var _0x2ceee3=_0x35bc6c,_0x3bb043=this;this[_0x2ceee3('0xb96')]&&this[_0x2ceee3('0xb96')]['current']&&this[_0x2ceee3('0xb96')][_0x2ceee3('0x970')][_0x2ceee3('0xc81')](null),this[_0x2ceee3('0xb18')](),this['masterDataReader'][_0x2ceee3('0x96d')]()[_0x2ceee3('0xd5')](function(){var _0x500325=_0x2ceee3;_0x3bb043[_0x500325('0xb96')][_0x500325('0x970')][_0x500325('0xe39')]();}),this[_0x2ceee3('0xd00')]('get',this[_0x2ceee3('0xb7b')],this[_0x2ceee3('0xf4a')]);}},{'key':_0x35bc6c('0x304'),'value':function(){}},{'key':'addActualFieldsForStepModal','value':function(_0x115ec5,_0x282f3e){return _0x115ec5['map'](function(_0x525510){var _0x7ee0cd=_0x3ab6;return _0x525510[_0x7ee0cd('0x3e8')]=_0x525510['fields'][_0x7ee0cd('0x87a')](function(_0x479cc9,_0x135ebd){var _0x4081be=_0x7ee0cd,_0x1167cd=_0x282f3e[_0x4081be('0x6f3')](function(_0x5f3a36){return _0x463076(_0x5f3a36,0x1)[0x0]===_0x135ebd;});return _0x1167cd&&_0x479cc9['push'](_0x1167cd),_0x479cc9;},[]),_0x525510;});}},{'key':'getFormOptions','value':function(){return{'width':0x400,'twoColumnLayout':!0x1};}}]),_0x2f689c;}(_0x55740c['default']);_0x373601[_0x51055d('0x544')]=_0x1304bb;},{'../components/IceFormModal':0x4c,'../components/IceStepFromModal':0x51,'../components/IceTable':0x52,'./AdapterBase':0x39,'./MasterDataReader':0x42,'@ant-design/icons':'@ant-design/icons','antd':'antd','react':_0x404097('0x1041'),'react-dom':_0x404097('0xd47')}],0x47:[function(_0x2ede54,_0x25da19,_0x1f85ee){var _0x308a04=_0x404097;'use strict';var _0x3d8175;function _0x598060(_0x5a2712){var _0x1deea9=_0x3ab6;return(_0x598060='function'==typeof Symbol&&_0x1deea9('0x245')==typeof Symbol[_0x1deea9('0x78e')]?function(_0x3ec5de){return typeof _0x3ec5de;}:function(_0x2ded7e){var _0xc7a3=_0x1deea9;return _0x2ded7e&&_0xc7a3('0xae9')==typeof Symbol&&_0x2ded7e['constructor']===Symbol&&_0x2ded7e!==Symbol[_0xc7a3('0x98c')]?_0xc7a3('0x245'):typeof _0x2ded7e;})(_0x5a2712);}function _0x4537d7(_0x2705e5,_0x5798d7){var _0x13c975=_0x3ab6;if(!(_0x2705e5 instanceof _0x5798d7))throw new TypeError(_0x13c975('0x202'));}function _0x6f4eb4(_0x1b982c,_0x1860f6){var _0xdf3611=_0x3ab6;for(var _0x518219=0x0;_0x518219<_0x1860f6[_0xdf3611('0x525')];_0x518219++){var _0x3774cf=_0x1860f6[_0x518219];_0x3774cf[_0xdf3611('0x156')]=_0x3774cf[_0xdf3611('0x156')]||!0x1,_0x3774cf[_0xdf3611('0xbb2')]=!0x0,_0xdf3611('0x832')in _0x3774cf&&(_0x3774cf['writable']=!0x0),Object[_0xdf3611('0xa95')](_0x1b982c,_0x3774cf['key'],_0x3774cf);}}function _0x1c2174(_0x33a5f4,_0x5d6c63){var _0x535721=_0x3ab6;return!_0x5d6c63||'object'!==_0x598060(_0x5d6c63)&&_0x535721('0xae9')!=typeof _0x5d6c63?function(_0x2b35ee){var _0x12eb25=_0x535721;if(void 0x0===_0x2b35ee)throw new ReferenceError(_0x12eb25('0x2e9'));return _0x2b35ee;}(_0x33a5f4):_0x5d6c63;}function _0x54566e(){var _0x3a0209=_0x3ab6;if(_0x3a0209('0x56')==typeof Reflect||!Reflect[_0x3a0209('0x6ea')])return!0x1;if(Reflect[_0x3a0209('0x6ea')][_0x3a0209('0x16e')])return!0x1;if('function'==typeof Proxy)return!0x0;try{return Date['prototype'][_0x3a0209('0x537')]['call'](Reflect[_0x3a0209('0x6ea')](Date,[],function(){})),!0x0;}catch(_0x206f5f){return!0x1;}}function _0x46ebb2(_0x2d13ca){var _0xbbf96c=_0x3ab6;return(_0x46ebb2=Object[_0xbbf96c('0x6c2')]?Object[_0xbbf96c('0x10c0')]:function(_0x24afaa){return _0x24afaa['__proto__']||Object['getPrototypeOf'](_0x24afaa);})(_0x2d13ca);}function _0x17b1c3(_0x4560d7,_0x487e05){return(_0x17b1c3=Object['setPrototypeOf']||function(_0x4e36e3,_0x1cceaf){return _0x4e36e3['__proto__']=_0x1cceaf,_0x4e36e3;})(_0x4560d7,_0x487e05);}Object['defineProperty'](_0x1f85ee,_0x308a04('0x114c'),{'value':!0x0}),_0x1f85ee[_0x308a04('0x544')]=void 0x0;var _0x4eb01e=function(_0x48c6ba){var _0x34512f=_0x308a04;!function(_0x474392,_0x37f75d){var _0x531180=_0x3ab6;if(_0x531180('0xae9')!=typeof _0x37f75d&&null!==_0x37f75d)throw new TypeError(_0x531180('0x409'));_0x474392[_0x531180('0x98c')]=Object[_0x531180('0x5c2')](_0x37f75d&&_0x37f75d[_0x531180('0x98c')],{'constructor':{'value':_0x474392,'writable':!0x0,'configurable':!0x0}}),_0x37f75d&&_0x17b1c3(_0x474392,_0x37f75d);}(_0x2a50ac,_0x48c6ba);var _0x23517b,_0x11ebd9,_0x1a5fa6,_0x3acfc9,_0x5d7435=(_0x23517b=_0x2a50ac,function(){var _0x1e70c3=_0x3ab6,_0x943c77,_0x574f76=_0x46ebb2(_0x23517b);if(_0x54566e()){var _0x1cdbe9=_0x46ebb2(this)[_0x1e70c3('0x3c6')];_0x943c77=Reflect['construct'](_0x574f76,arguments,_0x1cdbe9);}else _0x943c77=_0x574f76[_0x1e70c3('0x1036')](this,arguments);return _0x1c2174(this,_0x943c77);});function _0x2a50ac(){var _0x19931f=_0x3ab6;return _0x4537d7(this,_0x2a50ac),_0x5d7435[_0x19931f('0x1036')](this,arguments);}return _0x11ebd9=_0x2a50ac,(_0x1a5fa6=[{'key':_0x34512f('0xdf7'),'value':function(_0x580099){var _0x4b7faf=_0x34512f;this[_0x4b7faf('0x4a8')]['id']=_0x580099,this[_0x4b7faf('0xfe9')]();}},{'key':'createTable','value':function(_0x10f712){var _0x1bab9d=_0x34512f,_0x388f45,_0x585e1c,_0x246c94,_0x1627f3,_0x137454=this['getTableData'](),_0x15510d=_0x1bab9d('0x499')[_0x1bab9d('0x3cc')](_0x10f712,_0x1bab9d('0xc39')),_0x4e62ca=_0x1bab9d('0x1095')[_0x1bab9d('0x3cc')](_0x10f712,_0x1bab9d('0x66a')),_0x3ce50b=$(_0x1bab9d('0xc74')),_0x4620d8=this['getSubHeader']();if(_0x3ce50b['append'](_0x4620d8),0x0===_0x137454[_0x1bab9d('0x525')])_0x3ce50b[_0x1bab9d('0xf9a')](_0x1bab9d('0xc8d')[_0x1bab9d('0x3cc')](this[_0x1bab9d('0xcb2')](),_0x1bab9d('0x2d5')));else for(var _0x4b2334=0x0;_0x4b2334<_0x137454[_0x1bab9d('0x525')];_0x4b2334++)_0x388f45=_0x137454[_0x4b2334],_0x246c94=_0x15510d['replace'](/_id_/g,_0x388f45[0x0]),_0x1627f3=_0x4e62ca[_0x1bab9d('0x166')](/_id_/g,_0x388f45[0x0]),_0x585e1c=this[_0x1bab9d('0xa0d')](_0x388f45,_0x246c94,_0x1627f3),_0x3ce50b[_0x1bab9d('0xf9a')](_0x585e1c);$('#'[_0x1bab9d('0x3cc')](_0x10f712))[_0x1bab9d('0xb07')](''),$('#'['concat'](_0x10f712))[_0x1bab9d('0xf9a')](_0x3ce50b),$('#plainMessageModel')[_0x1bab9d('0x11ad')]('hide');}},{'key':_0x34512f('0xcb2'),'value':function(){return'No\x20data\x20found';}},{'key':'getSubHeader','value':function(){var _0x31a676=_0x34512f;return $(_0x31a676('0x56b')[_0x31a676('0x3cc')](this[_0x31a676('0xf4c')](),_0x31a676('0xd34')));}}])&&_0x6f4eb4(_0x11ebd9[_0x34512f('0x98c')],_0x1a5fa6),_0x3acfc9&&_0x6f4eb4(_0x11ebd9,_0x3acfc9),_0x2a50ac;}(((_0x3d8175=_0x2ede54(_0x308a04('0x118c')))&&_0x3d8175[_0x308a04('0x114c')]?_0x3d8175:{'default':_0x3d8175})[_0x308a04('0x544')]);_0x1f85ee['default']=_0x4eb01e;},{'./AdapterBase':0x39}],0x48:[function(_0x32cf10,_0x4c0a20,_0x3c64f8){var _0x1ddcba=_0x404097;'use strict';var _0xd27657;function _0x46b399(_0x4c8371){var _0x4d8a2b=_0x3ab6;return(_0x46b399=_0x4d8a2b('0xae9')==typeof Symbol&&_0x4d8a2b('0x245')==typeof Symbol[_0x4d8a2b('0x78e')]?function(_0x1ab64a){return typeof _0x1ab64a;}:function(_0x53375b){var _0x3d6d7a=_0x4d8a2b;return _0x53375b&&_0x3d6d7a('0xae9')==typeof Symbol&&_0x53375b[_0x3d6d7a('0x3c6')]===Symbol&&_0x53375b!==Symbol[_0x3d6d7a('0x98c')]?_0x3d6d7a('0x245'):typeof _0x53375b;})(_0x4c8371);}function _0x23f16d(_0x3c871a,_0x42daca){var _0x350673=_0x3ab6;for(var _0x540c11=0x0;_0x540c11<_0x42daca[_0x350673('0x525')];_0x540c11++){var _0x10fe5e=_0x42daca[_0x540c11];_0x10fe5e['enumerable']=_0x10fe5e[_0x350673('0x156')]||!0x1,_0x10fe5e[_0x350673('0xbb2')]=!0x0,'value'in _0x10fe5e&&(_0x10fe5e[_0x350673('0x4db')]=!0x0),Object[_0x350673('0xa95')](_0x3c871a,_0x10fe5e['key'],_0x10fe5e);}}function _0x1b1a12(_0x3c39ad,_0x3e6ee0){var _0x2b1c09=_0x3ab6;return!_0x3e6ee0||_0x2b1c09('0x21e')!==_0x46b399(_0x3e6ee0)&&_0x2b1c09('0xae9')!=typeof _0x3e6ee0?function(_0xb12def){var _0x2274e7=_0x2b1c09;if(void 0x0===_0xb12def)throw new ReferenceError(_0x2274e7('0x2e9'));return _0xb12def;}(_0x3c39ad):_0x3e6ee0;}function _0x3b5c74(){var _0x394f07=_0x3ab6;if(_0x394f07('0x56')==typeof Reflect||!Reflect[_0x394f07('0x6ea')])return!0x1;if(Reflect[_0x394f07('0x6ea')][_0x394f07('0x16e')])return!0x1;if(_0x394f07('0xae9')==typeof Proxy)return!0x0;try{return Date[_0x394f07('0x98c')][_0x394f07('0x537')][_0x394f07('0x4b0')](Reflect[_0x394f07('0x6ea')](Date,[],function(){})),!0x0;}catch(_0x4cb966){return!0x1;}}function _0x3b00ff(_0x312afb){var _0x1baaa0=_0x3ab6;return(_0x3b00ff=Object['setPrototypeOf']?Object[_0x1baaa0('0x10c0')]:function(_0x958fe8){var _0x4e0d92=_0x1baaa0;return _0x958fe8[_0x4e0d92('0x11e6')]||Object['getPrototypeOf'](_0x958fe8);})(_0x312afb);}function _0x5e611a(_0x9e680a,_0x54b30e){var _0x40aaa9=_0x3ab6;return(_0x5e611a=Object[_0x40aaa9('0x6c2')]||function(_0x25c926,_0x25906e){var _0xdccc89=_0x40aaa9;return _0x25c926[_0xdccc89('0x11e6')]=_0x25906e,_0x25c926;})(_0x9e680a,_0x54b30e);}Object[_0x1ddcba('0xa95')](_0x3c64f8,'__esModule',{'value':!0x0}),_0x3c64f8[_0x1ddcba('0x544')]=void 0x0;var _0x24aeb7=function(_0x370051){var _0x18d7d2=_0x1ddcba;!function(_0x56b342,_0x1bea86){var _0x2fe44d=_0x3ab6;if(_0x2fe44d('0xae9')!=typeof _0x1bea86&&null!==_0x1bea86)throw new TypeError(_0x2fe44d('0x409'));_0x56b342[_0x2fe44d('0x98c')]=Object['create'](_0x1bea86&&_0x1bea86[_0x2fe44d('0x98c')],{'constructor':{'value':_0x56b342,'writable':!0x0,'configurable':!0x0}}),_0x1bea86&&_0x5e611a(_0x56b342,_0x1bea86);}(_0x2ec57a,_0x370051);var _0x59bb01,_0x3717b9,_0x242f8b,_0x8c80d4,_0x31c0ff=(_0x59bb01=_0x2ec57a,function(){var _0x59675b=_0x3ab6,_0x5618d2,_0x36965f=_0x3b00ff(_0x59bb01);if(_0x3b5c74()){var _0x4bebdb=_0x3b00ff(this)[_0x59675b('0x3c6')];_0x5618d2=Reflect[_0x59675b('0x6ea')](_0x36965f,arguments,_0x4bebdb);}else _0x5618d2=_0x36965f[_0x59675b('0x1036')](this,arguments);return _0x1b1a12(this,_0x5618d2);});function _0x2ec57a(_0x53d9bb,_0x11947c,_0x5adbd4,_0x942bba){var _0x13103b=_0x3ab6,_0x184541;return function(_0xd4cdc5,_0x6e5862){var _0x25f179=_0x3ab6;if(!(_0xd4cdc5 instanceof _0x6e5862))throw new TypeError(_0x25f179('0x202'));}(this,_0x2ec57a),(_0x184541=_0x31c0ff['call'](this,_0x53d9bb,_0x11947c,_0x5adbd4,_0x942bba))[_0x13103b('0x381')]={},_0x184541['modulePath']='',_0x184541['rowFieldName']='',_0x184541[_0x13103b('0xac9')]='',_0x184541[_0x13103b('0x48c')]='',_0x184541[_0x13103b('0xe9d')]='',_0x184541[_0x13103b('0x53f')]='',_0x184541[_0x13103b('0x6e4')]=[],_0x184541[_0x13103b('0x7d5')]={},_0x184541;}return _0x3717b9=_0x2ec57a,(_0x242f8b=[{'key':'setModulePath','value':function(_0x339883){this['modulePath']=_0x339883;}},{'key':_0x18d7d2('0x3ce'),'value':function(_0x39a527){this['rowFieldName']=_0x39a527;}},{'key':_0x18d7d2('0xc5f'),'value':function(_0x1b0f45,_0x3c2809,_0xd0ce7){var _0x15ef06=_0x18d7d2;this['rowTable']=_0x1b0f45,this[_0x15ef06('0xe9d')]=_0x3c2809,this[_0x15ef06('0x53f')]=_0xd0ce7;}},{'key':_0x18d7d2('0x2b0'),'value':function(_0x4c01ff){var _0x231a1f=_0x18d7d2;this[_0x231a1f('0xac9')]=_0x4c01ff;}},{'key':_0x18d7d2('0x315'),'value':function(){return[];}},{'key':_0x18d7d2('0xfe3'),'value':function(){return[];}},{'key':_0x18d7d2('0x33'),'value':function(){var _0x560673=_0x18d7d2;this[_0x560673('0x81d')]();}},{'key':_0x18d7d2('0x81d'),'value':function(_0x2da1ee){var _0x3ba663=_0x18d7d2,_0x2b1a55={};_0x2b1a55[_0x3ba663('0x48c')]=this[_0x3ba663('0x48c')],_0x2b1a55[_0x3ba663('0xe9d')]=this[_0x3ba663('0xe9d')],_0x2b1a55[_0x3ba663('0x53f')]=this['valueTable'],(_0x2b1a55=this[_0x3ba663('0xe58')](_0x3ba663('0x81d'),_0x2b1a55))[_0x3ba663('0xc68')]=void 0x0===_0x2da1ee||null==_0x2da1ee||!0x1===_0x2da1ee?0x0:0x1;var _0x157d88=JSON[_0x3ba663('0x591')](_0x2b1a55),_0x524e46=[];_0x524e46[_0x3ba663('0x234')]=[],_0x524e46[_0x3ba663('0xf53')]=_0x3ba663('0x70'),_0x524e46[_0x3ba663('0xb7f')]=_0x3ba663('0x7f6'),this['customAction'](_0x3ba663('0x81d'),this[_0x3ba663('0x9d2')],_0x157d88,_0x524e46);}},{'key':_0x18d7d2('0x1086'),'value':function(_0x2831f8,_0x3a52e6,_0x44765d){var _0x57c4cc=_0x18d7d2,_0x52d0e0=_0x44765d[0x1],_0x14bff5=_0x44765d[0x0],_0x562ef9=_0x44765d[0x2];return-0x1===_0x3a52e6?_0x14bff5[_0x2831f8]['name']:this[_0x57c4cc('0x10ef')](this[_0x57c4cc('0xf69')],_0x14bff5[_0x2831f8]['id'],this[_0x57c4cc('0xac9')],_0x52d0e0[_0x3a52e6]['id'],_0x562ef9);}},{'key':_0x18d7d2('0x10ef'),'value':function(_0x595520,_0x26c6de,_0x54c990,_0x1ed6d7,_0x58ab3c){var _0x29f992=_0x18d7d2;for(var _0xee7fc2=0x0;_0xee7fc2<_0x58ab3c[_0x29f992('0x525')];_0xee7fc2++)if(_0x58ab3c[_0xee7fc2][_0x595520]===_0x26c6de&&_0x58ab3c[_0xee7fc2][_0x54c990]===_0x1ed6d7)return void 0x0!==_0x58ab3c[_0xee7fc2][_0x29f992('0x10d2')]&&null!=_0x58ab3c[_0xee7fc2][_0x29f992('0x10d2')]?_0x58ab3c[_0xee7fc2][_0x29f992('0x10d2')]:'';return'';}},{'key':_0x18d7d2('0x70'),'value':function(_0x125de7){var _0x527aa2=_0x18d7d2;for(var _0x7a046e=_0x125de7[0x2],_0x2139eb=_0x125de7[0x1],_0x4e87ab=_0x125de7[0x0],_0x3b8e91=[],_0x337f6b=0x0;_0x337f6b<_0x4e87ab['length'];_0x337f6b++){for(var _0x267444=[],_0x239f03=-0x1;_0x239f03<_0x2139eb[_0x527aa2('0x525')];_0x239f03++)_0x267444[_0x239f03+0x1]=this[_0x527aa2('0x1086')](_0x337f6b,_0x239f03,_0x125de7);_0x3b8e91[_0x527aa2('0x8f8')](this['preProcessTableData'](_0x267444));}this[_0x527aa2('0x2b5')]=_0x7a046e,this['tableData']=_0x3b8e91,this[_0x527aa2('0x241')](_0x2139eb,_0x4e87ab),this['createTable'](this[_0x527aa2('0x107b')]()),$('#'[_0x527aa2('0x3cc')](this['getTableName'](),_0x527aa2('0x5ac')))[_0x527aa2('0x9c2')](),$('#'[_0x527aa2('0x3cc')](this[_0x527aa2('0x107b')]()))[_0x527aa2('0x41b')](),this[_0x527aa2('0x6e4')]=[];for(var _0x4445db=[],_0x3f3b3a=0x0;_0x3f3b3a<_0x2139eb['length'];_0x3f3b3a++)_0x4445db['push'](_0x2139eb[_0x3f3b3a]['name']);_0x4445db=this[_0x527aa2('0x624')](_0x4445db),this['csvData'][_0x527aa2('0x8f8')](_0x4445db);for(var _0xbfd5c6=0x0;_0xbfd5c6<_0x3b8e91[_0x527aa2('0x525')];_0xbfd5c6++)this[_0x527aa2('0x6e4')]['push'](_0x3b8e91[_0xbfd5c6]);}},{'key':'modifyCSVHeader','value':function(_0x332745){return _0x332745;}},{'key':_0x18d7d2('0x7f6'),'value':function(_0x1c59d7,_0x2b7318){}},{'key':_0x18d7d2('0x241'),'value':function(_0x38079b,_0x51ed4d){var _0x2e9499=_0x18d7d2,_0x26d797=[];_0x26d797[_0x2e9499('0x8f8')]({'sTitle':'','sWidth':_0x2e9499('0x11a5')});var _0x383c20='';this['columnIDMap']={};for(var _0x502f60=0x0;_0x502f60<_0x38079b['length'];_0x502f60++)this[_0x2e9499('0x7d5')][_0x38079b[_0x502f60]['id']]=_0x502f60,_0x383c20=void 0x0===_0x38079b[_0x502f60][_0x2e9499('0x26f')]||null==_0x38079b[_0x502f60][_0x2e9499('0x26f')]||_0x2e9499('0x9a3')===_0x38079b[_0x502f60][_0x2e9499('0x26f')]?'editcell':'',_0x26d797['push']({'sTitle':_0x38079b[_0x502f60]['name'],'sClass':_0x383c20,'fnCreatedCell':function(_0x1087c4,_0x3f9651,_0x5a6e76,_0x4e234c,_0x260b48){var _0x28efa0=_0x2e9499;$(_0x1087c4)[_0x28efa0('0xac8')](_0x28efa0('0x10aa'),_0x38079b[_0x260b48-0x1]['id']),$(_0x1087c4)[_0x28efa0('0xac8')](_0x28efa0('0x864'),_0x51ed4d[_0x4e234c]['id']);}});this[_0x2e9499('0x26d')]=_0x26d797;}},{'key':_0x18d7d2('0x5d2'),'value':function(){var _0x471ea0=_0x18d7d2;return this[_0x471ea0('0x26d')];}},{'key':_0x18d7d2('0x38d'),'value':function(_0xc84c72){var _0x49b4da=_0x18d7d2,_0x3bbbef,_0x121580=this[_0x49b4da('0xa8b')](),_0x2c63b3=this[_0x49b4da('0x5d2')]();if(this[_0x49b4da('0x764')]()&&_0x2c63b3[_0x49b4da('0x8f8')]({'sTitle':'','sClass':_0x49b4da('0x1ed')}),this['showActionButtons']())for(var _0x240566=0x0;_0x240566<_0x121580['length'];_0x240566++)_0x121580[_0x240566][_0x49b4da('0x8f8')](this['getActionButtonsHtml'](_0x121580[_0x240566][0x0],_0x121580[_0x240566]));_0x3bbbef=''['concat'](this[_0x49b4da('0x883')](),_0x49b4da('0x1056'));var _0x59ab64=$('#'[_0x49b4da('0x3cc')](_0xc84c72,_0x49b4da('0x1ca')))[_0x49b4da('0xb07')](),_0x45a4cc=0x0;void 0x0!==_0x59ab64&&null!=_0x59ab64&&(_0x45a4cc=0xf*parseInt(_0x59ab64,0xa)-0xf),$('#'[_0x49b4da('0x3cc')](_0xc84c72))['html'](_0x3bbbef);var _0x5301fb={'oLanguage':{'sLengthMenu':_0x49b4da('0x203')},'aaData':_0x121580,'aoColumns':_0x2c63b3,'bSort':!0x1,'iDisplayLength':0xf,'iDisplayStart':_0x45a4cc},_0x3225e9=this[_0x49b4da('0x1122')]();$[_0x49b4da('0x1158')](_0x5301fb,_0x3225e9),$('#'['concat'](_0xc84c72,_0x49b4da('0x6ef')))['dataTable'](_0x5301fb),$(_0x49b4da('0x99'))[_0x49b4da('0x25b')](_0x49b4da('0x38f')),$(_0x49b4da('0x5c7'))[_0x49b4da('0x9c2')](),$(_0x49b4da('0x46a'))[_0x49b4da('0x25b')](_0x49b4da('0x9cd')),$(_0x49b4da('0x46a'))[_0x49b4da('0xba5')](_0x49b4da('0x7c2'),_0x49b4da('0x8a')),$(_0x49b4da('0x5c1'))[_0x49b4da('0xf1e')]()[_0x49b4da('0x4fb')](function(){return 0x3===this['nodeType'];})[_0x49b4da('0x109c')](),$('#'[_0x49b4da('0x3cc')](_0xc84c72,_0x49b4da('0x6ef')))[_0x49b4da('0x742')](),$('#'[_0x49b4da('0x3cc')](_0xc84c72,_0x49b4da('0xd82')))['on'](_0x49b4da('0x705'),function(_0x46eb84,_0x2cf18b){var _0x3c65fd=_0x49b4da;return modJs[_0x3c65fd('0x717')]($(this),_0x46eb84,_0x2cf18b);}),this['afterCreateTable'](_0xc84c72);}},{'key':'afterCreateTable','value':function(_0x2d02cd){}},{'key':'addCellDataUpdate','value':function(_0x3d3895,_0x47d324,_0x22316b){var _0x20b739=_0x18d7d2;this['cellDataUpdates'][''[_0x20b739('0x3cc')](_0x3d3895,'=')[_0x20b739('0x3cc')](_0x47d324)]=[_0x3d3895,_0x47d324,_0x22316b];}},{'key':'addAdditionalRequestData','value':function(_0x134c7b,_0x239be1){return _0x239be1;}},{'key':_0x18d7d2('0x7d1'),'value':function(){var _0x569a4a=_0x18d7d2,_0x447463=this[_0x569a4a('0x381')];_0x447463[_0x569a4a('0x48c')]=this[_0x569a4a('0x48c')],_0x447463[_0x569a4a('0xe9d')]=this[_0x569a4a('0xe9d')],_0x447463[_0x569a4a('0x53f')]=this[_0x569a4a('0x53f')],_0x447463=this[_0x569a4a('0xe58')](_0x569a4a('0x8f6'),_0x447463);var _0x169d3c=JSON[_0x569a4a('0x591')](_0x447463),_0x386a92=[];_0x386a92[_0x569a4a('0x234')]=[],_0x386a92[_0x569a4a('0xf53')]=_0x569a4a('0x88'),_0x386a92[_0x569a4a('0xb7f')]=_0x569a4a('0x1c7'),this[_0x569a4a('0x304')](),this['customAction']('updateData',this[_0x569a4a('0x9d2')],_0x169d3c,_0x386a92);}},{'key':_0x18d7d2('0x88'),'value':function(_0x5be038,_0x3db34f){var _0x37789a=_0x18d7d2;this[_0x37789a('0x7e9')](),modJs[_0x37789a('0x381')]={},modJs[_0x37789a('0x33')]();}},{'key':_0x18d7d2('0x1c7'),'value':function(_0x4afef7,_0xdd7555){var _0x59089f=_0x18d7d2;this[_0x59089f('0x7e9')]();}},{'key':_0x18d7d2('0xc8f'),'value':function(){var _0x266de6=_0x18d7d2,_0xe876ab=this[_0x266de6('0x381')];_0xe876ab['rowTable']=this[_0x266de6('0x48c')],_0xe876ab[_0x266de6('0xe9d')]=this['columnTable'],_0xe876ab[_0x266de6('0x53f')]=this[_0x266de6('0x53f')],_0xe876ab=this['addAdditionalRequestData'](_0x266de6('0xb89'),_0xe876ab);var _0x19dea0=JSON['stringify'](_0xe876ab),_0x5dc725=[];_0x5dc725['callBackData']=[],_0x5dc725['callBackSuccess']=_0x266de6('0xf80'),_0x5dc725[_0x266de6('0xb7f')]=_0x266de6('0x6aa'),this['showLoader'](),this[_0x266de6('0x960')]('updateAllData',this[_0x266de6('0x9d2')],_0x19dea0,_0x5dc725);}},{'key':_0x18d7d2('0xf80'),'value':function(_0x13a9d9,_0x534435){var _0x45bb7a=_0x18d7d2;this[_0x45bb7a('0x7e9')](),modJs[_0x45bb7a('0x381')]={},modJs[_0x45bb7a('0x81d')](!0x0);}},{'key':_0x18d7d2('0x6aa'),'value':function(_0x3e72da,_0x1a4494){var _0x4050ad=_0x18d7d2;this[_0x4050ad('0x7e9')]();}},{'key':_0x18d7d2('0x764'),'value':function(){return!0x1;}}])&&_0x23f16d(_0x3717b9['prototype'],_0x242f8b),_0x8c80d4&&_0x23f16d(_0x3717b9,_0x8c80d4),_0x2ec57a;}(((_0xd27657=_0x32cf10(_0x1ddcba('0x118c')))&&_0xd27657['__esModule']?_0xd27657:{'default':_0xd27657})[_0x1ddcba('0x544')]);_0x3c64f8[_0x1ddcba('0x544')]=_0x24aeb7;},{'./AdapterBase':0x39}],0x49:[function(_0x594dac,_0x8ee3f8,_0x3018b4){var _0x3b0a0a=_0x404097;'use strict';function _0x8a056(_0xb99fbd){var _0x15d496=_0x3ab6;return(_0x8a056=_0x15d496('0xae9')==typeof Symbol&&_0x15d496('0x245')==typeof Symbol['iterator']?function(_0xbeb0e0){return typeof _0xbeb0e0;}:function(_0x3da3c5){var _0x3a83c9=_0x15d496;return _0x3da3c5&&'function'==typeof Symbol&&_0x3da3c5[_0x3a83c9('0x3c6')]===Symbol&&_0x3da3c5!==Symbol[_0x3a83c9('0x98c')]?'symbol':typeof _0x3da3c5;})(_0xb99fbd);}Object[_0x3b0a0a('0xa95')](_0x3018b4,_0x3b0a0a('0x114c'),{'value':!0x0}),_0x3018b4['default']=void 0x0;var _0x49f550=function(_0x3f0ca6){var _0x45f7aa=_0x3b0a0a;if(_0x3f0ca6&&_0x3f0ca6[_0x45f7aa('0x114c')])return _0x3f0ca6;if(null===_0x3f0ca6||_0x45f7aa('0x21e')!==_0x8a056(_0x3f0ca6)&&_0x45f7aa('0xae9')!=typeof _0x3f0ca6)return{'default':_0x3f0ca6};var _0x5bc80b=_0x2011e0();if(_0x5bc80b&&_0x5bc80b['has'](_0x3f0ca6))return _0x5bc80b[_0x45f7aa('0x33')](_0x3f0ca6);var _0x54dec3={},_0x84334f=Object['defineProperty']&&Object['getOwnPropertyDescriptor'];for(var _0x88f6ea in _0x3f0ca6)if(Object[_0x45f7aa('0x98c')][_0x45f7aa('0x100')][_0x45f7aa('0x4b0')](_0x3f0ca6,_0x88f6ea)){var _0x38c2fa=_0x84334f?Object[_0x45f7aa('0xa71')](_0x3f0ca6,_0x88f6ea):null;_0x38c2fa&&(_0x38c2fa['get']||_0x38c2fa[_0x45f7aa('0x11ce')])?Object[_0x45f7aa('0xa95')](_0x54dec3,_0x88f6ea,_0x38c2fa):_0x54dec3[_0x88f6ea]=_0x3f0ca6[_0x88f6ea];}return _0x54dec3[_0x45f7aa('0x544')]=_0x3f0ca6,_0x5bc80b&&_0x5bc80b[_0x45f7aa('0x11ce')](_0x3f0ca6,_0x54dec3),_0x54dec3;}(_0x594dac(_0x3b0a0a('0x1041'))),_0x239afb=_0x594dac(_0x3b0a0a('0xdcf'));function _0x2011e0(){if('function'!=typeof WeakMap)return null;var _0x4a2384=new WeakMap();return _0x2011e0=function(){return _0x4a2384;},_0x4a2384;}function _0x471c85(_0x1eefff,_0x1a6973){return function(_0x195fe4){var _0x503db3=_0x3ab6;if(Array[_0x503db3('0x6f6')](_0x195fe4))return _0x195fe4;}(_0x1eefff)||function(_0x3f3385,_0x1d70ab){var _0x39b753=_0x3ab6;if(_0x39b753('0x56')==typeof Symbol||!(Symbol[_0x39b753('0x78e')]in Object(_0x3f3385)))return;var _0x509572=[],_0x1da8de=!0x0,_0x330d5c=!0x1,_0x4dfca5=void 0x0;try{for(var _0x5462d1,_0x222af1=_0x3f3385[Symbol[_0x39b753('0x78e')]]();!(_0x1da8de=(_0x5462d1=_0x222af1['next']())[_0x39b753('0x10cf')])&&(_0x509572[_0x39b753('0x8f8')](_0x5462d1[_0x39b753('0x832')]),!_0x1d70ab||_0x509572[_0x39b753('0x525')]!==_0x1d70ab);_0x1da8de=!0x0);}catch(_0x58d741){_0x330d5c=!0x0,_0x4dfca5=_0x58d741;}finally{try{_0x1da8de||null==_0x222af1['return']||_0x222af1[_0x39b753('0x458')]();}finally{if(_0x330d5c)throw _0x4dfca5;}}return _0x509572;}(_0x1eefff,_0x1a6973)||function(_0x3f1de6,_0x4dbd1b){var _0x9e590=_0x3ab6;if(!_0x3f1de6)return;if(_0x9e590('0x7c7')==typeof _0x3f1de6)return _0x578752(_0x3f1de6,_0x4dbd1b);var _0x1415ba=Object['prototype']['toString']['call'](_0x3f1de6)[_0x9e590('0xbc0')](0x8,-0x1);_0x9e590('0x75')===_0x1415ba&&_0x3f1de6['constructor']&&(_0x1415ba=_0x3f1de6[_0x9e590('0x3c6')][_0x9e590('0x263')]);if('Map'===_0x1415ba||'Set'===_0x1415ba)return Array[_0x9e590('0x9d7')](_0x1415ba);if(_0x9e590('0xd3d')===_0x1415ba||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/[_0x9e590('0xaac')](_0x1415ba))return _0x578752(_0x3f1de6,_0x4dbd1b);}(_0x1eefff,_0x1a6973)||function(){var _0x34ffcf=_0x3ab6;throw new TypeError(_0x34ffcf('0x496'));}();}function _0x578752(_0x42a332,_0x225886){var _0x226991=_0x3b0a0a;(null==_0x225886||_0x225886>_0x42a332[_0x226991('0x525')])&&(_0x225886=_0x42a332[_0x226991('0x525')]);for(var _0x413733=0x0,_0x5d4162=new Array(_0x225886);_0x413733<_0x225886;_0x413733++)_0x5d4162[_0x413733]=_0x42a332[_0x413733];return _0x5d4162;}var _0x220026=function(_0x4a3bf2){var _0x284407=_0x3b0a0a,_0x420743=_0x4a3bf2['value'],_0x3d0877=_0x4a3bf2[_0x284407('0xe90')],_0x3933b2=_0x4a3bf2[_0x284407('0x1069')],_0x5c24c4=function(_0xa3bb91){var _0x4ea6ca=_0x284407,_0x4641a7=_0x471c85((0x0,_0x49f550[_0x4ea6ca('0x533')])(_0xa3bb91),0x2),_0x4a13c0=_0x4641a7[0x0],_0x5ee4b9=_0x4641a7[0x1],_0x2f89d9=(0x0,_0x49f550['useRef'])(null),_0x3e8f46=function(_0x5182dd){var _0x14633b=_0x4ea6ca;_0x2f89d9[_0x14633b('0x970')]&&!_0x2f89d9[_0x14633b('0x970')][_0x14633b('0x87d')](_0x5182dd[_0x14633b('0x616')])&&_0x5ee4b9(!0x1);};return(0x0,_0x49f550[_0x4ea6ca('0x142')])(function(){var _0x5e4212=_0x4ea6ca;return document[_0x5e4212('0x55')](_0x5e4212('0xd4d'),_0x3e8f46,!0x0),function(){var _0x12c66b=_0x5e4212;document[_0x12c66b('0x113b')](_0x12c66b('0xd4d'),_0x3e8f46,!0x0);};}),{'ref':_0x2f89d9,'isComponentVisible':_0x4a13c0,'setIsComponentVisible':_0x5ee4b9};}(!0x0),_0x626037=_0x5c24c4[_0x284407('0x1128')],_0x3a6c8f=_0x5c24c4[_0x284407('0x305')],_0xf12a14=_0x5c24c4[_0x284407('0x11d0')],_0x5f6e54=_0x471c85((0x0,_0x49f550[_0x284407('0x533')])(_0x420743||_0x284407('0xeb1')),0x2),_0x1226af=_0x5f6e54[0x0],_0x301aef=_0x5f6e54[0x1],_0x1b7d36=_0x471c85((0x0,_0x49f550[_0x284407('0x533')])(!0x1),0x2),_0x2c675e=_0x1b7d36[0x0],_0x5a4dee=_0x1b7d36[0x1];return(0x0,_0x49f550[_0x284407('0x142')])(function(){_0x3a6c8f||_0x5a4dee(!0x1);},[_0x3a6c8f]),(0x0,_0x49f550['useEffect'])(function(){_0x420743&&_0x301aef(_0x420743);},[_0x420743]),_0x49f550['default']['createElement'](_0x284407('0x7fc'),{'className':_0x284407('0xe38')},_0x49f550[_0x284407('0x544')][_0x284407('0xd0f')](_0x284407('0x7fc'),{'className':_0x284407('0x577'),'onClick':function(){_0x2c675e||_0xf12a14(!0x0),_0x5a4dee(!_0x2c675e);},'style':{'backgroundColor':_0x1226af}}),_0x49f550[_0x284407('0x544')]['createElement'](_0x284407('0x7fc'),{'ref':_0x626037,'className':_0x284407('0x10e9')[_0x284407('0x3cc')](_0x3933b2||!_0x2c675e?'hidden':'')},_0x49f550[_0x284407('0x544')][_0x284407('0xd0f')](_0x239afb[_0x284407('0xfb')],{'color':_0x1226af,'disableAlpha':!0x0,'presetColors':[],'onChangeComplete':function(_0x401d4b){var _0x54130a=_0x284407,_0x4bf890=_0x401d4b[_0x54130a('0xf2b')];_0x3d0877(_0x4bf890),_0x301aef(_0x4bf890);}})));};_0x3018b4['default']=_0x220026;},{'react':_0x404097('0x1041'),'react-color':0x168}],0x4a:[function(_0x4c7962,_0x3fbfd8,_0x242f8d){var _0x105fea=_0x404097;'use strict';Object[_0x105fea('0xa95')](_0x242f8d,_0x105fea('0x114c'),{'value':!0x0}),_0x242f8d[_0x105fea('0x544')]=void 0x0;var _0x185178=_0x2bc2f4(_0x4c7962(_0x105fea('0x1041'))),_0x2b5c45=_0x4c7962(_0x105fea('0xdb9')),_0x5d154d=_0x2bc2f4(_0x4c7962(_0x105fea('0x721'))),_0x223872=_0x2bc2f4(_0x4c7962(_0x105fea('0xd47')));function _0x2bc2f4(_0x1ceadc){var _0x253765=_0x105fea;return _0x1ceadc&&_0x1ceadc[_0x253765('0x114c')]?_0x1ceadc:{'default':_0x1ceadc};}function _0x5c03c3(_0x54672c){var _0x39819c=_0x105fea;return(_0x5c03c3=_0x39819c('0xae9')==typeof Symbol&&_0x39819c('0x245')==typeof Symbol[_0x39819c('0x78e')]?function(_0x4d004e){return typeof _0x4d004e;}:function(_0x4fdcff){var _0x1b8d2d=_0x39819c;return _0x4fdcff&&_0x1b8d2d('0xae9')==typeof Symbol&&_0x4fdcff[_0x1b8d2d('0x3c6')]===Symbol&&_0x4fdcff!==Symbol[_0x1b8d2d('0x98c')]?'symbol':typeof _0x4fdcff;})(_0x54672c);}function _0x46235b(_0x23ebcd,_0x5f3c32){var _0x215dd6=_0x105fea,_0x2bb227=Object[_0x215dd6('0x7ce')](_0x23ebcd);if(Object['getOwnPropertySymbols']){var _0x3dfd70=Object['getOwnPropertySymbols'](_0x23ebcd);_0x5f3c32&&(_0x3dfd70=_0x3dfd70[_0x215dd6('0x4fb')](function(_0xa4a83a){var _0x2f158e=_0x215dd6;return Object['getOwnPropertyDescriptor'](_0x23ebcd,_0xa4a83a)[_0x2f158e('0x156')];})),_0x2bb227['push']['apply'](_0x2bb227,_0x3dfd70);}return _0x2bb227;}function _0x1cf0da(_0x3ea983,_0x5c6aac,_0x194861){var _0x20fee6=_0x105fea;return _0x5c6aac in _0x3ea983?Object[_0x20fee6('0xa95')](_0x3ea983,_0x5c6aac,{'value':_0x194861,'enumerable':!0x0,'configurable':!0x0,'writable':!0x0}):_0x3ea983[_0x5c6aac]=_0x194861,_0x3ea983;}function _0x5e04fc(_0x3cc599,_0x5d6698){var _0x536a80=_0x105fea;for(var _0x1f0ea8=0x0;_0x1f0ea8<_0x5d6698[_0x536a80('0x525')];_0x1f0ea8++){var _0x38a2ab=_0x5d6698[_0x1f0ea8];_0x38a2ab['enumerable']=_0x38a2ab[_0x536a80('0x156')]||!0x1,_0x38a2ab[_0x536a80('0xbb2')]=!0x0,_0x536a80('0x832')in _0x38a2ab&&(_0x38a2ab[_0x536a80('0x4db')]=!0x0),Object[_0x536a80('0xa95')](_0x3cc599,_0x38a2ab[_0x536a80('0x1192')],_0x38a2ab);}}function _0x4f1844(_0x2d2fa5,_0x502bec){var _0x527c39=_0x105fea;return!_0x502bec||'object'!==_0x5c03c3(_0x502bec)&&_0x527c39('0xae9')!=typeof _0x502bec?function(_0x266cfb){var _0x378d67=_0x527c39;if(void 0x0===_0x266cfb)throw new ReferenceError(_0x378d67('0x2e9'));return _0x266cfb;}(_0x2d2fa5):_0x502bec;}function _0x1c78d1(){var _0x63842a=_0x105fea;if(_0x63842a('0x56')==typeof Reflect||!Reflect[_0x63842a('0x6ea')])return!0x1;if(Reflect['construct'][_0x63842a('0x16e')])return!0x1;if(_0x63842a('0xae9')==typeof Proxy)return!0x0;try{return Date[_0x63842a('0x98c')][_0x63842a('0x537')][_0x63842a('0x4b0')](Reflect[_0x63842a('0x6ea')](Date,[],function(){})),!0x0;}catch(_0x21c173){return!0x1;}}function _0x2237ca(_0x54a629){var _0x4e536f=_0x105fea;return(_0x2237ca=Object[_0x4e536f('0x6c2')]?Object[_0x4e536f('0x10c0')]:function(_0x217985){var _0x3668d0=_0x4e536f;return _0x217985[_0x3668d0('0x11e6')]||Object['getPrototypeOf'](_0x217985);})(_0x54a629);}function _0x5ddd6c(_0x44e0d2,_0x9c9916){var _0x172cfb=_0x105fea;return(_0x5ddd6c=Object[_0x172cfb('0x6c2')]||function(_0x496ce6,_0x32cb57){var _0x53dffc=_0x172cfb;return _0x496ce6[_0x53dffc('0x11e6')]=_0x32cb57,_0x496ce6;})(_0x44e0d2,_0x9c9916);}_0x2b5c45[_0x105fea('0x10dc')][_0x105fea('0xbd6')];var _0x521e5b=function(_0x5caee2){var _0x5e059c=_0x105fea;!function(_0x4315f9,_0x3be704){var _0x4ab532=_0x3ab6;if('function'!=typeof _0x3be704&&null!==_0x3be704)throw new TypeError(_0x4ab532('0x409'));_0x4315f9['prototype']=Object[_0x4ab532('0x5c2')](_0x3be704&&_0x3be704['prototype'],{'constructor':{'value':_0x4315f9,'writable':!0x0,'configurable':!0x0}}),_0x3be704&&_0x5ddd6c(_0x4315f9,_0x3be704);}(_0x38cde9,_0x5caee2);var _0x10a071,_0x39b51e,_0xb5cd7d,_0x5e2d20,_0x31936e=(_0x10a071=_0x38cde9,function(){var _0x407013=_0x3ab6,_0x283ffc,_0x5c7463=_0x2237ca(_0x10a071);if(_0x1c78d1()){var _0x4244f8=_0x2237ca(this)[_0x407013('0x3c6')];_0x283ffc=Reflect['construct'](_0x5c7463,arguments,_0x4244f8);}else _0x283ffc=_0x5c7463['apply'](this,arguments);return _0x4f1844(this,_0x283ffc);});function _0x38cde9(_0x27311d){var _0x55b9fc=_0x3ab6,_0x4cc586;return function(_0x3fdf3c,_0x247517){if(!(_0x3fdf3c instanceof _0x247517))throw new TypeError('Cannot\x20call\x20a\x20class\x20as\x20a\x20function');}(this,_0x38cde9),(_0x4cc586=_0x31936e[_0x55b9fc('0x4b0')](this,_0x27311d))[_0x55b9fc('0xfff')]={},_0x4cc586[_0x55b9fc('0xe90')]=_0x27311d['onChange'],_0x4cc586[_0x55b9fc('0xd9d')]=_0x185178[_0x55b9fc('0x544')][_0x55b9fc('0x797')](),_0x4cc586;}return _0x39b51e=_0x38cde9,(_0xb5cd7d=[{'key':_0x5e059c('0x80f'),'value':function(){var _0x3c123c=_0x5e059c,_0x2913e4=this,_0x3d0725=this['props'],_0x2396b6=_0x3d0725[_0x3c123c('0x48f')],_0x51180f=_0x3d0725[_0x3c123c('0x7fb')],_0x5f0a7f=this[_0x3c123c('0x6e0')][_0x3c123c('0x832')];_0x5f0a7f=(_0x5f0a7f=this[_0x3c123c('0x758')](_0x5f0a7f))[_0x3c123c('0xd49')](function(_0x18268d){return function(_0x3af9d8){var _0x55cc30=_0x3ab6;for(var _0x22d3e3=0x1;_0x22d3e3')),_0x3137a8=_0x3137a8['replace']('#_'['concat'](_0x15eadc,'_#'),_0x445b6d);}return void 0x0!==_0x35a822[0x1][_0x44ec41('0x80f')]&&null!=_0x35a822[0x1][_0x44ec41('0x80f')]&&(_0x3137a8=_0x3137a8[_0x44ec41('0x166')](_0x44ec41('0x21a'),_0x35a822[0x1]['render'](_0x5caf9c))),_0x185178['default']['createElement'](_0x2b5c45[_0x44ec41('0x117a')],{'key':_0x5caf9c['id'],'title':'','extra':this[_0x44ec41('0x1136')](_0x5caf9c['id'])},_0x185178[_0x44ec41('0x544')]['createElement']('div',{'dangerouslySetInnerHTML':{'__html':_0x3137a8}}));}},{'key':_0x5e059c('0x1136'),'value':function(_0x4c8c58){var _0x4931df=_0x5e059c,_0x9b2ae2=this;return _0x185178[_0x4931df('0x544')][_0x4931df('0xd0f')](_0x2b5c45[_0x4931df('0x3ff')],null,_0x185178['default'][_0x4931df('0xd0f')]('a',{'href':'#','onClick':function(){_0x9b2ae2['editDataGroupItem'](_0x4c8c58);}},_0x185178[_0x4931df('0x544')][_0x4931df('0xd0f')]('li',{'className':_0x4931df('0x3cf')})),_0x185178[_0x4931df('0x544')][_0x4931df('0xd0f')]('a',{'href':'#','onClick':function(){var _0x115ad6=_0x4931df;_0x9b2ae2[_0x115ad6('0x2a7')](_0x4c8c58);}},_0x185178[_0x4931df('0x544')]['createElement']('li',{'className':'fa\x20fa-times'})));}},{'key':_0x5e059c('0x2a7'),'value':function(_0x2b5abd){var _0x462301=_0x5e059c;for(var _0x28cc4a=this[_0x462301('0x6e0')]['value'],_0x21e6f0=this[_0x462301('0x758')](_0x28cc4a),_0x2bd551=[],_0x5ca394=0x0;_0x5ca394<_0x21e6f0['length'];_0x5ca394++){var _0xa13c19=_0x21e6f0[_0x5ca394];_0xa13c19['id']!==_0x2b5abd&&_0x2bd551[_0x462301('0x8f8')](_0xa13c19);}var _0x404d0a=JSON[_0x462301('0x591')](_0x2bd551);this[_0x462301('0xe90')](_0x404d0a);}},{'key':_0x5e059c('0xc92'),'value':function(_0x1db9dd){var _0x15e7d7=_0x5e059c;for(var _0x486d02=this[_0x15e7d7('0x6e0')],_0x4ebc3d=_0x486d02['field'],_0x395e37=_0x486d02['adapter'],_0xfa1852=_0x486d02['value'],_0xac7b6b=this['parseValue'](_0xfa1852),_0x2e7dc0={},_0x24eaf3=0x0;_0x24eaf3<_0xac7b6b[_0x15e7d7('0x525')];_0x24eaf3++){var _0x5de779=_0xac7b6b[_0x24eaf3];_0x5de779['id']===_0x1db9dd&&(_0x2e7dc0=_0x5de779);}this['createForm'](_0x4ebc3d,_0x395e37,_0x2e7dc0);}},{'key':_0x5e059c('0x9db'),'value':function(){var _0x2eaa4a=_0x5e059c;this[_0x2eaa4a('0xe90')]('[]');}},{'key':_0x5e059c('0xe2f'),'value':function(_0x58bf49){var _0xfcdcdc=_0x5e059c;for(var _0x5f2a52,_0x368bd6=0x1,_0x3ac126=0x0;_0x3ac126<_0x58bf49[_0xfcdcdc('0x525')];_0x3ac126++){var _0x33042e=_0x58bf49[_0x3ac126];void 0x0!==_0x33042e['id']&&null!=_0x33042e['id']||(_0x33042e['id']=0x1),(_0x5f2a52=_0x33042e['id'][_0xfcdcdc('0x413')](_0x33042e['id'][_0xfcdcdc('0x2f4')]('_')+0x1,_0x33042e['id'][_0xfcdcdc('0x525')]))>=_0x368bd6&&(_0x368bd6=parseInt(_0x5f2a52,0xa)+0x1);}return _0x368bd6;}}])&&_0x5e04fc(_0x39b51e[_0x5e059c('0x98c')],_0xb5cd7d),_0x5e2d20&&_0x5e04fc(_0x39b51e,_0x5e2d20),_0x38cde9;}(_0x185178[_0x105fea('0x544')]['Component']);_0x242f8d[_0x105fea('0x544')]=_0x521e5b;},{'./IceFormModal':0x4c,'antd':_0x404097('0xdb9'),'react':_0x404097('0x1041'),'react-dom':_0x404097('0xd47')}],0x4b:[function(_0x1dd974,_0x572018,_0x5a1eba){var _0x33061d=_0x404097;'use strict';Object[_0x33061d('0xa95')](_0x5a1eba,_0x33061d('0x114c'),{'value':!0x0}),_0x5a1eba[_0x33061d('0x544')]=void 0x0;var _0x570052=_0x23b3a1(_0x1dd974(_0x33061d('0x1041'))),_0x5b6e74=_0x1dd974(_0x33061d('0xdb9')),_0x210f73=_0x23b3a1(_0x1dd974(_0x33061d('0xf7b'))),_0xd9da9c=_0x23b3a1(_0x1dd974(_0x33061d('0xf09'))),_0x1d9a8a=_0x23b3a1(_0x1dd974(_0x33061d('0x9a0'))),_0x36bad6=_0x23b3a1(_0x1dd974('./IceSelect')),_0x504ba3=_0x23b3a1(_0x1dd974(_0x33061d('0x6ab'))),_0x1fe5a6=_0x23b3a1(_0x1dd974(_0x33061d('0x1100'))),_0x8d2916=_0x23b3a1(_0x1dd974(_0x33061d('0xaf2')));function _0x23b3a1(_0x139a71){var _0x3268f1=_0x33061d;return _0x139a71&&_0x139a71[_0x3268f1('0x114c')]?_0x139a71:{'default':_0x139a71};}function _0x33cfd5(_0x2e7f17){return(_0x33cfd5='function'==typeof Symbol&&'symbol'==typeof Symbol['iterator']?function(_0x1aab2a){return typeof _0x1aab2a;}:function(_0x52bf4a){var _0x2d797c=_0x3ab6;return _0x52bf4a&&_0x2d797c('0xae9')==typeof Symbol&&_0x52bf4a[_0x2d797c('0x3c6')]===Symbol&&_0x52bf4a!==Symbol[_0x2d797c('0x98c')]?_0x2d797c('0x245'):typeof _0x52bf4a;})(_0x2e7f17);}function _0x233e31(_0x28d658,_0x14b355){return function(_0x300732){var _0x131ad3=_0x3ab6;if(Array[_0x131ad3('0x6f6')](_0x300732))return _0x300732;}(_0x28d658)||function(_0x325e2d,_0x592fac){var _0x58821c=_0x3ab6;if('undefined'==typeof Symbol||!(Symbol[_0x58821c('0x78e')]in Object(_0x325e2d)))return;var _0x12cb4d=[],_0x1f3320=!0x0,_0x3a4486=!0x1,_0x8fb254=void 0x0;try{for(var _0x37e536,_0x4a12b4=_0x325e2d[Symbol[_0x58821c('0x78e')]]();!(_0x1f3320=(_0x37e536=_0x4a12b4[_0x58821c('0x4d7')]())[_0x58821c('0x10cf')])&&(_0x12cb4d[_0x58821c('0x8f8')](_0x37e536[_0x58821c('0x832')]),!_0x592fac||_0x12cb4d[_0x58821c('0x525')]!==_0x592fac);_0x1f3320=!0x0);}catch(_0x39536c){_0x3a4486=!0x0,_0x8fb254=_0x39536c;}finally{try{_0x1f3320||null==_0x4a12b4[_0x58821c('0x458')]||_0x4a12b4[_0x58821c('0x458')]();}finally{if(_0x3a4486)throw _0x8fb254;}}return _0x12cb4d;}(_0x28d658,_0x14b355)||function(_0x567259,_0x18c97d){var _0x440375=_0x3ab6;if(!_0x567259)return;if(_0x440375('0x7c7')==typeof _0x567259)return _0x20c0c0(_0x567259,_0x18c97d);var _0x2cafc9=Object[_0x440375('0x98c')][_0x440375('0x537')]['call'](_0x567259)[_0x440375('0xbc0')](0x8,-0x1);'Object'===_0x2cafc9&&_0x567259[_0x440375('0x3c6')]&&(_0x2cafc9=_0x567259[_0x440375('0x3c6')][_0x440375('0x263')]);if(_0x440375('0xd27')===_0x2cafc9||_0x440375('0x621')===_0x2cafc9)return Array[_0x440375('0x9d7')](_0x2cafc9);if(_0x440375('0xd3d')===_0x2cafc9||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/['test'](_0x2cafc9))return _0x20c0c0(_0x567259,_0x18c97d);}(_0x28d658,_0x14b355)||function(){var _0x241d30=_0x3ab6;throw new TypeError(_0x241d30('0x496'));}();}function _0x20c0c0(_0x57bd21,_0x45af59){var _0x21722e=_0x33061d;(null==_0x45af59||_0x45af59>_0x57bd21[_0x21722e('0x525')])&&(_0x45af59=_0x57bd21[_0x21722e('0x525')]);for(var _0x1d08f5=0x0,_0x51e6ec=new Array(_0x45af59);_0x1d08f5<_0x45af59;_0x1d08f5++)_0x51e6ec[_0x1d08f5]=_0x57bd21[_0x1d08f5];return _0x51e6ec;}function _0xce4bab(_0x3e97a4,_0x4db998){var _0x4dc0d2=_0x33061d;for(var _0x1061dd=0x0;_0x1061dd<_0x4db998[_0x4dc0d2('0x525')];_0x1061dd++){var _0x29c697=_0x4db998[_0x1061dd];_0x29c697[_0x4dc0d2('0x156')]=_0x29c697[_0x4dc0d2('0x156')]||!0x1,_0x29c697[_0x4dc0d2('0xbb2')]=!0x0,'value'in _0x29c697&&(_0x29c697[_0x4dc0d2('0x4db')]=!0x0),Object[_0x4dc0d2('0xa95')](_0x3e97a4,_0x29c697[_0x4dc0d2('0x1192')],_0x29c697);}}function _0x47ec51(_0x522351,_0x2ecc9d){return!_0x2ecc9d||'object'!==_0x33cfd5(_0x2ecc9d)&&'function'!=typeof _0x2ecc9d?function(_0x2bc4e3){if(void 0x0===_0x2bc4e3)throw new ReferenceError('this\x20hasn\x27t\x20been\x20initialised\x20-\x20super()\x20hasn\x27t\x20been\x20called');return _0x2bc4e3;}(_0x522351):_0x2ecc9d;}function _0x28f267(){var _0x4c0834=_0x33061d;if(_0x4c0834('0x56')==typeof Reflect||!Reflect[_0x4c0834('0x6ea')])return!0x1;if(Reflect[_0x4c0834('0x6ea')][_0x4c0834('0x16e')])return!0x1;if(_0x4c0834('0xae9')==typeof Proxy)return!0x0;try{return Date[_0x4c0834('0x98c')][_0x4c0834('0x537')]['call'](Reflect['construct'](Date,[],function(){})),!0x0;}catch(_0x35fd0b){return!0x1;}}function _0x47ae4b(_0x18d2b2){var _0x22c873=_0x33061d;return(_0x47ae4b=Object[_0x22c873('0x6c2')]?Object[_0x22c873('0x10c0')]:function(_0x528213){var _0x50da17=_0x22c873;return _0x528213['__proto__']||Object[_0x50da17('0x10c0')](_0x528213);})(_0x18d2b2);}function _0x57f5c7(_0x32c64a,_0x156b9e){var _0x501f6e=_0x33061d;return(_0x57f5c7=Object[_0x501f6e('0x6c2')]||function(_0x271956,_0x1afa04){var _0x26e246=_0x501f6e;return _0x271956[_0x26e246('0x11e6')]=_0x1afa04,_0x271956;})(_0x32c64a,_0x156b9e);}var _0x32f0da={'float':function(_0x44b059){var _0x411f14=_0x33061d;return!(null==_0x44b059||!_0x44b059[_0x411f14('0x91e')](/^[-+]?[0-9]+(\.[0-9]+)?$/));},'number':function(_0x38924c){return!(null==_0x38924c||!_0x38924c['match'](/^[0-9]+$/));},'numberOrEmpty':function(_0x4065ac){var _0x2b3bd3=_0x33061d;if(''===_0x4065ac)return!0x0;return!(null==_0x4065ac||!_0x4065ac[_0x2b3bd3('0x91e')](/^[0-9]+$/));},'email':function(_0x4e0908){var _0x23d975=_0x33061d;return null!=_0x4e0908&&/^\s*[\w\-+_]+(\.[\w\-+_]+)*@[\w\-+_]+\.[\w\-+_]+(\.[\w\-+_]+)*\s*$/[_0x23d975('0xaac')](_0x4e0908);},'emailOrEmpty':function(_0x4db66b){var _0x195a6a=_0x33061d;if(''===_0x4db66b)return!0x0;return null!=_0x4db66b&&/^\s*[\w\-+_]+(\.[\w\-+_]+)*@[\w\-+_]+\.[\w\-+_]+(\.[\w\-+_]+)*\s*$/[_0x195a6a('0xaac')](_0x4db66b);},'username':function(_0x2aea27){return null!=_0x2aea27&&/^[a-zA-Z0-9.-]+$/['test'](_0x2aea27);}},_0x392e9b=function(_0x55f5a9){var _0x8f6da0=_0x33061d;!function(_0x30cd0d,_0x49d160){var _0x361a8d=_0x3ab6;if(_0x361a8d('0xae9')!=typeof _0x49d160&&null!==_0x49d160)throw new TypeError(_0x361a8d('0x409'));_0x30cd0d[_0x361a8d('0x98c')]=Object['create'](_0x49d160&&_0x49d160[_0x361a8d('0x98c')],{'constructor':{'value':_0x30cd0d,'writable':!0x0,'configurable':!0x0}}),_0x49d160&&_0x57f5c7(_0x30cd0d,_0x49d160);}(_0x3fdb2d,_0x55f5a9);var _0xe30ee,_0x490f68,_0x865ce6,_0x54cef8,_0x412f18=(_0xe30ee=_0x3fdb2d,function(){var _0x31b004=_0x3ab6,_0x1c9f9d,_0x4a6b85=_0x47ae4b(_0xe30ee);if(_0x28f267()){var _0x7251e=_0x47ae4b(this)[_0x31b004('0x3c6')];_0x1c9f9d=Reflect[_0x31b004('0x6ea')](_0x4a6b85,arguments,_0x7251e);}else _0x1c9f9d=_0x4a6b85[_0x31b004('0x1036')](this,arguments);return _0x47ec51(this,_0x1c9f9d);});function _0x3fdb2d(_0x24f89b){var _0x36a301=_0x3ab6,_0x180f02;return function(_0x1d2ba7,_0x314131){var _0x48e718=_0x3ab6;if(!(_0x1d2ba7 instanceof _0x314131))throw new TypeError(_0x48e718('0x202'));}(this,_0x3fdb2d),(_0x180f02=_0x412f18[_0x36a301('0x4b0')](this,_0x24f89b))[_0x36a301('0xbca')]={},_0x180f02[_0x36a301('0xfff')]={'validations':{},'errorMsg':!0x1},_0x180f02[_0x36a301('0xd9d')]=_0x570052[_0x36a301('0x544')][_0x36a301('0x797')](),_0x180f02;}return _0x490f68=_0x3fdb2d,(_0x865ce6=[{'key':_0x8f6da0('0xec1'),'value':function(_0x46c294){this['setState']({'errorMsg':_0x46c294});}},{'key':_0x8f6da0('0x7f1'),'value':function(){var _0x39481a=_0x8f6da0;this[_0x39481a('0x32b')]({'errorMsg':!0x1});}},{'key':'isReady','value':function(){var _0x239761=_0x8f6da0;return null!=this[_0x239761('0xd9d')]['current'];}},{'key':_0x8f6da0('0xf6c'),'value':function(){var _0x107cea=_0x8f6da0;return this[_0x107cea('0xd9d')][_0x107cea('0x970')]['validateFields']();}},{'key':'render','value':function(){var _0x55aad3=_0x8f6da0;for(var _0x3cf35d=this[_0x55aad3('0x6e0')],_0x50bcb2=_0x3cf35d[_0x55aad3('0x3e8')],_0xfee6d5=_0x3cf35d[_0x55aad3('0xa0f')],_0x382050=_0x3cf35d[_0x55aad3('0x7fb')],_0x4e7fe3=[],_0x9cef4e=[],_0x2a0aee=[],_0x2adb18=_0xfee6d5?0x2:0x1,_0x36fd90=0x0;_0x36fd90<_0x50bcb2[_0x55aad3('0x525')];_0x36fd90++)_0x4e7fe3[_0x55aad3('0x8f8')](_0x382050[_0x55aad3('0x4b8')](_0x50bcb2[_0x36fd90][0x0],this[_0x55aad3('0x83e')](_0x50bcb2[_0x36fd90],this['props'][_0x55aad3('0x11af')]),_0x50bcb2[_0x36fd90][0x1]));_0x4e7fe3=_0x4e7fe3[_0x55aad3('0x4fb')](function(_0x320823){return!!_0x320823;});for(var _0x318304=0x0;_0x318304<_0x4e7fe3[_0x55aad3('0x525')];_0x318304++)null!=_0x4e7fe3[_0x318304]&&(0x1===_0x2adb18||_0x318304%0x2==0x0?_0x9cef4e['push'](_0x4e7fe3[_0x318304]):_0x2a0aee[_0x55aad3('0x8f8')](_0x4e7fe3[_0x318304]));return _0x570052[_0x55aad3('0x544')]['createElement'](_0x5b6e74['Form'],{'ref':this[_0x55aad3('0xd9d')],'labelCol':{'span':0x6},'wrapperCol':{'span':0x10},'layout':this[_0x55aad3('0x6e0')][_0x55aad3('0x635')]||_0x55aad3('0xde3'),'initialValues':{'size':_0x55aad3('0x1e8')},'onValuesChange':function(){},'size':_0x55aad3('0x1e8')},this[_0x55aad3('0xfff')][_0x55aad3('0x664')]&&_0x570052[_0x55aad3('0x544')][_0x55aad3('0xd0f')](_0x570052[_0x55aad3('0x544')][_0x55aad3('0x6f4')],null,_0x570052[_0x55aad3('0x544')]['createElement'](_0x5b6e74['Alert'],{'message':this['state']['errorMsg'],'type':_0x55aad3('0x8d9'),'showIcon':!0x0}),_0x570052[_0x55aad3('0x544')][_0x55aad3('0xd0f')]('br',null)),0x1===_0x2adb18&&_0x9cef4e,0x2===_0x2adb18&&_0x570052[_0x55aad3('0x544')][_0x55aad3('0xd0f')](_0x5b6e74['Row'],{'gutter':0x10},_0x570052['default']['createElement'](_0x5b6e74[_0x55aad3('0xc2a')],{'className':_0x55aad3('0x70c'),'span':0xc},_0x9cef4e),_0x570052[_0x55aad3('0x544')][_0x55aad3('0xd0f')](_0x5b6e74[_0x55aad3('0xc2a')],{'className':_0x55aad3('0x70c'),'span':0xc},_0x2a0aee)));}},{'key':'isValid','value':function(){var _0x1d78e2=_0x8f6da0,_0x36ded1=this;return Object[_0x1d78e2('0x7ce')](this[_0x1d78e2('0xbca')])['reduce'](function(_0x5a465e,_0x59ca59){var _0x16dee5=_0x1d78e2;return _0x5a465e&&(_0x16dee5('0x38c')===_0x36ded1[_0x16dee5('0xfff')][_0x59ca59]||null==_0x36ded1[_0x16dee5('0xfff')][_0x59ca59]);},!0x0);}},{'key':_0x8f6da0('0xa12'),'value':function(_0x343b1b){var _0x922a0c=_0x8f6da0,_0x174f97=this[_0x922a0c('0xbca')][_0x343b1b[_0x922a0c('0x616')]['id']],_0x209b20=this[_0x922a0c('0xfff')][_0x922a0c('0x78f')];_0x174f97&&(_0x174f97['rule'](_0x343b1b[_0x922a0c('0x616')][_0x922a0c('0x832')])?(this[_0x922a0c('0xfff')][_0x343b1b[_0x922a0c('0x616')]['id']]=_0x922a0c('0x38c'),this[_0x922a0c('0xfff')][''[_0x922a0c('0x3cc')](_0x343b1b[_0x922a0c('0x616')]['id'],'_message')]=null):(this[_0x922a0c('0xfff')][_0x343b1b[_0x922a0c('0x616')]['id']]=_0x922a0c('0x8d9'),this[_0x922a0c('0xfff')][''[_0x922a0c('0x3cc')](_0x343b1b[_0x922a0c('0x616')]['id'],_0x922a0c('0x1145'))]=_0x174f97[_0x922a0c('0xa1a')])),this[_0x922a0c('0x32b')]({'validations':_0x209b20});}},{'key':_0x8f6da0('0x83e'),'value':function(_0x255583){var _0x2ed050=_0x8f6da0,_0x3a8188=arguments['length']>0x1&&void 0x0!==arguments[0x1]&&arguments[0x1],_0x2fcaf8=0x0,_0x3cc2d1=[],_0x2cafad={'required':!0x0},_0x12f748=_0x233e31(_0x255583,0x2),_0xa1ca0=_0x12f748[0x0],_0x31f8f5=_0x12f748[0x1],_0x345d80=this['props'],_0x10b7be=_0x345d80[_0x2ed050('0x7fb')],_0x339a54=_0x345d80['layout'],_0x1b3002=null;_0x31f8f5['label']=_0x10b7be['gt'](_0x31f8f5[_0x2ed050('0xf90')]);var _0x1607d5=_0x2ed050('0xd20')===_0x339a54?{'span':0x18}:{'span':0x6},_0xc9655f=[_0x2ed050('0x8ff'),_0x2ed050('0x1137'),_0x2ed050('0x256')];if(_0xc9655f[_0x2ed050('0x4dc')](_0x31f8f5[_0x2ed050('0x3f7')])>=0x0&&!0x0===_0x31f8f5[_0x2ed050('0x7a4')]||_0x2ed050('0x1c1')===_0x31f8f5[_0x2ed050('0x94d')]||'emailOrEmpty'===_0x31f8f5[_0x2ed050('0x94d')]||_0x2ed050('0xea4')===_0x31f8f5[_0x2ed050('0x94d')]?_0x2cafad[_0x2ed050('0x14e')]=!0x1:(_0x2cafad[_0x2ed050('0x14e')]=!0x0,_0x2cafad[_0x2ed050('0xa1a')]=this['generateFieldMessage'](_0x31f8f5['label'])),_0x3cc2d1[_0x2ed050('0x8f8')](_0x2cafad),'hidden'===_0x31f8f5[_0x2ed050('0x3f7')])return _0x2cafad[_0x2ed050('0x14e')]=!0x1,_0x570052[_0x2ed050('0x544')][_0x2ed050('0xd0f')](_0x5b6e74['Form'][_0x2ed050('0xd37')],{'labelCol':_0x1607d5,'style':{'display':_0x2ed050('0x1c1')},'label':_0x31f8f5['label'],'key':_0xa1ca0,'name':_0xa1ca0,'rules':_0x3cc2d1},_0x570052['default'][_0x2ed050('0xd0f')](_0x5b6e74[_0x2ed050('0x4f3')],null));if('text'===_0x31f8f5[_0x2ed050('0x3f7')])return _0x31f8f5[_0x2ed050('0x94d')]&&(_0x31f8f5[_0x2ed050('0x94d')]=_0x31f8f5[_0x2ed050('0x94d')]['replace'](_0x2ed050('0x1110'),''),(_0x1b3002=this['getValidationRule'](_0x31f8f5))&&(this[_0x2ed050('0xbca')][_0xa1ca0]={'rule':_0x1b3002,'message':'Invalid\x20value\x20for\x20'['concat'](_0x31f8f5[_0x2ed050('0xf90')])})),null!=_0x1b3002?_0x570052[_0x2ed050('0x544')][_0x2ed050('0xd0f')](_0x5b6e74[_0x2ed050('0x5ac')]['Item'],{'labelCol':_0x1607d5,'label':_0x31f8f5[_0x2ed050('0xf90')],'key':_0xa1ca0,'name':_0xa1ca0,'rules':_0x3cc2d1,'validateStatus':this[_0x2ed050('0xfff')][_0xa1ca0],'help':this[_0x2ed050('0xfff')][''[_0x2ed050('0x3cc')](_0xa1ca0,_0x2ed050('0x1145'))]},_0x3a8188?_0x570052[_0x2ed050('0x544')][_0x2ed050('0xd0f')](_0x504ba3[_0x2ed050('0x544')],null):_0x570052[_0x2ed050('0x544')][_0x2ed050('0xd0f')](_0x5b6e74[_0x2ed050('0x4f3')],{'onChange':this[_0x2ed050('0xa12')][_0x2ed050('0x11e5')](this)})):_0x570052[_0x2ed050('0x544')][_0x2ed050('0xd0f')](_0x5b6e74['Form'][_0x2ed050('0xd37')],{'labelCol':_0x1607d5,'label':_0x31f8f5[_0x2ed050('0xf90')],'key':_0xa1ca0,'name':_0xa1ca0,'rules':_0x3cc2d1},_0x3a8188?_0x570052[_0x2ed050('0x544')][_0x2ed050('0xd0f')](_0x504ba3[_0x2ed050('0x544')],null):_0x570052[_0x2ed050('0x544')][_0x2ed050('0xd0f')](_0x5b6e74['Input'],null));if(_0x2ed050('0xa2e')===_0x31f8f5[_0x2ed050('0x3f7')])return _0x31f8f5[_0x2ed050('0x9bc')]||(_0x31f8f5[_0x2ed050('0x9bc')]=0x4),_0x570052['default'][_0x2ed050('0xd0f')](_0x5b6e74[_0x2ed050('0x5ac')][_0x2ed050('0xd37')],{'labelCol':_0x1607d5,'label':_0x31f8f5[_0x2ed050('0xf90')],'key':_0xa1ca0,'name':_0xa1ca0,'rules':_0x3cc2d1},_0x3a8188?_0x570052[_0x2ed050('0x544')][_0x2ed050('0xd0f')](_0x504ba3[_0x2ed050('0x544')],null):_0x570052['default'][_0x2ed050('0xd0f')](_0x5b6e74[_0x2ed050('0x4f3')]['TextArea'],{'rows':_0x31f8f5[_0x2ed050('0x9bc')]}));if(_0x2ed050('0x65d')===_0x31f8f5['type'])return _0x570052[_0x2ed050('0x544')][_0x2ed050('0xd0f')](_0x5b6e74[_0x2ed050('0x5ac')][_0x2ed050('0xd37')],{'labelCol':_0x1607d5,'label':_0x31f8f5['label'],'key':_0xa1ca0,'name':_0xa1ca0,'rules':_0x3cc2d1},_0x570052[_0x2ed050('0x544')][_0x2ed050('0xd0f')](_0x5b6e74[_0x2ed050('0xde1')],{'disabled':_0x3a8188}));if(_0x2ed050('0xb6a')===_0x31f8f5['type'])return _0x570052['default']['createElement'](_0x5b6e74[_0x2ed050('0x5ac')][_0x2ed050('0xd37')],{'labelCol':_0x1607d5,'label':_0x31f8f5[_0x2ed050('0xf90')],'key':_0xa1ca0,'name':_0xa1ca0,'rules':_0x3cc2d1},_0x570052[_0x2ed050('0x544')][_0x2ed050('0xd0f')](_0x5b6e74[_0x2ed050('0xde1')],{'format':_0x2ed050('0xd43'),'disabled':_0x3a8188}));if(_0x2ed050('0x918')===_0x31f8f5[_0x2ed050('0x3f7')])return _0x570052[_0x2ed050('0x544')]['createElement'](_0x5b6e74[_0x2ed050('0x5ac')]['Item'],{'labelCol':_0x1607d5,'label':_0x31f8f5[_0x2ed050('0xf90')],'key':_0xa1ca0,'name':_0xa1ca0,'rules':_0x3cc2d1},_0x570052['default']['createElement'](_0x5b6e74['TimePicker'],{'format':_0x2ed050('0xbb3'),'disabled':_0x3a8188}));if(_0x2ed050('0xd4e')===_0x31f8f5[_0x2ed050('0x3f7')]){var _0x4216ed=_0x10b7be['getCurrentProfile']();return _0x2fcaf8=null!=_0x4216ed?_0x4216ed['id']:-0x1*_0x10b7be[_0x2ed050('0x853')]()['id'],null==_0x31f8f5[_0x2ed050('0x756')]&&(_0x31f8f5[_0x2ed050('0x756')]=_0x2ed050('0xdbb')),_0x570052[_0x2ed050('0x544')][_0x2ed050('0xd0f')](_0x5b6e74[_0x2ed050('0x5ac')][_0x2ed050('0xd37')],{'labelCol':_0x1607d5,'name':_0xa1ca0,'key':_0xa1ca0,'label':_0x31f8f5[_0x2ed050('0xf90')]},_0x570052[_0x2ed050('0x544')][_0x2ed050('0xd0f')](_0xd9da9c[_0x2ed050('0x544')],{'user':_0x2fcaf8,'fileGroup':_0x10b7be[_0x2ed050('0xb7b')],'fileName':_0xa1ca0,'adapter':_0x10b7be,'accept':_0x31f8f5[_0x2ed050('0x756')],'readOnly':_0x3a8188}));}return _0x2ed050('0x49')===_0x31f8f5[_0x2ed050('0x3f7')]?_0x570052['default'][_0x2ed050('0xd0f')](_0x5b6e74['Form'][_0x2ed050('0xd37')],{'labelCol':_0x1607d5,'name':_0xa1ca0,'key':_0xa1ca0,'label':_0x31f8f5[_0x2ed050('0xf90')]},_0x570052[_0x2ed050('0x544')][_0x2ed050('0xd0f')](_0x1d9a8a[_0x2ed050('0x544')],{'adapter':_0x10b7be,'field':_0x255583,'title':_0x31f8f5[_0x2ed050('0xf90')],'readOnly':_0x3a8188})):_0x2ed050('0x1137')===_0x31f8f5[_0x2ed050('0x3f7')]||_0x2ed050('0x8ff')===_0x31f8f5[_0x2ed050('0x3f7')]||_0x2ed050('0x256')===_0x31f8f5[_0x2ed050('0x3f7')]?_0x570052[_0x2ed050('0x544')][_0x2ed050('0xd0f')](_0x5b6e74[_0x2ed050('0x5ac')][_0x2ed050('0xd37')],{'labelCol':_0x1607d5,'label':_0x31f8f5['label'],'key':_0xa1ca0,'name':_0xa1ca0,'rules':_0x3cc2d1},_0x570052[_0x2ed050('0x544')][_0x2ed050('0xd0f')](_0x36bad6['default'],{'adapter':_0x10b7be,'field':_0x255583,'readOnly':_0x3a8188})):_0x2ed050('0x7f9')===_0x31f8f5[_0x2ed050('0x3f7')]?_0x570052[_0x2ed050('0x544')]['createElement'](_0x5b6e74['Form'][_0x2ed050('0xd37')],{'labelCol':_0x1607d5,'name':_0xa1ca0,'key':_0xa1ca0,'label':_0x31f8f5['label']},_0x570052[_0x2ed050('0x544')][_0x2ed050('0xd0f')](_0x1fe5a6[_0x2ed050('0x544')],{'adapter':_0x10b7be,'field':_0x255583,'title':_0x31f8f5[_0x2ed050('0xf90')],'readOnly':_0x3a8188})):'signature'===_0x31f8f5['type']?_0x570052[_0x2ed050('0x544')][_0x2ed050('0xd0f')](_0x5b6e74[_0x2ed050('0x5ac')][_0x2ed050('0xd37')],{'labelCol':_0x1607d5,'label':_0x31f8f5[_0x2ed050('0xf90')],'key':_0xa1ca0,'name':_0xa1ca0,'rules':_0x3cc2d1},_0x570052[_0x2ed050('0x544')]['createElement'](_0x8d2916[_0x2ed050('0x544')],{'readOnly':_0x3a8188})):null;}},{'key':_0x8f6da0('0x3ee'),'value':function(_0x555d36){var _0x106f15=_0x8f6da0;return''[_0x106f15('0x3cc')](_0x555d36,':\x20')[_0x106f15('0x3cc')](this['props'][_0x106f15('0x7fb')]['gt'](_0x106f15('0x374')));}},{'key':_0x8f6da0('0x6c6'),'value':function(_0x42d4b2){var _0x10c72c=_0x8f6da0;return null==_0x32f0da[_0x42d4b2['validation']]?null:_0x32f0da[_0x42d4b2[_0x10c72c('0x94d')]];}},{'key':'dataToFormFields','value':function(_0x3ac07b,_0x1c01ec){var _0x2055ca=_0x8f6da0;for(var _0x38f70c=0x0;_0x38f70c<_0x1c01ec['length'];_0x38f70c++){var _0x187f53=_0x233e31(_0x1c01ec[_0x38f70c],0x2),_0xfdec8=_0x187f53[0x0],_0xcb47b6=_0x187f53[0x1];'date'===_0xcb47b6[_0x2055ca('0x3f7')]?_0x3ac07b[_0xfdec8]=_0x3ac07b[_0xfdec8]?(0x0,_0x210f73[_0x2055ca('0x544')])(_0x3ac07b[_0xfdec8],'YYYY-MM-DD'):null:_0x2055ca('0xb6a')===_0xcb47b6[_0x2055ca('0x3f7')]?_0x3ac07b[_0xfdec8]=_0x3ac07b[_0xfdec8]?(0x0,_0x210f73[_0x2055ca('0x544')])(_0x3ac07b[_0xfdec8],_0x2055ca('0xd43')):null:_0x2055ca('0x918')===_0xcb47b6['type']&&(_0x3ac07b[_0xfdec8]=_0x3ac07b[_0xfdec8]?(0x0,_0x210f73[_0x2055ca('0x544')])(_0x3ac07b[_0xfdec8],_0x2055ca('0xbb3')):null);}return _0x3ac07b;}},{'key':_0x8f6da0('0x9d1'),'value':function(_0x5bfe9e,_0x4cdc23){var _0x481e52=_0x8f6da0;for(var _0x4c1d19=0x0;_0x4c1d19<_0x4cdc23[_0x481e52('0x525')];_0x4c1d19++){var _0x36840c=_0x233e31(_0x4cdc23[_0x4c1d19],0x2),_0x32242b=_0x36840c[0x0],_0x3ac504=_0x36840c[0x1];_0x481e52('0x65d')===_0x3ac504[_0x481e52('0x3f7')]?_0x5bfe9e[_0x32242b]=_0x5bfe9e[_0x32242b]?_0x5bfe9e[_0x32242b][_0x481e52('0xe02')]('YYYY-MM-DD'):_0x481e52('0xde9'):_0x481e52('0xb6a')===_0x3ac504['type']?_0x5bfe9e[_0x32242b]=_0x5bfe9e[_0x32242b]?_0x5bfe9e[_0x32242b][_0x481e52('0xe02')](_0x481e52('0xd43')):_0x481e52('0xde9'):_0x481e52('0x918')===_0x3ac504[_0x481e52('0x3f7')]?_0x5bfe9e[_0x32242b]=_0x5bfe9e[_0x32242b]?_0x5bfe9e[_0x32242b][_0x481e52('0xe02')](_0x481e52('0xbb3')):_0x481e52('0xde9'):'select'!==_0x3ac504[_0x481e52('0x3f7')]&&'select2'!==_0x3ac504['type']||null!=_0x5bfe9e[_0x32242b]||(_0x5bfe9e[_0x32242b]='NULL');}return _0x5bfe9e;}},{'key':_0x8f6da0('0x2dc'),'value':function(_0x1b04f8){var _0x26836e=_0x8f6da0,_0x7680d8=this[_0x26836e('0x6e0')][_0x26836e('0x3e8')];if(_0x1b04f8=this['dataToFormFields'](_0x1b04f8,_0x7680d8),this[_0x26836e('0xd9d')][_0x26836e('0x970')][_0x26836e('0xe85')](),null!=_0x1b04f8)try{this[_0x26836e('0xd9d')]['current'][_0x26836e('0xbf3')](_0x1b04f8);}catch(_0x149426){console[_0x26836e('0xc60')](_0x149426);}}},{'key':_0x8f6da0('0xe85'),'value':function(){var _0x513978=_0x8f6da0;this[_0x513978('0xd9d')]['current']['resetFields']();}},{'key':_0x8f6da0('0xbf3'),'value':function(_0x336e9a){var _0x2336de=_0x8f6da0;this['formReference'][_0x2336de('0x970')][_0x2336de('0xbf3')](_0x336e9a);}},{'key':'save','value':function(_0x39390c,_0x29a4d5){var _0x3dac12=_0x8f6da0,_0x5ee7c5=this,_0x1b3928=this[_0x3dac12('0x6e0')],_0x3427f4=_0x1b3928[_0x3dac12('0x7fb')],_0x1844b2=_0x1b3928['fields'],_0x487910=_0x39390c;_0x487910=_0x3427f4[_0x3dac12('0xb48')](_0x487910);var _0x2d5484=_0x3427f4['doCustomValidation'](_0x487910);if(null===_0x2d5484){_0x3427f4[_0x3dac12('0x176')]&&(_0x487910[_0x3dac12('0xc8c')]=$('#'[_0x3dac12('0x3cc')](_0x3427f4['getTableName'](),_0x3dac12('0x5ac')))['data'](_0x3dac12('0xc8c')));var _0x3cb798=null!=_0x3427f4[_0x3dac12('0xa81')]?_0x3427f4[_0x3dac12('0xa81')]['id']:null;null!=_0x3cb798&&''!==_0x3cb798&&(_0x487910['id']=_0x3cb798),_0x487910=this['formFieldsToData'](_0x487910,_0x1844b2),_0x3427f4[_0x3dac12('0x1130')](_0x487910,[],function(){return _0x3427f4['get']([]);},function(){var _0x4738d2=_0x3dac12;_0x5ee7c5[_0x4738d2('0xd9d')][_0x4738d2('0x970')][_0x4738d2('0xe85')](),_0x5ee7c5[_0x4738d2('0xec1')](!0x1),_0x29a4d5();});}else this[_0x3dac12('0xec1')](_0x2d5484);}}])&&_0xce4bab(_0x490f68[_0x8f6da0('0x98c')],_0x865ce6),_0x54cef8&&_0xce4bab(_0x490f68,_0x54cef8),_0x3fdb2d;}(_0x570052[_0x33061d('0x544')]['Component']);_0x5a1eba[_0x33061d('0x544')]=_0x392e9b;},{'./IceColorPick':0x49,'./IceDataGroup':0x4a,'./IceLabel':0x4d,'./IceSelect':0x4e,'./IceSignature':0x4f,'./IceUpload':0x53,'antd':_0x404097('0xdb9'),'moment':_0x404097('0xf7b'),'react':_0x404097('0x1041')}],0x4c:[function(_0x4beda9,_0x32ddfb,_0x2cdb9c){var _0x2aa869=_0x404097;'use strict';Object[_0x2aa869('0xa95')](_0x2cdb9c,'__esModule',{'value':!0x0}),_0x2cdb9c[_0x2aa869('0x544')]=void 0x0;var _0x511806=_0x1f25dc(_0x4beda9(_0x2aa869('0x1041'))),_0x5761a9=_0x4beda9('antd'),_0x475570=_0x1f25dc(_0x4beda9('./IceForm'));function _0x1f25dc(_0x2134f7){return _0x2134f7&&_0x2134f7['__esModule']?_0x2134f7:{'default':_0x2134f7};}function _0x2f6b66(_0x5ab861){var _0x311791=_0x2aa869;return(_0x2f6b66=_0x311791('0xae9')==typeof Symbol&&_0x311791('0x245')==typeof Symbol[_0x311791('0x78e')]?function(_0x4c9de6){return typeof _0x4c9de6;}:function(_0x5c66ac){var _0x569f18=_0x311791;return _0x5c66ac&&_0x569f18('0xae9')==typeof Symbol&&_0x5c66ac[_0x569f18('0x3c6')]===Symbol&&_0x5c66ac!==Symbol[_0x569f18('0x98c')]?_0x569f18('0x245'):typeof _0x5c66ac;})(_0x5ab861);}function _0x292b0f(){var _0x1f3de5=_0x2aa869;return(_0x292b0f=Object[_0x1f3de5('0xc7d')]||function(_0x1b8be4){var _0x282d70=_0x1f3de5;for(var _0x203de8=0x1;_0x203de8\r\n]?)(\r\n|\n\r|\r|\n)/g,_0x39712e('0x10fb'));}}])&&_0x34df3f(_0x4a83c1[_0x40a1d6('0x98c')],_0x52c62f),_0x321f6a&&_0x34df3f(_0x4a83c1,_0x321f6a),_0x47bb9d;}(_0x31fd20[_0xb242d8('0x544')][_0xb242d8('0x346')]);_0x579901[_0xb242d8('0x544')]=_0x26f9f6;},{'antd':'antd','react':_0x404097('0x1041')}],0x4e:[function(_0x106116,_0x5293c2,_0x39e061){var _0x21b715=_0x404097;'use strict';Object[_0x21b715('0xa95')](_0x39e061,_0x21b715('0x114c'),{'value':!0x0}),_0x39e061[_0x21b715('0x544')]=void 0x0;var _0x274c70,_0x1c78ae=(_0x274c70=_0x106116(_0x21b715('0x1041')))&&_0x274c70[_0x21b715('0x114c')]?_0x274c70:{'default':_0x274c70},_0x285b6d=_0x106116(_0x21b715('0xdb9'));function _0x1aef55(_0x12d0ee){var _0x3f3013=_0x21b715;return(_0x1aef55=_0x3f3013('0xae9')==typeof Symbol&&_0x3f3013('0x245')==typeof Symbol[_0x3f3013('0x78e')]?function(_0x4f1b0b){return typeof _0x4f1b0b;}:function(_0x3f3b0c){var _0x5ef6c9=_0x3f3013;return _0x3f3b0c&&'function'==typeof Symbol&&_0x3f3b0c[_0x5ef6c9('0x3c6')]===Symbol&&_0x3f3b0c!==Symbol[_0x5ef6c9('0x98c')]?_0x5ef6c9('0x245'):typeof _0x3f3b0c;})(_0x12d0ee);}function _0x5f2e6c(_0x1c55d9,_0x59be4f){var _0x36189b=_0x21b715;for(var _0x1fa3ca=0x0;_0x1fa3ca<_0x59be4f[_0x36189b('0x525')];_0x1fa3ca++){var _0x3a9510=_0x59be4f[_0x1fa3ca];_0x3a9510[_0x36189b('0x156')]=_0x3a9510[_0x36189b('0x156')]||!0x1,_0x3a9510[_0x36189b('0xbb2')]=!0x0,'value'in _0x3a9510&&(_0x3a9510[_0x36189b('0x4db')]=!0x0),Object['defineProperty'](_0x1c55d9,_0x3a9510['key'],_0x3a9510);}}function _0x16c9f9(_0x1ec561,_0x2ae3aa){var _0x50589f=_0x21b715;return!_0x2ae3aa||_0x50589f('0x21e')!==_0x1aef55(_0x2ae3aa)&&_0x50589f('0xae9')!=typeof _0x2ae3aa?function(_0x1cc420){var _0x187570=_0x50589f;if(void 0x0===_0x1cc420)throw new ReferenceError(_0x187570('0x2e9'));return _0x1cc420;}(_0x1ec561):_0x2ae3aa;}function _0x590b02(){var _0x32b3ee=_0x21b715;if(_0x32b3ee('0x56')==typeof Reflect||!Reflect[_0x32b3ee('0x6ea')])return!0x1;if(Reflect[_0x32b3ee('0x6ea')]['sham'])return!0x1;if('function'==typeof Proxy)return!0x0;try{return Date['prototype'][_0x32b3ee('0x537')][_0x32b3ee('0x4b0')](Reflect[_0x32b3ee('0x6ea')](Date,[],function(){})),!0x0;}catch(_0x425703){return!0x1;}}function _0x1f508d(_0x1ce2f6){var _0x5f1edc=_0x21b715;return(_0x1f508d=Object['setPrototypeOf']?Object[_0x5f1edc('0x10c0')]:function(_0x39b62a){var _0x510995=_0x5f1edc;return _0x39b62a[_0x510995('0x11e6')]||Object['getPrototypeOf'](_0x39b62a);})(_0x1ce2f6);}function _0x4dd76f(_0x2cb413,_0x5c66f8){var _0x5a3211=_0x21b715;return(_0x4dd76f=Object[_0x5a3211('0x6c2')]||function(_0x26e148,_0x538a80){var _0x2d5eb7=_0x5a3211;return _0x26e148[_0x2d5eb7('0x11e6')]=_0x538a80,_0x26e148;})(_0x2cb413,_0x5c66f8);}var _0x5c2b50=_0x285b6d['Select'][_0x21b715('0xbd6')],_0x465355=function(_0x825753){var _0x53bb52=_0x21b715;!function(_0x3954d8,_0x8494e4){var _0x36d57a=_0x3ab6;if(_0x36d57a('0xae9')!=typeof _0x8494e4&&null!==_0x8494e4)throw new TypeError('Super\x20expression\x20must\x20either\x20be\x20null\x20or\x20a\x20function');_0x3954d8[_0x36d57a('0x98c')]=Object[_0x36d57a('0x5c2')](_0x8494e4&&_0x8494e4[_0x36d57a('0x98c')],{'constructor':{'value':_0x3954d8,'writable':!0x0,'configurable':!0x0}}),_0x8494e4&&_0x4dd76f(_0x3954d8,_0x8494e4);}(_0x470646,_0x825753);var _0xa7512c,_0x2136e9,_0x40600b,_0xf7db04,_0x1be292=(_0xa7512c=_0x470646,function(){var _0x3966a3=_0x3ab6,_0x2082ae,_0x32fba2=_0x1f508d(_0xa7512c);if(_0x590b02()){var _0x42f4d7=_0x1f508d(this)[_0x3966a3('0x3c6')];_0x2082ae=Reflect[_0x3966a3('0x6ea')](_0x32fba2,arguments,_0x42f4d7);}else _0x2082ae=_0x32fba2[_0x3966a3('0x1036')](this,arguments);return _0x16c9f9(this,_0x2082ae);});function _0x470646(_0x2e5e70){var _0x3115fd=_0x3ab6,_0x573cbb;return function(_0x5cbf8e,_0x1ad5a3){var _0x1f6790=_0x3ab6;if(!(_0x5cbf8e instanceof _0x1ad5a3))throw new TypeError(_0x1f6790('0x202'));}(this,_0x470646),(_0x573cbb=_0x1be292['call'](this,_0x2e5e70))[_0x3115fd('0xe90')]=_0x2e5e70[_0x3115fd('0xe90')],_0x573cbb;}return _0x2136e9=_0x470646,(_0x40600b=[{'key':'render','value':function(){var _0x390d1c=_0x3ab6,_0xcee017,_0xcd665c=this[_0x390d1c('0x6e0')],_0x3cb94e=_0xcd665c['field'],_0x230d7b=_0xcd665c[_0x390d1c('0x7fb')],_0x38e727=this[_0x390d1c('0x6e0')][_0x390d1c('0x832')],_0x13ed5=_0x3cb94e[0x1];if(null!=_0x13ed5[_0x390d1c('0x95b')]){var _0x60311c=''[_0x390d1c('0x3cc')](_0x13ed5[_0x390d1c('0x95b')][0x0],'_')[_0x390d1c('0x3cc')](_0x13ed5[_0x390d1c('0x95b')][0x1],'_')[_0x390d1c('0x3cc')](_0x13ed5['remote-source'][0x2]);0x4===_0x13ed5[_0x390d1c('0x95b')][_0x390d1c('0x525')]&&(_0x60311c=''[_0x390d1c('0x3cc')](_0x60311c,'_')[_0x390d1c('0x3cc')](_0x13ed5['remote-source'][0x3])),_0xcee017=_0x230d7b[_0x390d1c('0xa3a')][_0x60311c];}else _0xcee017=_0x13ed5['source'];var _0x354424=this[_0x390d1c('0xfef')](_0xcee017,_0x3cb94e,_0x230d7b);if('select2multi'===_0x13ed5[_0x390d1c('0x3f7')])try{null==(_0x38e727=JSON[_0x390d1c('0xf01')](_0x38e727))&&(_0x38e727=[]),_0x38e727=_0x38e727['map'](function(_0x1264d3){var _0xa8732c=_0x390d1c;return''[_0xa8732c('0x3cc')](_0x1264d3);});}catch(_0x327213){_0x38e727=[];}return _0x1c78ae[_0x390d1c('0x544')][_0x390d1c('0xd0f')](_0x285b6d['Select'],{'mode':_0x390d1c('0x256')===_0x13ed5[_0x390d1c('0x3f7')]?'multiple':void 0x0,'showSearch':!0x0,'placeholder':_0x390d1c('0xbfb')[_0x390d1c('0x3cc')](_0x13ed5[_0x390d1c('0xf90')]),'optionFilterProp':'children','filterOption':function(_0x2a2f58,_0x585d25){var _0x17210b=_0x390d1c;return null!=_0x2a2f58&&_0x585d25[_0x17210b('0xf90')][_0x17210b('0x2e7')]()[_0x17210b('0x4dc')](_0x2a2f58[_0x17210b('0x2e7')]())>=0x0;},'value':_0x38e727,'options':_0x354424,'allowClear':!0x0,'onChange':this['handleChange']['bind'](this),'disabled':this[_0x390d1c('0x6e0')][_0x390d1c('0x1069')]});}},{'key':_0x53bb52('0xf89'),'value':function(_0x46c3dd){var _0x32b36d=_0x53bb52;'select2multi'===this['props'][_0x32b36d('0x48f')][0x1][_0x32b36d('0x3f7')]?this[_0x32b36d('0xe90')](JSON[_0x32b36d('0x591')](_0x46c3dd)):this['onChange'](_0x46c3dd);}},{'key':_0x53bb52('0x8b0'),'value':function(_0x5caa98){var _0x59c534=_0x53bb52;return _0x1c78ae[_0x59c534('0x544')][_0x59c534('0xd0f')](_0x5c2b50,{'key':''['concat'](_0x5caa98[0x0]),'value':''[_0x59c534('0x3cc')](_0x5caa98[0x0])},_0x5caa98[0x1]);}},{'key':_0x53bb52('0xfef'),'value':function(_0x2d3c94,_0x5b3493,_0x48a440){var _0x57062e=_0x53bb52,_0x3e3d63=[];if(Array['isArray'](_0x2d3c94))for(var _0x42f894=0x0;_0x42f894<_0x2d3c94['length'];_0x42f894++)_0x3e3d63[_0x57062e('0x8f8')]({'label':_0x2d3c94[_0x42f894][0x1],'value':_0x2d3c94[_0x42f894][0x0]});else for(var _0xff2b54 in _0x2d3c94)_0x3e3d63[_0x57062e('0x8f8')]({'label':_0x2d3c94[_0xff2b54],'value':_0xff2b54});return _0x3e3d63;}}])&&_0x5f2e6c(_0x2136e9[_0x53bb52('0x98c')],_0x40600b),_0xf7db04&&_0x5f2e6c(_0x2136e9,_0xf7db04),_0x470646;}(_0x1c78ae[_0x21b715('0x544')][_0x21b715('0x346')]);_0x39e061['default']=_0x465355;},{'antd':_0x404097('0xdb9'),'react':_0x404097('0x1041')}],0x4f:[function(_0x6eeab7,_0x52f35c,_0x45235d){var _0x3df77b=_0x404097;'use strict';Object[_0x3df77b('0xa95')](_0x45235d,'__esModule',{'value':!0x0}),_0x45235d['default']=void 0x0;var _0x17202a=_0x2faa2b(_0x6eeab7(_0x3df77b('0x1041'))),_0x41b9b5=_0x2faa2b(_0x6eeab7(_0x3df77b('0x6d9'))),_0x1df3c8=_0x6eeab7('antd'),_0x2171f6=_0x6eeab7(_0x3df77b('0x1e1'));function _0x2faa2b(_0x4d1cb7){var _0x185304=_0x3df77b;return _0x4d1cb7&&_0x4d1cb7[_0x185304('0x114c')]?_0x4d1cb7:{'default':_0x4d1cb7};}function _0x47ad29(_0x4a1450){var _0x32cd56=_0x3df77b;return(_0x47ad29='function'==typeof Symbol&&_0x32cd56('0x245')==typeof Symbol[_0x32cd56('0x78e')]?function(_0x5d6ba9){return typeof _0x5d6ba9;}:function(_0x5b04c2){var _0x35002f=_0x32cd56;return _0x5b04c2&&'function'==typeof Symbol&&_0x5b04c2[_0x35002f('0x3c6')]===Symbol&&_0x5b04c2!==Symbol['prototype']?_0x35002f('0x245'):typeof _0x5b04c2;})(_0x4a1450);}function _0x17203e(_0x317cc6,_0x5e0f1c){var _0x304b01=_0x3df77b,_0x2d0652=Object[_0x304b01('0x7ce')](_0x317cc6);if(Object['getOwnPropertySymbols']){var _0x729f8c=Object['getOwnPropertySymbols'](_0x317cc6);_0x5e0f1c&&(_0x729f8c=_0x729f8c[_0x304b01('0x4fb')](function(_0x2db015){var _0x48d957=_0x304b01;return Object[_0x48d957('0xa71')](_0x317cc6,_0x2db015)[_0x48d957('0x156')];})),_0x2d0652['push'][_0x304b01('0x1036')](_0x2d0652,_0x729f8c);}return _0x2d0652;}function _0x2174c7(_0x3848a9){var _0x1881b0=_0x3df77b;for(var _0x9b8a30=0x1;_0x9b8a300xa&&_0x10acd5[_0x4ec819('0x9c0')](_0x10b9fc);}}},{'key':_0x370609('0x9c2'),'value':function(){var _0x2d56f2=_0x370609;this[_0x2d56f2('0x32b')]({'visible':!0x1});}},{'key':'clear','value':function(){this['signature']['clear']();}},{'key':_0x370609('0xc68'),'value':function(){var _0x375c3f=_0x370609,_0x34b353=this[_0x375c3f('0xecc')][_0x375c3f('0x8c7')]('image/png');this[_0x375c3f('0xe90')](_0x34b353),this[_0x375c3f('0x32b')]({'visible':!0x1});}},{'key':_0x370609('0x80f'),'value':function(){var _0xbc8162=_0x370609,_0x117b06=this,_0x263a9c=this['props'][_0xbc8162('0x1069')];return _0x17202a[_0xbc8162('0x544')][_0xbc8162('0xd0f')](_0x17202a[_0xbc8162('0x544')][_0xbc8162('0x6f4')],null,_0x17202a[_0xbc8162('0x544')]['createElement'](_0x1df3c8[_0xbc8162('0x7e8')],{'visible':this[_0xbc8162('0xfff')][_0xbc8162('0x39e')],'title':_0xbc8162('0x53e'),'maskClosable':!0x1,'centered':!0x0,'width':0x12c,'onCancel':function(){var _0x564f0e=_0xbc8162;_0x117b06[_0x564f0e('0x9c2')]();},'footer':[_0x17202a[_0xbc8162('0x544')]['createElement'](_0x1df3c8['Button'],{'key':_0xbc8162('0x584'),'onClick':function(){var _0x2915ec=_0xbc8162;_0x117b06[_0x2915ec('0x9c2')]();}},_0xbc8162('0x38e')),_0x17202a['default'][_0xbc8162('0xd0f')](_0x1df3c8[_0xbc8162('0x288')],{'key':_0xbc8162('0xedd'),'disabled':_0x263a9c,'type':_0xbc8162('0xd99'),'onClick':function(){var _0x339d59=_0xbc8162;_0x263a9c||_0x117b06[_0x339d59('0xedd')]();}},_0xbc8162('0x8d8')),_0x17202a[_0xbc8162('0x544')][_0xbc8162('0xd0f')](_0x1df3c8[_0xbc8162('0x288')],{'key':'ok','disabled':_0x263a9c,'type':_0xbc8162('0x712'),'onClick':function(){var _0x9e0f89=_0xbc8162;_0x263a9c||_0x117b06[_0x9e0f89('0xc68')]();}},_0xbc8162('0x8f9'))]},_0x17202a[_0xbc8162('0x544')][_0xbc8162('0xd0f')](_0x41b9b5[_0xbc8162('0x544')],{'ref':function(_0x2c1777){var _0x2c3314=_0xbc8162;_0x117b06[_0x2c3314('0xecc')]=_0x2c1777,_0x117b06[_0x2c3314('0x911')](_0x2c1777);},'canvasProps':_0x2174c7({'width':0xfa,'height':0xc8,'className':_0xbc8162('0x7dc')},_0x263a9c?{'readOnly':_0x263a9c}:{})})),_0x17202a['default'][_0xbc8162('0xd0f')](_0x1df3c8['Tag'],{'color':'blue','style':{'cursor':_0xbc8162('0x184')},'onClick':function(){var _0x271b0c=_0xbc8162;_0x117b06[_0x271b0c('0x41b')]();}},_0x17202a[_0xbc8162('0x544')][_0xbc8162('0xd0f')](_0x2171f6[_0xbc8162('0xa4f')],null),'\x20',_0xbc8162('0x107f')));}}])&&_0xa3ea14(_0x310bd4['prototype'],_0xc671aa),_0xa954b4&&_0xa3ea14(_0x310bd4,_0xa954b4),_0x57faf8;}(_0x17202a['default'][_0x3df77b('0x346')]);_0x45235d[_0x3df77b('0x544')]=_0x16e1c4;},{'@ant-design/icons':_0x404097('0x1e1'),'antd':_0x404097('0xdb9'),'react':_0x404097('0x1041'),'react-signature-canvas':0x16c}],0x50:[function(_0x25bf5d,_0xceeb15,_0x58d073){var _0x41e056=_0x404097;'use strict';Object[_0x41e056('0xa95')](_0x58d073,_0x41e056('0x114c'),{'value':!0x0}),_0x58d073[_0x41e056('0x544')]=void 0x0;var _0x33052a=_0x36f069(_0x25bf5d('react')),_0x163402=_0x25bf5d('antd'),_0x4b3dbf=_0x36f069(_0x25bf5d(_0x41e056('0xcd1')));function _0x36f069(_0x111da3){var _0x292bd2=_0x41e056;return _0x111da3&&_0x111da3[_0x292bd2('0x114c')]?_0x111da3:{'default':_0x111da3};}function _0x36a6ac(_0x2314e6){var _0x36fa67=_0x41e056;return(_0x36a6ac=_0x36fa67('0xae9')==typeof Symbol&&_0x36fa67('0x245')==typeof Symbol[_0x36fa67('0x78e')]?function(_0x254318){return typeof _0x254318;}:function(_0x34c186){var _0x174f95=_0x36fa67;return _0x34c186&&_0x174f95('0xae9')==typeof Symbol&&_0x34c186[_0x174f95('0x3c6')]===Symbol&&_0x34c186!==Symbol[_0x174f95('0x98c')]?_0x174f95('0x245'):typeof _0x34c186;})(_0x2314e6);}function _0x55a2bd(_0x39b6c4){return function(_0x591593){var _0x34f24b=_0x3ab6;if(Array[_0x34f24b('0x6f6')](_0x591593))return _0x594199(_0x591593);}(_0x39b6c4)||function(_0x11da45){var _0x19db77=_0x3ab6;if(_0x19db77('0x56')!=typeof Symbol&&Symbol['iterator']in Object(_0x11da45))return Array[_0x19db77('0x9d7')](_0x11da45);}(_0x39b6c4)||_0x16a990(_0x39b6c4)||function(){var _0x21e6f7=_0x3ab6;throw new TypeError(_0x21e6f7('0x10d7'));}();}function _0x337d2a(_0xf4b244,_0x2dd3c3){return function(_0x48a503){var _0x48a7d6=_0x3ab6;if(Array[_0x48a7d6('0x6f6')](_0x48a503))return _0x48a503;}(_0xf4b244)||function(_0x1e433b,_0x3e8ea0){var _0x35a982=_0x3ab6;if(_0x35a982('0x56')==typeof Symbol||!(Symbol[_0x35a982('0x78e')]in Object(_0x1e433b)))return;var _0x1fb58b=[],_0x1ca3b7=!0x0,_0x306f6b=!0x1,_0xf22f32=void 0x0;try{for(var _0x4645ed,_0x4b4881=_0x1e433b[Symbol['iterator']]();!(_0x1ca3b7=(_0x4645ed=_0x4b4881[_0x35a982('0x4d7')]())[_0x35a982('0x10cf')])&&(_0x1fb58b[_0x35a982('0x8f8')](_0x4645ed[_0x35a982('0x832')]),!_0x3e8ea0||_0x1fb58b[_0x35a982('0x525')]!==_0x3e8ea0);_0x1ca3b7=!0x0);}catch(_0x49b6ba){_0x306f6b=!0x0,_0xf22f32=_0x49b6ba;}finally{try{_0x1ca3b7||null==_0x4b4881[_0x35a982('0x458')]||_0x4b4881[_0x35a982('0x458')]();}finally{if(_0x306f6b)throw _0xf22f32;}}return _0x1fb58b;}(_0xf4b244,_0x2dd3c3)||_0x16a990(_0xf4b244,_0x2dd3c3)||function(){var _0x166552=_0x3ab6;throw new TypeError(_0x166552('0x496'));}();}function _0x16a990(_0x1ece51,_0x562e7e){var _0x56bb7c=_0x41e056;if(_0x1ece51){if('string'==typeof _0x1ece51)return _0x594199(_0x1ece51,_0x562e7e);var _0x4131c2=Object[_0x56bb7c('0x98c')]['toString']['call'](_0x1ece51)[_0x56bb7c('0xbc0')](0x8,-0x1);return _0x56bb7c('0x75')===_0x4131c2&&_0x1ece51['constructor']&&(_0x4131c2=_0x1ece51[_0x56bb7c('0x3c6')][_0x56bb7c('0x263')]),'Map'===_0x4131c2||_0x56bb7c('0x621')===_0x4131c2?Array[_0x56bb7c('0x9d7')](_0x4131c2):_0x56bb7c('0xd3d')===_0x4131c2||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/[_0x56bb7c('0xaac')](_0x4131c2)?_0x594199(_0x1ece51,_0x562e7e):void 0x0;}}function _0x594199(_0x40be5f,_0x157ad9){var _0x900e98=_0x41e056;(null==_0x157ad9||_0x157ad9>_0x40be5f[_0x900e98('0x525')])&&(_0x157ad9=_0x40be5f[_0x900e98('0x525')]);for(var _0x446273=0x0,_0x36bcc1=new Array(_0x157ad9);_0x446273<_0x157ad9;_0x446273++)_0x36bcc1[_0x446273]=_0x40be5f[_0x446273];return _0x36bcc1;}function _0x77b2c9(_0x53706a,_0x16cf38,_0x55d7a8,_0x50f0ed,_0x56720a,_0x375905,_0x3f5f19){var _0x15a04b=_0x41e056;try{var _0x15b68f=_0x53706a[_0x375905](_0x3f5f19),_0x1532ab=_0x15b68f[_0x15a04b('0x832')];}catch(_0x2e8fc9){return void _0x55d7a8(_0x2e8fc9);}_0x15b68f[_0x15a04b('0x10cf')]?_0x16cf38(_0x1532ab):Promise[_0x15a04b('0x2f1')](_0x1532ab)[_0x15a04b('0xd5')](_0x50f0ed,_0x56720a);}function _0xd78456(_0x3765ef){return function(){var _0x35cbc3=this,_0x27fbdd=arguments;return new Promise(function(_0x5f539a,_0xe3cdd8){var _0x4e4990=_0x3ab6,_0xb8738f=_0x3765ef[_0x4e4990('0x1036')](_0x35cbc3,_0x27fbdd);function _0x4c539a(_0x54e7f4){_0x77b2c9(_0xb8738f,_0x5f539a,_0xe3cdd8,_0x4c539a,_0x140c3e,'next',_0x54e7f4);}function _0x140c3e(_0x49d00f){var _0x42cfcc=_0x4e4990;_0x77b2c9(_0xb8738f,_0x5f539a,_0xe3cdd8,_0x4c539a,_0x140c3e,_0x42cfcc('0x626'),_0x49d00f);}_0x4c539a(void 0x0);});};}function _0xdc60f8(_0x5e8fd6,_0x468a94){var _0x1ef8fb=_0x41e056,_0x5c4bdf=Object[_0x1ef8fb('0x7ce')](_0x5e8fd6);if(Object[_0x1ef8fb('0xc6d')]){var _0x1ce173=Object[_0x1ef8fb('0xc6d')](_0x5e8fd6);_0x468a94&&(_0x1ce173=_0x1ce173[_0x1ef8fb('0x4fb')](function(_0x3f5f0c){var _0x1ed322=_0x1ef8fb;return Object[_0x1ed322('0xa71')](_0x5e8fd6,_0x3f5f0c)['enumerable'];})),_0x5c4bdf['push'][_0x1ef8fb('0x1036')](_0x5c4bdf,_0x1ce173);}return _0x5c4bdf;}function _0x4babe0(_0x4f3513,_0x2f9572,_0x35576e){var _0x34f4ba=_0x41e056;return _0x2f9572 in _0x4f3513?Object[_0x34f4ba('0xa95')](_0x4f3513,_0x2f9572,{'value':_0x35576e,'enumerable':!0x0,'configurable':!0x0,'writable':!0x0}):_0x4f3513[_0x2f9572]=_0x35576e,_0x4f3513;}function _0x3f23d1(_0x45a0ad,_0x28026e){var _0x4bd908=_0x41e056;for(var _0x2b23d5=0x0;_0x2b23d5<_0x28026e['length'];_0x2b23d5++){var _0x4258ce=_0x28026e[_0x2b23d5];_0x4258ce['enumerable']=_0x4258ce['enumerable']||!0x1,_0x4258ce[_0x4bd908('0xbb2')]=!0x0,_0x4bd908('0x832')in _0x4258ce&&(_0x4258ce[_0x4bd908('0x4db')]=!0x0),Object[_0x4bd908('0xa95')](_0x45a0ad,_0x4258ce[_0x4bd908('0x1192')],_0x4258ce);}}function _0x31a7ee(_0x4fc725,_0x50de56){var _0x29d8bb=_0x41e056;return!_0x50de56||_0x29d8bb('0x21e')!==_0x36a6ac(_0x50de56)&&'function'!=typeof _0x50de56?function(_0x180b4b){var _0x51168e=_0x29d8bb;if(void 0x0===_0x180b4b)throw new ReferenceError(_0x51168e('0x2e9'));return _0x180b4b;}(_0x4fc725):_0x50de56;}function _0x28f2ec(){var _0x5097b8=_0x41e056;if(_0x5097b8('0x56')==typeof Reflect||!Reflect[_0x5097b8('0x6ea')])return!0x1;if(Reflect[_0x5097b8('0x6ea')][_0x5097b8('0x16e')])return!0x1;if('function'==typeof Proxy)return!0x0;try{return Date[_0x5097b8('0x98c')][_0x5097b8('0x537')][_0x5097b8('0x4b0')](Reflect['construct'](Date,[],function(){})),!0x0;}catch(_0x2a57e9){return!0x1;}}function _0x4ca7be(_0x2d681f){var _0x247881=_0x41e056;return(_0x4ca7be=Object[_0x247881('0x6c2')]?Object[_0x247881('0x10c0')]:function(_0x4c3d36){var _0x2df9b5=_0x247881;return _0x4c3d36[_0x2df9b5('0x11e6')]||Object[_0x2df9b5('0x10c0')](_0x4c3d36);})(_0x2d681f);}function _0x380857(_0x2b1056,_0x6885c0){return(_0x380857=Object['setPrototypeOf']||function(_0x18645f,_0x201cf7){var _0x5ede12=_0x3ab6;return _0x18645f[_0x5ede12('0x11e6')]=_0x201cf7,_0x18645f;})(_0x2b1056,_0x6885c0);}var _0x4c13bd=_0x163402['Steps'][_0x41e056('0x3d1')],_0x5de2cc=function(_0x34c977){var _0x5bd9be=_0x41e056;!function(_0x2d7b9d,_0x21cdd8){var _0x23c504=_0x3ab6;if(_0x23c504('0xae9')!=typeof _0x21cdd8&&null!==_0x21cdd8)throw new TypeError('Super\x20expression\x20must\x20either\x20be\x20null\x20or\x20a\x20function');_0x2d7b9d[_0x23c504('0x98c')]=Object['create'](_0x21cdd8&&_0x21cdd8[_0x23c504('0x98c')],{'constructor':{'value':_0x2d7b9d,'writable':!0x0,'configurable':!0x0}}),_0x21cdd8&&_0x380857(_0x2d7b9d,_0x21cdd8);}(_0x4d0c65,_0x34c977);var _0x1226ec,_0x13e030,_0x5efa34,_0x262867,_0x597fdd,_0x4c7b73,_0x302c2c=(_0x1226ec=_0x4d0c65,function(){var _0x7c5443=_0x3ab6,_0x18d4b1,_0x57640f=_0x4ca7be(_0x1226ec);if(_0x28f2ec()){var _0x5dfddc=_0x4ca7be(this)['constructor'];_0x18d4b1=Reflect['construct'](_0x57640f,arguments,_0x5dfddc);}else _0x18d4b1=_0x57640f[_0x7c5443('0x1036')](this,arguments);return _0x31a7ee(this,_0x18d4b1);});function _0x4d0c65(_0x102bd0){var _0x78845f=_0x3ab6,_0x23a5f4;!function(_0x2d5f9f,_0x236242){if(!(_0x2d5f9f instanceof _0x236242))throw new TypeError('Cannot\x20call\x20a\x20class\x20as\x20a\x20function');}(this,_0x4d0c65),(_0x23a5f4=_0x302c2c[_0x78845f('0x4b0')](this,_0x102bd0))[_0x78845f('0xe90')]=_0x102bd0[_0x78845f('0xe90')];var _0x373e76=_0x23a5f4['props']['fields'][_0x78845f('0xd49')](function(_0x4a9c1c){var _0x171083=_0x78845f;return function(_0x32e2cd){var _0x242f08=_0x3ab6;for(var _0x326eec=0x1;_0x326eec0x0&&_0x33052a[_0x210f76('0x544')]['createElement'](_0x163402[_0x210f76('0x288')],{'onClick':function(){return _0x503548['prev']();}},_0x5759dc['gt'](_0x210f76('0x1ad'))))),_0x33052a[_0x210f76('0x544')][_0x210f76('0xd0f')](_0x163402[_0x210f76('0xc2a')],{'className':_0x210f76('0x70c'),'span':0xc,'style':{'textAlign':_0x210f76('0x732')}},_0x33052a[_0x210f76('0x544')][_0x210f76('0xd0f')](_0x163402[_0x210f76('0x3ff')],null,_0x33052a['default']['createElement'](_0x163402['Button'],{'onClick':function(){var _0x526b68=_0x210f76;return _0x503548[_0x526b68('0x6e0')][_0x526b68('0xf06')]();}},_0x5759dc['gt'](_0x210f76('0x38e'))),_0x33052a[_0x210f76('0x544')][_0x210f76('0xd0f')](_0x163402[_0x210f76('0x288')],{'type':_0x210f76('0x712'),'loading':this[_0x210f76('0xfff')][_0x210f76('0x219')],'onClick':function(){var _0x508970=_0x210f76;return _0x503548[_0x508970('0xfe5')]();}},_0x5759dc['gt']('Save')))))));}},{'key':_0x5bd9be('0xfe5'),'value':(_0x4c7b73=_0xd78456(regeneratorRuntime[_0x5bd9be('0x1f0')](function _0x6d591e(){var _0x10739a,_0x36646d=this;return regeneratorRuntime['wrap'](function(_0x3d913a){var _0x4108fd=_0x3ab6;for(;;)switch(_0x3d913a[_0x4108fd('0x46b')]=_0x3d913a[_0x4108fd('0x4d7')]){case 0x0:return this[_0x4108fd('0x32b')]({'loading':!0x0}),_0x3d913a[_0x4108fd('0x4d7')]=0x3,this[_0x4108fd('0xf6c')](!0x0);case 0x3:(_0x10739a=_0x3d913a[_0x4108fd('0x99a')])&&this[_0x4108fd('0xc68')](_0x10739a,function(){var _0x106d5d=_0x4108fd;return _0x36646d[_0x106d5d('0x6e0')][_0x106d5d('0xf06')]();}),this[_0x4108fd('0x32b')]({'loading':!0x1});case 0x6:case _0x4108fd('0xbc6'):return _0x3d913a[_0x4108fd('0x1165')]();}},_0x6d591e,this);})),function(){return _0x4c7b73['apply'](this,arguments);})},{'key':_0x5bd9be('0xc68'),'value':function(_0x36cd66,_0x52690e){var _0x543123=_0x5bd9be,_0x529250=this,_0x3f3be6=this['props']['adapter'];_0x3f3be6[_0x543123('0x1130')](_0x36cd66,[],function(){var _0x4dee7a=_0x543123;return _0x3f3be6[_0x4dee7a('0x33')]([]);},function(){var _0x58455f=_0x543123;_0x529250[_0x58455f('0xe85')](),_0x529250[_0x58455f('0xec1')](!0x1),_0x52690e();});}},{'key':_0x5bd9be('0x2dc'),'value':function(_0x29312b){var _0x30574e=_0x5bd9be,_0x34ea18=this;this[_0x30574e('0xfff')][_0x30574e('0x7fa')]['forEach'](function(_0x3440a6){var _0x111266=_0x30574e,_0xbf3363={};_0x3440a6[_0x111266('0x3e8')][_0x111266('0xa9e')](function(_0x28e93b){var _0x8f7172=_0x337d2a(_0x28e93b,0x1)[0x0];_0xbf3363[_0x8f7172]=_0x29312b[_0x8f7172];}),_0x34ea18[_0x111266('0x569')](_0x3440a6[_0x111266('0x1128')],_0x3440a6[_0x111266('0x3e8')],_0xbf3363);});}},{'key':_0x5bd9be('0x569'),'value':function(_0x3418c5,_0x321b02,_0x30aac3){var _0x528f6b=_0x5bd9be;if(_0x30aac3=this[_0x528f6b('0x1074')](_0x30aac3,_0x321b02),_0x3418c5['current'][_0x528f6b('0xe85')](),null!=_0x30aac3)try{_0x3418c5[_0x528f6b('0x970')][_0x528f6b('0xbf3')](_0x30aac3);}catch(_0x8cb814){console[_0x528f6b('0xc60')](_0x8cb814);}}},{'key':_0x5bd9be('0xf6c'),'value':(_0x597fdd=_0xd78456(regeneratorRuntime[_0x5bd9be('0x1f0')](function _0x3ac561(_0xdc9355){var _0x31a1f7=_0x5bd9be,_0x1e5d88,_0x7a35d4,_0xe68914,_0x30e4cf,_0x54bd3b,_0x576e2c,_0x2113a8,_0x2bbb5a,_0x5794e0;return regeneratorRuntime[_0x31a1f7('0xfd8')](function(_0x3aebab){var _0xa03f01=_0x31a1f7;for(;;)switch(_0x3aebab[_0xa03f01('0x46b')]=_0x3aebab[_0xa03f01('0x4d7')]){case 0x0:return _0x1e5d88=this['props'][_0xa03f01('0x7fb')],_0x7a35d4=_0xdc9355?this['state'][_0xa03f01('0x7fa')]:this['state'][_0xa03f01('0x7fa')]['slice'](0x0,this[_0xa03f01('0xfff')][_0xa03f01('0x970')]+0x1),_0xe68914=_0x7a35d4[_0xa03f01('0xd49')](function(_0x35a5f9){var _0x75ce1e=_0xa03f01;return _0x35a5f9[_0x75ce1e('0x1128')][_0x75ce1e('0x970')][_0x75ce1e('0xf6c')]()[_0x75ce1e('0xd5')](function(_0x36f5dc){var _0x588e0e=_0x75ce1e;return!!_0x35a5f9[_0x588e0e('0x1128')][_0x588e0e('0x970')][_0x588e0e('0x1143')]()&&_0x36f5dc;})['catch'](function(){return!0x1;});}),_0x3aebab[_0xa03f01('0x4d7')]=0x5,Promise[_0xa03f01('0xc77')](_0xe68914);case 0x5:if(_0x30e4cf=_0x3aebab[_0xa03f01('0x99a')],!((_0x54bd3b=_0x30e4cf['findIndex'](function(_0x1b2154){return!0x1===_0x1b2154;}))>=0x0)){_0x3aebab[_0xa03f01('0x4d7')]=0xa;break;}return this[_0xa03f01('0x32b')]({'current':_0x54bd3b}),_0x3aebab[_0xa03f01('0x5d')](_0xa03f01('0x458'),!0x1);case 0xa:if(_0x576e2c=Object[_0xa03f01('0xc7d')][_0xa03f01('0x1036')](Object,[{}][_0xa03f01('0x3cc')](_0x55a2bd(_0x30e4cf))),_0x576e2c=_0x1e5d88[_0xa03f01('0xb48')](_0x576e2c),null===(_0x2113a8=_0x1e5d88[_0xa03f01('0x66f')](_0x576e2c))){_0x3aebab[_0xa03f01('0x4d7')]=0x10;break;}return this[_0xa03f01('0xec1')](_0x2113a8),_0x3aebab[_0xa03f01('0x5d')]('return',!0x1);case 0x10:return _0x1e5d88[_0xa03f01('0x176')]&&(_0x576e2c[_0xa03f01('0xc8c')]=$('#'[_0xa03f01('0x3cc')](_0x1e5d88['getTableName'](),'Form'))[_0xa03f01('0xac8')](_0xa03f01('0xc8c'))),null!=(_0x2bbb5a=null!=_0x1e5d88['currentElement']?_0x1e5d88['currentElement']['id']:null)&&''!==_0x2bbb5a&&(_0x576e2c['id']=_0x2bbb5a),_0x5794e0=[][_0xa03f01('0x3cc')][_0xa03f01('0x1036')]([],this[_0xa03f01('0xfff')][_0xa03f01('0x7fa')][_0xa03f01('0xd49')](function(_0x20b60d){var _0x14544f=_0xa03f01;return _0x20b60d[_0x14544f('0x3e8')];})),_0x3aebab[_0xa03f01('0x5d')](_0xa03f01('0x458'),this['formFieldsToData'](_0x576e2c,_0x5794e0));case 0x15:case'end':return _0x3aebab['stop']();}},_0x3ac561,this);})),function(_0x1950c0){var _0x56ad08=_0x5bd9be;return _0x597fdd[_0x56ad08('0x1036')](this,arguments);})},{'key':_0x5bd9be('0xe49'),'value':function(_0x42d649,_0x28923,_0x1bb5b5){var _0x414a8f=_0x5bd9be,_0x2e5fbe=this[_0x414a8f('0x6e0')][_0x414a8f('0x7fb')],_0x125b8c=_0x1bb5b5;_0x125b8c=_0x2e5fbe[_0x414a8f('0xb48')](_0x125b8c);var _0x24e34e=_0x2e5fbe[_0x414a8f('0x66f')](_0x125b8c);if(null===_0x24e34e){_0x2e5fbe[_0x414a8f('0x176')]&&(_0x125b8c[_0x414a8f('0xc8c')]=$('#'['concat'](_0x2e5fbe[_0x414a8f('0x107b')](),_0x414a8f('0x5ac')))[_0x414a8f('0xac8')](_0x414a8f('0xc8c')));var _0x22334a=null!=_0x2e5fbe[_0x414a8f('0xa81')]?_0x2e5fbe[_0x414a8f('0xa81')]['id']:null;return null!=_0x22334a&&''!==_0x22334a&&(_0x125b8c['id']=_0x22334a),this[_0x414a8f('0x9d1')](_0x125b8c,_0x28923);}_0x42d649['current']['showError'](_0x24e34e);}},{'key':_0x5bd9be('0xec1'),'value':function(_0x2aa2a1){var _0x1cfca4=_0x5bd9be;this['state'][_0x1cfca4('0x7fa')][_0x1cfca4('0xa9e')](function(_0x3554ee){var _0xd4b8d5=_0x1cfca4;return _0x3554ee[_0xd4b8d5('0x1128')][_0xd4b8d5('0x970')]['showError'](_0x2aa2a1);});}},{'key':_0x5bd9be('0xe85'),'value':function(){var _0xf288a0=_0x5bd9be;this[_0xf288a0('0xfff')][_0xf288a0('0x7fa')][_0xf288a0('0xa9e')](function(_0x1039ad){var _0x56aaed=_0xf288a0;return _0x1039ad[_0x56aaed('0x1128')]['current'][_0x56aaed('0xe85')]();});}},{'key':_0x5bd9be('0x7f1'),'value':function(){var _0x2ab71f=_0x5bd9be;this['state']['steps'][_0x2ab71f('0xa9e')](function(_0x4ce646){var _0x48e429=_0x2ab71f;return _0x4ce646[_0x48e429('0x1128')][_0x48e429('0x970')][_0x48e429('0x7f1')]();});}},{'key':_0x5bd9be('0x58f'),'value':function(){var _0x125475=_0x5bd9be;return this[_0x125475('0xfff')]['steps']['reduce'](function(_0xe58845,_0x3e1185){var _0x5c14e1=_0x125475;return _0xe58845&&null!=_0x3e1185['ref'][_0x5c14e1('0x970')];},!0x0);}}])&&_0x3f23d1(_0x13e030[_0x5bd9be('0x98c')],_0x5efa34),_0x262867&&_0x3f23d1(_0x13e030,_0x262867),_0x4d0c65;}(_0x4b3dbf[_0x41e056('0x544')]);_0x58d073['default']=_0x5de2cc;},{'./IceForm':0x4b,'antd':'antd','react':_0x404097('0x1041')}],0x51:[function(_0x1fc8ee,_0x4d3ecf,_0x4d2c8b){var _0x2b55fc=_0x404097;'use strict';Object[_0x2b55fc('0xa95')](_0x4d2c8b,'__esModule',{'value':!0x0}),_0x4d2c8b[_0x2b55fc('0x544')]=void 0x0;var _0x281f6c=_0x4f5f54(_0x1fc8ee('react')),_0x371cee=_0x1fc8ee(_0x2b55fc('0xdb9')),_0x2c995b=_0x4f5f54(_0x1fc8ee(_0x2b55fc('0x721'))),_0x1ec7e6=_0x4f5f54(_0x1fc8ee('./IceStepForm'));function _0x4f5f54(_0x4af118){var _0x2daf4a=_0x2b55fc;return _0x4af118&&_0x4af118[_0x2daf4a('0x114c')]?_0x4af118:{'default':_0x4af118};}function _0x5589b3(_0x173483){var _0x2ff59e=_0x2b55fc;return(_0x5589b3=_0x2ff59e('0xae9')==typeof Symbol&&_0x2ff59e('0x245')==typeof Symbol[_0x2ff59e('0x78e')]?function(_0x4d7dd5){return typeof _0x4d7dd5;}:function(_0x8ea4){var _0x56f0ff=_0x2ff59e;return _0x8ea4&&_0x56f0ff('0xae9')==typeof Symbol&&_0x8ea4[_0x56f0ff('0x3c6')]===Symbol&&_0x8ea4!==Symbol[_0x56f0ff('0x98c')]?_0x56f0ff('0x245'):typeof _0x8ea4;})(_0x173483);}function _0x45172f(_0x150244,_0x371e99){var _0x2fda46=_0x2b55fc;for(var _0x58a86a=0x0;_0x58a86a<_0x371e99[_0x2fda46('0x525')];_0x58a86a++){var _0x3defda=_0x371e99[_0x58a86a];_0x3defda[_0x2fda46('0x156')]=_0x3defda[_0x2fda46('0x156')]||!0x1,_0x3defda[_0x2fda46('0xbb2')]=!0x0,_0x2fda46('0x832')in _0x3defda&&(_0x3defda[_0x2fda46('0x4db')]=!0x0),Object[_0x2fda46('0xa95')](_0x150244,_0x3defda[_0x2fda46('0x1192')],_0x3defda);}}function _0x1a4aea(_0x880ff0,_0x36c612){var _0x118fe6=_0x2b55fc;return!_0x36c612||_0x118fe6('0x21e')!==_0x5589b3(_0x36c612)&&_0x118fe6('0xae9')!=typeof _0x36c612?function(_0x19dcf4){var _0x485c23=_0x118fe6;if(void 0x0===_0x19dcf4)throw new ReferenceError(_0x485c23('0x2e9'));return _0x19dcf4;}(_0x880ff0):_0x36c612;}function _0x2c9f6f(){var _0x431367=_0x2b55fc;if('undefined'==typeof Reflect||!Reflect[_0x431367('0x6ea')])return!0x1;if(Reflect[_0x431367('0x6ea')][_0x431367('0x16e')])return!0x1;if('function'==typeof Proxy)return!0x0;try{return Date[_0x431367('0x98c')]['toString'][_0x431367('0x4b0')](Reflect[_0x431367('0x6ea')](Date,[],function(){})),!0x0;}catch(_0x511762){return!0x1;}}function _0xfc04b9(_0x4dda9e){return(_0xfc04b9=Object['setPrototypeOf']?Object['getPrototypeOf']:function(_0x223ed0){var _0x4f5eca=_0x3ab6;return _0x223ed0['__proto__']||Object[_0x4f5eca('0x10c0')](_0x223ed0);})(_0x4dda9e);}function _0x354318(_0x3f6f84,_0x2a5c0a){var _0x128b3c=_0x2b55fc;return(_0x354318=Object[_0x128b3c('0x6c2')]||function(_0x28296f,_0x67fd9){var _0x5e2840=_0x128b3c;return _0x28296f[_0x5e2840('0x11e6')]=_0x67fd9,_0x28296f;})(_0x3f6f84,_0x2a5c0a);}var _0x3e1460=function(_0x36191b){var _0x29e813=_0x2b55fc;!function(_0x4cc31a,_0x37fa19){var _0xd291=_0x3ab6;if(_0xd291('0xae9')!=typeof _0x37fa19&&null!==_0x37fa19)throw new TypeError('Super\x20expression\x20must\x20either\x20be\x20null\x20or\x20a\x20function');_0x4cc31a['prototype']=Object[_0xd291('0x5c2')](_0x37fa19&&_0x37fa19[_0xd291('0x98c')],{'constructor':{'value':_0x4cc31a,'writable':!0x0,'configurable':!0x0}}),_0x37fa19&&_0x354318(_0x4cc31a,_0x37fa19);}(_0x4c8cf6,_0x36191b);var _0x4e30ac,_0x20adf4,_0x3b8f69,_0x3eaacc,_0x2f70e2=(_0x4e30ac=_0x4c8cf6,function(){var _0x547fcf=_0x3ab6,_0x4e19f2,_0xe5beb0=_0xfc04b9(_0x4e30ac);if(_0x2c9f6f()){var _0x5a8f8c=_0xfc04b9(this)['constructor'];_0x4e19f2=Reflect[_0x547fcf('0x6ea')](_0xe5beb0,arguments,_0x5a8f8c);}else _0x4e19f2=_0xe5beb0[_0x547fcf('0x1036')](this,arguments);return _0x1a4aea(this,_0x4e19f2);});function _0x4c8cf6(_0x1c5c3e){var _0x2527f1=_0x3ab6,_0x11a223;return function(_0x3aa3a6,_0x312582){var _0x4c74ae=_0x3ab6;if(!(_0x3aa3a6 instanceof _0x312582))throw new TypeError(_0x4c74ae('0x202'));}(this,_0x4c8cf6),(_0x11a223=_0x2f70e2[_0x2527f1('0x4b0')](this,_0x1c5c3e))[_0x2527f1('0xa7b')]=0x352,_0x11a223;}return _0x20adf4=_0x4c8cf6,(_0x3b8f69=[{'key':_0x29e813('0x41b'),'value':function(_0x3ced1c){var _0x23029b=_0x29e813,_0x19bbe8=this;this[_0x23029b('0x6e0')][_0x23029b('0x7fb')]['beforeRenderFieldHook']=this['props'][_0x23029b('0x7fb')][_0x23029b('0xc65')]?this[_0x23029b('0x6e0')][_0x23029b('0x7fb')][_0x23029b('0xc65')](_0x3ced1c):function(_0x2157e1,_0x2aa52c){return _0x2aa52c;},_0x3ced1c?(this[_0x23029b('0x32b')]({'visible':!0x0}),this[_0x23029b('0xfc4')][_0x23029b('0x970')]&&this[_0x23029b('0xfc4')]['current'][_0x23029b('0x58f')]()?(this[_0x23029b('0xfc4')][_0x23029b('0x970')][_0x23029b('0xff6')](0x0),this[_0x23029b('0xfc4')][_0x23029b('0x970')][_0x23029b('0x2dc')](_0x3ced1c)):this['waitForIt'](function(){var _0x3b213f=_0x23029b;return _0x19bbe8[_0x3b213f('0xfc4')][_0x3b213f('0x970')]&&_0x19bbe8[_0x3b213f('0xfc4')][_0x3b213f('0x970')]['isReady']();},function(){var _0x4bbc44=_0x23029b;_0x19bbe8[_0x4bbc44('0xfc4')][_0x4bbc44('0x970')][_0x4bbc44('0x2dc')](_0x3ced1c),_0x19bbe8[_0x4bbc44('0xfc4')]['current'][_0x4bbc44('0xff6')](0x0);},0x3e8)):(this[_0x23029b('0x32b')]({'visible':!0x0}),this['iceFormReference'][_0x23029b('0x970')]&&this['iceFormReference']['current'][_0x23029b('0xe85')]());}},{'key':'hide','value':function(){var _0x37ba77=_0x29e813;this[_0x37ba77('0xfc4')][_0x37ba77('0x970')][_0x37ba77('0xff6')](0x0),this[_0x37ba77('0x32b')]({'visible':!0x1});}},{'key':'render','value':function(){var _0x40a7dd=_0x29e813,_0x30a21b=this,_0x15ad2c=this['props'],_0x45c48d=_0x15ad2c['fields'],_0x5299c5=_0x15ad2c[_0x40a7dd('0x7fb')],_0x2fbdd8=this['props']['adapter'][_0x40a7dd('0x6f5')](),_0x5eb3f1=_0x2fbdd8[_0x40a7dd('0xa7b')],_0x235087=_0x2fbdd8[_0x40a7dd('0xa0f')],_0x471e4a=_0x2fbdd8[_0x40a7dd('0x635')];return _0x281f6c['default'][_0x40a7dd('0xd0f')](_0x371cee[_0x40a7dd('0x7e8')],{'visible':this[_0x40a7dd('0xfff')][_0x40a7dd('0x39e')],'title':this[_0x40a7dd('0x6e0')][_0x40a7dd('0x7fb')]['gt'](this[_0x40a7dd('0x6e0')][_0x40a7dd('0xba3')]||_0x5299c5[_0x40a7dd('0xd1')]),'maskClosable':!0x1,'width':_0x5eb3f1||this[_0x40a7dd('0xa7b')],'footer':[],'onCancel':function(){var _0x535006=_0x40a7dd;_0x30a21b[_0x535006('0xf06')]();}},_0x281f6c[_0x40a7dd('0x544')][_0x40a7dd('0xd0f')](_0x1ec7e6[_0x40a7dd('0x544')],{'ref':this[_0x40a7dd('0xfc4')],'adapter':_0x5299c5,'fields':_0x45c48d,'closeModal':function(){var _0xc44434=_0x40a7dd;_0x30a21b[_0xc44434('0xf06')]();},'twoColumnLayout':_0x235087||!0x1,'layout':_0x471e4a}));}}])&&_0x45172f(_0x20adf4[_0x29e813('0x98c')],_0x3b8f69),_0x3eaacc&&_0x45172f(_0x20adf4,_0x3eaacc),_0x4c8cf6;}(_0x2c995b[_0x2b55fc('0x544')]);_0x4d2c8b[_0x2b55fc('0x544')]=_0x3e1460;},{'./IceFormModal':0x4c,'./IceStepForm':0x50,'antd':'antd','react':_0x404097('0x1041')}],0x52:[function(_0x5a5f05,_0x41e6fc,_0x6efd52){var _0x2a7448=_0x404097;'use strict';Object[_0x2a7448('0xa95')](_0x6efd52,_0x2a7448('0x114c'),{'value':!0x0}),_0x6efd52[_0x2a7448('0x544')]=void 0x0;var _0x2b016e=function(_0x2ae44f){var _0x83612e=_0x2a7448;if(_0x2ae44f&&_0x2ae44f[_0x83612e('0x114c')])return _0x2ae44f;if(null===_0x2ae44f||_0x83612e('0x21e')!==_0x390dbe(_0x2ae44f)&&_0x83612e('0xae9')!=typeof _0x2ae44f)return{'default':_0x2ae44f};var _0x116d00=_0x5032b5();if(_0x116d00&&_0x116d00[_0x83612e('0x587')](_0x2ae44f))return _0x116d00['get'](_0x2ae44f);var _0x3fe093={},_0x3f3c6a=Object[_0x83612e('0xa95')]&&Object['getOwnPropertyDescriptor'];for(var _0x433066 in _0x2ae44f)if(Object['prototype']['hasOwnProperty'][_0x83612e('0x4b0')](_0x2ae44f,_0x433066)){var _0xf9f796=_0x3f3c6a?Object[_0x83612e('0xa71')](_0x2ae44f,_0x433066):null;_0xf9f796&&(_0xf9f796[_0x83612e('0x33')]||_0xf9f796[_0x83612e('0x11ce')])?Object[_0x83612e('0xa95')](_0x3fe093,_0x433066,_0xf9f796):_0x3fe093[_0x433066]=_0x2ae44f[_0x433066];}return _0x3fe093[_0x83612e('0x544')]=_0x2ae44f,_0x116d00&&_0x116d00[_0x83612e('0x11ce')](_0x2ae44f,_0x3fe093),_0x3fe093;}(_0x5a5f05(_0x2a7448('0x1041'))),_0x4f88c3=_0x5a5f05(_0x2a7448('0xdb9')),_0x322f12=_0x5a5f05(_0x2a7448('0x1e1'));function _0x5032b5(){var _0x453335=_0x2a7448;if(_0x453335('0xae9')!=typeof WeakMap)return null;var _0x3e518c=new WeakMap();return _0x5032b5=function(){return _0x3e518c;},_0x3e518c;}function _0x390dbe(_0x4c64a2){var _0x2788c3=_0x2a7448;return(_0x390dbe=_0x2788c3('0xae9')==typeof Symbol&&_0x2788c3('0x245')==typeof Symbol[_0x2788c3('0x78e')]?function(_0x12d118){return typeof _0x12d118;}:function(_0x332100){var _0x248f52=_0x2788c3;return _0x332100&&_0x248f52('0xae9')==typeof Symbol&&_0x332100['constructor']===Symbol&&_0x332100!==Symbol[_0x248f52('0x98c')]?_0x248f52('0x245'):typeof _0x332100;})(_0x4c64a2);}function _0x3fecb3(_0x46de28,_0x3286d3){var _0x221444=_0x2a7448,_0x34b915=Object[_0x221444('0x7ce')](_0x46de28);if(Object[_0x221444('0xc6d')]){var _0x724a14=Object[_0x221444('0xc6d')](_0x46de28);_0x3286d3&&(_0x724a14=_0x724a14[_0x221444('0x4fb')](function(_0x131a92){var _0xf211dd=_0x221444;return Object[_0xf211dd('0xa71')](_0x46de28,_0x131a92)[_0xf211dd('0x156')];})),_0x34b915['push'][_0x221444('0x1036')](_0x34b915,_0x724a14);}return _0x34b915;}function _0x318341(_0x251493){var _0x430123=_0x2a7448;for(var _0x567688=0x1;_0x5676880x0&&void 0x0!==arguments[0x0]?arguments[0x0]:{};_0x53c060['setState']({'loading':!0x0});var _0x38f2aa=_0x318341({},_0x53c060[_0x3cff5c('0xfff')]['pagination']);if(_0x53c060[_0x3cff5c('0x6e0')]['adapter'][_0x3cff5c('0xf7e')])try{var _0x5e3988=_0x53c060['props'][_0x3cff5c('0xa83')][_0x3cff5c('0xa60')](_0xffe7c5);_0x5e3988[_0x3cff5c('0x67f')]?_0x53c060[_0x3cff5c('0x32b')]({'loading':!0x1,'data':_0x5e3988[_0x3cff5c('0x67f')],'pagination':_0x38f2aa,'showLoading':!0x1}):_0x53c060[_0x3cff5c('0x6e0')][_0x3cff5c('0xa83')]['clearCachedResponse'](_0xffe7c5);}catch(_0x92ee1c){_0x53c060['props']['reader']['clearCachedResponse'](_0xffe7c5);}_0x53c060['props'][_0x3cff5c('0xa83')][_0x3cff5c('0x33')](_0xffe7c5)[_0x3cff5c('0xd5')](function(_0x5df86a){var _0x640c15=_0x3cff5c;_0x38f2aa['total']=_0x5df86a[_0x640c15('0x6df')],_0x53c060[_0x640c15('0x32b')]({'loading':!0x1,'data':_0x5df86a['items'],'pagination':_0x38f2aa,'showLoading':!0x1,'fetchCompleted':!0x0});});},_0x53c060;}return _0x54638e=_0x305644,(_0x1fb412=[{'key':'componentDidMount','value':function(){var _0x2741bb=_0x3ab6;_0x4f88c3[_0x2741bb('0xa1a')][_0x2741bb('0x4d1')]({'top':0x28}),this[_0x2741bb('0x32b')]({'fetchConfig':{'page':0x1},'pagination':{'pageSize':this[_0x2741bb('0x6e0')]['reader']['pageSize']}});}},{'key':_0x27db85('0x11a8'),'value':function(_0x8f40ad){var _0x228ed8=_0x27db85;this[_0x228ed8('0x32b')]({'loading':_0x8f40ad});}},{'key':_0x27db85('0x4a3'),'value':function(_0x3a9172){var _0x3754d6=_0x27db85,_0x3bb1e9=this;return _0x2b016e[_0x3754d6('0x544')]['Children'][_0x3754d6('0xd49')](this['props']['children'],function(_0x23b8d9){var _0x10788a=_0x3754d6,_0x14ca82={'element':_0x3a9172,'adapter':_0x3bb1e9[_0x10788a('0x6e0')][_0x10788a('0x7fb')],'loading':_0x3bb1e9[_0x10788a('0xfff')][_0x10788a('0x219')]};return _0x2b016e['default'][_0x10788a('0xea0')](_0x23b8d9)?_0x2b016e['default']['cloneElement'](_0x23b8d9,_0x14ca82):_0x23b8d9;});}},{'key':'render','value':function(){var _0xb8b007=_0x27db85,_0x1af893=this;return _0x2b016e[_0xb8b007('0x544')][_0xb8b007('0xd0f')](_0x4f88c3[_0xb8b007('0x2b4')],{'direction':_0xb8b007('0xd20'),'style':{'width':_0xb8b007('0xeef')}},!this['state'][_0xb8b007('0xa81')]&&_0x2b016e[_0xb8b007('0x544')][_0xb8b007('0xd0f')](_0x4f88c3[_0xb8b007('0xc2a')],{'span':0x18},_0x2b016e[_0xb8b007('0x544')][_0xb8b007('0xd0f')](_0x4f88c3['Row'],{'gutter':0x18},_0x2b016e[_0xb8b007('0x544')][_0xb8b007('0xd0f')](_0x4f88c3[_0xb8b007('0xc2a')],{'span':0x12},_0x2b016e[_0xb8b007('0x544')]['createElement'](_0x4f88c3[_0xb8b007('0x3ff')],null,this[_0xb8b007('0x6e0')]['adapter'][_0xb8b007('0x380')]('save')&&this[_0xb8b007('0x6e0')][_0xb8b007('0x7fb')][_0xb8b007('0xb00')]()&&_0x2b016e[_0xb8b007('0x544')][_0xb8b007('0xd0f')](_0x4f88c3[_0xb8b007('0x288')],{'type':_0xb8b007('0x712'),'onClick':this[_0xb8b007('0xeed')]},_0x2b016e[_0xb8b007('0x544')][_0xb8b007('0xd0f')](_0x322f12[_0xb8b007('0xd63')],null),'\x20Add\x20New'),this[_0xb8b007('0x6e0')][_0xb8b007('0x7fb')][_0xb8b007('0xa68')]()&&_0x2b016e[_0xb8b007('0x544')][_0xb8b007('0xd0f')](_0x4f88c3[_0xb8b007('0x288')],{'onClick':this[_0xb8b007('0xc75')]},_0x2b016e['default']['createElement'](_0x322f12[_0xb8b007('0xcf')],null),_0xb8b007('0x3cb')),this[_0xb8b007('0xfff')][_0xb8b007('0x8d5')]&&this['props'][_0xb8b007('0x7fb')][_0xb8b007('0xa68')]()&&null!=this[_0xb8b007('0x6e0')][_0xb8b007('0x7fb')][_0xb8b007('0x4fb')]&&this[_0xb8b007('0x6e0')][_0xb8b007('0x7fb')][_0xb8b007('0x4fb')]!==[]&&''!==this[_0xb8b007('0x6e0')][_0xb8b007('0x7fb')][_0xb8b007('0x4fb')]&&''!==this['props'][_0xb8b007('0x7fb')][_0xb8b007('0xcc1')](this[_0xb8b007('0x6e0')][_0xb8b007('0x7fb')][_0xb8b007('0x4fb')])&&_0x2b016e[_0xb8b007('0x544')][_0xb8b007('0xd0f')](_0x4f88c3[_0xb8b007('0x765')],{'closable':!0x0,'style':{'lineHeight':'30px'},'color':_0xb8b007('0x1c5'),'onClose':function(){var _0x3f1fc8=_0xb8b007;return _0x1af893[_0x3f1fc8('0x6e0')]['adapter'][_0x3f1fc8('0xe42')]();},'visible':null!=this[_0xb8b007('0x6e0')]['adapter'][_0xb8b007('0x4fb')]&&this[_0xb8b007('0x6e0')][_0xb8b007('0x7fb')]['filter']!==[]&&''!==this['props'][_0xb8b007('0x7fb')][_0xb8b007('0x4fb')]},this[_0xb8b007('0x6e0')][_0xb8b007('0x7fb')]['getFilterString'](this['props'][_0xb8b007('0x7fb')][_0xb8b007('0x4fb')])))),_0x2b016e[_0xb8b007('0x544')]['createElement'](_0x4f88c3[_0xb8b007('0xc2a')],{'span':0x6},_0x2b016e[_0xb8b007('0x544')][_0xb8b007('0xd0f')](_0x4f88c3[_0xb8b007('0x5ac')],{'ref':function(_0x505467){var _0x6a9893=_0xb8b007;return _0x1af893[_0x6a9893('0xb3')]=_0x505467;},'name':'advanced_search','className':_0xb8b007('0x947')},_0x2b016e['default']['createElement'](_0x4f88c3[_0xb8b007('0x5ac')][_0xb8b007('0xd37')],{'name':_0xb8b007('0x365'),'label':'','rules':[{'required':!0x1}]},_0x2b016e[_0xb8b007('0x544')][_0xb8b007('0xd0f')](_0x285a1e,{'placeholder':_0xb8b007('0xada'),'enterButton':_0xb8b007('0x8a'),'onSearch':function(_0x1dd1b0){var _0x2a757c=_0xb8b007;return _0x1af893[_0x2a757c('0xaaf')](_0x1dd1b0);}}))))),_0x2b016e[_0xb8b007('0x544')]['createElement'](_0x4f88c3[_0xb8b007('0x2b4')],{'gutter':0x18},_0x2b016e[_0xb8b007('0x544')]['createElement'](_0x4f88c3[_0xb8b007('0xc2a')],{'span':0x18},_0x2b016e[_0xb8b007('0x544')]['createElement'](_0x4f88c3['Table'],{'rowClassName':function(_0x2e07ae,_0x12add0){var _0x32d26a=_0xb8b007;return _0x12add0%0x2==0x0?_0x32d26a('0x277'):'table-row-dark';},'columns':this[_0xb8b007('0x6e0')][_0xb8b007('0x9f9')],'rowKey':function(_0x5e9c72){return _0x5e9c72['id'];},'dataSource':this[_0xb8b007('0xfff')][_0xb8b007('0xac8')],'pagination':this[_0xb8b007('0xfff')][_0xb8b007('0x38f')],'loading':this[_0xb8b007('0xfff')][_0xb8b007('0x219')],'onChange':this[_0xb8b007('0xd64')],'reader':this[_0xb8b007('0x6e0')][_0xb8b007('0x6ed')]})))),this[_0xb8b007('0xfff')][_0xb8b007('0xa81')]&&this[_0xb8b007('0x4a3')](this[_0xb8b007('0xfff')][_0xb8b007('0xa81')]));}}])&&_0x154bbe(_0x54638e[_0x27db85('0x98c')],_0x1fb412),_0x97fe98&&_0x154bbe(_0x54638e,_0x97fe98),_0x305644;}(_0x2b016e[_0x2a7448('0x544')][_0x2a7448('0x346')]);_0x6efd52[_0x2a7448('0x544')]=_0x33ca8d;},{'@ant-design/icons':_0x404097('0x1e1'),'antd':_0x404097('0xdb9'),'react':_0x404097('0x1041')}],0x53:[function(_0x2f84e4,_0x31524d,_0x3ee4fd){var _0x215771=_0x404097;'use strict';Object['defineProperty'](_0x3ee4fd,_0x215771('0x114c'),{'value':!0x0}),_0x3ee4fd['default']=void 0x0;var _0x4f50a9,_0x136edd=(_0x4f50a9=_0x2f84e4(_0x215771('0x1041')))&&_0x4f50a9[_0x215771('0x114c')]?_0x4f50a9:{'default':_0x4f50a9},_0x39acf1=_0x2f84e4(_0x215771('0xdb9')),_0x2d7aea=_0x2f84e4('@ant-design/icons');function _0x424844(_0x575de2){var _0x158576=_0x215771;return(_0x424844=_0x158576('0xae9')==typeof Symbol&&_0x158576('0x245')==typeof Symbol[_0x158576('0x78e')]?function(_0x412dbc){return typeof _0x412dbc;}:function(_0x1303a3){var _0x2a04d8=_0x158576;return _0x1303a3&&_0x2a04d8('0xae9')==typeof Symbol&&_0x1303a3[_0x2a04d8('0x3c6')]===Symbol&&_0x1303a3!==Symbol[_0x2a04d8('0x98c')]?'symbol':typeof _0x1303a3;})(_0x575de2);}function _0x5892d5(){var _0x17c51d=_0x215771;return(_0x5892d5=Object['assign']||function(_0x248aa2){var _0x247cff=_0x3ab6;for(var _0x11f0ed=0x1;_0x11f0ed_0x268209[_0x3eecc('0x525')])&&(_0x2f65f7=_0x268209[_0x3eecc('0x525')]);for(var _0x534c80=0x0,_0xda3185=new Array(_0x2f65f7);_0x534c80<_0x2f65f7;_0x534c80++)_0xda3185[_0x534c80]=_0x268209[_0x534c80];return _0xda3185;}function _0x259d52(_0x48d44c,_0x2c5c5e){var _0x49f75d=_0x215771;for(var _0x1328d0=0x0;_0x1328d0<_0x2c5c5e['length'];_0x1328d0++){var _0x70cee1=_0x2c5c5e[_0x1328d0];_0x70cee1[_0x49f75d('0x156')]=_0x70cee1[_0x49f75d('0x156')]||!0x1,_0x70cee1[_0x49f75d('0xbb2')]=!0x0,_0x49f75d('0x832')in _0x70cee1&&(_0x70cee1['writable']=!0x0),Object['defineProperty'](_0x48d44c,_0x70cee1[_0x49f75d('0x1192')],_0x70cee1);}}function _0x2ba712(_0x4da5fd,_0x54ddb8){var _0x1f923b=_0x215771;return!_0x54ddb8||_0x1f923b('0x21e')!==_0x424844(_0x54ddb8)&&_0x1f923b('0xae9')!=typeof _0x54ddb8?function(_0x3103a1){var _0x4d5745=_0x1f923b;if(void 0x0===_0x3103a1)throw new ReferenceError(_0x4d5745('0x2e9'));return _0x3103a1;}(_0x4da5fd):_0x54ddb8;}function _0x3b987c(){var _0x33a456=_0x215771;if('undefined'==typeof Reflect||!Reflect[_0x33a456('0x6ea')])return!0x1;if(Reflect[_0x33a456('0x6ea')][_0x33a456('0x16e')])return!0x1;if(_0x33a456('0xae9')==typeof Proxy)return!0x0;try{return Date[_0x33a456('0x98c')][_0x33a456('0x537')][_0x33a456('0x4b0')](Reflect[_0x33a456('0x6ea')](Date,[],function(){})),!0x0;}catch(_0x565a44){return!0x1;}}function _0x7f1a91(_0x2bbdbe){var _0x11edb8=_0x215771;return(_0x7f1a91=Object[_0x11edb8('0x6c2')]?Object[_0x11edb8('0x10c0')]:function(_0x1f537d){var _0x5af03d=_0x11edb8;return _0x1f537d[_0x5af03d('0x11e6')]||Object[_0x5af03d('0x10c0')](_0x1f537d);})(_0x2bbdbe);}function _0x3bcf95(_0x4e04bf,_0x2c0b1e){var _0x118a2e=_0x215771;return(_0x3bcf95=Object[_0x118a2e('0x6c2')]||function(_0x2c23c3,_0x3f53ed){var _0x207259=_0x118a2e;return _0x2c23c3[_0x207259('0x11e6')]=_0x3f53ed,_0x2c23c3;})(_0x4e04bf,_0x2c0b1e);}var _0x5e3c56=function(_0x518d64){var _0xf87d8a=_0x215771;!function(_0x37a165,_0x1cb441){var _0x590b6e=_0x3ab6;if('function'!=typeof _0x1cb441&&null!==_0x1cb441)throw new TypeError(_0x590b6e('0x409'));_0x37a165['prototype']=Object[_0x590b6e('0x5c2')](_0x1cb441&&_0x1cb441[_0x590b6e('0x98c')],{'constructor':{'value':_0x37a165,'writable':!0x0,'configurable':!0x0}}),_0x1cb441&&_0x3bcf95(_0x37a165,_0x1cb441);}(_0x5e33d9,_0x518d64);var _0x23de0d,_0x5b209b,_0x1c0f76,_0x350cdc,_0x1c46e7=(_0x23de0d=_0x5e33d9,function(){var _0x2d73ea=_0x3ab6,_0x8dbf3e,_0x5c864e=_0x7f1a91(_0x23de0d);if(_0x3b987c()){var _0x3b08d1=_0x7f1a91(this)[_0x2d73ea('0x3c6')];_0x8dbf3e=Reflect['construct'](_0x5c864e,arguments,_0x3b08d1);}else _0x8dbf3e=_0x5c864e[_0x2d73ea('0x1036')](this,arguments);return _0x2ba712(this,_0x8dbf3e);});function _0x5e33d9(_0x581648){var _0x35aedb=_0x3ab6,_0x573f05;return function(_0x2dc6e2,_0x4700e4){if(!(_0x2dc6e2 instanceof _0x4700e4))throw new TypeError('Cannot\x20call\x20a\x20class\x20as\x20a\x20function');}(this,_0x5e33d9),(_0x573f05=_0x1c46e7['call'](this,_0x581648))[_0x35aedb('0xfff')]={'fileList':[],'uploaded':!0x1},_0x573f05[_0x35aedb('0x11e2')]=!0x1,_0x573f05[_0x35aedb('0x830')]=function(){var _0x59a67b=_0x35aedb;_0x573f05[_0x59a67b('0x32b')]({'fileList':[],'value':null,'uploaded':!0x1}),_0x573f05[_0x59a67b('0xe90')](null);},_0x573f05[_0x35aedb('0x686')]=function(){var _0x2148fc=_0x35aedb,_0x42c616=_0x573f05[_0x2148fc('0x6e0')][_0x2148fc('0x832')];(null!=_0x573f05[_0x2148fc('0xfff')][_0x2148fc('0x832')]&&''!==_0x573f05[_0x2148fc('0xfff')][_0x2148fc('0x832')]&&(_0x42c616=_0x573f05['state'][_0x2148fc('0x832')]),null!=_0x42c616&&''!==_0x42c616)?_0x573f05[_0x2148fc('0x6e0')][_0x2148fc('0x7fb')][_0x2148fc('0x5f3')](_0x42c616)[_0x2148fc('0xd5')](function(_0x15f0e8){var _0x3a8957=_0x2148fc,_0x5c234c={'key':_0x15f0e8[_0x3a8957('0xc4a')],'uid':_0x15f0e8[_0x3a8957('0xc4a')],'name':_0x15f0e8['name'],'status':_0x15f0e8['status'],'url':_0x15f0e8[_0x3a8957('0xf02')]};window['open'](_0x5c234c[_0x3a8957('0x43e')]);})[_0x2148fc('0x10ee')](function(_0x325374){}):_0x39acf1[_0x2148fc('0xa1a')][_0x2148fc('0x8d9')](_0x2148fc('0x59'));},_0x573f05[_0x35aedb('0xf89')]=function(_0x311203){var _0x94a4b8=_0x35aedb,_0x335258=_0x1ad361(_0x311203[_0x94a4b8('0x461')]);return 0x0===_0x335258[_0x94a4b8('0x525')]?(_0x573f05[_0x94a4b8('0x32b')]({'value':null}),_0x573f05[_0x94a4b8('0xe90')](null),_0x573f05['setState']({'fileList':[]}),void _0x573f05[_0x94a4b8('0x32b')]({'uploaded':!0x1})):(_0x335258=_0x335258[_0x94a4b8('0xbc0')](-0x1))[0x0][_0x94a4b8('0xd7c')]&&_0x94a4b8('0x8d9')===_0x335258[0x0][_0x94a4b8('0xd7c')]['status']?(_0x573f05[_0x94a4b8('0x32b')]({'value':null}),_0x573f05[_0x94a4b8('0xe90')](null),_0x573f05[_0x94a4b8('0x32b')]({'fileList':[]}),_0x573f05[_0x94a4b8('0x32b')]({'uploaded':!0x1}),void _0x39acf1[_0x94a4b8('0xa1a')][_0x94a4b8('0x8d9')](_0x94a4b8('0x112')[_0x94a4b8('0x3cc')](_0x335258[0x0][_0x94a4b8('0xd7c')][_0x94a4b8('0xa1a')]))):(_0x335258=_0x335258[_0x94a4b8('0xd49')](function(_0x515c13){var _0x1e878b=_0x94a4b8;return _0x515c13[_0x1e878b('0xd7c')]&&(_0x515c13['name']=_0x515c13[_0x1e878b('0xd7c')][_0x1e878b('0x263')],_0x515c13[_0x1e878b('0x43e')]=_0x515c13[_0x1e878b('0xd7c')]['url']),_0x515c13;}),_0x573f05['setState']({'fileList':_0x335258}),_0x573f05[_0x94a4b8('0x32b')]({'value':_0x573f05[_0x94a4b8('0xce4')](_0x335258),'uploaded':!0x0}),void _0x573f05[_0x94a4b8('0xe90')](_0x573f05[_0x94a4b8('0xce4')](_0x335258)));},_0x573f05['onChange']=_0x581648[_0x35aedb('0xe90')],_0x573f05;}return _0x5b209b=_0x5e33d9,(_0x1c0f76=[{'key':_0xf87d8a('0x272'),'value':function(){var _0x7e47f=_0xf87d8a;this[_0x7e47f('0x11e2')]=!0x0,_0x39acf1['message'][_0x7e47f('0x4d1')]({'top':0x37,'duration':0x2});}},{'key':_0xf87d8a('0xdc9'),'value':function(){var _0x394e7e=_0xf87d8a;this[_0x394e7e('0x11e2')]=!0x1;}},{'key':_0xf87d8a('0xce4'),'value':function(_0x37a7df){var _0x165961=_0xf87d8a,_0x57273d=null;return _0x37a7df&&(_0x57273d=_0x37a7df[0x0]),_0x57273d?_0x57273d[_0x165961('0x263')]:'';}},{'key':_0xf87d8a('0xcc7'),'value':function(_0x46c824){var _0x6add54=_0xf87d8a;for(var _0x36d9f4=new Date(),_0x43d958=_0x6add54('0xbb1'),_0x52eef3='',_0x5a3351=_0x46c824;_0x5a3351>0x0;--_0x5a3351)_0x52eef3+=_0x43d958[Math[_0x6add54('0xbbc')](Math[_0x6add54('0xb63')]()*(_0x43d958[_0x6add54('0x525')]-0x1))];return _0x52eef3+_0x36d9f4['getTime']();}},{'key':'render','value':function(){var _0xdff165=_0xf87d8a,_0x246f4c=this[_0xdff165('0xcc7')](0xe),_0x2b031d={'action':''[_0xdff165('0x3cc')](window[_0xdff165('0x1068')],_0xdff165('0x3bc'))[_0xdff165('0x3cc')](this['props'][_0xdff165('0x597')],_0xdff165('0x302'))[_0xdff165('0x3cc')](this['props']['fileGroup'],'&file_name=')[_0xdff165('0x3cc')](_0x246f4c),'onChange':this[_0xdff165('0xf89')],'onRemove':this['handleDelete'],'multiple':!0x1,'listType':_0xdff165('0xf2')};return _0x136edd[_0xdff165('0x544')]['createElement'](_0x39acf1[_0xdff165('0x3ff')],{'direction':_0xdff165('0xd20')},!this[_0xdff165('0x6e0')][_0xdff165('0x1069')]&&_0x136edd['default'][_0xdff165('0xd0f')](_0x39acf1[_0xdff165('0x3ff')],null,_0x136edd['default'][_0xdff165('0xd0f')](_0x39acf1[_0xdff165('0x4e8')],_0x5892d5({},_0x2b031d,{'fileList':this[_0xdff165('0xfff')][_0xdff165('0x461')]}),_0x136edd[_0xdff165('0x544')]['createElement'](_0x39acf1[_0xdff165('0x765')],{'color':_0xdff165('0x1c5'),'style':{'cursor':'pointer'}},_0x136edd[_0xdff165('0x544')][_0xdff165('0xd0f')](_0x2d7aea['UploadOutlined'],null),'\x20',_0xdff165('0x4e8')))),_0x136edd[_0xdff165('0x544')][_0xdff165('0xd0f')](_0x39acf1['Space'],null,(null!=this['props'][_0xdff165('0x832')]&&''!==this[_0xdff165('0x6e0')][_0xdff165('0x832')]||null!=this[_0xdff165('0xfff')]['value']&&''!==this[_0xdff165('0xfff')]['value'])&&!this[_0xdff165('0xfff')]['uploaded']&&_0x136edd[_0xdff165('0x544')][_0xdff165('0xd0f')](_0x39acf1[_0xdff165('0x288')],{'type':'link','htmlType':_0xdff165('0x40d'),'onClick':this[_0xdff165('0x686')]},_0x136edd['default']['createElement'](_0x2d7aea['DownloadOutlined'],null),_0xdff165('0xdca')),(null!=this[_0xdff165('0x6e0')]['value']&&''!==this[_0xdff165('0x6e0')][_0xdff165('0x832')]||null!=this[_0xdff165('0xfff')][_0xdff165('0x832')]&&''!==this[_0xdff165('0xfff')][_0xdff165('0x832')])&&!this['state'][_0xdff165('0x11d9')]&&!this[_0xdff165('0x6e0')][_0xdff165('0x1069')]&&_0x136edd[_0xdff165('0x544')][_0xdff165('0xd0f')](_0x39acf1[_0xdff165('0x288')],{'type':'link','htmlType':_0xdff165('0x40d'),'danger':!0x0,'onClick':this[_0xdff165('0x830')]},_0x136edd[_0xdff165('0x544')][_0xdff165('0xd0f')](_0x2d7aea['DeleteOutlined'],null),'\x20Delete')));}}])&&_0x259d52(_0x5b209b['prototype'],_0x1c0f76),_0x350cdc&&_0x259d52(_0x5b209b,_0x350cdc),_0x5e33d9;}(_0x136edd[_0x215771('0x544')][_0x215771('0x346')]);_0x3ee4fd[_0x215771('0x544')]=_0x5e3c56;},{'@ant-design/icons':_0x404097('0x1e1'),'antd':'antd','react':_0x404097('0x1041')}],0x54:[function(_0x4443d9,_0x498876,_0x3a7225){var _0x51fb14=_0x404097;'use strict';Object[_0x51fb14('0xa95')](_0x3a7225,_0x51fb14('0x114c'),{'value':!0x0}),_0x3a7225[_0x51fb14('0x544')]=void 0x0;var _0x1557d2,_0x6168dc=(_0x1557d2=_0x4443d9('react'))&&_0x1557d2[_0x51fb14('0x114c')]?_0x1557d2:{'default':_0x1557d2},_0x2a80ed=_0x4443d9(_0x51fb14('0xdb9'));function _0x2d55b8(_0x3245f0){var _0x49667b=_0x51fb14;return(_0x2d55b8='function'==typeof Symbol&&'symbol'==typeof Symbol[_0x49667b('0x78e')]?function(_0x16f7ae){return typeof _0x16f7ae;}:function(_0x10aba9){var _0xd5834c=_0x49667b;return _0x10aba9&&_0xd5834c('0xae9')==typeof Symbol&&_0x10aba9[_0xd5834c('0x3c6')]===Symbol&&_0x10aba9!==Symbol['prototype']?'symbol':typeof _0x10aba9;})(_0x3245f0);}function _0x2b4f5a(_0x7f1dfc,_0x4a331d){var _0x2debcb=_0x51fb14;for(var _0x2806cf=0x0;_0x2806cf<_0x4a331d[_0x2debcb('0x525')];_0x2806cf++){var _0x20936e=_0x4a331d[_0x2806cf];_0x20936e[_0x2debcb('0x156')]=_0x20936e[_0x2debcb('0x156')]||!0x1,_0x20936e[_0x2debcb('0xbb2')]=!0x0,_0x2debcb('0x832')in _0x20936e&&(_0x20936e[_0x2debcb('0x4db')]=!0x0),Object[_0x2debcb('0xa95')](_0x7f1dfc,_0x20936e[_0x2debcb('0x1192')],_0x20936e);}}function _0x127475(_0x309606,_0x439352){var _0x30fa9f=_0x51fb14;return!_0x439352||_0x30fa9f('0x21e')!==_0x2d55b8(_0x439352)&&_0x30fa9f('0xae9')!=typeof _0x439352?function(_0x4f103b){var _0x6674c9=_0x30fa9f;if(void 0x0===_0x4f103b)throw new ReferenceError(_0x6674c9('0x2e9'));return _0x4f103b;}(_0x309606):_0x439352;}function _0x506089(){var _0x2b5ab3=_0x51fb14;if('undefined'==typeof Reflect||!Reflect[_0x2b5ab3('0x6ea')])return!0x1;if(Reflect[_0x2b5ab3('0x6ea')][_0x2b5ab3('0x16e')])return!0x1;if(_0x2b5ab3('0xae9')==typeof Proxy)return!0x0;try{return Date[_0x2b5ab3('0x98c')]['toString'][_0x2b5ab3('0x4b0')](Reflect[_0x2b5ab3('0x6ea')](Date,[],function(){})),!0x0;}catch(_0x21c661){return!0x1;}}function _0x2185ec(_0x2a210a){var _0x4d6250=_0x51fb14;return(_0x2185ec=Object[_0x4d6250('0x6c2')]?Object[_0x4d6250('0x10c0')]:function(_0x225115){var _0x2fdd9e=_0x4d6250;return _0x225115[_0x2fdd9e('0x11e6')]||Object[_0x2fdd9e('0x10c0')](_0x225115);})(_0x2a210a);}function _0xe60ef9(_0x363c7a,_0x1127e5){var _0x4cfa3b=_0x51fb14;return(_0xe60ef9=Object[_0x4cfa3b('0x6c2')]||function(_0x43582b,_0x52e05b){var _0x17246f=_0x4cfa3b;return _0x43582b[_0x17246f('0x11e6')]=_0x52e05b,_0x43582b;})(_0x363c7a,_0x1127e5);}var _0x2e125a=function(_0x57c170){var _0x4055d4=_0x51fb14;!function(_0x251aa0,_0x417ff6){var _0x2752dd=_0x3ab6;if(_0x2752dd('0xae9')!=typeof _0x417ff6&&null!==_0x417ff6)throw new TypeError(_0x2752dd('0x409'));_0x251aa0[_0x2752dd('0x98c')]=Object[_0x2752dd('0x5c2')](_0x417ff6&&_0x417ff6['prototype'],{'constructor':{'value':_0x251aa0,'writable':!0x0,'configurable':!0x0}}),_0x417ff6&&_0xe60ef9(_0x251aa0,_0x417ff6);}(_0x565f0b,_0x57c170);var _0x3a6194,_0x25f049,_0x13cb16,_0x3aaedb,_0xc9fa4b=(_0x3a6194=_0x565f0b,function(){var _0x340f2c=_0x3ab6,_0x344417,_0x22b953=_0x2185ec(_0x3a6194);if(_0x506089()){var _0x55c6f5=_0x2185ec(this)['constructor'];_0x344417=Reflect[_0x340f2c('0x6ea')](_0x22b953,arguments,_0x55c6f5);}else _0x344417=_0x22b953[_0x340f2c('0x1036')](this,arguments);return _0x127475(this,_0x344417);});function _0x565f0b(_0x5ca293){var _0x164939=_0x3ab6,_0x223b9d;return function(_0x193995,_0x27f76d){var _0xbe57d0=_0x3ab6;if(!(_0x193995 instanceof _0x27f76d))throw new TypeError(_0xbe57d0('0x202'));}(this,_0x565f0b),(_0x223b9d=_0xc9fa4b['call'](this,_0x5ca293))[_0x164939('0xfff')]={'tags':[],'loading':!0x0},_0x223b9d;}return _0x25f049=_0x565f0b,(_0x13cb16=[{'key':_0x4055d4('0x272'),'value':function(){var _0x29d0b0=_0x4055d4;this[_0x29d0b0('0xd41')]();}},{'key':_0x4055d4('0xd41'),'value':function(){var _0x448258=_0x4055d4,_0x486b4b=this;this[_0x448258('0x32b')]({'loading':!0x0}),this[_0x448258('0x6e0')][_0x448258('0x221')][_0x448258('0x33')](this[_0x448258('0x6e0')][_0x448258('0x43e')])[_0x448258('0xd5')](function(_0x11f08c){var _0x3ada73=_0x448258,_0x1ca4ae=_0x11f08c[_0x3ada73('0xac8')][_0x3ada73('0xac8')][_0x3ada73('0xd49')](_0x486b4b['props'][_0x3ada73('0xec3')]);_0x486b4b['setState']({'tags':_0x1ca4ae,'loading':!0x1});});}},{'key':_0x4055d4('0x80f'),'value':function(){var _0x4555b6=_0x4055d4,_0x1321a4=this;return _0x6168dc[_0x4555b6('0x544')][_0x4555b6('0xd0f')]('div',{'style':{'display':_0x4555b6('0x592'),'textOverflow':'ellipsis','whiteSpace':'nowrap','overflow':_0x4555b6('0xdc0'),'width':_0x4555b6('0xeef')}},this[_0x4555b6('0xfff')][_0x4555b6('0x219')]&&_0x6168dc[_0x4555b6('0x544')][_0x4555b6('0xd0f')](_0x2a80ed['Skeleton'],{'active':!0x0}),!this[_0x4555b6('0xfff')][_0x4555b6('0x219')]&&this[_0x4555b6('0xfff')]['tags'][_0x4555b6('0xd49')](function(_0x5f505e,_0x347891){var _0x3313df=_0x4555b6;return _0x1321a4[_0x3313df('0x6e0')]['render']?_0x1321a4['props'][_0x3313df('0x80f')](_0x5f505e):_0x6168dc[_0x3313df('0x544')][_0x3313df('0xd0f')](_0x3313df('0x7fc'),{'key':'p'['concat'](_0x347891)},_0x6168dc[_0x3313df('0x544')][_0x3313df('0xd0f')](_0x2a80ed[_0x3313df('0x765')],{'color':_0x1321a4[_0x3313df('0x6e0')][_0x3313df('0x48e')],'key':_0x347891,'style':{'margin':_0x3313df('0x795')}},_0x5f505e),_0x6168dc[_0x3313df('0x544')][_0x3313df('0xd0f')]('br',null));}));}}])&&_0x2b4f5a(_0x25f049['prototype'],_0x13cb16),_0x3aaedb&&_0x2b4f5a(_0x25f049,_0x3aaedb),_0x565f0b;}(_0x6168dc[_0x51fb14('0x544')]['Component']);_0x3a7225[_0x51fb14('0x544')]=_0x2e125a;},{'antd':'antd','react':_0x404097('0x1041')}],0x55:[function(_0x469a97,_0x219a3d,_0x14ba48){var _0xd0130=_0x404097;'use strict';Object[_0xd0130('0xa95')](_0x14ba48,_0xd0130('0x114c'),{'value':!0x0}),_0x14ba48[_0xd0130('0x544')]=void 0x0;var _0x22422d,_0x446fc3=(_0x22422d=_0x469a97(_0xd0130('0x1041')))&&_0x22422d['__esModule']?_0x22422d:{'default':_0x22422d},_0x3f980f=_0x469a97(_0xd0130('0xdb9')),_0x4c2e47=_0x469a97(_0xd0130('0x1e1'));function _0x46ee95(_0x165b17){var _0x486c28=_0xd0130;return(_0x46ee95='function'==typeof Symbol&&_0x486c28('0x245')==typeof Symbol[_0x486c28('0x78e')]?function(_0x4e47f3){return typeof _0x4e47f3;}:function(_0x3a830e){var _0x5e1fc2=_0x486c28;return _0x3a830e&&_0x5e1fc2('0xae9')==typeof Symbol&&_0x3a830e[_0x5e1fc2('0x3c6')]===Symbol&&_0x3a830e!==Symbol[_0x5e1fc2('0x98c')]?_0x5e1fc2('0x245'):typeof _0x3a830e;})(_0x165b17);}function _0x56def9(_0x576b32,_0x333702){var _0x45f322=_0xd0130;for(var _0x2eb604=0x0;_0x2eb604<_0x333702[_0x45f322('0x525')];_0x2eb604++){var _0x2ede18=_0x333702[_0x2eb604];_0x2ede18[_0x45f322('0x156')]=_0x2ede18[_0x45f322('0x156')]||!0x1,_0x2ede18['configurable']=!0x0,'value'in _0x2ede18&&(_0x2ede18[_0x45f322('0x4db')]=!0x0),Object[_0x45f322('0xa95')](_0x576b32,_0x2ede18[_0x45f322('0x1192')],_0x2ede18);}}function _0x20cd27(_0x234b9d,_0x155cc0){var _0x53ca91=_0xd0130;return!_0x155cc0||_0x53ca91('0x21e')!==_0x46ee95(_0x155cc0)&&_0x53ca91('0xae9')!=typeof _0x155cc0?function(_0x2ee549){if(void 0x0===_0x2ee549)throw new ReferenceError('this\x20hasn\x27t\x20been\x20initialised\x20-\x20super()\x20hasn\x27t\x20been\x20called');return _0x2ee549;}(_0x234b9d):_0x155cc0;}function _0xa313a0(){var _0x457d2b=_0xd0130;if(_0x457d2b('0x56')==typeof Reflect||!Reflect[_0x457d2b('0x6ea')])return!0x1;if(Reflect[_0x457d2b('0x6ea')][_0x457d2b('0x16e')])return!0x1;if(_0x457d2b('0xae9')==typeof Proxy)return!0x0;try{return Date[_0x457d2b('0x98c')]['toString'][_0x457d2b('0x4b0')](Reflect[_0x457d2b('0x6ea')](Date,[],function(){})),!0x0;}catch(_0x4c8551){return!0x1;}}function _0xcc926a(_0x1deb19){var _0x3ec2bb=_0xd0130;return(_0xcc926a=Object['setPrototypeOf']?Object[_0x3ec2bb('0x10c0')]:function(_0x143f7e){var _0x65782b=_0x3ec2bb;return _0x143f7e[_0x65782b('0x11e6')]||Object[_0x65782b('0x10c0')](_0x143f7e);})(_0x1deb19);}function _0x30c357(_0x34f9e7,_0x79f88c){return(_0x30c357=Object['setPrototypeOf']||function(_0x40d0d1,_0xf69484){return _0x40d0d1['__proto__']=_0xf69484,_0x40d0d1;})(_0x34f9e7,_0x79f88c);}var _0xc2e6fc=_0x3f980f[_0xd0130('0x407')][_0xd0130('0xb06')],_0x438609=function(_0x16d2f5){var _0x3a95ba=_0xd0130;!function(_0x98c657,_0x53ac7a){var _0x20d96d=_0x3ab6;if(_0x20d96d('0xae9')!=typeof _0x53ac7a&&null!==_0x53ac7a)throw new TypeError(_0x20d96d('0x409'));_0x98c657[_0x20d96d('0x98c')]=Object[_0x20d96d('0x5c2')](_0x53ac7a&&_0x53ac7a[_0x20d96d('0x98c')],{'constructor':{'value':_0x98c657,'writable':!0x0,'configurable':!0x0}}),_0x53ac7a&&_0x30c357(_0x98c657,_0x53ac7a);}(_0x2314e8,_0x16d2f5);var _0x222b61,_0x48f566,_0x111f53,_0x2b0fd2,_0x5a397c=(_0x222b61=_0x2314e8,function(){var _0x2a029e=_0x3ab6,_0x460f46,_0x619b72=_0xcc926a(_0x222b61);if(_0xa313a0()){var _0x360b1f=_0xcc926a(this)['constructor'];_0x460f46=Reflect[_0x2a029e('0x6ea')](_0x619b72,arguments,_0x360b1f);}else _0x460f46=_0x619b72[_0x2a029e('0x1036')](this,arguments);return _0x20cd27(this,_0x460f46);});function _0x2314e8(_0x27a00f){var _0x4c98e1=_0x3ab6,_0x1d8469;return function(_0x1a9427,_0x218a91){if(!(_0x1a9427 instanceof _0x218a91))throw new TypeError('Cannot\x20call\x20a\x20class\x20as\x20a\x20function');}(this,_0x2314e8),(_0x1d8469=_0x5a397c[_0x4c98e1('0x4b0')](this,_0x27a00f))[_0x4c98e1('0xfff')]={'tasks':[],'showAll':!0x1},_0x1d8469[_0x4c98e1('0xfff')][_0x4c98e1('0x3e7')]=_0x1d8469['props'][_0x4c98e1('0x3e7')][_0x4c98e1('0xd49')](function(_0x237793){return!0x1;}),_0x1d8469;}return _0x48f566=_0x2314e8,(_0x111f53=[{'key':'render','value':function(){var _0x2fbb4d=_0x3ab6;return this[_0x2fbb4d('0xae')](0x4);}},{'key':_0x3a95ba('0xae'),'value':function(_0x18f473){var _0x92cbe7=_0x3a95ba,_0x5cf743=this,_0x5ea82a=this[_0x92cbe7('0x6e0')]['tasks'][_0x92cbe7('0xbc0')](0x0,_0x18f473);return _0x446fc3[_0x92cbe7('0x544')]['createElement'](_0x446fc3[_0x92cbe7('0x544')]['Fragment'],null,_0x446fc3['default'][_0x92cbe7('0xd0f')](_0x3f980f[_0x92cbe7('0x3ff')],{'direction':_0x92cbe7('0xd20'),'size':_0x92cbe7('0xb0c'),'style':{'width':_0x92cbe7('0xeef')}},this[_0x92cbe7('0x6e0')][_0x92cbe7('0x3e7')]&&this[_0x92cbe7('0x6e0')][_0x92cbe7('0x3e7')][_0x92cbe7('0x525')]>0x0&&_0x446fc3[_0x92cbe7('0x544')]['createElement'](_0x3f980f['Space'],{'direction':_0x92cbe7('0xd20'),'style':{'width':'100%'}},_0x446fc3['default'][_0x92cbe7('0xd0f')](_0x3f980f[_0x92cbe7('0x8dd')],{'style':{'width':_0x92cbe7('0xeef')}},_0x5ea82a[_0x92cbe7('0xd49')](function(_0x4752fc,_0x2343df){var _0x3d0f3e=_0x92cbe7;return _0x5cf743[_0x3d0f3e('0x2cc')](_0x4752fc,_0x2343df);})),this[_0x92cbe7('0x6e0')][_0x92cbe7('0x3e7')][_0x92cbe7('0x525')]>_0x18f473&&_0x446fc3[_0x92cbe7('0x544')][_0x92cbe7('0xd0f')](_0x3f980f[_0x92cbe7('0x288')],{'type':_0x92cbe7('0x712'),'onClick':function(){var _0x4e5a8e=_0x92cbe7;return _0x5cf743[_0x4e5a8e('0xbd2')]();}},'View\x20All','\x20',this[_0x92cbe7('0x6e0')][_0x92cbe7('0x3e7')][_0x92cbe7('0x525')],'\x20',_0x92cbe7('0x790'))),this[_0x92cbe7('0x6e0')][_0x92cbe7('0x3e7')]&&0x0===this[_0x92cbe7('0x6e0')][_0x92cbe7('0x3e7')]['length']&&_0x446fc3[_0x92cbe7('0x544')][_0x92cbe7('0xd0f')](_0x3f980f[_0x92cbe7('0xfc5')],{'description':_0x92cbe7('0x6dc')})),_0x446fc3[_0x92cbe7('0x544')][_0x92cbe7('0xd0f')](_0x3f980f['Drawer'],{'title':_0x92cbe7('0x8fe'),'width':0x1d6,'onClose':function(){var _0x44cf64=_0x92cbe7;return _0x5cf743[_0x44cf64('0x10b9')]();},'visible':this[_0x92cbe7('0xfff')][_0x92cbe7('0x2d3')],'bodyStyle':{'paddingBottom':0x50},'zIndex':0x4b0,'maskClosable':!0x1},_0x446fc3[_0x92cbe7('0x544')]['createElement'](_0x3f980f['Timeline'],{'style':{'width':_0x92cbe7('0xeef')}},this[_0x92cbe7('0x6e0')][_0x92cbe7('0x3e7')][_0x92cbe7('0xd49')](function(_0x1bfb5e,_0x3ea8f9){return _0x5cf743['createTask'](_0x1bfb5e,_0x3ea8f9);}))));}},{'key':_0x3a95ba('0x8d3'),'value':function(_0x4efa22){setTimeout(function(){var _0x14262f=_0x3ab6;window[_0x14262f('0xcbd')](_0x4efa22);},0x64);}},{'key':'handleTaskHover','value':function(_0x3225eb){var _0x2f9d46=_0x3a95ba;this[_0x2f9d46('0x32b')]({'tasks':this[_0x2f9d46('0x6e0')][_0x2f9d46('0x3e7')][_0x2f9d46('0xd49')](function(_0x496a14,_0x4ae9ff){return _0x3225eb===_0x4ae9ff;})});}},{'key':'createTask','value':function(_0x147453,_0x1d8c4e){var _0x2420aa=_0x3a95ba,_0xaeb4ed=this;return 0x64===_0x147453[_0x2420aa('0xd17')]?_0x446fc3[_0x2420aa('0x544')][_0x2420aa('0xd0f')](_0x3f980f[_0x2420aa('0x8dd')][_0x2420aa('0xd37')],{'onMouseEnter':function(){return _0xaeb4ed['handleTaskHover'](_0x1d8c4e);},'dot':_0x446fc3[_0x2420aa('0x544')][_0x2420aa('0xd0f')](_0x4c2e47[_0x2420aa('0xaa0')],{'style':{'fontSize':_0x2420aa('0x5e5')}}),'color':'red'},this[_0x2420aa('0xf1c')](_0x147453),_0x147453[_0x2420aa('0x9b0')]&&this['state'][_0x2420aa('0x3e7')][_0x1d8c4e]&&_0x446fc3['default']['createElement'](_0x3f980f[_0x2420aa('0x288')],{'type':'link','onClick':function(){var _0x4114cf=_0x2420aa;return _0xaeb4ed[_0x4114cf('0x8d3')](_0x147453[_0x4114cf('0x9b0')]);}},_0x446fc3[_0x2420aa('0x544')]['createElement'](_0x4c2e47[_0x2420aa('0xd93')],{'style':{'fontSize':'16px'}}),'\x20',_0x147453[_0x2420aa('0x9aa')])):0x32===_0x147453[_0x2420aa('0xd17')]?_0x446fc3['default']['createElement'](_0x3f980f['Timeline'][_0x2420aa('0xd37')],{'onMouseEnter':function(){return _0xaeb4ed['handleTaskHover'](_0x1d8c4e);},'dot':_0x446fc3[_0x2420aa('0x544')][_0x2420aa('0xd0f')](_0x4c2e47[_0x2420aa('0x22a')],{'style':{'fontSize':_0x2420aa('0x5e5')}}),'color':'blue'},this[_0x2420aa('0xf1c')](_0x147453),_0x147453[_0x2420aa('0x9b0')]&&this[_0x2420aa('0xfff')]['tasks'][_0x1d8c4e]&&_0x446fc3['default'][_0x2420aa('0xd0f')](_0x3f980f['Button'],{'type':_0x2420aa('0x9b0'),'onClick':function(){var _0x53a21b=_0x2420aa;return _0xaeb4ed[_0x53a21b('0x8d3')](_0x147453[_0x53a21b('0x9b0')]);}},_0x446fc3[_0x2420aa('0x544')][_0x2420aa('0xd0f')](_0x4c2e47[_0x2420aa('0xd93')],{'style':{'fontSize':_0x2420aa('0x5e5')}}),'\x20',_0x147453[_0x2420aa('0x9aa')])):0x14===_0x147453['priority']?_0x446fc3[_0x2420aa('0x544')]['createElement'](_0x3f980f[_0x2420aa('0x8dd')][_0x2420aa('0xd37')],{'onMouseEnter':function(){var _0x32a540=_0x2420aa;return _0xaeb4ed[_0x32a540('0x26c')](_0x1d8c4e);},'dot':_0x446fc3[_0x2420aa('0x544')]['createElement'](_0x4c2e47[_0x2420aa('0xd63')],{'style':{'fontSize':_0x2420aa('0x5e5')}}),'color':_0x2420aa('0x1c5')},this[_0x2420aa('0xf1c')](_0x147453),_0x147453[_0x2420aa('0x9b0')]&&this[_0x2420aa('0xfff')][_0x2420aa('0x3e7')][_0x1d8c4e]&&_0x446fc3[_0x2420aa('0x544')][_0x2420aa('0xd0f')](_0x3f980f[_0x2420aa('0x288')],{'type':'link','onClick':function(){var _0x4ecc19=_0x2420aa;return _0xaeb4ed[_0x4ecc19('0x8d3')](_0x147453[_0x4ecc19('0x9b0')]);}},_0x446fc3[_0x2420aa('0x544')]['createElement'](_0x4c2e47[_0x2420aa('0xd93')],{'style':{'fontSize':'16px'}}),'\x20',_0x147453['action'])):0xa===_0x147453[_0x2420aa('0xd17')]?_0x446fc3[_0x2420aa('0x544')][_0x2420aa('0xd0f')](_0x3f980f[_0x2420aa('0x8dd')][_0x2420aa('0xd37')],{'onMouseEnter':function(){var _0x459be0=_0x2420aa;return _0xaeb4ed[_0x459be0('0x26c')](_0x1d8c4e);},'dot':_0x446fc3[_0x2420aa('0x544')][_0x2420aa('0xd0f')](_0x4c2e47[_0x2420aa('0x72f')],{'style':{'fontSize':_0x2420aa('0x5e5')}}),'color':_0x2420aa('0xfd3')},this['getText'](_0x147453),_0x147453[_0x2420aa('0x9b0')]&&this[_0x2420aa('0xfff')]['tasks'][_0x1d8c4e]&&_0x446fc3[_0x2420aa('0x544')][_0x2420aa('0xd0f')](_0x3f980f[_0x2420aa('0x288')],{'type':'link','onClick':function(){var _0x1d5d01=_0x2420aa;return _0xaeb4ed[_0x1d5d01('0x8d3')](_0x147453[_0x1d5d01('0x9b0')]);}},_0x446fc3[_0x2420aa('0x544')]['createElement'](_0x4c2e47[_0x2420aa('0xd93')],{'style':{'fontSize':_0x2420aa('0x5e5')}}),'\x20',_0x147453[_0x2420aa('0x9aa')])):void 0x0;}},{'key':_0x3a95ba('0xf1c'),'value':function(_0x4ea348){var _0x4f52d4=_0x3a95ba;return _0x4ea348[_0x4f52d4('0xddf')]?_0x446fc3[_0x4f52d4('0x544')][_0x4f52d4('0xd0f')](_0x3f980f[_0x4f52d4('0x2a3')],{'content':_0x4ea348[_0x4f52d4('0xddf')]},_0x446fc3[_0x4f52d4('0x544')]['createElement'](_0xc2e6fc,{'ellipsis':{'rows':0x1,'expandable':!0x0}},_0x4ea348['text'])):_0x446fc3[_0x4f52d4('0x544')][_0x4f52d4('0xd0f')](_0xc2e6fc,{'ellipsis':{'rows':0x1,'expandable':!0x0}},_0x4ea348['text']);}},{'key':_0x3a95ba('0xbd2'),'value':function(){var _0x4b0a62=_0x3a95ba;this[_0x4b0a62('0x32b')]({'showAll':!0x0});}},{'key':_0x3a95ba('0x10b9'),'value':function(){var _0x336ef9=_0x3a95ba;this[_0x336ef9('0x32b')]({'showAll':!0x1});}}])&&_0x56def9(_0x48f566[_0x3a95ba('0x98c')],_0x111f53),_0x2b0fd2&&_0x56def9(_0x48f566,_0x2b0fd2),_0x2314e8;}(_0x446fc3['default'][_0xd0130('0x346')]);_0x14ba48['default']=_0x438609;},{'@ant-design/icons':_0x404097('0x1e1'),'antd':_0x404097('0xdb9'),'react':'react'}],0x56:[function(_0x4be18b,_0x3c4c7f,_0x1bb353){var _0x583127=_0x404097;'use strict';Object[_0x583127('0xa95')](_0x1bb353,_0x583127('0x114c'),{'value':!0x0});var _0x5e7bfa,_0x7ebca8=Object[_0x583127('0xc7d')]||function(_0x937fa){var _0x4067bc=_0x583127;for(var _0x29e572=0x1;_0x29e572=0x0||Object[_0x4ab6a2('0x98c')][_0x4ab6a2('0x100')][_0x4ab6a2('0x4b0')](_0x40dec9,_0x114217)&&(_0x2de31b[_0x114217]=_0x40dec9[_0x114217]);return _0x2de31b;}(_0x5c82eb,[_0x4da908('0xbd'),_0x4da908('0xa7b'),'height',_0x4da908('0x1cd')]);return _0x560ff7['default'][_0x4da908('0xd0f')](_0x4da908('0x49e'),_0x7ebca8({'viewBox':_0x4da908('0xb1a'),'style':_0x7ebca8({'fill':_0x47b7f5,'width':_0x46184a,'height':_0x351ce9},_0x477f0b)},_0xd4234d),_0x560ff7[_0x4da908('0x544')][_0x4da908('0xd0f')](_0x4da908('0x558'),{'d':_0x4da908('0x204')}));};},{'react':_0x404097('0x1041')}],0x57:[function(_0xd752d3,_0x44369d,_0x1bece2){var _0x2a4a17=_0x404097;'use strict';Object[_0x2a4a17('0xa95')](_0x1bece2,_0x2a4a17('0x114c'),{'value':!0x0});var _0x2b9cab,_0x150110=Object['assign']||function(_0x166e81){var _0x2d2101=_0x2a4a17;for(var _0x47a654=0x1;_0x47a654=0x0||Object[_0x3aef5('0x98c')][_0x3aef5('0x100')][_0x3aef5('0x4b0')](_0x194269,_0x325fe2)&&(_0x599c8b[_0x325fe2]=_0x194269[_0x325fe2]);return _0x599c8b;}(_0x334386,[_0x7f73dd('0xbd'),_0x7f73dd('0xa7b'),_0x7f73dd('0x7f0'),_0x7f73dd('0x1cd')]);return _0x476d8e[_0x7f73dd('0x544')][_0x7f73dd('0xd0f')]('svg',_0x150110({'viewBox':'0\x200\x2024\x2024','style':_0x150110({'fill':_0x4b11e4,'width':_0x374395,'height':_0x377af6},_0x36d01b)},_0x153440),_0x476d8e[_0x7f73dd('0x544')][_0x7f73dd('0xd0f')](_0x7f73dd('0x558'),{'d':'M12,18.17L8.83,15L7.42,16.41L12,21L16.59,16.41L15.17,15M12,5.83L15.17,9L16.58,7.59L12,3L7.41,7.59L8.83,9L12,5.83Z'}));};},{'react':'react'}],0x58:[function(_0x4109dd,_0x56aa5b,_0x492293){var _0x3c2404=_0x404097;_0x56aa5b[_0x3c2404('0xddc')]=_0x4109dd(_0x3c2404('0xd7b'));},{'./lib/axios':0x5a}],0x59:[function(_0x2640c3,_0x3a403e,_0x300b01){var _0x2cdb26=_0x404097;'use strict';var _0x3aec78=_0x2640c3(_0x2cdb26('0x4f0')),_0x15c787=_0x2640c3('./../core/settle'),_0x55d0a3=_0x2640c3('./../helpers/cookies'),_0x23ae7c=_0x2640c3(_0x2cdb26('0x992')),_0x118eaa=_0x2640c3(_0x2cdb26('0x778')),_0x4b3542=_0x2640c3(_0x2cdb26('0x26e')),_0x4124fe=_0x2640c3(_0x2cdb26('0xd2b')),_0x1bfe6b=_0x2640c3('../core/createError');_0x3a403e[_0x2cdb26('0xddc')]=function(_0x30ff56){return new Promise(function(_0xf5513e,_0x12ef17){var _0x78d520=_0x3ab6,_0x1db1dd=_0x30ff56[_0x78d520('0xac8')],_0x62b340=_0x30ff56['headers'];_0x3aec78[_0x78d520('0xdbd')](_0x1db1dd)&&delete _0x62b340[_0x78d520('0xa87')],(_0x3aec78[_0x78d520('0x879')](_0x1db1dd)||_0x3aec78[_0x78d520('0xe63')](_0x1db1dd))&&_0x1db1dd[_0x78d520('0x3f7')]&&delete _0x62b340[_0x78d520('0xa87')];var _0x202931=new XMLHttpRequest();if(_0x30ff56[_0x78d520('0x111f')]){var _0x3bf880=_0x30ff56[_0x78d520('0x111f')][_0x78d520('0x59b')]||'',_0x240ccc=unescape(encodeURIComponent(_0x30ff56[_0x78d520('0x111f')]['password']))||'';_0x62b340[_0x78d520('0x11b3')]=_0x78d520('0x418')+btoa(_0x3bf880+':'+_0x240ccc);}var _0x7cb02c=_0x118eaa(_0x30ff56[_0x78d520('0x757')],_0x30ff56[_0x78d520('0x43e')]);if(_0x202931[_0x78d520('0xcbd')](_0x30ff56[_0x78d520('0x61')][_0x78d520('0x67d')](),_0x23ae7c(_0x7cb02c,_0x30ff56[_0x78d520('0x10dd')],_0x30ff56[_0x78d520('0x49a')]),!0x0),_0x202931['timeout']=_0x30ff56[_0x78d520('0x444')],_0x202931['onreadystatechange']=function(){var _0x395042=_0x78d520;if(_0x202931&&0x4===_0x202931[_0x395042('0xb64')]&&(0x0!==_0x202931[_0x395042('0x11e7')]||_0x202931[_0x395042('0x722')]&&0x0===_0x202931[_0x395042('0x722')][_0x395042('0x4dc')](_0x395042('0x119d')))){var _0x48800f=_0x395042('0x5ae')in _0x202931?_0x4b3542(_0x202931['getAllResponseHeaders']()):null,_0x32d005={'data':_0x30ff56[_0x395042('0x4a0')]&&'text'!==_0x30ff56[_0x395042('0x4a0')]?_0x202931[_0x395042('0xd7c')]:_0x202931[_0x395042('0x785')],'status':_0x202931[_0x395042('0x11e7')],'statusText':_0x202931['statusText'],'headers':_0x48800f,'config':_0x30ff56,'request':_0x202931};_0x15c787(_0xf5513e,_0x12ef17,_0x32d005),_0x202931=null;}},_0x202931['onabort']=function(){var _0x2e6621=_0x78d520;_0x202931&&(_0x12ef17(_0x1bfe6b(_0x2e6621('0x7f8'),_0x30ff56,_0x2e6621('0x464'),_0x202931)),_0x202931=null);},_0x202931[_0x78d520('0x6b8')]=function(){_0x12ef17(_0x1bfe6b('Network\x20Error',_0x30ff56,null,_0x202931)),_0x202931=null;},_0x202931[_0x78d520('0x3d5')]=function(){var _0x14c7be=_0x78d520,_0x2331d3=_0x14c7be('0x86')+_0x30ff56['timeout']+_0x14c7be('0xf1a');_0x30ff56[_0x14c7be('0x88e')]&&(_0x2331d3=_0x30ff56[_0x14c7be('0x88e')]),_0x12ef17(_0x1bfe6b(_0x2331d3,_0x30ff56,_0x14c7be('0x464'),_0x202931)),_0x202931=null;},_0x3aec78[_0x78d520('0x19e')]()){var _0x483fad=(_0x30ff56[_0x78d520('0x1002')]||_0x4124fe(_0x7cb02c))&&_0x30ff56['xsrfCookieName']?_0x55d0a3[_0x78d520('0xdda')](_0x30ff56[_0x78d520('0xd48')]):void 0x0;_0x483fad&&(_0x62b340[_0x30ff56['xsrfHeaderName']]=_0x483fad);}if(_0x78d520('0x9f')in _0x202931&&_0x3aec78[_0x78d520('0xa9e')](_0x62b340,function(_0x452b28,_0x3f878d){var _0x562724=_0x78d520;void 0x0===_0x1db1dd&&_0x562724('0x530')===_0x3f878d[_0x562724('0x2e7')]()?delete _0x62b340[_0x3f878d]:_0x202931[_0x562724('0x9f')](_0x3f878d,_0x452b28);}),_0x3aec78[_0x78d520('0xffd')](_0x30ff56[_0x78d520('0x1002')])||(_0x202931['withCredentials']=!!_0x30ff56[_0x78d520('0x1002')]),_0x30ff56['responseType'])try{_0x202931[_0x78d520('0x4a0')]=_0x30ff56[_0x78d520('0x4a0')];}catch(_0x1692b0){if(_0x78d520('0x41c')!==_0x30ff56['responseType'])throw _0x1692b0;}_0x78d520('0xae9')==typeof _0x30ff56[_0x78d520('0x728')]&&_0x202931['addEventListener'](_0x78d520('0x5ea'),_0x30ff56[_0x78d520('0x728')]),_0x78d520('0xae9')==typeof _0x30ff56['onUploadProgress']&&_0x202931[_0x78d520('0x12e')]&&_0x202931[_0x78d520('0x12e')][_0x78d520('0x55')](_0x78d520('0x5ea'),_0x30ff56[_0x78d520('0x1a9')]),_0x30ff56[_0x78d520('0x28')]&&_0x30ff56[_0x78d520('0x28')][_0x78d520('0x230')][_0x78d520('0xd5')](function(_0x311757){var _0x55b67a=_0x78d520;_0x202931&&(_0x202931[_0x55b67a('0xeb0')](),_0x12ef17(_0x311757),_0x202931=null);}),_0x1db1dd||(_0x1db1dd=null),_0x202931[_0x78d520('0x887')](_0x1db1dd);});};},{'../core/buildFullPath':0x60,'../core/createError':0x61,'./../core/settle':0x65,'./../helpers/buildURL':0x69,'./../helpers/cookies':0x6b,'./../helpers/isURLSameOrigin':0x6d,'./../helpers/parseHeaders':0x6f,'./../utils':0x71}],0x5a:[function(_0xeb6e3a,_0x10e351,_0x354aec){var _0x57acb1=_0x404097;'use strict';var _0x4f1fbd=_0xeb6e3a(_0x57acb1('0x98a')),_0x275b26=_0xeb6e3a(_0x57acb1('0xf57')),_0x47aca9=_0xeb6e3a('./core/Axios'),_0x56bc14=_0xeb6e3a(_0x57acb1('0x212'));function _0x1cd8eb(_0x40571a){var _0x4c7488=_0x57acb1,_0x2ad0d5=new _0x47aca9(_0x40571a),_0x58b844=_0x275b26(_0x47aca9[_0x4c7488('0x98c')][_0x4c7488('0xf6')],_0x2ad0d5);return _0x4f1fbd['extend'](_0x58b844,_0x47aca9['prototype'],_0x2ad0d5),_0x4f1fbd[_0x4c7488('0x1158')](_0x58b844,_0x2ad0d5),_0x58b844;}var _0x2852fd=_0x1cd8eb(_0xeb6e3a(_0x57acb1('0xadb')));_0x2852fd[_0x57acb1('0x760')]=_0x47aca9,_0x2852fd[_0x57acb1('0x5c2')]=function(_0x2bc293){return _0x1cd8eb(_0x56bc14(_0x2852fd['defaults'],_0x2bc293));},_0x2852fd[_0x57acb1('0x38e')]=_0xeb6e3a(_0x57acb1('0x874')),_0x2852fd[_0x57acb1('0x48d')]=_0xeb6e3a(_0x57acb1('0x513')),_0x2852fd[_0x57acb1('0xaf')]=_0xeb6e3a('./cancel/isCancel'),_0x2852fd['all']=function(_0x2cfdb8){var _0x13e33=_0x57acb1;return Promise[_0x13e33('0xc77')](_0x2cfdb8);},_0x2852fd[_0x57acb1('0xa8')]=_0xeb6e3a(_0x57acb1('0xb3f')),_0x10e351[_0x57acb1('0xddc')]=_0x2852fd,_0x10e351[_0x57acb1('0xddc')][_0x57acb1('0x544')]=_0x2852fd;},{'./cancel/Cancel':0x5b,'./cancel/CancelToken':0x5c,'./cancel/isCancel':0x5d,'./core/Axios':0x5e,'./core/mergeConfig':0x64,'./defaults':0x67,'./helpers/bind':0x68,'./helpers/spread':0x70,'./utils':0x71}],0x5b:[function(_0x32a339,_0x3a6539,_0x576df2){var _0x2957df=_0x404097;'use strict';function _0x20b578(_0x231674){var _0x45348d=_0x3ab6;this[_0x45348d('0xa1a')]=_0x231674;}_0x20b578[_0x2957df('0x98c')][_0x2957df('0x537')]=function(){var _0x1d3244=_0x2957df;return _0x1d3244('0x38e')+(this[_0x1d3244('0xa1a')]?':\x20'+this['message']:'');},_0x20b578[_0x2957df('0x98c')][_0x2957df('0x7c9')]=!0x0,_0x3a6539[_0x2957df('0xddc')]=_0x20b578;},{}],0x5c:[function(_0x36d6e5,_0x51c110,_0x5038c2){var _0x585487=_0x404097;'use strict';var _0x33ff58=_0x36d6e5(_0x585487('0xd98'));function _0x4afd0a(_0x3044d5){var _0x48f46a=_0x585487;if(_0x48f46a('0xae9')!=typeof _0x3044d5)throw new TypeError(_0x48f46a('0xc24'));var _0xff1326;this[_0x48f46a('0x230')]=new Promise(function(_0x5278d1){_0xff1326=_0x5278d1;});var _0x760c14=this;_0x3044d5(function(_0x310c50){var _0x27fcf9=_0x48f46a;_0x760c14[_0x27fcf9('0xf03')]||(_0x760c14['reason']=new _0x33ff58(_0x310c50),_0xff1326(_0x760c14[_0x27fcf9('0xf03')]));});}_0x4afd0a[_0x585487('0x98c')][_0x585487('0x6bc')]=function(){var _0x4b092f=_0x585487;if(this['reason'])throw this[_0x4b092f('0xf03')];},_0x4afd0a['source']=function(){var _0x1dc0a4;return{'token':new _0x4afd0a(function(_0x40801d){_0x1dc0a4=_0x40801d;}),'cancel':_0x1dc0a4};},_0x51c110[_0x585487('0xddc')]=_0x4afd0a;},{'./Cancel':0x5b}],0x5d:[function(_0xd292e5,_0x4b9954,_0x3184e5){var _0x32427a=_0x404097;'use strict';_0x4b9954[_0x32427a('0xddc')]=function(_0x2ca737){return!(!_0x2ca737||!_0x2ca737['__CANCEL__']);};},{}],0x5e:[function(_0x15de73,_0x26b77f,_0x50a12b){var _0x106071=_0x404097;'use strict';var _0x5e307d=_0x15de73('./../utils'),_0x27f804=_0x15de73(_0x106071('0x8b9')),_0x5801f2=_0x15de73(_0x106071('0x81e')),_0x2a5e19=_0x15de73(_0x106071('0x1d0')),_0x4cc251=_0x15de73(_0x106071('0xdb6'));function _0x3e8fe5(_0x41678c){var _0x43ca16=_0x106071;this[_0x43ca16('0x8c0')]=_0x41678c,this[_0x43ca16('0x1119')]={'request':new _0x5801f2(),'response':new _0x5801f2()};}_0x3e8fe5[_0x106071('0x98c')][_0x106071('0xf6')]=function(_0x311f83){var _0x1c6a51=_0x106071;_0x1c6a51('0x7c7')==typeof _0x311f83?(_0x311f83=arguments[0x1]||{})['url']=arguments[0x0]:_0x311f83=_0x311f83||{},(_0x311f83=_0x4cc251(this[_0x1c6a51('0x8c0')],_0x311f83))[_0x1c6a51('0x61')]?_0x311f83[_0x1c6a51('0x61')]=_0x311f83['method'][_0x1c6a51('0x2e7')]():this[_0x1c6a51('0x8c0')][_0x1c6a51('0x61')]?_0x311f83[_0x1c6a51('0x61')]=this[_0x1c6a51('0x8c0')][_0x1c6a51('0x61')][_0x1c6a51('0x2e7')]():_0x311f83[_0x1c6a51('0x61')]=_0x1c6a51('0x33');var _0x591ddd=[_0x2a5e19,void 0x0],_0x1540eb=Promise[_0x1c6a51('0x2f1')](_0x311f83);for(this[_0x1c6a51('0x1119')][_0x1c6a51('0xf6')]['forEach'](function(_0x7a090f){var _0x574660=_0x1c6a51;_0x591ddd[_0x574660('0x8c9')](_0x7a090f[_0x574660('0x1be')],_0x7a090f['rejected']);}),this['interceptors']['response'][_0x1c6a51('0xa9e')](function(_0x4691c7){var _0x204ce2=_0x1c6a51;_0x591ddd[_0x204ce2('0x8f8')](_0x4691c7[_0x204ce2('0x1be')],_0x4691c7['rejected']);});_0x591ddd[_0x1c6a51('0x525')];)_0x1540eb=_0x1540eb[_0x1c6a51('0xd5')](_0x591ddd[_0x1c6a51('0x8be')](),_0x591ddd[_0x1c6a51('0x8be')]());return _0x1540eb;},_0x3e8fe5[_0x106071('0x98c')][_0x106071('0x35b')]=function(_0x11c4b7){var _0x358d7e=_0x106071;return _0x11c4b7=_0x4cc251(this[_0x358d7e('0x8c0')],_0x11c4b7),_0x27f804(_0x11c4b7['url'],_0x11c4b7[_0x358d7e('0x10dd')],_0x11c4b7[_0x358d7e('0x49a')])['replace'](/^\?/,'');},_0x5e307d[_0x106071('0xa9e')]([_0x106071('0x506'),_0x106071('0x33'),'head',_0x106071('0x631')],function(_0x275b04){var _0x2000da=_0x106071;_0x3e8fe5[_0x2000da('0x98c')][_0x275b04]=function(_0x1f1121,_0x4fa1be){var _0x4022e6=_0x2000da;return this[_0x4022e6('0xf6')](_0x4cc251(_0x4fa1be||{},{'method':_0x275b04,'url':_0x1f1121}));};}),_0x5e307d[_0x106071('0xa9e')]([_0x106071('0xe80'),'put',_0x106071('0x834')],function(_0x3964d0){var _0x2901c2=_0x106071;_0x3e8fe5[_0x2901c2('0x98c')][_0x3964d0]=function(_0x293f29,_0x266080,_0x5192b8){return this['request'](_0x4cc251(_0x5192b8||{},{'method':_0x3964d0,'url':_0x293f29,'data':_0x266080}));};}),_0x26b77f[_0x106071('0xddc')]=_0x3e8fe5;},{'../helpers/buildURL':0x69,'./../utils':0x71,'./InterceptorManager':0x5f,'./dispatchRequest':0x62,'./mergeConfig':0x64}],0x5f:[function(_0x1ca049,_0x2b2b47,_0x378008){var _0x3d005c=_0x404097;'use strict';var _0xd76290=_0x1ca049(_0x3d005c('0x4f0'));function _0x355685(){var _0x4a202c=_0x3d005c;this[_0x4a202c('0x14')]=[];}_0x355685['prototype'][_0x3d005c('0x11a2')]=function(_0x56357f,_0x15c7c8){var _0x3180bd=_0x3d005c;return this[_0x3180bd('0x14')][_0x3180bd('0x8f8')]({'fulfilled':_0x56357f,'rejected':_0x15c7c8}),this[_0x3180bd('0x14')][_0x3180bd('0x525')]-0x1;},_0x355685['prototype'][_0x3d005c('0xa44')]=function(_0x270a09){var _0x105ed9=_0x3d005c;this[_0x105ed9('0x14')][_0x270a09]&&(this[_0x105ed9('0x14')][_0x270a09]=null);},_0x355685['prototype']['forEach']=function(_0x3294b8){var _0xbdf9f3=_0x3d005c;_0xd76290[_0xbdf9f3('0xa9e')](this[_0xbdf9f3('0x14')],function(_0x2a4bde){null!==_0x2a4bde&&_0x3294b8(_0x2a4bde);});},_0x2b2b47[_0x3d005c('0xddc')]=_0x355685;},{'./../utils':0x71}],0x60:[function(_0x31c178,_0x47b283,_0x527087){var _0x2e12f2=_0x404097;'use strict';var _0x4db9a7=_0x31c178(_0x2e12f2('0xac0')),_0x1c8385=_0x31c178(_0x2e12f2('0xfe4'));_0x47b283[_0x2e12f2('0xddc')]=function(_0x3ecb80,_0x4f8e7a){return _0x3ecb80&&!_0x4db9a7(_0x4f8e7a)?_0x1c8385(_0x3ecb80,_0x4f8e7a):_0x4f8e7a;};},{'../helpers/combineURLs':0x6a,'../helpers/isAbsoluteURL':0x6c}],0x61:[function(_0x16bcd3,_0x503581,_0x428586){var _0x2eb185=_0x404097;'use strict';var _0xbf33cd=_0x16bcd3(_0x2eb185('0x10d8'));_0x503581['exports']=function(_0x317c02,_0x2f3b80,_0x365951,_0x21fc0a,_0xff9c2b){var _0x5adb68=new Error(_0x317c02);return _0xbf33cd(_0x5adb68,_0x2f3b80,_0x365951,_0x21fc0a,_0xff9c2b);};},{'./enhanceError':0x63}],0x62:[function(_0x1a8220,_0x5ca540,_0x257185){var _0x394359=_0x404097;'use strict';var _0x17bc3b=_0x1a8220(_0x394359('0x4f0')),_0x573bb5=_0x1a8220(_0x394359('0x4f4')),_0x20bd79=_0x1a8220(_0x394359('0xaf4')),_0x9ae9d3=_0x1a8220('../defaults');function _0x471031(_0x274bc7){var _0x46c26e=_0x394359;_0x274bc7['cancelToken']&&_0x274bc7[_0x46c26e('0x28')][_0x46c26e('0x6bc')]();}_0x5ca540[_0x394359('0xddc')]=function(_0x164af2){var _0x3eff9b=_0x394359;return _0x471031(_0x164af2),_0x164af2[_0x3eff9b('0x26d')]=_0x164af2[_0x3eff9b('0x26d')]||{},_0x164af2['data']=_0x573bb5(_0x164af2[_0x3eff9b('0xac8')],_0x164af2['headers'],_0x164af2['transformRequest']),_0x164af2[_0x3eff9b('0x26d')]=_0x17bc3b[_0x3eff9b('0x857')](_0x164af2[_0x3eff9b('0x26d')][_0x3eff9b('0xa63')]||{},_0x164af2[_0x3eff9b('0x26d')][_0x164af2['method']]||{},_0x164af2[_0x3eff9b('0x26d')]),_0x17bc3b[_0x3eff9b('0xa9e')](['delete',_0x3eff9b('0x33'),_0x3eff9b('0x5d4'),_0x3eff9b('0xe80'),_0x3eff9b('0xde5'),'patch',_0x3eff9b('0xa63')],function(_0x53fef7){delete _0x164af2['headers'][_0x53fef7];}),(_0x164af2[_0x3eff9b('0x7fb')]||_0x9ae9d3[_0x3eff9b('0x7fb')])(_0x164af2)[_0x3eff9b('0xd5')](function(_0x4c604f){var _0x2358c9=_0x3eff9b;return _0x471031(_0x164af2),_0x4c604f[_0x2358c9('0xac8')]=_0x573bb5(_0x4c604f[_0x2358c9('0xac8')],_0x4c604f[_0x2358c9('0x26d')],_0x164af2[_0x2358c9('0x280')]),_0x4c604f;},function(_0x6df9be){var _0x10938f=_0x3eff9b;return _0x20bd79(_0x6df9be)||(_0x471031(_0x164af2),_0x6df9be&&_0x6df9be[_0x10938f('0xd7c')]&&(_0x6df9be[_0x10938f('0xd7c')][_0x10938f('0xac8')]=_0x573bb5(_0x6df9be[_0x10938f('0xd7c')][_0x10938f('0xac8')],_0x6df9be[_0x10938f('0xd7c')][_0x10938f('0x26d')],_0x164af2['transformResponse']))),Promise[_0x10938f('0xd4f')](_0x6df9be);});};},{'../cancel/isCancel':0x5d,'../defaults':0x67,'./../utils':0x71,'./transformData':0x66}],0x63:[function(_0x208f68,_0x5b704e,_0x5414cd){var _0x3430a9=_0x404097;'use strict';_0x5b704e[_0x3430a9('0xddc')]=function(_0x29e9bf,_0x4e4456,_0x1a26a9,_0x4aed17,_0x1e458f){var _0x132300=_0x3430a9;return _0x29e9bf['config']=_0x4e4456,_0x1a26a9&&(_0x29e9bf['code']=_0x1a26a9),_0x29e9bf['request']=_0x4aed17,_0x29e9bf[_0x132300('0xd7c')]=_0x1e458f,_0x29e9bf[_0x132300('0x6c7')]=!0x0,_0x29e9bf[_0x132300('0x113e')]=function(){var _0x1c38af=_0x132300;return{'message':this['message'],'name':this[_0x1c38af('0x263')],'description':this['description'],'number':this[_0x1c38af('0xd95')],'fileName':this['fileName'],'lineNumber':this[_0x1c38af('0x68a')],'columnNumber':this[_0x1c38af('0x1185')],'stack':this[_0x1c38af('0x1d9')],'config':this['config'],'code':this[_0x1c38af('0xb5c')]};},_0x29e9bf;};},{}],0x64:[function(_0x26474d,_0x4ae794,_0x10c5f7){var _0x11725b=_0x404097;'use strict';var _0x9ae8e8=_0x26474d(_0x11725b('0x3e2'));_0x4ae794[_0x11725b('0xddc')]=function(_0x187ce4,_0x1ba860){var _0x1a2b35=_0x11725b;_0x1ba860=_0x1ba860||{};var _0x360215={},_0x3360a2=[_0x1a2b35('0x43e'),'method','data'],_0x14d313=['headers',_0x1a2b35('0x111f'),_0x1a2b35('0x96e'),_0x1a2b35('0x10dd')],_0x32324e=[_0x1a2b35('0x757'),'transformRequest',_0x1a2b35('0x280'),_0x1a2b35('0x49a'),'timeout',_0x1a2b35('0xe4c'),_0x1a2b35('0x1002'),_0x1a2b35('0x7fb'),_0x1a2b35('0x4a0'),'xsrfCookieName',_0x1a2b35('0x51b'),'onUploadProgress','onDownloadProgress','decompress',_0x1a2b35('0x480'),'maxBodyLength','maxRedirects',_0x1a2b35('0x823'),_0x1a2b35('0xdcc'),_0x1a2b35('0x900'),_0x1a2b35('0x28'),_0x1a2b35('0x8d'),_0x1a2b35('0x6a6')],_0x1b0313=[_0x1a2b35('0x7f4')];function _0x806314(_0x412ebe,_0x5e1b9f){var _0x4a2e4c=_0x1a2b35;return _0x9ae8e8[_0x4a2e4c('0x943')](_0x412ebe)&&_0x9ae8e8[_0x4a2e4c('0x943')](_0x5e1b9f)?_0x9ae8e8[_0x4a2e4c('0x857')](_0x412ebe,_0x5e1b9f):_0x9ae8e8['isPlainObject'](_0x5e1b9f)?_0x9ae8e8[_0x4a2e4c('0x857')]({},_0x5e1b9f):_0x9ae8e8[_0x4a2e4c('0x6f6')](_0x5e1b9f)?_0x5e1b9f[_0x4a2e4c('0xbc0')]():_0x5e1b9f;}function _0x47ecc2(_0x3eb279){var _0x4ac600=_0x1a2b35;_0x9ae8e8[_0x4ac600('0xffd')](_0x1ba860[_0x3eb279])?_0x9ae8e8[_0x4ac600('0xffd')](_0x187ce4[_0x3eb279])||(_0x360215[_0x3eb279]=_0x806314(void 0x0,_0x187ce4[_0x3eb279])):_0x360215[_0x3eb279]=_0x806314(_0x187ce4[_0x3eb279],_0x1ba860[_0x3eb279]);}_0x9ae8e8['forEach'](_0x3360a2,function(_0x12842f){var _0x4a2af6=_0x1a2b35;_0x9ae8e8[_0x4a2af6('0xffd')](_0x1ba860[_0x12842f])||(_0x360215[_0x12842f]=_0x806314(void 0x0,_0x1ba860[_0x12842f]));}),_0x9ae8e8[_0x1a2b35('0xa9e')](_0x14d313,_0x47ecc2),_0x9ae8e8[_0x1a2b35('0xa9e')](_0x32324e,function(_0x4aa00c){var _0x52883c=_0x1a2b35;_0x9ae8e8[_0x52883c('0xffd')](_0x1ba860[_0x4aa00c])?_0x9ae8e8[_0x52883c('0xffd')](_0x187ce4[_0x4aa00c])||(_0x360215[_0x4aa00c]=_0x806314(void 0x0,_0x187ce4[_0x4aa00c])):_0x360215[_0x4aa00c]=_0x806314(void 0x0,_0x1ba860[_0x4aa00c]);}),_0x9ae8e8[_0x1a2b35('0xa9e')](_0x1b0313,function(_0x39894a){_0x39894a in _0x1ba860?_0x360215[_0x39894a]=_0x806314(_0x187ce4[_0x39894a],_0x1ba860[_0x39894a]):_0x39894a in _0x187ce4&&(_0x360215[_0x39894a]=_0x806314(void 0x0,_0x187ce4[_0x39894a]));});var _0x2190ae=_0x3360a2[_0x1a2b35('0x3cc')](_0x14d313)[_0x1a2b35('0x3cc')](_0x32324e)[_0x1a2b35('0x3cc')](_0x1b0313),_0x30a69c=Object['keys'](_0x187ce4)[_0x1a2b35('0x3cc')](Object[_0x1a2b35('0x7ce')](_0x1ba860))[_0x1a2b35('0x4fb')](function(_0x49d2bc){var _0xabc84b=_0x1a2b35;return-0x1===_0x2190ae[_0xabc84b('0x4dc')](_0x49d2bc);});return _0x9ae8e8[_0x1a2b35('0xa9e')](_0x30a69c,_0x47ecc2),_0x360215;};},{'../utils':0x71}],0x65:[function(_0x6330f4,_0x2d8ebb,_0x5240e0){var _0x25a7a3=_0x404097;'use strict';var _0x33f761=_0x6330f4('./createError');_0x2d8ebb[_0x25a7a3('0xddc')]=function(_0x9e491c,_0x1acd2c,_0x528acf){var _0x231ebd=_0x25a7a3,_0x366b8d=_0x528acf[_0x231ebd('0x4d1')][_0x231ebd('0x7f4')];_0x528acf[_0x231ebd('0x11e7')]&&_0x366b8d&&!_0x366b8d(_0x528acf[_0x231ebd('0x11e7')])?_0x1acd2c(_0x33f761(_0x231ebd('0x493')+_0x528acf['status'],_0x528acf[_0x231ebd('0x4d1')],null,_0x528acf[_0x231ebd('0xf6')],_0x528acf)):_0x9e491c(_0x528acf);};},{'./createError':0x61}],0x66:[function(_0x57b97f,_0x3bc146,_0x122a47){var _0x45b465=_0x404097;'use strict';var _0xe3e926=_0x57b97f('./../utils');_0x3bc146[_0x45b465('0xddc')]=function(_0xddc9c2,_0x497b3b,_0xcfa259){var _0x3b405d=_0x45b465;return _0xe3e926[_0x3b405d('0xa9e')](_0xcfa259,function(_0x52557){_0xddc9c2=_0x52557(_0xddc9c2,_0x497b3b);}),_0xddc9c2;};},{'./../utils':0x71}],0x67:[function(_0x4e20fd,_0xc445a,_0x21dd02){var _0x2c2df5=_0x404097;(function(_0x5734eb){var _0x588f1b=_0x3ab6;'use strict';var _0x5bd56d=_0x4e20fd('./utils'),_0xd72bb3=_0x4e20fd(_0x588f1b('0xb0e')),_0x5e6215={'Content-Type':_0x588f1b('0xeab')};function _0x177d9d(_0x169260,_0x4f753b){var _0x51cf06=_0x588f1b;!_0x5bd56d[_0x51cf06('0xffd')](_0x169260)&&_0x5bd56d[_0x51cf06('0xffd')](_0x169260['Content-Type'])&&(_0x169260[_0x51cf06('0xa87')]=_0x4f753b);}var _0x59c4eb,_0x5ccb14={'adapter':(_0x588f1b('0x56')!=typeof XMLHttpRequest?_0x59c4eb=_0x4e20fd(_0x588f1b('0x618')):void 0x0!==_0x5734eb&&_0x588f1b('0x884')===Object[_0x588f1b('0x98c')][_0x588f1b('0x537')][_0x588f1b('0x4b0')](_0x5734eb)&&(_0x59c4eb=_0x4e20fd(_0x588f1b('0xf12'))),_0x59c4eb),'transformRequest':[function(_0x3fc766,_0x53899d){var _0x1c1275=_0x588f1b;return _0xd72bb3(_0x53899d,_0x1c1275('0x1138')),_0xd72bb3(_0x53899d,_0x1c1275('0xa87')),_0x5bd56d[_0x1c1275('0xdbd')](_0x3fc766)||_0x5bd56d['isArrayBuffer'](_0x3fc766)||_0x5bd56d[_0x1c1275('0xcfd')](_0x3fc766)||_0x5bd56d[_0x1c1275('0xbc5')](_0x3fc766)||_0x5bd56d[_0x1c1275('0xe63')](_0x3fc766)||_0x5bd56d[_0x1c1275('0x879')](_0x3fc766)?_0x3fc766:_0x5bd56d[_0x1c1275('0x108c')](_0x3fc766)?_0x3fc766[_0x1c1275('0x6d')]:_0x5bd56d[_0x1c1275('0x6a3')](_0x3fc766)?(_0x177d9d(_0x53899d,_0x1c1275('0x47e')),_0x3fc766['toString']()):_0x5bd56d[_0x1c1275('0x1019')](_0x3fc766)?(_0x177d9d(_0x53899d,_0x1c1275('0xff0')),JSON[_0x1c1275('0x591')](_0x3fc766)):_0x3fc766;}],'transformResponse':[function(_0x285233){var _0x4daf4e=_0x588f1b;if(_0x4daf4e('0x7c7')==typeof _0x285233)try{_0x285233=JSON[_0x4daf4e('0xf01')](_0x285233);}catch(_0x151908){}return _0x285233;}],'timeout':0x0,'xsrfCookieName':'XSRF-TOKEN','xsrfHeaderName':_0x588f1b('0x916'),'maxContentLength':-0x1,'maxBodyLength':-0x1,'validateStatus':function(_0x1ba7d2){return _0x1ba7d2>=0xc8&&_0x1ba7d2<0x12c;}};_0x5ccb14[_0x588f1b('0x26d')]={'common':{'Accept':'application/json,\x20text/plain,\x20*/*'}},_0x5bd56d[_0x588f1b('0xa9e')](['delete','get',_0x588f1b('0x5d4')],function(_0x15786b){var _0x23c134=_0x588f1b;_0x5ccb14[_0x23c134('0x26d')][_0x15786b]={};}),_0x5bd56d[_0x588f1b('0xa9e')]([_0x588f1b('0xe80'),_0x588f1b('0xde5'),_0x588f1b('0x834')],function(_0x2fa96e){var _0x32685b=_0x588f1b;_0x5ccb14[_0x32685b('0x26d')][_0x2fa96e]=_0x5bd56d['merge'](_0x5e6215);}),_0xc445a[_0x588f1b('0xddc')]=_0x5ccb14;}[_0x2c2df5('0x4b0')](this,_0x4e20fd(_0x2c2df5('0x11e'))));},{'./adapters/http':0x59,'./adapters/xhr':0x59,'./helpers/normalizeHeaderName':0x6e,'./utils':0x71,'_process':0x1}],0x68:[function(_0x3cdf4f,_0x3a0715,_0x317f93){var _0x5072d2=_0x404097;'use strict';_0x3a0715[_0x5072d2('0xddc')]=function(_0x4574f1,_0x214509){return function(){var _0x34abc1=_0x3ab6;for(var _0x470e57=new Array(arguments[_0x34abc1('0x525')]),_0x1e628b=0x0;_0x1e628b<_0x470e57['length'];_0x1e628b++)_0x470e57[_0x1e628b]=arguments[_0x1e628b];return _0x4574f1[_0x34abc1('0x1036')](_0x214509,_0x470e57);};};},{}],0x69:[function(_0x101e73,_0x569a9d,_0x43a3f8){var _0xe192=_0x404097;'use strict';var _0x30c80e=_0x101e73(_0xe192('0x4f0'));function _0x51212b(_0x26b34f){var _0x316088=_0xe192;return encodeURIComponent(_0x26b34f)[_0x316088('0x166')](/%3A/gi,':')[_0x316088('0x166')](/%24/g,'$')[_0x316088('0x166')](/%2C/gi,',')['replace'](/%20/g,'+')[_0x316088('0x166')](/%5B/gi,'[')[_0x316088('0x166')](/%5D/gi,']');}_0x569a9d[_0xe192('0xddc')]=function(_0x2623f0,_0xdba6ed,_0x4c9b4b){var _0x4d6968=_0xe192;if(!_0xdba6ed)return _0x2623f0;var _0x740afb;if(_0x4c9b4b)_0x740afb=_0x4c9b4b(_0xdba6ed);else{if(_0x30c80e['isURLSearchParams'](_0xdba6ed))_0x740afb=_0xdba6ed['toString']();else{var _0x16617c=[];_0x30c80e['forEach'](_0xdba6ed,function(_0x480424,_0x50f3f4){null!=_0x480424&&(_0x30c80e['isArray'](_0x480424)?_0x50f3f4+='[]':_0x480424=[_0x480424],_0x30c80e['forEach'](_0x480424,function(_0x31ce5b){var _0xd24782=_0x3ab6;_0x30c80e[_0xd24782('0xce9')](_0x31ce5b)?_0x31ce5b=_0x31ce5b[_0xd24782('0x486')]():_0x30c80e['isObject'](_0x31ce5b)&&(_0x31ce5b=JSON[_0xd24782('0x591')](_0x31ce5b)),_0x16617c[_0xd24782('0x8f8')](_0x51212b(_0x50f3f4)+'='+_0x51212b(_0x31ce5b));}));}),_0x740afb=_0x16617c['join']('&');}}if(_0x740afb){var _0x4f893e=_0x2623f0[_0x4d6968('0x4dc')]('#');-0x1!==_0x4f893e&&(_0x2623f0=_0x2623f0['slice'](0x0,_0x4f893e)),_0x2623f0+=(-0x1===_0x2623f0['indexOf']('?')?'?':'&')+_0x740afb;}return _0x2623f0;};},{'./../utils':0x71}],0x6a:[function(_0x15b8d4,_0x2eb585,_0x562040){var _0x4f9282=_0x404097;'use strict';_0x2eb585[_0x4f9282('0xddc')]=function(_0x34f9e0,_0x40497b){var _0x655c6d=_0x4f9282;return _0x40497b?_0x34f9e0['replace'](/\/+$/,'')+'/'+_0x40497b[_0x655c6d('0x166')](/^\/+/,''):_0x34f9e0;};},{}],0x6b:[function(_0x165492,_0x22bbeb,_0x3588d8){var _0x56b031=_0x404097;'use strict';var _0x42a392=_0x165492('./../utils');_0x22bbeb[_0x56b031('0xddc')]=_0x42a392[_0x56b031('0x19e')]()?{'write':function(_0x5544f7,_0x453771,_0xf9449,_0x52e82a,_0x3c3ca1,_0x4fd2e8){var _0x276f26=_0x56b031,_0xe5ad98=[];_0xe5ad98[_0x276f26('0x8f8')](_0x5544f7+'='+encodeURIComponent(_0x453771)),_0x42a392[_0x276f26('0x6c1')](_0xf9449)&&_0xe5ad98[_0x276f26('0x8f8')](_0x276f26('0x4d8')+new Date(_0xf9449)[_0x276f26('0xc5')]()),_0x42a392[_0x276f26('0xbd4')](_0x52e82a)&&_0xe5ad98[_0x276f26('0x8f8')](_0x276f26('0x6a1')+_0x52e82a),_0x42a392[_0x276f26('0xbd4')](_0x3c3ca1)&&_0xe5ad98[_0x276f26('0x8f8')](_0x276f26('0xc88')+_0x3c3ca1),!0x0===_0x4fd2e8&&_0xe5ad98[_0x276f26('0x8f8')](_0x276f26('0x7bf')),document[_0x276f26('0x8b8')]=_0xe5ad98[_0x276f26('0x582')](';\x20');},'read':function(_0x5c2313){var _0x53cfe0=_0x56b031,_0x26ca5a=document[_0x53cfe0('0x8b8')]['match'](new RegExp(_0x53cfe0('0xcdf')+_0x5c2313+_0x53cfe0('0x5fa')));return _0x26ca5a?decodeURIComponent(_0x26ca5a[0x3]):null;},'remove':function(_0x348f1e){var _0x5d5f33=_0x56b031;this['write'](_0x348f1e,'',Date[_0x5d5f33('0x6ce')]()-0x5265c00);}}:{'write':function(){},'read':function(){return null;},'remove':function(){}};},{'./../utils':0x71}],0x6c:[function(_0x10098c,_0x519ff4,_0x3c2c00){var _0x1d0082=_0x404097;'use strict';_0x519ff4[_0x1d0082('0xddc')]=function(_0x457aff){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i['test'](_0x457aff);};},{}],0x6d:[function(_0x55e5aa,_0x1f4869,_0x479958){var _0x3303f6=_0x404097;'use strict';var _0x503370=_0x55e5aa(_0x3303f6('0x4f0'));_0x1f4869[_0x3303f6('0xddc')]=_0x503370[_0x3303f6('0x19e')]()?function(){var _0xb773e0=_0x3303f6,_0x212453,_0x210179=/(msie|trident)/i[_0xb773e0('0xaac')](navigator[_0xb773e0('0x378')]),_0x400a79=document['createElement']('a');function _0x4f5376(_0x4608d1){var _0xebc033=_0xb773e0,_0x175608=_0x4608d1;return _0x210179&&(_0x400a79['setAttribute'](_0xebc033('0x629'),_0x175608),_0x175608=_0x400a79[_0xebc033('0x629')]),_0x400a79['setAttribute']('href',_0x175608),{'href':_0x400a79[_0xebc033('0x629')],'protocol':_0x400a79[_0xebc033('0x103d')]?_0x400a79[_0xebc033('0x103d')]['replace'](/:$/,''):'','host':_0x400a79[_0xebc033('0xafd')],'search':_0x400a79[_0xebc033('0xaaf')]?_0x400a79[_0xebc033('0xaaf')]['replace'](/^\?/,''):'','hash':_0x400a79[_0xebc033('0x716')]?_0x400a79[_0xebc033('0x716')][_0xebc033('0x166')](/^#/,''):'','hostname':_0x400a79[_0xebc033('0x97e')],'port':_0x400a79['port'],'pathname':'/'===_0x400a79['pathname'][_0xebc033('0xc8e')](0x0)?_0x400a79[_0xebc033('0xa37')]:'/'+_0x400a79[_0xebc033('0xa37')]};}return _0x212453=_0x4f5376(window[_0xb773e0('0x54f')][_0xb773e0('0x629')]),function(_0x514987){var _0x37bb91=_0xb773e0,_0x751b57=_0x503370[_0x37bb91('0xbd4')](_0x514987)?_0x4f5376(_0x514987):_0x514987;return _0x751b57[_0x37bb91('0x103d')]===_0x212453[_0x37bb91('0x103d')]&&_0x751b57[_0x37bb91('0xafd')]===_0x212453[_0x37bb91('0xafd')];};}():function(){return!0x0;};},{'./../utils':0x71}],0x6e:[function(_0x4afcc2,_0x4f344b,_0x359679){var _0x573a29=_0x404097;'use strict';var _0x32da02=_0x4afcc2(_0x573a29('0x3e2'));_0x4f344b[_0x573a29('0xddc')]=function(_0xa399b8,_0x14495a){var _0x35ce39=_0x573a29;_0x32da02[_0x35ce39('0xa9e')](_0xa399b8,function(_0x1547a4,_0x45f446){var _0x43a1c7=_0x35ce39;_0x45f446!==_0x14495a&&_0x45f446[_0x43a1c7('0x67d')]()===_0x14495a[_0x43a1c7('0x67d')]()&&(_0xa399b8[_0x14495a]=_0x1547a4,delete _0xa399b8[_0x45f446]);});};},{'../utils':0x71}],0x6f:[function(_0x1f2cce,_0x1e04c8,_0x24aaee){var _0x8221a5=_0x404097;'use strict';var _0xfd03ca=_0x1f2cce('./../utils'),_0x417412=['age',_0x8221a5('0xb8a'),_0x8221a5('0x275'),'content-type','etag','expires',_0x8221a5('0x9d7'),'host','if-modified-since',_0x8221a5('0xb56'),'last-modified',_0x8221a5('0x54f'),_0x8221a5('0xa20'),_0x8221a5('0x10c5'),_0x8221a5('0x8ea'),_0x8221a5('0xa17'),_0x8221a5('0x576')];_0x1e04c8['exports']=function(_0x3adb7d){var _0x482bc4=_0x8221a5,_0x5a6888,_0x4764a4,_0x243e30,_0x12685b={};return _0x3adb7d?(_0xfd03ca[_0x482bc4('0xa9e')](_0x3adb7d[_0x482bc4('0x541')]('\x0a'),function(_0x49408d){var _0x1be8c7=_0x482bc4;if(_0x243e30=_0x49408d[_0x1be8c7('0x4dc')](':'),_0x5a6888=_0xfd03ca[_0x1be8c7('0x445')](_0x49408d[_0x1be8c7('0x111d')](0x0,_0x243e30))[_0x1be8c7('0x2e7')](),_0x4764a4=_0xfd03ca[_0x1be8c7('0x445')](_0x49408d[_0x1be8c7('0x111d')](_0x243e30+0x1)),_0x5a6888){if(_0x12685b[_0x5a6888]&&_0x417412[_0x1be8c7('0x4dc')](_0x5a6888)>=0x0)return;_0x12685b[_0x5a6888]=_0x1be8c7('0xcfc')===_0x5a6888?(_0x12685b[_0x5a6888]?_0x12685b[_0x5a6888]:[])['concat']([_0x4764a4]):_0x12685b[_0x5a6888]?_0x12685b[_0x5a6888]+',\x20'+_0x4764a4:_0x4764a4;}}),_0x12685b):_0x12685b;};},{'./../utils':0x71}],0x70:[function(_0x26f915,_0x303441,_0x78c2f4){var _0x403841=_0x404097;'use strict';_0x303441[_0x403841('0xddc')]=function(_0x30e502){return function(_0x495674){var _0x4c0dc4=_0x3ab6;return _0x30e502[_0x4c0dc4('0x1036')](null,_0x495674);};};},{}],0x71:[function(_0x55a064,_0x5bc05b,_0x39791b){var _0x2bf0ed=_0x404097;'use strict';var _0x4ff6e8=_0x55a064('./helpers/bind'),_0xae2270=Object[_0x2bf0ed('0x98c')]['toString'];function _0x444b44(_0x22b9db){var _0x55e239=_0x2bf0ed;return'[object\x20Array]'===_0xae2270[_0x55e239('0x4b0')](_0x22b9db);}function _0x2905fd(_0x482e73){return void 0x0===_0x482e73;}function _0x16ebe4(_0x340d07){return null!==_0x340d07&&'object'==typeof _0x340d07;}function _0x30d0aa(_0x5cf866){var _0x15f2c2=_0x2bf0ed;if(_0x15f2c2('0xebe')!==_0xae2270['call'](_0x5cf866))return!0x1;var _0x3caa61=Object['getPrototypeOf'](_0x5cf866);return null===_0x3caa61||_0x3caa61===Object[_0x15f2c2('0x98c')];}function _0x35c808(_0x444714){var _0x1fe8ce=_0x2bf0ed;return _0x1fe8ce('0xf70')===_0xae2270[_0x1fe8ce('0x4b0')](_0x444714);}function _0x541acc(_0x311777,_0x37232f){var _0x2e8d4c=_0x2bf0ed;if(null!=_0x311777){if(_0x2e8d4c('0x21e')!=typeof _0x311777&&(_0x311777=[_0x311777]),_0x444b44(_0x311777))for(var _0xabcde1=0x0,_0x4ca778=_0x311777[_0x2e8d4c('0x525')];_0xabcde1<_0x4ca778;_0xabcde1++)_0x37232f[_0x2e8d4c('0x4b0')](null,_0x311777[_0xabcde1],_0xabcde1,_0x311777);else for(var _0x53f6ee in _0x311777)Object[_0x2e8d4c('0x98c')][_0x2e8d4c('0x100')][_0x2e8d4c('0x4b0')](_0x311777,_0x53f6ee)&&_0x37232f['call'](null,_0x311777[_0x53f6ee],_0x53f6ee,_0x311777);}}_0x5bc05b[_0x2bf0ed('0xddc')]={'isArray':_0x444b44,'isArrayBuffer':function(_0xd262df){var _0x5d9393=_0x2bf0ed;return _0x5d9393('0xe46')===_0xae2270[_0x5d9393('0x4b0')](_0xd262df);},'isBuffer':function(_0x19e9dd){var _0x404b9b=_0x2bf0ed;return null!==_0x19e9dd&&!_0x2905fd(_0x19e9dd)&&null!==_0x19e9dd[_0x404b9b('0x3c6')]&&!_0x2905fd(_0x19e9dd[_0x404b9b('0x3c6')])&&_0x404b9b('0xae9')==typeof _0x19e9dd[_0x404b9b('0x3c6')][_0x404b9b('0xcfd')]&&_0x19e9dd[_0x404b9b('0x3c6')]['isBuffer'](_0x19e9dd);},'isFormData':function(_0xa922da){var _0x3a2d76=_0x2bf0ed;return _0x3a2d76('0x56')!=typeof FormData&&_0xa922da instanceof FormData;},'isArrayBufferView':function(_0x25497b){var _0x9513fe=_0x2bf0ed;return'undefined'!=typeof ArrayBuffer&&ArrayBuffer[_0x9513fe('0x58b')]?ArrayBuffer[_0x9513fe('0x58b')](_0x25497b):_0x25497b&&_0x25497b[_0x9513fe('0x6d')]&&_0x25497b[_0x9513fe('0x6d')]instanceof ArrayBuffer;},'isString':function(_0x29bbc9){var _0x3fc115=_0x2bf0ed;return _0x3fc115('0x7c7')==typeof _0x29bbc9;},'isNumber':function(_0x5dc323){return'number'==typeof _0x5dc323;},'isObject':_0x16ebe4,'isPlainObject':_0x30d0aa,'isUndefined':_0x2905fd,'isDate':function(_0xedbabf){var _0x3f009c=_0x2bf0ed;return _0x3f009c('0xf11')===_0xae2270[_0x3f009c('0x4b0')](_0xedbabf);},'isFile':function(_0x455f51){var _0x417f48=_0x2bf0ed;return'[object\x20File]'===_0xae2270[_0x417f48('0x4b0')](_0x455f51);},'isBlob':function(_0x2e7a08){var _0xfc57f3=_0x2bf0ed;return _0xfc57f3('0x4a2')===_0xae2270['call'](_0x2e7a08);},'isFunction':_0x35c808,'isStream':function(_0xe6b40a){return _0x16ebe4(_0xe6b40a)&&_0x35c808(_0xe6b40a['pipe']);},'isURLSearchParams':function(_0x5ae83c){var _0x3882f0=_0x2bf0ed;return _0x3882f0('0x56')!=typeof URLSearchParams&&_0x5ae83c instanceof URLSearchParams;},'isStandardBrowserEnv':function(){var _0x3105c4=_0x2bf0ed;return(_0x3105c4('0x56')==typeof navigator||'ReactNative'!==navigator[_0x3105c4('0x6ff')]&&'NativeScript'!==navigator[_0x3105c4('0x6ff')]&&'NS'!==navigator[_0x3105c4('0x6ff')])&&(_0x3105c4('0x56')!=typeof window&&_0x3105c4('0x56')!=typeof document);},'forEach':_0x541acc,'merge':function _0x34f53c(){var _0x2addd3={};function _0x5a190c(_0x462079,_0x521cc8){var _0x76b2d1=_0x3ab6;_0x30d0aa(_0x2addd3[_0x521cc8])&&_0x30d0aa(_0x462079)?_0x2addd3[_0x521cc8]=_0x34f53c(_0x2addd3[_0x521cc8],_0x462079):_0x30d0aa(_0x462079)?_0x2addd3[_0x521cc8]=_0x34f53c({},_0x462079):_0x444b44(_0x462079)?_0x2addd3[_0x521cc8]=_0x462079[_0x76b2d1('0xbc0')]():_0x2addd3[_0x521cc8]=_0x462079;}for(var _0x428c4d=0x0,_0x26cb46=arguments['length'];_0x428c4d<_0x26cb46;_0x428c4d++)_0x541acc(arguments[_0x428c4d],_0x5a190c);return _0x2addd3;},'extend':function(_0x5beec6,_0x11a380,_0x59c601){return _0x541acc(_0x11a380,function(_0x6d6ad,_0x36dcc2){var _0x4b5c46=_0x3ab6;_0x5beec6[_0x36dcc2]=_0x59c601&&_0x4b5c46('0xae9')==typeof _0x6d6ad?_0x4ff6e8(_0x6d6ad,_0x59c601):_0x6d6ad;}),_0x5beec6;},'trim':function(_0x1b7a24){var _0x4526c8=_0x2bf0ed;return _0x1b7a24[_0x4526c8('0x166')](/^\s*/,'')[_0x4526c8('0x166')](/\s*$/,'');},'stripBOM':function(_0x120e7b){var _0x54a90a=_0x2bf0ed;return 0xfeff===_0x120e7b[_0x54a90a('0x59d')](0x0)&&(_0x120e7b=_0x120e7b[_0x54a90a('0xbc0')](0x1)),_0x120e7b;}};},{'./helpers/bind':0x68}],0x72:[function(_0x21b6f4,_0x2febc9,_0x1d20d3){var _0x3e96a2=_0x404097,_0x3eda8d;_0x3eda8d=function(_0x294940){var _0x314f45=_0x3ab6;'use strict';function _0x5d0d79(_0xb9320,_0x22ba14){var _0x3d6da5=_0x3ab6;clearTimeout(_0x22ba14[_0x3d6da5('0x444')]),_0x294940[_0x3d6da5('0xc1f')](window,'mouseup',_0x22ba14['hurry']),_0x294940[_0x3d6da5('0xc1f')](window,_0x3d6da5('0xd8e'),_0x22ba14[_0x3d6da5('0xa62')]);}_0x294940[_0x314f45('0x5a8')](_0x314f45('0x133'),!0x1,function(_0x43f271,_0x549f82){var _0x9f03=_0x314f45;_0x43f271[_0x9f03('0xfff')][_0x9f03('0x133')]&&(_0x5d0d79(0x0,_0x43f271[_0x9f03('0xfff')][_0x9f03('0x133')]),_0x43f271[_0x9f03('0xfff')][_0x9f03('0x133')]=null),_0x549f82&&0x0==_0x43f271[_0x9f03('0x55c')]['wrapper'][_0x9f03('0x5f7')]&&function(_0x7ca1c4,_0xda5f16){var _0xfa98b2=_0x9f03;function _0x5d3474(){var _0x41d46f=_0x3ab6;_0x7ca1c4[_0x41d46f('0x55c')][_0x41d46f('0x701')][_0x41d46f('0x5f7')]?(_0x5d0d79(0x0,_0xda5f16),_0x7ca1c4[_0x41d46f('0x55c')][_0x41d46f('0x29f')]!=_0x7ca1c4[_0x41d46f('0x55c')][_0x41d46f('0x701')][_0x41d46f('0x1a1')]&&_0x7ca1c4['refresh']()):_0xda5f16['timeout']=setTimeout(_0x5d3474,_0xda5f16[_0x41d46f('0x29e')]);}_0xda5f16[_0xfa98b2('0x444')]=setTimeout(_0x5d3474,_0xda5f16[_0xfa98b2('0x29e')]),_0xda5f16[_0xfa98b2('0xa62')]=function(){var _0x16150a=_0xfa98b2;clearTimeout(_0xda5f16[_0x16150a('0x444')]),_0xda5f16[_0x16150a('0x444')]=setTimeout(_0x5d3474,0x32);},_0x294940['on'](window,_0xfa98b2('0xd66'),_0xda5f16[_0xfa98b2('0xa62')]),_0x294940['on'](window,'keyup',_0xda5f16[_0xfa98b2('0xa62')]);}(_0x43f271,_0x43f271[_0x9f03('0xfff')]['autoRefresh']={'delay':_0x549f82[_0x9f03('0x29e')]||0xfa});});},'object'==typeof _0x1d20d3&&_0x3e96a2('0x21e')==typeof _0x2febc9?_0x3eda8d(_0x21b6f4(_0x3e96a2('0x1182'))):_0x3e96a2('0xae9')==typeof define&&define['amd']?define([_0x3e96a2('0x1182')],_0x3eda8d):_0x3eda8d(CodeMirror);},{'../../lib/codemirror':0x74}],0x73:[function(_0x35a2db,_0x1b2f8b,_0x28cff8){var _0x371d99=_0x404097,_0x4c0174;_0x4c0174=function(_0x17f1a2){var _0x5085dc=_0x3ab6,_0x622d2d={'pairs':_0x5085dc('0x847'),'closeBefore':_0x5085dc('0xf63'),'triples':'','explode':_0x5085dc('0x5c6')},_0x167476=_0x17f1a2[_0x5085dc('0x9be')];function _0x548099(_0x266fde,_0x47435d){var _0x493191=_0x5085dc;return _0x493191('0xc8a')==_0x47435d&&'string'==typeof _0x266fde?_0x266fde:'object'==typeof _0x266fde&&null!=_0x266fde[_0x47435d]?_0x266fde[_0x47435d]:_0x622d2d[_0x47435d];}_0x17f1a2[_0x5085dc('0x5a8')](_0x5085dc('0xa14'),!0x1,function(_0x15cbcf,_0x377976,_0x2ace4a){var _0x1c2a49=_0x5085dc;_0x2ace4a&&_0x2ace4a!=_0x17f1a2[_0x1c2a49('0x76')]&&(_0x15cbcf[_0x1c2a49('0x102f')](_0x1bb917),_0x15cbcf[_0x1c2a49('0xfff')]['closeBrackets']=null),_0x377976&&(_0x5abcda(_0x548099(_0x377976,_0x1c2a49('0xc8a'))),_0x15cbcf['state'][_0x1c2a49('0x11bf')]=_0x377976,_0x15cbcf['addKeyMap'](_0x1bb917));});var _0x1bb917={'Backspace':function(_0xa21166){var _0x343a3f=_0x5085dc,_0x430a90=_0x5159df(_0xa21166);if(!_0x430a90||_0xa21166['getOption'](_0x343a3f('0xa30')))return _0x17f1a2['Pass'];for(var _0x291717=_0x548099(_0x430a90,'pairs'),_0x57b40d=_0xa21166[_0x343a3f('0x1060')](),_0x5a640b=0x0;_0x5a640b<_0x57b40d['length'];_0x5a640b++){if(!_0x57b40d[_0x5a640b][_0x343a3f('0x1078')]())return _0x17f1a2['Pass'];var _0x51cbd6=_0x1062b7(_0xa21166,_0x57b40d[_0x5a640b][_0x343a3f('0x5d4')]);if(!_0x51cbd6||_0x291717[_0x343a3f('0x4dc')](_0x51cbd6)%0x2!=0x0)return _0x17f1a2[_0x343a3f('0x1096')];}for(_0x5a640b=_0x57b40d[_0x343a3f('0x525')]-0x1;_0x5a640b>=0x0;_0x5a640b--){var _0x20c1c4=_0x57b40d[_0x5a640b][_0x343a3f('0x5d4')];_0xa21166['replaceRange']('',_0x167476(_0x20c1c4[_0x343a3f('0xde2')],_0x20c1c4['ch']-0x1),_0x167476(_0x20c1c4['line'],_0x20c1c4['ch']+0x1),'+delete');}},'Enter':function(_0x5f53af){var _0xc561b0=_0x5085dc,_0x46f604=_0x5159df(_0x5f53af),_0x4dc052=_0x46f604&&_0x548099(_0x46f604,_0xc561b0('0xc1c'));if(!_0x4dc052||_0x5f53af[_0xc561b0('0x82e')]('disableInput'))return _0x17f1a2['Pass'];for(var _0x5c0bb0=_0x5f53af[_0xc561b0('0x1060')](),_0x44a1dd=0x0;_0x44a1dd<_0x5c0bb0[_0xc561b0('0x525')];_0x44a1dd++){if(!_0x5c0bb0[_0x44a1dd][_0xc561b0('0x1078')]())return _0x17f1a2['Pass'];var _0x5a388a=_0x1062b7(_0x5f53af,_0x5c0bb0[_0x44a1dd]['head']);if(!_0x5a388a||_0x4dc052[_0xc561b0('0x4dc')](_0x5a388a)%0x2!=0x0)return _0x17f1a2[_0xc561b0('0x1096')];}_0x5f53af[_0xc561b0('0x723')](function(){var _0x5008ca=_0xc561b0,_0xffd2b8=_0x5f53af['lineSeparator']()||'\x0a';_0x5f53af['replaceSelection'](_0xffd2b8+_0xffd2b8,null),_0x5f53af['execCommand'](_0x5008ca('0x600')),_0x5c0bb0=_0x5f53af[_0x5008ca('0x1060')]();for(var _0x36b8a2=0x0;_0x36b8a2<_0x5c0bb0[_0x5008ca('0x525')];_0x36b8a2++){var _0x2c6feb=_0x5c0bb0[_0x36b8a2][_0x5008ca('0x5d4')][_0x5008ca('0xde2')];_0x5f53af[_0x5008ca('0xf0d')](_0x2c6feb,null,!0x0),_0x5f53af['indentLine'](_0x2c6feb+0x1,null,!0x0);}});}};function _0x5abcda(_0x5d417a){var _0x2729d9=_0x5085dc;for(var _0x16b808=0x0;_0x16b808<_0x5d417a[_0x2729d9('0x525')];_0x16b808++){var _0x341d2e=_0x5d417a[_0x2729d9('0xc8e')](_0x16b808),_0x43d3fb='\x27'+_0x341d2e+'\x27';_0x1bb917[_0x43d3fb]||(_0x1bb917[_0x43d3fb]=_0x21f405(_0x341d2e));}}function _0x21f405(_0x373c0e){return function(_0x5caf15){return function(_0x1749bd,_0x36840e){var _0x3e3b24=_0x3ab6,_0x26e0de=_0x5159df(_0x1749bd);if(!_0x26e0de||_0x1749bd[_0x3e3b24('0x82e')](_0x3e3b24('0xa30')))return _0x17f1a2[_0x3e3b24('0x1096')];var _0x559c13=_0x548099(_0x26e0de,_0x3e3b24('0xc8a')),_0x2ef4d7=_0x559c13['indexOf'](_0x36840e);if(-0x1==_0x2ef4d7)return _0x17f1a2['Pass'];for(var _0xc36128,_0x130fc7=_0x548099(_0x26e0de,_0x3e3b24('0x5ee')),_0x948a4f=_0x548099(_0x26e0de,_0x3e3b24('0xdb')),_0x41934c=_0x559c13[_0x3e3b24('0xc8e')](_0x2ef4d7+0x1)==_0x36840e,_0x36bd42=_0x1749bd[_0x3e3b24('0x1060')](),_0x5de5d7=_0x2ef4d7%0x2==0x0,_0x30ce09=0x0;_0x30ce09<_0x36bd42[_0x3e3b24('0x525')];_0x30ce09++){var _0x3010fe,_0x2f6bb2=_0x36bd42[_0x30ce09],_0x46e168=_0x2f6bb2[_0x3e3b24('0x5d4')],_0x28c55d=_0x1749bd[_0x3e3b24('0x1117')](_0x46e168,_0x167476(_0x46e168['line'],_0x46e168['ch']+0x1));if(_0x5de5d7&&!_0x2f6bb2[_0x3e3b24('0x1078')]())_0x3010fe=_0x3e3b24('0x1084');else{if(!_0x41934c&&_0x5de5d7||_0x28c55d!=_0x36840e){if(_0x41934c&&_0x46e168['ch']>0x1&&_0x948a4f[_0x3e3b24('0x4dc')](_0x36840e)>=0x0&&_0x1749bd['getRange'](_0x167476(_0x46e168[_0x3e3b24('0xde2')],_0x46e168['ch']-0x2),_0x46e168)==_0x36840e+_0x36840e){if(_0x46e168['ch']>0x2&&/\bstring/['test'](_0x1749bd[_0x3e3b24('0x905')](_0x167476(_0x46e168['line'],_0x46e168['ch']-0x2))))return _0x17f1a2[_0x3e3b24('0x1096')];_0x3010fe=_0x3e3b24('0x34c');}else{if(_0x41934c){var _0x3a6007=0x0==_0x46e168['ch']?'\x20':_0x1749bd[_0x3e3b24('0x1117')](_0x167476(_0x46e168['line'],_0x46e168['ch']-0x1),_0x46e168);if(_0x17f1a2[_0x3e3b24('0x4d')](_0x28c55d)||_0x3a6007==_0x36840e||_0x17f1a2[_0x3e3b24('0x4d')](_0x3a6007))return _0x17f1a2[_0x3e3b24('0x1096')];_0x3010fe=_0x3e3b24('0x1f4');}else{if(!_0x5de5d7||!(0x0===_0x28c55d[_0x3e3b24('0x525')]||/\s/[_0x3e3b24('0xaac')](_0x28c55d)||_0x130fc7['indexOf'](_0x28c55d)>-0x1))return _0x17f1a2['Pass'];_0x3010fe=_0x3e3b24('0x1f4');}}}else _0x3010fe=_0x41934c&&_0x252042(_0x1749bd,_0x46e168)?'both':_0x948a4f[_0x3e3b24('0x4dc')](_0x36840e)>=0x0&&_0x1749bd[_0x3e3b24('0x1117')](_0x46e168,_0x167476(_0x46e168[_0x3e3b24('0xde2')],_0x46e168['ch']+0x3))==_0x36840e+_0x36840e+_0x36840e?_0x3e3b24('0xfca'):_0x3e3b24('0x633');}if(_0xc36128){if(_0xc36128!=_0x3010fe)return _0x17f1a2['Pass'];}else _0xc36128=_0x3010fe;}var _0x11b4ca=_0x2ef4d7%0x2?_0x559c13[_0x3e3b24('0xc8e')](_0x2ef4d7-0x1):_0x36840e,_0x21a2ac=_0x2ef4d7%0x2?_0x36840e:_0x559c13['charAt'](_0x2ef4d7+0x1);_0x1749bd[_0x3e3b24('0x723')](function(){var _0x2804ea=_0x3e3b24;if('skip'==_0xc36128)_0x1749bd[_0x2804ea('0x69f')](_0x2804ea('0xa24'));else{if(_0x2804ea('0xfca')==_0xc36128)for(var _0x488069=0x0;_0x488069<0x3;_0x488069++)_0x1749bd[_0x2804ea('0x69f')](_0x2804ea('0xa24'));else{if(_0x2804ea('0x1084')==_0xc36128){var _0xea0ef9=_0x1749bd['getSelections']();for(_0x488069=0x0;_0x488069<_0xea0ef9['length'];_0x488069++)_0xea0ef9[_0x488069]=_0x11b4ca+_0xea0ef9[_0x488069]+_0x21a2ac;for(_0x1749bd[_0x2804ea('0xd65')](_0xea0ef9,_0x2804ea('0x215')),_0xea0ef9=_0x1749bd[_0x2804ea('0x1060')]()[_0x2804ea('0xbc0')](),_0x488069=0x0;_0x488069<_0xea0ef9[_0x2804ea('0x525')];_0x488069++)_0xea0ef9[_0x488069]=(_0x1aabcf=_0xea0ef9[_0x488069],_0x2a3b6f=void 0x0,_0x2a3b6f=_0x17f1a2['cmpPos'](_0x1aabcf[_0x2804ea('0x66d')],_0x1aabcf['head'])>0x0,{'anchor':new _0x167476(_0x1aabcf[_0x2804ea('0x66d')][_0x2804ea('0xde2')],_0x1aabcf[_0x2804ea('0x66d')]['ch']+(_0x2a3b6f?-0x1:0x1)),'head':new _0x167476(_0x1aabcf[_0x2804ea('0x5d4')][_0x2804ea('0xde2')],_0x1aabcf[_0x2804ea('0x5d4')]['ch']+(_0x2a3b6f?0x1:-0x1))});_0x1749bd[_0x2804ea('0xd02')](_0xea0ef9);}else _0x2804ea('0x1f4')==_0xc36128?(_0x1749bd[_0x2804ea('0xd78')](_0x11b4ca+_0x21a2ac,null),_0x1749bd['triggerElectric'](_0x11b4ca+_0x21a2ac),_0x1749bd[_0x2804ea('0x69f')](_0x2804ea('0x600'))):_0x2804ea('0x34c')==_0xc36128&&(_0x1749bd[_0x2804ea('0xd78')](_0x11b4ca+_0x11b4ca+_0x11b4ca+_0x11b4ca,_0x2804ea('0xa69')),_0x1749bd[_0x2804ea('0x69f')](_0x2804ea('0xa24')));}}var _0x1aabcf,_0x2a3b6f;});}(_0x5caf15,_0x373c0e);};}function _0x5159df(_0x3b1f8b){var _0x4ed7fc=_0x5085dc,_0x1b4b38=_0x3b1f8b[_0x4ed7fc('0xfff')][_0x4ed7fc('0x11bf')];return!_0x1b4b38||_0x1b4b38['override']?_0x1b4b38:_0x3b1f8b[_0x4ed7fc('0x1198')](_0x3b1f8b['getCursor']())['closeBrackets']||_0x1b4b38;}function _0x1062b7(_0xae2913,_0x6e4fce){var _0x4b8289=_0x5085dc,_0x4fc354=_0xae2913[_0x4b8289('0x1117')](_0x167476(_0x6e4fce[_0x4b8289('0xde2')],_0x6e4fce['ch']-0x1),_0x167476(_0x6e4fce[_0x4b8289('0xde2')],_0x6e4fce['ch']+0x1));return 0x2==_0x4fc354[_0x4b8289('0x525')]?_0x4fc354:null;}function _0x252042(_0x376d42,_0xa4f3ac){var _0x242725=_0x5085dc,_0x1d373a=_0x376d42[_0x242725('0x10c2')](_0x167476(_0xa4f3ac[_0x242725('0xde2')],_0xa4f3ac['ch']+0x1));return/\bstring/[_0x242725('0xaac')](_0x1d373a['type'])&&_0x1d373a[_0x242725('0x1045')]==_0xa4f3ac['ch']&&(0x0==_0xa4f3ac['ch']||!/\bstring/[_0x242725('0xaac')](_0x376d42[_0x242725('0x905')](_0xa4f3ac)));}_0x5abcda(_0x622d2d['pairs']+'`');},_0x371d99('0x21e')==typeof _0x28cff8&&_0x371d99('0x21e')==typeof _0x1b2f8b?_0x4c0174(_0x35a2db(_0x371d99('0x1182'))):_0x371d99('0xae9')==typeof define&&define[_0x371d99('0x733')]?define(['../../lib/codemirror'],_0x4c0174):_0x4c0174(CodeMirror);},{'../../lib/codemirror':0x74}],0x74:[function(_0x4a3b86,_0x55ade2,_0x1f5263){!function(_0x2903ca,_0x8e1444){var _0x440cbe=_0x3ab6;_0x440cbe('0x21e')==typeof _0x1f5263&&void 0x0!==_0x55ade2?_0x55ade2['exports']=_0x8e1444():_0x440cbe('0xae9')==typeof define&&define[_0x440cbe('0x733')]?define(_0x8e1444):(_0x2903ca=_0x2903ca||self)[_0x440cbe('0xb28')]=_0x8e1444();}(this,function(){var _0x255d35=_0x3ab6;'use strict';var _0x4d3a77=navigator[_0x255d35('0x378')],_0x3dc9c4=navigator['platform'],_0x3505d1=/gecko\/\d/i[_0x255d35('0xaac')](_0x4d3a77),_0x4a5ba5=/MSIE \d/[_0x255d35('0xaac')](_0x4d3a77),_0x44449c=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/[_0x255d35('0xd16')](_0x4d3a77),_0x324ff6=/Edge\/(\d+)/['exec'](_0x4d3a77),_0x5d31d6=_0x4a5ba5||_0x44449c||_0x324ff6,_0x5275d9=_0x5d31d6&&(_0x4a5ba5?document['documentMode']||0x6:+(_0x324ff6||_0x44449c)[0x1]),_0x153ccc=!_0x324ff6&&/WebKit\//[_0x255d35('0xaac')](_0x4d3a77),_0xd4041b=_0x153ccc&&/Qt\/\d+\.\d+/[_0x255d35('0xaac')](_0x4d3a77),_0x29e781=!_0x324ff6&&/Chrome\//[_0x255d35('0xaac')](_0x4d3a77),_0x58a491=/Opera\//[_0x255d35('0xaac')](_0x4d3a77),_0x30b785=/Apple Computer/[_0x255d35('0xaac')](navigator[_0x255d35('0x1055')]),_0x2cabb8=/Mac OS X 1\d\D([8-9]|\d\d)\D/[_0x255d35('0xaac')](_0x4d3a77),_0x5ce608=/PhantomJS/['test'](_0x4d3a77),_0x47afbe=!_0x324ff6&&/AppleWebKit/[_0x255d35('0xaac')](_0x4d3a77)&&/Mobile\/\w+/[_0x255d35('0xaac')](_0x4d3a77),_0x28e6e3=/Android/['test'](_0x4d3a77),_0x53e5ce=_0x47afbe||_0x28e6e3||/webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i[_0x255d35('0xaac')](_0x4d3a77),_0x2841f0=_0x47afbe||/Mac/['test'](_0x3dc9c4),_0x3f7dc4=/\bCrOS\b/[_0x255d35('0xaac')](_0x4d3a77),_0x118689=/win/i[_0x255d35('0xaac')](_0x3dc9c4),_0x3434ae=_0x58a491&&_0x4d3a77['match'](/Version\/(\d*\.\d*)/);_0x3434ae&&(_0x3434ae=Number(_0x3434ae[0x1])),_0x3434ae&&_0x3434ae>=0xf&&(_0x58a491=!0x1,_0x153ccc=!0x0);var _0x3e590a=_0x2841f0&&(_0xd4041b||_0x58a491&&(null==_0x3434ae||_0x3434ae<12.11)),_0x5028e8=_0x3505d1||_0x5d31d6&&_0x5275d9>=0x9;function _0xf37a46(_0x45d43f){return new RegExp('(^|\x5cs)'+_0x45d43f+'(?:$|\x5cs)\x5cs*');}var _0x508a43,_0x1a7f4e=function(_0x4a25f5,_0x85ae2f){var _0x17c3a2=_0x255d35,_0x1160b6=_0x4a25f5['className'],_0xb65ccb=_0xf37a46(_0x85ae2f)[_0x17c3a2('0xd16')](_0x1160b6);if(_0xb65ccb){var _0x51d42e=_0x1160b6[_0x17c3a2('0xbc0')](_0xb65ccb[_0x17c3a2('0xf20')]+_0xb65ccb[0x0]['length']);_0x4a25f5[_0x17c3a2('0x1bd')]=_0x1160b6[_0x17c3a2('0xbc0')](0x0,_0xb65ccb[_0x17c3a2('0xf20')])+(_0x51d42e?_0xb65ccb[0x1]+_0x51d42e:'');}};function _0x294f84(_0x3dc27d){var _0x5eec33=_0x255d35;for(var _0xc11162=_0x3dc27d[_0x5eec33('0x4e6')][_0x5eec33('0x525')];_0xc11162>0x0;--_0xc11162)_0x3dc27d[_0x5eec33('0x75b')](_0x3dc27d['firstChild']);return _0x3dc27d;}function _0x171d74(_0x385144,_0x45e8ab){return _0x294f84(_0x385144)['appendChild'](_0x45e8ab);}function _0x31f23b(_0x16e101,_0x1f10ab,_0x1f3ec4,_0x46ae4e){var _0x53f14c=_0x255d35,_0x5868c3=document['createElement'](_0x16e101);if(_0x1f3ec4&&(_0x5868c3['className']=_0x1f3ec4),_0x46ae4e&&(_0x5868c3[_0x53f14c('0x1cd')][_0x53f14c('0x77d')]=_0x46ae4e),'string'==typeof _0x1f10ab)_0x5868c3[_0x53f14c('0x11be')](document[_0x53f14c('0xf8d')](_0x1f10ab));else{if(_0x1f10ab)for(var _0x3000f4=0x0;_0x3000f4<_0x1f10ab[_0x53f14c('0x525')];++_0x3000f4)_0x5868c3[_0x53f14c('0x11be')](_0x1f10ab[_0x3000f4]);}return _0x5868c3;}function _0x14455d(_0x35d74c,_0x4d4eb4,_0x5af284,_0x24990b){var _0x1c6dfb=_0x255d35,_0x5691c8=_0x31f23b(_0x35d74c,_0x4d4eb4,_0x5af284,_0x24990b);return _0x5691c8[_0x1c6dfb('0xfdc')](_0x1c6dfb('0x59e'),'presentation'),_0x5691c8;}function _0x2c8c88(_0x25a765,_0xd4972c){var _0x1d8b0e=_0x255d35;if(0x3==_0xd4972c[_0x1d8b0e('0xa4b')]&&(_0xd4972c=_0xd4972c[_0x1d8b0e('0x64')]),_0x25a765[_0x1d8b0e('0x87d')])return _0x25a765[_0x1d8b0e('0x87d')](_0xd4972c);do{if(0xb==_0xd4972c['nodeType']&&(_0xd4972c=_0xd4972c[_0x1d8b0e('0xafd')]),_0xd4972c==_0x25a765)return!0x0;}while(_0xd4972c=_0xd4972c[_0x1d8b0e('0x64')]);}function _0x3d661d(){var _0x3dc086=_0x255d35,_0xf06317;try{_0xf06317=document['activeElement'];}catch(_0x1bef83){_0xf06317=document[_0x3dc086('0x98e')]||null;}for(;_0xf06317&&_0xf06317[_0x3dc086('0x2bd')]&&_0xf06317[_0x3dc086('0x2bd')][_0x3dc086('0x80b')];)_0xf06317=_0xf06317['shadowRoot'][_0x3dc086('0x80b')];return _0xf06317;}function _0x33fcac(_0x38681c,_0x35cc17){var _0x2b7178=_0x255d35,_0x383214=_0x38681c[_0x2b7178('0x1bd')];_0xf37a46(_0x35cc17)['test'](_0x383214)||(_0x38681c[_0x2b7178('0x1bd')]+=(_0x383214?'\x20':'')+_0x35cc17);}function _0x26e038(_0x86c814,_0x304a5a){var _0x259fbc=_0x255d35;for(var _0x50ab98=_0x86c814[_0x259fbc('0x541')]('\x20'),_0x7d134b=0x0;_0x7d134b<_0x50ab98[_0x259fbc('0x525')];_0x7d134b++)_0x50ab98[_0x7d134b]&&!_0xf37a46(_0x50ab98[_0x7d134b])[_0x259fbc('0xaac')](_0x304a5a)&&(_0x304a5a+='\x20'+_0x50ab98[_0x7d134b]);return _0x304a5a;}_0x508a43=document[_0x255d35('0x36c')]?function(_0x5a5980,_0xcf3f59,_0x10ac8c,_0x2b95f0){var _0x59b207=_0x255d35,_0x63fe74=document[_0x59b207('0x36c')]();return _0x63fe74[_0x59b207('0x870')](_0x2b95f0||_0x5a5980,_0x10ac8c),_0x63fe74[_0x59b207('0xa9b')](_0x5a5980,_0xcf3f59),_0x63fe74;}:function(_0xa17f36,_0x199ebe,_0x14c8a3){var _0x44cc77=_0x255d35,_0x209831=document[_0x44cc77('0x98e')][_0x44cc77('0x788')]();try{_0x209831[_0x44cc77('0x761')](_0xa17f36[_0x44cc77('0x64')]);}catch(_0x3bf137){return _0x209831;}return _0x209831[_0x44cc77('0xdb1')](!0x0),_0x209831['moveEnd']('character',_0x14c8a3),_0x209831[_0x44cc77('0xf52')]('character',_0x199ebe),_0x209831;};var _0x8eca30=function(_0x2ad57f){var _0x4383a2=_0x255d35;_0x2ad57f[_0x4383a2('0x8ff')]();};function _0x283b11(_0x3618ee){var _0x1eae48=_0x255d35,_0x47c3a3=Array[_0x1eae48('0x98c')]['slice']['call'](arguments,0x1);return function(){var _0x3c7617=_0x1eae48;return _0x3618ee[_0x3c7617('0x1036')](null,_0x47c3a3);};}function _0x44b57b(_0x1a0a0c,_0x41143f,_0x348be8){var _0x59a4d7=_0x255d35;for(var _0x150d04 in(_0x41143f||(_0x41143f={}),_0x1a0a0c))!_0x1a0a0c['hasOwnProperty'](_0x150d04)||!0x1===_0x348be8&&_0x41143f[_0x59a4d7('0x100')](_0x150d04)||(_0x41143f[_0x150d04]=_0x1a0a0c[_0x150d04]);return _0x41143f;}function _0x40e2a1(_0x92e23c,_0x5774b4,_0x4cb218,_0xb9f7bb,_0x30666b){var _0x24b4d4=_0x255d35;null==_0x5774b4&&-0x1==(_0x5774b4=_0x92e23c[_0x24b4d4('0xaaf')](/[^\s\u00a0]/))&&(_0x5774b4=_0x92e23c[_0x24b4d4('0x525')]);for(var _0x2f9d40=_0xb9f7bb||0x0,_0x349a4b=_0x30666b||0x0;;){var _0x505f84=_0x92e23c[_0x24b4d4('0x4dc')]('\x09',_0x2f9d40);if(_0x505f84<0x0||_0x505f84>=_0x5774b4)return _0x349a4b+(_0x5774b4-_0x2f9d40);_0x349a4b+=_0x505f84-_0x2f9d40,_0x349a4b+=_0x4cb218-_0x349a4b%_0x4cb218,_0x2f9d40=_0x505f84+0x1;}}_0x47afbe?_0x8eca30=function(_0x162b87){var _0x184f95=_0x255d35;_0x162b87[_0x184f95('0x2e2')]=0x0,_0x162b87[_0x184f95('0x1167')]=_0x162b87[_0x184f95('0x832')][_0x184f95('0x525')];}:_0x5d31d6&&(_0x8eca30=function(_0x961ac6){try{_0x961ac6['select']();}catch(_0x115877){}});var _0x1d1618=function(){var _0x3baf90=_0x255d35;this['id']=null,this['f']=null,this[_0x3baf90('0x918')]=0x0,this[_0x3baf90('0x668')]=_0x283b11(this['onTimeout'],this);};function _0x3ec288(_0x5941a2,_0x38de99){for(var _0x4dd51e=0x0;_0x4dd51e<_0x5941a2['length'];++_0x4dd51e)if(_0x5941a2[_0x4dd51e]==_0x38de99)return _0x4dd51e;return-0x1;}_0x1d1618[_0x255d35('0x98c')][_0x255d35('0x10d0')]=function(_0x4b9a63){var _0x52ac1d=_0x255d35;_0x4b9a63['id']=0x0,_0x4b9a63[_0x52ac1d('0x918')]<=+new Date()?_0x4b9a63['f']():setTimeout(_0x4b9a63['handler'],_0x4b9a63[_0x52ac1d('0x918')]-+new Date());},_0x1d1618[_0x255d35('0x98c')]['set']=function(_0x398dd1,_0x1c9df1){var _0xa9e874=_0x255d35;this['f']=_0x1c9df1;var _0x3ea70b=+new Date()+_0x398dd1;(!this['id']||_0x3ea70b=_0x1d94ef)return _0x3f80c7+Math['min'](_0x19a487,_0x1d94ef-_0x378428);if(_0x378428+=_0x5c14dc-_0x3f80c7,_0x3f80c7=_0x5c14dc+0x1,(_0x378428+=_0x3d6cd9-_0x378428%_0x3d6cd9)>=_0x1d94ef)return _0x3f80c7;}}var _0x3deac3=[''];function _0x1fed3f(_0x864757){var _0x4d27bc=_0x255d35;for(;_0x3deac3[_0x4d27bc('0x525')]<=_0x864757;)_0x3deac3[_0x4d27bc('0x8f8')](_0x15560b(_0x3deac3)+'\x20');return _0x3deac3[_0x864757];}function _0x15560b(_0x771719){var _0x3ccaee=_0x255d35;return _0x771719[_0x771719[_0x3ccaee('0x525')]-0x1];}function _0x49f2fe(_0x4afffe,_0x3f3521){var _0x3e0f39=_0x255d35;for(var _0x1b7ccc=[],_0x15426e=0x0;_0x15426e<_0x4afffe[_0x3e0f39('0x525')];_0x15426e++)_0x1b7ccc[_0x15426e]=_0x3f3521(_0x4afffe[_0x15426e],_0x15426e);return _0x1b7ccc;}function _0x4f3331(){}function _0x386142(_0x57dcda,_0x47c1af){var _0x5c198d=_0x255d35,_0x5d96da;return Object[_0x5c198d('0x5c2')]?_0x5d96da=Object[_0x5c198d('0x5c2')](_0x57dcda):(_0x4f3331[_0x5c198d('0x98c')]=_0x57dcda,_0x5d96da=new _0x4f3331()),_0x47c1af&&_0x44b57b(_0x47c1af,_0x5d96da),_0x5d96da;}var _0x1d1dd7=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/;function _0x1ff498(_0x4d7a9b){var _0xd9cdc=_0x255d35;return/\w/[_0xd9cdc('0xaac')](_0x4d7a9b)||_0x4d7a9b>'\u0080'&&(_0x4d7a9b[_0xd9cdc('0x67d')]()!=_0x4d7a9b[_0xd9cdc('0x2e7')]()||_0x1d1dd7[_0xd9cdc('0xaac')](_0x4d7a9b));}function _0x1379f6(_0x219635,_0x3fbfd0){var _0x324cb0=_0x255d35;return _0x3fbfd0?!!(_0x3fbfd0['source']['indexOf']('\x5cw')>-0x1&&_0x1ff498(_0x219635))||_0x3fbfd0[_0x324cb0('0xaac')](_0x219635):_0x1ff498(_0x219635);}function _0xbe59a2(_0xb142b2){var _0x59baa0=_0x255d35;for(var _0x47485c in _0xb142b2)if(_0xb142b2[_0x59baa0('0x100')](_0x47485c)&&_0xb142b2[_0x47485c])return!0x1;return!0x0;}var _0x58e6c1=/[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/;function _0xe3f05a(_0x2da218){var _0x1fd089=_0x255d35;return _0x2da218[_0x1fd089('0x59d')](0x0)>=0x300&&_0x58e6c1[_0x1fd089('0xaac')](_0x2da218);}function _0x52274c(_0x4efa09,_0x55a2e6,_0x2e2177){var _0xb2fa3a=_0x255d35;for(;(_0x2e2177<0x0?_0x55a2e6>0x0:_0x55a2e6<_0x4efa09[_0xb2fa3a('0x525')])&&_0xe3f05a(_0x4efa09[_0xb2fa3a('0xc8e')](_0x55a2e6));)_0x55a2e6+=_0x2e2177;return _0x55a2e6;}function _0x3118df(_0x4485c9,_0x4cd4d7,_0x37656e){for(var _0x5658c9=_0x4cd4d7>_0x37656e?-0x1:0x1;;){if(_0x4cd4d7==_0x37656e)return _0x4cd4d7;var _0x208ad9=(_0x4cd4d7+_0x37656e)/0x2,_0x4468e3=_0x5658c9<0x0?Math['ceil'](_0x208ad9):Math['floor'](_0x208ad9);if(_0x4468e3==_0x4cd4d7)return _0x4485c9(_0x4468e3)?_0x4cd4d7:_0x37656e;_0x4485c9(_0x4468e3)?_0x37656e=_0x4468e3:_0x4cd4d7=_0x4468e3+_0x5658c9;}}var _0x5d9927=null;function _0xb372fd(_0x58c39b,_0x58830a,_0x1cc08d){var _0x38ccd4=_0x255d35,_0x3d924f;_0x5d9927=null;for(var _0x10aec8=0x0;_0x10aec8<_0x58c39b[_0x38ccd4('0x525')];++_0x10aec8){var _0x43cb95=_0x58c39b[_0x10aec8];if(_0x43cb95[_0x38ccd4('0x9d7')]<_0x58830a&&_0x43cb95['to']>_0x58830a)return _0x10aec8;_0x43cb95['to']==_0x58830a&&(_0x43cb95[_0x38ccd4('0x9d7')]!=_0x43cb95['to']&&_0x38ccd4('0xa69')==_0x1cc08d?_0x3d924f=_0x10aec8:_0x5d9927=_0x10aec8),_0x43cb95[_0x38ccd4('0x9d7')]==_0x58830a&&(_0x43cb95[_0x38ccd4('0x9d7')]!=_0x43cb95['to']&&_0x38ccd4('0xa69')!=_0x1cc08d?_0x3d924f=_0x10aec8:_0x5d9927=_0x10aec8);}return null!=_0x3d924f?_0x3d924f:_0x5d9927;}var _0xe9125a=function(){var _0x5589bf=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,_0x52ec1b=/[stwN]/,_0x249c2b=/[LRr]/,_0x79f3fe=/[Lb1n]/,_0x2fc821=/[1n]/;function _0x3aa28e(_0x564163,_0x1df82c,_0x1523b6){var _0x233fb0=_0x3ab6;this[_0x233fb0('0x1fe')]=_0x564163,this['from']=_0x1df82c,this['to']=_0x1523b6;}return function(_0x2c3966,_0x4b3120){var _0x488c4c=_0x3ab6,_0x2070b7=_0x488c4c('0xefe')==_0x4b3120?'L':'R';if(0x0==_0x2c3966[_0x488c4c('0x525')]||'ltr'==_0x4b3120&&!_0x5589bf[_0x488c4c('0xaac')](_0x2c3966))return!0x1;for(var _0x34c1aa,_0x5d0abb=_0x2c3966['length'],_0x1a71d4=[],_0x45ae0e=0x0;_0x45ae0e<_0x5d0abb;++_0x45ae0e)_0x1a71d4[_0x488c4c('0x8f8')]((_0x34c1aa=_0x2c3966[_0x488c4c('0x59d')](_0x45ae0e))<=0xf7?_0x488c4c('0x6b5')[_0x488c4c('0xc8e')](_0x34c1aa):0x590<=_0x34c1aa&&_0x34c1aa<=0x5f4?'R':0x600<=_0x34c1aa&&_0x34c1aa<=0x6f9?_0x488c4c('0xeb4')['charAt'](_0x34c1aa-0x600):0x6ee<=_0x34c1aa&&_0x34c1aa<=0x8ac?'r':0x2000<=_0x34c1aa&&_0x34c1aa<=0x200b?'w':0x200c==_0x34c1aa?'b':'L');for(var _0x2695f1=0x0,_0x48bf1c=_0x2070b7;_0x2695f1<_0x5d0abb;++_0x2695f1){var _0x4b2122=_0x1a71d4[_0x2695f1];'m'==_0x4b2122?_0x1a71d4[_0x2695f1]=_0x48bf1c:_0x48bf1c=_0x4b2122;}for(var _0x389a31=0x0,_0x157282=_0x2070b7;_0x389a31<_0x5d0abb;++_0x389a31){var _0x459ae6=_0x1a71d4[_0x389a31];'1'==_0x459ae6&&'r'==_0x157282?_0x1a71d4[_0x389a31]='n':_0x249c2b['test'](_0x459ae6)&&(_0x157282=_0x459ae6,'r'==_0x459ae6&&(_0x1a71d4[_0x389a31]='R'));}for(var _0xdf60bb=0x1,_0x9139ce=_0x1a71d4[0x0];_0xdf60bb<_0x5d0abb-0x1;++_0xdf60bb){var _0x51361b=_0x1a71d4[_0xdf60bb];'+'==_0x51361b&&'1'==_0x9139ce&&'1'==_0x1a71d4[_0xdf60bb+0x1]?_0x1a71d4[_0xdf60bb]='1':','!=_0x51361b||_0x9139ce!=_0x1a71d4[_0xdf60bb+0x1]||'1'!=_0x9139ce&&'n'!=_0x9139ce||(_0x1a71d4[_0xdf60bb]=_0x9139ce),_0x9139ce=_0x51361b;}for(var _0x26ecef=0x0;_0x26ecef<_0x5d0abb;++_0x26ecef){var _0x16edd2=_0x1a71d4[_0x26ecef];if(','==_0x16edd2)_0x1a71d4[_0x26ecef]='N';else{if('%'==_0x16edd2){var _0x23ed79=void 0x0;for(_0x23ed79=_0x26ecef+0x1;_0x23ed79<_0x5d0abb&&'%'==_0x1a71d4[_0x23ed79];++_0x23ed79);for(var _0x352129=_0x26ecef&&'!'==_0x1a71d4[_0x26ecef-0x1]||_0x23ed79<_0x5d0abb&&'1'==_0x1a71d4[_0x23ed79]?'1':'N',_0x1d18f0=_0x26ecef;_0x1d18f0<_0x23ed79;++_0x1d18f0)_0x1a71d4[_0x1d18f0]=_0x352129;_0x26ecef=_0x23ed79-0x1;}}}for(var _0x50a859=0x0,_0x8774d9=_0x2070b7;_0x50a859<_0x5d0abb;++_0x50a859){var _0x1a2793=_0x1a71d4[_0x50a859];'L'==_0x8774d9&&'1'==_0x1a2793?_0x1a71d4[_0x50a859]='L':_0x249c2b[_0x488c4c('0xaac')](_0x1a2793)&&(_0x8774d9=_0x1a2793);}for(var _0x6f5ee7=0x0;_0x6f5ee7<_0x5d0abb;++_0x6f5ee7)if(_0x52ec1b[_0x488c4c('0xaac')](_0x1a71d4[_0x6f5ee7])){var _0x5ba981=void 0x0;for(_0x5ba981=_0x6f5ee7+0x1;_0x5ba981<_0x5d0abb&&_0x52ec1b[_0x488c4c('0xaac')](_0x1a71d4[_0x5ba981]);++_0x5ba981);for(var _0x9132ea='L'==(_0x6f5ee7?_0x1a71d4[_0x6f5ee7-0x1]:_0x2070b7),_0x2a1f4f=_0x9132ea==('L'==(_0x5ba981<_0x5d0abb?_0x1a71d4[_0x5ba981]:_0x2070b7))?_0x9132ea?'L':'R':_0x2070b7,_0x26ea9c=_0x6f5ee7;_0x26ea9c<_0x5ba981;++_0x26ea9c)_0x1a71d4[_0x26ea9c]=_0x2a1f4f;_0x6f5ee7=_0x5ba981-0x1;}for(var _0x491dab,_0x58b17f=[],_0x288294=0x0;_0x288294<_0x5d0abb;)if(_0x79f3fe[_0x488c4c('0xaac')](_0x1a71d4[_0x288294])){var _0x963e78=_0x288294;for(++_0x288294;_0x288294<_0x5d0abb&&_0x79f3fe['test'](_0x1a71d4[_0x288294]);++_0x288294);_0x58b17f['push'](new _0x3aa28e(0x0,_0x963e78,_0x288294));}else{var _0x3b40d4=_0x288294,_0x514d99=_0x58b17f['length'],_0x2dc819=_0x488c4c('0xb2f')==_0x4b3120?0x1:0x0;for(++_0x288294;_0x288294<_0x5d0abb&&'L'!=_0x1a71d4[_0x288294];++_0x288294);for(var _0xf2bd87=_0x3b40d4;_0xf2bd87<_0x288294;)if(_0x2fc821[_0x488c4c('0xaac')](_0x1a71d4[_0xf2bd87])){_0x3b40d4<_0xf2bd87&&(_0x58b17f[_0x488c4c('0xc19')](_0x514d99,0x0,new _0x3aa28e(0x1,_0x3b40d4,_0xf2bd87)),_0x514d99+=_0x2dc819);var _0x273c40=_0xf2bd87;for(++_0xf2bd87;_0xf2bd87<_0x288294&&_0x2fc821['test'](_0x1a71d4[_0xf2bd87]);++_0xf2bd87);_0x58b17f[_0x488c4c('0xc19')](_0x514d99,0x0,new _0x3aa28e(0x2,_0x273c40,_0xf2bd87)),_0x514d99+=_0x2dc819,_0x3b40d4=_0xf2bd87;}else++_0xf2bd87;_0x3b40d4<_0x288294&&_0x58b17f['splice'](_0x514d99,0x0,new _0x3aa28e(0x1,_0x3b40d4,_0x288294));}return _0x488c4c('0xefe')==_0x4b3120&&(0x1==_0x58b17f[0x0][_0x488c4c('0x1fe')]&&(_0x491dab=_0x2c3966[_0x488c4c('0x91e')](/^\s+/))&&(_0x58b17f[0x0]['from']=_0x491dab[0x0]['length'],_0x58b17f[_0x488c4c('0x8c9')](new _0x3aa28e(0x0,0x0,_0x491dab[0x0][_0x488c4c('0x525')]))),0x1==_0x15560b(_0x58b17f)[_0x488c4c('0x1fe')]&&(_0x491dab=_0x2c3966[_0x488c4c('0x91e')](/\s+$/))&&(_0x15560b(_0x58b17f)['to']-=_0x491dab[0x0]['length'],_0x58b17f[_0x488c4c('0x8f8')](new _0x3aa28e(0x0,_0x5d0abb-_0x491dab[0x0][_0x488c4c('0x525')],_0x5d0abb)))),_0x488c4c('0xb2f')==_0x4b3120?_0x58b17f[_0x488c4c('0x11ea')]():_0x58b17f;};}();function _0x3982e5(_0x55ccfc,_0x5a3f4e){var _0xa6c877=_0x255d35,_0x26b56d=_0x55ccfc[_0xa6c877('0x11b4')];return null==_0x26b56d&&(_0x26b56d=_0x55ccfc[_0xa6c877('0x11b4')]=_0xe9125a(_0x55ccfc[_0xa6c877('0x768')],_0x5a3f4e)),_0x26b56d;}var _0x554788=[],_0x407bf3=function(_0x5b5f66,_0x110aaf,_0x4ca519){var _0x31a515=_0x255d35;if(_0x5b5f66[_0x31a515('0x55')])_0x5b5f66['addEventListener'](_0x110aaf,_0x4ca519,!0x1);else{if(_0x5b5f66[_0x31a515('0x7b6')])_0x5b5f66[_0x31a515('0x7b6')]('on'+_0x110aaf,_0x4ca519);else{var _0x2c6e68=_0x5b5f66['_handlers']||(_0x5b5f66['_handlers']={});_0x2c6e68[_0x110aaf]=(_0x2c6e68[_0x110aaf]||_0x554788)[_0x31a515('0x3cc')](_0x4ca519);}}};function _0x53e9dc(_0x91e360,_0x1a9ed1){var _0xa81d86=_0x255d35;return _0x91e360[_0xa81d86('0x3e0')]&&_0x91e360[_0xa81d86('0x3e0')][_0x1a9ed1]||_0x554788;}function _0x4496a7(_0x266d77,_0x458a93,_0xc74194){var _0xfd811=_0x255d35;if(_0x266d77['removeEventListener'])_0x266d77[_0xfd811('0x113b')](_0x458a93,_0xc74194,!0x1);else{if(_0x266d77[_0xfd811('0x3dd')])_0x266d77['detachEvent']('on'+_0x458a93,_0xc74194);else{var _0x4bde51=_0x266d77[_0xfd811('0x3e0')],_0x30509d=_0x4bde51&&_0x4bde51[_0x458a93];if(_0x30509d){var _0x44ba8e=_0x3ec288(_0x30509d,_0xc74194);_0x44ba8e>-0x1&&(_0x4bde51[_0x458a93]=_0x30509d['slice'](0x0,_0x44ba8e)['concat'](_0x30509d[_0xfd811('0xbc0')](_0x44ba8e+0x1)));}}}}function _0x508e40(_0x4e5ed8,_0x15bfaf){var _0x5c37ce=_0x255d35,_0x565058=_0x53e9dc(_0x4e5ed8,_0x15bfaf);if(_0x565058[_0x5c37ce('0x525')])for(var _0x540c49=Array['prototype'][_0x5c37ce('0xbc0')]['call'](arguments,0x2),_0x2a8e86=0x0;_0x2a8e86<_0x565058[_0x5c37ce('0x525')];++_0x2a8e86)_0x565058[_0x2a8e86][_0x5c37ce('0x1036')](null,_0x540c49);}function _0x108070(_0x3bac27,_0x49093e,_0x44ccc2){var _0x4c3cbd=_0x255d35;return'string'==typeof _0x49093e&&(_0x49093e={'type':_0x49093e,'preventDefault':function(){this['defaultPrevented']=!0x0;}}),_0x508e40(_0x3bac27,_0x44ccc2||_0x49093e[_0x4c3cbd('0x3f7')],_0x3bac27,_0x49093e),_0x1cdf40(_0x49093e)||_0x49093e['codemirrorIgnore'];}function _0x1f6531(_0xd4c449){var _0x2b4ffd=_0x255d35,_0x46b599=_0xd4c449[_0x2b4ffd('0x3e0')]&&_0xd4c449[_0x2b4ffd('0x3e0')]['cursorActivity'];if(_0x46b599)for(var _0x4a49c1=_0xd4c449['curOp'][_0x2b4ffd('0x54b')]||(_0xd4c449[_0x2b4ffd('0x10e6')][_0x2b4ffd('0x54b')]=[]),_0xcd0df7=0x0;_0xcd0df7<_0x46b599['length'];++_0xcd0df7)-0x1==_0x3ec288(_0x4a49c1,_0x46b599[_0xcd0df7])&&_0x4a49c1[_0x2b4ffd('0x8f8')](_0x46b599[_0xcd0df7]);}function _0x3f430b(_0x489a26,_0x465432){var _0x4a2f7d=_0x255d35;return _0x53e9dc(_0x489a26,_0x465432)[_0x4a2f7d('0x525')]>0x0;}function _0x177e1e(_0x3b0602){var _0x27b44e=_0x255d35;_0x3b0602['prototype']['on']=function(_0x1bafac,_0x9a581d){_0x407bf3(this,_0x1bafac,_0x9a581d);},_0x3b0602['prototype'][_0x27b44e('0xc1f')]=function(_0xc7b2a,_0x4efca0){_0x4496a7(this,_0xc7b2a,_0x4efca0);};}function _0x12a3b5(_0x5811a0){var _0x17e08e=_0x255d35;_0x5811a0[_0x17e08e('0xb65')]?_0x5811a0[_0x17e08e('0xb65')]():_0x5811a0['returnValue']=!0x1;}function _0x1be273(_0x5f94d){var _0x53def8=_0x255d35;_0x5f94d[_0x53def8('0xe7c')]?_0x5f94d['stopPropagation']():_0x5f94d['cancelBubble']=!0x0;}function _0x1cdf40(_0x310298){var _0x543dda=_0x255d35;return null!=_0x310298[_0x543dda('0xe8a')]?_0x310298[_0x543dda('0xe8a')]:0x0==_0x310298['returnValue'];}function _0x387a99(_0x24151a){_0x12a3b5(_0x24151a),_0x1be273(_0x24151a);}function _0x52f8eb(_0x382c96){var _0x2799fa=_0x255d35;return _0x382c96[_0x2799fa('0x616')]||_0x382c96[_0x2799fa('0x1cc')];}function _0x44f403(_0x2f84f3){var _0x17ce4b=_0x255d35,_0x4ba36d=_0x2f84f3[_0x17ce4b('0x789')];return null==_0x4ba36d&&(0x1&_0x2f84f3[_0x17ce4b('0x40d')]?_0x4ba36d=0x1:0x2&_0x2f84f3[_0x17ce4b('0x40d')]?_0x4ba36d=0x3:0x4&_0x2f84f3[_0x17ce4b('0x40d')]&&(_0x4ba36d=0x2)),_0x2841f0&&_0x2f84f3['ctrlKey']&&0x1==_0x4ba36d&&(_0x4ba36d=0x3),_0x4ba36d;}var _0x4ad721,_0x539798,_0x557070=function(){var _0x4b1301=_0x255d35;if(_0x5d31d6&&_0x5275d9<0x9)return!0x1;var _0x552813=_0x31f23b(_0x4b1301('0x7fc'));return _0x4b1301('0x4d2')in _0x552813||_0x4b1301('0x7ab')in _0x552813;}();function _0x4d0aed(_0x312053){var _0x58a334=_0x255d35;if(null==_0x4ad721){var _0x18dc4f=_0x31f23b(_0x58a334('0xd9'),'​');_0x171d74(_0x312053,_0x31f23b('span',[_0x18dc4f,document[_0x58a334('0xf8d')]('x')])),0x0!=_0x312053['firstChild'][_0x58a334('0x5f7')]&&(_0x4ad721=_0x18dc4f[_0x58a334('0x969')]<=0x1&&_0x18dc4f[_0x58a334('0x5f7')]>0x2&&!(_0x5d31d6&&_0x5275d9<0x8));}var _0x5a5a06=_0x4ad721?_0x31f23b(_0x58a334('0xd9'),'​'):_0x31f23b(_0x58a334('0xd9'),'\u00a0',null,_0x58a334('0xdc1'));return _0x5a5a06['setAttribute']('cm-text',''),_0x5a5a06;}function _0xba488b(_0x151a43){var _0x805959=_0x255d35;if(null!=_0x539798)return _0x539798;var _0x32af3b=_0x171d74(_0x151a43,document['createTextNode'](_0x805959('0xa3c'))),_0xef234b=_0x508a43(_0x32af3b,0x0,0x1)[_0x805959('0xe75')](),_0x20fc14=_0x508a43(_0x32af3b,0x1,0x2)['getBoundingClientRect']();return _0x294f84(_0x151a43),!(!_0xef234b||_0xef234b[_0x805959('0xbab')]==_0xef234b['right'])&&(_0x539798=_0x20fc14[_0x805959('0x732')]-_0xef234b[_0x805959('0x732')]<0x3);}var _0x2aaaeb,_0x1fd172=0x3!='\x0a\x0ab'['split'](/\n/)[_0x255d35('0x525')]?function(_0x316cac){var _0x454226=_0x255d35;for(var _0x1fdb57=0x0,_0x44d77a=[],_0x26ef5e=_0x316cac[_0x454226('0x525')];_0x1fdb57<=_0x26ef5e;){var _0x4141f6=_0x316cac[_0x454226('0x4dc')]('\x0a',_0x1fdb57);-0x1==_0x4141f6&&(_0x4141f6=_0x316cac[_0x454226('0x525')]);var _0x12a63d=_0x316cac[_0x454226('0xbc0')](_0x1fdb57,'\x0d'==_0x316cac['charAt'](_0x4141f6-0x1)?_0x4141f6-0x1:_0x4141f6),_0x2ca255=_0x12a63d[_0x454226('0x4dc')]('\x0d');-0x1!=_0x2ca255?(_0x44d77a[_0x454226('0x8f8')](_0x12a63d['slice'](0x0,_0x2ca255)),_0x1fdb57+=_0x2ca255+0x1):(_0x44d77a[_0x454226('0x8f8')](_0x12a63d),_0x1fdb57=_0x4141f6+0x1);}return _0x44d77a;}:function(_0x12db41){var _0x57ab62=_0x255d35;return _0x12db41[_0x57ab62('0x541')](/\r\n?|\n/);},_0x489cf7=window['getSelection']?function(_0xabac68){var _0xd12d4b=_0x255d35;try{return _0xabac68[_0xd12d4b('0x2e2')]!=_0xabac68[_0xd12d4b('0x1167')];}catch(_0x5d6832){return!0x1;}}:function(_0x233367){var _0x3f94cc=_0x255d35,_0x4cfd77;try{_0x4cfd77=_0x233367[_0x3f94cc('0x8d0')][_0x3f94cc('0x4a6')]['createRange']();}catch(_0x435ef8){}return!(!_0x4cfd77||_0x4cfd77[_0x3f94cc('0xf9b')]()!=_0x233367)&&0x0!=_0x4cfd77['compareEndPoints'](_0x3f94cc('0xaa9'),_0x4cfd77);},_0x2e21ea=_0x255d35('0x9b6')in(_0x2aaaeb=_0x31f23b('div'))||(_0x2aaaeb['setAttribute'](_0x255d35('0x9b6'),_0x255d35('0x559')),_0x255d35('0xae9')==typeof _0x2aaaeb[_0x255d35('0x9b6')]),_0x5c6889=null,_0x5f0274={},_0x37e8ea={};function _0x1cf546(_0x37a073,_0x4cf017){var _0x21b49f=_0x255d35;arguments[_0x21b49f('0x525')]>0x2&&(_0x4cf017['dependencies']=Array[_0x21b49f('0x98c')]['slice'][_0x21b49f('0x4b0')](arguments,0x2)),_0x5f0274[_0x37a073]=_0x4cf017;}function _0x47156c(_0x55fb75){var _0x50361d=_0x255d35;if(_0x50361d('0x7c7')==typeof _0x55fb75&&_0x37e8ea[_0x50361d('0x100')](_0x55fb75))_0x55fb75=_0x37e8ea[_0x55fb75];else{if(_0x55fb75&&_0x50361d('0x7c7')==typeof _0x55fb75[_0x50361d('0x263')]&&_0x37e8ea[_0x50361d('0x100')](_0x55fb75['name'])){var _0x199df2=_0x37e8ea[_0x55fb75['name']];_0x50361d('0x7c7')==typeof _0x199df2&&(_0x199df2={'name':_0x199df2}),(_0x55fb75=_0x386142(_0x199df2,_0x55fb75))[_0x50361d('0x263')]=_0x199df2['name'];}else{if(_0x50361d('0x7c7')==typeof _0x55fb75&&/^[\w\-]+\/[\w\-]+\+xml$/[_0x50361d('0xaac')](_0x55fb75))return _0x47156c(_0x50361d('0x521'));if(_0x50361d('0x7c7')==typeof _0x55fb75&&/^[\w\-]+\/[\w\-]+\+json$/[_0x50361d('0xaac')](_0x55fb75))return _0x47156c(_0x50361d('0x738'));}}return _0x50361d('0x7c7')==typeof _0x55fb75?{'name':_0x55fb75}:_0x55fb75||{'name':'null'};}function _0x59fed9(_0xccbba6,_0x543de7){var _0x3827ff=_0x255d35;_0x543de7=_0x47156c(_0x543de7);var _0x2b0193=_0x5f0274[_0x543de7[_0x3827ff('0x263')]];if(!_0x2b0193)return _0x59fed9(_0xccbba6,'text/plain');var _0x11ae8c=_0x2b0193(_0xccbba6,_0x543de7);if(_0x114086['hasOwnProperty'](_0x543de7[_0x3827ff('0x263')])){var _0x157580=_0x114086[_0x543de7['name']];for(var _0x1cebca in _0x157580)_0x157580[_0x3827ff('0x100')](_0x1cebca)&&(_0x11ae8c[_0x3827ff('0x100')](_0x1cebca)&&(_0x11ae8c['_'+_0x1cebca]=_0x11ae8c[_0x1cebca]),_0x11ae8c[_0x1cebca]=_0x157580[_0x1cebca]);}if(_0x11ae8c[_0x3827ff('0x263')]=_0x543de7['name'],_0x543de7[_0x3827ff('0x421')]&&(_0x11ae8c['helperType']=_0x543de7[_0x3827ff('0x421')]),_0x543de7[_0x3827ff('0xff4')])for(var _0x4d0743 in _0x543de7[_0x3827ff('0xff4')])_0x11ae8c[_0x4d0743]=_0x543de7[_0x3827ff('0xff4')][_0x4d0743];return _0x11ae8c;}var _0x114086={};function _0x31e45f(_0x301d5b,_0x10aa6f){var _0xa70ed=_0x255d35;_0x44b57b(_0x10aa6f,_0x114086[_0xa70ed('0x100')](_0x301d5b)?_0x114086[_0x301d5b]:_0x114086[_0x301d5b]={});}function _0x4e981f(_0x3997fd,_0x5e7f24){var _0x56bb9a=_0x255d35;if(!0x0===_0x5e7f24)return _0x5e7f24;if(_0x3997fd[_0x56bb9a('0xf76')])return _0x3997fd[_0x56bb9a('0xf76')](_0x5e7f24);var _0x3f7484={};for(var _0x1ae608 in _0x5e7f24){var _0x1d29c5=_0x5e7f24[_0x1ae608];_0x1d29c5 instanceof Array&&(_0x1d29c5=_0x1d29c5[_0x56bb9a('0x3cc')]([])),_0x3f7484[_0x1ae608]=_0x1d29c5;}return _0x3f7484;}function _0x50c606(_0x24eefb,_0x5ea7c7){var _0x3bd206=_0x255d35;for(var _0x181e1a;_0x24eefb[_0x3bd206('0x10b7')]&&(_0x181e1a=_0x24eefb[_0x3bd206('0x10b7')](_0x5ea7c7))&&_0x181e1a[_0x3bd206('0x575')]!=_0x24eefb;)_0x5ea7c7=_0x181e1a['state'],_0x24eefb=_0x181e1a['mode'];return _0x181e1a||{'mode':_0x24eefb,'state':_0x5ea7c7};}function _0x5ca461(_0x516baf,_0x552860,_0x433e2f){var _0x176eb1=_0x255d35;return!_0x516baf[_0x176eb1('0x7ec')]||_0x516baf[_0x176eb1('0x7ec')](_0x552860,_0x433e2f);}var _0x233ef9=function(_0x364a69,_0x30e212,_0xb5ad4c){var _0x928b01=_0x255d35;this[_0x928b01('0x1121')]=this['start']=0x0,this[_0x928b01('0x7c7')]=_0x364a69,this[_0x928b01('0x772')]=_0x30e212||0x8,this['lastColumnPos']=this[_0x928b01('0x13f')]=0x0,this[_0x928b01('0x8')]=0x0,this[_0x928b01('0xbe0')]=_0xb5ad4c;};function _0x1b58dd(_0x4c1d57,_0x431b26){var _0xe09bfc=_0x255d35;if((_0x431b26-=_0x4c1d57[_0xe09bfc('0xe3c')])<0x0||_0x431b26>=_0x4c1d57[_0xe09bfc('0x844')])throw new Error(_0xe09bfc('0xee5')+(_0x431b26+_0x4c1d57[_0xe09bfc('0xe3c')])+_0xe09bfc('0xcf3'));for(var _0x24199d=_0x4c1d57;!_0x24199d[_0xe09bfc('0x511')];)for(var _0x53ab22=0x0;;++_0x53ab22){var _0x15233c=_0x24199d[_0xe09bfc('0x115a')][_0x53ab22],_0x12594a=_0x15233c['chunkSize']();if(_0x431b26<_0x12594a){_0x24199d=_0x15233c;break;}_0x431b26-=_0x12594a;}return _0x24199d[_0xe09bfc('0x511')][_0x431b26];}function _0x1e2186(_0x590f68,_0x29f803,_0x47dd9c){var _0x156c38=_0x255d35,_0x5e5da4=[],_0x28977b=_0x29f803['line'];return _0x590f68[_0x156c38('0x160')](_0x29f803[_0x156c38('0xde2')],_0x47dd9c[_0x156c38('0xde2')]+0x1,function(_0x3d12b5){var _0x201772=_0x156c38,_0x16a3dd=_0x3d12b5[_0x201772('0x768')];_0x28977b==_0x47dd9c[_0x201772('0xde2')]&&(_0x16a3dd=_0x16a3dd[_0x201772('0xbc0')](0x0,_0x47dd9c['ch'])),_0x28977b==_0x29f803[_0x201772('0xde2')]&&(_0x16a3dd=_0x16a3dd[_0x201772('0xbc0')](_0x29f803['ch'])),_0x5e5da4['push'](_0x16a3dd),++_0x28977b;}),_0x5e5da4;}function _0x4755ef(_0x50a742,_0xf29d1e,_0x2d1cb2){var _0x43977c=_0x255d35,_0x76f7a6=[];return _0x50a742[_0x43977c('0x160')](_0xf29d1e,_0x2d1cb2,function(_0x1e68c0){var _0x1e10b6=_0x43977c;_0x76f7a6[_0x1e10b6('0x8f8')](_0x1e68c0[_0x1e10b6('0x768')]);}),_0x76f7a6;}function _0x2e3ca8(_0xb3b6c2,_0x82794c){var _0x1b1189=_0x255d35,_0x23a766=_0x82794c-_0xb3b6c2[_0x1b1189('0x7f0')];if(_0x23a766)for(var _0x308849=_0xb3b6c2;_0x308849;_0x308849=_0x308849[_0x1b1189('0xeb7')])_0x308849['height']+=_0x23a766;}function _0x5ee38b(_0x5189bc){var _0x44974f=_0x255d35;if(null==_0x5189bc['parent'])return null;for(var _0x2d9a73=_0x5189bc[_0x44974f('0xeb7')],_0x30d2c9=_0x3ec288(_0x2d9a73[_0x44974f('0x511')],_0x5189bc),_0x3ec97f=_0x2d9a73[_0x44974f('0xeb7')];_0x3ec97f;_0x2d9a73=_0x3ec97f,_0x3ec97f=_0x3ec97f[_0x44974f('0xeb7')])for(var _0x66774c=0x0;_0x3ec97f['children'][_0x66774c]!=_0x2d9a73;++_0x66774c)_0x30d2c9+=_0x3ec97f['children'][_0x66774c]['chunkSize']();return _0x30d2c9+_0x2d9a73['first'];}function _0x6a7589(_0x197d33,_0x3f7a5d){var _0x7566ff=_0x255d35,_0x2dba9c=_0x197d33[_0x7566ff('0xe3c')];_0x3962a7:do{for(var _0x45ec7c=0x0;_0x45ec7c<_0x197d33['children'][_0x7566ff('0x525')];++_0x45ec7c){var _0x218499=_0x197d33['children'][_0x45ec7c],_0x535176=_0x218499['height'];if(_0x3f7a5d<_0x535176){_0x197d33=_0x218499;continue _0x3962a7;}_0x3f7a5d-=_0x535176,_0x2dba9c+=_0x218499[_0x7566ff('0x109b')]();}return _0x2dba9c;}while(!_0x197d33[_0x7566ff('0x511')]);for(var _0xe01288=0x0;_0xe01288<_0x197d33[_0x7566ff('0x511')][_0x7566ff('0x525')];++_0xe01288){var _0x41820e=_0x197d33['lines'][_0xe01288][_0x7566ff('0x7f0')];if(_0x3f7a5d<_0x41820e)break;_0x3f7a5d-=_0x41820e;}return _0x2dba9c+_0xe01288;}function _0x102270(_0x283e8d,_0x517c44){var _0x399cdf=_0x255d35;return _0x517c44>=_0x283e8d[_0x399cdf('0xe3c')]&&_0x517c44<_0x283e8d[_0x399cdf('0xe3c')]+_0x283e8d[_0x399cdf('0x844')];}function _0x5f1964(_0x45055e,_0x45fd74){var _0x1ec585=_0x255d35;return String(_0x45055e[_0x1ec585('0x6de')](_0x45fd74+_0x45055e[_0x1ec585('0x248')]));}function _0xf7c6fb(_0x431a31,_0x8bd29,_0x4fb62a){var _0xba0e64=_0x255d35;if(void 0x0===_0x4fb62a&&(_0x4fb62a=null),!(this instanceof _0xf7c6fb))return new _0xf7c6fb(_0x431a31,_0x8bd29,_0x4fb62a);this[_0xba0e64('0xde2')]=_0x431a31,this['ch']=_0x8bd29,this['sticky']=_0x4fb62a;}function _0x42d525(_0x334edd,_0x5b3caa){var _0xd930df=_0x255d35;return _0x334edd[_0xd930df('0xde2')]-_0x5b3caa['line']||_0x334edd['ch']-_0x5b3caa['ch'];}function _0x13a88c(_0x53673c,_0x3e425f){var _0x560327=_0x255d35;return _0x53673c[_0x560327('0x84e')]==_0x3e425f[_0x560327('0x84e')]&&0x0==_0x42d525(_0x53673c,_0x3e425f);}function _0x4a2b1b(_0x406264){var _0x24ad4d=_0x255d35;return _0xf7c6fb(_0x406264[_0x24ad4d('0xde2')],_0x406264['ch']);}function _0x36db9e(_0x381d99,_0x126e72){return _0x42d525(_0x381d99,_0x126e72)<0x0?_0x126e72:_0x381d99;}function _0x31d615(_0x34cc9d,_0x505606){return _0x42d525(_0x34cc9d,_0x505606)<0x0?_0x34cc9d:_0x505606;}function _0x5673aa(_0x2d762e,_0x1078cc){var _0x134ee9=_0x255d35;return Math[_0x134ee9('0xf65')](_0x2d762e[_0x134ee9('0xe3c')],Math['min'](_0x1078cc,_0x2d762e['first']+_0x2d762e['size']-0x1));}function _0x364c36(_0x3b7a5a,_0x567353){var _0x38a1d1=_0x255d35;if(_0x567353[_0x38a1d1('0xde2')]<_0x3b7a5a[_0x38a1d1('0xe3c')])return _0xf7c6fb(_0x3b7a5a['first'],0x0);var _0xc4946e=_0x3b7a5a[_0x38a1d1('0xe3c')]+_0x3b7a5a['size']-0x1;return _0x567353[_0x38a1d1('0xde2')]>_0xc4946e?_0xf7c6fb(_0xc4946e,_0x1b58dd(_0x3b7a5a,_0xc4946e)[_0x38a1d1('0x768')][_0x38a1d1('0x525')]):function(_0x2cd3e6,_0xe0634a){var _0x201c48=_0x38a1d1,_0x17b559=_0x2cd3e6['ch'];return null==_0x17b559||_0x17b559>_0xe0634a?_0xf7c6fb(_0x2cd3e6[_0x201c48('0xde2')],_0xe0634a):_0x17b559<0x0?_0xf7c6fb(_0x2cd3e6[_0x201c48('0xde2')],0x0):_0x2cd3e6;}(_0x567353,_0x1b58dd(_0x3b7a5a,_0x567353[_0x38a1d1('0xde2')])['text']['length']);}function _0x2f2567(_0x1676dc,_0x125342){var _0x348bc5=_0x255d35;for(var _0x493115=[],_0x2199a7=0x0;_0x2199a7<_0x125342[_0x348bc5('0x525')];_0x2199a7++)_0x493115[_0x2199a7]=_0x364c36(_0x1676dc,_0x125342[_0x2199a7]);return _0x493115;}_0x233ef9[_0x255d35('0x98c')]['eol']=function(){var _0x18852f=_0x255d35;return this[_0x18852f('0x1121')]>=this[_0x18852f('0x7c7')][_0x18852f('0x525')];},_0x233ef9[_0x255d35('0x98c')][_0x255d35('0x917')]=function(){var _0x54db45=_0x255d35;return this[_0x54db45('0x1121')]==this[_0x54db45('0x8')];},_0x233ef9['prototype']['peek']=function(){var _0x4a639d=_0x255d35;return this[_0x4a639d('0x7c7')][_0x4a639d('0xc8e')](this[_0x4a639d('0x1121')])||void 0x0;},_0x233ef9[_0x255d35('0x98c')][_0x255d35('0x4d7')]=function(){var _0x51cc25=_0x255d35;if(this[_0x51cc25('0x1121')]_0x4db93d;},_0x233ef9[_0x255d35('0x98c')][_0x255d35('0x105')]=function(){var _0x13712d=_0x255d35;for(var _0x2f78dc=this[_0x13712d('0x1121')];/[\s\u00a0]/[_0x13712d('0xaac')](this[_0x13712d('0x7c7')][_0x13712d('0xc8e')](this[_0x13712d('0x1121')]));)++this[_0x13712d('0x1121')];return this[_0x13712d('0x1121')]>_0x2f78dc;},_0x233ef9['prototype'][_0x255d35('0x11e0')]=function(){var _0x2181b3=_0x255d35;this[_0x2181b3('0x1121')]=this[_0x2181b3('0x7c7')][_0x2181b3('0x525')];},_0x233ef9[_0x255d35('0x98c')][_0x255d35('0x341')]=function(_0x277708){var _0x5c8ac5=_0x255d35,_0x41c5a7=this['string'][_0x5c8ac5('0x4dc')](_0x277708,this['pos']);if(_0x41c5a7>-0x1)return this[_0x5c8ac5('0x1121')]=_0x41c5a7,!0x0;},_0x233ef9[_0x255d35('0x98c')]['backUp']=function(_0x56f18a){var _0xdc2cca=_0x255d35;this[_0xdc2cca('0x1121')]-=_0x56f18a;},_0x233ef9[_0x255d35('0x98c')][_0x255d35('0x865')]=function(){var _0x532ad4=_0x255d35;return this[_0x532ad4('0x112f')]0x0?null:(_0x26a2eb&&!0x1!==_0x591807&&(this[_0x8933b2('0x1121')]+=_0x26a2eb[0x0][_0x8933b2('0x525')]),_0x26a2eb);}var _0x58b005=function(_0x828391){var _0xf26f1=_0x8933b2;return _0x3258b7?_0x828391[_0xf26f1('0x2e7')]():_0x828391;};if(_0x58b005(this[_0x8933b2('0x7c7')][_0x8933b2('0x111d')](this[_0x8933b2('0x1121')],_0x27ddad[_0x8933b2('0x525')]))==_0x58b005(_0x27ddad))return!0x1!==_0x591807&&(this[_0x8933b2('0x1121')]+=_0x27ddad[_0x8933b2('0x525')]),!0x0;},_0x233ef9[_0x255d35('0x98c')][_0x255d35('0x970')]=function(){var _0x552cc0=_0x255d35;return this[_0x552cc0('0x7c7')][_0x552cc0('0xbc0')](this[_0x552cc0('0x1045')],this['pos']);},_0x233ef9[_0x255d35('0x98c')][_0x255d35('0x477')]=function(_0x3ad4bd,_0x2a4889){var _0x205bc1=_0x255d35;this[_0x205bc1('0x8')]+=_0x3ad4bd;try{return _0x2a4889();}finally{this[_0x205bc1('0x8')]-=_0x3ad4bd;}},_0x233ef9[_0x255d35('0x98c')][_0x255d35('0xbb5')]=function(_0x16bdf7){var _0x489657=_0x255d35,_0x5d4626=this[_0x489657('0xbe0')];return _0x5d4626&&_0x5d4626['lookAhead'](_0x16bdf7);},_0x233ef9[_0x255d35('0x98c')][_0x255d35('0xa93')]=function(){var _0x37af63=_0x255d35,_0x27abbe=this[_0x37af63('0xbe0')];return _0x27abbe&&_0x27abbe[_0x37af63('0xa93')](this[_0x37af63('0x1121')]);};var _0x2db48d=function(_0x2328d3,_0x52f3fb){var _0x49239e=_0x255d35;this[_0x49239e('0xfff')]=_0x2328d3,this[_0x49239e('0xbb5')]=_0x52f3fb;},_0xb1d560=function(_0x5af26c,_0x27ef43,_0x4d0b54,_0x41696d){var _0x325655=_0x255d35;this['state']=_0x27ef43,this['doc']=_0x5af26c,this[_0x325655('0xde2')]=_0x4d0b54,this['maxLookAhead']=_0x41696d||0x0,this[_0x325655('0x1e7')]=null,this['baseTokenPos']=0x1;};function _0x320906(_0x2d21fc,_0xc34651,_0x7b5627,_0x2f4324){var _0x49657b=_0x255d35,_0x1d3ac7=[_0x2d21fc['state']['modeGen']],_0x134919={};_0x548566(_0x2d21fc,_0xc34651[_0x49657b('0x768')],_0x2d21fc['doc'][_0x49657b('0x575')],_0x7b5627,function(_0x41e42a,_0x455c4b){var _0x112235=_0x49657b;return _0x1d3ac7[_0x112235('0x8f8')](_0x41e42a,_0x455c4b);},_0x134919,_0x2f4324);for(var _0x6ad4ea=_0x7b5627[_0x49657b('0xfff')],_0x5e3cee=function(_0x5419e9){var _0x1deaf3=_0x49657b;_0x7b5627[_0x1deaf3('0x1e7')]=_0x1d3ac7;var _0x9eb7b0=_0x2d21fc[_0x1deaf3('0xfff')][_0x1deaf3('0x97b')][_0x5419e9],_0x1489dc=0x1,_0x58e6e3=0x0;_0x7b5627[_0x1deaf3('0xfff')]=!0x0,_0x548566(_0x2d21fc,_0xc34651[_0x1deaf3('0x768')],_0x9eb7b0[_0x1deaf3('0x575')],_0x7b5627,function(_0x7cd9c1,_0x523101){var _0xda6ed2=_0x1deaf3;for(var _0x254f6b=_0x1489dc;_0x58e6e3<_0x7cd9c1;){var _0x3d16bd=_0x1d3ac7[_0x1489dc];_0x3d16bd>_0x7cd9c1&&_0x1d3ac7[_0xda6ed2('0xc19')](_0x1489dc,0x1,_0x7cd9c1,_0x1d3ac7[_0x1489dc+0x1],_0x3d16bd),_0x1489dc+=0x2,_0x58e6e3=Math['min'](_0x7cd9c1,_0x3d16bd);}if(_0x523101){if(_0x9eb7b0[_0xda6ed2('0xdd1')])_0x1d3ac7[_0xda6ed2('0xc19')](_0x254f6b,_0x1489dc-_0x254f6b,_0x7cd9c1,_0xda6ed2('0xe8e')+_0x523101),_0x1489dc=_0x254f6b+0x2;else for(;_0x254f6b<_0x1489dc;_0x254f6b+=0x2){var _0x32e156=_0x1d3ac7[_0x254f6b+0x1];_0x1d3ac7[_0x254f6b+0x1]=(_0x32e156?_0x32e156+'\x20':'')+_0xda6ed2('0xe8e')+_0x523101;}}},_0x134919),_0x7b5627['state']=_0x6ad4ea,_0x7b5627[_0x1deaf3('0x1e7')]=null,_0x7b5627[_0x1deaf3('0x10e5')]=0x1;},_0x53bef7=0x0;_0x53bef7<_0x2d21fc[_0x49657b('0xfff')][_0x49657b('0x97b')][_0x49657b('0x525')];++_0x53bef7)_0x5e3cee(_0x53bef7);return{'styles':_0x1d3ac7,'classes':_0x134919['bgClass']||_0x134919[_0x49657b('0xf60')]?_0x134919:null};}function _0x1bfbd1(_0x57a9ff,_0x372829,_0x26d0b2){var _0x240bee=_0x255d35;if(!_0x372829[_0x240bee('0x110b')]||_0x372829[_0x240bee('0x110b')][0x0]!=_0x57a9ff[_0x240bee('0xfff')][_0x240bee('0x1042')]){var _0x3441b6=_0x13a7c7(_0x57a9ff,_0x5ee38b(_0x372829)),_0x26f6f5=_0x372829[_0x240bee('0x768')][_0x240bee('0x525')]>_0x57a9ff[_0x240bee('0x631')]['maxHighlightLength']&&_0x4e981f(_0x57a9ff[_0x240bee('0xf37')]['mode'],_0x3441b6[_0x240bee('0xfff')]),_0x1b0117=_0x320906(_0x57a9ff,_0x372829,_0x3441b6);_0x26f6f5&&(_0x3441b6[_0x240bee('0xfff')]=_0x26f6f5),_0x372829[_0x240bee('0x52')]=_0x3441b6[_0x240bee('0xc68')](!_0x26f6f5),_0x372829['styles']=_0x1b0117[_0x240bee('0x110b')],_0x1b0117[_0x240bee('0xe0c')]?_0x372829[_0x240bee('0xbe1')]=_0x1b0117[_0x240bee('0xe0c')]:_0x372829[_0x240bee('0xbe1')]&&(_0x372829[_0x240bee('0xbe1')]=null),_0x26d0b2===_0x57a9ff['doc'][_0x240bee('0xba7')]&&(_0x57a9ff[_0x240bee('0xf37')][_0x240bee('0xef3')]=Math[_0x240bee('0xf65')](_0x57a9ff[_0x240bee('0xf37')][_0x240bee('0xef3')],++_0x57a9ff[_0x240bee('0xf37')]['highlightFrontier']));}return _0x372829[_0x240bee('0x110b')];}function _0x13a7c7(_0x55e093,_0x30ab7f,_0x44403d){var _0x4dad17=_0x255d35,_0x44fcc9=_0x55e093[_0x4dad17('0xf37')],_0x71082b=_0x55e093['display'];if(!_0x44fcc9[_0x4dad17('0x575')][_0x4dad17('0x7ec')])return new _0xb1d560(_0x44fcc9,!0x0,_0x30ab7f);var _0x3142ab=function(_0x436bfc,_0x4afc70,_0x4d1a7f){var _0x48e591=_0x4dad17;for(var _0x424dd4,_0x140928,_0x425e32=_0x436bfc[_0x48e591('0xf37')],_0x1b8bf4=_0x4d1a7f?-0x1:_0x4afc70-(_0x436bfc[_0x48e591('0xf37')][_0x48e591('0x575')]['innerMode']?0x3e8:0x64),_0x578fe3=_0x4afc70;_0x578fe3>_0x1b8bf4;--_0x578fe3){if(_0x578fe3<=_0x425e32[_0x48e591('0xe3c')])return _0x425e32['first'];var _0x4ce850=_0x1b58dd(_0x425e32,_0x578fe3-0x1),_0x36e34b=_0x4ce850[_0x48e591('0x52')];if(_0x36e34b&&(!_0x4d1a7f||_0x578fe3+(_0x36e34b instanceof _0x2db48d?_0x36e34b[_0x48e591('0xbb5')]:0x0)<=_0x425e32['modeFrontier']))return _0x578fe3;var _0x429929=_0x40e2a1(_0x4ce850['text'],null,_0x436bfc[_0x48e591('0x631')][_0x48e591('0x772')]);(null==_0x140928||_0x424dd4>_0x429929)&&(_0x140928=_0x578fe3-0x1,_0x424dd4=_0x429929);}return _0x140928;}(_0x55e093,_0x30ab7f,_0x44403d),_0x234044=_0x3142ab>_0x44fcc9[_0x4dad17('0xe3c')]&&_0x1b58dd(_0x44fcc9,_0x3142ab-0x1)[_0x4dad17('0x52')],_0x57f0a8=_0x234044?_0xb1d560['fromSaved'](_0x44fcc9,_0x234044,_0x3142ab):new _0xb1d560(_0x44fcc9,_0x5ca461(_0x44fcc9['mode']),_0x3142ab);return _0x44fcc9[_0x4dad17('0x160')](_0x3142ab,_0x30ab7f,function(_0x542eea){var _0x381e2f=_0x4dad17;_0x41a4f9(_0x55e093,_0x542eea['text'],_0x57f0a8);var _0x61bb24=_0x57f0a8[_0x381e2f('0xde2')];_0x542eea[_0x381e2f('0x52')]=_0x61bb24==_0x30ab7f-0x1||_0x61bb24%0x5==0x0||_0x61bb24>=_0x71082b[_0x381e2f('0xa36')]&&_0x61bb24<_0x71082b[_0x381e2f('0xf2f')]?_0x57f0a8['save']():null,_0x57f0a8['nextLine']();}),_0x44403d&&(_0x44fcc9[_0x4dad17('0xef3')]=_0x57f0a8[_0x4dad17('0xde2')]),_0x57f0a8;}function _0x41a4f9(_0x47d558,_0xb5d809,_0x14c726,_0x3ae70b){var _0x24076e=_0x255d35,_0x5900ad=_0x47d558[_0x24076e('0xf37')][_0x24076e('0x575')],_0x4e3b99=new _0x233ef9(_0xb5d809,_0x47d558[_0x24076e('0x631')][_0x24076e('0x772')],_0x14c726);for(_0x4e3b99[_0x24076e('0x1045')]=_0x4e3b99[_0x24076e('0x1121')]=_0x3ae70b||0x0,''==_0xb5d809&&_0x181a55(_0x5900ad,_0x14c726[_0x24076e('0xfff')]);!_0x4e3b99[_0x24076e('0x85')]();)_0x3f7529(_0x5900ad,_0x4e3b99,_0x14c726[_0x24076e('0xfff')]),_0x4e3b99[_0x24076e('0x1045')]=_0x4e3b99[_0x24076e('0x1121')];}function _0x181a55(_0x5d4a26,_0x3b5aeb){var _0x1787fe=_0x255d35;if(_0x5d4a26[_0x1787fe('0x310')])return _0x5d4a26['blankLine'](_0x3b5aeb);if(_0x5d4a26[_0x1787fe('0x10b7')]){var _0x21d589=_0x50c606(_0x5d4a26,_0x3b5aeb);return _0x21d589[_0x1787fe('0x575')]['blankLine']?_0x21d589[_0x1787fe('0x575')][_0x1787fe('0x310')](_0x21d589[_0x1787fe('0xfff')]):void 0x0;}}function _0x3f7529(_0x158151,_0x3db9a0,_0x49f321,_0x5aa67f){var _0x47140d=_0x255d35;for(var _0x4102b7=0x0;_0x4102b7<0xa;_0x4102b7++){_0x5aa67f&&(_0x5aa67f[0x0]=_0x50c606(_0x158151,_0x49f321)['mode']);var _0x3c4221=_0x158151[_0x47140d('0x326')](_0x3db9a0,_0x49f321);if(_0x3db9a0[_0x47140d('0x1121')]>_0x3db9a0[_0x47140d('0x1045')])return _0x3c4221;}throw new Error('Mode\x20'+_0x158151[_0x47140d('0x263')]+_0x47140d('0xd3e'));}_0xb1d560[_0x255d35('0x98c')]['lookAhead']=function(_0x100da7){var _0x58e893=_0x255d35,_0x584f09=this[_0x58e893('0xf37')]['getLine'](this[_0x58e893('0xde2')]+_0x100da7);return null!=_0x584f09&&_0x100da7>this['maxLookAhead']&&(this[_0x58e893('0x5d5')]=_0x100da7),_0x584f09;},_0xb1d560['prototype'][_0x255d35('0xa93')]=function(_0x13bc42){var _0x127547=_0x255d35;if(!this[_0x127547('0x1e7')])return null;for(;this[_0x127547('0x1e7')][this[_0x127547('0x10e5')]]<=_0x13bc42;)this['baseTokenPos']+=0x2;var _0x4bfc72=this[_0x127547('0x1e7')][this['baseTokenPos']+0x1];return{'type':_0x4bfc72&&_0x4bfc72[_0x127547('0x166')](/( |^)overlay .*/,''),'size':this[_0x127547('0x1e7')][this[_0x127547('0x10e5')]]-_0x13bc42};},_0xb1d560[_0x255d35('0x98c')][_0x255d35('0x604')]=function(){var _0x39d85f=_0x255d35;this[_0x39d85f('0xde2')]++,this[_0x39d85f('0x5d5')]>0x0&&this[_0x39d85f('0x5d5')]--;},_0xb1d560[_0x255d35('0x200')]=function(_0x41c717,_0x4334d1,_0x239bd4){var _0x14a2ec=_0x255d35;return _0x4334d1 instanceof _0x2db48d?new _0xb1d560(_0x41c717,_0x4e981f(_0x41c717[_0x14a2ec('0x575')],_0x4334d1[_0x14a2ec('0xfff')]),_0x239bd4,_0x4334d1[_0x14a2ec('0xbb5')]):new _0xb1d560(_0x41c717,_0x4e981f(_0x41c717[_0x14a2ec('0x575')],_0x4334d1),_0x239bd4);},_0xb1d560[_0x255d35('0x98c')][_0x255d35('0xc68')]=function(_0x16a3d2){var _0xfd3aad=_0x255d35,_0x20a1ac=!0x1!==_0x16a3d2?_0x4e981f(this[_0xfd3aad('0xf37')][_0xfd3aad('0x575')],this['state']):this[_0xfd3aad('0xfff')];return this[_0xfd3aad('0x5d5')]>0x0?new _0x2db48d(_0x20a1ac,this['maxLookAhead']):_0x20a1ac;};var _0x66089e=function(_0x1db85b,_0x27d4e,_0x4103b9){var _0xad40ba=_0x255d35;this[_0xad40ba('0x1045')]=_0x1db85b[_0xad40ba('0x1045')],this[_0xad40ba('0xbc6')]=_0x1db85b[_0xad40ba('0x1121')],this[_0xad40ba('0x7c7')]=_0x1db85b[_0xad40ba('0x970')](),this[_0xad40ba('0x3f7')]=_0x27d4e||null,this[_0xad40ba('0xfff')]=_0x4103b9;};function _0x4a173f(_0x10334e,_0x3e58ae,_0x31818d,_0x321912){var _0x42b54f=_0x255d35,_0x2f2b12,_0x41dcc2,_0x7d2b26=_0x10334e[_0x42b54f('0xf37')],_0x5c47e3=_0x7d2b26[_0x42b54f('0x575')],_0x1d72af=_0x1b58dd(_0x7d2b26,(_0x3e58ae=_0x364c36(_0x7d2b26,_0x3e58ae))[_0x42b54f('0xde2')]),_0x46be04=_0x13a7c7(_0x10334e,_0x3e58ae[_0x42b54f('0xde2')],_0x31818d),_0x1f806d=new _0x233ef9(_0x1d72af[_0x42b54f('0x768')],_0x10334e[_0x42b54f('0x631')][_0x42b54f('0x772')],_0x46be04);for(_0x321912&&(_0x41dcc2=[]);(_0x321912||_0x1f806d[_0x42b54f('0x1121')]<_0x3e58ae['ch'])&&!_0x1f806d[_0x42b54f('0x85')]();)_0x1f806d['start']=_0x1f806d[_0x42b54f('0x1121')],_0x2f2b12=_0x3f7529(_0x5c47e3,_0x1f806d,_0x46be04[_0x42b54f('0xfff')]),_0x321912&&_0x41dcc2[_0x42b54f('0x8f8')](new _0x66089e(_0x1f806d,_0x2f2b12,_0x4e981f(_0x7d2b26[_0x42b54f('0x575')],_0x46be04[_0x42b54f('0xfff')])));return _0x321912?_0x41dcc2:new _0x66089e(_0x1f806d,_0x2f2b12,_0x46be04[_0x42b54f('0xfff')]);}function _0x526d1f(_0x184092,_0x3c5336){var _0x26e22c=_0x255d35;if(_0x184092)for(;;){var _0x1527e3=_0x184092[_0x26e22c('0x91e')](/(?:^|\s+)line-(background-)?(\S+)/);if(!_0x1527e3)break;_0x184092=_0x184092[_0x26e22c('0xbc0')](0x0,_0x1527e3[_0x26e22c('0xf20')])+_0x184092[_0x26e22c('0xbc0')](_0x1527e3[_0x26e22c('0xf20')]+_0x1527e3[0x0][_0x26e22c('0x525')]);var _0x93015c=_0x1527e3[0x1]?'bgClass':_0x26e22c('0xf60');null==_0x3c5336[_0x93015c]?_0x3c5336[_0x93015c]=_0x1527e3[0x2]:new RegExp('(?:^|\x5cs)'+_0x1527e3[0x2]+'(?:$|\x5cs)')[_0x26e22c('0xaac')](_0x3c5336[_0x93015c])||(_0x3c5336[_0x93015c]+='\x20'+_0x1527e3[0x2]);}return _0x184092;}function _0x548566(_0x4b6ff5,_0x26edd4,_0x4833f8,_0x5e72bc,_0x44ab36,_0x39bf29,_0x1566a2){var _0x322942=_0x255d35,_0x3e52b0=_0x4833f8[_0x322942('0xe05')];null==_0x3e52b0&&(_0x3e52b0=_0x4b6ff5[_0x322942('0x631')][_0x322942('0xe05')]);var _0xab999d,_0x13c2e1=0x0,_0x178829=null,_0x18db4c=new _0x233ef9(_0x26edd4,_0x4b6ff5['options'][_0x322942('0x772')],_0x5e72bc),_0xbccb7d=_0x4b6ff5[_0x322942('0x631')][_0x322942('0x6c0')]&&[null];for(''==_0x26edd4&&_0x526d1f(_0x181a55(_0x4833f8,_0x5e72bc[_0x322942('0xfff')]),_0x39bf29);!_0x18db4c[_0x322942('0x85')]();){if(_0x18db4c[_0x322942('0x1121')]>_0x4b6ff5[_0x322942('0x631')]['maxHighlightLength']?(_0x3e52b0=!0x1,_0x1566a2&&_0x41a4f9(_0x4b6ff5,_0x26edd4,_0x5e72bc,_0x18db4c[_0x322942('0x1121')]),_0x18db4c[_0x322942('0x1121')]=_0x26edd4[_0x322942('0x525')],_0xab999d=null):_0xab999d=_0x526d1f(_0x3f7529(_0x4833f8,_0x18db4c,_0x5e72bc[_0x322942('0xfff')],_0xbccb7d),_0x39bf29),_0xbccb7d){var _0x413b5d=_0xbccb7d[0x0][_0x322942('0x263')];_0x413b5d&&(_0xab999d='m-'+(_0xab999d?_0x413b5d+'\x20'+_0xab999d:_0x413b5d));}if(!_0x3e52b0||_0x178829!=_0xab999d){for(;_0x13c2e1<_0x18db4c[_0x322942('0x1045')];)_0x44ab36(_0x13c2e1=Math['min'](_0x18db4c[_0x322942('0x1045')],_0x13c2e1+0x1388),_0x178829);_0x178829=_0xab999d;}_0x18db4c[_0x322942('0x1045')]=_0x18db4c[_0x322942('0x1121')];}for(;_0x13c2e1<_0x18db4c['pos'];){var _0x71e1fd=Math['min'](_0x18db4c['pos'],_0x13c2e1+0x1388);_0x44ab36(_0x71e1fd,_0x178829),_0x13c2e1=_0x71e1fd;}}var _0x1c8dae=!0x1,_0x17b3bc=!0x1;function _0x20dfa7(_0xb168f0,_0x456b9c,_0x44185e){var _0x46bd5c=_0x255d35;this['marker']=_0xb168f0,this[_0x46bd5c('0x9d7')]=_0x456b9c,this['to']=_0x44185e;}function _0x587ac7(_0x534971,_0x4e0007){var _0x540bb1=_0x255d35;if(_0x534971)for(var _0x2ad2cb=0x0;_0x2ad2cb<_0x534971['length'];++_0x2ad2cb){var _0xe4f0b2=_0x534971[_0x2ad2cb];if(_0xe4f0b2[_0x540bb1('0x85c')]==_0x4e0007)return _0xe4f0b2;}}function _0xa01e10(_0x43fc08,_0x2eac11){var _0x3b5ed6=_0x255d35;for(var _0x1f9c3a,_0x1b4cd4=0x0;_0x1b4cd4<_0x43fc08[_0x3b5ed6('0x525')];++_0x1b4cd4)_0x43fc08[_0x1b4cd4]!=_0x2eac11&&(_0x1f9c3a||(_0x1f9c3a=[]))[_0x3b5ed6('0x8f8')](_0x43fc08[_0x1b4cd4]);return _0x1f9c3a;}function _0x2e94b5(_0x22bf09,_0x5df0e0){var _0x18aa54=_0x255d35;if(_0x5df0e0[_0x18aa54('0xb90')])return null;var _0x51f2f4=_0x102270(_0x22bf09,_0x5df0e0['from'][_0x18aa54('0xde2')])&&_0x1b58dd(_0x22bf09,_0x5df0e0[_0x18aa54('0x9d7')][_0x18aa54('0xde2')])[_0x18aa54('0xe33')],_0x46d809=_0x102270(_0x22bf09,_0x5df0e0['to']['line'])&&_0x1b58dd(_0x22bf09,_0x5df0e0['to'][_0x18aa54('0xde2')])[_0x18aa54('0xe33')];if(!_0x51f2f4&&!_0x46d809)return null;var _0x15f890=_0x5df0e0[_0x18aa54('0x9d7')]['ch'],_0x31bcd4=_0x5df0e0['to']['ch'],_0x5705c0=0x0==_0x42d525(_0x5df0e0['from'],_0x5df0e0['to']),_0x3cdaca=function(_0x455776,_0x238973,_0x49503d){var _0x9904bf=_0x18aa54,_0x1e8ecd;if(_0x455776)for(var _0x49502f=0x0;_0x49502f<_0x455776[_0x9904bf('0x525')];++_0x49502f){var _0x3ad6d7=_0x455776[_0x49502f],_0x4ac686=_0x3ad6d7[_0x9904bf('0x85c')];if(null==_0x3ad6d7[_0x9904bf('0x9d7')]||(_0x4ac686[_0x9904bf('0xb8b')]?_0x3ad6d7['from']<=_0x238973:_0x3ad6d7[_0x9904bf('0x9d7')]<_0x238973)||_0x3ad6d7[_0x9904bf('0x9d7')]==_0x238973&&'bookmark'==_0x4ac686['type']&&(!_0x49503d||!_0x3ad6d7['marker'][_0x9904bf('0x206')])){var _0x8b1ad4=null==_0x3ad6d7['to']||(_0x4ac686[_0x9904bf('0x937')]?_0x3ad6d7['to']>=_0x238973:_0x3ad6d7['to']>_0x238973);(_0x1e8ecd||(_0x1e8ecd=[]))[_0x9904bf('0x8f8')](new _0x20dfa7(_0x4ac686,_0x3ad6d7[_0x9904bf('0x9d7')],_0x8b1ad4?null:_0x3ad6d7['to']));}}return _0x1e8ecd;}(_0x51f2f4,_0x15f890,_0x5705c0),_0x371cfe=function(_0x1ee907,_0xf9105,_0x5cf7a4){var _0x42e194=_0x18aa54,_0x2ec23e;if(_0x1ee907)for(var _0x10c517=0x0;_0x10c517<_0x1ee907['length'];++_0x10c517){var _0x3ca325=_0x1ee907[_0x10c517],_0x28f0aa=_0x3ca325['marker'];if(null==_0x3ca325['to']||(_0x28f0aa[_0x42e194('0x937')]?_0x3ca325['to']>=_0xf9105:_0x3ca325['to']>_0xf9105)||_0x3ca325[_0x42e194('0x9d7')]==_0xf9105&&_0x42e194('0x958')==_0x28f0aa[_0x42e194('0x3f7')]&&(!_0x5cf7a4||_0x3ca325[_0x42e194('0x85c')]['insertLeft'])){var _0x2cdcf7=null==_0x3ca325[_0x42e194('0x9d7')]||(_0x28f0aa[_0x42e194('0xb8b')]?_0x3ca325[_0x42e194('0x9d7')]<=_0xf9105:_0x3ca325['from']<_0xf9105);(_0x2ec23e||(_0x2ec23e=[]))[_0x42e194('0x8f8')](new _0x20dfa7(_0x28f0aa,_0x2cdcf7?null:_0x3ca325['from']-_0xf9105,null==_0x3ca325['to']?null:_0x3ca325['to']-_0xf9105));}}return _0x2ec23e;}(_0x46d809,_0x31bcd4,_0x5705c0),_0x343ede=0x1==_0x5df0e0[_0x18aa54('0x768')][_0x18aa54('0x525')],_0x453b3a=_0x15560b(_0x5df0e0[_0x18aa54('0x768')])['length']+(_0x343ede?_0x15f890:0x0);if(_0x3cdaca)for(var _0x96c7a8=0x0;_0x96c7a8<_0x3cdaca[_0x18aa54('0x525')];++_0x96c7a8){var _0x13021b=_0x3cdaca[_0x96c7a8];if(null==_0x13021b['to']){var _0x48501c=_0x587ac7(_0x371cfe,_0x13021b[_0x18aa54('0x85c')]);_0x48501c?_0x343ede&&(_0x13021b['to']=null==_0x48501c['to']?null:_0x48501c['to']+_0x453b3a):_0x13021b['to']=_0x15f890;}}if(_0x371cfe)for(var _0x209add=0x0;_0x209add<_0x371cfe['length'];++_0x209add){var _0x1d0c11=_0x371cfe[_0x209add];if(null!=_0x1d0c11['to']&&(_0x1d0c11['to']+=_0x453b3a),null==_0x1d0c11[_0x18aa54('0x9d7')])_0x587ac7(_0x3cdaca,_0x1d0c11['marker'])||(_0x1d0c11['from']=_0x453b3a,_0x343ede&&(_0x3cdaca||(_0x3cdaca=[]))[_0x18aa54('0x8f8')](_0x1d0c11));else _0x1d0c11[_0x18aa54('0x9d7')]+=_0x453b3a,_0x343ede&&(_0x3cdaca||(_0x3cdaca=[]))[_0x18aa54('0x8f8')](_0x1d0c11);}_0x3cdaca&&(_0x3cdaca=_0x141619(_0x3cdaca)),_0x371cfe&&_0x371cfe!=_0x3cdaca&&(_0x371cfe=_0x141619(_0x371cfe));var _0x4c47ec=[_0x3cdaca];if(!_0x343ede){var _0x36aeeb,_0x5bdc47=_0x5df0e0[_0x18aa54('0x768')][_0x18aa54('0x525')]-0x2;if(_0x5bdc47>0x0&&_0x3cdaca)for(var _0x4c2939=0x0;_0x4c2939<_0x3cdaca[_0x18aa54('0x525')];++_0x4c2939)null==_0x3cdaca[_0x4c2939]['to']&&(_0x36aeeb||(_0x36aeeb=[]))[_0x18aa54('0x8f8')](new _0x20dfa7(_0x3cdaca[_0x4c2939][_0x18aa54('0x85c')],null,null));for(var _0x1ad7a6=0x0;_0x1ad7a6<_0x5bdc47;++_0x1ad7a6)_0x4c47ec[_0x18aa54('0x8f8')](_0x36aeeb);_0x4c47ec[_0x18aa54('0x8f8')](_0x371cfe);}return _0x4c47ec;}function _0x141619(_0x4ce8ef){var _0x548dd9=_0x255d35;for(var _0x93d17=0x0;_0x93d17<_0x4ce8ef[_0x548dd9('0x525')];++_0x93d17){var _0x207f43=_0x4ce8ef[_0x93d17];null!=_0x207f43[_0x548dd9('0x9d7')]&&_0x207f43[_0x548dd9('0x9d7')]==_0x207f43['to']&&!0x1!==_0x207f43[_0x548dd9('0x85c')][_0x548dd9('0xab')]&&_0x4ce8ef[_0x548dd9('0xc19')](_0x93d17--,0x1);}return _0x4ce8ef['length']?_0x4ce8ef:null;}function _0x35fd93(_0x344155){var _0x326bd7=_0x255d35,_0x558dac=_0x344155[_0x326bd7('0xe33')];if(_0x558dac){for(var _0x415d23=0x0;_0x415d23<_0x558dac[_0x326bd7('0x525')];++_0x415d23)_0x558dac[_0x415d23][_0x326bd7('0x85c')]['detachLine'](_0x344155);_0x344155[_0x326bd7('0xe33')]=null;}}function _0x2061e6(_0x4f6a6a,_0x5f46e2){var _0x26e5d5=_0x255d35;if(_0x5f46e2){for(var _0x5ae03a=0x0;_0x5ae03a<_0x5f46e2[_0x26e5d5('0x525')];++_0x5ae03a)_0x5f46e2[_0x5ae03a][_0x26e5d5('0x85c')]['attachLine'](_0x4f6a6a);_0x4f6a6a[_0x26e5d5('0xe33')]=_0x5f46e2;}}function _0x258d6f(_0x19a4d5){var _0x1d030f=_0x255d35;return _0x19a4d5[_0x1d030f('0xb8b')]?-0x1:0x0;}function _0x4db298(_0x19d69f){var _0x389506=_0x255d35;return _0x19d69f[_0x389506('0x937')]?0x1:0x0;}function _0x149a47(_0x2374c9,_0x25a5eb){var _0x5bd301=_0x255d35,_0x1f6497=_0x2374c9[_0x5bd301('0x511')][_0x5bd301('0x525')]-_0x25a5eb[_0x5bd301('0x511')]['length'];if(0x0!=_0x1f6497)return _0x1f6497;var _0x70b500=_0x2374c9['find'](),_0x4cf459=_0x25a5eb[_0x5bd301('0x6f3')](),_0x2fd634=_0x42d525(_0x70b500[_0x5bd301('0x9d7')],_0x4cf459['from'])||_0x258d6f(_0x2374c9)-_0x258d6f(_0x25a5eb);if(_0x2fd634)return-_0x2fd634;var _0x124483=_0x42d525(_0x70b500['to'],_0x4cf459['to'])||_0x4db298(_0x2374c9)-_0x4db298(_0x25a5eb);return _0x124483||_0x25a5eb['id']-_0x2374c9['id'];}function _0x2cc24a(_0x344b9b,_0x1af360){var _0x5cd151=_0x255d35,_0x2e1d5c,_0x5e2b9f=_0x17b3bc&&_0x344b9b[_0x5cd151('0xe33')];if(_0x5e2b9f)for(var _0x5f7e99=void 0x0,_0x1d8e59=0x0;_0x1d8e59<_0x5e2b9f[_0x5cd151('0x525')];++_0x1d8e59)(_0x5f7e99=_0x5e2b9f[_0x1d8e59])[_0x5cd151('0x85c')][_0x5cd151('0x1021')]&&null==(_0x1af360?_0x5f7e99[_0x5cd151('0x9d7')]:_0x5f7e99['to'])&&(!_0x2e1d5c||_0x149a47(_0x2e1d5c,_0x5f7e99[_0x5cd151('0x85c')])<0x0)&&(_0x2e1d5c=_0x5f7e99[_0x5cd151('0x85c')]);return _0x2e1d5c;}function _0x55890a(_0x5d4afb){return _0x2cc24a(_0x5d4afb,!0x0);}function _0x2108ff(_0x7be72d){return _0x2cc24a(_0x7be72d,!0x1);}function _0x1d32ae(_0x44e97e,_0x29422d){var _0x20013b=_0x255d35,_0x497f9d,_0x31dc8a=_0x17b3bc&&_0x44e97e[_0x20013b('0xe33')];if(_0x31dc8a)for(var _0x116723=0x0;_0x116723<_0x31dc8a[_0x20013b('0x525')];++_0x116723){var _0x10f7b1=_0x31dc8a[_0x116723];_0x10f7b1[_0x20013b('0x85c')][_0x20013b('0x1021')]&&(null==_0x10f7b1[_0x20013b('0x9d7')]||_0x10f7b1[_0x20013b('0x9d7')]<_0x29422d)&&(null==_0x10f7b1['to']||_0x10f7b1['to']>_0x29422d)&&(!_0x497f9d||_0x149a47(_0x497f9d,_0x10f7b1[_0x20013b('0x85c')])<0x0)&&(_0x497f9d=_0x10f7b1['marker']);}return _0x497f9d;}function _0x1e1859(_0x5de126,_0x50648b,_0x18b59c,_0x1a9429,_0x99694d){var _0x1987ae=_0x255d35,_0x3b19f7=_0x1b58dd(_0x5de126,_0x50648b),_0x571111=_0x17b3bc&&_0x3b19f7[_0x1987ae('0xe33')];if(_0x571111)for(var _0xdd3189=0x0;_0xdd3189<_0x571111[_0x1987ae('0x525')];++_0xdd3189){var _0x4b16d7=_0x571111[_0xdd3189];if(_0x4b16d7[_0x1987ae('0x85c')][_0x1987ae('0x1021')]){var _0x49b61d=_0x4b16d7[_0x1987ae('0x85c')][_0x1987ae('0x6f3')](0x0),_0x379c9b=_0x42d525(_0x49b61d['from'],_0x18b59c)||_0x258d6f(_0x4b16d7[_0x1987ae('0x85c')])-_0x258d6f(_0x99694d),_0x34a44c=_0x42d525(_0x49b61d['to'],_0x1a9429)||_0x4db298(_0x4b16d7[_0x1987ae('0x85c')])-_0x4db298(_0x99694d);if(!(_0x379c9b>=0x0&&_0x34a44c<=0x0||_0x379c9b<=0x0&&_0x34a44c>=0x0)&&(_0x379c9b<=0x0&&(_0x4b16d7[_0x1987ae('0x85c')]['inclusiveRight']&&_0x99694d['inclusiveLeft']?_0x42d525(_0x49b61d['to'],_0x18b59c)>=0x0:_0x42d525(_0x49b61d['to'],_0x18b59c)>0x0)||_0x379c9b>=0x0&&(_0x4b16d7[_0x1987ae('0x85c')][_0x1987ae('0x937')]&&_0x99694d[_0x1987ae('0xb8b')]?_0x42d525(_0x49b61d[_0x1987ae('0x9d7')],_0x1a9429)<=0x0:_0x42d525(_0x49b61d[_0x1987ae('0x9d7')],_0x1a9429)<0x0)))return!0x0;}}}function _0x5958c7(_0x18daf6){var _0x304699=_0x255d35;for(var _0xfdf23e;_0xfdf23e=_0x55890a(_0x18daf6);)_0x18daf6=_0xfdf23e[_0x304699('0x6f3')](-0x1,!0x0)[_0x304699('0xde2')];return _0x18daf6;}function _0x1b5165(_0x37f098,_0x9b4466){var _0x288d2d=_0x1b58dd(_0x37f098,_0x9b4466),_0x8b4219=_0x5958c7(_0x288d2d);return _0x288d2d==_0x8b4219?_0x9b4466:_0x5ee38b(_0x8b4219);}function _0x11d985(_0x1daf1c,_0x57498f){var _0x50393f=_0x255d35;if(_0x57498f>_0x1daf1c[_0x50393f('0xbdf')]())return _0x57498f;var _0x248f9e,_0x3ac842=_0x1b58dd(_0x1daf1c,_0x57498f);if(!_0x50dfd8(_0x1daf1c,_0x3ac842))return _0x57498f;for(;_0x248f9e=_0x2108ff(_0x3ac842);)_0x3ac842=_0x248f9e[_0x50393f('0x6f3')](0x1,!0x0)[_0x50393f('0xde2')];return _0x5ee38b(_0x3ac842)+0x1;}function _0x50dfd8(_0x4b1029,_0x143794){var _0x5b9059=_0x255d35,_0x296df7=_0x17b3bc&&_0x143794['markedSpans'];if(_0x296df7)for(var _0x3f64dc=void 0x0,_0x252ff9=0x0;_0x252ff9<_0x296df7[_0x5b9059('0x525')];++_0x252ff9)if((_0x3f64dc=_0x296df7[_0x252ff9])[_0x5b9059('0x85c')][_0x5b9059('0x1021')]){if(null==_0x3f64dc[_0x5b9059('0x9d7')])return!0x0;if(!_0x3f64dc[_0x5b9059('0x85c')][_0x5b9059('0x362')]&&0x0==_0x3f64dc[_0x5b9059('0x9d7')]&&_0x3f64dc[_0x5b9059('0x85c')]['inclusiveLeft']&&_0x37fede(_0x4b1029,_0x143794,_0x3f64dc))return!0x0;}}function _0x37fede(_0x2b3831,_0x1ffebf,_0x1cd5e8){var _0x466b41=_0x255d35;if(null==_0x1cd5e8['to']){var _0x4a40c1=_0x1cd5e8[_0x466b41('0x85c')][_0x466b41('0x6f3')](0x1,!0x0);return _0x37fede(_0x2b3831,_0x4a40c1[_0x466b41('0xde2')],_0x587ac7(_0x4a40c1[_0x466b41('0xde2')][_0x466b41('0xe33')],_0x1cd5e8['marker']));}if(_0x1cd5e8[_0x466b41('0x85c')][_0x466b41('0x937')]&&_0x1cd5e8['to']==_0x1ffebf['text'][_0x466b41('0x525')])return!0x0;for(var _0x3f2070=void 0x0,_0x270535=0x0;_0x270535<_0x1ffebf[_0x466b41('0xe33')][_0x466b41('0x525')];++_0x270535)if((_0x3f2070=_0x1ffebf[_0x466b41('0xe33')][_0x270535])[_0x466b41('0x85c')][_0x466b41('0x1021')]&&!_0x3f2070['marker'][_0x466b41('0x362')]&&_0x3f2070[_0x466b41('0x9d7')]==_0x1cd5e8['to']&&(null==_0x3f2070['to']||_0x3f2070['to']!=_0x1cd5e8['from'])&&(_0x3f2070[_0x466b41('0x85c')][_0x466b41('0xb8b')]||_0x1cd5e8[_0x466b41('0x85c')]['inclusiveRight'])&&_0x37fede(_0x2b3831,_0x1ffebf,_0x3f2070))return!0x0;}function _0x14cc1e(_0x4c1489){var _0x501574=_0x255d35;for(var _0x5708ad=0x0,_0x5d9a13=(_0x4c1489=_0x5958c7(_0x4c1489))[_0x501574('0xeb7')],_0x2d5471=0x0;_0x2d5471<_0x5d9a13['lines'][_0x501574('0x525')];++_0x2d5471){var _0x5ecd3b=_0x5d9a13[_0x501574('0x511')][_0x2d5471];if(_0x5ecd3b==_0x4c1489)break;_0x5708ad+=_0x5ecd3b['height'];}for(var _0x2f64ef=_0x5d9a13[_0x501574('0xeb7')];_0x2f64ef;_0x2f64ef=(_0x5d9a13=_0x2f64ef)[_0x501574('0xeb7')])for(var _0x34659f=0x0;_0x34659f<_0x2f64ef[_0x501574('0x115a')][_0x501574('0x525')];++_0x34659f){var _0x26318b=_0x2f64ef[_0x501574('0x115a')][_0x34659f];if(_0x26318b==_0x5d9a13)break;_0x5708ad+=_0x26318b[_0x501574('0x7f0')];}return _0x5708ad;}function _0x4c31f4(_0x57740f){var _0x568493=_0x255d35;if(0x0==_0x57740f['height'])return 0x0;for(var _0x2a6d33,_0x417e63=_0x57740f[_0x568493('0x768')][_0x568493('0x525')],_0x1946f1=_0x57740f;_0x2a6d33=_0x55890a(_0x1946f1);){var _0x567fd1=_0x2a6d33['find'](0x0,!0x0);_0x1946f1=_0x567fd1[_0x568493('0x9d7')][_0x568493('0xde2')],_0x417e63+=_0x567fd1['from']['ch']-_0x567fd1['to']['ch'];}for(_0x1946f1=_0x57740f;_0x2a6d33=_0x2108ff(_0x1946f1);){var _0x223e53=_0x2a6d33[_0x568493('0x6f3')](0x0,!0x0);_0x417e63-=_0x1946f1['text'][_0x568493('0x525')]-_0x223e53[_0x568493('0x9d7')]['ch'],_0x417e63+=(_0x1946f1=_0x223e53['to'][_0x568493('0xde2')])[_0x568493('0x768')][_0x568493('0x525')]-_0x223e53['to']['ch'];}return _0x417e63;}function _0x123b91(_0x22d63d){var _0x431f10=_0x255d35,_0x3e2f5b=_0x22d63d[_0x431f10('0x55c')],_0x15d22b=_0x22d63d['doc'];_0x3e2f5b[_0x431f10('0x60d')]=_0x1b58dd(_0x15d22b,_0x15d22b[_0x431f10('0xe3c')]),_0x3e2f5b['maxLineLength']=_0x4c31f4(_0x3e2f5b[_0x431f10('0x60d')]),_0x3e2f5b[_0x431f10('0x7aa')]=!0x0,_0x15d22b['iter'](function(_0x164df9){var _0x5b6267=_0x431f10,_0x40eb9b=_0x4c31f4(_0x164df9);_0x40eb9b>_0x3e2f5b[_0x5b6267('0x804')]&&(_0x3e2f5b['maxLineLength']=_0x40eb9b,_0x3e2f5b[_0x5b6267('0x60d')]=_0x164df9);});}var _0x44f9cd=function(_0x3cfb93,_0x1a69f3,_0x47b61d){var _0x550383=_0x255d35;this[_0x550383('0x768')]=_0x3cfb93,_0x2061e6(this,_0x1a69f3),this[_0x550383('0x7f0')]=_0x47b61d?_0x47b61d(this):0x1;};function _0x377fe4(_0x4c2936){_0x4c2936['parent']=null,_0x35fd93(_0x4c2936);}_0x44f9cd['prototype'][_0x255d35('0xc9f')]=function(){return _0x5ee38b(this);},_0x177e1e(_0x44f9cd);var _0x4c9350={},_0x1de994={};function _0x5cebcf(_0x5dc06a,_0x1a74cf){var _0x1d7e2a=_0x255d35;if(!_0x5dc06a||/^\s*$/[_0x1d7e2a('0xaac')](_0x5dc06a))return null;var _0x73926d=_0x1a74cf[_0x1d7e2a('0x6c0')]?_0x1de994:_0x4c9350;return _0x73926d[_0x5dc06a]||(_0x73926d[_0x5dc06a]=_0x5dc06a[_0x1d7e2a('0x166')](/\S+/g,_0x1d7e2a('0xd52')));}function _0x44ef53(_0x13017a,_0x2a98d1){var _0x4d44f1=_0x255d35,_0x2b60a3=_0x14455d('span',null,null,_0x153ccc?'padding-right:\x20.1px':null),_0x3d2cbe={'pre':_0x14455d(_0x4d44f1('0xda6'),[_0x2b60a3],_0x4d44f1('0x102e')),'content':_0x2b60a3,'col':0x0,'pos':0x0,'cm':_0x13017a,'trailingSpace':!0x1,'splitSpaces':_0x13017a['getOption'](_0x4d44f1('0x5a9'))};_0x2a98d1[_0x4d44f1('0xc62')]={};for(var _0x44db0e=0x0;_0x44db0e<=(_0x2a98d1[_0x4d44f1('0x981')]?_0x2a98d1[_0x4d44f1('0x981')]['length']:0x0);_0x44db0e++){var _0x393439=_0x44db0e?_0x2a98d1[_0x4d44f1('0x981')][_0x44db0e-0x1]:_0x2a98d1[_0x4d44f1('0xde2')],_0x1cab45=void 0x0;_0x3d2cbe[_0x4d44f1('0x1121')]=0x0,_0x3d2cbe['addToken']=_0x2c66c3,_0xba488b(_0x13017a[_0x4d44f1('0x55c')][_0x4d44f1('0xc62')])&&(_0x1cab45=_0x3982e5(_0x393439,_0x13017a[_0x4d44f1('0xf37')][_0x4d44f1('0xd96')]))&&(_0x3d2cbe[_0x4d44f1('0x925')]=_0x3e41eb(_0x3d2cbe['addToken'],_0x1cab45)),_0x3d2cbe[_0x4d44f1('0xd49')]=[],_0x39a5c4(_0x393439,_0x3d2cbe,_0x1bfbd1(_0x13017a,_0x393439,_0x2a98d1!=_0x13017a['display']['externalMeasured']&&_0x5ee38b(_0x393439))),_0x393439[_0x4d44f1('0xbe1')]&&(_0x393439[_0x4d44f1('0xbe1')][_0x4d44f1('0x3da')]&&(_0x3d2cbe[_0x4d44f1('0x3da')]=_0x26e038(_0x393439['styleClasses'][_0x4d44f1('0x3da')],_0x3d2cbe[_0x4d44f1('0x3da')]||'')),_0x393439[_0x4d44f1('0xbe1')]['textClass']&&(_0x3d2cbe[_0x4d44f1('0xf60')]=_0x26e038(_0x393439[_0x4d44f1('0xbe1')][_0x4d44f1('0xf60')],_0x3d2cbe[_0x4d44f1('0xf60')]||''))),0x0==_0x3d2cbe['map'][_0x4d44f1('0x525')]&&_0x3d2cbe['map'][_0x4d44f1('0x8f8')](0x0,0x0,_0x3d2cbe[_0x4d44f1('0xd5b')]['appendChild'](_0x4d0aed(_0x13017a[_0x4d44f1('0x55c')][_0x4d44f1('0xc62')]))),0x0==_0x44db0e?(_0x2a98d1['measure'][_0x4d44f1('0xd49')]=_0x3d2cbe[_0x4d44f1('0xd49')],_0x2a98d1['measure'][_0x4d44f1('0x1106')]={}):((_0x2a98d1['measure']['maps']||(_0x2a98d1[_0x4d44f1('0xc62')][_0x4d44f1('0x59c')]=[]))[_0x4d44f1('0x8f8')](_0x3d2cbe[_0x4d44f1('0xd49')]),(_0x2a98d1[_0x4d44f1('0xc62')]['caches']||(_0x2a98d1['measure'][_0x4d44f1('0x896')]=[]))['push']({}));}if(_0x153ccc){var _0xfc0c40=_0x3d2cbe[_0x4d44f1('0xd5b')][_0x4d44f1('0x356')];(/\bcm-tab\b/[_0x4d44f1('0xaac')](_0xfc0c40[_0x4d44f1('0x1bd')])||_0xfc0c40[_0x4d44f1('0x115f')]&&_0xfc0c40[_0x4d44f1('0x115f')](_0x4d44f1('0xdbe')))&&(_0x3d2cbe[_0x4d44f1('0xd5b')][_0x4d44f1('0x1bd')]=_0x4d44f1('0x169'));}return _0x508e40(_0x13017a,_0x4d44f1('0x8ca'),_0x13017a,_0x2a98d1[_0x4d44f1('0xde2')],_0x3d2cbe['pre']),_0x3d2cbe['pre'][_0x4d44f1('0x1bd')]&&(_0x3d2cbe[_0x4d44f1('0xf60')]=_0x26e038(_0x3d2cbe['pre'][_0x4d44f1('0x1bd')],_0x3d2cbe[_0x4d44f1('0xf60')]||'')),_0x3d2cbe;}function _0x54030a(_0x1d84eb){var _0x586b75=_0x255d35,_0x523e94=_0x31f23b(_0x586b75('0xd9'),'•',_0x586b75('0xc1'));return _0x523e94[_0x586b75('0xba3')]='\x5cu'+_0x1d84eb[_0x586b75('0x59d')](0x0)['toString'](0x10),_0x523e94[_0x586b75('0xfdc')](_0x586b75('0xd90'),_0x523e94[_0x586b75('0xba3')]),_0x523e94;}function _0x2c66c3(_0x3aac60,_0x1ca7b2,_0x4afe9f,_0x1a0a74,_0x4ba636,_0x19c62d,_0x5d0251){var _0x287e4a=_0x255d35;if(_0x1ca7b2){var _0x17095a,_0x2a28bd=_0x3aac60[_0x287e4a('0x9b7')]?function(_0xc17f21,_0x37ba35){var _0x493ac4=_0x287e4a;if(_0xc17f21[_0x493ac4('0x525')]>0x1&&!/ /[_0x493ac4('0xaac')](_0xc17f21))return _0xc17f21;for(var _0x193e90=_0x37ba35,_0xdcae33='',_0x550ef7=0x0;_0x550ef7<_0xc17f21[_0x493ac4('0x525')];_0x550ef7++){var _0x1c6884=_0xc17f21[_0x493ac4('0xc8e')](_0x550ef7);'\x20'!=_0x1c6884||!_0x193e90||_0x550ef7!=_0xc17f21['length']-0x1&&0x20!=_0xc17f21[_0x493ac4('0x59d')](_0x550ef7+0x1)||(_0x1c6884='\u00a0'),_0xdcae33+=_0x1c6884,_0x193e90='\x20'==_0x1c6884;}return _0xdcae33;}(_0x1ca7b2,_0x3aac60[_0x287e4a('0xc41')]):_0x1ca7b2,_0x3e3fa1=_0x3aac60['cm'][_0x287e4a('0xfff')][_0x287e4a('0x508')],_0x595d1c=!0x1;if(_0x3e3fa1['test'](_0x1ca7b2)){_0x17095a=document[_0x287e4a('0x74d')]();for(var _0x53b60d=0x0;;){_0x3e3fa1[_0x287e4a('0xdc')]=_0x53b60d;var _0x41edbb=_0x3e3fa1[_0x287e4a('0xd16')](_0x1ca7b2),_0x4e989f=_0x41edbb?_0x41edbb[_0x287e4a('0xf20')]-_0x53b60d:_0x1ca7b2[_0x287e4a('0x525')]-_0x53b60d;if(_0x4e989f){var _0x3aab7c=document[_0x287e4a('0xf8d')](_0x2a28bd[_0x287e4a('0xbc0')](_0x53b60d,_0x53b60d+_0x4e989f));_0x5d31d6&&_0x5275d9<0x9?_0x17095a[_0x287e4a('0x11be')](_0x31f23b(_0x287e4a('0xd9'),[_0x3aab7c])):_0x17095a[_0x287e4a('0x11be')](_0x3aab7c),_0x3aac60[_0x287e4a('0xd49')][_0x287e4a('0x8f8')](_0x3aac60[_0x287e4a('0x1121')],_0x3aac60[_0x287e4a('0x1121')]+_0x4e989f,_0x3aab7c),_0x3aac60[_0x287e4a('0x106d')]+=_0x4e989f,_0x3aac60['pos']+=_0x4e989f;}if(!_0x41edbb)break;_0x53b60d+=_0x4e989f+0x1;var _0xb853c2=void 0x0;if('\x09'==_0x41edbb[0x0]){var _0x104f3e=_0x3aac60['cm'][_0x287e4a('0x631')][_0x287e4a('0x772')],_0x19db40=_0x104f3e-_0x3aac60[_0x287e4a('0x106d')]%_0x104f3e;(_0xb853c2=_0x17095a[_0x287e4a('0x11be')](_0x31f23b(_0x287e4a('0xd9'),_0x1fed3f(_0x19db40),_0x287e4a('0x809'))))[_0x287e4a('0xfdc')](_0x287e4a('0x59e'),_0x287e4a('0x8f1')),_0xb853c2[_0x287e4a('0xfdc')](_0x287e4a('0x2c5'),'\x09'),_0x3aac60[_0x287e4a('0x106d')]+=_0x19db40;}else'\x0d'==_0x41edbb[0x0]||'\x0a'==_0x41edbb[0x0]?((_0xb853c2=_0x17095a['appendChild'](_0x31f23b(_0x287e4a('0xd9'),'\x0d'==_0x41edbb[0x0]?'␍':'␤',_0x287e4a('0xc1'))))['setAttribute'](_0x287e4a('0x2c5'),_0x41edbb[0x0]),_0x3aac60[_0x287e4a('0x106d')]+=0x1):((_0xb853c2=_0x3aac60['cm']['options']['specialCharPlaceholder'](_0x41edbb[0x0]))[_0x287e4a('0xfdc')](_0x287e4a('0x2c5'),_0x41edbb[0x0]),_0x5d31d6&&_0x5275d9<0x9?_0x17095a[_0x287e4a('0x11be')](_0x31f23b(_0x287e4a('0xd9'),[_0xb853c2])):_0x17095a[_0x287e4a('0x11be')](_0xb853c2),_0x3aac60['col']+=0x1);_0x3aac60[_0x287e4a('0xd49')][_0x287e4a('0x8f8')](_0x3aac60['pos'],_0x3aac60['pos']+0x1,_0xb853c2),_0x3aac60[_0x287e4a('0x1121')]++;}}else _0x3aac60[_0x287e4a('0x106d')]+=_0x1ca7b2[_0x287e4a('0x525')],_0x17095a=document[_0x287e4a('0xf8d')](_0x2a28bd),_0x3aac60[_0x287e4a('0xd49')][_0x287e4a('0x8f8')](_0x3aac60[_0x287e4a('0x1121')],_0x3aac60[_0x287e4a('0x1121')]+_0x1ca7b2[_0x287e4a('0x525')],_0x17095a),_0x5d31d6&&_0x5275d9<0x9&&(_0x595d1c=!0x0),_0x3aac60[_0x287e4a('0x1121')]+=_0x1ca7b2[_0x287e4a('0x525')];if(_0x3aac60['trailingSpace']=0x20==_0x2a28bd['charCodeAt'](_0x1ca7b2[_0x287e4a('0x525')]-0x1),_0x4afe9f||_0x1a0a74||_0x4ba636||_0x595d1c||_0x19c62d||_0x5d0251){var _0x48a5ff=_0x4afe9f||'';_0x1a0a74&&(_0x48a5ff+=_0x1a0a74),_0x4ba636&&(_0x48a5ff+=_0x4ba636);var _0x5733be=_0x31f23b(_0x287e4a('0xd9'),[_0x17095a],_0x48a5ff,_0x19c62d);if(_0x5d0251)for(var _0x22469e in _0x5d0251)_0x5d0251[_0x287e4a('0x100')](_0x22469e)&&_0x287e4a('0x1cd')!=_0x22469e&&_0x287e4a('0x4f7')!=_0x22469e&&_0x5733be[_0x287e4a('0xfdc')](_0x22469e,_0x5d0251[_0x22469e]);return _0x3aac60[_0x287e4a('0xd5b')]['appendChild'](_0x5733be);}_0x3aac60[_0x287e4a('0xd5b')]['appendChild'](_0x17095a);}}function _0x3e41eb(_0x27132a,_0x4f1735){return function(_0x30f348,_0x93e2aa,_0x2c969f,_0x1577e3,_0x3bbd8b,_0x130cad,_0x18df9e){var _0x109d8c=_0x3ab6;_0x2c969f=_0x2c969f?_0x2c969f+_0x109d8c('0x1017'):'cm-force-border';for(var _0x4741e9=_0x30f348['pos'],_0x52683f=_0x4741e9+_0x93e2aa['length'];;){for(var _0x500858=void 0x0,_0x521aa3=0x0;_0x521aa3<_0x4f1735[_0x109d8c('0x525')]&&!((_0x500858=_0x4f1735[_0x521aa3])['to']>_0x4741e9&&_0x500858[_0x109d8c('0x9d7')]<=_0x4741e9);_0x521aa3++);if(_0x500858['to']>=_0x52683f)return _0x27132a(_0x30f348,_0x93e2aa,_0x2c969f,_0x1577e3,_0x3bbd8b,_0x130cad,_0x18df9e);_0x27132a(_0x30f348,_0x93e2aa['slice'](0x0,_0x500858['to']-_0x4741e9),_0x2c969f,_0x1577e3,null,_0x130cad,_0x18df9e),_0x1577e3=null,_0x93e2aa=_0x93e2aa['slice'](_0x500858['to']-_0x4741e9),_0x4741e9=_0x500858['to'];}};}function _0x4eb8f4(_0x5cbb5b,_0x4600df,_0x45a201,_0x35dabb){var _0x2ae421=_0x255d35,_0x28254d=!_0x35dabb&&_0x45a201[_0x2ae421('0x362')];_0x28254d&&_0x5cbb5b[_0x2ae421('0xd49')][_0x2ae421('0x8f8')](_0x5cbb5b[_0x2ae421('0x1121')],_0x5cbb5b[_0x2ae421('0x1121')]+_0x4600df,_0x28254d),!_0x35dabb&&_0x5cbb5b['cm']['display'][_0x2ae421('0x20c')][_0x2ae421('0x470')]&&(_0x28254d||(_0x28254d=_0x5cbb5b['content'][_0x2ae421('0x11be')](document[_0x2ae421('0xd0f')](_0x2ae421('0xd9')))),_0x28254d[_0x2ae421('0xfdc')]('cm-marker',_0x45a201['id'])),_0x28254d&&(_0x5cbb5b['cm'][_0x2ae421('0x55c')]['input'][_0x2ae421('0x4de')](_0x28254d),_0x5cbb5b[_0x2ae421('0xd5b')]['appendChild'](_0x28254d)),_0x5cbb5b[_0x2ae421('0x1121')]+=_0x4600df,_0x5cbb5b[_0x2ae421('0xc41')]=!0x1;}function _0x39a5c4(_0x23d637,_0x13f9f4,_0x12a91d){var _0x5b97bc=_0x255d35,_0x436b2f=_0x23d637['markedSpans'],_0x55fd24=_0x23d637[_0x5b97bc('0x768')],_0x5e45ab=0x0;if(_0x436b2f)for(var _0x44eef1,_0x39216c,_0x4d3485,_0x1dbb91,_0x1e82a6,_0x5af503,_0x671280,_0x955515=_0x55fd24['length'],_0x227c3c=0x0,_0x145e95=0x1,_0xb3773='',_0x27ca9b=0x0;;){if(_0x27ca9b==_0x227c3c){_0x4d3485=_0x1dbb91=_0x1e82a6=_0x39216c='',_0x671280=null,_0x5af503=null,_0x27ca9b=0x1/0x0;for(var _0x5c0961=[],_0x3451ae=void 0x0,_0x12456e=0x0;_0x12456e<_0x436b2f[_0x5b97bc('0x525')];++_0x12456e){var _0x1cd1f9=_0x436b2f[_0x12456e],_0x4df286=_0x1cd1f9['marker'];if('bookmark'==_0x4df286[_0x5b97bc('0x3f7')]&&_0x1cd1f9[_0x5b97bc('0x9d7')]==_0x227c3c&&_0x4df286[_0x5b97bc('0x362')])_0x5c0961[_0x5b97bc('0x8f8')](_0x4df286);else{if(_0x1cd1f9[_0x5b97bc('0x9d7')]<=_0x227c3c&&(null==_0x1cd1f9['to']||_0x1cd1f9['to']>_0x227c3c||_0x4df286[_0x5b97bc('0x1021')]&&_0x1cd1f9['to']==_0x227c3c&&_0x1cd1f9[_0x5b97bc('0x9d7')]==_0x227c3c)){if(null!=_0x1cd1f9['to']&&_0x1cd1f9['to']!=_0x227c3c&&_0x27ca9b>_0x1cd1f9['to']&&(_0x27ca9b=_0x1cd1f9['to'],_0x1dbb91=''),_0x4df286[_0x5b97bc('0x1bd')]&&(_0x4d3485+='\x20'+_0x4df286['className']),_0x4df286['css']&&(_0x39216c=(_0x39216c?_0x39216c+';':'')+_0x4df286[_0x5b97bc('0xb7')]),_0x4df286[_0x5b97bc('0x14a')]&&_0x1cd1f9['from']==_0x227c3c&&(_0x1e82a6+='\x20'+_0x4df286[_0x5b97bc('0x14a')]),_0x4df286[_0x5b97bc('0xe6a')]&&_0x1cd1f9['to']==_0x27ca9b&&(_0x3451ae||(_0x3451ae=[]))[_0x5b97bc('0x8f8')](_0x4df286[_0x5b97bc('0xe6a')],_0x1cd1f9['to']),_0x4df286[_0x5b97bc('0xba3')]&&((_0x671280||(_0x671280={}))['title']=_0x4df286['title']),_0x4df286['attributes'])for(var _0xd50188 in _0x4df286['attributes'])(_0x671280||(_0x671280={}))[_0xd50188]=_0x4df286['attributes'][_0xd50188];_0x4df286['collapsed']&&(!_0x5af503||_0x149a47(_0x5af503[_0x5b97bc('0x85c')],_0x4df286)<0x0)&&(_0x5af503=_0x1cd1f9);}else _0x1cd1f9[_0x5b97bc('0x9d7')]>_0x227c3c&&_0x27ca9b>_0x1cd1f9[_0x5b97bc('0x9d7')]&&(_0x27ca9b=_0x1cd1f9[_0x5b97bc('0x9d7')]);}}if(_0x3451ae)for(var _0x513c3a=0x0;_0x513c3a<_0x3451ae[_0x5b97bc('0x525')];_0x513c3a+=0x2)_0x3451ae[_0x513c3a+0x1]==_0x27ca9b&&(_0x1dbb91+='\x20'+_0x3451ae[_0x513c3a]);if(!_0x5af503||_0x5af503[_0x5b97bc('0x9d7')]==_0x227c3c)for(var _0x55a2f9=0x0;_0x55a2f9<_0x5c0961['length'];++_0x55a2f9)_0x4eb8f4(_0x13f9f4,0x0,_0x5c0961[_0x55a2f9]);if(_0x5af503&&(_0x5af503['from']||0x0)==_0x227c3c){if(_0x4eb8f4(_0x13f9f4,(null==_0x5af503['to']?_0x955515+0x1:_0x5af503['to'])-_0x227c3c,_0x5af503['marker'],null==_0x5af503['from']),null==_0x5af503['to'])return;_0x5af503['to']==_0x227c3c&&(_0x5af503=!0x1);}}if(_0x227c3c>=_0x955515)break;for(var _0x2891d4=Math[_0x5b97bc('0xc0d')](_0x955515,_0x27ca9b);;){if(_0xb3773){var _0x2665e1=_0x227c3c+_0xb3773['length'];if(!_0x5af503){var _0x9968b6=_0x2665e1>_0x2891d4?_0xb3773[_0x5b97bc('0xbc0')](0x0,_0x2891d4-_0x227c3c):_0xb3773;_0x13f9f4[_0x5b97bc('0x925')](_0x13f9f4,_0x9968b6,_0x44eef1?_0x44eef1+_0x4d3485:_0x4d3485,_0x1e82a6,_0x227c3c+_0x9968b6[_0x5b97bc('0x525')]==_0x27ca9b?_0x1dbb91:'',_0x39216c,_0x671280);}if(_0x2665e1>=_0x2891d4){_0xb3773=_0xb3773['slice'](_0x2891d4-_0x227c3c),_0x227c3c=_0x2891d4;break;}_0x227c3c=_0x2665e1,_0x1e82a6='';}_0xb3773=_0x55fd24[_0x5b97bc('0xbc0')](_0x5e45ab,_0x5e45ab=_0x12a91d[_0x145e95++]),_0x44eef1=_0x5cebcf(_0x12a91d[_0x145e95++],_0x13f9f4['cm'][_0x5b97bc('0x631')]);}}else for(var _0xdd428f=0x1;_0xdd428f<_0x12a91d[_0x5b97bc('0x525')];_0xdd428f+=0x2)_0x13f9f4[_0x5b97bc('0x925')](_0x13f9f4,_0x55fd24['slice'](_0x5e45ab,_0x5e45ab=_0x12a91d[_0xdd428f]),_0x5cebcf(_0x12a91d[_0xdd428f+0x1],_0x13f9f4['cm'][_0x5b97bc('0x631')]));}function _0x6b2737(_0x6f53e5,_0x1ecb89,_0x37f04c){var _0x31e720=_0x255d35;this['line']=_0x1ecb89,this['rest']=function(_0x2477ac){var _0x26490b=_0x3ab6;for(var _0x30794e,_0x366232;_0x30794e=_0x2108ff(_0x2477ac);)_0x2477ac=_0x30794e[_0x26490b('0x6f3')](0x1,!0x0)[_0x26490b('0xde2')],(_0x366232||(_0x366232=[]))[_0x26490b('0x8f8')](_0x2477ac);return _0x366232;}(_0x1ecb89),this[_0x31e720('0x844')]=this[_0x31e720('0x981')]?_0x5ee38b(_0x15560b(this['rest']))-_0x37f04c+0x1:0x1,this['node']=this[_0x31e720('0x768')]=null,this[_0x31e720('0xdc0')]=_0x50dfd8(_0x6f53e5,_0x1ecb89);}function _0x57b04a(_0x994fd0,_0x19ddbb,_0x2eda09){var _0x47e2a3=_0x255d35;for(var _0x5eb27b,_0xe7d559=[],_0x5bd5ac=_0x19ddbb;_0x5bd5ac<_0x2eda09;_0x5bd5ac=_0x5eb27b){var _0x7bf0f6=new _0x6b2737(_0x994fd0[_0x47e2a3('0xf37')],_0x1b58dd(_0x994fd0[_0x47e2a3('0xf37')],_0x5bd5ac),_0x5bd5ac);_0x5eb27b=_0x5bd5ac+_0x7bf0f6[_0x47e2a3('0x844')],_0xe7d559[_0x47e2a3('0x8f8')](_0x7bf0f6);}return _0xe7d559;}var _0x587424=null,_0x598208=null;function _0x5470d1(_0x3e9687,_0x5934da){var _0x49e1dc=_0x255d35,_0x4b8b8e=_0x53e9dc(_0x3e9687,_0x5934da);if(_0x4b8b8e[_0x49e1dc('0x525')]){var _0x1e7332,_0x3698b3=Array[_0x49e1dc('0x98c')][_0x49e1dc('0xbc0')][_0x49e1dc('0x4b0')](arguments,0x2);_0x587424?_0x1e7332=_0x587424[_0x49e1dc('0xe19')]:_0x598208?_0x1e7332=_0x598208:(_0x1e7332=_0x598208=[],setTimeout(_0x328ff1,0x0));for(var _0x423802=function(_0x3f1895){var _0xaecf3c=_0x49e1dc;_0x1e7332[_0xaecf3c('0x8f8')](function(){var _0x31d582=_0xaecf3c;return _0x4b8b8e[_0x3f1895][_0x31d582('0x1036')](null,_0x3698b3);});},_0x43e11b=0x0;_0x43e11b<_0x4b8b8e[_0x49e1dc('0x525')];++_0x43e11b)_0x423802(_0x43e11b);}}function _0x328ff1(){var _0x284d20=_0x598208;_0x598208=null;for(var _0x39be55=0x0;_0x39be55<_0x284d20['length'];++_0x39be55)_0x284d20[_0x39be55]();}function _0x571695(_0x305e7d,_0x355dc0,_0x4c7db5,_0x6e53b4){var _0xcee48c=_0x255d35;for(var _0x50cba3=0x0;_0x50cba3<_0x355dc0['changes'][_0xcee48c('0x525')];_0x50cba3++){var _0x3a455d=_0x355dc0[_0xcee48c('0xd8f')][_0x50cba3];_0xcee48c('0x768')==_0x3a455d?_0x49b555(_0x305e7d,_0x355dc0):_0xcee48c('0x968')==_0x3a455d?_0x5565d7(_0x305e7d,_0x355dc0,_0x4c7db5,_0x6e53b4):_0xcee48c('0x4f7')==_0x3a455d?_0x35d11d(_0x305e7d,_0x355dc0):_0xcee48c('0xc4c')==_0x3a455d&&_0x3cfe0f(_0x305e7d,_0x355dc0,_0x6e53b4);}_0x355dc0[_0xcee48c('0xd8f')]=null;}function _0x1899ba(_0x8260aa){var _0xb902cf=_0x255d35;return _0x8260aa[_0xb902cf('0x5f')]==_0x8260aa[_0xb902cf('0x768')]&&(_0x8260aa['node']=_0x31f23b(_0xb902cf('0x7fc'),null,null,_0xb902cf('0xaa2')),_0x8260aa['text'][_0xb902cf('0x64')]&&_0x8260aa[_0xb902cf('0x768')][_0xb902cf('0x64')][_0xb902cf('0x1091')](_0x8260aa[_0xb902cf('0x5f')],_0x8260aa[_0xb902cf('0x768')]),_0x8260aa[_0xb902cf('0x5f')][_0xb902cf('0x11be')](_0x8260aa[_0xb902cf('0x768')]),_0x5d31d6&&_0x5275d9<0x8&&(_0x8260aa[_0xb902cf('0x5f')][_0xb902cf('0x1cd')]['zIndex']=0x2)),_0x8260aa[_0xb902cf('0x5f')];}function _0x1e8e3c(_0x413360,_0x4381c5){var _0x3d2eb7=_0x255d35,_0x277f96=_0x413360['display'][_0x3d2eb7('0xade')];return _0x277f96&&_0x277f96[_0x3d2eb7('0xde2')]==_0x4381c5[_0x3d2eb7('0xde2')]?(_0x413360['display'][_0x3d2eb7('0xade')]=null,_0x4381c5['measure']=_0x277f96[_0x3d2eb7('0xc62')],_0x277f96[_0x3d2eb7('0xdd3')]):_0x44ef53(_0x413360,_0x4381c5);}function _0x49b555(_0x34f65,_0x32a41b){var _0x45bd48=_0x255d35,_0x5a4c8e=_0x32a41b[_0x45bd48('0x768')][_0x45bd48('0x1bd')],_0x668400=_0x1e8e3c(_0x34f65,_0x32a41b);_0x32a41b[_0x45bd48('0x768')]==_0x32a41b[_0x45bd48('0x5f')]&&(_0x32a41b[_0x45bd48('0x5f')]=_0x668400[_0x45bd48('0xda6')]),_0x32a41b['text'][_0x45bd48('0x64')]['replaceChild'](_0x668400['pre'],_0x32a41b[_0x45bd48('0x768')]),_0x32a41b[_0x45bd48('0x768')]=_0x668400[_0x45bd48('0xda6')],_0x668400['bgClass']!=_0x32a41b[_0x45bd48('0x3da')]||_0x668400[_0x45bd48('0xf60')]!=_0x32a41b[_0x45bd48('0xf60')]?(_0x32a41b[_0x45bd48('0x3da')]=_0x668400[_0x45bd48('0x3da')],_0x32a41b['textClass']=_0x668400['textClass'],_0x35d11d(_0x34f65,_0x32a41b)):_0x5a4c8e&&(_0x32a41b[_0x45bd48('0x768')][_0x45bd48('0x1bd')]=_0x5a4c8e);}function _0x35d11d(_0xef211d,_0x1d8a57){var _0x31004e=_0x255d35;!function(_0x27df13,_0x11d535){var _0x190b9f=_0x3ab6,_0x1355e2=_0x11d535[_0x190b9f('0x3da')]?_0x11d535[_0x190b9f('0x3da')]+'\x20'+(_0x11d535['line'][_0x190b9f('0x3da')]||''):_0x11d535[_0x190b9f('0xde2')]['bgClass'];if(_0x1355e2&&(_0x1355e2+=_0x190b9f('0x7e5')),_0x11d535[_0x190b9f('0x9d9')])_0x1355e2?_0x11d535['background']['className']=_0x1355e2:(_0x11d535['background'][_0x190b9f('0x64')][_0x190b9f('0x75b')](_0x11d535['background']),_0x11d535[_0x190b9f('0x9d9')]=null);else{if(_0x1355e2){var _0x4b3a47=_0x1899ba(_0x11d535);_0x11d535[_0x190b9f('0x9d9')]=_0x4b3a47['insertBefore'](_0x31f23b(_0x190b9f('0x7fc'),null,_0x1355e2),_0x4b3a47[_0x190b9f('0xdfb')]),_0x27df13['display'][_0x190b9f('0x20c')][_0x190b9f('0x4de')](_0x11d535[_0x190b9f('0x9d9')]);}}}(_0xef211d,_0x1d8a57),_0x1d8a57[_0x31004e('0xde2')][_0x31004e('0x730')]?_0x1899ba(_0x1d8a57)[_0x31004e('0x1bd')]=_0x1d8a57[_0x31004e('0xde2')][_0x31004e('0x730')]:_0x1d8a57[_0x31004e('0x5f')]!=_0x1d8a57['text']&&(_0x1d8a57[_0x31004e('0x5f')]['className']='');var _0x48c2fb=_0x1d8a57[_0x31004e('0xf60')]?_0x1d8a57[_0x31004e('0xf60')]+'\x20'+(_0x1d8a57[_0x31004e('0xde2')][_0x31004e('0xf60')]||''):_0x1d8a57[_0x31004e('0xde2')][_0x31004e('0xf60')];_0x1d8a57[_0x31004e('0x768')]['className']=_0x48c2fb||'';}function _0x5565d7(_0x5a2e45,_0x7f0df9,_0x37b927,_0xd0de7d){var _0x27b70=_0x255d35;if(_0x7f0df9[_0x27b70('0x968')]&&(_0x7f0df9['node'][_0x27b70('0x75b')](_0x7f0df9[_0x27b70('0x968')]),_0x7f0df9[_0x27b70('0x968')]=null),_0x7f0df9[_0x27b70('0x1d6')]&&(_0x7f0df9['node'][_0x27b70('0x75b')](_0x7f0df9[_0x27b70('0x1d6')]),_0x7f0df9['gutterBackground']=null),_0x7f0df9['line'][_0x27b70('0xdc2')]){var _0x4950bf=_0x1899ba(_0x7f0df9);_0x7f0df9[_0x27b70('0x1d6')]=_0x31f23b(_0x27b70('0x7fc'),null,_0x27b70('0x9a9')+_0x7f0df9[_0x27b70('0xde2')]['gutterClass'],_0x27b70('0x119')+(_0x5a2e45[_0x27b70('0x631')][_0x27b70('0xe1f')]?_0xd0de7d[_0x27b70('0x862')]:-_0xd0de7d[_0x27b70('0x1003')])+_0x27b70('0xe1c')+_0xd0de7d[_0x27b70('0x1003')]+'px'),_0x5a2e45[_0x27b70('0x55c')][_0x27b70('0x20c')]['setUneditable'](_0x7f0df9[_0x27b70('0x1d6')]),_0x4950bf[_0x27b70('0x692')](_0x7f0df9[_0x27b70('0x1d6')],_0x7f0df9[_0x27b70('0x768')]);}var _0x58d9e3=_0x7f0df9['line'][_0x27b70('0x114a')];if(_0x5a2e45[_0x27b70('0x631')][_0x27b70('0x1d')]||_0x58d9e3){var _0x4d4594=_0x1899ba(_0x7f0df9),_0x51edd2=_0x7f0df9['gutter']=_0x31f23b('div',null,_0x27b70('0x47f'),_0x27b70('0x119')+(_0x5a2e45[_0x27b70('0x631')][_0x27b70('0xe1f')]?_0xd0de7d['fixedPos']:-_0xd0de7d['gutterTotalWidth'])+'px');if(_0x5a2e45[_0x27b70('0x55c')][_0x27b70('0x20c')]['setUneditable'](_0x51edd2),_0x4d4594[_0x27b70('0x692')](_0x51edd2,_0x7f0df9[_0x27b70('0x768')]),_0x7f0df9[_0x27b70('0xde2')][_0x27b70('0xdc2')]&&(_0x51edd2[_0x27b70('0x1bd')]+='\x20'+_0x7f0df9[_0x27b70('0xde2')][_0x27b70('0xdc2')]),!_0x5a2e45[_0x27b70('0x631')][_0x27b70('0x1d')]||_0x58d9e3&&_0x58d9e3[_0x27b70('0xe53')]||(_0x7f0df9[_0x27b70('0x68a')]=_0x51edd2['appendChild'](_0x31f23b(_0x27b70('0x7fc'),_0x5f1964(_0x5a2e45[_0x27b70('0x631')],_0x37b927),_0x27b70('0xca3'),'left:\x20'+_0xd0de7d['gutterLeft']['CodeMirror-linenumbers']+_0x27b70('0xe1c')+_0x5a2e45[_0x27b70('0x55c')]['lineNumInnerWidth']+'px'))),_0x58d9e3)for(var _0x57f143=0x0;_0x57f143<_0x5a2e45[_0x27b70('0x55c')][_0x27b70('0x1098')]['length'];++_0x57f143){var _0x19bf7d=_0x5a2e45[_0x27b70('0x55c')][_0x27b70('0x1098')][_0x57f143][_0x27b70('0x1bd')],_0x388214=_0x58d9e3['hasOwnProperty'](_0x19bf7d)&&_0x58d9e3[_0x19bf7d];_0x388214&&_0x51edd2['appendChild'](_0x31f23b(_0x27b70('0x7fc'),[_0x388214],_0x27b70('0xc03'),'left:\x20'+_0xd0de7d[_0x27b70('0xece')][_0x19bf7d]+_0x27b70('0xe1c')+_0xd0de7d[_0x27b70('0x725')][_0x19bf7d]+'px'));}}}function _0x3cfe0f(_0x1d2783,_0x16c169,_0x5c2688){var _0xd93646=_0x255d35;_0x16c169['alignable']&&(_0x16c169[_0xd93646('0x17f')]=null);for(var _0x4927c0=_0xf37a46(_0xd93646('0x951')),_0x2cf3f0=_0x16c169['node'][_0xd93646('0xdfb')],_0x45cd01=void 0x0;_0x2cf3f0;_0x2cf3f0=_0x45cd01)_0x45cd01=_0x2cf3f0[_0xd93646('0xd29')],_0x4927c0[_0xd93646('0xaac')](_0x2cf3f0[_0xd93646('0x1bd')])&&_0x16c169['node'][_0xd93646('0x75b')](_0x2cf3f0);_0x421c18(_0x1d2783,_0x16c169,_0x5c2688);}function _0x30a501(_0x2689ed,_0x28d6af,_0x3c61a5,_0x5888a8){var _0x48d495=_0x255d35,_0x36c949=_0x1e8e3c(_0x2689ed,_0x28d6af);return _0x28d6af[_0x48d495('0x768')]=_0x28d6af[_0x48d495('0x5f')]=_0x36c949['pre'],_0x36c949[_0x48d495('0x3da')]&&(_0x28d6af['bgClass']=_0x36c949[_0x48d495('0x3da')]),_0x36c949['textClass']&&(_0x28d6af['textClass']=_0x36c949[_0x48d495('0xf60')]),_0x35d11d(_0x2689ed,_0x28d6af),_0x5565d7(_0x2689ed,_0x28d6af,_0x3c61a5,_0x5888a8),_0x421c18(_0x2689ed,_0x28d6af,_0x5888a8),_0x28d6af[_0x48d495('0x5f')];}function _0x421c18(_0x54d4ea,_0x326858,_0x448794){var _0x7410ec=_0x255d35;if(_0x2bfcfc(_0x54d4ea,_0x326858['line'],_0x326858,_0x448794,!0x0),_0x326858[_0x7410ec('0x981')])for(var _0x17db57=0x0;_0x17db57<_0x326858[_0x7410ec('0x981')][_0x7410ec('0x525')];_0x17db57++)_0x2bfcfc(_0x54d4ea,_0x326858[_0x7410ec('0x981')][_0x17db57],_0x326858,_0x448794,!0x1);}function _0x2bfcfc(_0x11f1a4,_0x5582cc,_0x508785,_0x142016,_0x28a412){var _0x5b1da7=_0x255d35;if(_0x5582cc[_0x5b1da7('0x1067')])for(var _0x4f1f6e=_0x1899ba(_0x508785),_0x29da58=0x0,_0x3a9587=_0x5582cc['widgets'];_0x29da58<_0x3a9587[_0x5b1da7('0x525')];++_0x29da58){var _0x4d54d3=_0x3a9587[_0x29da58],_0x53c21b=_0x31f23b(_0x5b1da7('0x7fc'),[_0x4d54d3[_0x5b1da7('0x5f')]],_0x5b1da7('0x951')+(_0x4d54d3[_0x5b1da7('0x1bd')]?'\x20'+_0x4d54d3[_0x5b1da7('0x1bd')]:''));_0x4d54d3[_0x5b1da7('0xfcd')]||_0x53c21b['setAttribute']('cm-ignore-events','true'),_0x43c274(_0x4d54d3,_0x53c21b,_0x508785,_0x142016),_0x11f1a4['display']['input'][_0x5b1da7('0x4de')](_0x53c21b),_0x28a412&&_0x4d54d3[_0x5b1da7('0xc57')]?_0x4f1f6e[_0x5b1da7('0x692')](_0x53c21b,_0x508785['gutter']||_0x508785[_0x5b1da7('0x768')]):_0x4f1f6e[_0x5b1da7('0x11be')](_0x53c21b),_0x5470d1(_0x4d54d3,_0x5b1da7('0x9a4'));}}function _0x43c274(_0x47f9ba,_0x2ab250,_0x502054,_0x1e1675){var _0x412c57=_0x255d35;if(_0x47f9ba['noHScroll']){(_0x502054[_0x412c57('0x17f')]||(_0x502054['alignable']=[]))[_0x412c57('0x8f8')](_0x2ab250);var _0x32fc15=_0x1e1675[_0x412c57('0x75d')];_0x2ab250[_0x412c57('0x1cd')][_0x412c57('0xbab')]=_0x1e1675[_0x412c57('0x862')]+'px',_0x47f9ba[_0x412c57('0x24c')]||(_0x32fc15-=_0x1e1675[_0x412c57('0x1003')],_0x2ab250[_0x412c57('0x1cd')][_0x412c57('0x23d')]=_0x1e1675[_0x412c57('0x1003')]+'px'),_0x2ab250[_0x412c57('0x1cd')][_0x412c57('0xa7b')]=_0x32fc15+'px';}_0x47f9ba[_0x412c57('0x24c')]&&(_0x2ab250[_0x412c57('0x1cd')][_0x412c57('0x77f')]=0x5,_0x2ab250[_0x412c57('0x1cd')][_0x412c57('0xaa1')]=_0x412c57('0x1148'),_0x47f9ba['noHScroll']||(_0x2ab250['style'][_0x412c57('0xbeb')]=-_0x1e1675[_0x412c57('0x1003')]+'px'));}function _0xa450e4(_0xd67528){var _0x5b75ef=_0x255d35;if(null!=_0xd67528[_0x5b75ef('0x7f0')])return _0xd67528[_0x5b75ef('0x7f0')];var _0x517401=_0xd67528[_0x5b75ef('0xf37')]['cm'];if(!_0x517401)return 0x0;if(!_0x2c8c88(document[_0x5b75ef('0x98e')],_0xd67528[_0x5b75ef('0x5f')])){var _0xb7c8cb=_0x5b75ef('0x1c0');_0xd67528[_0x5b75ef('0x24c')]&&(_0xb7c8cb+=_0x5b75ef('0x9d4')+_0x517401[_0x5b75ef('0x55c')]['gutters'][_0x5b75ef('0x969')]+_0x5b75ef('0xb3d')),_0xd67528[_0x5b75ef('0x254')]&&(_0xb7c8cb+='width:\x20'+_0x517401[_0x5b75ef('0x55c')][_0x5b75ef('0x701')][_0x5b75ef('0x71a')]+_0x5b75ef('0xb3d')),_0x171d74(_0x517401[_0x5b75ef('0x55c')][_0x5b75ef('0xc62')],_0x31f23b(_0x5b75ef('0x7fc'),[_0xd67528[_0x5b75ef('0x5f')]],null,_0xb7c8cb));}return _0xd67528[_0x5b75ef('0x7f0')]=_0xd67528['node']['parentNode']['offsetHeight'];}function _0x10b106(_0x39589b,_0x211c66){var _0x4d387f=_0x255d35;for(var _0x39a3e3=_0x52f8eb(_0x211c66);_0x39a3e3!=_0x39589b['wrapper'];_0x39a3e3=_0x39a3e3[_0x4d387f('0x64')])if(!_0x39a3e3||0x1==_0x39a3e3[_0x4d387f('0xa4b')]&&_0x4d387f('0xa04')==_0x39a3e3[_0x4d387f('0x1159')](_0x4d387f('0x4e5'))||_0x39a3e3[_0x4d387f('0x64')]==_0x39589b[_0x4d387f('0x503')]&&_0x39a3e3!=_0x39589b[_0x4d387f('0xe52')])return!0x0;}function _0x6acae3(_0x3facf8){var _0xaea1ad=_0x255d35;return _0x3facf8[_0xaea1ad('0xeb2')]['offsetTop'];}function _0x3938c8(_0x299a36){var _0x315d84=_0x255d35;return _0x299a36[_0x315d84('0xe52')][_0x315d84('0x5f7')]-_0x299a36['lineSpace'][_0x315d84('0x5f7')];}function _0x3bdfce(_0x39bacb){var _0xbaa046=_0x255d35;if(_0x39bacb[_0xbaa046('0x957')])return _0x39bacb[_0xbaa046('0x957')];var _0x5306b6=_0x171d74(_0x39bacb[_0xbaa046('0xc62')],_0x31f23b(_0xbaa046('0xda6'),'x',_0xbaa046('0x10c1'))),_0x5b1dc4=window[_0xbaa046('0x182')]?window[_0xbaa046('0x182')](_0x5306b6):_0x5306b6[_0xbaa046('0xfa4')],_0x2e8856={'left':parseInt(_0x5b1dc4[_0xbaa046('0x23d')]),'right':parseInt(_0x5b1dc4['paddingRight'])};return isNaN(_0x2e8856[_0xbaa046('0xbab')])||isNaN(_0x2e8856[_0xbaa046('0x732')])||(_0x39bacb[_0xbaa046('0x957')]=_0x2e8856),_0x2e8856;}function _0x55ae2c(_0x42b7d1){var _0x264cd8=_0x255d35;return 0x32-_0x42b7d1[_0x264cd8('0x55c')][_0x264cd8('0x781')];}function _0x433d44(_0x1d4326){var _0x162854=_0x255d35;return _0x1d4326[_0x162854('0x55c')]['scroller'][_0x162854('0x71a')]-_0x55ae2c(_0x1d4326)-_0x1d4326[_0x162854('0x55c')][_0x162854('0xbad')];}function _0x5ae9f4(_0x576c7a){var _0x1b41bb=_0x255d35;return _0x576c7a['display'][_0x1b41bb('0x819')][_0x1b41bb('0x1a1')]-_0x55ae2c(_0x576c7a)-_0x576c7a[_0x1b41bb('0x55c')]['barHeight'];}function _0x4c1487(_0x3db186,_0x35fb03,_0x46cd3d){var _0x14bf73=_0x255d35;if(_0x3db186[_0x14bf73('0xde2')]==_0x35fb03)return{'map':_0x3db186[_0x14bf73('0xc62')][_0x14bf73('0xd49')],'cache':_0x3db186[_0x14bf73('0xc62')][_0x14bf73('0x1106')]};for(var _0x156362=0x0;_0x156362<_0x3db186['rest'][_0x14bf73('0x525')];_0x156362++)if(_0x3db186[_0x14bf73('0x981')][_0x156362]==_0x35fb03)return{'map':_0x3db186['measure'][_0x14bf73('0x59c')][_0x156362],'cache':_0x3db186[_0x14bf73('0xc62')][_0x14bf73('0x896')][_0x156362]};for(var _0x8d93=0x0;_0x8d93<_0x3db186[_0x14bf73('0x981')][_0x14bf73('0x525')];_0x8d93++)if(_0x5ee38b(_0x3db186[_0x14bf73('0x981')][_0x8d93])>_0x46cd3d)return{'map':_0x3db186[_0x14bf73('0xc62')][_0x14bf73('0x59c')][_0x8d93],'cache':_0x3db186['measure'][_0x14bf73('0x896')][_0x8d93],'before':!0x0};}function _0x28e0e2(_0x5c09f7,_0x2d8295,_0x533730,_0x2e937e){return _0x3320ba(_0x5c09f7,_0x5b7fb4(_0x5c09f7,_0x2d8295),_0x533730,_0x2e937e);}function _0x2e36d5(_0x2958f3,_0x943c){var _0x57a4b8=_0x255d35;if(_0x943c>=_0x2958f3[_0x57a4b8('0x55c')][_0x57a4b8('0xa36')]&&_0x943c<_0x2958f3[_0x57a4b8('0x55c')][_0x57a4b8('0xf2f')])return _0x2958f3[_0x57a4b8('0x55c')][_0x57a4b8('0x1132')][_0x44435c(_0x2958f3,_0x943c)];var _0x8a2131=_0x2958f3[_0x57a4b8('0x55c')][_0x57a4b8('0xade')];return _0x8a2131&&_0x943c>=_0x8a2131[_0x57a4b8('0x20d')]&&_0x943c<_0x8a2131[_0x57a4b8('0x20d')]+_0x8a2131['size']?_0x8a2131:void 0x0;}function _0x5b7fb4(_0x3b4ffe,_0x12864f){var _0x44698e=_0x255d35,_0x2accdd=_0x5ee38b(_0x12864f),_0x4ef208=_0x2e36d5(_0x3b4ffe,_0x2accdd);_0x4ef208&&!_0x4ef208[_0x44698e('0x768')]?_0x4ef208=null:_0x4ef208&&_0x4ef208[_0x44698e('0xd8f')]&&(_0x571695(_0x3b4ffe,_0x4ef208,_0x2accdd,_0x4c3b6f(_0x3b4ffe)),_0x3b4ffe[_0x44698e('0x10e6')][_0x44698e('0x60e')]=!0x0),_0x4ef208||(_0x4ef208=function(_0x3257df,_0x59ff7f){var _0x55e21d=_0x44698e,_0x1e21c1=_0x5ee38b(_0x59ff7f=_0x5958c7(_0x59ff7f)),_0x3bff90=_0x3257df['display'][_0x55e21d('0xade')]=new _0x6b2737(_0x3257df['doc'],_0x59ff7f,_0x1e21c1);_0x3bff90[_0x55e21d('0x20d')]=_0x1e21c1;var _0x6f70ea=_0x3bff90[_0x55e21d('0xdd3')]=_0x44ef53(_0x3257df,_0x3bff90);return _0x3bff90[_0x55e21d('0x768')]=_0x6f70ea[_0x55e21d('0xda6')],_0x171d74(_0x3257df['display'][_0x55e21d('0xa72')],_0x6f70ea[_0x55e21d('0xda6')]),_0x3bff90;}(_0x3b4ffe,_0x12864f));var _0xedd85=_0x4c1487(_0x4ef208,_0x12864f,_0x2accdd);return{'line':_0x12864f,'view':_0x4ef208,'rect':null,'map':_0xedd85[_0x44698e('0xd49')],'cache':_0xedd85['cache'],'before':_0xedd85['before'],'hasHeights':!0x1};}function _0x3320ba(_0x344a0f,_0x5189a9,_0x3ef6b6,_0x10bed9,_0x27b529){var _0x5d4565=_0x255d35;_0x5189a9['before']&&(_0x3ef6b6=-0x1);var _0x1d56a9,_0x4ada4d=_0x3ef6b6+(_0x10bed9||'');return _0x5189a9[_0x5d4565('0x1106')][_0x5d4565('0x100')](_0x4ada4d)?_0x1d56a9=_0x5189a9[_0x5d4565('0x1106')][_0x4ada4d]:(_0x5189a9['rect']||(_0x5189a9[_0x5d4565('0x3db')]=_0x5189a9['view'][_0x5d4565('0x768')][_0x5d4565('0xe75')]()),_0x5189a9[_0x5d4565('0xac3')]||(!function(_0x3a200d,_0xb6d8ce,_0x34d839){var _0x1c8941=_0x5d4565,_0x50a7ca=_0x3a200d['options'][_0x1c8941('0x5a9')],_0x421f1a=_0x50a7ca&&_0x433d44(_0x3a200d);if(!_0xb6d8ce[_0x1c8941('0xc62')][_0x1c8941('0xeb5')]||_0x50a7ca&&_0xb6d8ce[_0x1c8941('0xc62')]['width']!=_0x421f1a){var _0x1ec01d=_0xb6d8ce['measure'][_0x1c8941('0xeb5')]=[];if(_0x50a7ca){_0xb6d8ce[_0x1c8941('0xc62')]['width']=_0x421f1a;for(var _0x2082b9=_0xb6d8ce[_0x1c8941('0x768')][_0x1c8941('0xdfb')]['getClientRects'](),_0x3c249f=0x0;_0x3c249f<_0x2082b9['length']-0x1;_0x3c249f++){var _0x220f2d=_0x2082b9[_0x3c249f],_0x478ddd=_0x2082b9[_0x3c249f+0x1];Math[_0x1c8941('0x74f')](_0x220f2d[_0x1c8941('0x3a6')]-_0x478ddd['bottom'])>0x2&&_0x1ec01d[_0x1c8941('0x8f8')]((_0x220f2d[_0x1c8941('0x3a6')]+_0x478ddd[_0x1c8941('0x62d')])/0x2-_0x34d839[_0x1c8941('0x62d')]);}}_0x1ec01d[_0x1c8941('0x8f8')](_0x34d839['bottom']-_0x34d839[_0x1c8941('0x62d')]);}}(_0x344a0f,_0x5189a9['view'],_0x5189a9[_0x5d4565('0x3db')]),_0x5189a9[_0x5d4565('0xac3')]=!0x0),(_0x1d56a9=function(_0x3dd8d1,_0x1f8c35,_0x484df4,_0x51ca97){var _0x3fea97=_0x5d4565,_0x19a124,_0x1e9781=_0x51ffde(_0x1f8c35[_0x3fea97('0xd49')],_0x484df4,_0x51ca97),_0x28b389=_0x1e9781['node'],_0x2b266a=_0x1e9781[_0x3fea97('0x1045')],_0x418b26=_0x1e9781['end'],_0x9e53b3=_0x1e9781[_0x3fea97('0xdb1')];if(0x3==_0x28b389[_0x3fea97('0xa4b')]){for(var _0x5467e6=0x0;_0x5467e6<0x4;_0x5467e6++){for(;_0x2b266a&&_0xe3f05a(_0x1f8c35[_0x3fea97('0xde2')]['text'][_0x3fea97('0xc8e')](_0x1e9781['coverStart']+_0x2b266a));)--_0x2b266a;for(;_0x1e9781[_0x3fea97('0x1151')]+_0x418b26<_0x1e9781['coverEnd']&&_0xe3f05a(_0x1f8c35[_0x3fea97('0xde2')][_0x3fea97('0x768')][_0x3fea97('0xc8e')](_0x1e9781[_0x3fea97('0x1151')]+_0x418b26));)++_0x418b26;if((_0x19a124=_0x5d31d6&&_0x5275d9<0x9&&0x0==_0x2b266a&&_0x418b26==_0x1e9781[_0x3fea97('0xcdc')]-_0x1e9781[_0x3fea97('0x1151')]?_0x28b389[_0x3fea97('0x64')]['getBoundingClientRect']():_0x4ae323(_0x508a43(_0x28b389,_0x2b266a,_0x418b26)[_0x3fea97('0x6b4')](),_0x51ca97))[_0x3fea97('0xbab')]||_0x19a124[_0x3fea97('0x732')]||0x0==_0x2b266a)break;_0x418b26=_0x2b266a,_0x2b266a-=0x1,_0x9e53b3=_0x3fea97('0x732');}_0x5d31d6&&_0x5275d9<0xb&&(_0x19a124=function(_0x2f0e1f,_0x1d2ad3){var _0x9cb0a0=_0x3fea97;if(!window[_0x9cb0a0('0xd7')]||null==screen['logicalXDPI']||screen['logicalXDPI']==screen[_0x9cb0a0('0x4b4')]||!function(_0x4995f1){var _0x947135=_0x9cb0a0;if(null!=_0x5c6889)return _0x5c6889;var _0x10d645=_0x171d74(_0x4995f1,_0x31f23b(_0x947135('0xd9'),'x')),_0x591fb0=_0x10d645[_0x947135('0xe75')](),_0x104a78=_0x508a43(_0x10d645,0x0,0x1)[_0x947135('0xe75')]();return _0x5c6889=Math[_0x947135('0x74f')](_0x591fb0[_0x947135('0xbab')]-_0x104a78[_0x947135('0xbab')])>0x1;}(_0x2f0e1f))return _0x1d2ad3;var _0x406ca4=screen[_0x9cb0a0('0x6a2')]/screen[_0x9cb0a0('0x4b4')],_0x2b511b=screen['logicalYDPI']/screen[_0x9cb0a0('0x4ab')];return{'left':_0x1d2ad3[_0x9cb0a0('0xbab')]*_0x406ca4,'right':_0x1d2ad3[_0x9cb0a0('0x732')]*_0x406ca4,'top':_0x1d2ad3['top']*_0x2b511b,'bottom':_0x1d2ad3['bottom']*_0x2b511b};}(_0x3dd8d1[_0x3fea97('0x55c')][_0x3fea97('0xc62')],_0x19a124));}else{var _0x34eec6;_0x2b266a>0x0&&(_0x9e53b3=_0x51ca97=_0x3fea97('0x732')),_0x19a124=_0x3dd8d1[_0x3fea97('0x631')][_0x3fea97('0x5a9')]&&(_0x34eec6=_0x28b389[_0x3fea97('0x6b4')]())[_0x3fea97('0x525')]>0x1?_0x34eec6[_0x3fea97('0x732')==_0x51ca97?_0x34eec6['length']-0x1:0x0]:_0x28b389['getBoundingClientRect']();}if(_0x5d31d6&&_0x5275d9<0x9&&!_0x2b266a&&(!_0x19a124||!_0x19a124['left']&&!_0x19a124[_0x3fea97('0x732')])){var _0x1d7047=_0x28b389[_0x3fea97('0x64')][_0x3fea97('0x6b4')]()[0x0];_0x19a124=_0x1d7047?{'left':_0x1d7047[_0x3fea97('0xbab')],'right':_0x1d7047[_0x3fea97('0xbab')]+_0x4b4854(_0x3dd8d1[_0x3fea97('0x55c')]),'top':_0x1d7047[_0x3fea97('0x62d')],'bottom':_0x1d7047[_0x3fea97('0x3a6')]}:_0x891208;}for(var _0x2c4f5d=_0x19a124['top']-_0x1f8c35[_0x3fea97('0x3db')][_0x3fea97('0x62d')],_0x18a174=_0x19a124[_0x3fea97('0x3a6')]-_0x1f8c35[_0x3fea97('0x3db')][_0x3fea97('0x62d')],_0x347137=(_0x2c4f5d+_0x18a174)/0x2,_0x2e742e=_0x1f8c35[_0x3fea97('0x1132')]['measure'][_0x3fea97('0xeb5')],_0x5afb3b=0x0;_0x5afb3b<_0x2e742e[_0x3fea97('0x525')]-0x1&&!(_0x347137<_0x2e742e[_0x5afb3b]);_0x5afb3b++);var _0x3ff771=_0x5afb3b?_0x2e742e[_0x5afb3b-0x1]:0x0,_0x468f44=_0x2e742e[_0x5afb3b],_0x2366e6={'left':(_0x3fea97('0x732')==_0x9e53b3?_0x19a124[_0x3fea97('0x732')]:_0x19a124[_0x3fea97('0xbab')])-_0x1f8c35[_0x3fea97('0x3db')]['left'],'right':(_0x3fea97('0xbab')==_0x9e53b3?_0x19a124['left']:_0x19a124['right'])-_0x1f8c35[_0x3fea97('0x3db')][_0x3fea97('0xbab')],'top':_0x3ff771,'bottom':_0x468f44};return _0x19a124[_0x3fea97('0xbab')]||_0x19a124[_0x3fea97('0x732')]||(_0x2366e6['bogus']=!0x0),_0x3dd8d1[_0x3fea97('0x631')][_0x3fea97('0x10e3')]||(_0x2366e6[_0x3fea97('0x10d6')]=_0x2c4f5d,_0x2366e6[_0x3fea97('0x726')]=_0x18a174),_0x2366e6;}(_0x344a0f,_0x5189a9,_0x3ef6b6,_0x10bed9))[_0x5d4565('0x10fe')]||(_0x5189a9[_0x5d4565('0x1106')][_0x4ada4d]=_0x1d56a9)),{'left':_0x1d56a9[_0x5d4565('0xbab')],'right':_0x1d56a9[_0x5d4565('0x732')],'top':_0x27b529?_0x1d56a9['rtop']:_0x1d56a9[_0x5d4565('0x62d')],'bottom':_0x27b529?_0x1d56a9['rbottom']:_0x1d56a9[_0x5d4565('0x3a6')]};}var _0x49d99c,_0x891208={'left':0x0,'right':0x0,'top':0x0,'bottom':0x0};function _0x51ffde(_0x5616b8,_0x5bbb74,_0x287d09){var _0x3aba1c=_0x255d35;for(var _0x1989cf,_0x317b4e,_0x4cc007,_0x5cec0d,_0x38d0d0,_0x14e530,_0x7aec3b=0x0;_0x7aec3b<_0x5616b8[_0x3aba1c('0x525')];_0x7aec3b+=0x3)if(_0x38d0d0=_0x5616b8[_0x7aec3b],_0x14e530=_0x5616b8[_0x7aec3b+0x1],_0x5bbb74<_0x38d0d0?(_0x317b4e=0x0,_0x4cc007=0x1,_0x5cec0d=_0x3aba1c('0xbab')):_0x5bbb74<_0x14e530?_0x4cc007=(_0x317b4e=_0x5bbb74-_0x38d0d0)+0x1:(_0x7aec3b==_0x5616b8[_0x3aba1c('0x525')]-0x3||_0x5bbb74==_0x14e530&&_0x5616b8[_0x7aec3b+0x3]>_0x5bbb74)&&(_0x317b4e=(_0x4cc007=_0x14e530-_0x38d0d0)-0x1,_0x5bbb74>=_0x14e530&&(_0x5cec0d=_0x3aba1c('0x732'))),null!=_0x317b4e){if(_0x1989cf=_0x5616b8[_0x7aec3b+0x2],_0x38d0d0==_0x14e530&&_0x287d09==(_0x1989cf[_0x3aba1c('0x206')]?'left':_0x3aba1c('0x732'))&&(_0x5cec0d=_0x287d09),_0x3aba1c('0xbab')==_0x287d09&&0x0==_0x317b4e)for(;_0x7aec3b&&_0x5616b8[_0x7aec3b-0x2]==_0x5616b8[_0x7aec3b-0x3]&&_0x5616b8[_0x7aec3b-0x1][_0x3aba1c('0x206')];)_0x1989cf=_0x5616b8[0x2+(_0x7aec3b-=0x3)],_0x5cec0d=_0x3aba1c('0xbab');if(_0x3aba1c('0x732')==_0x287d09&&_0x317b4e==_0x14e530-_0x38d0d0)for(;_0x7aec3b<_0x5616b8[_0x3aba1c('0x525')]-0x3&&_0x5616b8[_0x7aec3b+0x3]==_0x5616b8[_0x7aec3b+0x4]&&!_0x5616b8[_0x7aec3b+0x5]['insertLeft'];)_0x1989cf=_0x5616b8[(_0x7aec3b+=0x3)+0x2],_0x5cec0d=_0x3aba1c('0x732');break;}return{'node':_0x1989cf,'start':_0x317b4e,'end':_0x4cc007,'collapse':_0x5cec0d,'coverStart':_0x38d0d0,'coverEnd':_0x14e530};}function _0x4ae323(_0x5ba5fb,_0xcbf09f){var _0x6e8015=_0x255d35,_0x220d5b=_0x891208;if(_0x6e8015('0xbab')==_0xcbf09f)for(var _0x33258b=0x0;_0x33258b<_0x5ba5fb[_0x6e8015('0x525')]&&(_0x220d5b=_0x5ba5fb[_0x33258b])[_0x6e8015('0xbab')]==_0x220d5b[_0x6e8015('0x732')];_0x33258b++);else for(var _0x169885=_0x5ba5fb[_0x6e8015('0x525')]-0x1;_0x169885>=0x0&&(_0x220d5b=_0x5ba5fb[_0x169885])[_0x6e8015('0xbab')]==_0x220d5b['right'];_0x169885--);return _0x220d5b;}function _0x5e26f2(_0x43393a){var _0x14119f=_0x255d35;if(_0x43393a[_0x14119f('0xc62')]&&(_0x43393a[_0x14119f('0xc62')][_0x14119f('0x1106')]={},_0x43393a['measure']['heights']=null,_0x43393a[_0x14119f('0x981')]))for(var _0x13d05=0x0;_0x13d05<_0x43393a[_0x14119f('0x981')][_0x14119f('0x525')];_0x13d05++)_0x43393a[_0x14119f('0xc62')]['caches'][_0x13d05]={};}function _0x2de8f3(_0x1a275b){var _0x42b3fd=_0x255d35;_0x1a275b['display']['externalMeasure']=null,_0x294f84(_0x1a275b[_0x42b3fd('0x55c')][_0x42b3fd('0xa72')]);for(var _0x2f172e=0x0;_0x2f172e<_0x1a275b[_0x42b3fd('0x55c')][_0x42b3fd('0x1132')][_0x42b3fd('0x525')];_0x2f172e++)_0x5e26f2(_0x1a275b[_0x42b3fd('0x55c')][_0x42b3fd('0x1132')][_0x2f172e]);}function _0xe4e52d(_0x2b4c66){var _0x1d06e3=_0x255d35;_0x2de8f3(_0x2b4c66),_0x2b4c66[_0x1d06e3('0x55c')]['cachedCharWidth']=_0x2b4c66[_0x1d06e3('0x55c')]['cachedTextHeight']=_0x2b4c66[_0x1d06e3('0x55c')]['cachedPaddingH']=null,_0x2b4c66[_0x1d06e3('0x631')][_0x1d06e3('0x5a9')]||(_0x2b4c66[_0x1d06e3('0x55c')][_0x1d06e3('0x7aa')]=!0x0),_0x2b4c66[_0x1d06e3('0x55c')][_0x1d06e3('0x50c')]=null;}function _0x368b8a(){var _0x518ba8=_0x255d35;return _0x29e781&&_0x28e6e3?-(document['body'][_0x518ba8('0xe75')]()[_0x518ba8('0xbab')]-parseInt(getComputedStyle(document[_0x518ba8('0x98e')])[_0x518ba8('0xbeb')])):window[_0x518ba8('0xbbb')]||(document[_0x518ba8('0x498')]||document['body'])[_0x518ba8('0x4ba')];}function _0x48d4c3(){var _0x4c0c7f=_0x255d35;return _0x29e781&&_0x28e6e3?-(document[_0x4c0c7f('0x98e')][_0x4c0c7f('0xe75')]()[_0x4c0c7f('0x62d')]-parseInt(getComputedStyle(document[_0x4c0c7f('0x98e')])[_0x4c0c7f('0x1049')])):window[_0x4c0c7f('0xc1a')]||(document[_0x4c0c7f('0x498')]||document[_0x4c0c7f('0x98e')])[_0x4c0c7f('0xfa1')];}function _0x5c7e0e(_0x56300e){var _0x2e3fb1=_0x255d35,_0x5e177c=0x0;if(_0x56300e[_0x2e3fb1('0x1067')])for(var _0x161b71=0x0;_0x161b71<_0x56300e[_0x2e3fb1('0x1067')][_0x2e3fb1('0x525')];++_0x161b71)_0x56300e[_0x2e3fb1('0x1067')][_0x161b71][_0x2e3fb1('0xc57')]&&(_0x5e177c+=_0xa450e4(_0x56300e['widgets'][_0x161b71]));return _0x5e177c;}function _0x87add4(_0x566b55,_0x2fa512,_0x106dd4,_0x159f33,_0x18b242){var _0x6f95b3=_0x255d35;if(!_0x18b242){var _0x325a29=_0x5c7e0e(_0x2fa512);_0x106dd4[_0x6f95b3('0x62d')]+=_0x325a29,_0x106dd4[_0x6f95b3('0x3a6')]+=_0x325a29;}if('line'==_0x159f33)return _0x106dd4;_0x159f33||(_0x159f33=_0x6f95b3('0xceb'));var _0x226f41=_0x14cc1e(_0x2fa512);if(_0x6f95b3('0xceb')==_0x159f33?_0x226f41+=_0x6acae3(_0x566b55['display']):_0x226f41-=_0x566b55[_0x6f95b3('0x55c')][_0x6f95b3('0x753')],_0x6f95b3('0x9dc')==_0x159f33||_0x6f95b3('0xd33')==_0x159f33){var _0x3fe502=_0x566b55[_0x6f95b3('0x55c')][_0x6f95b3('0xeb2')][_0x6f95b3('0xe75')]();_0x226f41+=_0x3fe502[_0x6f95b3('0x62d')]+(_0x6f95b3('0xd33')==_0x159f33?0x0:_0x48d4c3());var _0x279a63=_0x3fe502[_0x6f95b3('0xbab')]+('window'==_0x159f33?0x0:_0x368b8a());_0x106dd4[_0x6f95b3('0xbab')]+=_0x279a63,_0x106dd4[_0x6f95b3('0x732')]+=_0x279a63;}return _0x106dd4[_0x6f95b3('0x62d')]+=_0x226f41,_0x106dd4[_0x6f95b3('0x3a6')]+=_0x226f41,_0x106dd4;}function _0xdcb8b2(_0x590e26,_0x381082,_0x37d979){var _0x3193af=_0x255d35;if(_0x3193af('0x7fc')==_0x37d979)return _0x381082;var _0x529098=_0x381082[_0x3193af('0xbab')],_0x2a0675=_0x381082[_0x3193af('0x62d')];if(_0x3193af('0x9dc')==_0x37d979)_0x529098-=_0x368b8a(),_0x2a0675-=_0x48d4c3();else{if('local'==_0x37d979||!_0x37d979){var _0x33f887=_0x590e26[_0x3193af('0x55c')][_0x3193af('0x503')][_0x3193af('0xe75')]();_0x529098+=_0x33f887[_0x3193af('0xbab')],_0x2a0675+=_0x33f887[_0x3193af('0x62d')];}}var _0x2c5899=_0x590e26[_0x3193af('0x55c')][_0x3193af('0xeb2')][_0x3193af('0xe75')]();return{'left':_0x529098-_0x2c5899[_0x3193af('0xbab')],'top':_0x2a0675-_0x2c5899['top']};}function _0x5882c4(_0x11d4e5,_0x2df37e,_0x572115,_0x104f91,_0x503ae6){var _0x2d1a4f=_0x255d35;return _0x104f91||(_0x104f91=_0x1b58dd(_0x11d4e5[_0x2d1a4f('0xf37')],_0x2df37e[_0x2d1a4f('0xde2')])),_0x87add4(_0x11d4e5,_0x104f91,_0x28e0e2(_0x11d4e5,_0x104f91,_0x2df37e['ch'],_0x503ae6),_0x572115);}function _0x5dfa83(_0x50846d,_0x34240f,_0x26fadc,_0x39bb74,_0x29b49b,_0x1c22bf){var _0x214a2c=_0x255d35;function _0x13fc13(_0xf59a73,_0x45bbce){var _0x48251f=_0x3ab6,_0x5751ca=_0x3320ba(_0x50846d,_0x29b49b,_0xf59a73,_0x45bbce?_0x48251f('0x732'):_0x48251f('0xbab'),_0x1c22bf);return _0x45bbce?_0x5751ca['left']=_0x5751ca[_0x48251f('0x732')]:_0x5751ca[_0x48251f('0x732')]=_0x5751ca['left'],_0x87add4(_0x50846d,_0x39bb74,_0x5751ca,_0x26fadc);}_0x39bb74=_0x39bb74||_0x1b58dd(_0x50846d[_0x214a2c('0xf37')],_0x34240f[_0x214a2c('0xde2')]),_0x29b49b||(_0x29b49b=_0x5b7fb4(_0x50846d,_0x39bb74));var _0x4e618d=_0x3982e5(_0x39bb74,_0x50846d[_0x214a2c('0xf37')][_0x214a2c('0xd96')]),_0x531865=_0x34240f['ch'],_0x903803=_0x34240f[_0x214a2c('0x84e')];if(_0x531865>=_0x39bb74[_0x214a2c('0x768')][_0x214a2c('0x525')]?(_0x531865=_0x39bb74[_0x214a2c('0x768')][_0x214a2c('0x525')],_0x903803=_0x214a2c('0xa69')):_0x531865<=0x0&&(_0x531865=0x0,_0x903803=_0x214a2c('0x95d')),!_0x4e618d)return _0x13fc13(_0x214a2c('0xa69')==_0x903803?_0x531865-0x1:_0x531865,_0x214a2c('0xa69')==_0x903803);function _0x3177ce(_0x46fc01,_0x33605c,_0xc113f0){var _0x7b173a=_0x214a2c;return _0x13fc13(_0xc113f0?_0x46fc01-0x1:_0x46fc01,0x1==_0x4e618d[_0x33605c][_0x7b173a('0x1fe')]!=_0xc113f0);}var _0x423b3d=_0xb372fd(_0x4e618d,_0x531865,_0x903803),_0x4f932e=_0x5d9927,_0x1b306e=_0x3177ce(_0x531865,_0x423b3d,_0x214a2c('0xa69')==_0x903803);return null!=_0x4f932e&&(_0x1b306e[_0x214a2c('0x37c')]=_0x3177ce(_0x531865,_0x4f932e,_0x214a2c('0xa69')!=_0x903803)),_0x1b306e;}function _0x3609d1(_0x5aa89b,_0x4baa8c){var _0x20d7d0=_0x255d35,_0x30c53d=0x0;_0x4baa8c=_0x364c36(_0x5aa89b[_0x20d7d0('0xf37')],_0x4baa8c),_0x5aa89b[_0x20d7d0('0x631')]['lineWrapping']||(_0x30c53d=_0x4b4854(_0x5aa89b[_0x20d7d0('0x55c')])*_0x4baa8c['ch']);var _0x1cd03a=_0x1b58dd(_0x5aa89b['doc'],_0x4baa8c[_0x20d7d0('0xde2')]),_0x1fedc0=_0x14cc1e(_0x1cd03a)+_0x6acae3(_0x5aa89b[_0x20d7d0('0x55c')]);return{'left':_0x30c53d,'right':_0x30c53d,'top':_0x1fedc0,'bottom':_0x1fedc0+_0x1cd03a['height']};}function _0x58995b(_0x265555,_0x400f7b,_0x5494e5,_0x6288d3,_0x27307e){var _0x2122d2=_0x255d35,_0x55e459=_0xf7c6fb(_0x265555,_0x400f7b,_0x5494e5);return _0x55e459[_0x2122d2('0x15b')]=_0x27307e,_0x6288d3&&(_0x55e459[_0x2122d2('0xc45')]=_0x6288d3),_0x55e459;}function _0x20817a(_0x24f487,_0x39899d,_0x3b6515){var _0xfd5035=_0x255d35,_0x217eb5=_0x24f487[_0xfd5035('0xf37')];if((_0x3b6515+=_0x24f487[_0xfd5035('0x55c')][_0xfd5035('0x753')])<0x0)return _0x58995b(_0x217eb5[_0xfd5035('0xe3c')],0x0,null,-0x1,-0x1);var _0x3e3283=_0x6a7589(_0x217eb5,_0x3b6515),_0x573732=_0x217eb5['first']+_0x217eb5[_0xfd5035('0x844')]-0x1;if(_0x3e3283>_0x573732)return _0x58995b(_0x217eb5[_0xfd5035('0xe3c')]+_0x217eb5[_0xfd5035('0x844')]-0x1,_0x1b58dd(_0x217eb5,_0x573732)[_0xfd5035('0x768')][_0xfd5035('0x525')],null,0x1,0x1);_0x39899d<0x0&&(_0x39899d=0x0);for(var _0x2e2972=_0x1b58dd(_0x217eb5,_0x3e3283);;){var _0x1e4be9=_0x283d26(_0x24f487,_0x2e2972,_0x3e3283,_0x39899d,_0x3b6515),_0x4f6f2d=_0x1d32ae(_0x2e2972,_0x1e4be9['ch']+(_0x1e4be9['xRel']>0x0||_0x1e4be9['outside']>0x0?0x1:0x0));if(!_0x4f6f2d)return _0x1e4be9;var _0x4b2b10=_0x4f6f2d[_0xfd5035('0x6f3')](0x1);if(_0x4b2b10[_0xfd5035('0xde2')]==_0x3e3283)return _0x4b2b10;_0x2e2972=_0x1b58dd(_0x217eb5,_0x3e3283=_0x4b2b10['line']);}}function _0x2f5fd2(_0x93db73,_0x6aaeb7,_0x1890f8,_0x2cdb17){var _0x324297=_0x255d35;_0x2cdb17-=_0x5c7e0e(_0x6aaeb7);var _0x3075d5=_0x6aaeb7[_0x324297('0x768')][_0x324297('0x525')],_0x4e1cca=_0x3118df(function(_0x34716d){return _0x3320ba(_0x93db73,_0x1890f8,_0x34716d-0x1)['bottom']<=_0x2cdb17;},_0x3075d5,0x0);return{'begin':_0x4e1cca,'end':_0x3075d5=_0x3118df(function(_0x883898){return _0x3320ba(_0x93db73,_0x1890f8,_0x883898)['top']>_0x2cdb17;},_0x4e1cca,_0x3075d5)};}function _0x304bea(_0x40195c,_0x394031,_0x4f6253,_0x31caa8){var _0x33cd4e=_0x255d35;return _0x4f6253||(_0x4f6253=_0x5b7fb4(_0x40195c,_0x394031)),_0x2f5fd2(_0x40195c,_0x394031,_0x4f6253,_0x87add4(_0x40195c,_0x394031,_0x3320ba(_0x40195c,_0x4f6253,_0x31caa8),_0x33cd4e('0xde2'))[_0x33cd4e('0x62d')]);}function _0x570e3f(_0x534195,_0x2cc2ee,_0xdeb72d,_0x2b837e){var _0x201348=_0x255d35;return!(_0x534195[_0x201348('0x3a6')]<=_0xdeb72d)&&(_0x534195[_0x201348('0x62d')]>_0xdeb72d||(_0x2b837e?_0x534195[_0x201348('0xbab')]:_0x534195['right'])>_0x2cc2ee);}function _0x283d26(_0x146c0e,_0x2b4021,_0x1401eb,_0x26b8e9,_0x2a07da){var _0x449f6d=_0x255d35;_0x2a07da-=_0x14cc1e(_0x2b4021);var _0x1aa21d=_0x5b7fb4(_0x146c0e,_0x2b4021),_0x446770=_0x5c7e0e(_0x2b4021),_0x569205=0x0,_0x45435f=_0x2b4021['text'][_0x449f6d('0x525')],_0x3c742a=!0x0,_0x5d4b07=_0x3982e5(_0x2b4021,_0x146c0e['doc']['direction']);if(_0x5d4b07){var _0x5cc376=(_0x146c0e['options']['lineWrapping']?_0x3862ad:_0x1c36b1)(_0x146c0e,_0x2b4021,_0x1401eb,_0x1aa21d,_0x5d4b07,_0x26b8e9,_0x2a07da);_0x569205=(_0x3c742a=0x1!=_0x5cc376[_0x449f6d('0x1fe')])?_0x5cc376[_0x449f6d('0x9d7')]:_0x5cc376['to']-0x1,_0x45435f=_0x3c742a?_0x5cc376['to']:_0x5cc376[_0x449f6d('0x9d7')]-0x1;}var _0x374cc6,_0x4404cb,_0x5161ce=null,_0x319a02=null,_0x598841=_0x3118df(function(_0x1664d4){var _0x3e9624=_0x449f6d,_0x1a4b38=_0x3320ba(_0x146c0e,_0x1aa21d,_0x1664d4);return _0x1a4b38[_0x3e9624('0x62d')]+=_0x446770,_0x1a4b38[_0x3e9624('0x3a6')]+=_0x446770,!!_0x570e3f(_0x1a4b38,_0x26b8e9,_0x2a07da,!0x1)&&(_0x1a4b38[_0x3e9624('0x62d')]<=_0x2a07da&&_0x1a4b38['left']<=_0x26b8e9&&(_0x5161ce=_0x1664d4,_0x319a02=_0x1a4b38),!0x0);},_0x569205,_0x45435f),_0x37f2d=!0x1;if(_0x319a02){var _0x374a93=_0x26b8e9-_0x319a02[_0x449f6d('0xbab')]<_0x319a02[_0x449f6d('0x732')]-_0x26b8e9,_0x45b840=_0x374a93==_0x3c742a;_0x598841=_0x5161ce+(_0x45b840?0x0:0x1),_0x4404cb=_0x45b840?_0x449f6d('0x95d'):_0x449f6d('0xa69'),_0x374cc6=_0x374a93?_0x319a02[_0x449f6d('0xbab')]:_0x319a02[_0x449f6d('0x732')];}else{_0x3c742a||_0x598841!=_0x45435f&&_0x598841!=_0x569205||_0x598841++,_0x4404cb=0x0==_0x598841?_0x449f6d('0x95d'):_0x598841==_0x2b4021[_0x449f6d('0x768')][_0x449f6d('0x525')]?_0x449f6d('0xa69'):_0x3320ba(_0x146c0e,_0x1aa21d,_0x598841-(_0x3c742a?0x1:0x0))[_0x449f6d('0x3a6')]+_0x446770<=_0x2a07da==_0x3c742a?_0x449f6d('0x95d'):_0x449f6d('0xa69');var _0x45cc2a=_0x5dfa83(_0x146c0e,_0xf7c6fb(_0x1401eb,_0x598841,_0x4404cb),'line',_0x2b4021,_0x1aa21d);_0x374cc6=_0x45cc2a[_0x449f6d('0xbab')],_0x37f2d=_0x2a07da<_0x45cc2a[_0x449f6d('0x62d')]?-0x1:_0x2a07da>=_0x45cc2a[_0x449f6d('0x3a6')]?0x1:0x0;}return _0x58995b(_0x1401eb,_0x598841=_0x52274c(_0x2b4021[_0x449f6d('0x768')],_0x598841,0x1),_0x4404cb,_0x37f2d,_0x26b8e9-_0x374cc6);}function _0x1c36b1(_0x1d1912,_0x2f14a9,_0x5d70c4,_0x396119,_0x148105,_0x4c9e8d,_0x2a3da3){var _0x5d5114=_0x255d35,_0x6deed3=_0x3118df(function(_0x1c034d){var _0x21c213=_0x3ab6,_0x176cb3=_0x148105[_0x1c034d],_0x49f2d8=0x1!=_0x176cb3['level'];return _0x570e3f(_0x5dfa83(_0x1d1912,_0xf7c6fb(_0x5d70c4,_0x49f2d8?_0x176cb3['to']:_0x176cb3[_0x21c213('0x9d7')],_0x49f2d8?_0x21c213('0xa69'):_0x21c213('0x95d')),_0x21c213('0xde2'),_0x2f14a9,_0x396119),_0x4c9e8d,_0x2a3da3,!0x0);},0x0,_0x148105['length']-0x1),_0x50c30c=_0x148105[_0x6deed3];if(_0x6deed3>0x0){var _0x4a60b9=0x1!=_0x50c30c[_0x5d5114('0x1fe')],_0x15fd35=_0x5dfa83(_0x1d1912,_0xf7c6fb(_0x5d70c4,_0x4a60b9?_0x50c30c[_0x5d5114('0x9d7')]:_0x50c30c['to'],_0x4a60b9?'after':_0x5d5114('0xa69')),_0x5d5114('0xde2'),_0x2f14a9,_0x396119);_0x570e3f(_0x15fd35,_0x4c9e8d,_0x2a3da3,!0x0)&&_0x15fd35[_0x5d5114('0x62d')]>_0x2a3da3&&(_0x50c30c=_0x148105[_0x6deed3-0x1]);}return _0x50c30c;}function _0x3862ad(_0x5d85a0,_0x3ac510,_0x3ffdb1,_0x45bbdb,_0x2aa5be,_0x4d5c29,_0x1afa7c){var _0x3dc912=_0x255d35,_0x3b890b=_0x2f5fd2(_0x5d85a0,_0x3ac510,_0x45bbdb,_0x1afa7c),_0x9ba588=_0x3b890b['begin'],_0x3d2b55=_0x3b890b[_0x3dc912('0xbc6')];/\s/['test'](_0x3ac510[_0x3dc912('0x768')][_0x3dc912('0xc8e')](_0x3d2b55-0x1))&&_0x3d2b55--;for(var _0x4c9e6e=null,_0x304a77=null,_0x4f0863=0x0;_0x4f0863<_0x2aa5be['length'];_0x4f0863++){var _0x2a7975=_0x2aa5be[_0x4f0863];if(!(_0x2a7975[_0x3dc912('0x9d7')]>=_0x3d2b55||_0x2a7975['to']<=_0x9ba588)){var _0x3a2789=_0x3320ba(_0x5d85a0,_0x45bbdb,0x1!=_0x2a7975['level']?Math[_0x3dc912('0xc0d')](_0x3d2b55,_0x2a7975['to'])-0x1:Math['max'](_0x9ba588,_0x2a7975[_0x3dc912('0x9d7')]))['right'],_0x32c710=_0x3a2789<_0x4d5c29?_0x4d5c29-_0x3a2789+0x3b9aca00:_0x3a2789-_0x4d5c29;(!_0x4c9e6e||_0x304a77>_0x32c710)&&(_0x4c9e6e=_0x2a7975,_0x304a77=_0x32c710);}}return _0x4c9e6e||(_0x4c9e6e=_0x2aa5be[_0x2aa5be[_0x3dc912('0x525')]-0x1]),_0x4c9e6e['from']<_0x9ba588&&(_0x4c9e6e={'from':_0x9ba588,'to':_0x4c9e6e['to'],'level':_0x4c9e6e[_0x3dc912('0x1fe')]}),_0x4c9e6e['to']>_0x3d2b55&&(_0x4c9e6e={'from':_0x4c9e6e['from'],'to':_0x3d2b55,'level':_0x4c9e6e[_0x3dc912('0x1fe')]}),_0x4c9e6e;}function _0x37256b(_0x4a91d8){var _0x59f919=_0x255d35;if(null!=_0x4a91d8[_0x59f919('0x570')])return _0x4a91d8[_0x59f919('0x570')];if(null==_0x49d99c){_0x49d99c=_0x31f23b('pre',null,_0x59f919('0x10c1'));for(var _0x5321eb=0x0;_0x5321eb<0x31;++_0x5321eb)_0x49d99c['appendChild'](document[_0x59f919('0xf8d')]('x')),_0x49d99c[_0x59f919('0x11be')](_0x31f23b('br'));_0x49d99c['appendChild'](document[_0x59f919('0xf8d')]('x'));}_0x171d74(_0x4a91d8['measure'],_0x49d99c);var _0x58e992=_0x49d99c[_0x59f919('0x5f7')]/0x32;return _0x58e992>0x3&&(_0x4a91d8[_0x59f919('0x570')]=_0x58e992),_0x294f84(_0x4a91d8[_0x59f919('0xc62')]),_0x58e992||0x1;}function _0x4b4854(_0x24bf8d){var _0xb6919e=_0x255d35;if(null!=_0x24bf8d[_0xb6919e('0xec8')])return _0x24bf8d[_0xb6919e('0xec8')];var _0x20ee16=_0x31f23b(_0xb6919e('0xd9'),_0xb6919e('0x44e')),_0x354354=_0x31f23b(_0xb6919e('0xda6'),[_0x20ee16],'CodeMirror-line-like');_0x171d74(_0x24bf8d['measure'],_0x354354);var _0x1406a8=_0x20ee16[_0xb6919e('0xe75')](),_0x772e05=(_0x1406a8[_0xb6919e('0x732')]-_0x1406a8['left'])/0xa;return _0x772e05>0x2&&(_0x24bf8d[_0xb6919e('0xec8')]=_0x772e05),_0x772e05||0xa;}function _0x4c3b6f(_0x49b052){var _0xce6725=_0x255d35;for(var _0x5a38a5=_0x49b052['display'],_0x5ba257={},_0x27a0a9={},_0x1572b2=_0x5a38a5[_0xce6725('0x3f')][_0xce6725('0xf16')],_0x40bcf6=_0x5a38a5[_0xce6725('0x3f')][_0xce6725('0xdfb')],_0x25895b=0x0;_0x40bcf6;_0x40bcf6=_0x40bcf6[_0xce6725('0xd29')],++_0x25895b){var _0x3fb0ae=_0x49b052[_0xce6725('0x55c')][_0xce6725('0x1098')][_0x25895b][_0xce6725('0x1bd')];_0x5ba257[_0x3fb0ae]=_0x40bcf6['offsetLeft']+_0x40bcf6[_0xce6725('0xf16')]+_0x1572b2,_0x27a0a9[_0x3fb0ae]=_0x40bcf6[_0xce6725('0x71a')];}return{'fixedPos':_0x6c9063(_0x5a38a5),'gutterTotalWidth':_0x5a38a5[_0xce6725('0x3f')][_0xce6725('0x969')],'gutterLeft':_0x5ba257,'gutterWidth':_0x27a0a9,'wrapperWidth':_0x5a38a5[_0xce6725('0x701')][_0xce6725('0x71a')]};}function _0x6c9063(_0xb10452){var _0x421888=_0x255d35;return _0xb10452[_0x421888('0x819')][_0x421888('0xe75')]()[_0x421888('0xbab')]-_0xb10452[_0x421888('0x503')]['getBoundingClientRect']()[_0x421888('0xbab')];}function _0x391864(_0x4e5ee2){var _0x59a7a5=_0x255d35,_0x184d34=_0x37256b(_0x4e5ee2[_0x59a7a5('0x55c')]),_0x1d7cc1=_0x4e5ee2['options'][_0x59a7a5('0x5a9')],_0x1c6f3a=_0x1d7cc1&&Math[_0x59a7a5('0xf65')](0x5,_0x4e5ee2[_0x59a7a5('0x55c')][_0x59a7a5('0x819')]['clientWidth']/_0x4b4854(_0x4e5ee2[_0x59a7a5('0x55c')])-0x3);return function(_0x4d77c8){var _0x35024d=_0x59a7a5;if(_0x50dfd8(_0x4e5ee2[_0x35024d('0xf37')],_0x4d77c8))return 0x0;var _0x4a24aa=0x0;if(_0x4d77c8[_0x35024d('0x1067')])for(var _0x79c8bc=0x0;_0x79c8bc<_0x4d77c8[_0x35024d('0x1067')][_0x35024d('0x525')];_0x79c8bc++)_0x4d77c8['widgets'][_0x79c8bc][_0x35024d('0x7f0')]&&(_0x4a24aa+=_0x4d77c8[_0x35024d('0x1067')][_0x79c8bc][_0x35024d('0x7f0')]);return _0x1d7cc1?_0x4a24aa+(Math[_0x35024d('0x218')](_0x4d77c8[_0x35024d('0x768')][_0x35024d('0x525')]/_0x1c6f3a)||0x1)*_0x184d34:_0x4a24aa+_0x184d34;};}function _0x4df661(_0x352bf5){var _0x36e80b=_0x255d35,_0x3a0479=_0x352bf5[_0x36e80b('0xf37')],_0x424a3a=_0x391864(_0x352bf5);_0x3a0479[_0x36e80b('0x160')](function(_0x5e28d4){var _0xa7ad63=_0x36e80b,_0x1b56dd=_0x424a3a(_0x5e28d4);_0x1b56dd!=_0x5e28d4[_0xa7ad63('0x7f0')]&&_0x2e3ca8(_0x5e28d4,_0x1b56dd);});}function _0x123e5c(_0x3e67ed,_0x510898,_0x58b4b7,_0x2c702b){var _0xdd44c0=_0x255d35,_0x92555=_0x3e67ed['display'];if(!_0x58b4b7&&_0xdd44c0('0xa04')==_0x52f8eb(_0x510898)[_0xdd44c0('0x1159')](_0xdd44c0('0x229')))return null;var _0x1f422d,_0x4b05fe,_0x3a52cb=_0x92555[_0xdd44c0('0xeb2')][_0xdd44c0('0xe75')]();try{_0x1f422d=_0x510898['clientX']-_0x3a52cb['left'],_0x4b05fe=_0x510898['clientY']-_0x3a52cb[_0xdd44c0('0x62d')];}catch(_0x169b09){return null;}var _0x4afeca,_0x398060=_0x20817a(_0x3e67ed,_0x1f422d,_0x4b05fe);if(_0x2c702b&&_0x398060[_0xdd44c0('0x15b')]>0x0&&(_0x4afeca=_0x1b58dd(_0x3e67ed['doc'],_0x398060['line'])[_0xdd44c0('0x768')])[_0xdd44c0('0x525')]==_0x398060['ch']){var _0x1112e2=_0x40e2a1(_0x4afeca,_0x4afeca[_0xdd44c0('0x525')],_0x3e67ed[_0xdd44c0('0x631')][_0xdd44c0('0x772')])-_0x4afeca[_0xdd44c0('0x525')];_0x398060=_0xf7c6fb(_0x398060[_0xdd44c0('0xde2')],Math[_0xdd44c0('0xf65')](0x0,Math[_0xdd44c0('0xbbc')]((_0x1f422d-_0x3bdfce(_0x3e67ed[_0xdd44c0('0x55c')])[_0xdd44c0('0xbab')])/_0x4b4854(_0x3e67ed[_0xdd44c0('0x55c')]))-_0x1112e2));}return _0x398060;}function _0x44435c(_0x337295,_0x2c87af){var _0x2a6a21=_0x255d35;if(_0x2c87af>=_0x337295[_0x2a6a21('0x55c')][_0x2a6a21('0xf2f')])return null;if((_0x2c87af-=_0x337295[_0x2a6a21('0x55c')][_0x2a6a21('0xa36')])<0x0)return null;for(var _0x509e18=_0x337295[_0x2a6a21('0x55c')][_0x2a6a21('0x1132')],_0x4aad8b=0x0;_0x4aad8b<_0x509e18['length'];_0x4aad8b++)if((_0x2c87af-=_0x509e18[_0x4aad8b][_0x2a6a21('0x844')])<0x0)return _0x4aad8b;}function _0x18ce28(_0x78ad25,_0x375be6,_0x3db6e3,_0x3b3496){var _0x2ff5be=_0x255d35;null==_0x375be6&&(_0x375be6=_0x78ad25[_0x2ff5be('0xf37')][_0x2ff5be('0xe3c')]),null==_0x3db6e3&&(_0x3db6e3=_0x78ad25['doc'][_0x2ff5be('0xe3c')]+_0x78ad25['doc'][_0x2ff5be('0x844')]),_0x3b3496||(_0x3b3496=0x0);var _0x1ab786=_0x78ad25[_0x2ff5be('0x55c')];if(_0x3b3496&&_0x3db6e3<_0x1ab786[_0x2ff5be('0xf2f')]&&(null==_0x1ab786[_0x2ff5be('0x1079')]||_0x1ab786[_0x2ff5be('0x1079')]>_0x375be6)&&(_0x1ab786[_0x2ff5be('0x1079')]=_0x375be6),_0x78ad25[_0x2ff5be('0x10e6')][_0x2ff5be('0xe20')]=!0x0,_0x375be6>=_0x1ab786['viewTo'])_0x17b3bc&&_0x1b5165(_0x78ad25[_0x2ff5be('0xf37')],_0x375be6)<_0x1ab786['viewTo']&&_0x4937ab(_0x78ad25);else{if(_0x3db6e3<=_0x1ab786[_0x2ff5be('0xa36')])_0x17b3bc&&_0x11d985(_0x78ad25[_0x2ff5be('0xf37')],_0x3db6e3+_0x3b3496)>_0x1ab786[_0x2ff5be('0xa36')]?_0x4937ab(_0x78ad25):(_0x1ab786[_0x2ff5be('0xa36')]+=_0x3b3496,_0x1ab786['viewTo']+=_0x3b3496);else{if(_0x375be6<=_0x1ab786[_0x2ff5be('0xa36')]&&_0x3db6e3>=_0x1ab786[_0x2ff5be('0xf2f')])_0x4937ab(_0x78ad25);else{if(_0x375be6<=_0x1ab786['viewFrom']){var _0x4581fa=_0x3a4acf(_0x78ad25,_0x3db6e3,_0x3db6e3+_0x3b3496,0x1);_0x4581fa?(_0x1ab786[_0x2ff5be('0x1132')]=_0x1ab786[_0x2ff5be('0x1132')][_0x2ff5be('0xbc0')](_0x4581fa[_0x2ff5be('0xf20')]),_0x1ab786[_0x2ff5be('0xa36')]=_0x4581fa[_0x2ff5be('0x20d')],_0x1ab786['viewTo']+=_0x3b3496):_0x4937ab(_0x78ad25);}else{if(_0x3db6e3>=_0x1ab786[_0x2ff5be('0xf2f')]){var _0x1efb27=_0x3a4acf(_0x78ad25,_0x375be6,_0x375be6,-0x1);_0x1efb27?(_0x1ab786['view']=_0x1ab786[_0x2ff5be('0x1132')][_0x2ff5be('0xbc0')](0x0,_0x1efb27[_0x2ff5be('0xf20')]),_0x1ab786['viewTo']=_0x1efb27[_0x2ff5be('0x20d')]):_0x4937ab(_0x78ad25);}else{var _0x23aeb1=_0x3a4acf(_0x78ad25,_0x375be6,_0x375be6,-0x1),_0x30f01e=_0x3a4acf(_0x78ad25,_0x3db6e3,_0x3db6e3+_0x3b3496,0x1);_0x23aeb1&&_0x30f01e?(_0x1ab786[_0x2ff5be('0x1132')]=_0x1ab786[_0x2ff5be('0x1132')]['slice'](0x0,_0x23aeb1[_0x2ff5be('0xf20')])[_0x2ff5be('0x3cc')](_0x57b04a(_0x78ad25,_0x23aeb1[_0x2ff5be('0x20d')],_0x30f01e[_0x2ff5be('0x20d')]))['concat'](_0x1ab786[_0x2ff5be('0x1132')][_0x2ff5be('0xbc0')](_0x30f01e[_0x2ff5be('0xf20')])),_0x1ab786[_0x2ff5be('0xf2f')]+=_0x3b3496):_0x4937ab(_0x78ad25);}}}}}var _0x3cf20c=_0x1ab786[_0x2ff5be('0xade')];_0x3cf20c&&(_0x3db6e3<_0x3cf20c[_0x2ff5be('0x20d')]?_0x3cf20c[_0x2ff5be('0x20d')]+=_0x3b3496:_0x375be6<_0x3cf20c[_0x2ff5be('0x20d')]+_0x3cf20c[_0x2ff5be('0x844')]&&(_0x1ab786[_0x2ff5be('0xade')]=null));}function _0x59dcbc(_0x16e498,_0x36da04,_0x48657b){var _0x1bb954=_0x255d35;_0x16e498['curOp'][_0x1bb954('0xe20')]=!0x0;var _0x4ad50c=_0x16e498[_0x1bb954('0x55c')],_0x5f0f44=_0x16e498[_0x1bb954('0x55c')]['externalMeasured'];if(_0x5f0f44&&_0x36da04>=_0x5f0f44[_0x1bb954('0x20d')]&&_0x36da04<_0x5f0f44[_0x1bb954('0x20d')]+_0x5f0f44['size']&&(_0x4ad50c[_0x1bb954('0xade')]=null),!(_0x36da04<_0x4ad50c[_0x1bb954('0xa36')]||_0x36da04>=_0x4ad50c[_0x1bb954('0xf2f')])){var _0x233c94=_0x4ad50c[_0x1bb954('0x1132')][_0x44435c(_0x16e498,_0x36da04)];if(null!=_0x233c94[_0x1bb954('0x5f')]){var _0x252e51=_0x233c94[_0x1bb954('0xd8f')]||(_0x233c94[_0x1bb954('0xd8f')]=[]);-0x1==_0x3ec288(_0x252e51,_0x48657b)&&_0x252e51[_0x1bb954('0x8f8')](_0x48657b);}}}function _0x4937ab(_0x51016e){var _0x34e42d=_0x255d35;_0x51016e[_0x34e42d('0x55c')][_0x34e42d('0xa36')]=_0x51016e[_0x34e42d('0x55c')][_0x34e42d('0xf2f')]=_0x51016e[_0x34e42d('0xf37')][_0x34e42d('0xe3c')],_0x51016e[_0x34e42d('0x55c')][_0x34e42d('0x1132')]=[],_0x51016e[_0x34e42d('0x55c')][_0x34e42d('0x753')]=0x0;}function _0x3a4acf(_0x568f73,_0x442689,_0x2c0f19,_0x3d7f7d){var _0x1a611a=_0x255d35,_0x32c19c,_0x4d0ea9=_0x44435c(_0x568f73,_0x442689),_0x31157e=_0x568f73['display'][_0x1a611a('0x1132')];if(!_0x17b3bc||_0x2c0f19==_0x568f73['doc']['first']+_0x568f73[_0x1a611a('0xf37')][_0x1a611a('0x844')])return{'index':_0x4d0ea9,'lineN':_0x2c0f19};for(var _0x3f0b0d=_0x568f73['display'][_0x1a611a('0xa36')],_0xe2b166=0x0;_0xe2b166<_0x4d0ea9;_0xe2b166++)_0x3f0b0d+=_0x31157e[_0xe2b166]['size'];if(_0x3f0b0d!=_0x442689){if(_0x3d7f7d>0x0){if(_0x4d0ea9==_0x31157e[_0x1a611a('0x525')]-0x1)return null;_0x32c19c=_0x3f0b0d+_0x31157e[_0x4d0ea9][_0x1a611a('0x844')]-_0x442689,_0x4d0ea9++;}else _0x32c19c=_0x3f0b0d-_0x442689;_0x442689+=_0x32c19c,_0x2c0f19+=_0x32c19c;}for(;_0x1b5165(_0x568f73['doc'],_0x2c0f19)!=_0x2c0f19;){if(_0x4d0ea9==(_0x3d7f7d<0x0?0x0:_0x31157e[_0x1a611a('0x525')]-0x1))return null;_0x2c0f19+=_0x3d7f7d*_0x31157e[_0x4d0ea9-(_0x3d7f7d<0x0?0x1:0x0)][_0x1a611a('0x844')],_0x4d0ea9+=_0x3d7f7d;}return{'index':_0x4d0ea9,'lineN':_0x2c0f19};}function _0x364dd4(_0x525506){var _0x2e588b=_0x255d35;for(var _0x21d0c3=_0x525506['display'][_0x2e588b('0x1132')],_0x572bcf=0x0,_0x49f260=0x0;_0x49f260<_0x21d0c3[_0x2e588b('0x525')];_0x49f260++){var _0x1648f3=_0x21d0c3[_0x49f260];_0x1648f3['hidden']||_0x1648f3['node']&&!_0x1648f3['changes']||++_0x572bcf;}return _0x572bcf;}function _0x377b46(_0x2fbb53){var _0x9e4a2c=_0x255d35;_0x2fbb53['display'][_0x9e4a2c('0x20c')][_0x9e4a2c('0x512')](_0x2fbb53[_0x9e4a2c('0x55c')][_0x9e4a2c('0x20c')][_0x9e4a2c('0x930')]());}function _0x1683c4(_0x1dd905,_0x2093b5){var _0x156ab5=_0x255d35;void 0x0===_0x2093b5&&(_0x2093b5=!0x0);for(var _0x2addc0=_0x1dd905[_0x156ab5('0xf37')],_0x25c637={},_0x493a56=_0x25c637[_0x156ab5('0x114d')]=document['createDocumentFragment'](),_0x139d5e=_0x25c637[_0x156ab5('0x4a6')]=document[_0x156ab5('0x74d')](),_0x3a76c2=0x0;_0x3a76c2<_0x2addc0[_0x156ab5('0x10f6')]['ranges'][_0x156ab5('0x525')];_0x3a76c2++)if(_0x2093b5||_0x3a76c2!=_0x2addc0[_0x156ab5('0x10f6')]['primIndex']){var _0x879acd=_0x2addc0[_0x156ab5('0x10f6')][_0x156ab5('0x32')][_0x3a76c2];if(!(_0x879acd[_0x156ab5('0x9d7')]()[_0x156ab5('0xde2')]>=_0x1dd905[_0x156ab5('0x55c')][_0x156ab5('0xf2f')]||_0x879acd['to']()[_0x156ab5('0xde2')]<_0x1dd905[_0x156ab5('0x55c')][_0x156ab5('0xa36')])){var _0x21d18c=_0x879acd[_0x156ab5('0x1078')]();(_0x21d18c||_0x1dd905[_0x156ab5('0x631')][_0x156ab5('0xbf7')])&&_0x3ede5d(_0x1dd905,_0x879acd[_0x156ab5('0x5d4')],_0x493a56),_0x21d18c||_0x34c2cd(_0x1dd905,_0x879acd,_0x139d5e);}}return _0x25c637;}function _0x3ede5d(_0x30cb8b,_0x3e5f45,_0xf7213c){var _0x4fded0=_0x255d35,_0x3c9b2a=_0x5dfa83(_0x30cb8b,_0x3e5f45,_0x4fded0('0x7fc'),null,null,!_0x30cb8b[_0x4fded0('0x631')][_0x4fded0('0x10e3')]),_0x362b3f=_0xf7213c[_0x4fded0('0x11be')](_0x31f23b(_0x4fded0('0x7fc'),'\u00a0','CodeMirror-cursor'));if(_0x362b3f[_0x4fded0('0x1cd')][_0x4fded0('0xbab')]=_0x3c9b2a['left']+'px',_0x362b3f[_0x4fded0('0x1cd')][_0x4fded0('0x62d')]=_0x3c9b2a[_0x4fded0('0x62d')]+'px',_0x362b3f['style'][_0x4fded0('0x7f0')]=Math[_0x4fded0('0xf65')](0x0,_0x3c9b2a['bottom']-_0x3c9b2a[_0x4fded0('0x62d')])*_0x30cb8b['options']['cursorHeight']+'px',_0x3c9b2a[_0x4fded0('0x37c')]){var _0x41744e=_0xf7213c[_0x4fded0('0x11be')](_0x31f23b(_0x4fded0('0x7fc'),'\u00a0',_0x4fded0('0x648')));_0x41744e[_0x4fded0('0x1cd')][_0x4fded0('0x55c')]='',_0x41744e[_0x4fded0('0x1cd')][_0x4fded0('0xbab')]=_0x3c9b2a[_0x4fded0('0x37c')][_0x4fded0('0xbab')]+'px',_0x41744e[_0x4fded0('0x1cd')]['top']=_0x3c9b2a[_0x4fded0('0x37c')][_0x4fded0('0x62d')]+'px',_0x41744e['style'][_0x4fded0('0x7f0')]=0.85*(_0x3c9b2a[_0x4fded0('0x37c')][_0x4fded0('0x3a6')]-_0x3c9b2a[_0x4fded0('0x37c')]['top'])+'px';}}function _0x172eb8(_0x32685d,_0x1cec46){var _0x264bfb=_0x255d35;return _0x32685d[_0x264bfb('0x62d')]-_0x1cec46[_0x264bfb('0x62d')]||_0x32685d[_0x264bfb('0xbab')]-_0x1cec46[_0x264bfb('0xbab')];}function _0x34c2cd(_0x551e1f,_0x17b955,_0x361632){var _0x38448f=_0x255d35,_0x1e69d5=_0x551e1f[_0x38448f('0x55c')],_0x54577d=_0x551e1f[_0x38448f('0xf37')],_0x2eddb4=document[_0x38448f('0x74d')](),_0x1c760a=_0x3bdfce(_0x551e1f[_0x38448f('0x55c')]),_0x5e2c46=_0x1c760a['left'],_0x4430f1=Math['max'](_0x1e69d5[_0x38448f('0x111')],_0x433d44(_0x551e1f)-_0x1e69d5[_0x38448f('0x503')][_0x38448f('0x3fa')])-_0x1c760a[_0x38448f('0x732')],_0x31226d=_0x38448f('0xefe')==_0x54577d['direction'];function _0x167d98(_0x35c65a,_0x59921b,_0x55fd9e,_0x434599){var _0x4259e1=_0x38448f;_0x59921b<0x0&&(_0x59921b=0x0),_0x59921b=Math[_0x4259e1('0xbbc')](_0x59921b),_0x434599=Math[_0x4259e1('0xbbc')](_0x434599),_0x2eddb4[_0x4259e1('0x11be')](_0x31f23b(_0x4259e1('0x7fc'),null,'CodeMirror-selected',_0x4259e1('0x827')+_0x35c65a+'px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20top:\x20'+_0x59921b+_0x4259e1('0xe1c')+(null==_0x55fd9e?_0x4430f1-_0x35c65a:_0x55fd9e)+_0x4259e1('0x509')+(_0x434599-_0x59921b)+'px'));}function _0x356f91(_0x333669,_0x5aff94,_0x55e96e){var _0x1d8cc3=_0x38448f,_0xaaa63a,_0x7f6bf5,_0x5e7af5=_0x1b58dd(_0x54577d,_0x333669),_0x1b6914=_0x5e7af5[_0x1d8cc3('0x768')][_0x1d8cc3('0x525')];function _0x5732f3(_0x1021e1,_0x41d23d){return _0x5882c4(_0x551e1f,_0xf7c6fb(_0x333669,_0x1021e1),'div',_0x5e7af5,_0x41d23d);}function _0x5d5efa(_0xb66160,_0x318614,_0x576e4a){var _0x476a5a=_0x1d8cc3,_0x54a2c9=_0x304bea(_0x551e1f,_0x5e7af5,null,_0xb66160),_0x753ec0=_0x476a5a('0xefe')==_0x318614==('after'==_0x576e4a)?'left':_0x476a5a('0x732');return _0x5732f3('after'==_0x576e4a?_0x54a2c9[_0x476a5a('0x11b7')]:_0x54a2c9[_0x476a5a('0xbc6')]-(/\s/[_0x476a5a('0xaac')](_0x5e7af5[_0x476a5a('0x768')]['charAt'](_0x54a2c9['end']-0x1))?0x2:0x1),_0x753ec0)[_0x753ec0];}var _0x3eda13=_0x3982e5(_0x5e7af5,_0x54577d[_0x1d8cc3('0xd96')]);return function(_0x2ff6ce,_0x136443,_0x3954f2,_0x124bfe){var _0x3b2cd8=_0x1d8cc3;if(!_0x2ff6ce)return _0x124bfe(_0x136443,_0x3954f2,'ltr',0x0);for(var _0x53927f=!0x1,_0x2fc169=0x0;_0x2fc169<_0x2ff6ce[_0x3b2cd8('0x525')];++_0x2fc169){var _0x4c862e=_0x2ff6ce[_0x2fc169];(_0x4c862e[_0x3b2cd8('0x9d7')]<_0x3954f2&&_0x4c862e['to']>_0x136443||_0x136443==_0x3954f2&&_0x4c862e['to']==_0x136443)&&(_0x124bfe(Math['max'](_0x4c862e[_0x3b2cd8('0x9d7')],_0x136443),Math[_0x3b2cd8('0xc0d')](_0x4c862e['to'],_0x3954f2),0x1==_0x4c862e[_0x3b2cd8('0x1fe')]?_0x3b2cd8('0xb2f'):_0x3b2cd8('0xefe'),_0x2fc169),_0x53927f=!0x0);}_0x53927f||_0x124bfe(_0x136443,_0x3954f2,_0x3b2cd8('0xefe'));}(_0x3eda13,_0x5aff94||0x0,null==_0x55e96e?_0x1b6914:_0x55e96e,function(_0x5240e8,_0x3af9ee,_0x541c9e,_0x33b017){var _0x4b50d9=_0x1d8cc3,_0x1dbe4e=_0x4b50d9('0xefe')==_0x541c9e,_0x5c31a6=_0x5732f3(_0x5240e8,_0x1dbe4e?_0x4b50d9('0xbab'):_0x4b50d9('0x732')),_0x1a4b0a=_0x5732f3(_0x3af9ee-0x1,_0x1dbe4e?'right':_0x4b50d9('0xbab')),_0x35c78d=null==_0x5aff94&&0x0==_0x5240e8,_0x4c7d62=null==_0x55e96e&&_0x3af9ee==_0x1b6914,_0x5aee04=0x0==_0x33b017,_0xd223c6=!_0x3eda13||_0x33b017==_0x3eda13['length']-0x1;if(_0x1a4b0a[_0x4b50d9('0x62d')]-_0x5c31a6[_0x4b50d9('0x62d')]<=0x3){var _0x280583=(_0x31226d?_0x4c7d62:_0x35c78d)&&_0xd223c6,_0x2bb7dd=(_0x31226d?_0x35c78d:_0x4c7d62)&&_0x5aee04?_0x5e2c46:(_0x1dbe4e?_0x5c31a6:_0x1a4b0a)[_0x4b50d9('0xbab')],_0x2ec3cc=_0x280583?_0x4430f1:(_0x1dbe4e?_0x1a4b0a:_0x5c31a6)[_0x4b50d9('0x732')];_0x167d98(_0x2bb7dd,_0x5c31a6['top'],_0x2ec3cc-_0x2bb7dd,_0x5c31a6[_0x4b50d9('0x3a6')]);}else{var _0x2f78f4,_0xd778a2,_0x4cd714,_0x102b46;_0x1dbe4e?(_0x2f78f4=_0x31226d&&_0x35c78d&&_0x5aee04?_0x5e2c46:_0x5c31a6[_0x4b50d9('0xbab')],_0xd778a2=_0x31226d?_0x4430f1:_0x5d5efa(_0x5240e8,_0x541c9e,_0x4b50d9('0xa69')),_0x4cd714=_0x31226d?_0x5e2c46:_0x5d5efa(_0x3af9ee,_0x541c9e,_0x4b50d9('0x95d')),_0x102b46=_0x31226d&&_0x4c7d62&&_0xd223c6?_0x4430f1:_0x1a4b0a[_0x4b50d9('0x732')]):(_0x2f78f4=_0x31226d?_0x5d5efa(_0x5240e8,_0x541c9e,_0x4b50d9('0xa69')):_0x5e2c46,_0xd778a2=!_0x31226d&&_0x35c78d&&_0x5aee04?_0x4430f1:_0x5c31a6[_0x4b50d9('0x732')],_0x4cd714=!_0x31226d&&_0x4c7d62&&_0xd223c6?_0x5e2c46:_0x1a4b0a[_0x4b50d9('0xbab')],_0x102b46=_0x31226d?_0x5d5efa(_0x3af9ee,_0x541c9e,_0x4b50d9('0x95d')):_0x4430f1),_0x167d98(_0x2f78f4,_0x5c31a6[_0x4b50d9('0x62d')],_0xd778a2-_0x2f78f4,_0x5c31a6['bottom']),_0x5c31a6[_0x4b50d9('0x3a6')]<_0x1a4b0a[_0x4b50d9('0x62d')]&&_0x167d98(_0x5e2c46,_0x5c31a6[_0x4b50d9('0x3a6')],null,_0x1a4b0a[_0x4b50d9('0x62d')]),_0x167d98(_0x4cd714,_0x1a4b0a[_0x4b50d9('0x62d')],_0x102b46-_0x4cd714,_0x1a4b0a['bottom']);}(!_0xaaa63a||_0x172eb8(_0x5c31a6,_0xaaa63a)<0x0)&&(_0xaaa63a=_0x5c31a6),_0x172eb8(_0x1a4b0a,_0xaaa63a)<0x0&&(_0xaaa63a=_0x1a4b0a),(!_0x7f6bf5||_0x172eb8(_0x5c31a6,_0x7f6bf5)<0x0)&&(_0x7f6bf5=_0x5c31a6),_0x172eb8(_0x1a4b0a,_0x7f6bf5)<0x0&&(_0x7f6bf5=_0x1a4b0a);}),{'start':_0xaaa63a,'end':_0x7f6bf5};}var _0x47c21a=_0x17b955[_0x38448f('0x9d7')](),_0x5dd7fc=_0x17b955['to']();if(_0x47c21a[_0x38448f('0xde2')]==_0x5dd7fc[_0x38448f('0xde2')])_0x356f91(_0x47c21a[_0x38448f('0xde2')],_0x47c21a['ch'],_0x5dd7fc['ch']);else{var _0x27a0f5=_0x1b58dd(_0x54577d,_0x47c21a[_0x38448f('0xde2')]),_0x1a20ce=_0x1b58dd(_0x54577d,_0x5dd7fc[_0x38448f('0xde2')]),_0xa544cd=_0x5958c7(_0x27a0f5)==_0x5958c7(_0x1a20ce),_0x91cd22=_0x356f91(_0x47c21a[_0x38448f('0xde2')],_0x47c21a['ch'],_0xa544cd?_0x27a0f5[_0x38448f('0x768')][_0x38448f('0x525')]+0x1:null)[_0x38448f('0xbc6')],_0x53f2ea=_0x356f91(_0x5dd7fc[_0x38448f('0xde2')],_0xa544cd?0x0:null,_0x5dd7fc['ch'])[_0x38448f('0x1045')];_0xa544cd&&(_0x91cd22[_0x38448f('0x62d')]<_0x53f2ea[_0x38448f('0x62d')]-0x2?(_0x167d98(_0x91cd22['right'],_0x91cd22[_0x38448f('0x62d')],null,_0x91cd22[_0x38448f('0x3a6')]),_0x167d98(_0x5e2c46,_0x53f2ea[_0x38448f('0x62d')],_0x53f2ea['left'],_0x53f2ea[_0x38448f('0x3a6')])):_0x167d98(_0x91cd22[_0x38448f('0x732')],_0x91cd22['top'],_0x53f2ea[_0x38448f('0xbab')]-_0x91cd22['right'],_0x91cd22[_0x38448f('0x3a6')])),_0x91cd22[_0x38448f('0x3a6')]<_0x53f2ea['top']&&_0x167d98(_0x5e2c46,_0x91cd22[_0x38448f('0x3a6')],null,_0x53f2ea['top']);}_0x361632[_0x38448f('0x11be')](_0x2eddb4);}function _0x25de7a(_0x4f2fb){var _0xb19d2d=_0x255d35;if(_0x4f2fb[_0xb19d2d('0xfff')]['focused']){var _0x39fd75=_0x4f2fb[_0xb19d2d('0x55c')];clearInterval(_0x39fd75[_0xb19d2d('0xfe')]);var _0x560349=!0x0;_0x39fd75[_0xb19d2d('0xb4f')][_0xb19d2d('0x1cd')][_0xb19d2d('0x9c9')]='',_0x4f2fb['options'][_0xb19d2d('0x85e')]>0x0?_0x39fd75['blinker']=setInterval(function(){var _0x397f1a=_0xb19d2d;_0x4f2fb[_0x397f1a('0xa2a')]()||_0x8158a7(_0x4f2fb),_0x39fd75[_0x397f1a('0xb4f')][_0x397f1a('0x1cd')][_0x397f1a('0x9c9')]=(_0x560349=!_0x560349)?'':_0x397f1a('0xdc0');},_0x4f2fb[_0xb19d2d('0x631')][_0xb19d2d('0x85e')]):_0x4f2fb['options'][_0xb19d2d('0x85e')]<0x0&&(_0x39fd75[_0xb19d2d('0xb4f')][_0xb19d2d('0x1cd')]['visibility']=_0xb19d2d('0xdc0'));}}function _0xf3a8f1(_0x2df821){var _0x572fa7=_0x255d35;_0x2df821[_0x572fa7('0xfff')][_0x572fa7('0x19f')]||(_0x2df821[_0x572fa7('0x55c')][_0x572fa7('0x20c')][_0x572fa7('0x74b')](),_0x4a5741(_0x2df821));}function _0xac3972(_0x5d3fc9){_0x5d3fc9['state']['delayingBlurEvent']=!0x0,setTimeout(function(){var _0x2973fd=_0x3ab6;_0x5d3fc9['state'][_0x2973fd('0x2df')]&&(_0x5d3fc9[_0x2973fd('0xfff')][_0x2973fd('0x2df')]=!0x1,_0x8158a7(_0x5d3fc9));},0x64);}function _0x4a5741(_0x47272d,_0x30929f){var _0x7083ac=_0x255d35;_0x47272d[_0x7083ac('0xfff')][_0x7083ac('0x2df')]&&(_0x47272d[_0x7083ac('0xfff')][_0x7083ac('0x2df')]=!0x1),_0x7083ac('0xb44')!=_0x47272d[_0x7083ac('0x631')][_0x7083ac('0x1069')]&&(_0x47272d[_0x7083ac('0xfff')][_0x7083ac('0x19f')]||(_0x508e40(_0x47272d,_0x7083ac('0x74b'),_0x47272d,_0x30929f),_0x47272d['state'][_0x7083ac('0x19f')]=!0x0,_0x33fcac(_0x47272d[_0x7083ac('0x55c')]['wrapper'],_0x7083ac('0x207')),_0x47272d[_0x7083ac('0x10e6')]||_0x47272d['display']['selForContextMenu']==_0x47272d[_0x7083ac('0xf37')][_0x7083ac('0x10f6')]||(_0x47272d['display'][_0x7083ac('0x20c')]['reset'](),_0x153ccc&&setTimeout(function(){var _0x4bf87e=_0x7083ac;return _0x47272d[_0x4bf87e('0x55c')]['input'][_0x4bf87e('0xff3')](!0x0);},0x14)),_0x47272d[_0x7083ac('0x55c')][_0x7083ac('0x20c')]['receivedFocus']()),_0x25de7a(_0x47272d));}function _0x8158a7(_0x19a53,_0x30d7d4){var _0xfbd0ba=_0x255d35;_0x19a53[_0xfbd0ba('0xfff')][_0xfbd0ba('0x2df')]||(_0x19a53['state'][_0xfbd0ba('0x19f')]&&(_0x508e40(_0x19a53,'blur',_0x19a53,_0x30d7d4),_0x19a53['state'][_0xfbd0ba('0x19f')]=!0x1,_0x1a7f4e(_0x19a53['display'][_0xfbd0ba('0x701')],_0xfbd0ba('0x207'))),clearInterval(_0x19a53[_0xfbd0ba('0x55c')]['blinker']),setTimeout(function(){var _0x14aca5=_0xfbd0ba;_0x19a53[_0x14aca5('0xfff')][_0x14aca5('0x19f')]||(_0x19a53['display']['shift']=!0x1);},0x96));}function _0x328ad5(_0x1788c9){var _0x5af015=_0x255d35;for(var _0x2e2638=_0x1788c9[_0x5af015('0x55c')],_0x355b69=_0x2e2638[_0x5af015('0x1147')]['offsetTop'],_0xc1c753=0x0;_0xc1c753<_0x2e2638['view'][_0x5af015('0x525')];_0xc1c753++){var _0x1912ce=_0x2e2638['view'][_0xc1c753],_0x5b211b=_0x1788c9[_0x5af015('0x631')][_0x5af015('0x5a9')],_0x471d15=void 0x0,_0x200e64=0x0;if(!_0x1912ce['hidden']){if(_0x5d31d6&&_0x5275d9<0x8){var _0x1b137d=_0x1912ce[_0x5af015('0x5f')][_0x5af015('0xa6')]+_0x1912ce[_0x5af015('0x5f')][_0x5af015('0x5f7')];_0x471d15=_0x1b137d-_0x355b69,_0x355b69=_0x1b137d;}else{var _0x2b8aa7=_0x1912ce[_0x5af015('0x5f')]['getBoundingClientRect']();_0x471d15=_0x2b8aa7[_0x5af015('0x3a6')]-_0x2b8aa7[_0x5af015('0x62d')],!_0x5b211b&&_0x1912ce[_0x5af015('0x768')][_0x5af015('0xdfb')]&&(_0x200e64=_0x1912ce[_0x5af015('0x768')]['firstChild'][_0x5af015('0xe75')]()[_0x5af015('0x732')]-_0x2b8aa7[_0x5af015('0xbab')]-0x1);}var _0x3516fd=_0x1912ce['line']['height']-_0x471d15;if((_0x3516fd>0.005||_0x3516fd<-0.005)&&(_0x2e3ca8(_0x1912ce[_0x5af015('0xde2')],_0x471d15),_0x43b986(_0x1912ce[_0x5af015('0xde2')]),_0x1912ce[_0x5af015('0x981')]))for(var _0x30618f=0x0;_0x30618f<_0x1912ce[_0x5af015('0x981')][_0x5af015('0x525')];_0x30618f++)_0x43b986(_0x1912ce[_0x5af015('0x981')][_0x30618f]);if(_0x200e64>_0x1788c9['display']['sizerWidth']){var _0x4ab03d=Math['ceil'](_0x200e64/_0x4b4854(_0x1788c9[_0x5af015('0x55c')]));_0x4ab03d>_0x1788c9[_0x5af015('0x55c')]['maxLineLength']&&(_0x1788c9['display'][_0x5af015('0x804')]=_0x4ab03d,_0x1788c9[_0x5af015('0x55c')]['maxLine']=_0x1912ce[_0x5af015('0xde2')],_0x1788c9[_0x5af015('0x55c')]['maxLineChanged']=!0x0);}}}}function _0x43b986(_0x29d097){var _0x45c024=_0x255d35;if(_0x29d097[_0x45c024('0x1067')])for(var _0x24540b=0x0;_0x24540b<_0x29d097[_0x45c024('0x1067')]['length'];++_0x24540b){var _0x24c62e=_0x29d097[_0x45c024('0x1067')][_0x24540b],_0x349256=_0x24c62e['node'][_0x45c024('0x64')];_0x349256&&(_0x24c62e[_0x45c024('0x7f0')]=_0x349256[_0x45c024('0x5f7')]);}}function _0xf0195a(_0x4dc489,_0x1619a9,_0x21c969){var _0x13b271=_0x255d35,_0x4a1b93=_0x21c969&&null!=_0x21c969[_0x13b271('0x62d')]?Math[_0x13b271('0xf65')](0x0,_0x21c969['top']):_0x4dc489[_0x13b271('0x819')]['scrollTop'];_0x4a1b93=Math['floor'](_0x4a1b93-_0x6acae3(_0x4dc489));var _0x580e7f=_0x21c969&&null!=_0x21c969[_0x13b271('0x3a6')]?_0x21c969['bottom']:_0x4a1b93+_0x4dc489[_0x13b271('0x701')][_0x13b271('0x1a1')],_0x549aaf=_0x6a7589(_0x1619a9,_0x4a1b93),_0x2960e2=_0x6a7589(_0x1619a9,_0x580e7f);if(_0x21c969&&_0x21c969['ensure']){var _0x13b4e9=_0x21c969[_0x13b271('0xb7d')][_0x13b271('0x9d7')][_0x13b271('0xde2')],_0x5601ee=_0x21c969[_0x13b271('0xb7d')]['to'][_0x13b271('0xde2')];_0x13b4e9<_0x549aaf?(_0x549aaf=_0x13b4e9,_0x2960e2=_0x6a7589(_0x1619a9,_0x14cc1e(_0x1b58dd(_0x1619a9,_0x13b4e9))+_0x4dc489[_0x13b271('0x701')][_0x13b271('0x1a1')])):Math[_0x13b271('0xc0d')](_0x5601ee,_0x1619a9['lastLine']())>=_0x2960e2&&(_0x549aaf=_0x6a7589(_0x1619a9,_0x14cc1e(_0x1b58dd(_0x1619a9,_0x5601ee))-_0x4dc489[_0x13b271('0x701')][_0x13b271('0x1a1')]),_0x2960e2=_0x5601ee);}return{'from':_0x549aaf,'to':Math[_0x13b271('0xf65')](_0x2960e2,_0x549aaf+0x1)};}function _0x50a969(_0x4b1e6f,_0x23b42f){var _0x5838dc=_0x255d35,_0x38a7d1=_0x4b1e6f['display'],_0x51ddf8=_0x37256b(_0x4b1e6f['display']);_0x23b42f['top']<0x0&&(_0x23b42f['top']=0x0);var _0x1ddd8c=_0x4b1e6f[_0x5838dc('0x10e6')]&&null!=_0x4b1e6f[_0x5838dc('0x10e6')]['scrollTop']?_0x4b1e6f['curOp'][_0x5838dc('0xfa1')]:_0x38a7d1[_0x5838dc('0x819')][_0x5838dc('0xfa1')],_0x5802a5=_0x5ae9f4(_0x4b1e6f),_0x9b0ef={};_0x23b42f[_0x5838dc('0x3a6')]-_0x23b42f[_0x5838dc('0x62d')]>_0x5802a5&&(_0x23b42f[_0x5838dc('0x3a6')]=_0x23b42f[_0x5838dc('0x62d')]+_0x5802a5);var _0x14b97e=_0x4b1e6f[_0x5838dc('0xf37')][_0x5838dc('0x7f0')]+_0x3938c8(_0x38a7d1),_0x44b0e6=_0x23b42f['top']<_0x51ddf8,_0x4410f2=_0x23b42f[_0x5838dc('0x3a6')]>_0x14b97e-_0x51ddf8;if(_0x23b42f[_0x5838dc('0x62d')]<_0x1ddd8c)_0x9b0ef['scrollTop']=_0x44b0e6?0x0:_0x23b42f[_0x5838dc('0x62d')];else{if(_0x23b42f[_0x5838dc('0x3a6')]>_0x1ddd8c+_0x5802a5){var _0x371647=Math[_0x5838dc('0xc0d')](_0x23b42f[_0x5838dc('0x62d')],(_0x4410f2?_0x14b97e:_0x23b42f[_0x5838dc('0x3a6')])-_0x5802a5);_0x371647!=_0x1ddd8c&&(_0x9b0ef[_0x5838dc('0xfa1')]=_0x371647);}}var _0x458596=_0x4b1e6f['curOp']&&null!=_0x4b1e6f[_0x5838dc('0x10e6')]['scrollLeft']?_0x4b1e6f[_0x5838dc('0x10e6')]['scrollLeft']:_0x38a7d1['scroller'][_0x5838dc('0x4ba')],_0xfb639f=_0x433d44(_0x4b1e6f)-(_0x4b1e6f[_0x5838dc('0x631')]['fixedGutter']?_0x38a7d1[_0x5838dc('0x3f')][_0x5838dc('0x969')]:0x0),_0x4062df=_0x23b42f[_0x5838dc('0x732')]-_0x23b42f[_0x5838dc('0xbab')]>_0xfb639f;return _0x4062df&&(_0x23b42f[_0x5838dc('0x732')]=_0x23b42f[_0x5838dc('0xbab')]+_0xfb639f),_0x23b42f[_0x5838dc('0xbab')]<0xa?_0x9b0ef['scrollLeft']=0x0:_0x23b42f[_0x5838dc('0xbab')]<_0x458596?_0x9b0ef[_0x5838dc('0x4ba')]=Math[_0x5838dc('0xf65')](0x0,_0x23b42f['left']-(_0x4062df?0x0:0xa)):_0x23b42f[_0x5838dc('0x732')]>_0xfb639f+_0x458596-0x3&&(_0x9b0ef['scrollLeft']=_0x23b42f[_0x5838dc('0x732')]+(_0x4062df?0x0:0xa)-_0xfb639f),_0x9b0ef;}function _0x384cc0(_0x37dfdc,_0x83701f){var _0x10d895=_0x255d35;null!=_0x83701f&&(_0x28d27a(_0x37dfdc),_0x37dfdc[_0x10d895('0x10e6')][_0x10d895('0xfa1')]=(null==_0x37dfdc[_0x10d895('0x10e6')][_0x10d895('0xfa1')]?_0x37dfdc[_0x10d895('0xf37')][_0x10d895('0xfa1')]:_0x37dfdc[_0x10d895('0x10e6')][_0x10d895('0xfa1')])+_0x83701f);}function _0x515b9d(_0x67d8f7){var _0x13b321=_0x255d35;_0x28d27a(_0x67d8f7);var _0x28ccde=_0x67d8f7[_0x13b321('0xd42')]();_0x67d8f7['curOp']['scrollToPos']={'from':_0x28ccde,'to':_0x28ccde,'margin':_0x67d8f7[_0x13b321('0x631')][_0x13b321('0x593')]};}function _0x5c8645(_0x5bc5ee,_0x454541,_0x57868b){var _0x96eb9e=_0x255d35;null==_0x454541&&null==_0x57868b||_0x28d27a(_0x5bc5ee),null!=_0x454541&&(_0x5bc5ee[_0x96eb9e('0x10e6')][_0x96eb9e('0x4ba')]=_0x454541),null!=_0x57868b&&(_0x5bc5ee[_0x96eb9e('0x10e6')][_0x96eb9e('0xfa1')]=_0x57868b);}function _0x28d27a(_0x184e81){var _0x29969e=_0x255d35,_0x475573=_0x184e81[_0x29969e('0x10e6')][_0x29969e('0x8a2')];_0x475573&&(_0x184e81[_0x29969e('0x10e6')]['scrollToPos']=null,_0x641209(_0x184e81,_0x3609d1(_0x184e81,_0x475573[_0x29969e('0x9d7')]),_0x3609d1(_0x184e81,_0x475573['to']),_0x475573['margin']));}function _0x641209(_0xe7c157,_0x3967e1,_0x167f11,_0x4cedb2){var _0x562a05=_0x255d35,_0x5ce7c8=_0x50a969(_0xe7c157,{'left':Math['min'](_0x3967e1[_0x562a05('0xbab')],_0x167f11[_0x562a05('0xbab')]),'top':Math[_0x562a05('0xc0d')](_0x3967e1[_0x562a05('0x62d')],_0x167f11[_0x562a05('0x62d')])-_0x4cedb2,'right':Math['max'](_0x3967e1[_0x562a05('0x732')],_0x167f11[_0x562a05('0x732')]),'bottom':Math['max'](_0x3967e1[_0x562a05('0x3a6')],_0x167f11[_0x562a05('0x3a6')])+_0x4cedb2});_0x5c8645(_0xe7c157,_0x5ce7c8[_0x562a05('0x4ba')],_0x5ce7c8[_0x562a05('0xfa1')]);}function _0x2c9df2(_0x5f1442,_0x142f1c){var _0x4a5cb4=_0x255d35;Math['abs'](_0x5f1442[_0x4a5cb4('0xf37')][_0x4a5cb4('0xfa1')]-_0x142f1c)<0x2||(_0x3505d1||_0x2b6c6f(_0x5f1442,{'top':_0x142f1c}),_0x5e6d3e(_0x5f1442,_0x142f1c,!0x0),_0x3505d1&&_0x2b6c6f(_0x5f1442),_0x7dbcb2(_0x5f1442,0x64));}function _0x5e6d3e(_0x1548cb,_0x3fce76,_0x550927){var _0x299976=_0x255d35;_0x3fce76=Math[_0x299976('0xf65')](0x0,Math[_0x299976('0xc0d')](_0x1548cb['display'][_0x299976('0x819')][_0x299976('0xc10')]-_0x1548cb[_0x299976('0x55c')][_0x299976('0x819')][_0x299976('0x1a1')],_0x3fce76)),(_0x1548cb[_0x299976('0x55c')][_0x299976('0x819')]['scrollTop']!=_0x3fce76||_0x550927)&&(_0x1548cb[_0x299976('0xf37')][_0x299976('0xfa1')]=_0x3fce76,_0x1548cb[_0x299976('0x55c')]['scrollbars'][_0x299976('0x1bc')](_0x3fce76),_0x1548cb['display'][_0x299976('0x819')]['scrollTop']!=_0x3fce76&&(_0x1548cb[_0x299976('0x55c')]['scroller'][_0x299976('0xfa1')]=_0x3fce76));}function _0x33a7d6(_0x360bc4,_0x2b166d,_0x43355c,_0x144b8d){var _0x4db815=_0x255d35;_0x2b166d=Math[_0x4db815('0xf65')](0x0,Math[_0x4db815('0xc0d')](_0x2b166d,_0x360bc4[_0x4db815('0x55c')][_0x4db815('0x819')][_0x4db815('0x1a7')]-_0x360bc4[_0x4db815('0x55c')]['scroller'][_0x4db815('0x71a')])),(_0x43355c?_0x2b166d==_0x360bc4[_0x4db815('0xf37')]['scrollLeft']:Math[_0x4db815('0x74f')](_0x360bc4[_0x4db815('0xf37')][_0x4db815('0x4ba')]-_0x2b166d)<0x2)&&!_0x144b8d||(_0x360bc4[_0x4db815('0xf37')]['scrollLeft']=_0x2b166d,_0x21285d(_0x360bc4),_0x360bc4[_0x4db815('0x55c')][_0x4db815('0x819')][_0x4db815('0x4ba')]!=_0x2b166d&&(_0x360bc4[_0x4db815('0x55c')][_0x4db815('0x819')][_0x4db815('0x4ba')]=_0x2b166d),_0x360bc4['display'][_0x4db815('0xab0')][_0x4db815('0x66b')](_0x2b166d));}function _0x1f296d(_0x30d28e){var _0x705000=_0x255d35,_0x2c7b74=_0x30d28e[_0x705000('0x55c')],_0x2fca91=_0x2c7b74[_0x705000('0x3f')][_0x705000('0x969')],_0x267822=Math[_0x705000('0xbbc')](_0x30d28e[_0x705000('0xf37')][_0x705000('0x7f0')]+_0x3938c8(_0x30d28e['display']));return{'clientHeight':_0x2c7b74['scroller'][_0x705000('0x1a1')],'viewHeight':_0x2c7b74[_0x705000('0x701')][_0x705000('0x1a1')],'scrollWidth':_0x2c7b74[_0x705000('0x819')][_0x705000('0x1a7')],'clientWidth':_0x2c7b74['scroller'][_0x705000('0x71a')],'viewWidth':_0x2c7b74['wrapper']['clientWidth'],'barLeft':_0x30d28e['options'][_0x705000('0xe1f')]?_0x2fca91:0x0,'docHeight':_0x267822,'scrollHeight':_0x267822+_0x55ae2c(_0x30d28e)+_0x2c7b74[_0x705000('0xc0c')],'nativeBarWidth':_0x2c7b74[_0x705000('0x781')],'gutterWidth':_0x2fca91};}var _0x3c0625=function(_0x3ed981,_0x3a5314,_0xec9093){var _0x4a85ef=_0x255d35;this['cm']=_0xec9093;var _0x142661=this[_0x4a85ef('0xa90')]=_0x31f23b('div',[_0x31f23b('div',null,null,_0x4a85ef('0x687'))],'CodeMirror-vscrollbar'),_0x39fac6=this[_0x4a85ef('0xed5')]=_0x31f23b(_0x4a85ef('0x7fc'),[_0x31f23b(_0x4a85ef('0x7fc'),null,null,_0x4a85ef('0x250'))],_0x4a85ef('0x293'));_0x142661[_0x4a85ef('0x322')]=_0x39fac6['tabIndex']=-0x1,_0x3ed981(_0x142661),_0x3ed981(_0x39fac6),_0x407bf3(_0x142661,_0x4a85ef('0x9a'),function(){_0x142661['clientHeight']&&_0x3a5314(_0x142661['scrollTop'],'vertical');}),_0x407bf3(_0x39fac6,_0x4a85ef('0x9a'),function(){var _0x38b01d=_0x4a85ef;_0x39fac6[_0x38b01d('0x71a')]&&_0x3a5314(_0x39fac6[_0x38b01d('0x4ba')],_0x38b01d('0xde3'));}),this['checkedZeroWidth']=!0x1,_0x5d31d6&&_0x5275d9<0x8&&(this[_0x4a85ef('0xed5')]['style'][_0x4a85ef('0x955')]=this[_0x4a85ef('0xa90')][_0x4a85ef('0x1cd')][_0x4a85ef('0xc6')]=_0x4a85ef('0x16f'));};_0x3c0625[_0x255d35('0x98c')]['update']=function(_0x2cd530){var _0x520cb4=_0x255d35,_0x24fb11=_0x2cd530[_0x520cb4('0x1a7')]>_0x2cd530['clientWidth']+0x1,_0x2138f6=_0x2cd530[_0x520cb4('0xc10')]>_0x2cd530['clientHeight']+0x1,_0xa574f2=_0x2cd530[_0x520cb4('0x781')];if(_0x2138f6){this[_0x520cb4('0xa90')]['style'][_0x520cb4('0x55c')]=_0x520cb4('0xa52'),this[_0x520cb4('0xa90')][_0x520cb4('0x1cd')][_0x520cb4('0x3a6')]=_0x24fb11?_0xa574f2+'px':'0';var _0x5308d0=_0x2cd530[_0x520cb4('0x7b8')]-(_0x24fb11?_0xa574f2:0x0);this[_0x520cb4('0xa90')][_0x520cb4('0xdfb')]['style']['height']=Math[_0x520cb4('0xf65')](0x0,_0x2cd530['scrollHeight']-_0x2cd530['clientHeight']+_0x5308d0)+'px';}else this[_0x520cb4('0xa90')][_0x520cb4('0x1cd')]['display']='',this[_0x520cb4('0xa90')]['firstChild'][_0x520cb4('0x1cd')]['height']='0';if(_0x24fb11){this['horiz'][_0x520cb4('0x1cd')][_0x520cb4('0x55c')]='block',this[_0x520cb4('0xed5')][_0x520cb4('0x1cd')][_0x520cb4('0x732')]=_0x2138f6?_0xa574f2+'px':'0',this[_0x520cb4('0xed5')][_0x520cb4('0x1cd')][_0x520cb4('0xbab')]=_0x2cd530['barLeft']+'px';var _0x5e2e0e=_0x2cd530[_0x520cb4('0x2e0')]-_0x2cd530[_0x520cb4('0xb45')]-(_0x2138f6?_0xa574f2:0x0);this[_0x520cb4('0xed5')][_0x520cb4('0xdfb')]['style']['width']=Math[_0x520cb4('0xf65')](0x0,_0x2cd530['scrollWidth']-_0x2cd530[_0x520cb4('0x71a')]+_0x5e2e0e)+'px';}else this['horiz'][_0x520cb4('0x1cd')][_0x520cb4('0x55c')]='',this['horiz'][_0x520cb4('0xdfb')][_0x520cb4('0x1cd')][_0x520cb4('0xa7b')]='0';return!this[_0x520cb4('0xad9')]&&_0x2cd530[_0x520cb4('0x1a1')]>0x0&&(0x0==_0xa574f2&&this[_0x520cb4('0x73b')](),this[_0x520cb4('0xad9')]=!0x0),{'right':_0x2138f6?_0xa574f2:0x0,'bottom':_0x24fb11?_0xa574f2:0x0};},_0x3c0625[_0x255d35('0x98c')]['setScrollLeft']=function(_0x4974cb){var _0x13c245=_0x255d35;this[_0x13c245('0xed5')][_0x13c245('0x4ba')]!=_0x4974cb&&(this[_0x13c245('0xed5')][_0x13c245('0x4ba')]=_0x4974cb),this['disableHoriz']&&this[_0x13c245('0xaed')](this[_0x13c245('0xed5')],this[_0x13c245('0x10ea')],'horiz');},_0x3c0625[_0x255d35('0x98c')][_0x255d35('0x1bc')]=function(_0x5d2512){var _0x1bd43f=_0x255d35;this[_0x1bd43f('0xa90')][_0x1bd43f('0xfa1')]!=_0x5d2512&&(this['vert'][_0x1bd43f('0xfa1')]=_0x5d2512),this[_0x1bd43f('0x1c')]&&this[_0x1bd43f('0xaed')](this[_0x1bd43f('0xa90')],this['disableVert'],_0x1bd43f('0xa90'));},_0x3c0625[_0x255d35('0x98c')][_0x255d35('0x73b')]=function(){var _0x2fba74=_0x255d35,_0x965df8=_0x2841f0&&!_0x2cabb8?_0x2fba74('0xa5a'):_0x2fba74('0x16f');this[_0x2fba74('0xed5')][_0x2fba74('0x1cd')][_0x2fba74('0x7f0')]=this[_0x2fba74('0xa90')][_0x2fba74('0x1cd')][_0x2fba74('0xa7b')]=_0x965df8,this[_0x2fba74('0xed5')]['style'][_0x2fba74('0x1134')]=this[_0x2fba74('0xa90')]['style'][_0x2fba74('0x1134')]=_0x2fba74('0x1c1'),this['disableHoriz']=new _0x1d1618(),this[_0x2fba74('0x1c')]=new _0x1d1618();},_0x3c0625[_0x255d35('0x98c')][_0x255d35('0xaed')]=function(_0x5658de,_0x31f53c,_0x373119){var _0x1446f8=_0x255d35;_0x5658de[_0x1446f8('0x1cd')][_0x1446f8('0x1134')]=_0x1446f8('0x18'),_0x31f53c['set'](0x3e8,function _0x5abc92(){var _0x4151af=_0x1446f8,_0x238853=_0x5658de[_0x4151af('0xe75')]();(_0x4151af('0xa90')==_0x373119?document['elementFromPoint'](_0x238853[_0x4151af('0x732')]-0x1,(_0x238853[_0x4151af('0x62d')]+_0x238853[_0x4151af('0x3a6')])/0x2):document[_0x4151af('0xc5d')]((_0x238853[_0x4151af('0x732')]+_0x238853[_0x4151af('0xbab')])/0x2,_0x238853[_0x4151af('0x3a6')]-0x1))!=_0x5658de?_0x5658de['style'][_0x4151af('0x1134')]=_0x4151af('0x1c1'):_0x31f53c[_0x4151af('0x11ce')](0x3e8,_0x5abc92);});},_0x3c0625[_0x255d35('0x98c')][_0x255d35('0xedd')]=function(){var _0x2a029b=_0x255d35,_0x5e2c12=this[_0x2a029b('0xed5')]['parentNode'];_0x5e2c12[_0x2a029b('0x75b')](this[_0x2a029b('0xed5')]),_0x5e2c12['removeChild'](this[_0x2a029b('0xa90')]);};var _0x95241d=function(){};function _0x41bd9e(_0x2c8fc8,_0x4ec6e5){var _0x379054=_0x255d35;_0x4ec6e5||(_0x4ec6e5=_0x1f296d(_0x2c8fc8));var _0x3f487b=_0x2c8fc8[_0x379054('0x55c')][_0x379054('0xbad')],_0x24b595=_0x2c8fc8[_0x379054('0x55c')]['barHeight'];_0x2aa5ab(_0x2c8fc8,_0x4ec6e5);for(var _0x3ab725=0x0;_0x3ab725<0x4&&_0x3f487b!=_0x2c8fc8[_0x379054('0x55c')][_0x379054('0xbad')]||_0x24b595!=_0x2c8fc8[_0x379054('0x55c')][_0x379054('0xc0c')];_0x3ab725++)_0x3f487b!=_0x2c8fc8['display'][_0x379054('0xbad')]&&_0x2c8fc8['options']['lineWrapping']&&_0x328ad5(_0x2c8fc8),_0x2aa5ab(_0x2c8fc8,_0x1f296d(_0x2c8fc8)),_0x3f487b=_0x2c8fc8[_0x379054('0x55c')]['barWidth'],_0x24b595=_0x2c8fc8['display'][_0x379054('0xc0c')];}function _0x2aa5ab(_0x10510e,_0x3efbf1){var _0x47e5e9=_0x255d35,_0x35c780=_0x10510e['display'],_0x366b41=_0x35c780[_0x47e5e9('0xab0')][_0x47e5e9('0x4ca')](_0x3efbf1);_0x35c780['sizer'][_0x47e5e9('0x1cd')][_0x47e5e9('0x1063')]=(_0x35c780[_0x47e5e9('0xbad')]=_0x366b41[_0x47e5e9('0x732')])+'px',_0x35c780[_0x47e5e9('0x503')]['style'][_0x47e5e9('0xd18')]=(_0x35c780[_0x47e5e9('0xc0c')]=_0x366b41[_0x47e5e9('0x3a6')])+'px',_0x35c780['heightForcer'][_0x47e5e9('0x1cd')][_0x47e5e9('0xd11')]=_0x366b41[_0x47e5e9('0x3a6')]+_0x47e5e9('0x1000'),_0x366b41[_0x47e5e9('0x732')]&&_0x366b41[_0x47e5e9('0x3a6')]?(_0x35c780[_0x47e5e9('0x3e3')][_0x47e5e9('0x1cd')][_0x47e5e9('0x55c')]=_0x47e5e9('0xa52'),_0x35c780[_0x47e5e9('0x3e3')][_0x47e5e9('0x1cd')][_0x47e5e9('0x7f0')]=_0x366b41[_0x47e5e9('0x3a6')]+'px',_0x35c780[_0x47e5e9('0x3e3')][_0x47e5e9('0x1cd')][_0x47e5e9('0xa7b')]=_0x366b41[_0x47e5e9('0x732')]+'px'):_0x35c780[_0x47e5e9('0x3e3')][_0x47e5e9('0x1cd')][_0x47e5e9('0x55c')]='',_0x366b41[_0x47e5e9('0x3a6')]&&_0x10510e[_0x47e5e9('0x631')]['coverGutterNextToScrollbar']&&_0x10510e[_0x47e5e9('0x631')][_0x47e5e9('0xe1f')]?(_0x35c780[_0x47e5e9('0x50a')]['style'][_0x47e5e9('0x55c')]=_0x47e5e9('0xa52'),_0x35c780['gutterFiller'][_0x47e5e9('0x1cd')][_0x47e5e9('0x7f0')]=_0x366b41['bottom']+'px',_0x35c780[_0x47e5e9('0x50a')][_0x47e5e9('0x1cd')][_0x47e5e9('0xa7b')]=_0x3efbf1[_0x47e5e9('0x725')]+'px'):_0x35c780[_0x47e5e9('0x50a')][_0x47e5e9('0x1cd')][_0x47e5e9('0x55c')]='';}_0x95241d[_0x255d35('0x98c')][_0x255d35('0x4ca')]=function(){return{'bottom':0x0,'right':0x0};},_0x95241d[_0x255d35('0x98c')][_0x255d35('0x66b')]=function(){},_0x95241d[_0x255d35('0x98c')][_0x255d35('0x1bc')]=function(){},_0x95241d[_0x255d35('0x98c')]['clear']=function(){};var _0x341eef={'native':_0x3c0625,'null':_0x95241d};function _0x281d6b(_0x5b8db2){var _0x1db2c7=_0x255d35;_0x5b8db2[_0x1db2c7('0x55c')]['scrollbars']&&(_0x5b8db2['display']['scrollbars'][_0x1db2c7('0xedd')](),_0x5b8db2['display'][_0x1db2c7('0xab0')][_0x1db2c7('0x25b')]&&_0x1a7f4e(_0x5b8db2[_0x1db2c7('0x55c')][_0x1db2c7('0x701')],_0x5b8db2[_0x1db2c7('0x55c')][_0x1db2c7('0xab0')][_0x1db2c7('0x25b')])),_0x5b8db2['display'][_0x1db2c7('0xab0')]=new _0x341eef[_0x5b8db2[(_0x1db2c7('0x631'))][(_0x1db2c7('0x11dd'))]](function(_0x5baa1b){var _0x3b1a38=_0x1db2c7;_0x5b8db2[_0x3b1a38('0x55c')][_0x3b1a38('0x701')][_0x3b1a38('0x692')](_0x5baa1b,_0x5b8db2['display'][_0x3b1a38('0x3e3')]),_0x407bf3(_0x5baa1b,_0x3b1a38('0x9ff'),function(){var _0x5551a4=_0x3b1a38;_0x5b8db2[_0x5551a4('0xfff')][_0x5551a4('0x19f')]&&setTimeout(function(){var _0x5d3296=_0x5551a4;return _0x5b8db2[_0x5d3296('0x55c')][_0x5d3296('0x20c')][_0x5d3296('0x74b')]();},0x0);}),_0x5baa1b[_0x3b1a38('0xfdc')](_0x3b1a38('0x229'),'true');},function(_0x4c944a,_0x3b738a){var _0x5cf0c4=_0x1db2c7;_0x5cf0c4('0xde3')==_0x3b738a?_0x33a7d6(_0x5b8db2,_0x4c944a):_0x2c9df2(_0x5b8db2,_0x4c944a);},_0x5b8db2),_0x5b8db2[_0x1db2c7('0x55c')][_0x1db2c7('0xab0')][_0x1db2c7('0x25b')]&&_0x33fcac(_0x5b8db2['display']['wrapper'],_0x5b8db2['display'][_0x1db2c7('0xab0')][_0x1db2c7('0x25b')]);}var _0x53cb0c=0x0;function _0x23d185(_0x58979c){var _0xd4a7d1=_0x255d35,_0x506083;_0x58979c[_0xd4a7d1('0x10e6')]={'cm':_0x58979c,'viewChanged':!0x1,'startHeight':_0x58979c[_0xd4a7d1('0xf37')]['height'],'forceUpdate':!0x1,'updateInput':0x0,'typing':!0x1,'changeObjs':null,'cursorActivityHandlers':null,'cursorActivityCalled':0x0,'selectionChanged':!0x1,'updateMaxLine':!0x1,'scrollLeft':null,'scrollTop':null,'scrollToPos':null,'focus':!0x1,'id':++_0x53cb0c},_0x506083=_0x58979c[_0xd4a7d1('0x10e6')],_0x587424?_0x587424['ops'][_0xd4a7d1('0x8f8')](_0x506083):_0x506083[_0xd4a7d1('0xc51')]=_0x587424={'ops':[_0x506083],'delayedCallbacks':[]};}function _0x5ab881(_0x1e3127){var _0x1a1aa5=_0x1e3127['curOp'];_0x1a1aa5&&function(_0x4f06cb,_0x528fa7){var _0x14ac3f=_0x3ab6,_0x5489cc=_0x4f06cb[_0x14ac3f('0xc51')];if(_0x5489cc)try{!function(_0x3513d8){var _0x1a306e=_0x14ac3f,_0x18b796=_0x3513d8['delayedCallbacks'],_0x377d37=0x0;do{for(;_0x377d37<_0x18b796['length'];_0x377d37++)_0x18b796[_0x377d37][_0x1a306e('0x4b0')](null);for(var _0x1cb27d=0x0;_0x1cb27d<_0x3513d8[_0x1a306e('0x9df')][_0x1a306e('0x525')];_0x1cb27d++){var _0x14be65=_0x3513d8[_0x1a306e('0x9df')][_0x1cb27d];if(_0x14be65['cursorActivityHandlers'])for(;_0x14be65[_0x1a306e('0xe34')]<_0x14be65['cursorActivityHandlers'][_0x1a306e('0x525')];)_0x14be65[_0x1a306e('0x54b')][_0x14be65[_0x1a306e('0xe34')]++][_0x1a306e('0x4b0')](null,_0x14be65['cm']);}}while(_0x377d37<_0x18b796[_0x1a306e('0x525')]);}(_0x5489cc);}finally{_0x587424=null,_0x528fa7(_0x5489cc);}}(_0x1a1aa5,function(_0x5ce385){var _0x505653=_0x3ab6;for(var _0x29fac1=0x0;_0x29fac1<_0x5ce385[_0x505653('0x9df')][_0x505653('0x525')];_0x29fac1++)_0x5ce385[_0x505653('0x9df')][_0x29fac1]['cm']['curOp']=null;!function(_0x1d377c){var _0x24fdbe=_0x505653;for(var _0x4b834b=_0x1d377c[_0x24fdbe('0x9df')],_0x1bc1d8=0x0;_0x1bc1d8<_0x4b834b[_0x24fdbe('0x525')];_0x1bc1d8++)_0x51ab8e(_0x4b834b[_0x1bc1d8]);for(var _0x4fec0e=0x0;_0x4fec0e<_0x4b834b[_0x24fdbe('0x525')];_0x4fec0e++)_0x50aea5(_0x4b834b[_0x4fec0e]);for(var _0x5eb1fa=0x0;_0x5eb1fa<_0x4b834b[_0x24fdbe('0x525')];_0x5eb1fa++)_0x4d5c1d(_0x4b834b[_0x5eb1fa]);for(var _0x368002=0x0;_0x368002<_0x4b834b[_0x24fdbe('0x525')];_0x368002++)_0x3015a2(_0x4b834b[_0x368002]);for(var _0x59ac9e=0x0;_0x59ac9e<_0x4b834b[_0x24fdbe('0x525')];_0x59ac9e++)_0xdb0bca(_0x4b834b[_0x59ac9e]);}(_0x5ce385);});}function _0x51ab8e(_0x9ed214){var _0x2ddea7=_0x255d35,_0x1aaee6=_0x9ed214['cm'],_0x2c7798=_0x1aaee6['display'];!function(_0xd8a023){var _0xe07f79=_0x3ab6,_0xb05520=_0xd8a023['display'];!_0xb05520['scrollbarsClipped']&&_0xb05520[_0xe07f79('0x819')][_0xe07f79('0x969')]&&(_0xb05520[_0xe07f79('0x781')]=_0xb05520[_0xe07f79('0x819')][_0xe07f79('0x969')]-_0xb05520[_0xe07f79('0x819')][_0xe07f79('0x71a')],_0xb05520[_0xe07f79('0xe81')][_0xe07f79('0x1cd')]['height']=_0x55ae2c(_0xd8a023)+'px',_0xb05520['sizer'][_0xe07f79('0x1cd')][_0xe07f79('0xd2f')]=-_0xb05520[_0xe07f79('0x781')]+'px',_0xb05520[_0xe07f79('0x503')]['style'][_0xe07f79('0x982')]=_0x55ae2c(_0xd8a023)+'px',_0xb05520['scrollbarsClipped']=!0x0);}(_0x1aaee6),_0x9ed214['updateMaxLine']&&_0x123b91(_0x1aaee6),_0x9ed214[_0x2ddea7('0x83f')]=_0x9ed214[_0x2ddea7('0xe20')]||_0x9ed214[_0x2ddea7('0x60e')]||null!=_0x9ed214[_0x2ddea7('0xfa1')]||_0x9ed214[_0x2ddea7('0x8a2')]&&(_0x9ed214['scrollToPos'][_0x2ddea7('0x9d7')][_0x2ddea7('0xde2')]<_0x2c7798[_0x2ddea7('0xa36')]||_0x9ed214[_0x2ddea7('0x8a2')]['to'][_0x2ddea7('0xde2')]>=_0x2c7798[_0x2ddea7('0xf2f')])||_0x2c7798[_0x2ddea7('0x7aa')]&&_0x1aaee6[_0x2ddea7('0x631')]['lineWrapping'],_0x9ed214[_0x2ddea7('0x4ca')]=_0x9ed214['mustUpdate']&&new _0x3fe25e(_0x1aaee6,_0x9ed214[_0x2ddea7('0x83f')]&&{'top':_0x9ed214[_0x2ddea7('0xfa1')],'ensure':_0x9ed214[_0x2ddea7('0x8a2')]},_0x9ed214[_0x2ddea7('0x60e')]);}function _0x50aea5(_0x5d4167){var _0x1a4e9a=_0x255d35;_0x5d4167[_0x1a4e9a('0xcec')]=_0x5d4167[_0x1a4e9a('0x83f')]&&_0x42dfe6(_0x5d4167['cm'],_0x5d4167[_0x1a4e9a('0x4ca')]);}function _0x4d5c1d(_0x3ce2c8){var _0x543689=_0x255d35,_0x1b4de3=_0x3ce2c8['cm'],_0x428c36=_0x1b4de3['display'];_0x3ce2c8[_0x543689('0xcec')]&&_0x328ad5(_0x1b4de3),_0x3ce2c8[_0x543689('0x646')]=_0x1f296d(_0x1b4de3),_0x428c36[_0x543689('0x7aa')]&&!_0x1b4de3[_0x543689('0x631')]['lineWrapping']&&(_0x3ce2c8[_0x543689('0x35')]=_0x28e0e2(_0x1b4de3,_0x428c36[_0x543689('0x60d')],_0x428c36['maxLine']['text']['length'])[_0x543689('0xbab')]+0x3,_0x1b4de3['display'][_0x543689('0x111')]=_0x3ce2c8['adjustWidthTo'],_0x3ce2c8['barMeasure']['scrollWidth']=Math[_0x543689('0xf65')](_0x428c36[_0x543689('0x819')]['clientWidth'],_0x428c36[_0x543689('0x503')][_0x543689('0x3fa')]+_0x3ce2c8[_0x543689('0x35')]+_0x55ae2c(_0x1b4de3)+_0x1b4de3[_0x543689('0x55c')][_0x543689('0xbad')]),_0x3ce2c8[_0x543689('0xd09')]=Math[_0x543689('0xf65')](0x0,_0x428c36['sizer']['offsetLeft']+_0x3ce2c8[_0x543689('0x35')]-_0x433d44(_0x1b4de3))),(_0x3ce2c8[_0x543689('0xcec')]||_0x3ce2c8[_0x543689('0xbcc')])&&(_0x3ce2c8[_0x543689('0x9f7')]=_0x428c36['input'][_0x543689('0x930')]());}function _0x3015a2(_0x3e6df6){var _0x1ffc8b=_0x255d35,_0xeafe69=_0x3e6df6['cm'];null!=_0x3e6df6['adjustWidthTo']&&(_0xeafe69[_0x1ffc8b('0x55c')]['sizer'][_0x1ffc8b('0x1cd')][_0x1ffc8b('0xc6')]=_0x3e6df6['adjustWidthTo']+'px',_0x3e6df6[_0x1ffc8b('0xd09')]<_0xeafe69[_0x1ffc8b('0xf37')][_0x1ffc8b('0x4ba')]&&_0x33a7d6(_0xeafe69,Math['min'](_0xeafe69['display']['scroller']['scrollLeft'],_0x3e6df6[_0x1ffc8b('0xd09')]),!0x0),_0xeafe69[_0x1ffc8b('0x55c')]['maxLineChanged']=!0x1);var _0x55a4a4=_0x3e6df6[_0x1ffc8b('0x74b')]&&_0x3e6df6['focus']==_0x3d661d();_0x3e6df6[_0x1ffc8b('0x9f7')]&&_0xeafe69[_0x1ffc8b('0x55c')][_0x1ffc8b('0x20c')][_0x1ffc8b('0x512')](_0x3e6df6[_0x1ffc8b('0x9f7')],_0x55a4a4),(_0x3e6df6[_0x1ffc8b('0xcec')]||_0x3e6df6[_0x1ffc8b('0xf9')]!=_0xeafe69[_0x1ffc8b('0xf37')][_0x1ffc8b('0x7f0')])&&_0x41bd9e(_0xeafe69,_0x3e6df6[_0x1ffc8b('0x646')]),_0x3e6df6[_0x1ffc8b('0xcec')]&&_0x293858(_0xeafe69,_0x3e6df6[_0x1ffc8b('0x646')]),_0x3e6df6['selectionChanged']&&_0x25de7a(_0xeafe69),_0xeafe69[_0x1ffc8b('0xfff')][_0x1ffc8b('0x19f')]&&_0x3e6df6[_0x1ffc8b('0xd83')]&&_0xeafe69[_0x1ffc8b('0x55c')][_0x1ffc8b('0x20c')][_0x1ffc8b('0xff3')](_0x3e6df6[_0x1ffc8b('0x108d')]),_0x55a4a4&&_0xf3a8f1(_0x3e6df6['cm']);}function _0xdb0bca(_0x34fcd2){var _0x51231c=_0x255d35,_0xe517f=_0x34fcd2['cm'],_0x99e4ae=_0xe517f[_0x51231c('0x55c')],_0x2f9c83=_0xe517f[_0x51231c('0xf37')];(_0x34fcd2[_0x51231c('0xcec')]&&_0x58dfbb(_0xe517f,_0x34fcd2[_0x51231c('0x4ca')]),null==_0x99e4ae[_0x51231c('0xabb')]||null==_0x34fcd2[_0x51231c('0xfa1')]&&null==_0x34fcd2[_0x51231c('0x4ba')]&&!_0x34fcd2[_0x51231c('0x8a2')]||(_0x99e4ae['wheelStartX']=_0x99e4ae[_0x51231c('0xd7a')]=null),null!=_0x34fcd2[_0x51231c('0xfa1')]&&_0x5e6d3e(_0xe517f,_0x34fcd2['scrollTop'],_0x34fcd2[_0x51231c('0x11c5')]),null!=_0x34fcd2[_0x51231c('0x4ba')]&&_0x33a7d6(_0xe517f,_0x34fcd2[_0x51231c('0x4ba')],!0x0,!0x0),_0x34fcd2['scrollToPos'])&&function(_0xb091af,_0x36b2db){var _0x18be91=_0x51231c;if(!_0x108070(_0xb091af,_0x18be91('0x605'))){var _0x4d915c=_0xb091af[_0x18be91('0x55c')],_0x4cdfe6=_0x4d915c[_0x18be91('0x503')][_0x18be91('0xe75')](),_0x2412ad=null;if(_0x36b2db[_0x18be91('0x62d')]+_0x4cdfe6[_0x18be91('0x62d')]<0x0?_0x2412ad=!0x0:_0x36b2db['bottom']+_0x4cdfe6['top']>(window[_0x18be91('0x84f')]||document['documentElement'][_0x18be91('0x1a1')])&&(_0x2412ad=!0x1),null!=_0x2412ad&&!_0x5ce608){var _0x2dd0e7=_0x31f23b(_0x18be91('0x7fc'),'​',null,_0x18be91('0x528')+(_0x36b2db[_0x18be91('0x62d')]-_0x4d915c['viewOffset']-_0x6acae3(_0xb091af[_0x18be91('0x55c')]))+_0x18be91('0x132')+(_0x36b2db['bottom']-_0x36b2db['top']+_0x55ae2c(_0xb091af)+_0x4d915c['barHeight'])+_0x18be91('0x1ff')+_0x36b2db[_0x18be91('0xbab')]+_0x18be91('0xe1c')+Math[_0x18be91('0xf65')](0x2,_0x36b2db[_0x18be91('0x732')]-_0x36b2db['left'])+'px;');_0xb091af[_0x18be91('0x55c')][_0x18be91('0xeb2')]['appendChild'](_0x2dd0e7),_0x2dd0e7['scrollIntoView'](_0x2412ad),_0xb091af['display'][_0x18be91('0xeb2')]['removeChild'](_0x2dd0e7);}}}(_0xe517f,function(_0x12486c,_0x113dd0,_0x37965b,_0x243a7e){var _0x254d52=_0x51231c,_0x3b85d3;null==_0x243a7e&&(_0x243a7e=0x0),_0x12486c['options'][_0x254d52('0x5a9')]||_0x113dd0!=_0x37965b||(_0x37965b=_0x254d52('0xa69')==(_0x113dd0=_0x113dd0['ch']?_0xf7c6fb(_0x113dd0[_0x254d52('0xde2')],_0x254d52('0xa69')==_0x113dd0[_0x254d52('0x84e')]?_0x113dd0['ch']-0x1:_0x113dd0['ch'],_0x254d52('0x95d')):_0x113dd0)[_0x254d52('0x84e')]?_0xf7c6fb(_0x113dd0[_0x254d52('0xde2')],_0x113dd0['ch']+0x1,_0x254d52('0xa69')):_0x113dd0);for(var _0x281332=0x0;_0x281332<0x5;_0x281332++){var _0x2a3217=!0x1,_0x49ed91=_0x5dfa83(_0x12486c,_0x113dd0),_0x324bf4=_0x37965b&&_0x37965b!=_0x113dd0?_0x5dfa83(_0x12486c,_0x37965b):_0x49ed91,_0x54a01f=_0x50a969(_0x12486c,_0x3b85d3={'left':Math[_0x254d52('0xc0d')](_0x49ed91[_0x254d52('0xbab')],_0x324bf4[_0x254d52('0xbab')]),'top':Math[_0x254d52('0xc0d')](_0x49ed91[_0x254d52('0x62d')],_0x324bf4[_0x254d52('0x62d')])-_0x243a7e,'right':Math[_0x254d52('0xf65')](_0x49ed91['left'],_0x324bf4[_0x254d52('0xbab')]),'bottom':Math[_0x254d52('0xf65')](_0x49ed91[_0x254d52('0x3a6')],_0x324bf4['bottom'])+_0x243a7e}),_0x258bf8=_0x12486c[_0x254d52('0xf37')][_0x254d52('0xfa1')],_0x16d811=_0x12486c[_0x254d52('0xf37')][_0x254d52('0x4ba')];if(null!=_0x54a01f[_0x254d52('0xfa1')]&&(_0x2c9df2(_0x12486c,_0x54a01f[_0x254d52('0xfa1')]),Math[_0x254d52('0x74f')](_0x12486c['doc'][_0x254d52('0xfa1')]-_0x258bf8)>0x1&&(_0x2a3217=!0x0)),null!=_0x54a01f[_0x254d52('0x4ba')]&&(_0x33a7d6(_0x12486c,_0x54a01f['scrollLeft']),Math[_0x254d52('0x74f')](_0x12486c['doc'][_0x254d52('0x4ba')]-_0x16d811)>0x1&&(_0x2a3217=!0x0)),!_0x2a3217)break;}return _0x3b85d3;}(_0xe517f,_0x364c36(_0x2f9c83,_0x34fcd2[_0x51231c('0x8a2')][_0x51231c('0x9d7')]),_0x364c36(_0x2f9c83,_0x34fcd2[_0x51231c('0x8a2')]['to']),_0x34fcd2[_0x51231c('0x8a2')][_0x51231c('0xa2c')]));var _0x49ff41=_0x34fcd2[_0x51231c('0x392')],_0x41eb3b=_0x34fcd2['maybeUnhiddenMarkers'];if(_0x49ff41)for(var _0x20d781=0x0;_0x20d781<_0x49ff41[_0x51231c('0x525')];++_0x20d781)_0x49ff41[_0x20d781]['lines']['length']||_0x508e40(_0x49ff41[_0x20d781],_0x51231c('0x9c2'));if(_0x41eb3b)for(var _0x45a8c3=0x0;_0x45a8c3<_0x41eb3b[_0x51231c('0x525')];++_0x45a8c3)_0x41eb3b[_0x45a8c3][_0x51231c('0x511')]['length']&&_0x508e40(_0x41eb3b[_0x45a8c3],_0x51231c('0x9e6'));_0x99e4ae[_0x51231c('0x701')][_0x51231c('0x5f7')]&&(_0x2f9c83['scrollTop']=_0xe517f[_0x51231c('0x55c')][_0x51231c('0x819')][_0x51231c('0xfa1')]),_0x34fcd2[_0x51231c('0xcc9')]&&_0x508e40(_0xe517f,_0x51231c('0xd8f'),_0xe517f,_0x34fcd2['changeObjs']),_0x34fcd2['update']&&_0x34fcd2[_0x51231c('0x4ca')][_0x51231c('0x1061')]();}function _0x14c54d(_0x1d033f,_0x1deed5){var _0x5c861f=_0x255d35;if(_0x1d033f[_0x5c861f('0x10e6')])return _0x1deed5();_0x23d185(_0x1d033f);try{return _0x1deed5();}finally{_0x5ab881(_0x1d033f);}}function _0x2dfb55(_0x5cdce8,_0x623fd1){return function(){var _0x2c471a=_0x3ab6;if(_0x5cdce8[_0x2c471a('0x10e6')])return _0x623fd1[_0x2c471a('0x1036')](_0x5cdce8,arguments);_0x23d185(_0x5cdce8);try{return _0x623fd1[_0x2c471a('0x1036')](_0x5cdce8,arguments);}finally{_0x5ab881(_0x5cdce8);}};}function _0x40cae9(_0x2bcbb5){return function(){var _0x286b37=_0x3ab6;if(this[_0x286b37('0x10e6')])return _0x2bcbb5[_0x286b37('0x1036')](this,arguments);_0x23d185(this);try{return _0x2bcbb5[_0x286b37('0x1036')](this,arguments);}finally{_0x5ab881(this);}};}function _0xdb45ba(_0x4788d6){return function(){var _0xae2277=_0x3ab6,_0x3f22e4=this['cm'];if(!_0x3f22e4||_0x3f22e4['curOp'])return _0x4788d6['apply'](this,arguments);_0x23d185(_0x3f22e4);try{return _0x4788d6[_0xae2277('0x1036')](this,arguments);}finally{_0x5ab881(_0x3f22e4);}};}function _0x7dbcb2(_0x46b5c0,_0x5d6da2){var _0xb6f243=_0x255d35;_0x46b5c0[_0xb6f243('0xf37')][_0xb6f243('0xba7')]<_0x46b5c0[_0xb6f243('0x55c')][_0xb6f243('0xf2f')]&&_0x46b5c0[_0xb6f243('0xfff')][_0xb6f243('0x130')]['set'](_0x5d6da2,_0x283b11(_0x4cd33a,_0x46b5c0));}function _0x4cd33a(_0x2613de){var _0x2a5689=_0x255d35,_0x598df7=_0x2613de[_0x2a5689('0xf37')];if(!(_0x598df7['highlightFrontier']>=_0x2613de[_0x2a5689('0x55c')][_0x2a5689('0xf2f')])){var _0x21a0c7=+new Date()+_0x2613de[_0x2a5689('0x631')][_0x2a5689('0x1050')],_0x6ff863=_0x13a7c7(_0x2613de,_0x598df7[_0x2a5689('0xba7')]),_0x37a4d0=[];_0x598df7[_0x2a5689('0x160')](_0x6ff863[_0x2a5689('0xde2')],Math[_0x2a5689('0xc0d')](_0x598df7[_0x2a5689('0xe3c')]+_0x598df7[_0x2a5689('0x844')],_0x2613de[_0x2a5689('0x55c')][_0x2a5689('0xf2f')]+0x1f4),function(_0x3a541d){var _0x586e6f=_0x2a5689;if(_0x6ff863[_0x586e6f('0xde2')]>=_0x2613de['display'][_0x586e6f('0xa36')]){var _0xa42f27=_0x3a541d[_0x586e6f('0x110b')],_0x1e84aa=_0x3a541d[_0x586e6f('0x768')][_0x586e6f('0x525')]>_0x2613de[_0x586e6f('0x631')][_0x586e6f('0x100e')]?_0x4e981f(_0x598df7['mode'],_0x6ff863[_0x586e6f('0xfff')]):null,_0x1bb3f8=_0x320906(_0x2613de,_0x3a541d,_0x6ff863,!0x0);_0x1e84aa&&(_0x6ff863[_0x586e6f('0xfff')]=_0x1e84aa),_0x3a541d[_0x586e6f('0x110b')]=_0x1bb3f8[_0x586e6f('0x110b')];var _0xf0ff62=_0x3a541d[_0x586e6f('0xbe1')],_0x2c74f9=_0x1bb3f8[_0x586e6f('0xe0c')];_0x2c74f9?_0x3a541d[_0x586e6f('0xbe1')]=_0x2c74f9:_0xf0ff62&&(_0x3a541d[_0x586e6f('0xbe1')]=null);for(var _0x2601d5=!_0xa42f27||_0xa42f27[_0x586e6f('0x525')]!=_0x3a541d[_0x586e6f('0x110b')][_0x586e6f('0x525')]||_0xf0ff62!=_0x2c74f9&&(!_0xf0ff62||!_0x2c74f9||_0xf0ff62[_0x586e6f('0x3da')]!=_0x2c74f9[_0x586e6f('0x3da')]||_0xf0ff62['textClass']!=_0x2c74f9[_0x586e6f('0xf60')]),_0x3b517d=0x0;!_0x2601d5&&_0x3b517d<_0xa42f27[_0x586e6f('0x525')];++_0x3b517d)_0x2601d5=_0xa42f27[_0x3b517d]!=_0x3a541d['styles'][_0x3b517d];_0x2601d5&&_0x37a4d0['push'](_0x6ff863['line']),_0x3a541d[_0x586e6f('0x52')]=_0x6ff863[_0x586e6f('0xc68')](),_0x6ff863[_0x586e6f('0x604')]();}else _0x3a541d['text'][_0x586e6f('0x525')]<=_0x2613de[_0x586e6f('0x631')][_0x586e6f('0x100e')]&&_0x41a4f9(_0x2613de,_0x3a541d['text'],_0x6ff863),_0x3a541d[_0x586e6f('0x52')]=_0x6ff863[_0x586e6f('0xde2')]%0x5==0x0?_0x6ff863[_0x586e6f('0xc68')]():null,_0x6ff863['nextLine']();if(+new Date()>_0x21a0c7)return _0x7dbcb2(_0x2613de,_0x2613de[_0x586e6f('0x631')]['workDelay']),!0x0;}),_0x598df7[_0x2a5689('0xba7')]=_0x6ff863['line'],_0x598df7['modeFrontier']=Math[_0x2a5689('0xf65')](_0x598df7['modeFrontier'],_0x6ff863[_0x2a5689('0xde2')]),_0x37a4d0[_0x2a5689('0x525')]&&_0x14c54d(_0x2613de,function(){var _0x3bef49=_0x2a5689;for(var _0x4ebf81=0x0;_0x4ebf81<_0x37a4d0['length'];_0x4ebf81++)_0x59dcbc(_0x2613de,_0x37a4d0[_0x4ebf81],_0x3bef49('0x768'));});}}var _0x3fe25e=function(_0x21b34d,_0x2bed16,_0x440519){var _0x3c5f8c=_0x255d35,_0x399e3a=_0x21b34d[_0x3c5f8c('0x55c')];this[_0x3c5f8c('0xd6a')]=_0x2bed16,this[_0x3c5f8c('0x39e')]=_0xf0195a(_0x399e3a,_0x21b34d['doc'],_0x2bed16),this['editorIsHidden']=!_0x399e3a[_0x3c5f8c('0x701')]['offsetWidth'],this[_0x3c5f8c('0x77')]=_0x399e3a[_0x3c5f8c('0x701')][_0x3c5f8c('0x1a1')],this['wrapperWidth']=_0x399e3a[_0x3c5f8c('0x701')][_0x3c5f8c('0x71a')],this[_0x3c5f8c('0x71d')]=_0x433d44(_0x21b34d),this[_0x3c5f8c('0x5b')]=_0x440519,this[_0x3c5f8c('0x662')]=_0x4c3b6f(_0x21b34d),this[_0x3c5f8c('0x6a0')]=[];};function _0x42dfe6(_0x5a00bf,_0x5c93b5){var _0x5d409c=_0x255d35,_0x1cd59e=_0x5a00bf[_0x5d409c('0x55c')],_0x2dda48=_0x5a00bf['doc'];if(_0x5c93b5['editorIsHidden'])return _0x4937ab(_0x5a00bf),!0x1;if(!_0x5c93b5['force']&&_0x5c93b5[_0x5d409c('0x39e')][_0x5d409c('0x9d7')]>=_0x1cd59e[_0x5d409c('0xa36')]&&_0x5c93b5[_0x5d409c('0x39e')]['to']<=_0x1cd59e[_0x5d409c('0xf2f')]&&(null==_0x1cd59e[_0x5d409c('0x1079')]||_0x1cd59e[_0x5d409c('0x1079')]>=_0x1cd59e[_0x5d409c('0xf2f')])&&_0x1cd59e[_0x5d409c('0x9d3')]==_0x1cd59e[_0x5d409c('0x1132')]&&0x0==_0x364dd4(_0x5a00bf))return!0x1;_0x329a5c(_0x5a00bf)&&(_0x4937ab(_0x5a00bf),_0x5c93b5['dims']=_0x4c3b6f(_0x5a00bf));var _0xb46c12=_0x2dda48[_0x5d409c('0xe3c')]+_0x2dda48[_0x5d409c('0x844')],_0x140237=Math[_0x5d409c('0xf65')](_0x5c93b5[_0x5d409c('0x39e')][_0x5d409c('0x9d7')]-_0x5a00bf[_0x5d409c('0x631')]['viewportMargin'],_0x2dda48[_0x5d409c('0xe3c')]),_0x1afa80=Math[_0x5d409c('0xc0d')](_0xb46c12,_0x5c93b5[_0x5d409c('0x39e')]['to']+_0x5a00bf[_0x5d409c('0x631')]['viewportMargin']);_0x1cd59e[_0x5d409c('0xa36')]<_0x140237&&_0x140237-_0x1cd59e[_0x5d409c('0xa36')]<0x14&&(_0x140237=Math[_0x5d409c('0xf65')](_0x2dda48['first'],_0x1cd59e[_0x5d409c('0xa36')])),_0x1cd59e[_0x5d409c('0xf2f')]>_0x1afa80&&_0x1cd59e[_0x5d409c('0xf2f')]-_0x1afa80<0x14&&(_0x1afa80=Math[_0x5d409c('0xc0d')](_0xb46c12,_0x1cd59e[_0x5d409c('0xf2f')])),_0x17b3bc&&(_0x140237=_0x1b5165(_0x5a00bf[_0x5d409c('0xf37')],_0x140237),_0x1afa80=_0x11d985(_0x5a00bf[_0x5d409c('0xf37')],_0x1afa80));var _0x2ecbc9=_0x140237!=_0x1cd59e['viewFrom']||_0x1afa80!=_0x1cd59e[_0x5d409c('0xf2f')]||_0x1cd59e[_0x5d409c('0x29f')]!=_0x5c93b5['wrapperHeight']||_0x1cd59e[_0x5d409c('0x941')]!=_0x5c93b5[_0x5d409c('0x75d')];!function(_0x49d75f,_0x3d71d4,_0x2f0885){var _0x58521b=_0x5d409c,_0x490927=_0x49d75f[_0x58521b('0x55c')];0x0==_0x490927['view'][_0x58521b('0x525')]||_0x3d71d4>=_0x490927[_0x58521b('0xf2f')]||_0x2f0885<=_0x490927[_0x58521b('0xa36')]?(_0x490927['view']=_0x57b04a(_0x49d75f,_0x3d71d4,_0x2f0885),_0x490927[_0x58521b('0xa36')]=_0x3d71d4):(_0x490927[_0x58521b('0xa36')]>_0x3d71d4?_0x490927[_0x58521b('0x1132')]=_0x57b04a(_0x49d75f,_0x3d71d4,_0x490927[_0x58521b('0xa36')])[_0x58521b('0x3cc')](_0x490927[_0x58521b('0x1132')]):_0x490927['viewFrom']<_0x3d71d4&&(_0x490927[_0x58521b('0x1132')]=_0x490927[_0x58521b('0x1132')][_0x58521b('0xbc0')](_0x44435c(_0x49d75f,_0x3d71d4))),_0x490927[_0x58521b('0xa36')]=_0x3d71d4,_0x490927['viewTo']<_0x2f0885?_0x490927[_0x58521b('0x1132')]=_0x490927[_0x58521b('0x1132')][_0x58521b('0x3cc')](_0x57b04a(_0x49d75f,_0x490927[_0x58521b('0xf2f')],_0x2f0885)):_0x490927['viewTo']>_0x2f0885&&(_0x490927[_0x58521b('0x1132')]=_0x490927[_0x58521b('0x1132')][_0x58521b('0xbc0')](0x0,_0x44435c(_0x49d75f,_0x2f0885)))),_0x490927[_0x58521b('0xf2f')]=_0x2f0885;}(_0x5a00bf,_0x140237,_0x1afa80),_0x1cd59e[_0x5d409c('0x753')]=_0x14cc1e(_0x1b58dd(_0x5a00bf[_0x5d409c('0xf37')],_0x1cd59e[_0x5d409c('0xa36')])),_0x5a00bf['display'][_0x5d409c('0xe52')][_0x5d409c('0x1cd')][_0x5d409c('0x62d')]=_0x1cd59e['viewOffset']+'px';var _0x10e1a0=_0x364dd4(_0x5a00bf);if(!_0x2ecbc9&&0x0==_0x10e1a0&&!_0x5c93b5[_0x5d409c('0x5b')]&&_0x1cd59e[_0x5d409c('0x9d3')]==_0x1cd59e[_0x5d409c('0x1132')]&&(null==_0x1cd59e[_0x5d409c('0x1079')]||_0x1cd59e[_0x5d409c('0x1079')]>=_0x1cd59e[_0x5d409c('0xf2f')]))return!0x1;var _0x100b57=function(_0x57f024){var _0x5965ce=_0x5d409c;if(_0x57f024[_0x5965ce('0xa2a')]())return null;var _0x4c7a27=_0x3d661d();if(!_0x4c7a27||!_0x2c8c88(_0x57f024[_0x5965ce('0x55c')][_0x5965ce('0x1147')],_0x4c7a27))return null;var _0x4589cc={'activeElt':_0x4c7a27};if(window[_0x5965ce('0x5b7')]){var _0x3dd85a=window[_0x5965ce('0x5b7')]();_0x3dd85a['anchorNode']&&_0x3dd85a['extend']&&_0x2c8c88(_0x57f024[_0x5965ce('0x55c')][_0x5965ce('0x1147')],_0x3dd85a['anchorNode'])&&(_0x4589cc['anchorNode']=_0x3dd85a['anchorNode'],_0x4589cc['anchorOffset']=_0x3dd85a[_0x5965ce('0x8f0')],_0x4589cc[_0x5965ce('0x7c')]=_0x3dd85a[_0x5965ce('0x7c')],_0x4589cc[_0x5965ce('0x806')]=_0x3dd85a[_0x5965ce('0x806')]);}return _0x4589cc;}(_0x5a00bf);return _0x10e1a0>0x4&&(_0x1cd59e[_0x5d409c('0x1147')][_0x5d409c('0x1cd')][_0x5d409c('0x55c')]=_0x5d409c('0x1c1')),function(_0x48cc32,_0xd55042,_0x5bd7a0){var _0x2b9791=_0x5d409c,_0x4c2c3e=_0x48cc32['display'],_0x352cba=_0x48cc32[_0x2b9791('0x631')][_0x2b9791('0x1d')],_0x19b34a=_0x4c2c3e[_0x2b9791('0x1147')],_0x1a02de=_0x19b34a[_0x2b9791('0xdfb')];function _0x232caf(_0x48f781){var _0x43b713=_0x2b9791,_0x5e0571=_0x48f781[_0x43b713('0xd29')];return _0x153ccc&&_0x2841f0&&_0x48cc32[_0x43b713('0x55c')][_0x43b713('0x11e3')]==_0x48f781?_0x48f781[_0x43b713('0x1cd')][_0x43b713('0x55c')]=_0x43b713('0x1c1'):_0x48f781['parentNode']['removeChild'](_0x48f781),_0x5e0571;}for(var _0x287d4a=_0x4c2c3e[_0x2b9791('0x1132')],_0x34fb07=_0x4c2c3e[_0x2b9791('0xa36')],_0x4e8a91=0x0;_0x4e8a91<_0x287d4a[_0x2b9791('0x525')];_0x4e8a91++){var _0x26faa2=_0x287d4a[_0x4e8a91];if(_0x26faa2[_0x2b9791('0xdc0')]);else{if(_0x26faa2['node']&&_0x26faa2[_0x2b9791('0x5f')]['parentNode']==_0x19b34a){for(;_0x1a02de!=_0x26faa2['node'];)_0x1a02de=_0x232caf(_0x1a02de);var _0x55c10b=_0x352cba&&null!=_0xd55042&&_0xd55042<=_0x34fb07&&_0x26faa2[_0x2b9791('0x68a')];_0x26faa2[_0x2b9791('0xd8f')]&&(_0x3ec288(_0x26faa2[_0x2b9791('0xd8f')],_0x2b9791('0x968'))>-0x1&&(_0x55c10b=!0x1),_0x571695(_0x48cc32,_0x26faa2,_0x34fb07,_0x5bd7a0)),_0x55c10b&&(_0x294f84(_0x26faa2[_0x2b9791('0x68a')]),_0x26faa2['lineNumber'][_0x2b9791('0x11be')](document['createTextNode'](_0x5f1964(_0x48cc32['options'],_0x34fb07)))),_0x1a02de=_0x26faa2['node'][_0x2b9791('0xd29')];}else{var _0x196f92=_0x30a501(_0x48cc32,_0x26faa2,_0x34fb07,_0x5bd7a0);_0x19b34a['insertBefore'](_0x196f92,_0x1a02de);}}_0x34fb07+=_0x26faa2[_0x2b9791('0x844')];}for(;_0x1a02de;)_0x1a02de=_0x232caf(_0x1a02de);}(_0x5a00bf,_0x1cd59e[_0x5d409c('0x1079')],_0x5c93b5[_0x5d409c('0x662')]),_0x10e1a0>0x4&&(_0x1cd59e[_0x5d409c('0x1147')]['style']['display']=''),_0x1cd59e[_0x5d409c('0x9d3')]=_0x1cd59e[_0x5d409c('0x1132')],function(_0x1f76a3){var _0x300d6e=_0x5d409c;if(_0x1f76a3&&_0x1f76a3[_0x300d6e('0x7e7')]&&_0x1f76a3[_0x300d6e('0x7e7')]!=_0x3d661d()&&(_0x1f76a3['activeElt'][_0x300d6e('0x74b')](),!/^(INPUT|TEXTAREA)$/['test'](_0x1f76a3[_0x300d6e('0x7e7')][_0x300d6e('0xb72')])&&_0x1f76a3[_0x300d6e('0x10af')]&&_0x2c8c88(document[_0x300d6e('0x98e')],_0x1f76a3['anchorNode'])&&_0x2c8c88(document[_0x300d6e('0x98e')],_0x1f76a3[_0x300d6e('0x7c')]))){var _0x3cddb9=window[_0x300d6e('0x5b7')](),_0x4d48e0=document[_0x300d6e('0x36c')]();_0x4d48e0[_0x300d6e('0x870')](_0x1f76a3[_0x300d6e('0x10af')],_0x1f76a3[_0x300d6e('0x8f0')]),_0x4d48e0[_0x300d6e('0xdb1')](!0x1),_0x3cddb9[_0x300d6e('0x848')](),_0x3cddb9['addRange'](_0x4d48e0),_0x3cddb9[_0x300d6e('0x1158')](_0x1f76a3[_0x300d6e('0x7c')],_0x1f76a3[_0x300d6e('0x806')]);}}(_0x100b57),_0x294f84(_0x1cd59e[_0x5d409c('0xb4f')]),_0x294f84(_0x1cd59e['selectionDiv']),_0x1cd59e[_0x5d409c('0x3f')][_0x5d409c('0x1cd')][_0x5d409c('0x7f0')]=_0x1cd59e[_0x5d409c('0x503')][_0x5d409c('0x1cd')]['minHeight']=0x0,_0x2ecbc9&&(_0x1cd59e[_0x5d409c('0x29f')]=_0x5c93b5[_0x5d409c('0x77')],_0x1cd59e['lastWrapWidth']=_0x5c93b5[_0x5d409c('0x75d')],_0x7dbcb2(_0x5a00bf,0x190)),_0x1cd59e['updateLineNumbers']=null,!0x0;}function _0x58dfbb(_0x3cd308,_0x59a875){var _0x3e72aa=_0x255d35;for(var _0x4bea6f=_0x59a875[_0x3e72aa('0xd6a')],_0x2b6687=!0x0;;_0x2b6687=!0x1){if(_0x2b6687&&_0x3cd308['options'][_0x3e72aa('0x5a9')]&&_0x59a875['oldDisplayWidth']!=_0x433d44(_0x3cd308))_0x2b6687&&(_0x59a875[_0x3e72aa('0x39e')]=_0xf0195a(_0x3cd308[_0x3e72aa('0x55c')],_0x3cd308[_0x3e72aa('0xf37')],_0x4bea6f));else{if(_0x4bea6f&&null!=_0x4bea6f[_0x3e72aa('0x62d')]&&(_0x4bea6f={'top':Math[_0x3e72aa('0xc0d')](_0x3cd308[_0x3e72aa('0xf37')][_0x3e72aa('0x7f0')]+_0x3938c8(_0x3cd308['display'])-_0x5ae9f4(_0x3cd308),_0x4bea6f['top'])}),_0x59a875[_0x3e72aa('0x39e')]=_0xf0195a(_0x3cd308[_0x3e72aa('0x55c')],_0x3cd308[_0x3e72aa('0xf37')],_0x4bea6f),_0x59a875[_0x3e72aa('0x39e')][_0x3e72aa('0x9d7')]>=_0x3cd308['display']['viewFrom']&&_0x59a875[_0x3e72aa('0x39e')]['to']<=_0x3cd308[_0x3e72aa('0x55c')]['viewTo'])break;}if(!_0x42dfe6(_0x3cd308,_0x59a875))break;_0x328ad5(_0x3cd308);var _0xf91157=_0x1f296d(_0x3cd308);_0x377b46(_0x3cd308),_0x41bd9e(_0x3cd308,_0xf91157),_0x293858(_0x3cd308,_0xf91157),_0x59a875[_0x3e72aa('0x5b')]=!0x1;}_0x59a875['signal'](_0x3cd308,_0x3e72aa('0x4ca'),_0x3cd308),_0x3cd308[_0x3e72aa('0x55c')]['viewFrom']==_0x3cd308[_0x3e72aa('0x55c')]['reportedViewFrom']&&_0x3cd308['display']['viewTo']==_0x3cd308[_0x3e72aa('0x55c')]['reportedViewTo']||(_0x59a875['signal'](_0x3cd308,'viewportChange',_0x3cd308,_0x3cd308[_0x3e72aa('0x55c')]['viewFrom'],_0x3cd308[_0x3e72aa('0x55c')][_0x3e72aa('0xf2f')]),_0x3cd308[_0x3e72aa('0x55c')][_0x3e72aa('0x29c')]=_0x3cd308[_0x3e72aa('0x55c')][_0x3e72aa('0xa36')],_0x3cd308[_0x3e72aa('0x55c')][_0x3e72aa('0x32f')]=_0x3cd308[_0x3e72aa('0x55c')][_0x3e72aa('0xf2f')]);}function _0x2b6c6f(_0x3fd8de,_0x4c997a){var _0x1bbf08=_0x255d35,_0x13aedb=new _0x3fe25e(_0x3fd8de,_0x4c997a);if(_0x42dfe6(_0x3fd8de,_0x13aedb)){_0x328ad5(_0x3fd8de),_0x58dfbb(_0x3fd8de,_0x13aedb);var _0x1cd2bf=_0x1f296d(_0x3fd8de);_0x377b46(_0x3fd8de),_0x41bd9e(_0x3fd8de,_0x1cd2bf),_0x293858(_0x3fd8de,_0x1cd2bf),_0x13aedb[_0x1bbf08('0x1061')]();}}function _0x5e6615(_0x106233){var _0x4ecaef=_0x255d35,_0x4b4410=_0x106233[_0x4ecaef('0x3f')][_0x4ecaef('0x969')];_0x106233[_0x4ecaef('0x503')]['style']['marginLeft']=_0x4b4410+'px';}function _0x293858(_0x4342a9,_0x4e75ae){var _0x598a49=_0x255d35;_0x4342a9['display'][_0x598a49('0x503')][_0x598a49('0x1cd')][_0x598a49('0x955')]=_0x4e75ae[_0x598a49('0xfde')]+'px',_0x4342a9[_0x598a49('0x55c')][_0x598a49('0xe81')][_0x598a49('0x1cd')][_0x598a49('0x62d')]=_0x4e75ae[_0x598a49('0xfde')]+'px',_0x4342a9['display']['gutters'][_0x598a49('0x1cd')][_0x598a49('0x7f0')]=_0x4e75ae[_0x598a49('0xfde')]+_0x4342a9[_0x598a49('0x55c')][_0x598a49('0xc0c')]+_0x55ae2c(_0x4342a9)+'px';}function _0x21285d(_0x58aa6c){var _0x1d7077=_0x255d35,_0x2cc9a1=_0x58aa6c[_0x1d7077('0x55c')],_0x3afe15=_0x2cc9a1['view'];if(_0x2cc9a1['alignWidgets']||_0x2cc9a1['gutters'][_0x1d7077('0xdfb')]&&_0x58aa6c[_0x1d7077('0x631')]['fixedGutter']){for(var _0x3b0114=_0x6c9063(_0x2cc9a1)-_0x2cc9a1[_0x1d7077('0x819')]['scrollLeft']+_0x58aa6c[_0x1d7077('0xf37')][_0x1d7077('0x4ba')],_0x90f93d=_0x2cc9a1[_0x1d7077('0x3f')][_0x1d7077('0x969')],_0x198a8c=_0x3b0114+'px',_0xeb5a8=0x0;_0xeb5a8<_0x3afe15[_0x1d7077('0x525')];_0xeb5a8++)if(!_0x3afe15[_0xeb5a8][_0x1d7077('0xdc0')]){_0x58aa6c[_0x1d7077('0x631')][_0x1d7077('0xe1f')]&&(_0x3afe15[_0xeb5a8][_0x1d7077('0x968')]&&(_0x3afe15[_0xeb5a8][_0x1d7077('0x968')][_0x1d7077('0x1cd')]['left']=_0x198a8c),_0x3afe15[_0xeb5a8]['gutterBackground']&&(_0x3afe15[_0xeb5a8]['gutterBackground']['style']['left']=_0x198a8c));var _0x3d0ea4=_0x3afe15[_0xeb5a8][_0x1d7077('0x17f')];if(_0x3d0ea4)for(var _0x37299e=0x0;_0x37299e<_0x3d0ea4[_0x1d7077('0x525')];_0x37299e++)_0x3d0ea4[_0x37299e]['style'][_0x1d7077('0xbab')]=_0x198a8c;}_0x58aa6c[_0x1d7077('0x631')][_0x1d7077('0xe1f')]&&(_0x2cc9a1[_0x1d7077('0x3f')][_0x1d7077('0x1cd')][_0x1d7077('0xbab')]=_0x3b0114+_0x90f93d+'px');}}function _0x329a5c(_0x598a5b){var _0x144f5d=_0x255d35;if(!_0x598a5b[_0x144f5d('0x631')]['lineNumbers'])return!0x1;var _0x20c68d=_0x598a5b[_0x144f5d('0xf37')],_0x177546=_0x5f1964(_0x598a5b[_0x144f5d('0x631')],_0x20c68d[_0x144f5d('0xe3c')]+_0x20c68d[_0x144f5d('0x844')]-0x1),_0x45b6f8=_0x598a5b[_0x144f5d('0x55c')];if(_0x177546[_0x144f5d('0x525')]!=_0x45b6f8[_0x144f5d('0x50c')]){var _0x334772=_0x45b6f8[_0x144f5d('0xc62')][_0x144f5d('0x11be')](_0x31f23b(_0x144f5d('0x7fc'),[_0x31f23b(_0x144f5d('0x7fc'),_0x177546)],_0x144f5d('0xca3'))),_0x3f4584=_0x334772['firstChild'][_0x144f5d('0x969')],_0x512c43=_0x334772['offsetWidth']-_0x3f4584;return _0x45b6f8[_0x144f5d('0x11c8')][_0x144f5d('0x1cd')][_0x144f5d('0xa7b')]='',_0x45b6f8[_0x144f5d('0xed8')]=Math[_0x144f5d('0xf65')](_0x3f4584,_0x45b6f8[_0x144f5d('0x11c8')][_0x144f5d('0x969')]-_0x512c43)+0x1,_0x45b6f8[_0x144f5d('0x94f')]=_0x45b6f8[_0x144f5d('0xed8')]+_0x512c43,_0x45b6f8[_0x144f5d('0x50c')]=_0x45b6f8[_0x144f5d('0xed8')]?_0x177546[_0x144f5d('0x525')]:-0x1,_0x45b6f8[_0x144f5d('0x11c8')][_0x144f5d('0x1cd')]['width']=_0x45b6f8[_0x144f5d('0x94f')]+'px',_0x5e6615(_0x598a5b[_0x144f5d('0x55c')]),!0x0;}return!0x1;}function _0x5685f9(_0x1c9041,_0x152b26){var _0x3bca02=_0x255d35;for(var _0x50b5b4=[],_0x5dd80e=!0x1,_0x3aaa78=0x0;_0x3aaa78<_0x1c9041[_0x3bca02('0x525')];_0x3aaa78++){var _0x43ceaf=_0x1c9041[_0x3aaa78],_0x144f40=null;if('string'!=typeof _0x43ceaf&&(_0x144f40=_0x43ceaf[_0x3bca02('0x1cd')],_0x43ceaf=_0x43ceaf[_0x3bca02('0x1bd')]),_0x3bca02('0xe53')==_0x43ceaf){if(!_0x152b26)continue;_0x5dd80e=!0x0;}_0x50b5b4[_0x3bca02('0x8f8')]({'className':_0x43ceaf,'style':_0x144f40});}return _0x152b26&&!_0x5dd80e&&_0x50b5b4['push']({'className':_0x3bca02('0xe53'),'style':null}),_0x50b5b4;}function _0x4eb3f7(_0x297dca){var _0x1ed6fe=_0x255d35,_0x189392=_0x297dca[_0x1ed6fe('0x3f')],_0x281712=_0x297dca[_0x1ed6fe('0x1098')];_0x294f84(_0x189392),_0x297dca['lineGutter']=null;for(var _0x3822ff=0x0;_0x3822ff<_0x281712[_0x1ed6fe('0x525')];++_0x3822ff){var _0x5e5232=_0x281712[_0x3822ff],_0x1f22bf=_0x5e5232['className'],_0x3e7805=_0x5e5232['style'],_0x43fc3e=_0x189392[_0x1ed6fe('0x11be')](_0x31f23b(_0x1ed6fe('0x7fc'),null,_0x1ed6fe('0x4c6')+_0x1f22bf));_0x3e7805&&(_0x43fc3e[_0x1ed6fe('0x1cd')][_0x1ed6fe('0x77d')]=_0x3e7805),'CodeMirror-linenumbers'==_0x1f22bf&&(_0x297dca[_0x1ed6fe('0x11c8')]=_0x43fc3e,_0x43fc3e['style']['width']=(_0x297dca[_0x1ed6fe('0x94f')]||0x1)+'px');}_0x189392[_0x1ed6fe('0x1cd')][_0x1ed6fe('0x55c')]=_0x281712[_0x1ed6fe('0x525')]?'':_0x1ed6fe('0x1c1'),_0x5e6615(_0x297dca);}function _0x4bfcd4(_0x109d56){var _0xe85c4c=_0x255d35;_0x4eb3f7(_0x109d56[_0xe85c4c('0x55c')]),_0x18ce28(_0x109d56),_0x21285d(_0x109d56);}function _0x212409(_0x503362,_0x5c374c,_0x2777e2,_0x7e875){var _0x2c8dba=_0x255d35,_0x38e759=this;this['input']=_0x2777e2,_0x38e759[_0x2c8dba('0x3e3')]=_0x31f23b(_0x2c8dba('0x7fc'),null,_0x2c8dba('0x868')),_0x38e759[_0x2c8dba('0x3e3')][_0x2c8dba('0xfdc')](_0x2c8dba('0x229'),_0x2c8dba('0xa04')),_0x38e759[_0x2c8dba('0x50a')]=_0x31f23b(_0x2c8dba('0x7fc'),null,_0x2c8dba('0x922')),_0x38e759[_0x2c8dba('0x50a')][_0x2c8dba('0xfdc')](_0x2c8dba('0x229'),'true'),_0x38e759['lineDiv']=_0x14455d('div',null,_0x2c8dba('0x3f3')),_0x38e759[_0x2c8dba('0x2d7')]=_0x31f23b(_0x2c8dba('0x7fc'),null,null,_0x2c8dba('0x994')),_0x38e759['cursorDiv']=_0x31f23b(_0x2c8dba('0x7fc'),null,_0x2c8dba('0x24d')),_0x38e759[_0x2c8dba('0xc62')]=_0x31f23b(_0x2c8dba('0x7fc'),null,_0x2c8dba('0x109e')),_0x38e759[_0x2c8dba('0xa72')]=_0x31f23b('div',null,_0x2c8dba('0x109e')),_0x38e759['lineSpace']=_0x14455d(_0x2c8dba('0x7fc'),[_0x38e759[_0x2c8dba('0xc62')],_0x38e759[_0x2c8dba('0xa72')],_0x38e759[_0x2c8dba('0x2d7')],_0x38e759[_0x2c8dba('0xb4f')],_0x38e759[_0x2c8dba('0x1147')]],null,_0x2c8dba('0xd1a'));var _0x3a17f9=_0x14455d(_0x2c8dba('0x7fc'),[_0x38e759[_0x2c8dba('0xeb2')]],_0x2c8dba('0x11c7'));_0x38e759[_0x2c8dba('0xe52')]=_0x31f23b(_0x2c8dba('0x7fc'),[_0x3a17f9],null,_0x2c8dba('0xaa2')),_0x38e759[_0x2c8dba('0x503')]=_0x31f23b(_0x2c8dba('0x7fc'),[_0x38e759[_0x2c8dba('0xe52')]],_0x2c8dba('0xa32')),_0x38e759[_0x2c8dba('0x111')]=null,_0x38e759[_0x2c8dba('0xe81')]=_0x31f23b('div',null,null,_0x2c8dba('0x25d')),_0x38e759[_0x2c8dba('0x3f')]=_0x31f23b(_0x2c8dba('0x7fc'),null,_0x2c8dba('0x1b8')),_0x38e759['lineGutter']=null,_0x38e759[_0x2c8dba('0x819')]=_0x31f23b(_0x2c8dba('0x7fc'),[_0x38e759[_0x2c8dba('0x503')],_0x38e759[_0x2c8dba('0xe81')],_0x38e759[_0x2c8dba('0x3f')]],_0x2c8dba('0x7f5')),_0x38e759[_0x2c8dba('0x819')][_0x2c8dba('0xfdc')](_0x2c8dba('0x322'),'-1'),_0x38e759[_0x2c8dba('0x701')]=_0x31f23b(_0x2c8dba('0x7fc'),[_0x38e759[_0x2c8dba('0x3e3')],_0x38e759[_0x2c8dba('0x50a')],_0x38e759[_0x2c8dba('0x819')]],_0x2c8dba('0xb28')),_0x5d31d6&&_0x5275d9<0x8&&(_0x38e759[_0x2c8dba('0x3f')][_0x2c8dba('0x1cd')][_0x2c8dba('0x77f')]=-0x1,_0x38e759[_0x2c8dba('0x819')][_0x2c8dba('0x1cd')]['paddingRight']=0x0),_0x153ccc||_0x3505d1&&_0x53e5ce||(_0x38e759[_0x2c8dba('0x819')][_0x2c8dba('0x4d2')]=!0x0),_0x503362&&(_0x503362[_0x2c8dba('0x11be')]?_0x503362['appendChild'](_0x38e759['wrapper']):_0x503362(_0x38e759[_0x2c8dba('0x701')])),_0x38e759[_0x2c8dba('0xa36')]=_0x38e759[_0x2c8dba('0xf2f')]=_0x5c374c[_0x2c8dba('0xe3c')],_0x38e759[_0x2c8dba('0x29c')]=_0x38e759[_0x2c8dba('0x32f')]=_0x5c374c[_0x2c8dba('0xe3c')],_0x38e759['view']=[],_0x38e759[_0x2c8dba('0x9d3')]=null,_0x38e759[_0x2c8dba('0xade')]=null,_0x38e759['viewOffset']=0x0,_0x38e759[_0x2c8dba('0x29f')]=_0x38e759[_0x2c8dba('0x941')]=0x0,_0x38e759[_0x2c8dba('0x1079')]=null,_0x38e759['nativeBarWidth']=_0x38e759[_0x2c8dba('0xc0c')]=_0x38e759[_0x2c8dba('0xbad')]=0x0,_0x38e759[_0x2c8dba('0x3c4')]=!0x1,_0x38e759[_0x2c8dba('0x94f')]=_0x38e759[_0x2c8dba('0xed8')]=_0x38e759[_0x2c8dba('0x50c')]=null,_0x38e759['alignWidgets']=!0x1,_0x38e759[_0x2c8dba('0xec8')]=_0x38e759['cachedTextHeight']=_0x38e759[_0x2c8dba('0x957')]=null,_0x38e759[_0x2c8dba('0x60d')]=null,_0x38e759['maxLineLength']=0x0,_0x38e759[_0x2c8dba('0x7aa')]=!0x1,_0x38e759[_0x2c8dba('0x676')]=_0x38e759[_0x2c8dba('0x7cd')]=_0x38e759[_0x2c8dba('0xabb')]=_0x38e759['wheelStartY']=null,_0x38e759[_0x2c8dba('0x8be')]=!0x1,_0x38e759[_0x2c8dba('0x170')]=null,_0x38e759[_0x2c8dba('0xbff')]=null,_0x38e759['gutterSpecs']=_0x5685f9(_0x7e875[_0x2c8dba('0x3f')],_0x7e875['lineNumbers']),_0x4eb3f7(_0x38e759),_0x2777e2[_0x2c8dba('0x2ae')](_0x38e759);}_0x3fe25e[_0x255d35('0x98c')][_0x255d35('0x6d5')]=function(_0x4941d6,_0x2b1295){var _0x2894f7=_0x255d35;_0x3f430b(_0x4941d6,_0x2b1295)&&this[_0x2894f7('0x6a0')]['push'](arguments);},_0x3fe25e['prototype'][_0x255d35('0x1061')]=function(){var _0x168bf3=_0x255d35;for(var _0x503a0b=0x0;_0x503a0b_0x517ec7[_0x17bc59('0x71a')],_0x2717b3=_0x517ec7[_0x17bc59('0xc10')]>_0x517ec7[_0x17bc59('0x1a1')];if(_0x16abe5&&_0x4eea33||_0x309160&&_0x2717b3){if(_0x309160&&_0x2841f0&&_0x153ccc)_0x467bba:for(var _0xd13c86=_0x4ba1e5['target'],_0x3bc7bb=_0x2e43dd[_0x17bc59('0x1132')];_0xd13c86!=_0x517ec7;_0xd13c86=_0xd13c86[_0x17bc59('0x64')])for(var _0x10f9d1=0x0;_0x10f9d1<_0x3bc7bb[_0x17bc59('0x525')];_0x10f9d1++)if(_0x3bc7bb[_0x10f9d1][_0x17bc59('0x5f')]==_0xd13c86){_0x136ada[_0x17bc59('0x55c')][_0x17bc59('0x11e3')]=_0xd13c86;break _0x467bba;}if(_0x16abe5&&!_0x3505d1&&!_0x58a491&&null!=_0x35b2ba)return _0x309160&&_0x2717b3&&_0x2c9df2(_0x136ada,Math[_0x17bc59('0xf65')](0x0,_0x517ec7['scrollTop']+_0x309160*_0x35b2ba)),_0x33a7d6(_0x136ada,Math['max'](0x0,_0x517ec7[_0x17bc59('0x4ba')]+_0x16abe5*_0x35b2ba)),(!_0x309160||_0x309160&&_0x2717b3)&&_0x12a3b5(_0x4ba1e5),void(_0x2e43dd[_0x17bc59('0xabb')]=null);if(_0x309160&&null!=_0x35b2ba){var _0x220534=_0x309160*_0x35b2ba,_0xa446ba=_0x136ada['doc']['scrollTop'],_0x44e357=_0xa446ba+_0x2e43dd[_0x17bc59('0x701')][_0x17bc59('0x1a1')];_0x220534<0x0?_0xa446ba=Math['max'](0x0,_0xa446ba+_0x220534-0x32):_0x44e357=Math[_0x17bc59('0xc0d')](_0x136ada[_0x17bc59('0xf37')]['height'],_0x44e357+_0x220534+0x32),_0x2b6c6f(_0x136ada,{'top':_0xa446ba,'bottom':_0x44e357});}_0x4fb2b1<0x14&&(null==_0x2e43dd[_0x17bc59('0xabb')]?(_0x2e43dd[_0x17bc59('0xabb')]=_0x517ec7['scrollLeft'],_0x2e43dd[_0x17bc59('0xd7a')]=_0x517ec7[_0x17bc59('0xfa1')],_0x2e43dd['wheelDX']=_0x16abe5,_0x2e43dd[_0x17bc59('0x7cd')]=_0x309160,setTimeout(function(){var _0x194c0d=_0x17bc59;if(null!=_0x2e43dd[_0x194c0d('0xabb')]){var _0x40e489=_0x517ec7[_0x194c0d('0x4ba')]-_0x2e43dd[_0x194c0d('0xabb')],_0x12f371=_0x517ec7[_0x194c0d('0xfa1')]-_0x2e43dd[_0x194c0d('0xd7a')],_0x5ca08a=_0x12f371&&_0x2e43dd[_0x194c0d('0x7cd')]&&_0x12f371/_0x2e43dd[_0x194c0d('0x7cd')]||_0x40e489&&_0x2e43dd['wheelDX']&&_0x40e489/_0x2e43dd[_0x194c0d('0x676')];_0x2e43dd[_0x194c0d('0xabb')]=_0x2e43dd[_0x194c0d('0xd7a')]=null,_0x5ca08a&&(_0x35b2ba=(_0x35b2ba*_0x4fb2b1+_0x5ca08a)/(_0x4fb2b1+0x1),++_0x4fb2b1);}},0xc8)):(_0x2e43dd['wheelDX']+=_0x16abe5,_0x2e43dd[_0x17bc59('0x7cd')]+=_0x309160));}}_0x5d31d6?_0x35b2ba=-0.53:_0x3505d1?_0x35b2ba=0xf:_0x29e781?_0x35b2ba=-0.7:_0x30b785&&(_0x35b2ba=-0x1/0x3);var _0x1875a3=function(_0x3430a2,_0x2c1c33){this['ranges']=_0x3430a2,this['primIndex']=_0x2c1c33;};_0x1875a3['prototype'][_0x255d35('0x712')]=function(){var _0x1692df=_0x255d35;return this['ranges'][this[_0x1692df('0x1d7')]];},_0x1875a3[_0x255d35('0x98c')]['equals']=function(_0x311a03){var _0x1dad69=_0x255d35;if(_0x311a03==this)return!0x0;if(_0x311a03[_0x1dad69('0x1d7')]!=this[_0x1dad69('0x1d7')]||_0x311a03[_0x1dad69('0x32')]['length']!=this[_0x1dad69('0x32')][_0x1dad69('0x525')])return!0x1;for(var _0x6f380c=0x0;_0x6f380c=0x0&&_0x42d525(_0x1eabc9,_0x1608d8['to']())<=0x0)return _0x392445;}return-0x1;};var _0x47634a=function(_0x22c96d,_0x31739d){this['anchor']=_0x22c96d,this['head']=_0x31739d;};function _0x43bb47(_0x4c83f2,_0x99c31b,_0xf100c6){var _0x403bd4=_0x255d35,_0x142b0d=_0x4c83f2&&_0x4c83f2[_0x403bd4('0x631')][_0x403bd4('0xa3d')],_0x4d0683=_0x99c31b[_0xf100c6];_0x99c31b['sort'](function(_0x1c799e,_0x5e6564){var _0x47a402=_0x403bd4;return _0x42d525(_0x1c799e[_0x47a402('0x9d7')](),_0x5e6564['from']());}),_0xf100c6=_0x3ec288(_0x99c31b,_0x4d0683);for(var _0xd08b8a=0x1;_0xd08b8a<_0x99c31b['length'];_0xd08b8a++){var _0x3143e0=_0x99c31b[_0xd08b8a],_0x86011e=_0x99c31b[_0xd08b8a-0x1],_0x4f0369=_0x42d525(_0x86011e['to'](),_0x3143e0[_0x403bd4('0x9d7')]());if(_0x142b0d&&!_0x3143e0[_0x403bd4('0x1078')]()?_0x4f0369>0x0:_0x4f0369>=0x0){var _0x34d9cf=_0x31d615(_0x86011e[_0x403bd4('0x9d7')](),_0x3143e0[_0x403bd4('0x9d7')]()),_0x443fad=_0x36db9e(_0x86011e['to'](),_0x3143e0['to']()),_0x48f0e2=_0x86011e['empty']()?_0x3143e0[_0x403bd4('0x9d7')]()==_0x3143e0[_0x403bd4('0x5d4')]:_0x86011e['from']()==_0x86011e[_0x403bd4('0x5d4')];_0xd08b8a<=_0xf100c6&&--_0xf100c6,_0x99c31b[_0x403bd4('0xc19')](--_0xd08b8a,0x2,new _0x47634a(_0x48f0e2?_0x443fad:_0x34d9cf,_0x48f0e2?_0x34d9cf:_0x443fad));}}return new _0x1875a3(_0x99c31b,_0xf100c6);}function _0xb97fcb(_0x57ac4c,_0xa59e48){return new _0x1875a3([new _0x47634a(_0x57ac4c,_0xa59e48||_0x57ac4c)],0x0);}function _0x457bba(_0x2e470f){var _0x3e6d9b=_0x255d35;return _0x2e470f[_0x3e6d9b('0x768')]?_0xf7c6fb(_0x2e470f['from']['line']+_0x2e470f['text'][_0x3e6d9b('0x525')]-0x1,_0x15560b(_0x2e470f['text'])['length']+(0x1==_0x2e470f[_0x3e6d9b('0x768')][_0x3e6d9b('0x525')]?_0x2e470f[_0x3e6d9b('0x9d7')]['ch']:0x0)):_0x2e470f['to'];}function _0x179821(_0xa21831,_0x79c7b1){var _0x325ca2=_0x255d35;if(_0x42d525(_0xa21831,_0x79c7b1[_0x325ca2('0x9d7')])<0x0)return _0xa21831;if(_0x42d525(_0xa21831,_0x79c7b1['to'])<=0x0)return _0x457bba(_0x79c7b1);var _0x33dfdd=_0xa21831[_0x325ca2('0xde2')]+_0x79c7b1[_0x325ca2('0x768')]['length']-(_0x79c7b1['to']['line']-_0x79c7b1['from'][_0x325ca2('0xde2')])-0x1,_0x4607ac=_0xa21831['ch'];return _0xa21831[_0x325ca2('0xde2')]==_0x79c7b1['to'][_0x325ca2('0xde2')]&&(_0x4607ac+=_0x457bba(_0x79c7b1)['ch']-_0x79c7b1['to']['ch']),_0xf7c6fb(_0x33dfdd,_0x4607ac);}function _0x5ce837(_0x52dd71,_0x51474d){var _0x5bcee0=_0x255d35;for(var _0x4cba25=[],_0x316069=0x0;_0x316069<_0x52dd71[_0x5bcee0('0x10f6')][_0x5bcee0('0x32')]['length'];_0x316069++){var _0x36711a=_0x52dd71[_0x5bcee0('0x10f6')][_0x5bcee0('0x32')][_0x316069];_0x4cba25[_0x5bcee0('0x8f8')](new _0x47634a(_0x179821(_0x36711a[_0x5bcee0('0x66d')],_0x51474d),_0x179821(_0x36711a[_0x5bcee0('0x5d4')],_0x51474d)));}return _0x43bb47(_0x52dd71['cm'],_0x4cba25,_0x52dd71[_0x5bcee0('0x10f6')][_0x5bcee0('0x1d7')]);}function _0x46a333(_0x261d2e,_0x1d969a,_0x288008){var _0x14224d=_0x255d35;return _0x261d2e[_0x14224d('0xde2')]==_0x1d969a['line']?_0xf7c6fb(_0x288008[_0x14224d('0xde2')],_0x261d2e['ch']-_0x1d969a['ch']+_0x288008['ch']):_0xf7c6fb(_0x288008['line']+(_0x261d2e['line']-_0x1d969a[_0x14224d('0xde2')]),_0x261d2e['ch']);}function _0x363fab(_0x27bd0d){var _0x5397cc=_0x255d35;_0x27bd0d['doc'][_0x5397cc('0x575')]=_0x59fed9(_0x27bd0d[_0x5397cc('0x631')],_0x27bd0d[_0x5397cc('0xf37')][_0x5397cc('0x5fe')]),_0x2f071a(_0x27bd0d);}function _0x2f071a(_0x34c037){var _0xd72c90=_0x255d35;_0x34c037[_0xd72c90('0xf37')][_0xd72c90('0x160')](function(_0x2519e7){var _0x161f1d=_0xd72c90;_0x2519e7[_0x161f1d('0x52')]&&(_0x2519e7[_0x161f1d('0x52')]=null),_0x2519e7[_0x161f1d('0x110b')]&&(_0x2519e7[_0x161f1d('0x110b')]=null);}),_0x34c037[_0xd72c90('0xf37')][_0xd72c90('0xef3')]=_0x34c037[_0xd72c90('0xf37')][_0xd72c90('0xba7')]=_0x34c037[_0xd72c90('0xf37')]['first'],_0x7dbcb2(_0x34c037,0x64),_0x34c037[_0xd72c90('0xfff')][_0xd72c90('0x1042')]++,_0x34c037[_0xd72c90('0x10e6')]&&_0x18ce28(_0x34c037);}function _0x3b54ea(_0x1a727e,_0x567c28){var _0x3d27dc=_0x255d35;return 0x0==_0x567c28[_0x3d27dc('0x9d7')]['ch']&&0x0==_0x567c28['to']['ch']&&''==_0x15560b(_0x567c28[_0x3d27dc('0x768')])&&(!_0x1a727e['cm']||_0x1a727e['cm'][_0x3d27dc('0x631')][_0x3d27dc('0x3c1')]);}function _0x2662f6(_0x24f54b,_0x348b26,_0x4c882c,_0x9cf82a){var _0x313d12=_0x255d35;function _0x4eee12(_0xc2624d){return _0x4c882c?_0x4c882c[_0xc2624d]:null;}function _0x4785de(_0x4ef831,_0x32df7e,_0x4635b8){var _0x532f2a=_0x3ab6;!function(_0xf848,_0x47cc9b,_0x994189,_0x2524b5){var _0x24c82b=_0x3ab6;_0xf848[_0x24c82b('0x768')]=_0x47cc9b,_0xf848[_0x24c82b('0x52')]&&(_0xf848['stateAfter']=null),_0xf848[_0x24c82b('0x110b')]&&(_0xf848[_0x24c82b('0x110b')]=null),null!=_0xf848[_0x24c82b('0x11b4')]&&(_0xf848[_0x24c82b('0x11b4')]=null),_0x35fd93(_0xf848),_0x2061e6(_0xf848,_0x994189);var _0x4756fe=_0x2524b5?_0x2524b5(_0xf848):0x1;_0x4756fe!=_0xf848[_0x24c82b('0x7f0')]&&_0x2e3ca8(_0xf848,_0x4756fe);}(_0x4ef831,_0x32df7e,_0x4635b8,_0x9cf82a),_0x5470d1(_0x4ef831,_0x532f2a('0x4f6'),_0x4ef831,_0x348b26);}function _0x5df379(_0x4f632d,_0x1325bb){var _0x2ca4e3=_0x3ab6;for(var _0x475cf7=[],_0x52ad12=_0x4f632d;_0x52ad12<_0x1325bb;++_0x52ad12)_0x475cf7[_0x2ca4e3('0x8f8')](new _0x44f9cd(_0x163ebb[_0x52ad12],_0x4eee12(_0x52ad12),_0x9cf82a));return _0x475cf7;}var _0x1aaec8=_0x348b26[_0x313d12('0x9d7')],_0x287a4e=_0x348b26['to'],_0x163ebb=_0x348b26['text'],_0x5ad4aa=_0x1b58dd(_0x24f54b,_0x1aaec8['line']),_0xfc9a57=_0x1b58dd(_0x24f54b,_0x287a4e['line']),_0x3ee2d8=_0x15560b(_0x163ebb),_0x3c76e3=_0x4eee12(_0x163ebb[_0x313d12('0x525')]-0x1),_0x487612=_0x287a4e[_0x313d12('0xde2')]-_0x1aaec8['line'];if(_0x348b26['full'])_0x24f54b[_0x313d12('0x4e2')](0x0,_0x5df379(0x0,_0x163ebb[_0x313d12('0x525')])),_0x24f54b[_0x313d12('0x109c')](_0x163ebb['length'],_0x24f54b[_0x313d12('0x844')]-_0x163ebb[_0x313d12('0x525')]);else{if(_0x3b54ea(_0x24f54b,_0x348b26)){var _0xa4a491=_0x5df379(0x0,_0x163ebb[_0x313d12('0x525')]-0x1);_0x4785de(_0xfc9a57,_0xfc9a57[_0x313d12('0x768')],_0x3c76e3),_0x487612&&_0x24f54b[_0x313d12('0x109c')](_0x1aaec8['line'],_0x487612),_0xa4a491[_0x313d12('0x525')]&&_0x24f54b['insert'](_0x1aaec8[_0x313d12('0xde2')],_0xa4a491);}else{if(_0x5ad4aa==_0xfc9a57){if(0x1==_0x163ebb[_0x313d12('0x525')])_0x4785de(_0x5ad4aa,_0x5ad4aa[_0x313d12('0x768')][_0x313d12('0xbc0')](0x0,_0x1aaec8['ch'])+_0x3ee2d8+_0x5ad4aa[_0x313d12('0x768')][_0x313d12('0xbc0')](_0x287a4e['ch']),_0x3c76e3);else{var _0x12dcc9=_0x5df379(0x1,_0x163ebb['length']-0x1);_0x12dcc9['push'](new _0x44f9cd(_0x3ee2d8+_0x5ad4aa[_0x313d12('0x768')][_0x313d12('0xbc0')](_0x287a4e['ch']),_0x3c76e3,_0x9cf82a)),_0x4785de(_0x5ad4aa,_0x5ad4aa[_0x313d12('0x768')]['slice'](0x0,_0x1aaec8['ch'])+_0x163ebb[0x0],_0x4eee12(0x0)),_0x24f54b[_0x313d12('0x4e2')](_0x1aaec8['line']+0x1,_0x12dcc9);}}else{if(0x1==_0x163ebb['length'])_0x4785de(_0x5ad4aa,_0x5ad4aa[_0x313d12('0x768')][_0x313d12('0xbc0')](0x0,_0x1aaec8['ch'])+_0x163ebb[0x0]+_0xfc9a57[_0x313d12('0x768')][_0x313d12('0xbc0')](_0x287a4e['ch']),_0x4eee12(0x0)),_0x24f54b[_0x313d12('0x109c')](_0x1aaec8[_0x313d12('0xde2')]+0x1,_0x487612);else{_0x4785de(_0x5ad4aa,_0x5ad4aa[_0x313d12('0x768')][_0x313d12('0xbc0')](0x0,_0x1aaec8['ch'])+_0x163ebb[0x0],_0x4eee12(0x0)),_0x4785de(_0xfc9a57,_0x3ee2d8+_0xfc9a57[_0x313d12('0x768')][_0x313d12('0xbc0')](_0x287a4e['ch']),_0x3c76e3);var _0x450e27=_0x5df379(0x1,_0x163ebb[_0x313d12('0x525')]-0x1);_0x487612>0x1&&_0x24f54b['remove'](_0x1aaec8['line']+0x1,_0x487612-0x1),_0x24f54b[_0x313d12('0x4e2')](_0x1aaec8[_0x313d12('0xde2')]+0x1,_0x450e27);}}}}_0x5470d1(_0x24f54b,_0x313d12('0x4f6'),_0x24f54b,_0x348b26);}function _0x838986(_0x570f64,_0x2178fc,_0x37da2e){!function _0x398f83(_0xd8c27a,_0x453117,_0x36d232){var _0x22ce46=_0x3ab6;if(_0xd8c27a[_0x22ce46('0xf33')])for(var _0x3a0e1b=0x0;_0x3a0e1b<_0xd8c27a[_0x22ce46('0xf33')][_0x22ce46('0x525')];++_0x3a0e1b){var _0x19bc82=_0xd8c27a[_0x22ce46('0xf33')][_0x3a0e1b];if(_0x19bc82[_0x22ce46('0xf37')]!=_0x453117){var _0x1b35bb=_0x36d232&&_0x19bc82[_0x22ce46('0xd59')];_0x37da2e&&!_0x1b35bb||(_0x2178fc(_0x19bc82[_0x22ce46('0xf37')],_0x1b35bb),_0x398f83(_0x19bc82[_0x22ce46('0xf37')],_0xd8c27a,_0x1b35bb));}}}(_0x570f64,null,!0x0);}function _0x4cc752(_0x2e4252,_0x158db6){var _0x3dedbb=_0x255d35;if(_0x158db6['cm'])throw new Error(_0x3dedbb('0x12d'));_0x2e4252['doc']=_0x158db6,_0x158db6['cm']=_0x2e4252,_0x4df661(_0x2e4252),_0x363fab(_0x2e4252),_0x591272(_0x2e4252),_0x2e4252[_0x3dedbb('0x631')]['lineWrapping']||_0x123b91(_0x2e4252),_0x2e4252['options'][_0x3dedbb('0x575')]=_0x158db6[_0x3dedbb('0x5fe')],_0x18ce28(_0x2e4252);}function _0x591272(_0x1306de){var _0x10f567=_0x255d35;(_0x10f567('0xb2f')==_0x1306de[_0x10f567('0xf37')]['direction']?_0x33fcac:_0x1a7f4e)(_0x1306de[_0x10f567('0x55c')][_0x10f567('0x1147')],_0x10f567('0x8c5'));}function _0x459eb5(_0x3c3d36){var _0x25a299=_0x255d35;this['done']=[],this[_0x25a299('0x690')]=[],this[_0x25a299('0xd2a')]=0x1/0x0,this[_0x25a299('0x8a8')]=this[_0x25a299('0xd32')]=0x0,this[_0x25a299('0x351')]=this[_0x25a299('0xb4c')]=null,this[_0x25a299('0x191')]=this[_0x25a299('0xacf')]=null,this[_0x25a299('0x89c')]=this[_0x25a299('0x852')]=_0x3c3d36||0x1;}function _0x2c2e18(_0x1420f1,_0x2a083f){var _0x52f1f4=_0x255d35,_0x4919d5={'from':_0x4a2b1b(_0x2a083f[_0x52f1f4('0x9d7')]),'to':_0x457bba(_0x2a083f),'text':_0x1e2186(_0x1420f1,_0x2a083f[_0x52f1f4('0x9d7')],_0x2a083f['to'])};return _0x18fd6b(_0x1420f1,_0x4919d5,_0x2a083f[_0x52f1f4('0x9d7')][_0x52f1f4('0xde2')],_0x2a083f['to']['line']+0x1),_0x838986(_0x1420f1,function(_0x2052e1){var _0x3111ff=_0x52f1f4;return _0x18fd6b(_0x2052e1,_0x4919d5,_0x2a083f[_0x3111ff('0x9d7')][_0x3111ff('0xde2')],_0x2a083f['to'][_0x3111ff('0xde2')]+0x1);},!0x0),_0x4919d5;}function _0x78bf66(_0x524138){var _0x1c289e=_0x255d35;for(;_0x524138[_0x1c289e('0x525')];){if(!_0x15560b(_0x524138)[_0x1c289e('0x32')])break;_0x524138[_0x1c289e('0x57f')]();}}function _0x178c21(_0x4d2a7a,_0x321501,_0x1333b8,_0x23fc31){var _0x5d3252=_0x255d35,_0xb15d85=_0x4d2a7a['history'];_0xb15d85[_0x5d3252('0x690')]['length']=0x0;var _0x47b938,_0x4b99a9,_0x48486a=+new Date();if((_0xb15d85[_0x5d3252('0x351')]==_0x23fc31||_0xb15d85[_0x5d3252('0x191')]==_0x321501[_0x5d3252('0x11d2')]&&_0x321501[_0x5d3252('0x11d2')]&&('+'==_0x321501['origin'][_0x5d3252('0xc8e')](0x0)&&_0xb15d85[_0x5d3252('0x8a8')]>_0x48486a-(_0x4d2a7a['cm']?_0x4d2a7a['cm'][_0x5d3252('0x631')][_0x5d3252('0x2c0')]:0x1f4)||'*'==_0x321501['origin'][_0x5d3252('0xc8e')](0x0)))&&(_0x47b938=function(_0x543710,_0x55b8f6){var _0x426925=_0x5d3252;return _0x55b8f6?(_0x78bf66(_0x543710['done']),_0x15560b(_0x543710[_0x426925('0x10cf')])):_0x543710[_0x426925('0x10cf')][_0x426925('0x525')]&&!_0x15560b(_0x543710[_0x426925('0x10cf')])[_0x426925('0x32')]?_0x15560b(_0x543710[_0x426925('0x10cf')]):_0x543710[_0x426925('0x10cf')]['length']>0x1&&!_0x543710[_0x426925('0x10cf')][_0x543710[_0x426925('0x10cf')][_0x426925('0x525')]-0x2][_0x426925('0x32')]?(_0x543710[_0x426925('0x10cf')][_0x426925('0x57f')](),_0x15560b(_0x543710[_0x426925('0x10cf')])):void 0x0;}(_0xb15d85,_0xb15d85[_0x5d3252('0x351')]==_0x23fc31)))_0x4b99a9=_0x15560b(_0x47b938[_0x5d3252('0xd8f')]),0x0==_0x42d525(_0x321501[_0x5d3252('0x9d7')],_0x321501['to'])&&0x0==_0x42d525(_0x321501[_0x5d3252('0x9d7')],_0x4b99a9['to'])?_0x4b99a9['to']=_0x457bba(_0x321501):_0x47b938['changes']['push'](_0x2c2e18(_0x4d2a7a,_0x321501));else{var _0x1ced70=_0x15560b(_0xb15d85['done']);for(_0x1ced70&&_0x1ced70[_0x5d3252('0x32')]||_0x11eb4f(_0x4d2a7a['sel'],_0xb15d85['done']),_0x47b938={'changes':[_0x2c2e18(_0x4d2a7a,_0x321501)],'generation':_0xb15d85['generation']},_0xb15d85[_0x5d3252('0x10cf')][_0x5d3252('0x8f8')](_0x47b938);_0xb15d85[_0x5d3252('0x10cf')][_0x5d3252('0x525')]>_0xb15d85['undoDepth'];)_0xb15d85[_0x5d3252('0x10cf')][_0x5d3252('0x8be')](),_0xb15d85[_0x5d3252('0x10cf')][0x0][_0x5d3252('0x32')]||_0xb15d85[_0x5d3252('0x10cf')][_0x5d3252('0x8be')]();}_0xb15d85[_0x5d3252('0x10cf')]['push'](_0x1333b8),_0xb15d85[_0x5d3252('0x89c')]=++_0xb15d85[_0x5d3252('0x852')],_0xb15d85['lastModTime']=_0xb15d85[_0x5d3252('0xd32')]=_0x48486a,_0xb15d85[_0x5d3252('0x351')]=_0xb15d85[_0x5d3252('0xb4c')]=_0x23fc31,_0xb15d85[_0x5d3252('0x191')]=_0xb15d85['lastSelOrigin']=_0x321501['origin'],_0x4b99a9||_0x508e40(_0x4d2a7a,'historyAdded');}function _0xa05b39(_0x34f6ec,_0x21862f,_0x12bf36,_0x2a9394){var _0x415233=_0x255d35,_0x32a0f5=_0x34f6ec[_0x415233('0xb43')],_0x39b702=_0x2a9394&&_0x2a9394[_0x415233('0x11d2')];_0x12bf36==_0x32a0f5['lastSelOp']||_0x39b702&&_0x32a0f5['lastSelOrigin']==_0x39b702&&(_0x32a0f5[_0x415233('0x8a8')]==_0x32a0f5[_0x415233('0xd32')]&&_0x32a0f5[_0x415233('0x191')]==_0x39b702||function(_0x5b5cde,_0x333973,_0x5d9d3e,_0x2db4c3){var _0x220bc1=_0x415233,_0x4aea16=_0x333973[_0x220bc1('0xc8e')](0x0);return'*'==_0x4aea16||'+'==_0x4aea16&&_0x5d9d3e['ranges']['length']==_0x2db4c3[_0x220bc1('0x32')]['length']&&_0x5d9d3e[_0x220bc1('0xdea')]()==_0x2db4c3[_0x220bc1('0xdea')]()&&new Date()-_0x5b5cde[_0x220bc1('0xb43')]['lastSelTime']<=(_0x5b5cde['cm']?_0x5b5cde['cm'][_0x220bc1('0x631')][_0x220bc1('0x2c0')]:0x1f4);}(_0x34f6ec,_0x39b702,_0x15560b(_0x32a0f5[_0x415233('0x10cf')]),_0x21862f))?_0x32a0f5[_0x415233('0x10cf')][_0x32a0f5[_0x415233('0x10cf')]['length']-0x1]=_0x21862f:_0x11eb4f(_0x21862f,_0x32a0f5[_0x415233('0x10cf')]),_0x32a0f5[_0x415233('0xd32')]=+new Date(),_0x32a0f5['lastSelOrigin']=_0x39b702,_0x32a0f5[_0x415233('0xb4c')]=_0x12bf36,_0x2a9394&&!0x1!==_0x2a9394[_0x415233('0x641')]&&_0x78bf66(_0x32a0f5[_0x415233('0x690')]);}function _0x11eb4f(_0x572916,_0x549f1f){var _0x5b4b60=_0x255d35,_0x30b150=_0x15560b(_0x549f1f);_0x30b150&&_0x30b150[_0x5b4b60('0x32')]&&_0x30b150[_0x5b4b60('0xdd4')](_0x572916)||_0x549f1f[_0x5b4b60('0x8f8')](_0x572916);}function _0x18fd6b(_0x8efe4e,_0x2ffbca,_0x373267,_0x433de1){var _0x335cd3=_0x255d35,_0x347160=_0x2ffbca[_0x335cd3('0x92b')+_0x8efe4e['id']],_0x24b7e0=0x0;_0x8efe4e[_0x335cd3('0x160')](Math['max'](_0x8efe4e[_0x335cd3('0xe3c')],_0x373267),Math[_0x335cd3('0xc0d')](_0x8efe4e[_0x335cd3('0xe3c')]+_0x8efe4e[_0x335cd3('0x844')],_0x433de1),function(_0x1b1c38){var _0x1368ef=_0x335cd3;_0x1b1c38['markedSpans']&&((_0x347160||(_0x347160=_0x2ffbca[_0x1368ef('0x92b')+_0x8efe4e['id']]={}))[_0x24b7e0]=_0x1b1c38[_0x1368ef('0xe33')]),++_0x24b7e0;});}function _0xa55196(_0x467769){var _0x138c42=_0x255d35;if(!_0x467769)return null;for(var _0x39c336,_0xf76c3a=0x0;_0xf76c3a<_0x467769[_0x138c42('0x525')];++_0xf76c3a)_0x467769[_0xf76c3a][_0x138c42('0x85c')][_0x138c42('0x93b')]?_0x39c336||(_0x39c336=_0x467769['slice'](0x0,_0xf76c3a)):_0x39c336&&_0x39c336[_0x138c42('0x8f8')](_0x467769[_0xf76c3a]);return _0x39c336?_0x39c336[_0x138c42('0x525')]?_0x39c336:null:_0x467769;}function _0x11fe3b(_0x21b1a,_0x29c93e){var _0x8dd118=_0x255d35,_0x1ef0fe=function(_0x2dc4e8,_0x39540d){var _0x114390=_0x3ab6,_0x3b43ea=_0x39540d[_0x114390('0x92b')+_0x2dc4e8['id']];if(!_0x3b43ea)return null;for(var _0x17bb96=[],_0x46ac57=0x0;_0x46ac57<_0x39540d[_0x114390('0x768')][_0x114390('0x525')];++_0x46ac57)_0x17bb96[_0x114390('0x8f8')](_0xa55196(_0x3b43ea[_0x46ac57]));return _0x17bb96;}(_0x21b1a,_0x29c93e),_0x254233=_0x2e94b5(_0x21b1a,_0x29c93e);if(!_0x1ef0fe)return _0x254233;if(!_0x254233)return _0x1ef0fe;for(var _0x2432a6=0x0;_0x2432a6<_0x1ef0fe[_0x8dd118('0x525')];++_0x2432a6){var _0x17a7ca=_0x1ef0fe[_0x2432a6],_0x587cd0=_0x254233[_0x2432a6];if(_0x17a7ca&&_0x587cd0)_0x2d0481:for(var _0x13f0e4=0x0;_0x13f0e4<_0x587cd0[_0x8dd118('0x525')];++_0x13f0e4){for(var _0x534b2d=_0x587cd0[_0x13f0e4],_0x44ab59=0x0;_0x44ab59<_0x17a7ca[_0x8dd118('0x525')];++_0x44ab59)if(_0x17a7ca[_0x44ab59][_0x8dd118('0x85c')]==_0x534b2d['marker'])continue _0x2d0481;_0x17a7ca[_0x8dd118('0x8f8')](_0x534b2d);}else _0x587cd0&&(_0x1ef0fe[_0x2432a6]=_0x587cd0);}return _0x1ef0fe;}function _0x5c871d(_0x1587ee,_0x19ccce,_0x3c8aad){var _0x462552=_0x255d35;for(var _0xfcef61=[],_0x51f31b=0x0;_0x51f31b<_0x1587ee[_0x462552('0x525')];++_0x51f31b){var _0x1ba4ac=_0x1587ee[_0x51f31b];if(_0x1ba4ac[_0x462552('0x32')])_0xfcef61['push'](_0x3c8aad?_0x1875a3[_0x462552('0x98c')][_0x462552('0x67e')][_0x462552('0x4b0')](_0x1ba4ac):_0x1ba4ac);else{var _0x544b43=_0x1ba4ac[_0x462552('0xd8f')],_0x454f60=[];_0xfcef61[_0x462552('0x8f8')]({'changes':_0x454f60});for(var _0x425f7a=0x0;_0x425f7a<_0x544b43[_0x462552('0x525')];++_0x425f7a){var _0x37024d=_0x544b43[_0x425f7a],_0x177696=void 0x0;if(_0x454f60['push']({'from':_0x37024d[_0x462552('0x9d7')],'to':_0x37024d['to'],'text':_0x37024d[_0x462552('0x768')]}),_0x19ccce)for(var _0x35ee14 in _0x37024d)(_0x177696=_0x35ee14[_0x462552('0x91e')](/^spans_(\d+)$/))&&_0x3ec288(_0x19ccce,Number(_0x177696[0x1]))>-0x1&&(_0x15560b(_0x454f60)[_0x35ee14]=_0x37024d[_0x35ee14],delete _0x37024d[_0x35ee14]);}}}return _0xfcef61;}function _0x542338(_0x48d128,_0x3bd9d2,_0x6a2fec,_0x11313f){var _0x5a4ce2=_0x255d35;if(_0x11313f){var _0x2e8cc4=_0x48d128[_0x5a4ce2('0x66d')];if(_0x6a2fec){var _0x404284=_0x42d525(_0x3bd9d2,_0x2e8cc4)<0x0;_0x404284!=_0x42d525(_0x6a2fec,_0x2e8cc4)<0x0?(_0x2e8cc4=_0x3bd9d2,_0x3bd9d2=_0x6a2fec):_0x404284!=_0x42d525(_0x3bd9d2,_0x6a2fec)<0x0&&(_0x3bd9d2=_0x6a2fec);}return new _0x47634a(_0x2e8cc4,_0x3bd9d2);}return new _0x47634a(_0x6a2fec||_0x3bd9d2,_0x3bd9d2);}function _0x5b3fb4(_0x21f03b,_0x13d263,_0x2389bd,_0x10428d,_0x2a7faa){var _0x43df4a=_0x255d35;null==_0x2a7faa&&(_0x2a7faa=_0x21f03b['cm']&&(_0x21f03b['cm'][_0x43df4a('0x55c')][_0x43df4a('0x8be')]||_0x21f03b['extend'])),_0x1fb018(_0x21f03b,new _0x1875a3([_0x542338(_0x21f03b[_0x43df4a('0x10f6')][_0x43df4a('0x712')](),_0x13d263,_0x2389bd,_0x2a7faa)],0x0),_0x10428d);}function _0xd12a99(_0x58d2cd,_0x480e0c,_0x1f9a86){var _0x50f01f=_0x255d35;for(var _0x260e14=[],_0x3b007b=_0x58d2cd['cm']&&(_0x58d2cd['cm'][_0x50f01f('0x55c')][_0x50f01f('0x8be')]||_0x58d2cd[_0x50f01f('0x1158')]),_0x14689d=0x0;_0x14689d<_0x58d2cd[_0x50f01f('0x10f6')]['ranges'][_0x50f01f('0x525')];_0x14689d++)_0x260e14[_0x14689d]=_0x542338(_0x58d2cd[_0x50f01f('0x10f6')][_0x50f01f('0x32')][_0x14689d],_0x480e0c[_0x14689d],null,_0x3b007b);_0x1fb018(_0x58d2cd,_0x43bb47(_0x58d2cd['cm'],_0x260e14,_0x58d2cd[_0x50f01f('0x10f6')]['primIndex']),_0x1f9a86);}function _0x454670(_0x55084b,_0x3e3137,_0x5e3ae5,_0x3ae10c){var _0xc1cb30=_0x255d35,_0x1db619=_0x55084b[_0xc1cb30('0x10f6')]['ranges']['slice'](0x0);_0x1db619[_0x3e3137]=_0x5e3ae5,_0x1fb018(_0x55084b,_0x43bb47(_0x55084b['cm'],_0x1db619,_0x55084b[_0xc1cb30('0x10f6')][_0xc1cb30('0x1d7')]),_0x3ae10c);}function _0xbcc5aa(_0x2487a4,_0x4eecc8,_0x776159,_0x46afa4){_0x1fb018(_0x2487a4,_0xb97fcb(_0x4eecc8,_0x776159),_0x46afa4);}function _0x42213d(_0x33f4ab,_0x5dbc5c,_0x1f8952){var _0x3c4cc0=_0x255d35,_0x5e6ca8=_0x33f4ab[_0x3c4cc0('0xb43')][_0x3c4cc0('0x10cf')],_0x1311b7=_0x15560b(_0x5e6ca8);_0x1311b7&&_0x1311b7[_0x3c4cc0('0x32')]?(_0x5e6ca8[_0x5e6ca8[_0x3c4cc0('0x525')]-0x1]=_0x5dbc5c,_0x14d3be(_0x33f4ab,_0x5dbc5c,_0x1f8952)):_0x1fb018(_0x33f4ab,_0x5dbc5c,_0x1f8952);}function _0x1fb018(_0xf656c0,_0x39cda5,_0x2bdca6){var _0x2a8477=_0x255d35;_0x14d3be(_0xf656c0,_0x39cda5,_0x2bdca6),_0xa05b39(_0xf656c0,_0xf656c0['sel'],_0xf656c0['cm']?_0xf656c0['cm'][_0x2a8477('0x10e6')]['id']:NaN,_0x2bdca6);}function _0x14d3be(_0x4ca1b6,_0x13608e,_0x4bf4f7){var _0x1e50e=_0x255d35;(_0x3f430b(_0x4ca1b6,_0x1e50e('0x1024'))||_0x4ca1b6['cm']&&_0x3f430b(_0x4ca1b6['cm'],_0x1e50e('0x1024')))&&(_0x13608e=function(_0x3312bf,_0x4989b1,_0xb2e39d){var _0x1b80eb=_0x1e50e,_0x1c4676={'ranges':_0x4989b1['ranges'],'update':function(_0x33cb6e){var _0x29913a=_0x3ab6;this[_0x29913a('0x32')]=[];for(var _0x32256f=0x0;_0x32256f<_0x33cb6e[_0x29913a('0x525')];_0x32256f++)this['ranges'][_0x32256f]=new _0x47634a(_0x364c36(_0x3312bf,_0x33cb6e[_0x32256f][_0x29913a('0x66d')]),_0x364c36(_0x3312bf,_0x33cb6e[_0x32256f][_0x29913a('0x5d4')]));},'origin':_0xb2e39d&&_0xb2e39d[_0x1b80eb('0x11d2')]};return _0x508e40(_0x3312bf,_0x1b80eb('0x1024'),_0x3312bf,_0x1c4676),_0x3312bf['cm']&&_0x508e40(_0x3312bf['cm'],'beforeSelectionChange',_0x3312bf['cm'],_0x1c4676),_0x1c4676[_0x1b80eb('0x32')]!=_0x4989b1[_0x1b80eb('0x32')]?_0x43bb47(_0x3312bf['cm'],_0x1c4676['ranges'],_0x1c4676['ranges']['length']-0x1):_0x4989b1;}(_0x4ca1b6,_0x13608e,_0x4bf4f7));var _0xc31282=_0x4bf4f7&&_0x4bf4f7[_0x1e50e('0xee2')]||(_0x42d525(_0x13608e[_0x1e50e('0x712')]()[_0x1e50e('0x5d4')],_0x4ca1b6[_0x1e50e('0x10f6')]['primary']()[_0x1e50e('0x5d4')])<0x0?-0x1:0x1);_0x5d09de(_0x4ca1b6,_0x538c85(_0x4ca1b6,_0x13608e,_0xc31282,!0x0)),_0x4bf4f7&&!0x1===_0x4bf4f7[_0x1e50e('0x9a')]||!_0x4ca1b6['cm']||_0x515b9d(_0x4ca1b6['cm']);}function _0x5d09de(_0x464169,_0x35b79f){var _0x5470d2=_0x255d35;_0x35b79f[_0x5470d2('0xdd4')](_0x464169[_0x5470d2('0x10f6')])||(_0x464169[_0x5470d2('0x10f6')]=_0x35b79f,_0x464169['cm']&&(_0x464169['cm']['curOp'][_0x5470d2('0xd83')]=0x1,_0x464169['cm'][_0x5470d2('0x10e6')][_0x5470d2('0xbcc')]=!0x0,_0x1f6531(_0x464169['cm'])),_0x5470d1(_0x464169,_0x5470d2('0x23b'),_0x464169));}function _0xe8eb1e(_0x161035){var _0x285ec6=_0x255d35;_0x5d09de(_0x161035,_0x538c85(_0x161035,_0x161035[_0x285ec6('0x10f6')],null,!0x1));}function _0x538c85(_0x5f83fd,_0x8297b5,_0x4eee1f,_0x4fbb5d){var _0x20d07b=_0x255d35;for(var _0xcd4d1f,_0x3f754e=0x0;_0x3f754e<_0x8297b5['ranges'][_0x20d07b('0x525')];_0x3f754e++){var _0x221e69=_0x8297b5['ranges'][_0x3f754e],_0x370ffd=_0x8297b5['ranges'][_0x20d07b('0x525')]==_0x5f83fd['sel'][_0x20d07b('0x32')]['length']&&_0x5f83fd[_0x20d07b('0x10f6')]['ranges'][_0x3f754e],_0x48e669=_0x32c771(_0x5f83fd,_0x221e69[_0x20d07b('0x66d')],_0x370ffd&&_0x370ffd[_0x20d07b('0x66d')],_0x4eee1f,_0x4fbb5d),_0x291533=_0x32c771(_0x5f83fd,_0x221e69['head'],_0x370ffd&&_0x370ffd[_0x20d07b('0x5d4')],_0x4eee1f,_0x4fbb5d);(_0xcd4d1f||_0x48e669!=_0x221e69[_0x20d07b('0x66d')]||_0x291533!=_0x221e69[_0x20d07b('0x5d4')])&&(_0xcd4d1f||(_0xcd4d1f=_0x8297b5[_0x20d07b('0x32')][_0x20d07b('0xbc0')](0x0,_0x3f754e)),_0xcd4d1f[_0x3f754e]=new _0x47634a(_0x48e669,_0x291533));}return _0xcd4d1f?_0x43bb47(_0x5f83fd['cm'],_0xcd4d1f,_0x8297b5[_0x20d07b('0x1d7')]):_0x8297b5;}function _0xd6b0f4(_0x328d8d,_0xc5554,_0x4d5d3d,_0xe5f98b,_0x211b47){var _0x288a8a=_0x255d35,_0x257c8d=_0x1b58dd(_0x328d8d,_0xc5554[_0x288a8a('0xde2')]);if(_0x257c8d['markedSpans'])for(var _0x171a1d=0x0;_0x171a1d<_0x257c8d[_0x288a8a('0xe33')]['length'];++_0x171a1d){var _0x2215e2=_0x257c8d[_0x288a8a('0xe33')][_0x171a1d],_0x348f54=_0x2215e2['marker'],_0x75243b='selectLeft'in _0x348f54?!_0x348f54[_0x288a8a('0x1030')]:_0x348f54[_0x288a8a('0xb8b')],_0x270727='selectRight'in _0x348f54?!_0x348f54['selectRight']:_0x348f54[_0x288a8a('0x937')];if((null==_0x2215e2[_0x288a8a('0x9d7')]||(_0x75243b?_0x2215e2[_0x288a8a('0x9d7')]<=_0xc5554['ch']:_0x2215e2[_0x288a8a('0x9d7')]<_0xc5554['ch']))&&(null==_0x2215e2['to']||(_0x270727?_0x2215e2['to']>=_0xc5554['ch']:_0x2215e2['to']>_0xc5554['ch']))){if(_0x211b47&&(_0x508e40(_0x348f54,_0x288a8a('0xbc1')),_0x348f54[_0x288a8a('0x93b')])){if(_0x257c8d['markedSpans']){--_0x171a1d;continue;}break;}if(!_0x348f54[_0x288a8a('0x4e7')])continue;if(_0x4d5d3d){var _0x333d2b=_0x348f54[_0x288a8a('0x6f3')](_0xe5f98b<0x0?0x1:-0x1),_0x1b777f=void 0x0;if((_0xe5f98b<0x0?_0x270727:_0x75243b)&&(_0x333d2b=_0x60d741(_0x328d8d,_0x333d2b,-_0xe5f98b,_0x333d2b&&_0x333d2b[_0x288a8a('0xde2')]==_0xc5554[_0x288a8a('0xde2')]?_0x257c8d:null)),_0x333d2b&&_0x333d2b['line']==_0xc5554['line']&&(_0x1b777f=_0x42d525(_0x333d2b,_0x4d5d3d))&&(_0xe5f98b<0x0?_0x1b777f<0x0:_0x1b777f>0x0))return _0xd6b0f4(_0x328d8d,_0x333d2b,_0xc5554,_0xe5f98b,_0x211b47);}var _0x3963d8=_0x348f54['find'](_0xe5f98b<0x0?-0x1:0x1);return(_0xe5f98b<0x0?_0x75243b:_0x270727)&&(_0x3963d8=_0x60d741(_0x328d8d,_0x3963d8,_0xe5f98b,_0x3963d8[_0x288a8a('0xde2')]==_0xc5554[_0x288a8a('0xde2')]?_0x257c8d:null)),_0x3963d8?_0xd6b0f4(_0x328d8d,_0x3963d8,_0xc5554,_0xe5f98b,_0x211b47):null;}}return _0xc5554;}function _0x32c771(_0x3549db,_0x346b74,_0x5b64c1,_0x3c53f6,_0x542cbf){var _0x5f4d56=_0x255d35,_0x521116=_0x3c53f6||0x1,_0x10e5db=_0xd6b0f4(_0x3549db,_0x346b74,_0x5b64c1,_0x521116,_0x542cbf)||!_0x542cbf&&_0xd6b0f4(_0x3549db,_0x346b74,_0x5b64c1,_0x521116,!0x0)||_0xd6b0f4(_0x3549db,_0x346b74,_0x5b64c1,-_0x521116,_0x542cbf)||!_0x542cbf&&_0xd6b0f4(_0x3549db,_0x346b74,_0x5b64c1,-_0x521116,!0x0);return _0x10e5db||(_0x3549db[_0x5f4d56('0xa4a')]=!0x0,_0xf7c6fb(_0x3549db[_0x5f4d56('0xe3c')],0x0));}function _0x60d741(_0x884ce0,_0xbb4b1a,_0x283975,_0x28e197){var _0x3317f9=_0x255d35;return _0x283975<0x0&&0x0==_0xbb4b1a['ch']?_0xbb4b1a[_0x3317f9('0xde2')]>_0x884ce0[_0x3317f9('0xe3c')]?_0x364c36(_0x884ce0,_0xf7c6fb(_0xbb4b1a[_0x3317f9('0xde2')]-0x1)):null:_0x283975>0x0&&_0xbb4b1a['ch']==(_0x28e197||_0x1b58dd(_0x884ce0,_0xbb4b1a[_0x3317f9('0xde2')]))['text'][_0x3317f9('0x525')]?_0xbb4b1a['line']<_0x884ce0[_0x3317f9('0xe3c')]+_0x884ce0[_0x3317f9('0x844')]-0x1?_0xf7c6fb(_0xbb4b1a[_0x3317f9('0xde2')]+0x1,0x0):null:new _0xf7c6fb(_0xbb4b1a[_0x3317f9('0xde2')],_0xbb4b1a['ch']+_0x283975);}function _0x897e5c(_0x5972d3){_0x5972d3['setSelection'](_0xf7c6fb(_0x5972d3['firstLine'](),0x0),_0xf7c6fb(_0x5972d3['lastLine']()),_0x463688);}function _0xe5e16e(_0x5b5b85,_0x3c26b5,_0x36d84a){var _0x5ad806=_0x255d35,_0x561aa1={'canceled':!0x1,'from':_0x3c26b5[_0x5ad806('0x9d7')],'to':_0x3c26b5['to'],'text':_0x3c26b5[_0x5ad806('0x768')],'origin':_0x3c26b5[_0x5ad806('0x11d2')],'cancel':function(){var _0x10a919=_0x5ad806;return _0x561aa1[_0x10a919('0xbba')]=!0x0;}};return _0x36d84a&&(_0x561aa1[_0x5ad806('0x4ca')]=function(_0x1e9f80,_0x3e5e56,_0xeb382c,_0x4f703f){var _0x386530=_0x5ad806;_0x1e9f80&&(_0x561aa1[_0x386530('0x9d7')]=_0x364c36(_0x5b5b85,_0x1e9f80)),_0x3e5e56&&(_0x561aa1['to']=_0x364c36(_0x5b5b85,_0x3e5e56)),_0xeb382c&&(_0x561aa1[_0x386530('0x768')]=_0xeb382c),void 0x0!==_0x4f703f&&(_0x561aa1[_0x386530('0x11d2')]=_0x4f703f);}),_0x508e40(_0x5b5b85,_0x5ad806('0x1a4'),_0x5b5b85,_0x561aa1),_0x5b5b85['cm']&&_0x508e40(_0x5b5b85['cm'],_0x5ad806('0x1a4'),_0x5b5b85['cm'],_0x561aa1),_0x561aa1[_0x5ad806('0xbba')]?(_0x5b5b85['cm']&&(_0x5b5b85['cm']['curOp'][_0x5ad806('0xd83')]=0x2),null):{'from':_0x561aa1['from'],'to':_0x561aa1['to'],'text':_0x561aa1[_0x5ad806('0x768')],'origin':_0x561aa1['origin']};}function _0x2007f6(_0x1e75b3,_0x2fcf04,_0x59ee43){var _0x2740c1=_0x255d35;if(_0x1e75b3['cm']){if(!_0x1e75b3['cm'][_0x2740c1('0x10e6')])return _0x2dfb55(_0x1e75b3['cm'],_0x2007f6)(_0x1e75b3,_0x2fcf04,_0x59ee43);if(_0x1e75b3['cm']['state'][_0x2740c1('0x583')])return;}if(!(_0x3f430b(_0x1e75b3,_0x2740c1('0x1a4'))||_0x1e75b3['cm']&&_0x3f430b(_0x1e75b3['cm'],_0x2740c1('0x1a4')))||(_0x2fcf04=_0xe5e16e(_0x1e75b3,_0x2fcf04,!0x0))){var _0x1a6b74=_0x1c8dae&&!_0x59ee43&&function(_0xcdd33c,_0x18660c,_0x488e0f){var _0x2baf2b=_0x2740c1,_0x236159=null;if(_0xcdd33c[_0x2baf2b('0x160')](_0x18660c[_0x2baf2b('0xde2')],_0x488e0f[_0x2baf2b('0xde2')]+0x1,function(_0x4f363b){var _0x584bc2=_0x2baf2b;if(_0x4f363b[_0x584bc2('0xe33')])for(var _0xf82ac1=0x0;_0xf82ac1<_0x4f363b[_0x584bc2('0xe33')][_0x584bc2('0x525')];++_0xf82ac1){var _0x2474f0=_0x4f363b[_0x584bc2('0xe33')][_0xf82ac1]['marker'];!_0x2474f0[_0x584bc2('0x1069')]||_0x236159&&-0x1!=_0x3ec288(_0x236159,_0x2474f0)||(_0x236159||(_0x236159=[]))[_0x584bc2('0x8f8')](_0x2474f0);}}),!_0x236159)return null;for(var _0x546431=[{'from':_0x18660c,'to':_0x488e0f}],_0x4cd939=0x0;_0x4cd939<_0x236159[_0x2baf2b('0x525')];++_0x4cd939)for(var _0x533903=_0x236159[_0x4cd939],_0x13937d=_0x533903[_0x2baf2b('0x6f3')](0x0),_0x1b91db=0x0;_0x1b91db<_0x546431['length'];++_0x1b91db){var _0x50ebb1=_0x546431[_0x1b91db];if(!(_0x42d525(_0x50ebb1['to'],_0x13937d[_0x2baf2b('0x9d7')])<0x0||_0x42d525(_0x50ebb1[_0x2baf2b('0x9d7')],_0x13937d['to'])>0x0)){var _0x8e650=[_0x1b91db,0x1],_0x3f48a9=_0x42d525(_0x50ebb1[_0x2baf2b('0x9d7')],_0x13937d[_0x2baf2b('0x9d7')]),_0x5188be=_0x42d525(_0x50ebb1['to'],_0x13937d['to']);(_0x3f48a9<0x0||!_0x533903[_0x2baf2b('0xb8b')]&&!_0x3f48a9)&&_0x8e650[_0x2baf2b('0x8f8')]({'from':_0x50ebb1[_0x2baf2b('0x9d7')],'to':_0x13937d['from']}),(_0x5188be>0x0||!_0x533903[_0x2baf2b('0x937')]&&!_0x5188be)&&_0x8e650[_0x2baf2b('0x8f8')]({'from':_0x13937d['to'],'to':_0x50ebb1['to']}),_0x546431[_0x2baf2b('0xc19')][_0x2baf2b('0x1036')](_0x546431,_0x8e650),_0x1b91db+=_0x8e650[_0x2baf2b('0x525')]-0x3;}}return _0x546431;}(_0x1e75b3,_0x2fcf04[_0x2740c1('0x9d7')],_0x2fcf04['to']);if(_0x1a6b74)for(var _0x335c28=_0x1a6b74['length']-0x1;_0x335c28>=0x0;--_0x335c28)_0x3d0412(_0x1e75b3,{'from':_0x1a6b74[_0x335c28]['from'],'to':_0x1a6b74[_0x335c28]['to'],'text':_0x335c28?['']:_0x2fcf04[_0x2740c1('0x768')],'origin':_0x2fcf04[_0x2740c1('0x11d2')]});else _0x3d0412(_0x1e75b3,_0x2fcf04);}}function _0x3d0412(_0x24f209,_0x441f66){var _0x461fa=_0x255d35;if(0x1!=_0x441f66['text'][_0x461fa('0x525')]||''!=_0x441f66[_0x461fa('0x768')][0x0]||0x0!=_0x42d525(_0x441f66[_0x461fa('0x9d7')],_0x441f66['to'])){var _0x1633e4=_0x5ce837(_0x24f209,_0x441f66);_0x178c21(_0x24f209,_0x441f66,_0x1633e4,_0x24f209['cm']?_0x24f209['cm'][_0x461fa('0x10e6')]['id']:NaN),_0x5b932f(_0x24f209,_0x441f66,_0x1633e4,_0x2e94b5(_0x24f209,_0x441f66));var _0x45b1d0=[];_0x838986(_0x24f209,function(_0x52b1e4,_0x2471ad){var _0x835648=_0x461fa;_0x2471ad||-0x1!=_0x3ec288(_0x45b1d0,_0x52b1e4[_0x835648('0xb43')])||(_0xe130fa(_0x52b1e4[_0x835648('0xb43')],_0x441f66),_0x45b1d0[_0x835648('0x8f8')](_0x52b1e4[_0x835648('0xb43')])),_0x5b932f(_0x52b1e4,_0x441f66,null,_0x2e94b5(_0x52b1e4,_0x441f66));});}}function _0x4249ef(_0x125f87,_0x4f08d,_0x271fb7){var _0x37f1d7=_0x255d35,_0x4e829a=_0x125f87['cm']&&_0x125f87['cm']['state'][_0x37f1d7('0x583')];if(!_0x4e829a||_0x271fb7){for(var _0xa6ee0d,_0x101bd9=_0x125f87['history'],_0x2141bc=_0x125f87[_0x37f1d7('0x10f6')],_0x532dcb=_0x37f1d7('0x932')==_0x4f08d?_0x101bd9[_0x37f1d7('0x10cf')]:_0x101bd9[_0x37f1d7('0x690')],_0x3733b2=_0x37f1d7('0x932')==_0x4f08d?_0x101bd9[_0x37f1d7('0x690')]:_0x101bd9[_0x37f1d7('0x10cf')],_0x260e6=0x0;_0x260e6<_0x532dcb[_0x37f1d7('0x525')]&&(_0xa6ee0d=_0x532dcb[_0x260e6],_0x271fb7?!_0xa6ee0d['ranges']||_0xa6ee0d[_0x37f1d7('0xdd4')](_0x125f87[_0x37f1d7('0x10f6')]):_0xa6ee0d[_0x37f1d7('0x32')]);_0x260e6++);if(_0x260e6!=_0x532dcb[_0x37f1d7('0x525')]){for(_0x101bd9[_0x37f1d7('0x191')]=_0x101bd9[_0x37f1d7('0xacf')]=null;;){if(!(_0xa6ee0d=_0x532dcb[_0x37f1d7('0x57f')]())[_0x37f1d7('0x32')]){if(_0x4e829a)return void _0x532dcb['push'](_0xa6ee0d);break;}if(_0x11eb4f(_0xa6ee0d,_0x3733b2),_0x271fb7&&!_0xa6ee0d['equals'](_0x125f87['sel']))return void _0x1fb018(_0x125f87,_0xa6ee0d,{'clearRedo':!0x1});_0x2141bc=_0xa6ee0d;}var _0x283d7f=[];_0x11eb4f(_0x2141bc,_0x3733b2),_0x3733b2[_0x37f1d7('0x8f8')]({'changes':_0x283d7f,'generation':_0x101bd9['generation']}),_0x101bd9[_0x37f1d7('0x89c')]=_0xa6ee0d[_0x37f1d7('0x89c')]||++_0x101bd9[_0x37f1d7('0x852')];for(var _0x3b2812=_0x3f430b(_0x125f87,'beforeChange')||_0x125f87['cm']&&_0x3f430b(_0x125f87['cm'],'beforeChange'),_0x4bdd3f=function(_0x1031ef){var _0x264e62=_0x37f1d7,_0x36bd5d=_0xa6ee0d[_0x264e62('0xd8f')][_0x1031ef];if(_0x36bd5d['origin']=_0x4f08d,_0x3b2812&&!_0xe5e16e(_0x125f87,_0x36bd5d,!0x1))return _0x532dcb[_0x264e62('0x525')]=0x0,{};_0x283d7f[_0x264e62('0x8f8')](_0x2c2e18(_0x125f87,_0x36bd5d));var _0x5ac151=_0x1031ef?_0x5ce837(_0x125f87,_0x36bd5d):_0x15560b(_0x532dcb);_0x5b932f(_0x125f87,_0x36bd5d,_0x5ac151,_0x11fe3b(_0x125f87,_0x36bd5d)),!_0x1031ef&&_0x125f87['cm']&&_0x125f87['cm'][_0x264e62('0x1075')]({'from':_0x36bd5d[_0x264e62('0x9d7')],'to':_0x457bba(_0x36bd5d)});var _0x4c7ea2=[];_0x838986(_0x125f87,function(_0x4b37e8,_0x2488f1){var _0x1676a5=_0x264e62;_0x2488f1||-0x1!=_0x3ec288(_0x4c7ea2,_0x4b37e8[_0x1676a5('0xb43')])||(_0xe130fa(_0x4b37e8['history'],_0x36bd5d),_0x4c7ea2[_0x1676a5('0x8f8')](_0x4b37e8['history'])),_0x5b932f(_0x4b37e8,_0x36bd5d,null,_0x11fe3b(_0x4b37e8,_0x36bd5d));});},_0x346555=_0xa6ee0d['changes'][_0x37f1d7('0x525')]-0x1;_0x346555>=0x0;--_0x346555){var _0x189d0a=_0x4bdd3f(_0x346555);if(_0x189d0a)return _0x189d0a['v'];}}}}function _0x31be20(_0x390417,_0x18c8d2){var _0x57ebf9=_0x255d35;if(0x0!=_0x18c8d2&&(_0x390417[_0x57ebf9('0xe3c')]+=_0x18c8d2,_0x390417[_0x57ebf9('0x10f6')]=new _0x1875a3(_0x49f2fe(_0x390417[_0x57ebf9('0x10f6')][_0x57ebf9('0x32')],function(_0x3c2d73){var _0x57691f=_0x57ebf9;return new _0x47634a(_0xf7c6fb(_0x3c2d73[_0x57691f('0x66d')][_0x57691f('0xde2')]+_0x18c8d2,_0x3c2d73['anchor']['ch']),_0xf7c6fb(_0x3c2d73[_0x57691f('0x5d4')][_0x57691f('0xde2')]+_0x18c8d2,_0x3c2d73[_0x57691f('0x5d4')]['ch']));}),_0x390417[_0x57ebf9('0x10f6')][_0x57ebf9('0x1d7')]),_0x390417['cm'])){_0x18ce28(_0x390417['cm'],_0x390417[_0x57ebf9('0xe3c')],_0x390417[_0x57ebf9('0xe3c')]-_0x18c8d2,_0x18c8d2);for(var _0x5bd3b1=_0x390417['cm'][_0x57ebf9('0x55c')],_0x175085=_0x5bd3b1['viewFrom'];_0x175085<_0x5bd3b1[_0x57ebf9('0xf2f')];_0x175085++)_0x59dcbc(_0x390417['cm'],_0x175085,'gutter');}}function _0x5b932f(_0x2ce4d6,_0x468d94,_0x2cc640,_0x18a5aa){var _0x4d46b0=_0x255d35;if(_0x2ce4d6['cm']&&!_0x2ce4d6['cm']['curOp'])return _0x2dfb55(_0x2ce4d6['cm'],_0x5b932f)(_0x2ce4d6,_0x468d94,_0x2cc640,_0x18a5aa);if(_0x468d94['to'][_0x4d46b0('0xde2')]<_0x2ce4d6['first'])_0x31be20(_0x2ce4d6,_0x468d94[_0x4d46b0('0x768')][_0x4d46b0('0x525')]-0x1-(_0x468d94['to'][_0x4d46b0('0xde2')]-_0x468d94[_0x4d46b0('0x9d7')]['line']));else{if(!(_0x468d94[_0x4d46b0('0x9d7')][_0x4d46b0('0xde2')]>_0x2ce4d6[_0x4d46b0('0xbdf')]())){if(_0x468d94[_0x4d46b0('0x9d7')]['line']<_0x2ce4d6[_0x4d46b0('0xe3c')]){var _0x44cc96=_0x468d94['text'][_0x4d46b0('0x525')]-0x1-(_0x2ce4d6['first']-_0x468d94['from']['line']);_0x31be20(_0x2ce4d6,_0x44cc96),_0x468d94={'from':_0xf7c6fb(_0x2ce4d6[_0x4d46b0('0xe3c')],0x0),'to':_0xf7c6fb(_0x468d94['to'][_0x4d46b0('0xde2')]+_0x44cc96,_0x468d94['to']['ch']),'text':[_0x15560b(_0x468d94['text'])],'origin':_0x468d94[_0x4d46b0('0x11d2')]};}var _0x130a76=_0x2ce4d6[_0x4d46b0('0xbdf')]();_0x468d94['to'][_0x4d46b0('0xde2')]>_0x130a76&&(_0x468d94={'from':_0x468d94['from'],'to':_0xf7c6fb(_0x130a76,_0x1b58dd(_0x2ce4d6,_0x130a76)[_0x4d46b0('0x768')][_0x4d46b0('0x525')]),'text':[_0x468d94['text'][0x0]],'origin':_0x468d94[_0x4d46b0('0x11d2')]}),_0x468d94['removed']=_0x1e2186(_0x2ce4d6,_0x468d94['from'],_0x468d94['to']),_0x2cc640||(_0x2cc640=_0x5ce837(_0x2ce4d6,_0x468d94)),_0x2ce4d6['cm']?function(_0x58d687,_0xbc2c3b,_0x4b35a0){var _0x133751=_0x4d46b0,_0x17034d=_0x58d687['doc'],_0x2fcc04=_0x58d687['display'],_0x331be1=_0xbc2c3b['from'],_0x21ca75=_0xbc2c3b['to'],_0x34b01f=!0x1,_0x232bb3=_0x331be1['line'];_0x58d687[_0x133751('0x631')]['lineWrapping']||(_0x232bb3=_0x5ee38b(_0x5958c7(_0x1b58dd(_0x17034d,_0x331be1['line']))),_0x17034d[_0x133751('0x160')](_0x232bb3,_0x21ca75[_0x133751('0xde2')]+0x1,function(_0x503877){var _0x448954=_0x133751;if(_0x503877==_0x2fcc04[_0x448954('0x60d')])return _0x34b01f=!0x0,!0x0;})),_0x17034d[_0x133751('0x10f6')][_0x133751('0x87d')](_0xbc2c3b[_0x133751('0x9d7')],_0xbc2c3b['to'])>-0x1&&_0x1f6531(_0x58d687),(_0x2662f6(_0x17034d,_0xbc2c3b,_0x4b35a0,_0x391864(_0x58d687)),_0x58d687['options'][_0x133751('0x5a9')]||(_0x17034d[_0x133751('0x160')](_0x232bb3,_0x331be1['line']+_0xbc2c3b[_0x133751('0x768')][_0x133751('0x525')],function(_0x15242c){var _0x330bd5=_0x133751,_0x3e1acd=_0x4c31f4(_0x15242c);_0x3e1acd>_0x2fcc04[_0x330bd5('0x804')]&&(_0x2fcc04[_0x330bd5('0x60d')]=_0x15242c,_0x2fcc04[_0x330bd5('0x804')]=_0x3e1acd,_0x2fcc04[_0x330bd5('0x7aa')]=!0x0,_0x34b01f=!0x1);}),_0x34b01f&&(_0x58d687[_0x133751('0x10e6')]['updateMaxLine']=!0x0))),(function(_0x4288f,_0x53795e){var _0x2aa7a5=_0x133751;if(_0x4288f[_0x2aa7a5('0xef3')]=Math[_0x2aa7a5('0xc0d')](_0x4288f['modeFrontier'],_0x53795e),!(_0x4288f[_0x2aa7a5('0xba7')]<_0x53795e-0xa)){for(var _0x57b6f1=_0x4288f[_0x2aa7a5('0xe3c')],_0x2833e2=_0x53795e-0x1;_0x2833e2>_0x57b6f1;_0x2833e2--){var _0x504aea=_0x1b58dd(_0x4288f,_0x2833e2)['stateAfter'];if(_0x504aea&&(!(_0x504aea instanceof _0x2db48d)||_0x2833e2+_0x504aea['lookAhead']<_0x53795e)){_0x57b6f1=_0x2833e2+0x1;break;}}_0x4288f[_0x2aa7a5('0xba7')]=Math[_0x2aa7a5('0xc0d')](_0x4288f[_0x2aa7a5('0xba7')],_0x57b6f1);}}(_0x17034d,_0x331be1[_0x133751('0xde2')]),_0x7dbcb2(_0x58d687,0x190));var _0x102ab6=_0xbc2c3b[_0x133751('0x768')][_0x133751('0x525')]-(_0x21ca75[_0x133751('0xde2')]-_0x331be1[_0x133751('0xde2')])-0x1;_0xbc2c3b[_0x133751('0xb90')]?_0x18ce28(_0x58d687):_0x331be1[_0x133751('0xde2')]!=_0x21ca75[_0x133751('0xde2')]||0x1!=_0xbc2c3b[_0x133751('0x768')][_0x133751('0x525')]||_0x3b54ea(_0x58d687['doc'],_0xbc2c3b)?_0x18ce28(_0x58d687,_0x331be1[_0x133751('0xde2')],_0x21ca75[_0x133751('0xde2')]+0x1,_0x102ab6):_0x59dcbc(_0x58d687,_0x331be1[_0x133751('0xde2')],'text');var _0x4da2c6=_0x3f430b(_0x58d687,_0x133751('0xd8f')),_0x120884=_0x3f430b(_0x58d687,'change');if(_0x120884||_0x4da2c6){var _0x1e3ac5={'from':_0x331be1,'to':_0x21ca75,'text':_0xbc2c3b[_0x133751('0x768')],'removed':_0xbc2c3b[_0x133751('0x993')],'origin':_0xbc2c3b['origin']};_0x120884&&_0x5470d1(_0x58d687,_0x133751('0x4f6'),_0x58d687,_0x1e3ac5),_0x4da2c6&&(_0x58d687[_0x133751('0x10e6')][_0x133751('0xcc9')]||(_0x58d687[_0x133751('0x10e6')]['changeObjs']=[]))[_0x133751('0x8f8')](_0x1e3ac5);}_0x58d687[_0x133751('0x55c')]['selForContextMenu']=null;}(_0x2ce4d6['cm'],_0x468d94,_0x18a5aa):_0x2662f6(_0x2ce4d6,_0x468d94,_0x18a5aa),_0x14d3be(_0x2ce4d6,_0x2cc640,_0x463688),_0x2ce4d6['cantEdit']&&_0x32c771(_0x2ce4d6,_0xf7c6fb(_0x2ce4d6['firstLine'](),0x0))&&(_0x2ce4d6[_0x4d46b0('0xa4a')]=!0x1);}}}function _0x1e2405(_0x2525ab,_0x299bc3,_0xd2cd0b,_0x19e4f1,_0x2aba29){var _0x1d631e=_0x255d35,_0x48052b;_0x19e4f1||(_0x19e4f1=_0xd2cd0b),_0x42d525(_0x19e4f1,_0xd2cd0b)<0x0&&(_0xd2cd0b=(_0x48052b=[_0x19e4f1,_0xd2cd0b])[0x0],_0x19e4f1=_0x48052b[0x1]),_0x1d631e('0x7c7')==typeof _0x299bc3&&(_0x299bc3=_0x2525ab['splitLines'](_0x299bc3)),_0x2007f6(_0x2525ab,{'from':_0xd2cd0b,'to':_0x19e4f1,'text':_0x299bc3,'origin':_0x2aba29});}function _0x5a9fcd(_0x2bcd6c,_0x5e680e,_0x4bfc85,_0x45ac3e){var _0x1189d2=_0x255d35;_0x4bfc85<_0x2bcd6c[_0x1189d2('0xde2')]?_0x2bcd6c[_0x1189d2('0xde2')]+=_0x45ac3e:_0x5e680e<_0x2bcd6c[_0x1189d2('0xde2')]&&(_0x2bcd6c[_0x1189d2('0xde2')]=_0x5e680e,_0x2bcd6c['ch']=0x0);}function _0x816459(_0xf2d89,_0x55b485,_0x16fe1b,_0x2b0414){var _0x300e0f=_0x255d35;for(var _0x5d2bb4=0x0;_0x5d2bb4<_0xf2d89[_0x300e0f('0x525')];++_0x5d2bb4){var _0x157004=_0xf2d89[_0x5d2bb4],_0x3aa71c=!0x0;if(_0x157004[_0x300e0f('0x32')]){_0x157004[_0x300e0f('0x560')]||((_0x157004=_0xf2d89[_0x5d2bb4]=_0x157004[_0x300e0f('0x67e')]())[_0x300e0f('0x560')]=!0x0);for(var _0x10a2cc=0x0;_0x10a2cc<_0x157004[_0x300e0f('0x32')][_0x300e0f('0x525')];_0x10a2cc++)_0x5a9fcd(_0x157004[_0x300e0f('0x32')][_0x10a2cc][_0x300e0f('0x66d')],_0x55b485,_0x16fe1b,_0x2b0414),_0x5a9fcd(_0x157004[_0x300e0f('0x32')][_0x10a2cc][_0x300e0f('0x5d4')],_0x55b485,_0x16fe1b,_0x2b0414);}else{for(var _0x452918=0x0;_0x452918<_0x157004[_0x300e0f('0xd8f')][_0x300e0f('0x525')];++_0x452918){var _0x29f4a6=_0x157004['changes'][_0x452918];if(_0x16fe1b<_0x29f4a6['from']['line'])_0x29f4a6[_0x300e0f('0x9d7')]=_0xf7c6fb(_0x29f4a6['from'][_0x300e0f('0xde2')]+_0x2b0414,_0x29f4a6[_0x300e0f('0x9d7')]['ch']),_0x29f4a6['to']=_0xf7c6fb(_0x29f4a6['to'][_0x300e0f('0xde2')]+_0x2b0414,_0x29f4a6['to']['ch']);else{if(_0x55b485<=_0x29f4a6['to'][_0x300e0f('0xde2')]){_0x3aa71c=!0x1;break;}}}_0x3aa71c||(_0xf2d89[_0x300e0f('0xc19')](0x0,_0x5d2bb4+0x1),_0x5d2bb4=0x0);}}}function _0xe130fa(_0x4611a1,_0x34e990){var _0x1fb94b=_0x255d35,_0x1d8fe9=_0x34e990[_0x1fb94b('0x9d7')][_0x1fb94b('0xde2')],_0x558ead=_0x34e990['to'][_0x1fb94b('0xde2')],_0x23de73=_0x34e990['text'][_0x1fb94b('0x525')]-(_0x558ead-_0x1d8fe9)-0x1;_0x816459(_0x4611a1[_0x1fb94b('0x10cf')],_0x1d8fe9,_0x558ead,_0x23de73),_0x816459(_0x4611a1['undone'],_0x1d8fe9,_0x558ead,_0x23de73);}function _0x46674d(_0x32d168,_0x474261,_0x5168f3,_0x5ea2fe){var _0x2c4b2f=_0x255d35,_0x4e3132=_0x474261,_0x1bb3d6=_0x474261;return _0x2c4b2f('0xd95')==typeof _0x474261?_0x1bb3d6=_0x1b58dd(_0x32d168,_0x5673aa(_0x32d168,_0x474261)):_0x4e3132=_0x5ee38b(_0x474261),null==_0x4e3132?null:(_0x5ea2fe(_0x1bb3d6,_0x4e3132)&&_0x32d168['cm']&&_0x59dcbc(_0x32d168['cm'],_0x4e3132,_0x5168f3),_0x1bb3d6);}function _0x5e2523(_0x33a83f){var _0x1cd8d9=_0x255d35;this['lines']=_0x33a83f,this[_0x1cd8d9('0xeb7')]=null;for(var _0x1376ab=0x0,_0x4f3f19=0x0;_0x4f3f19<_0x33a83f[_0x1cd8d9('0x525')];++_0x4f3f19)_0x33a83f[_0x4f3f19][_0x1cd8d9('0xeb7')]=this,_0x1376ab+=_0x33a83f[_0x4f3f19][_0x1cd8d9('0x7f0')];this[_0x1cd8d9('0x7f0')]=_0x1376ab;}function _0xbbef2a(_0x22f13b){var _0x27ab05=_0x255d35;this[_0x27ab05('0x115a')]=_0x22f13b;for(var _0x3ea87c=0x0,_0x3cc956=0x0,_0x48f2ff=0x0;_0x48f2ff<_0x22f13b['length'];++_0x48f2ff){var _0x49a14f=_0x22f13b[_0x48f2ff];_0x3ea87c+=_0x49a14f['chunkSize'](),_0x3cc956+=_0x49a14f[_0x27ab05('0x7f0')],_0x49a14f['parent']=this;}this[_0x27ab05('0x844')]=_0x3ea87c,this['height']=_0x3cc956,this[_0x27ab05('0xeb7')]=null;}_0x47634a[_0x255d35('0x98c')][_0x255d35('0x9d7')]=function(){var _0xe0315c=_0x255d35;return _0x31d615(this['anchor'],this[_0xe0315c('0x5d4')]);},_0x47634a[_0x255d35('0x98c')]['to']=function(){var _0x2f6858=_0x255d35;return _0x36db9e(this['anchor'],this[_0x2f6858('0x5d4')]);},_0x47634a[_0x255d35('0x98c')]['empty']=function(){var _0x142ecf=_0x255d35;return this[_0x142ecf('0x5d4')]['line']==this[_0x142ecf('0x66d')][_0x142ecf('0xde2')]&&this['head']['ch']==this[_0x142ecf('0x66d')]['ch'];},_0x5e2523[_0x255d35('0x98c')]={'chunkSize':function(){var _0x36bf44=_0x255d35;return this[_0x36bf44('0x511')][_0x36bf44('0x525')];},'removeInner':function(_0x4e1c2f,_0x299849){var _0x48a5a8=_0x255d35;for(var _0xd31cbd=_0x4e1c2f,_0x439f6b=_0x4e1c2f+_0x299849;_0xd31cbd<_0x439f6b;++_0xd31cbd){var _0x1140f9=this[_0x48a5a8('0x511')][_0xd31cbd];this['height']-=_0x1140f9[_0x48a5a8('0x7f0')],_0x377fe4(_0x1140f9),_0x5470d1(_0x1140f9,'delete');}this['lines']['splice'](_0x4e1c2f,_0x299849);},'collapse':function(_0x20c15d){var _0x4b3f31=_0x255d35;_0x20c15d[_0x4b3f31('0x8f8')][_0x4b3f31('0x1036')](_0x20c15d,this[_0x4b3f31('0x511')]);},'insertInner':function(_0x1cb42a,_0x2a2c26,_0x4404d8){var _0x20c220=_0x255d35;this[_0x20c220('0x7f0')]+=_0x4404d8,this['lines']=this['lines'][_0x20c220('0xbc0')](0x0,_0x1cb42a)['concat'](_0x2a2c26)[_0x20c220('0x3cc')](this['lines'][_0x20c220('0xbc0')](_0x1cb42a));for(var _0xe79e37=0x0;_0xe79e37<_0x2a2c26[_0x20c220('0x525')];++_0xe79e37)_0x2a2c26[_0xe79e37][_0x20c220('0xeb7')]=this;},'iterN':function(_0x30e85d,_0x7e9d02,_0xce8b4c){var _0x335798=_0x255d35;for(var _0x5b7698=_0x30e85d+_0x7e9d02;_0x30e85d<_0x5b7698;++_0x30e85d)if(_0xce8b4c(this[_0x335798('0x511')][_0x30e85d]))return!0x0;}},_0xbbef2a[_0x255d35('0x98c')]={'chunkSize':function(){return this['size'];},'removeInner':function(_0x365291,_0x48c598){var _0x2e7744=_0x255d35;this[_0x2e7744('0x844')]-=_0x48c598;for(var _0x2617d4=0x0;_0x2617d40x1||!(this[_0x2e7744('0x115a')][0x0]instanceof _0x5e2523))){var _0x39dafb=[];this[_0x2e7744('0xdb1')](_0x39dafb),this['children']=[new _0x5e2523(_0x39dafb)],this[_0x2e7744('0x115a')][0x0][_0x2e7744('0xeb7')]=this;}},'collapse':function(_0x3109a7){var _0x56418f=_0x255d35;for(var _0xaf3cd6=0x0;_0xaf3cd60x32){for(var _0x1c8ec1=_0x4453c3[_0x5d47cd('0x511')][_0x5d47cd('0x525')]%0x19+0x19,_0x235597=_0x1c8ec1;_0x235597<_0x4453c3[_0x5d47cd('0x511')][_0x5d47cd('0x525')];){var _0x1278ed=new _0x5e2523(_0x4453c3[_0x5d47cd('0x511')][_0x5d47cd('0xbc0')](_0x235597,_0x235597+=0x19));_0x4453c3[_0x5d47cd('0x7f0')]-=_0x1278ed[_0x5d47cd('0x7f0')],this[_0x5d47cd('0x115a')]['splice'](++_0x218cae,0x0,_0x1278ed),_0x1278ed[_0x5d47cd('0xeb7')]=this;}_0x4453c3['lines']=_0x4453c3[_0x5d47cd('0x511')][_0x5d47cd('0xbc0')](0x0,_0x1c8ec1),this[_0x5d47cd('0xcbb')]();}break;}_0x4f2473-=_0x2ae5f7;}},'maybeSpill':function(){var _0x53f756=_0x255d35;if(!(this[_0x53f756('0x115a')][_0x53f756('0x525')]<=0xa)){var _0x5841a2=this;do{var _0x2b2d9=new _0xbbef2a(_0x5841a2['children'][_0x53f756('0xc19')](_0x5841a2['children'][_0x53f756('0x525')]-0x5,0x5));if(_0x5841a2['parent']){_0x5841a2['size']-=_0x2b2d9[_0x53f756('0x844')],_0x5841a2['height']-=_0x2b2d9[_0x53f756('0x7f0')];var _0x2fa835=_0x3ec288(_0x5841a2['parent'][_0x53f756('0x115a')],_0x5841a2);_0x5841a2[_0x53f756('0xeb7')][_0x53f756('0x115a')][_0x53f756('0xc19')](_0x2fa835+0x1,0x0,_0x2b2d9);}else{var _0x16e1b6=new _0xbbef2a(_0x5841a2[_0x53f756('0x115a')]);_0x16e1b6['parent']=_0x5841a2,_0x5841a2[_0x53f756('0x115a')]=[_0x16e1b6,_0x2b2d9],_0x5841a2=_0x16e1b6;}_0x2b2d9[_0x53f756('0xeb7')]=_0x5841a2[_0x53f756('0xeb7')];}while(_0x5841a2['children'][_0x53f756('0x525')]>0xa);_0x5841a2[_0x53f756('0xeb7')][_0x53f756('0xcbb')]();}},'iterN':function(_0x2b79b0,_0x12c275,_0x16e5b1){var _0x4b1e5d=_0x255d35;for(var _0x39eac4=0x0;_0x39eac40x0||0x0==_0x30979f&&!0x1!==_0x533118[_0x200322('0xab')])return _0x533118;if(_0x533118[_0x200322('0xc01')]&&(_0x533118['collapsed']=!0x0,_0x533118['widgetNode']=_0x14455d(_0x200322('0xd9'),[_0x533118['replacedWith']],'CodeMirror-widget'),_0x417a83[_0x200322('0xfcd')]||_0x533118['widgetNode']['setAttribute'](_0x200322('0x4e5'),'true'),_0x417a83[_0x200322('0x206')]&&(_0x533118['widgetNode'][_0x200322('0x206')]=!0x0)),_0x533118[_0x200322('0x1021')]){if(_0x1e1859(_0x24bb31,_0x355e16[_0x200322('0xde2')],_0x355e16,_0x5444e4,_0x533118)||_0x355e16[_0x200322('0xde2')]!=_0x5444e4[_0x200322('0xde2')]&&_0x1e1859(_0x24bb31,_0x5444e4[_0x200322('0xde2')],_0x355e16,_0x5444e4,_0x533118))throw new Error(_0x200322('0x9ba'));_0x17b3bc=!0x0;}_0x533118[_0x200322('0xc80')]&&_0x178c21(_0x24bb31,{'from':_0x355e16,'to':_0x5444e4,'origin':_0x200322('0x5')},_0x24bb31['sel'],NaN);var _0x2d9a7f,_0x22395c=_0x355e16[_0x200322('0xde2')],_0x4bacf1=_0x24bb31['cm'];if(_0x24bb31[_0x200322('0x160')](_0x22395c,_0x5444e4['line']+0x1,function(_0x2a46c2){var _0x49caa8=_0x200322;_0x4bacf1&&_0x533118['collapsed']&&!_0x4bacf1[_0x49caa8('0x631')][_0x49caa8('0x5a9')]&&_0x5958c7(_0x2a46c2)==_0x4bacf1[_0x49caa8('0x55c')][_0x49caa8('0x60d')]&&(_0x2d9a7f=!0x0),_0x533118[_0x49caa8('0x1021')]&&_0x22395c!=_0x355e16[_0x49caa8('0xde2')]&&_0x2e3ca8(_0x2a46c2,0x0),function(_0x324db7,_0x1f993e){var _0x57c92b=_0x49caa8;_0x324db7[_0x57c92b('0xe33')]=_0x324db7[_0x57c92b('0xe33')]?_0x324db7[_0x57c92b('0xe33')][_0x57c92b('0x3cc')]([_0x1f993e]):[_0x1f993e],_0x1f993e[_0x57c92b('0x85c')]['attachLine'](_0x324db7);}(_0x2a46c2,new _0x20dfa7(_0x533118,_0x22395c==_0x355e16[_0x49caa8('0xde2')]?_0x355e16['ch']:null,_0x22395c==_0x5444e4[_0x49caa8('0xde2')]?_0x5444e4['ch']:null)),++_0x22395c;}),_0x533118[_0x200322('0x1021')]&&_0x24bb31[_0x200322('0x160')](_0x355e16[_0x200322('0xde2')],_0x5444e4[_0x200322('0xde2')]+0x1,function(_0x5ef34c){_0x50dfd8(_0x24bb31,_0x5ef34c)&&_0x2e3ca8(_0x5ef34c,0x0);}),_0x533118[_0x200322('0x6b2')]&&_0x407bf3(_0x533118,_0x200322('0xbc1'),function(){var _0x53bd78=_0x200322;return _0x533118[_0x53bd78('0xedd')]();}),_0x533118['readOnly']&&(_0x1c8dae=!0x0,(_0x24bb31['history']['done'][_0x200322('0x525')]||_0x24bb31['history'][_0x200322('0x690')][_0x200322('0x525')])&&_0x24bb31[_0x200322('0xc7a')]()),_0x533118[_0x200322('0x1021')]&&(_0x533118['id']=++_0x2d52d6,_0x533118[_0x200322('0x4e7')]=!0x0),_0x4bacf1){if(_0x2d9a7f&&(_0x4bacf1[_0x200322('0x10e6')]['updateMaxLine']=!0x0),_0x533118[_0x200322('0x1021')])_0x18ce28(_0x4bacf1,_0x355e16['line'],_0x5444e4[_0x200322('0xde2')]+0x1);else{if(_0x533118['className']||_0x533118[_0x200322('0x14a')]||_0x533118[_0x200322('0xe6a')]||_0x533118[_0x200322('0xb7')]||_0x533118[_0x200322('0x6e7')]||_0x533118[_0x200322('0xba3')])for(var _0x53517d=_0x355e16[_0x200322('0xde2')];_0x53517d<=_0x5444e4[_0x200322('0xde2')];_0x53517d++)_0x59dcbc(_0x4bacf1,_0x53517d,_0x200322('0x768'));}_0x533118[_0x200322('0x4e7')]&&_0xe8eb1e(_0x4bacf1[_0x200322('0xf37')]),_0x5470d1(_0x4bacf1,_0x200322('0xfaf'),_0x4bacf1,_0x533118);}return _0x533118;}_0x126b07[_0x255d35('0x98c')][_0x255d35('0xedd')]=function(){var _0x591e43=_0x255d35;if(!this['explicitlyCleared']){var _0x3e7392=this['doc']['cm'],_0x360cdd=_0x3e7392&&!_0x3e7392[_0x591e43('0x10e6')];if(_0x360cdd&&_0x23d185(_0x3e7392),_0x3f430b(this,_0x591e43('0xedd'))){var _0x587429=this[_0x591e43('0x6f3')]();_0x587429&&_0x5470d1(this,_0x591e43('0xedd'),_0x587429[_0x591e43('0x9d7')],_0x587429['to']);}for(var _0x55f6f1=null,_0x25d2a0=null,_0x1835f6=0x0;_0x1835f6_0x3e7392['display'][_0x591e43('0x804')]&&(_0x3e7392[_0x591e43('0x55c')][_0x591e43('0x60d')]=_0xb2a89,_0x3e7392['display'][_0x591e43('0x804')]=_0x417193,_0x3e7392[_0x591e43('0x55c')][_0x591e43('0x7aa')]=!0x0);}null!=_0x55f6f1&&_0x3e7392&&this[_0x591e43('0x1021')]&&_0x18ce28(_0x3e7392,_0x55f6f1,_0x25d2a0+0x1),this[_0x591e43('0x511')]['length']=0x0,this['explicitlyCleared']=!0x0,this[_0x591e43('0x4e7')]&&this[_0x591e43('0xf37')][_0x591e43('0xa4a')]&&(this[_0x591e43('0xf37')][_0x591e43('0xa4a')]=!0x1,_0x3e7392&&_0xe8eb1e(_0x3e7392[_0x591e43('0xf37')])),_0x3e7392&&_0x5470d1(_0x3e7392,_0x591e43('0x710'),_0x3e7392,this,_0x55f6f1,_0x25d2a0),_0x360cdd&&_0x5ab881(_0x3e7392),this['parent']&&this[_0x591e43('0xeb7')][_0x591e43('0xedd')]();}},_0x126b07[_0x255d35('0x98c')][_0x255d35('0x6f3')]=function(_0x3cd713,_0x424143){var _0x404642=_0x255d35,_0x4b561c,_0x6df8df;null==_0x3cd713&&_0x404642('0x958')==this[_0x404642('0x3f7')]&&(_0x3cd713=0x1);for(var _0x38556a=0x0;_0x38556a=0x0;_0x274f47--)_0x2007f6(this,_0x2cdc8e[_0x274f47]);_0x454617?_0x42213d(this,_0x454617):this['cm']&&_0x515b9d(this['cm']);}),'undo':_0xdb45ba(function(){var _0x251c45=_0x255d35;_0x4249ef(this,_0x251c45('0x932'));}),'redo':_0xdb45ba(function(){var _0x12194f=_0x255d35;_0x4249ef(this,_0x12194f('0x948'));}),'undoSelection':_0xdb45ba(function(){var _0x195e85=_0x255d35;_0x4249ef(this,_0x195e85('0x932'),!0x0);}),'redoSelection':_0xdb45ba(function(){var _0x2bce11=_0x255d35;_0x4249ef(this,_0x2bce11('0x948'),!0x0);}),'setExtending':function(_0x15f1a8){var _0x2fa876=_0x255d35;this[_0x2fa876('0x1158')]=_0x15f1a8;},'getExtending':function(){var _0x10906c=_0x255d35;return this[_0x10906c('0x1158')];},'historySize':function(){var _0x5c28a9=_0x255d35;for(var _0x25068a=this['history'],_0x142055=0x0,_0x366985=0x0,_0x2aabe0=0x0;_0x2aabe0<_0x25068a['done'][_0x5c28a9('0x525')];_0x2aabe0++)_0x25068a[_0x5c28a9('0x10cf')][_0x2aabe0][_0x5c28a9('0x32')]||++_0x142055;for(var _0x402ed7=0x0;_0x402ed7<_0x25068a[_0x5c28a9('0x690')][_0x5c28a9('0x525')];_0x402ed7++)_0x25068a[_0x5c28a9('0x690')][_0x402ed7][_0x5c28a9('0x32')]||++_0x366985;return{'undo':_0x142055,'redo':_0x366985};},'clearHistory':function(){var _0x242013=_0x255d35,_0x3d647=this;this[_0x242013('0xb43')]=new _0x459eb5(this[_0x242013('0xb43')][_0x242013('0x852')]),_0x838986(this,function(_0x2a7a12){var _0x4c58b6=_0x242013;return _0x2a7a12[_0x4c58b6('0xb43')]=_0x3d647[_0x4c58b6('0xb43')];},!0x0);},'markClean':function(){var _0x50bbde=_0x255d35;this[_0x50bbde('0x116e')]=this['changeGeneration'](!0x0);},'changeGeneration':function(_0x59883e){var _0x183d2d=_0x255d35;return _0x59883e&&(this[_0x183d2d('0xb43')][_0x183d2d('0x351')]=this[_0x183d2d('0xb43')][_0x183d2d('0xb4c')]=this[_0x183d2d('0xb43')][_0x183d2d('0x191')]=null),this['history'][_0x183d2d('0x89c')];},'isClean':function(_0x4bde5d){var _0xcf4dac=_0x255d35;return this['history'][_0xcf4dac('0x89c')]==(_0x4bde5d||this[_0xcf4dac('0x116e')]);},'getHistory':function(){var _0x514c80=_0x255d35;return{'done':_0x5c871d(this[_0x514c80('0xb43')][_0x514c80('0x10cf')]),'undone':_0x5c871d(this[_0x514c80('0xb43')]['undone'])};},'setHistory':function(_0x5dd653){var _0x31a405=_0x255d35,_0x31a5f0=this[_0x31a405('0xb43')]=new _0x459eb5(this[_0x31a405('0xb43')][_0x31a405('0x852')]);_0x31a5f0[_0x31a405('0x10cf')]=_0x5c871d(_0x5dd653['done'][_0x31a405('0xbc0')](0x0),null,!0x0),_0x31a5f0['undone']=_0x5c871d(_0x5dd653[_0x31a405('0x690')]['slice'](0x0),null,!0x0);},'setGutterMarker':_0xdb45ba(function(_0x1d7e73,_0x11d998,_0x552b5c){return _0x46674d(this,_0x1d7e73,'gutter',function(_0x44ebad){var _0x53f6ec=_0x3ab6,_0x166bd9=_0x44ebad[_0x53f6ec('0x114a')]||(_0x44ebad[_0x53f6ec('0x114a')]={});return _0x166bd9[_0x11d998]=_0x552b5c,!_0x552b5c&&_0xbe59a2(_0x166bd9)&&(_0x44ebad['gutterMarkers']=null),!0x0;});}),'clearGutter':_0xdb45ba(function(_0x586edd){var _0x3426f3=_0x255d35,_0x2d90f8=this;this[_0x3426f3('0x160')](function(_0x2ebcf2){var _0x2f7c94=_0x3426f3;_0x2ebcf2[_0x2f7c94('0x114a')]&&_0x2ebcf2[_0x2f7c94('0x114a')][_0x586edd]&&_0x46674d(_0x2d90f8,_0x2ebcf2,_0x2f7c94('0x968'),function(){var _0x32d782=_0x2f7c94;return _0x2ebcf2[_0x32d782('0x114a')][_0x586edd]=null,_0xbe59a2(_0x2ebcf2[_0x32d782('0x114a')])&&(_0x2ebcf2[_0x32d782('0x114a')]=null),!0x0;});});}),'lineInfo':function(_0x39a2c6){var _0x159aaf=_0x255d35,_0xae75e6;if(_0x159aaf('0xd95')==typeof _0x39a2c6){if(!_0x102270(this,_0x39a2c6))return null;if(_0xae75e6=_0x39a2c6,!(_0x39a2c6=_0x1b58dd(this,_0x39a2c6)))return null;}else{if(null==(_0xae75e6=_0x5ee38b(_0x39a2c6)))return null;}return{'line':_0xae75e6,'handle':_0x39a2c6,'text':_0x39a2c6['text'],'gutterMarkers':_0x39a2c6[_0x159aaf('0x114a')],'textClass':_0x39a2c6[_0x159aaf('0xf60')],'bgClass':_0x39a2c6[_0x159aaf('0x3da')],'wrapClass':_0x39a2c6[_0x159aaf('0x730')],'widgets':_0x39a2c6[_0x159aaf('0x1067')]};},'addLineClass':_0xdb45ba(function(_0x1bd0ee,_0x2db366,_0x2e481d){var _0x686002=_0x255d35;return _0x46674d(this,_0x1bd0ee,_0x686002('0x968')==_0x2db366?_0x686002('0x968'):_0x686002('0x4f7'),function(_0x3dea27){var _0x41e2a4=_0x686002,_0x5ed5a9=_0x41e2a4('0x768')==_0x2db366?_0x41e2a4('0xf60'):_0x41e2a4('0x9d9')==_0x2db366?'bgClass':_0x41e2a4('0x968')==_0x2db366?_0x41e2a4('0xdc2'):_0x41e2a4('0x730');if(_0x3dea27[_0x5ed5a9]){if(_0xf37a46(_0x2e481d)['test'](_0x3dea27[_0x5ed5a9]))return!0x1;_0x3dea27[_0x5ed5a9]+='\x20'+_0x2e481d;}else _0x3dea27[_0x5ed5a9]=_0x2e481d;return!0x0;});}),'removeLineClass':_0xdb45ba(function(_0x29213a,_0x717f10,_0xa08107){var _0x2d1f1a=_0x255d35;return _0x46674d(this,_0x29213a,_0x2d1f1a('0x968')==_0x717f10?'gutter':_0x2d1f1a('0x4f7'),function(_0xe5ffeb){var _0x51c37a=_0x2d1f1a,_0x23f6f9=_0x51c37a('0x768')==_0x717f10?'textClass':_0x51c37a('0x9d9')==_0x717f10?_0x51c37a('0x3da'):_0x51c37a('0x968')==_0x717f10?'gutterClass':_0x51c37a('0x730'),_0x408ed7=_0xe5ffeb[_0x23f6f9];if(!_0x408ed7)return!0x1;if(null==_0xa08107)_0xe5ffeb[_0x23f6f9]=null;else{var _0xd4eaad=_0x408ed7[_0x51c37a('0x91e')](_0xf37a46(_0xa08107));if(!_0xd4eaad)return!0x1;var _0x196b51=_0xd4eaad[_0x51c37a('0xf20')]+_0xd4eaad[0x0]['length'];_0xe5ffeb[_0x23f6f9]=_0x408ed7[_0x51c37a('0xbc0')](0x0,_0xd4eaad['index'])+(_0xd4eaad[_0x51c37a('0xf20')]&&_0x196b51!=_0x408ed7[_0x51c37a('0x525')]?'\x20':'')+_0x408ed7[_0x51c37a('0xbc0')](_0x196b51)||null;}return!0x0;});}),'addLineWidget':_0xdb45ba(function(_0x42dd8d,_0x2c0882,_0x471408){return function(_0x541ffe,_0x3fdb8c,_0x1d4f23,_0x3dd499){var _0x5068ff=_0x3ab6,_0x19c8ac=new _0x5a5317(_0x541ffe,_0x1d4f23,_0x3dd499),_0x379cd3=_0x541ffe['cm'];return _0x379cd3&&_0x19c8ac[_0x5068ff('0x254')]&&(_0x379cd3[_0x5068ff('0x55c')]['alignWidgets']=!0x0),_0x46674d(_0x541ffe,_0x3fdb8c,_0x5068ff('0xc4c'),function(_0x696fbb){var _0x3495c1=_0x5068ff,_0x201c82=_0x696fbb[_0x3495c1('0x1067')]||(_0x696fbb['widgets']=[]);if(null==_0x19c8ac[_0x3495c1('0xe21')]?_0x201c82[_0x3495c1('0x8f8')](_0x19c8ac):_0x201c82[_0x3495c1('0xc19')](Math['min'](_0x201c82[_0x3495c1('0x525')]-0x1,Math[_0x3495c1('0xf65')](0x0,_0x19c8ac[_0x3495c1('0xe21')])),0x0,_0x19c8ac),_0x19c8ac['line']=_0x696fbb,_0x379cd3&&!_0x50dfd8(_0x541ffe,_0x696fbb)){var _0x3edbaf=_0x14cc1e(_0x696fbb)<_0x541ffe[_0x3495c1('0xfa1')];_0x2e3ca8(_0x696fbb,_0x696fbb['height']+_0xa450e4(_0x19c8ac)),_0x3edbaf&&_0x384cc0(_0x379cd3,_0x19c8ac['height']),_0x379cd3[_0x3495c1('0x10e6')][_0x3495c1('0x60e')]=!0x0;}return!0x0;}),_0x379cd3&&_0x5470d1(_0x379cd3,_0x5068ff('0x4c2'),_0x379cd3,_0x19c8ac,_0x5068ff('0xd95')==typeof _0x3fdb8c?_0x3fdb8c:_0x5ee38b(_0x3fdb8c)),_0x19c8ac;}(this,_0x42dd8d,_0x2c0882,_0x471408);}),'removeLineWidget':function(_0x5bea77){var _0x12e4f2=_0x255d35;_0x5bea77[_0x12e4f2('0xedd')]();},'markText':function(_0x53d96d,_0x547de2,_0x13c17f){var _0x1e3c6b=_0x255d35;return _0x3cf60a(this,_0x364c36(this,_0x53d96d),_0x364c36(this,_0x547de2),_0x13c17f,_0x13c17f&&_0x13c17f[_0x1e3c6b('0x3f7')]||_0x1e3c6b('0x2f5'));},'setBookmark':function(_0x65f29c,_0x4ec08c){var _0xfed0f=_0x255d35,_0x583856={'replacedWith':_0x4ec08c&&(null==_0x4ec08c['nodeType']?_0x4ec08c[_0xfed0f('0xc4c')]:_0x4ec08c),'insertLeft':_0x4ec08c&&_0x4ec08c['insertLeft'],'clearWhenEmpty':!0x1,'shared':_0x4ec08c&&_0x4ec08c['shared'],'handleMouseEvents':_0x4ec08c&&_0x4ec08c[_0xfed0f('0xfcd')]};return _0x3cf60a(this,_0x65f29c=_0x364c36(this,_0x65f29c),_0x65f29c,_0x583856,_0xfed0f('0x958'));},'findMarksAt':function(_0x3b022a){var _0x3bd0d7=_0x255d35,_0x2d342c=[],_0x43ab32=_0x1b58dd(this,(_0x3b022a=_0x364c36(this,_0x3b022a))['line'])[_0x3bd0d7('0xe33')];if(_0x43ab32)for(var _0x297a5c=0x0;_0x297a5c<_0x43ab32[_0x3bd0d7('0x525')];++_0x297a5c){var _0x199b88=_0x43ab32[_0x297a5c];(null==_0x199b88[_0x3bd0d7('0x9d7')]||_0x199b88['from']<=_0x3b022a['ch'])&&(null==_0x199b88['to']||_0x199b88['to']>=_0x3b022a['ch'])&&_0x2d342c[_0x3bd0d7('0x8f8')](_0x199b88[_0x3bd0d7('0x85c')][_0x3bd0d7('0xeb7')]||_0x199b88['marker']);}return _0x2d342c;},'findMarks':function(_0x20c56a,_0x1c2ee5,_0xca50c1){var _0x40ffd2=_0x255d35;_0x20c56a=_0x364c36(this,_0x20c56a),_0x1c2ee5=_0x364c36(this,_0x1c2ee5);var _0x30df8c=[],_0x1c2b85=_0x20c56a[_0x40ffd2('0xde2')];return this[_0x40ffd2('0x160')](_0x20c56a['line'],_0x1c2ee5[_0x40ffd2('0xde2')]+0x1,function(_0x4feac6){var _0x1a5388=_0x40ffd2,_0x9b6456=_0x4feac6[_0x1a5388('0xe33')];if(_0x9b6456)for(var _0xe4f975=0x0;_0xe4f975<_0x9b6456[_0x1a5388('0x525')];_0xe4f975++){var _0x2cc72a=_0x9b6456[_0xe4f975];null!=_0x2cc72a['to']&&_0x1c2b85==_0x20c56a['line']&&_0x20c56a['ch']>=_0x2cc72a['to']||null==_0x2cc72a[_0x1a5388('0x9d7')]&&_0x1c2b85!=_0x20c56a[_0x1a5388('0xde2')]||null!=_0x2cc72a[_0x1a5388('0x9d7')]&&_0x1c2b85==_0x1c2ee5[_0x1a5388('0xde2')]&&_0x2cc72a[_0x1a5388('0x9d7')]>=_0x1c2ee5['ch']||_0xca50c1&&!_0xca50c1(_0x2cc72a['marker'])||_0x30df8c[_0x1a5388('0x8f8')](_0x2cc72a['marker']['parent']||_0x2cc72a['marker']);}++_0x1c2b85;}),_0x30df8c;},'getAllMarks':function(){var _0x5b97ea=_0x255d35,_0x69d3ee=[];return this[_0x5b97ea('0x160')](function(_0x1f4185){var _0x4cb19b=_0x5b97ea,_0x434f34=_0x1f4185[_0x4cb19b('0xe33')];if(_0x434f34)for(var _0x30fde6=0x0;_0x30fde6<_0x434f34[_0x4cb19b('0x525')];++_0x30fde6)null!=_0x434f34[_0x30fde6][_0x4cb19b('0x9d7')]&&_0x69d3ee[_0x4cb19b('0x8f8')](_0x434f34[_0x30fde6]['marker']);}),_0x69d3ee;},'posFromIndex':function(_0x475172){var _0xf39b17=_0x255d35,_0x334351,_0x33a5c6=this['first'],_0x188df3=this[_0xf39b17('0x7d7')]()[_0xf39b17('0x525')];return this[_0xf39b17('0x160')](function(_0x5c153f){var _0x6c92a9=_0x5c153f['text']['length']+_0x188df3;if(_0x6c92a9>_0x475172)return _0x334351=_0x475172,!0x0;_0x475172-=_0x6c92a9,++_0x33a5c6;}),_0x364c36(this,_0xf7c6fb(_0x33a5c6,_0x334351));},'indexFromPos':function(_0x2ddfc8){var _0x9906ac=_0x255d35,_0x4c2558=(_0x2ddfc8=_0x364c36(this,_0x2ddfc8))['ch'];if(_0x2ddfc8['line']_0xdf5dff&&(_0xdf5dff=_0xc713bc['from']),null!=_0xc713bc['to']&&_0xc713bc['to']<_0x483dcf&&(_0x483dcf=_0xc713bc['to']);var _0x11b4a4=new _0x1035cd(_0x4755ef(this,_0xdf5dff,_0x483dcf),_0xc713bc[_0x1bf802('0x575')]||this[_0x1bf802('0x5fe')],_0xdf5dff,this[_0x1bf802('0x484')],this[_0x1bf802('0xd96')]);return _0xc713bc[_0x1bf802('0xd59')]&&(_0x11b4a4['history']=this[_0x1bf802('0xb43')]),(this[_0x1bf802('0xf33')]||(this[_0x1bf802('0xf33')]=[]))[_0x1bf802('0x8f8')]({'doc':_0x11b4a4,'sharedHist':_0xc713bc[_0x1bf802('0xd59')]}),_0x11b4a4[_0x1bf802('0xf33')]=[{'doc':this,'isParent':!0x0,'sharedHist':_0xc713bc[_0x1bf802('0xd59')]}],function(_0x183db8,_0x2bcf7d){var _0xa4e554=_0x1bf802;for(var _0x18952b=0x0;_0x18952b<_0x2bcf7d[_0xa4e554('0x525')];_0x18952b++){var _0x5dce88=_0x2bcf7d[_0x18952b],_0x1af9c1=_0x5dce88[_0xa4e554('0x6f3')](),_0x597fb6=_0x183db8[_0xa4e554('0x240')](_0x1af9c1[_0xa4e554('0x9d7')]),_0x19ce59=_0x183db8['clipPos'](_0x1af9c1['to']);if(_0x42d525(_0x597fb6,_0x19ce59)){var _0x5499d0=_0x3cf60a(_0x183db8,_0x597fb6,_0x19ce59,_0x5dce88['primary'],_0x5dce88[_0xa4e554('0x712')][_0xa4e554('0x3f7')]);_0x5dce88[_0xa4e554('0x115')][_0xa4e554('0x8f8')](_0x5499d0),_0x5499d0[_0xa4e554('0xeb7')]=_0x5dce88;}}}(_0x11b4a4,_0x4c032c(this)),_0x11b4a4;},'unlinkDoc':function(_0x340a84){var _0x358269=_0x255d35;if(_0x340a84 instanceof _0x401c96&&(_0x340a84=_0x340a84['doc']),this[_0x358269('0xf33')])for(var _0x1a5779=0x0;_0x1a5779-0x1)return _0x47a856[_0x3b9926('0xfff')][_0x3b9926('0xa94')](_0xad7679),void setTimeout(function(){var _0x2324ec=_0x3b9926;return _0x47a856[_0x2324ec('0x55c')]['input']['focus']();},0x14);try{var _0x2877cf=_0xad7679[_0x3b9926('0x1111')][_0x3b9926('0x385')](_0x3b9926('0x923'));if(_0x2877cf){var _0x81eb38;if(_0x47a856[_0x3b9926('0xfff')][_0x3b9926('0xa94')]&&!_0x47a856[_0x3b9926('0xfff')][_0x3b9926('0xa94')][_0x3b9926('0xeaa')]&&(_0x81eb38=_0x47a856[_0x3b9926('0x1060')]()),_0x14d3be(_0x47a856['doc'],_0xb97fcb(_0x52a950,_0x52a950)),_0x81eb38)for(var _0x10dd91=0x0;_0x10dd91<_0x81eb38[_0x3b9926('0x525')];++_0x10dd91)_0x1e2405(_0x47a856[_0x3b9926('0xf37')],'',_0x81eb38[_0x10dd91]['anchor'],_0x81eb38[_0x10dd91][_0x3b9926('0x5d4')],_0x3b9926('0x740'));_0x47a856[_0x3b9926('0xd78')](_0x2877cf,_0x3b9926('0x215'),_0x3b9926('0xcf7')),_0x47a856['display'][_0x3b9926('0x20c')][_0x3b9926('0x74b')]();}}catch(_0x29d3b1){}}}}}function _0x1fb68a(_0x4143b7){var _0xfdc2dc=_0x255d35;_0x4143b7[_0xfdc2dc('0x55c')][_0xfdc2dc('0xe66')]&&(_0x4143b7['display']['lineSpace'][_0xfdc2dc('0x75b')](_0x4143b7[_0xfdc2dc('0x55c')][_0xfdc2dc('0xe66')]),_0x4143b7['display']['dragCursor']=null);}function _0x2c0abe(_0x93d5ed){var _0x450679=_0x255d35;if(document[_0x450679('0xc67')]){for(var _0x416e90=document[_0x450679('0xc67')]('CodeMirror'),_0x25bff7=[],_0x27c177=0x0;_0x27c177<_0x416e90[_0x450679('0x525')];_0x27c177++){var _0x212d5f=_0x416e90[_0x27c177][_0x450679('0xb28')];_0x212d5f&&_0x25bff7['push'](_0x212d5f);}_0x25bff7['length']&&_0x25bff7[0x0]['operation'](function(){var _0x1c033f=_0x450679;for(var _0x263000=0x0;_0x263000<_0x25bff7[_0x1c033f('0x525')];_0x263000++)_0x93d5ed(_0x25bff7[_0x263000]);});}}var _0x14ec1f=!0x1;function _0x5bb8c2(){var _0x481592=_0x255d35,_0x4ac25e;_0x14ec1f||(_0x407bf3(window,_0x481592('0x4af'),function(){null==_0x4ac25e&&(_0x4ac25e=setTimeout(function(){_0x4ac25e=null,_0x2c0abe(_0x45ff96);},0x64));}),_0x407bf3(window,_0x481592('0x81c'),function(){return _0x2c0abe(_0x8158a7);}),_0x14ec1f=!0x0);}function _0x45ff96(_0x523050){var _0xe77a2d=_0x255d35,_0x644f5f=_0x523050['display'];_0x644f5f['cachedCharWidth']=_0x644f5f[_0xe77a2d('0x570')]=_0x644f5f['cachedPaddingH']=null,_0x644f5f[_0xe77a2d('0x3c4')]=!0x1,_0x523050[_0xe77a2d('0x741')]();}for(var _0x52e15d={0x3:_0x255d35('0x708'),0x8:_0x255d35('0x23a'),0x9:'Tab',0xd:_0x255d35('0x5ed'),0x10:_0x255d35('0x11d6'),0x11:_0x255d35('0x8f3'),0x12:_0x255d35('0x8e4'),0x13:_0x255d35('0x708'),0x14:'CapsLock',0x1b:'Esc',0x20:_0x255d35('0x3ff'),0x21:'PageUp',0x22:_0x255d35('0x683'),0x23:_0x255d35('0x88d'),0x24:'Home',0x25:_0x255d35('0xffe'),0x26:'Up',0x27:_0x255d35('0xfd'),0x28:_0x255d35('0xc0a'),0x2c:_0x255d35('0x68c'),0x2d:'Insert',0x2e:_0x255d35('0xf15'),0x3b:';',0x3d:'=',0x5b:_0x255d35('0xff'),0x5c:_0x255d35('0xff'),0x5d:_0x255d35('0xff'),0x6a:'*',0x6b:'=',0x6d:'-',0x6e:'.',0x6f:'/',0x91:_0x255d35('0x3a5'),0xad:'-',0xba:';',0xbb:'=',0xbc:',',0xbd:'-',0xbe:'.',0xbf:'/',0xc0:'`',0xdb:'[',0xdc:'\x5c',0xdd:']',0xde:'\x27',0xe0:_0x255d35('0xff'),0xf700:'Up',0xf701:_0x255d35('0xc0a'),0xf702:_0x255d35('0xffe'),0xf703:_0x255d35('0xfd'),0xf728:_0x255d35('0xf15'),0xf729:_0x255d35('0xb7a'),0xf72b:'End',0xf72c:_0x255d35('0xb17'),0xf72d:_0x255d35('0x683'),0xf746:'Insert'},_0x40d174=0x0;_0x40d174<0xa;_0x40d174++)_0x52e15d[_0x40d174+0x30]=_0x52e15d[_0x40d174+0x60]=String(_0x40d174);for(var _0x4bf20c=0x41;_0x4bf20c<=0x5a;_0x4bf20c++)_0x52e15d[_0x4bf20c]=String[_0x255d35('0x251')](_0x4bf20c);for(var _0x595d3b=0x1;_0x595d3b<=0xc;_0x595d3b++)_0x52e15d[_0x595d3b+0x6f]=_0x52e15d[_0x595d3b+0xf703]='F'+_0x595d3b;var _0x4609eb={};function _0x520d0c(_0xd8852d){var _0x3557cc=_0x255d35,_0x25c8d9,_0xaf3c9b,_0x4b3bae,_0x2afdf1,_0x2ad11a=_0xd8852d[_0x3557cc('0x541')](/-(?!$)/);_0xd8852d=_0x2ad11a[_0x2ad11a[_0x3557cc('0x525')]-0x1];for(var _0x1218b8=0x0;_0x1218b8<_0x2ad11a[_0x3557cc('0x525')]-0x1;_0x1218b8++){var _0x43f05f=_0x2ad11a[_0x1218b8];if(/^(cmd|meta|m)$/i[_0x3557cc('0xaac')](_0x43f05f))_0x2afdf1=!0x0;else{if(/^a(lt)?$/i[_0x3557cc('0xaac')](_0x43f05f))_0x25c8d9=!0x0;else{if(/^(c|ctrl|control)$/i['test'](_0x43f05f))_0xaf3c9b=!0x0;else{if(!/^s(hift)?$/i['test'](_0x43f05f))throw new Error(_0x3557cc('0xf49')+_0x43f05f);_0x4b3bae=!0x0;}}}}return _0x25c8d9&&(_0xd8852d=_0x3557cc('0x3ea')+_0xd8852d),_0xaf3c9b&&(_0xd8852d=_0x3557cc('0xfed')+_0xd8852d),_0x2afdf1&&(_0xd8852d='Cmd-'+_0xd8852d),_0x4b3bae&&(_0xd8852d=_0x3557cc('0xc42')+_0xd8852d),_0xd8852d;}function _0xb9bd7a(_0x32dd7b){var _0x40fb35=_0x255d35,_0x2060ca={};for(var _0x138238 in _0x32dd7b)if(_0x32dd7b[_0x40fb35('0x100')](_0x138238)){var _0x409543=_0x32dd7b[_0x138238];if(/^(name|fallthrough|(de|at)tach)$/[_0x40fb35('0xaac')](_0x138238))continue;if('...'==_0x409543){delete _0x32dd7b[_0x138238];continue;}for(var _0x56d829=_0x49f2fe(_0x138238[_0x40fb35('0x541')]('\x20'),_0x520d0c),_0xa1111=0x0;_0xa1111<_0x56d829[_0x40fb35('0x525')];_0xa1111++){var _0x29a1e7=void 0x0,_0x24bb22=void 0x0;_0xa1111==_0x56d829[_0x40fb35('0x525')]-0x1?(_0x24bb22=_0x56d829['join']('\x20'),_0x29a1e7=_0x409543):(_0x24bb22=_0x56d829[_0x40fb35('0xbc0')](0x0,_0xa1111+0x1)[_0x40fb35('0x582')]('\x20'),_0x29a1e7=_0x40fb35('0x195'));var _0x124bf0=_0x2060ca[_0x24bb22];if(_0x124bf0){if(_0x124bf0!=_0x29a1e7)throw new Error(_0x40fb35('0x520')+_0x24bb22);}else _0x2060ca[_0x24bb22]=_0x29a1e7;}delete _0x32dd7b[_0x138238];}for(var _0x27d2d0 in _0x2060ca)_0x32dd7b[_0x27d2d0]=_0x2060ca[_0x27d2d0];return _0x32dd7b;}function _0x3e40bf(_0x59d362,_0x489fd9,_0x54af5a,_0x240cb3){var _0x412232=_0x255d35,_0x593c91=(_0x489fd9=_0x3c836d(_0x489fd9))[_0x412232('0x4b0')]?_0x489fd9[_0x412232('0x4b0')](_0x59d362,_0x240cb3):_0x489fd9[_0x59d362];if(!0x1===_0x593c91)return _0x412232('0x58c');if(_0x412232('0x195')===_0x593c91)return'multi';if(null!=_0x593c91&&_0x54af5a(_0x593c91))return _0x412232('0x74a');if(_0x489fd9[_0x412232('0x18c')]){if('[object\x20Array]'!=Object[_0x412232('0x98c')][_0x412232('0x537')][_0x412232('0x4b0')](_0x489fd9[_0x412232('0x18c')]))return _0x3e40bf(_0x59d362,_0x489fd9[_0x412232('0x18c')],_0x54af5a,_0x240cb3);for(var _0x3e6f78=0x0;_0x3e6f78<_0x489fd9[_0x412232('0x18c')]['length'];_0x3e6f78++){var _0x1360b9=_0x3e40bf(_0x59d362,_0x489fd9['fallthrough'][_0x3e6f78],_0x54af5a,_0x240cb3);if(_0x1360b9)return _0x1360b9;}}}function _0x32ce40(_0x370171){var _0x562769=_0x255d35,_0x561f2d='string'==typeof _0x370171?_0x370171:_0x52e15d[_0x370171[_0x562769('0xc7c')]];return _0x562769('0x8f3')==_0x561f2d||'Alt'==_0x561f2d||'Shift'==_0x561f2d||_0x562769('0xff')==_0x561f2d;}function _0x516528(_0x461615,_0x7837ac,_0xffb338){var _0x5ecd60=_0x255d35,_0xe9ebc6=_0x461615;return _0x7837ac[_0x5ecd60('0x476')]&&_0x5ecd60('0x8e4')!=_0xe9ebc6&&(_0x461615=_0x5ecd60('0x3ea')+_0x461615),(_0x3e590a?_0x7837ac['metaKey']:_0x7837ac[_0x5ecd60('0x1005')])&&'Ctrl'!=_0xe9ebc6&&(_0x461615=_0x5ecd60('0xfed')+_0x461615),(_0x3e590a?_0x7837ac[_0x5ecd60('0x1005')]:_0x7837ac[_0x5ecd60('0xe3')])&&_0x5ecd60('0xff')!=_0xe9ebc6&&(_0x461615=_0x5ecd60('0x116')+_0x461615),!_0xffb338&&_0x7837ac['shiftKey']&&_0x5ecd60('0x11d6')!=_0xe9ebc6&&(_0x461615=_0x5ecd60('0xc42')+_0x461615),_0x461615;}function _0x14291d(_0x48a888,_0x53a492){var _0x13e0e9=_0x255d35;if(_0x58a491&&0x22==_0x48a888[_0x13e0e9('0xc7c')]&&_0x48a888['char'])return!0x1;var _0x318968=_0x52e15d[_0x48a888[_0x13e0e9('0xc7c')]];return null!=_0x318968&&!_0x48a888[_0x13e0e9('0xbf2')]&&(0x3==_0x48a888[_0x13e0e9('0xc7c')]&&_0x48a888[_0x13e0e9('0xb5c')]&&(_0x318968=_0x48a888[_0x13e0e9('0xb5c')]),_0x516528(_0x318968,_0x48a888,_0x53a492));}function _0x3c836d(_0x500ce8){var _0x4bc037=_0x255d35;return _0x4bc037('0x7c7')==typeof _0x500ce8?_0x4609eb[_0x500ce8]:_0x500ce8;}function _0x5c3dd0(_0x52aee5,_0x1323e8){var _0x40352c=_0x255d35;for(var _0x22d7d6=_0x52aee5[_0x40352c('0xf37')][_0x40352c('0x10f6')][_0x40352c('0x32')],_0x9dfb0=[],_0x1903c2=0x0;_0x1903c2<_0x22d7d6[_0x40352c('0x525')];_0x1903c2++){for(var _0x50e59c=_0x1323e8(_0x22d7d6[_0x1903c2]);_0x9dfb0['length']&&_0x42d525(_0x50e59c[_0x40352c('0x9d7')],_0x15560b(_0x9dfb0)['to'])<=0x0;){var _0x556107=_0x9dfb0[_0x40352c('0x57f')]();if(_0x42d525(_0x556107[_0x40352c('0x9d7')],_0x50e59c['from'])<0x0){_0x50e59c[_0x40352c('0x9d7')]=_0x556107['from'];break;}}_0x9dfb0[_0x40352c('0x8f8')](_0x50e59c);}_0x14c54d(_0x52aee5,function(){var _0x413638=_0x40352c;for(var _0x3ca52f=_0x9dfb0['length']-0x1;_0x3ca52f>=0x0;_0x3ca52f--)_0x1e2405(_0x52aee5[_0x413638('0xf37')],'',_0x9dfb0[_0x3ca52f]['from'],_0x9dfb0[_0x3ca52f]['to'],'+delete');_0x515b9d(_0x52aee5);});}function _0x3e6857(_0x570048,_0x2dfc80,_0x282925){var _0x387213=_0x255d35,_0x5158d4=_0x52274c(_0x570048[_0x387213('0x768')],_0x2dfc80+_0x282925,_0x282925);return _0x5158d4<0x0||_0x5158d4>_0x570048[_0x387213('0x768')][_0x387213('0x525')]?null:_0x5158d4;}function _0x186db9(_0x357ff2,_0x5c5d6b,_0x423c7c){var _0x557048=_0x255d35,_0x3758ee=_0x3e6857(_0x357ff2,_0x5c5d6b['ch'],_0x423c7c);return null==_0x3758ee?null:new _0xf7c6fb(_0x5c5d6b[_0x557048('0xde2')],_0x3758ee,_0x423c7c<0x0?_0x557048('0x95d'):'before');}function _0x1661f6(_0x3d8956,_0x3868de,_0x6f05c3,_0x390483,_0x232d8d){var _0x491c06=_0x255d35;if(_0x3d8956){_0x491c06('0xb2f')==_0x3868de[_0x491c06('0xf37')][_0x491c06('0xd96')]&&(_0x232d8d=-_0x232d8d);var _0x14135c=_0x3982e5(_0x6f05c3,_0x3868de[_0x491c06('0xf37')]['direction']);if(_0x14135c){var _0xb5eb3,_0x3a1eaf=_0x232d8d<0x0?_0x15560b(_0x14135c):_0x14135c[0x0],_0x415ee4=_0x232d8d<0x0==(0x1==_0x3a1eaf[_0x491c06('0x1fe')])?'after':_0x491c06('0xa69');if(_0x3a1eaf[_0x491c06('0x1fe')]>0x0||_0x491c06('0xb2f')==_0x3868de[_0x491c06('0xf37')][_0x491c06('0xd96')]){var _0x112e72=_0x5b7fb4(_0x3868de,_0x6f05c3);_0xb5eb3=_0x232d8d<0x0?_0x6f05c3[_0x491c06('0x768')][_0x491c06('0x525')]-0x1:0x0;var _0x909255=_0x3320ba(_0x3868de,_0x112e72,_0xb5eb3)[_0x491c06('0x62d')];_0xb5eb3=_0x3118df(function(_0x50c1ff){return _0x3320ba(_0x3868de,_0x112e72,_0x50c1ff)['top']==_0x909255;},_0x232d8d<0x0==(0x1==_0x3a1eaf[_0x491c06('0x1fe')])?_0x3a1eaf['from']:_0x3a1eaf['to']-0x1,_0xb5eb3),_0x491c06('0xa69')==_0x415ee4&&(_0xb5eb3=_0x3e6857(_0x6f05c3,_0xb5eb3,0x1));}else _0xb5eb3=_0x232d8d<0x0?_0x3a1eaf['to']:_0x3a1eaf[_0x491c06('0x9d7')];return new _0xf7c6fb(_0x390483,_0xb5eb3,_0x415ee4);}}return new _0xf7c6fb(_0x390483,_0x232d8d<0x0?_0x6f05c3[_0x491c06('0x768')][_0x491c06('0x525')]:0x0,_0x232d8d<0x0?_0x491c06('0xa69'):_0x491c06('0x95d'));}_0x4609eb['basic']={'Left':_0x255d35('0x600'),'Right':_0x255d35('0xa24'),'Up':_0x255d35('0x11d4'),'Down':_0x255d35('0x877'),'End':_0x255d35('0x5aa'),'Home':_0x255d35('0x91c'),'PageUp':_0x255d35('0x3aa'),'PageDown':_0x255d35('0x2b9'),'Delete':'delCharAfter','Backspace':'delCharBefore','Shift-Backspace':_0x255d35('0x482'),'Tab':_0x255d35('0x269'),'Shift-Tab':'indentAuto','Enter':_0x255d35('0x1172'),'Insert':_0x255d35('0x93f'),'Esc':_0x255d35('0xb97')},_0x4609eb['pcDefault']={'Ctrl-A':'selectAll','Ctrl-D':_0x255d35('0xdfd'),'Ctrl-Z':_0x255d35('0x932'),'Shift-Ctrl-Z':_0x255d35('0x948'),'Ctrl-Y':_0x255d35('0x948'),'Ctrl-Home':'goDocStart','Ctrl-End':_0x255d35('0x54a'),'Ctrl-Up':_0x255d35('0x11d4'),'Ctrl-Down':'goLineDown','Ctrl-Left':_0x255d35('0x579'),'Ctrl-Right':'goGroupRight','Alt-Left':'goLineStart','Alt-Right':_0x255d35('0x5aa'),'Ctrl-Backspace':'delGroupBefore','Ctrl-Delete':_0x255d35('0xfda'),'Ctrl-S':_0x255d35('0xc68'),'Ctrl-F':'find','Ctrl-G':_0x255d35('0x14f'),'Shift-Ctrl-G':'findPrev','Shift-Ctrl-F':_0x255d35('0x166'),'Shift-Ctrl-R':_0x255d35('0x33e'),'Ctrl-[':_0x255d35('0xccf'),'Ctrl-]':'indentMore','Ctrl-U':'undoSelection','Shift-Ctrl-U':_0x255d35('0xc84'),'Alt-U':_0x255d35('0xc84'),'fallthrough':_0x255d35('0x17c')},_0x4609eb['emacsy']={'Ctrl-F':_0x255d35('0xa24'),'Ctrl-B':_0x255d35('0x600'),'Ctrl-P':'goLineUp','Ctrl-N':_0x255d35('0x877'),'Alt-F':_0x255d35('0x1048'),'Alt-B':_0x255d35('0x829'),'Ctrl-A':_0x255d35('0x854'),'Ctrl-E':'goLineEnd','Ctrl-V':_0x255d35('0x2b9'),'Shift-Ctrl-V':_0x255d35('0x3aa'),'Ctrl-D':_0x255d35('0xb67'),'Ctrl-H':_0x255d35('0x482'),'Alt-D':'delWordAfter','Alt-Backspace':_0x255d35('0x3fc'),'Ctrl-K':_0x255d35('0x344'),'Ctrl-T':_0x255d35('0xbaa'),'Ctrl-O':_0x255d35('0xa2b')},_0x4609eb[_0x255d35('0xc5a')]={'Cmd-A':_0x255d35('0x4e1'),'Cmd-D':_0x255d35('0xdfd'),'Cmd-Z':_0x255d35('0x932'),'Shift-Cmd-Z':_0x255d35('0x948'),'Cmd-Y':'redo','Cmd-Home':'goDocStart','Cmd-Up':_0x255d35('0x399'),'Cmd-End':_0x255d35('0x54a'),'Cmd-Down':_0x255d35('0x54a'),'Alt-Left':_0x255d35('0x579'),'Alt-Right':_0x255d35('0x890'),'Cmd-Left':'goLineLeft','Cmd-Right':_0x255d35('0x14c'),'Alt-Backspace':'delGroupBefore','Ctrl-Alt-Backspace':'delGroupAfter','Alt-Delete':'delGroupAfter','Cmd-S':_0x255d35('0xc68'),'Cmd-F':_0x255d35('0x6f3'),'Cmd-G':_0x255d35('0x14f'),'Shift-Cmd-G':_0x255d35('0x349'),'Cmd-Alt-F':'replace','Shift-Cmd-Alt-F':'replaceAll','Cmd-[':_0x255d35('0xccf'),'Cmd-]':'indentMore','Cmd-Backspace':'delWrappedLineLeft','Cmd-Delete':_0x255d35('0xd1e'),'Cmd-U':'undoSelection','Shift-Cmd-U':_0x255d35('0xc84'),'Ctrl-Up':_0x255d35('0x399'),'Ctrl-Down':_0x255d35('0x54a'),'fallthrough':[_0x255d35('0x17c'),'emacsy']},_0x4609eb['default']=_0x2841f0?_0x4609eb[_0x255d35('0xc5a')]:_0x4609eb[_0x255d35('0xdc5')];var _0x25a9e6={'selectAll':_0x897e5c,'singleSelection':function(_0x46ff71){var _0x237607=_0x255d35;return _0x46ff71[_0x237607('0x53b')](_0x46ff71['getCursor'](_0x237607('0x66d')),_0x46ff71['getCursor']('head'),_0x463688);},'killLine':function(_0x3dd83a){return _0x5c3dd0(_0x3dd83a,function(_0x1cb94a){var _0x55f4fd=_0x3ab6;if(_0x1cb94a[_0x55f4fd('0x1078')]()){var _0x4e5bd1=_0x1b58dd(_0x3dd83a[_0x55f4fd('0xf37')],_0x1cb94a[_0x55f4fd('0x5d4')]['line'])['text'][_0x55f4fd('0x525')];return _0x1cb94a[_0x55f4fd('0x5d4')]['ch']==_0x4e5bd1&&_0x1cb94a[_0x55f4fd('0x5d4')][_0x55f4fd('0xde2')]<_0x3dd83a[_0x55f4fd('0xbdf')]()?{'from':_0x1cb94a[_0x55f4fd('0x5d4')],'to':_0xf7c6fb(_0x1cb94a[_0x55f4fd('0x5d4')][_0x55f4fd('0xde2')]+0x1,0x0)}:{'from':_0x1cb94a[_0x55f4fd('0x5d4')],'to':_0xf7c6fb(_0x1cb94a['head'][_0x55f4fd('0xde2')],_0x4e5bd1)};}return{'from':_0x1cb94a[_0x55f4fd('0x9d7')](),'to':_0x1cb94a['to']()};});},'deleteLine':function(_0x572c22){return _0x5c3dd0(_0x572c22,function(_0x469df6){var _0x219e82=_0x3ab6;return{'from':_0xf7c6fb(_0x469df6[_0x219e82('0x9d7')]()[_0x219e82('0xde2')],0x0),'to':_0x364c36(_0x572c22[_0x219e82('0xf37')],_0xf7c6fb(_0x469df6['to']()[_0x219e82('0xde2')]+0x1,0x0))};});},'delLineLeft':function(_0x56c1f3){return _0x5c3dd0(_0x56c1f3,function(_0x21da42){return{'from':_0xf7c6fb(_0x21da42['from']()['line'],0x0),'to':_0x21da42['from']()};});},'delWrappedLineLeft':function(_0x32702e){return _0x5c3dd0(_0x32702e,function(_0x31e537){var _0x4db889=_0x3ab6,_0x2537e6=_0x32702e[_0x4db889('0xbde')](_0x31e537['head'],_0x4db889('0x7fc'))['top']+0x5;return{'from':_0x32702e[_0x4db889('0x76d')]({'left':0x0,'top':_0x2537e6},'div'),'to':_0x31e537[_0x4db889('0x9d7')]()};});},'delWrappedLineRight':function(_0x156faa){return _0x5c3dd0(_0x156faa,function(_0x1621ef){var _0x21c09f=_0x3ab6,_0x2abdc3=_0x156faa[_0x21c09f('0xbde')](_0x1621ef[_0x21c09f('0x5d4')],_0x21c09f('0x7fc'))[_0x21c09f('0x62d')]+0x5,_0x15a616=_0x156faa[_0x21c09f('0x76d')]({'left':_0x156faa[_0x21c09f('0x55c')]['lineDiv'][_0x21c09f('0x969')]+0x64,'top':_0x2abdc3},'div');return{'from':_0x1621ef[_0x21c09f('0x9d7')](),'to':_0x15a616};});},'undo':function(_0x53f179){var _0x340db9=_0x255d35;return _0x53f179[_0x340db9('0x932')]();},'redo':function(_0x1122fc){var _0x1314cf=_0x255d35;return _0x1122fc[_0x1314cf('0x948')]();},'undoSelection':function(_0x39ca2f){var _0x7cb0c5=_0x255d35;return _0x39ca2f[_0x7cb0c5('0x9c4')]();},'redoSelection':function(_0x4c8ec7){return _0x4c8ec7['redoSelection']();},'goDocStart':function(_0x22ff73){var _0x2dfc65=_0x255d35;return _0x22ff73[_0x2dfc65('0xa1')](_0xf7c6fb(_0x22ff73[_0x2dfc65('0x11bd')](),0x0));},'goDocEnd':function(_0x4e1e4c){var _0x23baf5=_0x255d35;return _0x4e1e4c[_0x23baf5('0xa1')](_0xf7c6fb(_0x4e1e4c[_0x23baf5('0xbdf')]()));},'goLineStart':function(_0x21ce71){var _0x197e56=_0x255d35;return _0x21ce71[_0x197e56('0xd0c')](function(_0x1eebf2){var _0x4e5102=_0x197e56;return _0x1b1994(_0x21ce71,_0x1eebf2[_0x4e5102('0x5d4')][_0x4e5102('0xde2')]);},{'origin':'+move','bias':0x1});},'goLineStartSmart':function(_0x242b67){var _0x988f18=_0x255d35;return _0x242b67['extendSelectionsBy'](function(_0x43e857){var _0x2c0067=_0x3ab6;return _0x3ba575(_0x242b67,_0x43e857[_0x2c0067('0x5d4')]);},{'origin':_0x988f18('0xc7'),'bias':0x1});},'goLineEnd':function(_0x53b9f7){var _0x38311b=_0x255d35;return _0x53b9f7[_0x38311b('0xd0c')](function(_0x8ffd7c){var _0x108377=_0x38311b;return function(_0x468b15,_0x2c0329){var _0x29133e=_0x3ab6,_0x968d59=_0x1b58dd(_0x468b15[_0x29133e('0xf37')],_0x2c0329),_0x217607=function(_0x5d75e8){var _0x4aead6=_0x29133e;for(var _0x5dcded;_0x5dcded=_0x2108ff(_0x5d75e8);)_0x5d75e8=_0x5dcded[_0x4aead6('0x6f3')](0x1,!0x0)['line'];return _0x5d75e8;}(_0x968d59);return _0x217607!=_0x968d59&&(_0x2c0329=_0x5ee38b(_0x217607)),_0x1661f6(!0x0,_0x468b15,_0x968d59,_0x2c0329,-0x1);}(_0x53b9f7,_0x8ffd7c[_0x108377('0x5d4')][_0x108377('0xde2')]);},{'origin':_0x38311b('0xc7'),'bias':-0x1});},'goLineRight':function(_0x1f508c){var _0xbd3b1c=_0x255d35;return _0x1f508c[_0xbd3b1c('0xd0c')](function(_0x31e354){var _0x8b659b=_0xbd3b1c,_0x32ee6c=_0x1f508c[_0x8b659b('0xbb0')](_0x31e354[_0x8b659b('0x5d4')],_0x8b659b('0x7fc'))[_0x8b659b('0x62d')]+0x5;return _0x1f508c[_0x8b659b('0x76d')]({'left':_0x1f508c['display'][_0x8b659b('0x1147')][_0x8b659b('0x969')]+0x64,'top':_0x32ee6c},_0x8b659b('0x7fc'));},_0x28630a);},'goLineLeft':function(_0x154861){var _0x503135=_0x255d35;return _0x154861[_0x503135('0xd0c')](function(_0x54b551){var _0x239832=_0x503135,_0x3ba54b=_0x154861['cursorCoords'](_0x54b551[_0x239832('0x5d4')],'div')[_0x239832('0x62d')]+0x5;return _0x154861[_0x239832('0x76d')]({'left':0x0,'top':_0x3ba54b},_0x239832('0x7fc'));},_0x28630a);},'goLineLeftSmart':function(_0x52ad5d){return _0x52ad5d['extendSelectionsBy'](function(_0x533ec8){var _0x18beda=_0x3ab6,_0x369534=_0x52ad5d[_0x18beda('0xbb0')](_0x533ec8[_0x18beda('0x5d4')],_0x18beda('0x7fc'))[_0x18beda('0x62d')]+0x5,_0x145264=_0x52ad5d[_0x18beda('0x76d')]({'left':0x0,'top':_0x369534},_0x18beda('0x7fc'));return _0x145264['ch']<_0x52ad5d[_0x18beda('0xdac')](_0x145264[_0x18beda('0xde2')])[_0x18beda('0xaaf')](/\S/)?_0x3ba575(_0x52ad5d,_0x533ec8[_0x18beda('0x5d4')]):_0x145264;},_0x28630a);},'goLineUp':function(_0x2ed83f){var _0x498dfb=_0x255d35;return _0x2ed83f[_0x498dfb('0xb95')](-0x1,'line');},'goLineDown':function(_0x17eed4){var _0x15bd07=_0x255d35;return _0x17eed4[_0x15bd07('0xb95')](0x1,_0x15bd07('0xde2'));},'goPageUp':function(_0x20a593){var _0x3449e8=_0x255d35;return _0x20a593['moveV'](-0x1,_0x3449e8('0x9dc'));},'goPageDown':function(_0x37280f){var _0x34bdb9=_0x255d35;return _0x37280f['moveV'](0x1,_0x34bdb9('0x9dc'));},'goCharLeft':function(_0x1a43ae){var _0x2deb08=_0x255d35;return _0x1a43ae[_0x2deb08('0x52d')](-0x1,_0x2deb08('0xf66'));},'goCharRight':function(_0x3d5ba9){var _0x7a1a82=_0x255d35;return _0x3d5ba9['moveH'](0x1,_0x7a1a82('0xf66'));},'goColumnLeft':function(_0x5bb224){var _0x43d791=_0x255d35;return _0x5bb224['moveH'](-0x1,_0x43d791('0x865'));},'goColumnRight':function(_0x5e6de8){var _0xa14d09=_0x255d35;return _0x5e6de8['moveH'](0x1,_0xa14d09('0x865'));},'goWordLeft':function(_0x3085dc){var _0x4c6f53=_0x255d35;return _0x3085dc[_0x4c6f53('0x52d')](-0x1,_0x4c6f53('0x7c6'));},'goGroupRight':function(_0x317162){var _0x425205=_0x255d35;return _0x317162[_0x425205('0x52d')](0x1,_0x425205('0x1144'));},'goGroupLeft':function(_0x28e1ba){var _0x9e0c47=_0x255d35;return _0x28e1ba[_0x9e0c47('0x52d')](-0x1,_0x9e0c47('0x1144'));},'goWordRight':function(_0x2c02bd){var _0x29f314=_0x255d35;return _0x2c02bd['moveH'](0x1,_0x29f314('0x7c6'));},'delCharBefore':function(_0x1613d1){var _0x3d99fe=_0x255d35;return _0x1613d1[_0x3d99fe('0x220')](-0x1,_0x3d99fe('0x81'));},'delCharAfter':function(_0x339bc7){var _0x3669a2=_0x255d35;return _0x339bc7[_0x3669a2('0x220')](0x1,_0x3669a2('0xf66'));},'delWordBefore':function(_0x5114bf){return _0x5114bf['deleteH'](-0x1,'word');},'delWordAfter':function(_0x4733b4){return _0x4733b4['deleteH'](0x1,'word');},'delGroupBefore':function(_0x3bb7ef){var _0x370614=_0x255d35;return _0x3bb7ef[_0x370614('0x220')](-0x1,_0x370614('0x1144'));},'delGroupAfter':function(_0x48b7e2){var _0x2cc8ab=_0x255d35;return _0x48b7e2[_0x2cc8ab('0x220')](0x1,_0x2cc8ab('0x1144'));},'indentAuto':function(_0x59f345){var _0x53b45a=_0x255d35;return _0x59f345['indentSelection'](_0x53b45a('0x43a'));},'indentMore':function(_0x4caaf1){var _0x142ef7=_0x255d35;return _0x4caaf1[_0x142ef7('0x457')](_0x142ef7('0x1130'));},'indentLess':function(_0xf6946a){var _0x1aab64=_0x255d35;return _0xf6946a[_0x1aab64('0x457')]('subtract');},'insertTab':function(_0x325c7f){var _0x2b2a9f=_0x255d35;return _0x325c7f[_0x2b2a9f('0xd78')]('\x09');},'insertSoftTab':function(_0x173734){var _0x1a04f4=_0x255d35;for(var _0x215c15=[],_0x33a287=_0x173734[_0x1a04f4('0x1060')](),_0x398738=_0x173734[_0x1a04f4('0x631')][_0x1a04f4('0x772')],_0x3ae486=0x0;_0x3ae486<_0x33a287[_0x1a04f4('0x525')];_0x3ae486++){var _0x4d92ba=_0x33a287[_0x3ae486]['from'](),_0xed6de=_0x40e2a1(_0x173734[_0x1a04f4('0xdac')](_0x4d92ba['line']),_0x4d92ba['ch'],_0x398738);_0x215c15[_0x1a04f4('0x8f8')](_0x1fed3f(_0x398738-_0xed6de%_0x398738));}_0x173734[_0x1a04f4('0xd65')](_0x215c15);},'defaultTab':function(_0x5117ae){var _0xa59141=_0x255d35;_0x5117ae[_0xa59141('0xdea')]()?_0x5117ae[_0xa59141('0x457')](_0xa59141('0x1130')):_0x5117ae[_0xa59141('0x69f')](_0xa59141('0x8a5'));},'transposeChars':function(_0x3725c0){return _0x14c54d(_0x3725c0,function(){var _0x8494ea=_0x3ab6;for(var _0x26f11a=_0x3725c0[_0x8494ea('0x1060')](),_0x383189=[],_0x376975=0x0;_0x376975<_0x26f11a['length'];_0x376975++)if(_0x26f11a[_0x376975][_0x8494ea('0x1078')]()){var _0xfd852a=_0x26f11a[_0x376975][_0x8494ea('0x5d4')],_0x215fd0=_0x1b58dd(_0x3725c0[_0x8494ea('0xf37')],_0xfd852a[_0x8494ea('0xde2')])[_0x8494ea('0x768')];if(_0x215fd0){if(_0xfd852a['ch']==_0x215fd0[_0x8494ea('0x525')]&&(_0xfd852a=new _0xf7c6fb(_0xfd852a['line'],_0xfd852a['ch']-0x1)),_0xfd852a['ch']>0x0)_0xfd852a=new _0xf7c6fb(_0xfd852a[_0x8494ea('0xde2')],_0xfd852a['ch']+0x1),_0x3725c0['replaceRange'](_0x215fd0[_0x8494ea('0xc8e')](_0xfd852a['ch']-0x1)+_0x215fd0[_0x8494ea('0xc8e')](_0xfd852a['ch']-0x2),_0xf7c6fb(_0xfd852a['line'],_0xfd852a['ch']-0x2),_0xfd852a,_0x8494ea('0xe86'));else{if(_0xfd852a['line']>_0x3725c0[_0x8494ea('0xf37')][_0x8494ea('0xe3c')]){var _0x584e26=_0x1b58dd(_0x3725c0[_0x8494ea('0xf37')],_0xfd852a['line']-0x1)[_0x8494ea('0x768')];_0x584e26&&(_0xfd852a=new _0xf7c6fb(_0xfd852a[_0x8494ea('0xde2')],0x1),_0x3725c0[_0x8494ea('0x954')](_0x215fd0['charAt'](0x0)+_0x3725c0[_0x8494ea('0xf37')]['lineSeparator']()+_0x584e26['charAt'](_0x584e26[_0x8494ea('0x525')]-0x1),_0xf7c6fb(_0xfd852a[_0x8494ea('0xde2')]-0x1,_0x584e26[_0x8494ea('0x525')]-0x1),_0xfd852a,_0x8494ea('0xe86')));}}}_0x383189['push'](new _0x47634a(_0xfd852a,_0xfd852a));}_0x3725c0[_0x8494ea('0xd02')](_0x383189);});},'newlineAndIndent':function(_0x2eeaf1){return _0x14c54d(_0x2eeaf1,function(){var _0x3f5ca7=_0x3ab6;for(var _0x2aeea2=_0x2eeaf1[_0x3f5ca7('0x1060')](),_0x553792=_0x2aeea2[_0x3f5ca7('0x525')]-0x1;_0x553792>=0x0;_0x553792--)_0x2eeaf1[_0x3f5ca7('0x954')](_0x2eeaf1[_0x3f5ca7('0xf37')][_0x3f5ca7('0x7d7')](),_0x2aeea2[_0x553792]['anchor'],_0x2aeea2[_0x553792][_0x3f5ca7('0x5d4')],_0x3f5ca7('0x42e'));_0x2aeea2=_0x2eeaf1[_0x3f5ca7('0x1060')]();for(var _0x1bf660=0x0;_0x1bf660<_0x2aeea2[_0x3f5ca7('0x525')];_0x1bf660++)_0x2eeaf1[_0x3f5ca7('0xf0d')](_0x2aeea2[_0x1bf660][_0x3f5ca7('0x9d7')]()[_0x3f5ca7('0xde2')],null,!0x0);_0x515b9d(_0x2eeaf1);});},'openLine':function(_0x24034a){var _0x194a25=_0x255d35;return _0x24034a[_0x194a25('0xd78')]('\x0a',_0x194a25('0x1045'));},'toggleOverwrite':function(_0x2c7af9){var _0x58a68e=_0x255d35;return _0x2c7af9[_0x58a68e('0x93f')]();}};function _0x1b1994(_0x6c1f89,_0x4b6d2a){var _0x3226c8=_0x255d35,_0xf2f4de=_0x1b58dd(_0x6c1f89[_0x3226c8('0xf37')],_0x4b6d2a),_0x1307de=_0x5958c7(_0xf2f4de);return _0x1307de!=_0xf2f4de&&(_0x4b6d2a=_0x5ee38b(_0x1307de)),_0x1661f6(!0x0,_0x6c1f89,_0x1307de,_0x4b6d2a,0x1);}function _0x3ba575(_0x28d6c9,_0x5a2a95){var _0x199689=_0x255d35,_0x4e1928=_0x1b1994(_0x28d6c9,_0x5a2a95[_0x199689('0xde2')]),_0x3074ff=_0x1b58dd(_0x28d6c9['doc'],_0x4e1928[_0x199689('0xde2')]),_0x3a5cdc=_0x3982e5(_0x3074ff,_0x28d6c9['doc'][_0x199689('0xd96')]);if(!_0x3a5cdc||0x0==_0x3a5cdc[0x0]['level']){var _0x522926=Math[_0x199689('0xf65')](_0x4e1928['ch'],_0x3074ff['text']['search'](/\S/)),_0x15e7e0=_0x5a2a95[_0x199689('0xde2')]==_0x4e1928[_0x199689('0xde2')]&&_0x5a2a95['ch']<=_0x522926&&_0x5a2a95['ch'];return _0xf7c6fb(_0x4e1928[_0x199689('0xde2')],_0x15e7e0?0x0:_0x522926,_0x4e1928[_0x199689('0x84e')]);}return _0x4e1928;}function _0x546151(_0x22f6bf,_0x1d19f3,_0x26d844){var _0x3b1b4e=_0x255d35;if(_0x3b1b4e('0x7c7')==typeof _0x1d19f3&&!(_0x1d19f3=_0x25a9e6[_0x1d19f3]))return!0x1;_0x22f6bf[_0x3b1b4e('0x55c')][_0x3b1b4e('0x20c')][_0x3b1b4e('0x10e')]();var _0x94c665=_0x22f6bf[_0x3b1b4e('0x55c')][_0x3b1b4e('0x8be')],_0x2971d3=!0x1;try{_0x22f6bf[_0x3b1b4e('0xed4')]()&&(_0x22f6bf[_0x3b1b4e('0xfff')]['suppressEdits']=!0x0),_0x26d844&&(_0x22f6bf['display'][_0x3b1b4e('0x8be')]=!0x1),_0x2971d3=_0x1d19f3(_0x22f6bf)!=_0x457770;}finally{_0x22f6bf[_0x3b1b4e('0x55c')][_0x3b1b4e('0x8be')]=_0x94c665,_0x22f6bf[_0x3b1b4e('0xfff')][_0x3b1b4e('0x583')]=!0x1;}return _0x2971d3;}var _0x237a8c=new _0x1d1618();function _0x30eaf7(_0x4f0dac,_0x4f2602,_0x2e43d8,_0x1f0c70){var _0x395987=_0x255d35,_0x27adfd=_0x4f0dac[_0x395987('0xfff')][_0x395987('0xafe')];if(_0x27adfd){if(_0x32ce40(_0x4f2602))return'handled';if(/\'$/[_0x395987('0xaac')](_0x4f2602)?_0x4f0dac[_0x395987('0xfff')][_0x395987('0xafe')]=null:_0x237a8c[_0x395987('0x11ce')](0x32,function(){var _0x45bd2f=_0x395987;_0x4f0dac['state'][_0x45bd2f('0xafe')]==_0x27adfd&&(_0x4f0dac[_0x45bd2f('0xfff')][_0x45bd2f('0xafe')]=null,_0x4f0dac[_0x45bd2f('0x55c')][_0x45bd2f('0x20c')][_0x45bd2f('0xff3')]());}),_0x268302(_0x4f0dac,_0x27adfd+'\x20'+_0x4f2602,_0x2e43d8,_0x1f0c70))return!0x0;}return _0x268302(_0x4f0dac,_0x4f2602,_0x2e43d8,_0x1f0c70);}function _0x268302(_0x2cead8,_0x2e62bb,_0x2f74a5,_0x8f8560){var _0x2d4122=_0x255d35,_0x144136=function(_0x2fb252,_0x1eb2ad,_0x4030a4){var _0x30fb4a=_0x3ab6;for(var _0x3e3288=0x0;_0x3e3288<_0x2fb252[_0x30fb4a('0xfff')][_0x30fb4a('0x902')][_0x30fb4a('0x525')];_0x3e3288++){var _0x1963c5=_0x3e40bf(_0x1eb2ad,_0x2fb252[_0x30fb4a('0xfff')][_0x30fb4a('0x902')][_0x3e3288],_0x4030a4,_0x2fb252);if(_0x1963c5)return _0x1963c5;}return _0x2fb252[_0x30fb4a('0x631')]['extraKeys']&&_0x3e40bf(_0x1eb2ad,_0x2fb252[_0x30fb4a('0x631')][_0x30fb4a('0x8b1')],_0x4030a4,_0x2fb252)||_0x3e40bf(_0x1eb2ad,_0x2fb252['options']['keyMap'],_0x4030a4,_0x2fb252);}(_0x2cead8,_0x2e62bb,_0x8f8560);return _0x2d4122('0x1180')==_0x144136&&(_0x2cead8['state'][_0x2d4122('0xafe')]=_0x2e62bb),'handled'==_0x144136&&_0x5470d1(_0x2cead8,_0x2d4122('0x8d7'),_0x2cead8,_0x2e62bb,_0x2f74a5),_0x2d4122('0x74a')!=_0x144136&&_0x2d4122('0x1180')!=_0x144136||(_0x12a3b5(_0x2f74a5),_0x25de7a(_0x2cead8)),!!_0x144136;}function _0x5e8fa2(_0x4603c9,_0x59cabf){var _0x1699fd=_0x255d35,_0x50112b=_0x14291d(_0x59cabf,!0x0);return!!_0x50112b&&(_0x59cabf[_0x1699fd('0xdab')]&&!_0x4603c9[_0x1699fd('0xfff')][_0x1699fd('0xafe')]?_0x30eaf7(_0x4603c9,'Shift-'+_0x50112b,_0x59cabf,function(_0x5122d4){return _0x546151(_0x4603c9,_0x5122d4,!0x0);})||_0x30eaf7(_0x4603c9,_0x50112b,_0x59cabf,function(_0x543d6a){var _0x1029e0=_0x1699fd;if(_0x1029e0('0x7c7')==typeof _0x543d6a?/^go[A-Z]/[_0x1029e0('0xaac')](_0x543d6a):_0x543d6a[_0x1029e0('0x11c1')])return _0x546151(_0x4603c9,_0x543d6a);}):_0x30eaf7(_0x4603c9,_0x50112b,_0x59cabf,function(_0x4f3a40){return _0x546151(_0x4603c9,_0x4f3a40);}));}var _0x8cc480=null;function _0x5aef9d(_0x4f777f){var _0x22a8fd=_0x255d35,_0x4d5208=this;if(!(_0x4f777f[_0x22a8fd('0x616')]&&_0x4f777f[_0x22a8fd('0x616')]!=_0x4d5208[_0x22a8fd('0x55c')]['input']['getField']()||(_0x4d5208[_0x22a8fd('0x10e6')][_0x22a8fd('0x74b')]=_0x3d661d(),_0x108070(_0x4d5208,_0x4f777f)))){_0x5d31d6&&_0x5275d9<0xb&&0x1b==_0x4f777f[_0x22a8fd('0xc7c')]&&(_0x4f777f['returnValue']=!0x1);var _0x113ace=_0x4f777f['keyCode'];_0x4d5208['display'][_0x22a8fd('0x8be')]=0x10==_0x113ace||_0x4f777f[_0x22a8fd('0xdab')];var _0x4e4ef7=_0x5e8fa2(_0x4d5208,_0x4f777f);_0x58a491&&(_0x8cc480=_0x4e4ef7?_0x113ace:null,_0x4e4ef7||0x58!=_0x113ace||_0x2e21ea||!(_0x2841f0?_0x4f777f[_0x22a8fd('0xe3')]:_0x4f777f[_0x22a8fd('0x1005')])||_0x4d5208[_0x22a8fd('0xd78')]('',null,_0x22a8fd('0x655'))),_0x3505d1&&!_0x2841f0&&!_0x4e4ef7&&0x2e==_0x113ace&&_0x4f777f[_0x22a8fd('0xdab')]&&!_0x4f777f[_0x22a8fd('0x1005')]&&document[_0x22a8fd('0x69f')]&&document[_0x22a8fd('0x69f')](_0x22a8fd('0x655')),0x12!=_0x113ace||/\bCodeMirror-crosshair\b/['test'](_0x4d5208[_0x22a8fd('0x55c')][_0x22a8fd('0x1147')][_0x22a8fd('0x1bd')])||function(_0x5645bb){var _0xf2d7fb=_0x22a8fd,_0x73c79=_0x5645bb[_0xf2d7fb('0x55c')]['lineDiv'];function _0x2c0632(_0x5b2f5d){var _0x1824ef=_0xf2d7fb;0x12!=_0x5b2f5d['keyCode']&&_0x5b2f5d[_0x1824ef('0x476')]||(_0x1a7f4e(_0x73c79,'CodeMirror-crosshair'),_0x4496a7(document,_0x1824ef('0xd8e'),_0x2c0632),_0x4496a7(document,_0x1824ef('0x1f8'),_0x2c0632));}_0x33fcac(_0x73c79,_0xf2d7fb('0xb6e')),_0x407bf3(document,'keyup',_0x2c0632),_0x407bf3(document,'mouseover',_0x2c0632);}(_0x4d5208);}}function _0x5dc966(_0x48a34f){var _0x1abf90=_0x255d35;0x10==_0x48a34f[_0x1abf90('0xc7c')]&&(this[_0x1abf90('0xf37')][_0x1abf90('0x10f6')][_0x1abf90('0x8be')]=!0x1),_0x108070(this,_0x48a34f);}function _0x21d431(_0xbfe56b){var _0x351081=_0x255d35,_0x47554d=this;if(!(_0xbfe56b[_0x351081('0x616')]&&_0xbfe56b[_0x351081('0x616')]!=_0x47554d['display']['input'][_0x351081('0xab6')]()||_0x10b106(_0x47554d['display'],_0xbfe56b)||_0x108070(_0x47554d,_0xbfe56b)||_0xbfe56b[_0x351081('0x1005')]&&!_0xbfe56b[_0x351081('0x476')]||_0x2841f0&&_0xbfe56b[_0x351081('0xe3')])){var _0x129a01=_0xbfe56b[_0x351081('0xc7c')],_0xeb4ab7=_0xbfe56b[_0x351081('0x1b5')];if(_0x58a491&&_0x129a01==_0x8cc480)return _0x8cc480=null,void _0x12a3b5(_0xbfe56b);if(!_0x58a491||_0xbfe56b['which']&&!(_0xbfe56b[_0x351081('0x789')]<0xa)||!_0x5e8fa2(_0x47554d,_0xbfe56b)){var _0x2d71c3=String[_0x351081('0x251')](null==_0xeb4ab7?_0x129a01:_0xeb4ab7);'\x08'!=_0x2d71c3&&(function(_0x2ab2ef,_0x5e3f93,_0x4dc11f){return _0x30eaf7(_0x2ab2ef,'\x27'+_0x4dc11f+'\x27',_0x5e3f93,function(_0x4f1cc3){return _0x546151(_0x2ab2ef,_0x4f1cc3,!0x0);});}(_0x47554d,_0xbfe56b,_0x2d71c3)||_0x47554d[_0x351081('0x55c')][_0x351081('0x20c')][_0x351081('0x27b')](_0xbfe56b));}}}var _0x3e8285,_0x34e28d,_0x45912b=function(_0x4b57ba,_0x4d319f,_0x3708ea){var _0x10cf55=_0x255d35;this[_0x10cf55('0x918')]=_0x4b57ba,this[_0x10cf55('0x1121')]=_0x4d319f,this['button']=_0x3708ea;};function _0xdefaa0(_0x4b36d0){var _0x44c381=_0x255d35,_0x1c0c16=this,_0x3a26a0=_0x1c0c16[_0x44c381('0x55c')];if(!(_0x108070(_0x1c0c16,_0x4b36d0)||_0x3a26a0[_0x44c381('0xbff')]&&_0x3a26a0[_0x44c381('0x20c')][_0x44c381('0xdb4')]())){if(_0x3a26a0[_0x44c381('0x20c')][_0x44c381('0x10e')](),_0x3a26a0[_0x44c381('0x8be')]=_0x4b36d0[_0x44c381('0xdab')],_0x10b106(_0x3a26a0,_0x4b36d0))_0x153ccc||(_0x3a26a0[_0x44c381('0x819')][_0x44c381('0x4d2')]=!0x1,setTimeout(function(){var _0x12899f=_0x44c381;return _0x3a26a0[_0x12899f('0x819')][_0x12899f('0x4d2')]=!0x0;},0x64));else{if(!_0x2b805e(_0x1c0c16,_0x4b36d0)){var _0x18459a=_0x123e5c(_0x1c0c16,_0x4b36d0),_0x3788f2=_0x44f403(_0x4b36d0),_0x275ced=_0x18459a?function(_0x46b161,_0x2b81b1){var _0x5833f5=_0x44c381,_0x3f484e=+new Date();return _0x34e28d&&_0x34e28d[_0x5833f5('0xa11')](_0x3f484e,_0x46b161,_0x2b81b1)?(_0x3e8285=_0x34e28d=null,_0x5833f5('0xe82')):_0x3e8285&&_0x3e8285[_0x5833f5('0xa11')](_0x3f484e,_0x46b161,_0x2b81b1)?(_0x34e28d=new _0x45912b(_0x3f484e,_0x46b161,_0x2b81b1),_0x3e8285=null,_0x5833f5('0x672')):(_0x3e8285=new _0x45912b(_0x3f484e,_0x46b161,_0x2b81b1),_0x34e28d=null,_0x5833f5('0x2bc'));}(_0x18459a,_0x3788f2):'single';window[_0x44c381('0x74b')](),0x1==_0x3788f2&&_0x1c0c16[_0x44c381('0xfff')][_0x44c381('0xc66')]&&_0x1c0c16[_0x44c381('0xfff')][_0x44c381('0xc66')](_0x4b36d0),_0x18459a&&function(_0x3a5849,_0x3d7a4d,_0x683d03,_0x2e8708,_0x1f94ba){var _0x3a0984=_0x44c381,_0x199841=_0x3a0984('0x427');return _0x3a0984('0x672')==_0x2e8708?_0x199841=_0x3a0984('0x4ec')+_0x199841:_0x3a0984('0xe82')==_0x2e8708&&(_0x199841=_0x3a0984('0x481')+_0x199841),_0x30eaf7(_0x3a5849,_0x516528(_0x199841=(0x1==_0x3d7a4d?_0x3a0984('0xffe'):0x2==_0x3d7a4d?_0x3a0984('0x11d5'):'Right')+_0x199841,_0x1f94ba),_0x1f94ba,function(_0x1d079a){var _0x3effa5=_0x3a0984;if(_0x3effa5('0x7c7')==typeof _0x1d079a&&(_0x1d079a=_0x25a9e6[_0x1d079a]),!_0x1d079a)return!0x1;var _0xfff3be=!0x1;try{_0x3a5849[_0x3effa5('0xed4')]()&&(_0x3a5849['state'][_0x3effa5('0x583')]=!0x0),_0xfff3be=_0x1d079a(_0x3a5849,_0x683d03)!=_0x457770;}finally{_0x3a5849[_0x3effa5('0xfff')][_0x3effa5('0x583')]=!0x1;}return _0xfff3be;});}(_0x1c0c16,_0x3788f2,_0x18459a,_0x275ced,_0x4b36d0)||(0x1==_0x3788f2?_0x18459a?function(_0x59c079,_0x511f1e,_0x428ee9,_0x5d6a55){var _0x1362de=_0x44c381;_0x5d31d6?setTimeout(_0x283b11(_0xf3a8f1,_0x59c079),0x0):_0x59c079['curOp'][_0x1362de('0x74b')]=_0x3d661d();var _0x3134a9,_0x10d801=function(_0x1ae1d0,_0x4e0eb5,_0x53d811){var _0x39fef9=_0x1362de,_0x17e463=_0x1ae1d0['getOption'](_0x39fef9('0x6bb')),_0x5c19e5=_0x17e463?_0x17e463(_0x1ae1d0,_0x4e0eb5,_0x53d811):{};if(null==_0x5c19e5[_0x39fef9('0xd46')]){var _0x48f518=_0x3f7dc4?_0x53d811[_0x39fef9('0xdab')]&&_0x53d811[_0x39fef9('0xe3')]:_0x53d811[_0x39fef9('0x476')];_0x5c19e5['unit']=_0x48f518?_0x39fef9('0x3a4'):_0x39fef9('0x2bc')==_0x4e0eb5?'char':'double'==_0x4e0eb5?'word':_0x39fef9('0xde2');}return(null==_0x5c19e5[_0x39fef9('0x1158')]||_0x1ae1d0[_0x39fef9('0xf37')]['extend'])&&(_0x5c19e5[_0x39fef9('0x1158')]=_0x1ae1d0[_0x39fef9('0xf37')][_0x39fef9('0x1158')]||_0x53d811[_0x39fef9('0xdab')]),null==_0x5c19e5[_0x39fef9('0xeed')]&&(_0x5c19e5[_0x39fef9('0xeed')]=_0x2841f0?_0x53d811[_0x39fef9('0xe3')]:_0x53d811[_0x39fef9('0x1005')]),null==_0x5c19e5['moveOnDrag']&&(_0x5c19e5['moveOnDrag']=!(_0x2841f0?_0x53d811[_0x39fef9('0x476')]:_0x53d811['ctrlKey'])),_0x5c19e5;}(_0x59c079,_0x428ee9,_0x5d6a55),_0x28a747=_0x59c079[_0x1362de('0xf37')][_0x1362de('0x10f6')];_0x59c079[_0x1362de('0x631')][_0x1362de('0x7ab')]&&_0x557070&&!_0x59c079['isReadOnly']()&&_0x1362de('0x2bc')==_0x428ee9&&(_0x3134a9=_0x28a747[_0x1362de('0x87d')](_0x511f1e))>-0x1&&(_0x42d525((_0x3134a9=_0x28a747[_0x1362de('0x32')][_0x3134a9])[_0x1362de('0x9d7')](),_0x511f1e)<0x0||_0x511f1e[_0x1362de('0x15b')]>0x0)&&(_0x42d525(_0x3134a9['to'](),_0x511f1e)>0x0||_0x511f1e[_0x1362de('0x15b')]<0x0)?function(_0x484e20,_0x2a0038,_0x350e45,_0x543f38){var _0x41b835=_0x1362de,_0x3cd6f6=_0x484e20[_0x41b835('0x55c')],_0xf69403=!0x1,_0x5d7992=_0x2dfb55(_0x484e20,function(_0x523137){var _0x18d8d3=_0x41b835;_0x153ccc&&(_0x3cd6f6['scroller'][_0x18d8d3('0x4d2')]=!0x1),_0x484e20[_0x18d8d3('0xfff')][_0x18d8d3('0xa94')]=!0x1,_0x4496a7(_0x3cd6f6['wrapper']['ownerDocument'],'mouseup',_0x5d7992),_0x4496a7(_0x3cd6f6['wrapper'][_0x18d8d3('0x8d0')],_0x18d8d3('0x4ad'),_0x158747),_0x4496a7(_0x3cd6f6[_0x18d8d3('0x819')],_0x18d8d3('0xc48'),_0x3e14c5),_0x4496a7(_0x3cd6f6['scroller'],_0x18d8d3('0x684'),_0x5d7992),_0xf69403||(_0x12a3b5(_0x523137),_0x543f38[_0x18d8d3('0xeed')]||_0x5b3fb4(_0x484e20[_0x18d8d3('0xf37')],_0x350e45,null,null,_0x543f38[_0x18d8d3('0x1158')]),_0x153ccc&&!_0x30b785||_0x5d31d6&&0x9==_0x5275d9?setTimeout(function(){var _0x2a0b2b=_0x18d8d3;_0x3cd6f6[_0x2a0b2b('0x701')]['ownerDocument']['body'][_0x2a0b2b('0x74b')]({'preventScroll':!0x0}),_0x3cd6f6[_0x2a0b2b('0x20c')]['focus']();},0x14):_0x3cd6f6['input'][_0x18d8d3('0x74b')]());}),_0x158747=function(_0x4f1878){var _0x453161=_0x41b835;_0xf69403=_0xf69403||Math[_0x453161('0x74f')](_0x2a0038[_0x453161('0x7ef')]-_0x4f1878[_0x453161('0x7ef')])+Math['abs'](_0x2a0038[_0x453161('0xd50')]-_0x4f1878[_0x453161('0xd50')])>=0xa;},_0x3e14c5=function(){return _0xf69403=!0x0;};_0x153ccc&&(_0x3cd6f6[_0x41b835('0x819')][_0x41b835('0x4d2')]=!0x0),(_0x484e20[_0x41b835('0xfff')]['draggingText']=_0x5d7992,_0x5d7992['copy']=!_0x543f38[_0x41b835('0x42d')],_0x3cd6f6['scroller'][_0x41b835('0x7ab')]&&_0x3cd6f6[_0x41b835('0x819')][_0x41b835('0x7ab')]()),(_0x407bf3(_0x3cd6f6['wrapper'][_0x41b835('0x8d0')],_0x41b835('0xd66'),_0x5d7992),_0x407bf3(_0x3cd6f6[_0x41b835('0x701')][_0x41b835('0x8d0')],'mousemove',_0x158747),_0x407bf3(_0x3cd6f6[_0x41b835('0x819')],_0x41b835('0xc48'),_0x3e14c5),_0x407bf3(_0x3cd6f6[_0x41b835('0x819')],_0x41b835('0x684'),_0x5d7992),_0xac3972(_0x484e20),setTimeout(function(){var _0xde7808=_0x41b835;return _0x3cd6f6[_0xde7808('0x20c')]['focus']();},0x14));}(_0x59c079,_0x5d6a55,_0x511f1e,_0x10d801):function(_0x25f96a,_0x13e166,_0x3a142f,_0x5c8fc7){var _0x37f9c7=_0x1362de,_0x59b6ac=_0x25f96a[_0x37f9c7('0x55c')],_0x411882=_0x25f96a['doc'];_0x12a3b5(_0x13e166);var _0x25e5ab,_0xc5a85c,_0x189a2d=_0x411882[_0x37f9c7('0x10f6')],_0x4d1980=_0x189a2d[_0x37f9c7('0x32')];_0x5c8fc7['addNew']&&!_0x5c8fc7[_0x37f9c7('0x1158')]?(_0xc5a85c=_0x411882[_0x37f9c7('0x10f6')][_0x37f9c7('0x87d')](_0x3a142f),_0x25e5ab=_0xc5a85c>-0x1?_0x4d1980[_0xc5a85c]:new _0x47634a(_0x3a142f,_0x3a142f)):(_0x25e5ab=_0x411882[_0x37f9c7('0x10f6')][_0x37f9c7('0x712')](),_0xc5a85c=_0x411882[_0x37f9c7('0x10f6')]['primIndex']);if(_0x37f9c7('0x3a4')==_0x5c8fc7[_0x37f9c7('0xd46')])_0x5c8fc7[_0x37f9c7('0xeed')]||(_0x25e5ab=new _0x47634a(_0x3a142f,_0x3a142f)),_0x3a142f=_0x123e5c(_0x25f96a,_0x13e166,!0x0,!0x0),_0xc5a85c=-0x1;else{var _0x1ebf8d=_0x2f0246(_0x25f96a,_0x3a142f,_0x5c8fc7['unit']);_0x25e5ab=_0x5c8fc7['extend']?_0x542338(_0x25e5ab,_0x1ebf8d[_0x37f9c7('0x66d')],_0x1ebf8d[_0x37f9c7('0x5d4')],_0x5c8fc7['extend']):_0x1ebf8d;}_0x5c8fc7[_0x37f9c7('0xeed')]?-0x1==_0xc5a85c?(_0xc5a85c=_0x4d1980['length'],_0x1fb018(_0x411882,_0x43bb47(_0x25f96a,_0x4d1980['concat']([_0x25e5ab]),_0xc5a85c),{'scroll':!0x1,'origin':_0x37f9c7('0x10b8')})):_0x4d1980['length']>0x1&&_0x4d1980[_0xc5a85c][_0x37f9c7('0x1078')]()&&'char'==_0x5c8fc7['unit']&&!_0x5c8fc7[_0x37f9c7('0x1158')]?(_0x1fb018(_0x411882,_0x43bb47(_0x25f96a,_0x4d1980[_0x37f9c7('0xbc0')](0x0,_0xc5a85c)[_0x37f9c7('0x3cc')](_0x4d1980[_0x37f9c7('0xbc0')](_0xc5a85c+0x1)),0x0),{'scroll':!0x1,'origin':'*mouse'}),_0x189a2d=_0x411882['sel']):_0x454670(_0x411882,_0xc5a85c,_0x25e5ab,_0x54e06b):(_0xc5a85c=0x0,_0x1fb018(_0x411882,new _0x1875a3([_0x25e5ab],0x0),_0x54e06b),_0x189a2d=_0x411882[_0x37f9c7('0x10f6')]);var _0x2dfc6e=_0x3a142f;function _0x302b90(_0x3dcfcd){var _0x1ac5b8=_0x37f9c7;if(0x0!=_0x42d525(_0x2dfc6e,_0x3dcfcd)){if(_0x2dfc6e=_0x3dcfcd,_0x1ac5b8('0x3a4')==_0x5c8fc7[_0x1ac5b8('0xd46')]){for(var _0x15be45=[],_0x4b1791=_0x25f96a['options'][_0x1ac5b8('0x772')],_0x59e5b2=_0x40e2a1(_0x1b58dd(_0x411882,_0x3a142f['line'])['text'],_0x3a142f['ch'],_0x4b1791),_0x1a8742=_0x40e2a1(_0x1b58dd(_0x411882,_0x3dcfcd['line'])[_0x1ac5b8('0x768')],_0x3dcfcd['ch'],_0x4b1791),_0x294894=Math[_0x1ac5b8('0xc0d')](_0x59e5b2,_0x1a8742),_0x422c86=Math[_0x1ac5b8('0xf65')](_0x59e5b2,_0x1a8742),_0x14c136=Math[_0x1ac5b8('0xc0d')](_0x3a142f[_0x1ac5b8('0xde2')],_0x3dcfcd[_0x1ac5b8('0xde2')]),_0x241aa7=Math[_0x1ac5b8('0xc0d')](_0x25f96a[_0x1ac5b8('0xbdf')](),Math[_0x1ac5b8('0xf65')](_0x3a142f[_0x1ac5b8('0xde2')],_0x3dcfcd[_0x1ac5b8('0xde2')]));_0x14c136<=_0x241aa7;_0x14c136++){var _0x57b781=_0x1b58dd(_0x411882,_0x14c136)[_0x1ac5b8('0x768')],_0xe6b8e9=_0x110476(_0x57b781,_0x294894,_0x4b1791);_0x294894==_0x422c86?_0x15be45[_0x1ac5b8('0x8f8')](new _0x47634a(_0xf7c6fb(_0x14c136,_0xe6b8e9),_0xf7c6fb(_0x14c136,_0xe6b8e9))):_0x57b781[_0x1ac5b8('0x525')]>_0xe6b8e9&&_0x15be45[_0x1ac5b8('0x8f8')](new _0x47634a(_0xf7c6fb(_0x14c136,_0xe6b8e9),_0xf7c6fb(_0x14c136,_0x110476(_0x57b781,_0x422c86,_0x4b1791))));}_0x15be45[_0x1ac5b8('0x525')]||_0x15be45[_0x1ac5b8('0x8f8')](new _0x47634a(_0x3a142f,_0x3a142f)),_0x1fb018(_0x411882,_0x43bb47(_0x25f96a,_0x189a2d[_0x1ac5b8('0x32')][_0x1ac5b8('0xbc0')](0x0,_0xc5a85c)[_0x1ac5b8('0x3cc')](_0x15be45),_0xc5a85c),{'origin':'*mouse','scroll':!0x1}),_0x25f96a[_0x1ac5b8('0x1075')](_0x3dcfcd);}else{var _0xb35a68,_0x18d9bf=_0x25e5ab,_0x20c8a4=_0x2f0246(_0x25f96a,_0x3dcfcd,_0x5c8fc7[_0x1ac5b8('0xd46')]),_0x491c7f=_0x18d9bf[_0x1ac5b8('0x66d')];_0x42d525(_0x20c8a4['anchor'],_0x491c7f)>0x0?(_0xb35a68=_0x20c8a4[_0x1ac5b8('0x5d4')],_0x491c7f=_0x31d615(_0x18d9bf[_0x1ac5b8('0x9d7')](),_0x20c8a4[_0x1ac5b8('0x66d')])):(_0xb35a68=_0x20c8a4[_0x1ac5b8('0x66d')],_0x491c7f=_0x36db9e(_0x18d9bf['to'](),_0x20c8a4['head']));var _0x890457=_0x189a2d[_0x1ac5b8('0x32')][_0x1ac5b8('0xbc0')](0x0);_0x890457[_0xc5a85c]=function(_0x11e974,_0x2aeabb){var _0x24fb90=_0x1ac5b8,_0x21494b=_0x2aeabb[_0x24fb90('0x66d')],_0x2eea94=_0x2aeabb['head'],_0x19b77e=_0x1b58dd(_0x11e974[_0x24fb90('0xf37')],_0x21494b[_0x24fb90('0xde2')]);if(0x0==_0x42d525(_0x21494b,_0x2eea94)&&_0x21494b['sticky']==_0x2eea94[_0x24fb90('0x84e')])return _0x2aeabb;var _0x1812f8=_0x3982e5(_0x19b77e);if(!_0x1812f8)return _0x2aeabb;var _0x53c568=_0xb372fd(_0x1812f8,_0x21494b['ch'],_0x21494b['sticky']),_0x28f3e6=_0x1812f8[_0x53c568];if(_0x28f3e6[_0x24fb90('0x9d7')]!=_0x21494b['ch']&&_0x28f3e6['to']!=_0x21494b['ch'])return _0x2aeabb;var _0x20c62c,_0x2dd882=_0x53c568+(_0x28f3e6[_0x24fb90('0x9d7')]==_0x21494b['ch']==(0x1!=_0x28f3e6[_0x24fb90('0x1fe')])?0x0:0x1);if(0x0==_0x2dd882||_0x2dd882==_0x1812f8[_0x24fb90('0x525')])return _0x2aeabb;if(_0x2eea94[_0x24fb90('0xde2')]!=_0x21494b[_0x24fb90('0xde2')])_0x20c62c=(_0x2eea94[_0x24fb90('0xde2')]-_0x21494b[_0x24fb90('0xde2')])*(_0x24fb90('0xefe')==_0x11e974['doc'][_0x24fb90('0xd96')]?0x1:-0x1)>0x0;else{var _0x1687a5=_0xb372fd(_0x1812f8,_0x2eea94['ch'],_0x2eea94[_0x24fb90('0x84e')]),_0x37aafb=_0x1687a5-_0x53c568||(_0x2eea94['ch']-_0x21494b['ch'])*(0x1==_0x28f3e6[_0x24fb90('0x1fe')]?-0x1:0x1);_0x20c62c=_0x1687a5==_0x2dd882-0x1||_0x1687a5==_0x2dd882?_0x37aafb<0x0:_0x37aafb>0x0;}var _0x3f5974=_0x1812f8[_0x2dd882+(_0x20c62c?-0x1:0x0)],_0x496285=_0x20c62c==(0x1==_0x3f5974['level']),_0x21ab35=_0x496285?_0x3f5974[_0x24fb90('0x9d7')]:_0x3f5974['to'],_0x4357e3=_0x496285?'after':_0x24fb90('0xa69');return _0x21494b['ch']==_0x21ab35&&_0x21494b[_0x24fb90('0x84e')]==_0x4357e3?_0x2aeabb:new _0x47634a(new _0xf7c6fb(_0x21494b[_0x24fb90('0xde2')],_0x21ab35,_0x4357e3),_0x2eea94);}(_0x25f96a,new _0x47634a(_0x364c36(_0x411882,_0x491c7f),_0xb35a68)),_0x1fb018(_0x411882,_0x43bb47(_0x25f96a,_0x890457,_0xc5a85c),_0x54e06b);}}}var _0x6062=_0x59b6ac[_0x37f9c7('0x701')]['getBoundingClientRect'](),_0x5c5292=0x0;function _0x347b34(_0x43bf80){var _0x350761=_0x37f9c7;_0x25f96a[_0x350761('0xfff')][_0x350761('0xc66')]=!0x1,_0x5c5292=0x1/0x0,_0x43bf80&&(_0x12a3b5(_0x43bf80),_0x59b6ac[_0x350761('0x20c')][_0x350761('0x74b')]()),_0x4496a7(_0x59b6ac[_0x350761('0x701')][_0x350761('0x8d0')],_0x350761('0x4ad'),_0x43a77e),_0x4496a7(_0x59b6ac['wrapper']['ownerDocument'],_0x350761('0xd66'),_0x18f3f8),_0x411882[_0x350761('0xb43')][_0x350761('0xacf')]=null;}var _0x43a77e=_0x2dfb55(_0x25f96a,function(_0x17c210){0x0!==_0x17c210['buttons']&&_0x44f403(_0x17c210)?function _0x18a7b9(_0x5dbe57){var _0x258f6a=_0x3ab6,_0x413556=++_0x5c5292,_0x1d67f9=_0x123e5c(_0x25f96a,_0x5dbe57,!0x0,_0x258f6a('0x3a4')==_0x5c8fc7[_0x258f6a('0xd46')]);if(_0x1d67f9){if(0x0!=_0x42d525(_0x1d67f9,_0x2dfc6e)){_0x25f96a[_0x258f6a('0x10e6')]['focus']=_0x3d661d(),_0x302b90(_0x1d67f9);var _0x2acde3=_0xf0195a(_0x59b6ac,_0x411882);(_0x1d67f9['line']>=_0x2acde3['to']||_0x1d67f9['line']<_0x2acde3[_0x258f6a('0x9d7')])&&setTimeout(_0x2dfb55(_0x25f96a,function(){_0x5c5292==_0x413556&&_0x18a7b9(_0x5dbe57);}),0x96);}else{var _0x1acaf0=_0x5dbe57[_0x258f6a('0xd50')]<_0x6062[_0x258f6a('0x62d')]?-0x14:_0x5dbe57['clientY']>_0x6062[_0x258f6a('0x3a6')]?0x14:0x0;_0x1acaf0&&setTimeout(_0x2dfb55(_0x25f96a,function(){var _0x143c03=_0x258f6a;_0x5c5292==_0x413556&&(_0x59b6ac[_0x143c03('0x819')][_0x143c03('0xfa1')]+=_0x1acaf0,_0x18a7b9(_0x5dbe57));}),0x32);}}}(_0x17c210):_0x347b34(_0x17c210);}),_0x18f3f8=_0x2dfb55(_0x25f96a,_0x347b34);_0x25f96a[_0x37f9c7('0xfff')]['selectingText']=_0x18f3f8,_0x407bf3(_0x59b6ac['wrapper'][_0x37f9c7('0x8d0')],_0x37f9c7('0x4ad'),_0x43a77e),_0x407bf3(_0x59b6ac['wrapper'][_0x37f9c7('0x8d0')],_0x37f9c7('0xd66'),_0x18f3f8);}(_0x59c079,_0x5d6a55,_0x511f1e,_0x10d801);}(_0x1c0c16,_0x18459a,_0x275ced,_0x4b36d0):_0x52f8eb(_0x4b36d0)==_0x3a26a0['scroller']&&_0x12a3b5(_0x4b36d0):0x2==_0x3788f2?(_0x18459a&&_0x5b3fb4(_0x1c0c16['doc'],_0x18459a),setTimeout(function(){var _0x41cb5d=_0x44c381;return _0x3a26a0[_0x41cb5d('0x20c')][_0x41cb5d('0x74b')]();},0x14)):0x3==_0x3788f2&&(_0x5028e8?_0x1c0c16[_0x44c381('0x55c')]['input'][_0x44c381('0x1fd')](_0x4b36d0):_0xac3972(_0x1c0c16)));}}}}function _0x2f0246(_0x4b4d28,_0x1cb9d9,_0xb89915){var _0x439e88=_0x255d35;if(_0x439e88('0xf66')==_0xb89915)return new _0x47634a(_0x1cb9d9,_0x1cb9d9);if(_0x439e88('0x7c6')==_0xb89915)return _0x4b4d28[_0x439e88('0x377')](_0x1cb9d9);if(_0x439e88('0xde2')==_0xb89915)return new _0x47634a(_0xf7c6fb(_0x1cb9d9['line'],0x0),_0x364c36(_0x4b4d28[_0x439e88('0xf37')],_0xf7c6fb(_0x1cb9d9[_0x439e88('0xde2')]+0x1,0x0)));var _0x1c2e77=_0xb89915(_0x4b4d28,_0x1cb9d9);return new _0x47634a(_0x1c2e77[_0x439e88('0x9d7')],_0x1c2e77['to']);}function _0xacfa64(_0x155b11,_0x4217ed,_0x3f8cac,_0x2ab141){var _0x4254ad=_0x255d35,_0x50e217,_0x58807f;if(_0x4217ed[_0x4254ad('0xb19')])_0x50e217=_0x4217ed[_0x4254ad('0xb19')][0x0]['clientX'],_0x58807f=_0x4217ed[_0x4254ad('0xb19')][0x0][_0x4254ad('0xd50')];else try{_0x50e217=_0x4217ed['clientX'],_0x58807f=_0x4217ed['clientY'];}catch(_0x17a87c){return!0x1;}if(_0x50e217>=Math[_0x4254ad('0x536')](_0x155b11[_0x4254ad('0x55c')]['gutters']['getBoundingClientRect']()['right']))return!0x1;_0x2ab141&&_0x12a3b5(_0x4217ed);var _0x75ab04=_0x155b11[_0x4254ad('0x55c')],_0x2917f3=_0x75ab04[_0x4254ad('0x1147')][_0x4254ad('0xe75')]();if(_0x58807f>_0x2917f3[_0x4254ad('0x3a6')]||!_0x3f430b(_0x155b11,_0x3f8cac))return _0x1cdf40(_0x4217ed);_0x58807f-=_0x2917f3['top']-_0x75ab04[_0x4254ad('0x753')];for(var _0x45f69e=0x0;_0x45f69e<_0x155b11[_0x4254ad('0x55c')]['gutterSpecs'][_0x4254ad('0x525')];++_0x45f69e){var _0x52e850=_0x75ab04[_0x4254ad('0x3f')][_0x4254ad('0x4e6')][_0x45f69e];if(_0x52e850&&_0x52e850[_0x4254ad('0xe75')]()[_0x4254ad('0x732')]>=_0x50e217)return _0x508e40(_0x155b11,_0x3f8cac,_0x155b11,_0x6a7589(_0x155b11[_0x4254ad('0xf37')],_0x58807f),_0x155b11['display']['gutterSpecs'][_0x45f69e][_0x4254ad('0x1bd')],_0x4217ed),_0x1cdf40(_0x4217ed);}}function _0x2b805e(_0xf72360,_0x3c5bba){var _0x24a79a=_0x255d35;return _0xacfa64(_0xf72360,_0x3c5bba,_0x24a79a('0x152'),!0x0);}function _0x4805cf(_0x1a465c,_0x2ce976){var _0x3568e0=_0x255d35;_0x10b106(_0x1a465c[_0x3568e0('0x55c')],_0x2ce976)||function(_0x2e0149,_0xae26d0){var _0x84eba1=_0x3568e0;if(!_0x3f430b(_0x2e0149,'gutterContextMenu'))return!0x1;return _0xacfa64(_0x2e0149,_0xae26d0,_0x84eba1('0x507'),!0x1);}(_0x1a465c,_0x2ce976)||_0x108070(_0x1a465c,_0x2ce976,_0x3568e0('0x74e'))||_0x5028e8||_0x1a465c['display'][_0x3568e0('0x20c')][_0x3568e0('0x1fd')](_0x2ce976);}function _0x21dcec(_0x3e5cc9){var _0x2f1386=_0x255d35;_0x3e5cc9[_0x2f1386('0x55c')][_0x2f1386('0x701')][_0x2f1386('0x1bd')]=_0x3e5cc9[_0x2f1386('0x55c')][_0x2f1386('0x701')]['className'][_0x2f1386('0x166')](/\s*cm-s-\S+/g,'')+_0x3e5cc9[_0x2f1386('0x631')]['theme'][_0x2f1386('0x166')](/(^|\s)\s*/g,'\x20cm-s-'),_0xe4e52d(_0x3e5cc9);}_0x45912b['prototype'][_0x255d35('0xa11')]=function(_0x33831e,_0x3186c5,_0x5a62cf){var _0x5c2e09=_0x255d35;return this[_0x5c2e09('0x918')]+0x190>_0x33831e&&0x0==_0x42d525(_0x3186c5,this['pos'])&&_0x5a62cf==this[_0x5c2e09('0x40d')];};var _0x3b32d5={'toString':function(){var _0x2a2902=_0x255d35;return _0x2a2902('0x331');}},_0x460b2a={},_0x43b0df={};function _0x8e0c64(_0xf8e601,_0x4b721d,_0x111759){var _0xc8a301=_0x255d35;if(!_0x4b721d!=!(_0x111759&&_0x111759!=_0x3b32d5)){var _0x1cc74d=_0xf8e601[_0xc8a301('0x55c')][_0xc8a301('0xa65')],_0x2b6710=_0x4b721d?_0x407bf3:_0x4496a7;_0x2b6710(_0xf8e601['display'][_0xc8a301('0x819')],_0xc8a301('0xc48'),_0x1cc74d['start']),_0x2b6710(_0xf8e601[_0xc8a301('0x55c')][_0xc8a301('0x819')],_0xc8a301('0x490'),_0x1cc74d['enter']),_0x2b6710(_0xf8e601[_0xc8a301('0x55c')][_0xc8a301('0x819')],'dragover',_0x1cc74d['over']),_0x2b6710(_0xf8e601[_0xc8a301('0x55c')]['scroller'],_0xc8a301('0x699'),_0x1cc74d['leave']),_0x2b6710(_0xf8e601['display'][_0xc8a301('0x819')],_0xc8a301('0x684'),_0x1cc74d['drop']);}}function _0x1d5496(_0x1adc03){var _0xbe18ba=_0x255d35;_0x1adc03[_0xbe18ba('0x631')][_0xbe18ba('0x5a9')]?(_0x33fcac(_0x1adc03[_0xbe18ba('0x55c')]['wrapper'],_0xbe18ba('0xa54')),_0x1adc03[_0xbe18ba('0x55c')]['sizer'][_0xbe18ba('0x1cd')][_0xbe18ba('0xc6')]='',_0x1adc03[_0xbe18ba('0x55c')]['sizerWidth']=null):(_0x1a7f4e(_0x1adc03[_0xbe18ba('0x55c')][_0xbe18ba('0x701')],_0xbe18ba('0xa54')),_0x123b91(_0x1adc03)),_0x4df661(_0x1adc03),_0x18ce28(_0x1adc03),_0xe4e52d(_0x1adc03),setTimeout(function(){return _0x41bd9e(_0x1adc03);},0x64);}function _0x401c96(_0xc9a966,_0x530ec7){var _0xb057ee=_0x255d35,_0x8b485c=this;if(!(this instanceof _0x401c96))return new _0x401c96(_0xc9a966,_0x530ec7);this[_0xb057ee('0x631')]=_0x530ec7=_0x530ec7?_0x44b57b(_0x530ec7):{},_0x44b57b(_0x460b2a,_0x530ec7,!0x1);var _0x5a4f00=_0x530ec7[_0xb057ee('0x832')];_0xb057ee('0x7c7')==typeof _0x5a4f00?_0x5a4f00=new _0x1035cd(_0x5a4f00,_0x530ec7['mode'],null,_0x530ec7[_0xb057ee('0x7d7')],_0x530ec7['direction']):_0x530ec7[_0xb057ee('0x575')]&&(_0x5a4f00['modeOption']=_0x530ec7[_0xb057ee('0x575')]),this[_0xb057ee('0xf37')]=_0x5a4f00;var _0x581acc=new _0x401c96[(_0xb057ee('0xb0d'))][_0x530ec7['inputStyle']](this),_0xff4ada=this[_0xb057ee('0x55c')]=new _0x212409(_0xc9a966,_0x5a4f00,_0x581acc,_0x530ec7);for(var _0x2d5e1f in(_0xff4ada[_0xb057ee('0x701')][_0xb057ee('0xb28')]=this,_0x21dcec(this),_0x530ec7[_0xb057ee('0x5a9')]&&(this[_0xb057ee('0x55c')]['wrapper'][_0xb057ee('0x1bd')]+=_0xb057ee('0xeff')),_0x281d6b(this),this['state']={'keyMaps':[],'overlays':[],'modeGen':0x0,'overwrite':!0x1,'delayingBlurEvent':!0x1,'focused':!0x1,'suppressEdits':!0x1,'pasteIncoming':-0x1,'cutIncoming':-0x1,'selectingText':!0x1,'draggingText':!0x1,'highlight':new _0x1d1618(),'keySeq':null,'specialChars':null},_0x530ec7[_0xb057ee('0xe10')]&&!_0x53e5ce&&_0xff4ada[_0xb057ee('0x20c')][_0xb057ee('0x74b')](),_0x5d31d6&&_0x5275d9<0xb&&setTimeout(function(){var _0xa0d452=_0xb057ee;return _0x8b485c[_0xa0d452('0x55c')][_0xa0d452('0x20c')][_0xa0d452('0xff3')](!0x0);},0x14),function(_0x3b8c88){var _0xea4c35=_0xb057ee,_0x1ffd87=_0x3b8c88[_0xea4c35('0x55c')];_0x407bf3(_0x1ffd87[_0xea4c35('0x819')],_0xea4c35('0x9ff'),_0x2dfb55(_0x3b8c88,_0xdefaa0)),_0x407bf3(_0x1ffd87['scroller'],_0xea4c35('0x75f'),_0x5d31d6&&_0x5275d9<0xb?_0x2dfb55(_0x3b8c88,function(_0x40c40f){var _0x4f6170=_0xea4c35;if(!_0x108070(_0x3b8c88,_0x40c40f)){var _0x4adba0=_0x123e5c(_0x3b8c88,_0x40c40f);if(_0x4adba0&&!_0x2b805e(_0x3b8c88,_0x40c40f)&&!_0x10b106(_0x3b8c88[_0x4f6170('0x55c')],_0x40c40f)){_0x12a3b5(_0x40c40f);var _0x5cfb9b=_0x3b8c88['findWordAt'](_0x4adba0);_0x5b3fb4(_0x3b8c88[_0x4f6170('0xf37')],_0x5cfb9b[_0x4f6170('0x66d')],_0x5cfb9b[_0x4f6170('0x5d4')]);}}}):function(_0x4dcaea){return _0x108070(_0x3b8c88,_0x4dcaea)||_0x12a3b5(_0x4dcaea);}),(_0x407bf3(_0x1ffd87[_0xea4c35('0x819')],_0xea4c35('0x74e'),function(_0x21ba5c){return _0x4805cf(_0x3b8c88,_0x21ba5c);}),_0x407bf3(_0x1ffd87['input'][_0xea4c35('0xab6')](),_0xea4c35('0x74e'),function(_0xb516ce){var _0x34f551=_0xea4c35;_0x1ffd87[_0x34f551('0x819')][_0x34f551('0x87d')](_0xb516ce[_0x34f551('0x616')])||_0x4805cf(_0x3b8c88,_0xb516ce);}));var _0x4b7e7b,_0x3eec80={'end':0x0};function _0x581103(){var _0x562ad3=_0xea4c35;_0x1ffd87[_0x562ad3('0xbff')]&&(_0x4b7e7b=setTimeout(function(){var _0x253c48=_0x562ad3;return _0x1ffd87[_0x253c48('0xbff')]=null;},0x3e8),(_0x3eec80=_0x1ffd87[_0x562ad3('0xbff')])['end']=+new Date());}function _0x3d9e71(_0x177184,_0x1567d2){var _0x1334b0=_0xea4c35;if(null==_0x1567d2[_0x1334b0('0xbab')])return!0x0;var _0xdcd051=_0x1567d2[_0x1334b0('0xbab')]-_0x177184[_0x1334b0('0xbab')],_0x4c8eea=_0x1567d2[_0x1334b0('0x62d')]-_0x177184[_0x1334b0('0x62d')];return _0xdcd051*_0xdcd051+_0x4c8eea*_0x4c8eea>0x190;}_0x407bf3(_0x1ffd87[_0xea4c35('0x819')],_0xea4c35('0x897'),function(_0x188d55){var _0xff655e=_0xea4c35;if(!_0x108070(_0x3b8c88,_0x188d55)&&!function(_0x3fcfb9){var _0x2f9fae=_0x3ab6;if(0x1!=_0x3fcfb9['touches'][_0x2f9fae('0x525')])return!0x1;var _0x2ad478=_0x3fcfb9[_0x2f9fae('0xb19')][0x0];return _0x2ad478[_0x2f9fae('0x4c8')]<=0x1&&_0x2ad478[_0x2f9fae('0xabc')]<=0x1;}(_0x188d55)&&!_0x2b805e(_0x3b8c88,_0x188d55)){_0x1ffd87[_0xff655e('0x20c')][_0xff655e('0x10e')](),clearTimeout(_0x4b7e7b);var _0x48eb54=+new Date();_0x1ffd87[_0xff655e('0xbff')]={'start':_0x48eb54,'moved':!0x1,'prev':_0x48eb54-_0x3eec80[_0xff655e('0xbc6')]<=0x12c?_0x3eec80:null},0x1==_0x188d55[_0xff655e('0xb19')][_0xff655e('0x525')]&&(_0x1ffd87[_0xff655e('0xbff')][_0xff655e('0xbab')]=_0x188d55['touches'][0x0]['pageX'],_0x1ffd87[_0xff655e('0xbff')][_0xff655e('0x62d')]=_0x188d55[_0xff655e('0xb19')][0x0]['pageY']);}}),_0x407bf3(_0x1ffd87['scroller'],'touchmove',function(){var _0x5cf6d2=_0xea4c35;_0x1ffd87[_0x5cf6d2('0xbff')]&&(_0x1ffd87[_0x5cf6d2('0xbff')]['moved']=!0x0);}),_0x407bf3(_0x1ffd87[_0xea4c35('0x819')],_0xea4c35('0xc6f'),function(_0x4a75f4){var _0x46bd54=_0xea4c35,_0x2451aa=_0x1ffd87['activeTouch'];if(_0x2451aa&&!_0x10b106(_0x1ffd87,_0x4a75f4)&&null!=_0x2451aa[_0x46bd54('0xbab')]&&!_0x2451aa[_0x46bd54('0xf1d')]&&new Date()-_0x2451aa[_0x46bd54('0x1045')]<0x12c){var _0x2a3995,_0x30f4d8=_0x3b8c88[_0x46bd54('0x76d')](_0x1ffd87[_0x46bd54('0xbff')],_0x46bd54('0x9dc'));_0x2a3995=!_0x2451aa[_0x46bd54('0x46b')]||_0x3d9e71(_0x2451aa,_0x2451aa[_0x46bd54('0x46b')])?new _0x47634a(_0x30f4d8,_0x30f4d8):!_0x2451aa[_0x46bd54('0x46b')][_0x46bd54('0x46b')]||_0x3d9e71(_0x2451aa,_0x2451aa[_0x46bd54('0x46b')]['prev'])?_0x3b8c88[_0x46bd54('0x377')](_0x30f4d8):new _0x47634a(_0xf7c6fb(_0x30f4d8[_0x46bd54('0xde2')],0x0),_0x364c36(_0x3b8c88['doc'],_0xf7c6fb(_0x30f4d8[_0x46bd54('0xde2')]+0x1,0x0))),_0x3b8c88[_0x46bd54('0x53b')](_0x2a3995[_0x46bd54('0x66d')],_0x2a3995['head']),_0x3b8c88[_0x46bd54('0x74b')](),_0x12a3b5(_0x4a75f4);}_0x581103();}),_0x407bf3(_0x1ffd87[_0xea4c35('0x819')],_0xea4c35('0x106b'),_0x581103),_0x407bf3(_0x1ffd87[_0xea4c35('0x819')],_0xea4c35('0x9a'),function(){var _0x5b6864=_0xea4c35;_0x1ffd87[_0x5b6864('0x819')]['clientHeight']&&(_0x2c9df2(_0x3b8c88,_0x1ffd87[_0x5b6864('0x819')][_0x5b6864('0xfa1')]),_0x33a7d6(_0x3b8c88,_0x1ffd87['scroller'][_0x5b6864('0x4ba')],!0x0),_0x508e40(_0x3b8c88,_0x5b6864('0x9a'),_0x3b8c88));}),_0x407bf3(_0x1ffd87[_0xea4c35('0x819')],'mousewheel',function(_0x211185){return _0x2e3e40(_0x3b8c88,_0x211185);}),_0x407bf3(_0x1ffd87[_0xea4c35('0x819')],_0xea4c35('0xc90'),function(_0x5c767a){return _0x2e3e40(_0x3b8c88,_0x5c767a);}),_0x407bf3(_0x1ffd87[_0xea4c35('0x701')],_0xea4c35('0x9a'),function(){var _0x458faf=_0xea4c35;return _0x1ffd87[_0x458faf('0x701')][_0x458faf('0xfa1')]=_0x1ffd87['wrapper'][_0x458faf('0x4ba')]=0x0;}),_0x1ffd87[_0xea4c35('0xa65')]={'enter':function(_0x4dd5ef){_0x108070(_0x3b8c88,_0x4dd5ef)||_0x387a99(_0x4dd5ef);},'over':function(_0x30077b){_0x108070(_0x3b8c88,_0x30077b)||(!function(_0x56f4ef,_0x4111d3){var _0x23999e=_0x3ab6,_0x816d78=_0x123e5c(_0x56f4ef,_0x4111d3);if(_0x816d78){var _0x59cfe4=document[_0x23999e('0x74d')]();_0x3ede5d(_0x56f4ef,_0x816d78,_0x59cfe4),_0x56f4ef[_0x23999e('0x55c')][_0x23999e('0xe66')]||(_0x56f4ef[_0x23999e('0x55c')][_0x23999e('0xe66')]=_0x31f23b(_0x23999e('0x7fc'),null,_0x23999e('0xad8')),_0x56f4ef['display']['lineSpace'][_0x23999e('0x692')](_0x56f4ef[_0x23999e('0x55c')][_0x23999e('0xe66')],_0x56f4ef[_0x23999e('0x55c')][_0x23999e('0xb4f')])),_0x171d74(_0x56f4ef[_0x23999e('0x55c')][_0x23999e('0xe66')],_0x59cfe4);}}(_0x3b8c88,_0x30077b),_0x387a99(_0x30077b));},'start':function(_0xf893a1){return function(_0x3ebf75,_0x580b34){var _0x4d4241=_0x3ab6;if(_0x5d31d6&&(!_0x3ebf75[_0x4d4241('0xfff')]['draggingText']||+new Date()-_0x194586<0x64))_0x387a99(_0x580b34);else{if(!_0x108070(_0x3ebf75,_0x580b34)&&!_0x10b106(_0x3ebf75['display'],_0x580b34)&&(_0x580b34[_0x4d4241('0x1111')][_0x4d4241('0x6cd')](_0x4d4241('0x923'),_0x3ebf75['getSelection']()),_0x580b34[_0x4d4241('0x1111')]['effectAllowed']='copyMove',_0x580b34[_0x4d4241('0x1111')][_0x4d4241('0x10ab')]&&!_0x30b785)){var _0x327ad=_0x31f23b(_0x4d4241('0x1174'),null,null,'position:\x20fixed;\x20left:\x200;\x20top:\x200;');_0x327ad[_0x4d4241('0xce8')]=_0x4d4241('0x80a'),_0x58a491&&(_0x327ad[_0x4d4241('0xa7b')]=_0x327ad['height']=0x1,_0x3ebf75[_0x4d4241('0x55c')][_0x4d4241('0x701')]['appendChild'](_0x327ad),_0x327ad[_0x4d4241('0xf2d')]=_0x327ad[_0x4d4241('0xa6')]),_0x580b34[_0x4d4241('0x1111')][_0x4d4241('0x10ab')](_0x327ad,0x0,0x0),_0x58a491&&_0x327ad[_0x4d4241('0x64')][_0x4d4241('0x75b')](_0x327ad);}}}(_0x3b8c88,_0xf893a1);},'drop':_0x2dfb55(_0x3b8c88,_0x22406e),'leave':function(_0xcf8e5b){_0x108070(_0x3b8c88,_0xcf8e5b)||_0x1fb68a(_0x3b8c88);}};var _0x507597=_0x1ffd87[_0xea4c35('0x20c')][_0xea4c35('0xab6')]();_0x407bf3(_0x507597,_0xea4c35('0xd8e'),function(_0x20b5ea){return _0x5dc966['call'](_0x3b8c88,_0x20b5ea);}),_0x407bf3(_0x507597,_0xea4c35('0x81b'),_0x2dfb55(_0x3b8c88,_0x5aef9d)),_0x407bf3(_0x507597,'keypress',_0x2dfb55(_0x3b8c88,_0x21d431)),_0x407bf3(_0x507597,'focus',function(_0x556774){return _0x4a5741(_0x3b8c88,_0x556774);}),_0x407bf3(_0x507597,_0xea4c35('0x81c'),function(_0x15706c){return _0x8158a7(_0x3b8c88,_0x15706c);});}(this),_0x5bb8c2(),_0x23d185(this),this[_0xb057ee('0x10e6')][_0xb057ee('0x60e')]=!0x0,_0x4cc752(this,_0x5a4f00),_0x530ec7[_0xb057ee('0xe10')]&&!_0x53e5ce||this[_0xb057ee('0xa2a')]()?setTimeout(function(){var _0x5ac5f9=_0xb057ee;_0x8b485c['hasFocus']()&&!_0x8b485c[_0x5ac5f9('0xfff')][_0x5ac5f9('0x19f')]&&_0x4a5741(_0x8b485c);},0x14):_0x8158a7(this),_0x43b0df))_0x43b0df[_0xb057ee('0x100')](_0x2d5e1f)&&_0x43b0df[_0x2d5e1f](this,_0x530ec7[_0x2d5e1f],_0x3b32d5);_0x329a5c(this),_0x530ec7['finishInit']&&_0x530ec7[_0xb057ee('0xffb')](this);for(var _0x1ca173=0x0;_0x1ca173<_0x30e00f['length'];++_0x1ca173)_0x30e00f[_0x1ca173](this);_0x5ab881(this),_0x153ccc&&_0x530ec7['lineWrapping']&&_0xb057ee('0x7b4')==getComputedStyle(_0xff4ada['lineDiv'])['textRendering']&&(_0xff4ada[_0xb057ee('0x1147')][_0xb057ee('0x1cd')]['textRendering']=_0xb057ee('0x18'));}_0x401c96['defaults']=_0x460b2a,_0x401c96[_0x255d35('0x17b')]=_0x43b0df;var _0x30e00f=[];function _0x2a267(_0x34c13a,_0x2dd865,_0x1b9a5,_0x3b9bee){var _0x355f50=_0x255d35,_0x26794c,_0x237f47=_0x34c13a[_0x355f50('0xf37')];null==_0x1b9a5&&(_0x1b9a5=_0x355f50('0x1130')),'smart'==_0x1b9a5&&(_0x237f47[_0x355f50('0x575')][_0x355f50('0x5de')]?_0x26794c=_0x13a7c7(_0x34c13a,_0x2dd865)[_0x355f50('0xfff')]:_0x1b9a5=_0x355f50('0x46b'));var _0x3e7556=_0x34c13a['options'][_0x355f50('0x772')],_0x26a159=_0x1b58dd(_0x237f47,_0x2dd865),_0x4eb1dd=_0x40e2a1(_0x26a159[_0x355f50('0x768')],null,_0x3e7556);_0x26a159[_0x355f50('0x52')]&&(_0x26a159[_0x355f50('0x52')]=null);var _0x226810,_0x1df37d=_0x26a159[_0x355f50('0x768')][_0x355f50('0x91e')](/^\s*/)[0x0];if(_0x3b9bee||/\S/[_0x355f50('0xaac')](_0x26a159['text'])){if(_0x355f50('0x43a')==_0x1b9a5&&((_0x226810=_0x237f47['mode'][_0x355f50('0x5de')](_0x26794c,_0x26a159['text'][_0x355f50('0xbc0')](_0x1df37d[_0x355f50('0x525')]),_0x26a159[_0x355f50('0x768')]))==_0x457770||_0x226810>0x96)){if(!_0x3b9bee)return;_0x1b9a5=_0x355f50('0x46b');}}else _0x226810=0x0,_0x1b9a5=_0x355f50('0x27f');'prev'==_0x1b9a5?_0x226810=_0x2dd865>_0x237f47['first']?_0x40e2a1(_0x1b58dd(_0x237f47,_0x2dd865-0x1)['text'],null,_0x3e7556):0x0:'add'==_0x1b9a5?_0x226810=_0x4eb1dd+_0x34c13a[_0x355f50('0x631')][_0x355f50('0x11a7')]:_0x355f50('0x6c4')==_0x1b9a5?_0x226810=_0x4eb1dd-_0x34c13a[_0x355f50('0x631')][_0x355f50('0x11a7')]:_0x355f50('0xd95')==typeof _0x1b9a5&&(_0x226810=_0x4eb1dd+_0x1b9a5),_0x226810=Math[_0x355f50('0xf65')](0x0,_0x226810);var _0xf88c7e='',_0xd3cbab=0x0;if(_0x34c13a[_0x355f50('0x631')][_0x355f50('0x38')])for(var _0x566736=Math['floor'](_0x226810/_0x3e7556);_0x566736;--_0x566736)_0xd3cbab+=_0x3e7556,_0xf88c7e+='\x09';if(_0xd3cbab<_0x226810&&(_0xf88c7e+=_0x1fed3f(_0x226810-_0xd3cbab)),_0xf88c7e!=_0x1df37d)return _0x1e2405(_0x237f47,_0xf88c7e,_0xf7c6fb(_0x2dd865,0x0),_0xf7c6fb(_0x2dd865,_0x1df37d['length']),_0x355f50('0x42e')),_0x26a159['stateAfter']=null,!0x0;for(var _0x290b19=0x0;_0x290b19<_0x237f47[_0x355f50('0x10f6')][_0x355f50('0x32')]['length'];_0x290b19++){var _0x51094a=_0x237f47[_0x355f50('0x10f6')][_0x355f50('0x32')][_0x290b19];if(_0x51094a['head'][_0x355f50('0xde2')]==_0x2dd865&&_0x51094a[_0x355f50('0x5d4')]['ch']<_0x1df37d[_0x355f50('0x525')]){var _0x4e3521=_0xf7c6fb(_0x2dd865,_0x1df37d['length']);_0x454670(_0x237f47,_0x290b19,new _0x47634a(_0x4e3521,_0x4e3521));break;}}}_0x401c96[_0x255d35('0x10cb')]=function(_0x408a05){return _0x30e00f['push'](_0x408a05);};var _0x1c944c=null;function _0x598e30(_0x59cb6e){_0x1c944c=_0x59cb6e;}function _0x4f6210(_0x2937e5,_0x4c6cb3,_0x3cc1a5,_0x2e7e18,_0x354479){var _0x3702ec=_0x255d35,_0x4f139d=_0x2937e5[_0x3702ec('0xf37')];_0x2937e5['display'][_0x3702ec('0x8be')]=!0x1,_0x2e7e18||(_0x2e7e18=_0x4f139d[_0x3702ec('0x10f6')]);var _0x54efdd=+new Date()-0xc8,_0x140a22='paste'==_0x354479||_0x2937e5[_0x3702ec('0xfff')][_0x3702ec('0x101a')]>_0x54efdd,_0x4df2f4=_0x1fd172(_0x4c6cb3),_0x550e6e=null;if(_0x140a22&&_0x2e7e18[_0x3702ec('0x32')][_0x3702ec('0x525')]>0x1){if(_0x1c944c&&_0x1c944c[_0x3702ec('0x768')][_0x3702ec('0x582')]('\x0a')==_0x4c6cb3){if(_0x2e7e18['ranges'][_0x3702ec('0x525')]%_0x1c944c['text'][_0x3702ec('0x525')]==0x0){_0x550e6e=[];for(var _0x3a9724=0x0;_0x3a9724<_0x1c944c[_0x3702ec('0x768')][_0x3702ec('0x525')];_0x3a9724++)_0x550e6e[_0x3702ec('0x8f8')](_0x4f139d[_0x3702ec('0xe83')](_0x1c944c[_0x3702ec('0x768')][_0x3a9724]));}}else _0x4df2f4[_0x3702ec('0x525')]==_0x2e7e18[_0x3702ec('0x32')]['length']&&_0x2937e5[_0x3702ec('0x631')][_0x3702ec('0xecf')]&&(_0x550e6e=_0x49f2fe(_0x4df2f4,function(_0x4e139b){return[_0x4e139b];}));}for(var _0x2f53c0=_0x2937e5[_0x3702ec('0x10e6')]['updateInput'],_0x4a678f=_0x2e7e18[_0x3702ec('0x32')][_0x3702ec('0x525')]-0x1;_0x4a678f>=0x0;_0x4a678f--){var _0x47b5e2=_0x2e7e18[_0x3702ec('0x32')][_0x4a678f],_0x5f9df5=_0x47b5e2[_0x3702ec('0x9d7')](),_0x279b03=_0x47b5e2['to']();_0x47b5e2[_0x3702ec('0x1078')]()&&(_0x3cc1a5&&_0x3cc1a5>0x0?_0x5f9df5=_0xf7c6fb(_0x5f9df5[_0x3702ec('0xde2')],_0x5f9df5['ch']-_0x3cc1a5):_0x2937e5[_0x3702ec('0xfff')][_0x3702ec('0x103c')]&&!_0x140a22?_0x279b03=_0xf7c6fb(_0x279b03[_0x3702ec('0xde2')],Math[_0x3702ec('0xc0d')](_0x1b58dd(_0x4f139d,_0x279b03['line'])[_0x3702ec('0x768')][_0x3702ec('0x525')],_0x279b03['ch']+_0x15560b(_0x4df2f4)[_0x3702ec('0x525')])):_0x140a22&&_0x1c944c&&_0x1c944c[_0x3702ec('0x2ac')]&&_0x1c944c[_0x3702ec('0x768')][_0x3702ec('0x582')]('\x0a')==_0x4df2f4[_0x3702ec('0x582')]('\x0a')&&(_0x5f9df5=_0x279b03=_0xf7c6fb(_0x5f9df5[_0x3702ec('0xde2')],0x0)));var _0x4a5c36={'from':_0x5f9df5,'to':_0x279b03,'text':_0x550e6e?_0x550e6e[_0x4a678f%_0x550e6e[_0x3702ec('0x525')]]:_0x4df2f4,'origin':_0x354479||(_0x140a22?'paste':_0x2937e5[_0x3702ec('0xfff')]['cutIncoming']>_0x54efdd?_0x3702ec('0x655'):_0x3702ec('0x42e'))};_0x2007f6(_0x2937e5[_0x3702ec('0xf37')],_0x4a5c36),_0x5470d1(_0x2937e5,_0x3702ec('0xac'),_0x2937e5,_0x4a5c36);}_0x4c6cb3&&!_0x140a22&&_0x58b172(_0x2937e5,_0x4c6cb3),_0x515b9d(_0x2937e5),_0x2937e5[_0x3702ec('0x10e6')][_0x3702ec('0xd83')]<0x2&&(_0x2937e5['curOp'][_0x3702ec('0xd83')]=_0x2f53c0),_0x2937e5[_0x3702ec('0x10e6')][_0x3702ec('0x108d')]=!0x0,_0x2937e5[_0x3702ec('0xfff')][_0x3702ec('0x101a')]=_0x2937e5['state']['cutIncoming']=-0x1;}function _0x357cb3(_0x134ab9,_0x3ba858){var _0x2e51f7=_0x255d35,_0x1da8ef=_0x134ab9['clipboardData']&&_0x134ab9[_0x2e51f7('0x261')]['getData'](_0x2e51f7('0x923'));if(_0x1da8ef)return _0x134ab9[_0x2e51f7('0xb65')](),_0x3ba858['isReadOnly']()||_0x3ba858['options'][_0x2e51f7('0xa30')]||_0x14c54d(_0x3ba858,function(){var _0x17bc2b=_0x2e51f7;return _0x4f6210(_0x3ba858,_0x1da8ef,0x0,null,_0x17bc2b('0xcf7'));}),!0x0;}function _0x58b172(_0x2f147c,_0x83835a){var _0x507aed=_0x255d35;if(_0x2f147c[_0x507aed('0x631')]['electricChars']&&_0x2f147c['options'][_0x507aed('0x35c')])for(var _0x2cf70b=_0x2f147c[_0x507aed('0xf37')]['sel'],_0xf0b87a=_0x2cf70b[_0x507aed('0x32')][_0x507aed('0x525')]-0x1;_0xf0b87a>=0x0;_0xf0b87a--){var _0x5542b1=_0x2cf70b[_0x507aed('0x32')][_0xf0b87a];if(!(_0x5542b1[_0x507aed('0x5d4')]['ch']>0x64||_0xf0b87a&&_0x2cf70b[_0x507aed('0x32')][_0xf0b87a-0x1][_0x507aed('0x5d4')][_0x507aed('0xde2')]==_0x5542b1[_0x507aed('0x5d4')][_0x507aed('0xde2')])){var _0xf2e4a0=_0x2f147c[_0x507aed('0x1198')](_0x5542b1[_0x507aed('0x5d4')]),_0x1c16b9=!0x1;if(_0xf2e4a0[_0x507aed('0x115c')])for(var _0x5f562f=0x0;_0x5f562f<_0xf2e4a0[_0x507aed('0x115c')][_0x507aed('0x525')];_0x5f562f++)if(_0x83835a[_0x507aed('0x4dc')](_0xf2e4a0['electricChars'][_0x507aed('0xc8e')](_0x5f562f))>-0x1){_0x1c16b9=_0x2a267(_0x2f147c,_0x5542b1[_0x507aed('0x5d4')]['line'],_0x507aed('0x43a'));break;}else _0xf2e4a0[_0x507aed('0xd0a')]&&_0xf2e4a0['electricInput'][_0x507aed('0xaac')](_0x1b58dd(_0x2f147c['doc'],_0x5542b1['head'][_0x507aed('0xde2')])[_0x507aed('0x768')][_0x507aed('0xbc0')](0x0,_0x5542b1[_0x507aed('0x5d4')]['ch']))&&(_0x1c16b9=_0x2a267(_0x2f147c,_0x5542b1[_0x507aed('0x5d4')][_0x507aed('0xde2')],'smart'));_0x1c16b9&&_0x5470d1(_0x2f147c,_0x507aed('0xd0a'),_0x2f147c,_0x5542b1[_0x507aed('0x5d4')][_0x507aed('0xde2')]);}}}function _0x373fb1(_0x511f6a){var _0x1231e5=_0x255d35;for(var _0x43ad2b=[],_0x2154b8=[],_0x5d302e=0x0;_0x5d302e<_0x511f6a['doc'][_0x1231e5('0x10f6')][_0x1231e5('0x32')][_0x1231e5('0x525')];_0x5d302e++){var _0x44048e=_0x511f6a[_0x1231e5('0xf37')][_0x1231e5('0x10f6')][_0x1231e5('0x32')][_0x5d302e][_0x1231e5('0x5d4')]['line'],_0x240e16={'anchor':_0xf7c6fb(_0x44048e,0x0),'head':_0xf7c6fb(_0x44048e+0x1,0x0)};_0x2154b8[_0x1231e5('0x8f8')](_0x240e16),_0x43ad2b[_0x1231e5('0x8f8')](_0x511f6a[_0x1231e5('0x1117')](_0x240e16['anchor'],_0x240e16[_0x1231e5('0x5d4')]));}return{'text':_0x43ad2b,'ranges':_0x2154b8};}function _0x27db4e(_0xd1dfd4,_0x2611bd,_0x3dce65,_0x4df3ec){var _0x49cf0f=_0x255d35;_0xd1dfd4[_0x49cf0f('0xfdc')](_0x49cf0f('0x866'),_0x3dce65?'':'off'),_0xd1dfd4[_0x49cf0f('0xfdc')]('autocapitalize',_0x4df3ec?'':_0x49cf0f('0xc1f')),_0xd1dfd4['setAttribute']('spellcheck',!!_0x2611bd);}function _0x50197a(){var _0x2247b7=_0x255d35,_0x2268cb=_0x31f23b(_0x2247b7('0xa2e'),null,null,'position:\x20absolute;\x20bottom:\x20-1em;\x20padding:\x200;\x20width:\x201px;\x20height:\x201em;\x20outline:\x20none'),_0x154fbd=_0x31f23b(_0x2247b7('0x7fc'),[_0x2268cb],null,_0x2247b7('0x10a8'));return _0x153ccc?_0x2268cb[_0x2247b7('0x1cd')][_0x2247b7('0xa7b')]=_0x2247b7('0x7b5'):_0x2268cb[_0x2247b7('0xfdc')](_0x2247b7('0xfd8'),_0x2247b7('0xc1f')),_0x47afbe&&(_0x2268cb[_0x2247b7('0x1cd')][_0x2247b7('0x10e4')]=_0x2247b7('0x301')),_0x27db4e(_0x2268cb),_0x154fbd;}function _0x4c864b(_0x3653a8,_0x5a48cd,_0x3c132f,_0x4a14c7,_0x46cb78){var _0x611265=_0x255d35,_0x19dbfd=_0x5a48cd,_0x49bbbd=_0x3c132f,_0x549b54=_0x1b58dd(_0x3653a8,_0x5a48cd[_0x611265('0xde2')]),_0x2be344=_0x46cb78&&_0x611265('0xb2f')==_0x3653a8[_0x611265('0xd96')]?-_0x3c132f:_0x3c132f;function _0x32ada4(_0x5a2d8e){var _0x32a3e6=_0x611265,_0x3d092c,_0x2098fe;if(_0x32a3e6('0x81')==_0x4a14c7){var _0x2260d2=_0x549b54[_0x32a3e6('0x768')]['charCodeAt'](_0x5a48cd['ch']+(_0x4a14c7>0x0?0x0:-0x1));_0x3d092c=isNaN(_0x2260d2)?null:new _0xf7c6fb(_0x5a48cd[_0x32a3e6('0xde2')],Math['max'](0x0,Math['min'](_0x549b54[_0x32a3e6('0x768')][_0x32a3e6('0x525')],_0x5a48cd['ch']+_0x3c132f*(_0x2260d2>=0xd800&&_0x2260d2<0xdc00?0x2:0x1))),-_0x3c132f);}else _0x3d092c=_0x46cb78?function(_0x49cb6a,_0x4e3912,_0x4fddf1,_0x1c7345){var _0x4b9a86=_0x32a3e6,_0x376dc8=_0x3982e5(_0x4e3912,_0x49cb6a[_0x4b9a86('0xf37')][_0x4b9a86('0xd96')]);if(!_0x376dc8)return _0x186db9(_0x4e3912,_0x4fddf1,_0x1c7345);_0x4fddf1['ch']>=_0x4e3912[_0x4b9a86('0x768')][_0x4b9a86('0x525')]?(_0x4fddf1['ch']=_0x4e3912[_0x4b9a86('0x768')][_0x4b9a86('0x525')],_0x4fddf1[_0x4b9a86('0x84e')]=_0x4b9a86('0xa69')):_0x4fddf1['ch']<=0x0&&(_0x4fddf1['ch']=0x0,_0x4fddf1[_0x4b9a86('0x84e')]=_0x4b9a86('0x95d'));var _0x16d50d=_0xb372fd(_0x376dc8,_0x4fddf1['ch'],_0x4fddf1[_0x4b9a86('0x84e')]),_0x6a0715=_0x376dc8[_0x16d50d];if(_0x4b9a86('0xefe')==_0x49cb6a[_0x4b9a86('0xf37')][_0x4b9a86('0xd96')]&&_0x6a0715[_0x4b9a86('0x1fe')]%0x2==0x0&&(_0x1c7345>0x0?_0x6a0715['to']>_0x4fddf1['ch']:_0x6a0715[_0x4b9a86('0x9d7')]<_0x4fddf1['ch']))return _0x186db9(_0x4e3912,_0x4fddf1,_0x1c7345);var _0x544bb7,_0x3f3285=function(_0x34ffd6,_0xbd18e9){return _0x3e6857(_0x4e3912,_0x34ffd6 instanceof _0xf7c6fb?_0x34ffd6['ch']:_0x34ffd6,_0xbd18e9);},_0x4cc04e=function(_0x1906e1){var _0x36a73f=_0x4b9a86;return _0x49cb6a[_0x36a73f('0x631')][_0x36a73f('0x5a9')]?(_0x544bb7=_0x544bb7||_0x5b7fb4(_0x49cb6a,_0x4e3912),_0x304bea(_0x49cb6a,_0x4e3912,_0x544bb7,_0x1906e1)):{'begin':0x0,'end':_0x4e3912[_0x36a73f('0x768')][_0x36a73f('0x525')]};},_0x1e33bc=_0x4cc04e(_0x4b9a86('0xa69')==_0x4fddf1[_0x4b9a86('0x84e')]?_0x3f3285(_0x4fddf1,-0x1):_0x4fddf1['ch']);if(_0x4b9a86('0xb2f')==_0x49cb6a['doc'][_0x4b9a86('0xd96')]||0x1==_0x6a0715[_0x4b9a86('0x1fe')]){var _0x5dd224=0x1==_0x6a0715['level']==_0x1c7345<0x0,_0x502454=_0x3f3285(_0x4fddf1,_0x5dd224?0x1:-0x1);if(null!=_0x502454&&(_0x5dd224?_0x502454<=_0x6a0715['to']&&_0x502454<=_0x1e33bc[_0x4b9a86('0xbc6')]:_0x502454>=_0x6a0715['from']&&_0x502454>=_0x1e33bc[_0x4b9a86('0x11b7')])){var _0x5df6bd=_0x5dd224?_0x4b9a86('0xa69'):_0x4b9a86('0x95d');return new _0xf7c6fb(_0x4fddf1['line'],_0x502454,_0x5df6bd);}}var _0x4bbab0=function(_0x5425aa,_0x16661f,_0x8f6796){var _0xb294b5=_0x4b9a86;for(var _0x266e06=function(_0x350b71,_0x35c732){var _0x1df4ee=_0x3ab6;return _0x35c732?new _0xf7c6fb(_0x4fddf1[_0x1df4ee('0xde2')],_0x3f3285(_0x350b71,0x1),_0x1df4ee('0xa69')):new _0xf7c6fb(_0x4fddf1['line'],_0x350b71,'after');};_0x5425aa>=0x0&&_0x5425aa<_0x376dc8[_0xb294b5('0x525')];_0x5425aa+=_0x16661f){var _0x4cc2c6=_0x376dc8[_0x5425aa],_0x299007=_0x16661f>0x0==(0x1!=_0x4cc2c6[_0xb294b5('0x1fe')]),_0x466a25=_0x299007?_0x8f6796[_0xb294b5('0x11b7')]:_0x3f3285(_0x8f6796[_0xb294b5('0xbc6')],-0x1);if(_0x4cc2c6[_0xb294b5('0x9d7')]<=_0x466a25&&_0x466a25<_0x4cc2c6['to'])return _0x266e06(_0x466a25,_0x299007);if(_0x466a25=_0x299007?_0x4cc2c6[_0xb294b5('0x9d7')]:_0x3f3285(_0x4cc2c6['to'],-0x1),_0x8f6796[_0xb294b5('0x11b7')]<=_0x466a25&&_0x466a25<_0x8f6796[_0xb294b5('0xbc6')])return _0x266e06(_0x466a25,_0x299007);}},_0x597632=_0x4bbab0(_0x16d50d+_0x1c7345,_0x1c7345,_0x1e33bc);if(_0x597632)return _0x597632;var _0x3c5efd=_0x1c7345>0x0?_0x1e33bc[_0x4b9a86('0xbc6')]:_0x3f3285(_0x1e33bc[_0x4b9a86('0x11b7')],-0x1);return null==_0x3c5efd||_0x1c7345>0x0&&_0x3c5efd==_0x4e3912['text']['length']||!(_0x597632=_0x4bbab0(_0x1c7345>0x0?0x0:_0x376dc8['length']-0x1,_0x1c7345,_0x4cc04e(_0x3c5efd)))?null:_0x597632;}(_0x3653a8['cm'],_0x549b54,_0x5a48cd,_0x3c132f):_0x186db9(_0x549b54,_0x5a48cd,_0x3c132f);if(null==_0x3d092c){if(_0x5a2d8e||(_0x2098fe=_0x5a48cd[_0x32a3e6('0xde2')]+_0x2be344)<_0x3653a8[_0x32a3e6('0xe3c')]||_0x2098fe>=_0x3653a8[_0x32a3e6('0xe3c')]+_0x3653a8[_0x32a3e6('0x844')]||(_0x5a48cd=new _0xf7c6fb(_0x2098fe,_0x5a48cd['ch'],_0x5a48cd[_0x32a3e6('0x84e')]),!(_0x549b54=_0x1b58dd(_0x3653a8,_0x2098fe))))return!0x1;_0x5a48cd=_0x1661f6(_0x46cb78,_0x3653a8['cm'],_0x549b54,_0x5a48cd['line'],_0x2be344);}else _0x5a48cd=_0x3d092c;return!0x0;}if(_0x611265('0xf66')==_0x4a14c7||'codepoint'==_0x4a14c7)_0x32ada4();else{if('column'==_0x4a14c7)_0x32ada4(!0x0);else{if(_0x611265('0x7c6')==_0x4a14c7||'group'==_0x4a14c7)for(var _0x28acec=null,_0x1bcdd9='group'==_0x4a14c7,_0x4d93cd=_0x3653a8['cm']&&_0x3653a8['cm'][_0x611265('0x1082')](_0x5a48cd,'wordChars'),_0x40f4ed=!0x0;!(_0x3c132f<0x0)||_0x32ada4(!_0x40f4ed);_0x40f4ed=!0x1){var _0x4b33b1=_0x549b54[_0x611265('0x768')]['charAt'](_0x5a48cd['ch'])||'\x0a',_0x3f73c1=_0x1379f6(_0x4b33b1,_0x4d93cd)?'w':_0x1bcdd9&&'\x0a'==_0x4b33b1?'n':!_0x1bcdd9||/\s/['test'](_0x4b33b1)?null:'p';if(!_0x1bcdd9||_0x40f4ed||_0x3f73c1||(_0x3f73c1='s'),_0x28acec&&_0x28acec!=_0x3f73c1){_0x3c132f<0x0&&(_0x3c132f=0x1,_0x32ada4(),_0x5a48cd['sticky']=_0x611265('0x95d'));break;}if(_0x3f73c1&&(_0x28acec=_0x3f73c1),_0x3c132f>0x0&&!_0x32ada4(!_0x40f4ed))break;}}}var _0x2b36ab=_0x32c771(_0x3653a8,_0x5a48cd,_0x19dbfd,_0x49bbbd,!0x0);return _0x13a88c(_0x19dbfd,_0x2b36ab)&&(_0x2b36ab[_0x611265('0x91b')]=!0x0),_0x2b36ab;}function _0x21dc44(_0xd9b40d,_0x2a5fb1,_0x589086,_0x36f7bc){var _0xbfb297=_0x255d35,_0x578402,_0x35dd8c,_0x66cc28=_0xd9b40d['doc'],_0x229728=_0x2a5fb1[_0xbfb297('0xbab')];if(_0xbfb297('0x9dc')==_0x36f7bc){var _0x452c96=Math['min'](_0xd9b40d[_0xbfb297('0x55c')][_0xbfb297('0x701')][_0xbfb297('0x1a1')],window[_0xbfb297('0x84f')]||document[_0xbfb297('0x498')]['clientHeight']),_0x2396c7=Math[_0xbfb297('0xf65')](_0x452c96-0.5*_0x37256b(_0xd9b40d[_0xbfb297('0x55c')]),0x3);_0x578402=(_0x589086>0x0?_0x2a5fb1['bottom']:_0x2a5fb1[_0xbfb297('0x62d')])+_0x589086*_0x2396c7;}else _0xbfb297('0xde2')==_0x36f7bc&&(_0x578402=_0x589086>0x0?_0x2a5fb1['bottom']+0x3:_0x2a5fb1[_0xbfb297('0x62d')]-0x3);for(;(_0x35dd8c=_0x20817a(_0xd9b40d,_0x229728,_0x578402))[_0xbfb297('0xc45')];){if(_0x589086<0x0?_0x578402<=0x0:_0x578402>=_0x66cc28[_0xbfb297('0x7f0')]){_0x35dd8c[_0xbfb297('0x91b')]=!0x0;break;}_0x578402+=0x5*_0x589086;}return _0x35dd8c;}var _0x3a21c6=function(_0x4d9c7d){var _0x4e9918=_0x255d35;this['cm']=_0x4d9c7d,this[_0x4e9918('0x1173')]=this[_0x4e9918('0xc')]=this['lastFocusNode']=this[_0x4e9918('0x9f2')]=null,this[_0x4e9918('0x10c9')]=new _0x1d1618(),this[_0x4e9918('0x5e8')]=null,this[_0x4e9918('0xa85')]=!0x1,this['readDOMTimeout']=null;};function _0x5eaba1(_0x23d61a,_0x1e5c01){var _0x5ad726=_0x255d35,_0x3a63e2=_0x2e36d5(_0x23d61a,_0x1e5c01['line']);if(!_0x3a63e2||_0x3a63e2[_0x5ad726('0xdc0')])return null;var _0x120d82=_0x1b58dd(_0x23d61a[_0x5ad726('0xf37')],_0x1e5c01[_0x5ad726('0xde2')]),_0x4177ec=_0x4c1487(_0x3a63e2,_0x120d82,_0x1e5c01[_0x5ad726('0xde2')]),_0x11a460=_0x3982e5(_0x120d82,_0x23d61a[_0x5ad726('0xf37')]['direction']),_0x305446=_0x5ad726('0xbab');_0x11a460&&(_0x305446=_0xb372fd(_0x11a460,_0x1e5c01['ch'])%0x2?'right':'left');var _0x59ed8a=_0x51ffde(_0x4177ec[_0x5ad726('0xd49')],_0x1e5c01['ch'],_0x305446);return _0x59ed8a[_0x5ad726('0xaba')]=_0x5ad726('0x732')==_0x59ed8a[_0x5ad726('0xdb1')]?_0x59ed8a[_0x5ad726('0xbc6')]:_0x59ed8a[_0x5ad726('0x1045')],_0x59ed8a;}function _0x1906aa(_0x1560bd,_0x4c571d){var _0x56c379=_0x255d35;return _0x4c571d&&(_0x1560bd[_0x56c379('0x1077')]=!0x0),_0x1560bd;}function _0x15ba33(_0x59dfac,_0x496bfc,_0x2a3744){var _0x4541b2=_0x255d35,_0x3250d2;if(_0x496bfc==_0x59dfac[_0x4541b2('0x55c')][_0x4541b2('0x1147')]){if(!(_0x3250d2=_0x59dfac[_0x4541b2('0x55c')][_0x4541b2('0x1147')][_0x4541b2('0x4e6')][_0x2a3744]))return _0x1906aa(_0x59dfac[_0x4541b2('0x240')](_0xf7c6fb(_0x59dfac[_0x4541b2('0x55c')][_0x4541b2('0xf2f')]-0x1)),!0x0);_0x496bfc=null,_0x2a3744=0x0;}else for(_0x3250d2=_0x496bfc;;_0x3250d2=_0x3250d2[_0x4541b2('0x64')]){if(!_0x3250d2||_0x3250d2==_0x59dfac['display'][_0x4541b2('0x1147')])return null;if(_0x3250d2['parentNode']&&_0x3250d2[_0x4541b2('0x64')]==_0x59dfac[_0x4541b2('0x55c')][_0x4541b2('0x1147')])break;}for(var _0x3cdf3a=0x0;_0x3cdf3a<_0x59dfac[_0x4541b2('0x55c')][_0x4541b2('0x1132')][_0x4541b2('0x525')];_0x3cdf3a++){var _0x3a156d=_0x59dfac[_0x4541b2('0x55c')]['view'][_0x3cdf3a];if(_0x3a156d[_0x4541b2('0x5f')]==_0x3250d2)return _0x5e3bf9(_0x3a156d,_0x496bfc,_0x2a3744);}}function _0x5e3bf9(_0x305f99,_0x3a564e,_0x1d8af8){var _0x4e9ed9=_0x255d35,_0x186e88=_0x305f99['text'][_0x4e9ed9('0xdfb')],_0x3bfda5=!0x1;if(!_0x3a564e||!_0x2c8c88(_0x186e88,_0x3a564e))return _0x1906aa(_0xf7c6fb(_0x5ee38b(_0x305f99['line']),0x0),!0x0);if(_0x3a564e==_0x186e88&&(_0x3bfda5=!0x0,_0x3a564e=_0x186e88[_0x4e9ed9('0x4e6')][_0x1d8af8],_0x1d8af8=0x0,!_0x3a564e)){var _0x5b566a=_0x305f99[_0x4e9ed9('0x981')]?_0x15560b(_0x305f99[_0x4e9ed9('0x981')]):_0x305f99['line'];return _0x1906aa(_0xf7c6fb(_0x5ee38b(_0x5b566a),_0x5b566a['text'][_0x4e9ed9('0x525')]),_0x3bfda5);}var _0x3b86ac=0x3==_0x3a564e[_0x4e9ed9('0xa4b')]?_0x3a564e:null,_0x56c87d=_0x3a564e;for(_0x3b86ac||0x1!=_0x3a564e[_0x4e9ed9('0x4e6')][_0x4e9ed9('0x525')]||0x3!=_0x3a564e['firstChild'][_0x4e9ed9('0xa4b')]||(_0x3b86ac=_0x3a564e['firstChild'],_0x1d8af8&&(_0x1d8af8=_0x3b86ac['nodeValue'][_0x4e9ed9('0x525')]));_0x56c87d[_0x4e9ed9('0x64')]!=_0x186e88;)_0x56c87d=_0x56c87d['parentNode'];var _0x2be189=_0x305f99['measure'],_0x1ed2b5=_0x2be189[_0x4e9ed9('0x59c')];function _0x1f6fba(_0x339964,_0x3663c5,_0x2b2c49){var _0x1856c9=_0x4e9ed9;for(var _0x203850=-0x1;_0x203850<(_0x1ed2b5?_0x1ed2b5[_0x1856c9('0x525')]:0x0);_0x203850++)for(var _0x4b3d0e=_0x203850<0x0?_0x2be189[_0x1856c9('0xd49')]:_0x1ed2b5[_0x203850],_0x37cea5=0x0;_0x37cea5<_0x4b3d0e['length'];_0x37cea5+=0x3){var _0x1d3407=_0x4b3d0e[_0x37cea5+0x2];if(_0x1d3407==_0x339964||_0x1d3407==_0x3663c5){var _0x17001a=_0x5ee38b(_0x203850<0x0?_0x305f99[_0x1856c9('0xde2')]:_0x305f99[_0x1856c9('0x981')][_0x203850]),_0x6315ee=_0x4b3d0e[_0x37cea5]+_0x2b2c49;return(_0x2b2c49<0x0||_0x1d3407!=_0x339964)&&(_0x6315ee=_0x4b3d0e[_0x37cea5+(_0x2b2c49?0x1:0x0)]),_0xf7c6fb(_0x17001a,_0x6315ee);}}}var _0x4281f8=_0x1f6fba(_0x3b86ac,_0x56c87d,_0x1d8af8);if(_0x4281f8)return _0x1906aa(_0x4281f8,_0x3bfda5);for(var _0x3319ca=_0x56c87d[_0x4e9ed9('0xd29')],_0x193389=_0x3b86ac?_0x3b86ac[_0x4e9ed9('0x49d')][_0x4e9ed9('0x525')]-_0x1d8af8:0x0;_0x3319ca;_0x3319ca=_0x3319ca[_0x4e9ed9('0xd29')]){if(_0x4281f8=_0x1f6fba(_0x3319ca,_0x3319ca[_0x4e9ed9('0xdfb')],0x0))return _0x1906aa(_0xf7c6fb(_0x4281f8[_0x4e9ed9('0xde2')],_0x4281f8['ch']-_0x193389),_0x3bfda5);_0x193389+=_0x3319ca[_0x4e9ed9('0xe1')][_0x4e9ed9('0x525')];}for(var _0x4ff692=_0x56c87d['previousSibling'],_0x2efa92=_0x1d8af8;_0x4ff692;_0x4ff692=_0x4ff692[_0x4e9ed9('0x1e3')]){if(_0x4281f8=_0x1f6fba(_0x4ff692,_0x4ff692[_0x4e9ed9('0xdfb')],-0x1))return _0x1906aa(_0xf7c6fb(_0x4281f8['line'],_0x4281f8['ch']+_0x2efa92),_0x3bfda5);_0x2efa92+=_0x4ff692['textContent']['length'];}}_0x3a21c6[_0x255d35('0x98c')][_0x255d35('0x2ae')]=function(_0x3d0070){var _0x9495ee=_0x255d35,_0x1bf03f=this,_0x395773=this,_0x52ef5b=_0x395773['cm'],_0x4beac3=_0x395773['div']=_0x3d0070[_0x9495ee('0x1147')];function _0x92d3fb(_0xc3bb01){var _0x4bd916=_0x9495ee;for(var _0x2a26a8=_0xc3bb01[_0x4bd916('0x616')];_0x2a26a8;_0x2a26a8=_0x2a26a8[_0x4bd916('0x64')]){if(_0x2a26a8==_0x4beac3)return!0x0;if(/\bCodeMirror-(?:line)?widget\b/[_0x4bd916('0xaac')](_0x2a26a8[_0x4bd916('0x1bd')]))break;}return!0x1;}function _0x1e5e0f(_0x14a566){var _0x31be4c=_0x9495ee;if(_0x92d3fb(_0x14a566)&&!_0x108070(_0x52ef5b,_0x14a566)){if(_0x52ef5b[_0x31be4c('0xdea')]())_0x598e30({'lineWise':!0x1,'text':_0x52ef5b[_0x31be4c('0xc47')]()}),_0x31be4c('0x655')==_0x14a566['type']&&_0x52ef5b[_0x31be4c('0xd78')]('',null,_0x31be4c('0x655'));else{if(!_0x52ef5b[_0x31be4c('0x631')][_0x31be4c('0x4cb')])return;var _0x1e9e9b=_0x373fb1(_0x52ef5b);_0x598e30({'lineWise':!0x0,'text':_0x1e9e9b[_0x31be4c('0x768')]}),_0x31be4c('0x655')==_0x14a566['type']&&_0x52ef5b['operation'](function(){var _0x469796=_0x31be4c;_0x52ef5b[_0x469796('0xd02')](_0x1e9e9b[_0x469796('0x32')],0x0,_0x463688),_0x52ef5b[_0x469796('0xd78')]('',null,_0x469796('0x655'));});}if(_0x14a566[_0x31be4c('0x261')]){_0x14a566[_0x31be4c('0x261')]['clearData']();var _0x4f1e5c=_0x1c944c['text'][_0x31be4c('0x582')]('\x0a');if(_0x14a566['clipboardData']['setData'](_0x31be4c('0x923'),_0x4f1e5c),_0x14a566[_0x31be4c('0x261')][_0x31be4c('0x385')](_0x31be4c('0x923'))==_0x4f1e5c)return void _0x14a566['preventDefault']();}var _0x42816d=_0x50197a(),_0x573952=_0x42816d['firstChild'];_0x52ef5b[_0x31be4c('0x55c')][_0x31be4c('0xeb2')]['insertBefore'](_0x42816d,_0x52ef5b[_0x31be4c('0x55c')][_0x31be4c('0xeb2')][_0x31be4c('0xdfb')]),_0x573952[_0x31be4c('0x832')]=_0x1c944c[_0x31be4c('0x768')][_0x31be4c('0x582')]('\x0a');var _0x8c5de0=document['activeElement'];_0x8eca30(_0x573952),setTimeout(function(){var _0x59a15e=_0x31be4c;_0x52ef5b[_0x59a15e('0x55c')][_0x59a15e('0xeb2')][_0x59a15e('0x75b')](_0x42816d),_0x8c5de0['focus'](),_0x8c5de0==_0x4beac3&&_0x395773[_0x59a15e('0xab1')]();},0x32);}}_0x27db4e(_0x4beac3,_0x52ef5b[_0x9495ee('0x631')][_0x9495ee('0x8d1')],_0x52ef5b['options']['autocorrect'],_0x52ef5b['options'][_0x9495ee('0x8b4')]),_0x407bf3(_0x4beac3,_0x9495ee('0xcf7'),function(_0x55de12){!_0x92d3fb(_0x55de12)||_0x108070(_0x52ef5b,_0x55de12)||_0x357cb3(_0x55de12,_0x52ef5b)||_0x5275d9<=0xb&&setTimeout(_0x2dfb55(_0x52ef5b,function(){var _0x213cf5=_0x3ab6;return _0x1bf03f[_0x213cf5('0x8e1')]();}),0x14);}),_0x407bf3(_0x4beac3,_0x9495ee('0xf96'),function(_0xc84f1f){var _0xb8926=_0x9495ee;_0x1bf03f[_0xb8926('0x5e8')]={'data':_0xc84f1f['data'],'done':!0x1};}),_0x407bf3(_0x4beac3,_0x9495ee('0xf5d'),function(_0x4ce017){var _0xe02b2c=_0x9495ee;_0x1bf03f['composing']||(_0x1bf03f[_0xe02b2c('0x5e8')]={'data':_0x4ce017[_0xe02b2c('0xac8')],'done':!0x1});}),_0x407bf3(_0x4beac3,'compositionend',function(_0x2fdd6e){var _0x23be45=_0x9495ee;_0x1bf03f[_0x23be45('0x5e8')]&&(_0x2fdd6e[_0x23be45('0xac8')]!=_0x1bf03f['composing'][_0x23be45('0xac8')]&&_0x1bf03f[_0x23be45('0x971')](),_0x1bf03f[_0x23be45('0x5e8')][_0x23be45('0x10cf')]=!0x0);}),_0x407bf3(_0x4beac3,_0x9495ee('0x897'),function(){var _0x2e41aa=_0x9495ee;return _0x395773[_0x2e41aa('0xc27')]();}),_0x407bf3(_0x4beac3,'input',function(){var _0x5632f4=_0x9495ee;_0x1bf03f[_0x5632f4('0x5e8')]||_0x1bf03f['readFromDOMSoon']();}),_0x407bf3(_0x4beac3,_0x9495ee('0xeaa'),_0x1e5e0f),_0x407bf3(_0x4beac3,_0x9495ee('0x655'),_0x1e5e0f);},_0x3a21c6[_0x255d35('0x98c')][_0x255d35('0x11d7')]=function(_0x2a16fc){var _0x4658de=_0x255d35;_0x2a16fc?this['div'][_0x4658de('0xfdc')]('aria-label',_0x2a16fc):this[_0x4658de('0x7fc')][_0x4658de('0xc7f')]('aria-label');},_0x3a21c6[_0x255d35('0x98c')]['prepareSelection']=function(){var _0x4d51b9=_0x255d35,_0x178555=_0x1683c4(this['cm'],!0x1);return _0x178555[_0x4d51b9('0x74b')]=document[_0x4d51b9('0x80b')]==this[_0x4d51b9('0x7fc')],_0x178555;},_0x3a21c6[_0x255d35('0x98c')][_0x255d35('0x512')]=function(_0x54860f,_0x4202dc){var _0x3eecb6=_0x255d35;_0x54860f&&this['cm'][_0x3eecb6('0x55c')][_0x3eecb6('0x1132')][_0x3eecb6('0x525')]&&((_0x54860f['focus']||_0x4202dc)&&this[_0x3eecb6('0xab1')](),this[_0x3eecb6('0xb83')](_0x54860f));},_0x3a21c6[_0x255d35('0x98c')]['getSelection']=function(){var _0x2738bf=_0x255d35;return this['cm']['display'][_0x2738bf('0x701')]['ownerDocument'][_0x2738bf('0x5b7')]();},_0x3a21c6['prototype']['showPrimarySelection']=function(){var _0x5f559f=_0x255d35,_0x30d3ef=this[_0x5f559f('0x5b7')](),_0x32c2a5=this['cm'],_0x5130d4=_0x32c2a5[_0x5f559f('0xf37')][_0x5f559f('0x10f6')]['primary'](),_0x3d9fb7=_0x5130d4['from'](),_0x586599=_0x5130d4['to']();if(_0x32c2a5[_0x5f559f('0x55c')]['viewTo']==_0x32c2a5[_0x5f559f('0x55c')]['viewFrom']||_0x3d9fb7[_0x5f559f('0xde2')]>=_0x32c2a5[_0x5f559f('0x55c')]['viewTo']||_0x586599[_0x5f559f('0xde2')]<_0x32c2a5[_0x5f559f('0x55c')][_0x5f559f('0xa36')])_0x30d3ef[_0x5f559f('0x848')]();else{var _0x4c1408=_0x15ba33(_0x32c2a5,_0x30d3ef[_0x5f559f('0x10af')],_0x30d3ef[_0x5f559f('0x8f0')]),_0x447f6d=_0x15ba33(_0x32c2a5,_0x30d3ef['focusNode'],_0x30d3ef[_0x5f559f('0x806')]);if(!_0x4c1408||_0x4c1408[_0x5f559f('0x1077')]||!_0x447f6d||_0x447f6d[_0x5f559f('0x1077')]||0x0!=_0x42d525(_0x31d615(_0x4c1408,_0x447f6d),_0x3d9fb7)||0x0!=_0x42d525(_0x36db9e(_0x4c1408,_0x447f6d),_0x586599)){var _0x85b878=_0x32c2a5['display']['view'],_0xca0696=_0x3d9fb7['line']>=_0x32c2a5['display'][_0x5f559f('0xa36')]&&_0x5eaba1(_0x32c2a5,_0x3d9fb7)||{'node':_0x85b878[0x0][_0x5f559f('0xc62')]['map'][0x2],'offset':0x0},_0x3b76ba=_0x586599[_0x5f559f('0xde2')]<_0x32c2a5['display'][_0x5f559f('0xf2f')]&&_0x5eaba1(_0x32c2a5,_0x586599);if(!_0x3b76ba){var _0x502475=_0x85b878[_0x85b878[_0x5f559f('0x525')]-0x1]['measure'],_0xf60f2=_0x502475[_0x5f559f('0x59c')]?_0x502475[_0x5f559f('0x59c')][_0x502475[_0x5f559f('0x59c')]['length']-0x1]:_0x502475[_0x5f559f('0xd49')];_0x3b76ba={'node':_0xf60f2[_0xf60f2[_0x5f559f('0x525')]-0x1],'offset':_0xf60f2[_0xf60f2[_0x5f559f('0x525')]-0x2]-_0xf60f2[_0xf60f2[_0x5f559f('0x525')]-0x3]};}if(_0xca0696&&_0x3b76ba){var _0x400430,_0x4bd66d=_0x30d3ef[_0x5f559f('0x524')]&&_0x30d3ef[_0x5f559f('0x2c6')](0x0);try{_0x400430=_0x508a43(_0xca0696[_0x5f559f('0x5f')],_0xca0696[_0x5f559f('0xaba')],_0x3b76ba[_0x5f559f('0xaba')],_0x3b76ba[_0x5f559f('0x5f')]);}catch(_0x4b6ead){}_0x400430&&(!_0x3505d1&&_0x32c2a5[_0x5f559f('0xfff')]['focused']?(_0x30d3ef['collapse'](_0xca0696[_0x5f559f('0x5f')],_0xca0696[_0x5f559f('0xaba')]),_0x400430['collapsed']||(_0x30d3ef[_0x5f559f('0x848')](),_0x30d3ef[_0x5f559f('0x153')](_0x400430))):(_0x30d3ef['removeAllRanges'](),_0x30d3ef[_0x5f559f('0x153')](_0x400430)),_0x4bd66d&&null==_0x30d3ef[_0x5f559f('0x10af')]?_0x30d3ef[_0x5f559f('0x153')](_0x4bd66d):_0x3505d1&&this[_0x5f559f('0x183')]()),this[_0x5f559f('0xe3e')]();}else _0x30d3ef['removeAllRanges']();}}},_0x3a21c6[_0x255d35('0x98c')][_0x255d35('0x183')]=function(){var _0xb8182c=_0x255d35,_0x322289=this;clearTimeout(this[_0xb8182c('0xa85')]),this['gracePeriod']=setTimeout(function(){var _0x14dc36=_0xb8182c;_0x322289[_0x14dc36('0xa85')]=!0x1,_0x322289['selectionChanged']()&&_0x322289['cm'][_0x14dc36('0x723')](function(){var _0x25adb3=_0x14dc36;return _0x322289['cm'][_0x25adb3('0x10e6')][_0x25adb3('0xbcc')]=!0x0;});},0x14);},_0x3a21c6['prototype']['showMultipleSelections']=function(_0x24992f){var _0x906fb=_0x255d35;_0x171d74(this['cm']['display']['cursorDiv'],_0x24992f[_0x906fb('0x114d')]),_0x171d74(this['cm']['display'][_0x906fb('0x2d7')],_0x24992f[_0x906fb('0x4a6')]);},_0x3a21c6['prototype'][_0x255d35('0xe3e')]=function(){var _0x28de95=_0x255d35,_0x2dc61c=this[_0x28de95('0x5b7')]();this[_0x28de95('0x1173')]=_0x2dc61c[_0x28de95('0x10af')],this[_0x28de95('0xc')]=_0x2dc61c['anchorOffset'],this['lastFocusNode']=_0x2dc61c[_0x28de95('0x7c')],this[_0x28de95('0x9f2')]=_0x2dc61c['focusOffset'];},_0x3a21c6[_0x255d35('0x98c')][_0x255d35('0xd15')]=function(){var _0x36622c=_0x255d35,_0x276b08=this[_0x36622c('0x5b7')]();if(!_0x276b08[_0x36622c('0x524')])return!0x1;var _0x485252=_0x276b08['getRangeAt'](0x0)[_0x36622c('0x404')];return _0x2c8c88(this[_0x36622c('0x7fc')],_0x485252);},_0x3a21c6['prototype']['focus']=function(){var _0x4b2201=_0x255d35;_0x4b2201('0xb44')!=this['cm'][_0x4b2201('0x631')][_0x4b2201('0x1069')]&&(this[_0x4b2201('0xd15')]()&&document[_0x4b2201('0x80b')]==this['div']||this[_0x4b2201('0x512')](this['prepareSelection'](),!0x0),this[_0x4b2201('0x7fc')][_0x4b2201('0x74b')]());},_0x3a21c6[_0x255d35('0x98c')][_0x255d35('0x81c')]=function(){var _0x1f9466=_0x255d35;this[_0x1f9466('0x7fc')]['blur']();},_0x3a21c6['prototype']['getField']=function(){return this['div'];},_0x3a21c6[_0x255d35('0x98c')][_0x255d35('0xdb4')]=function(){return!0x0;},_0x3a21c6['prototype'][_0x255d35('0x451')]=function(){var _0x79b6=_0x255d35,_0xbe9732=this;this[_0x79b6('0xd15')]()?this['pollSelection']():_0x14c54d(this['cm'],function(){var _0x3c63a9=_0x79b6;return _0xbe9732['cm'][_0x3c63a9('0x10e6')]['selectionChanged']=!0x0;}),this[_0x79b6('0x10c9')][_0x79b6('0x11ce')](this['cm'][_0x79b6('0x631')]['pollInterval'],function _0x1c26a(){var _0x548e84=_0x79b6;_0xbe9732['cm'][_0x548e84('0xfff')]['focused']&&(_0xbe9732[_0x548e84('0x465')](),_0xbe9732[_0x548e84('0x10c9')][_0x548e84('0x11ce')](_0xbe9732['cm'][_0x548e84('0x631')][_0x548e84('0x1d1')],_0x1c26a));});},_0x3a21c6[_0x255d35('0x98c')][_0x255d35('0xbcc')]=function(){var _0x3ebf2b=_0x255d35,_0x461414=this[_0x3ebf2b('0x5b7')]();return _0x461414[_0x3ebf2b('0x10af')]!=this['lastAnchorNode']||_0x461414[_0x3ebf2b('0x8f0')]!=this[_0x3ebf2b('0xc')]||_0x461414[_0x3ebf2b('0x7c')]!=this[_0x3ebf2b('0x178')]||_0x461414[_0x3ebf2b('0x806')]!=this['lastFocusOffset'];},_0x3a21c6[_0x255d35('0x98c')][_0x255d35('0x465')]=function(){var _0x399b10=_0x255d35;if(null==this[_0x399b10('0x1103')]&&!this[_0x399b10('0xa85')]&&this[_0x399b10('0xbcc')]()){var _0x4841e2=this[_0x399b10('0x5b7')](),_0x4284b6=this['cm'];if(_0x28e6e3&&_0x29e781&&this['cm'][_0x399b10('0x55c')][_0x399b10('0x1098')][_0x399b10('0x525')]&&function(_0x279d55){var _0x23dc2c=_0x399b10;for(var _0x5a8270=_0x279d55;_0x5a8270;_0x5a8270=_0x5a8270[_0x23dc2c('0x64')])if(/CodeMirror-gutter-wrapper/[_0x23dc2c('0xaac')](_0x5a8270[_0x23dc2c('0x1bd')]))return!0x0;return!0x1;}(_0x4841e2[_0x399b10('0x10af')]))return this['cm'][_0x399b10('0xbf5')]({'type':_0x399b10('0x81b'),'keyCode':0x8,'preventDefault':Math['abs']}),this['blur'](),void this[_0x399b10('0x74b')]();if(!this[_0x399b10('0x5e8')]){this[_0x399b10('0xe3e')]();var _0x3331d2=_0x15ba33(_0x4284b6,_0x4841e2[_0x399b10('0x10af')],_0x4841e2[_0x399b10('0x8f0')]),_0x1b1f38=_0x15ba33(_0x4284b6,_0x4841e2['focusNode'],_0x4841e2[_0x399b10('0x806')]);_0x3331d2&&_0x1b1f38&&_0x14c54d(_0x4284b6,function(){var _0x16b4f7=_0x399b10;_0x1fb018(_0x4284b6[_0x16b4f7('0xf37')],_0xb97fcb(_0x3331d2,_0x1b1f38),_0x463688),(_0x3331d2[_0x16b4f7('0x1077')]||_0x1b1f38[_0x16b4f7('0x1077')])&&(_0x4284b6[_0x16b4f7('0x10e6')][_0x16b4f7('0xbcc')]=!0x0);});}}},_0x3a21c6[_0x255d35('0x98c')][_0x255d35('0xd60')]=function(){var _0x460305=_0x255d35;null!=this[_0x460305('0x1103')]&&(clearTimeout(this[_0x460305('0x1103')]),this['readDOMTimeout']=null);var _0x2d6480,_0x2d4863,_0x22edea,_0x18bcec=this['cm'],_0x362af7=_0x18bcec[_0x460305('0x55c')],_0x551fd3=_0x18bcec[_0x460305('0xf37')][_0x460305('0x10f6')]['primary'](),_0x1f3109=_0x551fd3[_0x460305('0x9d7')](),_0x3b9fbe=_0x551fd3['to']();if(0x0==_0x1f3109['ch']&&_0x1f3109[_0x460305('0xde2')]>_0x18bcec[_0x460305('0x11bd')]()&&(_0x1f3109=_0xf7c6fb(_0x1f3109['line']-0x1,_0x1b58dd(_0x18bcec[_0x460305('0xf37')],_0x1f3109[_0x460305('0xde2')]-0x1)[_0x460305('0x525')])),_0x3b9fbe['ch']==_0x1b58dd(_0x18bcec[_0x460305('0xf37')],_0x3b9fbe['line'])[_0x460305('0x768')][_0x460305('0x525')]&&_0x3b9fbe[_0x460305('0xde2')]<_0x18bcec[_0x460305('0xbdf')]()&&(_0x3b9fbe=_0xf7c6fb(_0x3b9fbe[_0x460305('0xde2')]+0x1,0x0)),_0x1f3109[_0x460305('0xde2')]<_0x362af7[_0x460305('0xa36')]||_0x3b9fbe[_0x460305('0xde2')]>_0x362af7[_0x460305('0xf2f')]-0x1)return!0x1;_0x1f3109[_0x460305('0xde2')]==_0x362af7['viewFrom']||0x0==(_0x2d6480=_0x44435c(_0x18bcec,_0x1f3109[_0x460305('0xde2')]))?(_0x2d4863=_0x5ee38b(_0x362af7[_0x460305('0x1132')][0x0][_0x460305('0xde2')]),_0x22edea=_0x362af7[_0x460305('0x1132')][0x0][_0x460305('0x5f')]):(_0x2d4863=_0x5ee38b(_0x362af7[_0x460305('0x1132')][_0x2d6480][_0x460305('0xde2')]),_0x22edea=_0x362af7[_0x460305('0x1132')][_0x2d6480-0x1][_0x460305('0x5f')]['nextSibling']);var _0x12fe9a,_0x482063,_0x2567c0=_0x44435c(_0x18bcec,_0x3b9fbe['line']);if(_0x2567c0==_0x362af7[_0x460305('0x1132')][_0x460305('0x525')]-0x1?(_0x12fe9a=_0x362af7[_0x460305('0xf2f')]-0x1,_0x482063=_0x362af7[_0x460305('0x1147')]['lastChild']):(_0x12fe9a=_0x5ee38b(_0x362af7[_0x460305('0x1132')][_0x2567c0+0x1][_0x460305('0xde2')])-0x1,_0x482063=_0x362af7[_0x460305('0x1132')][_0x2567c0+0x1][_0x460305('0x5f')][_0x460305('0x1e3')]),!_0x22edea)return!0x1;for(var _0x66ed83=_0x18bcec['doc'][_0x460305('0xe83')](function(_0x12e321,_0x4f17c9,_0x5badfb,_0x1b1da5,_0xdd097e){var _0x30c966=_0x460305,_0x281c3c='',_0x332721=!0x1,_0x30e0fc=_0x12e321[_0x30c966('0xf37')]['lineSeparator'](),_0xb9fc53=!0x1;function _0xcd79d1(){_0x332721&&(_0x281c3c+=_0x30e0fc,_0xb9fc53&&(_0x281c3c+=_0x30e0fc),_0x332721=_0xb9fc53=!0x1);}function _0x4e3b2e(_0x490ee6){_0x490ee6&&(_0xcd79d1(),_0x281c3c+=_0x490ee6);}function _0x2794a0(_0x10e684){var _0x3043c5=_0x30c966;if(0x1==_0x10e684[_0x3043c5('0xa4b')]){var _0x626049=_0x10e684[_0x3043c5('0x1159')](_0x3043c5('0x2c5'));if(_0x626049)return void _0x4e3b2e(_0x626049);var _0x354e51,_0x2e93f8=_0x10e684[_0x3043c5('0x1159')]('cm-marker');if(_0x2e93f8){var _0x4d9b98=_0x12e321[_0x3043c5('0x814')](_0xf7c6fb(_0x1b1da5,0x0),_0xf7c6fb(_0xdd097e+0x1,0x0),(_0x3f30e5=+_0x2e93f8,function(_0x432d52){return _0x432d52['id']==_0x3f30e5;}));return void(_0x4d9b98['length']&&(_0x354e51=_0x4d9b98[0x0][_0x3043c5('0x6f3')](0x0))&&_0x4e3b2e(_0x1e2186(_0x12e321[_0x3043c5('0xf37')],_0x354e51[_0x3043c5('0x9d7')],_0x354e51['to'])[_0x3043c5('0x582')](_0x30e0fc)));}if(_0x3043c5('0xda3')==_0x10e684[_0x3043c5('0x1159')](_0x3043c5('0x567')))return;var _0x11842b=/^(pre|div|p|li|table|br)$/i[_0x3043c5('0xaac')](_0x10e684['nodeName']);if(!/^br$/i[_0x3043c5('0xaac')](_0x10e684[_0x3043c5('0xb72')])&&0x0==_0x10e684[_0x3043c5('0xe1')][_0x3043c5('0x525')])return;_0x11842b&&_0xcd79d1();for(var _0x211c68=0x0;_0x211c68<_0x10e684[_0x3043c5('0x4e6')][_0x3043c5('0x525')];_0x211c68++)_0x2794a0(_0x10e684[_0x3043c5('0x4e6')][_0x211c68]);/^(pre|p)$/i[_0x3043c5('0xaac')](_0x10e684[_0x3043c5('0xb72')])&&(_0xb9fc53=!0x0),_0x11842b&&(_0x332721=!0x0);}else 0x3==_0x10e684[_0x3043c5('0xa4b')]&&_0x4e3b2e(_0x10e684[_0x3043c5('0x49d')][_0x3043c5('0x166')](/\u200b/g,'')['replace'](/\u00a0/g,'\x20'));var _0x3f30e5;}for(;_0x2794a0(_0x4f17c9),_0x4f17c9!=_0x5badfb;)_0x4f17c9=_0x4f17c9[_0x30c966('0xd29')],_0xb9fc53=!0x1;return _0x281c3c;}(_0x18bcec,_0x22edea,_0x482063,_0x2d4863,_0x12fe9a)),_0x52b894=_0x1e2186(_0x18bcec[_0x460305('0xf37')],_0xf7c6fb(_0x2d4863,0x0),_0xf7c6fb(_0x12fe9a,_0x1b58dd(_0x18bcec['doc'],_0x12fe9a)[_0x460305('0x768')][_0x460305('0x525')]));_0x66ed83[_0x460305('0x525')]>0x1&&_0x52b894[_0x460305('0x525')]>0x1;)if(_0x15560b(_0x66ed83)==_0x15560b(_0x52b894))_0x66ed83['pop'](),_0x52b894[_0x460305('0x57f')](),_0x12fe9a--;else{if(_0x66ed83[0x0]!=_0x52b894[0x0])break;_0x66ed83['shift'](),_0x52b894[_0x460305('0x8be')](),_0x2d4863++;}for(var _0x1e3629=0x0,_0x2d70a6=0x0,_0xf0bb57=_0x66ed83[0x0],_0x164296=_0x52b894[0x0],_0x26f841=Math[_0x460305('0xc0d')](_0xf0bb57[_0x460305('0x525')],_0x164296[_0x460305('0x525')]);_0x1e3629<_0x26f841&&_0xf0bb57['charCodeAt'](_0x1e3629)==_0x164296['charCodeAt'](_0x1e3629);)++_0x1e3629;for(var _0x3ac3a8=_0x15560b(_0x66ed83),_0x3904a9=_0x15560b(_0x52b894),_0x373e61=Math['min'](_0x3ac3a8[_0x460305('0x525')]-(0x1==_0x66ed83[_0x460305('0x525')]?_0x1e3629:0x0),_0x3904a9[_0x460305('0x525')]-(0x1==_0x52b894[_0x460305('0x525')]?_0x1e3629:0x0));_0x2d70a6<_0x373e61&&_0x3ac3a8[_0x460305('0x59d')](_0x3ac3a8['length']-_0x2d70a6-0x1)==_0x3904a9[_0x460305('0x59d')](_0x3904a9[_0x460305('0x525')]-_0x2d70a6-0x1);)++_0x2d70a6;if(0x1==_0x66ed83['length']&&0x1==_0x52b894[_0x460305('0x525')]&&_0x2d4863==_0x1f3109[_0x460305('0xde2')])for(;_0x1e3629&&_0x1e3629>_0x1f3109['ch']&&_0x3ac3a8[_0x460305('0x59d')](_0x3ac3a8[_0x460305('0x525')]-_0x2d70a6-0x1)==_0x3904a9['charCodeAt'](_0x3904a9[_0x460305('0x525')]-_0x2d70a6-0x1);)_0x1e3629--,_0x2d70a6++;_0x66ed83[_0x66ed83[_0x460305('0x525')]-0x1]=_0x3ac3a8[_0x460305('0xbc0')](0x0,_0x3ac3a8[_0x460305('0x525')]-_0x2d70a6)['replace'](/^\u200b+/,''),_0x66ed83[0x0]=_0x66ed83[0x0][_0x460305('0xbc0')](_0x1e3629)[_0x460305('0x166')](/\u200b+$/,'');var _0x37fbce=_0xf7c6fb(_0x2d4863,_0x1e3629),_0x4f86da=_0xf7c6fb(_0x12fe9a,_0x52b894['length']?_0x15560b(_0x52b894)[_0x460305('0x525')]-_0x2d70a6:0x0);return _0x66ed83[_0x460305('0x525')]>0x1||_0x66ed83[0x0]||_0x42d525(_0x37fbce,_0x4f86da)?(_0x1e2405(_0x18bcec[_0x460305('0xf37')],_0x66ed83,_0x37fbce,_0x4f86da,_0x460305('0x42e')),!0x0):void 0x0;},_0x3a21c6['prototype'][_0x255d35('0x10e')]=function(){var _0x2a2615=_0x255d35;this[_0x2a2615('0xc27')]();},_0x3a21c6['prototype'][_0x255d35('0xff3')]=function(){this['forceCompositionEnd']();},_0x3a21c6[_0x255d35('0x98c')][_0x255d35('0xc27')]=function(){var _0x271f56=_0x255d35;this[_0x271f56('0x5e8')]&&(clearTimeout(this['readDOMTimeout']),this[_0x271f56('0x5e8')]=null,this[_0x271f56('0x8e1')](),this[_0x271f56('0x7fc')][_0x271f56('0x81c')](),this[_0x271f56('0x7fc')][_0x271f56('0x74b')]());},_0x3a21c6[_0x255d35('0x98c')][_0x255d35('0x971')]=function(){var _0x51483c=_0x255d35,_0x254fd0=this;null==this[_0x51483c('0x1103')]&&(this[_0x51483c('0x1103')]=setTimeout(function(){var _0x2a4e23=_0x51483c;if(_0x254fd0[_0x2a4e23('0x1103')]=null,_0x254fd0[_0x2a4e23('0x5e8')]){if(!_0x254fd0[_0x2a4e23('0x5e8')][_0x2a4e23('0x10cf')])return;_0x254fd0[_0x2a4e23('0x5e8')]=null;}_0x254fd0[_0x2a4e23('0x8e1')]();},0x50));},_0x3a21c6['prototype'][_0x255d35('0x8e1')]=function(){var _0x3d75a5=_0x255d35,_0x18305f=this;!this['cm'][_0x3d75a5('0xed4')]()&&this[_0x3d75a5('0xd60')]()||_0x14c54d(this['cm'],function(){return _0x18ce28(_0x18305f['cm']);});},_0x3a21c6[_0x255d35('0x98c')][_0x255d35('0x4de')]=function(_0x28706d){var _0x13c787=_0x255d35;_0x28706d[_0x13c787('0xeb6')]=_0x13c787('0xda3');},_0x3a21c6[_0x255d35('0x98c')][_0x255d35('0x27b')]=function(_0x44567a){var _0x550bee=_0x255d35;0x0==_0x44567a[_0x550bee('0x1b5')]||this['composing']||(_0x44567a[_0x550bee('0xb65')](),this['cm'][_0x550bee('0xed4')]()||_0x2dfb55(this['cm'],_0x4f6210)(this['cm'],String[_0x550bee('0x251')](null==_0x44567a['charCode']?_0x44567a[_0x550bee('0xc7c')]:_0x44567a[_0x550bee('0x1b5')]),0x0));},_0x3a21c6[_0x255d35('0x98c')]['readOnlyChanged']=function(_0x4442ad){var _0x49fe41=_0x255d35;this[_0x49fe41('0x7fc')][_0x49fe41('0xeb6')]=String(_0x49fe41('0xb44')!=_0x4442ad);},_0x3a21c6[_0x255d35('0x98c')][_0x255d35('0x1fd')]=function(){},_0x3a21c6[_0x255d35('0x98c')][_0x255d35('0x1f3')]=function(){},_0x3a21c6[_0x255d35('0x98c')][_0x255d35('0x470')]=!0x0;var _0x5a02c0=function(_0x4bf144){var _0x2e985c=_0x255d35;this['cm']=_0x4bf144,this[_0x2e985c('0x4a1')]='',this[_0x2e985c('0x1007')]=!0x1,this['polling']=new _0x1d1618(),this[_0x2e985c('0x1c8')]=!0x1,this[_0x2e985c('0x5e8')]=null;};_0x5a02c0['prototype'][_0x255d35('0x2ae')]=function(_0x25cc4d){var _0x50dd65=_0x255d35,_0xb5adb7=this,_0x7d407=this,_0x104577=this['cm'];this[_0x50dd65('0x10f7')](_0x25cc4d);var _0x56fddd=this[_0x50dd65('0xa2e')];function _0x143d29(_0x4efc1c){var _0x1002fa=_0x50dd65;if(!_0x108070(_0x104577,_0x4efc1c)){if(_0x104577['somethingSelected']())_0x598e30({'lineWise':!0x1,'text':_0x104577[_0x1002fa('0xc47')]()});else{if(!_0x104577['options'][_0x1002fa('0x4cb')])return;var _0x331cdb=_0x373fb1(_0x104577);_0x598e30({'lineWise':!0x0,'text':_0x331cdb[_0x1002fa('0x768')]}),_0x1002fa('0x655')==_0x4efc1c[_0x1002fa('0x3f7')]?_0x104577[_0x1002fa('0xd02')](_0x331cdb['ranges'],null,_0x463688):(_0x7d407[_0x1002fa('0x4a1')]='',_0x56fddd[_0x1002fa('0x832')]=_0x331cdb[_0x1002fa('0x768')][_0x1002fa('0x582')]('\x0a'),_0x8eca30(_0x56fddd));}'cut'==_0x4efc1c[_0x1002fa('0x3f7')]&&(_0x104577[_0x1002fa('0xfff')][_0x1002fa('0xfd0')]=+new Date());}}_0x25cc4d[_0x50dd65('0x701')][_0x50dd65('0x692')](this[_0x50dd65('0x701')],_0x25cc4d[_0x50dd65('0x701')]['firstChild']),_0x47afbe&&(_0x56fddd[_0x50dd65('0x1cd')][_0x50dd65('0xa7b')]=_0x50dd65('0x57d')),_0x407bf3(_0x56fddd,_0x50dd65('0x20c'),function(){var _0x3597bc=_0x50dd65;_0x5d31d6&&_0x5275d9>=0x9&&_0xb5adb7['hasSelection']&&(_0xb5adb7[_0x3597bc('0x1c8')]=null),_0x7d407[_0x3597bc('0x4f2')]();}),_0x407bf3(_0x56fddd,_0x50dd65('0xcf7'),function(_0xe8cde2){var _0xf64482=_0x50dd65;_0x108070(_0x104577,_0xe8cde2)||_0x357cb3(_0xe8cde2,_0x104577)||(_0x104577[_0xf64482('0xfff')]['pasteIncoming']=+new Date(),_0x7d407[_0xf64482('0x16')]());}),_0x407bf3(_0x56fddd,_0x50dd65('0x655'),_0x143d29),_0x407bf3(_0x56fddd,_0x50dd65('0xeaa'),_0x143d29),_0x407bf3(_0x25cc4d[_0x50dd65('0x819')],_0x50dd65('0xcf7'),function(_0x11a2ce){var _0xeabf65=_0x50dd65;if(!_0x10b106(_0x25cc4d,_0x11a2ce)&&!_0x108070(_0x104577,_0x11a2ce)){if(!_0x56fddd[_0xeabf65('0xfa3')])return _0x104577[_0xeabf65('0xfff')][_0xeabf65('0x101a')]=+new Date(),void _0x7d407[_0xeabf65('0x74b')]();var _0x3bdd49=new Event(_0xeabf65('0xcf7'));_0x3bdd49[_0xeabf65('0x261')]=_0x11a2ce[_0xeabf65('0x261')],_0x56fddd[_0xeabf65('0xfa3')](_0x3bdd49);}}),_0x407bf3(_0x25cc4d['lineSpace'],_0x50dd65('0xfbd'),function(_0x118570){_0x10b106(_0x25cc4d,_0x118570)||_0x12a3b5(_0x118570);}),_0x407bf3(_0x56fddd,_0x50dd65('0xf96'),function(){var _0x4afc22=_0x50dd65,_0x5579ca=_0x104577['getCursor']('from');_0x7d407[_0x4afc22('0x5e8')]&&_0x7d407[_0x4afc22('0x5e8')][_0x4afc22('0x2f5')]['clear'](),_0x7d407[_0x4afc22('0x5e8')]={'start':_0x5579ca,'range':_0x104577[_0x4afc22('0x5')](_0x5579ca,_0x104577['getCursor']('to'),{'className':'CodeMirror-composing'})};}),_0x407bf3(_0x56fddd,_0x50dd65('0xacb'),function(){var _0x49bfaa=_0x50dd65;_0x7d407[_0x49bfaa('0x5e8')]&&(_0x7d407[_0x49bfaa('0x4f2')](),_0x7d407[_0x49bfaa('0x5e8')][_0x49bfaa('0x2f5')]['clear'](),_0x7d407[_0x49bfaa('0x5e8')]=null);});},_0x5a02c0[_0x255d35('0x98c')][_0x255d35('0x10f7')]=function(_0x69395){var _0x33516a=_0x255d35;this[_0x33516a('0x701')]=_0x50197a(),this[_0x33516a('0xa2e')]=this[_0x33516a('0x701')][_0x33516a('0xdfb')];},_0x5a02c0[_0x255d35('0x98c')]['screenReaderLabelChanged']=function(_0x2e214d){var _0x4ea8ad=_0x255d35;_0x2e214d?this[_0x4ea8ad('0xa2e')][_0x4ea8ad('0xfdc')]('aria-label',_0x2e214d):this[_0x4ea8ad('0xa2e')][_0x4ea8ad('0xc7f')](_0x4ea8ad('0xd90'));},_0x5a02c0[_0x255d35('0x98c')][_0x255d35('0x930')]=function(){var _0x7095e4=_0x255d35,_0x24469c=this['cm'],_0x413dad=_0x24469c[_0x7095e4('0x55c')],_0x352083=_0x24469c[_0x7095e4('0xf37')],_0x5b232e=_0x1683c4(_0x24469c);if(_0x24469c[_0x7095e4('0x631')]['moveInputWithCursor']){var _0x5d18a6=_0x5dfa83(_0x24469c,_0x352083[_0x7095e4('0x10f6')][_0x7095e4('0x712')]()[_0x7095e4('0x5d4')],_0x7095e4('0x7fc')),_0x5628a7=_0x413dad['wrapper'][_0x7095e4('0xe75')](),_0x594379=_0x413dad[_0x7095e4('0x1147')][_0x7095e4('0xe75')]();_0x5b232e[_0x7095e4('0x34a')]=Math[_0x7095e4('0xf65')](0x0,Math[_0x7095e4('0xc0d')](_0x413dad[_0x7095e4('0x701')]['clientHeight']-0xa,_0x5d18a6[_0x7095e4('0x62d')]+_0x594379[_0x7095e4('0x62d')]-_0x5628a7[_0x7095e4('0x62d')])),_0x5b232e[_0x7095e4('0x119b')]=Math['max'](0x0,Math[_0x7095e4('0xc0d')](_0x413dad[_0x7095e4('0x701')][_0x7095e4('0x71a')]-0xa,_0x5d18a6[_0x7095e4('0xbab')]+_0x594379['left']-_0x5628a7[_0x7095e4('0xbab')]));}return _0x5b232e;},_0x5a02c0['prototype']['showSelection']=function(_0x183b80){var _0x29204f=_0x255d35,_0x519b5d=this['cm'][_0x29204f('0x55c')];_0x171d74(_0x519b5d[_0x29204f('0xb4f')],_0x183b80[_0x29204f('0x114d')]),_0x171d74(_0x519b5d[_0x29204f('0x2d7')],_0x183b80[_0x29204f('0x4a6')]),null!=_0x183b80[_0x29204f('0x34a')]&&(this[_0x29204f('0x701')][_0x29204f('0x1cd')][_0x29204f('0x62d')]=_0x183b80[_0x29204f('0x34a')]+'px',this[_0x29204f('0x701')][_0x29204f('0x1cd')][_0x29204f('0xbab')]=_0x183b80[_0x29204f('0x119b')]+'px');},_0x5a02c0[_0x255d35('0x98c')]['reset']=function(_0x11a3c1){var _0x3d022b=_0x255d35;if(!this[_0x3d022b('0xe1a')]&&!this[_0x3d022b('0x5e8')]){var _0x2eb1c5=this['cm'];if(_0x2eb1c5[_0x3d022b('0xdea')]()){this[_0x3d022b('0x4a1')]='';var _0x22b632=_0x2eb1c5[_0x3d022b('0x5b7')]();this[_0x3d022b('0xa2e')][_0x3d022b('0x832')]=_0x22b632,_0x2eb1c5[_0x3d022b('0xfff')][_0x3d022b('0x19f')]&&_0x8eca30(this[_0x3d022b('0xa2e')]),_0x5d31d6&&_0x5275d9>=0x9&&(this[_0x3d022b('0x1c8')]=_0x22b632);}else _0x11a3c1||(this[_0x3d022b('0x4a1')]=this['textarea'][_0x3d022b('0x832')]='',_0x5d31d6&&_0x5275d9>=0x9&&(this[_0x3d022b('0x1c8')]=null));}},_0x5a02c0[_0x255d35('0x98c')][_0x255d35('0xab6')]=function(){var _0x2ffe20=_0x255d35;return this[_0x2ffe20('0xa2e')];},_0x5a02c0['prototype'][_0x255d35('0xdb4')]=function(){return!0x1;},_0x5a02c0[_0x255d35('0x98c')][_0x255d35('0x74b')]=function(){var _0x2c8d89=_0x255d35;if(_0x2c8d89('0xb44')!=this['cm'][_0x2c8d89('0x631')][_0x2c8d89('0x1069')]&&(!_0x53e5ce||_0x3d661d()!=this[_0x2c8d89('0xa2e')]))try{this[_0x2c8d89('0xa2e')][_0x2c8d89('0x74b')]();}catch(_0x47fbc5){}},_0x5a02c0[_0x255d35('0x98c')][_0x255d35('0x81c')]=function(){var _0x107248=_0x255d35;this[_0x107248('0xa2e')]['blur']();},_0x5a02c0[_0x255d35('0x98c')][_0x255d35('0x1f3')]=function(){var _0x3bc4c6=_0x255d35;this[_0x3bc4c6('0x701')][_0x3bc4c6('0x1cd')][_0x3bc4c6('0x62d')]=this[_0x3bc4c6('0x701')][_0x3bc4c6('0x1cd')][_0x3bc4c6('0xbab')]=0x0;},_0x5a02c0[_0x255d35('0x98c')]['receivedFocus']=function(){var _0x4978a8=_0x255d35;this[_0x4978a8('0x45b')]();},_0x5a02c0[_0x255d35('0x98c')][_0x255d35('0x45b')]=function(){var _0x587e2d=_0x255d35,_0x2a9d70=this;this['pollingFast']||this[_0x587e2d('0x10c9')][_0x587e2d('0x11ce')](this['cm'][_0x587e2d('0x631')][_0x587e2d('0x1d1')],function(){var _0x44c2e3=_0x587e2d;_0x2a9d70[_0x44c2e3('0x4f2')](),_0x2a9d70['cm'][_0x44c2e3('0xfff')][_0x44c2e3('0x19f')]&&_0x2a9d70[_0x44c2e3('0x45b')]();});},_0x5a02c0['prototype'][_0x255d35('0x16')]=function(){var _0x41e817=_0x255d35,_0x507c18=!0x1,_0x35f381=this;_0x35f381[_0x41e817('0x1007')]=!0x0,_0x35f381[_0x41e817('0x10c9')][_0x41e817('0x11ce')](0x14,function _0x3b1949(){var _0x4e8a45=_0x41e817;_0x35f381[_0x4e8a45('0x4f2')]()||_0x507c18?(_0x35f381['pollingFast']=!0x1,_0x35f381[_0x4e8a45('0x45b')]()):(_0x507c18=!0x0,_0x35f381['polling'][_0x4e8a45('0x11ce')](0x3c,_0x3b1949));});},_0x5a02c0[_0x255d35('0x98c')][_0x255d35('0x4f2')]=function(){var _0x30813d=_0x255d35,_0x4e1903=this,_0x5b2720=this['cm'],_0x50cae9=this[_0x30813d('0xa2e')],_0x4f0e96=this[_0x30813d('0x4a1')];if(this[_0x30813d('0xe1a')]||!_0x5b2720[_0x30813d('0xfff')][_0x30813d('0x19f')]||_0x489cf7(_0x50cae9)&&!_0x4f0e96&&!this[_0x30813d('0x5e8')]||_0x5b2720[_0x30813d('0xed4')]()||_0x5b2720[_0x30813d('0x631')]['disableInput']||_0x5b2720[_0x30813d('0xfff')][_0x30813d('0xafe')])return!0x1;var _0x43a08d=_0x50cae9[_0x30813d('0x832')];if(_0x43a08d==_0x4f0e96&&!_0x5b2720[_0x30813d('0xdea')]())return!0x1;if(_0x5d31d6&&_0x5275d9>=0x9&&this[_0x30813d('0x1c8')]===_0x43a08d||_0x2841f0&&/[\uf700-\uf7ff]/[_0x30813d('0xaac')](_0x43a08d))return _0x5b2720[_0x30813d('0x55c')][_0x30813d('0x20c')][_0x30813d('0xff3')](),!0x1;if(_0x5b2720[_0x30813d('0xf37')][_0x30813d('0x10f6')]==_0x5b2720[_0x30813d('0x55c')][_0x30813d('0x170')]){var _0x494f8f=_0x43a08d[_0x30813d('0x59d')](0x0);if(0x200b!=_0x494f8f||_0x4f0e96||(_0x4f0e96='​'),0x21da==_0x494f8f)return this[_0x30813d('0xff3')](),this['cm'][_0x30813d('0x69f')](_0x30813d('0x932'));}for(var _0x586fca=0x0,_0x27163d=Math[_0x30813d('0xc0d')](_0x4f0e96[_0x30813d('0x525')],_0x43a08d[_0x30813d('0x525')]);_0x586fca<_0x27163d&&_0x4f0e96[_0x30813d('0x59d')](_0x586fca)==_0x43a08d['charCodeAt'](_0x586fca);)++_0x586fca;return _0x14c54d(_0x5b2720,function(){var _0x562173=_0x30813d;_0x4f6210(_0x5b2720,_0x43a08d[_0x562173('0xbc0')](_0x586fca),_0x4f0e96[_0x562173('0x525')]-_0x586fca,null,_0x4e1903['composing']?_0x562173('0x40f'):null),_0x43a08d[_0x562173('0x525')]>0x3e8||_0x43a08d[_0x562173('0x4dc')]('\x0a')>-0x1?_0x50cae9['value']=_0x4e1903[_0x562173('0x4a1')]='':_0x4e1903['prevInput']=_0x43a08d,_0x4e1903[_0x562173('0x5e8')]&&(_0x4e1903[_0x562173('0x5e8')][_0x562173('0x2f5')][_0x562173('0xedd')](),_0x4e1903['composing'][_0x562173('0x2f5')]=_0x5b2720[_0x562173('0x5')](_0x4e1903[_0x562173('0x5e8')][_0x562173('0x1045')],_0x5b2720[_0x562173('0xd42')]('to'),{'className':_0x562173('0x10f9')}));}),!0x0;},_0x5a02c0[_0x255d35('0x98c')][_0x255d35('0x10e')]=function(){var _0x548405=_0x255d35;this[_0x548405('0x1007')]&&this[_0x548405('0x4f2')]()&&(this['pollingFast']=!0x1);},_0x5a02c0['prototype']['onKeyPress']=function(){var _0x393517=_0x255d35;_0x5d31d6&&_0x5275d9>=0x9&&(this[_0x393517('0x1c8')]=null),this[_0x393517('0x16')]();},_0x5a02c0[_0x255d35('0x98c')][_0x255d35('0x1fd')]=function(_0x16622c){var _0x58245c=_0x255d35,_0x213a7a=this,_0x2bc6bf=_0x213a7a['cm'],_0x551b8b=_0x2bc6bf['display'],_0x4747de=_0x213a7a[_0x58245c('0xa2e')];_0x213a7a[_0x58245c('0xe1a')]&&_0x213a7a[_0x58245c('0xe1a')]();var _0x4bd523=_0x123e5c(_0x2bc6bf,_0x16622c),_0x3c7b51=_0x551b8b[_0x58245c('0x819')]['scrollTop'];if(_0x4bd523&&!_0x58a491){_0x2bc6bf['options'][_0x58245c('0x505')]&&-0x1==_0x2bc6bf[_0x58245c('0xf37')][_0x58245c('0x10f6')][_0x58245c('0x87d')](_0x4bd523)&&_0x2dfb55(_0x2bc6bf,_0x1fb018)(_0x2bc6bf[_0x58245c('0xf37')],_0xb97fcb(_0x4bd523),_0x463688);var _0x5d8af1,_0x172452=_0x4747de[_0x58245c('0x1cd')][_0x58245c('0x77d')],_0x3313cb=_0x213a7a[_0x58245c('0x701')]['style']['cssText'],_0x598233=_0x213a7a[_0x58245c('0x701')][_0x58245c('0x19')][_0x58245c('0xe75')]();if(_0x213a7a[_0x58245c('0x701')][_0x58245c('0x1cd')][_0x58245c('0x77d')]=_0x58245c('0x64f'),_0x4747de[_0x58245c('0x1cd')]['cssText']=_0x58245c('0x574')+(_0x16622c[_0x58245c('0xd50')]-_0x598233[_0x58245c('0x62d')]-0x5)+_0x58245c('0x3c9')+(_0x16622c[_0x58245c('0x7ef')]-_0x598233[_0x58245c('0xbab')]-0x5)+_0x58245c('0x6f0')+(_0x5d31d6?'rgba(255,\x20255,\x20255,\x20.05)':_0x58245c('0xdf6'))+_0x58245c('0xefc'),_0x153ccc&&(_0x5d8af1=window[_0x58245c('0xda1')]),_0x551b8b[_0x58245c('0x20c')]['focus'](),_0x153ccc&&window[_0x58245c('0x3c2')](null,_0x5d8af1),_0x551b8b[_0x58245c('0x20c')][_0x58245c('0xff3')](),_0x2bc6bf[_0x58245c('0xdea')]()||(_0x4747de['value']=_0x213a7a[_0x58245c('0x4a1')]='\x20'),_0x213a7a[_0x58245c('0xe1a')]=_0x1d4db9,_0x551b8b[_0x58245c('0x170')]=_0x2bc6bf[_0x58245c('0xf37')][_0x58245c('0x10f6')],clearTimeout(_0x551b8b[_0x58245c('0x1d3')]),_0x5d31d6&&_0x5275d9>=0x9&&_0x360c9c(),_0x5028e8){_0x387a99(_0x16622c);var _0x5312c6=function(){_0x4496a7(window,'mouseup',_0x5312c6),setTimeout(_0x1d4db9,0x14);};_0x407bf3(window,_0x58245c('0xd66'),_0x5312c6);}else setTimeout(_0x1d4db9,0x32);}function _0x360c9c(){var _0x22a072=_0x58245c;if(null!=_0x4747de[_0x22a072('0x2e2')]){var _0x2ce446=_0x2bc6bf[_0x22a072('0xdea')](),_0x37cd99='​'+(_0x2ce446?_0x4747de['value']:'');_0x4747de['value']='⇚',_0x4747de[_0x22a072('0x832')]=_0x37cd99,_0x213a7a[_0x22a072('0x4a1')]=_0x2ce446?'':'​',_0x4747de['selectionStart']=0x1,_0x4747de[_0x22a072('0x1167')]=_0x37cd99[_0x22a072('0x525')],_0x551b8b[_0x22a072('0x170')]=_0x2bc6bf[_0x22a072('0xf37')][_0x22a072('0x10f6')];}}function _0x1d4db9(){var _0x1dfe62=_0x58245c;if(_0x213a7a['contextMenuPending']==_0x1d4db9&&(_0x213a7a[_0x1dfe62('0xe1a')]=!0x1,_0x213a7a[_0x1dfe62('0x701')][_0x1dfe62('0x1cd')]['cssText']=_0x3313cb,_0x4747de[_0x1dfe62('0x1cd')][_0x1dfe62('0x77d')]=_0x172452,_0x5d31d6&&_0x5275d9<0x9&&_0x551b8b[_0x1dfe62('0xab0')][_0x1dfe62('0x1bc')](_0x551b8b[_0x1dfe62('0x819')]['scrollTop']=_0x3c7b51),null!=_0x4747de[_0x1dfe62('0x2e2')])){(!_0x5d31d6||_0x5d31d6&&_0x5275d9<0x9)&&_0x360c9c();var _0xea5576=0x0,_0x340580=function(){var _0x48aecb=_0x1dfe62;_0x551b8b[_0x48aecb('0x170')]==_0x2bc6bf[_0x48aecb('0xf37')][_0x48aecb('0x10f6')]&&0x0==_0x4747de[_0x48aecb('0x2e2')]&&_0x4747de[_0x48aecb('0x1167')]>0x0&&'​'==_0x213a7a[_0x48aecb('0x4a1')]?_0x2dfb55(_0x2bc6bf,_0x897e5c)(_0x2bc6bf):_0xea5576++<0xa?_0x551b8b['detectingSelectAll']=setTimeout(_0x340580,0x1f4):(_0x551b8b[_0x48aecb('0x170')]=null,_0x551b8b[_0x48aecb('0x20c')]['reset']());};_0x551b8b[_0x1dfe62('0x1d3')]=setTimeout(_0x340580,0xc8);}}},_0x5a02c0[_0x255d35('0x98c')]['readOnlyChanged']=function(_0x7a7331){var _0x167b89=_0x255d35;_0x7a7331||this[_0x167b89('0xff3')](),this[_0x167b89('0xa2e')]['disabled']='nocursor'==_0x7a7331,this[_0x167b89('0xa2e')][_0x167b89('0x1069')]=!!_0x7a7331;},_0x5a02c0[_0x255d35('0x98c')]['setUneditable']=function(){},_0x5a02c0[_0x255d35('0x98c')][_0x255d35('0x470')]=!0x1,function(_0x242607){var _0x1891fc=_0x255d35,_0x1e934f=_0x242607[_0x1891fc('0x17b')];function _0x416147(_0x40e9f2,_0x2da796,_0x1e5039,_0x8d5959){var _0x1a8b46=_0x1891fc;_0x242607[_0x1a8b46('0x8c0')][_0x40e9f2]=_0x2da796,_0x1e5039&&(_0x1e934f[_0x40e9f2]=_0x8d5959?function(_0x5d080f,_0x2e63d9,_0x273a44){_0x273a44!=_0x3b32d5&&_0x1e5039(_0x5d080f,_0x2e63d9,_0x273a44);}:_0x1e5039);}_0x242607[_0x1891fc('0x5a8')]=_0x416147,_0x242607['Init']=_0x3b32d5,_0x416147('value','',function(_0x51b425,_0x30cc06){var _0x131996=_0x1891fc;return _0x51b425[_0x131996('0x11e9')](_0x30cc06);},!0x0),_0x416147(_0x1891fc('0x575'),null,function(_0x3c741a,_0x4210f7){var _0x18f88f=_0x1891fc;_0x3c741a[_0x18f88f('0xf37')][_0x18f88f('0x5fe')]=_0x4210f7,_0x363fab(_0x3c741a);},!0x0),_0x416147('indentUnit',0x2,_0x363fab,!0x0),_0x416147(_0x1891fc('0x38'),!0x1),_0x416147(_0x1891fc('0x35c'),!0x0),_0x416147(_0x1891fc('0x772'),0x4,function(_0x4a45d1){_0x2f071a(_0x4a45d1),_0xe4e52d(_0x4a45d1),_0x18ce28(_0x4a45d1);},!0x0),_0x416147(_0x1891fc('0x7d7'),null,function(_0x2dcdc9,_0x3ca6ed){var _0x457a22=_0x1891fc;if(_0x2dcdc9[_0x457a22('0xf37')][_0x457a22('0x484')]=_0x3ca6ed,_0x3ca6ed){var _0x48393a=[],_0x2fb4ab=_0x2dcdc9[_0x457a22('0xf37')][_0x457a22('0xe3c')];_0x2dcdc9['doc'][_0x457a22('0x160')](function(_0xbad818){var _0x3b3845=_0x457a22;for(var _0x2340b2=0x0;;){var _0x5370c7=_0xbad818['text'][_0x3b3845('0x4dc')](_0x3ca6ed,_0x2340b2);if(-0x1==_0x5370c7)break;_0x2340b2=_0x5370c7+_0x3ca6ed[_0x3b3845('0x525')],_0x48393a[_0x3b3845('0x8f8')](_0xf7c6fb(_0x2fb4ab,_0x5370c7));}_0x2fb4ab++;});for(var _0x58882f=_0x48393a[_0x457a22('0x525')]-0x1;_0x58882f>=0x0;_0x58882f--)_0x1e2405(_0x2dcdc9['doc'],_0x3ca6ed,_0x48393a[_0x58882f],_0xf7c6fb(_0x48393a[_0x58882f][_0x457a22('0xde2')],_0x48393a[_0x58882f]['ch']+_0x3ca6ed[_0x457a22('0x525')]));}}),_0x416147(_0x1891fc('0x508'),/[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b-\u200c\u200e\u200f\u2028\u2029\ufeff\ufff9-\ufffc]/g,function(_0x42273a,_0x1cf4f1,_0x106635){var _0x410275=_0x1891fc;_0x42273a[_0x410275('0xfff')][_0x410275('0x508')]=new RegExp(_0x1cf4f1[_0x410275('0x4fe')]+(_0x1cf4f1[_0x410275('0xaac')]('\x09')?'':'|\x09'),'g'),_0x106635!=_0x3b32d5&&_0x42273a[_0x410275('0x51e')]();}),_0x416147(_0x1891fc('0xaa3'),_0x54030a,function(_0x372bd9){return _0x372bd9['refresh']();},!0x0),_0x416147('electricChars',!0x0),_0x416147(_0x1891fc('0xbe4'),_0x53e5ce?_0x1891fc('0x567'):_0x1891fc('0xa2e'),function(){var _0x484c36=_0x1891fc;throw new Error(_0x484c36('0x112b'));},!0x0),_0x416147(_0x1891fc('0x8d1'),!0x1,function(_0x23fd90,_0x508df2){var _0x1222b9=_0x1891fc;return _0x23fd90[_0x1222b9('0xa07')]()[_0x1222b9('0x8d1')]=_0x508df2;},!0x0),_0x416147('autocorrect',!0x1,function(_0x49e610,_0x5bca75){var _0x10c38a=_0x1891fc;return _0x49e610[_0x10c38a('0xa07')]()[_0x10c38a('0x866')]=_0x5bca75;},!0x0),_0x416147(_0x1891fc('0x8b4'),!0x1,function(_0x508bcc,_0x4d2821){var _0x5bb967=_0x1891fc;return _0x508bcc['getInputField']()[_0x5bb967('0x8b4')]=_0x4d2821;},!0x0),_0x416147(_0x1891fc('0x87'),!_0x118689),_0x416147(_0x1891fc('0x3c1'),!0x0),_0x416147(_0x1891fc('0x2a9'),_0x1891fc('0x544'),function(_0x279d44){_0x21dcec(_0x279d44),_0x4bfcd4(_0x279d44);},!0x0),_0x416147(_0x1891fc('0x9a2'),_0x1891fc('0x544'),function(_0x1ab2cc,_0x4841e4,_0xc256d9){var _0x1a505f=_0x1891fc,_0x53f71a=_0x3c836d(_0x4841e4),_0x34f3a0=_0xc256d9!=_0x3b32d5&&_0x3c836d(_0xc256d9);_0x34f3a0&&_0x34f3a0['detach']&&_0x34f3a0[_0x1a505f('0xae4')](_0x1ab2cc,_0x53f71a),_0x53f71a['attach']&&_0x53f71a[_0x1a505f('0xc23')](_0x1ab2cc,_0x34f3a0||null);}),_0x416147(_0x1891fc('0x8b1'),null),_0x416147(_0x1891fc('0x6bb'),null),_0x416147(_0x1891fc('0x5a9'),!0x1,_0x1d5496,!0x0),_0x416147(_0x1891fc('0x3f'),[],function(_0x245556,_0x25bfa0){var _0x2bf5f1=_0x1891fc;_0x245556['display'][_0x2bf5f1('0x1098')]=_0x5685f9(_0x25bfa0,_0x245556[_0x2bf5f1('0x631')][_0x2bf5f1('0x1d')]),_0x4bfcd4(_0x245556);},!0x0),_0x416147(_0x1891fc('0xe1f'),!0x0,function(_0x149454,_0x555005){var _0x14e5e2=_0x1891fc;_0x149454[_0x14e5e2('0x55c')][_0x14e5e2('0x3f')][_0x14e5e2('0x1cd')][_0x14e5e2('0xbab')]=_0x555005?_0x6c9063(_0x149454['display'])+'px':'0',_0x149454['refresh']();},!0x0),_0x416147(_0x1891fc('0xa5'),!0x1,function(_0x1dbee4){return _0x41bd9e(_0x1dbee4);},!0x0),_0x416147(_0x1891fc('0x11dd'),_0x1891fc('0x10ae'),function(_0x2dc5e5){var _0x34def9=_0x1891fc;_0x281d6b(_0x2dc5e5),_0x41bd9e(_0x2dc5e5),_0x2dc5e5[_0x34def9('0x55c')][_0x34def9('0xab0')][_0x34def9('0x1bc')](_0x2dc5e5[_0x34def9('0xf37')][_0x34def9('0xfa1')]),_0x2dc5e5[_0x34def9('0x55c')][_0x34def9('0xab0')]['setScrollLeft'](_0x2dc5e5[_0x34def9('0xf37')][_0x34def9('0x4ba')]);},!0x0),_0x416147(_0x1891fc('0x1d'),!0x1,function(_0x22d19d,_0x253de1){var _0x59ecff=_0x1891fc;_0x22d19d['display'][_0x59ecff('0x1098')]=_0x5685f9(_0x22d19d['options']['gutters'],_0x253de1),_0x4bfcd4(_0x22d19d);},!0x0),_0x416147('firstLineNumber',0x1,_0x4bfcd4,!0x0),_0x416147(_0x1891fc('0x6de'),function(_0x134bb6){return _0x134bb6;},_0x4bfcd4,!0x0),_0x416147(_0x1891fc('0xbf7'),!0x1,_0x377b46,!0x0),_0x416147(_0x1891fc('0x505'),!0x0),_0x416147('lineWiseCopyCut',!0x0),_0x416147(_0x1891fc('0xecf'),!0x0),_0x416147('selectionsMayTouch',!0x1),_0x416147(_0x1891fc('0x1069'),!0x1,function(_0x37b882,_0x33a545){var _0xa3866=_0x1891fc;_0xa3866('0xb44')==_0x33a545&&(_0x8158a7(_0x37b882),_0x37b882[_0xa3866('0x55c')][_0xa3866('0x20c')]['blur']()),_0x37b882['display'][_0xa3866('0x20c')][_0xa3866('0xe0a')](_0x33a545);}),_0x416147('screenReaderLabel',null,function(_0x1977a1,_0x173152){var _0x12e50d=_0x1891fc;_0x173152=''===_0x173152?null:_0x173152,_0x1977a1[_0x12e50d('0x55c')][_0x12e50d('0x20c')][_0x12e50d('0x11d7')](_0x173152);}),_0x416147('disableInput',!0x1,function(_0xa2a719,_0xd68ceb){var _0x35cb8c=_0x1891fc;_0xd68ceb||_0xa2a719[_0x35cb8c('0x55c')]['input'][_0x35cb8c('0xff3')]();},!0x0),_0x416147(_0x1891fc('0x7ab'),!0x0,_0x8e0c64),_0x416147('allowDropFileTypes',null),_0x416147(_0x1891fc('0x85e'),0x212),_0x416147(_0x1891fc('0x593'),0x0),_0x416147(_0x1891fc('0xe41'),0x1,_0x377b46,!0x0),_0x416147(_0x1891fc('0x10e3'),!0x0,_0x377b46,!0x0),_0x416147(_0x1891fc('0x1050'),0x64),_0x416147(_0x1891fc('0x20b'),0x64),_0x416147(_0x1891fc('0xe05'),!0x0,_0x2f071a,!0x0),_0x416147('addModeClass',!0x1,_0x2f071a,!0x0),_0x416147('pollInterval',0x64),_0x416147(_0x1891fc('0xd2a'),0xc8,function(_0x5e6754,_0xaeb328){var _0x3639f7=_0x1891fc;return _0x5e6754['doc']['history'][_0x3639f7('0xd2a')]=_0xaeb328;}),_0x416147('historyEventDelay',0x4e2),_0x416147(_0x1891fc('0x5b5'),0xa,function(_0x8e9de9){var _0x4be308=_0x1891fc;return _0x8e9de9[_0x4be308('0x51e')]();},!0x0),_0x416147(_0x1891fc('0x100e'),0x2710,_0x2f071a,!0x0),_0x416147(_0x1891fc('0xbb'),!0x0,function(_0x355fe8,_0x2afcd4){var _0x116e56=_0x1891fc;_0x2afcd4||_0x355fe8[_0x116e56('0x55c')][_0x116e56('0x20c')][_0x116e56('0x1f3')]();}),_0x416147('tabindex',null,function(_0x549787,_0x355fc8){var _0x36d123=_0x1891fc;return _0x549787['display']['input'][_0x36d123('0xab6')]()[_0x36d123('0x322')]=_0x355fc8||'';}),_0x416147('autofocus',null),_0x416147(_0x1891fc('0xd96'),_0x1891fc('0xefe'),function(_0x30fba9,_0x3125c3){var _0x460c55=_0x1891fc;return _0x30fba9[_0x460c55('0xf37')][_0x460c55('0x468')](_0x3125c3);},!0x0),_0x416147('phrases',null);}(_0x401c96),function(_0x1d219d){var _0x57db74=_0x255d35,_0x1dfec1=_0x1d219d['optionHandlers'],_0x47f6c1=_0x1d219d[_0x57db74('0x217')]={};_0x1d219d[_0x57db74('0x98c')]={'constructor':_0x1d219d,'focus':function(){var _0x182562=_0x57db74;window['focus'](),this[_0x182562('0x55c')][_0x182562('0x20c')]['focus']();},'setOption':function(_0x36aa5a,_0x581633){var _0x3f1c5b=_0x57db74,_0x3e6cf9=this[_0x3f1c5b('0x631')],_0x2d6cb2=_0x3e6cf9[_0x36aa5a];_0x3e6cf9[_0x36aa5a]==_0x581633&&_0x3f1c5b('0x575')!=_0x36aa5a||(_0x3e6cf9[_0x36aa5a]=_0x581633,_0x1dfec1[_0x3f1c5b('0x100')](_0x36aa5a)&&_0x2dfb55(this,_0x1dfec1[_0x36aa5a])(this,_0x581633,_0x2d6cb2),_0x508e40(this,_0x3f1c5b('0x6eb'),this,_0x36aa5a));},'getOption':function(_0x2773f7){var _0x962b92=_0x57db74;return this[_0x962b92('0x631')][_0x2773f7];},'getDoc':function(){var _0x220ffd=_0x57db74;return this[_0x220ffd('0xf37')];},'addKeyMap':function(_0x439ca2,_0x1c1e49){var _0x3c933e=_0x57db74;this['state'][_0x3c933e('0x902')][_0x1c1e49?_0x3c933e('0x8f8'):_0x3c933e('0x8c9')](_0x3c836d(_0x439ca2));},'removeKeyMap':function(_0x2d6233){var _0x23d073=_0x57db74;for(var _0x3d2467=this[_0x23d073('0xfff')]['keyMaps'],_0x50a760=0x0;_0x50a760<_0x3d2467[_0x23d073('0x525')];++_0x50a760)if(_0x3d2467[_0x50a760]==_0x2d6233||_0x3d2467[_0x50a760][_0x23d073('0x263')]==_0x2d6233)return _0x3d2467[_0x23d073('0xc19')](_0x50a760,0x1),!0x0;},'addOverlay':_0x40cae9(function(_0x373f8a,_0x2aef1e){var _0x1f70bf=_0x57db74,_0x1689d3=_0x373f8a[_0x1f70bf('0x326')]?_0x373f8a:_0x1d219d['getMode'](this[_0x1f70bf('0x631')],_0x373f8a);if(_0x1689d3['startState'])throw new Error(_0x1f70bf('0xa16'));!function(_0x191cde,_0x4c8e76,_0x35b45c){var _0x342b48=_0x1f70bf;for(var _0x5f36ee=0x0,_0x457af1=_0x35b45c(_0x4c8e76);_0x5f36ee<_0x191cde[_0x342b48('0x525')]&&_0x35b45c(_0x191cde[_0x5f36ee])<=_0x457af1;)_0x5f36ee++;_0x191cde[_0x342b48('0xc19')](_0x5f36ee,0x0,_0x4c8e76);}(this[_0x1f70bf('0xfff')][_0x1f70bf('0x97b')],{'mode':_0x1689d3,'modeSpec':_0x373f8a,'opaque':_0x2aef1e&&_0x2aef1e[_0x1f70bf('0xdd1')],'priority':_0x2aef1e&&_0x2aef1e['priority']||0x0},function(_0x4a0eb0){var _0x17b8f4=_0x1f70bf;return _0x4a0eb0[_0x17b8f4('0xd17')];}),this[_0x1f70bf('0xfff')][_0x1f70bf('0x1042')]++,_0x18ce28(this);}),'removeOverlay':_0x40cae9(function(_0x49be82){var _0xff07ea=_0x57db74;for(var _0x24f722=this[_0xff07ea('0xfff')][_0xff07ea('0x97b')],_0x3453c4=0x0;_0x3453c4<_0x24f722[_0xff07ea('0x525')];++_0x3453c4){var _0x514bde=_0x24f722[_0x3453c4][_0xff07ea('0x71e')];if(_0x514bde==_0x49be82||_0xff07ea('0x7c7')==typeof _0x49be82&&_0x514bde[_0xff07ea('0x263')]==_0x49be82)return _0x24f722[_0xff07ea('0xc19')](_0x3453c4,0x1),this[_0xff07ea('0xfff')][_0xff07ea('0x1042')]++,void _0x18ce28(this);}}),'indentLine':_0x40cae9(function(_0x5c28c0,_0x5db499,_0x536a70){var _0x21e1b9=_0x57db74;_0x21e1b9('0x7c7')!=typeof _0x5db499&&_0x21e1b9('0xd95')!=typeof _0x5db499&&(_0x5db499=null==_0x5db499?this[_0x21e1b9('0x631')][_0x21e1b9('0x35c')]?_0x21e1b9('0x43a'):_0x21e1b9('0x46b'):_0x5db499?_0x21e1b9('0x1130'):_0x21e1b9('0x6c4')),_0x102270(this['doc'],_0x5c28c0)&&_0x2a267(this,_0x5c28c0,_0x5db499,_0x536a70);}),'indentSelection':_0x40cae9(function(_0x41e6d3){var _0x54fad1=_0x57db74;for(var _0x23d74b=this[_0x54fad1('0xf37')]['sel'][_0x54fad1('0x32')],_0x457a8f=-0x1,_0x52b257=0x0;_0x52b257<_0x23d74b['length'];_0x52b257++){var _0x5a961a=_0x23d74b[_0x52b257];if(_0x5a961a[_0x54fad1('0x1078')]())_0x5a961a[_0x54fad1('0x5d4')]['line']>_0x457a8f&&(_0x2a267(this,_0x5a961a['head']['line'],_0x41e6d3,!0x0),_0x457a8f=_0x5a961a[_0x54fad1('0x5d4')]['line'],_0x52b257==this[_0x54fad1('0xf37')][_0x54fad1('0x10f6')][_0x54fad1('0x1d7')]&&_0x515b9d(this));else{var _0x4904ba=_0x5a961a[_0x54fad1('0x9d7')](),_0xd2af10=_0x5a961a['to'](),_0x14ceae=Math[_0x54fad1('0xf65')](_0x457a8f,_0x4904ba[_0x54fad1('0xde2')]);_0x457a8f=Math[_0x54fad1('0xc0d')](this['lastLine'](),_0xd2af10[_0x54fad1('0xde2')]-(_0xd2af10['ch']?0x0:0x1))+0x1;for(var _0x44f8ec=_0x14ceae;_0x44f8ec<_0x457a8f;++_0x44f8ec)_0x2a267(this,_0x44f8ec,_0x41e6d3);var _0x3dc451=this[_0x54fad1('0xf37')][_0x54fad1('0x10f6')][_0x54fad1('0x32')];0x0==_0x4904ba['ch']&&_0x23d74b[_0x54fad1('0x525')]==_0x3dc451[_0x54fad1('0x525')]&&_0x3dc451[_0x52b257][_0x54fad1('0x9d7')]()['ch']>0x0&&_0x454670(this['doc'],_0x52b257,new _0x47634a(_0x4904ba,_0x3dc451[_0x52b257]['to']()),_0x463688);}}}),'getTokenAt':function(_0x4e270f,_0x3301ea){return _0x4a173f(this,_0x4e270f,_0x3301ea);},'getLineTokens':function(_0x81c3b0,_0x310d98){return _0x4a173f(this,_0xf7c6fb(_0x81c3b0),_0x310d98,!0x0);},'getTokenTypeAt':function(_0xa71638){var _0x56c74c=_0x57db74;_0xa71638=_0x364c36(this[_0x56c74c('0xf37')],_0xa71638);var _0x59253b,_0x46a1d7=_0x1bfbd1(this,_0x1b58dd(this[_0x56c74c('0xf37')],_0xa71638['line'])),_0x493541=0x0,_0x54f289=(_0x46a1d7[_0x56c74c('0x525')]-0x1)/0x2,_0x1ad074=_0xa71638['ch'];if(0x0==_0x1ad074)_0x59253b=_0x46a1d7[0x2];else for(;;){var _0x5acce7=_0x493541+_0x54f289>>0x1;if((_0x5acce7?_0x46a1d7[0x2*_0x5acce7-0x1]:0x0)>=_0x1ad074)_0x54f289=_0x5acce7;else{if(!(_0x46a1d7[0x2*_0x5acce7+0x1]<_0x1ad074)){_0x59253b=_0x46a1d7[0x2*_0x5acce7+0x2];break;}_0x493541=_0x5acce7+0x1;}}var _0x28e67d=_0x59253b?_0x59253b['indexOf'](_0x56c74c('0xe8e')):-0x1;return _0x28e67d<0x0?_0x59253b:0x0==_0x28e67d?null:_0x59253b[_0x56c74c('0xbc0')](0x0,_0x28e67d-0x1);},'getModeAt':function(_0x2eaa0d){var _0x184a8e=_0x57db74,_0x147382=this[_0x184a8e('0xf37')][_0x184a8e('0x575')];return _0x147382[_0x184a8e('0x10b7')]?_0x1d219d['innerMode'](_0x147382,this[_0x184a8e('0x10c2')](_0x2eaa0d)[_0x184a8e('0xfff')])[_0x184a8e('0x575')]:_0x147382;},'getHelper':function(_0x42e29c,_0x28741c){var _0x2e0f68=_0x57db74;return this[_0x2e0f68('0xc85')](_0x42e29c,_0x28741c)[0x0];},'getHelpers':function(_0x31e7a8,_0x1d4639){var _0x4e8a47=_0x57db74,_0x593c89=[];if(!_0x47f6c1[_0x4e8a47('0x100')](_0x1d4639))return _0x593c89;var _0x3cfb27=_0x47f6c1[_0x1d4639],_0x3ee0af=this['getModeAt'](_0x31e7a8);if(_0x4e8a47('0x7c7')==typeof _0x3ee0af[_0x1d4639])_0x3cfb27[_0x3ee0af[_0x1d4639]]&&_0x593c89[_0x4e8a47('0x8f8')](_0x3cfb27[_0x3ee0af[_0x1d4639]]);else{if(_0x3ee0af[_0x1d4639])for(var _0x4d9bb9=0x0;_0x4d9bb9<_0x3ee0af[_0x1d4639][_0x4e8a47('0x525')];_0x4d9bb9++){var _0x5b5a18=_0x3cfb27[_0x3ee0af[_0x1d4639][_0x4d9bb9]];_0x5b5a18&&_0x593c89[_0x4e8a47('0x8f8')](_0x5b5a18);}else _0x3ee0af['helperType']&&_0x3cfb27[_0x3ee0af['helperType']]?_0x593c89[_0x4e8a47('0x8f8')](_0x3cfb27[_0x3ee0af[_0x4e8a47('0x421')]]):_0x3cfb27[_0x3ee0af[_0x4e8a47('0x263')]]&&_0x593c89[_0x4e8a47('0x8f8')](_0x3cfb27[_0x3ee0af[_0x4e8a47('0x263')]]);}for(var _0x1708ab=0x0;_0x1708ab<_0x3cfb27[_0x4e8a47('0x984')][_0x4e8a47('0x525')];_0x1708ab++){var _0x167038=_0x3cfb27['_global'][_0x1708ab];_0x167038[_0x4e8a47('0x347')](_0x3ee0af,this)&&-0x1==_0x3ec288(_0x593c89,_0x167038[_0x4e8a47('0x7eb')])&&_0x593c89['push'](_0x167038[_0x4e8a47('0x7eb')]);}return _0x593c89;},'getStateAfter':function(_0x126cbe,_0x4d39bc){var _0xb9bc6a=_0x57db74,_0x116680=this[_0xb9bc6a('0xf37')];return _0x13a7c7(this,(_0x126cbe=_0x5673aa(_0x116680,null==_0x126cbe?_0x116680['first']+_0x116680['size']-0x1:_0x126cbe))+0x1,_0x4d39bc)[_0xb9bc6a('0xfff')];},'cursorCoords':function(_0x146151,_0x561b54){var _0x2f6cd7=_0x57db74,_0x4b7eee=this[_0x2f6cd7('0xf37')][_0x2f6cd7('0x10f6')][_0x2f6cd7('0x712')]();return _0x5dfa83(this,null==_0x146151?_0x4b7eee['head']:_0x2f6cd7('0x21e')==typeof _0x146151?_0x364c36(this[_0x2f6cd7('0xf37')],_0x146151):_0x146151?_0x4b7eee[_0x2f6cd7('0x9d7')]():_0x4b7eee['to'](),_0x561b54||_0x2f6cd7('0x9dc'));},'charCoords':function(_0x3da7ce,_0x17beca){var _0x314bba=_0x57db74;return _0x5882c4(this,_0x364c36(this['doc'],_0x3da7ce),_0x17beca||_0x314bba('0x9dc'));},'coordsChar':function(_0x27ced8,_0x1e016e){var _0xf39406=_0x57db74;return _0x20817a(this,(_0x27ced8=_0xdcb8b2(this,_0x27ced8,_0x1e016e||'page'))['left'],_0x27ced8[_0xf39406('0x62d')]);},'lineAtHeight':function(_0x16b168,_0x550000){var _0xf5c060=_0x57db74;return _0x16b168=_0xdcb8b2(this,{'top':_0x16b168,'left':0x0},_0x550000||_0xf5c060('0x9dc'))['top'],_0x6a7589(this[_0xf5c060('0xf37')],_0x16b168+this['display'][_0xf5c060('0x753')]);},'heightAtLine':function(_0x9c8e29,_0x536024,_0x25f271){var _0x1558ff=_0x57db74,_0x57e097,_0x4ebc1b=!0x1;if(_0x1558ff('0xd95')==typeof _0x9c8e29){var _0x951b10=this['doc'][_0x1558ff('0xe3c')]+this[_0x1558ff('0xf37')]['size']-0x1;_0x9c8e29_0x951b10&&(_0x9c8e29=_0x951b10,_0x4ebc1b=!0x0),_0x57e097=_0x1b58dd(this[_0x1558ff('0xf37')],_0x9c8e29);}else _0x57e097=_0x9c8e29;return _0x87add4(this,_0x57e097,{'top':0x0,'left':0x0},_0x536024||_0x1558ff('0x9dc'),_0x25f271||_0x4ebc1b)['top']+(_0x4ebc1b?this[_0x1558ff('0xf37')][_0x1558ff('0x7f0')]-_0x14cc1e(_0x57e097):0x0);},'defaultTextHeight':function(){var _0x4fcf1a=_0x57db74;return _0x37256b(this[_0x4fcf1a('0x55c')]);},'defaultCharWidth':function(){var _0x22dba4=_0x57db74;return _0x4b4854(this[_0x22dba4('0x55c')]);},'getViewport':function(){var _0x5909fb=_0x57db74;return{'from':this[_0x5909fb('0x55c')]['viewFrom'],'to':this[_0x5909fb('0x55c')]['viewTo']};},'addWidget':function(_0x48d8c9,_0x2cb767,_0x2e0082,_0x1da203,_0x41c62c){var _0x1913da=_0x57db74,_0x450c88,_0x440be3,_0x4c2391,_0x35e351=this[_0x1913da('0x55c')],_0x3830f2=(_0x48d8c9=_0x5dfa83(this,_0x364c36(this[_0x1913da('0xf37')],_0x48d8c9)))[_0x1913da('0x3a6')],_0x30727e=_0x48d8c9[_0x1913da('0xbab')];if(_0x2cb767['style']['position']='absolute',_0x2cb767['setAttribute'](_0x1913da('0x4e5'),_0x1913da('0xa04')),this[_0x1913da('0x55c')][_0x1913da('0x20c')][_0x1913da('0x4de')](_0x2cb767),_0x35e351[_0x1913da('0x503')][_0x1913da('0x11be')](_0x2cb767),_0x1913da('0xbd5')==_0x1da203)_0x3830f2=_0x48d8c9[_0x1913da('0x62d')];else{if('above'==_0x1da203||_0x1913da('0x7a')==_0x1da203){var _0x209020=Math[_0x1913da('0xf65')](_0x35e351[_0x1913da('0x701')][_0x1913da('0x1a1')],this[_0x1913da('0xf37')][_0x1913da('0x7f0')]),_0x28d66b=Math['max'](_0x35e351[_0x1913da('0x503')][_0x1913da('0x71a')],_0x35e351['lineSpace']['clientWidth']);('above'==_0x1da203||_0x48d8c9[_0x1913da('0x3a6')]+_0x2cb767['offsetHeight']>_0x209020)&&_0x48d8c9[_0x1913da('0x62d')]>_0x2cb767[_0x1913da('0x5f7')]?_0x3830f2=_0x48d8c9[_0x1913da('0x62d')]-_0x2cb767[_0x1913da('0x5f7')]:_0x48d8c9['bottom']+_0x2cb767[_0x1913da('0x5f7')]<=_0x209020&&(_0x3830f2=_0x48d8c9['bottom']),_0x30727e+_0x2cb767[_0x1913da('0x969')]>_0x28d66b&&(_0x30727e=_0x28d66b-_0x2cb767[_0x1913da('0x969')]);}}_0x2cb767[_0x1913da('0x1cd')][_0x1913da('0x62d')]=_0x3830f2+'px',_0x2cb767[_0x1913da('0x1cd')][_0x1913da('0xbab')]=_0x2cb767[_0x1913da('0x1cd')][_0x1913da('0x732')]='',_0x1913da('0x732')==_0x41c62c?(_0x30727e=_0x35e351['sizer'][_0x1913da('0x71a')]-_0x2cb767['offsetWidth'],_0x2cb767[_0x1913da('0x1cd')][_0x1913da('0x732')]='0px'):('left'==_0x41c62c?_0x30727e=0x0:_0x1913da('0x1e8')==_0x41c62c&&(_0x30727e=(_0x35e351[_0x1913da('0x503')][_0x1913da('0x71a')]-_0x2cb767[_0x1913da('0x969')])/0x2),_0x2cb767[_0x1913da('0x1cd')][_0x1913da('0xbab')]=_0x30727e+'px'),_0x2e0082&&(_0x450c88=this,_0x440be3={'left':_0x30727e,'top':_0x3830f2,'right':_0x30727e+_0x2cb767['offsetWidth'],'bottom':_0x3830f2+_0x2cb767[_0x1913da('0x5f7')]},null!=(_0x4c2391=_0x50a969(_0x450c88,_0x440be3))['scrollTop']&&_0x2c9df2(_0x450c88,_0x4c2391['scrollTop']),null!=_0x4c2391['scrollLeft']&&_0x33a7d6(_0x450c88,_0x4c2391['scrollLeft']));},'triggerOnKeyDown':_0x40cae9(_0x5aef9d),'triggerOnKeyPress':_0x40cae9(_0x21d431),'triggerOnKeyUp':_0x5dc966,'triggerOnMouseDown':_0x40cae9(_0xdefaa0),'execCommand':function(_0xe325b2){if(_0x25a9e6['hasOwnProperty'](_0xe325b2))return _0x25a9e6[_0xe325b2]['call'](null,this);},'triggerElectric':_0x40cae9(function(_0x1c1383){_0x58b172(this,_0x1c1383);}),'findPosH':function(_0x94c3a3,_0x462f9c,_0x3fadf2,_0x3ebf0e){var _0xb258e9=_0x57db74,_0x2917eb=0x1;_0x462f9c<0x0&&(_0x2917eb=-0x1,_0x462f9c=-_0x462f9c);for(var _0x16b06d=_0x364c36(this[_0xb258e9('0xf37')],_0x94c3a3),_0x3ed6e5=0x0;_0x3ed6e5<_0x462f9c&&!(_0x16b06d=_0x4c864b(this[_0xb258e9('0xf37')],_0x16b06d,_0x2917eb,_0x3fadf2,_0x3ebf0e))[_0xb258e9('0x91b')];++_0x3ed6e5);return _0x16b06d;},'moveH':_0x40cae9(function(_0x2eb89b,_0x5c6e2b){var _0x4b8f1b=_0x57db74,_0x3d8918=this;this[_0x4b8f1b('0xd0c')](function(_0x5a574f){var _0x5c11f5=_0x4b8f1b;return _0x3d8918[_0x5c11f5('0x55c')][_0x5c11f5('0x8be')]||_0x3d8918['doc'][_0x5c11f5('0x1158')]||_0x5a574f[_0x5c11f5('0x1078')]()?_0x4c864b(_0x3d8918['doc'],_0x5a574f['head'],_0x2eb89b,_0x5c6e2b,_0x3d8918[_0x5c11f5('0x631')]['rtlMoveVisually']):_0x2eb89b<0x0?_0x5a574f[_0x5c11f5('0x9d7')]():_0x5a574f['to']();},_0x28630a);}),'deleteH':_0x40cae9(function(_0x5bae93,_0x3bd549){var _0x3d4dc2=_0x57db74,_0x5cbc2e=this['doc'][_0x3d4dc2('0x10f6')],_0x38cec0=this[_0x3d4dc2('0xf37')];_0x5cbc2e[_0x3d4dc2('0xdea')]()?_0x38cec0[_0x3d4dc2('0xd78')]('',null,_0x3d4dc2('0x8ef')):_0x5c3dd0(this,function(_0x56a409){var _0x50e421=_0x3d4dc2,_0x2646a2=_0x4c864b(_0x38cec0,_0x56a409[_0x50e421('0x5d4')],_0x5bae93,_0x3bd549,!0x1);return _0x5bae93<0x0?{'from':_0x2646a2,'to':_0x56a409[_0x50e421('0x5d4')]}:{'from':_0x56a409[_0x50e421('0x5d4')],'to':_0x2646a2};});}),'findPosV':function(_0x3c01ac,_0x564db2,_0x52db2b,_0x13b0c4){var _0x148f76=_0x57db74,_0x5a51e2=0x1,_0x3d4a09=_0x13b0c4;_0x564db2<0x0&&(_0x5a51e2=-0x1,_0x564db2=-_0x564db2);for(var _0x5e6845=_0x364c36(this['doc'],_0x3c01ac),_0x3faa50=0x0;_0x3faa50<_0x564db2;++_0x3faa50){var _0x58c998=_0x5dfa83(this,_0x5e6845,_0x148f76('0x7fc'));if(null==_0x3d4a09?_0x3d4a09=_0x58c998['left']:_0x58c998[_0x148f76('0xbab')]=_0x3d4a09,(_0x5e6845=_0x21dc44(this,_0x58c998,_0x5a51e2,_0x52db2b))['hitSide'])break;}return _0x5e6845;},'moveV':_0x40cae9(function(_0x463d6d,_0x2bc485){var _0x3631f8=_0x57db74,_0x291066=this,_0x5f5486=this[_0x3631f8('0xf37')],_0x3da785=[],_0x3f6fae=!this[_0x3631f8('0x55c')][_0x3631f8('0x8be')]&&!_0x5f5486[_0x3631f8('0x1158')]&&_0x5f5486['sel'][_0x3631f8('0xdea')]();if(_0x5f5486[_0x3631f8('0xd0c')](function(_0x251d67){var _0x4bef98=_0x3631f8;if(_0x3f6fae)return _0x463d6d<0x0?_0x251d67[_0x4bef98('0x9d7')]():_0x251d67['to']();var _0x397a2a=_0x5dfa83(_0x291066,_0x251d67[_0x4bef98('0x5d4')],_0x4bef98('0x7fc'));null!=_0x251d67[_0x4bef98('0x38b')]&&(_0x397a2a['left']=_0x251d67['goalColumn']),_0x3da785[_0x4bef98('0x8f8')](_0x397a2a[_0x4bef98('0xbab')]);var _0x2669a0=_0x21dc44(_0x291066,_0x397a2a,_0x463d6d,_0x2bc485);return'page'==_0x2bc485&&_0x251d67==_0x5f5486[_0x4bef98('0x10f6')]['primary']()&&_0x384cc0(_0x291066,_0x5882c4(_0x291066,_0x2669a0,_0x4bef98('0x7fc'))[_0x4bef98('0x62d')]-_0x397a2a['top']),_0x2669a0;},_0x28630a),_0x3da785[_0x3631f8('0x525')])for(var _0x2ee3ff=0x0;_0x2ee3ff<_0x5f5486[_0x3631f8('0x10f6')]['ranges']['length'];_0x2ee3ff++)_0x5f5486[_0x3631f8('0x10f6')][_0x3631f8('0x32')][_0x2ee3ff][_0x3631f8('0x38b')]=_0x3da785[_0x2ee3ff];}),'findWordAt':function(_0x3c91ed){var _0x1cf064=_0x57db74,_0x66a003=_0x1b58dd(this['doc'],_0x3c91ed['line'])['text'],_0x17ebf2=_0x3c91ed['ch'],_0x181866=_0x3c91ed['ch'];if(_0x66a003){var _0x4cedf7=this['getHelper'](_0x3c91ed,_0x1cf064('0x342'));_0x1cf064('0xa69')!=_0x3c91ed['sticky']&&_0x181866!=_0x66a003[_0x1cf064('0x525')]||!_0x17ebf2?++_0x181866:--_0x17ebf2;for(var _0x285f0e=_0x66a003[_0x1cf064('0xc8e')](_0x17ebf2),_0x5dc340=_0x1379f6(_0x285f0e,_0x4cedf7)?function(_0x4159f9){return _0x1379f6(_0x4159f9,_0x4cedf7);}:/\s/[_0x1cf064('0xaac')](_0x285f0e)?function(_0x8e9737){var _0x3ff2c9=_0x1cf064;return/\s/[_0x3ff2c9('0xaac')](_0x8e9737);}:function(_0x4aa9fc){return!/\s/['test'](_0x4aa9fc)&&!_0x1379f6(_0x4aa9fc);};_0x17ebf2>0x0&&_0x5dc340(_0x66a003[_0x1cf064('0xc8e')](_0x17ebf2-0x1));)--_0x17ebf2;for(;_0x181866<_0x66a003[_0x1cf064('0x525')]&&_0x5dc340(_0x66a003[_0x1cf064('0xc8e')](_0x181866));)++_0x181866;}return new _0x47634a(_0xf7c6fb(_0x3c91ed[_0x1cf064('0xde2')],_0x17ebf2),_0xf7c6fb(_0x3c91ed[_0x1cf064('0xde2')],_0x181866));},'toggleOverwrite':function(_0x4d6d9b){var _0x4bffb5=_0x57db74;null!=_0x4d6d9b&&_0x4d6d9b==this[_0x4bffb5('0xfff')][_0x4bffb5('0x103c')]||((this[_0x4bffb5('0xfff')]['overwrite']=!this['state']['overwrite'])?_0x33fcac(this['display'][_0x4bffb5('0xb4f')],_0x4bffb5('0x1e')):_0x1a7f4e(this[_0x4bffb5('0x55c')][_0x4bffb5('0xb4f')],_0x4bffb5('0x1e')),_0x508e40(this,_0x4bffb5('0x773'),this,this[_0x4bffb5('0xfff')]['overwrite']));},'hasFocus':function(){var _0x526620=_0x57db74;return this[_0x526620('0x55c')][_0x526620('0x20c')][_0x526620('0xab6')]()==_0x3d661d();},'isReadOnly':function(){var _0x50a410=_0x57db74;return!(!this[_0x50a410('0x631')][_0x50a410('0x1069')]&&!this['doc'][_0x50a410('0xa4a')]);},'scrollTo':_0x40cae9(function(_0x34f13a,_0x1ee727){_0x5c8645(this,_0x34f13a,_0x1ee727);}),'getScrollInfo':function(){var _0x3d19e2=_0x57db74,_0x5d2df7=this[_0x3d19e2('0x55c')][_0x3d19e2('0x819')];return{'left':_0x5d2df7[_0x3d19e2('0x4ba')],'top':_0x5d2df7['scrollTop'],'height':_0x5d2df7['scrollHeight']-_0x55ae2c(this)-this[_0x3d19e2('0x55c')][_0x3d19e2('0xc0c')],'width':_0x5d2df7['scrollWidth']-_0x55ae2c(this)-this[_0x3d19e2('0x55c')][_0x3d19e2('0xbad')],'clientHeight':_0x5ae9f4(this),'clientWidth':_0x433d44(this)};},'scrollIntoView':_0x40cae9(function(_0x2f6c42,_0x50c545){var _0x208982=_0x57db74;null==_0x2f6c42?(_0x2f6c42={'from':this[_0x208982('0xf37')][_0x208982('0x10f6')][_0x208982('0x712')]()[_0x208982('0x5d4')],'to':null},null==_0x50c545&&(_0x50c545=this[_0x208982('0x631')]['cursorScrollMargin'])):_0x208982('0xd95')==typeof _0x2f6c42?_0x2f6c42={'from':_0xf7c6fb(_0x2f6c42,0x0),'to':null}:null==_0x2f6c42[_0x208982('0x9d7')]&&(_0x2f6c42={'from':_0x2f6c42,'to':null}),_0x2f6c42['to']||(_0x2f6c42['to']=_0x2f6c42[_0x208982('0x9d7')]),_0x2f6c42[_0x208982('0xa2c')]=_0x50c545||0x0,null!=_0x2f6c42['from']['line']?function(_0x433afb,_0x53ee67){var _0x48bf68=_0x208982;_0x28d27a(_0x433afb),_0x433afb[_0x48bf68('0x10e6')]['scrollToPos']=_0x53ee67;}(this,_0x2f6c42):_0x641209(this,_0x2f6c42[_0x208982('0x9d7')],_0x2f6c42['to'],_0x2f6c42[_0x208982('0xa2c')]);}),'setSize':_0x40cae9(function(_0x51ae9b,_0x5a8fbd){var _0xe7f6c1=_0x57db74,_0x3ef9be=this,_0x14d1a6=function(_0x53d642){var _0x3d53f0=_0x3ab6;return _0x3d53f0('0xd95')==typeof _0x53d642||/^\d+$/[_0x3d53f0('0xaac')](String(_0x53d642))?_0x53d642+'px':_0x53d642;};null!=_0x51ae9b&&(this[_0xe7f6c1('0x55c')][_0xe7f6c1('0x701')][_0xe7f6c1('0x1cd')]['width']=_0x14d1a6(_0x51ae9b)),null!=_0x5a8fbd&&(this['display'][_0xe7f6c1('0x701')][_0xe7f6c1('0x1cd')]['height']=_0x14d1a6(_0x5a8fbd)),this[_0xe7f6c1('0x631')][_0xe7f6c1('0x5a9')]&&_0x2de8f3(this);var _0x487cc1=this[_0xe7f6c1('0x55c')][_0xe7f6c1('0xa36')];this['doc']['iter'](_0x487cc1,this[_0xe7f6c1('0x55c')][_0xe7f6c1('0xf2f')],function(_0x415660){var _0x441232=_0xe7f6c1;if(_0x415660[_0x441232('0x1067')])for(var _0x33d1da=0x0;_0x33d1da<_0x415660[_0x441232('0x1067')]['length'];_0x33d1da++)if(_0x415660['widgets'][_0x33d1da][_0x441232('0x254')]){_0x59dcbc(_0x3ef9be,_0x487cc1,_0x441232('0xc4c'));break;}++_0x487cc1;}),this[_0xe7f6c1('0x10e6')]['forceUpdate']=!0x0,_0x508e40(this,_0xe7f6c1('0x51e'),this);}),'operation':function(_0x3d5537){return _0x14c54d(this,_0x3d5537);},'startOperation':function(){return _0x23d185(this);},'endOperation':function(){return _0x5ab881(this);},'refresh':_0x40cae9(function(){var _0x4b4abb=_0x57db74,_0x5b3374=this[_0x4b4abb('0x55c')][_0x4b4abb('0x570')];_0x18ce28(this),this[_0x4b4abb('0x10e6')][_0x4b4abb('0x60e')]=!0x0,_0xe4e52d(this),_0x5c8645(this,this[_0x4b4abb('0xf37')][_0x4b4abb('0x4ba')],this[_0x4b4abb('0xf37')]['scrollTop']),_0x5e6615(this[_0x4b4abb('0x55c')]),(null==_0x5b3374||Math[_0x4b4abb('0x74f')](_0x5b3374-_0x37256b(this[_0x4b4abb('0x55c')]))>0.5||this[_0x4b4abb('0x631')]['lineWrapping'])&&_0x4df661(this),_0x508e40(this,_0x4b4abb('0x51e'),this);}),'swapDoc':_0x40cae9(function(_0x10bfca){var _0x2f7646=_0x57db74,_0x1d0da3=this['doc'];return _0x1d0da3['cm']=null,this[_0x2f7646('0xfff')]['selectingText']&&this[_0x2f7646('0xfff')][_0x2f7646('0xc66')](),_0x4cc752(this,_0x10bfca),_0xe4e52d(this),this[_0x2f7646('0x55c')][_0x2f7646('0x20c')][_0x2f7646('0xff3')](),_0x5c8645(this,_0x10bfca['scrollLeft'],_0x10bfca[_0x2f7646('0xfa1')]),this[_0x2f7646('0x10e6')][_0x2f7646('0x11c5')]=!0x0,_0x5470d1(this,_0x2f7646('0xd88'),this,_0x1d0da3),_0x1d0da3;}),'phrase':function(_0xb8406f){var _0x6dd42c=_0x57db74,_0x845dfd=this[_0x6dd42c('0x631')][_0x6dd42c('0x47c')];return _0x845dfd&&Object['prototype'][_0x6dd42c('0x100')][_0x6dd42c('0x4b0')](_0x845dfd,_0xb8406f)?_0x845dfd[_0xb8406f]:_0xb8406f;},'getInputField':function(){var _0x250813=_0x57db74;return this[_0x250813('0x55c')][_0x250813('0x20c')]['getField']();},'getWrapperElement':function(){var _0x48d4ab=_0x57db74;return this[_0x48d4ab('0x55c')][_0x48d4ab('0x701')];},'getScrollerElement':function(){var _0x51829d=_0x57db74;return this[_0x51829d('0x55c')][_0x51829d('0x819')];},'getGutterElement':function(){var _0x4cdb93=_0x57db74;return this[_0x4cdb93('0x55c')]['gutters'];}},_0x177e1e(_0x1d219d),_0x1d219d[_0x57db74('0x10a')]=function(_0x152b88,_0x5ee202,_0x33010c){var _0x2eb25c=_0x57db74;_0x47f6c1[_0x2eb25c('0x100')](_0x152b88)||(_0x47f6c1[_0x152b88]=_0x1d219d[_0x152b88]={'_global':[]}),_0x47f6c1[_0x152b88][_0x5ee202]=_0x33010c;},_0x1d219d[_0x57db74('0x9')]=function(_0xe36da1,_0x451bd0,_0x1b4a1e,_0x10f985){var _0x53945b=_0x57db74;_0x1d219d[_0x53945b('0x10a')](_0xe36da1,_0x451bd0,_0x10f985),_0x47f6c1[_0xe36da1]['_global'][_0x53945b('0x8f8')]({'pred':_0x1b4a1e,'val':_0x10f985});};}(_0x401c96);var _0x4369b9=_0x255d35('0xa10')[_0x255d35('0x541')]('\x20');for(var _0x23e6f6 in _0x1035cd[_0x255d35('0x98c')])_0x1035cd[_0x255d35('0x98c')][_0x255d35('0x100')](_0x23e6f6)&&_0x3ec288(_0x4369b9,_0x23e6f6)<0x0&&(_0x401c96[_0x255d35('0x98c')][_0x23e6f6]=function(_0x11ee28){return function(){var _0x1c97a9=_0x3ab6;return _0x11ee28[_0x1c97a9('0x1036')](this['doc'],arguments);};}(_0x1035cd[_0x255d35('0x98c')][_0x23e6f6]));return _0x177e1e(_0x1035cd),_0x401c96[_0x255d35('0xb0d')]={'textarea':_0x5a02c0,'contenteditable':_0x3a21c6},_0x401c96[_0x255d35('0x47')]=function(_0x25c935){var _0x317e1d=_0x255d35;_0x401c96[_0x317e1d('0x8c0')][_0x317e1d('0x575')]||'null'==_0x25c935||(_0x401c96[_0x317e1d('0x8c0')][_0x317e1d('0x575')]=_0x25c935),_0x1cf546['apply'](this,arguments);},_0x401c96[_0x255d35('0x739')]=function(_0x2e2431,_0x147777){_0x37e8ea[_0x2e2431]=_0x147777;},_0x401c96[_0x255d35('0x47')](_0x255d35('0xea8'),function(){return{'token':function(_0x462470){var _0x2a993f=_0x3ab6;return _0x462470[_0x2a993f('0x11e0')]();}};}),_0x401c96[_0x255d35('0x739')](_0x255d35('0x5e9'),'null'),_0x401c96[_0x255d35('0x417')]=function(_0x175d04,_0x2f5764){_0x401c96['prototype'][_0x175d04]=_0x2f5764;},_0x401c96[_0x255d35('0xfee')]=function(_0x322ad0,_0x11fe4c){var _0x63d9ec=_0x255d35;_0x1035cd[_0x63d9ec('0x98c')][_0x322ad0]=_0x11fe4c;},_0x401c96['fromTextArea']=function(_0x2d8496,_0x1dd2c3){var _0x10bc9b=_0x255d35;if((_0x1dd2c3=_0x1dd2c3?_0x44b57b(_0x1dd2c3):{})[_0x10bc9b('0x832')]=_0x2d8496[_0x10bc9b('0x832')],!_0x1dd2c3[_0x10bc9b('0x7a7')]&&_0x2d8496[_0x10bc9b('0x322')]&&(_0x1dd2c3[_0x10bc9b('0x7a7')]=_0x2d8496[_0x10bc9b('0x322')]),!_0x1dd2c3[_0x10bc9b('0x7c2')]&&_0x2d8496[_0x10bc9b('0x7c2')]&&(_0x1dd2c3['placeholder']=_0x2d8496[_0x10bc9b('0x7c2')]),null==_0x1dd2c3[_0x10bc9b('0xe10')]){var _0x32931e=_0x3d661d();_0x1dd2c3[_0x10bc9b('0xe10')]=_0x32931e==_0x2d8496||null!=_0x2d8496[_0x10bc9b('0x1159')]('autofocus')&&_0x32931e==document[_0x10bc9b('0x98e')];}function _0x141bd7(){var _0x24018a=_0x10bc9b;_0x2d8496[_0x24018a('0x832')]=_0x107261[_0x24018a('0x128')]();}var _0x56e1cc;if(_0x2d8496[_0x10bc9b('0xb3')]&&(_0x407bf3(_0x2d8496[_0x10bc9b('0xb3')],_0x10bc9b('0x522'),_0x141bd7),!_0x1dd2c3[_0x10bc9b('0x6ad')])){var _0x114cba=_0x2d8496[_0x10bc9b('0xb3')];_0x56e1cc=_0x114cba[_0x10bc9b('0x522')];try{var _0x1aca0d=_0x114cba['submit']=function(){var _0x2ed4cb=_0x10bc9b;_0x141bd7(),_0x114cba[_0x2ed4cb('0x522')]=_0x56e1cc,_0x114cba[_0x2ed4cb('0x522')](),_0x114cba[_0x2ed4cb('0x522')]=_0x1aca0d;};}catch(_0x347687){}}_0x1dd2c3[_0x10bc9b('0xffb')]=function(_0x21e5f1){var _0x3f1abd=_0x10bc9b;_0x21e5f1[_0x3f1abd('0xc68')]=_0x141bd7,_0x21e5f1[_0x3f1abd('0xbe3')]=function(){return _0x2d8496;},_0x21e5f1[_0x3f1abd('0xd51')]=function(){var _0x1bc4bb=_0x3f1abd;_0x21e5f1['toTextArea']=isNaN,_0x141bd7(),_0x2d8496['parentNode'][_0x1bc4bb('0x75b')](_0x21e5f1[_0x1bc4bb('0xf4d')]()),_0x2d8496['style'][_0x1bc4bb('0x55c')]='',_0x2d8496[_0x1bc4bb('0xb3')]&&(_0x4496a7(_0x2d8496[_0x1bc4bb('0xb3')],_0x1bc4bb('0x522'),_0x141bd7),_0x1dd2c3['leaveSubmitMethodAlone']||_0x1bc4bb('0xae9')!=typeof _0x2d8496[_0x1bc4bb('0xb3')][_0x1bc4bb('0x522')]||(_0x2d8496[_0x1bc4bb('0xb3')][_0x1bc4bb('0x522')]=_0x56e1cc));};},_0x2d8496[_0x10bc9b('0x1cd')][_0x10bc9b('0x55c')]=_0x10bc9b('0x1c1');var _0x107261=_0x401c96(function(_0x1800b2){var _0x53974a=_0x10bc9b;return _0x2d8496['parentNode']['insertBefore'](_0x1800b2,_0x2d8496[_0x53974a('0xd29')]);},_0x1dd2c3);return _0x107261;},function(_0x26e6c2){var _0x38555d=_0x255d35;_0x26e6c2[_0x38555d('0xc1f')]=_0x4496a7,_0x26e6c2['on']=_0x407bf3,_0x26e6c2[_0x38555d('0x88b')]=_0x3b3bd5,_0x26e6c2[_0x38555d('0x106f')]=_0x1035cd,_0x26e6c2[_0x38555d('0xe83')]=_0x1fd172,_0x26e6c2[_0x38555d('0x976')]=_0x40e2a1,_0x26e6c2[_0x38555d('0x11e4')]=_0x110476,_0x26e6c2[_0x38555d('0x4d')]=_0x1ff498,_0x26e6c2['Pass']=_0x457770,_0x26e6c2[_0x38555d('0x6d5')]=_0x508e40,_0x26e6c2[_0x38555d('0x2a1')]=_0x44f9cd,_0x26e6c2['changeEnd']=_0x457bba,_0x26e6c2['scrollbarModel']=_0x341eef,_0x26e6c2[_0x38555d('0x9be')]=_0xf7c6fb,_0x26e6c2[_0x38555d('0x15f')]=_0x42d525,_0x26e6c2['modes']=_0x5f0274,_0x26e6c2[_0x38555d('0xc6b')]=_0x37e8ea,_0x26e6c2[_0x38555d('0xcef')]=_0x47156c,_0x26e6c2[_0x38555d('0x5af')]=_0x59fed9,_0x26e6c2[_0x38555d('0xc58')]=_0x114086,_0x26e6c2['extendMode']=_0x31e45f,_0x26e6c2[_0x38555d('0xf76')]=_0x4e981f,_0x26e6c2['startState']=_0x5ca461,_0x26e6c2[_0x38555d('0x10b7')]=_0x50c606,_0x26e6c2['commands']=_0x25a9e6,_0x26e6c2[_0x38555d('0x9a2')]=_0x4609eb,_0x26e6c2[_0x38555d('0x7')]=_0x14291d,_0x26e6c2['isModifierKey']=_0x32ce40,_0x26e6c2[_0x38555d('0x889')]=_0x3e40bf,_0x26e6c2[_0x38555d('0xfc9')]=_0xb9bd7a,_0x26e6c2['StringStream']=_0x233ef9,_0x26e6c2[_0x38555d('0xe8c')]=_0x2e8366,_0x26e6c2[_0x38555d('0x208')]=_0x126b07,_0x26e6c2[_0x38555d('0x5b4')]=_0x5a5317,_0x26e6c2['e_preventDefault']=_0x12a3b5,_0x26e6c2[_0x38555d('0x636')]=_0x1be273,_0x26e6c2[_0x38555d('0x878')]=_0x387a99,_0x26e6c2[_0x38555d('0x25b')]=_0x33fcac,_0x26e6c2[_0x38555d('0x87d')]=_0x2c8c88,_0x26e6c2[_0x38555d('0x4f')]=_0x1a7f4e,_0x26e6c2[_0x38555d('0xc29')]=_0x52e15d;}(_0x401c96),_0x401c96['version']=_0x255d35('0x103f'),_0x401c96;});},{}],0x75:[function(_0x1b92ba,_0x26bfb8,_0xe40111){var _0x450f57=_0x404097,_0xc019e;_0xc019e=function(_0x3174a6){var _0x2b0018=_0x3ab6;'use strict';_0x3174a6[_0x2b0018('0x47')](_0x2b0018('0xdd2'),function(_0x5b4154,_0x20be9d){var _0x43c67c=_0x2b0018,_0x31dfce,_0x3f39f6,_0x46fffc=_0x5b4154[_0x43c67c('0x11a7')],_0x43bc86=_0x20be9d[_0x43c67c('0x60a')],_0x2e1ed0=_0x20be9d[_0x43c67c('0x7be')],_0x2fbd78=_0x20be9d[_0x43c67c('0x41c')]||_0x2e1ed0,_0x27a8fc=_0x20be9d[_0x43c67c('0x59a')],_0x52ec6f=_0x20be9d[_0x43c67c('0x8d2')]||/[\w$\xa1-\uffff]/,_0x1bfe1f=function(){var _0x5c1289=_0x43c67c;function _0x3c94b7(_0x50ca0e){var _0x223f32=_0x3ab6;return{'type':_0x50ca0e,'style':_0x223f32('0x105b')};}var _0x4f02b6=_0x3c94b7(_0x5c1289('0x9da')),_0x3e10b6=_0x3c94b7(_0x5c1289('0x654')),_0x1f7fcd=_0x3c94b7(_0x5c1289('0x144')),_0x3a137e=_0x3c94b7('keyword\x20d'),_0x505bb7=_0x3c94b7(_0x5c1289('0xc5c')),_0x3e552a={'type':'atom','style':_0x5c1289('0x2eb')};return{'if':_0x3c94b7('if'),'while':_0x4f02b6,'with':_0x4f02b6,'else':_0x3e10b6,'do':_0x3e10b6,'try':_0x3e10b6,'finally':_0x3e10b6,'return':_0x3a137e,'break':_0x3a137e,'continue':_0x3a137e,'new':_0x3c94b7(_0x5c1289('0xbdd')),'delete':_0x1f7fcd,'void':_0x1f7fcd,'throw':_0x1f7fcd,'debugger':_0x3c94b7(_0x5c1289('0x1a6')),'var':_0x3c94b7(_0x5c1289('0xb94')),'const':_0x3c94b7('var'),'let':_0x3c94b7(_0x5c1289('0xb94')),'function':_0x3c94b7(_0x5c1289('0xae9')),'catch':_0x3c94b7(_0x5c1289('0x10ee')),'for':_0x3c94b7(_0x5c1289('0xa1f')),'switch':_0x3c94b7(_0x5c1289('0x2a8')),'case':_0x3c94b7('case'),'default':_0x3c94b7('default'),'in':_0x505bb7,'typeof':_0x505bb7,'instanceof':_0x505bb7,'true':_0x3e552a,'false':_0x3e552a,'null':_0x3e552a,'undefined':_0x3e552a,'NaN':_0x3e552a,'Infinity':_0x3e552a,'this':_0x3c94b7(_0x5c1289('0xe0')),'class':_0x3c94b7(_0x5c1289('0x4f7')),'super':_0x3c94b7('atom'),'yield':_0x1f7fcd,'export':_0x3c94b7(_0x5c1289('0xb')),'import':_0x3c94b7(_0x5c1289('0x6fd')),'extends':_0x1f7fcd,'await':_0x1f7fcd};}(),_0x36c703=/[+\-*&%=<>!?|~^@]/,_0x2c1938=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/;function _0x22850f(_0x2c6814,_0x1ca554,_0x410759){return _0x31dfce=_0x2c6814,_0x3f39f6=_0x410759,_0x1ca554;}function _0x591149(_0x1db441,_0x493ea8){var _0x3ad098=_0x43c67c,_0xf3d986,_0x1d28c4=_0x1db441[_0x3ad098('0x4d7')]();if('\x22'==_0x1d28c4||'\x27'==_0x1d28c4)return _0x493ea8[_0x3ad098('0x276')]=(_0xf3d986=_0x1d28c4,function(_0x267c90,_0x32e303){var _0x1437d6=_0x3ad098,_0xcdb90a,_0x5b0412=!0x1;if(_0x2e1ed0&&'@'==_0x267c90['peek']()&&_0x267c90['match'](_0x2c1938))return _0x32e303[_0x1437d6('0x276')]=_0x591149,_0x22850f(_0x1437d6('0x39d'),_0x1437d6('0x745'));for(;null!=(_0xcdb90a=_0x267c90['next']())&&(_0xcdb90a!=_0xf3d986||_0x5b0412);)_0x5b0412=!_0x5b0412&&'\x5c'==_0xcdb90a;return _0x5b0412||(_0x32e303[_0x1437d6('0x276')]=_0x591149),_0x22850f(_0x1437d6('0x7c7'),_0x1437d6('0x7c7'));}),_0x493ea8[_0x3ad098('0x276')](_0x1db441,_0x493ea8);if('.'==_0x1d28c4&&_0x1db441[_0x3ad098('0x91e')](/^\d[\d_]*(?:[eE][+\-]?[\d_]+)?/))return _0x22850f(_0x3ad098('0xd95'),_0x3ad098('0xd95'));if('.'==_0x1d28c4&&_0x1db441[_0x3ad098('0x91e')]('..'))return _0x22850f('spread','meta');if(/[\[\]{}\(\),;\:\.]/[_0x3ad098('0xaac')](_0x1d28c4))return _0x22850f(_0x1d28c4);if('='==_0x1d28c4&&_0x1db441[_0x3ad098('0x796')]('>'))return _0x22850f('=>',_0x3ad098('0xc5c'));if('0'==_0x1d28c4&&_0x1db441[_0x3ad098('0x91e')](/^(?:x[\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/))return _0x22850f('number',_0x3ad098('0xd95'));if(/\d/['test'](_0x1d28c4))return _0x1db441[_0x3ad098('0x91e')](/^[\d_]*(?:n|(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)?/),_0x22850f('number',_0x3ad098('0xd95'));if('/'==_0x1d28c4)return _0x1db441[_0x3ad098('0x796')]('*')?(_0x493ea8[_0x3ad098('0x276')]=_0x1fe10e,_0x1fe10e(_0x1db441,_0x493ea8)):_0x1db441['eat']('/')?(_0x1db441[_0x3ad098('0x11e0')](),_0x22850f(_0x3ad098('0xf8f'),_0x3ad098('0xf8f'))):_0x587218(_0x1db441,_0x493ea8,0x1)?(function(_0x3d6cf0){var _0x5efbe2=_0x3ad098;for(var _0x23035a,_0x379686=!0x1,_0x39fa53=!0x1;null!=(_0x23035a=_0x3d6cf0[_0x5efbe2('0x4d7')]());){if(!_0x379686){if('/'==_0x23035a&&!_0x39fa53)return;'['==_0x23035a?_0x39fa53=!0x0:_0x39fa53&&']'==_0x23035a&&(_0x39fa53=!0x1);}_0x379686=!_0x379686&&'\x5c'==_0x23035a;}}(_0x1db441),_0x1db441[_0x3ad098('0x91e')](/^\b(([gimyus])(?![gimyus]*\2))+\b/),_0x22850f(_0x3ad098('0xb24'),_0x3ad098('0x972'))):(_0x1db441[_0x3ad098('0x796')]('='),_0x22850f(_0x3ad098('0xc5c'),'operator',_0x1db441[_0x3ad098('0x970')]()));if('`'==_0x1d28c4)return _0x493ea8['tokenize']=_0x12c054,_0x12c054(_0x1db441,_0x493ea8);if('#'==_0x1d28c4&&'!'==_0x1db441[_0x3ad098('0x2ad')]())return _0x1db441[_0x3ad098('0x11e0')](),_0x22850f(_0x3ad098('0x745'),'meta');if('#'==_0x1d28c4&&_0x1db441[_0x3ad098('0x2d4')](_0x52ec6f))return _0x22850f(_0x3ad098('0xe3f'),'property');if('<'==_0x1d28c4&&_0x1db441['match'](_0x3ad098('0x145'))||'-'==_0x1d28c4&&_0x1db441[_0x3ad098('0x91e')]('->')&&!/\S/[_0x3ad098('0xaac')](_0x1db441['string'][_0x3ad098('0xbc0')](0x0,_0x1db441[_0x3ad098('0x1045')])))return _0x1db441[_0x3ad098('0x11e0')](),_0x22850f(_0x3ad098('0xf8f'),_0x3ad098('0xf8f'));if(_0x36c703[_0x3ad098('0xaac')](_0x1d28c4))return'>'==_0x1d28c4&&_0x493ea8[_0x3ad098('0x603')]&&'>'==_0x493ea8['lexical'][_0x3ad098('0x3f7')]||(_0x1db441[_0x3ad098('0x796')]('=')?'!'!=_0x1d28c4&&'='!=_0x1d28c4||_0x1db441[_0x3ad098('0x796')]('='):/[<>*+\-|&?]/['test'](_0x1d28c4)&&(_0x1db441[_0x3ad098('0x796')](_0x1d28c4),'>'==_0x1d28c4&&_0x1db441[_0x3ad098('0x796')](_0x1d28c4))),'?'==_0x1d28c4&&_0x1db441[_0x3ad098('0x796')]('.')?_0x22850f('.'):_0x22850f(_0x3ad098('0xc5c'),_0x3ad098('0xc5c'),_0x1db441[_0x3ad098('0x970')]());if(_0x52ec6f[_0x3ad098('0xaac')](_0x1d28c4)){_0x1db441[_0x3ad098('0x2d4')](_0x52ec6f);var _0x261587=_0x1db441[_0x3ad098('0x970')]();if('.'!=_0x493ea8[_0x3ad098('0x1140')]){if(_0x1bfe1f['propertyIsEnumerable'](_0x261587)){var _0x4a968b=_0x1bfe1f[_0x261587];return _0x22850f(_0x4a968b[_0x3ad098('0x3f7')],_0x4a968b[_0x3ad098('0x1cd')],_0x261587);}if(_0x3ad098('0x601')==_0x261587&&_0x1db441[_0x3ad098('0x91e')](/^(\s|\/\*.*?\*\/)*[\[\(\w]/,!0x1))return _0x22850f(_0x3ad098('0x601'),_0x3ad098('0x105b'),_0x261587);}return _0x22850f(_0x3ad098('0xe3f'),_0x3ad098('0xe3f'),_0x261587);}}function _0x1fe10e(_0x466ee1,_0x36ee04){var _0x2deb45=_0x43c67c;for(var _0x11ea09,_0x430b52=!0x1;_0x11ea09=_0x466ee1[_0x2deb45('0x4d7')]();){if('/'==_0x11ea09&&_0x430b52){_0x36ee04[_0x2deb45('0x276')]=_0x591149;break;}_0x430b52='*'==_0x11ea09;}return _0x22850f(_0x2deb45('0xf8f'),_0x2deb45('0xf8f'));}function _0x12c054(_0xafa14a,_0x51834a){var _0x13d434=_0x43c67c;for(var _0x43a3b0,_0x5574f7=!0x1;null!=(_0x43a3b0=_0xafa14a[_0x13d434('0x4d7')]());){if(!_0x5574f7&&('`'==_0x43a3b0||'$'==_0x43a3b0&&_0xafa14a[_0x13d434('0x796')]('{'))){_0x51834a[_0x13d434('0x276')]=_0x591149;break;}_0x5574f7=!_0x5574f7&&'\x5c'==_0x43a3b0;}return _0x22850f(_0x13d434('0x75e'),_0x13d434('0x972'),_0xafa14a['current']());}function _0x22ac2f(_0x1fd76f,_0xd1a048){var _0x3bc9be=_0x43c67c;_0xd1a048[_0x3bc9be('0xb13')]&&(_0xd1a048[_0x3bc9be('0xb13')]=null);var _0x26e12e=_0x1fd76f['string'][_0x3bc9be('0x4dc')]('=>',_0x1fd76f[_0x3bc9be('0x1045')]);if(!(_0x26e12e<0x0)){if(_0x27a8fc){var _0x1ca0a7=/:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/[_0x3bc9be('0xd16')](_0x1fd76f[_0x3bc9be('0x7c7')][_0x3bc9be('0xbc0')](_0x1fd76f[_0x3bc9be('0x1045')],_0x26e12e));_0x1ca0a7&&(_0x26e12e=_0x1ca0a7['index']);}for(var _0x1dcff9=0x0,_0x375058=!0x1,_0x533236=_0x26e12e-0x1;_0x533236>=0x0;--_0x533236){var _0x52d100=_0x1fd76f[_0x3bc9be('0x7c7')][_0x3bc9be('0xc8e')](_0x533236),_0x3b2651=_0x3bc9be('0x748')['indexOf'](_0x52d100);if(_0x3b2651>=0x0&&_0x3b2651<0x3){if(!_0x1dcff9){++_0x533236;break;}if(0x0==--_0x1dcff9){'('==_0x52d100&&(_0x375058=!0x0);break;}}else{if(_0x3b2651>=0x3&&_0x3b2651<0x6)++_0x1dcff9;else{if(_0x52ec6f[_0x3bc9be('0xaac')](_0x52d100))_0x375058=!0x0;else{if(/["'\/`]/[_0x3bc9be('0xaac')](_0x52d100))for(;;--_0x533236){if(0x0==_0x533236)return;if(_0x1fd76f[_0x3bc9be('0x7c7')][_0x3bc9be('0xc8e')](_0x533236-0x1)==_0x52d100&&'\x5c'!=_0x1fd76f[_0x3bc9be('0x7c7')]['charAt'](_0x533236-0x2)){_0x533236--;break;}}else{if(_0x375058&&!_0x1dcff9){++_0x533236;break;}}}}}}_0x375058&&!_0x1dcff9&&(_0xd1a048['fatArrowAt']=_0x533236);}}var _0x118668={'atom':!0x0,'number':!0x0,'variable':!0x0,'string':!0x0,'regexp':!0x0,'this':!0x0,'jsonld-keyword':!0x0};function _0x1944e7(_0x56e26b,_0x54970e,_0x3907b1,_0xdb1370,_0x28e3f7,_0x2eabb3){var _0x46b0ce=_0x43c67c;this[_0x46b0ce('0x25a')]=_0x56e26b,this[_0x46b0ce('0x865')]=_0x54970e,this[_0x46b0ce('0x3f7')]=_0x3907b1,this[_0x46b0ce('0x46b')]=_0x28e3f7,this[_0x46b0ce('0x1162')]=_0x2eabb3,null!=_0xdb1370&&(this[_0x46b0ce('0xe57')]=_0xdb1370);}function _0x1f1a7e(_0x4ae673,_0x4548be){var _0x5b54aa=_0x43c67c;for(var _0x47f38a=_0x4ae673['localVars'];_0x47f38a;_0x47f38a=_0x47f38a[_0x5b54aa('0x4d7')])if(_0x47f38a[_0x5b54aa('0x263')]==_0x4548be)return!0x0;for(var _0x2bbb8d=_0x4ae673[_0x5b54aa('0x921')];_0x2bbb8d;_0x2bbb8d=_0x2bbb8d[_0x5b54aa('0x46b')])for(_0x47f38a=_0x2bbb8d[_0x5b54aa('0x11ae')];_0x47f38a;_0x47f38a=_0x47f38a[_0x5b54aa('0x4d7')])if(_0x47f38a['name']==_0x4548be)return!0x0;}var _0x570b0d={'state':null,'column':null,'marked':null,'cc':null};function _0x3ceb16(){var _0x4d3cfc=_0x43c67c;for(var _0x5b312a=arguments['length']-0x1;_0x5b312a>=0x0;_0x5b312a--)_0x570b0d['cc'][_0x4d3cfc('0x8f8')](arguments[_0x5b312a]);}function _0x4aeb5c(){return _0x3ceb16['apply'](null,arguments),!0x0;}function _0x4b697a(_0x227afd,_0x38555a){var _0x3300e8=_0x43c67c;for(var _0x4b66c1=_0x38555a;_0x4b66c1;_0x4b66c1=_0x4b66c1[_0x3300e8('0x4d7')])if(_0x4b66c1[_0x3300e8('0x263')]==_0x227afd)return!0x0;return!0x1;}function _0x3c2042(_0x1f719b){var _0x3b326d=_0x43c67c,_0x46541a=_0x570b0d[_0x3b326d('0xfff')];if(_0x570b0d[_0x3b326d('0xd2d')]=_0x3b326d('0x54c'),_0x46541a[_0x3b326d('0x921')]){if('var'==_0x46541a[_0x3b326d('0x603')]['info']&&_0x46541a[_0x3b326d('0x921')]&&_0x46541a['context'][_0x3b326d('0xa52')]){var _0x4ba1fd=function _0x5c93f3(_0x42952b,_0x4ce892){var _0x53c4be=_0x3b326d;if(_0x4ce892){if(_0x4ce892['block']){var _0x5678ab=_0x5c93f3(_0x42952b,_0x4ce892[_0x53c4be('0x46b')]);return _0x5678ab?_0x5678ab==_0x4ce892[_0x53c4be('0x46b')]?_0x4ce892:new _0x51231f(_0x5678ab,_0x4ce892['vars'],!0x0):null;}return _0x4b697a(_0x42952b,_0x4ce892[_0x53c4be('0x11ae')])?_0x4ce892:new _0x51231f(_0x4ce892[_0x53c4be('0x46b')],new _0x2e591d(_0x42952b,_0x4ce892[_0x53c4be('0x11ae')]),!0x1);}return null;}(_0x1f719b,_0x46541a[_0x3b326d('0x921')]);if(null!=_0x4ba1fd)return void(_0x46541a[_0x3b326d('0x921')]=_0x4ba1fd);}else{if(!_0x4b697a(_0x1f719b,_0x46541a[_0x3b326d('0x9d6')]))return void(_0x46541a[_0x3b326d('0x9d6')]=new _0x2e591d(_0x1f719b,_0x46541a[_0x3b326d('0x9d6')]));}}_0x20be9d[_0x3b326d('0x527')]&&!_0x4b697a(_0x1f719b,_0x46541a[_0x3b326d('0x527')])&&(_0x46541a['globalVars']=new _0x2e591d(_0x1f719b,_0x46541a[_0x3b326d('0x527')]));}function _0x1f1324(_0x516e81){var _0x30efc5=_0x43c67c;return _0x30efc5('0xda0')==_0x516e81||_0x30efc5('0xb3c')==_0x516e81||'protected'==_0x516e81||_0x30efc5('0x140')==_0x516e81||'readonly'==_0x516e81;}function _0x51231f(_0x47506a,_0x3d0f15,_0x3410f4){var _0x246798=_0x43c67c;this[_0x246798('0x46b')]=_0x47506a,this['vars']=_0x3d0f15,this[_0x246798('0xa52')]=_0x3410f4;}function _0x2e591d(_0x3b3856,_0x170530){var _0x3f9464=_0x43c67c;this['name']=_0x3b3856,this[_0x3f9464('0x4d7')]=_0x170530;}var _0x4aa212=new _0x2e591d(_0x43c67c('0xe0'),new _0x2e591d(_0x43c67c('0xe2e'),null));function _0x2ef69a(){var _0x10a1fb=_0x43c67c;_0x570b0d['state'][_0x10a1fb('0x921')]=new _0x51231f(_0x570b0d['state'][_0x10a1fb('0x921')],_0x570b0d[_0x10a1fb('0xfff')][_0x10a1fb('0x9d6')],!0x1),_0x570b0d[_0x10a1fb('0xfff')][_0x10a1fb('0x9d6')]=_0x4aa212;}function _0x3a351e(){var _0x2f0f1a=_0x43c67c;_0x570b0d[_0x2f0f1a('0xfff')]['context']=new _0x51231f(_0x570b0d['state'][_0x2f0f1a('0x921')],_0x570b0d[_0x2f0f1a('0xfff')][_0x2f0f1a('0x9d6')],!0x0),_0x570b0d['state']['localVars']=null;}function _0x5a561d(){var _0x1f19ac=_0x43c67c;_0x570b0d['state']['localVars']=_0x570b0d[_0x1f19ac('0xfff')][_0x1f19ac('0x921')][_0x1f19ac('0x11ae')],_0x570b0d[_0x1f19ac('0xfff')][_0x1f19ac('0x921')]=_0x570b0d[_0x1f19ac('0xfff')][_0x1f19ac('0x921')][_0x1f19ac('0x46b')];}function _0x4e3ef4(_0x20ca98,_0x49cd22){var _0x321fb3=function(){var _0x5ad446=_0x3ab6,_0x2faf04=_0x570b0d[_0x5ad446('0xfff')],_0x3f4f33=_0x2faf04[_0x5ad446('0x25a')];if(_0x5ad446('0x31e')==_0x2faf04[_0x5ad446('0x603')]['type'])_0x3f4f33=_0x2faf04[_0x5ad446('0x603')][_0x5ad446('0x25a')];else for(var _0x2411bc=_0x2faf04['lexical'];_0x2411bc&&')'==_0x2411bc[_0x5ad446('0x3f7')]&&_0x2411bc[_0x5ad446('0xe57')];_0x2411bc=_0x2411bc[_0x5ad446('0x46b')])_0x3f4f33=_0x2411bc[_0x5ad446('0x25a')];_0x2faf04[_0x5ad446('0x603')]=new _0x1944e7(_0x3f4f33,_0x570b0d['stream'][_0x5ad446('0x865')](),_0x20ca98,null,_0x2faf04[_0x5ad446('0x603')],_0x49cd22);};return _0x321fb3['lex']=!0x0,_0x321fb3;}function _0x388fd8(){var _0x2d93d4=_0x43c67c,_0xc99c40=_0x570b0d[_0x2d93d4('0xfff')];_0xc99c40[_0x2d93d4('0x603')][_0x2d93d4('0x46b')]&&(')'==_0xc99c40[_0x2d93d4('0x603')][_0x2d93d4('0x3f7')]&&(_0xc99c40[_0x2d93d4('0x25a')]=_0xc99c40[_0x2d93d4('0x603')][_0x2d93d4('0x25a')]),_0xc99c40[_0x2d93d4('0x603')]=_0xc99c40['lexical'][_0x2d93d4('0x46b')]);}function _0x2da562(_0x314b3a){return function _0x19d48b(_0x4ef27c){return _0x4ef27c==_0x314b3a?_0x4aeb5c():';'==_0x314b3a||'}'==_0x4ef27c||')'==_0x4ef27c||']'==_0x4ef27c?_0x3ceb16():_0x4aeb5c(_0x19d48b);};}function _0x614350(_0x3a826e,_0x246b0c){var _0x4f2134=_0x43c67c;return _0x4f2134('0xb94')==_0x3a826e?_0x4aeb5c(_0x4e3ef4(_0x4f2134('0x1db'),_0x246b0c),_0x2e2cd4,_0x2da562(';'),_0x388fd8):_0x4f2134('0x9da')==_0x3a826e?_0x4aeb5c(_0x4e3ef4(_0x4f2134('0xb3')),_0xdc9701,_0x614350,_0x388fd8):_0x4f2134('0x654')==_0x3a826e?_0x4aeb5c(_0x4e3ef4(_0x4f2134('0xb3')),_0x614350,_0x388fd8):_0x4f2134('0xb81')==_0x3a826e?_0x570b0d[_0x4f2134('0xf6f')][_0x4f2134('0x91e')](/^\s*$/,!0x1)?_0x4aeb5c():_0x4aeb5c(_0x4e3ef4(_0x4f2134('0x31e')),_0x45e1b4,_0x2da562(';'),_0x388fd8):_0x4f2134('0x1a6')==_0x3a826e?_0x4aeb5c(_0x2da562(';')):'{'==_0x3a826e?_0x4aeb5c(_0x4e3ef4('}'),_0x3a351e,_0x27125f,_0x388fd8,_0x5a561d):';'==_0x3a826e?_0x4aeb5c():'if'==_0x3a826e?('else'==_0x570b0d[_0x4f2134('0xfff')]['lexical'][_0x4f2134('0x1162')]&&_0x570b0d[_0x4f2134('0xfff')]['cc'][_0x570b0d[_0x4f2134('0xfff')]['cc']['length']-0x1]==_0x388fd8&&_0x570b0d[_0x4f2134('0xfff')]['cc'][_0x4f2134('0x57f')]()(),_0x4aeb5c(_0x4e3ef4('form'),_0xdc9701,_0x614350,_0x388fd8,_0x26b755)):_0x4f2134('0xae9')==_0x3a826e?_0x4aeb5c(_0x2492c9):_0x4f2134('0xa1f')==_0x3a826e?_0x4aeb5c(_0x4e3ef4('form'),_0x2c65b0,_0x614350,_0x388fd8):'class'==_0x3a826e||_0x27a8fc&&_0x4f2134('0x45c')==_0x246b0c?(_0x570b0d[_0x4f2134('0xd2d')]='keyword',_0x4aeb5c(_0x4e3ef4('form',_0x4f2134('0x4f7')==_0x3a826e?_0x3a826e:_0x246b0c),_0x458db5,_0x388fd8)):'variable'==_0x3a826e?_0x27a8fc&&'declare'==_0x246b0c?(_0x570b0d[_0x4f2134('0xd2d')]=_0x4f2134('0x105b'),_0x4aeb5c(_0x614350)):_0x27a8fc&&(_0x4f2134('0xf94')==_0x246b0c||_0x4f2134('0x313')==_0x246b0c||_0x4f2134('0x3f7')==_0x246b0c)&&_0x570b0d[_0x4f2134('0xf6f')][_0x4f2134('0x91e')](/^\s*\w/,!0x1)?(_0x570b0d['marked']=_0x4f2134('0x105b'),_0x4f2134('0x313')==_0x246b0c?_0x4aeb5c(_0x54c339):_0x4f2134('0x3f7')==_0x246b0c?_0x4aeb5c(_0x414af2,_0x2da562(_0x4f2134('0xc5c')),_0x32567a,_0x2da562(';')):_0x4aeb5c(_0x4e3ef4(_0x4f2134('0xb3')),_0x3c9bd7,_0x2da562('{'),_0x4e3ef4('}'),_0x27125f,_0x388fd8,_0x388fd8)):_0x27a8fc&&_0x4f2134('0xa5c')==_0x246b0c?(_0x570b0d[_0x4f2134('0xd2d')]=_0x4f2134('0x105b'),_0x4aeb5c(_0x4e3ef4(_0x4f2134('0xb3')),_0x328b68,_0x614350,_0x388fd8)):_0x27a8fc&&_0x4f2134('0x140')==_0x246b0c?(_0x570b0d[_0x4f2134('0xd2d')]=_0x4f2134('0x105b'),_0x4aeb5c(_0x614350)):_0x4aeb5c(_0x4e3ef4('stat'),_0x1fc43b):_0x4f2134('0x2a8')==_0x3a826e?_0x4aeb5c(_0x4e3ef4('form'),_0xdc9701,_0x2da562('{'),_0x4e3ef4('}',_0x4f2134('0x2a8')),_0x3a351e,_0x27125f,_0x388fd8,_0x388fd8,_0x5a561d):_0x4f2134('0xb22')==_0x3a826e?_0x4aeb5c(_0x328b68,_0x2da562(':')):_0x4f2134('0x544')==_0x3a826e?_0x4aeb5c(_0x2da562(':')):_0x4f2134('0x10ee')==_0x3a826e?_0x4aeb5c(_0x4e3ef4('form'),_0x2ef69a,_0x16bda3,_0x614350,_0x388fd8,_0x5a561d):_0x4f2134('0xb')==_0x3a826e?_0x4aeb5c(_0x4e3ef4(_0x4f2134('0x31e')),_0x379fdc,_0x388fd8):'import'==_0x3a826e?_0x4aeb5c(_0x4e3ef4(_0x4f2134('0x31e')),_0x518bc0,_0x388fd8):'async'==_0x3a826e?_0x4aeb5c(_0x614350):'@'==_0x246b0c?_0x4aeb5c(_0x328b68,_0x614350):_0x3ceb16(_0x4e3ef4('stat'),_0x328b68,_0x2da562(';'),_0x388fd8);}function _0x16bda3(_0x2bb42e){if('('==_0x2bb42e)return _0x4aeb5c(_0x339022,_0x2da562(')'));}function _0x328b68(_0x14a56d,_0x2fbc41){return _0x2161f0(_0x14a56d,_0x2fbc41,!0x1);}function _0x5ada18(_0x216117,_0x59765a){return _0x2161f0(_0x216117,_0x59765a,!0x0);}function _0xdc9701(_0x3223e1){return'('!=_0x3223e1?_0x3ceb16():_0x4aeb5c(_0x4e3ef4(')'),_0x45e1b4,_0x2da562(')'),_0x388fd8);}function _0x2161f0(_0x92878d,_0x463c24,_0x550fd7){var _0x5f0256=_0x43c67c;if(_0x570b0d[_0x5f0256('0xfff')][_0x5f0256('0xb13')]==_0x570b0d[_0x5f0256('0xf6f')][_0x5f0256('0x1045')]){var _0x584c27=_0x550fd7?_0x29fb0c:_0x583286;if('('==_0x92878d)return _0x4aeb5c(_0x2ef69a,_0x4e3ef4(')'),_0x41f31c(_0x339022,')'),_0x388fd8,_0x2da562('=>'),_0x584c27,_0x5a561d);if(_0x5f0256('0xe3f')==_0x92878d)return _0x3ceb16(_0x2ef69a,_0x3c9bd7,_0x2da562('=>'),_0x584c27,_0x5a561d);}var _0x53a660=_0x550fd7?_0x42cf35:_0x302850;return _0x118668[_0x5f0256('0x100')](_0x92878d)?_0x4aeb5c(_0x53a660):'function'==_0x92878d?_0x4aeb5c(_0x2492c9,_0x53a660):_0x5f0256('0x4f7')==_0x92878d||_0x27a8fc&&_0x5f0256('0x45c')==_0x463c24?(_0x570b0d[_0x5f0256('0xd2d')]=_0x5f0256('0x105b'),_0x4aeb5c(_0x4e3ef4('form'),_0x318c58,_0x388fd8)):'keyword\x20c'==_0x92878d||_0x5f0256('0x601')==_0x92878d?_0x4aeb5c(_0x550fd7?_0x5ada18:_0x328b68):'('==_0x92878d?_0x4aeb5c(_0x4e3ef4(')'),_0x45e1b4,_0x2da562(')'),_0x388fd8,_0x53a660):_0x5f0256('0xc5c')==_0x92878d||_0x5f0256('0xa8')==_0x92878d?_0x4aeb5c(_0x550fd7?_0x5ada18:_0x328b68):'['==_0x92878d?_0x4aeb5c(_0x4e3ef4(']'),_0x2c16aa,_0x388fd8,_0x53a660):'{'==_0x92878d?_0x41ce04(_0x93bee7,'}',null,_0x53a660):_0x5f0256('0x75e')==_0x92878d?_0x3ceb16(_0x3f333b,_0x53a660):_0x5f0256('0xbdd')==_0x92878d?_0x4aeb5c(function(_0x23218d){return function(_0x5f2962){var _0x3e06d8=_0x3ab6;return'.'==_0x5f2962?_0x4aeb5c(_0x23218d?_0x36b64d:_0x109120):_0x3e06d8('0xe3f')==_0x5f2962&&_0x27a8fc?_0x4aeb5c(_0x17da00,_0x23218d?_0x42cf35:_0x302850):_0x3ceb16(_0x23218d?_0x5ada18:_0x328b68);};}(_0x550fd7)):'import'==_0x92878d?_0x4aeb5c(_0x328b68):_0x4aeb5c();}function _0x45e1b4(_0x5271e6){var _0x155154=_0x43c67c;return _0x5271e6[_0x155154('0x91e')](/[;\}\)\],]/)?_0x3ceb16():_0x3ceb16(_0x328b68);}function _0x302850(_0x1265d4,_0x26c37b){return','==_0x1265d4?_0x4aeb5c(_0x45e1b4):_0x42cf35(_0x1265d4,_0x26c37b,!0x1);}function _0x42cf35(_0x509ea5,_0x2a309c,_0xd04d27){var _0x268fa8=_0x43c67c,_0x5b81a4=0x0==_0xd04d27?_0x302850:_0x42cf35,_0x554363=0x0==_0xd04d27?_0x328b68:_0x5ada18;return'=>'==_0x509ea5?_0x4aeb5c(_0x2ef69a,_0xd04d27?_0x29fb0c:_0x583286,_0x5a561d):_0x268fa8('0xc5c')==_0x509ea5?/\+\+|--/[_0x268fa8('0xaac')](_0x2a309c)||_0x27a8fc&&'!'==_0x2a309c?_0x4aeb5c(_0x5b81a4):_0x27a8fc&&'<'==_0x2a309c&&_0x570b0d['stream']['match'](/^([^<>]|<[^<>]*>)*>\s*\(/,!0x1)?_0x4aeb5c(_0x4e3ef4('>'),_0x41f31c(_0x32567a,'>'),_0x388fd8,_0x5b81a4):'?'==_0x2a309c?_0x4aeb5c(_0x328b68,_0x2da562(':'),_0x554363):_0x4aeb5c(_0x554363):_0x268fa8('0x75e')==_0x509ea5?_0x3ceb16(_0x3f333b,_0x5b81a4):';'!=_0x509ea5?'('==_0x509ea5?_0x41ce04(_0x5ada18,')',_0x268fa8('0x4b0'),_0x5b81a4):'.'==_0x509ea5?_0x4aeb5c(_0x2b8277,_0x5b81a4):'['==_0x509ea5?_0x4aeb5c(_0x4e3ef4(']'),_0x45e1b4,_0x2da562(']'),_0x388fd8,_0x5b81a4):_0x27a8fc&&'as'==_0x2a309c?(_0x570b0d[_0x268fa8('0xd2d')]=_0x268fa8('0x105b'),_0x4aeb5c(_0x32567a,_0x5b81a4)):_0x268fa8('0xb24')==_0x509ea5?(_0x570b0d['state'][_0x268fa8('0x1140')]=_0x570b0d[_0x268fa8('0xd2d')]=_0x268fa8('0xc5c'),_0x570b0d[_0x268fa8('0xf6f')]['backUp'](_0x570b0d[_0x268fa8('0xf6f')][_0x268fa8('0x1121')]-_0x570b0d[_0x268fa8('0xf6f')]['start']-0x1),_0x4aeb5c(_0x554363)):void 0x0:void 0x0;}function _0x3f333b(_0xca9d5a,_0x5cffe6){var _0x539bb9=_0x43c67c;return'quasi'!=_0xca9d5a?_0x3ceb16():'${'!=_0x5cffe6[_0x539bb9('0xbc0')](_0x5cffe6[_0x539bb9('0x525')]-0x2)?_0x4aeb5c(_0x3f333b):_0x4aeb5c(_0x328b68,_0x3ee516);}function _0x3ee516(_0x4849f1){var _0x35701b=_0x43c67c;if('}'==_0x4849f1)return _0x570b0d['marked']=_0x35701b('0x972'),_0x570b0d['state'][_0x35701b('0x276')]=_0x12c054,_0x4aeb5c(_0x3f333b);}function _0x583286(_0x2791d1){var _0x2a5601=_0x43c67c;return _0x22ac2f(_0x570b0d['stream'],_0x570b0d[_0x2a5601('0xfff')]),_0x3ceb16('{'==_0x2791d1?_0x614350:_0x328b68);}function _0x29fb0c(_0x5ab1a4){var _0x2d6d6c=_0x43c67c;return _0x22ac2f(_0x570b0d[_0x2d6d6c('0xf6f')],_0x570b0d[_0x2d6d6c('0xfff')]),_0x3ceb16('{'==_0x5ab1a4?_0x614350:_0x5ada18);}function _0x109120(_0x2c43f7,_0x1e3905){var _0x47610a=_0x43c67c;if(_0x47610a('0x616')==_0x1e3905)return _0x570b0d['marked']='keyword',_0x4aeb5c(_0x302850);}function _0x36b64d(_0xbc90b6,_0x44e980){var _0x5702cb=_0x43c67c;if('target'==_0x44e980)return _0x570b0d[_0x5702cb('0xd2d')]=_0x5702cb('0x105b'),_0x4aeb5c(_0x42cf35);}function _0x1fc43b(_0x40d395){return':'==_0x40d395?_0x4aeb5c(_0x388fd8,_0x614350):_0x3ceb16(_0x302850,_0x2da562(';'),_0x388fd8);}function _0x2b8277(_0x5bd911){var _0x25ab90=_0x43c67c;if(_0x25ab90('0xe3f')==_0x5bd911)return _0x570b0d[_0x25ab90('0xd2d')]='property',_0x4aeb5c();}function _0x93bee7(_0x263439,_0x22091c){var _0x4bcb3c=_0x43c67c;return _0x4bcb3c('0x601')==_0x263439?(_0x570b0d[_0x4bcb3c('0xd2d')]='property',_0x4aeb5c(_0x93bee7)):_0x4bcb3c('0xe3f')==_0x263439||_0x4bcb3c('0x105b')==_0x570b0d['style']?(_0x570b0d[_0x4bcb3c('0xd2d')]=_0x4bcb3c('0x360'),_0x4bcb3c('0x33')==_0x22091c||_0x4bcb3c('0x11ce')==_0x22091c?_0x4aeb5c(_0x59680a):(_0x27a8fc&&_0x570b0d[_0x4bcb3c('0xfff')][_0x4bcb3c('0xb13')]==_0x570b0d[_0x4bcb3c('0xf6f')][_0x4bcb3c('0x1045')]&&(_0xbea880=_0x570b0d['stream'][_0x4bcb3c('0x91e')](/^\s*:\s*/,!0x1))&&(_0x570b0d[_0x4bcb3c('0xfff')]['fatArrowAt']=_0x570b0d[_0x4bcb3c('0xf6f')][_0x4bcb3c('0x1121')]+_0xbea880[0x0][_0x4bcb3c('0x525')]),_0x4aeb5c(_0x5a96bf))):_0x4bcb3c('0xd95')==_0x263439||_0x4bcb3c('0x7c7')==_0x263439?(_0x570b0d['marked']=_0x2e1ed0?_0x4bcb3c('0x360'):_0x570b0d[_0x4bcb3c('0x1cd')]+_0x4bcb3c('0xe27'),_0x4aeb5c(_0x5a96bf)):_0x4bcb3c('0x39d')==_0x263439?_0x4aeb5c(_0x5a96bf):_0x27a8fc&&_0x1f1324(_0x22091c)?(_0x570b0d[_0x4bcb3c('0xd2d')]=_0x4bcb3c('0x105b'),_0x4aeb5c(_0x93bee7)):'['==_0x263439?_0x4aeb5c(_0x328b68,_0x745f7,_0x2da562(']'),_0x5a96bf):_0x4bcb3c('0xa8')==_0x263439?_0x4aeb5c(_0x5ada18,_0x5a96bf):'*'==_0x22091c?(_0x570b0d['marked']='keyword',_0x4aeb5c(_0x93bee7)):':'==_0x263439?_0x3ceb16(_0x5a96bf):void 0x0;var _0xbea880;}function _0x59680a(_0x3491d2){var _0x145990=_0x43c67c;return'variable'!=_0x3491d2?_0x3ceb16(_0x5a96bf):(_0x570b0d[_0x145990('0xd2d')]='property',_0x4aeb5c(_0x2492c9));}function _0x5a96bf(_0x3b1599){return':'==_0x3b1599?_0x4aeb5c(_0x5ada18):'('==_0x3b1599?_0x3ceb16(_0x2492c9):void 0x0;}function _0x41f31c(_0x4981f9,_0x31d5bd,_0x10cfcc){function _0x143e0b(_0x5f39f2,_0x47e4a1){var _0x359fd3=_0x3ab6;if(_0x10cfcc?_0x10cfcc[_0x359fd3('0x4dc')](_0x5f39f2)>-0x1:','==_0x5f39f2){var _0x4ccbfa=_0x570b0d[_0x359fd3('0xfff')][_0x359fd3('0x603')];return _0x359fd3('0x4b0')==_0x4ccbfa['info']&&(_0x4ccbfa[_0x359fd3('0x1121')]=(_0x4ccbfa[_0x359fd3('0x1121')]||0x0)+0x1),_0x4aeb5c(function(_0x3babd4,_0x28db4e){return _0x3babd4==_0x31d5bd||_0x28db4e==_0x31d5bd?_0x3ceb16():_0x3ceb16(_0x4981f9);},_0x143e0b);}return _0x5f39f2==_0x31d5bd||_0x47e4a1==_0x31d5bd?_0x4aeb5c():_0x10cfcc&&_0x10cfcc[_0x359fd3('0x4dc')](';')>-0x1?_0x3ceb16(_0x4981f9):_0x4aeb5c(_0x2da562(_0x31d5bd));}return function(_0x2d8d1f,_0x31a92c){return _0x2d8d1f==_0x31d5bd||_0x31a92c==_0x31d5bd?_0x4aeb5c():_0x3ceb16(_0x4981f9,_0x143e0b);};}function _0x41ce04(_0x192976,_0x29ea6e,_0x1e9f5e){var _0x17a88d=_0x43c67c;for(var _0x29edc1=0x3;_0x29edc1'),_0x32567a):void 0x0;}function _0x2447a7(_0x23f081){if('=>'==_0x23f081)return _0x4aeb5c(_0x32567a);}function _0x383846(_0x438413,_0x5036d7){var _0x13aea3=_0x43c67c;return'variable'==_0x438413||_0x13aea3('0x105b')==_0x570b0d[_0x13aea3('0x1cd')]?(_0x570b0d[_0x13aea3('0xd2d')]=_0x13aea3('0x360'),_0x4aeb5c(_0x383846)):'?'==_0x5036d7||_0x13aea3('0xd95')==_0x438413||_0x13aea3('0x7c7')==_0x438413?_0x4aeb5c(_0x383846):':'==_0x438413?_0x4aeb5c(_0x32567a):'['==_0x438413?_0x4aeb5c(_0x2da562(_0x13aea3('0xe3f')),_0x5a97e4,_0x2da562(']'),_0x383846):'('==_0x438413?_0x3ceb16(_0x44e7c2,_0x383846):void 0x0;}function _0x4b4561(_0x30a9b4,_0x50a94b){var _0x102039=_0x43c67c;return _0x102039('0xe3f')==_0x30a9b4&&_0x570b0d['stream'][_0x102039('0x91e')](/^\s*[?:]/,!0x1)||'?'==_0x50a94b?_0x4aeb5c(_0x4b4561):':'==_0x30a9b4?_0x4aeb5c(_0x32567a):'spread'==_0x30a9b4?_0x4aeb5c(_0x4b4561):_0x3ceb16(_0x32567a);}function _0x241c4a(_0x1b893b,_0x9d8bdf){var _0x1926e1=_0x43c67c;return'<'==_0x9d8bdf?_0x4aeb5c(_0x4e3ef4('>'),_0x41f31c(_0x32567a,'>'),_0x388fd8,_0x241c4a):'|'==_0x9d8bdf||'.'==_0x1b893b||'&'==_0x9d8bdf?_0x4aeb5c(_0x32567a):'['==_0x1b893b?_0x4aeb5c(_0x32567a,_0x2da562(']'),_0x241c4a):'extends'==_0x9d8bdf||_0x1926e1('0x11db')==_0x9d8bdf?(_0x570b0d['marked']=_0x1926e1('0x105b'),_0x4aeb5c(_0x32567a)):'?'==_0x9d8bdf?_0x4aeb5c(_0x32567a,_0x2da562(':'),_0x32567a):void 0x0;}function _0x17da00(_0x5ef3b3,_0x2a8e51){if('<'==_0x2a8e51)return _0x4aeb5c(_0x4e3ef4('>'),_0x41f31c(_0x32567a,'>'),_0x388fd8,_0x241c4a);}function _0x472b4f(){return _0x3ceb16(_0x32567a,_0x393021);}function _0x393021(_0x2dc5f7,_0xf4dc5c){if('='==_0xf4dc5c)return _0x4aeb5c(_0x32567a);}function _0x2e2cd4(_0x1f3d3a,_0x437510){var _0x552fd5=_0x43c67c;return _0x552fd5('0x313')==_0x437510?(_0x570b0d['marked']=_0x552fd5('0x105b'),_0x4aeb5c(_0x54c339)):_0x3ceb16(_0x3c9bd7,_0x745f7,_0xe5d367,_0xb7b066);}function _0x3c9bd7(_0x3cabcc,_0xfdeeeb){var _0xf469c3=_0x43c67c;return _0x27a8fc&&_0x1f1324(_0xfdeeeb)?(_0x570b0d[_0xf469c3('0xd2d')]=_0xf469c3('0x105b'),_0x4aeb5c(_0x3c9bd7)):_0xf469c3('0xe3f')==_0x3cabcc?(_0x3c2042(_0xfdeeeb),_0x4aeb5c()):'spread'==_0x3cabcc?_0x4aeb5c(_0x3c9bd7):'['==_0x3cabcc?_0x41ce04(_0x5e7944,']'):'{'==_0x3cabcc?_0x41ce04(_0x3ecadb,'}'):void 0x0;}function _0x3ecadb(_0x533bc5,_0x57fb0a){var _0x21ab9c=_0x43c67c;return _0x21ab9c('0xe3f')!=_0x533bc5||_0x570b0d[_0x21ab9c('0xf6f')][_0x21ab9c('0x91e')](/^\s*:/,!0x1)?(_0x21ab9c('0xe3f')==_0x533bc5&&(_0x570b0d[_0x21ab9c('0xd2d')]=_0x21ab9c('0x360')),_0x21ab9c('0xa8')==_0x533bc5?_0x4aeb5c(_0x3c9bd7):'}'==_0x533bc5?_0x3ceb16():'['==_0x533bc5?_0x4aeb5c(_0x328b68,_0x2da562(']'),_0x2da562(':'),_0x3ecadb):_0x4aeb5c(_0x2da562(':'),_0x3c9bd7,_0xe5d367)):(_0x3c2042(_0x57fb0a),_0x4aeb5c(_0xe5d367));}function _0x5e7944(){return _0x3ceb16(_0x3c9bd7,_0xe5d367);}function _0xe5d367(_0x15a401,_0x2c3f1e){if('='==_0x2c3f1e)return _0x4aeb5c(_0x5ada18);}function _0xb7b066(_0x20d82d){if(','==_0x20d82d)return _0x4aeb5c(_0x2e2cd4);}function _0x26b755(_0xf852df,_0x138397){var _0x4db9bc=_0x43c67c;if(_0x4db9bc('0x654')==_0xf852df&&_0x4db9bc('0x880')==_0x138397)return _0x4aeb5c(_0x4e3ef4('form',_0x4db9bc('0x880')),_0x614350,_0x388fd8);}function _0x2c65b0(_0x5d81b5,_0x4d972e){var _0x45c328=_0x43c67c;return _0x45c328('0x590')==_0x4d972e?_0x4aeb5c(_0x2c65b0):'('==_0x5d81b5?_0x4aeb5c(_0x4e3ef4(')'),_0x39dda5,_0x388fd8):void 0x0;}function _0x39dda5(_0x24c91c){var _0x1408b3=_0x43c67c;return'var'==_0x24c91c?_0x4aeb5c(_0x2e2cd4,_0x347641):_0x1408b3('0xe3f')==_0x24c91c?_0x4aeb5c(_0x347641):_0x3ceb16(_0x347641);}function _0x347641(_0x17030e,_0x140f1b){var _0x38cf5d=_0x43c67c;return')'==_0x17030e?_0x4aeb5c():';'==_0x17030e?_0x4aeb5c(_0x347641):'in'==_0x140f1b||'of'==_0x140f1b?(_0x570b0d[_0x38cf5d('0xd2d')]=_0x38cf5d('0x105b'),_0x4aeb5c(_0x328b68,_0x347641)):_0x3ceb16(_0x328b68,_0x347641);}function _0x2492c9(_0x2bddd6,_0x3b8d34){var _0x2ab758=_0x43c67c;return'*'==_0x3b8d34?(_0x570b0d[_0x2ab758('0xd2d')]='keyword',_0x4aeb5c(_0x2492c9)):_0x2ab758('0xe3f')==_0x2bddd6?(_0x3c2042(_0x3b8d34),_0x4aeb5c(_0x2492c9)):'('==_0x2bddd6?_0x4aeb5c(_0x2ef69a,_0x4e3ef4(')'),_0x41f31c(_0x339022,')'),_0x388fd8,_0x3dd19b,_0x614350,_0x5a561d):_0x27a8fc&&'<'==_0x3b8d34?_0x4aeb5c(_0x4e3ef4('>'),_0x41f31c(_0x472b4f,'>'),_0x388fd8,_0x2492c9):void 0x0;}function _0x44e7c2(_0x325a36,_0x30a222){var _0x5e404f=_0x43c67c;return'*'==_0x30a222?(_0x570b0d[_0x5e404f('0xd2d')]='keyword',_0x4aeb5c(_0x44e7c2)):_0x5e404f('0xe3f')==_0x325a36?(_0x3c2042(_0x30a222),_0x4aeb5c(_0x44e7c2)):'('==_0x325a36?_0x4aeb5c(_0x2ef69a,_0x4e3ef4(')'),_0x41f31c(_0x339022,')'),_0x388fd8,_0x3dd19b,_0x5a561d):_0x27a8fc&&'<'==_0x30a222?_0x4aeb5c(_0x4e3ef4('>'),_0x41f31c(_0x472b4f,'>'),_0x388fd8,_0x44e7c2):void 0x0;}function _0x414af2(_0x2b4272,_0x27d917){var _0xdc9045=_0x43c67c;return _0xdc9045('0x105b')==_0x2b4272||_0xdc9045('0xe3f')==_0x2b4272?(_0x570b0d[_0xdc9045('0xd2d')]=_0xdc9045('0x3f7'),_0x4aeb5c(_0x414af2)):'<'==_0x27d917?_0x4aeb5c(_0x4e3ef4('>'),_0x41f31c(_0x472b4f,'>'),_0x388fd8):void 0x0;}function _0x339022(_0x267a90,_0x36ce60){var _0x114be6=_0x43c67c;return'@'==_0x36ce60&&_0x4aeb5c(_0x328b68,_0x339022),_0x114be6('0xa8')==_0x267a90?_0x4aeb5c(_0x339022):_0x27a8fc&&_0x1f1324(_0x36ce60)?(_0x570b0d[_0x114be6('0xd2d')]=_0x114be6('0x105b'),_0x4aeb5c(_0x339022)):_0x27a8fc&&'this'==_0x267a90?_0x4aeb5c(_0x745f7,_0xe5d367):_0x3ceb16(_0x3c9bd7,_0x745f7,_0xe5d367);}function _0x318c58(_0x3ee98e,_0x5f3ad2){var _0x5b65ca=_0x43c67c;return _0x5b65ca('0xe3f')==_0x3ee98e?_0x458db5(_0x3ee98e,_0x5f3ad2):_0x41b826(_0x3ee98e,_0x5f3ad2);}function _0x458db5(_0x5503f0,_0x4ad637){if('variable'==_0x5503f0)return _0x3c2042(_0x4ad637),_0x4aeb5c(_0x41b826);}function _0x41b826(_0x3aec63,_0x524121){var _0x303fdb=_0x43c67c;return'<'==_0x524121?_0x4aeb5c(_0x4e3ef4('>'),_0x41f31c(_0x472b4f,'>'),_0x388fd8,_0x41b826):_0x303fdb('0x2c4')==_0x524121||_0x303fdb('0x11db')==_0x524121||_0x27a8fc&&','==_0x3aec63?(_0x303fdb('0x11db')==_0x524121&&(_0x570b0d['marked']=_0x303fdb('0x105b')),_0x4aeb5c(_0x27a8fc?_0x32567a:_0x328b68,_0x41b826)):'{'==_0x3aec63?_0x4aeb5c(_0x4e3ef4('}'),_0x4f5b08,_0x388fd8):void 0x0;}function _0x4f5b08(_0x5ad81a,_0x25bbe9){var _0x1d83ba=_0x43c67c;return _0x1d83ba('0x601')==_0x5ad81a||_0x1d83ba('0xe3f')==_0x5ad81a&&(_0x1d83ba('0xf2e')==_0x25bbe9||_0x1d83ba('0x33')==_0x25bbe9||_0x1d83ba('0x11ce')==_0x25bbe9||_0x27a8fc&&_0x1f1324(_0x25bbe9))&&_0x570b0d[_0x1d83ba('0xf6f')][_0x1d83ba('0x91e')](/^\s+[\w$\xa1-\uffff]/,!0x1)?(_0x570b0d[_0x1d83ba('0xd2d')]='keyword',_0x4aeb5c(_0x4f5b08)):_0x1d83ba('0xe3f')==_0x5ad81a||'keyword'==_0x570b0d['style']?(_0x570b0d['marked']=_0x1d83ba('0x360'),_0x4aeb5c(_0x18f628,_0x4f5b08)):_0x1d83ba('0xd95')==_0x5ad81a||_0x1d83ba('0x7c7')==_0x5ad81a?_0x4aeb5c(_0x18f628,_0x4f5b08):'['==_0x5ad81a?_0x4aeb5c(_0x328b68,_0x745f7,_0x2da562(']'),_0x18f628,_0x4f5b08):'*'==_0x25bbe9?(_0x570b0d[_0x1d83ba('0xd2d')]='keyword',_0x4aeb5c(_0x4f5b08)):_0x27a8fc&&'('==_0x5ad81a?_0x3ceb16(_0x44e7c2,_0x4f5b08):';'==_0x5ad81a||','==_0x5ad81a?_0x4aeb5c(_0x4f5b08):'}'==_0x5ad81a?_0x4aeb5c():'@'==_0x25bbe9?_0x4aeb5c(_0x328b68,_0x4f5b08):void 0x0;}function _0x18f628(_0x461d0d,_0x8bc98d){var _0x15c8d4=_0x43c67c;if('?'==_0x8bc98d)return _0x4aeb5c(_0x18f628);if(':'==_0x461d0d)return _0x4aeb5c(_0x32567a,_0xe5d367);if('='==_0x8bc98d)return _0x4aeb5c(_0x5ada18);var _0x29415d=_0x570b0d[_0x15c8d4('0xfff')][_0x15c8d4('0x603')][_0x15c8d4('0x46b')];return _0x3ceb16(_0x29415d&&_0x15c8d4('0x45c')==_0x29415d[_0x15c8d4('0x1162')]?_0x44e7c2:_0x2492c9);}function _0x379fdc(_0x568689,_0x4ad871){var _0x44427c=_0x43c67c;return'*'==_0x4ad871?(_0x570b0d[_0x44427c('0xd2d')]=_0x44427c('0x105b'),_0x4aeb5c(_0x295f8e,_0x2da562(';'))):_0x44427c('0x544')==_0x4ad871?(_0x570b0d[_0x44427c('0xd2d')]=_0x44427c('0x105b'),_0x4aeb5c(_0x328b68,_0x2da562(';'))):'{'==_0x568689?_0x4aeb5c(_0x41f31c(_0x3ff9d8,'}'),_0x295f8e,_0x2da562(';')):_0x3ceb16(_0x614350);}function _0x3ff9d8(_0x426ab5,_0x4397be){var _0x2bdec1=_0x43c67c;return'as'==_0x4397be?(_0x570b0d[_0x2bdec1('0xd2d')]=_0x2bdec1('0x105b'),_0x4aeb5c(_0x2da562('variable'))):_0x2bdec1('0xe3f')==_0x426ab5?_0x3ceb16(_0x5ada18,_0x3ff9d8):void 0x0;}function _0x518bc0(_0x58bbb3){return'string'==_0x58bbb3?_0x4aeb5c():'('==_0x58bbb3?_0x3ceb16(_0x328b68):_0x3ceb16(_0x5bff28,_0x431c80,_0x295f8e);}function _0x5bff28(_0x4bf468,_0x461e6d){var _0xdb4e0b=_0x43c67c;return'{'==_0x4bf468?_0x41ce04(_0x5bff28,'}'):(_0xdb4e0b('0xe3f')==_0x4bf468&&_0x3c2042(_0x461e6d),'*'==_0x461e6d&&(_0x570b0d[_0xdb4e0b('0xd2d')]=_0xdb4e0b('0x105b')),_0x4aeb5c(_0x110f80));}function _0x431c80(_0xa48858){if(','==_0xa48858)return _0x4aeb5c(_0x5bff28,_0x431c80);}function _0x110f80(_0x45b992,_0x1b0b1b){var _0x32bf94=_0x43c67c;if('as'==_0x1b0b1b)return _0x570b0d['marked']=_0x32bf94('0x105b'),_0x4aeb5c(_0x5bff28);}function _0x295f8e(_0x3d6a35,_0x5413df){var _0x13401e=_0x43c67c;if(_0x13401e('0x9d7')==_0x5413df)return _0x570b0d[_0x13401e('0xd2d')]='keyword',_0x4aeb5c(_0x328b68);}function _0x2c16aa(_0x3bbaf5){return']'==_0x3bbaf5?_0x4aeb5c():_0x3ceb16(_0x41f31c(_0x5ada18,']'));}function _0x54c339(){return _0x3ceb16(_0x4e3ef4('form'),_0x3c9bd7,_0x2da562('{'),_0x4e3ef4('}'),_0x41f31c(_0x174c90,'}'),_0x388fd8,_0x388fd8);}function _0x174c90(){return _0x3ceb16(_0x3c9bd7,_0xe5d367);}function _0x587218(_0x7e7d1,_0x44abdb,_0x1688b7){var _0x59ffc0=_0x43c67c;return _0x44abdb[_0x59ffc0('0x276')]==_0x591149&&/^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\[{}\(,;:]|=>)$/[_0x59ffc0('0xaac')](_0x44abdb[_0x59ffc0('0x1140')])||'quasi'==_0x44abdb[_0x59ffc0('0x1140')]&&/\{\s*$/[_0x59ffc0('0xaac')](_0x7e7d1[_0x59ffc0('0x7c7')][_0x59ffc0('0xbc0')](0x0,_0x7e7d1['pos']-(_0x1688b7||0x0)));}return _0x5a561d[_0x43c67c('0x5a5')]=!0x0,_0x388fd8[_0x43c67c('0x5a5')]=!0x0,{'startState':function(_0x4afde8){var _0x372fd1=_0x43c67c,_0x19283e={'tokenize':_0x591149,'lastType':_0x372fd1('0xbcf'),'cc':[],'lexical':new _0x1944e7((_0x4afde8||0x0)-_0x46fffc,0x0,_0x372fd1('0xa52'),!0x1),'localVars':_0x20be9d[_0x372fd1('0x9d6')],'context':_0x20be9d[_0x372fd1('0x9d6')]&&new _0x51231f(null,null,!0x1),'indented':_0x4afde8||0x0};return _0x20be9d['globalVars']&&'object'==typeof _0x20be9d['globalVars']&&(_0x19283e['globalVars']=_0x20be9d[_0x372fd1('0x527')]),_0x19283e;},'token':function(_0x360760,_0xcf9ea6){var _0x3104c4=_0x43c67c;if(_0x360760[_0x3104c4('0x917')]()&&(_0xcf9ea6[_0x3104c4('0x603')][_0x3104c4('0x100')](_0x3104c4('0xe57'))||(_0xcf9ea6[_0x3104c4('0x603')]['align']=!0x1),_0xcf9ea6[_0x3104c4('0x25a')]=_0x360760[_0x3104c4('0x475')](),_0x22ac2f(_0x360760,_0xcf9ea6)),_0xcf9ea6['tokenize']!=_0x1fe10e&&_0x360760['eatSpace']())return null;var _0x3b50b6=_0xcf9ea6[_0x3104c4('0x276')](_0x360760,_0xcf9ea6);return _0x3104c4('0xf8f')==_0x31dfce?_0x3b50b6:(_0xcf9ea6[_0x3104c4('0x1140')]=_0x3104c4('0xc5c')!=_0x31dfce||'++'!=_0x3f39f6&&'--'!=_0x3f39f6?_0x31dfce:_0x3104c4('0x2c2'),function(_0x4d0397,_0x3aa9f4,_0x3421f4,_0x119ac1,_0x537bac){var _0x530e56=_0x3104c4,_0x4751bf=_0x4d0397['cc'];for(_0x570b0d['state']=_0x4d0397,_0x570b0d[_0x530e56('0xf6f')]=_0x537bac,_0x570b0d[_0x530e56('0xd2d')]=null,_0x570b0d['cc']=_0x4751bf,_0x570b0d['style']=_0x3aa9f4,_0x4d0397[_0x530e56('0x603')][_0x530e56('0x100')](_0x530e56('0xe57'))||(_0x4d0397['lexical'][_0x530e56('0xe57')]=!0x0);;)if((_0x4751bf['length']?_0x4751bf[_0x530e56('0x57f')]():_0x2fbd78?_0x328b68:_0x614350)(_0x3421f4,_0x119ac1)){for(;_0x4751bf[_0x530e56('0x525')]&&_0x4751bf[_0x4751bf[_0x530e56('0x525')]-0x1]['lex'];)_0x4751bf[_0x530e56('0x57f')]()();return _0x570b0d[_0x530e56('0xd2d')]?_0x570b0d[_0x530e56('0xd2d')]:'variable'==_0x3421f4&&_0x1f1a7e(_0x4d0397,_0x119ac1)?'variable-2':_0x3aa9f4;}}(_0xcf9ea6,_0x3b50b6,_0x31dfce,_0x3f39f6,_0x360760));},'indent':function(_0x35e6ce,_0x4abad1){var _0x25ae2f=_0x43c67c;if(_0x35e6ce[_0x25ae2f('0x276')]==_0x1fe10e)return _0x3174a6[_0x25ae2f('0x1096')];if(_0x35e6ce[_0x25ae2f('0x276')]!=_0x591149)return 0x0;var _0x457bdf,_0x2d4bba=_0x4abad1&&_0x4abad1[_0x25ae2f('0xc8e')](0x0),_0xfce106=_0x35e6ce[_0x25ae2f('0x603')];if(!/^\s*else\b/[_0x25ae2f('0xaac')](_0x4abad1))for(var _0x4aa180=_0x35e6ce['cc'][_0x25ae2f('0x525')]-0x1;_0x4aa180>=0x0;--_0x4aa180){var _0x202993=_0x35e6ce['cc'][_0x4aa180];if(_0x202993==_0x388fd8)_0xfce106=_0xfce106[_0x25ae2f('0x46b')];else{if(_0x202993!=_0x26b755)break;}}for(;('stat'==_0xfce106[_0x25ae2f('0x3f7')]||_0x25ae2f('0xb3')==_0xfce106['type'])&&('}'==_0x2d4bba||(_0x457bdf=_0x35e6ce['cc'][_0x35e6ce['cc'][_0x25ae2f('0x525')]-0x1])&&(_0x457bdf==_0x302850||_0x457bdf==_0x42cf35)&&!/^[,\.=+\-*:?[\(]/[_0x25ae2f('0xaac')](_0x4abad1));)_0xfce106=_0xfce106[_0x25ae2f('0x46b')];_0x43bc86&&')'==_0xfce106[_0x25ae2f('0x3f7')]&&'stat'==_0xfce106[_0x25ae2f('0x46b')][_0x25ae2f('0x3f7')]&&(_0xfce106=_0xfce106['prev']);var _0x26755b=_0xfce106[_0x25ae2f('0x3f7')],_0x469127=_0x2d4bba==_0x26755b;return _0x25ae2f('0x1db')==_0x26755b?_0xfce106[_0x25ae2f('0x25a')]+('operator'==_0x35e6ce[_0x25ae2f('0x1140')]||','==_0x35e6ce[_0x25ae2f('0x1140')]?_0xfce106['info'][_0x25ae2f('0x525')]+0x1:0x0):_0x25ae2f('0xb3')==_0x26755b&&'{'==_0x2d4bba?_0xfce106[_0x25ae2f('0x25a')]:_0x25ae2f('0xb3')==_0x26755b?_0xfce106[_0x25ae2f('0x25a')]+_0x46fffc:_0x25ae2f('0x31e')==_0x26755b?_0xfce106[_0x25ae2f('0x25a')]+(function(_0x4055f7,_0x32ceab){var _0x476814=_0x25ae2f;return _0x476814('0xc5c')==_0x4055f7['lastType']||','==_0x4055f7[_0x476814('0x1140')]||_0x36c703[_0x476814('0xaac')](_0x32ceab[_0x476814('0xc8e')](0x0))||/[,.]/[_0x476814('0xaac')](_0x32ceab[_0x476814('0xc8e')](0x0));}(_0x35e6ce,_0x4abad1)?_0x43bc86||_0x46fffc:0x0):_0x25ae2f('0x2a8')!=_0xfce106[_0x25ae2f('0x1162')]||_0x469127||0x0==_0x20be9d['doubleIndentSwitch']?_0xfce106[_0x25ae2f('0xe57')]?_0xfce106[_0x25ae2f('0x865')]+(_0x469127?0x0:0x1):_0xfce106['indented']+(_0x469127?0x0:_0x46fffc):_0xfce106[_0x25ae2f('0x25a')]+(/^(?:case|default)\b/[_0x25ae2f('0xaac')](_0x4abad1)?_0x46fffc:0x2*_0x46fffc);},'electricInput':/^\s*(?:case .*?:|default:|\{|\})$/,'blockCommentStart':_0x2fbd78?null:'/*','blockCommentEnd':_0x2fbd78?null:'*/','blockCommentContinue':_0x2fbd78?null:_0x43c67c('0xe74'),'lineComment':_0x2fbd78?null:'//','fold':'brace','closeBrackets':_0x43c67c('0xe5f'),'helperType':_0x2fbd78?_0x43c67c('0x41c'):_0x43c67c('0xdd2'),'jsonldMode':_0x2e1ed0,'jsonMode':_0x2fbd78,'expressionAllowed':_0x587218,'skipExpression':function(_0x5bbcf0){var _0x415b5e=_0x43c67c,_0x36c5cc=_0x5bbcf0['cc'][_0x5bbcf0['cc'][_0x415b5e('0x525')]-0x1];_0x36c5cc!=_0x328b68&&_0x36c5cc!=_0x5ada18||_0x5bbcf0['cc'][_0x415b5e('0x57f')]();}};}),_0x3174a6[_0x2b0018('0x10a')](_0x2b0018('0x342'),'javascript',/[\w$]/),_0x3174a6['defineMIME'](_0x2b0018('0x64d'),_0x2b0018('0xdd2')),_0x3174a6[_0x2b0018('0x739')](_0x2b0018('0xc64'),_0x2b0018('0xdd2')),_0x3174a6[_0x2b0018('0x739')](_0x2b0018('0xf84'),_0x2b0018('0xdd2')),_0x3174a6[_0x2b0018('0x739')](_0x2b0018('0x306'),_0x2b0018('0xdd2')),_0x3174a6[_0x2b0018('0x739')]('application/ecmascript',_0x2b0018('0xdd2')),_0x3174a6['defineMIME'](_0x2b0018('0x738'),{'name':_0x2b0018('0xdd2'),'json':!0x0}),_0x3174a6['defineMIME'](_0x2b0018('0x6b9'),{'name':_0x2b0018('0xdd2'),'json':!0x0}),_0x3174a6[_0x2b0018('0x739')](_0x2b0018('0x2e8'),{'name':_0x2b0018('0xdd2'),'jsonld':!0x0}),_0x3174a6[_0x2b0018('0x739')](_0x2b0018('0x2ff'),{'name':_0x2b0018('0xdd2'),'typescript':!0x0}),_0x3174a6['defineMIME'](_0x2b0018('0x580'),{'name':'javascript','typescript':!0x0});},'object'==typeof _0xe40111&&_0x450f57('0x21e')==typeof _0x26bfb8?_0xc019e(_0x1b92ba(_0x450f57('0x1182'))):_0x450f57('0xae9')==typeof define&&define['amd']?define(['../../lib/codemirror'],_0xc019e):_0xc019e(CodeMirror);},{'../../lib/codemirror':0x74}],0x76:[function(_0x3e94a6,_0x44e4a4,_0x4b1ca1){!function(_0x569dc5,_0x23564a){var _0x478059=_0x3ab6;_0x478059('0x21e')==typeof _0x4b1ca1&&void 0x0!==_0x44e4a4?_0x44e4a4[_0x478059('0xddc')]=_0x23564a():_0x478059('0xae9')==typeof define&&define['amd']?define(_0x23564a):(_0x569dc5=_0x478059('0x56')!=typeof globalThis?globalThis:_0x569dc5||self)[_0x478059('0xebf')]=_0x23564a();}(this,function(){var _0x4b6dcf=_0x3ab6;'use strict';var _0x1992c6=0xea60,_0x513ab9=0x36ee80,_0x261b13=_0x4b6dcf('0x11a0'),_0x29db60='second',_0x5d9f92=_0x4b6dcf('0xfec'),_0x2d89b4=_0x4b6dcf('0xaaa'),_0x34c809=_0x4b6dcf('0x2c3'),_0x36d6a4=_0x4b6dcf('0xec2'),_0x15e54d=_0x4b6dcf('0x614'),_0x2f316d=_0x4b6dcf('0x100f'),_0x5b5be5='year',_0x3c383f='date',_0xd2c66e='Invalid\x20Date',_0x10c655=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[^0-9]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,_0x59febf=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,_0x147cd7={'name':'en','weekdays':_0x4b6dcf('0xd69')[_0x4b6dcf('0x541')]('_'),'months':_0x4b6dcf('0xaee')[_0x4b6dcf('0x541')]('_')},_0x2bbec3=function(_0x457050,_0x3beb38,_0x1770fe){var _0x5d4994=_0x4b6dcf,_0x477fb7=String(_0x457050);return!_0x477fb7||_0x477fb7['length']>=_0x3beb38?_0x457050:''+Array(_0x3beb38+0x1-_0x477fb7['length'])[_0x5d4994('0x582')](_0x1770fe)+_0x457050;},_0x19e2c6={'s':_0x2bbec3,'z':function(_0xe8ee30){var _0x2e5d32=_0x4b6dcf,_0x31175a=-_0xe8ee30[_0x2e5d32('0x110e')](),_0x22f583=Math['abs'](_0x31175a),_0x48aa0c=Math[_0x2e5d32('0x536')](_0x22f583/0x3c),_0x4eceb1=_0x22f583%0x3c;return(_0x31175a<=0x0?'+':'-')+_0x2bbec3(_0x48aa0c,0x2,'0')+':'+_0x2bbec3(_0x4eceb1,0x2,'0');},'m':function _0x446071(_0x1cade1,_0x257b7a){var _0xe7707e=_0x4b6dcf;if(_0x1cade1[_0xe7707e('0x65d')]()<_0x257b7a[_0xe7707e('0x65d')]())return-_0x446071(_0x257b7a,_0x1cade1);var _0x4ad811=0xc*(_0x257b7a[_0xe7707e('0x30b')]()-_0x1cade1['year']())+(_0x257b7a[_0xe7707e('0x614')]()-_0x1cade1[_0xe7707e('0x614')]()),_0xdb6c9c=_0x1cade1[_0xe7707e('0x236')]()[_0xe7707e('0x1130')](_0x4ad811,_0x15e54d),_0x14af85=_0x257b7a-_0xdb6c9c<0x0,_0x1a83b7=_0x1cade1['clone']()[_0xe7707e('0x1130')](_0x4ad811+(_0x14af85?-0x1:0x1),_0x15e54d);return+(-(_0x4ad811+(_0x257b7a-_0xdb6c9c)/(_0x14af85?_0xdb6c9c-_0x1a83b7:_0x1a83b7-_0xdb6c9c))||0x0);},'a':function(_0x328e42){return _0x328e42<0x0?Math['ceil'](_0x328e42)||0x0:Math['floor'](_0x328e42);},'p':function(_0x4ad331){var _0x4a74a3=_0x4b6dcf;return{'M':_0x15e54d,'y':_0x5b5be5,'w':_0x36d6a4,'d':_0x34c809,'D':_0x3c383f,'h':_0x2d89b4,'m':_0x5d9f92,'s':_0x29db60,'ms':_0x261b13,'Q':_0x2f316d}[_0x4ad331]||String(_0x4ad331||'')[_0x4a74a3('0x2e7')]()[_0x4a74a3('0x166')](/s$/,'');},'u':function(_0x2230a3){return void 0x0===_0x2230a3;}},_0x52d4f0='en',_0x8a24a6={};_0x8a24a6[_0x52d4f0]=_0x147cd7;var _0x3fc2b9=function(_0x6ad626){return _0x6ad626 instanceof _0x5d02a2;},_0x1e7484=function(_0x159d01,_0x1db10d,_0x3fcd74){var _0x19377e=_0x4b6dcf,_0x28fe21;if(!_0x159d01)return _0x52d4f0;if(_0x19377e('0x7c7')==typeof _0x159d01)_0x8a24a6[_0x159d01]&&(_0x28fe21=_0x159d01),_0x1db10d&&(_0x8a24a6[_0x159d01]=_0x1db10d,_0x28fe21=_0x159d01);else{var _0x10922f=_0x159d01['name'];_0x8a24a6[_0x10922f]=_0x159d01,_0x28fe21=_0x10922f;}return!_0x3fcd74&&_0x28fe21&&(_0x52d4f0=_0x28fe21),_0x28fe21||!_0x3fcd74&&_0x52d4f0;},_0x499c4e=function(_0x4efb33,_0x385cb0){var _0x4b901c=_0x4b6dcf;if(_0x3fc2b9(_0x4efb33))return _0x4efb33[_0x4b901c('0x236')]();var _0x32facd='object'==typeof _0x385cb0?_0x385cb0:{};return _0x32facd[_0x4b901c('0x65d')]=_0x4efb33,_0x32facd[_0x4b901c('0xae5')]=arguments,new _0x5d02a2(_0x32facd);},_0x165eaf=_0x19e2c6;_0x165eaf['l']=_0x1e7484,_0x165eaf['i']=_0x3fc2b9,_0x165eaf['w']=function(_0x3cccb9,_0x18838b){var _0x4d3926=_0x4b6dcf;return _0x499c4e(_0x3cccb9,{'locale':_0x18838b['$L'],'utc':_0x18838b['$u'],'x':_0x18838b['$x'],'$offset':_0x18838b[_0x4d3926('0x1115')]});};var _0x5d02a2=function(){var _0x102fa4=_0x4b6dcf;function _0x175df8(_0x36e96f){var _0xef3582=_0x3ab6;this['$L']=_0x1e7484(_0x36e96f[_0xef3582('0x68d')],null,!0x0),this[_0xef3582('0xf01')](_0x36e96f);}var _0x1c7a27=_0x175df8[_0x102fa4('0x98c')];return _0x1c7a27[_0x102fa4('0xf01')]=function(_0x257730){var _0x2deb09=_0x102fa4;this['$d']=function(_0x1197c1){var _0x5d88e1=_0x3ab6,_0x1c6850=_0x1197c1[_0x5d88e1('0x65d')],_0x6198fe=_0x1197c1['utc'];if(null===_0x1c6850)return new Date(NaN);if(_0x165eaf['u'](_0x1c6850))return new Date();if(_0x1c6850 instanceof Date)return new Date(_0x1c6850);if(_0x5d88e1('0x7c7')==typeof _0x1c6850&&!/Z$/i[_0x5d88e1('0xaac')](_0x1c6850)){var _0xb49996=_0x1c6850['match'](_0x10c655);if(_0xb49996){var _0x1c77b7=_0xb49996[0x2]-0x1||0x0,_0x266d92=(_0xb49996[0x7]||'0')['substring'](0x0,0x3);return _0x6198fe?new Date(Date[_0x5d88e1('0xfbf')](_0xb49996[0x1],_0x1c77b7,_0xb49996[0x3]||0x1,_0xb49996[0x4]||0x0,_0xb49996[0x5]||0x0,_0xb49996[0x6]||0x0,_0x266d92)):new Date(_0xb49996[0x1],_0x1c77b7,_0xb49996[0x3]||0x1,_0xb49996[0x4]||0x0,_0xb49996[0x5]||0x0,_0xb49996[0x6]||0x0,_0x266d92);}}return new Date(_0x1c6850);}(_0x257730),this['$x']=_0x257730['x']||{},this[_0x2deb09('0x2ae')]();},_0x1c7a27[_0x102fa4('0x2ae')]=function(){var _0x339aa3=_0x102fa4,_0x53fea8=this['$d'];this['$y']=_0x53fea8[_0x339aa3('0x2dd')](),this['$M']=_0x53fea8[_0x339aa3('0x118f')](),this['$D']=_0x53fea8[_0x339aa3('0x4d0')](),this['$W']=_0x53fea8['getDay'](),this['$H']=_0x53fea8['getHours'](),this['$m']=_0x53fea8[_0x339aa3('0xa79')](),this['$s']=_0x53fea8[_0x339aa3('0xa5b')](),this['$ms']=_0x53fea8['getMilliseconds']();},_0x1c7a27[_0x102fa4('0xcf1')]=function(){return _0x165eaf;},_0x1c7a27[_0x102fa4('0x1143')]=function(){var _0x4da0bd=_0x102fa4;return!(this['$d'][_0x4da0bd('0x537')]()===_0xd2c66e);},_0x1c7a27[_0x102fa4('0x1a0')]=function(_0x4af992,_0x551853){var _0x5eff14=_0x102fa4,_0x340f06=_0x499c4e(_0x4af992);return this['startOf'](_0x551853)<=_0x340f06&&_0x340f06<=this[_0x5eff14('0xbf4')](_0x551853);},_0x1c7a27['isAfter']=function(_0xb7c1ca,_0x4f1fb9){var _0x2e6a78=_0x102fa4;return _0x499c4e(_0xb7c1ca)0x1?_0x2f0400[_0x5109d5-0x1]:void 0x0,_0xb1ec96=_0x5109d5>0x2?_0x2f0400[0x2]:void 0x0;for(_0x36a6a8=_0x341f9b['length']>0x3&&'function'==typeof _0x36a6a8?(_0x5109d5--,_0x36a6a8):void 0x0,_0xb1ec96&&_0x560f01(_0x2f0400[0x0],_0x2f0400[0x1],_0xb1ec96)&&(_0x36a6a8=_0x5109d5<0x3?void 0x0:_0x36a6a8,_0x5109d5=0x1),_0x225e3e=Object(_0x225e3e);++_0x2c1510<_0x5109d5;){var _0x245503=_0x2f0400[_0x2c1510];_0x245503&&_0x341f9b(_0x225e3e,_0x245503,_0x2c1510,_0x36a6a8);}return _0x225e3e;});};},{'./_baseRest':0xab,'./_isIterateeCall':0xdb}],0xbf:[function(_0x3e65b0,_0x594ae5,_0xfcbfd0){var _0x5b260f=_0x404097,_0x39478c=_0x3e65b0('./isArrayLike');_0x594ae5[_0x5b260f('0xddc')]=function(_0x1c0009,_0x20a67c){return function(_0x109564,_0x20e7cc){if(null==_0x109564)return _0x109564;if(!_0x39478c(_0x109564))return _0x1c0009(_0x109564,_0x20e7cc);for(var _0xf50828=_0x109564['length'],_0x1b92d5=_0x20a67c?_0xf50828:-0x1,_0x42a1c7=Object(_0x109564);(_0x20a67c?_0x1b92d5--:++_0x1b92d5<_0xf50828)&&!0x1!==_0x20e7cc(_0x42a1c7[_0x1b92d5],_0x1b92d5,_0x42a1c7););return _0x109564;};};},{'./isArrayLike':0x110}],0xc0:[function(_0x26ead4,_0x4073f0,_0x4f0bf0){var _0x3bd53d=_0x404097;_0x4073f0[_0x3bd53d('0xddc')]=function(_0x291513){return function(_0x7065a8,_0x37c158,_0x8f7176){var _0x52b6fd=_0x3ab6;for(var _0x6e03d=-0x1,_0x2e3e16=Object(_0x7065a8),_0x16f027=_0x8f7176(_0x7065a8),_0x170aaf=_0x16f027[_0x52b6fd('0x525')];_0x170aaf--;){var _0x3fb359=_0x16f027[_0x291513?_0x170aaf:++_0x6e03d];if(!0x1===_0x37c158(_0x2e3e16[_0x3fb359],_0x3fb359,_0x2e3e16))break;}return _0x7065a8;};};},{}],0xc1:[function(_0x4c22aa,_0x43d644,_0x50d07f){var _0x4c39eb=_0x404097,_0x187beb=_0x4c22aa(_0x4c39eb('0x97d')),_0x433047=function(){var _0xec7947=_0x4c39eb;try{var _0x2ab080=_0x187beb(Object,_0xec7947('0xa95'));return _0x2ab080({},'',{}),_0x2ab080;}catch(_0xd55c7a){}}();_0x43d644[_0x4c39eb('0xddc')]=_0x433047;},{'./_getNative':0xca}],0xc2:[function(_0x5a4459,_0x5ae5fd,_0x58c068){var _0x41e012=_0x404097,_0x314b55=_0x5a4459(_0x41e012('0x8d6')),_0x3917c2=_0x5a4459(_0x41e012('0x8b')),_0x4a389d=_0x5a4459(_0x41e012('0xb8c'));_0x5ae5fd[_0x41e012('0xddc')]=function(_0x44ef41,_0x2221a5,_0x21cf1a,_0x292b9d,_0x473350,_0xb995f2){var _0x2a3073=_0x41e012,_0x538197=0x1&_0x21cf1a,_0x315b07=_0x44ef41[_0x2a3073('0x525')],_0x46c109=_0x2221a5[_0x2a3073('0x525')];if(_0x315b07!=_0x46c109&&!(_0x538197&&_0x46c109>_0x315b07))return!0x1;var _0x2755a2=_0xb995f2[_0x2a3073('0x33')](_0x44ef41),_0x1c3129=_0xb995f2[_0x2a3073('0x33')](_0x2221a5);if(_0x2755a2&&_0x1c3129)return _0x2755a2==_0x2221a5&&_0x1c3129==_0x44ef41;var _0x3b21e3=-0x1,_0x6e5c60=!0x0,_0x571769=0x2&_0x21cf1a?new _0x314b55():void 0x0;for(_0xb995f2[_0x2a3073('0x11ce')](_0x44ef41,_0x2221a5),_0xb995f2[_0x2a3073('0x11ce')](_0x2221a5,_0x44ef41);++_0x3b21e3<_0x315b07;){var _0x29852b=_0x44ef41[_0x3b21e3],_0x186b82=_0x2221a5[_0x3b21e3];if(_0x292b9d)var _0x2ebcec=_0x538197?_0x292b9d(_0x186b82,_0x29852b,_0x3b21e3,_0x2221a5,_0x44ef41,_0xb995f2):_0x292b9d(_0x29852b,_0x186b82,_0x3b21e3,_0x44ef41,_0x2221a5,_0xb995f2);if(void 0x0!==_0x2ebcec){if(_0x2ebcec)continue;_0x6e5c60=!0x1;break;}if(_0x571769){if(!_0x3917c2(_0x2221a5,function(_0x4103a9,_0xdf0a91){var _0x3dee51=_0x2a3073;if(!_0x4a389d(_0x571769,_0xdf0a91)&&(_0x29852b===_0x4103a9||_0x473350(_0x29852b,_0x4103a9,_0x21cf1a,_0x292b9d,_0xb995f2)))return _0x571769[_0x3dee51('0x8f8')](_0xdf0a91);})){_0x6e5c60=!0x1;break;}}else{if(_0x29852b!==_0x186b82&&!_0x473350(_0x29852b,_0x186b82,_0x21cf1a,_0x292b9d,_0xb995f2)){_0x6e5c60=!0x1;break;}}}return _0xb995f2[_0x2a3073('0x506')](_0x44ef41),_0xb995f2[_0x2a3073('0x506')](_0x2221a5),_0x6e5c60;};},{'./_SetCache':0x7e,'./_arraySome':0x89,'./_cacheHas':0xb0}],0xc3:[function(_0x5f0795,_0x77885f,_0xb25e76){var _0x265db4=_0x404097,_0x94895=_0x5f0795(_0x265db4('0x82')),_0x1640f6=_0x5f0795(_0x265db4('0xd86')),_0x550b18=_0x5f0795(_0x265db4('0x4dd')),_0x2dd573=_0x5f0795(_0x265db4('0x938')),_0x26e095=_0x5f0795(_0x265db4('0x9e8')),_0x3dbb6a=_0x5f0795(_0x265db4('0x15d')),_0x5b4840=_0x94895?_0x94895[_0x265db4('0x98c')]:void 0x0,_0x170519=_0x5b4840?_0x5b4840['valueOf']:void 0x0;_0x77885f[_0x265db4('0xddc')]=function(_0x85cc64,_0x113785,_0x3c8971,_0x5f4644,_0x575497,_0x5ececd,_0x28f69e){var _0x227829=_0x265db4;switch(_0x3c8971){case _0x227829('0xe04'):if(_0x85cc64[_0x227829('0x523')]!=_0x113785[_0x227829('0x523')]||_0x85cc64[_0x227829('0x24e')]!=_0x113785[_0x227829('0x24e')])return!0x1;_0x85cc64=_0x85cc64[_0x227829('0x6d')],_0x113785=_0x113785[_0x227829('0x6d')];case _0x227829('0xe46'):return!(_0x85cc64['byteLength']!=_0x113785['byteLength']||!_0x5ececd(new _0x1640f6(_0x85cc64),new _0x1640f6(_0x113785)));case'[object\x20Boolean]':case _0x227829('0xf11'):case _0x227829('0xf75'):return _0x550b18(+_0x85cc64,+_0x113785);case _0x227829('0xa31'):return _0x85cc64[_0x227829('0x263')]==_0x113785[_0x227829('0x263')]&&_0x85cc64[_0x227829('0xa1a')]==_0x113785[_0x227829('0xa1a')];case'[object\x20RegExp]':case _0x227829('0x645'):return _0x85cc64==_0x113785+'';case _0x227829('0x8ee'):var _0x35f516=_0x26e095;case _0x227829('0xb4'):var _0x1bd5d1=0x1&_0x5f4644;if(_0x35f516||(_0x35f516=_0x3dbb6a),_0x85cc64[_0x227829('0x844')]!=_0x113785[_0x227829('0x844')]&&!_0x1bd5d1)return!0x1;var _0x410553=_0x28f69e[_0x227829('0x33')](_0x85cc64);if(_0x410553)return _0x410553==_0x113785;_0x5f4644|=0x2,_0x28f69e[_0x227829('0x11ce')](_0x85cc64,_0x113785);var _0xcc5016=_0x2dd573(_0x35f516(_0x85cc64),_0x35f516(_0x113785),_0x5f4644,_0x575497,_0x5ececd,_0x28f69e);return _0x28f69e[_0x227829('0x506')](_0x85cc64),_0xcc5016;case'[object\x20Symbol]':if(_0x170519)return _0x170519[_0x227829('0x4b0')](_0x85cc64)==_0x170519['call'](_0x113785);}return!0x1;};},{'./_Symbol':0x80,'./_Uint8Array':0x81,'./_equalArrays':0xc2,'./_mapToArray':0xeb,'./_setToArray':0xf9,'./eq':0x108}],0xc4:[function(_0x577d67,_0x5c5aec,_0xabefab){var _0x281d67=_0x404097,_0x7baded=_0x577d67(_0x281d67('0xd8d')),_0x1ed069=Object[_0x281d67('0x98c')]['hasOwnProperty'];_0x5c5aec['exports']=function(_0x198daf,_0x19422a,_0x504e7d,_0xcb9d1e,_0xba5aee,_0x3ccdd4){var _0x549871=_0x281d67,_0x3dcc02=0x1&_0x504e7d,_0x496509=_0x7baded(_0x198daf),_0x18c740=_0x496509[_0x549871('0x525')];if(_0x18c740!=_0x7baded(_0x19422a)[_0x549871('0x525')]&&!_0x3dcc02)return!0x1;for(var _0x184c2c=_0x18c740;_0x184c2c--;){var _0x7d0bdf=_0x496509[_0x184c2c];if(!(_0x3dcc02?_0x7d0bdf in _0x19422a:_0x1ed069[_0x549871('0x4b0')](_0x19422a,_0x7d0bdf)))return!0x1;}var _0x9ce6fb=_0x3ccdd4[_0x549871('0x33')](_0x198daf),_0x40ba8b=_0x3ccdd4[_0x549871('0x33')](_0x19422a);if(_0x9ce6fb&&_0x40ba8b)return _0x9ce6fb==_0x19422a&&_0x40ba8b==_0x198daf;var _0x295d85=!0x0;_0x3ccdd4[_0x549871('0x11ce')](_0x198daf,_0x19422a),_0x3ccdd4[_0x549871('0x11ce')](_0x19422a,_0x198daf);for(var _0x564e77=_0x3dcc02;++_0x184c2c<_0x18c740;){var _0x5260=_0x198daf[_0x7d0bdf=_0x496509[_0x184c2c]],_0x1ae667=_0x19422a[_0x7d0bdf];if(_0xcb9d1e)var _0x16f0b4=_0x3dcc02?_0xcb9d1e(_0x1ae667,_0x5260,_0x7d0bdf,_0x19422a,_0x198daf,_0x3ccdd4):_0xcb9d1e(_0x5260,_0x1ae667,_0x7d0bdf,_0x198daf,_0x19422a,_0x3ccdd4);if(!(void 0x0===_0x16f0b4?_0x5260===_0x1ae667||_0xba5aee(_0x5260,_0x1ae667,_0x504e7d,_0xcb9d1e,_0x3ccdd4):_0x16f0b4)){_0x295d85=!0x1;break;}_0x564e77||(_0x564e77=_0x549871('0x3c6')==_0x7d0bdf);}if(_0x295d85&&!_0x564e77){var _0x1e7074=_0x198daf[_0x549871('0x3c6')],_0x1a3a79=_0x19422a['constructor'];_0x1e7074==_0x1a3a79||!(_0x549871('0x3c6')in _0x198daf)||!(_0x549871('0x3c6')in _0x19422a)||_0x549871('0xae9')==typeof _0x1e7074&&_0x1e7074 instanceof _0x1e7074&&'function'==typeof _0x1a3a79&&_0x1a3a79 instanceof _0x1a3a79||(_0x295d85=!0x1);}return _0x3ccdd4[_0x549871('0x506')](_0x198daf),_0x3ccdd4[_0x549871('0x506')](_0x19422a),_0x295d85;};},{'./_getAllKeys':0xc6}],0xc5:[function(_0x12a9ad,_0xa4d705,_0x11a781){var _0xdd7e83=_0x404097;(function(_0x4ee98f){var _0x4c1fba=_0x3ab6,_0x44fc36='object'==typeof _0x4ee98f&&_0x4ee98f&&_0x4ee98f[_0x4c1fba('0x75')]===Object&&_0x4ee98f;_0xa4d705[_0x4c1fba('0xddc')]=_0x44fc36;}[_0xdd7e83('0x4b0')](this,_0xdd7e83('0x56')!=typeof global?global:_0xdd7e83('0x56')!=typeof self?self:_0xdd7e83('0x56')!=typeof window?window:{}));},{}],0xc6:[function(_0x4371c7,_0x167d57,_0x20e15b){var _0x508576=_0x404097,_0x3ebe72=_0x4371c7(_0x508576('0xcbc')),_0x17ae59=_0x4371c7(_0x508576('0xc36')),_0x2bd4f6=_0x4371c7(_0x508576('0x56f'));_0x167d57[_0x508576('0xddc')]=function(_0x59008e){return _0x3ebe72(_0x59008e,_0x2bd4f6,_0x17ae59);};},{'./_baseGetAllKeys':0x96,'./_getSymbols':0xcd,'./keys':0x11e}],0xc7:[function(_0x5e7e70,_0x480c05,_0x542297){var _0x13f48a=_0x404097,_0x41ccba=_0x5e7e70(_0x13f48a('0xcbc')),_0x426120=_0x5e7e70(_0x13f48a('0xfe2')),_0xb11f8c=_0x5e7e70('./keysIn');_0x480c05[_0x13f48a('0xddc')]=function(_0x1b9452){return _0x41ccba(_0x1b9452,_0xb11f8c,_0x426120);};},{'./_baseGetAllKeys':0x96,'./_getSymbolsIn':0xce,'./keysIn':0x11f}],0xc8:[function(_0x5bdbd9,_0x30346b,_0x2f7adf){var _0x1dd6a8=_0x404097,_0x4c00ef=_0x5bdbd9('./_isKeyable');_0x30346b[_0x1dd6a8('0xddc')]=function(_0x4ac7f2,_0x2ffd22){var _0x3b9b1c=_0x1dd6a8,_0xdedc40=_0x4ac7f2[_0x3b9b1c('0x16c')];return _0x4c00ef(_0x2ffd22)?_0xdedc40[_0x3b9b1c('0x7c7')==typeof _0x2ffd22?_0x3b9b1c('0x7c7'):_0x3b9b1c('0x716')]:_0xdedc40['map'];};},{'./_isKeyable':0xdd}],0xc9:[function(_0x121814,_0x2955e8,_0x28e10a){var _0x118d4d=_0x404097,_0x20d2c2=_0x121814('./_isStrictComparable'),_0x216ace=_0x121814('./keys');_0x2955e8[_0x118d4d('0xddc')]=function(_0x5d7722){for(var _0x17c168=_0x216ace(_0x5d7722),_0x5b9667=_0x17c168['length'];_0x5b9667--;){var _0x3a48cb=_0x17c168[_0x5b9667],_0x511837=_0x5d7722[_0x3a48cb];_0x17c168[_0x5b9667]=[_0x3a48cb,_0x511837,_0x20d2c2(_0x511837)];}return _0x17c168;};},{'./_isStrictComparable':0xe0,'./keys':0x11e}],0xca:[function(_0x36f82d,_0x55cdcf,_0x5d58df){var _0x1040ce=_0x404097,_0x4e81c5=_0x36f82d(_0x1040ce('0x61a')),_0x188e72=_0x36f82d('./_getValue');_0x55cdcf[_0x1040ce('0xddc')]=function(_0x5502ce,_0x135276){var _0xf8f9ca=_0x188e72(_0x5502ce,_0x135276);return _0x4e81c5(_0xf8f9ca)?_0xf8f9ca:void 0x0;};},{'./_baseIsNative':0x9e,'./_getValue':0xd0}],0xcb:[function(_0x163e09,_0x25fdd9,_0x405826){var _0x54ad3c=_0x404097,_0x337fe6=_0x163e09(_0x54ad3c('0xb25'))(Object[_0x54ad3c('0x10c0')],Object);_0x25fdd9[_0x54ad3c('0xddc')]=_0x337fe6;},{'./_overArg':0xf3}],0xcc:[function(_0x47315b,_0x328da5,_0x553cc7){var _0x3b4ba7=_0x404097,_0x1095ac=_0x47315b(_0x3b4ba7('0x82')),_0x483f89=Object['prototype'],_0x4a55df=_0x483f89[_0x3b4ba7('0x100')],_0x19bc60=_0x483f89[_0x3b4ba7('0x537')],_0x3b6ae6=_0x1095ac?_0x1095ac[_0x3b4ba7('0xe8')]:void 0x0;_0x328da5[_0x3b4ba7('0xddc')]=function(_0x51b43c){var _0x20a890=_0x3b4ba7,_0x1aff18=_0x4a55df['call'](_0x51b43c,_0x3b6ae6),_0xa9d0dd=_0x51b43c[_0x3b6ae6];try{_0x51b43c[_0x3b6ae6]=void 0x0;var _0x376400=!0x0;}catch(_0x277f25){}var _0xe35c2=_0x19bc60[_0x20a890('0x4b0')](_0x51b43c);return _0x376400&&(_0x1aff18?_0x51b43c[_0x3b6ae6]=_0xa9d0dd:delete _0x51b43c[_0x3b6ae6]),_0xe35c2;};},{'./_Symbol':0x80}],0xcd:[function(_0x15c9ac,_0x4c8033,_0x4a6b26){var _0x4f07ed=_0x404097,_0x50c4e6=_0x15c9ac(_0x4f07ed('0x479')),_0xc8b1b6=_0x15c9ac(_0x4f07ed('0xacc')),_0x503f50=Object[_0x4f07ed('0x98c')][_0x4f07ed('0x2d6')],_0x50b0cc=Object['getOwnPropertySymbols'],_0x3fe1fa=_0x50b0cc?function(_0x3b4bb9){return null==_0x3b4bb9?[]:(_0x3b4bb9=Object(_0x3b4bb9),_0x50c4e6(_0x50b0cc(_0x3b4bb9),function(_0x3105d7){return _0x503f50['call'](_0x3b4bb9,_0x3105d7);}));}:_0xc8b1b6;_0x4c8033[_0x4f07ed('0xddc')]=_0x3fe1fa;},{'./_arrayFilter':0x85,'./stubArray':0x125}],0xce:[function(_0x1a5a5b,_0x58928b,_0xf365){var _0x38aa96=_0x404097,_0x13941a=_0x1a5a5b(_0x38aa96('0x43')),_0xea5c91=_0x1a5a5b(_0x38aa96('0x677')),_0x3039ab=_0x1a5a5b(_0x38aa96('0xc36')),_0x27a8be=_0x1a5a5b('./stubArray'),_0x1b6f66=Object[_0x38aa96('0xc6d')]?function(_0x2abcd5){for(var _0xd5aa17=[];_0x2abcd5;)_0x13941a(_0xd5aa17,_0x3039ab(_0x2abcd5)),_0x2abcd5=_0xea5c91(_0x2abcd5);return _0xd5aa17;}:_0x27a8be;_0x58928b[_0x38aa96('0xddc')]=_0x1b6f66;},{'./_arrayPush':0x88,'./_getPrototype':0xcb,'./_getSymbols':0xcd,'./stubArray':0x125}],0xcf:[function(_0x5435fb,_0x2df868,_0x1990cc){var _0x344530=_0x404097,_0x4930c8=_0x5435fb(_0x344530('0xcb1')),_0x2c4dfa=_0x5435fb(_0x344530('0xaea')),_0x2535a7=_0x5435fb(_0x344530('0xb92')),_0x42143a=_0x5435fb('./_Set'),_0x1e9311=_0x5435fb(_0x344530('0x5dc')),_0x362054=_0x5435fb(_0x344530('0xe4b')),_0x12d730=_0x5435fb(_0x344530('0xc0')),_0x47cb74=_0x12d730(_0x4930c8),_0x209546=_0x12d730(_0x2c4dfa),_0x1ffdfa=_0x12d730(_0x2535a7),_0x555716=_0x12d730(_0x42143a),_0x5066d9=_0x12d730(_0x1e9311),_0x34e507=_0x362054;(_0x4930c8&&_0x344530('0xe04')!=_0x34e507(new _0x4930c8(new ArrayBuffer(0x1)))||_0x2c4dfa&&'[object\x20Map]'!=_0x34e507(new _0x2c4dfa())||_0x2535a7&&_0x344530('0x10a2')!=_0x34e507(_0x2535a7[_0x344530('0x2f1')]())||_0x42143a&&'[object\x20Set]'!=_0x34e507(new _0x42143a())||_0x1e9311&&_0x344530('0xf67')!=_0x34e507(new _0x1e9311()))&&(_0x34e507=function(_0x48e848){var _0x35db17=_0x344530,_0x587f8a=_0x362054(_0x48e848),_0x45de52=_0x35db17('0xebe')==_0x587f8a?_0x48e848[_0x35db17('0x3c6')]:void 0x0,_0x3d6954=_0x45de52?_0x12d730(_0x45de52):'';if(_0x3d6954)switch(_0x3d6954){case _0x47cb74:return'[object\x20DataView]';case _0x209546:return _0x35db17('0x8ee');case _0x1ffdfa:return'[object\x20Promise]';case _0x555716:return _0x35db17('0xb4');case _0x5066d9:return _0x35db17('0xf67');}return _0x587f8a;}),_0x2df868[_0x344530('0xddc')]=_0x34e507;},{'./_DataView':0x77,'./_Map':0x7a,'./_Promise':0x7c,'./_Set':0x7d,'./_WeakMap':0x82,'./_baseGetTag':0x97,'./_toSource':0x103}],0xd0:[function(_0x3d7d8,_0xc05c49,_0x3dc76a){var _0x4634de=_0x404097;_0xc05c49[_0x4634de('0xddc')]=function(_0x2c7fb8,_0x4c4a72){return null==_0x2c7fb8?void 0x0:_0x2c7fb8[_0x4c4a72];};},{}],0xd1:[function(_0x4e2e58,_0x3b4637,_0x3945e7){var _0x792bb3=_0x404097,_0x1637a9=_0x4e2e58(_0x792bb3('0xbb6')),_0x65e1d8=_0x4e2e58(_0x792bb3('0x9a6')),_0x3159ee=_0x4e2e58(_0x792bb3('0xa28')),_0x3d5915=_0x4e2e58('./_isIndex'),_0x13bfa9=_0x4e2e58(_0x792bb3('0x663')),_0x2160b9=_0x4e2e58('./_toKey');_0x3b4637['exports']=function(_0x11e2a6,_0x397450,_0x20b1b5){for(var _0x3dd6b9=-0x1,_0x253710=(_0x397450=_0x1637a9(_0x397450,_0x11e2a6))['length'],_0x4334fe=!0x1;++_0x3dd6b9<_0x253710;){var _0x4dba6a=_0x2160b9(_0x397450[_0x3dd6b9]);if(!(_0x4334fe=null!=_0x11e2a6&&_0x20b1b5(_0x11e2a6,_0x4dba6a)))break;_0x11e2a6=_0x11e2a6[_0x4dba6a];}return _0x4334fe||++_0x3dd6b9!=_0x253710?_0x4334fe:!!(_0x253710=null==_0x11e2a6?0x0:_0x11e2a6['length'])&&_0x13bfa9(_0x253710)&&_0x3d5915(_0x4dba6a,_0x253710)&&(_0x3159ee(_0x11e2a6)||_0x65e1d8(_0x11e2a6));};},{'./_castPath':0xb2,'./_isIndex':0xda,'./_toKey':0x102,'./isArguments':0x10e,'./isArray':0x10f,'./isLength':0x114}],0xd2:[function(_0x374f45,_0x1aaf18,_0x2bf6c2){var _0x446bb8=_0x404097,_0x101d1f=_0x374f45(_0x446bb8('0xcc5'));_0x1aaf18['exports']=function(){var _0x4d38ac=_0x446bb8;this['__data__']=_0x101d1f?_0x101d1f(null):{},this[_0x4d38ac('0x844')]=0x0;};},{'./_nativeCreate':0xee}],0xd3:[function(_0x58b160,_0x17e96b,_0x52f6c9){var _0x4dfbf5=_0x404097;_0x17e96b[_0x4dfbf5('0xddc')]=function(_0x498b65){var _0x526c12=_0x4dfbf5,_0x47feb0=this[_0x526c12('0x587')](_0x498b65)&&delete this[_0x526c12('0x16c')][_0x498b65];return this[_0x526c12('0x844')]-=_0x47feb0?0x1:0x0,_0x47feb0;};},{}],0xd4:[function(_0x1a9229,_0x28936d,_0x53a164){var _0x389374=_0x404097,_0x38c06d=_0x1a9229(_0x389374('0xcc5')),_0x17c7f6=Object[_0x389374('0x98c')]['hasOwnProperty'];_0x28936d[_0x389374('0xddc')]=function(_0x4cb02c){var _0x278dfe=_0x389374,_0x4394e8=this[_0x278dfe('0x16c')];if(_0x38c06d){var _0x5b410c=_0x4394e8[_0x4cb02c];return _0x278dfe('0x1160')===_0x5b410c?void 0x0:_0x5b410c;}return _0x17c7f6[_0x278dfe('0x4b0')](_0x4394e8,_0x4cb02c)?_0x4394e8[_0x4cb02c]:void 0x0;};},{'./_nativeCreate':0xee}],0xd5:[function(_0x24e155,_0x4d31aa,_0x1bd0e0){var _0x4e09a6=_0x404097,_0x4d1e7e=_0x24e155('./_nativeCreate'),_0x57509b=Object[_0x4e09a6('0x98c')][_0x4e09a6('0x100')];_0x4d31aa[_0x4e09a6('0xddc')]=function(_0xcb3de9){var _0x1c7641=_0x4e09a6,_0x397cb6=this['__data__'];return _0x4d1e7e?void 0x0!==_0x397cb6[_0xcb3de9]:_0x57509b[_0x1c7641('0x4b0')](_0x397cb6,_0xcb3de9);};},{'./_nativeCreate':0xee}],0xd6:[function(_0x5c4bb2,_0x141f75,_0x594851){var _0x4b038b=_0x404097,_0x4decd7=_0x5c4bb2(_0x4b038b('0xcc5'));_0x141f75[_0x4b038b('0xddc')]=function(_0x51b06a,_0x3fcf5f){var _0x106fa5=_0x4b038b,_0x5d6daf=this[_0x106fa5('0x16c')];return this[_0x106fa5('0x844')]+=this[_0x106fa5('0x587')](_0x51b06a)?0x0:0x1,_0x5d6daf[_0x51b06a]=_0x4decd7&&void 0x0===_0x3fcf5f?_0x106fa5('0x1160'):_0x3fcf5f,this;};},{'./_nativeCreate':0xee}],0xd7:[function(_0x2d39eb,_0x3f853d,_0x1130f6){var _0x53dc1a=_0x404097,_0xf95bf1=Object[_0x53dc1a('0x98c')][_0x53dc1a('0x100')];_0x3f853d['exports']=function(_0x2b4e98){var _0x341a2b=_0x53dc1a,_0x3dfa4a=_0x2b4e98[_0x341a2b('0x525')],_0x58c9fe=new _0x2b4e98[(_0x341a2b('0x3c6'))](_0x3dfa4a);return _0x3dfa4a&&_0x341a2b('0x7c7')==typeof _0x2b4e98[0x0]&&_0xf95bf1[_0x341a2b('0x4b0')](_0x2b4e98,'index')&&(_0x58c9fe[_0x341a2b('0xf20')]=_0x2b4e98['index'],_0x58c9fe[_0x341a2b('0x20c')]=_0x2b4e98[_0x341a2b('0x20c')]),_0x58c9fe;};},{}],0xd8:[function(_0x22b0c1,_0x103657,_0x539592){var _0x302132=_0x404097,_0x5a04f0=_0x22b0c1(_0x302132('0xb78')),_0x24537b=_0x22b0c1(_0x302132('0x473')),_0x1249be=_0x22b0c1(_0x302132('0xba2')),_0x41f627=_0x22b0c1(_0x302132('0x70d')),_0x2998db=_0x22b0c1('./_cloneTypedArray');_0x103657[_0x302132('0xddc')]=function(_0x36d996,_0x119260,_0x3c97c4){var _0xdc7738=_0x302132,_0x21d1c2=_0x36d996['constructor'];switch(_0x119260){case _0xdc7738('0xe46'):return _0x5a04f0(_0x36d996);case'[object\x20Boolean]':case _0xdc7738('0xf11'):return new _0x21d1c2(+_0x36d996);case'[object\x20DataView]':return _0x24537b(_0x36d996,_0x3c97c4);case'[object\x20Float32Array]':case _0xdc7738('0x40e'):case _0xdc7738('0xbe8'):case _0xdc7738('0x10b0'):case _0xdc7738('0xd23'):case _0xdc7738('0x53a'):case _0xdc7738('0x118'):case _0xdc7738('0xc69'):case _0xdc7738('0xa61'):return _0x2998db(_0x36d996,_0x3c97c4);case'[object\x20Map]':return new _0x21d1c2();case _0xdc7738('0xf75'):case _0xdc7738('0x645'):return new _0x21d1c2(_0x36d996);case'[object\x20RegExp]':return _0x1249be(_0x36d996);case _0xdc7738('0xb4'):return new _0x21d1c2();case _0xdc7738('0x105c'):return _0x41f627(_0x36d996);}};},{'./_cloneArrayBuffer':0xb3,'./_cloneDataView':0xb5,'./_cloneRegExp':0xb6,'./_cloneSymbol':0xb7,'./_cloneTypedArray':0xb8}],0xd9:[function(_0x142ad7,_0xce7b82,_0x55eac7){var _0x5e31dd=_0x404097,_0x51bbfb=_0x142ad7(_0x5e31dd('0x963')),_0x47ad46=_0x142ad7(_0x5e31dd('0x677')),_0x1af51e=_0x142ad7('./_isPrototype');_0xce7b82[_0x5e31dd('0xddc')]=function(_0x2e9012){var _0x835349=_0x5e31dd;return'function'!=typeof _0x2e9012[_0x835349('0x3c6')]||_0x1af51e(_0x2e9012)?{}:_0x51bbfb(_0x47ad46(_0x2e9012));};},{'./_baseCreate':0x91,'./_getPrototype':0xcb,'./_isPrototype':0xdf}],0xda:[function(_0x5ca534,_0x37ddf6,_0x4f9cc9){var _0x3ed8b9=/^(?:0|[1-9]\d*)$/;_0x37ddf6['exports']=function(_0x4dbc3b,_0x3f5baa){var _0x34eee7=_0x3ab6,_0x229516=typeof _0x4dbc3b;return!!(_0x3f5baa=null==_0x3f5baa?0x1fffffffffffff:_0x3f5baa)&&('number'==_0x229516||_0x34eee7('0x245')!=_0x229516&&_0x3ed8b9[_0x34eee7('0xaac')](_0x4dbc3b))&&_0x4dbc3b>-0x1&&_0x4dbc3b%0x1==0x0&&_0x4dbc3b<_0x3f5baa;};},{}],0xdb:[function(_0x310ba1,_0x34abb1,_0x318b7c){var _0x5c0531=_0x404097,_0x2395aa=_0x310ba1(_0x5c0531('0x4dd')),_0x5ecd26=_0x310ba1(_0x5c0531('0xb15')),_0x872bbb=_0x310ba1('./_isIndex'),_0x24f1ad=_0x310ba1('./isObject');_0x34abb1['exports']=function(_0x34b599,_0x39989f,_0x30afaa){var _0x2318e3=_0x5c0531;if(!_0x24f1ad(_0x30afaa))return!0x1;var _0x3aa92f=typeof _0x39989f;return!!(_0x2318e3('0xd95')==_0x3aa92f?_0x5ecd26(_0x30afaa)&&_0x872bbb(_0x39989f,_0x30afaa[_0x2318e3('0x525')]):_0x2318e3('0x7c7')==_0x3aa92f&&_0x39989f in _0x30afaa)&&_0x2395aa(_0x30afaa[_0x39989f],_0x34b599);};},{'./_isIndex':0xda,'./eq':0x108,'./isArrayLike':0x110,'./isObject':0x116}],0xdc:[function(_0x2c103d,_0x5663a0,_0x5cf7a9){var _0x2bcc2c=_0x404097,_0x1fbddc=_0x2c103d('./isArray'),_0x5ad02a=_0x2c103d(_0x2bcc2c('0x56a')),_0x5c615b=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,_0x58d6df=/^\w*$/;_0x5663a0[_0x2bcc2c('0xddc')]=function(_0x556078,_0x339d3f){var _0x3aabcc=_0x2bcc2c;if(_0x1fbddc(_0x556078))return!0x1;var _0xc4a718=typeof _0x556078;return!(_0x3aabcc('0xd95')!=_0xc4a718&&'symbol'!=_0xc4a718&&_0x3aabcc('0x3e')!=_0xc4a718&&null!=_0x556078&&!_0x5ad02a(_0x556078))||(_0x58d6df['test'](_0x556078)||!_0x5c615b[_0x3aabcc('0xaac')](_0x556078)||null!=_0x339d3f&&_0x556078 in Object(_0x339d3f));};},{'./isArray':0x10f,'./isSymbol':0x11b}],0xdd:[function(_0x5a7576,_0x5df3c4,_0x5110ab){var _0x4702b9=_0x404097;_0x5df3c4[_0x4702b9('0xddc')]=function(_0x45a975){var _0x40db21=_0x4702b9,_0x24ea81=typeof _0x45a975;return'string'==_0x24ea81||_0x40db21('0xd95')==_0x24ea81||'symbol'==_0x24ea81||_0x40db21('0x3e')==_0x24ea81?_0x40db21('0x11e6')!==_0x45a975:null===_0x45a975;};},{}],0xde:[function(_0x1df837,_0x3bd7f9,_0x9d5863){var _0x414a5b=_0x404097,_0x1e8db1,_0x111151=_0x1df837(_0x414a5b('0x838')),_0x32001b=(_0x1e8db1=/[^.]+$/[_0x414a5b('0xd16')](_0x111151&&_0x111151['keys']&&_0x111151[_0x414a5b('0x7ce')][_0x414a5b('0x56e')]||''))?_0x414a5b('0x369')+_0x1e8db1:'';_0x3bd7f9[_0x414a5b('0xddc')]=function(_0x268a2a){return!!_0x32001b&&_0x32001b in _0x268a2a;};},{'./_coreJsData':0xbd}],0xdf:[function(_0x4e0905,_0x446031,_0x3c6d95){var _0x5e8a4f=_0x404097,_0x5a3301=Object['prototype'];_0x446031[_0x5e8a4f('0xddc')]=function(_0x495856){var _0xe192ba=_0x5e8a4f,_0x3b9f76=_0x495856&&_0x495856[_0xe192ba('0x3c6')];return _0x495856===(_0xe192ba('0xae9')==typeof _0x3b9f76&&_0x3b9f76[_0xe192ba('0x98c')]||_0x5a3301);};},{}],0xe0:[function(_0x52b29f,_0x5adca7,_0x17e32f){var _0xa0d5a8=_0x404097,_0x28630b=_0x52b29f(_0xa0d5a8('0xaef'));_0x5adca7[_0xa0d5a8('0xddc')]=function(_0x3ba4b3){return _0x3ba4b3==_0x3ba4b3&&!_0x28630b(_0x3ba4b3);};},{'./isObject':0x116}],0xe1:[function(_0x2991f7,_0xd26805,_0x544b64){var _0x393ccd=_0x404097;_0xd26805[_0x393ccd('0xddc')]=function(){var _0x1670a0=_0x393ccd;this['__data__']=[],this[_0x1670a0('0x844')]=0x0;};},{}],0xe2:[function(_0x2d6125,_0x5865b8,_0x303d47){var _0x397b4b=_0x404097,_0x52417b=_0x2d6125(_0x397b4b('0x3ec')),_0x5f0b2b=Array[_0x397b4b('0x98c')][_0x397b4b('0xc19')];_0x5865b8[_0x397b4b('0xddc')]=function(_0x164ac0){var _0x1f8f54=_0x397b4b,_0x301ddc=this['__data__'],_0x2f55c9=_0x52417b(_0x301ddc,_0x164ac0);return!(_0x2f55c9<0x0)&&(_0x2f55c9==_0x301ddc['length']-0x1?_0x301ddc['pop']():_0x5f0b2b[_0x1f8f54('0x4b0')](_0x301ddc,_0x2f55c9,0x1),--this[_0x1f8f54('0x844')],!0x0);};},{'./_assocIndexOf':0x8c}],0xe3:[function(_0x318fbe,_0x1f9439,_0x1ff397){var _0x92875c=_0x404097,_0x2e8336=_0x318fbe(_0x92875c('0x3ec'));_0x1f9439[_0x92875c('0xddc')]=function(_0xc48ad3){var _0x110eee=_0x92875c,_0x1df6bf=this[_0x110eee('0x16c')],_0x49e686=_0x2e8336(_0x1df6bf,_0xc48ad3);return _0x49e686<0x0?void 0x0:_0x1df6bf[_0x49e686][0x1];};},{'./_assocIndexOf':0x8c}],0xe4:[function(_0x1ca6bb,_0x2db877,_0x4e9155){var _0x2a531a=_0x404097,_0x3f3d47=_0x1ca6bb(_0x2a531a('0x3ec'));_0x2db877[_0x2a531a('0xddc')]=function(_0xa24693){var _0x167419=_0x2a531a;return _0x3f3d47(this[_0x167419('0x16c')],_0xa24693)>-0x1;};},{'./_assocIndexOf':0x8c}],0xe5:[function(_0x1c3ee5,_0x484dd7,_0x2c66c8){var _0x32b729=_0x1c3ee5('./_assocIndexOf');_0x484dd7['exports']=function(_0x61dd0b,_0x3be708){var _0x351cc0=_0x3ab6,_0x55e993=this[_0x351cc0('0x16c')],_0x546119=_0x32b729(_0x55e993,_0x61dd0b);return _0x546119<0x0?(++this[_0x351cc0('0x844')],_0x55e993['push']([_0x61dd0b,_0x3be708])):_0x55e993[_0x546119][0x1]=_0x3be708,this;};},{'./_assocIndexOf':0x8c}],0xe6:[function(_0xffd9b,_0x36c2f0,_0x48917e){var _0x28a685=_0x404097,_0x11824a=_0xffd9b(_0x28a685('0x10f4')),_0x261a58=_0xffd9b(_0x28a685('0xf79')),_0x1be2af=_0xffd9b(_0x28a685('0xaea'));_0x36c2f0[_0x28a685('0xddc')]=function(){var _0x238c7a=_0x28a685;this[_0x238c7a('0x844')]=0x0,this['__data__']={'hash':new _0x11824a(),'map':new(_0x1be2af||_0x261a58)(),'string':new _0x11824a()};};},{'./_Hash':0x78,'./_ListCache':0x79,'./_Map':0x7a}],0xe7:[function(_0x12f10d,_0x6cd32a,_0x503e63){var _0x275745=_0x404097,_0x17a9da=_0x12f10d(_0x275745('0x6c3'));_0x6cd32a['exports']=function(_0x4fd499){var _0x4d91ba=_0x275745,_0x1a6be6=_0x17a9da(this,_0x4fd499)[_0x4d91ba('0x506')](_0x4fd499);return this[_0x4d91ba('0x844')]-=_0x1a6be6?0x1:0x0,_0x1a6be6;};},{'./_getMapData':0xc8}],0xe8:[function(_0x3ae4ae,_0xe6ab7d,_0x50af12){var _0x29d18d=_0x404097,_0x152373=_0x3ae4ae(_0x29d18d('0x6c3'));_0xe6ab7d[_0x29d18d('0xddc')]=function(_0xe9aa2a){var _0x29983d=_0x29d18d;return _0x152373(this,_0xe9aa2a)[_0x29983d('0x33')](_0xe9aa2a);};},{'./_getMapData':0xc8}],0xe9:[function(_0x434754,_0x43f335,_0x19640c){var _0x12391b=_0x404097,_0x6434ef=_0x434754(_0x12391b('0x6c3'));_0x43f335['exports']=function(_0x322417){return _0x6434ef(this,_0x322417)['has'](_0x322417);};},{'./_getMapData':0xc8}],0xea:[function(_0xef62f6,_0x5519e5,_0x5aba90){var _0x513a63=_0x404097,_0x5dd691=_0xef62f6('./_getMapData');_0x5519e5[_0x513a63('0xddc')]=function(_0x366f2c,_0x4d2aee){var _0x50e962=_0x513a63,_0x571c64=_0x5dd691(this,_0x366f2c),_0x44c3f2=_0x571c64[_0x50e962('0x844')];return _0x571c64[_0x50e962('0x11ce')](_0x366f2c,_0x4d2aee),this[_0x50e962('0x844')]+=_0x571c64[_0x50e962('0x844')]==_0x44c3f2?0x0:0x1,this;};},{'./_getMapData':0xc8}],0xeb:[function(_0x4ff1d6,_0x44d094,_0x3a48ee){var _0x373c8d=_0x404097;_0x44d094[_0x373c8d('0xddc')]=function(_0x471eaf){var _0x3ba66a=_0x373c8d,_0x1a4811=-0x1,_0x59a990=Array(_0x471eaf[_0x3ba66a('0x844')]);return _0x471eaf[_0x3ba66a('0xa9e')](function(_0x392c7d,_0x5a3f3d){_0x59a990[++_0x1a4811]=[_0x5a3f3d,_0x392c7d];}),_0x59a990;};},{}],0xec:[function(_0x2f44c3,_0x5130e2,_0x14417c){var _0x29c8d5=_0x404097;_0x5130e2[_0x29c8d5('0xddc')]=function(_0x1199fe,_0x2597d2){return function(_0x1a89ab){return null!=_0x1a89ab&&(_0x1a89ab[_0x1199fe]===_0x2597d2&&(void 0x0!==_0x2597d2||_0x1199fe in Object(_0x1a89ab)));};};},{}],0xed:[function(_0x5d5e9c,_0x5d1d98,_0x57711b){var _0x402bb8=_0x404097,_0x102b91=_0x5d5e9c(_0x402bb8('0x76e'));_0x5d1d98[_0x402bb8('0xddc')]=function(_0x2f36ae){var _0x4ad9dc=_0x402bb8,_0x311832=_0x102b91(_0x2f36ae,function(_0x36f592){var _0x45d4ce=_0x3ab6;return 0x1f4===_0x2aed1f[_0x45d4ce('0x844')]&&_0x2aed1f[_0x45d4ce('0xedd')](),_0x36f592;}),_0x2aed1f=_0x311832[_0x4ad9dc('0x1106')];return _0x311832;};},{'./memoize':0x121}],0xee:[function(_0x797d91,_0x3f8b48,_0x1a0f6){var _0x123b48=_0x404097,_0x47a0b4=_0x797d91(_0x123b48('0x97d'))(Object,_0x123b48('0x5c2'));_0x3f8b48[_0x123b48('0xddc')]=_0x47a0b4;},{'./_getNative':0xca}],0xef:[function(_0xa27af8,_0x57d2e8,_0x11c1cf){var _0x192e4e=_0x404097,_0x5746ac=_0xa27af8('./_overArg')(Object['keys'],Object);_0x57d2e8[_0x192e4e('0xddc')]=_0x5746ac;},{'./_overArg':0xf3}],0xf0:[function(_0x164322,_0xb17673,_0x2c5b9b){var _0x39bdea=_0x404097;_0xb17673[_0x39bdea('0xddc')]=function(_0x378035){var _0x329532=[];if(null!=_0x378035)for(var _0x34e9ed in Object(_0x378035))_0x329532['push'](_0x34e9ed);return _0x329532;};},{}],0xf1:[function(_0x2cb535,_0x2b6488,_0x4e3042){var _0x811576=_0x404097,_0x4984c2=_0x2cb535(_0x811576('0xb6c')),_0x2764ca=_0x811576('0x21e')==typeof _0x4e3042&&_0x4e3042&&!_0x4e3042[_0x811576('0xa4b')]&&_0x4e3042,_0x2ca525=_0x2764ca&&_0x811576('0x21e')==typeof _0x2b6488&&_0x2b6488&&!_0x2b6488[_0x811576('0xa4b')]&&_0x2b6488,_0x5da826=_0x2ca525&&_0x2ca525[_0x811576('0xddc')]===_0x2764ca&&_0x4984c2[_0x811576('0xc4f')],_0x6b1d2b=function(){var _0x1be491=_0x811576;try{var _0x6d23db=_0x2ca525&&_0x2ca525[_0x1be491('0x550')]&&_0x2ca525[_0x1be491('0x550')](_0x1be491('0x9e0'))[_0x1be491('0x13d')];return _0x6d23db||_0x5da826&&_0x5da826['binding']&&_0x5da826['binding']('util');}catch(_0x529978){}}();_0x2b6488['exports']=_0x6b1d2b;},{'./_freeGlobal':0xc5}],0xf2:[function(_0x4686de,_0x46e788,_0x2c403a){var _0x585517=_0x404097,_0x54c766=Object[_0x585517('0x98c')][_0x585517('0x537')];_0x46e788['exports']=function(_0x16c49f){var _0x39f4fd=_0x585517;return _0x54c766[_0x39f4fd('0x4b0')](_0x16c49f);};},{}],0xf3:[function(_0x34f101,_0x2f1e60,_0x4603cb){_0x2f1e60['exports']=function(_0x475d7f,_0x3beaae){return function(_0x61e6b6){return _0x475d7f(_0x3beaae(_0x61e6b6));};};},{}],0xf4:[function(_0x44a8ed,_0x5d30b6,_0x14feef){var _0x53cfbe=_0x404097,_0x4434fc=_0x44a8ed(_0x53cfbe('0xff5')),_0x2db28a=Math[_0x53cfbe('0xf65')];_0x5d30b6[_0x53cfbe('0xddc')]=function(_0x466627,_0x5fa98e,_0x24ee15){var _0xe6eb7d=_0x53cfbe;return _0x5fa98e=_0x2db28a(void 0x0===_0x5fa98e?_0x466627[_0xe6eb7d('0x525')]-0x1:_0x5fa98e,0x0),function(){for(var _0x4b6c3a=arguments,_0x837d04=-0x1,_0x13c856=_0x2db28a(_0x4b6c3a['length']-_0x5fa98e,0x0),_0x2a2d3f=Array(_0x13c856);++_0x837d04<_0x13c856;)_0x2a2d3f[_0x837d04]=_0x4b6c3a[_0x5fa98e+_0x837d04];_0x837d04=-0x1;for(var _0x55b953=Array(_0x5fa98e+0x1);++_0x837d04<_0x5fa98e;)_0x55b953[_0x837d04]=_0x4b6c3a[_0x837d04];return _0x55b953[_0x5fa98e]=_0x24ee15(_0x2a2d3f),_0x4434fc(_0x466627,this,_0x55b953);};};},{'./_apply':0x83}],0xf5:[function(_0x1eee2c,_0x13f073,_0x5caf2c){var _0x109728=_0x404097,_0x162c09=_0x1eee2c(_0x109728('0xb6c')),_0x49e040=_0x109728('0x21e')==typeof self&&self&&self[_0x109728('0x75')]===Object&&self,_0x59d9e1=_0x162c09||_0x49e040||Function(_0x109728('0x107d'))();_0x13f073[_0x109728('0xddc')]=_0x59d9e1;},{'./_freeGlobal':0xc5}],0xf6:[function(_0x35267e,_0x3a1784,_0x5f0e50){_0x3a1784['exports']=function(_0x44fa44,_0x1213b2){var _0x47eee7=_0x3ab6;if(('constructor'!==_0x1213b2||_0x47eee7('0xae9')!=typeof _0x44fa44[_0x1213b2])&&_0x47eee7('0x11e6')!=_0x1213b2)return _0x44fa44[_0x1213b2];};},{}],0xf7:[function(_0x219017,_0x309498,_0x3896e8){var _0x54c194=_0x404097;_0x309498[_0x54c194('0xddc')]=function(_0x7aa9b7){var _0x482896=_0x54c194;return this[_0x482896('0x16c')]['set'](_0x7aa9b7,_0x482896('0x1160')),this;};},{}],0xf8:[function(_0x207685,_0x2a9c4d,_0xff2221){_0x2a9c4d['exports']=function(_0x3796b8){var _0x1ef58e=_0x3ab6;return this[_0x1ef58e('0x16c')]['has'](_0x3796b8);};},{}],0xf9:[function(_0x55aafd,_0x392b85,_0xd0952b){var _0x5c197b=_0x404097;_0x392b85[_0x5c197b('0xddc')]=function(_0x16ccd3){var _0xf986d6=_0x5c197b,_0x215e70=-0x1,_0x2d0373=Array(_0x16ccd3[_0xf986d6('0x844')]);return _0x16ccd3['forEach'](function(_0x5dca57){_0x2d0373[++_0x215e70]=_0x5dca57;}),_0x2d0373;};},{}],0xfa:[function(_0x5a1888,_0x5745b0,_0x58004c){var _0x88f095=_0x404097,_0x84f868=_0x5a1888(_0x88f095('0xb75')),_0x4d8fac=_0x5a1888('./_shortOut')(_0x84f868);_0x5745b0[_0x88f095('0xddc')]=_0x4d8fac;},{'./_baseSetToString':0xac,'./_shortOut':0xfb}],0xfb:[function(_0x51837e,_0x4091c7,_0x1c7bb4){var _0x1ea26e=_0x404097,_0x415d29=Date['now'];_0x4091c7[_0x1ea26e('0xddc')]=function(_0x231195){var _0x433f93=0x0,_0x1d7c6c=0x0;return function(){var _0x10131=_0x415d29(),_0x4d9f41=0x10-(_0x10131-_0x1d7c6c);if(_0x1d7c6c=_0x10131,_0x4d9f41>0x0){if(++_0x433f93>=0x320)return arguments[0x0];}else _0x433f93=0x0;return _0x231195['apply'](void 0x0,arguments);};};},{}],0xfc:[function(_0xbed2aa,_0x2bec81,_0x5a497a){var _0x3afbd1=_0x404097,_0x125454=_0xbed2aa(_0x3afbd1('0xf79'));_0x2bec81[_0x3afbd1('0xddc')]=function(){var _0x36e778=_0x3afbd1;this['__data__']=new _0x125454(),this[_0x36e778('0x844')]=0x0;};},{'./_ListCache':0x79}],0xfd:[function(_0x505d39,_0x14b907,_0x15c354){var _0x5a70a9=_0x404097;_0x14b907[_0x5a70a9('0xddc')]=function(_0x150533){var _0x3acac4=_0x5a70a9,_0x30bc2a=this[_0x3acac4('0x16c')],_0x25148a=_0x30bc2a[_0x3acac4('0x506')](_0x150533);return this[_0x3acac4('0x844')]=_0x30bc2a[_0x3acac4('0x844')],_0x25148a;};},{}],0xfe:[function(_0xfd3ea3,_0x287f6e,_0x5b222a){var _0x78dd58=_0x404097;_0x287f6e[_0x78dd58('0xddc')]=function(_0x57dbcb){var _0x3ba72a=_0x78dd58;return this['__data__'][_0x3ba72a('0x33')](_0x57dbcb);};},{}],0xff:[function(_0x1a1597,_0x51f4cb,_0x295872){var _0x22506a=_0x404097;_0x51f4cb[_0x22506a('0xddc')]=function(_0x199875){var _0x491fd7=_0x22506a;return this[_0x491fd7('0x16c')][_0x491fd7('0x587')](_0x199875);};},{}],0x100:[function(_0x40ffb7,_0x9d915d,_0x77ba45){var _0x1832ce=_0x404097,_0x502168=_0x40ffb7('./_ListCache'),_0xfaabab=_0x40ffb7(_0x1832ce('0xaea')),_0x1ea66c=_0x40ffb7('./_MapCache');_0x9d915d[_0x1832ce('0xddc')]=function(_0x400689,_0xca524b){var _0x4ce02f=_0x1832ce,_0x271b49=this[_0x4ce02f('0x16c')];if(_0x271b49 instanceof _0x502168){var _0x811fa8=_0x271b49['__data__'];if(!_0xfaabab||_0x811fa8['length']<0xc7)return _0x811fa8[_0x4ce02f('0x8f8')]([_0x400689,_0xca524b]),this[_0x4ce02f('0x844')]=++_0x271b49['size'],this;_0x271b49=this[_0x4ce02f('0x16c')]=new _0x1ea66c(_0x811fa8);}return _0x271b49[_0x4ce02f('0x11ce')](_0x400689,_0xca524b),this[_0x4ce02f('0x844')]=_0x271b49[_0x4ce02f('0x844')],this;};},{'./_ListCache':0x79,'./_Map':0x7a,'./_MapCache':0x7b}],0x101:[function(_0x4b4365,_0x5596d5,_0x5ae792){var _0x41d33d=_0x404097,_0x5b5c02=_0x4b4365(_0x41d33d('0x5b1')),_0x4e43ce=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,_0x5246e0=/\\(\\)?/g,_0x9a3b1=_0x5b5c02(function(_0x27edcc){var _0x5e00fc=_0x41d33d,_0x1a22d0=[];return 0x2e===_0x27edcc[_0x5e00fc('0x59d')](0x0)&&_0x1a22d0[_0x5e00fc('0x8f8')](''),_0x27edcc[_0x5e00fc('0x166')](_0x4e43ce,function(_0x70bca7,_0x1c2264,_0x194926,_0x107eeb){var _0x52b489=_0x5e00fc;_0x1a22d0[_0x52b489('0x8f8')](_0x194926?_0x107eeb[_0x52b489('0x166')](_0x5246e0,'$1'):_0x1c2264||_0x70bca7);}),_0x1a22d0;});_0x5596d5[_0x41d33d('0xddc')]=_0x9a3b1;},{'./_memoizeCapped':0xed}],0x102:[function(_0x365760,_0x3f6216,_0x315a8a){var _0x2707c1=_0x404097,_0x25a4b4=_0x365760(_0x2707c1('0x56a'));_0x3f6216[_0x2707c1('0xddc')]=function(_0x218b98){var _0x1055e5=_0x2707c1;if(_0x1055e5('0x7c7')==typeof _0x218b98||_0x25a4b4(_0x218b98))return _0x218b98;var _0x320198=_0x218b98+'';return'0'==_0x320198&&0x1/_0x218b98==-0x1/0x0?'-0':_0x320198;};},{'./isSymbol':0x11b}],0x103:[function(_0x585de3,_0x533784,_0x4e3de5){var _0x11c8d6=_0x404097,_0x1ab7cc=Function[_0x11c8d6('0x98c')][_0x11c8d6('0x537')];_0x533784['exports']=function(_0x277957){var _0xc6f1ac=_0x11c8d6;if(null!=_0x277957){try{return _0x1ab7cc[_0xc6f1ac('0x4b0')](_0x277957);}catch(_0x5907f1){}try{return _0x277957+'';}catch(_0x4388){}}return'';};},{}],0x104:[function(_0x211ab6,_0x206907,_0x352bea){var _0x254687=_0x404097,_0x442bb4=_0x211ab6(_0x254687('0x99c'));_0x206907[_0x254687('0xddc')]=function(_0x5a8ab4){return _0x442bb4(_0x5a8ab4,0x5);};},{'./_baseClone':0x90}],0x105:[function(_0x4d37d5,_0x13f0c5,_0xd1f318){_0x13f0c5['exports']=function(_0x46927b){return function(){return _0x46927b;};};},{}],0x106:[function(_0x3b0538,_0x8af7c1,_0x1c4c78){var _0x4a60f4=_0x404097,_0x250929=_0x3b0538(_0x4a60f4('0xaef')),_0x116242=_0x3b0538(_0x4a60f4('0x402')),_0x3607e9=_0x3b0538(_0x4a60f4('0xca9')),_0x539c6b=Math[_0x4a60f4('0xf65')],_0x297bee=Math[_0x4a60f4('0xc0d')];_0x8af7c1['exports']=function(_0x41ffa5,_0x25fcd1,_0x539ca3){var _0x291e9c=_0x4a60f4,_0x43c4ee,_0x3b38f5,_0x482a4f,_0x462fea,_0x5927cf,_0x40cb6d,_0x215f8c=0x0,_0x5b848b=!0x1,_0x5908a3=!0x1,_0x4d3da8=!0x0;if(_0x291e9c('0xae9')!=typeof _0x41ffa5)throw new TypeError('Expected\x20a\x20function');function _0x4fc378(_0x33294e){var _0x5deb59=_0x291e9c,_0x45c7be=_0x43c4ee,_0xde4a54=_0x3b38f5;return _0x43c4ee=_0x3b38f5=void 0x0,_0x215f8c=_0x33294e,_0x462fea=_0x41ffa5[_0x5deb59('0x1036')](_0xde4a54,_0x45c7be);}function _0x4d5c6f(_0x2b34bc){return _0x215f8c=_0x2b34bc,_0x5927cf=setTimeout(_0x5b0557,_0x25fcd1),_0x5b848b?_0x4fc378(_0x2b34bc):_0x462fea;}function _0x2dde9a(_0x4e91ed){var _0x13de8e=_0x4e91ed-_0x40cb6d;return void 0x0===_0x40cb6d||_0x13de8e>=_0x25fcd1||_0x13de8e<0x0||_0x5908a3&&_0x4e91ed-_0x215f8c>=_0x482a4f;}function _0x5b0557(){var _0x387f24=_0x116242();if(_0x2dde9a(_0x387f24))return _0xf9e4c9(_0x387f24);_0x5927cf=setTimeout(_0x5b0557,function(_0x3be625){var _0x35fd79=_0x25fcd1-(_0x3be625-_0x40cb6d);return _0x5908a3?_0x297bee(_0x35fd79,_0x482a4f-(_0x3be625-_0x215f8c)):_0x35fd79;}(_0x387f24));}function _0xf9e4c9(_0x48e188){return _0x5927cf=void 0x0,_0x4d3da8&&_0x43c4ee?_0x4fc378(_0x48e188):(_0x43c4ee=_0x3b38f5=void 0x0,_0x462fea);}function _0x727ad1(){var _0x2ec004=_0x116242(),_0x370278=_0x2dde9a(_0x2ec004);if(_0x43c4ee=arguments,_0x3b38f5=this,_0x40cb6d=_0x2ec004,_0x370278){if(void 0x0===_0x5927cf)return _0x4d5c6f(_0x40cb6d);if(_0x5908a3)return clearTimeout(_0x5927cf),_0x5927cf=setTimeout(_0x5b0557,_0x25fcd1),_0x4fc378(_0x40cb6d);}return void 0x0===_0x5927cf&&(_0x5927cf=setTimeout(_0x5b0557,_0x25fcd1)),_0x462fea;}return _0x25fcd1=_0x3607e9(_0x25fcd1)||0x0,_0x250929(_0x539ca3)&&(_0x5b848b=!!_0x539ca3[_0x291e9c('0xb11')],_0x482a4f=(_0x5908a3=_0x291e9c('0xa6a')in _0x539ca3)?_0x539c6b(_0x3607e9(_0x539ca3[_0x291e9c('0xa6a')])||0x0,_0x25fcd1):_0x482a4f,_0x4d3da8=_0x291e9c('0xdb5')in _0x539ca3?!!_0x539ca3[_0x291e9c('0xdb5')]:_0x4d3da8),_0x727ad1[_0x291e9c('0x584')]=function(){void 0x0!==_0x5927cf&&clearTimeout(_0x5927cf),_0x215f8c=0x0,_0x43c4ee=_0x40cb6d=_0x3b38f5=_0x5927cf=void 0x0;},_0x727ad1[_0x291e9c('0x68f')]=function(){return void 0x0===_0x5927cf?_0x462fea:_0xf9e4c9(_0x116242());},_0x727ad1;};},{'./isObject':0x116,'./now':0x123,'./toNumber':0x128}],0x107:[function(_0x7d7096,_0x5038c5,_0x10a1ac){var _0x420431=_0x404097;_0x5038c5[_0x420431('0xddc')]=_0x7d7096('./forEach');},{'./forEach':0x109}],0x108:[function(_0x3188c8,_0x51159d,_0x14e99a){var _0x627b8a=_0x404097;_0x51159d[_0x627b8a('0xddc')]=function(_0xf5d435,_0x383d57){return _0xf5d435===_0x383d57||_0xf5d435!=_0xf5d435&&_0x383d57!=_0x383d57;};},{}],0x109:[function(_0x294075,_0xcd323,_0x2f8808){var _0x19c3ac=_0x404097,_0xb3afab=_0x294075('./_arrayEach'),_0x540595=_0x294075(_0x19c3ac('0xfa6')),_0xaa73e9=_0x294075(_0x19c3ac('0x6e2')),_0x223314=_0x294075(_0x19c3ac('0xa28'));_0xcd323['exports']=function(_0x38c7e3,_0xb0b092){return(_0x223314(_0x38c7e3)?_0xb3afab:_0x540595)(_0x38c7e3,_0xaa73e9(_0xb0b092));};},{'./_arrayEach':0x84,'./_baseEach':0x92,'./_castFunction':0xb1,'./isArray':0x10f}],0x10a:[function(_0x3f2695,_0x285238,_0xd216ba){var _0x23a280=_0x404097,_0xec7899=_0x3f2695(_0x23a280('0x556')),_0x563ec7=_0x3f2695('./_castFunction');_0x285238['exports']=function(_0x16a289,_0x1040d6){return _0x16a289&&_0xec7899(_0x16a289,_0x563ec7(_0x1040d6));};},{'./_baseForOwn':0x94,'./_castFunction':0xb1}],0x10b:[function(_0x13cb6e,_0x497674,_0x307ee5){var _0xe4e08=_0x404097,_0x46eefc=_0x13cb6e('./_baseGet');_0x497674[_0xe4e08('0xddc')]=function(_0x55e76d,_0x271657,_0x28e52b){var _0x17dedf=null==_0x55e76d?void 0x0:_0x46eefc(_0x55e76d,_0x271657);return void 0x0===_0x17dedf?_0x28e52b:_0x17dedf;};},{'./_baseGet':0x95}],0x10c:[function(_0x154f0c,_0x30dcc1,_0x2f8a38){var _0xce7368=_0x404097,_0x177e70=_0x154f0c(_0xce7368('0x9b2')),_0x3b260a=_0x154f0c('./_hasPath');_0x30dcc1[_0xce7368('0xddc')]=function(_0x514125,_0x28d291){return null!=_0x514125&&_0x3b260a(_0x514125,_0x28d291,_0x177e70);};},{'./_baseHasIn':0x98,'./_hasPath':0xd1}],0x10d:[function(_0x4b114c,_0x45a993,_0x4c517d){var _0x5ece85=_0x404097;_0x45a993[_0x5ece85('0xddc')]=function(_0x20f266){return _0x20f266;};},{}],0x10e:[function(_0x4f1ee6,_0x238af1,_0x4aa797){var _0x5a6e5b=_0x404097,_0x329a0e=_0x4f1ee6(_0x5a6e5b('0x7b9')),_0x107667=_0x4f1ee6(_0x5a6e5b('0x1ef')),_0x10f531=Object[_0x5a6e5b('0x98c')],_0x49ab76=_0x10f531[_0x5a6e5b('0x100')],_0x1269cb=_0x10f531[_0x5a6e5b('0x2d6')],_0x6b52f1=_0x329a0e(function(){return arguments;}())?_0x329a0e:function(_0x979d42){var _0x34d087=_0x5a6e5b;return _0x107667(_0x979d42)&&_0x49ab76[_0x34d087('0x4b0')](_0x979d42,_0x34d087('0xb3a'))&&!_0x1269cb['call'](_0x979d42,_0x34d087('0xb3a'));};_0x238af1['exports']=_0x6b52f1;},{'./_baseIsArguments':0x99,'./isObjectLike':0x117}],0x10f:[function(_0x22b2cc,_0x4025a5,_0x457280){var _0x3b73b1=_0x404097,_0x3c5719=Array[_0x3b73b1('0x6f6')];_0x4025a5[_0x3b73b1('0xddc')]=_0x3c5719;},{}],0x110:[function(_0x29916b,_0x4739df,_0x38b266){var _0x3645d3=_0x404097,_0x47e6ae=_0x29916b(_0x3645d3('0x10b4')),_0x4c0f8e=_0x29916b(_0x3645d3('0x663'));_0x4739df['exports']=function(_0x49edd8){var _0x1e7b79=_0x3645d3;return null!=_0x49edd8&&_0x4c0f8e(_0x49edd8[_0x1e7b79('0x525')])&&!_0x47e6ae(_0x49edd8);};},{'./isFunction':0x113,'./isLength':0x114}],0x111:[function(_0x498e70,_0x2060d8,_0x35bed3){var _0x18e885=_0x404097,_0x3d0f7b=_0x498e70(_0x18e885('0xb15')),_0x248bb2=_0x498e70(_0x18e885('0x1ef'));_0x2060d8[_0x18e885('0xddc')]=function(_0x2ef49d){return _0x248bb2(_0x2ef49d)&&_0x3d0f7b(_0x2ef49d);};},{'./isArrayLike':0x110,'./isObjectLike':0x117}],0x112:[function(_0x5dc574,_0x49c589,_0x786bb9){var _0x440e2f=_0x404097,_0x40c840=_0x5dc574(_0x440e2f('0x189')),_0x350cbc=_0x5dc574(_0x440e2f('0x3b4')),_0x55e3f5=_0x440e2f('0x21e')==typeof _0x786bb9&&_0x786bb9&&!_0x786bb9['nodeType']&&_0x786bb9,_0x174579=_0x55e3f5&&_0x440e2f('0x21e')==typeof _0x49c589&&_0x49c589&&!_0x49c589['nodeType']&&_0x49c589,_0x24f213=_0x174579&&_0x174579[_0x440e2f('0xddc')]===_0x55e3f5?_0x40c840[_0x440e2f('0xb1e')]:void 0x0,_0x276da9=(_0x24f213?_0x24f213[_0x440e2f('0xcfd')]:void 0x0)||_0x350cbc;_0x49c589[_0x440e2f('0xddc')]=_0x276da9;},{'./_root':0xf5,'./stubFalse':0x126}],0x113:[function(_0x3e5240,_0x2d61c3,_0x434b88){var _0x164294=_0x404097,_0x533c1c=_0x3e5240(_0x164294('0xe4b')),_0x4842b8=_0x3e5240(_0x164294('0xaef'));_0x2d61c3[_0x164294('0xddc')]=function(_0x5717c7){var _0x10131f=_0x164294;if(!_0x4842b8(_0x5717c7))return!0x1;var _0x34b6d2=_0x533c1c(_0x5717c7);return _0x10131f('0xf70')==_0x34b6d2||_0x10131f('0xc49')==_0x34b6d2||_0x10131f('0x125')==_0x34b6d2||'[object\x20Proxy]'==_0x34b6d2;};},{'./_baseGetTag':0x97,'./isObject':0x116}],0x114:[function(_0x5778c4,_0x2282be,_0x344560){var _0x5bdcaf=_0x404097;_0x2282be[_0x5bdcaf('0xddc')]=function(_0x2e324e){var _0x44531d=_0x5bdcaf;return _0x44531d('0xd95')==typeof _0x2e324e&&_0x2e324e>-0x1&&_0x2e324e%0x1==0x0&&_0x2e324e<=0x1fffffffffffff;};},{}],0x115:[function(_0x4a58cc,_0x2fc4f3,_0x4e4def){var _0x3d7c3a=_0x404097,_0x2810d3=_0x4a58cc(_0x3d7c3a('0xd55')),_0x15c58e=_0x4a58cc(_0x3d7c3a('0x99f')),_0x34faf6=_0x4a58cc(_0x3d7c3a('0x408')),_0x422676=_0x34faf6&&_0x34faf6[_0x3d7c3a('0xe18')],_0x362c8b=_0x422676?_0x15c58e(_0x422676):_0x2810d3;_0x2fc4f3[_0x3d7c3a('0xddc')]=_0x362c8b;},{'./_baseIsMap':0x9c,'./_baseUnary':0xaf,'./_nodeUtil':0xf1}],0x116:[function(_0x2fa824,_0x2467cb,_0x49c069){var _0x43de1a=_0x404097;_0x2467cb[_0x43de1a('0xddc')]=function(_0x1c0ac3){var _0x51b14d=_0x43de1a,_0x538b54=typeof _0x1c0ac3;return null!=_0x1c0ac3&&(_0x51b14d('0x21e')==_0x538b54||_0x51b14d('0xae9')==_0x538b54);};},{}],0x117:[function(_0x580d1b,_0x689180,_0x18fbfd){var _0x334cec=_0x404097;_0x689180[_0x334cec('0xddc')]=function(_0x1587a8){var _0x30036d=_0x334cec;return null!=_0x1587a8&&_0x30036d('0x21e')==typeof _0x1587a8;};},{}],0x118:[function(_0x4f241f,_0x40185b,_0x1fab52){var _0x54a439=_0x404097,_0x26f2fc=_0x4f241f('./_baseGetTag'),_0x3de2bd=_0x4f241f(_0x54a439('0x677')),_0x452831=_0x4f241f(_0x54a439('0x1ef')),_0x215d0c=Function[_0x54a439('0x98c')],_0x2fa7cb=Object['prototype'],_0x58bc03=_0x215d0c[_0x54a439('0x537')],_0xb830e=_0x2fa7cb[_0x54a439('0x100')],_0x390cd2=_0x58bc03[_0x54a439('0x4b0')](Object);_0x40185b['exports']=function(_0x3950af){var _0x1ed6c2=_0x54a439;if(!_0x452831(_0x3950af)||_0x1ed6c2('0xebe')!=_0x26f2fc(_0x3950af))return!0x1;var _0xd7f670=_0x3de2bd(_0x3950af);if(null===_0xd7f670)return!0x0;var _0x1cb3cd=_0xb830e[_0x1ed6c2('0x4b0')](_0xd7f670,_0x1ed6c2('0x3c6'))&&_0xd7f670['constructor'];return _0x1ed6c2('0xae9')==typeof _0x1cb3cd&&_0x1cb3cd instanceof _0x1cb3cd&&_0x58bc03[_0x1ed6c2('0x4b0')](_0x1cb3cd)==_0x390cd2;};},{'./_baseGetTag':0x97,'./_getPrototype':0xcb,'./isObjectLike':0x117}],0x119:[function(_0x45bae7,_0x4301b4,_0x3f8471){var _0x4ae0c1=_0x404097,_0x143288=_0x45bae7(_0x4ae0c1('0x22c')),_0x2d0395=_0x45bae7(_0x4ae0c1('0x99f')),_0x1ae039=_0x45bae7(_0x4ae0c1('0x408')),_0x3ac53f=_0x1ae039&&_0x1ae039[_0x4ae0c1('0xa39')],_0x7403c2=_0x3ac53f?_0x2d0395(_0x3ac53f):_0x143288;_0x4301b4[_0x4ae0c1('0xddc')]=_0x7403c2;},{'./_baseIsSet':0x9f,'./_baseUnary':0xaf,'./_nodeUtil':0xf1}],0x11a:[function(_0x17eb44,_0x599477,_0x9cb46d){var _0x3dc76c=_0x404097,_0x4c9c59=_0x17eb44(_0x3dc76c('0xe4b')),_0x572217=_0x17eb44(_0x3dc76c('0xa28')),_0x12f53d=_0x17eb44(_0x3dc76c('0x1ef'));_0x599477[_0x3dc76c('0xddc')]=function(_0x45b3fb){var _0x43aeb2=_0x3dc76c;return _0x43aeb2('0x7c7')==typeof _0x45b3fb||!_0x572217(_0x45b3fb)&&_0x12f53d(_0x45b3fb)&&'[object\x20String]'==_0x4c9c59(_0x45b3fb);};},{'./_baseGetTag':0x97,'./isArray':0x10f,'./isObjectLike':0x117}],0x11b:[function(_0x31c7ae,_0x21b9e0,_0x3fb218){var _0x4e0b16=_0x404097,_0x50b5fb=_0x31c7ae('./_baseGetTag'),_0x3617ad=_0x31c7ae('./isObjectLike');_0x21b9e0[_0x4e0b16('0xddc')]=function(_0x45386a){var _0x4e588b=_0x4e0b16;return _0x4e588b('0x245')==typeof _0x45386a||_0x3617ad(_0x45386a)&&_0x4e588b('0x105c')==_0x50b5fb(_0x45386a);};},{'./_baseGetTag':0x97,'./isObjectLike':0x117}],0x11c:[function(_0x136c50,_0x5b352e,_0x24ba3d){var _0x4e390c=_0x404097,_0x50723d=_0x136c50('./_baseIsTypedArray'),_0x43a9b2=_0x136c50(_0x4e390c('0x99f')),_0x130068=_0x136c50(_0x4e390c('0x408')),_0x51deb3=_0x130068&&_0x130068[_0x4e390c('0x58e')],_0x4e5cc8=_0x51deb3?_0x43a9b2(_0x51deb3):_0x50723d;_0x5b352e[_0x4e390c('0xddc')]=_0x4e5cc8;},{'./_baseIsTypedArray':0xa0,'./_baseUnary':0xaf,'./_nodeUtil':0xf1}],0x11d:[function(_0x5aee43,_0x72e228,_0x523f09){_0x72e228['exports']=function(_0x488695){return void 0x0===_0x488695;};},{}],0x11e:[function(_0x1e4aef,_0x48c1fd,_0x166244){var _0x27f503=_0x404097,_0x3e6d78=_0x1e4aef('./_arrayLikeKeys'),_0x52ce8e=_0x1e4aef(_0x27f503('0x85b')),_0xa0ca87=_0x1e4aef('./isArrayLike');_0x48c1fd[_0x27f503('0xddc')]=function(_0x19321c){return _0xa0ca87(_0x19321c)?_0x3e6d78(_0x19321c):_0x52ce8e(_0x19321c);};},{'./_arrayLikeKeys':0x86,'./_baseKeys':0xa2,'./isArrayLike':0x110}],0x11f:[function(_0xc0d19f,_0x5ee193,_0x1d7abd){var _0x3fc92f=_0x404097,_0x53d37a=_0xc0d19f(_0x3fc92f('0xd7e')),_0x43528d=_0xc0d19f(_0x3fc92f('0xae7')),_0x233e7f=_0xc0d19f(_0x3fc92f('0xb15'));_0x5ee193[_0x3fc92f('0xddc')]=function(_0x3fa069){return _0x233e7f(_0x3fa069)?_0x53d37a(_0x3fa069,!0x0):_0x43528d(_0x3fa069);};},{'./_arrayLikeKeys':0x86,'./_baseKeysIn':0xa3,'./isArrayLike':0x110}],0x120:[function(_0x4d7205,_0x1270b9,_0x114237){var _0x300b1d=_0x404097,_0x240135=_0x4d7205(_0x300b1d('0x406')),_0x161f17=_0x4d7205('./_baseIteratee'),_0x3e70c1=_0x4d7205(_0x300b1d('0x581')),_0x32fa99=_0x4d7205(_0x300b1d('0xa28'));_0x1270b9[_0x300b1d('0xddc')]=function(_0x58008a,_0x2548b8){return(_0x32fa99(_0x58008a)?_0x240135:_0x3e70c1)(_0x58008a,_0x161f17(_0x2548b8,0x3));};},{'./_arrayMap':0x87,'./_baseIteratee':0xa1,'./_baseMap':0xa4,'./isArray':0x10f}],0x121:[function(_0x396874,_0x548e42,_0x2c60d8){var _0x154bf2=_0x404097,_0x165a66=_0x396874(_0x154bf2('0x73e'));function _0x7c9cc7(_0x96f0bf,_0x43ab35){var _0x5cc300=_0x154bf2;if(_0x5cc300('0xae9')!=typeof _0x96f0bf||null!=_0x43ab35&&'function'!=typeof _0x43ab35)throw new TypeError('Expected\x20a\x20function');var _0x2fefbd=function(){var _0x329814=_0x5cc300,_0x204e69=arguments,_0x3021e6=_0x43ab35?_0x43ab35[_0x329814('0x1036')](this,_0x204e69):_0x204e69[0x0],_0x4f55cd=_0x2fefbd[_0x329814('0x1106')];if(_0x4f55cd[_0x329814('0x587')](_0x3021e6))return _0x4f55cd['get'](_0x3021e6);var _0x55c5a9=_0x96f0bf[_0x329814('0x1036')](this,_0x204e69);return _0x2fefbd[_0x329814('0x1106')]=_0x4f55cd['set'](_0x3021e6,_0x55c5a9)||_0x4f55cd,_0x55c5a9;};return _0x2fefbd[_0x5cc300('0x1106')]=new(_0x7c9cc7[(_0x5cc300('0x197'))]||_0x165a66)(),_0x2fefbd;}_0x7c9cc7[_0x154bf2('0x197')]=_0x165a66,_0x548e42[_0x154bf2('0xddc')]=_0x7c9cc7;},{'./_MapCache':0x7b}],0x122:[function(_0x3e0b60,_0x360e2b,_0x1b7ff9){var _0x27b7c1=_0x404097,_0x247406=_0x3e0b60(_0x27b7c1('0x42')),_0x1464f7=_0x3e0b60(_0x27b7c1('0x907'))(function(_0x3b383b,_0x42836a,_0x1953aa){_0x247406(_0x3b383b,_0x42836a,_0x1953aa);});_0x360e2b['exports']=_0x1464f7;},{'./_baseMerge':0xa7,'./_createAssigner':0xbe}],0x123:[function(_0x1ce281,_0x5a9b2f,_0x3918de){var _0x20a800=_0x404097,_0x250d86=_0x1ce281(_0x20a800('0x189'));_0x5a9b2f[_0x20a800('0xddc')]=function(){var _0x1c73d5=_0x20a800;return _0x250d86[_0x1c73d5('0x700')][_0x1c73d5('0x6ce')]();};},{'./_root':0xf5}],0x124:[function(_0x1dc5ec,_0x5abbd3,_0xcde1e2){var _0x4aab13=_0x404097,_0x415a9c=_0x1dc5ec(_0x4aab13('0x350')),_0x1b9539=_0x1dc5ec(_0x4aab13('0x5d6')),_0x57d134=_0x1dc5ec(_0x4aab13('0xcf0')),_0x5a1599=_0x1dc5ec('./_toKey');_0x5abbd3[_0x4aab13('0xddc')]=function(_0x1720a2){return _0x57d134(_0x1720a2)?_0x415a9c(_0x5a1599(_0x1720a2)):_0x1b9539(_0x1720a2);};},{'./_baseProperty':0xa9,'./_basePropertyDeep':0xaa,'./_isKey':0xdc,'./_toKey':0x102}],0x125:[function(_0x4793a4,_0x430177,_0x4b4e95){var _0x35f590=_0x404097;_0x430177[_0x35f590('0xddc')]=function(){return[];};},{}],0x126:[function(_0xaea96c,_0x2a2c72,_0xc51c03){_0x2a2c72['exports']=function(){return!0x1;};},{}],0x127:[function(_0x403e2c,_0x13588b,_0x3e7ed5){var _0x20f78f=_0x404097,_0x364b34=_0x403e2c(_0x20f78f('0xed')),_0x4271ad=_0x403e2c(_0x20f78f('0xaef'));_0x13588b[_0x20f78f('0xddc')]=function(_0x24426f,_0x1a5c50,_0x20885b){var _0x3e3d30=_0x20f78f,_0x3f562e=!0x0,_0x3815f3=!0x0;if(_0x3e3d30('0xae9')!=typeof _0x24426f)throw new TypeError(_0x3e3d30('0x3e9'));return _0x4271ad(_0x20885b)&&(_0x3f562e=_0x3e3d30('0xb11')in _0x20885b?!!_0x20885b[_0x3e3d30('0xb11')]:_0x3f562e,_0x3815f3=_0x3e3d30('0xdb5')in _0x20885b?!!_0x20885b[_0x3e3d30('0xdb5')]:_0x3815f3),_0x364b34(_0x24426f,_0x1a5c50,{'leading':_0x3f562e,'maxWait':_0x1a5c50,'trailing':_0x3815f3});};},{'./debounce':0x106,'./isObject':0x116}],0x128:[function(_0x5a6748,_0x369ad8,_0x3f8571){var _0x378888=_0x404097,_0x3ed5a8=_0x5a6748(_0x378888('0xaef')),_0x145b9e=_0x5a6748('./isSymbol'),_0x87625e=/^\s+|\s+$/g,_0x374d9c=/^[-+]0x[0-9a-f]+$/i,_0x55a7c6=/^0b[01]+$/i,_0x1370f2=/^0o[0-7]+$/i,_0x45f3f9=parseInt;_0x369ad8['exports']=function(_0x632118){var _0x2ac3b8=_0x378888;if('number'==typeof _0x632118)return _0x632118;if(_0x145b9e(_0x632118))return NaN;if(_0x3ed5a8(_0x632118)){var _0x9f590c=_0x2ac3b8('0xae9')==typeof _0x632118[_0x2ac3b8('0x80')]?_0x632118[_0x2ac3b8('0x80')]():_0x632118;_0x632118=_0x3ed5a8(_0x9f590c)?_0x9f590c+'':_0x9f590c;}if(_0x2ac3b8('0x7c7')!=typeof _0x632118)return 0x0===_0x632118?_0x632118:+_0x632118;_0x632118=_0x632118[_0x2ac3b8('0x166')](_0x87625e,'');var _0x5c4498=_0x55a7c6[_0x2ac3b8('0xaac')](_0x632118);return _0x5c4498||_0x1370f2[_0x2ac3b8('0xaac')](_0x632118)?_0x45f3f9(_0x632118[_0x2ac3b8('0xbc0')](0x2),_0x5c4498?0x2:0x8):_0x374d9c['test'](_0x632118)?NaN:+_0x632118;};},{'./isObject':0x116,'./isSymbol':0x11b}],0x129:[function(_0x554d2d,_0x3d2e69,_0x305e59){var _0x59215a=_0x404097,_0x48b430=_0x554d2d(_0x59215a('0x46')),_0x1886f7=_0x554d2d(_0x59215a('0x455'));_0x3d2e69[_0x59215a('0xddc')]=function(_0x20a363){return _0x48b430(_0x20a363,_0x1886f7(_0x20a363));};},{'./_copyObject':0xba,'./keysIn':0x11f}],0x12a:[function(_0x285c56,_0x498f55,_0x3cdc37){var _0x5dea2f=_0x404097,_0x3dd309=_0x285c56(_0x5dea2f('0x5e3'));_0x498f55['exports']=function(_0x3a1a18){return null==_0x3a1a18?'':_0x3dd309(_0x3a1a18);};},{'./_baseToString':0xae}],0x12b:[function(_0x5e011a,_0x348874,_0x745849){var _0x21d9a9=_0x404097,_0xd24d34,_0x21ac3e;_0xd24d34=this,_0x21ac3e=function(){var _0x4807b1=_0x3ab6;return{'red':{0x32:_0x4807b1('0x1087'),0x64:'#ffcdd2',0xc8:_0x4807b1('0x76c'),0x12c:_0x4807b1('0x84'),0x190:'#ef5350',0x1f4:_0x4807b1('0x99b'),0x258:_0x4807b1('0x828'),0x2bc:_0x4807b1('0x9f6'),0x320:_0x4807b1('0x1181'),0x384:'#b71c1c','a100':_0x4807b1('0x713'),'a200':_0x4807b1('0x57a'),'a400':_0x4807b1('0xb55'),'a700':_0x4807b1('0x10d5')},'pink':{0x32:'#fce4ec',0x64:_0x4807b1('0xc33'),0xc8:'#f48fb1',0x12c:'#f06292',0x190:_0x4807b1('0x324'),0x1f4:'#e91e63',0x258:_0x4807b1('0x6b'),0x2bc:_0x4807b1('0x5d8'),0x320:_0x4807b1('0xe79'),0x384:_0x4807b1('0x6a5'),'a100':_0x4807b1('0x894'),'a200':_0x4807b1('0xc21'),'a400':_0x4807b1('0xd03'),'a700':_0x4807b1('0x228')},'purple':{0x32:_0x4807b1('0x892'),0x64:'#e1bee7',0xc8:_0x4807b1('0x113d'),0x12c:'#ba68c8',0x190:_0x4807b1('0xe62'),0x1f4:_0x4807b1('0x979'),0x258:_0x4807b1('0x495'),0x2bc:_0x4807b1('0xf05'),0x320:_0x4807b1('0xc98'),0x384:_0x4807b1('0xc2b'),'a100':_0x4807b1('0x613'),'a200':_0x4807b1('0xd0'),'a400':'#d500f9','a700':_0x4807b1('0x23c')},'deepPurple':{0x32:'#ede7f6',0x64:_0x4807b1('0xc52'),0xc8:_0x4807b1('0x72c'),0x12c:_0x4807b1('0xda8'),0x190:'#7e57c2',0x1f4:_0x4807b1('0xca6'),0x258:_0x4807b1('0xaa'),0x2bc:_0x4807b1('0xee0'),0x320:'#4527a0',0x384:_0x4807b1('0xb12'),'a100':_0x4807b1('0x6c'),'a200':_0x4807b1('0xc4e'),'a400':'#651fff','a700':'#6200ea'},'indigo':{0x32:_0x4807b1('0xdb7'),0x64:_0x4807b1('0x702'),0xc8:_0x4807b1('0xd80'),0x12c:_0x4807b1('0x9bf'),0x190:_0x4807b1('0x10d9'),0x1f4:_0x4807b1('0x10f1'),0x258:'#3949ab',0x2bc:_0x4807b1('0xbe9'),0x320:_0x4807b1('0x694'),0x384:_0x4807b1('0x384'),'a100':_0x4807b1('0xf5f'),'a200':'#536dfe','a400':_0x4807b1('0xd3'),'a700':_0x4807b1('0x227')},'blue':{0x32:_0x4807b1('0x1034'),0x64:'#bbdefb',0xc8:_0x4807b1('0x639'),0x12c:_0x4807b1('0xfc3'),0x190:_0x4807b1('0x860'),0x1f4:_0x4807b1('0x4fa'),0x258:_0x4807b1('0xf92'),0x2bc:_0x4807b1('0xc99'),0x320:'#1565c0',0x384:_0x4807b1('0xcee'),'a100':_0x4807b1('0xead'),'a200':_0x4807b1('0x89a'),'a400':_0x4807b1('0xe76'),'a700':_0x4807b1('0xb50')},'lightBlue':{0x32:_0x4807b1('0xc30'),0x64:_0x4807b1('0xccb'),0xc8:_0x4807b1('0x6'),0x12c:_0x4807b1('0x65'),0x190:_0x4807b1('0xa76'),0x1f4:_0x4807b1('0x7de'),0x258:_0x4807b1('0x34f'),0x2bc:'#0288d1',0x320:'#0277bd',0x384:_0x4807b1('0xed2'),'a100':_0x4807b1('0x10a0'),'a200':'#40c4ff','a400':'#00b0ff','a700':'#0091ea'},'cyan':{0x32:_0x4807b1('0xf0'),0x64:'#b2ebf2',0xc8:_0x4807b1('0x563'),0x12c:_0x4807b1('0x908'),0x190:_0x4807b1('0xb69'),0x1f4:_0x4807b1('0xe2c'),0x258:_0x4807b1('0x2fb'),0x2bc:'#0097a7',0x320:_0x4807b1('0x6c5'),0x384:_0x4807b1('0x119e'),'a100':_0x4807b1('0x123'),'a200':_0x4807b1('0x120'),'a400':_0x4807b1('0x3d9'),'a700':_0x4807b1('0x441')},'teal':{0x32:_0x4807b1('0x8e6'),0x64:_0x4807b1('0x24f'),0xc8:_0x4807b1('0x102c'),0x12c:_0x4807b1('0xd12'),0x190:_0x4807b1('0x1014'),0x1f4:_0x4807b1('0x936'),0x258:_0x4807b1('0xd07'),0x2bc:'#00796b',0x320:_0x4807b1('0xe68'),0x384:_0x4807b1('0xaf0'),'a100':_0x4807b1('0x991'),'a200':'#64ffda','a400':_0x4807b1('0x27e'),'a700':_0x4807b1('0x8b7')},'green':{0x32:_0x4807b1('0xc2d'),0x64:_0x4807b1('0xb71'),0xc8:_0x4807b1('0x7c0'),0x12c:_0x4807b1('0x914'),0x190:_0x4807b1('0xf98'),0x1f4:_0x4807b1('0x20a'),0x258:_0x4807b1('0x983'),0x2bc:_0x4807b1('0x11a4'),0x320:_0x4807b1('0x915'),0x384:'#1b5e20','a100':_0x4807b1('0xe45'),'a200':_0x4807b1('0x6e9'),'a400':'#00e676','a700':_0x4807b1('0xeca')},'lightGreen':{0x32:_0x4807b1('0xcde'),0x64:_0x4807b1('0xe26'),0xc8:_0x4807b1('0x11eb'),0x12c:_0x4807b1('0x101'),0x190:_0x4807b1('0x9e9'),0x1f4:'#8bc34a',0x258:_0x4807b1('0xb46'),0x2bc:'#689f38',0x320:'#558b2f',0x384:_0x4807b1('0x122'),'a100':_0x4807b1('0x863'),'a200':_0x4807b1('0xf48'),'a400':'#76ff03','a700':_0x4807b1('0x4c9')},'lime':{0x32:'#f9fbe7',0x64:_0x4807b1('0x7ad'),0xc8:'#e6ee9c',0x12c:'#dce775',0x190:'#d4e157',0x1f4:'#cddc39',0x258:'#c0ca33',0x2bc:_0x4807b1('0x882'),0x320:_0x4807b1('0x3b2'),0x384:_0x4807b1('0x31c'),'a100':'#f4ff81','a200':_0x4807b1('0x100b'),'a400':_0x4807b1('0x5a1'),'a700':_0x4807b1('0xc17')},'yellow':{0x32:_0x4807b1('0x17e'),0x64:'#fff9c4',0xc8:_0x4807b1('0x10e7'),0x12c:'#fff176',0x190:_0x4807b1('0x5a'),0x1f4:_0x4807b1('0x731'),0x258:_0x4807b1('0xea6'),0x2bc:_0x4807b1('0x10c6'),0x320:_0x4807b1('0xda2'),0x384:_0x4807b1('0x70e'),'a100':_0x4807b1('0x190'),'a200':_0x4807b1('0x56d'),'a400':_0x4807b1('0x113a'),'a700':'#ffd600'},'amber':{0x32:_0x4807b1('0xba9'),0x64:_0x4807b1('0xf54'),0xc8:_0x4807b1('0xab7'),0x12c:_0x4807b1('0x492'),0x190:_0x4807b1('0x1107'),0x1f4:_0x4807b1('0x1ee'),0x258:_0x4807b1('0x6a'),0x2bc:'#ffa000',0x320:_0x4807b1('0x33a'),0x384:_0x4807b1('0x4f9'),'a100':_0x4807b1('0x1109'),'a200':_0x4807b1('0xbfe'),'a400':_0x4807b1('0x158'),'a700':'#ffab00'},'orange':{0x32:_0x4807b1('0x5c3'),0x64:_0x4807b1('0x24a'),0xc8:'#ffcc80',0x12c:_0x4807b1('0xba'),0x190:_0x4807b1('0xa6d'),0x1f4:_0x4807b1('0x594'),0x258:'#fb8c00',0x2bc:'#f57c00',0x320:_0x4807b1('0x79f'),0x384:_0x4807b1('0x100a'),'a100':_0x4807b1('0x487'),'a200':_0x4807b1('0x6ac'),'a400':_0x4807b1('0xf39'),'a700':_0x4807b1('0xabf')},'deepOrange':{0x32:_0x4807b1('0xf3c'),0x64:_0x4807b1('0x1e0'),0xc8:'#ffab91',0x12c:_0x4807b1('0x78c'),0x190:_0x4807b1('0xbbd'),0x1f4:_0x4807b1('0xca'),0x258:_0x4807b1('0x11de'),0x2bc:_0x4807b1('0x37b'),0x320:_0x4807b1('0x5fc'),0x384:_0x4807b1('0x612'),'a100':_0x4807b1('0x5ca'),'a200':_0x4807b1('0xa25'),'a400':_0x4807b1('0x115b'),'a700':_0x4807b1('0x6d3')},'brown':{0x32:_0x4807b1('0x1199'),0x64:_0x4807b1('0x750'),0xc8:_0x4807b1('0x411'),0x12c:_0x4807b1('0xce5'),0x190:_0x4807b1('0xe56'),0x1f4:_0x4807b1('0xdf9'),0x258:'#6d4c41',0x2bc:'#5d4037',0x320:_0x4807b1('0x2a6'),0x384:_0x4807b1('0xe2d')},'grey':{0x32:'#fafafa',0x64:_0x4807b1('0x3be'),0xc8:_0x4807b1('0x101c'),0x12c:_0x4807b1('0x488'),0x190:_0x4807b1('0x415'),0x1f4:_0x4807b1('0xf34'),0x258:_0x4807b1('0x391'),0x2bc:_0x4807b1('0x1c9'),0x320:_0x4807b1('0x1af'),0x384:_0x4807b1('0x945')},'blueGrey':{0x32:_0x4807b1('0x714'),0x64:'#cfd8dc',0xc8:_0x4807b1('0xfc2'),0x12c:_0x4807b1('0x8ac'),0x190:_0x4807b1('0x801'),0x1f4:'#607d8b',0x258:'#546e7a',0x2bc:'#455a64',0x320:'#37474f',0x384:_0x4807b1('0x287')},'darkText':{'primary':_0x4807b1('0xfbe'),'secondary':_0x4807b1('0xcc4'),'disabled':'rgba(0,\x200,\x200,\x200.38)','dividers':_0x4807b1('0x5d1')},'lightText':{'primary':'rgba(255,\x20255,\x20255,\x201)','secondary':_0x4807b1('0x70a'),'disabled':'rgba(255,\x20255,\x20255,\x200.5)','dividers':_0x4807b1('0xc2f')},'darkIcons':{'active':_0x4807b1('0xcc4'),'inactive':'rgba(0,\x200,\x200,\x200.38)'},'lightIcons':{'active':_0x4807b1('0x4b7'),'inactive':_0x4807b1('0x510')},'white':'#ffffff','black':_0x4807b1('0x622')};},_0x21d9a9('0xae9')==typeof define&&define[_0x21d9a9('0x733')]?define([],_0x21ac3e):_0x21d9a9('0x21e')==typeof _0x745849?_0x348874[_0x21d9a9('0xddc')]={'red':{0x32:_0x21d9a9('0x1087'),0x64:_0x21d9a9('0x2d8'),0xc8:'#ef9a9a',0x12c:_0x21d9a9('0x84'),0x190:_0x21d9a9('0xa48'),0x1f4:_0x21d9a9('0x99b'),0x258:_0x21d9a9('0x828'),0x2bc:_0x21d9a9('0x9f6'),0x320:_0x21d9a9('0x1181'),0x384:_0x21d9a9('0x6be'),'a100':'#ff8a80','a200':_0x21d9a9('0x57a'),'a400':_0x21d9a9('0xb55'),'a700':_0x21d9a9('0x10d5')},'pink':{0x32:_0x21d9a9('0xb36'),0x64:_0x21d9a9('0xc33'),0xc8:'#f48fb1',0x12c:'#f06292',0x190:_0x21d9a9('0x324'),0x1f4:'#e91e63',0x258:_0x21d9a9('0x6b'),0x2bc:_0x21d9a9('0x5d8'),0x320:_0x21d9a9('0xe79'),0x384:_0x21d9a9('0x6a5'),'a100':'#ff80ab','a200':_0x21d9a9('0xc21'),'a400':_0x21d9a9('0xd03'),'a700':_0x21d9a9('0x228')},'purple':{0x32:'#f3e5f5',0x64:_0x21d9a9('0xd8a'),0xc8:_0x21d9a9('0x113d'),0x12c:_0x21d9a9('0xd3c'),0x190:'#ab47bc',0x1f4:_0x21d9a9('0x979'),0x258:_0x21d9a9('0x495'),0x2bc:'#7b1fa2',0x320:'#6a1b9a',0x384:_0x21d9a9('0xc2b'),'a100':_0x21d9a9('0x613'),'a200':'#e040fb','a400':_0x21d9a9('0x1fa'),'a700':_0x21d9a9('0x23c')},'deepPurple':{0x32:'#ede7f6',0x64:_0x21d9a9('0xc52'),0xc8:'#b39ddb',0x12c:'#9575cd',0x190:_0x21d9a9('0xb2e'),0x1f4:_0x21d9a9('0xca6'),0x258:_0x21d9a9('0xaa'),0x2bc:_0x21d9a9('0xee0'),0x320:_0x21d9a9('0x25'),0x384:_0x21d9a9('0xb12'),'a100':_0x21d9a9('0x6c'),'a200':_0x21d9a9('0xc4e'),'a400':'#651fff','a700':_0x21d9a9('0x334')},'indigo':{0x32:_0x21d9a9('0xdb7'),0x64:_0x21d9a9('0x702'),0xc8:_0x21d9a9('0xd80'),0x12c:_0x21d9a9('0x9bf'),0x190:'#5c6bc0',0x1f4:_0x21d9a9('0x10f1'),0x258:'#3949ab',0x2bc:_0x21d9a9('0xbe9'),0x320:_0x21d9a9('0x694'),0x384:_0x21d9a9('0x384'),'a100':_0x21d9a9('0xf5f'),'a200':'#536dfe','a400':_0x21d9a9('0xd3'),'a700':_0x21d9a9('0x227')},'blue':{0x32:'#e3f2fd',0x64:_0x21d9a9('0xad'),0xc8:_0x21d9a9('0x639'),0x12c:_0x21d9a9('0xfc3'),0x190:_0x21d9a9('0x860'),0x1f4:'#2196f3',0x258:'#1e88e5',0x2bc:_0x21d9a9('0xc99'),0x320:_0x21d9a9('0x4a'),0x384:_0x21d9a9('0xcee'),'a100':'#82b1ff','a200':'#448aff','a400':_0x21d9a9('0xe76'),'a700':_0x21d9a9('0xb50')},'lightBlue':{0x32:'#e1f5fe',0x64:_0x21d9a9('0xccb'),0xc8:'#81d4fa',0x12c:_0x21d9a9('0x65'),0x190:'#29b6f6',0x1f4:_0x21d9a9('0x7de'),0x258:_0x21d9a9('0x34f'),0x2bc:_0x21d9a9('0xce1'),0x320:'#0277bd',0x384:_0x21d9a9('0xed2'),'a100':_0x21d9a9('0x10a0'),'a200':_0x21d9a9('0xb05'),'a400':_0x21d9a9('0xff7'),'a700':_0x21d9a9('0x11aa')},'cyan':{0x32:_0x21d9a9('0xf0'),0x64:_0x21d9a9('0xfe8'),0xc8:_0x21d9a9('0x563'),0x12c:_0x21d9a9('0x908'),0x190:'#26c6da',0x1f4:'#00bcd4',0x258:'#00acc1',0x2bc:_0x21d9a9('0x549'),0x320:_0x21d9a9('0x6c5'),0x384:_0x21d9a9('0x119e'),'a100':_0x21d9a9('0x123'),'a200':_0x21d9a9('0x120'),'a400':'#00e5ff','a700':_0x21d9a9('0x441')},'teal':{0x32:_0x21d9a9('0x8e6'),0x64:_0x21d9a9('0x24f'),0xc8:_0x21d9a9('0x102c'),0x12c:_0x21d9a9('0xd12'),0x190:_0x21d9a9('0x1014'),0x1f4:_0x21d9a9('0x936'),0x258:_0x21d9a9('0xd07'),0x2bc:'#00796b',0x320:'#00695c',0x384:_0x21d9a9('0xaf0'),'a100':'#a7ffeb','a200':_0x21d9a9('0xb29'),'a400':'#1de9b6','a700':_0x21d9a9('0x8b7')},'green':{0x32:'#e8f5e9',0x64:_0x21d9a9('0xb71'),0xc8:'#a5d6a7',0x12c:'#81c784',0x190:_0x21d9a9('0xf98'),0x1f4:'#4caf50',0x258:_0x21d9a9('0x983'),0x2bc:_0x21d9a9('0x11a4'),0x320:_0x21d9a9('0x915'),0x384:_0x21d9a9('0xeb8'),'a100':_0x21d9a9('0xe45'),'a200':_0x21d9a9('0x6e9'),'a400':_0x21d9a9('0x36a'),'a700':'#00c853'},'lightGreen':{0x32:'#f1f8e9',0x64:_0x21d9a9('0xe26'),0xc8:_0x21d9a9('0x11eb'),0x12c:'#aed581',0x190:_0x21d9a9('0x9e9'),0x1f4:_0x21d9a9('0xd7f'),0x258:_0x21d9a9('0xb46'),0x2bc:_0x21d9a9('0x100c'),0x320:_0x21d9a9('0x545'),0x384:_0x21d9a9('0x122'),'a100':_0x21d9a9('0x863'),'a200':'#b2ff59','a400':'#76ff03','a700':_0x21d9a9('0x4c9')},'lime':{0x32:'#f9fbe7',0x64:_0x21d9a9('0x7ad'),0xc8:_0x21d9a9('0x792'),0x12c:_0x21d9a9('0x667'),0x190:'#d4e157',0x1f4:_0x21d9a9('0x11dc'),0x258:'#c0ca33',0x2bc:_0x21d9a9('0x882'),0x320:_0x21d9a9('0x3b2'),0x384:_0x21d9a9('0x31c'),'a100':_0x21d9a9('0x4f1'),'a200':_0x21d9a9('0x100b'),'a400':'#c6ff00','a700':_0x21d9a9('0xc17')},'yellow':{0x32:_0x21d9a9('0x17e'),0x64:_0x21d9a9('0x99e'),0xc8:'#fff59d',0x12c:_0x21d9a9('0x252'),0x190:_0x21d9a9('0x5a'),0x1f4:_0x21d9a9('0x731'),0x258:_0x21d9a9('0xea6'),0x2bc:_0x21d9a9('0x10c6'),0x320:_0x21d9a9('0xda2'),0x384:_0x21d9a9('0x70e'),'a100':_0x21d9a9('0x190'),'a200':'#ffff00','a400':_0x21d9a9('0x113a'),'a700':_0x21d9a9('0x426')},'amber':{0x32:_0x21d9a9('0xba9'),0x64:_0x21d9a9('0xf54'),0xc8:_0x21d9a9('0xab7'),0x12c:_0x21d9a9('0x492'),0x190:_0x21d9a9('0x1107'),0x1f4:'#ffc107',0x258:_0x21d9a9('0x6a'),0x2bc:_0x21d9a9('0x10c8'),0x320:'#ff8f00',0x384:_0x21d9a9('0x4f9'),'a100':_0x21d9a9('0x1109'),'a200':'#ffd740','a400':_0x21d9a9('0x158'),'a700':'#ffab00'},'orange':{0x32:_0x21d9a9('0x5c3'),0x64:_0x21d9a9('0x24a'),0xc8:_0x21d9a9('0x698'),0x12c:_0x21d9a9('0xba'),0x190:'#ffa726',0x1f4:_0x21d9a9('0x594'),0x258:_0x21d9a9('0x11df'),0x2bc:_0x21d9a9('0x791'),0x320:_0x21d9a9('0x79f'),0x384:'#e65100','a100':_0x21d9a9('0x487'),'a200':_0x21d9a9('0x6ac'),'a400':_0x21d9a9('0xf39'),'a700':_0x21d9a9('0xabf')},'deepOrange':{0x32:_0x21d9a9('0xf3c'),0x64:'#ffccbc',0xc8:_0x21d9a9('0xf83'),0x12c:_0x21d9a9('0x78c'),0x190:_0x21d9a9('0xbbd'),0x1f4:_0x21d9a9('0xca'),0x258:'#f4511e',0x2bc:_0x21d9a9('0x37b'),0x320:_0x21d9a9('0x5fc'),0x384:_0x21d9a9('0x612'),'a100':'#ff9e80','a200':_0x21d9a9('0xa25'),'a400':_0x21d9a9('0x115b'),'a700':_0x21d9a9('0x6d3')},'brown':{0x32:_0x21d9a9('0x1199'),0x64:_0x21d9a9('0x750'),0xc8:_0x21d9a9('0x411'),0x12c:_0x21d9a9('0xce5'),0x190:_0x21d9a9('0xe56'),0x1f4:_0x21d9a9('0xdf9'),0x258:'#6d4c41',0x2bc:_0x21d9a9('0x24b'),0x320:_0x21d9a9('0x2a6'),0x384:'#3e2723'},'grey':{0x32:_0x21d9a9('0x9ce'),0x64:_0x21d9a9('0x3be'),0xc8:'#eeeeee',0x12c:_0x21d9a9('0x488'),0x190:'#bdbdbd',0x1f4:_0x21d9a9('0xf34'),0x258:_0x21d9a9('0x391'),0x2bc:_0x21d9a9('0x1c9'),0x320:_0x21d9a9('0x1af'),0x384:'#212121'},'blueGrey':{0x32:_0x21d9a9('0x714'),0x64:_0x21d9a9('0x5fb'),0xc8:'#b0bec5',0x12c:_0x21d9a9('0x8ac'),0x190:_0x21d9a9('0x801'),0x1f4:_0x21d9a9('0xf82'),0x258:_0x21d9a9('0xa09'),0x2bc:_0x21d9a9('0x926'),0x320:_0x21d9a9('0x77a'),0x384:_0x21d9a9('0x287')},'darkText':{'primary':'rgba(0,\x200,\x200,\x200.87)','secondary':_0x21d9a9('0xcc4'),'disabled':_0x21d9a9('0x19b'),'dividers':_0x21d9a9('0x5d1')},'lightText':{'primary':_0x21d9a9('0x4b7'),'secondary':_0x21d9a9('0x70a'),'disabled':_0x21d9a9('0x510'),'dividers':_0x21d9a9('0xc2f')},'darkIcons':{'active':_0x21d9a9('0xcc4'),'inactive':'rgba(0,\x200,\x200,\x200.38)'},'lightIcons':{'active':'rgba(255,\x20255,\x20255,\x201)','inactive':_0x21d9a9('0x510')},'white':_0x21d9a9('0x595'),'black':_0x21d9a9('0x622')}:_0xd24d34[_0x21d9a9('0xa05')]={'red':{0x32:_0x21d9a9('0x1087'),0x64:_0x21d9a9('0x2d8'),0xc8:_0x21d9a9('0x76c'),0x12c:_0x21d9a9('0x84'),0x190:_0x21d9a9('0xa48'),0x1f4:_0x21d9a9('0x99b'),0x258:'#e53935',0x2bc:'#d32f2f',0x320:'#c62828',0x384:_0x21d9a9('0x6be'),'a100':_0x21d9a9('0x713'),'a200':_0x21d9a9('0x57a'),'a400':'#ff1744','a700':_0x21d9a9('0x10d5')},'pink':{0x32:'#fce4ec',0x64:_0x21d9a9('0xc33'),0xc8:_0x21d9a9('0xb09'),0x12c:_0x21d9a9('0x1184'),0x190:_0x21d9a9('0x324'),0x1f4:'#e91e63',0x258:_0x21d9a9('0x6b'),0x2bc:_0x21d9a9('0x5d8'),0x320:_0x21d9a9('0xe79'),0x384:_0x21d9a9('0x6a5'),'a100':'#ff80ab','a200':_0x21d9a9('0xc21'),'a400':'#f50057','a700':'#c51162'},'purple':{0x32:'#f3e5f5',0x64:_0x21d9a9('0xd8a'),0xc8:'#ce93d8',0x12c:'#ba68c8',0x190:'#ab47bc',0x1f4:_0x21d9a9('0x979'),0x258:_0x21d9a9('0x495'),0x2bc:_0x21d9a9('0xf05'),0x320:'#6a1b9a',0x384:_0x21d9a9('0xc2b'),'a100':_0x21d9a9('0x613'),'a200':_0x21d9a9('0xd0'),'a400':_0x21d9a9('0x1fa'),'a700':_0x21d9a9('0x23c')},'deepPurple':{0x32:_0x21d9a9('0x652'),0x64:'#d1c4e9',0xc8:_0x21d9a9('0x72c'),0x12c:_0x21d9a9('0xda8'),0x190:'#7e57c2',0x1f4:'#673ab7',0x258:_0x21d9a9('0xaa'),0x2bc:'#512da8',0x320:_0x21d9a9('0x25'),0x384:_0x21d9a9('0xb12'),'a100':_0x21d9a9('0x6c'),'a200':_0x21d9a9('0xc4e'),'a400':_0x21d9a9('0x573'),'a700':_0x21d9a9('0x334')},'indigo':{0x32:'#e8eaf6',0x64:'#c5cae9',0xc8:_0x21d9a9('0xd80'),0x12c:_0x21d9a9('0x9bf'),0x190:_0x21d9a9('0x10d9'),0x1f4:'#3f51b5',0x258:_0x21d9a9('0x355'),0x2bc:'#303f9f',0x320:'#283593',0x384:_0x21d9a9('0x384'),'a100':_0x21d9a9('0xf5f'),'a200':_0x21d9a9('0x359'),'a400':'#3d5afe','a700':_0x21d9a9('0x227')},'blue':{0x32:_0x21d9a9('0x1034'),0x64:'#bbdefb',0xc8:_0x21d9a9('0x639'),0x12c:_0x21d9a9('0xfc3'),0x190:_0x21d9a9('0x860'),0x1f4:'#2196f3',0x258:_0x21d9a9('0xf92'),0x2bc:_0x21d9a9('0xc99'),0x320:_0x21d9a9('0x4a'),0x384:_0x21d9a9('0xcee'),'a100':'#82b1ff','a200':_0x21d9a9('0x89a'),'a400':_0x21d9a9('0xe76'),'a700':_0x21d9a9('0xb50')},'lightBlue':{0x32:_0x21d9a9('0xc30'),0x64:_0x21d9a9('0xccb'),0xc8:_0x21d9a9('0x6'),0x12c:_0x21d9a9('0x65'),0x190:_0x21d9a9('0xa76'),0x1f4:_0x21d9a9('0x7de'),0x258:_0x21d9a9('0x34f'),0x2bc:_0x21d9a9('0xce1'),0x320:_0x21d9a9('0xd5d'),0x384:_0x21d9a9('0xed2'),'a100':_0x21d9a9('0x10a0'),'a200':_0x21d9a9('0xb05'),'a400':_0x21d9a9('0xff7'),'a700':_0x21d9a9('0x11aa')},'cyan':{0x32:_0x21d9a9('0xf0'),0x64:_0x21d9a9('0xfe8'),0xc8:_0x21d9a9('0x563'),0x12c:_0x21d9a9('0x908'),0x190:_0x21d9a9('0xb69'),0x1f4:_0x21d9a9('0xe2c'),0x258:_0x21d9a9('0x2fb'),0x2bc:_0x21d9a9('0x549'),0x320:_0x21d9a9('0x6c5'),0x384:_0x21d9a9('0x119e'),'a100':_0x21d9a9('0x123'),'a200':_0x21d9a9('0x120'),'a400':'#00e5ff','a700':_0x21d9a9('0x441')},'teal':{0x32:_0x21d9a9('0x8e6'),0x64:_0x21d9a9('0x24f'),0xc8:_0x21d9a9('0x102c'),0x12c:_0x21d9a9('0xd12'),0x190:_0x21d9a9('0x1014'),0x1f4:_0x21d9a9('0x936'),0x258:_0x21d9a9('0xd07'),0x2bc:'#00796b',0x320:_0x21d9a9('0xe68'),0x384:_0x21d9a9('0xaf0'),'a100':_0x21d9a9('0x991'),'a200':_0x21d9a9('0xb29'),'a400':_0x21d9a9('0x27e'),'a700':_0x21d9a9('0x8b7')},'green':{0x32:_0x21d9a9('0xc2d'),0x64:_0x21d9a9('0xb71'),0xc8:_0x21d9a9('0x7c0'),0x12c:_0x21d9a9('0x914'),0x190:_0x21d9a9('0xf98'),0x1f4:_0x21d9a9('0x20a'),0x258:'#43a047',0x2bc:_0x21d9a9('0x11a4'),0x320:_0x21d9a9('0x915'),0x384:'#1b5e20','a100':'#b9f6ca','a200':_0x21d9a9('0x6e9'),'a400':'#00e676','a700':_0x21d9a9('0xeca')},'lightGreen':{0x32:_0x21d9a9('0xcde'),0x64:_0x21d9a9('0xe26'),0xc8:_0x21d9a9('0x11eb'),0x12c:'#aed581',0x190:'#9ccc65',0x1f4:_0x21d9a9('0xd7f'),0x258:_0x21d9a9('0xb46'),0x2bc:_0x21d9a9('0x100c'),0x320:'#558b2f',0x384:_0x21d9a9('0x122'),'a100':'#ccff90','a200':_0x21d9a9('0xf48'),'a400':_0x21d9a9('0xfb0'),'a700':_0x21d9a9('0x4c9')},'lime':{0x32:'#f9fbe7',0x64:_0x21d9a9('0x7ad'),0xc8:_0x21d9a9('0x792'),0x12c:_0x21d9a9('0x667'),0x190:'#d4e157',0x1f4:'#cddc39',0x258:_0x21d9a9('0x10ce'),0x2bc:'#afb42b',0x320:_0x21d9a9('0x3b2'),0x384:_0x21d9a9('0x31c'),'a100':_0x21d9a9('0x4f1'),'a200':_0x21d9a9('0x100b'),'a400':'#c6ff00','a700':_0x21d9a9('0xc17')},'yellow':{0x32:'#fffde7',0x64:'#fff9c4',0xc8:_0x21d9a9('0x10e7'),0x12c:_0x21d9a9('0x252'),0x190:_0x21d9a9('0x5a'),0x1f4:_0x21d9a9('0x731'),0x258:_0x21d9a9('0xea6'),0x2bc:'#fbc02d',0x320:_0x21d9a9('0xda2'),0x384:'#f57f17','a100':_0x21d9a9('0x190'),'a200':_0x21d9a9('0x56d'),'a400':_0x21d9a9('0x113a'),'a700':_0x21d9a9('0x426')},'amber':{0x32:_0x21d9a9('0xba9'),0x64:_0x21d9a9('0xf54'),0xc8:_0x21d9a9('0xab7'),0x12c:'#ffd54f',0x190:'#ffca28',0x1f4:_0x21d9a9('0x1ee'),0x258:_0x21d9a9('0x6a'),0x2bc:_0x21d9a9('0x10c8'),0x320:'#ff8f00',0x384:_0x21d9a9('0x4f9'),'a100':_0x21d9a9('0x1109'),'a200':_0x21d9a9('0xbfe'),'a400':_0x21d9a9('0x158'),'a700':_0x21d9a9('0x1161')},'orange':{0x32:_0x21d9a9('0x5c3'),0x64:_0x21d9a9('0x24a'),0xc8:_0x21d9a9('0x698'),0x12c:'#ffb74d',0x190:_0x21d9a9('0xa6d'),0x1f4:_0x21d9a9('0x594'),0x258:_0x21d9a9('0x11df'),0x2bc:'#f57c00',0x320:_0x21d9a9('0x79f'),0x384:_0x21d9a9('0x100a'),'a100':_0x21d9a9('0x487'),'a200':_0x21d9a9('0x6ac'),'a400':_0x21d9a9('0xf39'),'a700':'#ff6d00'},'deepOrange':{0x32:_0x21d9a9('0xf3c'),0x64:'#ffccbc',0xc8:_0x21d9a9('0xf83'),0x12c:_0x21d9a9('0x78c'),0x190:_0x21d9a9('0xbbd'),0x1f4:_0x21d9a9('0xca'),0x258:_0x21d9a9('0x11de'),0x2bc:_0x21d9a9('0x37b'),0x320:'#d84315',0x384:'#bf360c','a100':'#ff9e80','a200':_0x21d9a9('0xa25'),'a400':'#ff3d00','a700':_0x21d9a9('0x6d3')},'brown':{0x32:_0x21d9a9('0x1199'),0x64:_0x21d9a9('0x750'),0xc8:'#bcaaa4',0x12c:_0x21d9a9('0xce5'),0x190:_0x21d9a9('0xe56'),0x1f4:_0x21d9a9('0xdf9'),0x258:_0x21d9a9('0xbe2'),0x2bc:_0x21d9a9('0x24b'),0x320:_0x21d9a9('0x2a6'),0x384:_0x21d9a9('0xe2d')},'grey':{0x32:_0x21d9a9('0x9ce'),0x64:_0x21d9a9('0x3be'),0xc8:'#eeeeee',0x12c:_0x21d9a9('0x488'),0x190:_0x21d9a9('0x415'),0x1f4:_0x21d9a9('0xf34'),0x258:_0x21d9a9('0x391'),0x2bc:_0x21d9a9('0x1c9'),0x320:_0x21d9a9('0x1af'),0x384:_0x21d9a9('0x945')},'blueGrey':{0x32:_0x21d9a9('0x714'),0x64:'#cfd8dc',0xc8:'#b0bec5',0x12c:_0x21d9a9('0x8ac'),0x190:'#78909c',0x1f4:'#607d8b',0x258:_0x21d9a9('0xa09'),0x2bc:_0x21d9a9('0x926'),0x320:_0x21d9a9('0x77a'),0x384:_0x21d9a9('0x287')},'darkText':{'primary':_0x21d9a9('0xfbe'),'secondary':_0x21d9a9('0xcc4'),'disabled':_0x21d9a9('0x19b'),'dividers':_0x21d9a9('0x5d1')},'lightText':{'primary':_0x21d9a9('0x4b7'),'secondary':_0x21d9a9('0x70a'),'disabled':'rgba(255,\x20255,\x20255,\x200.5)','dividers':_0x21d9a9('0xc2f')},'darkIcons':{'active':_0x21d9a9('0xcc4'),'inactive':_0x21d9a9('0x19b')},'lightIcons':{'active':_0x21d9a9('0x4b7'),'inactive':_0x21d9a9('0x510')},'white':_0x21d9a9('0x595'),'black':'#000000'};},{}],0x12c:[function(_0x54e344,_0x563184,_0x34ea31){var _0x42dcc2=_0x404097;/* +(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + queue.push(new Item(fun, args)); + if (queue.length === 1 && !draining) { + runTimeout(drainQueue); + } +}; + +// v8 likes predictible objects +function Item(fun, array) { + this.fun = fun; + this.array = array; +} +Item.prototype.run = function () { + this.fun.apply(null, this.array); +}; +process.title = 'browser'; +process.browser = true; +process.env = {}; +process.argv = []; +process.version = ''; // empty string to avoid regexp issues +process.versions = {}; + +function noop() {} + +process.on = noop; +process.addListener = noop; +process.once = noop; +process.off = noop; +process.removeListener = noop; +process.removeAllListeners = noop; +process.emit = noop; +process.prependListener = noop; +process.prependOnceListener = noop; + +process.listeners = function (name) { return [] } + +process.binding = function (name) { + throw new Error('process.binding is not supported'); +}; + +process.cwd = function () { return '/' }; +process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); +}; +process.umask = function() { return 0; }; + +},{}],2:[function(require,module,exports){ +"use strict"; + +var _lib = require("./lib"); + +window.AttendanceAdapter = _lib.AttendanceAdapter; +window.AttendanceStatusAdapter = _lib.AttendanceStatusAdapter; + +},{"./lib":3}],3:[function(require,module,exports){ +"use strict"; + +var _AdapterBase3 = _interopRequireDefault(require("../../../api/AdapterBase")); + +var _FormValidation = _interopRequireDefault(require("../../../api/FormValidation")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var AttendanceAdapter = /*#__PURE__*/function (_AdapterBase) { + _inherits(AttendanceAdapter, _AdapterBase); + + var _super = _createSuper(AttendanceAdapter); + + function AttendanceAdapter(endPoint, tab, filter, orderBy) { + var _this; + + _classCallCheck(this, AttendanceAdapter); + + _this = _super.call(this, endPoint, tab, filter, orderBy); + _this.photoAttendance = false; + return _this; + } + + _createClass(AttendanceAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'employee', 'in_time', 'out_time', 'note']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Employee' + }, { + sTitle: 'Time-In' + }, { + sTitle: 'Time-Out' + }, { + sTitle: 'Note' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['employee', { + label: 'Employee', + type: 'select2', + 'allow-null': false, + 'remote-source': ['Employee', 'id', 'first_name+last_name', 'getActiveSubordinateEmployees'] + }], ['id', { + label: 'ID', + type: 'hidden' + }], ['in_time', { + label: 'Time-In', + type: 'datetime' + }], ['out_time', { + label: 'Time-Out', + type: 'datetime', + validation: 'none' + }], ['note', { + label: 'Note', + type: 'textarea', + validation: 'none' + }]]; + } + }, { + key: "getFilters", + value: function getFilters() { + return [['employee', { + label: 'Employee', + type: 'select2', + 'allow-null': false, + 'remote-source': ['Employee', 'id', 'first_name+last_name'] + }]]; + } + }, { + key: "setPhotoAttendance", + value: function setPhotoAttendance(val) { + this.photoAttendance = parseInt(val, 10); + } + }, { + key: "getCustomTableParams", + value: function getCustomTableParams() { + var that = this; + var dataTableParams = { + aoColumnDefs: [{ + fnRender: function fnRender(data, cell) { + return that.preProcessRemoteTableData(data, cell, 2); + }, + aTargets: [2] + }, { + fnRender: function fnRender(data, cell) { + return that.preProcessRemoteTableData(data, cell, 3); + }, + aTargets: [3] + }, { + fnRender: function fnRender(data, cell) { + return that.preProcessRemoteTableData(data, cell, 4); + }, + aTargets: [4] + }, { + fnRender: that.getActionButtons, + aTargets: [that.getDataMapping().length] + }] + }; + return dataTableParams; + } + }, { + key: "preProcessRemoteTableData", + value: function preProcessRemoteTableData(data, cell, id) { + if (id === 2) { + if (cell === '0000-00-00 00:00:00' || cell === '' || cell === undefined || cell == null) { + return ''; + } + + return Date.parse(cell).toString('yyyy MMM d HH:mm'); + } + + if (id === 3) { + if (cell === '0000-00-00 00:00:00' || cell === '' || cell === undefined || cell == null) { + return ''; + } + + return Date.parse(cell).toString('MMM d HH:mm'); + } + + if (id === 4) { + if (cell !== undefined && cell !== null) { + if (cell.length > 10) { + return "".concat(cell.substring(0, 10), ".."); + } + } + + return cell; + } + } + }, { + key: "save", + value: function save() { + var validator = new _FormValidation["default"]("".concat(this.getTableName(), "_submit"), true, { + ShowPopup: false, + LabelErrorClass: 'error' + }); + + if (validator.checkValues()) { + var params = validator.getFormParameters(); + var msg = this.doCustomValidation(params); + + if (msg == null) { + var id = $("#".concat(this.getTableName(), "_submit #id")).val(); + + if (id != null && id !== undefined && id !== '') { + params.id = id; + } + + var reqJson = JSON.stringify(params); + var callBackData = []; + callBackData.callBackData = []; + callBackData.callBackSuccess = 'saveSuccessCallback'; + callBackData.callBackFail = 'saveFailCallback'; + this.customAction('savePunch', 'admin=attendance', reqJson, callBackData); + } else { + var label = $("#".concat(this.getTableName(), "Form .label")); + label.html(msg); + label.show(); + } + } + } + }, { + key: "saveSuccessCallback", + value: function saveSuccessCallback(callBackData) { + this.get(callBackData); + } + }, { + key: "saveFailCallback", + value: function saveFailCallback(callBackData) { + this.showMessage('Error saving attendance entry', callBackData); + } + }, { + key: "isSubProfileTable", + value: function isSubProfileTable() { + return this.user.user_level !== 'Admin' && this.user.user_level !== 'Restricted Admin'; + } + }, { + key: "showPunchImages", + value: function showPunchImages(id) { + var reqJson = JSON.stringify({ + id: id + }); + var callBackData = []; + callBackData.callBackData = []; + callBackData.callBackSuccess = 'getImagesSuccessCallback'; + callBackData.callBackFail = 'getImagesFailCallback'; + this.customAction('getImages', 'admin=attendance', reqJson, callBackData); + } + }, { + key: "getImagesSuccessCallback", + value: function getImagesSuccessCallback(callBackData) { + $('#attendnaceMapCanvasIn').remove(); + $('#attendnaceCanvasInWrapper').html(''); + $('#attendnaceCanvasOut').remove(); + $('#attendnaceCanvasOutWrapper').html(''); + $('#attendnaceCanvasPunchInTime').html(''); + $('#attendnaceCanvasPunchOutTime').html(''); + $('#punchInLocation').html(''); + $('#punchOutLocation').html(''); + $('#punchInIp').html(''); + $('#punchOutIp').html(''); + $('#attendnaceMapCanvasIn').remove(); + $('#attendnaceMapCanvasInWrapper').html(''); + $('#attendnaceMapCanvasOut').remove(); + $('#attendnaceMapCanvasOutWrapper').html(''); + $('#attendancePhotoModel').modal('show'); + $('#attendnaceCanvasEmp').html(callBackData.employee_Name); + + if (callBackData.in_time) { + $('#attendnaceCanvasPunchInTime').html(Date.parse(callBackData.in_time).toString('yyyy MMM d HH:mm')); + } + + if (callBackData.image_in) { + $('#attendancePhoto').show(); + var myCanvas = document.getElementById('attendnaceCanvasIn'); + + try { + var ctx = myCanvas.getContext('2d'); + var img = new Image(); + + img.onload = function () { + ctx.drawImage(img, 0, 0); // Or at whatever offset you like + }; + + img.src = callBackData.image_in; + } catch (e) { + console.log(e); + } + } + + if (callBackData.out_time) { + $('#attendnaceCanvasPunchOutTime').html(Date.parse(callBackData.out_time).toString('yyyy MMM d HH:mm')); + } + + if (callBackData.image_out) { + $('#attendancePhoto').show(); + + var _myCanvas = document.getElementById('attendnaceCanvasOut'); + + try { + var _ctx = _myCanvas.getContext('2d'); + + var _img = new Image(); + + _img.onload = function () { + _ctx.drawImage(_img, 0, 0); // Or at whatever offset you like + + }; + + _img.src = callBackData.image_out; + } catch (e) { + console.log(e); + } + } + + if (callBackData.map_lat) { + $('#attendanceMap').show(); + $('#punchInLocation').html("".concat(callBackData.map_lat, ",").concat(callBackData.map_lng)); + } + + if (callBackData.map_out_lat) { + $('#attendanceMap').show(); + $('#punchOutLocation').html("".concat(callBackData.map_out_lat, ",").concat(callBackData.map_out_lng)); + } + + if (callBackData.in_ip) { + $('#punchInIp').html(callBackData.in_ip); + } + + if (callBackData.out_ip) { + $('#punchOutIp').html(callBackData.out_ip); + } + + if (callBackData.map_snapshot) { + $('#attendanceMap').show(); + + var _myCanvas2 = document.getElementById('attendnaceMapCanvasIn'); + + try { + var _ctx2 = _myCanvas2.getContext('2d'); + + var _img2 = new Image(); + + _img2.onload = function () { + _ctx2.drawImage(_img2, 0, 0); // Or at whatever offset you like + + }; + + _img2.src = callBackData.map_snapshot; + } catch (e) { + console.log(e); + } + } + + if (callBackData.map_out_snapshot) { + $('#attendanceMap').show(); + + var _myCanvas3 = document.getElementById('attendnaceMapCanvasOut'); + + try { + var _ctx3 = _myCanvas3.getContext('2d'); + + var _img3 = new Image(); + + _img3.onload = function () { + _ctx3.drawImage(_img3, 0, 0); // Or at whatever offset you like + + }; + + _img3.src = callBackData.map_out_snapshot; + } catch (e) { + console.log(e); + } + } + } + }, { + key: "getImagesFailCallback", + value: function getImagesFailCallback(callBackData) { + this.showMessage('Error', callBackData); + } + }, { + key: "getActionButtonsHtml", + value: function getActionButtonsHtml(id, data) { + var editButton = ''; + var deleteButton = ''; + var photoButton = ''; + var html; + + if (this.photoAttendance === 1) { + html = '

    _edit__delete__photo_
    '; + } else { + html = '
    _edit__delete_
    '; + } + + html = html.replace('_photo_', photoButton); + + if (this.showDelete) { + html = html.replace('_delete_', deleteButton); + } else { + html = html.replace('_delete_', ''); + } + + if (this.showEdit) { + html = html.replace('_edit_', editButton); + } else { + html = html.replace('_edit_', ''); + } + + html = html.replace(/_id_/g, id); + html = html.replace(/_BASE_/g, this.baseUrl); + return html; + } + }, { + key: "getHelpLink", + value: function getHelpLink() { + return 'https://icehrm.gitbook.io/icehrm/time-and-attendance/attendance-time-management'; + } + }]); + + return AttendanceAdapter; +}(_AdapterBase3["default"]); +/* + Attendance Status + */ + + +var AttendanceStatusAdapter = /*#__PURE__*/function (_AdapterBase2) { + _inherits(AttendanceStatusAdapter, _AdapterBase2); + + var _super2 = _createSuper(AttendanceStatusAdapter); + + function AttendanceStatusAdapter() { + _classCallCheck(this, AttendanceStatusAdapter); + + return _super2.apply(this, arguments); + } + + _createClass(AttendanceStatusAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'employee', 'status']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Employee' + }, { + sTitle: 'Clocked In Status' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return []; + } + }, { + key: "getFilters", + value: function getFilters() { + return [['employee', { + label: 'Employee', + type: 'select2', + 'allow-null': false, + 'remote-source': ['Employee', 'id', 'first_name+last_name'] + }]]; + } + }, { + key: "getActionButtonsHtml", + value: function getActionButtonsHtml(id, data) { + var html = '
    '; + html = html.replace(/_BASE_/g, this.baseUrl); + + if (data[2] == 'Not Clocked In') { + html = html.replace(/_COLOR_/g, 'gray'); + } else if (data[2] == 'Clocked Out') { + html = html.replace(/_COLOR_/g, 'yellow'); + } else if (data[2] == 'Clocked In') { + html = html.replace(/_COLOR_/g, 'green'); + } + + return html; + } + }, { + key: "isSubProfileTable", + value: function isSubProfileTable() { + return this.user.user_level !== 'Admin' && this.user.user_level !== 'Restricted Admin'; + } + }, { + key: "getHelpLink", + value: function getHelpLink() { + return 'https://icehrm.gitbook.io/icehrm/time-and-attendance/attendance-time-management'; + } + }]); + + return AttendanceStatusAdapter; +}(_AdapterBase3["default"]); + +module.exports = { + AttendanceAdapter: AttendanceAdapter, + AttendanceStatusAdapter: AttendanceStatusAdapter +}; + +},{"../../../api/AdapterBase":57,"../../../api/FormValidation":61}],4:[function(require,module,exports){ +"use strict"; + +var _lib = require("./lib"); + +window.AttendanceGraphAdapter = _lib.AttendanceGraphAdapter; +window.TimeUtilizationGraphAdapter = _lib.TimeUtilizationGraphAdapter; + +},{"./lib":5}],5:[function(require,module,exports){ +"use strict"; + +var _BaseGraphAdapter3 = _interopRequireDefault(require("../../../api/BaseGraphAdapter")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +/* + * AttendanceGraphAdapter + */ +var AttendanceGraphAdapter = /*#__PURE__*/function (_BaseGraphAdapter) { + _inherits(AttendanceGraphAdapter, _BaseGraphAdapter); + + var _super = _createSuper(AttendanceGraphAdapter); + + function AttendanceGraphAdapter() { + _classCallCheck(this, AttendanceGraphAdapter); + + return _super.apply(this, arguments); + } + + _createClass(AttendanceGraphAdapter, [{ + key: "getFormFields", + value: function getFormFields() { + return []; + } + }, { + key: "getFilters", + value: function getFilters() { + return [['employee', { + label: 'Employee', + type: 'select2', + 'allow-null': true, + 'null-label': 'All Employees', + 'remote-source': ['Employee', 'id', 'first_name+last_name'] + }], ['start', { + label: 'Start Date', + type: 'date', + validation: '' + }], ['end', { + label: 'End Date', + type: 'date', + validation: '' + }]]; + } + }, { + key: "get", + value: function get() { + this.initFieldMasterData(); + this.getTimeUtilization(); + } + }, { + key: "doCustomFilterValidation", + value: function doCustomFilterValidation(params) { + var $errorElement = $("#".concat(this.table, "_filter_error")); + $errorElement.html(''); + $errorElement.hide(); + + if (Date.parse(params.start).getTime() > Date.parse(params.end).getTime()) { + $errorElement.html('End date should be a later date than start date'); + $errorElement.show(); + return false; + } + + var dateDiff = (Date.parse(params.end).getTime() - Date.parse(params.start).getTime()) / (1000 * 60 * 60 * 24); + + if (dateDiff > 45 && (params.employee === undefined || params.employee == null || params.employee === 'NULL')) { + $errorElement.html('Differance between start and end dates should not be more than 45 days, when creating chart for all employees'); + $errorElement.show(); + return false; + } + + if (dateDiff > 90) { + $errorElement.html('Differance between start and end dates should not be more than 90 days'); + $errorElement.show(); + return false; + } + + return true; + } + }, { + key: "getTimeUtilization", + value: function getTimeUtilization(object, callBackData) { + object = {}; + + if (this.filter != null && this.filter !== undefined) { + if (this.filter.employee !== 'NULL') { + object.employee = this.filter.employee; + } + + object.start = this.filter.start; + object.end = this.filter.end; + } + + var reqJson = JSON.stringify(object); + callBackData = callBackData === undefined || callBackData === null ? [] : callBackData; + callBackData.callBackData = []; + callBackData.callBackSuccess = 'getAttendanceSuccessCallBack'; + callBackData.callBackFail = 'getAttendanceFailCallBack'; + this.customAction('getAttendance', 'admin=charts', reqJson, callBackData); + } + }, { + key: "getAttendanceFailCallBack", + value: function getAttendanceFailCallBack(callBackData) { + this.showMessage('Error Occured while getting data for chart', callBackData); + } + }, { + key: "getAttendanceSuccessCallBack", + value: function getAttendanceSuccessCallBack(callBackData) { + var that = this; + var filterHtml = that.getTableTopButtonHtml(); + $('#tabPageAttendanceGraph svg').remove(); + $('#tabPageAttendanceGraph div').remove(); + var $tabPageAttendanceGraph = $('#tabPageAttendanceGraph'); + $tabPageAttendanceGraph.html(''); + $tabPageAttendanceGraph.html("".concat(filterHtml, "")); + nv.addGraph(function () { + var chart = nv.models.multiBarChart().margin({ + bottom: 200 + }).transitionDuration(0).reduceXTicks(true) // If 'false', every single x-axis tick label will be rendered. + .rotateLabels(45) // Angle to rotate x-axis labels. + .showControls(false) // Allow user to switch between 'Grouped' and 'Stacked' mode. + .groupSpacing(0.1); // Distance between each group of bars. + + chart.yAxis.tickFormat(d3.format(',.1f')); + chart.dispatch.on('stateChange', function (e) { + nv.log('New State:', JSON.stringify(e)); + }); + chart.tooltip(function (key, x, y, e, graph) { + return "

    ".concat(key, "

    ") + "

    ".concat(y, " on ").concat(x, "

    "); + }); + d3.select('#tabPageAttendanceGraph svg').datum(callBackData).call(chart); + return chart; + }); + } + }, { + key: "getHelpLink", + value: function getHelpLink() { + return 'https://icehrm.gitbook.io/icehrm/insights/analytics'; + } + }]); + + return AttendanceGraphAdapter; +}(_BaseGraphAdapter3["default"]); +/* + * TimeUtilizationGraphAdapter + */ + + +var TimeUtilizationGraphAdapter = /*#__PURE__*/function (_BaseGraphAdapter2) { + _inherits(TimeUtilizationGraphAdapter, _BaseGraphAdapter2); + + var _super2 = _createSuper(TimeUtilizationGraphAdapter); + + function TimeUtilizationGraphAdapter() { + _classCallCheck(this, TimeUtilizationGraphAdapter); + + return _super2.apply(this, arguments); + } + + _createClass(TimeUtilizationGraphAdapter, [{ + key: "getFormFields", + value: function getFormFields() { + return []; + } + }, { + key: "getFilters", + value: function getFilters() { + return [['employee', { + label: 'Employee', + type: 'select2', + 'allow-null': true, + 'null-label': 'All Employees', + 'remote-source': ['Employee', 'id', 'first_name+last_name'] + }], ['start', { + label: 'Start Date', + type: 'date', + validation: '' + }], ['end', { + label: 'End Date', + type: 'date', + validation: '' + }]]; + } + }, { + key: "get", + value: function get() { + this.initFieldMasterData(); + this.getTimeUtilization(); + } + }, { + key: "doCustomFilterValidation", + value: function doCustomFilterValidation(params) { + var $errorElement = $("#".concat(this.table, "_filter_error")); + $errorElement.html(''); + $errorElement.hide(); + + if (Date.parse(params.start).getTime() > Date.parse(params.end).getTime()) { + $errorElement.html('End date should be a later date than start date'); + $errorElement.show(); + return false; + } + + var dateDiff = (Date.parse(params.end).getTime() - Date.parse(params.start).getTime()) / (1000 * 60 * 60 * 24); + + if (dateDiff > 45 && (params.employee === undefined || params.employee == null || params.employee === 'NULL')) { + $errorElement.html('Differance between start and end dates should not be more than 45 days, when creating chart for all employees'); + $errorElement.show(); + return false; + } + + if (dateDiff > 90) { + $errorElement.html('Differance between start and end dates should not be more than 90 days'); + $errorElement.show(); + return false; + } + + return true; + } + }, { + key: "getTimeUtilization", + value: function getTimeUtilization(object, callBackData) { + object = {}; + + if (this.filter != null && this.filter !== undefined) { + if (this.filter.employee !== 'NULL') { + object.employee = this.filter.employee; + } + + object.start = this.filter.start; + object.end = this.filter.end; + } + + var reqJson = JSON.stringify(object); + callBackData = callBackData === undefined || callBackData === null ? [] : callBackData; + callBackData.callBackData = []; + callBackData.callBackSuccess = 'getTimeUtilizationSuccessCallBack'; + callBackData.callBackFail = 'getTimeUtilizationFailCallBack'; + this.customAction('getTimeUtilization', 'admin=charts', reqJson, callBackData); + } + }, { + key: "getTimeUtilizationFailCallBack", + value: function getTimeUtilizationFailCallBack(callBackData) { + this.showMessage('Error Occured while getting data for chart', callBackData); + } + }, { + key: "getTimeUtilizationSuccessCallBack", + value: function getTimeUtilizationSuccessCallBack(callBackData) { + var that = this; + var filterHtml = that.getTableTopButtonHtml(); + $('#tabPageTimeUtilizationGraph svg').remove(); + $('#tabPageTimeUtilizationGraph div').remove(); + var $tabPageTimeUtilizationGraph = $('#tabPageTimeUtilizationGraph'); + $tabPageTimeUtilizationGraph.html(''); + $tabPageTimeUtilizationGraph.html("".concat(filterHtml, "")); + nv.addGraph(function () { + var chart = nv.models.multiBarChart().margin({ + bottom: 200 + }).transitionDuration(0).reduceXTicks(true) // If 'false', every single x-axis tick label will be rendered. + .rotateLabels(45) // Angle to rotate x-axis labels. + .showControls(true) // Allow user to switch between 'Grouped' and 'Stacked' mode. + .groupSpacing(0.1); // Distance between each group of bars. + + chart.yAxis.tickFormat(d3.format(',.1f')); + d3.select('#tabPageTimeUtilizationGraph svg').datum(callBackData).call(chart); + chart.dispatch.on('stateChange', function (e) { + nv.log('New State:', JSON.stringify(e)); + }); + chart.tooltip(function (key, x, y, e, graph) { + return "

    ".concat(key, "

    ") + "

    ".concat(y, " on ").concat(x, "

    "); + }); + return chart; + }); + } + }, { + key: "getHelpLink", + value: function getHelpLink() { + return 'https://icehrm.gitbook.io/icehrm/insights/analytics'; + } + }]); + + return TimeUtilizationGraphAdapter; +}(_BaseGraphAdapter3["default"]); + +module.exports = { + AttendanceGraphAdapter: AttendanceGraphAdapter, + TimeUtilizationGraphAdapter: TimeUtilizationGraphAdapter +}; + +},{"../../../api/BaseGraphAdapter":59}],6:[function(require,module,exports){ +"use strict"; + +var _lib = require("./lib"); + +window.ClientAdapter = _lib.ClientAdapter; + +},{"./lib":7}],7:[function(require,module,exports){ +"use strict"; + +var _ReactModalAdapterBase = _interopRequireDefault(require("../../../api/ReactModalAdapterBase")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +/** + * ClientAdapter + */ +var ClientAdapter = /*#__PURE__*/function (_ReactModalAdapterBas) { + _inherits(ClientAdapter, _ReactModalAdapterBas); + + var _super = _createSuper(ClientAdapter); + + function ClientAdapter(endPoint, tab, filter, orderBy) { + var _this; + + _classCallCheck(this, ClientAdapter); + + _this = _super.call(this, endPoint, tab, filter, orderBy); + _this.fieldNameMap = {}; + _this.hiddenFields = {}; + _this.tableFields = {}; + _this.formOnlyFields = {}; + return _this; + } + + _createClass(ClientAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'name', 'details', 'address', 'contact_number']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Name' + }, { + sTitle: 'Details' + }, { + sTitle: 'Address' + }, { + sTitle: 'Contact Number' + }]; + } + }, { + key: "getTableColumns", + value: function getTableColumns() { + return [{ + title: 'Name', + dataIndex: 'name', + sorter: true + }, { + title: 'Details', + dataIndex: 'details', + sorter: true + }, { + title: 'Address', + dataIndex: 'address', + sorter: true + }, { + title: 'Contact Number', + dataIndex: 'contact_number', + sorter: true + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + if (this.showSave) { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['name', { + label: 'Name', + type: 'text' + }], ['details', { + label: 'Details', + type: 'textarea', + validation: 'none' + }], ['address', { + label: 'Address', + type: 'textarea', + validation: 'none' + }], ['contact_number', { + label: 'Contact Number', + type: 'text', + validation: 'none' + }], ['contact_email', { + label: 'Contact Email', + type: 'text', + validation: 'none' + }], ['company_url', { + label: 'Company Url', + type: 'text', + validation: 'none' + }], ['status', { + label: 'Status', + type: 'select', + source: [['Active', 'Active'], ['Inactive', 'Inactive']] + }], ['first_contact_date', { + label: 'First Contact Date', + type: 'date', + validation: 'none' + }]]; + } + + return [['id', { + label: 'ID', + type: 'hidden' + }], ['name', { + label: 'Name', + type: 'placeholder' + }], ['details', { + label: 'Details', + type: 'placeholder', + validation: 'none' + }], ['address', { + label: 'Address', + type: 'placeholder', + validation: 'none' + }], ['contact_number', { + label: 'Contact Number', + type: 'placeholder', + validation: 'none' + }], ['contact_email', { + label: 'Contact Email', + type: 'placeholder', + validation: 'none' + }], ['company_url', { + label: 'Company Url', + type: 'placeholder', + validation: 'none' + }], ['status', { + label: 'Status', + type: 'placeholder', + source: [['Active', 'Active'], ['Inactive', 'Inactive']] + }], ['first_contact_date', { + label: 'First Contact Date', + type: 'placeholder', + validation: 'none' + }]]; + } + }, { + key: "getHelpLink", + value: function getHelpLink() { + return 'http://blog.icehrm.com/docs/projects/'; + } + }]); + + return ClientAdapter; +}(_ReactModalAdapterBase["default"]); + +module.exports = { + ClientAdapter: ClientAdapter +}; + +},{"../../../api/ReactModalAdapterBase":70}],8:[function(require,module,exports){ +"use strict"; + +var _lib = require("./lib"); + +var _IceDataPipe = _interopRequireDefault(require("../../../api/IceDataPipe")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function init(data) { + var modJsList = {}; + modJsList.tabCompanyStructure = new _lib.CompanyStructureAdapter('CompanyStructure'); + modJsList.tabCompanyStructure.setObjectTypeName('Company Structure'); + modJsList.tabCompanyStructure.setDataPipe(new _IceDataPipe["default"](modJsList.tabCompanyStructure)); + modJsList.tabCompanyStructure.setAccess(data.permissions.CompanyStructure); + modJsList.tabCompanyStructure.setCustomFields(data.customFields); + modJsList.tabCompanyGraph = new _lib.CompanyGraphAdapter('CompanyStructure'); + window.modJs = modJsList.tabCompanyStructure; + window.modJsList = modJsList; +} + +window.initAdminCompanyStructure = init; + +},{"../../../api/IceDataPipe":63,"./lib":9}],9:[function(require,module,exports){ +"use strict"; + +var _ReactModalAdapterBase = _interopRequireDefault(require("../../../api/ReactModalAdapterBase")); + +var _AdapterBase2 = _interopRequireDefault(require("../../../api/AdapterBase")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var CompanyStructureAdapter = /*#__PURE__*/function (_ReactModalAdapterBas) { + _inherits(CompanyStructureAdapter, _ReactModalAdapterBas); + + var _super = _createSuper(CompanyStructureAdapter); + + function CompanyStructureAdapter() { + _classCallCheck(this, CompanyStructureAdapter); + + return _super.apply(this, arguments); + } + + _createClass(CompanyStructureAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'title', 'address', 'type', 'country', 'timezone', 'parent']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Name' + }, { + sTitle: 'Address', + bSortable: false + }, { + sTitle: 'Type' + }, { + sTitle: 'Country', + sClass: 'center' + }, { + sTitle: 'Time Zone' + }, { + sTitle: 'Parent Structure' + }]; + } + }, { + key: "getTableColumns", + value: function getTableColumns() { + return [{ + title: 'Name', + dataIndex: 'title', + sorter: true + }, { + title: 'Address', + dataIndex: 'address' + }, { + title: 'Type', + dataIndex: 'type' + }, { + title: 'Country', + dataIndex: 'country' + }, { + title: 'Time Zone', + dataIndex: 'timezone' + }, { + title: 'Parent Structure', + dataIndex: 'parent' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return this.addCustomFields([['id', { + label: 'ID', + type: 'hidden', + validation: '' + }], ['title', { + label: 'Name', + type: 'text', + validation: '' + }], ['description', { + label: 'Details', + type: 'textarea', + validation: '' + }], ['address', { + label: 'Address', + type: 'textarea', + validation: 'none' + }], ['type', { + label: 'Type', + type: 'select', + source: [['Company', 'Company'], ['Head Office', 'Head Office'], ['Regional Office', 'Regional Office'], ['Department', 'Department'], ['Unit', 'Unit'], ['Sub Unit', 'Sub Unit'], ['Other', 'Other']] + }], ['country', { + label: 'Country', + type: 'select2', + 'remote-source': ['Country', 'code', 'name'] + }], ['timezone', { + label: 'Time Zone', + type: 'select2', + 'allow-null': false, + 'remote-source': ['Timezone', 'name', 'details', 'getTimezonesWithOffset'] + }], ['parent', { + label: 'Parent Structure', + type: 'select', + 'allow-null': true, + 'remote-source': ['CompanyStructure', 'id', 'title'] + }], ['heads', { + label: 'Heads', + type: 'select2multi', + 'allow-null': true, + 'remote-source': ['Employee', 'id', 'first_name+last_name'] + }]]); + } + }, { + key: "postRenderForm", + value: function postRenderForm(object, $tempDomObj) { + if (object === undefined || object === null || object.id === null || object.id === undefined || object.id === '') { + $tempDomObj.find('#field_heads').hide(); + } + } + }, { + key: "getHelpLink", + value: function getHelpLink() { + return 'https://icehrm.gitbook.io/icehrm/employees/employee-information-setup'; + } + }]); + + return CompanyStructureAdapter; +}(_ReactModalAdapterBase["default"]); +/* + * Company Graph + */ + + +var CompanyGraphAdapter = /*#__PURE__*/function (_AdapterBase) { + _inherits(CompanyGraphAdapter, _AdapterBase); + + var _super2 = _createSuper(CompanyGraphAdapter); + + function CompanyGraphAdapter(endPoint, tab, filter, orderBy) { + var _this; + + _classCallCheck(this, CompanyGraphAdapter); + + _this = _super2.call(this, endPoint, tab, filter, orderBy); + _this.nodeIdCounter = 0; + return _this; + } + + _createClass(CompanyGraphAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'title', 'address', 'type', 'country', 'timezone', 'parent']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Name' + }, { + sTitle: 'Address', + bSortable: false + }, { + sTitle: 'Type' + }, { + sTitle: 'Country', + sClass: 'center' + }, { + sTitle: 'Time Zone' + }, { + sTitle: 'Parent Structure' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden', + validation: '' + }], ['title', { + label: 'Name', + type: 'text', + validation: '' + }], ['description', { + label: 'Details', + type: 'textarea', + validation: '' + }], ['address', { + label: 'Address', + type: 'textarea', + validation: 'none' + }], ['type', { + label: 'Type', + type: 'select', + source: [['Company', 'Company'], ['Head Office', 'Head Office'], ['Regional Office', 'Regional Office'], ['Department', 'Department'], ['Unit', 'Unit'], ['Sub Unit', 'Sub Unit'], ['Other', 'Other']] + }], ['country', { + label: 'Country', + type: 'select2', + 'remote-source': ['Country', 'code', 'name'] + }], ['timezone', { + label: 'Time Zone', + type: 'select2', + 'allow-null': false, + 'remote-source': ['Timezone', 'name', 'details', 'getTimezonesWithOffset'] + }], ['parent', { + label: 'Parent Structure', + type: 'select', + 'allow-null': true, + 'remote-source': ['CompanyStructure', 'id', 'title'] + }], ['heads', { + label: 'Heads', + type: 'select2multi', + 'allow-null': true, + 'remote-source': ['Employee', 'id', 'first_name+last_name'] + }]]; + } + }, { + key: "convertToTree", + value: function convertToTree(data) { + var ice = {}; + ice.id = -1; + ice.title = ''; + ice.name = ''; + ice.children = []; + var parent = null; + var added = {}; + + for (var i = 0; i < data.length; i++) { + data[i].name = data[i].title; + + if (data[i].parent != null && data[i].parent !== undefined) { + parent = this.findParent(data, data[i].parent); + + if (parent != null) { + if (parent.children === undefined || parent.children == null) { + parent.children = []; + } + + parent.children.push(data[i]); + } + } + } + + for (var _i = 0; _i < data.length; _i++) { + if (data[_i].parent == null || data[_i].parent === undefined) { + ice.children.push(data[_i]); + } + } + + return ice; + } + }, { + key: "findParent", + value: function findParent(data, parent) { + for (var i = 0; i < data.length; i++) { + if (data[i].title === parent || data[i].title === parent) { + return data[i]; + } + } + + return null; + } + }, { + key: "createTable", + value: function createTable(elementId) { + $('#tabPageCompanyGraph').html(''); + var that = this; + var sourceData = this.sourceData; // this.fixCyclicParent(sourceData); + + var treeData = this.convertToTree(sourceData); + var m = [20, 120, 20, 120]; + var w = 5000 - m[1] - m[3]; + var h = 1000 - m[0] - m[2]; + var tree = d3.layout.tree().size([h, w]); + this.diagonal = d3.svg.diagonal().projection(function (d) { + return [d.y, d.x]; + }); + this.vis = d3.select('#tabPageCompanyGraph').append('svg:svg').attr('width', w + m[1] + m[3]).attr('height', h + m[0] + m[2]).append('svg:g').attr('transform', "translate(".concat(m[3], ",").concat(m[0], ")")); + var root = treeData; + root.x0 = h / 2; + root.y0 = 0; + + function toggleAll(d) { + if (d.children) { + console.log(d.name); + d.children.forEach(toggleAll); + that.toggle(d); + } + } + + this.update(root, tree, root); + } + }, { + key: "update", + value: function update(source, tree, root) { + var that = this; + var duration = d3.event && d3.event.altKey ? 5000 : 500; // Compute the new tree layout. + + var nodes = tree.nodes(root).reverse(); // Normalize for fixed-depth. + + nodes.forEach(function (d) { + d.y = d.depth * 180; + }); // Update the nodes� + + var node = that.vis.selectAll('g.node').data(nodes, function (d) { + return d.id || (d.id = ++that.nodeIdCounter); + }); // Enter any new nodes at the parent's previous position. + + var nodeEnter = node.enter().append('svg:g').attr('class', 'node').attr('transform', function (d) { + return "translate(".concat(source.y0, ",").concat(source.x0, ")"); + }).on('click', function (d) { + that.toggle(d); + that.update(d, tree, root); + }); + nodeEnter.append('svg:circle').attr('r', 1e-6).style('fill', function (d) { + return d._children ? 'lightsteelblue' : '#fff'; + }); + nodeEnter.append('svg:text').attr('x', function (d) { + return d.children || d._children ? -10 : 10; + }).attr('dy', '.35em').attr('text-anchor', function (d) { + return d.children || d._children ? 'end' : 'start'; + }).text(function (d) { + return d.name; + }).style('fill-opacity', 1e-6); // Transition nodes to their new position. + + var nodeUpdate = node.transition().duration(duration).attr('transform', function (d) { + return "translate(".concat(d.y, ",").concat(d.x, ")"); + }); + nodeUpdate.select('circle').attr('r', 4.5).style('fill', function (d) { + return d._children ? 'lightsteelblue' : '#fff'; + }); + nodeUpdate.select('text').style('fill-opacity', 1); // Transition exiting nodes to the parent's new position. + + var nodeExit = node.exit().transition().duration(duration).attr('transform', function (d) { + return "translate(".concat(source.y, ",").concat(source.x, ")"); + }).remove(); + nodeExit.select('circle').attr('r', 1e-6); + nodeExit.select('text').style('fill-opacity', 1e-6); // Update the links� + + var link = that.vis.selectAll('path.link').data(tree.links(nodes), function (d) { + return d.target.id; + }); // Enter any new links at the parent's previous position. + + link.enter().insert('svg:path', 'g').attr('class', 'link').attr('d', function (d) { + var o = { + x: source.x0, + y: source.y0 + }; + return that.diagonal({ + source: o, + target: o + }); + }).transition().duration(duration).attr('d', that.diagonal); // Transition links to their new position. + + link.transition().duration(duration).attr('d', that.diagonal); // Transition exiting nodes to the parent's new position. + + link.exit().transition().duration(duration).attr('d', function (d) { + var o = { + x: source.x, + y: source.y + }; + return that.diagonal({ + source: o, + target: o + }); + }).remove(); // Stash the old positions for transition. + + nodes.forEach(function (d) { + d.x0 = d.x; + d.y0 = d.y; + }); + } // Toggle children. + + }, { + key: "toggle", + value: function toggle(d) { + if (d.children) { + d._children = d.children; + d.children = null; + } else { + d.children = d._children; + d._children = null; + } + } + }, { + key: "getSourceDataById", + value: function getSourceDataById(id) { + for (var i = 0; i < this.sourceData.length; i++) { + if (this.sourceData[i].id == id) { + return this.sourceData[i]; + } + } + + return null; + } + }, { + key: "fixCyclicParent", + value: function fixCyclicParent(sourceData) { + var errorMsg = ''; + + for (var i = 0; i < sourceData.length; i++) { + var obj = sourceData[i]; + var curObj = obj; + var parentIdArr = {}; + parentIdArr[curObj.id] = 1; + + while (curObj.parent != null && curObj.parent != undefined) { + var parent = this.getSourceDataById(curObj.parent); + + if (parent == null) { + break; + } else if (parentIdArr[parent.id] == 1) { + errorMsg = "".concat(obj.title, "'s parent structure set to ").concat(parent.title, "
    "); + obj.parent = null; + break; + } + + parentIdArr[parent.id] = 1; + curObj = parent; + } + } + + if (errorMsg !== '') { + this.showMessage('Company Structure is having a cyclic dependency', "We found a cyclic dependency due to following reasons:
    ".concat(errorMsg)); + return false; + } + + return true; + } + }, { + key: "getHelpLink", + value: function getHelpLink() { + return 'https://icehrm.gitbook.io/icehrm/employees/employee-information-setup'; + } + }]); + + return CompanyGraphAdapter; +}(_AdapterBase2["default"]); + +module.exports = { + CompanyStructureAdapter: CompanyStructureAdapter, + CompanyGraphAdapter: CompanyGraphAdapter +}; + +},{"../../../api/AdapterBase":57,"../../../api/ReactModalAdapterBase":70}],10:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _react = _interopRequireDefault(require("react")); + +var _antd = require("antd"); + +var _IceHrmProData = _interopRequireDefault(require("./IceHrmProData")); + +var _SystemData = _interopRequireDefault(require("./SystemData")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function ConnectionTab(props) { + var employeeCount = props.employeeCount, + systemData = props.systemData; + return /*#__PURE__*/_react["default"].createElement(_antd.Space, { + direction: "vertical", + style: { + width: '100%' + } + }, employeeCount.isIceHrmPro && /*#__PURE__*/_react["default"].createElement(_antd.Row, null, /*#__PURE__*/_react["default"].createElement(_antd.Col, { + span: 8 + }, /*#__PURE__*/_react["default"].createElement(_IceHrmProData["default"], employeeCount)), /*#__PURE__*/_react["default"].createElement(_antd.Col, { + span: 8 + }), /*#__PURE__*/_react["default"].createElement(_antd.Col, { + span: 8 + })), /*#__PURE__*/_react["default"].createElement(_SystemData["default"], systemData)); +} + +var _default = ConnectionTab; +exports["default"] = _default; + +},{"./IceHrmProData":11,"./SystemData":12,"antd":"antd","react":"react"}],11:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _react = _interopRequireDefault(require("react")); + +var _antd = require("antd"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +var dayjs = require('dayjs'); + +function IceHrmProData(props) { + var count = props.count, + allowed = props.allowed, + validUntil = props.validUntil, + licenseId = props.licenseId; + return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_antd.Row, { + gutter: 16 + }, /*#__PURE__*/_react["default"].createElement(_antd.Col, { + span: 12 + }, /*#__PURE__*/_react["default"].createElement(_antd.Statistic, { + title: "Number of Employees", + value: "".concat(count, " / ").concat(allowed) + }), /*#__PURE__*/_react["default"].createElement(_antd.Space, null), /*#__PURE__*/_react["default"].createElement(_antd.Progress, { + type: "circle", + percent: parseInt(count * 100 / allowed, 10), + width: 80 + })), /*#__PURE__*/_react["default"].createElement(_antd.Col, { + span: 12 + }, /*#__PURE__*/_react["default"].createElement(_antd.Statistic, { + title: "License Valid Until", + value: dayjs(validUntil).format('MMM D, YYYY') + }), /*#__PURE__*/_react["default"].createElement(_antd.Button, { + style: { + marginTop: 16 + }, + type: "primary", + onClick: function onClick() { + window.open("https://icehrm.com/renew-icehrmpro-license/".concat(licenseId), '_blank'); + } + }, "Renew")))); +} + +var _default = IceHrmProData; +exports["default"] = _default; + +},{"antd":"antd","dayjs":118,"react":"react"}],12:[function(require,module,exports){ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _react = _interopRequireWildcard(require("react")); + +var _antd = require("antd"); + +var _icons = require("@ant-design/icons"); + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +var Link = _antd.Typography.Link; + +function SystemData(props) { + var _useState = (0, _react.useState)(false), + _useState2 = _slicedToArray(_useState, 2), + isModalVisible = _useState2[0], + setIsModalVisible = _useState2[1]; + + var data = props.data, + issues = props.issues; + var columns = [{ + title: 'Name', + dataIndex: 'name', + key: 'name' + }, { + title: 'Value', + dataIndex: 'value', + key: 'value' + }]; + + var showModal = function showModal() { + setIsModalVisible(true); + }; + + var handleOk = function handleOk() { + setIsModalVisible(false); + }; + + var handleCancel = function handleCancel() { + setIsModalVisible(false); + }; + + return /*#__PURE__*/_react["default"].createElement(_antd.Space, { + direction: "vertical", + style: { + width: '100%' + } + }, issues.length > 0 && /*#__PURE__*/_react["default"].createElement(_antd.Card, { + title: "System Issues" + }, /*#__PURE__*/_react["default"].createElement(_antd.Space, { + direction: "vertical", + style: { + width: '100%' + } + }, issues.map(function (item) { + return /*#__PURE__*/_react["default"].createElement(_antd.Space, null, /*#__PURE__*/_react["default"].createElement(_antd.Alert, { + message: item.message, + type: item.type, + showIcon: true + }), item.link && /*#__PURE__*/_react["default"].createElement(_antd.Button, { + onClick: function onClick() { + window.open(item.link, '_blank'); + } + }, item.linkText)); + }))), /*#__PURE__*/_react["default"].createElement(_antd.Card, { + title: "System Report" + }, /*#__PURE__*/_react["default"].createElement(_antd.Table, { + columns: columns, + dataSource: data + }), /*#__PURE__*/_react["default"].createElement(_antd.Button, { + type: "primary", + icon: /*#__PURE__*/_react["default"].createElement(_icons.CopyOutlined, null), + onClick: showModal + }, "Copy System Report")), /*#__PURE__*/_react["default"].createElement(_antd.Modal, { + title: "System Data", + visible: isModalVisible, + onOk: handleOk, + onCancel: handleCancel + }, data.map(function (item) { + return /*#__PURE__*/_react["default"].createElement("p", null, "".concat(item.name, ":").concat(item.value)); + }))); +} + +var _default = SystemData; +exports["default"] = _default; + +},{"@ant-design/icons":"@ant-design/icons","antd":"antd","react":"react"}],13:[function(require,module,exports){ +"use strict"; + +var _lib = require("./lib"); + +function init(data) { + var modJsList = {}; + modJsList.tabConnection = new _lib.ConnectionAdapter(data); + window.modJs = modJsList.tabConnection; + window.modJsList = modJsList; +} + +window.initAdminConnection = init; + +},{"./lib":14}],14:[function(require,module,exports){ +"use strict"; + +var _react = _interopRequireDefault(require("react")); + +var _reactDom = _interopRequireDefault(require("react-dom")); + +var _ReactModalAdapterBase = _interopRequireDefault(require("../../../api/ReactModalAdapterBase")); + +var _ConnectionTab = _interopRequireDefault(require("./components/ConnectionTab")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +/** + * AssetTypeAdapter + */ +var ConnectionAdapter = /*#__PURE__*/function (_ReactModalAdapterBas) { + _inherits(ConnectionAdapter, _ReactModalAdapterBas); + + var _super = _createSuper(ConnectionAdapter); + + function ConnectionAdapter(data) { + var _this; + + _classCallCheck(this, ConnectionAdapter); + + _this = _super.call(this, '', '', '', ''); + _this.data = data; + return _this; + } + + _createClass(ConnectionAdapter, [{ + key: "get", + value: function get(callBackData) { + var components = this.data.components; + + _reactDom["default"].render( /*#__PURE__*/_react["default"].createElement(_ConnectionTab["default"], components), document.getElementById('connectionData')); + } + }, { + key: "initSourceMappings", + value: function initSourceMappings() {} + }]); + + return ConnectionAdapter; +}(_ReactModalAdapterBase["default"]); + +module.exports = { + ConnectionAdapter: ConnectionAdapter +}; + +},{"../../../api/ReactModalAdapterBase":70,"./components/ConnectionTab":10,"react":"react","react-dom":"react-dom"}],15:[function(require,module,exports){ +"use strict"; + +var _lib = require("./lib"); + +var _IceDataPipe = _interopRequireDefault(require("../../../api/IceDataPipe")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function init(data) { + var modJsList = {}; + modJsList.tabCustomField = new _lib.CommonCustomFieldAdapter('CustomField', 'CustomField', {}, ''); + modJsList.tabCustomField.setRemoteTable(true); + modJsList.tabCustomField.setObjectTypeName('Custom Field'); + modJsList.tabCustomField.setDataPipe(new _IceDataPipe["default"](modJsList.tabCustomField)); + modJsList.tabCustomField.setAccess(data.permissions.CustomField); + modJsList.tabCustomField.setTypes(data.types); + window.modJs = modJsList.tabCustomField; + window.modJsList = modJsList; +} + +window.initAdminCustomFields = init; + +},{"../../../api/IceDataPipe":63,"./lib":16}],16:[function(require,module,exports){ +"use strict"; + +var _ReactCustomFieldAdapter = _interopRequireDefault(require("../../../api/ReactCustomFieldAdapter")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +/** + * AssetTypeAdapter + */ +var CommonCustomFieldAdapter = /*#__PURE__*/function (_ReactCustomFieldAdap) { + _inherits(CommonCustomFieldAdapter, _ReactCustomFieldAdap); + + var _super = _createSuper(CommonCustomFieldAdapter); + + function CommonCustomFieldAdapter() { + _classCallCheck(this, CommonCustomFieldAdapter); + + return _super.apply(this, arguments); + } + + _createClass(CommonCustomFieldAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'name', 'type', 'field_type', 'field_label', 'display', 'display_order']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Name' + }, { + sTitle: 'Object Type' + }, { + sTitle: 'Field Type' + }, { + sTitle: 'Field Label' + }, { + sTitle: 'Display Status' + }, { + sTitle: 'Priority' + }]; + } + }, { + key: "getTableColumns", + value: function getTableColumns() { + return [{ + title: 'Name', + dataIndex: 'name', + sorter: true + }, { + title: 'Object Type', + dataIndex: 'type', + sorter: true + }, { + title: 'Field Label', + dataIndex: 'field_label' + }, { + title: 'Field Type', + dataIndex: 'field_type' + }, { + title: 'Display Status', + dataIndex: 'display', + sorter: true + }, { + title: 'Priority', + dataIndex: 'display_order', + sorter: true + }]; + } + }, { + key: "setTypes", + value: function setTypes(tables) { + this.types = tables; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['field_label', { + label: 'Field Label', + type: 'text', + validation: '' + }], ['type', { + label: 'Object Type', + type: 'select2', + source: this.types + }], ['field_type', { + label: 'Field Type', + type: 'select', + source: [['text', 'Text Field'], ['textarea', 'Text Area'], ['select', 'Select'], ['select2', 'Select2'], ['select2multi', 'Multi Select'], ['fileupload', 'File Upload'], ['date', 'Date'], ['datetime', 'Date Time'], ['time', 'Time'], ['signature', 'Signature']] + }], ['field_validation', { + label: 'Validation', + type: 'select2', + validation: 'none', + sort: 'none', + 'null-label': 'Required', + 'allow-null': true, + source: [['none', 'None'], ['number', 'Number'], ['numberOrEmpty', 'Number or Empty'], ['float', 'Decimal'], ['email', 'Email'], ['emailOrEmpty', 'Email or Empty']] + }], ['field_options', { + label: 'Field Options', + type: 'datagroup', + form: [['label', { + label: 'Label', + type: 'text', + validation: '' + }], ['value', { + label: 'Value', + type: 'text', + validation: 'none' + }]], + html: '
    #_delete_##_edit_##_label_#:#_value_#
    ', + columns: [{ + title: 'Label', + dataIndex: 'label', + key: 'label' + }, { + title: 'Option Value', + dataIndex: 'value', + key: 'value' + }], + validation: 'none' + }], ['display_order', { + label: 'Priority', + type: 'text', + validation: 'none' + }]]; + } + }, { + key: "getFilters", + value: function getFilters() { + return [['type', { + label: 'Object Type', + type: 'select2', + 'allow-null': true, + source: this.types + }]]; + } + }, { + key: "forceInjectValuesBeforeSave", + value: function forceInjectValuesBeforeSave(params) { + var data = ['', {}]; + var options = []; + var optionsData; + data[1].label = params.field_label; + data[1].type = params.field_type; + data[1].validation = params.field_validation; + + if (['select', 'select2', 'select2multi'].indexOf(params.field_type) >= 0) { + optionsData = params.field_options === '' || params.field_options === undefined ? [] : JSON.parse(params.field_options); + + for (var index in optionsData) { + options.push([optionsData[index].value, optionsData[index].label]); + } + + data[1].source = options; + } + + if (params.field_validation == null || params.field_validation === undefined) { + params.field_validation = ''; + } + + if (this.currentElement == null || this.currentElement.name == null || this.currentElement.name === '') { + params.name = this.getNameFromFieldName(params.field_label); + } else { + params.name = this.currentElement.name; + } + + data[0] = params.name; + params.data = JSON.stringify(data); + params.display = 'Form'; + params.display_order = parseInt(params.display_order); + + if (!Number.isInteger(params.display_order)) { + params.display_order = 1; + } + + return params; + } + }]); + + return CommonCustomFieldAdapter; +}(_ReactCustomFieldAdapter["default"]); + +module.exports = { + CommonCustomFieldAdapter: CommonCustomFieldAdapter +}; + +},{"../../../api/ReactCustomFieldAdapter":68}],17:[function(require,module,exports){ +"use strict"; + +var _lib = require("./lib"); + +window.DashboardAdapter = _lib.DashboardAdapter; + +},{"./lib":18}],18:[function(require,module,exports){ +"use strict"; + +var _react = _interopRequireDefault(require("react")); + +var _antd = require("antd"); + +var _g2plot = require("@antv/g2plot"); + +var _reactDom = _interopRequireDefault(require("react-dom")); + +var _AdapterBase2 = _interopRequireDefault(require("../../../api/AdapterBase")); + +var _TaskList = _interopRequireDefault(require("../../../components/TaskList")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var DashboardAdapter = /*#__PURE__*/function (_AdapterBase) { + _inherits(DashboardAdapter, _AdapterBase); + + var _super = _createSuper(DashboardAdapter); + + function DashboardAdapter() { + _classCallCheck(this, DashboardAdapter); + + return _super.apply(this, arguments); + } + + _createClass(DashboardAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return []; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return []; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return []; + } + }, { + key: "get", + value: function get(callBackData) { + this.initializeReactDashboard(); + } + }, { + key: "getInitData", + value: function getInitData() { + var that = this; + var object = {}; + var reqJson = JSON.stringify(object); + var callBackData = []; + callBackData.callBackData = []; + callBackData.callBackSuccess = 'getInitDataSuccessCallBack'; + callBackData.callBackFail = 'getInitDataFailCallBack'; + this.customAction('getInitData', 'admin=dashboard', reqJson, callBackData); + } + }, { + key: "getInitDataSuccessCallBack", + value: function getInitDataSuccessCallBack(data) { + $('#numberOfEmployees').html("".concat(data.numberOfEmployees, " Employees")); + $('#numberOfCompanyStuctures').html("".concat(data.numberOfCompanyStuctures, " Departments")); + $('#numberOfUsers').html("".concat(data.numberOfUsers, " Users")); + $('#numberOfProjects').html("".concat(data.numberOfProjects, " Active Projects")); + $('#numberOfAttendanceLastWeek').html("".concat(data.numberOfAttendanceLastWeek, " Entries Last Week")); + $('#numberOfLeaves').html("".concat(data.numberOfLeaves, " Upcoming")); + $('#numberOfTimeEntries').html(data.numberOfTimeEntries); + $('#numberOfCandidates').html("".concat(data.numberOfCandidates, " Candidates")); + $('#numberOfJobs').html("".concat(data.numberOfJobs, " Active")); + $('#numberOfCourses').html("".concat(data.numberOfCourses, " Courses")); + } + }, { + key: "getInitDataFailCallBack", + value: function getInitDataFailCallBack(callBackData) {} + }, { + key: "getSpinner", + value: function getSpinner() { + return /*#__PURE__*/_react["default"].createElement(_antd.Row, null, /*#__PURE__*/_react["default"].createElement(_antd.Col, { + span: 8 + }, " "), /*#__PURE__*/_react["default"].createElement(_antd.Col, { + span: 8 + }, /*#__PURE__*/_react["default"].createElement(_antd.Spin, { + size: "large" + })), /*#__PURE__*/_react["default"].createElement(_antd.Col, { + span: 8 + }, " ")); + } + }, { + key: "initializeReactDashboard", + value: function initializeReactDashboard() { + //this.drawCompanyLeaveEntitlementChart(); + this.drawOnlineOfflineEmployeeChart(); + this.drawEmployeeDistributionChart(); + this.buildTaskList(); + } + }, { + key: "buildTaskList", + value: function buildTaskList() { + document.getElementById('TaskListWrap').style.display = 'none'; + + _reactDom["default"].render(this.getSpinner(), document.getElementById('TaskListLoader')); + + this.apiClient.get('tasks').then(function (data) { + document.getElementById('TaskListWrap').style.display = 'block'; + + _reactDom["default"].render( /*#__PURE__*/_react["default"].createElement(_TaskList["default"], { + tasks: data.data + }), document.getElementById('TaskList')); + + _reactDom["default"].unmountComponentAtNode(document.getElementById('TaskListLoader')); + }); + } + }, { + key: "drawEmployeeDistributionChart", + value: function drawEmployeeDistributionChart() { + var that = this; + document.getElementById('EmployeeDistributionChart').style.display = 'none'; + + _reactDom["default"].render(this.getSpinner(), document.getElementById('EmployeeDistributionChartLoader')); + + this.apiClient.get('charts/employees-distribution').then(function (data) { + var chartData = Object.keys(data.data).map(function (key) { + return { + type: key.charAt(0).toUpperCase() + key.slice(1), + value: data.data[key] + }; + }); + var props = { + forceFit: true, + title: { + visible: true, + text: that.gt('Employee Distribution') + }, + description: { + visible: false, + text: '' + }, + statistic: { + visible: true, + content: { + value: chartData.reduce(function (acc, item) { + return acc + item.value; + }, 0), + name: that.gt('Total') + } + }, + legend: { + visible: true, + position: 'bottom-center' + }, + radius: 0.8, + padding: 'auto', + data: chartData, + angleField: 'value', + colorField: 'type', + label: { + visible: true, + type: 'outer', + offset: 20 + } + }; + + _reactDom["default"].unmountComponentAtNode(document.getElementById('EmployeeDistributionChartLoader')); + + document.getElementById('EmployeeDistributionChart').style.display = 'block'; + var plot = new _g2plot.Pie(document.getElementById('EmployeeDistributionChart'), props); + plot.render(); + }); + } + }, { + key: "drawOnlineOfflineEmployeeChart", + value: function drawOnlineOfflineEmployeeChart() { + var that = this; + document.getElementById('EmployeeOnlineOfflineChart').style.display = 'none'; + + _reactDom["default"].render(this.getSpinner(), document.getElementById('EmployeeOnlineOfflineChartLoader')); + + this.apiClient.get('charts/employee-check-ins').then(function (data) { + var chartData = Object.keys(data.data).map(function (key) { + return { + type: key, + value: data.data[key] + }; + }); + var props = { + forceFit: true, + title: { + visible: true, + text: that.gt('Employee Check-Ins') + }, + description: { + visible: false, + text: '' + }, + statistic: { + visible: true, + content: { + value: chartData.reduce(function (acc, item) { + return acc + item.value; + }, 0), + name: that.gt('Total') + } + }, + legend: { + visible: true, + position: 'bottom-center' + }, + radius: 0.8, + padding: 'auto', + data: chartData, + angleField: 'value', + colorField: 'type' + }; + + _reactDom["default"].unmountComponentAtNode(document.getElementById('EmployeeOnlineOfflineChartLoader')); + + document.getElementById('EmployeeOnlineOfflineChart').style.display = 'block'; + var donutPlot = new _g2plot.Donut(document.getElementById('EmployeeOnlineOfflineChart'), props); + donutPlot.render(); + }); + } + }, { + key: "drawCompanyLeaveEntitlementChart", + value: function drawCompanyLeaveEntitlementChart() { + var that = this; + document.getElementById('CompanyLeaveEntitlementChart').style.display = 'none'; + + _reactDom["default"].render(this.getSpinner(), document.getElementById('CompanyLeaveEntitlementChartLoader')); + + this.apiClient.get('charts/company-leave-entitlement').then(function (data) { + var chartData = Object.keys(data.data).map(function (key) { + return { + type: key, + value: data.data[key] + }; + }); + var props = { + forceFit: true, + title: { + visible: true, + text: that.gt('Company Vacation Usage') + }, + description: { + visible: false, + text: '' + }, + statistic: { + visible: true, + content: { + value: chartData.reduce(function (acc, item) { + return acc + item.value; + }, 0), + name: that.gt('Total') + } + }, + legend: { + visible: true, + position: 'bottom-center' + }, + radius: 0.8, + padding: 'auto', + data: chartData, + angleField: 'value', + colorField: 'type' + }; + + _reactDom["default"].unmountComponentAtNode(document.getElementById('CompanyLeaveEntitlementChartLoader')); + + document.getElementById('CompanyLeaveEntitlementChart').style.display = 'block'; + var donutPlot = new _g2plot.Donut(document.getElementById('CompanyLeaveEntitlementChart'), props); + donutPlot.render(); + }); + } + }]); + + return DashboardAdapter; +}(_AdapterBase2["default"]); + +module.exports = { + DashboardAdapter: DashboardAdapter +}; + +},{"../../../api/AdapterBase":57,"../../../components/TaskList":85,"@antv/g2plot":"@antv/g2plot","antd":"antd","react":"react","react-dom":"react-dom"}],19:[function(require,module,exports){ +"use strict"; + +var _lib = require("./lib"); + +window.DataImportAdapter = _lib.DataImportAdapter; +window.DataImportFileAdapter = _lib.DataImportFileAdapter; + +},{"./lib":20}],20:[function(require,module,exports){ +"use strict"; + +var _AdapterBase3 = _interopRequireDefault(require("../../../api/AdapterBase")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +/** + * DataImportAdapter + */ +var DataImportAdapter = /*#__PURE__*/function (_AdapterBase) { + _inherits(DataImportAdapter, _AdapterBase); + + var _super = _createSuper(DataImportAdapter); + + function DataImportAdapter() { + _classCallCheck(this, DataImportAdapter); + + return _super.apply(this, arguments); + } + + _createClass(DataImportAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'name', 'dataType', 'details']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Name' + }, { + sTitle: 'Data Type' + }, { + sTitle: 'Details' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['name', { + label: 'Name', + type: 'text', + validation: '' + }], ['dataType', { + label: 'Data Type', + type: 'select', + sort: 'none', + source: [['EmployeeDataImporter', 'Employee Data'], ['AttendanceDataImporter', 'Attendance Data'], ['PayrollDataImporter', 'Payroll Data'], ['UserDataImporter', 'User Data'], ['CommonDataImporter', 'Common Data Importer']] + }], ['objectType', { + label: 'Object Type', + type: 'select', + sort: 'none', + 'allow-null': true, + 'null-label': 'None', + source: [['LeaveStartingBalance', 'Leave Starting Balance'], ['HoliDay', 'Holidays'], ['EmployeeExpense', 'Employee Expenses'], ['Project', 'Projects'], ['EmployeeProject', 'Employee Projects'], ['EmployeeSalary', 'Employee Salary'], ['PayrollEmployee', 'Company Payroll'], ['Client', 'Clients'], ['Province', 'Provinces'], ['Industry', 'Industry'], ['Industry', 'Industry'], ['EmergencyContact', 'Emergency Contacts'], ['Ethnicity', 'Ethnicity'], ['Nationality', 'Nationality'], ['JobTitle', 'Job Titles'], ['PayFrequency', 'Pay Frequency'], ['PayrollEmployee', 'Payroll Employees'], ['SalaryComponent', 'Salary Components'], ['EmployeeSalary', 'Employee Salary'], ['CompanyStructure', 'Company Structure']] + }], ['details', { + label: 'Details', + type: 'textarea', + validation: 'none' + }], ['columns', { + label: 'Columns', + type: 'datagroup', + form: [['name', { + label: 'CSV Field Name', + type: 'text', + validation: '' + }], ['title', { + label: 'Field Title', + type: 'text', + validation: 'none' + }], ['type', { + label: 'Type', + type: 'select', + sort: 'none', + source: [['Normal', 'Normal'], ['Reference', 'Reference']] + }], ['dependOn', { + label: 'Depends On', + type: 'select', + 'allow-null': true, + 'null-label': 'N/A', + source: [['EmergencyContact', 'Emergency Contacts'], ['Ethnicity', 'Ethnicity'], ['Nationality', 'Nationality'], ['JobTitle', 'JobTitle'], ['PayFrequency', 'Pay Frequency'], ['PayGrade', 'Pay Grade'], ['EmploymentStatus', 'Employment Status'], ['CompanyStructure', 'Company Structure'], ['Employee', 'Employee'], ['ImmigrationStatus', 'Immigration Status'], ['Industry', 'Industry'], ['CurrencyType', 'CurrencyType'], ['Document', 'Document'], ['Education', 'Education'], ['ExpensesCategory', 'Expenses Category'], ['ExpensesPaymentMethod', 'Expenses Payment Method'], ['ExperienceLevel', 'Experience Level'], ['Form', 'Form'], ['HiringPipeline', 'Hiring Pipeline'], ['HoliDay', 'HoliDay'], ['Language', 'Language'], ['LeaveGroup', 'Leave Group'], ['LeavePeriod', 'Leave Period'], ['LeaveRule', 'Leave Rule'], ['LeaveType', 'Leave Type'], ['OvertimeCategory', 'Overtime Category'], ['Project', 'Project'], ['Client', 'Client'], ['ReviewTemplate', 'Review Template'], ['SalaryComponent', 'Salary Component'], ['SalaryComponentType', 'Salary Component Type'], ['Skill', 'Skill'], ['Timezone', 'Timezone'], ['AssetType', 'Asset Type'], ['Benifit', 'Benifit'], ['Certification', 'Certification'], ['Country', 'Country'], ['Province', 'Province'], ['TrainingSession', 'TrainingSession'], ['User', 'User']] + }], ['dependOnField', { + label: 'Depends On Field', + type: 'select', + 'allow-null': true, + 'null-label': 'N/A', + source: [['id', 'id'], ['employee_id', 'employee_id'], ['name', 'name'], ['code', 'code'], ['title', 'title'], ['employee', 'employee']] + }], ['idField', { + label: 'Is ID Field', + type: 'select', + validation: '', + source: [['No', 'No'], ['Yes', 'Yes']] + }], ['sampleValue', { + label: 'Sample Value', + type: 'text' + }], ['help', { + label: 'Help Text', + type: 'text' + }]], + html: '
    #_name_# #_delete_##_edit_#
    Title: #_title_#
    Type: #_type_#
    Sample: #_sampleValue_#
     #_help_#
    ', + validation: 'none', + 'custom-validate-function': function customValidateFunction(data) { + var res = {}; + res.params = data; + res.valid = true; + + if (data.type === 'Reference') { + if (data.dependOn === 'NULL') { + res.message = 'If the type is Reference this field should referring another object'; + res.valid = false; + } else if (dependOnField == null || dependOnField === 'NULL') { + res.message = "If the type is Reference then 'Depends On Field' can not be empty"; + res.valid = false; + } + } else if (data.type === 'Normal') { + if (data.dependOn !== 'NULL') { + res.message = 'If the type is Reference this field should not refer another object'; + res.valid = false; + } else if (dependOnField == null || dependOnField === 'NULL') { + res.message = "If the type is Reference then 'Depends On Field' should be empty"; + res.valid = false; + } + } + + return res; + } + }]]; + } + }, { + key: "getActionButtonsHtml", + value: function getActionButtonsHtml(id, data) { + var editButton = ''; + var download = ''; + var deleteButton = ''; + var cloneButton = ''; + var html = '
    _edit__download__clone__delete_
    '; + + if (this.showAddNew) { + html = html.replace('_clone_', cloneButton); + } else { + html = html.replace('_clone_', ''); + } + + if (this.showDelete) { + html = html.replace('_delete_', deleteButton); + } else { + html = html.replace('_delete_', ''); + } + + if (this.showEdit) { + html = html.replace('_edit_', editButton); + } else { + html = html.replace('_edit_', ''); + } + + html = html.replace('_download_', download); + html = html.replace(/_id_/g, id); + html = html.replace(/_status_/g, data[6]); + html = html.replace(/_BASE_/g, this.baseUrl); + return html; + } + }, { + key: "downloadTemplate", + value: function downloadTemplate(id) { + var params = { + t: this.table, + sa: 'downloadTemplate', + mod: 'admin=data' + }; + params.req = JSON.stringify({ + id: id + }); + var downloadUrl = modJs.getCustomActionUrl('ca', params); + window.open(downloadUrl, '_blank'); + } + }]); + + return DataImportAdapter; +}(_AdapterBase3["default"]); +/** + * DataImportFileAdapter + */ + + +var DataImportFileAdapter = /*#__PURE__*/function (_AdapterBase2) { + _inherits(DataImportFileAdapter, _AdapterBase2); + + var _super2 = _createSuper(DataImportFileAdapter); + + function DataImportFileAdapter() { + _classCallCheck(this, DataImportFileAdapter); + + return _super2.apply(this, arguments); + } + + _createClass(DataImportFileAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'name', 'data_import_definition', 'status']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Name' + }, { + sTitle: 'Data Import Definition' + }, { + sTitle: 'Status' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['name', { + label: 'Name', + type: 'text', + validation: '' + }], ['data_import_definition', { + label: 'Data Import Definitions', + type: 'select', + 'remote-source': ['DataImport', 'id', 'name'] + }], ['file', { + label: 'File to Import', + type: 'fileupload', + validation: '', + filetypes: 'csv,txt' + }], ['details', { + label: 'Last Export Result', + type: 'textarea', + validation: 'none' + }]]; + } + }, { + key: "getActionButtonsHtml", + value: function getActionButtonsHtml(id, data) { + var editButton = ''; + var processButton = ''; + var deleteButton = ''; + var cloneButton = ''; + var html = '
    _edit__process__clone__delete_
    '; + + if (this.showAddNew) { + html = html.replace('_clone_', cloneButton); + } else { + html = html.replace('_clone_', ''); + } + + if (this.showDelete) { + html = html.replace('_delete_', deleteButton); + } else { + html = html.replace('_delete_', ''); + } + + if (this.showEdit) { + html = html.replace('_edit_', editButton); + } else { + html = html.replace('_edit_', ''); + } + + if (data[3] === 'Not Processed') { + html = html.replace('_process_', processButton); + } else { + html = html.replace('_process_', ''); + } + + html = html.replace(/_id_/g, id); + html = html.replace(/_status_/g, data[6]); + html = html.replace(/_BASE_/g, this.baseUrl); + return html; + } + }, { + key: "process", + value: function process(id) { + var object = { + id: id + }; + var reqJson = JSON.stringify(object); + var callBackData = []; + callBackData.callBackData = []; + callBackData.callBackSuccess = 'processSuccessCallBack'; + callBackData.callBackFail = 'processFailCallBack'; + this.customAction('processDataFile', 'admin=data', reqJson, callBackData); + } + }, { + key: "processSuccessCallBack", + value: function processSuccessCallBack(callBackData) { + this.showMessage('Success', 'File imported successfully.'); + this.get([]); + } + }, { + key: "processFailCallBack", + value: function processFailCallBack(callBackData) { + this.showMessage('Error', "File import unsuccessful. Result:".concat(callBackData)); + } + }]); + + return DataImportFileAdapter; +}(_AdapterBase3["default"]); + +module.exports = { + DataImportAdapter: DataImportAdapter, + DataImportFileAdapter: DataImportFileAdapter +}; + +},{"../../../api/AdapterBase":57}],21:[function(require,module,exports){ +"use strict"; + +var _lib = require("./lib"); + +window.DocumentAdapter = _lib.DocumentAdapter; +window.CompanyDocumentAdapter = _lib.CompanyDocumentAdapter; +window.EmployeeDocumentAdapter = _lib.EmployeeDocumentAdapter; + +},{"./lib":22}],22:[function(require,module,exports){ +"use strict"; + +var _AdapterBase4 = _interopRequireDefault(require("../../../api/AdapterBase")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +/** + * DocumentAdapter + */ +var DocumentAdapter = /*#__PURE__*/function (_AdapterBase) { + _inherits(DocumentAdapter, _AdapterBase); + + var _super = _createSuper(DocumentAdapter); + + function DocumentAdapter() { + _classCallCheck(this, DocumentAdapter); + + return _super.apply(this, arguments); + } + + _createClass(DocumentAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'name', 'details']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Name' + }, { + sTitle: 'Details' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['name', { + label: 'Name', + type: 'text', + validation: '' + }], ['expire_notification', { + label: 'Notify Expiry', + type: 'select', + source: [['Yes', 'Yes'], ['No', 'No']] + }], ['expire_notification_month', { + label: 'Notify Expiry Before One Month', + type: 'select', + source: [['Yes', 'Yes'], ['No', 'No']] + }], ['expire_notification_week', { + label: 'Notify Expiry Before One Week', + type: 'select', + source: [['Yes', 'Yes'], ['No', 'No']] + }], ['expire_notification_day', { + label: 'Notify Expiry Before One Day', + type: 'select', + source: [['Yes', 'Yes'], ['No', 'No']] + }], ['share_with_employee', { + label: 'Share with Employee', + type: 'select', + source: [['Yes', 'Yes'], ['No', 'No']] + }], // [ "sign", {"label":"Require Signature","type":"select","source":[["Yes","Yes"],["No","No"]]}], + // [ "sign", {"label":"Require Signature","type":"select","source":[["Yes","Yes"],["No","No"]]}], + // [ "sign_label", {"label":"Signature Description","type":"textarea","validation":"none"}], + ['details', { + label: 'Details', + type: 'textarea', + validation: 'none' + }]]; + } + }, { + key: "getHelpLink", + value: function getHelpLink() { + return 'https://icehrm.gitbook.io/icehrm/training-and-reviews/document-management'; + } + }]); + + return DocumentAdapter; +}(_AdapterBase4["default"]); +/** + * CompanyDocumentAdapter + */ + + +var CompanyDocumentAdapter = /*#__PURE__*/function (_AdapterBase2) { + _inherits(CompanyDocumentAdapter, _AdapterBase2); + + var _super2 = _createSuper(CompanyDocumentAdapter); + + function CompanyDocumentAdapter() { + _classCallCheck(this, CompanyDocumentAdapter); + + return _super2.apply(this, arguments); + } + + _createClass(CompanyDocumentAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'name', 'details', 'status']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Name' + }, { + sTitle: 'Details' + }, { + sTitle: 'Status' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['name', { + label: 'Name', + type: 'text', + validation: '' + }], ['details', { + label: 'Details', + type: 'textarea', + validation: 'none' + }], ['status', { + label: 'Status', + type: 'select', + source: [['Active', 'Active'], ['Inactive', 'Inactive'], ['Draft', 'Draft']] + }], ['attachment', { + label: 'Attachment', + type: 'fileupload' + }], ['share_departments', { + label: 'Share Departments', + type: 'select2multi', + 'allow-null': true, + 'null-label': 'All Departments', + 'remote-source': ['CompanyStructure', 'id', 'title'], + help: 'This document will be visible to employees from selected department. If no department is selected only Admin users can see this' + }], ['share_employees', { + label: 'Share Employees', + type: 'select2multi', + 'allow-null': true, + 'null-label': 'All Employees', + 'remote-source': ['Employee', 'id', 'first_name+last_name'], + validation: 'none', + help: 'Instead of sharing with all the employees in a department, you can share it only with specific employees' + }]]; + } + }]); + + return CompanyDocumentAdapter; +}(_AdapterBase4["default"]); +/** + * EmployeeDocumentAdapter + */ + + +var EmployeeDocumentAdapter = /*#__PURE__*/function (_AdapterBase3) { + _inherits(EmployeeDocumentAdapter, _AdapterBase3); + + var _super3 = _createSuper(EmployeeDocumentAdapter); + + function EmployeeDocumentAdapter() { + _classCallCheck(this, EmployeeDocumentAdapter); + + return _super3.apply(this, arguments); + } + + _createClass(EmployeeDocumentAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'employee', 'document', 'details', 'date_added', 'status', 'attachment']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Employee' + }, { + sTitle: 'Document' + }, { + sTitle: 'Details' + }, { + sTitle: 'Date Added' + }, { + sTitle: 'Status' + }, { + sTitle: 'Attachment', + bVisible: false + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['employee', { + label: 'Employee', + type: 'select2', + sort: 'none', + 'allow-null': false, + 'remote-source': ['Employee', 'id', 'first_name+last_name', 'getActiveSubordinateEmployees'] + }], ['document', { + label: 'Document', + type: 'select2', + 'remote-source': ['Document', 'id', 'name'] + }], ['date_added', { + label: 'Date Added', + type: 'date', + validation: '' + }], ['valid_until', { + label: 'Valid Until', + type: 'date', + validation: 'none' + }], ['status', { + label: 'Status', + type: 'select', + source: [['Active', 'Active'], ['Inactive', 'Inactive'], ['Draft', 'Draft']] + }], ['visible_to', { + label: 'Visible To', + type: 'select', + source: [['Owner', 'Owner'], ['Manager', 'Manager'], ['Admin', 'Admin']] + }], ['details', { + label: 'Details', + type: 'textarea', + validation: 'none' + }], ['attachment', { + label: 'Attachment', + type: 'fileupload', + validation: '' + }]]; + } + }, { + key: "getFilters", + value: function getFilters() { + return [['employee', { + label: 'Employee', + type: 'select2', + 'remote-source': ['Employee', 'id', 'first_name+last_name', 'getActiveSubordinateEmployees'] + }]]; + } + }, { + key: "getActionButtonsHtml", + value: function getActionButtonsHtml(id, data) { + var html = '
    ' + '' + '' + '' + '
    '; + html = html.replace(/_id_/g, id); + html = html.replace(/_attachment_/g, data[6]); + html = html.replace(/_BASE_/g, this.baseUrl); + return html; + } + }, { + key: "isSubProfileTable", + value: function isSubProfileTable() { + return this.user.user_level !== 'Admin' && this.user.user_level !== 'Restricted Admin'; + } + }]); + + return EmployeeDocumentAdapter; +}(_AdapterBase4["default"]); + +module.exports = { + DocumentAdapter: DocumentAdapter, + CompanyDocumentAdapter: CompanyDocumentAdapter, + EmployeeDocumentAdapter: EmployeeDocumentAdapter +}; + +},{"../../../api/AdapterBase":57}],23:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _react = _interopRequireWildcard(require("react")); + +var _antd = require("antd"); + +var _icons = require("@ant-design/icons"); + +var _TagList = _interopRequireDefault(require("../../../../components/TagList")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var Search = _antd.Input.Search; +var Title = _antd.Typography.Title, + Text = _antd.Typography.Text; +var TabPane = _antd.Tabs.TabPane; + +var EmployeeProfile = /*#__PURE__*/function (_React$Component) { + _inherits(EmployeeProfile, _React$Component); + + var _super = _createSuper(EmployeeProfile); + + function EmployeeProfile(props) { + var _this; + + _classCallCheck(this, EmployeeProfile); + + _this = _super.call(this, props); + _this.state = { + loading: true + }; + return _this; + } + + _createClass(EmployeeProfile, [{ + key: "updateProfileImage", + value: function updateProfileImage() { + showUploadDialog("profile_image_".concat(this.props.element.id, "_").concat(new Date().getTime()), 'Upload Profile Image', 'profile_image', this.props.element.id, "profile_image_".concat(this.props.element.id), 'function', 'reloadCurrentElement', 'image'); + } + }, { + key: "getEditButtonJsx", + value: function getEditButtonJsx() { + var _this2 = this; + + return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, this.props.loading && /*#__PURE__*/_react["default"].createElement(_antd.Tag, { + icon: /*#__PURE__*/_react["default"].createElement(_icons.SyncOutlined, { + spin: true + }), + color: "processing" + }, this.props.adapter.gt('Edit')), !this.props.loading && /*#__PURE__*/_react["default"].createElement(_antd.Tag, { + icon: /*#__PURE__*/_react["default"].createElement(_icons.EditOutlined, null), + color: "processing", + onClick: function onClick() { + return modJs.edit(_this2.props.element.id); + } + }, this.props.adapter.gt('Edit'))); + } + }, { + key: "getTabViewEmployeeFilterButtonJsx", + value: function getTabViewEmployeeFilterButtonJsx(tab) { + var _this3 = this; + + return /*#__PURE__*/_react["default"].createElement(_antd.Tag, { + icon: /*#__PURE__*/_react["default"].createElement(_icons.EditOutlined, null), + color: "processing", + onClick: function onClick() { + switchTab(tab, { + employee: _this3.props.element.id + }); + } + }, this.props.adapter.gt('Edit')); + } + }, { + key: "render", + value: function render() { + var _this4 = this; + + return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_antd.Row, { + direction: "vertical", + style: { + width: '100%', + padding: '10px' + }, + gutter: 24 + }, /*#__PURE__*/_react["default"].createElement(_antd.Col, { + span: 24 + }, /*#__PURE__*/_react["default"].createElement(_antd.Card, { + title: this.props.adapter.gt('Employee Profile'), + extra: this.getEditButtonJsx(), + style: { + width: '100%' + } + }, /*#__PURE__*/_react["default"].createElement(_antd.Space, { + size: 'large' + }, /*#__PURE__*/_react["default"].createElement(_antd.Avatar, { + size: 140, + src: this.props.element.image, + onClick: function onClick() { + return _this4.updateProfileImage(); + } + }), /*#__PURE__*/_react["default"].createElement(_antd.Space, { + direction: 'vertical' + }, /*#__PURE__*/_react["default"].createElement(Title, { + level: 4 + }, "".concat(this.props.element.first_name, " ").concat(this.props.element.last_name)), /*#__PURE__*/_react["default"].createElement(_antd.Space, null, /*#__PURE__*/_react["default"].createElement(_icons.PhoneTwoTone, null), /*#__PURE__*/_react["default"].createElement(Text, { + copyable: true + }, " ".concat(this.props.element.mobile_phone || ''))), /*#__PURE__*/_react["default"].createElement(_antd.Space, null, /*#__PURE__*/_react["default"].createElement(_icons.MailTwoTone, null), /*#__PURE__*/_react["default"].createElement(Text, { + copyable: true + }, " ".concat(this.props.element.work_email || '')))), /*#__PURE__*/_react["default"].createElement(_antd.Descriptions, { + title: "", + bordered: true, + style: { + width: '100%', + padding: '10px' + } + }, /*#__PURE__*/_react["default"].createElement(_antd.Descriptions.Item, { + label: this.props.adapter.gt('Employee Number'), + span: 3 + }, this.props.element.employee_id), /*#__PURE__*/_react["default"].createElement(_antd.Descriptions.Item, { + label: this.props.adapter.gt('ID Number'), + span: 3 + }, this.props.element.nic_num || ''), this.props.element.ssn_num && this.props.element.ssn_num !== '' && /*#__PURE__*/_react["default"].createElement(_antd.Descriptions.Item, { + label: this.props.adapter.gt('Social Security Number'), + span: 3 + }, this.props.element.ssn_num || '')))))), /*#__PURE__*/_react["default"].createElement(_antd.Row, { + direction: "vertical", + style: { + width: '100%', + padding: '10px' + }, + gutter: 24 + }, /*#__PURE__*/_react["default"].createElement(_antd.Tabs, { + type: "card", + style: { + width: '100%' + } + }, /*#__PURE__*/_react["default"].createElement(TabPane, { + tab: "Basic Information", + key: "1", + style: { + width: '100%' + } + }, /*#__PURE__*/_react["default"].createElement(_antd.Row, { + direction: "vertical", + style: { + width: '100%', + padding: '10px' + }, + gutter: 24 + }, /*#__PURE__*/_react["default"].createElement(_antd.Col, { + span: 24 + }, /*#__PURE__*/_react["default"].createElement(_antd.Card, { + title: this.props.adapter.gt('Personal Information'), + extra: this.getEditButtonJsx(), + style: { + width: '100%' + } + }, /*#__PURE__*/_react["default"].createElement(_antd.Descriptions, { + title: "", + bordered: true + }, /*#__PURE__*/_react["default"].createElement(_antd.Descriptions.Item, { + label: this.props.adapter.gt('Date of Birth') + }, this.props.element.birthday || ''), /*#__PURE__*/_react["default"].createElement(_antd.Descriptions.Item, { + label: this.props.adapter.gt('Gender') + }, this.props.element.gender), /*#__PURE__*/_react["default"].createElement(_antd.Descriptions.Item, { + label: this.props.adapter.gt('Nationality') + }, this.props.element.nationality_Name), /*#__PURE__*/_react["default"].createElement(_antd.Descriptions.Item, { + label: this.props.adapter.gt('Marital Status') + }, this.props.element.marital_status), /*#__PURE__*/_react["default"].createElement(_antd.Descriptions.Item, { + label: this.props.adapter.gt('Joined Date') + }, this.props.element.joined_date), /*#__PURE__*/_react["default"].createElement(_antd.Descriptions.Item, { + label: this.props.adapter.gt('Driving License No') + }, this.props.element.driving_license || ''), /*#__PURE__*/_react["default"].createElement(_antd.Descriptions.Item, { + label: this.props.adapter.gt('Other ID') + }, this.props.element.other_id || '')))), /*#__PURE__*/_react["default"].createElement(_antd.Col, { + span: 24 + }, /*#__PURE__*/_react["default"].createElement(_antd.Card, { + title: this.props.adapter.gt('Contact Information'), + extra: this.getEditButtonJsx(), + style: { + width: '100%' + } + }, /*#__PURE__*/_react["default"].createElement(_antd.Descriptions, { + title: "", + bordered: true + }, /*#__PURE__*/_react["default"].createElement(_antd.Descriptions.Item, { + label: this.props.adapter.gt('Address'), + span: 3 + }, "".concat(this.props.element.address1, ", ").concat(this.props.element.address2 || '')), /*#__PURE__*/_react["default"].createElement(_antd.Descriptions.Item, { + label: this.props.adapter.gt('City') + }, this.props.element.city), /*#__PURE__*/_react["default"].createElement(_antd.Descriptions.Item, { + label: this.props.adapter.gt('Country') + }, this.props.element.country_Name), /*#__PURE__*/_react["default"].createElement(_antd.Descriptions.Item, { + label: this.props.adapter.gt('Postal/Zip Code') + }, this.props.element.postal_code), /*#__PURE__*/_react["default"].createElement(_antd.Descriptions.Item, { + label: this.props.adapter.gt('Home Phone'), + span: 2 + }, /*#__PURE__*/_react["default"].createElement(_antd.Space, null, /*#__PURE__*/_react["default"].createElement(_icons.PhoneTwoTone, null), /*#__PURE__*/_react["default"].createElement(Text, { + copyable: true + }, " ".concat(this.props.element.home_phone || '')))), /*#__PURE__*/_react["default"].createElement(_antd.Descriptions.Item, { + label: this.props.adapter.gt('Work Phone'), + span: 2 + }, /*#__PURE__*/_react["default"].createElement(_antd.Space, null, /*#__PURE__*/_react["default"].createElement(_icons.PhoneTwoTone, null), /*#__PURE__*/_react["default"].createElement(Text, { + copyable: true + }, " ".concat(this.props.element.work_phone || '')))), /*#__PURE__*/_react["default"].createElement(_antd.Descriptions.Item, { + label: this.props.adapter.gt('Private Email'), + span: 2 + }, /*#__PURE__*/_react["default"].createElement(_antd.Space, null, /*#__PURE__*/_react["default"].createElement(_icons.MailTwoTone, null), /*#__PURE__*/_react["default"].createElement(Text, { + copyable: true + }, " ".concat(this.props.element.private_email || ''))))))), /*#__PURE__*/_react["default"].createElement(_antd.Col, { + span: 24 + }, /*#__PURE__*/_react["default"].createElement(_antd.Card, { + title: this.props.adapter.gt('Job Details'), + extra: this.getEditButtonJsx(), + style: { + width: '100%' + } + }, /*#__PURE__*/_react["default"].createElement(_antd.Descriptions, { + title: "", + bordered: true + }, /*#__PURE__*/_react["default"].createElement(_antd.Descriptions.Item, { + label: this.props.adapter.gt('Job Title'), + span: 2 + }, this.props.element.job_title_Name), /*#__PURE__*/_react["default"].createElement(_antd.Descriptions.Item, { + label: this.props.adapter.gt('Employment Status') + }, this.props.element.employment_status_Name), /*#__PURE__*/_react["default"].createElement(_antd.Descriptions.Item, { + label: this.props.adapter.gt('Department') + }, this.props.element.department_Name), /*#__PURE__*/_react["default"].createElement(_antd.Descriptions.Item, { + label: this.props.adapter.gt('Supervisor') + }, this.props.element.supervisor_Name)))))), /*#__PURE__*/_react["default"].createElement(TabPane, { + tab: this.props.adapter.gt('Qualifications'), + key: "2", + style: { + width: '100%' + } + }, /*#__PURE__*/_react["default"].createElement(_antd.Row, { + style: { + width: '100%', + padding: '10px' + }, + gutter: 24 + }, /*#__PURE__*/_react["default"].createElement(_antd.Col, { + span: 6 + }, /*#__PURE__*/_react["default"].createElement(_antd.Card, { + title: this.props.adapter.gt('Skills'), + extra: this.getTabViewEmployeeFilterButtonJsx('tabEmployeeSkill'), + style: { + width: '100%' + } + }, /*#__PURE__*/_react["default"].createElement(_TagList["default"], { + color: "geekblue", + apiClient: this.props.adapter.apiClient, + url: "employees/".concat(this.props.element.id, "/skills"), + extractTag: function extractTag(item) { + return item.skill_id.display; + } + }))), /*#__PURE__*/_react["default"].createElement(_antd.Col, { + span: 6 + }, /*#__PURE__*/_react["default"].createElement(_antd.Card, { + title: this.props.adapter.gt('Education'), + extra: this.getTabViewEmployeeFilterButtonJsx('tabEmployeeEducation'), + style: { + width: '100%' + } + }, /*#__PURE__*/_react["default"].createElement(_TagList["default"], { + color: "cyan", + apiClient: this.props.adapter.apiClient, + url: "employees/".concat(this.props.element.id, "/educations"), + extractTag: function extractTag(item) { + return item.education_id.display; + } + }))), /*#__PURE__*/_react["default"].createElement(_antd.Col, { + span: 6 + }, /*#__PURE__*/_react["default"].createElement(_antd.Card, { + title: this.props.adapter.gt('Certifications'), + extra: this.getTabViewEmployeeFilterButtonJsx('tabEmployeeCertification'), + style: { + width: '100%' + } + }, /*#__PURE__*/_react["default"].createElement(_TagList["default"], { + color: "volcano", + apiClient: this.props.adapter.apiClient, + url: "employees/".concat(this.props.element.id, "/certifications"), + extractTag: function extractTag(item) { + return item.certification_id.display; + } + }))), /*#__PURE__*/_react["default"].createElement(_antd.Col, { + span: 6 + }, /*#__PURE__*/_react["default"].createElement(_antd.Card, { + title: this.props.adapter.gt('Languages'), + extra: this.getTabViewEmployeeFilterButtonJsx('tabEmployeeLanguage'), + style: { + width: '100%' + } + }, /*#__PURE__*/_react["default"].createElement(_TagList["default"], { + color: "orange", + apiClient: this.props.adapter.apiClient, + url: "employees/".concat(this.props.element.id, "/languages"), + extractTag: function extractTag(item) { + return item.language_id.display; + } + })))))))); + } + }]); + + return EmployeeProfile; +}(_react["default"].Component); + +var _default = EmployeeProfile; +exports["default"] = _default; + +},{"../../../../components/TagList":84,"@ant-design/icons":"@ant-design/icons","antd":"antd","react":"react"}],24:[function(require,module,exports){ +"use strict"; + +var _lib = require("./lib"); + +var _IceDataPipe = _interopRequireDefault(require("../../../api/IceDataPipe")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +window.EmployeeAdapter = _lib.EmployeeAdapter; +window.TerminatedEmployeeAdapter = _lib.TerminatedEmployeeAdapter; +window.ArchivedEmployeeAdapter = _lib.ArchivedEmployeeAdapter; +window.EmployeeSkillAdapter = _lib.EmployeeSkillAdapter; +window.EmployeeEducationAdapter = _lib.EmployeeEducationAdapter; +window.EmployeeCertificationAdapter = _lib.EmployeeCertificationAdapter; +window.EmployeeLanguageAdapter = _lib.EmployeeLanguageAdapter; +window.EmployeeDependentAdapter = _lib.EmployeeDependentAdapter; +window.EmergencyContactAdapter = _lib.EmergencyContactAdapter; +window.EmployeeImmigrationAdapter = _lib.EmployeeImmigrationAdapter; +window.EmployeeSubSkillsAdapter = _lib.EmployeeSubSkillsAdapter; +window.EmployeeSubEducationAdapter = _lib.EmployeeSubEducationAdapter; +window.EmployeeSubCertificationAdapter = _lib.EmployeeSubCertificationAdapter; +window.EmployeeSubLanguageAdapter = _lib.EmployeeSubLanguageAdapter; +window.EmployeeSubDependentAdapter = _lib.EmployeeSubDependentAdapter; +window.EmployeeSubEmergencyContactAdapter = _lib.EmployeeSubEmergencyContactAdapter; +window.EmployeeSubDocumentAdapter = _lib.EmployeeSubDocumentAdapter; +window.IceDataPipe = _IceDataPipe["default"]; + +},{"../../../api/IceDataPipe":63,"./lib":25}],25:[function(require,module,exports){ +"use strict"; + +var _react = _interopRequireDefault(require("react")); + +var _antd = require("antd"); + +var _icons = require("@ant-design/icons"); + +var _AdapterBase = _interopRequireDefault(require("../../../api/AdapterBase")); + +var _SubAdapterBase = _interopRequireDefault(require("../../../api/SubAdapterBase")); + +var _ReactLegacyModalAdapterBase = _interopRequireDefault(require("../../../api/ReactLegacyModalAdapterBase")); + +var _ReactModalAdapterBase = _interopRequireDefault(require("../../../api/ReactModalAdapterBase")); + +var _EmployeeProfile = _interopRequireDefault(require("./components/EmployeeProfile")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var SubProfileEnabledAdapterBase = /*#__PURE__*/function (_ReactModalAdapterBas) { + _inherits(SubProfileEnabledAdapterBase, _ReactModalAdapterBas); + + var _super = _createSuper(SubProfileEnabledAdapterBase); + + function SubProfileEnabledAdapterBase() { + _classCallCheck(this, SubProfileEnabledAdapterBase); + + return _super.apply(this, arguments); + } + + _createClass(SubProfileEnabledAdapterBase, [{ + key: "isSubProfileTable", + value: function isSubProfileTable() { + return this.user.user_level !== 'Admin' && this.user.user_level !== 'Restricted Admin'; + } + }]); + + return SubProfileEnabledAdapterBase; +}(_ReactModalAdapterBase["default"]); + +var EmployeeAdapter = /*#__PURE__*/function (_ReactModalAdapterBas2) { + _inherits(EmployeeAdapter, _ReactModalAdapterBas2); + + var _super2 = _createSuper(EmployeeAdapter); + + function EmployeeAdapter(endPoint, tab, filter, orderBy) { + var _this; + + _classCallCheck(this, EmployeeAdapter); + + _this = _super2.call(this, endPoint, tab, filter, orderBy); + _this.fieldNameMap = {}; + _this.hiddenFields = {}; + _this.tableFields = {}; + _this.formOnlyFields = {}; + return _this; + } + + _createClass(EmployeeAdapter, [{ + key: "isSubProfileTable", + value: function isSubProfileTable() { + return this.user.user_level !== 'Admin' && this.user.user_level !== 'Restricted Admin'; + } + }, { + key: "setFieldNameMap", + value: function setFieldNameMap(fields) { + var field; + + for (var i = 0; i < fields.length; i++) { + field = fields[i]; + this.fieldNameMap[field.name] = field; + + if (field.display === 'Hidden') { + this.hiddenFields[field.name] = field; + } else if (field.display === 'Table and Form' || field.display === 'Form') { + this.tableFields[field.name] = field; + } else { + this.formOnlyFields[field.name] = field; + } + } + } + }, { + key: "getCustomTableParams", + value: function getCustomTableParams() { + var that = this; + return { + aoColumnDefs: [{ + fnRender: function fnRender(data, cell) { + return that.preProcessRemoteTableData(data, cell, 1); + }, + aTargets: [1] + }, { + fnRender: that.getActionButtons, + aTargets: [that.getDataMapping().length] + }] + }; + } + }, { + key: "preProcessRemoteTableData", + value: function preProcessRemoteTableData(data, cell, id) { + if (id === 1) { + var tmp = 'User Image'; + return tmp.replace('_img_', cell); + } + + return cell; + } + }, { + key: "getTableHTMLTemplate", + value: function getTableHTMLTemplate() { + return '
    '; + } + }, { + key: "getTableFields", + value: function getTableFields() { + return ['id', 'image', 'employee_id', 'first_name', 'last_name', //'mobile_phone', + 'department', //'gender', + 'supervisor']; + } + }, { + key: "getDataMapping", + value: function getDataMapping() { + var tableFields = this.getTableFields(); + var newTableFields = []; + + for (var i = 0; i < tableFields.length; i++) { + if ((this.hiddenFields[tableFields[i]] === undefined || this.hiddenFields[tableFields[i]] === null) && (this.formOnlyFields[tableFields[i]] === undefined || this.formOnlyFields[tableFields[i]] === null)) { + newTableFields.push(tableFields[i]); + } + } + + return newTableFields; + } + }, { + key: "getHeaders", + value: function getHeaders() { + var tableFields = this.getTableFields(); + var headers = [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: '', + bSortable: false + }]; + var title = ''; + + for (var i = 0; i < tableFields.length; i++) { + if ((this.hiddenFields[tableFields[i]] === undefined || this.hiddenFields[tableFields[i]] === null) && (this.formOnlyFields[tableFields[i]] === undefined || this.formOnlyFields[tableFields[i]] === null)) { + if (this.fieldNameMap[tableFields[i]] !== undefined && this.fieldNameMap[tableFields[i]] !== null) { + title = this.fieldNameMap[tableFields[i]].textMapped; + + if (title === undefined || title === null || title === '') { + headers.push({ + sTitle: title + }); + } else if (tableFields[i] === 'gender') { + headers.push({ + sTitle: title, + translate: true + }); + } else { + headers.push({ + sTitle: title + }); + } + } + } + } + + return headers; + } + }, { + key: "getTableColumns", + value: function getTableColumns() { + var columns = this.getDataMapping(); + var headers = this.getHeaders(); + var tableColumns = []; + + for (var i = 1; i < columns.length; i++) { + tableColumns.push({ + title: headers[i].sTitle, + dataIndex: columns[i], + sorter: true + }); + + if (columns[i] === 'image') { + tableColumns[i - 1].render = function (text, record) { + return /*#__PURE__*/_react["default"].createElement(_antd.Avatar, { + src: text + }); + }; + } + } + + return tableColumns; + } + }, { + key: "showElement", + value: function showElement(element) { + this.tableContainer.current.setCurrentElement(element); + } + }, { + key: "getTableChildComponents", + value: function getTableChildComponents() { + return /*#__PURE__*/_react["default"].createElement(_EmployeeProfile["default"], null); + } + }, { + key: "getFormFields", + value: function getFormFields() { + var newFields = []; + var tempField; + var title; + var fields = [['id', { + label: 'ID', + type: 'hidden', + validation: '' + }], ['employee_id', { + label: 'Employee Number', + type: 'text', + validation: '' + }], ['first_name', { + label: 'First Name', + type: 'text', + validation: '' + }], ['middle_name', { + label: 'Middle Name', + type: 'text', + validation: 'none' + }], ['last_name', { + label: 'Last Name', + type: 'text', + validation: '' + }], ['nationality', { + label: 'Nationality', + type: 'select2', + 'remote-source': ['Nationality', 'id', 'name'] + }], ['birthday', { + label: 'Date of Birth', + type: 'date', + validation: '' + }], ['gender', { + label: 'Gender', + type: 'select', + source: [['Male', 'Male'], ['Female', 'Female'], ['Other', 'Other']] + }], ['marital_status', { + label: 'Marital Status', + type: 'select', + source: [['Married', 'Married'], ['Single', 'Single'], ['Divorced', 'Divorced'], ['Widowed', 'Widowed'], ['Other', 'Other']] + }], ['ethnicity', { + label: 'Ethnicity', + type: 'select2', + 'allow-null': true, + 'remote-source': ['Ethnicity', 'id', 'name'] + }], ['immigration_status', { + label: 'Immigration Status', + type: 'select2', + 'allow-null': true, + 'remote-source': ['ImmigrationStatus', 'id', 'name'] + }], ['ssn_num', { + label: 'SSN/NRIC', + type: 'text', + validation: 'none' + }], ['nic_num', { + label: 'NIC', + type: 'text', + validation: 'none' + }], ['other_id', { + label: 'Other ID', + type: 'text', + validation: 'none' + }], ['driving_license', { + label: 'Driving License No', + type: 'text', + validation: 'none' + }], ['employment_status', { + label: 'Employment Status', + type: 'select2', + 'remote-source': ['EmploymentStatus', 'id', 'name'] + }], ['department', { + label: 'Department', + type: 'select2', + 'remote-source': ['CompanyStructure', 'id', 'title'] + }], ['job_title', { + label: 'Job Title', + type: 'select2', + 'remote-source': ['JobTitle', 'id', 'name'] + }], ['pay_grade', { + label: 'Pay Grade', + type: 'select2', + 'allow-null': true, + 'remote-source': ['PayGrade', 'id', 'name'] + }], ['joined_date', { + label: 'Joined Date', + type: 'date', + validation: '' + }], ['confirmation_date', { + label: 'Confirmation Date', + type: 'date', + validation: 'none' + }], ['termination_date', { + label: 'Termination Date', + type: 'date', + validation: 'none' + }], ['work_station_id', { + label: 'Work Station Id', + type: 'text', + validation: 'none' + }], ['address1', { + label: 'Address Line 1', + type: 'text', + validation: 'none' + }], ['address2', { + label: 'Address Line 2', + type: 'text', + validation: 'none' + }], ['city', { + label: 'City', + type: 'text', + validation: 'none' + }], ['country', { + label: 'Country', + type: 'select2', + 'remote-source': ['Country', 'code', 'name'] + }], ['province', { + label: 'State', + type: 'select2', + 'allow-null': true, + 'remote-source': ['Province', 'id', 'name'] + }], ['postal_code', { + label: 'Postal/Zip Code', + type: 'text', + validation: 'none' + }], ['home_phone', { + label: 'Home Phone', + type: 'text', + validation: 'none' + }], ['mobile_phone', { + label: 'Mobile Phone', + type: 'text', + validation: 'none' + }], ['work_phone', { + label: 'Work Phone', + type: 'text', + validation: 'none' + }], ['work_email', { + label: 'Work Email', + type: 'text', + validation: 'emailOrEmpty' + }], ['private_email', { + label: 'Private Email', + type: 'text', + validation: 'emailOrEmpty' + }], ['supervisor', { + label: 'Direct Supervisor', + type: 'select2', + 'allow-null': true, + 'remote-source': ['Employee', 'id', 'first_name+last_name'] + }], ['indirect_supervisors', { + label: 'Indirect Supervisors', + type: 'select2multi', + 'allow-null': true, + 'remote-source': ['Employee', 'id', 'first_name+last_name'] + }], ['approver1', { + label: 'First Level Approver', + type: 'select2', + 'allow-null': true, + 'null-label': 'None', + 'remote-source': ['Employee', 'id', 'first_name+last_name'] + }], ['approver2', { + label: 'Second Level Approver', + type: 'select2', + 'allow-null': true, + 'null-label': 'None', + 'remote-source': ['Employee', 'id', 'first_name+last_name'] + }], ['approver3', { + label: 'Third Level Approver', + type: 'select2', + 'allow-null': true, + 'null-label': 'None', + 'remote-source': ['Employee', 'id', 'first_name+last_name'] + }], ['notes', { + label: 'Notes', + type: 'datagroup', + form: [['note', { + label: 'Note', + type: 'textarea', + validation: '' + }]], + html: '
    #_delete_##_edit_#Date: #_date_#
    #_note_#
    ', + validation: 'none', + columns: [{ + title: 'Note', + dataIndex: 'note', + key: 'note' + }], + 'sort-function': function sortFunction(a, b) { + var t1 = Date.parse(a.date).getTime(); + var t2 = Date.parse(b.date).getTime(); + return t1 < t2; + }, + 'custom-validate-function': function customValidateFunction(data) { + var res = {}; + res.valid = true; + data.date = new Date().toString('d-MMM-yyyy hh:mm tt'); + res.params = data; + return res; + } + }]]; + + for (var i = 0; i < this.customFields.length; i++) { + fields.push(this.customFields[i]); + } + + for (var _i = 0; _i < fields.length; _i++) { + tempField = fields[_i]; + + if (this.hiddenFields[tempField[0]] === undefined || this.hiddenFields[tempField[0]] === null) { + if (this.fieldNameMap[tempField[0]] !== undefined && this.fieldNameMap[tempField[0]] !== null) { + title = this.fieldNameMap[tempField[0]].textMapped; + tempField[1].label = title; + } + + newFields.push(tempField); + } + } + + return newFields; + } + }, { + key: "getMappedFields", + value: function getMappedFields() { + var fields = this.getFormFields(); + var steps = [{ + title: this.gt('Personal'), + description: this.gt('Personal Information'), + fields: ['id', 'employee_id', 'first_name', 'middle_name', 'last_name', 'nationality', 'birthday', 'gender', 'marital_status', 'ethnicity'] + }, { + title: this.gt('Identification'), + description: this.gt('Personal Information'), + fields: ['immigration_status', 'ssn_num', 'nic_num', 'other_id', 'driving_license'] + }, { + title: this.gt('Work'), + description: this.gt('Work related details'), + fields: ['employment_status', 'department', 'job_title', 'pay_grade', 'joined_date', 'confirmation_date', 'termination_date', 'work_station_id'] + }, { + title: this.gt('Contact'), + description: this.gt('Contact details'), + fields: ['address1', 'address2', 'city', 'country', 'province', 'postal_code', 'home_phone', 'mobile_phone', 'work_phone', 'work_email', 'private_email'] + }, { + title: this.gt('Report'), + description: this.gt('Supervisors and reports'), + fields: ['supervisor', 'indirect_supervisors', 'approver1', 'approver2', 'approver3', 'notes'] + }]; + + if (this.customFields.length > 0) { + steps.push({ + title: this.gt('Other'), + description: this.gt('Additional details'), + fields: this.customFields.map(function (item) { + return item[0]; + }) + }); + } + + return this.addActualFieldsForStepModal(steps, fields); + } + }, { + key: "getFilters", + value: function getFilters() { + return [['job_title', { + label: 'Job Title', + type: 'select2', + 'allow-null': true, + 'null-label': 'All Job Titles', + 'remote-source': ['JobTitle', 'id', 'name'] + }], ['department', { + label: 'Department', + type: 'select2', + 'allow-null': true, + 'null-label': 'All Departments', + 'remote-source': ['CompanyStructure', 'id', 'title'] + }], ['supervisor', { + label: 'Supervisor', + type: 'select2', + 'allow-null': true, + 'null-label': 'Anyone', + 'remote-source': ['Employee', 'id', 'first_name+last_name'] + }]]; + } + }, { + key: "getTableActionButtonJsx", + value: function getTableActionButtonJsx(adapter) { + return function (text, record) { + return /*#__PURE__*/_react["default"].createElement(_antd.Space, { + size: "middle" + }, /*#__PURE__*/_react["default"].createElement(_antd.Tag, { + color: "orange", + onClick: function onClick() { + return modJs.setAdminProfile(record.id); + }, + style: { + cursor: 'pointer' + } + }, /*#__PURE__*/_react["default"].createElement(_icons.LoginOutlined, null), " ".concat(adapter.gt('Login As'))), adapter.hasAccess('save') && adapter.showEdit && /*#__PURE__*/_react["default"].createElement(_antd.Tag, { + color: "green", + onClick: function onClick() { + return modJs.edit(record.id); + }, + style: { + cursor: 'pointer' + } + }, /*#__PURE__*/_react["default"].createElement(_icons.EditOutlined, null), " ".concat(adapter.gt('Edit'))), adapter.hasAccess('element') && /*#__PURE__*/_react["default"].createElement(_antd.Tag, { + color: "blue", + onClick: function onClick() { + return modJs.viewElement(record.id); + }, + style: { + cursor: 'pointer' + } + }, /*#__PURE__*/_react["default"].createElement(_icons.MonitorOutlined, null), " ".concat(adapter.gt('View'))), adapter.hasAccess('delete') && adapter.showDelete && /*#__PURE__*/_react["default"].createElement(_antd.Tag, { + color: "volcano", + onClick: function onClick() { + return modJs.terminateEmployee(record.id); + }, + style: { + cursor: 'pointer' + } + }, /*#__PURE__*/_react["default"].createElement(_icons.DeleteOutlined, null), " ".concat(adapter.gt('Deactivate'))), adapter.hasAccess('save') && /*#__PURE__*/_react["default"].createElement(_antd.Tag, { + color: "cyan", + onClick: function onClick() { + return modJs.copyRow(record.id); + }, + style: { + cursor: 'pointer' + } + }, /*#__PURE__*/_react["default"].createElement(_icons.CopyOutlined, null), " ".concat(adapter.gt('Copy')))); + }; + } + }, { + key: "getActionButtonsHtml", + value: function getActionButtonsHtml(id) { + var deleteBtn = ''; + + if (this.showDelete === false) { + deleteBtn = ''; + } // eslint-disable-next-line max-len + + + var html = "
    \n\n\n\n".concat(deleteBtn, "\n
    "); + html = html.replace(/_id_/g, id); + html = html.replace(/_BASE_/g, this.baseUrl); + return html; + } + }, { + key: "getHelpLink", + value: function getHelpLink() { + return 'https://thilinah.gitbooks.io/icehrm-guide/content/employee-information-setup.html'; + } + }, { + key: "saveSuccessItemCallback", + value: function saveSuccessItemCallback(data) { + this.lastSavedEmployee = data; + + if (this.currentId === null) { + $('#createUserModel').modal('show'); + } + } + }, { + key: "closeCreateUser", + value: function closeCreateUser() { + $('#createUserModel').modal('hide'); + } + }, { + key: "createUser", + value: function createUser() { + var data = {}; + data.employee = this.lastSavedEmployee.id; + data.user_level = 'Employee'; + data.email = this.lastSavedEmployee.work_email; + data.username = this.lastSavedEmployee.work_email.split('@')[0]; + top.location.href = this.getCustomUrl("?g=admin&n=users&m=admin_Admin&action=new&object=".concat(Base64.encodeURI(JSON.stringify(data)))); + } + }, { + key: "deleteEmployee", + value: function deleteEmployee(id) { + if (confirm('Are you sure you want to archive this employee? Data for this employee will be saved to an archive table. But you will not be able to covert the archived employee data into a normal employee.')) {// Archive + } else { + return; + } + + var callBackData = []; + callBackData.callBackData = []; + callBackData.callBackSuccess = 'deleteEmployeeSuccessCallback'; + callBackData.callBackFail = 'deleteEmployeeFailCallback'; + this.customAction('deleteEmployee', 'admin=employees', JSON.stringify({ + id: id + }), callBackData); + } + }, { + key: "deleteEmployeeSuccessCallback", + value: function deleteEmployeeSuccessCallback(callBackData) { + this.showMessage('Delete Success', 'Employee deleted. You can find archived information for this employee in Archived Employees tab'); + this.get([]); + } + }, { + key: "deleteEmployeeFailCallback", + value: function deleteEmployeeFailCallback(callBackData) { + this.showMessage('Error occurred while deleting Employee', callBackData); + } + }, { + key: "terminateEmployee", + value: function terminateEmployee(id) { + if (confirm('Are you sure you want to terminate this employee contract? You will still be able to access all details of this employee.')) {// Terminate + } else { + return; + } + + var params = {}; + params.id = id; + var reqJson = JSON.stringify(params); + var callBackData = []; + callBackData.callBackData = []; + callBackData.callBackSuccess = 'terminateEmployeeSuccessCallback'; + callBackData.callBackFail = 'terminateEmployeeFailCallback'; + this.customAction('terminateEmployee', 'admin=employees', reqJson, callBackData); + } + }, { + key: "terminateEmployeeSuccessCallback", + value: function terminateEmployeeSuccessCallback(callBackData) { + this.showMessage('Success', 'Employee contract terminated. You can find terminated employee information under Terminated Employees menu.'); + this.get([]); + } + }, { + key: "terminateEmployeeFailCallback", + value: function terminateEmployeeFailCallback(callBackData) { + this.showMessage('Error occured while terminating Employee', callBackData); + } + }, { + key: "activateEmployee", + value: function activateEmployee(id) { + if (confirm('Are you sure you want to re-activate this employee contract?')) {// Terminate + } else { + return; + } + + var params = {}; + params.id = id; + var reqJson = JSON.stringify(params); + var callBackData = []; + callBackData.callBackData = []; + callBackData.callBackSuccess = 'activateEmployeeSuccessCallback'; + callBackData.callBackFail = 'activateEmployeeFailCallback'; + this.customAction('activateEmployee', 'admin=employees', reqJson, callBackData); + } + }, { + key: "activateEmployeeSuccessCallback", + value: function activateEmployeeSuccessCallback(callBackData) { + this.showMessage('Success', 'Employee contract re-activated.'); + this.get([]); + } + }, { + key: "activateEmployeeFailCallback", + value: function activateEmployeeFailCallback(callBackData) { + this.showMessage('Error occurred while activating Employee', callBackData); + } + }, { + key: "view", + value: function view(id) { + var that = this; + this.currentId = id; + var sourceMappingJson = JSON.stringify(this.getSourceMapping()); + var object = { + id: id, + map: sourceMappingJson + }; + var reqJson = JSON.stringify(object); + var callBackData = []; + callBackData.callBackData = []; + callBackData.callBackSuccess = 'renderEmployee'; + callBackData.callBackFail = 'viewFailCallBack'; + this.customAction('get', 'modules=employees', reqJson, callBackData); + } + }, { + key: "viewFailCallBack", + value: function viewFailCallBack(callBackData) { + this.showMessage('Error', 'Error Occurred while retrieving candidate'); + } + }, { + key: "deleteProfileImage", + value: function deleteProfileImage(empId) { + var req = { + id: empId + }; + var reqJson = JSON.stringify(req); + var callBackData = []; + callBackData.callBackData = []; + callBackData.callBackSuccess = 'modEmployeeDeleteProfileImageCallBack'; + callBackData.callBackFail = 'modEmployeeDeleteProfileImageCallBack'; + this.customAction('deleteProfileImage', 'modules=employees', reqJson, callBackData); + } + }, { + key: "modEmployeeDeleteProfileImageCallBack", + value: function modEmployeeDeleteProfileImageCallBack(data) {// top.location.href = top.location.href; + } + }]); + + return EmployeeAdapter; +}(_ReactModalAdapterBase["default"]); +/* + * Terminated Employee + */ + + +var TerminatedEmployeeAdapter = /*#__PURE__*/function (_EmployeeAdapter) { + _inherits(TerminatedEmployeeAdapter, _EmployeeAdapter); + + var _super3 = _createSuper(TerminatedEmployeeAdapter); + + function TerminatedEmployeeAdapter() { + _classCallCheck(this, TerminatedEmployeeAdapter); + + return _super3.apply(this, arguments); + } + + _createClass(TerminatedEmployeeAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'employee_id', 'first_name', 'last_name', 'mobile_phone', 'department', 'gender', 'supervisor']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID' + }, { + sTitle: '', + bSortable: false + }, { + sTitle: 'Employee Number' + }, { + sTitle: 'First Name' + }, { + sTitle: 'Last Name' + }, { + sTitle: 'Mobile' + }, { + sTitle: 'Department' + }, { + sTitle: 'Gender' + }, { + sTitle: 'Supervisor' + }]; + } + }, { + key: "getTableColumns", + value: function getTableColumns() { + return [{ + title: 'Employee Number', + dataIndex: 'employee_id', + sorter: true + }, { + title: 'First Name', + dataIndex: 'first_name' + }, { + title: 'Last Name', + dataIndex: 'last_name' + }, { + title: 'Department', + dataIndex: 'department' + }, { + title: 'Supervisor', + dataIndex: 'supervisor' + }]; + } + }, { + key: "getFilters", + value: function getFilters() { + return [['job_title', { + label: 'Job Title', + type: 'select2', + 'allow-null': true, + 'null-label': 'All Job Titles', + 'remote-source': ['JobTitle', 'id', 'name'] + }], ['department', { + label: 'Department', + type: 'select2', + 'allow-null': true, + 'null-label': 'All Departments', + 'remote-source': ['CompanyStructure', 'id', 'title'] + }], ['supervisor', { + label: 'Supervisor', + type: 'select2', + 'allow-null': true, + 'null-label': 'Anyone', + 'remote-source': ['Employee', 'id', 'first_name+last_name'] + }]]; + } + }, { + key: "getActionButtonsHtml", + value: function getActionButtonsHtml(id) { + // eslint-disable-next-line max-len + var html = "
    \n\n\n\n
    "; + html = html.replace(/_id_/g, id); + html = html.replace(/_BASE_/g, this.baseUrl); + return html; + } + }, { + key: "download", + value: function download(id) { + var params = { + t: 'ArchivedEmployee', + sa: 'downloadArchivedEmployee', + mod: 'admin=employees' + }; + params.req = JSON.stringify({ + id: id + }); + var downloadUrl = modJs.getCustomActionUrl('ca', params); + window.open(downloadUrl, '_blank'); + } + }, { + key: "getTableActionButtonJsx", + value: function getTableActionButtonJsx(adapter) { + return function (text, record) { + return /*#__PURE__*/_react["default"].createElement(_antd.Space, { + size: "middle" + }, /*#__PURE__*/_react["default"].createElement(_antd.Tag, { + color: "cyan", + onClick: function onClick() { + return modJs.activateEmployee(record.id); + }, + style: { + cursor: 'pointer' + } + }, /*#__PURE__*/_react["default"].createElement(_icons.UndoOutlined, null), " ".concat(adapter.gt('Activate'))), adapter.hasAccess('delete') && adapter.showDelete && /*#__PURE__*/_react["default"].createElement(_antd.Tag, { + color: "volcano", + onClick: function onClick() { + return modJs.deleteEmployee(record.id); + }, + style: { + cursor: 'pointer' + } + }, /*#__PURE__*/_react["default"].createElement(_icons.DeleteOutlined, null), " ".concat(adapter.gt('Delete')))); + }; + } + }]); + + return TerminatedEmployeeAdapter; +}(EmployeeAdapter); +/* + * Archived Employee + */ + + +var ArchivedEmployeeAdapter = /*#__PURE__*/function (_SubProfileEnabledAda) { + _inherits(ArchivedEmployeeAdapter, _SubProfileEnabledAda); + + var _super4 = _createSuper(ArchivedEmployeeAdapter); + + function ArchivedEmployeeAdapter() { + _classCallCheck(this, ArchivedEmployeeAdapter); + + return _super4.apply(this, arguments); + } + + _createClass(ArchivedEmployeeAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'employee_id', 'first_name', 'last_name', 'work_email', 'department', 'gender', 'supervisor']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID' + }, { + sTitle: 'Employee Number' + }, { + sTitle: 'First Name' + }, { + sTitle: 'Last Name' + }, { + sTitle: 'Work Email' + }, { + sTitle: 'Department' + }, { + sTitle: 'Gender' + }, { + sTitle: 'Supervisor' + }]; + } + }, { + key: "getTableColumns", + value: function getTableColumns() { + return [{ + title: 'Employee Number', + dataIndex: 'employee_id', + sorter: true + }, { + title: 'First Name', + dataIndex: 'first_name' + }, { + title: 'Last Name', + dataIndex: 'last_name' + }, { + title: 'Department', + dataIndex: 'department' + }, { + title: 'Supervisor', + dataIndex: 'supervisor' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden', + validation: '' + }], ['employee_id', { + label: 'Employee Number', + type: 'text', + validation: '' + }], ['first_name', { + label: 'First Name', + type: 'text', + validation: '' + }], ['middle_name', { + label: 'Middle Name', + type: 'text', + validation: 'none' + }], ['last_name', { + label: 'Last Name', + type: 'text', + validation: '' + }], ['gender', { + label: 'Gender', + type: 'select', + source: [['Male', 'Male'], ['Female', 'Female'], ['Other', 'Other']] + }], ['ssn_num', { + label: 'SSN/NRIC', + type: 'text', + validation: 'none' + }], ['nic_num', { + label: 'NIC', + type: 'text', + validation: 'none' + }], ['other_id', { + label: 'Other ID', + type: 'text', + validation: 'none' + }], ['driving_license', { + label: 'Driving License No', + type: 'text', + validation: 'none' + }], ['department', { + label: 'Department', + type: 'select2', + 'remote-source': ['CompanyStructure', 'id', 'title'] + }], ['supervisor', { + label: 'Supervisor', + type: 'select2', + 'allow-null': true, + 'remote-source': ['Employee', 'id', 'first_name+last_name'] + }]]; + } + }, { + key: "getFilters", + value: function getFilters() { + return [['job_title', { + label: 'Job Title', + type: 'select2', + 'allow-null': true, + 'null-label': 'All Job Titles', + 'remote-source': ['JobTitle', 'id', 'name'] + }], ['department', { + label: 'Department', + type: 'select2', + 'allow-null': true, + 'null-label': 'All Departments', + 'remote-source': ['CompanyStructure', 'id', 'title'] + }], ['supervisor', { + label: 'Supervisor', + type: 'select2', + 'allow-null': true, + 'null-label': 'Anyone', + 'remote-source': ['Employee', 'id', 'first_name+last_name'] + }]]; + } + }, { + key: "getActionButtonsHtml", + value: function getActionButtonsHtml(id) { + // eslint-disable-next-line max-len + var html = '
    '; + html = html.replace(/_id_/g, id); + html = html.replace(/_BASE_/g, this.baseUrl); + return html; + } + }, { + key: "download", + value: function download(id) { + var params = { + t: 'ArchivedEmployee', + sa: 'downloadArchivedEmployee', + mod: 'admin=employees' + }; + params.req = JSON.stringify({ + id: id + }); + var downloadUrl = modJs.getCustomActionUrl('ca', params); + window.open(downloadUrl, '_blank'); + } + }, { + key: "getTableActionButtonJsx", + value: function getTableActionButtonJsx(adapter) { + return function (text, record) { + return /*#__PURE__*/_react["default"].createElement(_antd.Space, { + size: "middle" + }, adapter.hasAccess('element') && /*#__PURE__*/_react["default"].createElement(_antd.Tag, { + color: "blue", + onClick: function onClick() { + return modJs.viewElement(record.id); + }, + style: { + cursor: 'pointer' + } + }, /*#__PURE__*/_react["default"].createElement(_icons.MonitorOutlined, null), " ".concat(adapter.gt('View'))), /*#__PURE__*/_react["default"].createElement(_antd.Tag, { + color: "cyan", + onClick: function onClick() { + return modJs.download(record.id); + }, + style: { + cursor: 'pointer' + } + }, /*#__PURE__*/_react["default"].createElement(_icons.CloudDownloadOutlined, null), " ".concat(adapter.gt('Download'))), adapter.hasAccess('delete') && adapter.showDelete && /*#__PURE__*/_react["default"].createElement(_antd.Tag, { + color: "volcano", + onClick: function onClick() { + return modJs.deleteRow(record.id); + }, + style: { + cursor: 'pointer' + } + }, /*#__PURE__*/_react["default"].createElement(_icons.DeleteOutlined, null), " ".concat(adapter.gt('Delete')))); + }; + } + }]); + + return ArchivedEmployeeAdapter; +}(SubProfileEnabledAdapterBase); +/* + * ========================================================== + */ + + +var EmployeeSkillAdapter = /*#__PURE__*/function (_ReactModalAdapterBas3) { + _inherits(EmployeeSkillAdapter, _ReactModalAdapterBas3); + + var _super5 = _createSuper(EmployeeSkillAdapter); + + function EmployeeSkillAdapter() { + _classCallCheck(this, EmployeeSkillAdapter); + + return _super5.apply(this, arguments); + } + + _createClass(EmployeeSkillAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'employee', 'skill_id', 'details']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Employee' + }, { + sTitle: 'Skill' + }, { + sTitle: 'Details' + }]; + } + }, { + key: "getTableColumns", + value: function getTableColumns() { + return [{ + title: 'Employee', + dataIndex: 'employee', + sorter: true + }, { + title: 'Skill', + dataIndex: 'skill_id', + sorter: true + }, { + title: 'Details', + dataIndex: 'details' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['employee', { + label: 'Employee', + type: 'select2', + sort: 'none', + 'allow-null': false, + 'remote-source': ['Employee', 'id', 'first_name+last_name', 'getActiveSubordinateEmployees'] + }], ['skill_id', { + label: 'Skill', + type: 'select2', + 'allow-null': true, + 'remote-source': ['Skill', 'id', 'name'] + }], ['details', { + label: 'Details', + type: 'textarea', + validation: '' + }]]; + } + }, { + key: "getFilters", + value: function getFilters() { + return [['employee', { + label: 'Employee', + type: 'select2', + sort: 'none', + 'allow-null': false, + 'remote-source': ['Employee', 'id', 'first_name+last_name', 'getActiveSubordinateEmployees'] + }], ['skill_id', { + label: 'Skill', + type: 'select2', + 'allow-null': true, + 'null-label': 'All Skills', + 'remote-source': ['Skill', 'id', 'name'] + }]]; + } + }, { + key: "isSubProfileTable", + value: function isSubProfileTable() { + return this.user.user_level !== 'Admin' && this.user.user_level !== 'Restricted Admin'; + } + }]); + + return EmployeeSkillAdapter; +}(_ReactModalAdapterBase["default"]); +/** + * EmployeeEducationAdapter + */ + + +var EmployeeEducationAdapter = /*#__PURE__*/function (_SubProfileEnabledAda2) { + _inherits(EmployeeEducationAdapter, _SubProfileEnabledAda2); + + var _super6 = _createSuper(EmployeeEducationAdapter); + + function EmployeeEducationAdapter() { + _classCallCheck(this, EmployeeEducationAdapter); + + return _super6.apply(this, arguments); + } + + _createClass(EmployeeEducationAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'employee', 'education_id', 'institute', 'date_start', 'date_end']; + } + }, { + key: "getTableColumns", + value: function getTableColumns() { + return [{ + title: 'Employee', + dataIndex: 'employee', + sorter: true + }, { + title: 'Qualification', + dataIndex: 'education_id', + sorter: true + }, { + title: 'Institute', + dataIndex: 'institute', + sorter: true + }, { + title: 'Start Date', + dataIndex: 'date_start', + sorter: true + }, { + title: 'Completed On', + dataIndex: 'date_end', + sorter: true + }]; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Employee' + }, { + sTitle: 'Qualification' + }, { + sTitle: 'Institute' + }, { + sTitle: 'Start Date' + }, { + sTitle: 'Completed On' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['employee', { + label: 'Employee', + type: 'select2', + sort: 'none', + 'allow-null': false, + 'remote-source': ['Employee', 'id', 'first_name+last_name', 'getActiveSubordinateEmployees'] + }], ['education_id', { + label: 'Qualification', + type: 'select2', + 'allow-null': false, + 'remote-source': ['Education', 'id', 'name'] + }], ['institute', { + label: 'Institute', + type: 'text', + validation: '' + }], ['date_start', { + label: 'Start Date', + type: 'date', + validation: 'none' + }], ['date_end', { + label: 'Completed On', + type: 'date', + validation: 'none' + }]]; + } + }, { + key: "getFilters", + value: function getFilters() { + return [['employee', { + label: 'Employee', + type: 'select2', + sort: 'none', + 'allow-null': false, + 'remote-source': ['Employee', 'id', 'first_name+last_name', 'getActiveSubordinateEmployees'] + }], ['education_id', { + label: 'Qualification', + type: 'select2', + 'allow-null': true, + 'null-label': 'All Qualifications', + 'remote-source': ['Education', 'id', 'name'] + }]]; + } + }, { + key: "isSubProfileTable", + value: function isSubProfileTable() { + return this.user.user_level !== 'Admin' && this.user.user_level !== 'Restricted Admin'; + } + }]); + + return EmployeeEducationAdapter; +}(SubProfileEnabledAdapterBase); +/** + * EmployeeCertificationAdapter + */ + + +var EmployeeCertificationAdapter = /*#__PURE__*/function (_SubProfileEnabledAda3) { + _inherits(EmployeeCertificationAdapter, _SubProfileEnabledAda3); + + var _super7 = _createSuper(EmployeeCertificationAdapter); + + function EmployeeCertificationAdapter() { + _classCallCheck(this, EmployeeCertificationAdapter); + + return _super7.apply(this, arguments); + } + + _createClass(EmployeeCertificationAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'employee', 'certification_id', 'institute', 'date_start', 'date_end']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Employee' + }, { + sTitle: 'Certification' + }, { + sTitle: 'Institute' + }, { + sTitle: 'Granted On' + }, { + sTitle: 'Valid Thru' + }]; + } + }, { + key: "getTableColumns", + value: function getTableColumns() { + return [{ + title: 'Employee', + dataIndex: 'employee', + sorter: true + }, { + title: 'Certification', + dataIndex: 'certification_id', + sorter: true + }, { + title: 'Institute', + dataIndex: 'institute', + sorter: true + }, { + title: 'Granted On', + dataIndex: 'date_start', + sorter: true + }, { + title: 'Valid Until', + dataIndex: 'date_end', + sorter: true + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['employee', { + label: 'Employee', + type: 'select2', + sort: 'none', + 'allow-null': false, + 'remote-source': ['Employee', 'id', 'first_name+last_name', 'getActiveSubordinateEmployees'] + }], ['certification_id', { + label: 'Certification', + type: 'select2', + 'allow-null': false, + 'remote-source': ['Certification', 'id', 'name'] + }], ['institute', { + label: 'Institute', + type: 'text', + validation: '' + }], ['date_start', { + label: 'Granted On', + type: 'date', + validation: 'none' + }], ['date_end', { + label: 'Valid Thru', + type: 'date', + validation: 'none' + }]]; + } + }, { + key: "getFilters", + value: function getFilters() { + return [['employee', { + label: 'Employee', + type: 'select2', + sort: 'none', + 'allow-null': false, + 'remote-source': ['Employee', 'id', 'first_name+last_name', 'getActiveSubordinateEmployees'] + }], ['certification_id', { + label: 'Certification', + type: 'select2', + 'allow-null': true, + 'null-label': 'All Certifications', + 'remote-source': ['Certification', 'id', 'name'] + }]]; + } + }, { + key: "isSubProfileTable", + value: function isSubProfileTable() { + return this.user.user_level !== 'Admin' && this.user.user_level !== 'Restricted Admin'; + } + }]); + + return EmployeeCertificationAdapter; +}(SubProfileEnabledAdapterBase); +/** + * EmployeeLanguageAdapter + */ + + +var EmployeeLanguageAdapter = /*#__PURE__*/function (_SubProfileEnabledAda4) { + _inherits(EmployeeLanguageAdapter, _SubProfileEnabledAda4); + + var _super8 = _createSuper(EmployeeLanguageAdapter); + + function EmployeeLanguageAdapter() { + _classCallCheck(this, EmployeeLanguageAdapter); + + return _super8.apply(this, arguments); + } + + _createClass(EmployeeLanguageAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'employee', 'language_id', 'reading', 'speaking', 'writing', 'understanding']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Employee' + }, { + sTitle: 'Language' + }, { + sTitle: 'Reading' + }, { + sTitle: 'Speaking' + }, { + sTitle: 'Writing' + }, { + sTitle: 'Listening' + }]; + } + }, { + key: "getTableColumns", + value: function getTableColumns() { + return [{ + title: 'Employee', + dataIndex: 'employee', + sorter: true + }, { + title: 'Language', + dataIndex: 'language_id', + sorter: true + }, { + title: 'Reading', + dataIndex: 'reading', + sorter: true + }, { + title: 'Speaking', + dataIndex: 'speaking', + sorter: true + }, { + title: 'Writing', + dataIndex: 'writing', + sorter: true + }, { + title: 'Listening', + dataIndex: 'understanding', + sorter: true + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + var compArray = [['Elementary Proficiency', 'Elementary Proficiency'], ['Limited Working Proficiency', 'Limited Working Proficiency'], ['Professional Working Proficiency', 'Professional Working Proficiency'], ['Full Professional Proficiency', 'Full Professional Proficiency'], ['Native or Bilingual Proficiency', 'Native or Bilingual Proficiency']]; + return [['id', { + label: 'ID', + type: 'hidden' + }], ['employee', { + label: 'Employee', + type: 'select2', + sort: 'none', + 'allow-null': false, + 'remote-source': ['Employee', 'id', 'first_name+last_name', 'getActiveSubordinateEmployees'] + }], ['language_id', { + label: 'Language', + type: 'select2', + 'allow-null': false, + 'remote-source': ['Language', 'id', 'name'] + }], ['reading', { + label: 'Reading', + type: 'select', + source: compArray + }], ['speaking', { + label: 'Speaking', + type: 'select', + source: compArray + }], ['writing', { + label: 'Writing', + type: 'select', + source: compArray + }], ['understanding', { + label: 'Listening', + type: 'select', + source: compArray + }]]; + } + }, { + key: "getFilters", + value: function getFilters() { + return [['employee', { + label: 'Employee', + type: 'select2', + sort: 'none', + 'allow-null': false, + 'remote-source': ['Employee', 'id', 'first_name+last_name', 'getActiveSubordinateEmployees'] + }], ['language_id', { + label: 'Language', + type: 'select2', + 'allow-null': true, + 'null-label': 'All Languages', + 'remote-source': ['Language', 'id', 'name'] + }]]; + } + }, { + key: "isSubProfileTable", + value: function isSubProfileTable() { + return this.user.user_level !== 'Admin' && this.user.user_level !== 'Restricted Admin'; + } + }]); + + return EmployeeLanguageAdapter; +}(SubProfileEnabledAdapterBase); +/** + * EmployeeDependentAdapter + */ + + +var EmployeeDependentAdapter = /*#__PURE__*/function (_SubProfileEnabledAda5) { + _inherits(EmployeeDependentAdapter, _SubProfileEnabledAda5); + + var _super9 = _createSuper(EmployeeDependentAdapter); + + function EmployeeDependentAdapter() { + _classCallCheck(this, EmployeeDependentAdapter); + + return _super9.apply(this, arguments); + } + + _createClass(EmployeeDependentAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'employee', 'name', 'relationship', 'dob', 'id_number']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Employee' + }, { + sTitle: 'Name' + }, { + sTitle: 'Relationship' + }, { + sTitle: 'Date of Birth' + }, { + sTitle: 'Id Number' + }]; + } + }, { + key: "getTableColumns", + value: function getTableColumns() { + return [{ + title: 'Employee', + dataIndex: 'employee', + sorter: true + }, { + title: 'Name', + dataIndex: 'name', + sorter: true + }, { + title: 'Relationship', + dataIndex: 'relationship', + sorter: true + }, { + title: 'Date of Birth', + dataIndex: 'dob', + sorter: true + }, { + title: 'Id Number', + dataIndex: 'id_number' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['employee', { + label: 'Employee', + type: 'select2', + sort: 'none', + 'allow-null': false, + 'remote-source': ['Employee', 'id', 'first_name+last_name', 'getActiveSubordinateEmployees'] + }], ['name', { + label: 'Name', + type: 'text', + validation: '' + }], ['relationship', { + label: 'Relationship', + type: 'select', + source: [['Child', 'Child'], ['Spouse', 'Spouse'], ['Parent', 'Parent'], ['Other', 'Other']] + }], ['dob', { + label: 'Date of Birth', + type: 'date', + validation: '' + }], ['id_number', { + label: 'Id Number', + type: 'text', + validation: 'none' + }]]; + } + }, { + key: "getFilters", + value: function getFilters() { + return [['employee', { + label: 'Employee', + type: 'select2', + sort: 'none', + 'allow-null': false, + 'remote-source': ['Employee', 'id', 'first_name+last_name', 'getActiveSubordinateEmployees'] + }]]; + } + }, { + key: "isSubProfileTable", + value: function isSubProfileTable() { + return this.user.user_level !== 'Admin' && this.user.user_level !== 'Restricted Admin'; + } + }]); + + return EmployeeDependentAdapter; +}(SubProfileEnabledAdapterBase); +/* + * EmergencyContactAdapter + */ + + +var EmergencyContactAdapter = /*#__PURE__*/function (_SubProfileEnabledAda6) { + _inherits(EmergencyContactAdapter, _SubProfileEnabledAda6); + + var _super10 = _createSuper(EmergencyContactAdapter); + + function EmergencyContactAdapter() { + _classCallCheck(this, EmergencyContactAdapter); + + return _super10.apply(this, arguments); + } + + _createClass(EmergencyContactAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'employee', 'name', 'relationship', 'home_phone', 'work_phone', 'mobile_phone']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Employee' + }, { + sTitle: 'Name' + }, { + sTitle: 'Relationship' + }, { + sTitle: 'Home Phone' + }, { + sTitle: 'Work Phone' + }, { + sTitle: 'Mobile Phone' + }]; + } + }, { + key: "getTableColumns", + value: function getTableColumns() { + return [{ + title: 'Employee', + dataIndex: 'employee', + sorter: true + }, { + title: 'Name', + dataIndex: 'name', + sorter: true + }, { + title: 'Relationship', + dataIndex: 'relationship', + sorter: true + }, { + title: 'Home Phone', + dataIndex: 'home_phone' + }, { + title: 'Work Phone', + dataIndex: 'work_phone' + }, { + title: 'Mobile Phone', + dataIndex: 'mobile_phone' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['employee', { + label: 'Employee', + type: 'select2', + sort: 'none', + 'allow-null': false, + 'remote-source': ['Employee', 'id', 'first_name+last_name', 'getActiveSubordinateEmployees'] + }], ['name', { + label: 'Name', + type: 'text', + validation: '' + }], ['relationship', { + label: 'Relationship', + type: 'text', + validation: 'none' + }], ['home_phone', { + label: 'Home Phone', + type: 'text', + validation: 'none' + }], ['work_phone', { + label: 'Work Phone', + type: 'text', + validation: 'none' + }], ['mobile_phone', { + label: 'Mobile Phone', + type: 'text', + validation: 'none' + }]]; + } + }, { + key: "getFilters", + value: function getFilters() { + return [['employee', { + label: 'Employee', + type: 'select2', + sort: 'none', + 'allow-null': false, + 'remote-source': ['Employee', 'id', 'first_name+last_name', 'getActiveSubordinateEmployees'] + }]]; + } + }, { + key: "isSubProfileTable", + value: function isSubProfileTable() { + return this.user.user_level !== 'Admin' && this.user.user_level !== 'Restricted Admin'; + } + }]); + + return EmergencyContactAdapter; +}(SubProfileEnabledAdapterBase); +/* + * EmployeeImmigrationAdapter + */ + + +var EmployeeImmigrationAdapter = /*#__PURE__*/function (_SubProfileEnabledAda7) { + _inherits(EmployeeImmigrationAdapter, _SubProfileEnabledAda7); + + var _super11 = _createSuper(EmployeeImmigrationAdapter); + + function EmployeeImmigrationAdapter() { + _classCallCheck(this, EmployeeImmigrationAdapter); + + return _super11.apply(this, arguments); + } + + _createClass(EmployeeImmigrationAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'employee', 'document', 'doc_number', 'issued', 'expiry', 'status', 'details']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Employee' + }, { + sTitle: 'Document', + sClass: 'columnMain' + }, { + sTitle: 'Number' + }, { + sTitle: 'Issued Date' + }, { + sTitle: 'Expiry Date' + }, { + sTitle: 'Status' + }, { + sTitle: 'Details' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['employee', { + label: 'Employee', + type: 'select2', + sort: 'none', + 'allow-null': false, + 'remote-source': ['Employee', 'id', 'first_name+last_name', 'getActiveSubordinateEmployees'] + }], ['document', { + label: 'Document', + type: 'select2', + source: [['Passport', 'Passport'], ['Visa', 'Visa']] + }], ['doc_number', { + label: 'Number', + type: 'text', + validation: '' + }], ['issued', { + label: 'Issued Date', + type: 'date', + validation: '' + }], ['expiry', { + label: 'Expiry Date', + type: 'date', + validation: '' + }], ['status', { + label: 'Status', + type: 'text', + validation: 'none' + }], ['details', { + label: 'Details', + type: 'textarea', + validation: 'none' + }]]; + } + }, { + key: "getFilters", + value: function getFilters() { + return [['employee', { + label: 'Employee', + type: 'select2', + 'remote-source': ['Employee', 'id', 'first_name+last_name'] + }]]; + } + }, { + key: "isSubProfileTable", + value: function isSubProfileTable() { + return this.user.user_level !== 'Admin' && this.user.user_level !== 'Restricted Admin'; + } + }]); + + return EmployeeImmigrationAdapter; +}(SubProfileEnabledAdapterBase); + +module.exports = { + EmployeeAdapter: EmployeeAdapter, + TerminatedEmployeeAdapter: TerminatedEmployeeAdapter, + ArchivedEmployeeAdapter: ArchivedEmployeeAdapter, + EmployeeSkillAdapter: EmployeeSkillAdapter, + EmployeeEducationAdapter: EmployeeEducationAdapter, + EmployeeCertificationAdapter: EmployeeCertificationAdapter, + EmployeeLanguageAdapter: EmployeeLanguageAdapter, + EmployeeDependentAdapter: EmployeeDependentAdapter, + EmergencyContactAdapter: EmergencyContactAdapter, + EmployeeImmigrationAdapter: EmployeeImmigrationAdapter +}; + +},{"../../../api/AdapterBase":57,"../../../api/ReactLegacyModalAdapterBase":69,"../../../api/ReactModalAdapterBase":70,"../../../api/SubAdapterBase":71,"./components/EmployeeProfile":23,"@ant-design/icons":"@ant-design/icons","antd":"antd","react":"react"}],26:[function(require,module,exports){ +"use strict"; + +var _lib = require("./lib"); + +window.FieldNameAdapter = _lib.FieldNameAdapter; + +},{"./lib":27}],27:[function(require,module,exports){ +"use strict"; + +var _AdapterBase2 = _interopRequireDefault(require("../../../api/AdapterBase")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +/** + * FieldNameAdapter + */ +var FieldNameAdapter = /*#__PURE__*/function (_AdapterBase) { + _inherits(FieldNameAdapter, _AdapterBase); + + var _super = _createSuper(FieldNameAdapter); + + function FieldNameAdapter() { + _classCallCheck(this, FieldNameAdapter); + + return _super.apply(this, arguments); + } + + _createClass(FieldNameAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'name', 'textOrig', 'textMapped', 'display']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Name' + }, { + sTitle: 'Original Text' + }, { + sTitle: 'Mapped Text' + }, { + sTitle: 'Display Status' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['type', { + label: 'Type', + type: 'placeholder', + validation: '' + }], ['name', { + label: 'Name', + type: 'placeholder', + validation: '' + }], ['textOrig', { + label: 'Original Text', + type: 'placeholder', + validation: '' + }], ['textMapped', { + label: 'Mapped Text', + type: 'text', + validation: '' + }], ['display', { + label: 'Display Status', + type: 'select', + source: [['Form', 'Show'], ['Hidden', 'Hidden']] + }]]; + } + }]); + + return FieldNameAdapter; +}(_AdapterBase2["default"]); + +module.exports = { + FieldNameAdapter: FieldNameAdapter +}; + +},{"../../../api/AdapterBase":57}],28:[function(require,module,exports){ +"use strict"; + +var _lib = require("./lib"); + +var _IceDataPipe = _interopRequireDefault(require("../../../api/IceDataPipe")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function init(data) { + var modJsList = []; + modJsList.tabJobTitle = new _lib.JobTitleAdapter('JobTitle', 'JobTitle', '', ''); + modJsList.tabJobTitle.setObjectTypeName('Job Titles'); + modJsList.tabJobTitle.setDataPipe(new _IceDataPipe["default"](modJsList.tabJobTitle)); + modJsList.tabJobTitle.setAccess(data.permissions.JobTitle); + modJsList.tabPayGrade = new _lib.PayGradeAdapter('PayGrade', 'PayGrade', '', ''); + modJsList.tabPayGrade.setObjectTypeName('Pay Grades'); + modJsList.tabPayGrade.setDataPipe(new _IceDataPipe["default"](modJsList.tabPayGrade)); + modJsList.tabPayGrade.setAccess(data.permissions.PayGrade); + modJsList.tabEmploymentStatus = new _lib.EmploymentStatusAdapter('EmploymentStatus', 'EmploymentStatus', '', ''); + modJsList.tabEmploymentStatus.setObjectTypeName('Employment Status'); + modJsList.tabEmploymentStatus.setDataPipe(new _IceDataPipe["default"](modJsList.tabEmploymentStatus)); + modJsList.tabEmploymentStatus.setAccess(data.permissions.EmploymentStatus); + window.modJs = modJsList.tabJobTitle; + window.modJsList = modJsList; +} + +window.initAdminJobs = init; + +},{"../../../api/IceDataPipe":63,"./lib":29}],29:[function(require,module,exports){ +"use strict"; + +var _ReactModalAdapterBase = _interopRequireDefault(require("../../../api/ReactModalAdapterBase")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +/** + * JobTitleAdapter + */ +var JobTitleAdapter = /*#__PURE__*/function (_ReactModalAdapterBas) { + _inherits(JobTitleAdapter, _ReactModalAdapterBas); + + var _super = _createSuper(JobTitleAdapter); + + function JobTitleAdapter() { + _classCallCheck(this, JobTitleAdapter); + + return _super.apply(this, arguments); + } + + _createClass(JobTitleAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'code', 'name']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Code' + }, { + sTitle: 'Name' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['code', { + label: 'Job Title Code', + type: 'text' + }], ['name', { + label: 'Job Title', + type: 'text' + }], ['description', { + label: 'Description', + type: 'textarea' + }], ['specification', { + label: 'Specification', + type: 'textarea' + }]]; + } + }, { + key: "getTableColumns", + value: function getTableColumns() { + return [{ + title: 'Job Title Code', + dataIndex: 'code', + sorter: true + }, { + title: 'Job Title', + dataIndex: 'name', + sorter: true + }]; + } + }]); + + return JobTitleAdapter; +}(_ReactModalAdapterBase["default"]); +/** + * PayGradeAdapter + */ + + +var PayGradeAdapter = /*#__PURE__*/function (_ReactModalAdapterBas2) { + _inherits(PayGradeAdapter, _ReactModalAdapterBas2); + + var _super2 = _createSuper(PayGradeAdapter); + + function PayGradeAdapter() { + _classCallCheck(this, PayGradeAdapter); + + return _super2.apply(this, arguments); + } + + _createClass(PayGradeAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'name', 'currency', 'min_salary', 'max_salary']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Name' + }, { + sTitle: 'Currency' + }, { + sTitle: 'Min Salary' + }, { + sTitle: 'Max Salary' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['name', { + label: 'Pay Grade Name', + type: 'text' + }], ['currency', { + label: 'Currency', + type: 'select2', + 'remote-source': ['CurrencyType', 'code', 'name'] + }], ['min_salary', { + label: 'Min Salary', + type: 'text', + validation: 'float' + }], ['max_salary', { + label: 'Max Salary', + type: 'text', + validation: 'float' + }]]; + } + }, { + key: "getTableColumns", + value: function getTableColumns() { + return [{ + title: 'Name', + dataIndex: 'name', + sorter: true + }, { + title: 'Currency', + dataIndex: 'currency' + }, { + title: 'Min Salary', + dataIndex: 'min_salary' + }, { + title: 'Max Salary', + dataIndex: 'max_salary' + }]; + } + }, { + key: "doCustomValidation", + value: function doCustomValidation(params) { + try { + if (parseFloat(params.min_salary) > parseFloat(params.max_salary)) { + return 'Min Salary should be smaller than Max Salary'; + } + } catch (e) {// D/N + } + + return null; + } + }]); + + return PayGradeAdapter; +}(_ReactModalAdapterBase["default"]); +/** + * EmploymentStatusAdapter + */ + + +var EmploymentStatusAdapter = /*#__PURE__*/function (_ReactModalAdapterBas3) { + _inherits(EmploymentStatusAdapter, _ReactModalAdapterBas3); + + var _super3 = _createSuper(EmploymentStatusAdapter); + + function EmploymentStatusAdapter() { + _classCallCheck(this, EmploymentStatusAdapter); + + return _super3.apply(this, arguments); + } + + _createClass(EmploymentStatusAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'name', 'description']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID' + }, { + sTitle: 'Name' + }, { + sTitle: 'Description' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['name', { + label: 'Employment Status', + type: 'text' + }], ['description', { + label: 'Description', + type: 'textarea', + validation: '' + }]]; + } + }, { + key: "getTableColumns", + value: function getTableColumns() { + return [{ + title: 'Employment Status', + dataIndex: 'name', + sorter: true + }, { + title: 'Description', + dataIndex: 'description' + }]; + } + }]); + + return EmploymentStatusAdapter; +}(_ReactModalAdapterBase["default"]); + +module.exports = { + JobTitleAdapter: JobTitleAdapter, + PayGradeAdapter: PayGradeAdapter, + EmploymentStatusAdapter: EmploymentStatusAdapter +}; + +},{"../../../api/ReactModalAdapterBase":70}],30:[function(require,module,exports){ +"use strict"; + +var _lib = require("./lib"); + +window.CompanyLoanAdapter = _lib.CompanyLoanAdapter; +window.EmployeeCompanyLoanAdapter = _lib.EmployeeCompanyLoanAdapter; + +},{"./lib":31}],31:[function(require,module,exports){ +"use strict"; + +var _AdapterBase3 = _interopRequireDefault(require("../../../api/AdapterBase")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +/** + * CompanyLoanAdapter + */ +var CompanyLoanAdapter = /*#__PURE__*/function (_AdapterBase) { + _inherits(CompanyLoanAdapter, _AdapterBase); + + var _super = _createSuper(CompanyLoanAdapter); + + function CompanyLoanAdapter() { + _classCallCheck(this, CompanyLoanAdapter); + + return _super.apply(this, arguments); + } + + _createClass(CompanyLoanAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'name', 'details']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Name' + }, { + sTitle: 'Details' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['name', { + label: 'Name', + type: 'text', + validation: '' + }], ['details', { + label: 'Details', + type: 'textarea', + validation: 'none' + }]]; + } + }]); + + return CompanyLoanAdapter; +}(_AdapterBase3["default"]); +/* + * EmployeeCompanyLoanAdapter + */ + + +var EmployeeCompanyLoanAdapter = /*#__PURE__*/function (_AdapterBase2) { + _inherits(EmployeeCompanyLoanAdapter, _AdapterBase2); + + var _super2 = _createSuper(EmployeeCompanyLoanAdapter); + + function EmployeeCompanyLoanAdapter() { + _classCallCheck(this, EmployeeCompanyLoanAdapter); + + return _super2.apply(this, arguments); + } + + _createClass(EmployeeCompanyLoanAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'employee', 'loan', 'start_date', 'period_months', 'currency', 'amount', 'status']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Employee' + }, { + sTitle: 'Loan Type' + }, { + sTitle: 'Loan Start Date' + }, { + sTitle: 'Loan Period (Months)' + }, { + sTitle: 'Currency' + }, { + sTitle: 'Amount' + }, { + sTitle: 'Status' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['employee', { + label: 'Employee', + type: 'select2', + 'remote-source': ['Employee', 'id', 'first_name+last_name'] + }], ['loan', { + label: 'Loan Type', + type: 'select', + 'remote-source': ['CompanyLoan', 'id', 'name'] + }], ['start_date', { + label: 'Loan Start Date', + type: 'date', + validation: '' + }], ['last_installment_date', { + label: 'Last Installment Date', + type: 'date', + validation: 'none' + }], ['period_months', { + label: 'Loan Period (Months)', + type: 'text', + validation: 'number' + }], ['currency', { + label: 'Currency', + type: 'select2', + 'remote-source': ['CurrencyType', 'id', 'name'] + }], ['amount', { + label: 'Loan Amount', + type: 'text', + validation: 'float' + }], ['monthly_installment', { + label: 'Monthly Installment', + type: 'text', + validation: 'float' + }], ['status', { + label: 'Status', + type: 'select', + source: [['Approved', 'Approved'], ['Paid', 'Paid'], ['Suspended', 'Suspended']] + }], ['details', { + label: 'Details', + type: 'textarea', + validation: 'none' + }]]; + } + }, { + key: "getFilters", + value: function getFilters() { + return [['employee', { + label: 'Employee', + type: 'select2', + 'allow-null': true, + 'null-label': 'All Employees', + 'remote-source': ['Employee', 'id', 'first_name+last_name'] + }], ['loan', { + label: 'Loan Type', + type: 'select', + 'allow-null': true, + 'null-label': 'All Loan Types', + 'remote-source': ['CompanyLoan', 'id', 'name'] + }]]; + } + }]); + + return EmployeeCompanyLoanAdapter; +}(_AdapterBase3["default"]); + +module.exports = { + CompanyLoanAdapter: CompanyLoanAdapter, + EmployeeCompanyLoanAdapter: EmployeeCompanyLoanAdapter +}; + +},{"../../../api/AdapterBase":57}],32:[function(require,module,exports){ +"use strict"; + +var _lib = require("./lib"); + +window.CountryAdapter = _lib.CountryAdapter; +window.ProvinceAdapter = _lib.ProvinceAdapter; +window.CurrencyTypeAdapter = _lib.CurrencyTypeAdapter; +window.NationalityAdapter = _lib.NationalityAdapter; +window.ImmigrationStatusAdapter = _lib.ImmigrationStatusAdapter; +window.EthnicityAdapter = _lib.EthnicityAdapter; + +},{"./lib":33}],33:[function(require,module,exports){ +"use strict"; + +var _AdapterBase4 = _interopRequireDefault(require("../../../api/AdapterBase")); + +var _IdNameAdapter4 = _interopRequireDefault(require("../../../api/IdNameAdapter")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +/** + * CountryAdapter + */ +var CountryAdapter = /*#__PURE__*/function (_AdapterBase) { + _inherits(CountryAdapter, _AdapterBase); + + var _super = _createSuper(CountryAdapter); + + function CountryAdapter() { + _classCallCheck(this, CountryAdapter); + + return _super.apply(this, arguments); + } + + _createClass(CountryAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'code', 'name']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Code' + }, { + sTitle: 'Name' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['code', { + label: 'Code', + type: 'text', + validation: '' + }], ['name', { + label: 'Name', + type: 'text', + validation: '' + }]]; + } + }]); + + return CountryAdapter; +}(_AdapterBase4["default"]); +/** + * ProvinceAdapter + */ + + +var ProvinceAdapter = /*#__PURE__*/function (_AdapterBase2) { + _inherits(ProvinceAdapter, _AdapterBase2); + + var _super2 = _createSuper(ProvinceAdapter); + + function ProvinceAdapter() { + _classCallCheck(this, ProvinceAdapter); + + return _super2.apply(this, arguments); + } + + _createClass(ProvinceAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'code', 'name', 'country']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Code' + }, { + sTitle: 'Name' + }, { + sTitle: 'Country' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['code', { + label: 'Code', + type: 'text', + validation: '' + }], ['name', { + label: 'Name', + type: 'text', + validation: '' + }], ['country', { + label: 'Country', + type: 'select2', + 'remote-source': ['Country', 'code', 'name'] + }]]; + } + }, { + key: "getFilters", + value: function getFilters() { + return [['country', { + label: 'Country', + type: 'select2', + 'remote-source': ['Country', 'code', 'name'] + }]]; + } + }]); + + return ProvinceAdapter; +}(_AdapterBase4["default"]); +/** + * CurrencyTypeAdapter + */ + + +var CurrencyTypeAdapter = /*#__PURE__*/function (_AdapterBase3) { + _inherits(CurrencyTypeAdapter, _AdapterBase3); + + var _super3 = _createSuper(CurrencyTypeAdapter); + + function CurrencyTypeAdapter() { + _classCallCheck(this, CurrencyTypeAdapter); + + return _super3.apply(this, arguments); + } + + _createClass(CurrencyTypeAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'code', 'name']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Code' + }, { + sTitle: 'Name' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['code', { + label: 'Code', + type: 'text', + validation: '' + }], ['name', { + label: 'Name', + type: 'text', + validation: '' + }]]; + } + }]); + + return CurrencyTypeAdapter; +}(_AdapterBase4["default"]); +/** + * NationalityAdapter + */ + + +var NationalityAdapter = /*#__PURE__*/function (_IdNameAdapter) { + _inherits(NationalityAdapter, _IdNameAdapter); + + var _super4 = _createSuper(NationalityAdapter); + + function NationalityAdapter() { + _classCallCheck(this, NationalityAdapter); + + return _super4.apply(this, arguments); + } + + return NationalityAdapter; +}(_IdNameAdapter4["default"]); +/** + * ImmigrationStatusAdapter + */ + + +var ImmigrationStatusAdapter = /*#__PURE__*/function (_IdNameAdapter2) { + _inherits(ImmigrationStatusAdapter, _IdNameAdapter2); + + var _super5 = _createSuper(ImmigrationStatusAdapter); + + function ImmigrationStatusAdapter() { + _classCallCheck(this, ImmigrationStatusAdapter); + + return _super5.apply(this, arguments); + } + + return ImmigrationStatusAdapter; +}(_IdNameAdapter4["default"]); +/** + * EthnicityAdapter + */ + + +var EthnicityAdapter = /*#__PURE__*/function (_IdNameAdapter3) { + _inherits(EthnicityAdapter, _IdNameAdapter3); + + var _super6 = _createSuper(EthnicityAdapter); + + function EthnicityAdapter() { + _classCallCheck(this, EthnicityAdapter); + + return _super6.apply(this, arguments); + } + + return EthnicityAdapter; +}(_IdNameAdapter4["default"]); + +module.exports = { + CountryAdapter: CountryAdapter, + ProvinceAdapter: ProvinceAdapter, + CurrencyTypeAdapter: CurrencyTypeAdapter, + NationalityAdapter: NationalityAdapter, + ImmigrationStatusAdapter: ImmigrationStatusAdapter, + EthnicityAdapter: EthnicityAdapter +}; + +},{"../../../api/AdapterBase":57,"../../../api/IdNameAdapter":64}],34:[function(require,module,exports){ +"use strict"; + +var _lib = require("./lib"); + +window.ModuleAdapter = _lib.ModuleAdapter; +window.UsageAdapter = _lib.UsageAdapter; + +},{"./lib":35}],35:[function(require,module,exports){ +"use strict"; + +var _AdapterBase3 = _interopRequireDefault(require("../../../api/AdapterBase")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +/** + * ModuleAdapter + */ +var ModuleAdapter = /*#__PURE__*/function (_AdapterBase) { + _inherits(ModuleAdapter, _AdapterBase); + + var _super = _createSuper(ModuleAdapter); + + function ModuleAdapter() { + _classCallCheck(this, ModuleAdapter); + + return _super.apply(this, arguments); + } + + _createClass(ModuleAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'label', 'menu', 'mod_group', 'mod_order', 'status', 'version', 'update_path']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Name' + }, { + sTitle: 'Menu', + bVisible: false + }, { + sTitle: 'Group' + }, { + sTitle: 'Order' + }, { + sTitle: 'Status' + }, { + sTitle: 'Version', + bVisible: false + }, { + sTitle: 'Path', + bVisible: false + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['label', { + label: 'Label', + type: 'text', + validation: '' + }], ['status', { + label: 'Status', + type: 'select', + source: [['Enabled', 'Enabled'], ['Disabled', 'Disabled']] + }], ['user_levels', { + label: 'User Levels', + type: 'select2multi', + source: [['Admin', 'Admin'], ['Manager', 'Manager'], ['Employee', 'Employee']] + }], ['user_roles', { + label: 'Allowed User Roles', + type: 'select2multi', + 'remote-source': ['UserRole', 'id', 'name'] + }], ['user_roles_blacklist', { + label: 'Disallowed User Roles', + type: 'select2multi', + 'remote-source': ['UserRole', 'id', 'name'] + }]]; + } + }, { + key: "getActionButtonsHtml", + value: function getActionButtonsHtml(id, data) { + /* + const nonEditableFields = {}; + nonEditableFields['admin_Company Structure'] = 1; + nonEditableFields.admin_Employees = 1; + nonEditableFields['admin_Job Details Setup'] = 1; + nonEditableFields.admin_Leaves = 1; + nonEditableFields['admin_Manage Modules'] = 1; + nonEditableFields.admin_Projects = 1; + nonEditableFields.admin_Qualifications = 1; + nonEditableFields.admin_Settings = 1; + nonEditableFields.admin_Users = 1; + nonEditableFields.admin_Upgrade = 1; + nonEditableFields.admin_Dashboard = 1; + nonEditableFields['user_Basic Information'] = 1; + nonEditableFields.user_Dashboard = 1; + if (nonEditableFields[`${data[3]}_${data[1]}`] === 1) { + return ''; + } + */ + var html = '
    '; + html = html.replace(/_id_/g, id); + html = html.replace(/_BASE_/g, this.baseUrl); + return html; + } + }]); + + return ModuleAdapter; +}(_AdapterBase3["default"]); +/** + * UsageAdapter + */ + + +var UsageAdapter = /*#__PURE__*/function (_AdapterBase2) { + _inherits(UsageAdapter, _AdapterBase2); + + var _super2 = _createSuper(UsageAdapter); + + function UsageAdapter() { + _classCallCheck(this, UsageAdapter); + + return _super2.apply(this, arguments); + } + + _createClass(UsageAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return []; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return []; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return []; + } + }, { + key: "get", + value: function get(callBackData) {} + }, { + key: "saveUsage", + value: function saveUsage() { + var object = {}; + var arr = []; + $('.module-check').each(function () { + if ($(this).is(':checked')) { + arr.push($(this).val()); + } + }); + + if (arr.length === 0) { + alert('Please select one or more module groups'); + return; + } + + object.groups = arr.join(','); + var reqJson = JSON.stringify(object); + var callBackData = []; + callBackData.callBackData = []; + callBackData.callBackSuccess = 'getInitDataSuccessCallBack'; + callBackData.callBackFail = 'getInitDataFailCallBack'; + this.customAction('saveUsage', 'admin=modules', reqJson, callBackData); + } + }, { + key: "saveUsageSuccessCallBack", + value: function saveUsageSuccessCallBack(data) {} + }, { + key: "saveUsageFailCallBack", + value: function saveUsageFailCallBack(callBackData) {} + }]); + + return UsageAdapter; +}(_AdapterBase3["default"]); + +module.exports = { + ModuleAdapter: ModuleAdapter, + UsageAdapter: UsageAdapter +}; + +},{"../../../api/AdapterBase":57}],36:[function(require,module,exports){ +"use strict"; + +var _lib = require("./lib"); + +window.OvertimeCategoryAdapter = _lib.OvertimeCategoryAdapter; +window.EmployeeOvertimeAdminAdapter = _lib.EmployeeOvertimeAdminAdapter; + +},{"./lib":37}],37:[function(require,module,exports){ +"use strict"; + +var _AdapterBase2 = _interopRequireDefault(require("../../../api/AdapterBase")); + +var _ApproveAdminAdapter2 = _interopRequireDefault(require("../../../api/ApproveAdminAdapter")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +/** + * OvertimeCategoryAdapter + */ +var OvertimeCategoryAdapter = /*#__PURE__*/function (_AdapterBase) { + _inherits(OvertimeCategoryAdapter, _AdapterBase); + + var _super = _createSuper(OvertimeCategoryAdapter); + + function OvertimeCategoryAdapter() { + _classCallCheck(this, OvertimeCategoryAdapter); + + return _super.apply(this, arguments); + } + + _createClass(OvertimeCategoryAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'name']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Name' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['name', { + label: 'Name', + type: 'text', + validation: '' + }]]; + } + }]); + + return OvertimeCategoryAdapter; +}(_AdapterBase2["default"]); +/** + * EmployeeOvertimeAdminAdapter + */ + + +var EmployeeOvertimeAdminAdapter = /*#__PURE__*/function (_ApproveAdminAdapter) { + _inherits(EmployeeOvertimeAdminAdapter, _ApproveAdminAdapter); + + var _super2 = _createSuper(EmployeeOvertimeAdminAdapter); + + function EmployeeOvertimeAdminAdapter(endPoint, tab, filter, orderBy) { + var _this; + + _classCallCheck(this, EmployeeOvertimeAdminAdapter); + + _this = _super2.call(this, endPoint, tab, filter, orderBy); + _this.itemName = 'OvertimeRequest'; + _this.itemNameLower = 'overtimerequest'; + _this.modulePathName = 'overtime'; + return _this; + } + + _createClass(EmployeeOvertimeAdminAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'employee', 'category', 'start_time', 'end_time', 'project', 'status']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Employee' + }, { + sTitle: 'Category' + }, { + sTitle: 'Start Time' + }, { + sTitle: 'End Time' + }, { + sTitle: 'Project' + }, { + sTitle: 'Status' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['employee', { + label: 'Employee', + type: 'select2', + sort: 'none', + 'allow-null': false, + 'remote-source': ['Employee', 'id', 'first_name+last_name', 'getActiveSubordinateEmployees'] + }], ['category', { + label: 'Category', + type: 'select2', + 'allow-null': false, + 'remote-source': ['OvertimeCategory', 'id', 'name'] + }], ['start_time', { + label: 'Start Time', + type: 'datetime', + validation: '' + }], ['end_time', { + label: 'End Time', + type: 'datetime', + validation: '' + }], ['project', { + label: 'Project', + type: 'select2', + 'allow-null': true, + 'null=label': 'none', + 'remote-source': ['Project', 'id', 'name'] + }], ['notes', { + label: 'Notes', + type: 'textarea', + validation: 'none' + }]]; + } + }]); + + return EmployeeOvertimeAdminAdapter; +}(_ApproveAdminAdapter2["default"]); + +module.exports = { + OvertimeCategoryAdapter: OvertimeCategoryAdapter, + EmployeeOvertimeAdminAdapter: EmployeeOvertimeAdminAdapter +}; + +},{"../../../api/AdapterBase":57,"../../../api/ApproveAdminAdapter":58}],38:[function(require,module,exports){ +"use strict"; + +var _lib = require("./lib"); + +window.PaydayAdapter = _lib.PaydayAdapter; +window.PayrollAdapter = _lib.PayrollAdapter; +window.PayrollDataAdapter = _lib.PayrollDataAdapter; +window.PayrollColumnAdapter = _lib.PayrollColumnAdapter; +window.PayrollColumnTemplateAdapter = _lib.PayrollColumnTemplateAdapter; +window.PayrollEmployeeAdapter = _lib.PayrollEmployeeAdapter; +window.DeductionAdapter = _lib.DeductionAdapter; +window.DeductionGroupAdapter = _lib.DeductionGroupAdapter; +window.PayslipTemplateAdapter = _lib.PayslipTemplateAdapter; + +},{"./lib":39}],39:[function(require,module,exports){ +"use strict"; + +var _AdapterBase9 = _interopRequireDefault(require("../../../api/AdapterBase")); + +var _TableEditAdapter2 = _interopRequireDefault(require("../../../api/TableEditAdapter")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +require('codemirror/mode/javascript/javascript'); + +require('codemirror/addon/edit/closebrackets'); + +require('codemirror/addon/display/autorefresh'); + +var CodeMirror = require('codemirror'); +/** + * PaydayAdapter + */ + + +var PaydayAdapter = /*#__PURE__*/function (_AdapterBase) { + _inherits(PaydayAdapter, _AdapterBase); + + var _super = _createSuper(PaydayAdapter); + + function PaydayAdapter() { + _classCallCheck(this, PaydayAdapter); + + return _super.apply(this, arguments); + } + + _createClass(PaydayAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'name']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Select Pay Frequency' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['name', { + label: 'Name', + type: 'text', + validation: '' + }]]; + } + }, { + key: "getAddNewLabel", + value: function getAddNewLabel() { + return 'Run Payroll'; + } + }, { + key: "createTable", + value: function createTable(elementId) { + $('#payday_all').off(); + + _get(_getPrototypeOf(PaydayAdapter.prototype), "createTable", this).call(this, elementId); + + $('#payday_all').off().on('click', function () { + if ($(this).is(':checked')) { + $('.paydayCheck').prop('checked', true); + } else { + $('.paydayCheck').prop('checked', false); + } + }); + } + }, { + key: "getActionButtonsHtml", + value: function getActionButtonsHtml(id, data) { + var editButton = ''; + var html = '
    _edit_
    '; + html = html.replace('_edit_', editButton); + html = html.replace(/_id_/g, id); + html = html.replace(/_BASE_/g, this.baseUrl); + return html; + } + }, { + key: "getActionButtonHeader", + value: function getActionButtonHeader() { + return { + sTitle: '', + sClass: 'center' + }; + } + }]); + + return PaydayAdapter; +}(_AdapterBase9["default"]); +/** + * PayrollAdapter + */ + + +var PayrollAdapter = /*#__PURE__*/function (_AdapterBase2) { + _inherits(PayrollAdapter, _AdapterBase2); + + var _super2 = _createSuper(PayrollAdapter); + + function PayrollAdapter() { + _classCallCheck(this, PayrollAdapter); + + return _super2.apply(this, arguments); + } + + _createClass(PayrollAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'name', 'pay_period', 'department', 'date_start', 'date_end', 'status']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Name' + }, { + sTitle: 'Pay Frequency' + }, { + sTitle: 'Department' + }, { + sTitle: 'Date Start' + }, { + sTitle: 'Date End' + }, { + sTitle: 'Status' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['name', { + label: 'Name', + type: 'text' + }], ['pay_period', { + label: 'Pay Frequency', + type: 'select', + 'remote-source': ['PayFrequency', 'id', 'name'], + sort: 'none' + }], ['deduction_group', { + label: 'Payroll Group', + type: 'select', + 'remote-source': ['DeductionGroup', 'id', 'name'], + sort: 'none' + }], ['payslipTemplate', { + label: 'Payslip Template', + type: 'select', + 'remote-source': ['PayslipTemplate', 'id', 'name'] + }], ['department', { + label: 'Department', + type: 'select2', + 'remote-source': ['CompanyStructure', 'id', 'title'], + sort: 'none' + }], ['date_start', { + label: 'Start Date', + type: 'date', + validation: '' + }], ['date_end', { + label: 'End Date', + type: 'date', + validation: '' + }], // [ "column_template", {"label":"Report Column Template","type":"select","remote-source":["PayrollColumnTemplate","id","name"]}], + ['columns', { + label: 'Payroll Columns', + type: 'select2multi', + 'remote-source': ['PayrollColumn', 'id', 'name'] + }], ['status', { + label: 'Status', + type: 'select', + source: [['Draft', 'Draft'], ['Completed', 'Completed']], + sort: 'none' + }]]; + } + }, { + key: "postRenderForm", + value: function postRenderForm(object, $tempDomObj) { + if (object != null && object !== undefined && object.id !== undefined && object.id != null) { + $tempDomObj.find('#pay_period').attr('disabled', 'disabled'); + $tempDomObj.find('#department').attr('disabled', 'disabled'); // $tempDomObj.find("#date_start").attr('disabled','disabled'); + // $tempDomObj.find("#date_end").attr('disabled','disabled'); + // $tempDomObj.find("#column_template").attr('disabled','disabled'); + } + } + }, { + key: "process", + value: function process(id, status) { + // eslint-disable-next-line no-global-assign + modJs = modJsList.tabPayrollData; + modJs.setCurrentPayroll(id); + $('#Payroll').hide(); + $('#PayrollData').show(); + $('#PayrollDataButtons').show(); + + if (status === 'Completed') { + $('.completeBtnTable').hide(); + $('.saveBtnTable').hide(); + } else { + $('.completeBtnTable').show(); + $('.saveBtnTable').show(); + } + + modJs.get([]); + } + }, { + key: "getActionButtonsHtml", + value: function getActionButtonsHtml(id, data) { + var editButton = ''; + var processButton = ''; + var deleteButton = ''; + var cloneButton = ''; + var html = '
    _edit__process__clone__delete_
    '; + + if (this.showAddNew) { + html = html.replace('_clone_', cloneButton); + } else { + html = html.replace('_clone_', ''); + } + + if (this.showDelete) { + html = html.replace('_delete_', deleteButton); + } else { + html = html.replace('_delete_', ''); + } + + if (this.showEdit) { + html = html.replace('_edit_', editButton); + } else { + html = html.replace('_edit_', ''); + } + + html = html.replace('_process_', processButton); + html = html.replace(/_id_/g, id); + html = html.replace(/_status_/g, data[6]); + html = html.replace(/_BASE_/g, this.baseUrl); + return html; + } + }, { + key: "get", + value: function get(callBackData) { + $('#PayrollData').hide(); + $('#PayrollForm').hide(); + $('#PayrollDataButtons').hide(); + $('#Payroll').show(); + modJsList.tabPayrollData.setCurrentPayroll(null); + + _get(_getPrototypeOf(PayrollAdapter.prototype), "get", this).call(this, callBackData); + } + }, { + key: "getHelpLink", + value: function getHelpLink() { + return 'https://icehrm.gitbook.io/icehrm/payroll-and-expenses/payroll-management'; + } + }]); + + return PayrollAdapter; +}(_AdapterBase9["default"]); +/** + * PayrollDataAdapter + */ + + +var PayrollDataAdapter = /*#__PURE__*/function (_TableEditAdapter) { + _inherits(PayrollDataAdapter, _TableEditAdapter); + + var _super3 = _createSuper(PayrollDataAdapter); + + function PayrollDataAdapter(endPoint, tab, filter, orderBy) { + var _this; + + _classCallCheck(this, PayrollDataAdapter); + + _this = _super3.call(this, endPoint, tab, filter, orderBy); + _this.cellDataUpdates = {}; + _this.payrollId = null; + return _this; + } + + _createClass(PayrollDataAdapter, [{ + key: "validateCellValue", + value: function validateCellValue(element, evt, newValue) { + modJs.addCellDataUpdate(element.data('colId'), element.data('rowId'), newValue); + return true; + } + }, { + key: "setCurrentPayroll", + value: function setCurrentPayroll(val) { + this.payrollId = val; + } + }, { + key: "addAdditionalRequestData", + value: function addAdditionalRequestData(type, req) { + if (type === 'updateData') { + req.payrollId = this.payrollId; + } else if (type === 'updateAllData') { + req.payrollId = this.payrollId; + } else if (type === 'getAllData') { + req.payrollId = this.payrollId; + } + + return req; + } + }, { + key: "modifyCSVHeader", + value: function modifyCSVHeader(header) { + header.unshift(''); + return header; + } + }, { + key: "getCSVData", + value: function getCSVData() { + var csv = ''; + + for (var i = 0; i < this.csvData.length; i++) { + csv += this.csvData[i].join(','); + + if (i < this.csvData.length - 1) { + csv += '\r\n'; + } + } + + return csv; + } + }, { + key: "downloadPayroll", + value: function downloadPayroll() { + var element = document.createElement('a'); + element.setAttribute('href', "data:text/plain;charset=utf-8,".concat(encodeURIComponent(this.getCSVData()))); + element.setAttribute('download', "payroll_".concat(this.payrollId, ".csv")); + element.style.display = 'none'; + document.body.appendChild(element); + element.click(); + document.body.removeChild(element); + } + }, { + key: "getHelpLink", + value: function getHelpLink() { + return 'https://icehrm.gitbook.io/icehrm/payroll-and-expenses/payroll-management'; + } + }]); + + return PayrollDataAdapter; +}(_TableEditAdapter2["default"]); +/** + * PayrollColumnAdapter + */ + + +var PayrollColumnAdapter = /*#__PURE__*/function (_AdapterBase3) { + _inherits(PayrollColumnAdapter, _AdapterBase3); + + var _super4 = _createSuper(PayrollColumnAdapter); + + function PayrollColumnAdapter(endPoint, tab, filter, orderBy) { + var _this2; + + _classCallCheck(this, PayrollColumnAdapter); + + _this2 = _super4.call(this, endPoint, tab, filter, orderBy); + _this2.codeMirror = CodeMirror; + return _this2; + } + + _createClass(PayrollColumnAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'name', 'colorder', 'calculation_hook', 'deduction_group', 'editable', 'enabled']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Name' + }, { + sTitle: 'Column Order' + }, { + sTitle: 'Calculation Method' + }, { + sTitle: 'Payroll Group' + }, { + sTitle: 'Editable' + }, { + sTitle: 'Enabled' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + var fucntionColumnList = ['calculation_columns', { + label: 'Calculation Columns', + type: 'datagroup', + form: [['name', { + label: 'Name', + type: 'text', + validation: '' + }], ['column', { + label: 'Column', + type: 'select2', + 'remote-source': ['PayrollColumn', 'id', 'name'] + }]], + html: '
    #_delete_##_edit_#
    #_renderFunction_#
    ', + validation: 'none', + render: function render(item) { + var output = "Variable:".concat(item.name); + return output; + } + }]; + return [['id', { + label: 'ID', + type: 'hidden' + }], ['name', { + label: 'Name', + type: 'text', + validation: '' + }], ['calculation_hook', { + label: 'Predefined Calculations', + type: 'select2', + 'allow-null': true, + 'null-label': 'None', + 'remote-source': ['CalculationHook', 'code', 'name'] + }], ['deduction_group', { + label: 'Payroll Group', + type: 'select2', + 'allow-null': true, + 'null-label': 'Common', + 'remote-source': ['DeductionGroup', 'id', 'name'] + }], ['salary_components', { + label: 'Salary Components', + type: 'select2multi', + 'remote-source': ['SalaryComponent', 'id', 'name'] + }], ['deductions', { + label: 'Calculation Method', + type: 'select2multi', + 'remote-source': ['Deduction', 'id', 'name'] + }], ['add_columns', { + label: 'Columns to Add', + type: 'select2multi', + 'remote-source': ['PayrollColumn', 'id', 'name'] + }], ['sub_columns', { + label: 'Columns to Subtract', + type: 'select2multi', + 'remote-source': ['PayrollColumn', 'id', 'name'] + }], ['colorder', { + label: 'Column Order', + type: 'text', + validation: 'number' + }], ['editable', { + label: 'Editable', + type: 'select', + source: [['Yes', 'Yes'], ['No', 'No']] + }], ['enabled', { + label: 'Enabled', + type: 'select', + source: [['Yes', 'Yes'], ['No', 'No']] + }], ['default_value', { + label: 'Default Value', + type: 'text', + validation: '' + }], fucntionColumnList, ['function_type', { + label: 'Function Type', + type: 'select', + source: [['Simple', 'Simple']] + }], ['calculation_function', { + label: 'Function', + type: 'code', + validation: 'none' + }]]; + } + }, { + key: "getFilters", + value: function getFilters() { + return [['deduction_group', { + label: 'Payroll Group', + type: 'select2', + 'allow-null': false, + 'remote-source': ['DeductionGroup', 'id', 'name'] + }]]; + } + }, { + key: "getHelpLink", + value: function getHelpLink() { + return 'https://icehrm.gitbook.io/icehrm/payroll-and-expenses/payroll-management'; + } + }]); + + return PayrollColumnAdapter; +}(_AdapterBase9["default"]); +/** + * PayrollColumnTemplateAdapter + */ + + +var PayrollColumnTemplateAdapter = /*#__PURE__*/function (_AdapterBase4) { + _inherits(PayrollColumnTemplateAdapter, _AdapterBase4); + + var _super5 = _createSuper(PayrollColumnTemplateAdapter); + + function PayrollColumnTemplateAdapter() { + _classCallCheck(this, PayrollColumnTemplateAdapter); + + return _super5.apply(this, arguments); + } + + _createClass(PayrollColumnTemplateAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'name']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: true + }, { + sTitle: 'Name' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['name', { + label: 'Name', + type: 'text', + validation: '' + }], ['columns', { + label: 'Payroll Columns', + type: 'select2multi', + 'remote-source': ['PayrollColumn', 'id', 'name'] + }]]; + } + }]); + + return PayrollColumnTemplateAdapter; +}(_AdapterBase9["default"]); +/* + * PayrollEmployeeAdapter + */ + + +var PayrollEmployeeAdapter = /*#__PURE__*/function (_AdapterBase5) { + _inherits(PayrollEmployeeAdapter, _AdapterBase5); + + var _super6 = _createSuper(PayrollEmployeeAdapter); + + function PayrollEmployeeAdapter() { + _classCallCheck(this, PayrollEmployeeAdapter); + + return _super6.apply(this, arguments); + } + + _createClass(PayrollEmployeeAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'employee', 'pay_frequency', 'deduction_group', 'currency']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Employee' + }, { + sTitle: 'Pay Frequency' + }, { + sTitle: 'Payroll Group' + }, { + sTitle: 'Currency' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['employee', { + label: 'Employee', + type: 'select2', + 'remote-source': ['Employee', 'id', 'first_name+last_name'] + }], ['pay_frequency', { + label: 'Pay Frequency', + type: 'select2', + 'remote-source': ['PayFrequency', 'id', 'name'] + }], ['currency', { + label: 'Currency', + type: 'select2', + 'remote-source': ['CurrencyType', 'id', 'code'] + }], ['deduction_group', { + label: 'Payroll Group', + type: 'select2', + 'allow-null': true, + 'null-label': 'None', + 'remote-source': ['DeductionGroup', 'id', 'name'] + }], ['deduction_exemptions', { + label: 'Calculation Exemptions', + type: 'select2multi', + 'remote-source': ['Deduction', 'id', 'name'], + validation: 'none' + }], ['deduction_allowed', { + label: 'Calculations Assigned', + type: 'select2multi', + 'remote-source': ['Deduction', 'id', 'name'], + validation: 'none' + }]]; + } + }, { + key: "getFilters", + value: function getFilters() { + return [['employee', { + label: 'Employee', + type: 'select2', + 'remote-source': ['Employee', 'id', 'first_name+last_name'] + }]]; + } + }]); + + return PayrollEmployeeAdapter; +}(_AdapterBase9["default"]); +/** + * DeductionAdapter + */ + + +var DeductionAdapter = /*#__PURE__*/function (_AdapterBase6) { + _inherits(DeductionAdapter, _AdapterBase6); + + var _super7 = _createSuper(DeductionAdapter); + + function DeductionAdapter() { + _classCallCheck(this, DeductionAdapter); + + return _super7.apply(this, arguments); + } + + _createClass(DeductionAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'name', 'deduction_group']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Name' + }, { + sTitle: 'Payroll Group' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + var rangeAmounts = ['rangeAmounts', { + label: 'Calculation Process', + type: 'datagroup', + form: [['lowerCondition', { + label: 'Lower Limit Condition', + type: 'select', + source: [['No Lower Limit', 'No Lower Limit'], ['gt', 'Greater than'], ['gte', 'Greater than or Equal']] + }], ['lowerLimit', { + label: 'Lower Limit', + type: 'text', + validation: 'float' + }], ['upperCondition', { + label: 'Upper Limit Condition', + type: 'select', + source: [['No Upper Limit', 'No Upper Limit'], ['lt', 'Less than'], ['lte', 'Less than or Equal']] + }], ['upperLimit', { + label: 'Upper Limit', + type: 'text', + validation: 'float' + }], ['amount', { + label: 'Value', + type: 'text', + validation: '' + }]], + html: '
    #_delete_##_edit_#
    #_renderFunction_#
    ', + validation: 'none', + 'custom-validate-function': function customValidateFunction(data) { + var res = {}; + res.valid = true; + + if (data.lowerCondition === 'No Lower Limit') { + data.lowerLimit = 0; + } + + if (data.upperCondition === 'No Upper Limit') { + data.upperLimit = 0; + } + + res.params = data; + return res; + }, + render: function render(item) { + var output = ''; + + var getSymbol = function getSymbol(text) { + var map = {}; + map.gt = '>'; + map.gte = '>='; + map.lt = '<'; + map.lte = '<='; + return map[text]; + }; + + if (item.lowerCondition !== 'No Lower Limit') { + output += "".concat(item.lowerLimit, " ").concat(getSymbol(item.lowerCondition), " "); + } + + if (item.upperCondition !== 'No Upper Limit') { + output += ' and '; + output += "".concat(getSymbol(item.upperCondition), " ").concat(item.upperLimit, " "); + } + + if (output === '') { + return "Deduction is ".concat(item.amount, " for all ranges"); + } + + return "If salary component ".concat(output, " deduction is ").concat(item.amount); + } + }]; + return [['id', { + label: 'ID', + type: 'hidden' + }], ['name', { + label: 'Name', + type: 'text', + validation: '' + }], ['componentType', { + label: 'Salary Component Type', + type: 'select2multi', + 'allow-null': true, + 'remote-source': ['SalaryComponentType', 'id', 'name'] + }], ['component', { + label: 'Salary Component', + type: 'select2multi', + 'allow-null': true, + 'remote-source': ['SalaryComponent', 'id', 'name'] + }], ['payrollColumn', { + label: 'Payroll Report Column', + type: 'select2', + 'allow-null': true, + 'remote-source': ['PayrollColumn', 'id', 'name'] + }], rangeAmounts, ['deduction_group', { + label: 'Payroll Group', + type: 'select2', + 'allow-null': false, + 'remote-source': ['DeductionGroup', 'id', 'name'] + }]]; + } + }]); + + return DeductionAdapter; +}(_AdapterBase9["default"]); +/* + * DeductionGroupAdapter + */ + + +var DeductionGroupAdapter = /*#__PURE__*/function (_AdapterBase7) { + _inherits(DeductionGroupAdapter, _AdapterBase7); + + var _super8 = _createSuper(DeductionGroupAdapter); + + function DeductionGroupAdapter() { + _classCallCheck(this, DeductionGroupAdapter); + + return _super8.apply(this, arguments); + } + + _createClass(DeductionGroupAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'name', 'description']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Name' + }, { + sTitle: 'Details' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['name', { + label: 'Name', + type: 'text', + validation: '' + }], ['description', { + label: 'Details', + type: 'textarea', + validation: 'none' + }]]; + } + }, { + key: "getActionButtonsHtml", + value: function getActionButtonsHtml(id) { + var html = '
    ' + '' + '' + '' + '
    '; + html = html.replace(/_id_/g, id); + html = html.replace(/_BASE_/g, this.baseUrl); + return html; + } + }, { + key: "deletePayrollGroup", + value: function deletePayrollGroup(id) { + if (confirm('Are you sure you want to delete this payroll group? Deleting the payroll group will delete all the Payroll columns and Saved calculations attached to this Payroll Group')) {// Terminate + } else { + return; + } + + var params = {}; + params.id = id; + var reqJson = JSON.stringify(params); + var callBackData = []; + callBackData.callBackData = []; + callBackData.callBackSuccess = 'deletePayrollGroupSuccessCallback'; + callBackData.callBackFail = 'deletePayrollGroupFailCallback'; + this.customAction('deletePayrollGroup', 'admin=payroll', reqJson, callBackData); + } + }, { + key: "deletePayrollGroupSuccessCallback", + value: function deletePayrollGroupSuccessCallback(callBackData) { + this.showMessage('Success', 'Payroll Group Deleted '); + this.get([]); + } + }, { + key: "deletePayrollGroupFailCallback", + value: function deletePayrollGroupFailCallback(callBackData) { + this.showMessage('Error occured while deleting Payroll Group', callBackData); + } + }]); + + return DeductionGroupAdapter; +}(_AdapterBase9["default"]); +/* + * PayslipTemplateAdapter + */ + + +var PayslipTemplateAdapter = /*#__PURE__*/function (_AdapterBase8) { + _inherits(PayslipTemplateAdapter, _AdapterBase8); + + var _super9 = _createSuper(PayslipTemplateAdapter); + + function PayslipTemplateAdapter() { + _classCallCheck(this, PayslipTemplateAdapter); + + return _super9.apply(this, arguments); + } + + _createClass(PayslipTemplateAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'name']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Name' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + var payslipFields = ['data', { + label: 'Payslip Fields', + type: 'datagroup', + form: [['type', { + label: 'Type', + type: 'select', + sort: 'none', + source: [['Payroll Column', 'Payroll Column'], ['Text', 'Text'], ['Company Name', 'Company Name'], ['Company Logo', 'Company Logo'], ['Separators', 'Separators']] + }], ['payrollColumn', { + label: 'Payroll Column', + type: 'select2', + sort: 'none', + 'allow-null': true, + 'null-label': 'None', + 'remote-source': ['PayrollColumn', 'id', 'name'] + }], ['label', { + label: 'Label', + type: 'text', + validation: 'none' + }], ['text', { + label: 'Text', + type: 'textarea', + validation: 'none' + }], ['status', { + label: 'Status', + type: 'select', + sort: 'none', + source: [['Show', 'Show'], ['Hide', 'Hide']] + }]], + // "html":'
    #_delete_##_edit_#
    Type#_type_#
    Label#_label_#
    Text#_text_#
    Font Size#_fontSize_#
    Font Style#_fontStyle_#
    Font Color#_fontColor_#
    Status#_status_#
    ', + html: '
    #_delete_##_edit_#
    #_type_# #_label_#
    #_text_#
    ', + validation: 'none', + 'custom-validate-function': function customValidateFunction(data) { + var res = {}; + res.valid = true; + + if (data.type === 'Payroll Column') { + if (data.payrollColumn === 'NULL') { + res.valid = false; + res.message = 'Please select payroll column'; + } + } else { + data.payrollColumn = 'NULL'; + } + + if (data.type === 'Text') { + if (data.text === '') { + res.valid = false; + res.message = 'Text can not be empty'; + } + } + + res.params = data; + return res; + } + }]; + return [['id', { + label: 'ID', + type: 'hidden' + }], ['name', { + label: 'Name', + type: 'text', + validation: '' + }], payslipFields]; + } + }]); + + return PayslipTemplateAdapter; +}(_AdapterBase9["default"]); + +module.exports = { + PaydayAdapter: PaydayAdapter, + PayrollAdapter: PayrollAdapter, + PayrollDataAdapter: PayrollDataAdapter, + PayrollColumnAdapter: PayrollColumnAdapter, + PayrollColumnTemplateAdapter: PayrollColumnTemplateAdapter, + PayrollEmployeeAdapter: PayrollEmployeeAdapter, + DeductionAdapter: DeductionAdapter, + DeductionGroupAdapter: DeductionGroupAdapter, + PayslipTemplateAdapter: PayslipTemplateAdapter +}; + +},{"../../../api/AdapterBase":57,"../../../api/TableEditAdapter":72,"codemirror":"codemirror","codemirror/addon/display/autorefresh":114,"codemirror/addon/edit/closebrackets":115,"codemirror/mode/javascript/javascript":117}],40:[function(require,module,exports){ +"use strict"; + +var _lib = require("./lib"); + +window.PermissionAdapter = _lib.PermissionAdapter; + +},{"./lib":41}],41:[function(require,module,exports){ +"use strict"; + +var _AdapterBase2 = _interopRequireDefault(require("../../../api/AdapterBase")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +/** + * PermissionAdapter + */ +var PermissionAdapter = /*#__PURE__*/function (_AdapterBase) { + _inherits(PermissionAdapter, _AdapterBase); + + var _super = _createSuper(PermissionAdapter); + + function PermissionAdapter() { + _classCallCheck(this, PermissionAdapter); + + return _super.apply(this, arguments); + } + + _createClass(PermissionAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'user_level', 'module_id', 'permission', 'value']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'User Level' + }, { + sTitle: 'Module' + }, { + sTitle: 'Permission' + }, { + sTitle: 'Value' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['user_level', { + label: 'User Level', + type: 'placeholder', + validation: 'none' + }], ['module_id', { + label: 'Module', + type: 'placeholder', + 'remote-source': ['Module', 'id', 'menu+name'] + }], ['permission', { + label: 'Permission', + type: 'placeholder', + validation: 'none' + }], ['value', { + label: 'Value', + type: 'text', + validation: 'none' + }]]; + } + }, { + key: "getFilters", + value: function getFilters() { + return [['module_id', { + label: 'Module', + type: 'select2', + 'allow-null': true, + 'null-label': 'All Modules', + 'remote-source': ['Module', 'id', 'menu+name'] + }]]; + } + }, { + key: "getActionButtonsHtml", + value: function getActionButtonsHtml(id, data) { + var html = '
    '; + html = html.replace(/_id_/g, id); + html = html.replace(/_BASE_/g, this.baseUrl); + return html; + } + }, { + key: "getMetaFieldForRendering", + value: function getMetaFieldForRendering(fieldName) { + if (fieldName === 'value') { + return 'meta'; + } + + return ''; + } + }, { + key: "fillForm", + value: function fillForm(object) { + _get(_getPrototypeOf(PermissionAdapter.prototype), "fillForm", this).call(this, object); + + $('#helptext').html(object.description); + } + }]); + + return PermissionAdapter; +}(_AdapterBase2["default"]); + +module.exports = { + PermissionAdapter: PermissionAdapter +}; + +},{"../../../api/AdapterBase":57}],42:[function(require,module,exports){ +"use strict"; + +var _lib = require("./lib"); + +window.ProjectAdapter = _lib.ProjectAdapter; +window.EmployeeProjectAdapter = _lib.EmployeeProjectAdapter; + +},{"./lib":43}],43:[function(require,module,exports){ +"use strict"; + +var _ReactModalAdapterBase = _interopRequireDefault(require("../../../api/ReactModalAdapterBase")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +/** + * ProjectAdapter + */ +var ProjectAdapter = /*#__PURE__*/function (_ReactModalAdapterBas) { + _inherits(ProjectAdapter, _ReactModalAdapterBas); + + var _super = _createSuper(ProjectAdapter); + + function ProjectAdapter(endPoint, tab, filter, orderBy) { + var _this; + + _classCallCheck(this, ProjectAdapter); + + _this = _super.call(this, endPoint, tab, filter, orderBy); + _this.fieldNameMap = {}; + _this.hiddenFields = {}; + _this.tableFields = {}; + _this.formOnlyFields = {}; + return _this; + } + + _createClass(ProjectAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'name', 'client']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Name' + }, { + sTitle: 'Client' + }]; + } + }, { + key: "getTableColumns", + value: function getTableColumns() { + return [{ + title: 'Name', + dataIndex: 'name', + sorter: true + }, { + title: 'Client', + dataIndex: 'client', + sorter: true + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + if (this.showSave) { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['name', { + label: 'Name', + type: 'text' + }], ['client', { + label: 'Client', + type: 'select2', + 'allow-null': true, + 'remote-source': ['Client', 'id', 'name'] + }], ['details', { + label: 'Details', + type: 'textarea', + validation: 'none' + }], ['status', { + label: 'Status', + type: 'select', + source: [['Active', 'Active'], ['On Hold', 'On Hold'], ['Completed', 'Completed'], ['Dropped', 'Dropped']] + }]]; + } + + return [['id', { + label: 'ID', + type: 'hidden' + }], ['name', { + label: 'Name', + type: 'placeholder' + }], ['client', { + label: 'Client', + type: 'placeholder', + 'allow-null': true, + 'remote-source': ['Client', 'id', 'name'] + }], ['details', { + label: 'Details', + type: 'placeholder', + validation: 'none' + }], ['status', { + label: 'Status', + type: 'select', + source: [['Active', 'Active'], ['On Hold', 'On Hold'], ['Completed', 'Completed'], ['Dropped', 'Dropped']] + }]]; + } + }, { + key: "getHelpLink", + value: function getHelpLink() { + return 'http://blog.icehrm.com/docs/projects/'; + } + }]); + + return ProjectAdapter; +}(_ReactModalAdapterBase["default"]); +/* + * EmployeeProjectAdapter + */ + + +var EmployeeProjectAdapter = /*#__PURE__*/function (_ReactModalAdapterBas2) { + _inherits(EmployeeProjectAdapter, _ReactModalAdapterBas2); + + var _super2 = _createSuper(EmployeeProjectAdapter); + + function EmployeeProjectAdapter(endPoint, tab, filter, orderBy) { + var _this2; + + _classCallCheck(this, EmployeeProjectAdapter); + + _this2 = _super2.call(this, endPoint, tab, filter, orderBy); + _this2.fieldNameMap = {}; + _this2.hiddenFields = {}; + _this2.tableFields = {}; + _this2.formOnlyFields = {}; + return _this2; + } + + _createClass(EmployeeProjectAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'employee', 'project']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Employee' + }, { + sTitle: 'Project' + }]; + } + }, { + key: "getTableColumns", + value: function getTableColumns() { + return [{ + title: 'Employee', + dataIndex: 'employee', + sorter: true + }, { + title: 'Project', + dataIndex: 'project', + sorter: true + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['employee', { + label: 'Employee', + type: 'select2', + 'remote-source': ['Employee', 'id', 'first_name+last_name'] + }], ['project', { + label: 'Project', + type: 'select2', + 'remote-source': ['Project', 'id', 'name'] + }], ['details', { + label: 'Details', + type: 'textarea', + validation: 'none' + }]]; + } + }, { + key: "getFilters", + value: function getFilters() { + return [['employee', { + label: 'Employee', + type: 'select2', + 'remote-source': ['Employee', 'id', 'first_name+last_name'] + }]]; + } + }, { + key: "getHelpLink", + value: function getHelpLink() { + return 'http://blog.icehrm.com/docs/projects/'; + } + }]); + + return EmployeeProjectAdapter; +}(_ReactModalAdapterBase["default"]); + +module.exports = { + ProjectAdapter: ProjectAdapter, + EmployeeProjectAdapter: EmployeeProjectAdapter +}; + +},{"../../../api/ReactModalAdapterBase":70}],44:[function(require,module,exports){ +"use strict"; + +var _lib = require("./lib"); + +var _IceDataPipe = _interopRequireDefault(require("../../../api/IceDataPipe")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function init(data) { + var modJsList = []; + modJsList.tabSkill = new _lib.SkillAdapter('Skill'); + modJsList.tabSkill.setObjectTypeName('Skills'); + modJsList.tabSkill.setDataPipe(new _IceDataPipe["default"](modJsList.tabSkill)); + modJsList.tabSkill.setAccess(data.permissions.Skill); + modJsList.tabEducation = new _lib.EducationAdapter('Education'); + modJsList.tabEducation.setObjectTypeName('Education'); + modJsList.tabEducation.setDataPipe(new _IceDataPipe["default"](modJsList.tabEducation)); + modJsList.tabEducation.setAccess(data.permissions.Education); + modJsList.tabCertification = new _lib.CertificationAdapter('Certification'); + modJsList.tabCertification.setObjectTypeName('Education'); + modJsList.tabCertification.setDataPipe(new _IceDataPipe["default"](modJsList.tabCertification)); + modJsList.tabCertification.setAccess(data.permissions.Certification); + modJsList.tabLanguage = new _lib.LanguageAdapter('Language'); + modJsList.tabLanguage.setObjectTypeName('Language'); + modJsList.tabLanguage.setDataPipe(new _IceDataPipe["default"](modJsList.tabLanguage)); + modJsList.tabLanguage.setAccess(data.permissions.Language); + window.modJs = modJsList.tabSkill; + window.modJsList = modJsList; +} + +window.initAdminQualifications = init; + +},{"../../../api/IceDataPipe":63,"./lib":45}],45:[function(require,module,exports){ +"use strict"; + +var _AdapterBase = _interopRequireDefault(require("../../../api/AdapterBase")); + +var _ReactModalAdapterBase = _interopRequireDefault(require("../../../api/ReactModalAdapterBase")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +/** + * SkillAdapter + */ +var SkillAdapter = /*#__PURE__*/function (_ReactModalAdapterBas) { + _inherits(SkillAdapter, _ReactModalAdapterBas); + + var _super = _createSuper(SkillAdapter); + + function SkillAdapter() { + _classCallCheck(this, SkillAdapter); + + return _super.apply(this, arguments); + } + + _createClass(SkillAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'name', 'description']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Name' + }, { + sTitle: 'Description' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['name', { + label: 'Name', + type: 'text' + }], ['description', { + label: 'Description', + type: 'textarea', + validation: '' + }]]; + } + }, { + key: "getTableColumns", + value: function getTableColumns() { + return [{ + title: 'Name', + dataIndex: 'name', + sorter: true + }, { + title: 'Description', + dataIndex: 'description' + }]; + } + }]); + + return SkillAdapter; +}(_ReactModalAdapterBase["default"]); +/** + * EducationAdapter + */ + + +var EducationAdapter = /*#__PURE__*/function (_ReactModalAdapterBas2) { + _inherits(EducationAdapter, _ReactModalAdapterBas2); + + var _super2 = _createSuper(EducationAdapter); + + function EducationAdapter() { + _classCallCheck(this, EducationAdapter); + + return _super2.apply(this, arguments); + } + + _createClass(EducationAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'name', 'description']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Name' + }, { + sTitle: 'Description' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['name', { + label: 'Name', + type: 'text' + }], ['description', { + label: 'Description', + type: 'textarea', + validation: '' + }]]; + } + }, { + key: "getTableColumns", + value: function getTableColumns() { + return [{ + title: 'Name', + dataIndex: 'name', + sorter: true + }, { + title: 'Description', + dataIndex: 'description' + }]; + } + }]); + + return EducationAdapter; +}(_ReactModalAdapterBase["default"]); +/** + * CertificationAdapter + */ + + +var CertificationAdapter = /*#__PURE__*/function (_ReactModalAdapterBas3) { + _inherits(CertificationAdapter, _ReactModalAdapterBas3); + + var _super3 = _createSuper(CertificationAdapter); + + function CertificationAdapter() { + _classCallCheck(this, CertificationAdapter); + + return _super3.apply(this, arguments); + } + + _createClass(CertificationAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'name', 'description']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Name' + }, { + sTitle: 'Description' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['name', { + label: 'Name', + type: 'text' + }], ['description', { + label: 'Description', + type: 'textarea', + validation: '' + }]]; + } + }, { + key: "getTableColumns", + value: function getTableColumns() { + return [{ + title: 'Name', + dataIndex: 'name', + sorter: true + }, { + title: 'Description', + dataIndex: 'description' + }]; + } + }]); + + return CertificationAdapter; +}(_ReactModalAdapterBase["default"]); +/** + * LanguageAdapter + */ + + +var LanguageAdapter = /*#__PURE__*/function (_ReactModalAdapterBas4) { + _inherits(LanguageAdapter, _ReactModalAdapterBas4); + + var _super4 = _createSuper(LanguageAdapter); + + function LanguageAdapter() { + _classCallCheck(this, LanguageAdapter); + + return _super4.apply(this, arguments); + } + + _createClass(LanguageAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'name', 'description']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Name' + }, { + sTitle: 'Description' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['name', { + label: 'Name', + type: 'text' + }], ['description', { + label: 'Description', + type: 'textarea', + validation: '' + }]]; + } + }, { + key: "getTableColumns", + value: function getTableColumns() { + return [{ + title: 'Name', + dataIndex: 'name', + sorter: true + }, { + title: 'Description', + dataIndex: 'description' + }]; + } + }]); + + return LanguageAdapter; +}(_ReactModalAdapterBase["default"]); + +module.exports = { + SkillAdapter: SkillAdapter, + EducationAdapter: EducationAdapter, + CertificationAdapter: CertificationAdapter, + LanguageAdapter: LanguageAdapter +}; + +},{"../../../api/AdapterBase":57,"../../../api/ReactModalAdapterBase":70}],46:[function(require,module,exports){ +"use strict"; + +var _lib = require("./lib"); + +window.ReportAdapter = _lib.ReportAdapter; +window.ReportGenAdapter = _lib.ReportGenAdapter; + +},{"./lib":47}],47:[function(require,module,exports){ +"use strict"; + +var _AdapterBase3 = _interopRequireDefault(require("../../../api/AdapterBase")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +/** + * ReportAdapter + */ +var ReportAdapter = /*#__PURE__*/function (_AdapterBase) { + _inherits(ReportAdapter, _AdapterBase); + + var _super = _createSuper(ReportAdapter); + + function ReportAdapter(endPoint, tab, filter, orderBy) { + var _this; + + _classCallCheck(this, ReportAdapter); + + _this = _super.call(this, endPoint, tab, filter, orderBy); + + _this._construct(); + + return _this; + } + + _createClass(ReportAdapter, [{ + key: "_construct", + value: function _construct() { + this._formFileds = [['id', { + label: 'ID', + type: 'hidden' + }], ['name', { + label: 'Name', + type: 'label', + validation: '' + }], ['parameters', { + label: 'Parameters', + type: 'fieldset', + validation: 'none' + }]]; + this.remoteFieldsExists = false; + } + }, { + key: "_initLocalFormFields", + value: function _initLocalFormFields() { + this._formFileds = [['id', { + label: 'ID', + type: 'hidden' + }], ['name', { + label: 'Name', + type: 'label', + validation: '' + }], ['parameters', { + label: 'Parameters', + type: 'fieldset', + validation: 'none' + }]]; + } + }, { + key: "setRemoteFieldExists", + value: function setRemoteFieldExists(val) { + this.remoteFieldsExists = val; + } + }, { + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'icon', 'name', 'details', 'parameters']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: '', + bSortable: false, + sWidth: '22px' + }, { + sTitle: 'Name', + sWidth: '30%' + }, { + sTitle: 'Details' + }, { + sTitle: 'Parameters', + bVisible: false + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return this._formFileds; + } + }, { + key: "processFormFieldsWithObject", + value: function processFormFieldsWithObject(object) { + var that = this; + + this._initLocalFormFields(); + + var len = this._formFileds.length; + var fieldIDsToDelete = []; + var fieldsToDelete = []; + this.remoteFieldsExists = false; + + for (var i = 0; i < len; i++) { + if (this._formFileds[i][1].type === 'fieldset') { + var newFields = JSON.parse(object[this._formFileds[i][0]]); + fieldsToDelete.push(this._formFileds[i][0]); + newFields.forEach(function (entry) { + that._formFileds.push(entry); + + if (entry[1]['remote-source'] !== undefined && entry[1]['remote-source'] != null) { + that.remoteFieldsExists = true; + } + }); + } + } + + var tempArray = []; + + that._formFileds.forEach(function (entry) { + if (jQuery.inArray(entry[0], fieldsToDelete) < 0) { + tempArray.push(entry); + } + }); + + that._formFileds = tempArray; + } + }, { + key: "renderForm", + value: function renderForm(object) { + var that = this; + this.processFormFieldsWithObject(object); + + if (this.remoteFieldsExists) { + var cb = function cb() { + that.renderFormNew(object); + }; + + this.initFieldMasterData(cb); + } else { + this.initFieldMasterData(); + that.renderFormNew(object); + } + + this.currentReport = object; + } + }, { + key: "renderFormNew", + value: function renderFormNew(object) { + var that = this; + var signatureIds = []; + + if (object == null || object === undefined) { + this.currentId = null; + } + + this.preRenderForm(object); + var formHtml = this.templates.formTemplate; + var html = ''; + var fields = this.getFormFields(); + + for (var i = 0; i < fields.length; i++) { + var metaField = this.getMetaFieldForRendering(fields[i][0]); + + if (metaField === '' || metaField === undefined) { + html += this.renderFormField(fields[i]); + } else { + var metaVal = object[metaField]; + + if (metaVal !== '' && metaVal != null && metaVal !== undefined && metaVal.trim() !== '') { + html += this.renderFormField(JSON.parse(metaVal)); + } else { + html += this.renderFormField(fields[i]); + } + } + } + + formHtml = formHtml.replace(/_id_/g, "".concat(this.getTableName(), "_submit")); + formHtml = formHtml.replace(/_fields_/g, html); + var $tempDomObj; + var randomFormId = this.generateRandom(14); + + if (!this.showFormOnPopup) { + $tempDomObj = $("#".concat(this.getTableName(), "Form")); + } else { + $tempDomObj = $('
    '); + $tempDomObj.attr('id', randomFormId); + } + + $tempDomObj.html(formHtml); + $tempDomObj.find('.datefield').datepicker({ + viewMode: 2 + }); + $tempDomObj.find('.timefield').datetimepicker({ + language: 'en', + pickDate: false + }); + $tempDomObj.find('.datetimefield').datetimepicker({ + language: 'en' + }); + $tempDomObj.find('.colorpick').colorpicker(); // $tempDomObj.find('.select2Field').select2(); + + $tempDomObj.find('.select2Field').each(function () { + $(this).select2().select2('val', $(this).find('option:eq(0)').val()); + }); + $tempDomObj.find('.select2Multi').each(function () { + $(this).select2().on('change', function (e) { + var parentRow = $(this).parents('.row'); + var height = parentRow.find('.select2-choices').height(); + parentRow.height(parseInt(height, 10)); + }); + }); + $tempDomObj.find('.signatureField').each(function () { + // $(this).data('signaturePad',new SignaturePad($(this))); + signatureIds.push($(this).attr('id')); + }); + + for (var _i = 0; _i < fields.length; _i++) { + if (fields[_i][1].type === 'datagroup') { + $tempDomObj.find("#".concat(fields[_i][0])).data('field', fields[_i]); + } + } + + if (this.showSave === false) { + $tempDomObj.find('.saveBtn').remove(); + } else { + $tempDomObj.find('.saveBtn').off(); + $tempDomObj.find('.saveBtn').data('modJs', this); + $tempDomObj.find('.saveBtn').on('click', function () { + if ($(this).data('modJs').saveSuccessItemCallback != null && $(this).data('modJs').saveSuccessItemCallback !== undefined) { + $(this).data('modJs').save($(this).data('modJs').retriveItemsAfterSave(), $(this).data('modJs').saveSuccessItemCallback); + } else { + $(this).data('modJs').save(); + } + + return false; + }); + } + + if (this.showCancel === false) { + $tempDomObj.find('.cancelBtn').remove(); + } else { + $tempDomObj.find('.cancelBtn').off(); + $tempDomObj.find('.cancelBtn').data('modJs', this); + $tempDomObj.find('.cancelBtn').on('click', function () { + $(this).data('modJs').cancel(); + return false; + }); + } + + if (!this.showFormOnPopup) { + $("#".concat(this.getTableName(), "Form")).show(); + $("#".concat(this.getTableName())).hide(); + + for (var _i2 = 0; _i2 < signatureIds.length; _i2++) { + $("#".concat(signatureIds[_i2])).data('signaturePad', new SignaturePad(document.getElementById(signatureIds[_i2]))); + } + + if (object !== undefined && object != null) { + this.fillForm(object); + } + } else { + // var tHtml = $tempDomObj.wrap('
    ').parent().html(); + // this.showMessage("Edit",tHtml,null,null,true); + this.showMessage('Edit', '', null, null, true); + $('#plainMessageModel .modal-body').html(''); + $('#plainMessageModel .modal-body').append($tempDomObj); + + for (var _i3 = 0; _i3 < signatureIds.length; _i3++) { + $("#".concat(signatureIds[_i3])).data('signaturePad', new SignaturePad(document.getElementById(signatureIds[_i3]))); + } + + if (object !== undefined && object != null) { + this.fillForm(object, "#".concat(randomFormId)); + } + } + + this.postRenderForm(object, $tempDomObj); + } + }, { + key: "getActionButtonsHtml", + value: function getActionButtonsHtml(id, data) { + var html = '
    '; + html = html.replace(/_id_/g, id); + html = html.replace(/_BASE_/g, this.baseUrl); + return html; + } + }, { + key: "addSuccessCallBack", + value: function addSuccessCallBack(callBackData, serverData) { + var fileName = serverData[0]; + var link; + + if (fileName.indexOf('https:') === 0) { + link = "Download Report "); + } else { + link = "Download Report "); + } + + link = link.replace(/_BASE_/g, this.baseUrl); + + if (this.currentReport.output === 'PDF' || this.currentReport.output === 'JSON') { + this.showMessage('Download Report', link); + } else { + if (serverData[1].length === 0) { + this.showMessage('Empty Report', 'There were no data for selected filters'); + return; + } + + var tableHtml = "".concat(link, "

    "); // Delete existing temp report table + + $('#tempReportTable').remove(); // this.showMessage("Report",tableHtml); + + $("#".concat(this.table)).html(tableHtml); + $("#".concat(this.table)).show(); + $("#".concat(this.table, "Form")).hide(); // Prepare headers + + var headers = []; + + for (var index in serverData[1]) { + headers.push({ + sTitle: serverData[1][index] + }); + } + + var data = serverData[2]; + var dataTableParams = { + oLanguage: { + sLengthMenu: '_MENU_ records per page' + }, + aaData: data, + aoColumns: headers, + bSort: false, + iDisplayLength: 15, + iDisplayStart: 0 + }; + $('#tempReportTable').dataTable(dataTableParams); + $('.dataTables_paginate ul').addClass('pagination'); + $('.dataTables_length').hide(); + $('.dataTables_filter input').addClass('form-control'); + $('.dataTables_filter input').attr('placeholder', 'Search'); + $('.dataTables_filter label').contents().filter(function () { + return this.nodeType === 3; + }).remove(); + $('.tableActionButton').tooltip(); + } + } + }, { + key: "fillForm", + value: function fillForm(object) { + var fields = this.getFormFields(); + + for (var i = 0; i < fields.length; i++) { + if (fields[i][1].type === 'label') { + $("#".concat(this.getTableName(), "Form #").concat(fields[i][0])).html(object[fields[i][0]]); + } else { + $("#".concat(this.getTableName(), "Form #").concat(fields[i][0])).val(object[fields[i][0]]); + } + } + } + }]); + + return ReportAdapter; +}(_AdapterBase3["default"]); + +var ReportGenAdapter = /*#__PURE__*/function (_AdapterBase2) { + _inherits(ReportGenAdapter, _AdapterBase2); + + var _super2 = _createSuper(ReportGenAdapter); + + function ReportGenAdapter() { + _classCallCheck(this, ReportGenAdapter); + + return _super2.apply(this, arguments); + } + + _createClass(ReportGenAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'name']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Name' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return []; + } + }, { + key: "getActionButtonsHtml", + value: function getActionButtonsHtml(id, data) { + var html = '
    '; + html = html.replace(/_id_/g, id); + html = html.replace(/_name_/g, data[1]); + html = html.replace(/_BASE_/g, this.baseUrl); + return html; + } + }]); + + return ReportGenAdapter; +}(_AdapterBase3["default"]); + +module.exports = { + ReportAdapter: ReportAdapter, + ReportGenAdapter: ReportGenAdapter +}; + +},{"../../../api/AdapterBase":57}],48:[function(require,module,exports){ +"use strict"; + +var _lib = require("./lib"); + +window.SalaryComponentTypeAdapter = _lib.SalaryComponentTypeAdapter; +window.SalaryComponentAdapter = _lib.SalaryComponentAdapter; +window.EmployeeSalaryAdapter = _lib.EmployeeSalaryAdapter; + +},{"./lib":49}],49:[function(require,module,exports){ +"use strict"; + +var _AdapterBase4 = _interopRequireDefault(require("../../../api/AdapterBase")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +/** + * SalaryComponentTypeAdapter + */ +var SalaryComponentTypeAdapter = /*#__PURE__*/function (_AdapterBase) { + _inherits(SalaryComponentTypeAdapter, _AdapterBase); + + var _super = _createSuper(SalaryComponentTypeAdapter); + + function SalaryComponentTypeAdapter() { + _classCallCheck(this, SalaryComponentTypeAdapter); + + return _super.apply(this, arguments); + } + + _createClass(SalaryComponentTypeAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'code', 'name']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Code' + }, { + sTitle: 'Name' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['code', { + label: 'Code', + type: 'text', + validation: '' + }], ['name', { + label: 'Name', + type: 'text', + validation: '' + }]]; + } + }]); + + return SalaryComponentTypeAdapter; +}(_AdapterBase4["default"]); +/** + * SalaryComponentAdapter + */ + + +var SalaryComponentAdapter = /*#__PURE__*/function (_AdapterBase2) { + _inherits(SalaryComponentAdapter, _AdapterBase2); + + var _super2 = _createSuper(SalaryComponentAdapter); + + function SalaryComponentAdapter() { + _classCallCheck(this, SalaryComponentAdapter); + + return _super2.apply(this, arguments); + } + + _createClass(SalaryComponentAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'name', 'componentType', 'details']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Name' + }, { + sTitle: 'Salary Component Type' + }, { + sTitle: 'Details' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['name', { + label: 'Name', + type: 'text', + validation: '' + }], ['componentType', { + label: 'Salary Component Type', + type: 'select2', + 'remote-source': ['SalaryComponentType', 'id', 'name'] + }], ['details', { + label: 'Details', + type: 'textarea', + validation: 'none' + }]]; + } + }]); + + return SalaryComponentAdapter; +}(_AdapterBase4["default"]); +/* + * EmployeeSalaryAdapter + */ + + +var EmployeeSalaryAdapter = /*#__PURE__*/function (_AdapterBase3) { + _inherits(EmployeeSalaryAdapter, _AdapterBase3); + + var _super3 = _createSuper(EmployeeSalaryAdapter); + + function EmployeeSalaryAdapter() { + _classCallCheck(this, EmployeeSalaryAdapter); + + return _super3.apply(this, arguments); + } + + _createClass(EmployeeSalaryAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'employee', 'component', 'amount', 'details']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Employee' + }, { + sTitle: 'Salary Component' + }, { + sTitle: 'Amount' + }, { + sTitle: 'Details' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['employee', { + label: 'Employee', + type: 'select2', + 'remote-source': ['Employee', 'id', 'first_name+last_name'] + }], ['component', { + label: 'Salary Component', + type: 'select2', + 'remote-source': ['SalaryComponent', 'id', 'name'] + }], ['amount', { + label: 'Amount', + type: 'text', + validation: 'float' + }], ['details', { + label: 'Details', + type: 'textarea', + validation: 'none' + }]]; + } + }, { + key: "getFilters", + value: function getFilters() { + return [['employee', { + label: 'Employee', + type: 'select2', + 'remote-source': ['Employee', 'id', 'first_name+last_name'] + }]]; + } + }]); + + return EmployeeSalaryAdapter; +}(_AdapterBase4["default"]); + +module.exports = { + SalaryComponentTypeAdapter: SalaryComponentTypeAdapter, + SalaryComponentAdapter: SalaryComponentAdapter, + EmployeeSalaryAdapter: EmployeeSalaryAdapter +}; + +},{"../../../api/AdapterBase":57}],50:[function(require,module,exports){ +"use strict"; + +var _lib = require("./lib"); + +window.SettingAdapter = _lib.SettingAdapter; + +},{"./lib":51}],51:[function(require,module,exports){ +"use strict"; + +var _AdapterBase2 = _interopRequireDefault(require("../../../api/AdapterBase")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +/** + * SettingAdapter + */ +var SettingAdapter = /*#__PURE__*/function (_AdapterBase) { + _inherits(SettingAdapter, _AdapterBase); + + var _super = _createSuper(SettingAdapter); + + function SettingAdapter() { + _classCallCheck(this, SettingAdapter); + + return _super.apply(this, arguments); + } + + _createClass(SettingAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'name', 'value', 'description']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Name' + }, { + sTitle: 'Value' + }, { + sTitle: 'Details' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['value', { + label: 'Value', + type: 'text', + validation: 'none' + }]]; + } + }, { + key: "getActionButtonsHtml", + value: function getActionButtonsHtml(id, data) { + var html = '
    '; + html = html.replace(/_id_/g, id); + html = html.replace(/_BASE_/g, this.baseUrl); + return html; + } + }, { + key: "getMetaFieldForRendering", + value: function getMetaFieldForRendering(fieldName) { + if (fieldName === 'value') { + return 'meta'; + } + + return ''; + } + }, { + key: "edit", + value: function edit(id) { + this.loadRemoteDataForSettings(); + + _get(_getPrototypeOf(SettingAdapter.prototype), "edit", this).call(this, id); + } + }, { + key: "fillForm", + value: function fillForm(object) { + var metaField = this.getMetaFieldForRendering('value'); + var metaVal = object[metaField]; + var formFields = null; + + if (metaVal !== '' && metaVal !== undefined) { + formFields = [['id', { + label: 'ID', + type: 'hidden' + }], JSON.parse(metaVal)]; + } + + _get(_getPrototypeOf(SettingAdapter.prototype), "fillForm", this).call(this, object, null, formFields); + + $('#helptext').html(object.description); + } + }, { + key: "loadRemoteDataForSettings", + value: function loadRemoteDataForSettings() { + var fields = []; + var field = null; + fields.push(['country', { + label: 'Country', + type: 'select2multi', + 'remote-source': ['Country', 'id', 'name'] + }]); + fields.push(['countryCompany', { + label: 'Country', + type: 'select2', + 'remote-source': ['Country', 'code', 'name'] + }]); + fields.push(['currency', { + label: 'Currency', + type: 'select2multi', + 'remote-source': ['CurrencyType', 'id', 'code+name'] + }]); + fields.push(['nationality', { + label: 'Nationality', + type: 'select2multi', + 'remote-source': ['Nationality', 'id', 'name'] + }]); + fields.push(['supportedLanguage', { + label: 'Value', + type: 'select2', + 'allow-null': false, + 'remote-source': ['SupportedLanguage', 'name', 'description'] + }]); + + for (var index in fields) { + field = fields[index]; + + if (field[1]['remote-source'] !== undefined && field[1]['remote-source'] !== null) { + var key = "".concat(field[1]['remote-source'][0], "_").concat(field[1]['remote-source'][1], "_").concat(field[1]['remote-source'][2]); + this.fieldMasterDataKeys[key] = false; + this.sourceMapping[field[0]] = field[1]['remote-source']; + var callBackData = {}; + callBackData.callBack = 'initFieldMasterDataResponse'; + callBackData.callBackData = [key]; + this.getFieldValues(field[1]['remote-source'], callBackData); + } + } + } + }, { + key: "getHelpLink", + value: function getHelpLink() { + return 'http://blog.icehrm.com/docs/settings/'; + } + }]); + + return SettingAdapter; +}(_AdapterBase2["default"]); + +module.exports = { + SettingAdapter: SettingAdapter +}; + +},{"../../../api/AdapterBase":57}],52:[function(require,module,exports){ +"use strict"; + +var _lib = require("./lib"); + +window.ImmigrationDocumentAdapter = _lib.ImmigrationDocumentAdapter; +window.EmployeeImmigrationAdapter = _lib.EmployeeImmigrationAdapter; +window.EmployeeTravelRecordAdminAdapter = _lib.EmployeeTravelRecordAdminAdapter; +window.CustomFieldAdapter = _lib.CustomFieldAdapter; + +},{"./lib":53}],53:[function(require,module,exports){ +"use strict"; + +var _AdapterBase3 = _interopRequireDefault(require("../../../api/AdapterBase")); + +var _CustomFieldAdapter = _interopRequireDefault(require("../../../api/CustomFieldAdapter")); + +var _ApproveAdminAdapter2 = _interopRequireDefault(require("../../../api/ApproveAdminAdapter")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +/** + * ImmigrationDocumentAdapter + */ +var ImmigrationDocumentAdapter = /*#__PURE__*/function (_AdapterBase) { + _inherits(ImmigrationDocumentAdapter, _AdapterBase); + + var _super = _createSuper(ImmigrationDocumentAdapter); + + function ImmigrationDocumentAdapter() { + _classCallCheck(this, ImmigrationDocumentAdapter); + + return _super.apply(this, arguments); + } + + _createClass(ImmigrationDocumentAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'name', 'details', 'required', 'alert_on_missing', 'alert_before_expiry']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Name' + }, { + sTitle: 'Details' + }, { + sTitle: 'Compulsory' + }, { + sTitle: 'Alert If Not Found' + }, { + sTitle: 'Alert Before Expiry' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + var fields = [['id', { + label: 'ID', + type: 'hidden' + }], ['name', { + label: 'Name', + type: 'text', + validation: '' + }], ['details', { + label: 'Details', + type: 'textarea', + validation: 'none' + }], ['required', { + label: 'Compulsory', + type: 'select', + source: [['No', 'No'], ['Yes', 'Yes']] + }], ['alert_on_missing', { + label: 'Alert If Not Found', + type: 'select', + source: [['No', 'No'], ['Yes', 'Yes']] + }], ['alert_before_expiry', { + label: 'Alert Before Expiry', + type: 'select', + source: [['No', 'No'], ['Yes', 'Yes']] + }], ['alert_before_day_number', { + label: 'Days for Expiry Alert', + type: 'text', + validation: '' + }]]; + + for (var i = 0; i < this.customFields.length; i++) { + fields.push(this.customFields[i]); + } + + return fields; + } + }]); + + return ImmigrationDocumentAdapter; +}(_AdapterBase3["default"]); +/** + * EmployeeImmigrationAdapter + */ + + +var EmployeeImmigrationAdapter = /*#__PURE__*/function (_AdapterBase2) { + _inherits(EmployeeImmigrationAdapter, _AdapterBase2); + + var _super2 = _createSuper(EmployeeImmigrationAdapter); + + function EmployeeImmigrationAdapter() { + _classCallCheck(this, EmployeeImmigrationAdapter); + + return _super2.apply(this, arguments); + } + + _createClass(EmployeeImmigrationAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'employee', 'document', 'documentname', 'valid_until', 'status']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Employee' + }, { + sTitle: 'Document' + }, { + sTitle: 'Document Id' + }, { + sTitle: 'Valid Until' + }, { + sTitle: 'Status' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['employee', { + label: 'Employee', + type: 'select2', + 'remote-source': ['Employee', 'id', 'first_name+last_name'] + }], ['document', { + label: 'Document', + type: 'select2', + 'remote-source': ['ImmigrationDocument', 'id', 'name'] + }], ['documentname', { + label: 'Document Id', + type: 'text', + validation: '' + }], ['valid_until', { + label: 'Valid Until', + type: 'date', + validation: 'none' + }], ['status', { + label: 'Status', + type: 'select', + source: [['Active', 'Active'], ['Inactive', 'Inactive'], ['Draft', 'Draft']] + }], ['details', { + label: 'Details', + type: 'textarea', + validation: 'none' + }], ['attachment1', { + label: 'Attachment 1', + type: 'fileupload', + validation: 'none' + }], ['attachment2', { + label: 'Attachment 2', + type: 'fileupload', + validation: 'none' + }], ['attachment3', { + label: 'Attachment 3', + type: 'fileupload', + validation: 'none' + }]]; + } + }, { + key: "getFilters", + value: function getFilters() { + return [['employee', { + label: 'Employee', + type: 'select2', + 'remote-source': ['Employee', 'id', 'first_name+last_name'] + }]]; + } + }]); + + return EmployeeImmigrationAdapter; +}(_AdapterBase3["default"]); +/** + * EmployeeTravelRecordAdminAdapter + */ + + +var EmployeeTravelRecordAdminAdapter = /*#__PURE__*/function (_ApproveAdminAdapter) { + _inherits(EmployeeTravelRecordAdminAdapter, _ApproveAdminAdapter); + + var _super3 = _createSuper(EmployeeTravelRecordAdminAdapter); + + function EmployeeTravelRecordAdminAdapter(endPoint, tab, filter, orderBy) { + var _this; + + _classCallCheck(this, EmployeeTravelRecordAdminAdapter); + + _this = _super3.call(this, endPoint, tab, filter, orderBy); + _this.itemName = 'TravelRequest'; + _this.itemNameLower = 'travelrequest'; + _this.modulePathName = 'travel'; + return _this; + } + + _createClass(EmployeeTravelRecordAdminAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'employee', 'type', 'purpose', 'travel_from', 'travel_to', 'travel_date', 'status']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Employee' + }, { + sTitle: 'Travel Type' + }, { + sTitle: 'Purpose' + }, { + sTitle: 'From' + }, { + sTitle: 'To' + }, { + sTitle: 'Travel Date' + }, { + sTitle: 'Status' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return this.addCustomFields([['id', { + label: 'ID', + type: 'hidden' + }], ['employee', { + label: 'Employee', + type: 'select2', + sort: 'none', + 'allow-null': false, + 'remote-source': ['Employee', 'id', 'first_name+last_name', 'getActiveSubordinateEmployees'] + }], ['type', { + label: 'Means of Transportation', + type: 'select', + source: [['Plane', 'Plane'], ['Rail', 'Rail'], ['Taxi', 'Taxi'], ['Own Vehicle', 'Own Vehicle'], ['Rented Vehicle', 'Rented Vehicle'], ['Other', 'Other']] + }], ['purpose', { + label: 'Purpose of Travel', + type: 'textarea', + validation: '' + }], ['travel_from', { + label: 'Travel From', + type: 'text', + validation: '' + }], ['travel_to', { + label: 'Travel To', + type: 'text', + validation: '' + }], ['travel_date', { + label: 'Travel Date', + type: 'datetime', + validation: '' + }], ['return_date', { + label: 'Return Date', + type: 'datetime', + validation: '' + }], ['details', { + label: 'Notes', + type: 'textarea', + validation: 'none' + }], ['currency', { + label: 'Currency', + type: 'select2', + 'allow-null': false, + 'remote-source': ['CurrencyType', 'id', 'code'] + }], ['funding', { + label: 'Total Funding Proposed', + type: 'text', + validation: 'float', + "default": '0.00', + mask: '9{0,10}.99' + }], ['attachment1', { + label: 'Attachment', + type: 'fileupload', + validation: 'none' + }], ['attachment2', { + label: 'Attachment', + type: 'fileupload', + validation: 'none' + }], ['attachment3', { + label: 'Attachment', + type: 'fileupload', + validation: 'none' + }]]); + } + }]); + + return EmployeeTravelRecordAdminAdapter; +}(_ApproveAdminAdapter2["default"]); + +module.exports = { + ImmigrationDocumentAdapter: ImmigrationDocumentAdapter, + EmployeeImmigrationAdapter: EmployeeImmigrationAdapter, + EmployeeTravelRecordAdminAdapter: EmployeeTravelRecordAdminAdapter, + CustomFieldAdapter: _CustomFieldAdapter["default"] +}; + +},{"../../../api/AdapterBase":57,"../../../api/ApproveAdminAdapter":58,"../../../api/CustomFieldAdapter":60}],54:[function(require,module,exports){ +"use strict"; + +var _lib = require("./lib"); + +window.UserAdapter = _lib.UserAdapter; +window.UserRoleAdapter = _lib.UserRoleAdapter; + +},{"./lib":55}],55:[function(require,module,exports){ +"use strict"; + +var _FormValidation = _interopRequireDefault(require("../../../api/FormValidation")); + +var _AdapterBase2 = _interopRequireDefault(require("../../../api/AdapterBase")); + +var _ReactModalAdapterBase = _interopRequireDefault(require("../../../api/ReactModalAdapterBase")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var UserAdapter = /*#__PURE__*/function (_AdapterBase) { + _inherits(UserAdapter, _AdapterBase); + + var _super = _createSuper(UserAdapter); + + function UserAdapter() { + _classCallCheck(this, UserAdapter); + + return _super.apply(this, arguments); + } + + _createClass(UserAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'username', 'email', 'employee', 'user_level']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID' + }, { + sTitle: 'User Name' + }, { + sTitle: 'Authentication Email' + }, { + sTitle: 'Employee' + }, { + sTitle: 'User Level' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden', + validation: '' + }], ['username', { + label: 'User Name', + type: 'text', + validation: 'username' + }], ['email', { + label: 'Email', + type: 'text', + validation: 'email' + }], ['employee', { + label: 'Employee', + type: 'select2', + 'allow-null': true, + 'remote-source': ['Employee', 'id', 'first_name+last_name'] + }], ['user_level', { + label: 'User Level', + type: 'select', + source: [['Admin', 'Admin'], ['Manager', 'Manager'], ['Employee', 'Employee'], ['Restricted Admin', 'Restricted Admin'], ['Restricted Manager', 'Restricted Manager'], ['Restricted Employee', 'Restricted Employee']] + }], ['user_roles', { + label: 'User Roles', + type: 'select2multi', + 'remote-source': ['UserRole', 'id', 'name'] + }], ['lang', { + label: 'Language', + type: 'select2', + 'allow-null': true, + 'remote-source': ['SupportedLanguage', 'id', 'description'] + }], ['default_module', { + label: 'Default Module', + type: 'select2', + 'null-label': 'No Default Module', + 'allow-null': true, + 'remote-source': ['Module', 'id', 'name', 'getUserModules'] + }]]; + } + }, { + key: "postRenderForm", + value: function postRenderForm(object, $tempDomObj) { + if (object == null || object === undefined) { + $tempDomObj.find('#changePasswordBtn').remove(); + } + } + }, { + key: "changePassword", + value: function changePassword() { + $('#adminUsersModel').modal('show'); + $('#adminUsersChangePwd #newpwd').val(''); + $('#adminUsersChangePwd #conpwd').val(''); + $('#adminUsersChangePwd_error').hide(); + } + }, { + key: "saveUserSuccessCallBack", + value: function saveUserSuccessCallBack(callBackData, serverData) { + var user = callBackData[0]; + + if (callBackData[1]) { + this.showMessage('Create User', "An email has been sent to ".concat(user.email, " with a temporary password to login to IceHrm.")); + } else { + this.showMessage('Create User', 'User created successfully. But there was a problem sending welcome email.'); + } + + this.get([]); + } + }, { + key: "saveUserFailCallBack", + value: function saveUserFailCallBack(callBackData, serverData) { + this.showMessage('Error', callBackData); + } + }, { + key: "doCustomValidation", + value: function doCustomValidation(params) { + var msg = null; + + if (params.user_level !== 'Admin' && params.user_level !== 'Restricted Admin' && params.employee === 'NULL') { + msg = 'For this user type, you have to assign an employee when adding or editing the user.
    '; + msg += " You may create a new employee through 'Admin'->'Employees' menu"; + } + + return msg; + } + }, { + key: "save", + value: function save() { + var validator = new _FormValidation["default"]("".concat(this.getTableName(), "_submit"), true, { + ShowPopup: false, + LabelErrorClass: 'error' + }); + + if (validator.checkValues()) { + var params = validator.getFormParameters(); + var msg = this.doCustomValidation(params); + + if (msg == null) { + var id = $("#".concat(this.getTableName(), "_submit #id")).val(); + params.csrf = $("#".concat(this.getTableName(), "Form")).data('csrf'); + + if (id != null && id !== undefined && id !== '') { + params.id = id; + this.add(params, []); + } else { + var reqJson = JSON.stringify(params); + var callBackData = []; + callBackData.callBackData = []; + callBackData.callBackSuccess = 'saveUserSuccessCallBack'; + callBackData.callBackFail = 'saveUserFailCallBack'; + this.customAction('saveUser', 'admin=users', reqJson, callBackData); + } + } else { + // $("#"+this.getTableName()+'Form .label').html(msg); + // $("#"+this.getTableName()+'Form .label').show(); + this.showMessage('Error Saving User', msg); + } + } + } + }, { + key: "changePasswordConfirm", + value: function changePasswordConfirm() { + $('#adminUsersChangePwd_error').hide(); + var password = $('#adminUsersChangePwd #newpwd').val(); + var conPassword = $('#adminUsersChangePwd #conpwd').val(); + + if (conPassword !== password) { + $('#adminUsersChangePwd_error').html("Passwords don't match"); + $('#adminUsersChangePwd_error').show(); + return; + } + + var validatePasswordResult = this.validatePassword(password); + + if (validatePasswordResult != null) { + $('#adminUsersChangePwd_error').html(validatePasswordResult); + $('#adminUsersChangePwd_error').show(); + return; + } + + var req = { + id: this.currentId, + pwd: conPassword + }; + var reqJson = JSON.stringify(req); + var callBackData = []; + callBackData.callBackData = []; + callBackData.callBackSuccess = 'changePasswordSuccessCallBack'; + callBackData.callBackFail = 'changePasswordFailCallBack'; + this.customAction('changePassword', 'admin=users', reqJson, callBackData); + } + }, { + key: "closeChangePassword", + value: function closeChangePassword() { + $('#adminUsersModel').modal('hide'); + } + }, { + key: "changePasswordSuccessCallBack", + value: function changePasswordSuccessCallBack(callBackData, serverData) { + this.closeChangePassword(); + this.showMessage('Password Change', 'Password changed successfully'); + } + }, { + key: "changePasswordFailCallBack", + value: function changePasswordFailCallBack(callBackData, serverData) { + this.closeChangePassword(); + this.showMessage('Error', callBackData); + } + }]); + + return UserAdapter; +}(_AdapterBase2["default"]); +/** + * UserRoleAdapter + */ + + +var UserRoleAdapter = /*#__PURE__*/function (_ReactModalAdapterBas) { + _inherits(UserRoleAdapter, _ReactModalAdapterBas); + + var _super2 = _createSuper(UserRoleAdapter); + + function UserRoleAdapter(endPoint, tab, filter, orderBy) { + var _this; + + _classCallCheck(this, UserRoleAdapter); + + _this = _super2.call(this, endPoint, tab, filter, orderBy); + _this.tables = []; + return _this; + } + + _createClass(UserRoleAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'name']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Name' + }]; + } + }, { + key: "getTableColumns", + value: function getTableColumns() { + return [{ + title: 'ID', + dataIndex: 'id', + sorter: true + }, { + title: 'Name', + dataIndex: 'name', + sorter: true + }]; + } + }, { + key: "setTables", + value: function setTables(tables) { + this.tables = tables; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['name', { + label: 'Name', + type: 'text', + validation: '' + }], ['additional_permissions', { + label: 'Additional Permissions', + type: 'datagroup', + form: [['table', { + label: 'Table', + type: 'select2', + source: this.tables + }], ['permissions', { + label: 'Permissions', + type: 'select2multi', + 'allow-null': true, + source: [['get', 'List'], ['element', 'Get Details'], ['save', 'Add/Edit'], ['delete', 'Delete']] + }]], + columns: [{ + title: 'Table', + dataIndex: 'table', + key: 'table' + }, { + title: 'Permissions', + dataIndex: 'permissions', + key: 'permissions' + }], + validation: 'none' + }]]; + } + }]); + + return UserRoleAdapter; +}(_ReactModalAdapterBase["default"]); + +module.exports = { + UserAdapter: UserAdapter, + UserRoleAdapter: UserRoleAdapter +}; + +},{"../../../api/AdapterBase":57,"../../../api/FormValidation":61,"../../../api/ReactModalAdapterBase":70}],56:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +/* + Copyright (c) 2018 [Glacies UG, Berlin, Germany] (http://glacies.de) + Developer: Thilina Hasantha (http://lk.linkedin.com/in/thilinah | https://github.com/thilinah) + */ + +/** + * RequestCache + */ +var MemoryStorage = /*#__PURE__*/function () { + function MemoryStorage() { + _classCallCheck(this, MemoryStorage); + + this.data = {}; + } + + _createClass(MemoryStorage, [{ + key: "getItem", + value: function getItem(key) { + return this.data[key]; + } + }, { + key: "setItem", + value: function setItem(key, data) { + this.data[key] = data; + } + }, { + key: "removeAllByPrefix", + value: function removeAllByPrefix(prefix) { + var keys = Object.keys(this.data); + + for (var i = 0; i < keys.length; i++) { + if (keys[i].indexOf(prefix) > 0) { + delete this.data[keys[i]]; + } + } + } + }]); + + return MemoryStorage; +}(); + +var RequestCache = /*#__PURE__*/function () { + function RequestCache(storage) { + _classCallCheck(this, RequestCache); + + if (!storage) { + this.storage = new MemoryStorage(); + } else { + this.storage = storage; + } + } + + _createClass(RequestCache, [{ + key: "getKey", + value: function getKey(url, params) { + var key = "".concat(url, "|"); + + for (var index in params) { + key += "".concat(index, "=").concat(params[index], "|"); + } + + return key; + } + /* + invalidateTable(table) { + let key; + for (let i = 0; i < this.storage.length; i++) { + key = this.storage.key(i); + if (key.indexOf(`t=${table}`) > 0) { + this.storage.removeItem(key); + } + } + } + */ + + }, { + key: "invalidateTable", + value: function invalidateTable(table) { + this.storage.removeAllByPrefix("t=".concat(table)); + } + }, { + key: "getData", + value: function getData(key) { + var data = this.storage.getItem(key); + + if (!data) { + return null; + } + + return data; + } + }, { + key: "setData", + value: function setData(key, data) { + if (data.status !== undefined && data.status != null && data.status !== 'SUCCESS') { + return null; + } + + this.storage.setItem(key, data); + return data; + } + }]); + + return RequestCache; +}(); + +var _default = RequestCache; +exports["default"] = _default; + +},{}],57:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _IceApiClient = _interopRequireDefault(require("./IceApiClient")); + +var _ModuleBase2 = _interopRequireDefault(require("./ModuleBase")); + +var _RequestCache = _interopRequireDefault(require("../api-common/RequestCache")); + +var _MasterDataReader = _interopRequireDefault(require("./MasterDataReader")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var AdapterBase = /*#__PURE__*/function (_ModuleBase) { + _inherits(AdapterBase, _ModuleBase); + + var _super = _createSuper(AdapterBase); + + function AdapterBase(endPoint, tab, filter, orderBy) { + var _this; + + _classCallCheck(this, AdapterBase); + + _this = _super.call(this); + _this.moduleRelativeURL = null; + _this.tableData = []; + _this.sourceData = []; + _this.filter = null; + _this.origFilter = null; + _this.orderBy = null; + _this.currentElement = null; + + _this.initAdapter(endPoint, tab, filter, orderBy); + + return _this; + } + + _createClass(AdapterBase, [{ + key: "initAdapter", + value: function initAdapter(endPoint, tab, filter, orderBy) { + this.moduleRelativeURL = baseUrl; + this.table = endPoint; + + if (tab === undefined || tab === null) { + this.tab = endPoint; + } else { + this.tab = tab; + } + + if (filter === undefined || filter === null) { + this.filter = null; + } else { + this.filter = filter; + } + + this.origFilter = this.filter; + + if (orderBy === undefined || orderBy === null) { + this.orderBy = null; + } else { + this.orderBy = orderBy; + } + + this.trackEvent('initAdapter', tab); + this.requestCache = new _RequestCache["default"](); + } + }, { + key: "initMasterDataReader", + value: function initMasterDataReader() { + this.masterDataReader = new _MasterDataReader["default"](this); + } + }, { + key: "setupApiClient", + value: function setupApiClient(token) { + this.apiClient = new _IceApiClient["default"](this.apiUrl, token, window.CLIENT_BASE_URL, true); + } + }, { + key: "setApiUrl", + value: function setApiUrl(apiUrl) { + this.apiUrl = apiUrl; + } + }, { + key: "setFilter", + value: function setFilter(filter) { + this.filter = filter; + } + }, { + key: "preSetFilterExternal", + value: function preSetFilterExternal(filter) { + this.initialFilter = filter; + } + }, { + key: "setFilterExternal", + value: function setFilterExternal(_filter) { + var filter = _filter; + + if (filter === undefined || filter === null) { + filter = this.initialFilter; + } + + if (filter === undefined || filter === null) { + return; + } + + this.setFilter(filter); + this.filtersAlreadySet = true; + $("#".concat(this.getTableName(), "_resetFilters")).show(); + this.currentFilterString = this.getFilterString(filter); + } + }, { + key: "getFilter", + value: function getFilter() { + return this.filter; + } + }, { + key: "setOrderBy", + value: function setOrderBy(orderBy) { + this.orderBy = orderBy; + } + }, { + key: "getOrderBy", + value: function getOrderBy() { + return this.orderBy; + } + }, { + key: "getFile", + value: function getFile(name) { + var _this2 = this; + + this.trackEvent('file', name); + return new Promise(function (resolve, reject) { + $.getJSON(_this2.moduleRelativeURL, { + a: 'file', + name: name + }, function (data) { + if (data.status === 'SUCCESS') { + resolve(data.data); + } else { + reject(); + } + }).fail(function () { + return reject(); + }); + }); + } + /** + * @method add + * @param object {Array} object data to be added to database + * @param getFunctionCallBackData {Array} once a success is returned call get() function for this module with these parameters + * @param _callGetFunction {Boolean} if false the get function of the module will not be called (default: true) + * @param successCallback {Function} this will get called after success response + */ + + }, { + key: "add", + value: function add(object, getFunctionCallBackData, callGetFunction, successCallback) { + var that = this; + + if (callGetFunction === undefined || callGetFunction === null) { + // eslint-disable-next-line no-param-reassign + callGetFunction = true; + } + + $(object).attr('a', 'add'); + $(object).attr('t', this.table); + that.showLoader(); + this.requestCache.invalidateTable(this.table); + $.post(this.moduleRelativeURL, object, function (data) { + if (data.status === 'SUCCESS') { + that.addSuccessCallBack(getFunctionCallBackData, data.object, callGetFunction, successCallback, that); + } else { + that.addFailCallBack(getFunctionCallBackData, data.object); + } + }, 'json').fail(function (e) { + if (e.status === 403) { + that.showMessage('Access Forbidden', e.responseJSON.message); + } + }).always(function () { + that.hideLoader(); + }); + this.trackEvent('add', this.tab, this.table); + } + }, { + key: "addSuccessCallBack", + value: function addSuccessCallBack(callBackData, serverData, callGetFunction, successCallback, thisObject) { + if (callGetFunction) { + this.get(callBackData); + } + + this.initFieldMasterData(); + + if (successCallback !== undefined && successCallback !== null) { + successCallback.apply(thisObject, [serverData]); + } + + this.trackEvent('addSuccess', this.tab, this.table); + } + }, { + key: "addFailCallBack", + value: function addFailCallBack(callBackData, serverData) { + try { + this.closePlainMessage(); + } catch (e) {// No need to report + } + + this.showMessage('Error saving', serverData); + this.trackEvent('addFailed', this.tab, this.table); + } + }, { + key: "deleteObj", + value: function deleteObj(id, callBackData) { + var that = this; + that.showLoader(); + this.requestCache.invalidateTable(this.table); + $.post(this.moduleRelativeURL, { + t: this.table, + a: 'delete', + id: id + }, function (data) { + if (data.status === 'SUCCESS') { + that.deleteSuccessCallBack(callBackData, data.object); + } else { + that.deleteFailCallBack(callBackData, data.object); + } + }, 'json').fail(function (e) { + if (e.status === 403) { + that.showMessage('Access Forbidden', e.responseJSON.message); + } + }).always(function () { + that.hideLoader(); + }); + this.trackEvent('delete', this.tab, this.table); + } // eslint-disable-next-line no-unused-vars + + }, { + key: "deleteSuccessCallBack", + value: function deleteSuccessCallBack(callBackData, serverData) { + this.get(callBackData); + this.clearDeleteParams(); + } + }, { + key: "deleteFailCallBack", + value: function deleteFailCallBack(callBackData, serverData) { + this.clearDeleteParams(); + this.showMessage('Error Occurred while Deleting Item', serverData); + } + }, { + key: "get", + value: function get(callBackData) { + var that = this; + + if (this.getRemoteTable()) { + this.createTableServer(this.getTableName()); + $("#".concat(this.getTableName(), "Form")).hide(); + $("#".concat(this.getTableName())).show(); + return; + } + + var sourceMappingJson = JSON.stringify(this.getSourceMapping()); + var filterJson = ''; + + if (this.getFilter() !== null) { + filterJson = JSON.stringify(this.getFilter()); + } + + var orderBy = ''; + + if (this.getOrderBy() !== null) { + orderBy = this.getOrderBy(); + } + + sourceMappingJson = this.fixJSON(sourceMappingJson); + filterJson = this.fixJSON(filterJson); + that.showLoader(); + $.post(this.moduleRelativeURL, { + t: this.table, + a: 'get', + sm: sourceMappingJson, + ft: filterJson, + ob: orderBy + }, function (data) { + if (data.status === 'SUCCESS') { + that.getSuccessCallBack(callBackData, data.object); + } else { + that.getFailCallBack(callBackData, data.object); + } + }, 'json').fail(function (e) { + if (e.status === 403) { + that.showMessage('Access Forbidden', e.responseJSON.message); + } + }).always(function () { + that.hideLoader(); + }); + that.initFieldMasterData(); + this.trackEvent('get', this.tab, this.table); // var url = this.getDataUrl(); + // console.log(url); + } + }, { + key: "getDataUrl", + value: function getDataUrl(_columns) { + var sourceMappingJson = JSON.stringify(this.getSourceMapping()); + var columns = JSON.stringify(_columns); + var filterJson = ''; + + if (this.getFilter() !== null) { + filterJson = JSON.stringify(this.getFilter()); + } + + var orderBy = ''; + + if (this.getOrderBy() !== null) { + orderBy = this.getOrderBy(); + } + + var url = this.moduleRelativeURL.replace('service.php', 'data.php'); + url = "".concat(url, "?t=").concat(this.table); + url = "".concat(url, "&sm=").concat(this.fixJSON(sourceMappingJson)); + url = "".concat(url, "&cl=").concat(this.fixJSON(columns)); + url = "".concat(url, "&ft=").concat(this.fixJSON(filterJson)); + url = "".concat(url, "&ob=").concat(orderBy); + + if (this.isSubProfileTable()) { + url = "".concat(url, "&type=sub"); + } + + if (this.remoteTableSkipProfileRestriction()) { + url = "".concat(url, "&skip=1"); + } + + return url; + } + }, { + key: "isSubProfileTable", + value: function isSubProfileTable() { + return false; + } + }, { + key: "remoteTableSkipProfileRestriction", + value: function remoteTableSkipProfileRestriction() { + return false; + } + }, { + key: "preProcessTableData", + value: function preProcessTableData(row) { + return row; + } + }, { + key: "getSuccessCallBack", + value: function getSuccessCallBack(callBackData, serverData) { + var data = []; + var mapping = this.getDataMapping(); + + for (var i = 0; i < serverData.length; i++) { + var row = []; + + for (var j = 0; j < mapping.length; j++) { + row[j] = serverData[i][mapping[j]]; + } + + data.push(this.preProcessTableData(row)); + } + + this.sourceData = serverData; + + if (callBackData.callBack !== undefined && callBackData.callBack !== null) { + if (callBackData.callBackData === undefined || callBackData.callBackData === null) { + callBackData.callBackData = []; + } + + callBackData.callBackData.push(serverData); + callBackData.callBackData.push(data); + this.callFunction(callBackData.callBack, callBackData.callBackData); + } + + this.tableData = data; + + if (!(callBackData.noRender !== undefined && callBackData.noRender !== null && callBackData.noRender === true)) { + this.createTable(this.getTableName()); + $("#".concat(this.getTableName(), "Form")).hide(); + $("#".concat(this.getTableName())).show(); + } + } // eslint-disable-next-line no-unused-vars + + }, { + key: "getFailCallBack", + value: function getFailCallBack(callBackData, serverData) {} + }, { + key: "getElement", + value: function getElement(id, callBackData, clone) { + var that = this; + var sourceMappingJson = JSON.stringify(this.getSourceMapping()); + sourceMappingJson = this.fixJSON(sourceMappingJson); + that.showLoader(); + $.post(this.moduleRelativeURL, { + t: this.table, + a: 'getElement', + id: id, + sm: sourceMappingJson + }, function (data) { + if (data.status === 'SUCCESS') { + if (clone) { + delete data.object.id; + } + + this.currentElement = data.object; + that.getElementSuccessCallBack.apply(that, [callBackData, data.object]); + } else { + that.getElementFailCallBack.apply(that, [callBackData, data.object]); + } + }, 'json').fail(function (e) { + if (e.status === 403) { + that.showMessage('Access Forbidden', e.responseJSON.message); + } + }).always(function () { + that.hideLoader(); + }); + this.trackEvent('getElement', this.tab, this.table); + } + }, { + key: "getElementSuccessCallBack", + value: function getElementSuccessCallBack(callBackData, serverData) { + if (callBackData.callBack !== undefined && callBackData.callBack !== null) { + if (callBackData.callBackData === undefined || callBackData.callBackData === null) { + callBackData.callBackData = []; + } + + callBackData.callBackData.push(serverData); + this.callFunction(callBackData.callBack, callBackData.callBackData, this); + } + + this.currentElement = serverData; + + if (!(callBackData.noRender !== undefined && callBackData.noRender !== null && callBackData.noRender === true)) { + this.renderForm(serverData); + } + } // eslint-disable-next-line no-unused-vars + + }, { + key: "getElementFailCallBack", + value: function getElementFailCallBack(callBackData, serverData) {} + }, { + key: "getTableData", + value: function getTableData() { + return this.tableData; + } + }, { + key: "getTableName", + value: function getTableName() { + return this.tab; + } + }, { + key: "getFieldValues", + value: function getFieldValues(fieldMaster, callBackData) { + var that = this; + var method = ''; + var methodParams = ''; + + if (fieldMaster[3] !== undefined && fieldMaster[3] !== null) { + // eslint-disable-next-line prefer-destructuring + method = fieldMaster[3]; + } + + if (fieldMaster[4] !== undefined && fieldMaster[4] !== null) { + methodParams = JSON.stringify(fieldMaster[4]); + } + + var key = this.requestCache.getKey(this.moduleRelativeURL, { + t: fieldMaster[0], + key: fieldMaster[1], + value: fieldMaster[2], + method: method, + methodParams: methodParams, + a: 'getFieldValues' + }); + var cacheData = this.requestCache.getData(key); + + if (cacheData !== null && cacheData !== undefined) { + if (cacheData.status === 'SUCCESS') { + callBackData.callBackData.push(cacheData.data); + + if (callBackData.callBackSuccess !== null && callBackData.callBackSuccess !== undefined) { + callBackData.callBackData.push(callBackData.callBackSuccess); + } + + that.callFunction(callBackData.callBack, callBackData.callBackData); + } + } else { + var callbackWraper = function callbackWraper(data) { + if (data.status === 'SUCCESS') { + that.requestCache.setData(this.success.key, data); + var localCallBackData = callBackData; + localCallBackData.callBackData = [callBackData.callBackData[0]]; + localCallBackData.callBackData.push(data.data); + + if (localCallBackData.callBackSuccess !== null && localCallBackData.callBackSuccess !== undefined) { + localCallBackData.callBackData.push(callBackData.callBackSuccess); + } + + that.callFunction(localCallBackData.callBack, localCallBackData.callBackData); + } else if (data.message === 'Access violation') { + alert("Error : ".concat(callbackWraper.table, " ").concat(data.message)); + } + }; + + callbackWraper.key = key; // eslint-disable-next-line prefer-destructuring + + callbackWraper.table = fieldMaster[0]; + $.post(this.moduleRelativeURL, { + t: fieldMaster[0], + key: fieldMaster[1], + value: fieldMaster[2], + method: method, + methodParams: methodParams, + a: 'getFieldValues' + }, callbackWraper, 'json'); + } + } + }, { + key: "setAdminProfile", + value: function setAdminProfile(empId) { + try { + localStorage.clear(); + } catch (e) {// No need to report + } + + $.post(this.moduleRelativeURL, { + a: 'setAdminEmp', + empid: empId + }, function () { + // eslint-disable-next-line no-restricted-globals + top.location.href = clientUrl; + }, 'json'); + } + }, { + key: "customAction", + value: function customAction(subAction, module, request, callBackData, isPost) { + var that = this; + request = this.fixJSON(request); + + if (!isPost) { + $.getJSON(this.moduleRelativeURL, { + t: this.table, + a: 'ca', + sa: subAction, + mod: module, + req: request + }, function (data) { + if (data.status === 'SUCCESS') { + callBackData.callBackData.push(data.data); + that.callFunction(callBackData.callBackSuccess, callBackData.callBackData); + } else { + callBackData.callBackData.push(data.data); + that.callFunction(callBackData.callBackFail, callBackData.callBackData); + } + }); + } else { + $.post(this.moduleRelativeURL, { + t: this.table, + a: 'ca', + sa: subAction, + mod: module, + req: request + }, function (data) { + if (data.status === 'SUCCESS') { + callBackData.callBackData.push(data.data); + that.callFunction(callBackData.callBackSuccess, callBackData.callBackData); + } else { + callBackData.callBackData.push(data.data); + that.callFunction(callBackData.callBackFail, callBackData.callBackData); + } + }, 'json'); + } + } + }, { + key: "sendCustomRequest", + value: function sendCustomRequest(action, params, successCallback, failCallback) { + params.a = action; + $.post(this.moduleRelativeURL, params, function (data) { + if (data.status === 'SUCCESS') { + successCallback(data.data); + } else { + failCallback(data.data); + } + }, 'json'); + } + }, { + key: "getCustomActionUrl", + value: function getCustomActionUrl(action, params) { + params.a = action; + var str = ''; + + for (var key in params) { + if (params.hasOwnProperty(key)) { + if (str !== '') { + str += '&'; + } + + str += "".concat(key, "=").concat(params[key]); + } + } + + return "".concat(this.moduleRelativeURL, "?").concat(str); + } + }, { + key: "getClientDataUrl", + value: function getClientDataUrl() { + return "".concat(this.moduleRelativeURL.replace('service.php', ''), "data/"); + } + }, { + key: "getCustomUrl", + value: function getCustomUrl(str) { + return this.moduleRelativeURL.replace('service.php', str); + } + }]); + + return AdapterBase; +}(_ModuleBase2["default"]); + +var _default = AdapterBase; +exports["default"] = _default; + +},{"../api-common/RequestCache":56,"./IceApiClient":62,"./MasterDataReader":66,"./ModuleBase":67}],58:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _LogViewAdapter2 = _interopRequireDefault(require("./LogViewAdapter")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var ApproveAdminAdapter = /*#__PURE__*/function (_LogViewAdapter) { + _inherits(ApproveAdminAdapter, _LogViewAdapter); + + var _super = _createSuper(ApproveAdminAdapter); + + function ApproveAdminAdapter(endPoint, tab, filter, orderBy) { + _classCallCheck(this, ApproveAdminAdapter); + + return _super.call(this, endPoint, tab, filter, orderBy); + } + + _createClass(ApproveAdminAdapter, [{ + key: "getStatusFieldPosition", + value: function getStatusFieldPosition() { + var dm = this.getDataMapping(); + return dm.length - 1; + } + }, { + key: "openStatus", + value: function openStatus(id, status) { + $("#".concat(this.itemNameLower, "StatusModel")).modal('show'); + $("#".concat(this.itemNameLower, "_status")).html(this.getStatusOptions(status)); + $("#".concat(this.itemNameLower, "_status")).val(status); + this.statusChangeId = id; + } + }, { + key: "closeDialog", + value: function closeDialog() { + $("#".concat(this.itemNameLower, "StatusModel")).modal('hide'); + } + }, { + key: "changeStatus", + value: function changeStatus() { + var status = $("#".concat(this.itemNameLower, "_status")).val(); + var reason = $("#".concat(this.itemNameLower, "_reason")).val(); + + if (status == undefined || status == null || status == '') { + this.showMessage('Error', "Please select ".concat(this.itemNameLower, " status")); + return; + } + + var object = { + id: this.statusChangeId, + status: status, + reason: reason + }; + var reqJson = JSON.stringify(object); + var callBackData = []; + callBackData.callBackData = []; + callBackData.callBackSuccess = 'changeStatusSuccessCallBack'; + callBackData.callBackFail = 'changeStatusFailCallBack'; + this.customAction('changeStatus', "admin=".concat(this.modulePathName), reqJson, callBackData); + this.closeDialog(); + this.statusChangeId = null; + } + }, { + key: "changeStatusSuccessCallBack", + value: function changeStatusSuccessCallBack(callBackData) { + this.showMessage('Successful', "".concat(this.itemName, " Request status changed successfully")); + this.get([]); + } + }, { + key: "changeStatusFailCallBack", + value: function changeStatusFailCallBack(callBackData) { + this.showMessage('Error', "Error occurred while changing ".concat(this.itemName, " request status")); + } + }, { + key: "getActionButtonsHtml", + value: function getActionButtonsHtml(id, data) { + var editButton = ''; + var deleteButton = ''; + var statusChangeButton = ''; + var viewLogsButton = ''; + var html = '
    _edit__delete__status__logs_
    '; + var optiondata = this.getStatusOptionsData(data[this.getStatusFieldPosition()]); + + if (Object.keys(optiondata).length > 0) { + html = html.replace('_status_', statusChangeButton); + } else { + html = html.replace('_status_', ''); + } + + html = html.replace('_logs_', viewLogsButton); + + if (this.showDelete) { + html = html.replace('_delete_', deleteButton); + } else { + html = html.replace('_delete_', ''); + } + + if (this.showEdit) { + html = html.replace('_edit_', editButton); + } else { + html = html.replace('_edit_', ''); + } + + html = html.replace(/_id_/g, id); + html = html.replace(/_BASE_/g, this.baseUrl); + html = html.replace(/_cstatus_/g, data[this.getStatusFieldPosition()]); + return html; + } + }, { + key: "isSubProfileTable", + value: function isSubProfileTable() { + return this.user.user_level !== 'Admin' && this.user.user_level !== 'Restricted Admin'; + } + }, { + key: "getStatusOptionsData", + value: function getStatusOptionsData(currentStatus) { + var data = {}; + + if (currentStatus === 'Approved') {} else if (currentStatus === 'Pending') { + data.Approved = 'Approved'; + data.Rejected = 'Rejected'; + } else if (currentStatus === 'Rejected') {} else if (currentStatus === 'Cancelled') {} else if (currentStatus === 'Processing') {} else { + data['Cancellation Requested'] = 'Cancellation Requested'; + data.Cancelled = 'Cancelled'; + } + + return data; + } + }, { + key: "getStatusOptions", + value: function getStatusOptions(currentStatus) { + return this.generateOptions(this.getStatusOptionsData(currentStatus)); + } + }]); + + return ApproveAdminAdapter; +}(_LogViewAdapter2["default"]); + +var _default = ApproveAdminAdapter; +exports["default"] = _default; + +},{"./LogViewAdapter":65}],59:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _AdapterBase2 = _interopRequireDefault(require("./AdapterBase")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var BaseGraphAdapter = /*#__PURE__*/function (_AdapterBase) { + _inherits(BaseGraphAdapter, _AdapterBase); + + var _super = _createSuper(BaseGraphAdapter); + + function BaseGraphAdapter() { + _classCallCheck(this, BaseGraphAdapter); + + return _super.apply(this, arguments); + } + + _createClass(BaseGraphAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return []; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return []; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return []; + } // eslint-disable-next-line no-unused-vars + + }, { + key: "createTable", + value: function createTable(elementId) {} + }]); + + return BaseGraphAdapter; +}(_AdapterBase2["default"]); + +var _default = BaseGraphAdapter; +exports["default"] = _default; + +},{"./AdapterBase":57}],60:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _AdapterBase2 = _interopRequireDefault(require("./AdapterBase")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +/* + * CustomFieldAdapter + */ +var CustomFieldAdapter = /*#__PURE__*/function (_AdapterBase) { + _inherits(CustomFieldAdapter, _AdapterBase); + + var _super = _createSuper(CustomFieldAdapter); + + function CustomFieldAdapter(endPoint, tab, filter, orderBy) { + var _this; + + _classCallCheck(this, CustomFieldAdapter); + + _this = _super.call(this, endPoint, tab, filter, orderBy); + _this.tableType = ''; + return _this; + } + + _createClass(CustomFieldAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'name', 'display', 'display_order']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Name' + }, { + sTitle: 'Display Status' + }, { + sTitle: 'Priority' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['name', { + label: 'Name', + type: 'text', + validation: '' + }], ['display', { + label: 'Display Status', + type: 'select', + source: [['Form', 'Show'], ['Hidden', 'Hidden']] + }], ['field_type', { + label: 'Field Type', + type: 'select', + source: [['text', 'Text Field'], ['textarea', 'Multiline Text'], ['select', 'Dropdown'], ['select2', 'Searchable DropDown'], ['select2multi', 'Multi Select'], ['fileupload', 'File Upload'], ['date', 'Date'], ['datetime', 'Date Time'], ['time', 'Time'], ['signature', 'Signature']] + }], ['field_label', { + label: 'Field Label', + type: 'text', + validation: '' + }], ['field_validation', { + label: 'Validation', + type: 'select2', + validation: 'none', + sort: 'none', + 'null-label': 'Required', + 'allow-null': true, + source: [['none', 'None'], ['number', 'Number'], ['numberOrEmpty', 'Number or Empty'], ['float', 'Decimal'], ['email', 'Email'], ['emailOrEmpty', 'Email or Empty']] + }], ['field_options', { + label: 'Field Options', + type: 'datagroup', + form: [['label', { + label: 'Label', + type: 'text', + validation: '' + }], ['value', { + label: 'Value', + type: 'text', + validation: 'none' + }]], + html: '
    #_delete_##_edit_##_label_#:#_value_#
    ', + validation: 'none' + }], ['display_order', { + label: 'Priority', + type: 'text', + validation: 'number' + }], ['display_section', { + label: 'Display Section', + type: 'text', + validation: 'none' + }]]; + } + }, { + key: "setTableType", + value: function setTableType(type) { + this.tableType = type; + } + }, { + key: "doCustomValidation", + value: function doCustomValidation(params) { + var validateName = function validateName(str) { + var name = /^[a-z][a-z0-9._]+$/; + return str != null && name.test(str); + }; + + if (!validateName(params.name)) { + return 'Invalid name for custom field'; + } + + return null; + } + }, { + key: "forceInjectValuesBeforeSave", + value: function forceInjectValuesBeforeSave(params) { + var data = [params.name]; + var options = []; + var optionsData; + data.push({}); + data[1].label = params.field_label; + data[1].type = params.field_type; + data[1].validation = params.field_validation; + + if (['select', 'select2', 'select2multi'].indexOf(params.field_type) >= 0) { + optionsData = params.field_options === '' || params.field_options === undefined ? [] : JSON.parse(params.field_options); + + for (var index in optionsData) { + options.push([optionsData[index].value, optionsData[index].label]); + } + + data[1].source = options; + } + + if (params.field_validation == null || params.field_validation === undefined) { + params.field_validation = ''; + } + + params.data = JSON.stringify(data); + params.type = this.tableType; + return params; + } + }]); + + return CustomFieldAdapter; +}(_AdapterBase2["default"]); + +var _default = CustomFieldAdapter; +exports["default"] = _default; + +},{"./AdapterBase":57}],61:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +/* + Copyright (c) 2018 [Glacies UG, Berlin, Germany] (http://glacies.de) + Developer: Thilina Hasantha (http://lk.linkedin.com/in/thilinah | https://github.com/thilinah) + */ + +/* global tinyMCE */ +var ValidationRules = { + "float": function float(str) { + var floatstr = /^[-+]?[0-9]+(\.[0-9]+)?$/; + + if (str != null && str.match(floatstr)) { + return true; + } + + return false; + }, + number: function number(str) { + var numstr = /^[0-9]+$/; + + if (str != null && str.match(numstr)) { + return true; + } + + return false; + }, + numberOrEmpty: function numberOrEmpty(str) { + if (str === '') { + return true; + } + + var numstr = /^[0-9]+$/; + + if (str != null && str.match(numstr)) { + return true; + } + + return false; + }, + email: function email(str) { + var emailPattern = /^\s*[\w\-+_]+(\.[\w\-+_]+)*@[\w\-+_]+\.[\w\-+_]+(\.[\w\-+_]+)*\s*$/; + return str != null && emailPattern.test(str); + }, + emailOrEmpty: function emailOrEmpty(str) { + if (str === '') { + return true; + } + + var emailPattern = /^\s*[\w\-+_]+(\.[\w\-+_]+)*@[\w\-+_]+\.[\w\-+_]+(\.[\w\-+_]+)*\s*$/; + return str != null && emailPattern.test(str); + }, + username: function username(str) { + var username = /^[a-zA-Z0-9.-]+$/; + return str != null && username.test(str); + }, + input: function input(str) { + if (str != null && str.length > 0) { + return true; + } + + return false; + } +}; + +var FormValidation = /*#__PURE__*/function () { + function FormValidation(formId, validateAll, options) { + _classCallCheck(this, FormValidation); + + this.tempOptions = {}; + this.formId = formId; + this.formError = false; + this.formObject = null; + this.errorMessages = ''; + this.popupDialog = null; + this.validateAll = validateAll; + this.errorMap = []; + this.settings = { + thirdPartyPopup: null, + LabelErrorClass: false, + ShowPopup: true + }; + this.settings = jQuery.extend(this.settings, options); + this.inputTypes = ['text', 'radio', 'checkbox', 'file', 'password', 'select-one', 'select-multi', 'textarea', 'fileupload', 'signature']; + this.validator = ValidationRules; + } // eslint-disable-next-line no-unused-vars + + + _createClass(FormValidation, [{ + key: "clearError", + value: function clearError(formInput, overrideMessage) { + var id = formInput.attr('id'); + $("#".concat(this.formId, " #field_").concat(id)).removeClass('error'); + $("#".concat(this.formId, " #help_").concat(id)).html(''); + } // eslint-disable-next-line no-unused-vars + + }, { + key: "addError", + value: function addError(formInput, overrideMessage) { + this.formError = true; + + if (formInput.attr('message') != null) { + this.errorMessages += "".concat(formInput.attr('message'), "\n"); + this.errorMap[formInput.attr('name')] = formInput.attr('message'); + } else { + this.errorMap[formInput.attr('name')] = ''; + } + + var id = formInput.attr('id'); + var validation = formInput.attr('validation'); + var message = formInput.attr('validation'); + $("#".concat(this.formId, " #field_").concat(id)).addClass('error'); + + if (message === undefined || message == null || message === '') { + $("#".concat(this.formId, " #help_err_").concat(id)).html(message); + } else if (validation === undefined || validation == null || validation === '') { + $("#".concat(this.formId, " #help_err_").concat(id)).html('Required'); + } else if (validation === 'float' || validation === 'number') { + $("#".concat(this.formId, " #help_err_").concat(id)).html('Number required'); + } else if (validation === 'email') { + $("#".concat(this.formId, " #help_err_").concat(id)).html('Email required'); + } else { + $("#".concat(this.formId, " #help_err_").concat(id)).html('Required'); + } + } + }, { + key: "showErrors", + value: function showErrors() { + if (this.formError) { + if (this.settings.thirdPartyPopup !== undefined && this.settings.thirdPartyPopup != null) { + this.settings.thirdPartyPopup.alert(); + } else if (this.settings.ShowPopup === true) { + if (this.tempOptions.popupTop !== undefined && this.tempOptions.popupTop != null) { + this.alert('Errors Found', this.errorMessages, this.tempOptions.popupTop); + } else { + this.alert('Errors Found', this.errorMessages, -1); + } + } + } + } + }, { + key: "checkValues", + value: function checkValues(options) { + this.tempOptions = options; + var that = this; + this.formError = false; + this.errorMessages = ''; + this.formObject = {}; // eslint-disable-next-line consistent-return + + var validate = function validate(inputObject) { + var inputValue = null; + var name = inputObject.attr('name'); + + if (that.settings.LabelErrorClass !== false) { + $("label[for='".concat(name, "']")).removeClass(that.settings.LabelErrorClass); + } + + var id = inputObject.attr('id'); + var type = inputObject.attr('type'); + + if (inputObject.hasClass('select2-focusser') || inputObject.hasClass('select2-input')) { + return true; + } + + if (jQuery.inArray(type, that.inputTypes) >= 0) { + if (inputObject.hasClass('uploadInput')) { + inputValue = inputObject.attr('val'); + } else if (type === 'radio' || type === 'checkbox') { + inputValue = $("input[name='".concat(name, "']:checked")).val(); + } else if (inputObject.hasClass('select2Field')) { + if ($("#".concat(that.formId, " #").concat(id)).select2('data') != null && $("#".concat(that.formId, " #").concat(id)).select2('data') !== undefined) { + inputValue = $("#".concat(that.formId, " #").concat(id)).select2('data').id; + } else { + inputValue = ''; + } + } else if (inputObject.hasClass('select2Multi')) { + if ($("#".concat(that.formId, " #").concat(id)).select2('data') != null && $("#".concat(that.formId, " #").concat(id)).select2('data') !== undefined) { + var inputValueObjects = $("#".concat(that.formId, " #").concat(id)).select2('data'); + inputValue = []; + + for (var i = 0; i < inputValueObjects.length; i++) { + inputValue.push(inputValueObjects[i].id); + } + + inputValue = JSON.stringify(inputValue); + } else { + inputValue = ''; + } + } else if (inputObject.hasClass('signatureField')) { + if ($("#".concat(that.formId, " #").concat(id)).data('signaturePad').isEmpty()) { + inputValue = ''; + } else { + inputValue = $("#".concat(id)).data('signaturePad').toDataURL(); + } + } else if (inputObject.hasClass('simplemde')) { + inputValue = $("#".concat(that.formId, " #").concat(id)).data('simplemde').value(); + } else if (inputObject.hasClass('code')) { + inputValue = $("#".concat(that.formId, " #").concat(id)).data('codemirror').getValue(); + } else if (inputObject.hasClass('tinymce')) { + inputValue = tinyMCE.get(id).getContent({ + format: 'raw' + }); + } else { + inputValue = inputObject.val(); + } + + var validation = inputObject.attr('validation'); + var valid = false; + + if (validation !== undefined && validation != null && that.validator[validation] !== undefined && that.validator[validation] != null) { + valid = that.validator[validation](inputValue); + } else { + if (that.validateAll) { + if (validation !== undefined && validation != null && validation === 'none') { + valid = true; + } else { + valid = that.validator.input(inputValue); + } + } else { + valid = true; + } + + that.formObject[id] = inputValue; + } + + if (!valid) { + that.addError(inputObject, null); + } else { + that.clearError(inputObject, null); + that.formObject[id] = inputValue; + } + } + }; + + var inputs = $("#".concat(this.formId, " :input")); + inputs.each(function () { + validate($(this)); + }); + inputs = $("#".concat(this.formId, " .uploadInput")); + inputs.each(function () { + validate($(this)); + }); + this.showErrors(); + this.tempOptions = {}; + return !this.formError; + } + }, { + key: "getFormParameters", + value: function getFormParameters() { + return this.formObject; + } + }, { + key: "alert", + value: function (_alert) { + function alert(_x, _x2) { + return _alert.apply(this, arguments); + } + + alert.toString = function () { + return _alert.toString(); + }; + + return alert; + }(function (title, text) { + alert(text); + }) + }], [{ + key: "getValidationRules", + value: function getValidationRules() { + return ValidationRules; + } + }]); + + return FormValidation; +}(); + +var _default = FormValidation; +exports["default"] = _default; + +},{}],62:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var axios = require('axios'); + +var IceApiClient = /*#__PURE__*/function () { + function IceApiClient(baseUrl, token, clientBaseUrl) { + var legacyApiWrapper = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true; + + _classCallCheck(this, IceApiClient); + + this.baseUrl = baseUrl; + this.token = token; + this.clientBaseUrl = clientBaseUrl; + this.legacyApiWrapper = legacyApiWrapper; + } + + _createClass(IceApiClient, [{ + key: "get", + value: function get(endpoint) { + if (this.legacyApiWrapper) { + var url = "".concat(this.clientBaseUrl, "api/index.php?token=").concat(this.token, "&method=get&url=/").concat(endpoint); + return axios.get(url); + } + + return axios.get(this.baseUrl + endpoint, { + headers: { + Authorization: "Bearer ".concat(this.token) + } + }); + } + }]); + + return IceApiClient; +}(); + +var _default = IceApiClient; +exports["default"] = _default; + +},{"axios":88}],63:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var axios = require('axios'); + +var IceDataPipe = /*#__PURE__*/function () { + function IceDataPipe(adapter) { + var pageSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 10; + + _classCallCheck(this, IceDataPipe); + + this.adapter = adapter; + this.pageSize = pageSize; + } + + _createClass(IceDataPipe, [{ + key: "readMetaData", + value: function readMetaData() { + this.adapter.initFieldMasterData(); + } + }, { + key: "get", + value: function get(_ref) { + var _this = this; + + var page = _ref.page, + search = _ref.search, + sortField = _ref.sortField, + sortOrder = _ref.sortOrder, + filters = _ref.filters, + limit = _ref.limit; + var pageSize = limit || this.pageSize; + var start = (page - 1) * pageSize; + var dataUrl = this.getDataUrl(this.adapter.getDataMapping(), search, filters); + var url = "".concat(dataUrl, "&iDisplayStart=").concat(start, "&iDisplayLength=").concat(pageSize); + url = this.applySortingData(this.adapter.getDataMapping(), url, sortField, sortOrder); // $.post(url, (data) => { + // that.getSuccessCallBack(callBackData, data); + // }, 'json').always(() => { that.hideLoader(); }); + + url = "".concat(url, "&version=v2"); + return axios.post(url, {}).then(function (data) { + var key = _this.getRequestKey(page, search, sortField, sortOrder, filters, limit); + + var response = { + items: data.data.objects, + total: data.data.totalRecords + }; + + if (_this.adapter.localStorageEnabled) { + window.localStorage.setItem(key, JSON.stringify(response)); + } + + return response; + }); + } + }, { + key: "getCachedResponse", + value: function getCachedResponse(_ref2) { + var page = _ref2.page, + search = _ref2.search, + sortField = _ref2.sortField, + sortOrder = _ref2.sortOrder, + filters = _ref2.filters, + limit = _ref2.limit; + var key = this.getRequestKey(page, search, sortField, sortOrder, filters, limit); + var cachedResponse = window.localStorage.getItem(key); + + if (!cachedResponse) { + return null; + } + + return JSON.parse(cachedResponse); + } + }, { + key: "clearCachedResponse", + value: function clearCachedResponse(_ref3) { + var page = _ref3.page, + search = _ref3.search, + sortField = _ref3.sortField, + sortOrder = _ref3.sortOrder, + filters = _ref3.filters, + limit = _ref3.limit; + var key = this.getRequestKey(page, search, sortField, sortOrder, filters, limit); + window.localStorage.setItem(key, null); + } + }, { + key: "getRequestKey", + value: function getRequestKey(page, search, sortField, sortOrder, filters, limit) { + return "".concat(this.adapter.table, "|").concat(page, "|").concat(search, "|").concat(sortField, "|").concat(sortOrder, "|").concat(filters, "|").concat(limit); + } + }, { + key: "applySortingData", + value: function applySortingData(columns, url, sortField, sortOrder) { + var orderBy = ''; + + if (sortField) { + url = "".concat(url, "&sorting=1"); + url = "".concat(url, "&iSortCol_0=").concat(columns.indexOf(sortField)); + url = "".concat(url, "&sSortDir_0=").concat(sortOrder === 'descend' ? 'DESC' : 'ASC'); + } else if (this.adapter.getOrderBy() !== null) { + // Setting the fix ordering + orderBy = this.adapter.getOrderBy(); + url = "".concat(url, "&ob=").concat(orderBy); + } + + return url; + } + }, { + key: "getDataUrl", + value: function getDataUrl(_columns, searchTerm, filters) { + var sourceMappingJson = JSON.stringify(this.adapter.getSourceMapping()); + var columns = JSON.stringify(_columns); + var filterJson = ''; + + if (this.adapter.getFilter() !== null) { + filterJson = JSON.stringify(this.adapter.getFilter()); + } + + var url = this.adapter.moduleRelativeURL.replace('service.php', 'data.php'); + url = "".concat(url, "?t=").concat(this.adapter.table); + url = "".concat(url, "&sm=").concat(sourceMappingJson); + url = "".concat(url, "&cl=").concat(columns); + url = "".concat(url, "&ft=").concat(filterJson); + + if (searchTerm && searchTerm.trim() !== '') { + url += "&sSearch=".concat(searchTerm); + } + + if (this.adapter.isSubProfileTable()) { + url = "".concat(url, "&type=sub"); + } + + if (this.adapter.remoteTableSkipProfileRestriction()) { + url = "".concat(url, "&skip=1"); + } + + return url; + } + }]); + + return IceDataPipe; +}(); + +var _default = IceDataPipe; +exports["default"] = _default; + +},{"axios":88}],64:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _AdapterBase2 = _interopRequireDefault(require("./AdapterBase")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +/** + * IdNameAdapter + */ +var IdNameAdapter = /*#__PURE__*/function (_AdapterBase) { + _inherits(IdNameAdapter, _AdapterBase); + + var _super = _createSuper(IdNameAdapter); + + function IdNameAdapter(endPoint, tab, filter, orderBy) { + _classCallCheck(this, IdNameAdapter); + + return _super.call(this, endPoint, tab, filter, orderBy); + } + + _createClass(IdNameAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'name']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Name' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['name', { + label: 'Name', + type: 'text', + validation: '' + }]]; + } + }]); + + return IdNameAdapter; +}(_AdapterBase2["default"]); + +var _default = IdNameAdapter; +exports["default"] = _default; + +},{"./AdapterBase":57}],65:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _AdapterBase2 = _interopRequireDefault(require("./AdapterBase")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var LogViewAdapter = /*#__PURE__*/function (_AdapterBase) { + _inherits(LogViewAdapter, _AdapterBase); + + var _super = _createSuper(LogViewAdapter); + + function LogViewAdapter() { + _classCallCheck(this, LogViewAdapter); + + return _super.apply(this, arguments); + } + + _createClass(LogViewAdapter, [{ + key: "getLogs", + value: function getLogs(id) { + var object = { + id: id + }; + var reqJson = JSON.stringify(object); + var callBackData = []; + callBackData.callBackData = []; + callBackData.callBackSuccess = 'getLogsSuccessCallBack'; + callBackData.callBackFail = 'getLogsFailCallBack'; + this.customAction('getLogs', "admin=".concat(this.modulePathName), reqJson, callBackData); + } + }, { + key: "getLogsSuccessCallBack", + value: function getLogsSuccessCallBack(callBackData) { + var tableLog = '_days_
    Notes
    '; + var rowLog = '_date_  _status_
    _note_'; + var logs = callBackData.data; + var html = ''; + var rowsLogs = ''; + + for (var i = 0; i < logs.length; i++) { + var trow = rowLog; + trow = trow.replace(/_date_/g, logs[i].time); + trow = trow.replace(/_status_/g, "".concat(logs[i].status_from, " -> ").concat(logs[i].status_to)); + trow = trow.replace(/_note_/g, logs[i].note); + rowsLogs += trow; + } + + if (rowsLogs !== '') { + tableLog = tableLog.replace('_days_', rowsLogs); + html += tableLog; + } + + this.showMessage('Logs', html); + timeUtils.convertToRelativeTime($('.logTime')); + } // eslint-disable-next-line no-unused-vars + + }, { + key: "getLogsFailCallBack", + value: function getLogsFailCallBack(callBackData) { + this.showMessage('Error', 'Error occured while getting data'); + } + }]); + + return LogViewAdapter; +}(_AdapterBase2["default"]); + +var _default = LogViewAdapter; +exports["default"] = _default; + +},{"./AdapterBase":57}],66:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var axios = require('axios'); + +var MasterDataReader = /*#__PURE__*/function () { + function MasterDataReader(adapter) { + _classCallCheck(this, MasterDataReader); + + this.adapter = adapter; + this.requestCache = this.adapter.requestCache; + } + + _createClass(MasterDataReader, [{ + key: "fetchMasterData", + value: function fetchMasterData(fieldMaster) { + var _this = this; + + var method = ''; + var methodParams = ''; + + if (fieldMaster[3] != null) { + method = fieldMaster[3]; + } + + if (fieldMaster[4] != null) { + methodParams = JSON.stringify(fieldMaster[4]); + } + + var key = this.requestCache.getKey(this.adapter.moduleRelativeURL, { + t: fieldMaster[0], + key: fieldMaster[1], + value: fieldMaster[2], + method: method, + methodParams: methodParams, + a: 'getFieldValues' + }); + var cacheData = this.requestCache.getData(key); + + if (cacheData != null && cacheData.status === 'SUCCESS') { + return new Promise(function (resolve, reject) { + return resolve(cacheData.data); + }); + } + + var urlData = { + t: fieldMaster[0], + key: fieldMaster[1], + value: fieldMaster[2], + method: method, + methodParams: methodParams, + a: 'getFieldValues' + }; + var url = "".concat(this.adapter.moduleRelativeURL, "?_url=1"); + + for (var index in urlData) { + url = "".concat(url, "&").concat(index, "=").concat(encodeURIComponent(urlData[index])); + } // TODO - Should be a get request + + + return axios.post(url, {}).then(function (response) { + if (response.data.status !== 'SUCCESS') { + throw Error("Response for ".concat(key, " failed")); + } + + _this.requestCache.setData(key, response.data); + + return response.data.data; + }); + } + }, { + key: "updateAllMasterData", + value: function updateAllMasterData() { + var _this2 = this; + + var remoteSourceFields = this.adapter.getRemoteSourceFields(); + var promiseList = []; + + for (var i = 0; i < remoteSourceFields.length; i++) { + var fieldRemote = remoteSourceFields[i]; + + if (fieldRemote[1]['remote-source'] !== undefined && fieldRemote[1]['remote-source'] != null) { + (function () { + var key = "".concat(fieldRemote[1]['remote-source'][0], "_").concat(fieldRemote[1]['remote-source'][1], "_").concat(fieldRemote[1]['remote-source'][2]); + + if (fieldRemote[1]['remote-source'].length === 4) { + key = "".concat(key, "_").concat(fieldRemote[1]['remote-source'][3]); + } + + var masterDataPromise = _this2.fetchMasterData(fieldRemote[1]['remote-source']).then(function (data) { + _this2.adapter.fieldMasterData[key] = data; + }); + + promiseList.push(masterDataPromise); + })(); + } + } + + return Promise.all(promiseList); + } + }]); + + return MasterDataReader; +}(); + +var _default = MasterDataReader; +exports["default"] = _default; + +},{"axios":88}],67:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _FormValidation = _interopRequireDefault(require("./FormValidation")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +/** + * The base class for providing core functions to all module classes. + * @class Base.js + */ +var ModuleBase = /*#__PURE__*/function () { + function ModuleBase() { + _classCallCheck(this, ModuleBase); + + this.deleteParams = {}; + this.createRemoteTable = false; + this.instanceId = 'None'; + this.ga = []; + this.showAddNew = true; + this.showEdit = true; + this.showDelete = true; + this.showSave = true; + this.showCancel = true; + this.showFormOnPopup = false; + this.filtersAlreadySet = false; + this.currentFilterString = ''; + this.sorting = 0; + this.settings = {}; + this.translations = {}; + this.customFields = []; + this.csrfRequired = false; + this.fieldTemplates = null; + this.templates = null; + this.customTemplates = null; + this.emailTemplates = null; + this.fieldMasterData = {}; + this.fieldMasterDataKeys = {}; + this.fieldMasterDataCallback = null; + this.sourceMapping = null; + this.currentId = null; + this.currentElement = null; + this.user = null; + this.currentProfile = null; + this.permissions = {}; + this.baseUrl = null; + this.clientUrl = null; + this.that = this; + } // eslint-disable-next-line no-unused-vars + + + _createClass(ModuleBase, [{ + key: "init", + value: function init(appName, currentView, dataUrl, permissions) {} + }, { + key: "initForm", + value: function initForm() {} + }, { + key: "setObjectTypeName", + value: function setObjectTypeName(objectTypeName) { + this.objectTypeName = objectTypeName; + } + /** + * Some browsers do not support sending JSON in get parameters. Set this to true to avoid sending JSON + * @method setNoJSONRequests + * @param val {Boolean} + */ + + }, { + key: "setNoJSONRequests", + value: function setNoJSONRequests(val) { + this.noJSONRequests = val; + } + }, { + key: "setPermissions", + value: function setPermissions(permissions) { + this.permissions = permissions; + } + }, { + key: "sortingStarted", + value: function sortingStarted(val) { + this.sorting = val; + } + /** + * Check if the current user has a permission + * @method checkPermission + * @param permission {String} + * @example + * this.checkPermission("Upload/Delete Profile Image") + */ + + }, { + key: "checkPermission", + value: function checkPermission(permission) { + if (this.permissions[permission] === undefined || this.permissions[permission] == null || this.permissions[permission] === 'Yes') { + return 'Yes'; + } + + return this.permissions[permission]; + } + }, { + key: "setBaseUrl", + value: function setBaseUrl(url) { + this.baseUrl = url; + } + }, { + key: "setClientUrl", + value: function setClientUrl(url) { + this.clientUrl = url; + } + }, { + key: "setUser", + value: function setUser(user) { + this.user = user; + } + }, { + key: "getUser", + value: function getUser() { + return this.user; + } + }, { + key: "setInstanceId", + value: function setInstanceId(id) { + this.instanceId = id; + } + }, { + key: "setCSRFRequired", + value: function setCSRFRequired(val) { + this.csrfRequired = val; + } + }, { + key: "scrollToTop", + value: function scrollToTop() { + $('html, body').animate({ + scrollTop: 0 + }, 'fast'); + } + }, { + key: "scrollToBottom", + value: function scrollToBottom() { + $('html, body').animate({ + scrollTop: $(document).height() + }, 'slow'); + } + }, { + key: "scrollToElement", + value: function scrollToElement(element) { + if ($(window).height() <= element.offset().top) { + $('html, body').animate({ + scrollTop: element.offset().top + }, 'slow'); + } + } + }, { + key: "scrollToElementBottom", + value: function scrollToElementBottom(element) { + if ($(window).height() <= element.offset().top + element.height()) { + $('html, body').animate({ + scrollTop: element.offset().top + element.height() + }, 'slow'); + } + } + }, { + key: "setTranslations", + value: function setTranslations(txt) { + this.translations = txt.messages['']; + } + }, { + key: "setTranslationsSubModules", + value: function setTranslationsSubModules(translations) { + this.translations = translations; + } + }, { + key: "gt", + value: function gt(key) { + if (this.translations[key] === undefined || this.translations[key] === null) { + console.log("Tr:".concat(key)); + return key; + } + + return this.translations[key][0]; + } + }, { + key: "addToLangTerms", + value: function addToLangTerms(key) { + var termsArr; + var terms = localStorage.getItem('terms'); + + if (terms === undefined) { + termsArr = {}; + } else { + try { + termsArr = JSON.parse(terms); + } catch (e) { + termsArr = {}; + } + } + + if (this.translations[key] === undefined) { + termsArr[key] = key; + localStorage.setItem('terms', JSON.stringify(termsArr)); + } + } + /** + * If this method returned false the action buttons in data table for modules will not be displayed. + * Override this method in module lib.js to hide action buttons + * @method showActionButtons + * @param permission {String} + * @example + * EmployeeLeaveEntitlementAdapter.method('showActionButtons() { + * return false; + * } + */ + + }, { + key: "showActionButtons", + value: function showActionButtons() { + return true; + } + }, { + key: "trackEvent", + value: function trackEvent(action, label, value) { + try { + if (label === undefined || label == null) { + this.ga.push(['_trackEvent', this.instanceId, action]); + } else if (value === undefined || value == null) { + this.ga.push(['_trackEvent', this.instanceId, action, label]); + } else { + this.ga.push(['_trackEvent', this.instanceId, action, label, value]); + } + } catch (e) {// Do nothing + } + } + }, { + key: "setCurrentProfile", + value: function setCurrentProfile(currentProfile) { + this.currentProfile = currentProfile; + } + /** + * Get the current profile + * @method getCurrentProfile + * @returns Profile of the current user if the profile is not switched if not switched profile + */ + + }, { + key: "getCurrentProfile", + value: function getCurrentProfile() { + return this.currentProfile; + } + /** + * Retrive data required to create select boxes for add new /edit forms for a given module. This is called when loading the module + * @method initFieldMasterData + * @param callback {Function} call this once loading completed + * @param callback {Function} call this once all field loading completed. This indicate that the form can be displayed saftly + * @example + * ReportAdapter.method('renderForm(object) { + * var that = this; + * this.processFormFieldsWithObject(object); + * var cb = function(){ + * that.super.renderForm(object); + * }; + * this.initFieldMasterData(cb); + * } + */ + + }, { + key: "initFieldMasterData", + value: function initFieldMasterData(callback, loadAllCallback, loadAllCallbackData) { + this.fieldMasterData = {}; + this.fieldMasterDataKeys = {}; + this.fieldMasterDataCallback = loadAllCallback; + this.fieldMasterDataCallbackData = loadAllCallbackData; + var remoteSourceFields = this.getRemoteSourceFields(); + + for (var i = 0; i < remoteSourceFields.length; i++) { + var fieldRemote = remoteSourceFields[i]; + + if (fieldRemote[1]['remote-source'] !== undefined && fieldRemote[1]['remote-source'] != null) { + // let key = `${fieldRemote[1]['remote-source'][0]}_${fieldRemote[1]['remote-source'][1]}_${fieldRemote[1]['remote-source'][2]}`; + // if (fieldRemote[1]['remote-source'].length === 4) { + // key = `${key}_${fieldRemote[1]['remote-source'][3]}`; + // } + var key = this.getRemoteSourceKey(fieldRemote); + this.fieldMasterDataKeys[key] = false; + var callBackData = {}; + callBackData.callBack = 'initFieldMasterDataResponse'; + callBackData.callBackData = [key]; + + if (callback !== null && callback !== undefined) { + callBackData.callBackSuccess = callback; + } + + this.getFieldValues(fieldRemote[1]['remote-source'], callBackData); + } + } + } + }, { + key: "initSourceMappings", + value: function initSourceMappings() { + this.sourceMapping = {}; + var remoteSourceFields = this.getRemoteSourceFields(); + + for (var i = 0; i < remoteSourceFields.length; i++) { + var fieldRemote = remoteSourceFields[i]; + + if (fieldRemote[1]['remote-source'] !== undefined && fieldRemote[1]['remote-source'] != null) { + this.sourceMapping[fieldRemote[0]] = fieldRemote[1]['remote-source']; + } + } + } + }, { + key: "getRemoteSourceKey", + value: function getRemoteSourceKey(field) { + var key = "".concat(field[1]['remote-source'][0], "_").concat(field[1]['remote-source'][1], "_").concat(field[1]['remote-source'][2]); + + if (field[1]['remote-source'].length > 3) { + key = "".concat(key, "_").concat(field[1]['remote-source'][3]); + } + + return key; + } + }, { + key: "getRemoteSourceFields", + value: function getRemoteSourceFields() { + var values; + var fields = this.getFormFields(); + var filterFields = this.getFilters(); + + if (filterFields != null) { + for (var j = 0; j < filterFields.length; j++) { + values = this.getMetaFieldValues(filterFields[j][0], fields); + + if (values == null || values.type !== 'select' && values.type !== 'select2' && values.type !== 'select2multi') { + fields.push(filterFields[j]); + } + } + } + + var remoteSourceFields = []; + var remoteSourceFieldKeys = []; + var field = null; + var fieldSub = null; + + for (var i = 0; i < fields.length; i++) { + field = fields[i]; + + if (field[1]['remote-source'] !== undefined && field[1]['remote-source'] !== null) { + var key = this.getRemoteSourceKey(field); + + if (remoteSourceFieldKeys.indexOf(key) < 0) { + remoteSourceFields.push(field); + remoteSourceFieldKeys.push(key); + } + } else if (field[1].form !== undefined && field[1].form !== null) { + for (var _j = 0; _j < field[1].form.length; _j++) { + fieldSub = field[1].form[_j]; + + if (fieldSub[1]['remote-source'] !== undefined && fieldSub[1]['remote-source'] !== null) { + var _key = this.getRemoteSourceKey(fieldSub); + + if (remoteSourceFieldKeys.indexOf(_key) < 0) { + remoteSourceFields.push(fieldSub); + remoteSourceFieldKeys.push(_key); + } + } + } + } + } + + return remoteSourceFields; + } + /** + * Pass true to this method after creating module JS object to open new/edit entry form for the module on a popup. + * @method setShowFormOnPopup + * @param val {Boolean} + * @example + * modJs.subModJsList['tabCandidateApplication'] = new CandidateApplicationAdapter('Application','CandidateApplication',{"candidate":data.id} + * modJs.subModJsList['tabCandidateApplication'].setShowFormOnPopup(true); + */ + + }, { + key: "setShowFormOnPopup", + value: function setShowFormOnPopup(val) { + this.showFormOnPopup = val; + } + /** + * Set this to true to if you need the datatable to load data page by page instead of loading all data at once. + * @method setRemoteTable + * @param val {Boolean} + * @example + * modJs.subModJsList['tabCandidateApplication'] = new CandidateApplicationAdapter('Application','CandidateApplication',{"candidate":data.id} + * modJs.subModJsList['tabCandidateApplication'].setRemoteTable(true); + */ + + }, { + key: "setRemoteTable", + value: function setRemoteTable(val) { + this.createRemoteTable = val; + } + }, { + key: "setSettings", + value: function setSettings(val) { + this.settings = val; + } + }, { + key: "getRemoteTable", + value: function getRemoteTable() { + return this.createRemoteTable; + } + }, { + key: "isAllLoaded", + value: function isAllLoaded(fieldMasterDataKeys) { + for (var key in fieldMasterDataKeys) { + if (fieldMasterDataKeys[key] === false) { + return false; + } + } + + return true; + } // eslint-disable-next-line no-unused-vars + + }, { + key: "initFieldMasterDataResponse", + value: function initFieldMasterDataResponse(key, data, callback, loadAllCallbackData) { + this.fieldMasterData[key] = data; + this.fieldMasterDataKeys[key] = true; + + if (callback !== undefined && callback !== null) { + callback(); + } + + if (this.fieldMasterDataCallback !== null && this.fieldMasterDataCallback !== undefined && this.isAllLoaded(this.fieldMasterDataKeys) && this.fieldMasterDataCallbackData !== null && this.fieldMasterDataCallbackData !== undefined) { + this.fieldMasterDataCallback(this.fieldMasterDataCallbackData); + } else if (this.fieldMasterDataCallback !== null && this.fieldMasterDataCallback !== undefined && this.isAllLoaded(this.fieldMasterDataKeys)) { + this.fieldMasterDataCallback(); + } + } + }, { + key: "getMetaFieldValues", + value: function getMetaFieldValues(key, fields) { + for (var i = 0; i < fields.length; i++) { + if (key === fields[i][0]) { + return fields[i][1]; + } + } + + return null; + } + }, { + key: "getThemeColors", + value: function getThemeColors() { + var colors = ['red', 'yellow', 'aqua', 'blue', 'light-blue', 'green', 'navy', 'teal', 'olive', 'orange', 'fuchsia', 'purple']; + return colors; + } + }, { + key: "getColorByRandomString", + value: function getColorByRandomString(string) { + var colors = this.getThemeColors(); + var k = string.charCodeAt(0); + return colors[k % colors.length]; + } + }, { + key: "getColorByFileType", + value: function getColorByFileType(type) { + type = type.toLowerCase(); + var colorMap = {}; + colorMap.pdf = 'red'; + colorMap.csv = 'yellow'; + colorMap.xls = 'green'; + colorMap.xlsx = 'green'; + colorMap.doc = 'light-blue'; + colorMap.docx = 'light-blue'; + colorMap.docx = 'blue'; + colorMap.ppt = 'orange'; + colorMap.pptx = 'orange'; + colorMap.jpg = 'teal'; + colorMap.jpeg = 'teal'; + colorMap.gif = 'green'; + colorMap.png = 'yellow'; + colorMap.bmp = 'fuchsia'; + + if (colorMap[type] !== undefined || colorMap[type] != null) { + return colorMap[type]; + } + + return this.getColorByRandomString(type); + } + }, { + key: "getIconByFileType", + value: function getIconByFileType(type) { + type = type.toLowerCase(); + var iconMap = {}; + iconMap.pdf = 'fa fa-file-pdf-o'; + iconMap.csv = 'fa fa fa-file-code-o'; + iconMap.xls = 'fa fa-file-excel-o'; + iconMap.xlsx = 'fa fa-file-excel-o'; + iconMap.doc = 'fa fa-file-word-o'; + iconMap.docx = 'fa fa-file-word-o'; + iconMap.ppt = 'fa fa-file-powerpoint-o'; + iconMap.pptx = 'fa fa-file-powerpoint-o'; + iconMap.jpg = 'fa fa-file-image-o'; + iconMap.jpeg = 'fa fa-file-image-o'; + iconMap.gif = 'fa fa-file-image-o'; + iconMap.png = 'fa fa-file-image-o'; + iconMap.bmp = 'fa fa-file-image-o'; + iconMap.txt = 'fa fa-file-text-o'; + iconMap.rtf = 'fa fa-file-text-o'; + + if (iconMap[type] !== undefined || iconMap[type] != null) { + return iconMap[type]; + } + + return 'fa fa-file-o'; + } + }, { + key: "getSourceMapping", + value: function getSourceMapping() { + return this.sourceMapping; + } + }, { + key: "setTesting", + value: function setTesting(testing) { + this.testing = testing; + } + }, { + key: "consoleLog", + value: function consoleLog(message) { + if (this.testing) { + console.log(message); + } + } + }, { + key: "setClientMessages", + value: function setClientMessages(msgList) { + this.msgList = msgList; + } + }, { + key: "setTemplates", + value: function setTemplates(templates) { + this.templates = templates; + } + }, { + key: "getWSProperty", + value: function getWSProperty(array, key) { + if (array.hasOwnProperty(key)) { + return array[key]; + } + + return null; + } + }, { + key: "getClientMessage", + value: function getClientMessage(key) { + return this.getWSProperty(this.msgList, key); + } + }, { + key: "getTemplate", + value: function getTemplate(key) { + return this.getWSProperty(this.templates, key); + } + }, { + key: "setGoogleAnalytics", + value: function setGoogleAnalytics(gaq) { + this.gaq = gaq; + } + }, { + key: "showView", + value: function showView(view) { + if (this.currentView != null) { + this.previousView = this.currentView; + $("#".concat(this.currentView)).hide(); + } + + $("#".concat(view)).show(); + this.currentView = view; + this.moveToTop(); + } + }, { + key: "showPreviousView", + value: function showPreviousView() { + this.showView(this.previousView); + } + }, { + key: "moveToTop", + value: function moveToTop() {} + }, { + key: "callFunction", + value: function callFunction(callback, cbParams, thisParam) { + if ($.isFunction(callback)) { + try { + if (thisParam === undefined || thisParam === null) { + callback.apply(document, cbParams); + } else { + callback.apply(thisParam, cbParams); + } + } catch (e) { + console.log(e.message); + } + } else { + var f = this[callback]; + + if ($.isFunction(f)) { + try { + f.apply(this, cbParams); + } catch (e) { + console.log(e.message); + } + } + } + } + }, { + key: "getTableTopButtonHtml", + value: function getTableTopButtonHtml() { + var html = ''; + + if (this.getShowAddNew()) { + html = ""); + } + + if (this.getFilters() != null) { + if (html !== '') { + html += '  '; + } + + html += ""); + html += '  '; + + if (this.filtersAlreadySet) { + html += ''; + } else { + html += ''; + } + } + + html = html.replace(/__id__/g, this.getTableName()); + + if (this.currentFilterString !== '' && this.currentFilterString != null) { + html = html.replace(/__filterString__/g, this.currentFilterString); + } else { + html = html.replace(/__filterString__/g, 'Reset Filters'); + } + + if (html !== '') { + html = "
    ".concat(html, "
    "); + } + + return html; + } + }, { + key: "getActionButtonHeader", + value: function getActionButtonHeader() { + return { + sTitle: '', + sClass: 'center' + }; + } + }, { + key: "getTableHTMLTemplate", + value: function getTableHTMLTemplate() { + return '
    '; + } + }, { + key: "isSortable", + value: function isSortable() { + return true; + } + /** + * Create the data table on provided element id + * @method createTable + * @param val {Boolean} + */ + + }, { + key: "createTable", + value: function createTable(elementId) { + var that = this; + + if (this.getRemoteTable()) { + this.createTableServer(elementId); + return; + } + + var headers = this.getHeaders(); // add translations + + for (var index in headers) { + headers[index].sTitle = this.gt(headers[index].sTitle); + } + + var data = this.getTableData(); + + if (this.showActionButtons()) { + headers.push(this.getActionButtonHeader()); + } + + if (this.showActionButtons()) { + for (var i = 0; i < data.length; i++) { + data[i].push(this.getActionButtonsHtml(data[i][0], data[i])); + } + } + + var html = ''; + html = this.getTableTopButtonHtml() + this.getTableHTMLTemplate(); + /* + if(this.getShowAddNew()){ + html = this.getTableTopButtonHtml()+'
    '; + }else{ + html = '
    '; + } + */ + // Find current page + + var activePage = $("#".concat(elementId, " .dataTables_paginate .active a")).html(); + var start = 0; + + if (activePage !== undefined && activePage != null) { + start = parseInt(activePage, 10) * 15 - 15; + } + + $("#".concat(elementId)).html(html); + var dataTableParams = { + oLanguage: { + sLengthMenu: '_MENU_ records per page' + }, + aaData: data, + aoColumns: headers, + bSort: that.isSortable(), + iDisplayLength: 15, + iDisplayStart: start + }; + var customTableParams = this.getCustomTableParams(); + $.extend(dataTableParams, customTableParams); + $("#".concat(elementId, " #grid")).dataTable(dataTableParams); + $('.dataTables_paginate ul').addClass('pagination'); + $('.dataTables_length').hide(); + $('.dataTables_filter input').addClass('form-control'); + $('.dataTables_filter input').attr('placeholder', 'Search'); + $('.dataTables_filter label').contents().filter(function () { + return this.nodeType === 3; + }).remove(); + $('.tableActionButton').tooltip(); + } + /** + * Create a data table on provided element id which loads data page by page + * @method createTableServer + * @param val {Boolean} + */ + + }, { + key: "createTableServer", + value: function createTableServer(elementId) { + var that = this; + var headers = this.getHeaders(); + headers.push({ + sTitle: '', + sClass: 'center' + }); // add translations + + for (var index in headers) { + headers[index].sTitle = this.gt(headers[index].sTitle); + } + + var html = ''; + html = this.getTableTopButtonHtml() + this.getTableHTMLTemplate(); // Find current page + + var activePage = $("#".concat(elementId, " .dataTables_paginate .active a")).html(); + var start = 0; + + if (activePage !== undefined && activePage != null) { + start = parseInt(activePage, 10) * 15 - 15; + } + + $("#".concat(elementId)).html(html); + var dataTableParams = { + oLanguage: { + sLengthMenu: '_MENU_ records per page' + }, + bProcessing: true, + bServerSide: true, + sAjaxSource: that.getDataUrl(that.getDataMapping()), + aoColumns: headers, + bSort: that.isSortable(), + parent: that, + iDisplayLength: 15, + iDisplayStart: start + }; + + if (this.showActionButtons()) { + dataTableParams.aoColumnDefs = [{ + fnRender: that.getActionButtons, + aTargets: [that.getDataMapping().length] + }]; + } + + var customTableParams = this.getCustomTableParams(); + $.extend(dataTableParams, customTableParams); + $("#".concat(elementId, " #grid")).dataTable(dataTableParams); + $('.dataTables_paginate ul').addClass('pagination'); + $('.dataTables_length').hide(); + $('.dataTables_filter input').addClass('form-control'); + $('.dataTables_filter input').attr('placeholder', 'Search'); + $('.dataTables_filter label').contents().filter(function () { + return this.nodeType === 3; + }).remove(); + $('.tableActionButton').tooltip(); + } + /** + * This should be overridden in module lib.js classes to return module headers which are used to create the data table. + * @method getHeaders + * @example + SettingAdapter.method('getHeaders() { + return [ + { "sTitle": "ID" ,"bVisible":false}, + { "sTitle": "Name" }, + { "sTitle": "Value"}, + { "sTitle": "Details"} + ]; + } + */ + + }, { + key: "getHeaders", + value: function getHeaders() {} + /** + * This should be overridden in module lib.js classes to return module field values which are used to create the data table. + * @method getDataMapping + * @example + SettingAdapter.method('getDataMapping() { + return [ + "id", + "name", + "value", + "description" + ]; + } + */ + + }, { + key: "getDataMapping", + value: function getDataMapping() {} + /** + * This should be overridden in module lib.js classes to return module from fields which are used to create the add/edit form and also used for initializing select box values in form. + * @method getFormFields + * @example + SettingAdapter.method('getFormFields() { + return [ + [ "id", {"label":"ID","type":"hidden"}], + [ "value", {"label":"Value","type":"text","validation":"none"}] + ]; + } + */ + + }, { + key: "getFormFields", + value: function getFormFields() {} + }, { + key: "getTableColumns", + value: function getTableColumns() { + return []; + } + }, { + key: "getTableData", + value: function getTableData() {} + /** + * This can be overridden in module lib.js classes inorder to show a filter form + * @method getFilters + * @example + EmployeeAdapter.method('getFilters() { + return [ + [ "job_title", {"label":"Job Title","type":"select2","allow-null":true,"null-label":"All Job Titles","remote-source":["JobTitle","id","name"]}], + [ "department", {"label":"Department","type":"select2","allow-null":true,"null-label":"All Departments","remote-source":["CompanyStructure","id","title"]}], + [ "supervisor", {"label":"Supervisor","type":"select2","allow-null":true,"null-label":"Anyone","remote-source":["Employee","id","first_name+last_name"]}] + ]; + } + */ + + }, { + key: "getFilters", + value: function getFilters() { + return null; + } + /** + * Show the edit form for an item + * @method edit + * @param id {int} id of the item to edit + */ + + }, { + key: "edit", + value: function edit(id) { + this.currentId = id; + this.getElement(id, []); + } + }, { + key: "copyRow", + value: function copyRow(id) { + this.getElement(id, [], true); + } + }, { + key: "renderModel", + value: function renderModel(id, header, body) { + $("#".concat(id, "ModelBody")).html(''); + + if (body === undefined || body == null) { + body = ''; + } + + $("#".concat(id, "ModelLabel")).html(header); + $("#".concat(id, "ModelBody")).html(body); + } + }, { + key: "renderYesNoModel", + value: function renderYesNoModel(header, body, yesBtnName, noBtnName, callback, callbackParams) { + var that = this; + var modelId = '#yesnoModel'; + + if (body === undefined || body == null) { + body = ''; + } + + $("".concat(modelId, "Label")).html(header); + $("".concat(modelId, "Body")).html(body); + + if (yesBtnName != null) { + $("".concat(modelId, "YesBtn")).html(yesBtnName); + } + + if (noBtnName != null) { + $("".concat(modelId, "NoBtn")).html(noBtnName); + } + + $("".concat(modelId, "YesBtn")).off().on('click', function () { + if (callback !== undefined && callback != null) { + callback.apply(that, callbackParams); + that.cancelYesno(); + } + }); + $(modelId).modal({ + backdrop: 'static' + }); + } + }, { + key: "renderModelFromDom", + value: function renderModelFromDom(id, header, element) { + $("#".concat(id, "ModelBody")).html(''); + + if (element === undefined || element == null) { + element = $('
    '); + } + + $("#".concat(id, "ModelLabel")).html(header); + $("#".concat(id, "ModelBody")).html(''); + $("#".concat(id, "ModelBody")).append(element); + } + /** + * Delete an item + * @method deleteRow + * @param id {int} id of the item to edit + */ + + }, { + key: "deleteRow", + value: function deleteRow(id) { + this.deleteParams.id = id; + this.renderModel('delete', 'Confirm Deletion', 'Are you sure you want to delete this item ?'); + $('#deleteModel').modal('show'); + } + /** + * Show a popup with message + * @method showMessage + * @param title {String} title of the message box + * @param message {String} message + * @param closeCallback {Function} this will be called once the dialog is closed (optional) + * @param closeCallback {Function} data to pass to close callback (optional) + * @param closeCallbackData + * @param isPlain {Boolean} if true buttons are not shown (optional / default = true) + * @example + * this.showMessage("Error Occured while Applying Leave", callBackData); + */ + + }, { + key: "showMessage", + value: function showMessage(title, message) { + var closeCallback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; + var closeCallbackData = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; + var isPlain = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; + var that = this; + var modelId = ''; + + if (isPlain) { + modelId = '#plainMessageModel'; + } else { + modelId = '#messageModel'; + } + + $(modelId).off(); + + if (isPlain) { + this.renderModel('plainMessage', title, message); + } else { + this.renderModel('message', title, message); + } + + if (closeCallback !== null && closeCallback !== undefined) { + $(modelId).modal({ + show: true + }); + $(modelId).on('hidden.bs.modal', function () { + closeCallback.apply(that, closeCallbackData); + $('.modal-backdrop').remove(); + }); + } else { + $(modelId).modal({ + backdrop: 'static' + }); + } + } + }, { + key: "showDomElement", + value: function showDomElement(title, element, closeCallback, closeCallbackData, isPlain) { + var that = this; + var modelId = ''; + + if (isPlain) { + modelId = '#dataMessageModel'; + } else { + modelId = '#messageModel'; + } + + $(modelId).unbind('hide'); + + if (isPlain) { + this.renderModelFromDom('dataMessage', title, element); + } else { + this.renderModelFromDom('message', title, element); + } + + if (closeCallback !== null && closeCallback !== undefined) { + $(modelId).modal({ + show: true + }); + $(modelId).on('hidden.bs.modal', function () { + closeCallback.apply(that, closeCallbackData); + $('.modal-backdrop').remove(); + }); + } else { + $(modelId).modal({ + backdrop: 'static' + }); + } + } + }, { + key: "confirmDelete", + value: function confirmDelete() { + if (this.deleteParams.id !== undefined || this.deleteParams.id != null) { + this.deleteObj(this.deleteParams.id, []); + } + + $('#deleteModel').modal('hide'); + } + }, { + key: "cancelDelete", + value: function cancelDelete() { + $('#deleteModel').modal('hide'); + this.deleteParams.id = null; + } + }, { + key: "closeMessage", + value: function closeMessage() { + $('#messageModel').modal('hide'); + } + }, { + key: "cancelYesno", + value: function cancelYesno() { + $('#yesnoModel').modal('hide'); + } + }, { + key: "closePlainMessage", + value: function closePlainMessage() { + $('#plainMessageModel').modal('hide'); + $('#dataMessageModel').modal('hide'); + } + }, { + key: "closeDataMessage", + value: function closeDataMessage() { + $('#dataMessageModel').modal('hide'); + } + /** + * Create or edit an element + * @method save + * @param getFunctionCallBackData {Array} once a success is returned call get() function for this module with these parameters + * @param successCallback {Function} this will get called after success response + */ + + }, { + key: "save", + value: function save(callGetFunction, successCallback) { + var validator = new _FormValidation["default"]("".concat(this.getTableName(), "_submit"), true, { + ShowPopup: false, + LabelErrorClass: 'error' + }); + + if (validator.checkValues()) { + var params = validator.getFormParameters(); + params = this.forceInjectValuesBeforeSave(params); + var msg = this.doCustomValidation(params); + + if (msg == null) { + if (this.csrfRequired) { + params.csrf = $("#".concat(this.getTableName(), "Form")).data('csrf'); + } + + var id = $("#".concat(this.getTableName(), "_submit #id")).val(); + + if (id != null && id !== undefined && id !== '') { + params.id = id; + } + + params = this.makeEmptyDateFieldsNull(params); + this.add(params, [], callGetFunction, successCallback); + } else { + $("#".concat(this.getTableName(), "Form .label")).html(msg); + $("#".concat(this.getTableName(), "Form .label")).show(); + this.scrollToTop(); + } + } + } + }, { + key: "makeEmptyDateFieldsNull", + value: function makeEmptyDateFieldsNull(params) { + var fields = this.getFormFields(); + fields.forEach(function (field) { + if ((field[1].type === 'date' || field[1].type === 'datetime') && (params[field[0]] === '' || params[field[0]] === '0000-00-00' || params[field[0]] === '0000-00-00 00:00:00')) { + if (field[1].validation === 'none') { + params[field[0]] = 'NULL'; + } else { + delete params[field[0]]; + } + } + }); + return params; + } + }, { + key: "validatePassword", + value: function validatePassword(password) { + if (password.length < 8) { + return this.gt('Password too short'); + } + + if (password.length > 30) { + return this.gt('Password too long'); + } + + var numberTester = /.*[0-9]+.*$/; + + if (!password.match(numberTester)) { + return this.gt('Password must include at least one number'); + } + + var lowerTester = /.*[a-z]+.*$/; + + if (!password.match(lowerTester)) { + return this.gt('Password must include at least one lowercase letter'); + } + + var upperTester = /.*[A-Z]+.*$/; + + if (!password.match(upperTester)) { + return this.gt('Password must include at least one uppercase letter'); + } + + var symbolTester = /.*[\W]+.*$/; + + if (!password.match(symbolTester)) { + return this.gt('Password must include at least one symbol'); + } + + return null; + } + /** + * Override this method to inject attitional parameters or modify existing parameters retrived from + * add/edit form before sending to the server + * @method forceInjectValuesBeforeSave + * @param params {Array} keys and values in form + * @returns {Array} modified parameters + */ + + }, { + key: "forceInjectValuesBeforeSave", + value: function forceInjectValuesBeforeSave(params) { + return params; + } + /** + * Override this method to do custom validations at client side + * @method doCustomValidation + * @param params {Array} keys and values in form + * @returns {Null or String} return null if validation success, returns error message if unsuccessful + * @example + EmployeeLeaveAdapter.method('doCustomValidation(params) { + try{ + if(params['date_start'] != params['date_end']){ + var ds = new Date(params['date_start']); + var de = new Date(params['date_end']); + if(de < ds){ + return "Start date should be earlier than end date of the leave period"; + } + } + }catch(e){ + } + return null; + } + */ + // eslint-disable-next-line no-unused-vars + + }, { + key: "doCustomValidation", + value: function doCustomValidation(params) { + return null; + } + }, { + key: "filterQuery", + value: function filterQuery() { + var validator = new _FormValidation["default"]("".concat(this.getTableName(), "_filter"), true, { + ShowPopup: false, + LabelErrorClass: 'error' + }); + + if (validator.checkValues()) { + var params = validator.getFormParameters(); + + if (this.doCustomFilterValidation(params)) { + // remove null params + for (var prop in params) { + if (params.hasOwnProperty(prop)) { + if (params[prop] === 'NULL') { + delete params[prop]; + } + } + } + + this.setFilter(params); + this.filtersAlreadySet = true; + $("#".concat(this.getTableName(), "_resetFilters")).show(); + this.currentFilterString = this.getFilterString(params); + this.get([]); + this.closePlainMessage(); + } + } + } + }, { + key: "getFilterString", + value: function getFilterString(filters) { + var str = ''; + var rmf; + var source; + var values; + var select2MVal; + var value; + var valueOrig; + var filterFields = this.getFilters(); + + if (values == null) { + values = []; + } + + for (var prop in filters) { + if (filters.hasOwnProperty(prop)) { + values = this.getMetaFieldValues(prop, filterFields); + + if (!values) { + continue; + } + + value = ''; + valueOrig = null; + + if (values.type === 'select' || values.type === 'select2') { + if (values['remote-source'] !== undefined && values['remote-source'] != null) { + rmf = values['remote-source']; + + if (filters[prop] === 'NULL') { + if (values['null-label'] !== undefined && values['null-label'] != null) { + value = values['null-label']; + } else { + value = 'Not Selected'; + } + } else { + var key = "".concat(rmf[0], "_").concat(rmf[1], "_").concat(rmf[2]); + + if (rmf.length > 3) { + key = "".concat(key, "_").concat(rmf[3]); + } // value = this.fieldMasterData[`${rmf[0]}_${rmf[1]}_${rmf[2]}`][filters[prop]]; + + + value = this.fieldMasterData[key][filters[prop]]; + valueOrig = value; + } + } else { + source = values.source[0]; + + if (filters[prop] === 'NULL') { + if (values['null-label'] !== undefined && values['null-label'] != null) { + value = values['null-label']; + } else { + value = 'Not Selected'; + } + } else { + for (var i = 0; i < source.length; i++) { + if (filters[prop] === values.source[i][0]) { + value = values.source[i][1]; + valueOrig = value; + break; + } + } + } + } + } else if (values.type === 'select2multi') { + select2MVal = []; + + try { + select2MVal = JSON.parse(filters[prop]); + } catch (e) {// Do nothing + } + + value = select2MVal.join(','); + + if (value !== '') { + valueOrig = value; + } + } else { + value = filters[prop]; + + if (value !== '') { + valueOrig = value; + } + } + + if (valueOrig != null) { + if (str !== '') { + str += ' | '; + } + + str += "".concat(values.label, " = ").concat(value); + } + } + } + + return str; + } + /** + * Override this method to do custom validations at client side for values selected in filters + * @method doCustomFilterValidation + * @param params {Array} keys and values in form + * @returns {Null or String} return null if validation success, returns error message if unsuccessful + */ + + }, { + key: "doCustomFilterValidation", + value: function doCustomFilterValidation(params) { + return true; + } + /** + * Reset selected filters + * @method resetFilters + */ + + }, { + key: "resetFilters", + value: function resetFilters() { + this.filter = this.origFilter; + this.filtersAlreadySet = false; + $("#".concat(this.getTableName(), "_resetFilters")).hide(); + this.currentFilterString = ''; + this.get([]); + } + }, { + key: "showFilters", + value: function showFilters(object) { + var formHtml = this.templates.filterTemplate; + var html = ''; + var fields = this.getFilters(); + + for (var i = 0; i < fields.length; i++) { + var metaField = this.getMetaFieldForRendering(fields[i][0]); + + if (metaField === '' || metaField === undefined) { + html += this.renderFormField(fields[i]); + } else { + var metaVal = object[metaField]; + + if (metaVal !== '' && metaVal != null && metaVal !== undefined && metaVal.trim() !== '') { + html += this.renderFormField(JSON.parse(metaVal)); + } else { + html += this.renderFormField(fields[i]); + } + } + } + + formHtml = formHtml.replace(/_id_/g, "".concat(this.getTableName(), "_filter")); + formHtml = formHtml.replace(/_fields_/g, html); + var randomFormId = this.generateRandom(14); + var $tempDomObj = $('
    '); + $tempDomObj.attr('id', randomFormId); + $tempDomObj.html(formHtml); + $tempDomObj.find('.datefield').datepicker({ + viewMode: 2 + }); + $tempDomObj.find('.timefield').datetimepicker({ + language: 'en', + pickDate: false + }); + $tempDomObj.find('.datetimefield').datetimepicker({ + language: 'en' + }); + $tempDomObj.find('.colorpick').colorpicker(); + tinymce.init({ + selector: "#".concat($tempDomObj.attr('id'), " .tinymce"), + height: '400' + }); + $tempDomObj.find('.simplemde').each(function () { + var simplemde = new SimpleMDE({ + element: $(this)[0] + }); + $(this).data('simplemde', simplemde); // simplemde.value($(this).val()); + }); // $tempDomObj.find('.select2Field').select2(); + + $tempDomObj.find('.select2Field').each(function () { + $(this).select2().select2('val', $(this).find('option:eq(0)').val()); + }); + $tempDomObj.find('.select2Multi').each(function () { + $(this).select2().on('change', function (e) { + var parentRow = $(this).parents('.row'); + var height = parentRow.find('.select2-choices').height(); + parentRow.height(parseInt(height, 10)); + }); + }); + /* + $tempDomObj.find('.signatureField').each(function() { + $(this).data('signaturePad',new SignaturePad($(this))); + }); + */ + // var tHtml = $tempDomObj.wrap('
    ').parent().html(); + + this.showDomElement('Edit', $tempDomObj, null, null, true); + $('.filterBtn').off(); + $('.filterBtn').on('click', function (e) { + e.preventDefault(); + e.stopPropagation(); + + try { + modJs.filterQuery(); + } catch (err) { + console.log(err); + console.log(err.message); + } + + return false; + }); + + if (this.filter !== undefined && this.filter != null && this.filter !== '') { + this.fillForm(this.filter, "#".concat(this.getTableName(), "_filter"), this.getFilters()); + } + } + /** + * Override this method in your module class to make changes to data fo the form before showing the form + * @method preRenderForm + * @param object {Array} keys value list for populating form + */ + + }, { + key: "preRenderForm", + value: function preRenderForm(object) {} + /** + * Create the form + * @method renderForm + * @param object {Array} keys value list for populating form + */ + + }, { + key: "renderForm", + value: function renderForm(object) { + var signatureIds = []; + + if (object == null || object === undefined) { + this.currentId = null; + } + + this.preRenderForm(object); + var formHtml = this.templates.formTemplate; + var html = ''; + var fields = this.getFormFields(); + + for (var i = 0; i < fields.length; i++) { + var metaField = this.getMetaFieldForRendering(fields[i][0]); + + if (metaField === '' || metaField === undefined) { + html += this.renderFormField(fields[i]); + } else { + var metaVal = object[metaField]; + + if (metaVal !== '' && metaVal != null && metaVal !== undefined && metaVal.trim() !== '') { + html += this.renderFormField(JSON.parse(metaVal)); + } else { + html += this.renderFormField(fields[i]); + } + } + } + + formHtml = formHtml.replace(/_id_/g, "".concat(this.getTableName(), "_submit")); + formHtml = formHtml.replace(/_fields_/g, html); + var $tempDomObj; + var randomFormId = this.generateRandom(14); + + if (!this.showFormOnPopup) { + $tempDomObj = $("#".concat(this.getTableName(), "Form")); + } else { + $tempDomObj = $('
    '); + $tempDomObj.attr('id', randomFormId); + } + + $tempDomObj.html(formHtml); + $tempDomObj.find('.datefield').datepicker({ + viewMode: 2 + }); + $tempDomObj.find('.timefield').datetimepicker({ + language: 'en', + pickDate: false + }); + $tempDomObj.find('.datetimefield').datetimepicker({ + language: 'en' + }); + $tempDomObj.find('.colorpick').colorpicker(); + tinymce.init({ + selector: "#".concat($tempDomObj.attr('id'), " .tinymce"), + height: '400' + }); + $tempDomObj.find('.simplemde').each(function () { + var simplemde = new SimpleMDE({ + element: $(this)[0] + }); + $(this).data('simplemde', simplemde); // simplemde.value($(this).val()); + }); + var codeMirror = this.codeMirror; + + if (codeMirror) { + $tempDomObj.find('.code').each(function () { + var editor = codeMirror.fromTextArea($(this)[0], { + lineNumbers: false, + matchBrackets: true, + continueComments: 'Enter', + extraKeys: { + 'Ctrl-Q': 'toggleComment' + } + }); + $(this).data('codemirror', editor); + }); + } // $tempDomObj.find('.select2Field').select2(); + + + $tempDomObj.find('.select2Field').each(function () { + $(this).select2().select2('val', $(this).find('option:eq(0)').val()); + }); + $tempDomObj.find('.select2Multi').each(function () { + $(this).select2().on('change', function (e) { + var parentRow = $(this).parents('.row'); + var height = parentRow.find('.select2-choices').height(); + parentRow.height(parseInt(height, 10)); + }); + }); + $tempDomObj.find('.signatureField').each(function () { + // $(this).data('signaturePad',new SignaturePad($(this))); + signatureIds.push($(this).attr('id')); + }); + + for (var _i = 0; _i < fields.length; _i++) { + if (fields[_i][1].type === 'datagroup') { + $tempDomObj.find("#".concat(fields[_i][0])).data('field', fields[_i]); + } + } + + if (this.showSave === false) { + $tempDomObj.find('.saveBtn').remove(); + } else { + $tempDomObj.find('.saveBtn').off(); + $tempDomObj.find('.saveBtn').data('modJs', this); + $tempDomObj.find('.saveBtn').on('click', function () { + if ($(this).data('modJs').saveSuccessItemCallback != null && $(this).data('modJs').saveSuccessItemCallback !== undefined) { + $(this).data('modJs').save($(this).data('modJs').retriveItemsAfterSave(), $(this).data('modJs').saveSuccessItemCallback); + } else { + $(this).data('modJs').save(); + } + + return false; + }); + } + + if (this.showCancel === false) { + $tempDomObj.find('.cancelBtn').remove(); + } else { + $tempDomObj.find('.cancelBtn').off(); + $tempDomObj.find('.cancelBtn').data('modJs', this); + $tempDomObj.find('.cancelBtn').on('click', function () { + $(this).data('modJs').cancel(); + return false; + }); + } // Input mask + + + $tempDomObj.find('[mask]').each(function () { + $(this).inputmask($(this).attr('mask')); + }); + $tempDomObj.find('[datemask]').each(function () { + $(this).inputmask({ + mask: 'y-1-2', + placeholder: 'YYYY-MM-DD', + leapday: '-02-29', + separator: '-', + alias: 'yyyy/mm/dd' + }); + }); + $tempDomObj.find('[datetimemask]').each(function () { + $(this).inputmask('datetime', { + mask: 'y-2-1 h:s:00', + placeholder: 'YYYY-MM-DD hh:mm:ss', + leapday: '-02-29', + separator: '-', + alias: 'yyyy/mm/dd' + }); + }); + + if (!this.showFormOnPopup) { + $("#".concat(this.getTableName(), "Form")).show(); + $("#".concat(this.getTableName())).hide(); + + for (var _i2 = 0; _i2 < signatureIds.length; _i2++) { + $("#".concat(signatureIds[_i2])).data('signaturePad', new SignaturePad(document.getElementById(signatureIds[_i2]))); + } + + if (object !== undefined && object != null) { + this.fillForm(object); + } else { + this.setDefaultValues(); + } + + this.scrollToTop(); + } else { + // var tHtml = $tempDomObj.wrap('
    ').parent().html(); + // this.showMessage("Edit",tHtml,null,null,true); + this.showMessage('Edit', '', null, null, true); + $('#plainMessageModel .modal-body').html(''); + $('#plainMessageModel .modal-body').append($tempDomObj); + + for (var _i3 = 0; _i3 < signatureIds.length; _i3++) { + $("#".concat(signatureIds[_i3])).data('signaturePad', new SignaturePad(document.getElementById(signatureIds[_i3]))); + } + + if (object !== undefined && object != null) { + this.fillForm(object, "#".concat(randomFormId)); + } else { + this.setDefaultValues("#".concat(randomFormId)); + } + } + + this.postRenderForm(object, $tempDomObj); + } + }, { + key: "setDefaultValues", + value: function setDefaultValues(formId, fields) { + if (fields == null || fields === undefined) { + fields = this.getFormFields(); + } + + if (formId == null || formId === undefined || formId === '') { + formId = "#".concat(this.getTableName(), "Form"); + } + + for (var i = 0; i < fields.length; i++) { + if (fields[i][1].type !== 'text' && fields[i][1].type !== 'textarea') { + continue; + } + + if (fields[i][1]["default"] !== undefined && fields[i][1]["default"] !== null) { + $("".concat(formId, " #").concat(fields[i][0])).val(fields[i][1]["default"]); + } + } + } + }, { + key: "retriveItemsAfterSave", + value: function retriveItemsAfterSave() { + return true; + } + /** + * Override this method in your module class to make changes to data fo the form after showing it + * @method postRenderForm + * @param object {Array} keys value list for populating form + * @param $tempDomObj {DOM} a DOM element for the form + * @example + * UserAdapter.method('postRenderForm(object, $tempDomObj) { + if(object == null || object == undefined){ + $tempDomObj.find("#changePasswordBtn").remove(); + } + } + */ + + }, { + key: "postRenderForm", + value: function postRenderForm(object, $tempDomObj) {} + /** + * Convert data group field to HTML + * @method dataGroupToHtml + * @param val {String} value in the field + * @param field {Array} field meta data + */ + + }, { + key: "dataGroupToHtml", + value: function dataGroupToHtml(val, field) { + var data = JSON.parse(val); + var t; + var sortFunction; + var item; + var itemHtml; + var itemVal; + var deleteButton = '
  • '; + var editButton = '
  • '; + var template = field[1].html; + + if (data != null && data !== undefined && field[1]['sort-function'] !== undefined && field[1]['sort-function'] != null) { + data.sort(field[1]['sort-function']); + } + + var html = $("
    ")); + + for (var i = 0; i < data.length; i++) { + item = data[i]; + + if (field[1]['pre-format-function'] !== undefined && field[1]['pre-format-function'] != null) { + item = field[1]['pre-format-function'].apply(this, [item]); + } + + t = template; + t = t.replace('#_delete_#', deleteButton); + t = t.replace('#_edit_#', editButton); + t = t.replace(/#_id_#/g, item.id); + + for (var key in item) { + itemVal = item[key]; + + if (itemVal !== undefined && itemVal != null && typeof itemVal === 'string') { + itemVal = itemVal.replace(/(?:\r\n|\r|\n)/g, '
    '); + } + + t = t.replace("#_".concat(key, "_#"), itemVal); + } + + if (field[1].render !== undefined && field[1].render != null) { + t = t.replace('#_renderFunction_#', field[1].render(item)); + } + + itemHtml = $(t); + itemHtml.attr('fieldId', "".concat(field[0], "_div")); + html.append(itemHtml); + } + + return html; + } + /** + * Reset the DataGroup for a given field + * @method resetDataGroup + * @param field {Array} field meta data + */ + + }, { + key: "resetDataGroup", + value: function resetDataGroup(field) { + $("#".concat(field[0])).val(''); + $("#".concat(field[0], "_div")).html(''); + } + }, { + key: "showDataGroup", + value: function showDataGroup(field, object, callback) { + var formHtml = this.templates.datagroupTemplate; + var html = ''; + var fields = field[1].form; + + if (object !== undefined && object != null && object.id !== undefined) { + this.currentDataGroupItemId = object.id; + } else { + this.currentDataGroupItemId = null; + } + + for (var i = 0; i < fields.length; i++) { + html += this.renderFormField(fields[i]); + } + + formHtml = formHtml.replace(/_id_/g, "".concat(this.getTableName(), "_field_").concat(field[0])); + formHtml = formHtml.replace(/_fields_/g, html); + var randomFormId = this.generateRandom(14); + var $tempDomObj = $('
    '); + $tempDomObj.attr('id', randomFormId); + $tempDomObj.html(formHtml); + $tempDomObj.find('.datefield').datepicker({ + viewMode: 2 + }); + $tempDomObj.find('.timefield').datetimepicker({ + language: 'en', + pickDate: false + }); + $tempDomObj.find('.datetimefield').datetimepicker({ + language: 'en' + }); + $tempDomObj.find('.colorpick').colorpicker(); + tinymce.init({ + selector: "#".concat($tempDomObj.attr('id'), " .tinymce"), + height: '400' + }); + $tempDomObj.find('.simplemde').each(function () { + var simplemde = new SimpleMDE({ + element: $(this)[0] + }); + $(this).data('simplemde', simplemde); // simplemde.value($(this).val()); + }); + $tempDomObj.find('.select2Field').each(function () { + $(this).select2().select2('val', $(this).find('option:eq(0)').val()); + }); + $tempDomObj.find('.select2Multi').each(function () { + $(this).select2().on('change', function (e) { + var parentRow = $(this).parents('.row'); + var height = parentRow.find('.select2-choices').height(); + parentRow.height(parseInt(height, 10)); + }); + }); + this.currentDataGroupField = field; + this.showDomElement("Add ".concat(field[1].label), $tempDomObj, null, null, true); + + if (object !== undefined && object != null) { + this.fillForm(object, "#".concat(this.getTableName(), "_field_").concat(field[0]), field[1].form); + } else { + this.setDefaultValues("#".concat(this.getTableName(), "_field_").concat(field[0]), field[1].form); + } + + $('.groupAddBtn').off(); + + if (object !== undefined && object != null && object.id !== undefined) { + $('.groupAddBtn').on('click', function (e) { + e.preventDefault(); + e.stopPropagation(); + + try { + modJs.editDataGroup(callback); + } catch (err) { + console.log("Error editing data group: ".concat(err.message)); + } + + return false; + }); + } else { + $('.groupAddBtn').on('click', function (e) { + e.preventDefault(); + e.stopPropagation(); + + try { + modJs.addDataGroup(callback); + } catch (err) { + console.log("Error adding data group: ".concat(err.message)); + } + + return false; + }); + } + } + }, { + key: "addDataGroup", + value: function addDataGroup(callback, existingData) { + var field = this.currentDataGroupField; + var tempParams; + $("#".concat(this.getTableName(), "_field_").concat(field[0], "_error")).html(''); + $("#".concat(this.getTableName(), "_field_").concat(field[0], "_error")).hide(); + var validator = new _FormValidation["default"]("".concat(this.getTableName(), "_field_").concat(field[0]), true, { + ShowPopup: false, + LabelErrorClass: 'error' + }); + + if (validator.checkValues()) { + var params = validator.getFormParameters(); + + if (field[1]['custom-validate-function'] !== undefined && field[1]['custom-validate-function'] != null) { + tempParams = field[1]['custom-validate-function'].apply(this, [params]); + + if (tempParams.valid) { + params = tempParams.params; + } else { + $("#".concat(this.getTableName(), "_field_").concat(field[0], "_error")).html(tempParams.message); + $("#".concat(this.getTableName(), "_field_").concat(field[0], "_error")).show(); + return false; + } + } + + var val = '[]'; + + if (existingData) { + val = existingData; + } else { + val = $("#".concat(field[0])).val(); + + if (val === '' || val == null) { + val = '[]'; + } + } + + var data = JSON.parse(val); + params.id = "".concat(field[0], "_").concat(this.dataGroupGetNextAutoIncrementId(data)); + data.push(params); + + if (field[1]['sort-function'] !== undefined && field[1]['sort-function'] != null) { + data.sort(field[1]['sort-function']); + } + + val = JSON.stringify(data); + var html = this.dataGroupToHtml(val, field); + + if (callback) { + callback(val); + } + + $("#".concat(field[0], "_div")).html(''); + $("#".concat(field[0], "_div")).append(html); + this.makeDataGroupSortable(field, $("#".concat(field[0], "_div_inner"))); + $("#".concat(field[0])).val(val); + this.orderDataGroup(field); + this.closeDataMessage(); + this.showMessage('Item Added', 'This change will be effective only when you save the form'); + } + + return true; + } + }, { + key: "nl2br", + value: function nl2br(str, len) { + var t = ''; + + try { + var arr = str.split(' '); + var count = 0; + + for (var i = 0; i < arr.length; i++) { + count += arr[i].length + 1; + + if (count > len) { + t += "".concat(arr[i], "
    "); + count = 0; + } else { + t += "".concat(arr[i], " "); + } + } + } catch (e) {// Do nothing + } + + return t; + } + }, { + key: "makeDataGroupSortable", + value: function makeDataGroupSortable(field, obj) { + obj.data('field', field); + obj.data('firstSort', true); + obj.sortable({ + create: function create() { + $(this).height($(this).height()); + }, + 'ui-floating': false, + start: function start(e, uiStart) { + $('#sortable-ul-selector-id').sortable({ + sort: function sort(event, ui) { + var $target = $(event.target); + + if (!/html|body/i.test($target.offsetParent()[0].tagName)) { + var top = event.pageY - $target.offsetParent().offset().top - ui.helper.outerHeight(true) / 2; + ui.helper.css({ + top: "".concat(top, "px") + }); + } + } + }); + }, + revert: true, + stop: function stop() { + modJs.orderDataGroup($(this).data('field')); + }, + axis: 'y', + scroll: false, + placeholder: 'sortable-placeholder', + cursor: 'move' + }); + } + }, { + key: "orderDataGroup", + value: function orderDataGroup(field, callback) { + var newArr = []; + var id; + var list = $("#".concat(field[0], "_div_inner [fieldid='").concat(field[0], "_div']")); + var val = $("#".concat(field[0])).val(); + + if (val === '' || val == null) { + val = '[]'; + } + + var data = JSON.parse(val); + list.each(function () { + id = $(this).attr('id'); + + for (var index in data) { + if (data[index].id === id) { + newArr.push(data[index]); + break; + } + } + }); + $("#".concat(field[0])).val(JSON.stringify(newArr)); + + if (callback != null) { + callback(newArr); + } + } + }, { + key: "editDataGroup", + value: function editDataGroup(callback, existingData) { + var field = this.currentDataGroupField; + var id = this.currentDataGroupItemId; + var validator = new _FormValidation["default"]("".concat(this.getTableName(), "_field_").concat(field[0]), true, { + ShowPopup: false, + LabelErrorClass: 'error' + }); + + if (validator.checkValues()) { + var params = validator.getFormParameters(); + + if (field[1]['custom-validate-function'] !== undefined && field[1]['custom-validate-function'] != null) { + var tempParams = field[1]['custom-validate-function'].apply(this, [params]); + + if (tempParams.valid) { + params = tempParams.params; + } else { + $("#".concat(this.getTableName(), "_field_").concat(field[0], "_error")).html(tempParams.message); + $("#".concat(this.getTableName(), "_field_").concat(field[0], "_error")).show(); + return false; + } + } + + if (this.doCustomFilterValidation(params)) { + var val = '[]'; + + if (existingData) { + val = existingData; + } else { + val = $("#".concat(field[0])).val(); + + if (val === '' || val == null) { + val = '[]'; + } + } + + var data = JSON.parse(val); + var editVal = {}; + var editValIndex = -1; + var newVals = []; + + for (var i = 0; i < data.length; i++) { + var item = data[i]; + + if (item.id === id) { + editVal = item; + editValIndex = i; + } + + newVals.push(item); + } + + params.id = editVal.id; + newVals[editValIndex] = params; + + if (field[1]['sort-function'] !== undefined && field[1]['sort-function'] != null) { + newVals.sort(field[1]['sort-function']); + } + + val = JSON.stringify(newVals); + $("#".concat(field[0])).val(val); + var html = this.dataGroupToHtml(val, field); + + if (callback) { + callback(newVals); + } + + this.orderDataGroup(field); + $("#".concat(field[0], "_div")).html(''); + $("#".concat(field[0], "_div")).append(html); + this.makeDataGroupSortable(field, $("#".concat(field[0], "_div_inner"))); + this.closeDataMessage(); + this.showMessage('Item Edited', 'This change will be effective only when you save the form'); + } + } + + return true; + } + }, { + key: "editDataGroupItem", + value: function editDataGroupItem(id, existingData, field) { + var fieldId = id.substring(0, id.lastIndexOf('_')); + var val; + + if (existingData) { + val = decodeURI(existingData); + } else { + val = $("#".concat(fieldId)).val(); + } + + var data = JSON.parse(val); + var editVal = {}; + + for (var i = 0; i < data.length; i++) { + var item = data[i]; + + if (item.id === id) { + editVal = item; + } + } + + if (field) { + field = JSON.parse(decodeURI(field)); + } else { + field = $("#".concat(fieldId)).data('field'); + } + + this.showDataGroup(field, editVal); + } + }, { + key: "dataGroupGetNextAutoIncrementId", + value: function dataGroupGetNextAutoIncrementId(data) { + var autoId = 1; + var id; + + for (var i = 0; i < data.length; i++) { + var item = data[i]; + + if (item.id === undefined || item.id == null) { + item.id = 1; + } + + id = item.id.substring(item.id.lastIndexOf('_') + 1, item.id.length); + + if (id >= autoId) { + autoId = parseInt(id, 10) + 1; + } + } + + return autoId; + } + }, { + key: "deleteDataGroupItem", + value: function deleteDataGroupItem(id, existingData) { + var fieldId = id.substring(0, id.lastIndexOf('_')); + var val; + + if (existingData) { + val = decodeURI(existingData); + } else { + val = $("#".concat(fieldId)).val(); + } + + var data = JSON.parse(val); + var newVal = []; + + for (var i = 0; i < data.length; i++) { + var item = data[i]; + + if (item.id !== id) { + newVal.push(item); + } + } + + $("#".concat(fieldId)).val(JSON.stringify(newVal)); + $("#".concat(id)).remove(); + this.showMessage('Item Removed', 'Item removed. This change will be effective only when you save the form'); + } + /** + * Fill a form with required values after showing it + * @method fillForm + * @param object {Array} form data + * @param formId {String} id of the form + * @param formId {Array} field meta data + */ + + }, { + key: "fillForm", + value: function fillForm(object, formId, fields) { + var placeHolderVal; + + if (fields == null || fields === undefined) { + fields = this.getFormFields(); + } + + if (formId == null || formId === undefined || formId === '') { + formId = "#".concat(this.getTableName(), "Form"); + } + + for (var i = 0; i < fields.length; i++) { + if (fields[i][1].type === 'date') { + if (object[fields[i][0]] !== '0000-00-00' && object[fields[i][0]] !== '' && object[fields[i][0]] != null && object[fields[i][0]] !== undefined) { + $("".concat(formId, " #").concat(fields[i][0], "_date")).datepicker('setValue', object[fields[i][0]]); + } + } else if (fields[i][1].type === 'colorpick') { + if (object[fields[i][0]] != null && object[fields[i][0]] !== undefined) { + $("".concat(formId, " #").concat(fields[i][0], "_colorpick")).colorpicker('setValue', object[fields[i][0]]); + $("".concat(formId, " #").concat(fields[i][0])).val(object[fields[i][0]]); + } + } else if (fields[i][1].type === 'datetime' || fields[i][1].type === 'time') { + if (object[fields[i][0]] !== '0000-00-00 00:00:00' && object[fields[i][0]] !== '' && object[fields[i][0]] != null && object[fields[i][0]] !== undefined) { + var tempDate = object[fields[i][0]]; + var arr = tempDate.split(' '); + var dateArr = arr[0].split('-'); + var timeArr = arr[1].split(':'); + $("".concat(formId, " #").concat(fields[i][0], "_datetime")).data('datetimepicker').setLocalDate(new Date(dateArr[0], parseInt(dateArr[1], 10) - 1, dateArr[2], timeArr[0], timeArr[1], timeArr[2])); + } + } else if (fields[i][1].type === 'label') { + $("".concat(formId, " #").concat(fields[i][0])).html(object[fields[i][0]]); + } else if (fields[i][1].type === 'placeholder') { + if (fields[i][1]['remote-source'] !== undefined && fields[i][1]['remote-source'] != null) { + // const key = `${fields[i][1]['remote-source'][0]}_${fields[i][1]['remote-source'][1]}_${fields[i][1]['remote-source'][2]}`; + var key = this.getRemoteSourceKey(fields[i]); + placeHolderVal = this.fieldMasterData[key][object[fields[i][0]]]; + } else { + placeHolderVal = object[fields[i][0]]; + } + + if (placeHolderVal === undefined || placeHolderVal == null) { + placeHolderVal = ''; + } else { + try { + placeHolderVal = placeHolderVal.replace(/(?:\r\n|\r|\n)/g, '
    '); + } catch (e) {// Do nothing + } + } + + if (fields[i][1].formatter !== undefined && fields[i][1].formatter && $.isFunction(fields[i][1].formatter)) { + try { + placeHolderVal = fields[i][1].formatter(placeHolderVal); + } catch (e) {// Do nothing + } + } + + $("".concat(formId, " #").concat(fields[i][0])).html(placeHolderVal); + } else if (fields[i][1].type === 'fileupload') { + if (object[fields[i][0]] != null && object[fields[i][0]] !== undefined && object[fields[i][0]] !== '') { + $("".concat(formId, " #").concat(fields[i][0])).html(object[fields[i][0]]); + $("".concat(formId, " #").concat(fields[i][0])).attr('val', object[fields[i][0]]); + $("".concat(formId, " #").concat(fields[i][0])).show(); + $("".concat(formId, " #").concat(fields[i][0], "_download")).show(); + $("".concat(formId, " #").concat(fields[i][0], "_remove")).show(); + } + + if (fields[i][1].readonly === true) { + $("".concat(formId, " #").concat(fields[i][0], "_upload")).remove(); + } + } else if (fields[i][1].type === 'select') { + if (object[fields[i][0]] === undefined || object[fields[i][0]] == null || object[fields[i][0]] === '') { + object[fields[i][0]] = 'NULL'; + } + + $("".concat(formId, " #").concat(fields[i][0])).val(object[fields[i][0]]); + } else if (fields[i][1].type === 'select2') { + if (object[fields[i][0]] === undefined || object[fields[i][0]] == null || object[fields[i][0]] === '') { + object[fields[i][0]] = 'NULL'; + } + + $("".concat(formId, " #").concat(fields[i][0])).select2('val', object[fields[i][0]]); + } else if (fields[i][1].type === 'select2multi') { + // TODO - SM + if (object[fields[i][0]] === undefined || object[fields[i][0]] == null || object[fields[i][0]] === '') { + object[fields[i][0]] = 'NULL'; + } + + var msVal = []; + + if (object[fields[i][0]] !== undefined && object[fields[i][0]] != null && object[fields[i][0]] !== '') { + try { + msVal = JSON.parse(object[fields[i][0]]); + } catch (e) {// Do nothing + } + } + + $("".concat(formId, " #").concat(fields[i][0])).select2('val', msVal); + var select2Height = $("".concat(formId, " #").concat(fields[i][0])).find('.select2-choices').height(); + $("".concat(formId, " #").concat(fields[i][0])).find('.controls').css('min-height', "".concat(select2Height, "px")); + $("".concat(formId, " #").concat(fields[i][0])).css('min-height', "".concat(select2Height, "px")); + } else if (fields[i][1].type === 'datagroup') { + try { + var html = this.dataGroupToHtml(object[fields[i][0]], fields[i]); + $("".concat(formId, " #").concat(fields[i][0])).val(object[fields[i][0]]); + $("".concat(formId, " #").concat(fields[i][0], "_div")).html(''); + $("".concat(formId, " #").concat(fields[i][0], "_div")).append(html); + this.makeDataGroupSortable(fields[i], $("".concat(formId, " #").concat(fields[i][0], "_div_inner"))); + } catch (e) {// Do nothing + } + } else if (fields[i][1].type === 'signature') { + if (object[fields[i][0]] !== '' || object[fields[i][0]] !== undefined || object[fields[i][0]] != null) { + $("".concat(formId, " #").concat(fields[i][0])).data('signaturePad').fromDataURL(object[fields[i][0]]); + } + } else if (fields[i][1].type === 'simplemde') { + $("".concat(formId, " #").concat(fields[i][0])).data('simplemde').value(object[fields[i][0]]); + } else if (fields[i][1].type === 'code') { + var cm = $("".concat(formId, " #").concat(fields[i][0])).data('codemirror'); + + if (cm) { + cm.getDoc().setValue(object[fields[i][0]]); + } + } else { + $("".concat(formId, " #").concat(fields[i][0])).val(object[fields[i][0]]); + } + } + } + /** + * Cancel edit or add new on modules + * @method cancel + */ + + }, { + key: "cancel", + value: function cancel() { + $("#".concat(this.getTableName(), "Form")).hide(); + $("#".concat(this.getTableName())).show(); + } + }, { + key: "renderFormField", + value: function renderFormField(field) { + var userId = 0; + + if (this.fieldTemplates[field[1].type] === undefined || this.fieldTemplates[field[1].type] == null) { + return ''; + } + + var t = this.fieldTemplates[field[1].type]; + field[1].label = this.gt(field[1].label); + + if (field[1].validation !== 'none' && field[1].validation !== 'emailOrEmpty' && field[1].validation !== 'numberOrEmpty' && field[1].type !== 'placeholder' && field[1].label.indexOf('*') < 0) { + var tempSelectBoxes = ['select', 'select2']; + + if (!(tempSelectBoxes.indexOf(field[1].type) >= 0 && field[1]['allow-null'] === true)) { + field[1].label = "".concat(field[1].label, "*"); + } + } + + if (field[1].type === 'select' || field[1].type === 'select2' || field[1].type === 'select2multi') { + t = t.replace(/_id_/g, field[0]); + t = t.replace(/_label_/g, field[1].label); + + if (field[1].source !== undefined && field[1].source != null) { + t = t.replace('_options_', this.renderFormSelectOptions(field[1].source, field)); + } else if (field[1]['remote-source'] !== undefined && field[1]['remote-source'] != null) { + // let key = `${field[1]['remote-source'][0]}_${field[1]['remote-source'][1]}_${field[1]['remote-source'][2]}`; + // if (field[1]['remote-source'].length === 4) { + // key = `${key}_${field[1]['remote-source'][3]}`; + // } + var key = this.getRemoteSourceKey(field); + t = t.replace('_options_', this.renderFormSelectOptionsRemote(this.fieldMasterData[key], field)); + } + } else if (field[1].type === 'colorpick') { + t = t.replace(/_id_/g, field[0]); + t = t.replace(/_label_/g, field[1].label); + } else if (field[1].type === 'date') { + t = t.replace(/_id_/g, field[0]); + t = t.replace(/_label_/g, field[1].label); + } else if (field[1].type === 'datetime') { + t = t.replace(/_id_/g, field[0]); + t = t.replace(/_label_/g, field[1].label); + } else if (field[1].type === 'time') { + t = t.replace(/_id_/g, field[0]); + t = t.replace(/_label_/g, field[1].label); + } else if (field[1].type === 'fileupload') { + t = t.replace(/_id_/g, field[0]); + t = t.replace(/_label_/g, field[1].label); + var ce = this.getCurrentProfile(); + + if (ce != null && ce !== undefined) { + userId = ce.id; + } else { + userId = this.getUser().id * -1; + } + + t = t.replace(/_userId_/g, userId); + t = t.replace(/_group_/g, this.tab); + + if (field[1].filetypes !== undefined && field[1].filetypes != null) { + t = t.replace(/_filetypes_/g, field[1].filetypes); + } else { + t = t.replace(/_filetypes_/g, 'all'); + } + + t = t.replace(/_rand_/g, this.generateRandom(14)); + } else if (field[1].type === 'datagroup') { + t = t.replace(/_id_/g, field[0]); + t = t.replace(/_label_/g, field[1].label); + } else if (field[1].type === 'signature') { + t = t.replace(/_id_/g, field[0]); + t = t.replace(/_label_/g, field[1].label); + } else if (field[1].type === 'tinymce' || field[1].type === 'simplemde') { + t = t.replace(/_id_/g, field[0]); + t = t.replace(/_label_/g, field[1].label); + } else { + t = t.replace(/_id_/g, field[0]); + t = t.replace(/_label_/g, field[1].label); + } + + if (field[1].validation !== undefined && field[1].validation != null && field[1].validation !== '') { + t = t.replace(/_validation_/g, "validation=\"".concat(field[1].validation, "\"")); + } else { + t = t.replace(/_validation_/g, ''); + } + + if (field[1].help !== undefined && field[1].help !== null) { + t = t.replace(/_helpline_/g, field[1].help); + t = t.replace(/_hidden_class_help_/g, ''); + } else { + t = t.replace(/_helpline_/g, ''); + t = t.replace(/_hidden_class_help_/g, 'hide'); + } + + if (field[1].placeholder !== undefined && field[1].placeholder !== null) { + t = t.replace(/_placeholder_/g, "placeholder=\"".concat(field[1].placeholder, "\"")); + } else { + t = t.replace(/_placeholder_/g, ''); + } + + if (field[1].mask !== undefined && field[1].mask !== null) { + t = t.replace(/_mask_/g, "mask=\"".concat(field[1].mask, "\"")); + } else { + t = t.replace(/_mask_/g, ''); + } + + return t; + } + }, { + key: "renderFormSelectOptions", + value: function renderFormSelectOptions(options, field) { + var html = ''; + + if (field != null && field !== undefined) { + if (field[1]['allow-null'] === true) { + if (field[1]['null-label'] !== undefined && field[1]['null-label'] != null) { + html += ""); + } else { + html += ''; + } + } + } // Sort options + + + var tuples = []; + + for (var key in options) { + tuples.push(options[key]); + } + + if (field[1].sort === true) { + tuples.sort(function (a, b) { + a = a[1]; + b = b[1]; // eslint-disable-next-line no-nested-ternary + + return a < b ? -1 : a > b ? 1 : 0; + }); + } + + for (var i = 0; i < tuples.length; i++) { + var prop = tuples[i][0]; + var value = tuples[i][1]; + var t = ''; + t = t.replace('_id_', prop); + t = t.replace('_val_', this.gt(value)); + html += t; + } + + return html; + } + }, { + key: "renderFormSelectOptionsRemote", + value: function renderFormSelectOptionsRemote(options, field) { + var html = ''; + + if (field[1]['allow-null'] === true) { + if (field[1]['null-label'] !== undefined && field[1]['null-label'] != null) { + html += ""); + } else { + html += ''; + } + } // Sort options + + + var tuples = []; + + for (var key in options) { + tuples.push([key, options[key]]); + } + + if (field[1].sort === 'true') { + tuples.sort(function (a, b) { + a = a[1]; + b = b[1]; // eslint-disable-next-line no-nested-ternary + + return a < b ? -1 : a > b ? 1 : 0; + }); + } + + for (var i = 0; i < tuples.length; i++) { + var prop = tuples[i][0]; + var value = tuples[i][1]; + var t = ''; + t = t.replace('_id_', prop); + t = t.replace('_val_', this.gt(value)); + html += t; + } + + return html; + } + }, { + key: "setCustomTemplates", + value: function setCustomTemplates(templates) { + this.customTemplates = templates; + } + }, { + key: "setEmailTemplates", + value: function setEmailTemplates(templates) { + this.emailTemplates = templates; + } + }, { + key: "getCustomTemplate", + value: function getCustomTemplate(file) { + return this.customTemplates[file]; + } + }, { + key: "setFieldTemplates", + value: function setFieldTemplates(templates) { + this.fieldTemplates = templates; + } + }, { + key: "getMetaFieldForRendering", + value: function getMetaFieldForRendering(fieldName) { + return ''; + } + }, { + key: "clearDeleteParams", + value: function clearDeleteParams() { + this.deleteParams = {}; + } + }, { + key: "getShowAddNew", + value: function getShowAddNew() { + return this.showAddNew; + } + /** + * Override this method to change add new button label + * @method getAddNewLabel + */ + + }, { + key: "getAddNewLabel", + value: function getAddNewLabel() { + return 'Add New'; + } + /** + * Used to set whether to show the add new button for a module + * @method setShowAddNew + * @param showAddNew {Boolean} value + */ + + }, { + key: "setShowAddNew", + value: function setShowAddNew(showAddNew) { + this.showAddNew = showAddNew; + } + /** + * Used to set whether to show delete button for each entry in module + * @method setShowDelete + * @param val {Boolean} value + */ + + }, { + key: "setShowDelete", + value: function setShowDelete(val) { + this.showDelete = val; + } + /** + * Used to set whether to show edit button for each entry in module + * @method setShowEdit + * @param val {Boolean} value + */ + + }, { + key: "setShowEdit", + value: function setShowEdit(val) { + this.showEdit = val; + } + /** + * Used to set whether to show save button in form + * @method setShowSave + * @param val {Boolean} value + */ + + }, { + key: "setShowSave", + value: function setShowSave(val) { + this.showSave = val; + } + /** + * Used to set whether to show cancel button in form + * @method setShowCancel + * @param val {Boolean} value + */ + + }, { + key: "setShowCancel", + value: function setShowCancel(val) { + this.showCancel = val; + } + /** + * Datatable option array will be extended with associative array provided here + * @method getCustomTableParams + * @param val {Boolean} value + */ + + }, { + key: "getCustomTableParams", + value: function getCustomTableParams() { + return {}; + } + }, { + key: "getActionButtons", + value: function getActionButtons(obj) { + return modJs.getActionButtonsHtml(obj.aData[0], obj.aData); + } + /** + * This return html for action buttons in each row. Override this method if you need to make changes to action buttons. + * @method getActionButtonsHtml + * @param id {int} id of the row + * @param data {Array} data for the row + * @returns {String} html for action buttons + */ + + }, { + key: "getActionButtonsHtml", + value: function getActionButtonsHtml(id, data) { + var editButton = ''; + var deleteButton = ''; + var cloneButton = ''; + var html = '
    _edit__delete__clone_
    '; + + if (this.showAddNew) { + html = html.replace('_clone_', cloneButton); + } else { + html = html.replace('_clone_', ''); + } + + if (this.showDelete) { + html = html.replace('_delete_', deleteButton); + } else { + html = html.replace('_delete_', ''); + } + + if (this.showEdit) { + html = html.replace('_edit_', editButton); + } else { + html = html.replace('_edit_', ''); + } + + html = html.replace(/_id_/g, id); + html = html.replace(/_BASE_/g, this.baseUrl); + return html; + } + /** + * Generates a random string + * @method generateRandom + * @param length {int} required length of the string + * @returns {String} random string + */ + + }, { + key: "generateRandom", + value: function generateRandom(length) { + var d = new Date(); + var chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; + var result = ''; + + for (var i = length; i > 0; --i) { + result += chars[Math.round(Math.random() * (chars.length - 1))]; + } + + return result + d.getTime(); + } + }, { + key: "checkFileType", + value: function checkFileType(elementName, fileTypes) { + var fileElement = document.getElementById(elementName); + var fileExtension = ''; + + if (fileElement.value.lastIndexOf('.') > 0) { + fileExtension = fileElement.value.substring(fileElement.value.lastIndexOf('.') + 1, fileElement.value.length); + } + + fileExtension = fileExtension.toLowerCase(); + var allowed = fileTypes.split(','); + + if (allowed.indexOf(fileExtension) < 0) { + fileElement.value = ''; + this.showMessage('File Type Error', 'Selected file type is not supported'); + this.clearFileElement(elementName); + return false; + } + + return true; + } + }, { + key: "clearFileElement", + value: function clearFileElement(elementName) { + var control = $("#".concat(elementName)); + control.replaceWith(control = control.val('').clone(true)); + } + }, { + key: "fixJSON", + value: function fixJSON(json) { + if (this.noJSONRequests === '1') { + json = window.btoa(json); + } + + return json; + } + }, { + key: "getClientDate", + value: function getClientDate(date) { + var offset = this.getClientGMTOffset(); + var tzDate = date.addMinutes(offset * 60); + return tzDate; + } + }, { + key: "getClientGMTOffset", + value: function getClientGMTOffset() { + var rightNow = new Date(); + var jan1 = new Date(rightNow.getFullYear(), 0, 1, 0, 0, 0, 0); + var temp = jan1.toGMTString(); + var jan2 = new Date(temp.substring(0, temp.lastIndexOf(' ') - 1)); + return (jan1 - jan2) / (1000 * 60 * 60); + } + /** + * Override this method in a module to provide the help link for the module. Help link of the module on frontend will get updated with this. + * @method getHelpLink + * @returns {String} help link + */ + + }, { + key: "getHelpLink", + value: function getHelpLink() { + return null; + } + }, { + key: "showLoader", + value: function showLoader() { + $('#iceloader').show(); + } + }, { + key: "hideLoader", + value: function hideLoader() { + $('#iceloader').hide(); + } + }, { + key: "generateOptions", + value: function generateOptions(data) { + var template = ''; + var options = ''; + + for (var index in data) { + options += template.replace('__val__', index).replace('__text__', data[index]); + } + + return options; + } + }, { + key: "isModuleInstalled", + value: function isModuleInstalled(type, name) { + if (modulesInstalled === undefined || modulesInstalled === null) { + return false; + } + + return modulesInstalled["".concat(type, "_").concat(name)] === 1; + } + }, { + key: "setCustomFields", + value: function setCustomFields(fields) { + var field; + var parsed; + + for (var i = 0; i < fields.length; i++) { + field = fields[i]; + + if (field.display !== 'Hidden' && field.data !== '' && field.data !== undefined) { + try { + parsed = JSON.parse(field.data); + + if (parsed === undefined || parsed == null) { + continue; + } else if (parsed.length !== 2) { + continue; + } else if (parsed[1].type === undefined || parsed[1].type == null) { + continue; + } + + this.customFields.push(parsed); + } catch (e) {// Do nothing + } + } + } + } + }, { + key: "addCustomFields", + value: function addCustomFields(fields) { + for (var i = 0; i < this.customFields.length; i++) { + fields.push(this.customFields[i]); + } + + return fields; + } + }, { + key: "getImageUrlFromName", + value: function getImageUrlFromName(firstName, lastName) { + var seed = firstName.substring(0, 1); + + if (!lastName && lastName.length > 0) { + seed += firstName.substring(firstName.length - 1, 1); + } else { + seed += lastName.substring(0, 1); + } + + var arr = "".concat(firstName).concat(lastName).split(''); + seed += arr.reduce(function (acc, item) { + return parseInt(item.charCodeAt(0), 10) + acc; + }, 0); + return "https://avatars.dicebear.com/api/initials/:".concat(seed, ".svg"); + } + }, { + key: "downloadPdf", + value: function downloadPdf(type, data) { + var url = "".concat(this.clientUrl, "service.php?a=pdf&h=").concat(type, "&data=").concat(data); + window.open(url, '_blank'); + } + }]); + + return ModuleBase; +}(); + +var _default = ModuleBase; +exports["default"] = _default; + +},{"./FormValidation":61}],68:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _react = _interopRequireDefault(require("react")); + +var _antd = require("antd"); + +var _ReactModalAdapterBase = _interopRequireDefault(require("./ReactModalAdapterBase")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +/* + * CustomFieldAdapter + */ +var ReactCustomFieldAdapter = /*#__PURE__*/function (_AdapterBase) { + _inherits(ReactCustomFieldAdapter, _AdapterBase); + + var _super = _createSuper(ReactCustomFieldAdapter); + + function ReactCustomFieldAdapter(endPoint, tab, filter, orderBy) { + var _this; + + _classCallCheck(this, ReactCustomFieldAdapter); + + _this = _super.call(this, endPoint, tab, filter, orderBy); + _this.tableType = ''; + return _this; + } + + _createClass(ReactCustomFieldAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'name', 'field_type', 'field_label', 'display', 'display_order']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Name' + }, { + sTitle: 'Field Type' + }, { + sTitle: 'Field Label' + }, { + sTitle: 'Display Status' + }, { + sTitle: 'Priority' + }]; + } + }, { + key: "getTableColumns", + value: function getTableColumns() { + return [{ + title: 'Name', + dataIndex: 'name', + sorter: true + }, { + title: 'Field Label', + dataIndex: 'field_label' + }, { + title: 'Field Type', + dataIndex: 'field_type' + }, { + title: 'Display Status', + dataIndex: 'display', + sorter: true + }, { + title: 'Priority', + dataIndex: 'display_order', + sorter: true + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['field_label', { + label: 'Field Label', + type: 'text', + validation: '' + }], ['field_type', { + label: 'Field Type', + type: 'select', + source: [['text', 'Text Field'], ['textarea', 'Multiline Text'], ['select', 'Dropdown'], ['select2', 'Searchable DropDown'], ['select2multi', 'Multi Select'], ['fileupload', 'File Upload'], ['date', 'Date'], ['datetime', 'Date Time'], ['time', 'Time'], ['signature', 'Signature']] + }], ['field_validation', { + label: 'Validation', + type: 'select2', + validation: 'none', + sort: 'none', + 'null-label': 'Required', + 'allow-null': true, + source: [['none', 'None'], ['number', 'Number'], ['numberOrEmpty', 'Number or Empty'], ['float', 'Decimal'], ['email', 'Email'], ['emailOrEmpty', 'Email or Empty']] + }], ['field_options', { + label: 'Field Options', + type: 'datagroup', + form: [['label', { + label: 'Label', + type: 'text', + validation: '' + }], ['value', { + label: 'Value', + type: 'text', + validation: 'none' + }]], + html: '
    #_delete_##_edit_##_label_#:#_value_#
    ', + columns: [{ + title: 'Label', + dataIndex: 'label', + key: 'label' + }, { + title: 'Option Value', + dataIndex: 'value', + key: 'value' + }], + validation: 'none' + }], ['display_order', { + label: 'Priority', + type: 'text', + validation: 'none' + }]]; + } + }, { + key: "getNameFromFieldName", + value: function getNameFromFieldName(fieldName) { + return fieldName.replace(/[^a-z0-9+]+/gi, '').toLowerCase(); + } + }, { + key: "setTableType", + value: function setTableType(type) { + this.tableType = type; + } + }, { + key: "doCustomValidation", + value: function doCustomValidation(params) { + var validateName = function validateName(str) { + var name = /^[a-z][a-z0-9._]+$/; + return str != null && name.test(str); + }; + + if (this.currentElement == null || this.currentElement.name == null || this.currentElement.name === '') { + params.name = this.getNameFromFieldName(params.field_label); + + if (!validateName(params.name)) { + return 'Invalid field label for custom field'; + } + } else { + params.name = this.currentElement.name; + } + + if (!validateName(params.name)) { + return 'Invalid name for custom field'; + } + + return null; + } + }, { + key: "forceInjectValuesBeforeSave", + value: function forceInjectValuesBeforeSave(params) { + var data = ['', {}]; + var options = []; + var optionsData; + data[1].label = params.field_label; + data[1].type = params.field_type; + data[1].validation = params.field_validation; + + if (['select', 'select2', 'select2multi'].indexOf(params.field_type) >= 0) { + optionsData = params.field_options === '' || params.field_options === undefined ? [] : JSON.parse(params.field_options); + + for (var index in optionsData) { + options.push([optionsData[index].value, optionsData[index].label]); + } + + data[1].source = options; + } + + if (params.field_validation == null || params.field_validation === undefined) { + params.field_validation = ''; + } + + params.type = this.tableType; + + if (this.currentElement == null || this.currentElement.name == null || this.currentElement.name === '') { + params.name = this.getNameFromFieldName(params.field_label); + } else { + params.name = this.currentElement.name; + } + + data[0] = params.name; + params.data = JSON.stringify(data); + params.display = 'Form'; + params.display_order = parseInt(params.display_order); + + if (!Number.isInteger(params.display_order)) { + params.display_order = 1; + } + + return params; + } + }]); + + return ReactCustomFieldAdapter; +}(_ReactModalAdapterBase["default"]); + +var _default = ReactCustomFieldAdapter; +exports["default"] = _default; + +},{"./ReactModalAdapterBase":70,"antd":"antd","react":"react"}],69:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _ReactModalAdapterBase = _interopRequireDefault(require("./ReactModalAdapterBase")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var ReactLegacyModalAdapterBase = /*#__PURE__*/function (_ReactModalAdapterBas) { + _inherits(ReactLegacyModalAdapterBase, _ReactModalAdapterBas); + + var _super = _createSuper(ReactLegacyModalAdapterBase); + + function ReactLegacyModalAdapterBase() { + _classCallCheck(this, ReactLegacyModalAdapterBase); + + return _super.apply(this, arguments); + } + + _createClass(ReactLegacyModalAdapterBase, [{ + key: "get", + // Due to having same method in ReactModalAdapterBase + value: function get(callBackData) { + var that = this; + + if (this.getRemoteTable()) { + this.createTableServer(this.getTableName()); + $("#".concat(this.getTableName(), "Form")).hide(); + $("#".concat(this.getTableName())).show(); + return; + } + + var sourceMappingJson = JSON.stringify(this.getSourceMapping()); + var filterJson = ''; + + if (this.getFilter() !== null) { + filterJson = JSON.stringify(this.getFilter()); + } + + var orderBy = ''; + + if (this.getOrderBy() !== null) { + orderBy = this.getOrderBy(); + } + + sourceMappingJson = this.fixJSON(sourceMappingJson); + filterJson = this.fixJSON(filterJson); + that.showLoader(); + $.post(this.moduleRelativeURL, { + t: this.table, + a: 'get', + sm: sourceMappingJson, + ft: filterJson, + ob: orderBy + }, function (data) { + if (data.status === 'SUCCESS') { + that.getSuccessCallBack(callBackData, data.object); + } else { + that.getFailCallBack(callBackData, data.object); + } + }, 'json').fail(function (e) { + if (e.status === 403) { + that.showMessage('Access Forbidden', e.responseJSON.message); + } + }).always(function () { + that.hideLoader(); + }); + that.initFieldMasterData(); + this.trackEvent('get', this.tab, this.table); // var url = this.getDataUrl(); + // console.log(url); + } + }, { + key: "showFilters", + value: function showFilters(object) { + var formHtml = this.templates.filterTemplate; + var html = ''; + var fields = this.getFilters(); + + for (var i = 0; i < fields.length; i++) { + var metaField = this.getMetaFieldForRendering(fields[i][0]); + + if (metaField === '' || metaField === undefined) { + html += this.renderFormField(fields[i]); + } else { + var metaVal = object[metaField]; + + if (metaVal !== '' && metaVal != null && metaVal !== undefined && metaVal.trim() !== '') { + html += this.renderFormField(JSON.parse(metaVal)); + } else { + html += this.renderFormField(fields[i]); + } + } + } + + formHtml = formHtml.replace(/_id_/g, "".concat(this.getTableName(), "_filter")); + formHtml = formHtml.replace(/_fields_/g, html); + var randomFormId = this.generateRandom(14); + var $tempDomObj = $('
    '); + $tempDomObj.attr('id', randomFormId); + $tempDomObj.html(formHtml); + $tempDomObj.find('.datefield').datepicker({ + viewMode: 2 + }); + $tempDomObj.find('.timefield').datetimepicker({ + language: 'en', + pickDate: false + }); + $tempDomObj.find('.datetimefield').datetimepicker({ + language: 'en' + }); + $tempDomObj.find('.colorpick').colorpicker(); + tinymce.init({ + selector: "#".concat($tempDomObj.attr('id'), " .tinymce"), + height: '400' + }); + $tempDomObj.find('.simplemde').each(function () { + var simplemde = new SimpleMDE({ + element: $(this)[0] + }); + $(this).data('simplemde', simplemde); // simplemde.value($(this).val()); + }); // $tempDomObj.find('.select2Field').select2(); + + $tempDomObj.find('.select2Field').each(function () { + $(this).select2().select2('val', $(this).find('option:eq(0)').val()); + }); + $tempDomObj.find('.select2Multi').each(function () { + $(this).select2().on('change', function (e) { + var parentRow = $(this).parents('.row'); + var height = parentRow.find('.select2-choices').height(); + parentRow.height(parseInt(height, 10)); + }); + }); + /* + $tempDomObj.find('.signatureField').each(function() { + $(this).data('signaturePad',new SignaturePad($(this))); + }); + */ + // var tHtml = $tempDomObj.wrap('
    ').parent().html(); + + this.showDomElement('Edit', $tempDomObj, null, null, true); + $('.filterBtn').off(); + $('.filterBtn').on('click', function (e) { + e.preventDefault(); + e.stopPropagation(); + + try { + modJs.filterQuery(); + } catch (err) {// Do Nothing + } + + return false; + }); + + if (this.filter !== undefined && this.filter != null && this.filter !== '') { + this.fillForm(this.filter, "#".concat(this.getTableName(), "_filter"), this.getFilters()); + } + } + }, { + key: "resetFilters", + value: function resetFilters() { + this.filter = this.origFilter; + this.filtersAlreadySet = false; + $("#".concat(this.getTableName(), "_resetFilters")).hide(); + this.currentFilterString = ''; + this.get([]); + } + }]); + + return ReactLegacyModalAdapterBase; +}(_ReactModalAdapterBase["default"]); + +var _default = ReactLegacyModalAdapterBase; +exports["default"] = _default; + +},{"./ReactModalAdapterBase":70}],70:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _react = _interopRequireDefault(require("react")); + +var _reactDom = _interopRequireDefault(require("react-dom")); + +var _antd = require("antd"); + +var _icons = require("@ant-design/icons"); + +var _AdapterBase2 = _interopRequireDefault(require("./AdapterBase")); + +var _IceFormModal = _interopRequireDefault(require("../components/IceFormModal")); + +var _IceStepFromModal = _interopRequireDefault(require("../components/IceStepFromModal")); + +var _IceTable = _interopRequireDefault(require("../components/IceTable")); + +var _MasterDataReader = _interopRequireDefault(require("./MasterDataReader")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var ReactModalAdapterBase = /*#__PURE__*/function (_AdapterBase) { + _inherits(ReactModalAdapterBase, _AdapterBase); + + var _super = _createSuper(ReactModalAdapterBase); + + _createClass(ReactModalAdapterBase, null, [{ + key: "MODAL_TYPE_NORMAL", + get: function get() { + return 'Normal'; + } + }, { + key: "MODAL_TYPE_STEPS", + get: function get() { + return 'Steps'; + } + }]); + + function ReactModalAdapterBase(endPoint, tab, filter, orderBy) { + var _this; + + _classCallCheck(this, ReactModalAdapterBase); + + _this = _super.call(this, endPoint, tab, filter, orderBy); + _this.modalType = _this.MODAL_TYPE_NORMAL; + _this.dataPipe = null; + _this.formInitialized = false; + _this.tableInitialized = false; + _this.access = []; + _this.localStorageEnabled = false; + _this.isV2 = true; + _this.masterDataReader = new _MasterDataReader["default"](_assertThisInitialized(_this)); + return _this; + } + + _createClass(ReactModalAdapterBase, [{ + key: "enableLocalStorage", + value: function enableLocalStorage() { + this.localStorageEnabled = true; + } + }, { + key: "setModalType", + value: function setModalType(type) { + this.modalType = type; + } + }, { + key: "setDataPipe", + value: function setDataPipe(dataPipe) { + this.dataPipe = dataPipe; + } + }, { + key: "setAccess", + value: function setAccess(access) { + this.access = access; + } + }, { + key: "hasAccess", + value: function hasAccess(type) { + return this.access.indexOf(type) > 0; + } + }, { + key: "hasCustomButtons", + value: function hasCustomButtons() { + return false; + } + }, { + key: "initTable", + value: function initTable() { + var _this2 = this; + + if (this.tableInitialized) { + return false; + } + + var tableDom = document.getElementById("".concat(this.tab, "Table")); + + if (tableDom) { + this.tableContainer = _react["default"].createRef(); + var columns = this.getTableColumns(); + + if (this.hasAccess('save') || this.hasAccess('delete') || this.hasAccess('element') || this.hasCustomButtons()) { + columns.push({ + title: 'Actions', + key: 'actions', + render: this.getTableActionButtonJsx(this) + }); + } + + columns = columns.map(function (item) { + item.title = _this2.gt(item.title); + return item; + }); + + _reactDom["default"].render( /*#__PURE__*/_react["default"].createElement(_IceTable["default"], { + ref: this.tableContainer, + reader: this.dataPipe, + columns: columns, + adapter: this + }, this.getTableChildComponents()), tableDom); + } + + this.tableInitialized = true; + return true; + } + }, { + key: "initForm", + value: function initForm() { + var _this3 = this; + + if (this.formInitialized) { + return false; + } + + this.formContainer = _react["default"].createRef(); + + if (this.modalType === this.MODAL_TYPE_NORMAL) { + _reactDom["default"].render( /*#__PURE__*/_react["default"].createElement(_IceFormModal["default"], { + ref: this.formContainer, + fields: this.getFormFields(), + adapter: this, + formReference: this.formReference + }), document.getElementById("".concat(this.tab, "Form"))); + } else { + _reactDom["default"].render( /*#__PURE__*/_react["default"].createElement(_IceStepFromModal["default"], { + ref: this.formContainer, + fields: this.getMappedFields(), + adapter: this, + formReference: this.formReference + }), document.getElementById("".concat(this.tab, "Form"))); + } + + var filterDom = document.getElementById("".concat(this.tab, "FilterForm")); + + if (filterDom && this.getFilters()) { + this.filtersContainer = _react["default"].createRef(); + + _reactDom["default"].render( /*#__PURE__*/_react["default"].createElement(_IceFormModal["default"], { + ref: this.filtersContainer, + fields: this.getFilters(), + adapter: this, + saveCallback: function saveCallback(values, showError, closeModal) { + _this3.setFilter(values); + + _this3.filtersAlreadySet = true; + + _this3.get([]); + + _this3.tableContainer.current.setFilterData(values); + + closeModal(); + } + }), filterDom); + } + + this.formInitialized = true; + return true; + } + }, { + key: "getTableChildComponents", + value: function getTableChildComponents() { + return false; + } + }, { + key: "reloadCurrentElement", + value: function reloadCurrentElement() { + this.viewElement(this.currentId); + } + }, { + key: "getTableActionButtonJsx", + value: function getTableActionButtonJsx(adapter) { + return function (text, record) { + return /*#__PURE__*/_react["default"].createElement(_antd.Space, { + size: "middle" + }, adapter.hasAccess('save') && adapter.showEdit && /*#__PURE__*/_react["default"].createElement(_antd.Tag, { + color: "green", + onClick: function onClick() { + return modJs.edit(record.id); + }, + style: { + cursor: 'pointer' + } + }, /*#__PURE__*/_react["default"].createElement(_icons.EditOutlined, null), " ".concat(adapter.gt('Edit'))), adapter.hasAccess('element') && /*#__PURE__*/_react["default"].createElement(_antd.Tag, { + color: "blue", + onClick: function onClick() { + return modJs.viewElement(record.id); + }, + style: { + cursor: 'pointer' + } + }, /*#__PURE__*/_react["default"].createElement(_icons.MonitorOutlined, null), " ".concat(adapter.gt('View'))), adapter.hasAccess('delete') && adapter.showDelete && /*#__PURE__*/_react["default"].createElement(_antd.Tag, { + color: "volcano", + onClick: function onClick() { + return modJs.deleteRow(record.id); + }, + style: { + cursor: 'pointer' + } + }, /*#__PURE__*/_react["default"].createElement(_icons.DeleteOutlined, null), " ".concat(adapter.gt('Delete'))), adapter.hasAccess('save') && /*#__PURE__*/_react["default"].createElement(_antd.Tag, { + color: "cyan", + onClick: function onClick() { + return modJs.copyRow(record.id); + }, + style: { + cursor: 'pointer' + } + }, /*#__PURE__*/_react["default"].createElement(_icons.CopyOutlined, null), " ".concat(adapter.gt('Copy')))); + }; + } + }, { + key: "setTableLoading", + value: function setTableLoading(value) { + this.tableContainer.current.setLoading(value); + } + /** + * Show the view form for an item + * @method viewElement + * @param id {int} id of the item to view + */ + + }, { + key: "viewElement", + value: function viewElement(id) { + var _this4 = this; + + this.setTableLoading(true); + this.currentId = id; + this.getElement(id, { + noRender: true, + callBack: function callBack(element) { + _this4.showElement(element); + + _this4.setTableLoading(false); + } + }); + } + }, { + key: "showElement", + value: function showElement(element) { + this.renderForm(element, true); + } + /** + * Show the edit form for an item + * @method edit + * @param id {int} id of the item to edit + */ + + }, { + key: "edit", + value: function edit(id) { + this.setTableLoading(true); + this.currentId = id; + this.getElement(id, []); + } + }, { + key: "renderForm", + value: function renderForm() { + var object = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; + var viewOnly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + + if (object == null) { + this.currentId = null; + this.currentElement = null; + } + + this.setTableLoading(false); + this.initForm(); + this.formContainer.current.setViewOnly(viewOnly); + this.formContainer.current.show(object); + } + }, { + key: "showFilters", + value: function showFilters() { + this.initForm(); + this.filtersContainer.current.show(this.filter); + } + }, { + key: "resetFilters", + value: function resetFilters() { + this.filter = this.origFilter; + this.filtersAlreadySet = false; + this.currentFilterString = ''; + this.get([]); + this.tableContainer.current.setFilterData(this.filter); + } + }, { + key: "get", + value: function get() { + var _this5 = this; + + if (this.tableContainer && this.tableContainer.current) { + this.tableContainer.current.setCurrentElement(null); + } + + this.initTable(); + this.masterDataReader.updateAllMasterData().then(function () { + _this5.tableContainer.current.reload(); + }); + this.trackEvent('get', this.tab, this.table); + } + }, { + key: "showLoader", + value: function showLoader() {// $('#iceloader').show(); + } + }, { + key: "addActualFieldsForStepModal", + value: function addActualFieldsForStepModal(steps, fields) { + return steps.map(function (item) { + item.fields = item.fields.reduce(function (acc, fieldName) { + var field = fields.find(function (_ref) { + var _ref2 = _slicedToArray(_ref, 1), + name = _ref2[0]; + + return name === fieldName; + }); + + if (field) { + acc.push(field); + } + + return acc; + }, []); + return item; + }); + } + }, { + key: "getFormOptions", + value: function getFormOptions() { + return { + width: 1024, + twoColumnLayout: false + }; + } + }]); + + return ReactModalAdapterBase; +}(_AdapterBase2["default"]); + +var _default = ReactModalAdapterBase; +exports["default"] = _default; + +},{"../components/IceFormModal":76,"../components/IceStepFromModal":81,"../components/IceTable":82,"./AdapterBase":57,"./MasterDataReader":66,"@ant-design/icons":"@ant-design/icons","antd":"antd","react":"react","react-dom":"react-dom"}],71:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _AdapterBase2 = _interopRequireDefault(require("./AdapterBase")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +/** + * @class SubAdapterBase + * @param endPoint + * @param tab + * @param filter + * @param orderBy + * @returns + */ +var SubAdapterBase = /*#__PURE__*/function (_AdapterBase) { + _inherits(SubAdapterBase, _AdapterBase); + + var _super = _createSuper(SubAdapterBase); + + function SubAdapterBase() { + _classCallCheck(this, SubAdapterBase); + + return _super.apply(this, arguments); + } + + _createClass(SubAdapterBase, [{ + key: "deleteRow", + value: function deleteRow(id) { + this.deleteParams.id = id; + this.confirmDelete(); + } + }, { + key: "createTable", + value: function createTable(elementId) { + var item; + var itemHtml; + var itemDelete; + var itemEdit; + var data = this.getTableData(); + var deleteButton = ""); + var editButton = ""); + var table = $('
    '); // add Header + + var header = this.getSubHeader(); + table.append(header); + + if (data.length === 0) { + table.append("".concat(this.getNoDataMessage(), "")); + } else { + for (var i = 0; i < data.length; i++) { + item = data[i]; + itemDelete = deleteButton.replace(/_id_/g, item[0]); + itemEdit = editButton.replace(/_id_/g, item[0]); + itemHtml = this.getSubItemHtml(item, itemDelete, itemEdit); + table.append(itemHtml); + } + } + + $("#".concat(elementId)).html(''); + $("#".concat(elementId)).append(table); + $('#plainMessageModel').modal('hide'); + } + }, { + key: "getNoDataMessage", + value: function getNoDataMessage() { + return 'No data found'; + } + }, { + key: "getSubHeader", + value: function getSubHeader() { + var header = $("

    ".concat(this.getSubHeaderTitle(), "

    ")); + return header; + } + }]); + + return SubAdapterBase; +}(_AdapterBase2["default"]); + +var _default = SubAdapterBase; +exports["default"] = _default; + +},{"./AdapterBase":57}],72:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _AdapterBase2 = _interopRequireDefault(require("./AdapterBase")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +/** + * TableEditAdapter + */ +var TableEditAdapter = /*#__PURE__*/function (_AdapterBase) { + _inherits(TableEditAdapter, _AdapterBase); + + var _super = _createSuper(TableEditAdapter); + + function TableEditAdapter(endPoint, tab, filter, orderBy) { + var _this; + + _classCallCheck(this, TableEditAdapter); + + _this = _super.call(this, endPoint, tab, filter, orderBy); + _this.cellDataUpdates = {}; + _this.modulePath = ''; + _this.rowFieldName = ''; + _this.columnFieldName = ''; + _this.rowTable = ''; + _this.columnTable = ''; + _this.valueTable = ''; + _this.csvData = []; + _this.columnIDMap = {}; + return _this; + } + + _createClass(TableEditAdapter, [{ + key: "setModulePath", + value: function setModulePath(path) { + this.modulePath = path; + } + }, { + key: "setRowFieldName", + value: function setRowFieldName(name) { + this.rowFieldName = name; + } + }, { + key: "setTables", + value: function setTables(rowTable, columnTable, valueTable) { + this.rowTable = rowTable; + this.columnTable = columnTable; + this.valueTable = valueTable; + } + }, { + key: "setColumnFieldName", + value: function setColumnFieldName(name) { + this.columnFieldName = name; + } + }, { + key: "getDataMapping", + value: function getDataMapping() { + return []; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return []; + } + }, { + key: "get", + value: function get() { + this.getAllData(); + } + }, { + key: "getAllData", + value: function getAllData(save) { + var req = {}; + req.rowTable = this.rowTable; + req.columnTable = this.columnTable; + req.valueTable = this.valueTable; + req = this.addAdditionalRequestData('getAllData', req); + req.save = save === undefined || save == null || save === false ? 0 : 1; + var reqJson = JSON.stringify(req); + var callBackData = []; + callBackData.callBackData = []; + callBackData.callBackSuccess = 'getAllDataSuccessCallBack'; + callBackData.callBackFail = 'getAllDataFailCallBack'; + this.customAction('getAllData', this.modulePath, reqJson, callBackData); + } + }, { + key: "getDataItem", + value: function getDataItem(row, column, allData) { + var columnData = allData[1]; + var rowData = allData[0]; + var serverData = allData[2]; + + if (column === -1) { + return rowData[row].name; + } + + return this.getDataItemByKeyValues(this.rowFieldName, rowData[row].id, this.columnFieldName, columnData[column].id, serverData); + } + }, { + key: "getDataItemByKeyValues", + value: function getDataItemByKeyValues(rowKeyName, rowKeyVal, colKeyName, colKeyVal, data) { + for (var i = 0; i < data.length; i++) { + if (data[i][rowKeyName] === rowKeyVal && data[i][colKeyName] === colKeyVal) { + return data[i].amount !== undefined && data[i].amount != null ? data[i].amount : ''; + } + } + + return ''; + } + }, { + key: "getAllDataSuccessCallBack", + value: function getAllDataSuccessCallBack(allData) { + var serverData = allData[2]; + var columnData = allData[1]; + var rowData = allData[0]; + var data = []; + + for (var i = 0; i < rowData.length; i++) { + var row = []; + + for (var j = -1; j < columnData.length; j++) { + row[j + 1] = this.getDataItem(i, j, allData); + } + + data.push(this.preProcessTableData(row)); + } + + this.sourceData = serverData; + this.tableData = data; + this.setHeaders(columnData, rowData); + this.createTable(this.getTableName()); + $("#".concat(this.getTableName(), "Form")).hide(); + $("#".concat(this.getTableName())).show(); + this.csvData = []; + var tmpRow = []; + + for (var _i = 0; _i < columnData.length; _i++) { + tmpRow.push(columnData[_i].name); + } + + tmpRow = this.modifyCSVHeader(tmpRow); + this.csvData.push(tmpRow); + + for (var _i2 = 0; _i2 < data.length; _i2++) { + this.csvData.push(data[_i2]); + } + } + }, { + key: "modifyCSVHeader", + value: function modifyCSVHeader(header) { + return header; + } + }, { + key: "getAllDataFailCallBack", + value: function getAllDataFailCallBack(callBackData, serverData) {} + }, { + key: "setHeaders", + value: function setHeaders(columns, rows) { + var headers = []; + headers.push({ + sTitle: '', + sWidth: '180px;' + }); + var sclass = ''; + this.columnIDMap = {}; + + for (var i = 0; i < columns.length; i++) { + this.columnIDMap[columns[i].id] = i; + + if (columns[i].editable === undefined || columns[i].editable == null || columns[i].editable === 'Yes') { + sclass = 'editcell'; + } else { + sclass = ''; + } + + headers.push({ + sTitle: columns[i].name, + sClass: sclass, + fnCreatedCell: function fnCreatedCell(nTd, sData, oData, iRow, iCol) { + $(nTd).data('colId', columns[iCol - 1].id); + $(nTd).data('rowId', rows[iRow].id); + } + }); + } + + this.headers = headers; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return this.headers; + } + }, { + key: "createTable", + value: function createTable(elementId) { + var data = this.getTableData(); + var headers = this.getHeaders(); + + if (this.showActionButtons()) { + headers.push({ + sTitle: '', + sClass: 'center' + }); + } + + if (this.showActionButtons()) { + for (var i = 0; i < data.length; i++) { + data[i].push(this.getActionButtonsHtml(data[i][0], data[i])); + } + } + + var html = ''; + html = "".concat(this.getTableTopButtonHtml(), "
    "); // Find current page + + var activePage = $("#".concat(elementId, " .dataTables_paginate .active a")).html(); + var start = 0; + + if (activePage !== undefined && activePage != null) { + start = parseInt(activePage, 10) * 15 - 15; + } + + $("#".concat(elementId)).html(html); + var dataTableParams = { + oLanguage: { + sLengthMenu: '_MENU_ records per page' + }, + aaData: data, + aoColumns: headers, + bSort: false, + iDisplayLength: 15, + iDisplayStart: start + }; + var customTableParams = this.getCustomTableParams(); + $.extend(dataTableParams, customTableParams); + $("#".concat(elementId, " #grid")).dataTable(dataTableParams); + $('.dataTables_paginate ul').addClass('pagination'); + $('.dataTables_length').hide(); + $('.dataTables_filter input').addClass('form-control'); + $('.dataTables_filter input').attr('placeholder', 'Search'); + $('.dataTables_filter label').contents().filter(function () { + return this.nodeType === 3; + }).remove(); // $('.tableActionButton').tooltip(); + + $("#".concat(elementId, " #grid")).editableTableWidget(); + $("#".concat(elementId, " #grid .editcell")).on('validate', function (evt, newValue) { + return modJs.validateCellValue($(this), evt, newValue); + }); + this.afterCreateTable(elementId); + } + }, { + key: "afterCreateTable", + value: function afterCreateTable(elementId) {} + }, { + key: "addCellDataUpdate", + value: function addCellDataUpdate(colId, rowId, data) { + this.cellDataUpdates["".concat(colId, "=").concat(rowId)] = [colId, rowId, data]; + } + }, { + key: "addAdditionalRequestData", + value: function addAdditionalRequestData(type, req) { + return req; + } + }, { + key: "sendCellDataUpdates", + value: function sendCellDataUpdates() { + var req = this.cellDataUpdates; + req.rowTable = this.rowTable; + req.columnTable = this.columnTable; + req.valueTable = this.valueTable; + req = this.addAdditionalRequestData('updateData', req); + var reqJson = JSON.stringify(req); + var callBackData = []; + callBackData.callBackData = []; + callBackData.callBackSuccess = 'updateDataSuccessCallBack'; + callBackData.callBackFail = 'updateDataFailCallBack'; + this.showLoader(); + this.customAction('updateData', this.modulePath, reqJson, callBackData); + } + }, { + key: "updateDataSuccessCallBack", + value: function updateDataSuccessCallBack(callBackData, serverData) { + this.hideLoader(); + modJs.cellDataUpdates = {}; + modJs.get(); + } + }, { + key: "updateDataFailCallBack", + value: function updateDataFailCallBack(callBackData, serverData) { + this.hideLoader(); + } + }, { + key: "sendAllCellDataUpdates", + value: function sendAllCellDataUpdates() { + var req = this.cellDataUpdates; + req.rowTable = this.rowTable; + req.columnTable = this.columnTable; + req.valueTable = this.valueTable; + req = this.addAdditionalRequestData('updateAllData', req); + var reqJson = JSON.stringify(req); + var callBackData = []; + callBackData.callBackData = []; + callBackData.callBackSuccess = 'updateDataAllSuccessCallBack'; + callBackData.callBackFail = 'updateDataAllFailCallBack'; + this.showLoader(); + this.customAction('updateAllData', this.modulePath, reqJson, callBackData); + } + }, { + key: "updateDataAllSuccessCallBack", + value: function updateDataAllSuccessCallBack(callBackData, serverData) { + this.hideLoader(); + modJs.cellDataUpdates = {}; + modJs.getAllData(true); + } + }, { + key: "updateDataAllFailCallBack", + value: function updateDataAllFailCallBack(callBackData, serverData) { + this.hideLoader(); + } + }, { + key: "showActionButtons", + value: function showActionButtons() { + return false; + } + }]); + + return TableEditAdapter; +}(_AdapterBase2["default"]); + +var _default = TableEditAdapter; +exports["default"] = _default; + +},{"./AdapterBase":57}],73:[function(require,module,exports){ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _react = _interopRequireWildcard(require("react")); + +var _reactColor = require("react-color"); + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function useComponentVisible(initialIsVisible) { + var _useState = (0, _react.useState)(initialIsVisible), + _useState2 = _slicedToArray(_useState, 2), + isComponentVisible = _useState2[0], + setIsComponentVisible = _useState2[1]; + + var ref = (0, _react.useRef)(null); + + var handleClickOutside = function handleClickOutside(event) { + if (ref.current && !ref.current.contains(event.target)) { + setIsComponentVisible(false); + } + }; + + (0, _react.useEffect)(function () { + document.addEventListener('click', handleClickOutside, true); + return function () { + document.removeEventListener('click', handleClickOutside, true); + }; + }); + return { + ref: ref, + isComponentVisible: isComponentVisible, + setIsComponentVisible: setIsComponentVisible + }; +} + +function IceColorPick(props) { + var value = props.value, + onChange = props.onChange, + readOnly = props.readOnly; + + var _useComponentVisible = useComponentVisible(true), + ref = _useComponentVisible.ref, + isComponentVisible = _useComponentVisible.isComponentVisible, + setIsComponentVisible = _useComponentVisible.setIsComponentVisible; + + var _useState3 = (0, _react.useState)(value || '#FFF'), + _useState4 = _slicedToArray(_useState3, 2), + color = _useState4[0], + setColor = _useState4[1]; + + var _useState5 = (0, _react.useState)(false), + _useState6 = _slicedToArray(_useState5, 2), + showPicker = _useState6[0], + setShowPicker = _useState6[1]; + + (0, _react.useEffect)(function () { + if (!isComponentVisible) { + setShowPicker(false); + } + }, [isComponentVisible]); + (0, _react.useEffect)(function () { + if (value) { + setColor(value); + } + }, [value]); + return /*#__PURE__*/_react["default"].createElement("div", { + className: "colorpicker-container" + }, /*#__PURE__*/_react["default"].createElement("div", { + className: "colorpicker-preview", + onClick: function onClick() { + if (!showPicker) { + setIsComponentVisible(true); + } + + setShowPicker(!showPicker); + }, + style: { + backgroundColor: color + } + }), /*#__PURE__*/_react["default"].createElement("div", { + ref: ref, + className: "colorpicker-component ".concat(readOnly || !showPicker ? 'hidden' : '') + }, /*#__PURE__*/_react["default"].createElement(_reactColor.SketchPicker, { + color: color, + disableAlpha: true, + presetColors: [], + onChangeComplete: function onChangeComplete(_ref) { + var hex = _ref.hex; + onChange(hex); + setColor(hex); + } + }))); +} + +var _default = IceColorPick; +exports["default"] = _default; + +},{"react":"react","react-color":360}],74:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _react = _interopRequireDefault(require("react")); + +var _antd = require("antd"); + +var _IceFormModal = _interopRequireDefault(require("./IceFormModal")); + +var _reactDom = _interopRequireDefault(require("react-dom")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var Option = _antd.Select.Option; + +var IceDataGroup = /*#__PURE__*/function (_React$Component) { + _inherits(IceDataGroup, _React$Component); + + var _super = _createSuper(IceDataGroup); + + function IceDataGroup(props) { + var _this; + + _classCallCheck(this, IceDataGroup); + + _this = _super.call(this, props); + _this.state = {}; + _this.onChange = props.onChange; + _this.formReference = _react["default"].createRef(); + return _this; + } + + _createClass(IceDataGroup, [{ + key: "render", + value: function render() { + var _this2 = this; + + var _this$props = this.props, + field = _this$props.field, + adapter = _this$props.adapter; + var value = this.props.value; + value = this.parseValue(value); + value = value.map(function (item) { + return _objectSpread({}, item, { + key: item.id + }); + }); + var columns = JSON.parse(JSON.stringify(field[1].columns)); + + if (!this.props.readOnly) { + columns.push({ + title: 'Action', + key: 'action', + render: function render(text, record) { + return _this2.getDefaultButtons(record.id); + } + }); + } + + return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, !this.props.readOnly && /*#__PURE__*/_react["default"].createElement(_antd.Space, { + direction: "horizontal" + }, /*#__PURE__*/_react["default"].createElement(_antd.Button, { + type: "link", + htmlType: "button", + onClick: function onClick() { + _this2.createForm(field, adapter, {}); + } + }, "Add"), /*#__PURE__*/_react["default"].createElement(_antd.Button, { + type: "link", + htmlType: "button", + danger: true, + onClick: function onClick() { + _this2.resetDataGroup(); + } + }, "Reset")), /*#__PURE__*/_react["default"].createElement(_antd.Table, { + columns: columns, + dataSource: value + })); + } + }, { + key: "createForm", + value: function createForm(field, adapter, object) { + this.formContainer = _react["default"].createRef(); + var formFields = field[1].form; + formFields.unshift(['id', { + label: 'ID', + type: 'hidden' + }]); + + _reactDom["default"].render( /*#__PURE__*/_react["default"].createElement(_IceFormModal["default"], { + ref: this.formContainer, + fields: formFields, + title: this.props.title, + adapter: adapter, + formReference: this.formReference, + saveCallback: this.save.bind(this), + cancelCallback: this.unmountForm.bind(this) + }), document.getElementById('dataGroup')); + + this.formContainer.current.show(object); + } + }, { + key: "unmountForm", + value: function unmountForm() { + _reactDom["default"].unmountComponentAtNode(document.getElementById('dataGroup')); + } + }, { + key: "show", + value: function show(data) { + var _this3 = this; + + if (!data) { + this.setState({ + visible: true + }); + this.updateFields(data); + } else { + this.setState({ + visible: true + }); + + if (this.formReference.current) { + this.updateFields(data); + } else { + this.waitForIt(function () { + return _this3.formReference.current != null; + }, function () { + _this3.updateFields(data); + }, 100); + } + } + } + }, { + key: "parseValue", + value: function parseValue(value) { + try { + value = JSON.parse(value); + } catch (e) { + value = []; + } + + if (value == null) { + value = []; + } + + return value; + } + }, { + key: "save", + value: function save(params, errorCallback, closeCallback) { + var _this$props2 = this.props, + field = _this$props2.field, + value = _this$props2.value; + + if (field[1]['custom-validate-function'] != null) { + var tempParams = field[1]['custom-validate-function'].apply(this, [params]); + + if (tempParams.valid) { + params = tempParams.params; + } else { + errorCallback(tempParams.message); + return false; + } + } + + var data = this.parseValue(value); + var newData = []; + + if (!params.id) { + params.id = "".concat(field[0], "_").concat(this.dataGroupGetNextAutoIncrementId(data)); + data.push(params); + newData = data; + } else { + for (var i = 0; i < data.length; i++) { + var item = data[i]; + + if (item.id !== params.id) { + newData.push(item); + } else { + newData.push(params); + } + } + } + + if (field[1]['sort-function'] != null) { + newData.sort(field[1]['sort-function']); + } + + var val = JSON.stringify(newData); + this.onChange(val); + this.unmountForm(); + } + }, { + key: "createCard", + value: function createCard(item) { + var field = this.props.field; + + if (field[1]['pre-format-function'] != null) { + item = field[1]['pre-format-function'].apply(this, [item]); + } + + var template = field[1].html; + var t = template.replace('#_delete_#', ''); + t = t.replace('#_edit_#', ''); + t = t.replace(/#_id_#/g, item.id); + + for (var key in item) { + var itemVal = item[key]; + + if (itemVal !== undefined && itemVal != null && typeof itemVal === 'string') { + itemVal = itemVal.replace(/(?:\r\n|\r|\n)/g, '
    '); + } + + t = t.replace("#_".concat(key, "_#"), itemVal); + } + + if (field[1].render !== undefined && field[1].render != null) { + t = t.replace('#_renderFunction_#', field[1].render(item)); + } + + return /*#__PURE__*/_react["default"].createElement(_antd.Card, { + key: item.id, + title: "", + extra: this.getDefaultButtons(item.id) + }, /*#__PURE__*/_react["default"].createElement("div", { + dangerouslySetInnerHTML: { + __html: t + } + })); + } + }, { + key: "getDefaultButtons", + value: function getDefaultButtons(id) { + var _this4 = this; + + return /*#__PURE__*/_react["default"].createElement(_antd.Space, null, /*#__PURE__*/_react["default"].createElement("a", { + href: "#", + onClick: function onClick() { + _this4.editDataGroupItem(id); + } + }, /*#__PURE__*/_react["default"].createElement("li", { + className: "fa fa-edit" + })), /*#__PURE__*/_react["default"].createElement("a", { + href: "#", + onClick: function onClick() { + _this4.deleteDataGroupItem(id); + } + }, /*#__PURE__*/_react["default"].createElement("li", { + className: "fa fa-times" + }))); + } + }, { + key: "deleteDataGroupItem", + value: function deleteDataGroupItem(id) { + var value = this.props.value; + var data = this.parseValue(value); + var newVal = []; + + for (var i = 0; i < data.length; i++) { + var item = data[i]; + + if (item.id !== id) { + newVal.push(item); + } + } + + var val = JSON.stringify(newVal); + this.onChange(val); + } + }, { + key: "editDataGroupItem", + value: function editDataGroupItem(id) { + var _this$props3 = this.props, + field = _this$props3.field, + adapter = _this$props3.adapter, + value = _this$props3.value; + var data = this.parseValue(value); + var editVal = {}; + + for (var i = 0; i < data.length; i++) { + var item = data[i]; + + if (item.id === id) { + editVal = item; + } + } + + this.createForm(field, adapter, editVal); + } + }, { + key: "resetDataGroup", + value: function resetDataGroup() { + this.onChange('[]'); + } + }, { + key: "dataGroupGetNextAutoIncrementId", + value: function dataGroupGetNextAutoIncrementId(data) { + var autoId = 1; + var id; + + for (var i = 0; i < data.length; i++) { + var item = data[i]; + + if (item.id === undefined || item.id == null) { + item.id = 1; + } + + id = item.id.substring(item.id.lastIndexOf('_') + 1, item.id.length); + + if (id >= autoId) { + autoId = parseInt(id, 10) + 1; + } + } + + return autoId; + } + }]); + + return IceDataGroup; +}(_react["default"].Component); + +var _default = IceDataGroup; +exports["default"] = _default; + +},{"./IceFormModal":76,"antd":"antd","react":"react","react-dom":"react-dom"}],75:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _react = _interopRequireDefault(require("react")); + +var _antd = require("antd"); + +var _moment = _interopRequireDefault(require("moment")); + +var _IceUpload = _interopRequireDefault(require("./IceUpload")); + +var _IceDataGroup = _interopRequireDefault(require("./IceDataGroup")); + +var _IceSelect = _interopRequireDefault(require("./IceSelect")); + +var _IceLabel = _interopRequireDefault(require("./IceLabel")); + +var _IceColorPick = _interopRequireDefault(require("./IceColorPick")); + +var _IceSignature = _interopRequireDefault(require("./IceSignature")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var ValidationRules = { + "float": function float(str) { + var floatstr = /^[-+]?[0-9]+(\.[0-9]+)?$/; + + if (str != null && str.match(floatstr)) { + return true; + } + + return false; + }, + number: function number(str) { + var numstr = /^[0-9]+$/; + + if (str != null && str.match(numstr)) { + return true; + } + + return false; + }, + numberOrEmpty: function numberOrEmpty(str) { + if (str === '') { + return true; + } + + var numstr = /^[0-9]+$/; + + if (str != null && str.match(numstr)) { + return true; + } + + return false; + }, + email: function email(str) { + var emailPattern = /^\s*[\w\-+_]+(\.[\w\-+_]+)*@[\w\-+_]+\.[\w\-+_]+(\.[\w\-+_]+)*\s*$/; + return str != null && emailPattern.test(str); + }, + emailOrEmpty: function emailOrEmpty(str) { + if (str === '') { + return true; + } + + var emailPattern = /^\s*[\w\-+_]+(\.[\w\-+_]+)*@[\w\-+_]+\.[\w\-+_]+(\.[\w\-+_]+)*\s*$/; + return str != null && emailPattern.test(str); + }, + username: function username(str) { + var username = /^[a-zA-Z0-9.-]+$/; + return str != null && username.test(str); + } +}; + +var IceForm = /*#__PURE__*/function (_React$Component) { + _inherits(IceForm, _React$Component); + + var _super = _createSuper(IceForm); + + function IceForm(props) { + var _this; + + _classCallCheck(this, IceForm); + + _this = _super.call(this, props); + _this.validationRules = {}; + _this.state = { + validations: {}, + errorMsg: false + }; + _this.formReference = _react["default"].createRef(); + return _this; + } + + _createClass(IceForm, [{ + key: "showError", + value: function showError(errorMsg) { + this.setState({ + errorMsg: errorMsg + }); + } + }, { + key: "hideError", + value: function hideError() { + this.setState({ + errorMsg: false + }); + } + }, { + key: "isReady", + value: function isReady() { + return this.formReference.current != null; + } + }, { + key: "validateFields", + value: function validateFields() { + return this.formReference.current.validateFields(); + } + }, { + key: "render", + value: function render() { + var _this$props = this.props, + fields = _this$props.fields, + twoColumnLayout = _this$props.twoColumnLayout, + adapter = _this$props.adapter; + var formInputs = []; + var formInputs1 = []; + var formInputs2 = []; + var columns = !twoColumnLayout ? 1 : 2; + + for (var i = 0; i < fields.length; i++) { + formInputs.push(adapter.beforeRenderFieldHook(fields[i][0], this.createFromField(fields[i], this.props.viewOnly), fields[i][1])); + } + + formInputs = formInputs.filter(function (input) { + return !!input; + }); + + for (var _i = 0; _i < formInputs.length; _i++) { + if (formInputs[_i] != null) { + if (columns === 1) { + formInputs1.push(formInputs[_i]); + } else if (_i % 2 === 0) { + formInputs1.push(formInputs[_i]); + } else { + formInputs2.push(formInputs[_i]); + } + } + } + + var onFormLayoutChange = function onFormLayoutChange() {}; + + return /*#__PURE__*/_react["default"].createElement(_antd.Form, { + ref: this.formReference, + labelCol: { + span: 6 + }, + wrapperCol: { + span: 16 + }, + layout: this.props.layout || 'horizontal', + initialValues: { + size: 'middle' + }, + onValuesChange: onFormLayoutChange, + size: "middle" + }, this.state.errorMsg && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_antd.Alert, { + message: this.state.errorMsg, + type: "error", + showIcon: true + }), /*#__PURE__*/_react["default"].createElement("br", null)), columns === 1 && formInputs1, columns === 2 && /*#__PURE__*/_react["default"].createElement(_antd.Row, { + gutter: 16 + }, /*#__PURE__*/_react["default"].createElement(_antd.Col, { + className: "gutter-row", + span: 12 + }, formInputs1), /*#__PURE__*/_react["default"].createElement(_antd.Col, { + className: "gutter-row", + span: 12 + }, formInputs2))); + } + }, { + key: "isValid", + value: function isValid() { + var _this2 = this; + + return Object.keys(this.validationRules).reduce(function (acc, fieldName) { + return acc && (_this2.state[fieldName] === 'success' || _this2.state[fieldName] == null); + }, true); + } + }, { + key: "validateOnChange", + value: function validateOnChange(event) { + var validationRule = this.validationRules[event.target.id]; + var validations = this.state.validations; + + if (validationRule) { + if (validationRule.rule(event.target.value)) { + this.state[event.target.id] = 'success'; + this.state["".concat(event.target.id, "_message")] = null; + } else { + this.state[event.target.id] = 'error'; + this.state["".concat(event.target.id, "_message")] = validationRule.message; + } + } + + this.setState({ + validations: validations + }); + } + }, { + key: "createFromField", + value: function createFromField(field) { + var viewOnly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + var userId = 0; + var rules = []; + var requiredRule = { + required: true + }; + + var _field = _slicedToArray(field, 2), + name = _field[0], + data = _field[1]; + + var _this$props2 = this.props, + adapter = _this$props2.adapter, + layout = _this$props2.layout; + var validationRule = null; + data.label = adapter.gt(data.label); + var labelSpan = layout === 'vertical' ? { + span: 24 + } : { + span: 6 + }; + var tempSelectBoxes = ['select', 'select2', 'select2multi']; + + if (tempSelectBoxes.indexOf(data.type) >= 0 && data['allow-null'] === true) { + requiredRule.required = false; + } else if (data.validation === 'none' || data.validation === 'emailOrEmpty' || data.validation === 'numberOrEmpty') { + requiredRule.required = false; + } else { + requiredRule.required = true; + requiredRule.message = this.generateFieldMessage(data.label); + } + + rules.push(requiredRule); + + if (data.type === 'hidden') { + requiredRule.required = false; + return /*#__PURE__*/_react["default"].createElement(_antd.Form.Item, { + labelCol: labelSpan, + style: { + display: 'none' + }, + label: data.label, + key: name, + name: name, + rules: rules + }, /*#__PURE__*/_react["default"].createElement(_antd.Input, null)); + } + + if (data.type === 'text') { + if (data.validation) { + data.validation = data.validation.replace('OrEmpty', ''); + validationRule = this.getValidationRule(data); + + if (validationRule) { + this.validationRules[name] = { + rule: validationRule, + message: "Invalid value for ".concat(data.label) + }; + } + } + + if (validationRule != null) { + return /*#__PURE__*/_react["default"].createElement(_antd.Form.Item, { + labelCol: labelSpan, + label: data.label, + key: name, + name: name, + rules: rules, + validateStatus: this.state[name], + help: this.state["".concat(name, "_message")] + }, viewOnly ? /*#__PURE__*/_react["default"].createElement(_IceLabel["default"], null) : /*#__PURE__*/_react["default"].createElement(_antd.Input, { + onChange: this.validateOnChange.bind(this) + })); + } + + return /*#__PURE__*/_react["default"].createElement(_antd.Form.Item, { + labelCol: labelSpan, + label: data.label, + key: name, + name: name, + rules: rules + }, viewOnly ? /*#__PURE__*/_react["default"].createElement(_IceLabel["default"], null) : /*#__PURE__*/_react["default"].createElement(_antd.Input, null)); + } + + if (data.type === 'textarea') { + if (!data.rows) { + data.rows = 4; + } + + return /*#__PURE__*/_react["default"].createElement(_antd.Form.Item, { + labelCol: labelSpan, + label: data.label, + key: name, + name: name, + rules: rules + }, viewOnly ? /*#__PURE__*/_react["default"].createElement(_IceLabel["default"], null) : /*#__PURE__*/_react["default"].createElement(_antd.Input.TextArea, { + rows: data.rows + })); + } + + if (data.type === 'date') { + return /*#__PURE__*/_react["default"].createElement(_antd.Form.Item, { + labelCol: labelSpan, + label: data.label, + key: name, + name: name, + rules: rules + }, /*#__PURE__*/_react["default"].createElement(_antd.DatePicker, { + disabled: viewOnly + })); + } + + if (data.type === 'datetime') { + return /*#__PURE__*/_react["default"].createElement(_antd.Form.Item, { + labelCol: labelSpan, + label: data.label, + key: name, + name: name, + rules: rules + }, /*#__PURE__*/_react["default"].createElement(_antd.DatePicker, { + format: "YYYY-MM-DD HH:mm:ss", + disabled: viewOnly + })); + } + + if (data.type === 'time') { + return /*#__PURE__*/_react["default"].createElement(_antd.Form.Item, { + labelCol: labelSpan, + label: data.label, + key: name, + name: name, + rules: rules + }, /*#__PURE__*/_react["default"].createElement(_antd.TimePicker, { + format: "HH:mm", + disabled: viewOnly + })); + } + + if (data.type === 'fileupload') { + var currentEmployee = adapter.getCurrentProfile(); + + if (currentEmployee != null) { + userId = currentEmployee.id; + } else { + userId = adapter.getUser().id * -1; + } + + if (data.filetypes == null) { + data.filetypes = '.doc,.docx,.xml,' + 'application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,' + 'image/*,' + '.pdf'; + } + + return /*#__PURE__*/_react["default"].createElement(_antd.Form.Item, { + labelCol: labelSpan, + name: name, + key: name, + label: data.label + }, /*#__PURE__*/_react["default"].createElement(_IceUpload["default"], { + user: userId, + fileGroup: adapter.tab, + fileName: name, + adapter: adapter, + accept: data.filetypes, + readOnly: viewOnly + })); + } + + if (data.type === 'datagroup') { + return /*#__PURE__*/_react["default"].createElement(_antd.Form.Item, { + labelCol: labelSpan, + name: name, + key: name, + label: data.label + }, /*#__PURE__*/_react["default"].createElement(_IceDataGroup["default"], { + adapter: adapter, + field: field, + title: data.label, + readOnly: viewOnly + })); + } + + if (data.type === 'select2' || data.type === 'select' || data.type === 'select2multi') { + return /*#__PURE__*/_react["default"].createElement(_antd.Form.Item, { + labelCol: labelSpan, + label: data.label, + key: name, + name: name, + rules: rules + }, /*#__PURE__*/_react["default"].createElement(_IceSelect["default"], { + adapter: adapter, + field: field, + readOnly: viewOnly + })); + } + + if (data.type === 'colorpick') { + return /*#__PURE__*/_react["default"].createElement(_antd.Form.Item, { + labelCol: labelSpan, + name: name, + key: name, + label: data.label + }, /*#__PURE__*/_react["default"].createElement(_IceColorPick["default"], { + adapter: adapter, + field: field, + title: data.label, + readOnly: viewOnly + })); + } + + if (data.type === 'signature') { + return /*#__PURE__*/_react["default"].createElement(_antd.Form.Item, { + labelCol: labelSpan, + label: data.label, + key: name, + name: name, + rules: rules + }, /*#__PURE__*/_react["default"].createElement(_IceSignature["default"], { + readOnly: viewOnly + })); + } + + return null; + } + }, { + key: "generateFieldMessage", + value: function generateFieldMessage(label) { + return "".concat(label, ": ").concat(this.props.adapter.gt('is required')); + } + }, { + key: "getValidationRule", + value: function getValidationRule(data) { + if (ValidationRules[data.validation] == null) { + return null; + } + + return ValidationRules[data.validation]; + } + }, { + key: "dataToFormFields", + value: function dataToFormFields(data, fields) { + for (var i = 0; i < fields.length; i++) { + var _fields$i = _slicedToArray(fields[i], 2), + key = _fields$i[0], + formInputData = _fields$i[1]; + + if (formInputData.type === 'date') { + data[key] = data[key] ? (0, _moment["default"])(data[key], 'YYYY-MM-DD') : null; + } else if (formInputData.type === 'datetime') { + data[key] = data[key] ? (0, _moment["default"])(data[key], 'YYYY-MM-DD HH:mm:ss') : null; + } else if (formInputData.type === 'time') { + data[key] = data[key] ? (0, _moment["default"])(data[key], 'HH:mm') : null; + } + } + + return data; + } + }, { + key: "formFieldsToData", + value: function formFieldsToData(params, fields) { + for (var i = 0; i < fields.length; i++) { + var _fields$i2 = _slicedToArray(fields[i], 2), + key = _fields$i2[0], + formInputData = _fields$i2[1]; + + if (formInputData.type === 'date') { + params[key] = params[key] ? params[key].format('YYYY-MM-DD') : 'NULL'; + } else if (formInputData.type === 'datetime') { + params[key] = params[key] ? params[key].format('YYYY-MM-DD HH:mm:ss') : 'NULL'; + } else if (formInputData.type === 'time') { + params[key] = params[key] ? params[key].format('HH:mm') : 'NULL'; + } else if ((formInputData.type === 'select' || formInputData.type === 'select2') && params[key] == null) { + params[key] = 'NULL'; + } + } + + return params; + } + }, { + key: "updateFields", + value: function updateFields(data) { + var fields = this.props.fields; + data = this.dataToFormFields(data, fields); + this.formReference.current.resetFields(); + + if (data == null) { + return; + } + + try { + this.formReference.current.setFieldsValue(data); + } catch (e) { + console.log(e); + } + } + }, { + key: "resetFields", + value: function resetFields() { + this.formReference.current.resetFields(); + } + }, { + key: "setFieldsValue", + value: function setFieldsValue(data) { + this.formReference.current.setFieldsValue(data); + } + }, { + key: "save", + value: function save(params, success) { + var _this3 = this; + + var _this$props3 = this.props, + adapter = _this$props3.adapter, + fields = _this$props3.fields; + var values = params; + values = adapter.forceInjectValuesBeforeSave(values); + var msg = adapter.doCustomValidation(values); + + if (msg !== null) { + this.showError(msg); + return; + } + + if (adapter.csrfRequired) { + values.csrf = $("#".concat(adapter.getTableName(), "Form")).data('csrf'); + } + + var id = adapter.currentElement != null ? adapter.currentElement.id : null; + + if (id != null && id !== '') { + values.id = id; + } + + values = this.formFieldsToData(values, fields); + adapter.add(values, [], function () { + return adapter.get([]); + }, function () { + _this3.formReference.current.resetFields(); + + _this3.showError(false); + + success(); + }); + } + }]); + + return IceForm; +}(_react["default"].Component); + +var _default = IceForm; +exports["default"] = _default; + +},{"./IceColorPick":73,"./IceDataGroup":74,"./IceLabel":77,"./IceSelect":78,"./IceSignature":79,"./IceUpload":83,"antd":"antd","moment":"moment","react":"react"}],76:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _react = _interopRequireDefault(require("react")); + +var _antd = require("antd"); + +var _IceForm = _interopRequireDefault(require("./IceForm")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var IceFormModal = /*#__PURE__*/function (_React$Component) { + _inherits(IceFormModal, _React$Component); + + var _super = _createSuper(IceFormModal); + + function IceFormModal(props) { + var _this; + + _classCallCheck(this, IceFormModal); + + _this = _super.call(this, props); + _this.state = { + visible: false, + viewOnly: false, + loading: false + }; + _this.iceFormReference = _react["default"].createRef(); + _this.width = 800; + return _this; + } + + _createClass(IceFormModal, [{ + key: "setViewOnly", + value: function setViewOnly(value) { + this.setState({ + viewOnly: value + }); + } + }, { + key: "show", + value: function show(data) { + var _this2 = this; + + this.props.adapter.beforeRenderFieldHook = this.props.adapter.beforeRenderField ? this.props.adapter.beforeRenderField(data) : function (fieldName, field) { + return field; + }; + + if (!data) { + this.setState({ + visible: true + }); + + if (this.iceFormReference.current) { + this.iceFormReference.current.resetFields(); + } + } else { + this.setState({ + visible: true + }); + + if (this.iceFormReference.current && this.iceFormReference.current.isReady()) { + this.iceFormReference.current.updateFields(data); + } else { + this.waitForIt(function () { + return _this2.iceFormReference.current && _this2.iceFormReference.current.isReady(); + }, function () { + _this2.iceFormReference.current.updateFields(data); + }, 1000); + } + } + } + }, { + key: "waitForIt", + value: function waitForIt(condition, callback, time) { + var _this3 = this; + + setTimeout(function () { + if (condition()) { + callback(); + } else { + _this3.waitForIt(condition, callback, time); + } + }, time); + } + }, { + key: "hide", + value: function hide() { + this.setState({ + visible: false + }); + } + }, { + key: "save", + value: function save(params) { + var _this4 = this; + + this.iceFormReference.current.save(params, function () { + _this4.closeModal(); + }); + } + }, { + key: "closeModal", + value: function closeModal() { + this.hide(); + this.iceFormReference.current.showError(false); + } + }, { + key: "render", + value: function render() { + var _this5 = this; + + var _this$props = this.props, + fields = _this$props.fields, + adapter = _this$props.adapter, + saveCallback = _this$props.saveCallback, + cancelCallback = _this$props.cancelCallback; + var additionalProps = {}; + additionalProps.footer = /*#__PURE__*/_react["default"].createElement(_antd.Row, { + gutter: 16 + }, /*#__PURE__*/_react["default"].createElement(_antd.Col, { + className: "gutter-row", + span: 12, + style: {} + }), /*#__PURE__*/_react["default"].createElement(_antd.Col, { + className: "gutter-row", + span: 12, + style: { + textAlign: 'right' + } + }, /*#__PURE__*/_react["default"].createElement(_antd.Space, null, /*#__PURE__*/_react["default"].createElement(_antd.Button, { + onClick: function onClick() { + if (cancelCallback) { + cancelCallback(); + } else { + _this5.closeModal(); + } + } + }, this.props.adapter.gt('Cancel')), /*#__PURE__*/_react["default"].createElement(_antd.Button, { + loading: this.state.loading, + type: "primary", + onClick: function onClick() { + _this5.setState({ + loading: true + }); + + var iceFrom = _this5.iceFormReference.current; + iceFrom.validateFields().then(function (values) { + if (!iceFrom.isValid()) { + _this5.setState({ + loading: false + }); + + return; + } + + if (saveCallback) { + saveCallback(values, iceFrom.showError.bind(_this5), _this5.closeModal.bind(_this5)); + } else { + _this5.save(values); + } + + _this5.setState({ + loading: false + }); + })["catch"](function (info) { + _this5.setState({ + loading: false + }); + }); + } + }, this.state.viewOnly ? this.props.adapter.gt('Done') : this.props.adapter.gt('Save'))))); + + if (this.state.viewOnly) { + additionalProps.footer = null; + } + + return /*#__PURE__*/_react["default"].createElement(_antd.Modal, _extends({ + visible: this.state.visible, + title: this.props.adapter.gt(this.props.title || adapter.objectTypeName), + maskClosable: false, + width: this.width, + onCancel: function onCancel() { + if (cancelCallback) { + cancelCallback(); + } else { + _this5.closeModal(); + } + } + }, additionalProps), /*#__PURE__*/_react["default"].createElement(_IceForm["default"], { + ref: this.iceFormReference, + adapter: adapter, + fields: fields, + viewOnly: this.state.viewOnly + })); + } + }]); + + return IceFormModal; +}(_react["default"].Component); + +var _default = IceFormModal; +exports["default"] = _default; + +},{"./IceForm":75,"antd":"antd","react":"react"}],77:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _react = _interopRequireDefault(require("react")); + +var _antd = require("antd"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var IceLabel = /*#__PURE__*/function (_React$Component) { + _inherits(IceLabel, _React$Component); + + var _super = _createSuper(IceLabel); + + function IceLabel(props) { + _classCallCheck(this, IceLabel); + + return _super.call(this, props); + } + + _createClass(IceLabel, [{ + key: "render", + value: function render() { + var value = this.props.value; + return /*#__PURE__*/_react["default"].createElement(_antd.Space, null, /*#__PURE__*/_react["default"].createElement("div", { + contentEditable: "true", + dangerouslySetInnerHTML: { + __html: this.nl2br(value || '') + } + })); + } + }, { + key: "nl2br", + value: function nl2br(str) { + return "".concat(str).replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '
    '); + } + }]); + + return IceLabel; +}(_react["default"].Component); + +var _default = IceLabel; +exports["default"] = _default; + +},{"antd":"antd","react":"react"}],78:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _react = _interopRequireDefault(require("react")); + +var _antd = require("antd"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var Option = _antd.Select.Option; + +var IceSelect = /*#__PURE__*/function (_React$Component) { + _inherits(IceSelect, _React$Component); + + var _super = _createSuper(IceSelect); + + function IceSelect(props) { + var _this; + + _classCallCheck(this, IceSelect); + + _this = _super.call(this, props); + _this.onChange = props.onChange; + return _this; + } + + _createClass(IceSelect, [{ + key: "render", + value: function render() { + var options; + var _this$props = this.props, + field = _this$props.field, + adapter = _this$props.adapter; + var value = this.props.value; + var data = field[1]; + + if (data['remote-source'] != null) { + var key = "".concat(data['remote-source'][0], "_").concat(data['remote-source'][1], "_").concat(data['remote-source'][2]); + + if (data['remote-source'].length === 4) { + key = "".concat(key, "_").concat(data['remote-source'][3]); + } + + options = adapter.fieldMasterData[key]; + } else { + options = data.source; + } + + var optionData = this.getFormSelectOptionsRemote(options, field, adapter); // value should be an array if multi-select + + if (data.type === 'select2multi') { + try { + value = JSON.parse(value); + + if (value == null) { + value = []; + } + + value = value.map(function (item) { + return "".concat(item); + }); + } catch (e) { + value = []; + } + } + + return /*#__PURE__*/_react["default"].createElement(_antd.Select, { + mode: data.type === 'select2multi' ? 'multiple' : undefined, + showSearch: true, + placeholder: "Select ".concat(data.label), + optionFilterProp: "children", + filterOption: function filterOption(input, option) { + return input != null && option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0; + }, + value: value, + options: optionData, + allowClear: true, + onChange: this.handleChange.bind(this), + disabled: this.props.readOnly + }); + } + }, { + key: "handleChange", + value: function handleChange(value) { + var field = this.props.field; + var data = field[1]; + + if (data.type === 'select2multi') { + this.onChange(JSON.stringify(value)); + } else { + this.onChange(value); + } + } + }, { + key: "makeOption", + value: function makeOption(option) { + return /*#__PURE__*/_react["default"].createElement(Option, { + key: "".concat(option[0]), + value: "".concat(option[0]) + }, option[1]); + } + }, { + key: "getFormSelectOptionsRemote", + value: function getFormSelectOptionsRemote(options, field, adapter) { + var optionData = []; + + if (Array.isArray(options)) { + for (var i = 0; i < options.length; i++) { + optionData.push({ + label: options[i][1], + value: options[i][0] + }); + } + } else { + for (var key in options) { + optionData.push({ + label: options[key], + value: key + }); + } + } // if (field[1].sort === 'true') { + // tuples.sort((a, b) => { + // a = a[1]; + // b = b[1]; + // + // // eslint-disable-next-line no-nested-ternary + // return a < b ? -1 : (a > b ? 1 : 0); + // }); + // } + // for (let i = 0; i < tuples.length; i++) { + // const prop = tuples[i][0]; + // const value = tuples[i][1]; + // optionData.push([prop, adapter.gt(value)]); + // } + + + return optionData; + } + }]); + + return IceSelect; +}(_react["default"].Component); + +var _default = IceSelect; +exports["default"] = _default; + +},{"antd":"antd","react":"react"}],79:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _react = _interopRequireDefault(require("react")); + +var _reactSignatureCanvas = _interopRequireDefault(require("react-signature-canvas")); + +var _antd = require("antd"); + +var _icons = require("@ant-design/icons"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var IceSignature = /*#__PURE__*/function (_React$Component) { + _inherits(IceSignature, _React$Component); + + var _super = _createSuper(IceSignature); + + function IceSignature(props) { + var _this; + + _classCallCheck(this, IceSignature); + + _this = _super.call(this, props); + _this.onChange = props.onChange; + _this.state = { + visible: false + }; + _this.signature = _react["default"].createRef(); + return _this; + } + + _createClass(IceSignature, [{ + key: "componentDidMount", + value: function componentDidMount() {} + }, { + key: "show", + value: function show() { + this.setState({ + visible: true + }); + } + }, { + key: "setSignature", + value: function setSignature(ref) { + if (ref == null) { + return; + } + + var value = this.props.value; + + if (value != null && value.length > 10) { + ref.fromDataURL(value); + } + } + }, { + key: "hide", + value: function hide() { + this.setState({ + visible: false + }); + } + }, { + key: "clear", + value: function clear() { + this.signature.clear(); + } + }, { + key: "save", + value: function save() { + var data = this.signature.toDataURL('image/png'); + this.onChange(data); + this.setState({ + visible: false + }); + } + }, { + key: "render", + value: function render() { + var _this2 = this; + + var readOnly = this.props.readOnly; + return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_antd.Modal, { + visible: this.state.visible, + title: "Signature", + maskClosable: false, + centered: true, + width: 300, + onCancel: function onCancel() { + _this2.hide(); + }, + footer: [/*#__PURE__*/_react["default"].createElement(_antd.Button, { + key: "cancel", + onClick: function onClick() { + _this2.hide(); + } + }, "Cancel"), /*#__PURE__*/_react["default"].createElement(_antd.Button, { + key: "clear", + disabled: readOnly, + type: "dashed", + onClick: function onClick() { + if (!readOnly) { + _this2.clear(); + } + } + }, "Clear"), /*#__PURE__*/_react["default"].createElement(_antd.Button, { + key: "ok", + disabled: readOnly, + type: "primary", + onClick: function onClick() { + if (!readOnly) { + _this2.save(); + } + } + }, "Submit")] + }, /*#__PURE__*/_react["default"].createElement(_reactSignatureCanvas["default"], { + ref: function ref(_ref) { + _this2.signature = _ref; + + _this2.setSignature(_ref); + }, + canvasProps: _objectSpread({ + width: 250, + height: 200, + className: 'sigCanvas' + }, readOnly ? { + readOnly: readOnly + } : {}) + })), /*#__PURE__*/_react["default"].createElement(_antd.Tag, { + color: "blue", + style: { + cursor: 'pointer' + }, + onClick: function onClick() { + _this2.show(); + } + }, /*#__PURE__*/_react["default"].createElement(_icons.VerifiedOutlined, null), ' ', "Sign")); + } + }]); + + return IceSignature; +}(_react["default"].Component); + +var _default = IceSignature; +exports["default"] = _default; + +},{"@ant-design/icons":"@ant-design/icons","antd":"antd","react":"react","react-signature-canvas":364}],80:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _react = _interopRequireDefault(require("react")); + +var _antd = require("antd"); + +var _IceForm2 = _interopRequireDefault(require("./IceForm")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } + +function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var Step = _antd.Steps.Step; + +var IceStepForm = /*#__PURE__*/function (_IceForm) { + _inherits(IceStepForm, _IceForm); + + var _super = _createSuper(IceStepForm); + + function IceStepForm(props) { + var _this; + + _classCallCheck(this, IceStepForm); + + _this = _super.call(this, props); + _this.onChange = props.onChange; + + var steps = _this.props.fields.map(function (item) { + return _objectSpread({}, item, { + ref: _react["default"].createRef() + }); + }); + + steps = steps.map(function (item) { + var ref = item.ref, + fields = item.fields; + item.content = /*#__PURE__*/_react["default"].createElement(_IceForm2["default"], { + ref: ref, + adapter: props.adapter, + fields: fields, + twoColumnLayout: props.twoColumnLayout, + width: props.width, + layout: props.layout || 'horizontal' + }); + return item; + }); + _this.state = { + current: 0, + steps: steps, + loading: false + }; + return _this; + } + + _createClass(IceStepForm, [{ + key: "moveToStep", + value: function moveToStep(current) { + this.setState({ + current: current + }); + } + }, { + key: "next", + value: function next() { + if (this.validateFields(false) === false) { + return; + } + + this.showError(false); + var current = this.state.current + 1; + this.setState({ + current: current + }); + } + }, { + key: "prev", + value: function prev() { + var current = this.state.current - 1; + + if (current < 0) { + return; + } + + this.setState({ + current: current + }); + } + }, { + key: "render", + value: function render() { + var _this2 = this; + + var adapter = this.props.adapter; + var _this$state = this.state, + current = _this$state.current, + steps = _this$state.steps; + return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_antd.Steps, { + current: current + }, steps.map(function (item, index) { + return /*#__PURE__*/_react["default"].createElement(Step, { + key: item.title, + title: item.title, + onClick: function onClick() { + return _this2.moveToStep(index); + } + }); + })), /*#__PURE__*/_react["default"].createElement(_antd.Divider, null), /*#__PURE__*/_react["default"].createElement("div", { + className: "steps-content" + }, steps.map(function (item, index) { + return /*#__PURE__*/_react["default"].createElement("div", { + style: { + display: index === current ? 'block' : 'none' + } + }, item.content); + })), /*#__PURE__*/_react["default"].createElement(_antd.Divider, null), /*#__PURE__*/_react["default"].createElement("div", { + className: "steps-action" + }, /*#__PURE__*/_react["default"].createElement(_antd.Row, { + gutter: 16 + }, /*#__PURE__*/_react["default"].createElement(_antd.Col, { + className: "gutter-row", + span: 12, + style: {} + }, /*#__PURE__*/_react["default"].createElement(_antd.Space, null, current < steps.length - 1 && /*#__PURE__*/_react["default"].createElement(_antd.Button, { + type: "primary", + onClick: function onClick() { + return _this2.next(); + } + }, adapter.gt('Next')), current > 0 && /*#__PURE__*/_react["default"].createElement(_antd.Button, { + onClick: function onClick() { + return _this2.prev(); + } + }, adapter.gt('Previous')))), /*#__PURE__*/_react["default"].createElement(_antd.Col, { + className: "gutter-row", + span: 12, + style: { + textAlign: 'right' + } + }, /*#__PURE__*/_react["default"].createElement(_antd.Space, null, /*#__PURE__*/_react["default"].createElement(_antd.Button, { + onClick: function onClick() { + return _this2.props.closeModal(); + } + }, adapter.gt('Cancel')), /*#__PURE__*/_react["default"].createElement(_antd.Button, { + type: "primary", + loading: this.state.loading, + onClick: function onClick() { + return _this2.saveData(); + } + }, adapter.gt('Save'))))))); + } + }, { + key: "saveData", + value: function () { + var _saveData = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + var _this3 = this; + + var data; + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + this.setState({ + loading: true + }); + _context.next = 3; + return this.validateFields(true); + + case 3: + data = _context.sent; + + if (data) { + this.save(data, function () { + return _this3.props.closeModal(); + }); + } + + this.setState({ + loading: false + }); + + case 6: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + + function saveData() { + return _saveData.apply(this, arguments); + } + + return saveData; + }() + }, { + key: "save", + value: function save(params, success) { + var _this4 = this; + + var adapter = this.props.adapter; + adapter.add(params, [], function () { + return adapter.get([]); + }, function () { + _this4.resetFields(); + + _this4.showError(false); + + success(); + }); + } + }, { + key: "updateFields", + value: function updateFields(data) { + var _this5 = this; + + this.state.steps.forEach(function (item) { + var subData = {}; + item.fields.forEach(function (_ref) { + var _ref2 = _slicedToArray(_ref, 1), + key = _ref2[0]; + + subData[key] = data[key]; + }); + + _this5.updateFieldsSubForm(item.ref, item.fields, subData); + }); + } + }, { + key: "updateFieldsSubForm", + value: function updateFieldsSubForm(ref, fields, data) { + data = this.dataToFormFields(data, fields); + ref.current.resetFields(); + + if (data == null) { + return; + } + + try { + ref.current.setFieldsValue(data); + } catch (e) { + console.log(e); + } + } + }, { + key: "validateFields", + value: function () { + var _validateFields = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(all) { + var adapter, steps, promiseList, allData, failedIndex, values, msg, id, fields; + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + adapter = this.props.adapter; + steps = all ? this.state.steps : this.state.steps.slice(0, this.state.current + 1); + promiseList = steps.map(function (item) { + return item.ref.current.validateFields().then(function (values) { + if (!item.ref.current.isValid()) { + return false; + } + + return values; + })["catch"](function () { + return false; + }); + }); + _context2.next = 5; + return Promise.all(promiseList); + + case 5: + allData = _context2.sent; + failedIndex = allData.findIndex(function (item) { + return item === false; + }); + + if (!(failedIndex >= 0)) { + _context2.next = 10; + break; + } + + this.setState({ + current: failedIndex + }); + return _context2.abrupt("return", false); + + case 10: + values = Object.assign.apply(Object, [{}].concat(_toConsumableArray(allData))); + values = adapter.forceInjectValuesBeforeSave(values); + msg = adapter.doCustomValidation(values); + + if (!(msg !== null)) { + _context2.next = 16; + break; + } + + this.showError(msg); + return _context2.abrupt("return", false); + + case 16: + if (adapter.csrfRequired) { + values.csrf = $("#".concat(adapter.getTableName(), "Form")).data('csrf'); + } + + id = adapter.currentElement != null ? adapter.currentElement.id : null; + + if (id != null && id !== '') { + values.id = id; + } + + fields = [].concat.apply([], this.state.steps.map(function (item) { + return item.fields; + })); + return _context2.abrupt("return", this.formFieldsToData(values, fields)); + + case 21: + case "end": + return _context2.stop(); + } + } + }, _callee2, this); + })); + + function validateFields(_x) { + return _validateFields.apply(this, arguments); + } + + return validateFields; + }() + }, { + key: "getSubFormData", + value: function getSubFormData(ref, fields, params) { + var adapter = this.props.adapter; + var values = params; + values = adapter.forceInjectValuesBeforeSave(values); + var msg = adapter.doCustomValidation(values); + + if (msg !== null) { + ref.current.showError(msg); + return; + } + + if (adapter.csrfRequired) { + values.csrf = $("#".concat(adapter.getTableName(), "Form")).data('csrf'); + } + + var id = adapter.currentElement != null ? adapter.currentElement.id : null; + + if (id != null && id !== '') { + values.id = id; + } + + return this.formFieldsToData(values, fields); + } + }, { + key: "showError", + value: function showError(errorMsg) { + this.state.steps.forEach(function (item) { + return item.ref.current.showError(errorMsg); + }); + } + }, { + key: "resetFields", + value: function resetFields() { + this.state.steps.forEach(function (item) { + return item.ref.current.resetFields(); + }); + } + }, { + key: "hideError", + value: function hideError() { + this.state.steps.forEach(function (item) { + return item.ref.current.hideError(); + }); + } + }, { + key: "isReady", + value: function isReady() { + return this.state.steps.reduce(function (acc, item) { + return acc && item.ref.current != null; + }, true); + } + }]); + + return IceStepForm; +}(_IceForm2["default"]); + +var _default = IceStepForm; +exports["default"] = _default; + +},{"./IceForm":75,"antd":"antd","react":"react"}],81:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _react = _interopRequireDefault(require("react")); + +var _antd = require("antd"); + +var _IceFormModal2 = _interopRequireDefault(require("./IceFormModal")); + +var _IceStepForm = _interopRequireDefault(require("./IceStepForm")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var IceStepFormModal = /*#__PURE__*/function (_IceFormModal) { + _inherits(IceStepFormModal, _IceFormModal); + + var _super = _createSuper(IceStepFormModal); + + function IceStepFormModal(props) { + var _this; + + _classCallCheck(this, IceStepFormModal); + + _this = _super.call(this, props); + _this.width = 850; + return _this; + } + + _createClass(IceStepFormModal, [{ + key: "show", + value: function show(data) { + var _this2 = this; + + this.props.adapter.beforeRenderFieldHook = this.props.adapter.beforeRenderField ? this.props.adapter.beforeRenderField(data) : function (fieldName, field) { + return field; + }; + + if (!data) { + this.setState({ + visible: true + }); + + if (this.iceFormReference.current) { + this.iceFormReference.current.resetFields(); + } + } else { + this.setState({ + visible: true + }); + + if (this.iceFormReference.current && this.iceFormReference.current.isReady()) { + this.iceFormReference.current.moveToStep(0); + this.iceFormReference.current.updateFields(data); + } else { + this.waitForIt(function () { + return _this2.iceFormReference.current && _this2.iceFormReference.current.isReady(); + }, function () { + _this2.iceFormReference.current.updateFields(data); + + _this2.iceFormReference.current.moveToStep(0); + }, 1000); + } + } + } + }, { + key: "hide", + value: function hide() { + this.iceFormReference.current.moveToStep(0); + this.setState({ + visible: false + }); + } + }, { + key: "render", + value: function render() { + var _this3 = this; + + var _this$props = this.props, + fields = _this$props.fields, + adapter = _this$props.adapter; + + var _this$props$adapter$g = this.props.adapter.getFormOptions(), + width = _this$props$adapter$g.width, + twoColumnLayout = _this$props$adapter$g.twoColumnLayout, + layout = _this$props$adapter$g.layout; + + return /*#__PURE__*/_react["default"].createElement(_antd.Modal, { + visible: this.state.visible, + title: this.props.adapter.gt(this.props.title || adapter.objectTypeName), + maskClosable: false, + width: width || this.width, + footer: [], + onCancel: function onCancel() { + _this3.closeModal(); + } + }, /*#__PURE__*/_react["default"].createElement(_IceStepForm["default"], { + ref: this.iceFormReference, + adapter: adapter, + fields: fields, + closeModal: function closeModal() { + _this3.closeModal(); + }, + twoColumnLayout: twoColumnLayout || false, + layout: layout + })); + } + }]); + + return IceStepFormModal; +}(_IceFormModal2["default"]); + +var _default = IceStepFormModal; +exports["default"] = _default; + +},{"./IceFormModal":76,"./IceStepForm":80,"antd":"antd","react":"react"}],82:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _react = _interopRequireWildcard(require("react")); + +var _antd = require("antd"); + +var _icons = require("@ant-design/icons"); + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var Search = _antd.Input.Search; + +var IceTable = /*#__PURE__*/function (_React$Component) { + _inherits(IceTable, _React$Component); + + var _super = _createSuper(IceTable); + + function IceTable(props) { + var _this; + + _classCallCheck(this, IceTable); + + _this = _super.call(this, props); + _this.state = { + data: [], + pagination: {}, + loading: true, + fetchConfig: false, + //filter: null, + showLoading: true, + currentElement: null, + fetchCompleted: false + }; + + _this.handleTableChange = function (pagination, filters, sorter) { + var pager = _objectSpread({}, _this.state.pagination); + + var search = _this.state.search; + pager.current = pagination.current; + + _this.setState({ + pagination: pager + }); + + var fetchConfig = { + limit: pagination.pageSize, + page: pagination.current, + sortField: sorter.field, + sortOrder: sorter.order, + filters: JSON.stringify(filters), + search: search + }; + + _this.setState({ + fetchConfig: fetchConfig + }); + + _this.fetch(fetchConfig); + }; + + _this.reload = function () { + var fetchConfig = _this.state.fetchConfig; + + if (fetchConfig) { + _this.fetch(fetchConfig); + } + }; + + _this.search = function (value) { + _this.setState({ + search: value + }); + + var fetchConfig = _this.state.fetchConfig; + console.log(fetchConfig); + + if (fetchConfig) { + fetchConfig.search = value; + + _this.setState({ + fetchConfig: fetchConfig + }); + + _this.fetch(fetchConfig); + } + }; + + _this.addNew = function () { + _this.props.adapter.renderForm(); + }; + + _this.showFilters = function () { + _this.props.adapter.showFilters(); + }; + + _this.setFilterData = function (filter) { + _this.setState({ + filter: filter + }); + }; + + _this.setCurrentElement = function (currentElement) { + _this.setState({ + currentElement: currentElement + }); + }; + + _this.fetch = function () { + var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + //this.setState({ loading: this.state.showLoading }); + _this.setState({ + loading: true + }); //const hideMessage = message.loading({ content: 'Loading Latest Data ...', key: 'loadingTable', duration: 1}); + + + var pagination = _objectSpread({}, _this.state.pagination); + + if (_this.props.adapter.localStorageEnabled) { + try { + var cachedResponse = _this.props.reader.getCachedResponse(params); + + if (cachedResponse.items) { + _this.setState({ + loading: false, + data: cachedResponse.items, + pagination: pagination, + showLoading: false + }); + } else { + _this.props.reader.clearCachedResponse(params); + } + } catch (e) { + _this.props.reader.clearCachedResponse(params); + } + } + + _this.props.reader.get(params).then(function (data) { + // Read total count from server + // pagination.total = data.totalCount; + pagination.total = data.total; //hideMessage(); + // setTimeout( + // () => message.success({ content: 'Loading Completed!', key: 'loadingSuccess', duration: 1 }), + // 600 + // ); + + _this.setState({ + loading: false, + data: data.items, + pagination: pagination, + showLoading: false, + fetchCompleted: true + }); + }); + }; + + return _this; + } + + _createClass(IceTable, [{ + key: "componentDidMount", + value: function componentDidMount() { + var fetchConfig = { + page: 1 + }; + + _antd.message.config({ + top: 40 + }); + + this.setState({ + fetchConfig: fetchConfig, + //filter: this.props.adapter.filter, + pagination: { + 'pageSize': this.props.reader.pageSize + } + }); //this.fetch(fetchConfig); + } + }, { + key: "setLoading", + value: function setLoading(value) { + this.setState({ + loading: value + }); + } + }, { + key: "getChildrenWithProps", + value: function getChildrenWithProps(element) { + var _this2 = this; + + var childrenWithProps = _react["default"].Children.map(this.props.children, function (child) { + // checking isValidElement is the safe way and avoids a typescript error too + var props = { + element: element, + adapter: _this2.props.adapter, + loading: _this2.state.loading + }; + + if (_react["default"].isValidElement(child)) { + return _react["default"].cloneElement(child, props); + } + + return child; + }); + + return childrenWithProps; + } + }, { + key: "render", + value: function render() { + var _this3 = this; + + return /*#__PURE__*/_react["default"].createElement(_antd.Row, { + direction: "vertical", + style: { + width: '100%' + } + }, !this.state.currentElement && /*#__PURE__*/_react["default"].createElement(_antd.Col, { + span: 24 + }, /*#__PURE__*/_react["default"].createElement(_antd.Row, { + gutter: 24 + }, /*#__PURE__*/_react["default"].createElement(_antd.Col, { + span: 18 + }, /*#__PURE__*/_react["default"].createElement(_antd.Space, null, this.props.adapter.hasAccess('save') && this.props.adapter.getShowAddNew() && /*#__PURE__*/_react["default"].createElement(_antd.Button, { + type: "primary", + onClick: this.addNew + }, /*#__PURE__*/_react["default"].createElement(_icons.PlusCircleOutlined, null), " Add New"), this.props.adapter.getFilters() && /*#__PURE__*/_react["default"].createElement(_antd.Button, { + onClick: this.showFilters + }, /*#__PURE__*/_react["default"].createElement(_icons.FilterOutlined, null), " Filters"), this.state.fetchCompleted && this.props.adapter.getFilters() && this.props.adapter.filter != null && this.props.adapter.filter !== [] && this.props.adapter.filter !== '' && this.props.adapter.getFilterString(this.props.adapter.filter) !== '' && /*#__PURE__*/_react["default"].createElement(_antd.Tag, { + closable: true, + style: { + 'lineHeight': '30px' + }, + color: "blue", + onClose: function onClose() { + return _this3.props.adapter.resetFilters(); + }, + visible: this.props.adapter.filter != null && this.props.adapter.filter !== [] && this.props.adapter.filter !== '' + }, this.props.adapter.getFilterString(this.props.adapter.filter)))), /*#__PURE__*/_react["default"].createElement(_antd.Col, { + span: 6 + }, /*#__PURE__*/_react["default"].createElement(_antd.Form, { + ref: function ref(formRef) { + return _this3.form = formRef; + }, + name: "advanced_search", + className: "ant-advanced-search-form" + }, /*#__PURE__*/_react["default"].createElement(_antd.Form.Item, { + name: "searchTerm", + label: "", + rules: [{ + required: false + }] + }, /*#__PURE__*/_react["default"].createElement(Search, { + placeholder: "input search text", + enterButton: "Search", + onSearch: function onSearch(value) { + return _this3.search(value); + } + }))))), /*#__PURE__*/_react["default"].createElement(_antd.Row, { + gutter: 24 + }, /*#__PURE__*/_react["default"].createElement(_antd.Col, { + span: 24 + }, /*#__PURE__*/_react["default"].createElement(_antd.Table // bordered + , { + rowClassName: function rowClassName(record, index) { + return index % 2 === 0 ? 'table-row-light' : 'table-row-dark'; + }, + columns: this.props.columns, + rowKey: function rowKey(record) { + return record.id; + }, + dataSource: this.state.data, + pagination: this.state.pagination, + loading: this.state.loading, + onChange: this.handleTableChange, + reader: this.props.dataPipe + })))), this.state.currentElement && this.getChildrenWithProps(this.state.currentElement)); + } + }]); + + return IceTable; +}(_react["default"].Component); + +var _default = IceTable; +exports["default"] = _default; + +},{"@ant-design/icons":"@ant-design/icons","antd":"antd","react":"react"}],83:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _react = _interopRequireDefault(require("react")); + +var _antd = require("antd"); + +var _icons = require("@ant-design/icons"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var IceUpload = /*#__PURE__*/function (_React$Component) { + _inherits(IceUpload, _React$Component); + + var _super = _createSuper(IceUpload); + + function IceUpload(props) { + var _this; + + _classCallCheck(this, IceUpload); + + _this = _super.call(this, props); + _this.state = { + fileList: [], + uploaded: false + }; + _this._isMounted = false; + + _this.handleDelete = function () { + _this.setState({ + fileList: [], + value: null, + uploaded: false + }); + + _this.onChange(null); + }; + + _this.handleView = function () { + var currentValue = _this.props.value; + + if (_this.state.value != null && _this.state.value !== '') { + currentValue = _this.state.value; + } + + if (currentValue == null || currentValue === '') { + _antd.message.error('File not found'); + + return; + } + + var adapter = _this.props.adapter; + adapter.getFile(currentValue).then(function (data) { + var file = { + key: data.uid, + uid: data.uid, + name: data.name, + status: data.status, + url: data.filename + }; + window.open(file.url); + })["catch"](function (e) {}); + }; + + _this.handleChange = function (info) { + var fileList = _toConsumableArray(info.fileList); + + if (fileList.length === 0) { + _this.setState({ + value: null + }); + + _this.onChange(null); + + _this.setState({ + fileList: [] + }); + + _this.setState({ + uploaded: false + }); + + return; + } + + fileList = fileList.slice(-1); + + if (fileList[0].response && fileList[0].response.status === 'error') { + _this.setState({ + value: null + }); + + _this.onChange(null); + + _this.setState({ + fileList: [] + }); + + _this.setState({ + uploaded: false + }); + + _antd.message.error("Error: ".concat(fileList[0].response.message)); + + return; + } + + fileList = fileList.map(function (file) { + if (file.response) { + // Component will show file.url as link + file.name = file.response.name; + file.url = file.response.url; + } + + return file; + }); + + _this.setState({ + fileList: fileList + }); + + _this.setState({ + value: _this.getFileName(fileList), + uploaded: true + }); + + _this.onChange(_this.getFileName(fileList)); + }; + + _this.onChange = props.onChange; + return _this; + } + + _createClass(IceUpload, [{ + key: "componentDidMount", + value: function componentDidMount() { + this._isMounted = true; + + _antd.message.config({ + top: 55, + duration: 2 + }); + } + }, { + key: "componentWillUnmount", + value: function componentWillUnmount() { + this._isMounted = false; + } + }, { + key: "getFileName", + value: function getFileName(fileList) { + var file = null; + + if (fileList) { + file = fileList[0]; + } + + return file ? file.name : ''; + } + }, { + key: "generateRandom", + value: function generateRandom(length) { + var d = new Date(); + var chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; + var result = ''; + + for (var i = length; i > 0; --i) { + result += chars[Math.round(Math.random() * (chars.length - 1))]; + } + + return result + d.getTime(); + } + }, { + key: "render", + value: function render() { + var fileName = this.generateRandom(14); + var props = { + action: "".concat(window.CLIENT_BASE_URL, "fileupload-new.php?user=").concat(this.props.user, "&file_group=").concat(this.props.fileGroup, "&file_name=").concat(fileName), + onChange: this.handleChange, + onRemove: this.handleDelete, + multiple: false, + listType: 'picture' + }; + return /*#__PURE__*/_react["default"].createElement(_antd.Space, { + direction: 'vertical' + }, !this.props.readOnly && /*#__PURE__*/_react["default"].createElement(_antd.Space, null, /*#__PURE__*/_react["default"].createElement(_antd.Upload, _extends({}, props, { + fileList: this.state.fileList + }), /*#__PURE__*/_react["default"].createElement(_antd.Tag, { + color: "blue", + style: { + cursor: 'pointer' + } + }, /*#__PURE__*/_react["default"].createElement(_icons.UploadOutlined, null), ' ', "Upload"))), /*#__PURE__*/_react["default"].createElement(_antd.Space, null, (this.props.value != null && this.props.value !== '' || this.state.value != null && this.state.value !== '') && !this.state.uploaded && /*#__PURE__*/_react["default"].createElement(_antd.Button, { + type: "link", + htmlType: "button", + onClick: this.handleView + }, /*#__PURE__*/_react["default"].createElement(_icons.DownloadOutlined, null), " View File"), (this.props.value != null && this.props.value !== '' || this.state.value != null && this.state.value !== '') && !this.state.uploaded && !this.props.readOnly && /*#__PURE__*/_react["default"].createElement(_antd.Button, { + type: "link", + htmlType: "button", + danger: true, + onClick: this.handleDelete + }, /*#__PURE__*/_react["default"].createElement(_icons.DeleteOutlined, null), " Delete"))); + } + }]); + + return IceUpload; +}(_react["default"].Component); + +var _default = IceUpload; +exports["default"] = _default; + +},{"@ant-design/icons":"@ant-design/icons","antd":"antd","react":"react"}],84:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _react = _interopRequireDefault(require("react")); + +var _antd = require("antd"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var TagList = /*#__PURE__*/function (_React$Component) { + _inherits(TagList, _React$Component); + + var _super = _createSuper(TagList); + + function TagList(props) { + var _this; + + _classCallCheck(this, TagList); + + _this = _super.call(this, props); + _this.state = { + tags: [], + loading: true + }; + return _this; + } + + _createClass(TagList, [{ + key: "componentDidMount", + value: function componentDidMount() { + this.fetch(); + } + }, { + key: "fetch", + value: function fetch() { + var _this2 = this; + + this.setState({ + loading: true + }); + this.props.apiClient.get(this.props.url).then(function (response) { + var tags = response.data.data.map(_this2.props.extractTag); + + _this2.setState({ + tags: tags, + loading: false + }); + }); + } + }, { + key: "render", + value: function render() { + var _this3 = this; + + return /*#__PURE__*/_react["default"].createElement("div", { + style: { + display: 'inline-block', + textOverflow: 'ellipsis', + whiteSpace: 'nowrap', + overflow: 'hidden', + width: '100%' + } + }, this.state.loading && /*#__PURE__*/_react["default"].createElement(_antd.Skeleton, { + active: true + }), !this.state.loading && this.state.tags.map(function (tag, index) { + return _this3.props.render ? _this3.props.render(tag) : /*#__PURE__*/_react["default"].createElement("div", { + key: "p".concat(index) + }, /*#__PURE__*/_react["default"].createElement(_antd.Tag, { + color: _this3.props.color, + key: index, + style: { + margin: '10px' + } + }, tag), /*#__PURE__*/_react["default"].createElement("br", null)); + })); + } + }]); + + return TagList; +}(_react["default"].Component); + +var _default = TagList; +exports["default"] = _default; + +},{"antd":"antd","react":"react"}],85:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _react = _interopRequireDefault(require("react")); + +var _antd = require("antd"); + +var _icons = require("@ant-design/icons"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var Paragraph = _antd.Typography.Paragraph; + +var TaskList = /*#__PURE__*/function (_React$Component) { + _inherits(TaskList, _React$Component); + + var _super = _createSuper(TaskList); + + function TaskList(props) { + var _this; + + _classCallCheck(this, TaskList); + + _this = _super.call(this, props); + _this.state = { + tasks: [], + showAll: false + }; + _this.state.tasks = _this.props.tasks.map(function (item) { + return false; + }); + return _this; + } + + _createClass(TaskList, [{ + key: "render", + value: function render() { + return this.createTaskList(4); + } + }, { + key: "createTaskList", + value: function createTaskList(maxNumberOfTasks) { + var _this2 = this; + + var tasks = this.props.tasks.slice(0, maxNumberOfTasks); + return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_antd.Space, { + direction: "vertical", + size: "large", + style: { + width: '100%' + } + }, this.props.tasks && this.props.tasks.length > 0 && /*#__PURE__*/_react["default"].createElement(_antd.Space, { + direction: "vertical", + style: { + width: '100%' + } + }, /*#__PURE__*/_react["default"].createElement(_antd.Timeline, { + style: { + width: '100%' + } + }, tasks.map(function (task, index) { + return _this2.createTask(task, index); + })), this.props.tasks.length > maxNumberOfTasks && /*#__PURE__*/_react["default"].createElement(_antd.Button, { + type: "primary", + onClick: function onClick() { + return _this2.showAllTasks(); + } + }, "View All", ' ', this.props.tasks.length, ' ', "Tasks")), this.props.tasks && this.props.tasks.length === 0 && /*#__PURE__*/_react["default"].createElement(_antd.Empty, { + description: "You're all caught up!" + })), /*#__PURE__*/_react["default"].createElement(_antd.Drawer, { + title: "Task List", + width: 470, + onClose: function onClose() { + return _this2.hideAllTasks(); + }, + visible: this.state.showAll, + bodyStyle: { + paddingBottom: 80 + }, + zIndex: 1200, + maskClosable: false + }, /*#__PURE__*/_react["default"].createElement(_antd.Timeline, { + style: { + width: '100%' + } + }, this.props.tasks.map(function (task, index) { + return _this2.createTask(task, index); + })))); + } + }, { + key: "visitLink", + value: function visitLink(link) { + setTimeout(function () { + window.open(link); + }, 100); + } + }, { + key: "handleTaskHover", + value: function handleTaskHover(index) { + this.setState({ + tasks: this.props.tasks.map(function (item, i) { + return index === i; + }) + }); + } + }, { + key: "createTask", + value: function createTask(task, index) { + var _this3 = this; + + if (task.priority === 100) { + return /*#__PURE__*/_react["default"].createElement(_antd.Timeline.Item, { + onMouseEnter: function onMouseEnter() { + return _this3.handleTaskHover(index); + }, + dot: /*#__PURE__*/_react["default"].createElement(_icons.ClockCircleOutlined, { + style: { + fontSize: '16px' + } + }), + color: "red" + }, this.getText(task), task.link && this.state.tasks[index] && /*#__PURE__*/_react["default"].createElement(_antd.Button, { + type: "link", + onClick: function onClick() { + return _this3.visitLink(task.link); + } + }, /*#__PURE__*/_react["default"].createElement(_icons.MedicineBoxOutlined, { + style: { + fontSize: '16px' + } + }), ' ', task.action)); + } + + if (task.priority === 50) { + return /*#__PURE__*/_react["default"].createElement(_antd.Timeline.Item, { + onMouseEnter: function onMouseEnter() { + return _this3.handleTaskHover(index); + }, + dot: /*#__PURE__*/_react["default"].createElement(_icons.InfoCircleOutlined, { + style: { + fontSize: '16px' + } + }), + color: "blue" + }, this.getText(task), task.link && this.state.tasks[index] && /*#__PURE__*/_react["default"].createElement(_antd.Button, { + type: "link", + onClick: function onClick() { + return _this3.visitLink(task.link); + } + }, /*#__PURE__*/_react["default"].createElement(_icons.MedicineBoxOutlined, { + style: { + fontSize: '16px' + } + }), ' ', task.action)); + } + + if (task.priority === 20) { + return /*#__PURE__*/_react["default"].createElement(_antd.Timeline.Item, { + onMouseEnter: function onMouseEnter() { + return _this3.handleTaskHover(index); + }, + dot: /*#__PURE__*/_react["default"].createElement(_icons.PlusCircleOutlined, { + style: { + fontSize: '16px' + } + }), + color: "blue" + }, this.getText(task), task.link && this.state.tasks[index] && /*#__PURE__*/_react["default"].createElement(_antd.Button, { + type: "link", + onClick: function onClick() { + return _this3.visitLink(task.link); + } + }, /*#__PURE__*/_react["default"].createElement(_icons.MedicineBoxOutlined, { + style: { + fontSize: '16px' + } + }), ' ', task.action)); + } + + if (task.priority === 10) { + return /*#__PURE__*/_react["default"].createElement(_antd.Timeline.Item, { + onMouseEnter: function onMouseEnter() { + return _this3.handleTaskHover(index); + }, + dot: /*#__PURE__*/_react["default"].createElement(_icons.PauseCircleOutlined, { + style: { + fontSize: '16px' + } + }), + color: "green" + }, this.getText(task), task.link && this.state.tasks[index] && /*#__PURE__*/_react["default"].createElement(_antd.Button, { + type: "link", + onClick: function onClick() { + return _this3.visitLink(task.link); + } + }, /*#__PURE__*/_react["default"].createElement(_icons.MedicineBoxOutlined, { + style: { + fontSize: '16px' + } + }), ' ', task.action)); + } + } + }, { + key: "getText", + value: function getText(task) { + if (!task.details) { + return /*#__PURE__*/_react["default"].createElement(Paragraph, { + ellipsis: { + rows: 1, + expandable: true + } + }, task.text); + } + + return /*#__PURE__*/_react["default"].createElement(_antd.Popover, { + content: task.details + }, /*#__PURE__*/_react["default"].createElement(Paragraph, { + ellipsis: { + rows: 1, + expandable: true + } + }, task.text)); + } + }, { + key: "showAllTasks", + value: function showAllTasks() { + this.setState({ + showAll: true + }); + } + }, { + key: "hideAllTasks", + value: function hideAllTasks() { + this.setState({ + showAll: false + }); + } + }]); + + return TaskList; +}(_react["default"].Component); + +var _default = TaskList; +exports["default"] = _default; + +},{"@ant-design/icons":"@ant-design/icons","antd":"antd","react":"react"}],86:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } + +var DEFAULT_SIZE = 24; + +exports.default = function (_ref) { + var _ref$fill = _ref.fill, + fill = _ref$fill === undefined ? 'currentColor' : _ref$fill, + _ref$width = _ref.width, + width = _ref$width === undefined ? DEFAULT_SIZE : _ref$width, + _ref$height = _ref.height, + height = _ref$height === undefined ? DEFAULT_SIZE : _ref$height, + _ref$style = _ref.style, + style = _ref$style === undefined ? {} : _ref$style, + props = _objectWithoutProperties(_ref, ['fill', 'width', 'height', 'style']); + + return _react2.default.createElement( + 'svg', + _extends({ + viewBox: '0 0 ' + DEFAULT_SIZE + ' ' + DEFAULT_SIZE, + style: _extends({ fill: fill, width: width, height: height }, style) + }, props), + _react2.default.createElement('path', { d: 'M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z' }) + ); +}; +},{"react":"react"}],87:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } + +var DEFAULT_SIZE = 24; + +exports.default = function (_ref) { + var _ref$fill = _ref.fill, + fill = _ref$fill === undefined ? 'currentColor' : _ref$fill, + _ref$width = _ref.width, + width = _ref$width === undefined ? DEFAULT_SIZE : _ref$width, + _ref$height = _ref.height, + height = _ref$height === undefined ? DEFAULT_SIZE : _ref$height, + _ref$style = _ref.style, + style = _ref$style === undefined ? {} : _ref$style, + props = _objectWithoutProperties(_ref, ['fill', 'width', 'height', 'style']); + + return _react2.default.createElement( + 'svg', + _extends({ + viewBox: '0 0 ' + DEFAULT_SIZE + ' ' + DEFAULT_SIZE, + style: _extends({ fill: fill, width: width, height: height }, style) + }, props), + _react2.default.createElement('path', { d: 'M12,18.17L8.83,15L7.42,16.41L12,21L16.59,16.41L15.17,15M12,5.83L15.17,9L16.58,7.59L12,3L7.41,7.59L8.83,9L12,5.83Z' }) + ); +}; +},{"react":"react"}],88:[function(require,module,exports){ +module.exports = require('./lib/axios'); +},{"./lib/axios":90}],89:[function(require,module,exports){ +'use strict'; + +var utils = require('./../utils'); +var settle = require('./../core/settle'); +var cookies = require('./../helpers/cookies'); +var buildURL = require('./../helpers/buildURL'); +var buildFullPath = require('../core/buildFullPath'); +var parseHeaders = require('./../helpers/parseHeaders'); +var isURLSameOrigin = require('./../helpers/isURLSameOrigin'); +var createError = require('../core/createError'); + +module.exports = function xhrAdapter(config) { + return new Promise(function dispatchXhrRequest(resolve, reject) { + var requestData = config.data; + var requestHeaders = config.headers; + + if (utils.isFormData(requestData)) { + delete requestHeaders['Content-Type']; // Let the browser set it + } + + if ( + (utils.isBlob(requestData) || utils.isFile(requestData)) && + requestData.type + ) { + delete requestHeaders['Content-Type']; // Let the browser set it + } + + var request = new XMLHttpRequest(); + + // HTTP basic authentication + if (config.auth) { + var username = config.auth.username || ''; + var password = unescape(encodeURIComponent(config.auth.password)) || ''; + requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password); + } + + var fullPath = buildFullPath(config.baseURL, config.url); + request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true); + + // Set the request timeout in MS + request.timeout = config.timeout; + + // Listen for ready state + request.onreadystatechange = function handleLoad() { + if (!request || request.readyState !== 4) { + return; + } + + // The request errored out and we didn't get a response, this will be + // handled by onerror instead + // With one exception: request that using file: protocol, most browsers + // will return status as 0 even though it's a successful request + if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) { + return; + } + + // Prepare the response + var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null; + var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response; + var response = { + data: responseData, + status: request.status, + statusText: request.statusText, + headers: responseHeaders, + config: config, + request: request + }; + + settle(resolve, reject, response); + + // Clean up request + request = null; + }; + + // Handle browser request cancellation (as opposed to a manual cancellation) + request.onabort = function handleAbort() { + if (!request) { + return; + } + + reject(createError('Request aborted', config, 'ECONNABORTED', request)); + + // Clean up request + request = null; + }; + + // Handle low level network errors + request.onerror = function handleError() { + // Real errors are hidden from us by the browser + // onerror should only fire if it's a network error + reject(createError('Network Error', config, null, request)); + + // Clean up request + request = null; + }; + + // Handle timeout + request.ontimeout = function handleTimeout() { + var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded'; + if (config.timeoutErrorMessage) { + timeoutErrorMessage = config.timeoutErrorMessage; + } + reject(createError(timeoutErrorMessage, config, 'ECONNABORTED', + request)); + + // Clean up request + request = null; + }; + + // Add xsrf header + // This is only done if running in a standard browser environment. + // Specifically not if we're in a web worker, or react-native. + if (utils.isStandardBrowserEnv()) { + // Add xsrf header + var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ? + cookies.read(config.xsrfCookieName) : + undefined; + + if (xsrfValue) { + requestHeaders[config.xsrfHeaderName] = xsrfValue; + } + } + + // Add headers to the request + if ('setRequestHeader' in request) { + utils.forEach(requestHeaders, function setRequestHeader(val, key) { + if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') { + // Remove Content-Type if data is undefined + delete requestHeaders[key]; + } else { + // Otherwise add header to the request + request.setRequestHeader(key, val); + } + }); + } + + // Add withCredentials to request if needed + if (!utils.isUndefined(config.withCredentials)) { + request.withCredentials = !!config.withCredentials; + } + + // Add responseType to request if needed + if (config.responseType) { + try { + request.responseType = config.responseType; + } catch (e) { + // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2. + // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function. + if (config.responseType !== 'json') { + throw e; + } + } + } + + // Handle progress if needed + if (typeof config.onDownloadProgress === 'function') { + request.addEventListener('progress', config.onDownloadProgress); + } + + // Not all browsers support upload events + if (typeof config.onUploadProgress === 'function' && request.upload) { + request.upload.addEventListener('progress', config.onUploadProgress); + } + + if (config.cancelToken) { + // Handle cancellation + config.cancelToken.promise.then(function onCanceled(cancel) { + if (!request) { + return; + } + + request.abort(); + reject(cancel); + // Clean up request + request = null; + }); + } + + if (!requestData) { + requestData = null; + } + + // Send the request + request.send(requestData); + }); +}; + +},{"../core/buildFullPath":96,"../core/createError":97,"./../core/settle":101,"./../helpers/buildURL":105,"./../helpers/cookies":107,"./../helpers/isURLSameOrigin":109,"./../helpers/parseHeaders":111,"./../utils":113}],90:[function(require,module,exports){ +'use strict'; + +var utils = require('./utils'); +var bind = require('./helpers/bind'); +var Axios = require('./core/Axios'); +var mergeConfig = require('./core/mergeConfig'); +var defaults = require('./defaults'); + +/** + * Create an instance of Axios + * + * @param {Object} defaultConfig The default config for the instance + * @return {Axios} A new instance of Axios + */ +function createInstance(defaultConfig) { + var context = new Axios(defaultConfig); + var instance = bind(Axios.prototype.request, context); + + // Copy axios.prototype to instance + utils.extend(instance, Axios.prototype, context); + + // Copy context to instance + utils.extend(instance, context); + + return instance; +} + +// Create the default instance to be exported +var axios = createInstance(defaults); + +// Expose Axios class to allow class inheritance +axios.Axios = Axios; + +// Factory for creating new instances +axios.create = function create(instanceConfig) { + return createInstance(mergeConfig(axios.defaults, instanceConfig)); +}; + +// Expose Cancel & CancelToken +axios.Cancel = require('./cancel/Cancel'); +axios.CancelToken = require('./cancel/CancelToken'); +axios.isCancel = require('./cancel/isCancel'); + +// Expose all/spread +axios.all = function all(promises) { + return Promise.all(promises); +}; +axios.spread = require('./helpers/spread'); + +module.exports = axios; + +// Allow use of default import syntax in TypeScript +module.exports.default = axios; + +},{"./cancel/Cancel":91,"./cancel/CancelToken":92,"./cancel/isCancel":93,"./core/Axios":94,"./core/mergeConfig":100,"./defaults":103,"./helpers/bind":104,"./helpers/spread":112,"./utils":113}],91:[function(require,module,exports){ +'use strict'; + +/** + * A `Cancel` is an object that is thrown when an operation is canceled. + * + * @class + * @param {string=} message The message. + */ +function Cancel(message) { + this.message = message; +} + +Cancel.prototype.toString = function toString() { + return 'Cancel' + (this.message ? ': ' + this.message : ''); +}; + +Cancel.prototype.__CANCEL__ = true; + +module.exports = Cancel; + +},{}],92:[function(require,module,exports){ +'use strict'; + +var Cancel = require('./Cancel'); + +/** + * A `CancelToken` is an object that can be used to request cancellation of an operation. + * + * @class + * @param {Function} executor The executor function. + */ +function CancelToken(executor) { + if (typeof executor !== 'function') { + throw new TypeError('executor must be a function.'); + } + + var resolvePromise; + this.promise = new Promise(function promiseExecutor(resolve) { + resolvePromise = resolve; + }); + + var token = this; + executor(function cancel(message) { + if (token.reason) { + // Cancellation has already been requested + return; + } + + token.reason = new Cancel(message); + resolvePromise(token.reason); + }); +} + +/** + * Throws a `Cancel` if cancellation has been requested. + */ +CancelToken.prototype.throwIfRequested = function throwIfRequested() { + if (this.reason) { + throw this.reason; + } +}; + +/** + * Returns an object that contains a new `CancelToken` and a function that, when called, + * cancels the `CancelToken`. + */ +CancelToken.source = function source() { + var cancel; + var token = new CancelToken(function executor(c) { + cancel = c; + }); + return { + token: token, + cancel: cancel + }; +}; + +module.exports = CancelToken; + +},{"./Cancel":91}],93:[function(require,module,exports){ +'use strict'; + +module.exports = function isCancel(value) { + return !!(value && value.__CANCEL__); +}; + +},{}],94:[function(require,module,exports){ +'use strict'; + +var utils = require('./../utils'); +var buildURL = require('../helpers/buildURL'); +var InterceptorManager = require('./InterceptorManager'); +var dispatchRequest = require('./dispatchRequest'); +var mergeConfig = require('./mergeConfig'); + +/** + * Create a new instance of Axios + * + * @param {Object} instanceConfig The default config for the instance + */ +function Axios(instanceConfig) { + this.defaults = instanceConfig; + this.interceptors = { + request: new InterceptorManager(), + response: new InterceptorManager() + }; +} + +/** + * Dispatch a request + * + * @param {Object} config The config specific for this request (merged with this.defaults) + */ +Axios.prototype.request = function request(config) { + /*eslint no-param-reassign:0*/ + // Allow for axios('example/url'[, config]) a la fetch API + if (typeof config === 'string') { + config = arguments[1] || {}; + config.url = arguments[0]; + } else { + config = config || {}; + } + + config = mergeConfig(this.defaults, config); + + // Set config.method + if (config.method) { + config.method = config.method.toLowerCase(); + } else if (this.defaults.method) { + config.method = this.defaults.method.toLowerCase(); + } else { + config.method = 'get'; + } + + // Hook up interceptors middleware + var chain = [dispatchRequest, undefined]; + var promise = Promise.resolve(config); + + this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) { + chain.unshift(interceptor.fulfilled, interceptor.rejected); + }); + + this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { + chain.push(interceptor.fulfilled, interceptor.rejected); + }); + + while (chain.length) { + promise = promise.then(chain.shift(), chain.shift()); + } + + return promise; +}; + +Axios.prototype.getUri = function getUri(config) { + config = mergeConfig(this.defaults, config); + return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\?/, ''); +}; + +// Provide aliases for supported request methods +utils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) { + /*eslint func-names:0*/ + Axios.prototype[method] = function(url, config) { + return this.request(mergeConfig(config || {}, { + method: method, + url: url + })); + }; +}); + +utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { + /*eslint func-names:0*/ + Axios.prototype[method] = function(url, data, config) { + return this.request(mergeConfig(config || {}, { + method: method, + url: url, + data: data + })); + }; +}); + +module.exports = Axios; + +},{"../helpers/buildURL":105,"./../utils":113,"./InterceptorManager":95,"./dispatchRequest":98,"./mergeConfig":100}],95:[function(require,module,exports){ +'use strict'; + +var utils = require('./../utils'); + +function InterceptorManager() { + this.handlers = []; +} + +/** + * Add a new interceptor to the stack + * + * @param {Function} fulfilled The function to handle `then` for a `Promise` + * @param {Function} rejected The function to handle `reject` for a `Promise` + * + * @return {Number} An ID used to remove interceptor later + */ +InterceptorManager.prototype.use = function use(fulfilled, rejected) { + this.handlers.push({ + fulfilled: fulfilled, + rejected: rejected + }); + return this.handlers.length - 1; +}; + +/** + * Remove an interceptor from the stack + * + * @param {Number} id The ID that was returned by `use` + */ +InterceptorManager.prototype.eject = function eject(id) { + if (this.handlers[id]) { + this.handlers[id] = null; + } +}; + +/** + * Iterate over all the registered interceptors + * + * This method is particularly useful for skipping over any + * interceptors that may have become `null` calling `eject`. + * + * @param {Function} fn The function to call for each interceptor + */ +InterceptorManager.prototype.forEach = function forEach(fn) { + utils.forEach(this.handlers, function forEachHandler(h) { + if (h !== null) { + fn(h); + } + }); +}; + +module.exports = InterceptorManager; + +},{"./../utils":113}],96:[function(require,module,exports){ +'use strict'; + +var isAbsoluteURL = require('../helpers/isAbsoluteURL'); +var combineURLs = require('../helpers/combineURLs'); + +/** + * Creates a new URL by combining the baseURL with the requestedURL, + * only when the requestedURL is not already an absolute URL. + * If the requestURL is absolute, this function returns the requestedURL untouched. + * + * @param {string} baseURL The base URL + * @param {string} requestedURL Absolute or relative URL to combine + * @returns {string} The combined full path + */ +module.exports = function buildFullPath(baseURL, requestedURL) { + if (baseURL && !isAbsoluteURL(requestedURL)) { + return combineURLs(baseURL, requestedURL); + } + return requestedURL; +}; + +},{"../helpers/combineURLs":106,"../helpers/isAbsoluteURL":108}],97:[function(require,module,exports){ +'use strict'; + +var enhanceError = require('./enhanceError'); + +/** + * Create an Error with the specified message, config, error code, request and response. + * + * @param {string} message The error message. + * @param {Object} config The config. + * @param {string} [code] The error code (for example, 'ECONNABORTED'). + * @param {Object} [request] The request. + * @param {Object} [response] The response. + * @returns {Error} The created error. + */ +module.exports = function createError(message, config, code, request, response) { + var error = new Error(message); + return enhanceError(error, config, code, request, response); +}; + +},{"./enhanceError":99}],98:[function(require,module,exports){ +'use strict'; + +var utils = require('./../utils'); +var transformData = require('./transformData'); +var isCancel = require('../cancel/isCancel'); +var defaults = require('../defaults'); + +/** + * Throws a `Cancel` if cancellation has been requested. + */ +function throwIfCancellationRequested(config) { + if (config.cancelToken) { + config.cancelToken.throwIfRequested(); + } +} + +/** + * Dispatch a request to the server using the configured adapter. + * + * @param {object} config The config that is to be used for the request + * @returns {Promise} The Promise to be fulfilled + */ +module.exports = function dispatchRequest(config) { + throwIfCancellationRequested(config); + + // Ensure headers exist + config.headers = config.headers || {}; + + // Transform request data + config.data = transformData( + config.data, + config.headers, + config.transformRequest + ); + + // Flatten headers + config.headers = utils.merge( + config.headers.common || {}, + config.headers[config.method] || {}, + config.headers + ); + + utils.forEach( + ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], + function cleanHeaderConfig(method) { + delete config.headers[method]; + } + ); + + var adapter = config.adapter || defaults.adapter; + + return adapter(config).then(function onAdapterResolution(response) { + throwIfCancellationRequested(config); + + // Transform response data + response.data = transformData( + response.data, + response.headers, + config.transformResponse + ); + + return response; + }, function onAdapterRejection(reason) { + if (!isCancel(reason)) { + throwIfCancellationRequested(config); + + // Transform response data + if (reason && reason.response) { + reason.response.data = transformData( + reason.response.data, + reason.response.headers, + config.transformResponse + ); + } + } + + return Promise.reject(reason); + }); +}; + +},{"../cancel/isCancel":93,"../defaults":103,"./../utils":113,"./transformData":102}],99:[function(require,module,exports){ +'use strict'; + +/** + * Update an Error with the specified config, error code, and response. + * + * @param {Error} error The error to update. + * @param {Object} config The config. + * @param {string} [code] The error code (for example, 'ECONNABORTED'). + * @param {Object} [request] The request. + * @param {Object} [response] The response. + * @returns {Error} The error. + */ +module.exports = function enhanceError(error, config, code, request, response) { + error.config = config; + if (code) { + error.code = code; + } + + error.request = request; + error.response = response; + error.isAxiosError = true; + + error.toJSON = function toJSON() { + return { + // Standard + message: this.message, + name: this.name, + // Microsoft + description: this.description, + number: this.number, + // Mozilla + fileName: this.fileName, + lineNumber: this.lineNumber, + columnNumber: this.columnNumber, + stack: this.stack, + // Axios + config: this.config, + code: this.code + }; + }; + return error; +}; + +},{}],100:[function(require,module,exports){ +'use strict'; + +var utils = require('../utils'); + +/** + * Config-specific merge-function which creates a new config-object + * by merging two configuration objects together. + * + * @param {Object} config1 + * @param {Object} config2 + * @returns {Object} New object resulting from merging config2 to config1 + */ +module.exports = function mergeConfig(config1, config2) { + // eslint-disable-next-line no-param-reassign + config2 = config2 || {}; + var config = {}; + + var valueFromConfig2Keys = ['url', 'method', 'data']; + var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params']; + var defaultToConfig2Keys = [ + 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer', + 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName', + 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress', + 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent', + 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding' + ]; + var directMergeKeys = ['validateStatus']; + + function getMergedValue(target, source) { + if (utils.isPlainObject(target) && utils.isPlainObject(source)) { + return utils.merge(target, source); + } else if (utils.isPlainObject(source)) { + return utils.merge({}, source); + } else if (utils.isArray(source)) { + return source.slice(); + } + return source; + } + + function mergeDeepProperties(prop) { + if (!utils.isUndefined(config2[prop])) { + config[prop] = getMergedValue(config1[prop], config2[prop]); + } else if (!utils.isUndefined(config1[prop])) { + config[prop] = getMergedValue(undefined, config1[prop]); + } + } + + utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) { + if (!utils.isUndefined(config2[prop])) { + config[prop] = getMergedValue(undefined, config2[prop]); + } + }); + + utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties); + + utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) { + if (!utils.isUndefined(config2[prop])) { + config[prop] = getMergedValue(undefined, config2[prop]); + } else if (!utils.isUndefined(config1[prop])) { + config[prop] = getMergedValue(undefined, config1[prop]); + } + }); + + utils.forEach(directMergeKeys, function merge(prop) { + if (prop in config2) { + config[prop] = getMergedValue(config1[prop], config2[prop]); + } else if (prop in config1) { + config[prop] = getMergedValue(undefined, config1[prop]); + } + }); + + var axiosKeys = valueFromConfig2Keys + .concat(mergeDeepPropertiesKeys) + .concat(defaultToConfig2Keys) + .concat(directMergeKeys); + + var otherKeys = Object + .keys(config1) + .concat(Object.keys(config2)) + .filter(function filterAxiosKeys(key) { + return axiosKeys.indexOf(key) === -1; + }); + + utils.forEach(otherKeys, mergeDeepProperties); + + return config; +}; + +},{"../utils":113}],101:[function(require,module,exports){ +'use strict'; + +var createError = require('./createError'); + +/** + * Resolve or reject a Promise based on response status. + * + * @param {Function} resolve A function that resolves the promise. + * @param {Function} reject A function that rejects the promise. + * @param {object} response The response. + */ +module.exports = function settle(resolve, reject, response) { + var validateStatus = response.config.validateStatus; + if (!response.status || !validateStatus || validateStatus(response.status)) { + resolve(response); + } else { + reject(createError( + 'Request failed with status code ' + response.status, + response.config, + null, + response.request, + response + )); + } +}; + +},{"./createError":97}],102:[function(require,module,exports){ +'use strict'; + +var utils = require('./../utils'); + +/** + * Transform the data for a request or a response + * + * @param {Object|String} data The data to be transformed + * @param {Array} headers The headers for the request or response + * @param {Array|Function} fns A single function or Array of functions + * @returns {*} The resulting transformed data + */ +module.exports = function transformData(data, headers, fns) { + /*eslint no-param-reassign:0*/ + utils.forEach(fns, function transform(fn) { + data = fn(data, headers); + }); + + return data; +}; + +},{"./../utils":113}],103:[function(require,module,exports){ +(function (process){ +'use strict'; + +var utils = require('./utils'); +var normalizeHeaderName = require('./helpers/normalizeHeaderName'); + +var DEFAULT_CONTENT_TYPE = { + 'Content-Type': 'application/x-www-form-urlencoded' +}; + +function setContentTypeIfUnset(headers, value) { + if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) { + headers['Content-Type'] = value; + } +} + +function getDefaultAdapter() { + var adapter; + if (typeof XMLHttpRequest !== 'undefined') { + // For browsers use XHR adapter + adapter = require('./adapters/xhr'); + } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') { + // For node use HTTP adapter + adapter = require('./adapters/http'); + } + return adapter; +} + +var defaults = { + adapter: getDefaultAdapter(), + + transformRequest: [function transformRequest(data, headers) { + normalizeHeaderName(headers, 'Accept'); + normalizeHeaderName(headers, 'Content-Type'); + if (utils.isFormData(data) || + utils.isArrayBuffer(data) || + utils.isBuffer(data) || + utils.isStream(data) || + utils.isFile(data) || + utils.isBlob(data) + ) { + return data; + } + if (utils.isArrayBufferView(data)) { + return data.buffer; + } + if (utils.isURLSearchParams(data)) { + setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8'); + return data.toString(); + } + if (utils.isObject(data)) { + setContentTypeIfUnset(headers, 'application/json;charset=utf-8'); + return JSON.stringify(data); + } + return data; + }], + + transformResponse: [function transformResponse(data) { + /*eslint no-param-reassign:0*/ + if (typeof data === 'string') { + try { + data = JSON.parse(data); + } catch (e) { /* Ignore */ } + } + return data; + }], + + /** + * A timeout in milliseconds to abort a request. If set to 0 (default) a + * timeout is not created. + */ + timeout: 0, + + xsrfCookieName: 'XSRF-TOKEN', + xsrfHeaderName: 'X-XSRF-TOKEN', + + maxContentLength: -1, + maxBodyLength: -1, + + validateStatus: function validateStatus(status) { + return status >= 200 && status < 300; + } +}; + +defaults.headers = { + common: { + 'Accept': 'application/json, text/plain, */*' + } +}; + +utils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) { + defaults.headers[method] = {}; +}); + +utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { + defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE); +}); + +module.exports = defaults; + +}).call(this,require('_process')) + +},{"./adapters/http":89,"./adapters/xhr":89,"./helpers/normalizeHeaderName":110,"./utils":113,"_process":1}],104:[function(require,module,exports){ +'use strict'; + +module.exports = function bind(fn, thisArg) { + return function wrap() { + var args = new Array(arguments.length); + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i]; + } + return fn.apply(thisArg, args); + }; +}; + +},{}],105:[function(require,module,exports){ +'use strict'; + +var utils = require('./../utils'); + +function encode(val) { + return encodeURIComponent(val). + replace(/%3A/gi, ':'). + replace(/%24/g, '$'). + replace(/%2C/gi, ','). + replace(/%20/g, '+'). + replace(/%5B/gi, '['). + replace(/%5D/gi, ']'); +} + +/** + * Build a URL by appending params to the end + * + * @param {string} url The base of the url (e.g., http://www.google.com) + * @param {object} [params] The params to be appended + * @returns {string} The formatted url + */ +module.exports = function buildURL(url, params, paramsSerializer) { + /*eslint no-param-reassign:0*/ + if (!params) { + return url; + } + + var serializedParams; + if (paramsSerializer) { + serializedParams = paramsSerializer(params); + } else if (utils.isURLSearchParams(params)) { + serializedParams = params.toString(); + } else { + var parts = []; + + utils.forEach(params, function serialize(val, key) { + if (val === null || typeof val === 'undefined') { + return; + } + + if (utils.isArray(val)) { + key = key + '[]'; + } else { + val = [val]; + } + + utils.forEach(val, function parseValue(v) { + if (utils.isDate(v)) { + v = v.toISOString(); + } else if (utils.isObject(v)) { + v = JSON.stringify(v); + } + parts.push(encode(key) + '=' + encode(v)); + }); + }); + + serializedParams = parts.join('&'); + } + + if (serializedParams) { + var hashmarkIndex = url.indexOf('#'); + if (hashmarkIndex !== -1) { + url = url.slice(0, hashmarkIndex); + } + + url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams; + } + + return url; +}; + +},{"./../utils":113}],106:[function(require,module,exports){ +'use strict'; + +/** + * Creates a new URL by combining the specified URLs + * + * @param {string} baseURL The base URL + * @param {string} relativeURL The relative URL + * @returns {string} The combined URL + */ +module.exports = function combineURLs(baseURL, relativeURL) { + return relativeURL + ? baseURL.replace(/\/+$/, '') + '/' + relativeURL.replace(/^\/+/, '') + : baseURL; +}; + +},{}],107:[function(require,module,exports){ +'use strict'; + +var utils = require('./../utils'); + +module.exports = ( + utils.isStandardBrowserEnv() ? + + // Standard browser envs support document.cookie + (function standardBrowserEnv() { + return { + write: function write(name, value, expires, path, domain, secure) { + var cookie = []; + cookie.push(name + '=' + encodeURIComponent(value)); + + if (utils.isNumber(expires)) { + cookie.push('expires=' + new Date(expires).toGMTString()); + } + + if (utils.isString(path)) { + cookie.push('path=' + path); + } + + if (utils.isString(domain)) { + cookie.push('domain=' + domain); + } + + if (secure === true) { + cookie.push('secure'); + } + + document.cookie = cookie.join('; '); + }, + + read: function read(name) { + var match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)')); + return (match ? decodeURIComponent(match[3]) : null); + }, + + remove: function remove(name) { + this.write(name, '', Date.now() - 86400000); + } + }; + })() : + + // Non standard browser env (web workers, react-native) lack needed support. + (function nonStandardBrowserEnv() { + return { + write: function write() {}, + read: function read() { return null; }, + remove: function remove() {} + }; + })() +); + +},{"./../utils":113}],108:[function(require,module,exports){ +'use strict'; + +/** + * Determines whether the specified URL is absolute + * + * @param {string} url The URL to test + * @returns {boolean} True if the specified URL is absolute, otherwise false + */ +module.exports = function isAbsoluteURL(url) { + // A URL is considered absolute if it begins with "://" or "//" (protocol-relative URL). + // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed + // by any combination of letters, digits, plus, period, or hyphen. + return /^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(url); +}; + +},{}],109:[function(require,module,exports){ +'use strict'; + +var utils = require('./../utils'); + +module.exports = ( + utils.isStandardBrowserEnv() ? + + // Standard browser envs have full support of the APIs needed to test + // whether the request URL is of the same origin as current location. + (function standardBrowserEnv() { + var msie = /(msie|trident)/i.test(navigator.userAgent); + var urlParsingNode = document.createElement('a'); + var originURL; + + /** + * Parse a URL to discover it's components + * + * @param {String} url The URL to be parsed + * @returns {Object} + */ + function resolveURL(url) { + var href = url; + + if (msie) { + // IE needs attribute set twice to normalize properties + urlParsingNode.setAttribute('href', href); + href = urlParsingNode.href; + } + + urlParsingNode.setAttribute('href', href); + + // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils + return { + href: urlParsingNode.href, + protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '', + host: urlParsingNode.host, + search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '', + hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '', + hostname: urlParsingNode.hostname, + port: urlParsingNode.port, + pathname: (urlParsingNode.pathname.charAt(0) === '/') ? + urlParsingNode.pathname : + '/' + urlParsingNode.pathname + }; + } + + originURL = resolveURL(window.location.href); + + /** + * Determine if a URL shares the same origin as the current location + * + * @param {String} requestURL The URL to test + * @returns {boolean} True if URL shares the same origin, otherwise false + */ + return function isURLSameOrigin(requestURL) { + var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL; + return (parsed.protocol === originURL.protocol && + parsed.host === originURL.host); + }; + })() : + + // Non standard browser envs (web workers, react-native) lack needed support. + (function nonStandardBrowserEnv() { + return function isURLSameOrigin() { + return true; + }; + })() +); + +},{"./../utils":113}],110:[function(require,module,exports){ +'use strict'; + +var utils = require('../utils'); + +module.exports = function normalizeHeaderName(headers, normalizedName) { + utils.forEach(headers, function processHeader(value, name) { + if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) { + headers[normalizedName] = value; + delete headers[name]; + } + }); +}; + +},{"../utils":113}],111:[function(require,module,exports){ +'use strict'; + +var utils = require('./../utils'); + +// Headers whose duplicates are ignored by node +// c.f. https://nodejs.org/api/http.html#http_message_headers +var ignoreDuplicateOf = [ + 'age', 'authorization', 'content-length', 'content-type', 'etag', + 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', + 'last-modified', 'location', 'max-forwards', 'proxy-authorization', + 'referer', 'retry-after', 'user-agent' +]; + +/** + * Parse headers into an object + * + * ``` + * Date: Wed, 27 Aug 2014 08:58:49 GMT + * Content-Type: application/json + * Connection: keep-alive + * Transfer-Encoding: chunked + * ``` + * + * @param {String} headers Headers needing to be parsed + * @returns {Object} Headers parsed into an object + */ +module.exports = function parseHeaders(headers) { + var parsed = {}; + var key; + var val; + var i; + + if (!headers) { return parsed; } + + utils.forEach(headers.split('\n'), function parser(line) { + i = line.indexOf(':'); + key = utils.trim(line.substr(0, i)).toLowerCase(); + val = utils.trim(line.substr(i + 1)); + + if (key) { + if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) { + return; + } + if (key === 'set-cookie') { + parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]); + } else { + parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val; + } + } + }); + + return parsed; +}; + +},{"./../utils":113}],112:[function(require,module,exports){ +'use strict'; + +/** + * Syntactic sugar for invoking a function and expanding an array for arguments. + * + * Common use case would be to use `Function.prototype.apply`. + * + * ```js + * function f(x, y, z) {} + * var args = [1, 2, 3]; + * f.apply(null, args); + * ``` + * + * With `spread` this example can be re-written. + * + * ```js + * spread(function(x, y, z) {})([1, 2, 3]); + * ``` + * + * @param {Function} callback + * @returns {Function} + */ +module.exports = function spread(callback) { + return function wrap(arr) { + return callback.apply(null, arr); + }; +}; + +},{}],113:[function(require,module,exports){ +'use strict'; + +var bind = require('./helpers/bind'); + +/*global toString:true*/ + +// utils is a library of generic helper functions non-specific to axios + +var toString = Object.prototype.toString; + +/** + * Determine if a value is an Array + * + * @param {Object} val The value to test + * @returns {boolean} True if value is an Array, otherwise false + */ +function isArray(val) { + return toString.call(val) === '[object Array]'; +} + +/** + * Determine if a value is undefined + * + * @param {Object} val The value to test + * @returns {boolean} True if the value is undefined, otherwise false + */ +function isUndefined(val) { + return typeof val === 'undefined'; +} + +/** + * Determine if a value is a Buffer + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Buffer, otherwise false + */ +function isBuffer(val) { + return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) + && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val); +} + +/** + * Determine if a value is an ArrayBuffer + * + * @param {Object} val The value to test + * @returns {boolean} True if value is an ArrayBuffer, otherwise false + */ +function isArrayBuffer(val) { + return toString.call(val) === '[object ArrayBuffer]'; +} + +/** + * Determine if a value is a FormData + * + * @param {Object} val The value to test + * @returns {boolean} True if value is an FormData, otherwise false + */ +function isFormData(val) { + return (typeof FormData !== 'undefined') && (val instanceof FormData); +} + +/** + * Determine if a value is a view on an ArrayBuffer + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false + */ +function isArrayBufferView(val) { + var result; + if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) { + result = ArrayBuffer.isView(val); + } else { + result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer); + } + return result; +} + +/** + * Determine if a value is a String + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a String, otherwise false + */ +function isString(val) { + return typeof val === 'string'; +} + +/** + * Determine if a value is a Number + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Number, otherwise false + */ +function isNumber(val) { + return typeof val === 'number'; +} + +/** + * Determine if a value is an Object + * + * @param {Object} val The value to test + * @returns {boolean} True if value is an Object, otherwise false + */ +function isObject(val) { + return val !== null && typeof val === 'object'; +} + +/** + * Determine if a value is a plain Object + * + * @param {Object} val The value to test + * @return {boolean} True if value is a plain Object, otherwise false + */ +function isPlainObject(val) { + if (toString.call(val) !== '[object Object]') { + return false; + } + + var prototype = Object.getPrototypeOf(val); + return prototype === null || prototype === Object.prototype; +} + +/** + * Determine if a value is a Date + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Date, otherwise false + */ +function isDate(val) { + return toString.call(val) === '[object Date]'; +} + +/** + * Determine if a value is a File + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a File, otherwise false + */ +function isFile(val) { + return toString.call(val) === '[object File]'; +} + +/** + * Determine if a value is a Blob + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Blob, otherwise false + */ +function isBlob(val) { + return toString.call(val) === '[object Blob]'; +} + +/** + * Determine if a value is a Function + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Function, otherwise false + */ +function isFunction(val) { + return toString.call(val) === '[object Function]'; +} + +/** + * Determine if a value is a Stream + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Stream, otherwise false + */ +function isStream(val) { + return isObject(val) && isFunction(val.pipe); +} + +/** + * Determine if a value is a URLSearchParams object + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a URLSearchParams object, otherwise false + */ +function isURLSearchParams(val) { + return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams; +} + +/** + * Trim excess whitespace off the beginning and end of a string + * + * @param {String} str The String to trim + * @returns {String} The String freed of excess whitespace + */ +function trim(str) { + return str.replace(/^\s*/, '').replace(/\s*$/, ''); +} + +/** + * Determine if we're running in a standard browser environment + * + * This allows axios to run in a web worker, and react-native. + * Both environments support XMLHttpRequest, but not fully standard globals. + * + * web workers: + * typeof window -> undefined + * typeof document -> undefined + * + * react-native: + * navigator.product -> 'ReactNative' + * nativescript + * navigator.product -> 'NativeScript' or 'NS' + */ +function isStandardBrowserEnv() { + if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' || + navigator.product === 'NativeScript' || + navigator.product === 'NS')) { + return false; + } + return ( + typeof window !== 'undefined' && + typeof document !== 'undefined' + ); +} + +/** + * Iterate over an Array or an Object invoking a function for each item. + * + * If `obj` is an Array callback will be called passing + * the value, index, and complete array for each item. + * + * If 'obj' is an Object callback will be called passing + * the value, key, and complete object for each property. + * + * @param {Object|Array} obj The object to iterate + * @param {Function} fn The callback to invoke for each item + */ +function forEach(obj, fn) { + // Don't bother if no value provided + if (obj === null || typeof obj === 'undefined') { + return; + } + + // Force an array if not already something iterable + if (typeof obj !== 'object') { + /*eslint no-param-reassign:0*/ + obj = [obj]; + } + + if (isArray(obj)) { + // Iterate over array values + for (var i = 0, l = obj.length; i < l; i++) { + fn.call(null, obj[i], i, obj); + } + } else { + // Iterate over object keys + for (var key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) { + fn.call(null, obj[key], key, obj); + } + } + } +} + +/** + * Accepts varargs expecting each argument to be an object, then + * immutably merges the properties of each object and returns result. + * + * When multiple objects contain the same key the later object in + * the arguments list will take precedence. + * + * Example: + * + * ```js + * var result = merge({foo: 123}, {foo: 456}); + * console.log(result.foo); // outputs 456 + * ``` + * + * @param {Object} obj1 Object to merge + * @returns {Object} Result of all merge properties + */ +function merge(/* obj1, obj2, obj3, ... */) { + var result = {}; + function assignValue(val, key) { + if (isPlainObject(result[key]) && isPlainObject(val)) { + result[key] = merge(result[key], val); + } else if (isPlainObject(val)) { + result[key] = merge({}, val); + } else if (isArray(val)) { + result[key] = val.slice(); + } else { + result[key] = val; + } + } + + for (var i = 0, l = arguments.length; i < l; i++) { + forEach(arguments[i], assignValue); + } + return result; +} + +/** + * Extends object a by mutably adding to it the properties of object b. + * + * @param {Object} a The object to be extended + * @param {Object} b The object to copy properties from + * @param {Object} thisArg The object to bind function to + * @return {Object} The resulting value of object a + */ +function extend(a, b, thisArg) { + forEach(b, function assignValue(val, key) { + if (thisArg && typeof val === 'function') { + a[key] = bind(val, thisArg); + } else { + a[key] = val; + } + }); + return a; +} + +/** + * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM) + * + * @param {string} content with BOM + * @return {string} content value without BOM + */ +function stripBOM(content) { + if (content.charCodeAt(0) === 0xFEFF) { + content = content.slice(1); + } + return content; +} + +module.exports = { + isArray: isArray, + isArrayBuffer: isArrayBuffer, + isBuffer: isBuffer, + isFormData: isFormData, + isArrayBufferView: isArrayBufferView, + isString: isString, + isNumber: isNumber, + isObject: isObject, + isPlainObject: isPlainObject, + isUndefined: isUndefined, + isDate: isDate, + isFile: isFile, + isBlob: isBlob, + isFunction: isFunction, + isStream: isStream, + isURLSearchParams: isURLSearchParams, + isStandardBrowserEnv: isStandardBrowserEnv, + forEach: forEach, + merge: merge, + extend: extend, + trim: trim, + stripBOM: stripBOM +}; + +},{"./helpers/bind":104}],114:[function(require,module,exports){ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: https://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")) + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod) + else // Plain browser env + mod(CodeMirror) +})(function(CodeMirror) { + "use strict" + + CodeMirror.defineOption("autoRefresh", false, function(cm, val) { + if (cm.state.autoRefresh) { + stopListening(cm, cm.state.autoRefresh) + cm.state.autoRefresh = null + } + if (val && cm.display.wrapper.offsetHeight == 0) + startListening(cm, cm.state.autoRefresh = {delay: val.delay || 250}) + }) + + function startListening(cm, state) { + function check() { + if (cm.display.wrapper.offsetHeight) { + stopListening(cm, state) + if (cm.display.lastWrapHeight != cm.display.wrapper.clientHeight) + cm.refresh() + } else { + state.timeout = setTimeout(check, state.delay) + } + } + state.timeout = setTimeout(check, state.delay) + state.hurry = function() { + clearTimeout(state.timeout) + state.timeout = setTimeout(check, 50) + } + CodeMirror.on(window, "mouseup", state.hurry) + CodeMirror.on(window, "keyup", state.hurry) + } + + function stopListening(_cm, state) { + clearTimeout(state.timeout) + CodeMirror.off(window, "mouseup", state.hurry) + CodeMirror.off(window, "keyup", state.hurry) + } +}); + +},{"../../lib/codemirror":116}],115:[function(require,module,exports){ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: https://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { + var defaults = { + pairs: "()[]{}''\"\"", + closeBefore: ")]}'\":;>", + triples: "", + explode: "[]{}" + }; + + var Pos = CodeMirror.Pos; + + CodeMirror.defineOption("autoCloseBrackets", false, function(cm, val, old) { + if (old && old != CodeMirror.Init) { + cm.removeKeyMap(keyMap); + cm.state.closeBrackets = null; + } + if (val) { + ensureBound(getOption(val, "pairs")) + cm.state.closeBrackets = val; + cm.addKeyMap(keyMap); + } + }); + + function getOption(conf, name) { + if (name == "pairs" && typeof conf == "string") return conf; + if (typeof conf == "object" && conf[name] != null) return conf[name]; + return defaults[name]; + } + + var keyMap = {Backspace: handleBackspace, Enter: handleEnter}; + function ensureBound(chars) { + for (var i = 0; i < chars.length; i++) { + var ch = chars.charAt(i), key = "'" + ch + "'" + if (!keyMap[key]) keyMap[key] = handler(ch) + } + } + ensureBound(defaults.pairs + "`") + + function handler(ch) { + return function(cm) { return handleChar(cm, ch); }; + } + + function getConfig(cm) { + var deflt = cm.state.closeBrackets; + if (!deflt || deflt.override) return deflt; + var mode = cm.getModeAt(cm.getCursor()); + return mode.closeBrackets || deflt; + } + + function handleBackspace(cm) { + var conf = getConfig(cm); + if (!conf || cm.getOption("disableInput")) return CodeMirror.Pass; + + var pairs = getOption(conf, "pairs"); + var ranges = cm.listSelections(); + for (var i = 0; i < ranges.length; i++) { + if (!ranges[i].empty()) return CodeMirror.Pass; + var around = charsAround(cm, ranges[i].head); + if (!around || pairs.indexOf(around) % 2 != 0) return CodeMirror.Pass; + } + for (var i = ranges.length - 1; i >= 0; i--) { + var cur = ranges[i].head; + cm.replaceRange("", Pos(cur.line, cur.ch - 1), Pos(cur.line, cur.ch + 1), "+delete"); + } + } + + function handleEnter(cm) { + var conf = getConfig(cm); + var explode = conf && getOption(conf, "explode"); + if (!explode || cm.getOption("disableInput")) return CodeMirror.Pass; + + var ranges = cm.listSelections(); + for (var i = 0; i < ranges.length; i++) { + if (!ranges[i].empty()) return CodeMirror.Pass; + var around = charsAround(cm, ranges[i].head); + if (!around || explode.indexOf(around) % 2 != 0) return CodeMirror.Pass; + } + cm.operation(function() { + var linesep = cm.lineSeparator() || "\n"; + cm.replaceSelection(linesep + linesep, null); + cm.execCommand("goCharLeft"); + ranges = cm.listSelections(); + for (var i = 0; i < ranges.length; i++) { + var line = ranges[i].head.line; + cm.indentLine(line, null, true); + cm.indentLine(line + 1, null, true); + } + }); + } + + function contractSelection(sel) { + var inverted = CodeMirror.cmpPos(sel.anchor, sel.head) > 0; + return {anchor: new Pos(sel.anchor.line, sel.anchor.ch + (inverted ? -1 : 1)), + head: new Pos(sel.head.line, sel.head.ch + (inverted ? 1 : -1))}; + } + + function handleChar(cm, ch) { + var conf = getConfig(cm); + if (!conf || cm.getOption("disableInput")) return CodeMirror.Pass; + + var pairs = getOption(conf, "pairs"); + var pos = pairs.indexOf(ch); + if (pos == -1) return CodeMirror.Pass; + + var closeBefore = getOption(conf,"closeBefore"); + + var triples = getOption(conf, "triples"); + + var identical = pairs.charAt(pos + 1) == ch; + var ranges = cm.listSelections(); + var opening = pos % 2 == 0; + + var type; + for (var i = 0; i < ranges.length; i++) { + var range = ranges[i], cur = range.head, curType; + var next = cm.getRange(cur, Pos(cur.line, cur.ch + 1)); + if (opening && !range.empty()) { + curType = "surround"; + } else if ((identical || !opening) && next == ch) { + if (identical && stringStartsAfter(cm, cur)) + curType = "both"; + else if (triples.indexOf(ch) >= 0 && cm.getRange(cur, Pos(cur.line, cur.ch + 3)) == ch + ch + ch) + curType = "skipThree"; + else + curType = "skip"; + } else if (identical && cur.ch > 1 && triples.indexOf(ch) >= 0 && + cm.getRange(Pos(cur.line, cur.ch - 2), cur) == ch + ch) { + if (cur.ch > 2 && /\bstring/.test(cm.getTokenTypeAt(Pos(cur.line, cur.ch - 2)))) return CodeMirror.Pass; + curType = "addFour"; + } else if (identical) { + var prev = cur.ch == 0 ? " " : cm.getRange(Pos(cur.line, cur.ch - 1), cur) + if (!CodeMirror.isWordChar(next) && prev != ch && !CodeMirror.isWordChar(prev)) curType = "both"; + else return CodeMirror.Pass; + } else if (opening && (next.length === 0 || /\s/.test(next) || closeBefore.indexOf(next) > -1)) { + curType = "both"; + } else { + return CodeMirror.Pass; + } + if (!type) type = curType; + else if (type != curType) return CodeMirror.Pass; + } + + var left = pos % 2 ? pairs.charAt(pos - 1) : ch; + var right = pos % 2 ? ch : pairs.charAt(pos + 1); + cm.operation(function() { + if (type == "skip") { + cm.execCommand("goCharRight"); + } else if (type == "skipThree") { + for (var i = 0; i < 3; i++) + cm.execCommand("goCharRight"); + } else if (type == "surround") { + var sels = cm.getSelections(); + for (var i = 0; i < sels.length; i++) + sels[i] = left + sels[i] + right; + cm.replaceSelections(sels, "around"); + sels = cm.listSelections().slice(); + for (var i = 0; i < sels.length; i++) + sels[i] = contractSelection(sels[i]); + cm.setSelections(sels); + } else if (type == "both") { + cm.replaceSelection(left + right, null); + cm.triggerElectric(left + right); + cm.execCommand("goCharLeft"); + } else if (type == "addFour") { + cm.replaceSelection(left + left + left + left, "before"); + cm.execCommand("goCharRight"); + } + }); + } + + function charsAround(cm, pos) { + var str = cm.getRange(Pos(pos.line, pos.ch - 1), + Pos(pos.line, pos.ch + 1)); + return str.length == 2 ? str : null; + } + + function stringStartsAfter(cm, pos) { + var token = cm.getTokenAt(Pos(pos.line, pos.ch + 1)) + return /\bstring/.test(token.type) && token.start == pos.ch && + (pos.ch == 0 || !/\bstring/.test(cm.getTokenTypeAt(pos))) + } +}); + +},{"../../lib/codemirror":116}],116:[function(require,module,exports){ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: https://codemirror.net/LICENSE + +// This is CodeMirror (https://codemirror.net), a code editor +// implemented in JavaScript on top of the browser's DOM. +// +// You can find some technical background for some of the code below +// at http://marijnhaverbeke.nl/blog/#cm-internals . + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = global || self, global.CodeMirror = factory()); +}(this, (function () { 'use strict'; + + // Kludges for bugs and behavior differences that can't be feature + // detected are enabled based on userAgent etc sniffing. + var userAgent = navigator.userAgent; + var platform = navigator.platform; + + var gecko = /gecko\/\d/i.test(userAgent); + var ie_upto10 = /MSIE \d/.test(userAgent); + var ie_11up = /Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(userAgent); + var edge = /Edge\/(\d+)/.exec(userAgent); + var ie = ie_upto10 || ie_11up || edge; + var ie_version = ie && (ie_upto10 ? document.documentMode || 6 : +(edge || ie_11up)[1]); + var webkit = !edge && /WebKit\//.test(userAgent); + var qtwebkit = webkit && /Qt\/\d+\.\d+/.test(userAgent); + var chrome = !edge && /Chrome\//.test(userAgent); + var presto = /Opera\//.test(userAgent); + var safari = /Apple Computer/.test(navigator.vendor); + var mac_geMountainLion = /Mac OS X 1\d\D([8-9]|\d\d)\D/.test(userAgent); + var phantom = /PhantomJS/.test(userAgent); + + var ios = !edge && /AppleWebKit/.test(userAgent) && /Mobile\/\w+/.test(userAgent); + var android = /Android/.test(userAgent); + // This is woefully incomplete. Suggestions for alternative methods welcome. + var mobile = ios || android || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent); + var mac = ios || /Mac/.test(platform); + var chromeOS = /\bCrOS\b/.test(userAgent); + var windows = /win/i.test(platform); + + var presto_version = presto && userAgent.match(/Version\/(\d*\.\d*)/); + if (presto_version) { presto_version = Number(presto_version[1]); } + if (presto_version && presto_version >= 15) { presto = false; webkit = true; } + // Some browsers use the wrong event properties to signal cmd/ctrl on OS X + var flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11)); + var captureRightClick = gecko || (ie && ie_version >= 9); + + function classTest(cls) { return new RegExp("(^|\\s)" + cls + "(?:$|\\s)\\s*") } + + var rmClass = function(node, cls) { + var current = node.className; + var match = classTest(cls).exec(current); + if (match) { + var after = current.slice(match.index + match[0].length); + node.className = current.slice(0, match.index) + (after ? match[1] + after : ""); + } + }; + + function removeChildren(e) { + for (var count = e.childNodes.length; count > 0; --count) + { e.removeChild(e.firstChild); } + return e + } + + function removeChildrenAndAdd(parent, e) { + return removeChildren(parent).appendChild(e) + } + + function elt(tag, content, className, style) { + var e = document.createElement(tag); + if (className) { e.className = className; } + if (style) { e.style.cssText = style; } + if (typeof content == "string") { e.appendChild(document.createTextNode(content)); } + else if (content) { for (var i = 0; i < content.length; ++i) { e.appendChild(content[i]); } } + return e + } + // wrapper for elt, which removes the elt from the accessibility tree + function eltP(tag, content, className, style) { + var e = elt(tag, content, className, style); + e.setAttribute("role", "presentation"); + return e + } + + var range; + if (document.createRange) { range = function(node, start, end, endNode) { + var r = document.createRange(); + r.setEnd(endNode || node, end); + r.setStart(node, start); + return r + }; } + else { range = function(node, start, end) { + var r = document.body.createTextRange(); + try { r.moveToElementText(node.parentNode); } + catch(e) { return r } + r.collapse(true); + r.moveEnd("character", end); + r.moveStart("character", start); + return r + }; } + + function contains(parent, child) { + if (child.nodeType == 3) // Android browser always returns false when child is a textnode + { child = child.parentNode; } + if (parent.contains) + { return parent.contains(child) } + do { + if (child.nodeType == 11) { child = child.host; } + if (child == parent) { return true } + } while (child = child.parentNode) + } + + function activeElt() { + // IE and Edge may throw an "Unspecified Error" when accessing document.activeElement. + // IE < 10 will throw when accessed while the page is loading or in an iframe. + // IE > 9 and Edge will throw when accessed in an iframe if document.body is unavailable. + var activeElement; + try { + activeElement = document.activeElement; + } catch(e) { + activeElement = document.body || null; + } + while (activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement) + { activeElement = activeElement.shadowRoot.activeElement; } + return activeElement + } + + function addClass(node, cls) { + var current = node.className; + if (!classTest(cls).test(current)) { node.className += (current ? " " : "") + cls; } + } + function joinClasses(a, b) { + var as = a.split(" "); + for (var i = 0; i < as.length; i++) + { if (as[i] && !classTest(as[i]).test(b)) { b += " " + as[i]; } } + return b + } + + var selectInput = function(node) { node.select(); }; + if (ios) // Mobile Safari apparently has a bug where select() is broken. + { selectInput = function(node) { node.selectionStart = 0; node.selectionEnd = node.value.length; }; } + else if (ie) // Suppress mysterious IE10 errors + { selectInput = function(node) { try { node.select(); } catch(_e) {} }; } + + function bind(f) { + var args = Array.prototype.slice.call(arguments, 1); + return function(){return f.apply(null, args)} + } + + function copyObj(obj, target, overwrite) { + if (!target) { target = {}; } + for (var prop in obj) + { if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop))) + { target[prop] = obj[prop]; } } + return target + } + + // Counts the column offset in a string, taking tabs into account. + // Used mostly to find indentation. + function countColumn(string, end, tabSize, startIndex, startValue) { + if (end == null) { + end = string.search(/[^\s\u00a0]/); + if (end == -1) { end = string.length; } + } + for (var i = startIndex || 0, n = startValue || 0;;) { + var nextTab = string.indexOf("\t", i); + if (nextTab < 0 || nextTab >= end) + { return n + (end - i) } + n += nextTab - i; + n += tabSize - (n % tabSize); + i = nextTab + 1; + } + } + + var Delayed = function() { + this.id = null; + this.f = null; + this.time = 0; + this.handler = bind(this.onTimeout, this); + }; + Delayed.prototype.onTimeout = function (self) { + self.id = 0; + if (self.time <= +new Date) { + self.f(); + } else { + setTimeout(self.handler, self.time - +new Date); + } + }; + Delayed.prototype.set = function (ms, f) { + this.f = f; + var time = +new Date + ms; + if (!this.id || time < this.time) { + clearTimeout(this.id); + this.id = setTimeout(this.handler, ms); + this.time = time; + } + }; + + function indexOf(array, elt) { + for (var i = 0; i < array.length; ++i) + { if (array[i] == elt) { return i } } + return -1 + } + + // Number of pixels added to scroller and sizer to hide scrollbar + var scrollerGap = 50; + + // Returned or thrown by various protocols to signal 'I'm not + // handling this'. + var Pass = {toString: function(){return "CodeMirror.Pass"}}; + + // Reused option objects for setSelection & friends + var sel_dontScroll = {scroll: false}, sel_mouse = {origin: "*mouse"}, sel_move = {origin: "+move"}; + + // The inverse of countColumn -- find the offset that corresponds to + // a particular column. + function findColumn(string, goal, tabSize) { + for (var pos = 0, col = 0;;) { + var nextTab = string.indexOf("\t", pos); + if (nextTab == -1) { nextTab = string.length; } + var skipped = nextTab - pos; + if (nextTab == string.length || col + skipped >= goal) + { return pos + Math.min(skipped, goal - col) } + col += nextTab - pos; + col += tabSize - (col % tabSize); + pos = nextTab + 1; + if (col >= goal) { return pos } + } + } + + var spaceStrs = [""]; + function spaceStr(n) { + while (spaceStrs.length <= n) + { spaceStrs.push(lst(spaceStrs) + " "); } + return spaceStrs[n] + } + + function lst(arr) { return arr[arr.length-1] } + + function map(array, f) { + var out = []; + for (var i = 0; i < array.length; i++) { out[i] = f(array[i], i); } + return out + } + + function insertSorted(array, value, score) { + var pos = 0, priority = score(value); + while (pos < array.length && score(array[pos]) <= priority) { pos++; } + array.splice(pos, 0, value); + } + + function nothing() {} + + function createObj(base, props) { + var inst; + if (Object.create) { + inst = Object.create(base); + } else { + nothing.prototype = base; + inst = new nothing(); + } + if (props) { copyObj(props, inst); } + return inst + } + + var nonASCIISingleCaseWordChar = /[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/; + function isWordCharBasic(ch) { + return /\w/.test(ch) || ch > "\x80" && + (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch)) + } + function isWordChar(ch, helper) { + if (!helper) { return isWordCharBasic(ch) } + if (helper.source.indexOf("\\w") > -1 && isWordCharBasic(ch)) { return true } + return helper.test(ch) + } + + function isEmpty(obj) { + for (var n in obj) { if (obj.hasOwnProperty(n) && obj[n]) { return false } } + return true + } + + // Extending unicode characters. A series of a non-extending char + + // any number of extending chars is treated as a single unit as far + // as editing and measuring is concerned. This is not fully correct, + // since some scripts/fonts/browsers also treat other configurations + // of code points as a group. + var extendingChars = /[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/; + function isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendingChars.test(ch) } + + // Returns a number from the range [`0`; `str.length`] unless `pos` is outside that range. + function skipExtendingChars(str, pos, dir) { + while ((dir < 0 ? pos > 0 : pos < str.length) && isExtendingChar(str.charAt(pos))) { pos += dir; } + return pos + } + + // Returns the value from the range [`from`; `to`] that satisfies + // `pred` and is closest to `from`. Assumes that at least `to` + // satisfies `pred`. Supports `from` being greater than `to`. + function findFirst(pred, from, to) { + // At any point we are certain `to` satisfies `pred`, don't know + // whether `from` does. + var dir = from > to ? -1 : 1; + for (;;) { + if (from == to) { return from } + var midF = (from + to) / 2, mid = dir < 0 ? Math.ceil(midF) : Math.floor(midF); + if (mid == from) { return pred(mid) ? from : to } + if (pred(mid)) { to = mid; } + else { from = mid + dir; } + } + } + + // BIDI HELPERS + + function iterateBidiSections(order, from, to, f) { + if (!order) { return f(from, to, "ltr", 0) } + var found = false; + for (var i = 0; i < order.length; ++i) { + var part = order[i]; + if (part.from < to && part.to > from || from == to && part.to == from) { + f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? "rtl" : "ltr", i); + found = true; + } + } + if (!found) { f(from, to, "ltr"); } + } + + var bidiOther = null; + function getBidiPartAt(order, ch, sticky) { + var found; + bidiOther = null; + for (var i = 0; i < order.length; ++i) { + var cur = order[i]; + if (cur.from < ch && cur.to > ch) { return i } + if (cur.to == ch) { + if (cur.from != cur.to && sticky == "before") { found = i; } + else { bidiOther = i; } + } + if (cur.from == ch) { + if (cur.from != cur.to && sticky != "before") { found = i; } + else { bidiOther = i; } + } + } + return found != null ? found : bidiOther + } + + // Bidirectional ordering algorithm + // See http://unicode.org/reports/tr9/tr9-13.html for the algorithm + // that this (partially) implements. + + // One-char codes used for character types: + // L (L): Left-to-Right + // R (R): Right-to-Left + // r (AL): Right-to-Left Arabic + // 1 (EN): European Number + // + (ES): European Number Separator + // % (ET): European Number Terminator + // n (AN): Arabic Number + // , (CS): Common Number Separator + // m (NSM): Non-Spacing Mark + // b (BN): Boundary Neutral + // s (B): Paragraph Separator + // t (S): Segment Separator + // w (WS): Whitespace + // N (ON): Other Neutrals + + // Returns null if characters are ordered as they appear + // (left-to-right), or an array of sections ({from, to, level} + // objects) in the order in which they occur visually. + var bidiOrdering = (function() { + // Character types for codepoints 0 to 0xff + var lowTypes = "bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN"; + // Character types for codepoints 0x600 to 0x6f9 + var arabicTypes = "nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111"; + function charType(code) { + if (code <= 0xf7) { return lowTypes.charAt(code) } + else if (0x590 <= code && code <= 0x5f4) { return "R" } + else if (0x600 <= code && code <= 0x6f9) { return arabicTypes.charAt(code - 0x600) } + else if (0x6ee <= code && code <= 0x8ac) { return "r" } + else if (0x2000 <= code && code <= 0x200b) { return "w" } + else if (code == 0x200c) { return "b" } + else { return "L" } + } + + var bidiRE = /[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/; + var isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/; + + function BidiSpan(level, from, to) { + this.level = level; + this.from = from; this.to = to; + } + + return function(str, direction) { + var outerType = direction == "ltr" ? "L" : "R"; + + if (str.length == 0 || direction == "ltr" && !bidiRE.test(str)) { return false } + var len = str.length, types = []; + for (var i = 0; i < len; ++i) + { types.push(charType(str.charCodeAt(i))); } + + // W1. Examine each non-spacing mark (NSM) in the level run, and + // change the type of the NSM to the type of the previous + // character. If the NSM is at the start of the level run, it will + // get the type of sor. + for (var i$1 = 0, prev = outerType; i$1 < len; ++i$1) { + var type = types[i$1]; + if (type == "m") { types[i$1] = prev; } + else { prev = type; } + } + + // W2. Search backwards from each instance of a European number + // until the first strong type (R, L, AL, or sor) is found. If an + // AL is found, change the type of the European number to Arabic + // number. + // W3. Change all ALs to R. + for (var i$2 = 0, cur = outerType; i$2 < len; ++i$2) { + var type$1 = types[i$2]; + if (type$1 == "1" && cur == "r") { types[i$2] = "n"; } + else if (isStrong.test(type$1)) { cur = type$1; if (type$1 == "r") { types[i$2] = "R"; } } + } + + // W4. A single European separator between two European numbers + // changes to a European number. A single common separator between + // two numbers of the same type changes to that type. + for (var i$3 = 1, prev$1 = types[0]; i$3 < len - 1; ++i$3) { + var type$2 = types[i$3]; + if (type$2 == "+" && prev$1 == "1" && types[i$3+1] == "1") { types[i$3] = "1"; } + else if (type$2 == "," && prev$1 == types[i$3+1] && + (prev$1 == "1" || prev$1 == "n")) { types[i$3] = prev$1; } + prev$1 = type$2; + } + + // W5. A sequence of European terminators adjacent to European + // numbers changes to all European numbers. + // W6. Otherwise, separators and terminators change to Other + // Neutral. + for (var i$4 = 0; i$4 < len; ++i$4) { + var type$3 = types[i$4]; + if (type$3 == ",") { types[i$4] = "N"; } + else if (type$3 == "%") { + var end = (void 0); + for (end = i$4 + 1; end < len && types[end] == "%"; ++end) {} + var replace = (i$4 && types[i$4-1] == "!") || (end < len && types[end] == "1") ? "1" : "N"; + for (var j = i$4; j < end; ++j) { types[j] = replace; } + i$4 = end - 1; + } + } + + // W7. Search backwards from each instance of a European number + // until the first strong type (R, L, or sor) is found. If an L is + // found, then change the type of the European number to L. + for (var i$5 = 0, cur$1 = outerType; i$5 < len; ++i$5) { + var type$4 = types[i$5]; + if (cur$1 == "L" && type$4 == "1") { types[i$5] = "L"; } + else if (isStrong.test(type$4)) { cur$1 = type$4; } + } + + // N1. A sequence of neutrals takes the direction of the + // surrounding strong text if the text on both sides has the same + // direction. European and Arabic numbers act as if they were R in + // terms of their influence on neutrals. Start-of-level-run (sor) + // and end-of-level-run (eor) are used at level run boundaries. + // N2. Any remaining neutrals take the embedding direction. + for (var i$6 = 0; i$6 < len; ++i$6) { + if (isNeutral.test(types[i$6])) { + var end$1 = (void 0); + for (end$1 = i$6 + 1; end$1 < len && isNeutral.test(types[end$1]); ++end$1) {} + var before = (i$6 ? types[i$6-1] : outerType) == "L"; + var after = (end$1 < len ? types[end$1] : outerType) == "L"; + var replace$1 = before == after ? (before ? "L" : "R") : outerType; + for (var j$1 = i$6; j$1 < end$1; ++j$1) { types[j$1] = replace$1; } + i$6 = end$1 - 1; + } + } + + // Here we depart from the documented algorithm, in order to avoid + // building up an actual levels array. Since there are only three + // levels (0, 1, 2) in an implementation that doesn't take + // explicit embedding into account, we can build up the order on + // the fly, without following the level-based algorithm. + var order = [], m; + for (var i$7 = 0; i$7 < len;) { + if (countsAsLeft.test(types[i$7])) { + var start = i$7; + for (++i$7; i$7 < len && countsAsLeft.test(types[i$7]); ++i$7) {} + order.push(new BidiSpan(0, start, i$7)); + } else { + var pos = i$7, at = order.length, isRTL = direction == "rtl" ? 1 : 0; + for (++i$7; i$7 < len && types[i$7] != "L"; ++i$7) {} + for (var j$2 = pos; j$2 < i$7;) { + if (countsAsNum.test(types[j$2])) { + if (pos < j$2) { order.splice(at, 0, new BidiSpan(1, pos, j$2)); at += isRTL; } + var nstart = j$2; + for (++j$2; j$2 < i$7 && countsAsNum.test(types[j$2]); ++j$2) {} + order.splice(at, 0, new BidiSpan(2, nstart, j$2)); + at += isRTL; + pos = j$2; + } else { ++j$2; } + } + if (pos < i$7) { order.splice(at, 0, new BidiSpan(1, pos, i$7)); } + } + } + if (direction == "ltr") { + if (order[0].level == 1 && (m = str.match(/^\s+/))) { + order[0].from = m[0].length; + order.unshift(new BidiSpan(0, 0, m[0].length)); + } + if (lst(order).level == 1 && (m = str.match(/\s+$/))) { + lst(order).to -= m[0].length; + order.push(new BidiSpan(0, len - m[0].length, len)); + } + } + + return direction == "rtl" ? order.reverse() : order + } + })(); + + // Get the bidi ordering for the given line (and cache it). Returns + // false for lines that are fully left-to-right, and an array of + // BidiSpan objects otherwise. + function getOrder(line, direction) { + var order = line.order; + if (order == null) { order = line.order = bidiOrdering(line.text, direction); } + return order + } + + // EVENT HANDLING + + // Lightweight event framework. on/off also work on DOM nodes, + // registering native DOM handlers. + + var noHandlers = []; + + var on = function(emitter, type, f) { + if (emitter.addEventListener) { + emitter.addEventListener(type, f, false); + } else if (emitter.attachEvent) { + emitter.attachEvent("on" + type, f); + } else { + var map = emitter._handlers || (emitter._handlers = {}); + map[type] = (map[type] || noHandlers).concat(f); + } + }; + + function getHandlers(emitter, type) { + return emitter._handlers && emitter._handlers[type] || noHandlers + } + + function off(emitter, type, f) { + if (emitter.removeEventListener) { + emitter.removeEventListener(type, f, false); + } else if (emitter.detachEvent) { + emitter.detachEvent("on" + type, f); + } else { + var map = emitter._handlers, arr = map && map[type]; + if (arr) { + var index = indexOf(arr, f); + if (index > -1) + { map[type] = arr.slice(0, index).concat(arr.slice(index + 1)); } + } + } + } + + function signal(emitter, type /*, values...*/) { + var handlers = getHandlers(emitter, type); + if (!handlers.length) { return } + var args = Array.prototype.slice.call(arguments, 2); + for (var i = 0; i < handlers.length; ++i) { handlers[i].apply(null, args); } + } + + // The DOM events that CodeMirror handles can be overridden by + // registering a (non-DOM) handler on the editor for the event name, + // and preventDefault-ing the event in that handler. + function signalDOMEvent(cm, e, override) { + if (typeof e == "string") + { e = {type: e, preventDefault: function() { this.defaultPrevented = true; }}; } + signal(cm, override || e.type, cm, e); + return e_defaultPrevented(e) || e.codemirrorIgnore + } + + function signalCursorActivity(cm) { + var arr = cm._handlers && cm._handlers.cursorActivity; + if (!arr) { return } + var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []); + for (var i = 0; i < arr.length; ++i) { if (indexOf(set, arr[i]) == -1) + { set.push(arr[i]); } } + } + + function hasHandler(emitter, type) { + return getHandlers(emitter, type).length > 0 + } + + // Add on and off methods to a constructor's prototype, to make + // registering events on such objects more convenient. + function eventMixin(ctor) { + ctor.prototype.on = function(type, f) {on(this, type, f);}; + ctor.prototype.off = function(type, f) {off(this, type, f);}; + } + + // Due to the fact that we still support jurassic IE versions, some + // compatibility wrappers are needed. + + function e_preventDefault(e) { + if (e.preventDefault) { e.preventDefault(); } + else { e.returnValue = false; } + } + function e_stopPropagation(e) { + if (e.stopPropagation) { e.stopPropagation(); } + else { e.cancelBubble = true; } + } + function e_defaultPrevented(e) { + return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false + } + function e_stop(e) {e_preventDefault(e); e_stopPropagation(e);} + + function e_target(e) {return e.target || e.srcElement} + function e_button(e) { + var b = e.which; + if (b == null) { + if (e.button & 1) { b = 1; } + else if (e.button & 2) { b = 3; } + else if (e.button & 4) { b = 2; } + } + if (mac && e.ctrlKey && b == 1) { b = 3; } + return b + } + + // Detect drag-and-drop + var dragAndDrop = function() { + // There is *some* kind of drag-and-drop support in IE6-8, but I + // couldn't get it to work yet. + if (ie && ie_version < 9) { return false } + var div = elt('div'); + return "draggable" in div || "dragDrop" in div + }(); + + var zwspSupported; + function zeroWidthElement(measure) { + if (zwspSupported == null) { + var test = elt("span", "\u200b"); + removeChildrenAndAdd(measure, elt("span", [test, document.createTextNode("x")])); + if (measure.firstChild.offsetHeight != 0) + { zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8); } + } + var node = zwspSupported ? elt("span", "\u200b") : + elt("span", "\u00a0", null, "display: inline-block; width: 1px; margin-right: -1px"); + node.setAttribute("cm-text", ""); + return node + } + + // Feature-detect IE's crummy client rect reporting for bidi text + var badBidiRects; + function hasBadBidiRects(measure) { + if (badBidiRects != null) { return badBidiRects } + var txt = removeChildrenAndAdd(measure, document.createTextNode("A\u062eA")); + var r0 = range(txt, 0, 1).getBoundingClientRect(); + var r1 = range(txt, 1, 2).getBoundingClientRect(); + removeChildren(measure); + if (!r0 || r0.left == r0.right) { return false } // Safari returns null in some cases (#2780) + return badBidiRects = (r1.right - r0.right < 3) + } + + // See if "".split is the broken IE version, if so, provide an + // alternative way to split lines. + var splitLinesAuto = "\n\nb".split(/\n/).length != 3 ? function (string) { + var pos = 0, result = [], l = string.length; + while (pos <= l) { + var nl = string.indexOf("\n", pos); + if (nl == -1) { nl = string.length; } + var line = string.slice(pos, string.charAt(nl - 1) == "\r" ? nl - 1 : nl); + var rt = line.indexOf("\r"); + if (rt != -1) { + result.push(line.slice(0, rt)); + pos += rt + 1; + } else { + result.push(line); + pos = nl + 1; + } + } + return result + } : function (string) { return string.split(/\r\n?|\n/); }; + + var hasSelection = window.getSelection ? function (te) { + try { return te.selectionStart != te.selectionEnd } + catch(e) { return false } + } : function (te) { + var range; + try {range = te.ownerDocument.selection.createRange();} + catch(e) {} + if (!range || range.parentElement() != te) { return false } + return range.compareEndPoints("StartToEnd", range) != 0 + }; + + var hasCopyEvent = (function () { + var e = elt("div"); + if ("oncopy" in e) { return true } + e.setAttribute("oncopy", "return;"); + return typeof e.oncopy == "function" + })(); + + var badZoomedRects = null; + function hasBadZoomedRects(measure) { + if (badZoomedRects != null) { return badZoomedRects } + var node = removeChildrenAndAdd(measure, elt("span", "x")); + var normal = node.getBoundingClientRect(); + var fromRange = range(node, 0, 1).getBoundingClientRect(); + return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1 + } + + // Known modes, by name and by MIME + var modes = {}, mimeModes = {}; + + // Extra arguments are stored as the mode's dependencies, which is + // used by (legacy) mechanisms like loadmode.js to automatically + // load a mode. (Preferred mechanism is the require/define calls.) + function defineMode(name, mode) { + if (arguments.length > 2) + { mode.dependencies = Array.prototype.slice.call(arguments, 2); } + modes[name] = mode; + } + + function defineMIME(mime, spec) { + mimeModes[mime] = spec; + } + + // Given a MIME type, a {name, ...options} config object, or a name + // string, return a mode config object. + function resolveMode(spec) { + if (typeof spec == "string" && mimeModes.hasOwnProperty(spec)) { + spec = mimeModes[spec]; + } else if (spec && typeof spec.name == "string" && mimeModes.hasOwnProperty(spec.name)) { + var found = mimeModes[spec.name]; + if (typeof found == "string") { found = {name: found}; } + spec = createObj(found, spec); + spec.name = found.name; + } else if (typeof spec == "string" && /^[\w\-]+\/[\w\-]+\+xml$/.test(spec)) { + return resolveMode("application/xml") + } else if (typeof spec == "string" && /^[\w\-]+\/[\w\-]+\+json$/.test(spec)) { + return resolveMode("application/json") + } + if (typeof spec == "string") { return {name: spec} } + else { return spec || {name: "null"} } + } + + // Given a mode spec (anything that resolveMode accepts), find and + // initialize an actual mode object. + function getMode(options, spec) { + spec = resolveMode(spec); + var mfactory = modes[spec.name]; + if (!mfactory) { return getMode(options, "text/plain") } + var modeObj = mfactory(options, spec); + if (modeExtensions.hasOwnProperty(spec.name)) { + var exts = modeExtensions[spec.name]; + for (var prop in exts) { + if (!exts.hasOwnProperty(prop)) { continue } + if (modeObj.hasOwnProperty(prop)) { modeObj["_" + prop] = modeObj[prop]; } + modeObj[prop] = exts[prop]; + } + } + modeObj.name = spec.name; + if (spec.helperType) { modeObj.helperType = spec.helperType; } + if (spec.modeProps) { for (var prop$1 in spec.modeProps) + { modeObj[prop$1] = spec.modeProps[prop$1]; } } + + return modeObj + } + + // This can be used to attach properties to mode objects from + // outside the actual mode definition. + var modeExtensions = {}; + function extendMode(mode, properties) { + var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : (modeExtensions[mode] = {}); + copyObj(properties, exts); + } + + function copyState(mode, state) { + if (state === true) { return state } + if (mode.copyState) { return mode.copyState(state) } + var nstate = {}; + for (var n in state) { + var val = state[n]; + if (val instanceof Array) { val = val.concat([]); } + nstate[n] = val; + } + return nstate + } + + // Given a mode and a state (for that mode), find the inner mode and + // state at the position that the state refers to. + function innerMode(mode, state) { + var info; + while (mode.innerMode) { + info = mode.innerMode(state); + if (!info || info.mode == mode) { break } + state = info.state; + mode = info.mode; + } + return info || {mode: mode, state: state} + } + + function startState(mode, a1, a2) { + return mode.startState ? mode.startState(a1, a2) : true + } + + // STRING STREAM + + // Fed to the mode parsers, provides helper functions to make + // parsers more succinct. + + var StringStream = function(string, tabSize, lineOracle) { + this.pos = this.start = 0; + this.string = string; + this.tabSize = tabSize || 8; + this.lastColumnPos = this.lastColumnValue = 0; + this.lineStart = 0; + this.lineOracle = lineOracle; + }; + + StringStream.prototype.eol = function () {return this.pos >= this.string.length}; + StringStream.prototype.sol = function () {return this.pos == this.lineStart}; + StringStream.prototype.peek = function () {return this.string.charAt(this.pos) || undefined}; + StringStream.prototype.next = function () { + if (this.pos < this.string.length) + { return this.string.charAt(this.pos++) } + }; + StringStream.prototype.eat = function (match) { + var ch = this.string.charAt(this.pos); + var ok; + if (typeof match == "string") { ok = ch == match; } + else { ok = ch && (match.test ? match.test(ch) : match(ch)); } + if (ok) {++this.pos; return ch} + }; + StringStream.prototype.eatWhile = function (match) { + var start = this.pos; + while (this.eat(match)){} + return this.pos > start + }; + StringStream.prototype.eatSpace = function () { + var start = this.pos; + while (/[\s\u00a0]/.test(this.string.charAt(this.pos))) { ++this.pos; } + return this.pos > start + }; + StringStream.prototype.skipToEnd = function () {this.pos = this.string.length;}; + StringStream.prototype.skipTo = function (ch) { + var found = this.string.indexOf(ch, this.pos); + if (found > -1) {this.pos = found; return true} + }; + StringStream.prototype.backUp = function (n) {this.pos -= n;}; + StringStream.prototype.column = function () { + if (this.lastColumnPos < this.start) { + this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue); + this.lastColumnPos = this.start; + } + return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0) + }; + StringStream.prototype.indentation = function () { + return countColumn(this.string, null, this.tabSize) - + (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0) + }; + StringStream.prototype.match = function (pattern, consume, caseInsensitive) { + if (typeof pattern == "string") { + var cased = function (str) { return caseInsensitive ? str.toLowerCase() : str; }; + var substr = this.string.substr(this.pos, pattern.length); + if (cased(substr) == cased(pattern)) { + if (consume !== false) { this.pos += pattern.length; } + return true + } + } else { + var match = this.string.slice(this.pos).match(pattern); + if (match && match.index > 0) { return null } + if (match && consume !== false) { this.pos += match[0].length; } + return match + } + }; + StringStream.prototype.current = function (){return this.string.slice(this.start, this.pos)}; + StringStream.prototype.hideFirstChars = function (n, inner) { + this.lineStart += n; + try { return inner() } + finally { this.lineStart -= n; } + }; + StringStream.prototype.lookAhead = function (n) { + var oracle = this.lineOracle; + return oracle && oracle.lookAhead(n) + }; + StringStream.prototype.baseToken = function () { + var oracle = this.lineOracle; + return oracle && oracle.baseToken(this.pos) + }; + + // Find the line object corresponding to the given line number. + function getLine(doc, n) { + n -= doc.first; + if (n < 0 || n >= doc.size) { throw new Error("There is no line " + (n + doc.first) + " in the document.") } + var chunk = doc; + while (!chunk.lines) { + for (var i = 0;; ++i) { + var child = chunk.children[i], sz = child.chunkSize(); + if (n < sz) { chunk = child; break } + n -= sz; + } + } + return chunk.lines[n] + } + + // Get the part of a document between two positions, as an array of + // strings. + function getBetween(doc, start, end) { + var out = [], n = start.line; + doc.iter(start.line, end.line + 1, function (line) { + var text = line.text; + if (n == end.line) { text = text.slice(0, end.ch); } + if (n == start.line) { text = text.slice(start.ch); } + out.push(text); + ++n; + }); + return out + } + // Get the lines between from and to, as array of strings. + function getLines(doc, from, to) { + var out = []; + doc.iter(from, to, function (line) { out.push(line.text); }); // iter aborts when callback returns truthy value + return out + } + + // Update the height of a line, propagating the height change + // upwards to parent nodes. + function updateLineHeight(line, height) { + var diff = height - line.height; + if (diff) { for (var n = line; n; n = n.parent) { n.height += diff; } } + } + + // Given a line object, find its line number by walking up through + // its parent links. + function lineNo(line) { + if (line.parent == null) { return null } + var cur = line.parent, no = indexOf(cur.lines, line); + for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) { + for (var i = 0;; ++i) { + if (chunk.children[i] == cur) { break } + no += chunk.children[i].chunkSize(); + } + } + return no + cur.first + } + + // Find the line at the given vertical position, using the height + // information in the document tree. + function lineAtHeight(chunk, h) { + var n = chunk.first; + outer: do { + for (var i$1 = 0; i$1 < chunk.children.length; ++i$1) { + var child = chunk.children[i$1], ch = child.height; + if (h < ch) { chunk = child; continue outer } + h -= ch; + n += child.chunkSize(); + } + return n + } while (!chunk.lines) + var i = 0; + for (; i < chunk.lines.length; ++i) { + var line = chunk.lines[i], lh = line.height; + if (h < lh) { break } + h -= lh; + } + return n + i + } + + function isLine(doc, l) {return l >= doc.first && l < doc.first + doc.size} + + function lineNumberFor(options, i) { + return String(options.lineNumberFormatter(i + options.firstLineNumber)) + } + + // A Pos instance represents a position within the text. + function Pos(line, ch, sticky) { + if ( sticky === void 0 ) sticky = null; + + if (!(this instanceof Pos)) { return new Pos(line, ch, sticky) } + this.line = line; + this.ch = ch; + this.sticky = sticky; + } + + // Compare two positions, return 0 if they are the same, a negative + // number when a is less, and a positive number otherwise. + function cmp(a, b) { return a.line - b.line || a.ch - b.ch } + + function equalCursorPos(a, b) { return a.sticky == b.sticky && cmp(a, b) == 0 } + + function copyPos(x) {return Pos(x.line, x.ch)} + function maxPos(a, b) { return cmp(a, b) < 0 ? b : a } + function minPos(a, b) { return cmp(a, b) < 0 ? a : b } + + // Most of the external API clips given positions to make sure they + // actually exist within the document. + function clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1))} + function clipPos(doc, pos) { + if (pos.line < doc.first) { return Pos(doc.first, 0) } + var last = doc.first + doc.size - 1; + if (pos.line > last) { return Pos(last, getLine(doc, last).text.length) } + return clipToLen(pos, getLine(doc, pos.line).text.length) + } + function clipToLen(pos, linelen) { + var ch = pos.ch; + if (ch == null || ch > linelen) { return Pos(pos.line, linelen) } + else if (ch < 0) { return Pos(pos.line, 0) } + else { return pos } + } + function clipPosArray(doc, array) { + var out = []; + for (var i = 0; i < array.length; i++) { out[i] = clipPos(doc, array[i]); } + return out + } + + var SavedContext = function(state, lookAhead) { + this.state = state; + this.lookAhead = lookAhead; + }; + + var Context = function(doc, state, line, lookAhead) { + this.state = state; + this.doc = doc; + this.line = line; + this.maxLookAhead = lookAhead || 0; + this.baseTokens = null; + this.baseTokenPos = 1; + }; + + Context.prototype.lookAhead = function (n) { + var line = this.doc.getLine(this.line + n); + if (line != null && n > this.maxLookAhead) { this.maxLookAhead = n; } + return line + }; + + Context.prototype.baseToken = function (n) { + if (!this.baseTokens) { return null } + while (this.baseTokens[this.baseTokenPos] <= n) + { this.baseTokenPos += 2; } + var type = this.baseTokens[this.baseTokenPos + 1]; + return {type: type && type.replace(/( |^)overlay .*/, ""), + size: this.baseTokens[this.baseTokenPos] - n} + }; + + Context.prototype.nextLine = function () { + this.line++; + if (this.maxLookAhead > 0) { this.maxLookAhead--; } + }; + + Context.fromSaved = function (doc, saved, line) { + if (saved instanceof SavedContext) + { return new Context(doc, copyState(doc.mode, saved.state), line, saved.lookAhead) } + else + { return new Context(doc, copyState(doc.mode, saved), line) } + }; + + Context.prototype.save = function (copy) { + var state = copy !== false ? copyState(this.doc.mode, this.state) : this.state; + return this.maxLookAhead > 0 ? new SavedContext(state, this.maxLookAhead) : state + }; + + + // Compute a style array (an array starting with a mode generation + // -- for invalidation -- followed by pairs of end positions and + // style strings), which is used to highlight the tokens on the + // line. + function highlightLine(cm, line, context, forceToEnd) { + // A styles array always starts with a number identifying the + // mode/overlays that it is based on (for easy invalidation). + var st = [cm.state.modeGen], lineClasses = {}; + // Compute the base array of styles + runMode(cm, line.text, cm.doc.mode, context, function (end, style) { return st.push(end, style); }, + lineClasses, forceToEnd); + var state = context.state; + + // Run overlays, adjust style array. + var loop = function ( o ) { + context.baseTokens = st; + var overlay = cm.state.overlays[o], i = 1, at = 0; + context.state = true; + runMode(cm, line.text, overlay.mode, context, function (end, style) { + var start = i; + // Ensure there's a token end at the current position, and that i points at it + while (at < end) { + var i_end = st[i]; + if (i_end > end) + { st.splice(i, 1, end, st[i+1], i_end); } + i += 2; + at = Math.min(end, i_end); + } + if (!style) { return } + if (overlay.opaque) { + st.splice(start, i - start, end, "overlay " + style); + i = start + 2; + } else { + for (; start < i; start += 2) { + var cur = st[start+1]; + st[start+1] = (cur ? cur + " " : "") + "overlay " + style; + } + } + }, lineClasses); + context.state = state; + context.baseTokens = null; + context.baseTokenPos = 1; + }; + + for (var o = 0; o < cm.state.overlays.length; ++o) loop( o ); + + return {styles: st, classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null} + } + + function getLineStyles(cm, line, updateFrontier) { + if (!line.styles || line.styles[0] != cm.state.modeGen) { + var context = getContextBefore(cm, lineNo(line)); + var resetState = line.text.length > cm.options.maxHighlightLength && copyState(cm.doc.mode, context.state); + var result = highlightLine(cm, line, context); + if (resetState) { context.state = resetState; } + line.stateAfter = context.save(!resetState); + line.styles = result.styles; + if (result.classes) { line.styleClasses = result.classes; } + else if (line.styleClasses) { line.styleClasses = null; } + if (updateFrontier === cm.doc.highlightFrontier) + { cm.doc.modeFrontier = Math.max(cm.doc.modeFrontier, ++cm.doc.highlightFrontier); } + } + return line.styles + } + + function getContextBefore(cm, n, precise) { + var doc = cm.doc, display = cm.display; + if (!doc.mode.startState) { return new Context(doc, true, n) } + var start = findStartLine(cm, n, precise); + var saved = start > doc.first && getLine(doc, start - 1).stateAfter; + var context = saved ? Context.fromSaved(doc, saved, start) : new Context(doc, startState(doc.mode), start); + + doc.iter(start, n, function (line) { + processLine(cm, line.text, context); + var pos = context.line; + line.stateAfter = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo ? context.save() : null; + context.nextLine(); + }); + if (precise) { doc.modeFrontier = context.line; } + return context + } + + // Lightweight form of highlight -- proceed over this line and + // update state, but don't save a style array. Used for lines that + // aren't currently visible. + function processLine(cm, text, context, startAt) { + var mode = cm.doc.mode; + var stream = new StringStream(text, cm.options.tabSize, context); + stream.start = stream.pos = startAt || 0; + if (text == "") { callBlankLine(mode, context.state); } + while (!stream.eol()) { + readToken(mode, stream, context.state); + stream.start = stream.pos; + } + } + + function callBlankLine(mode, state) { + if (mode.blankLine) { return mode.blankLine(state) } + if (!mode.innerMode) { return } + var inner = innerMode(mode, state); + if (inner.mode.blankLine) { return inner.mode.blankLine(inner.state) } + } + + function readToken(mode, stream, state, inner) { + for (var i = 0; i < 10; i++) { + if (inner) { inner[0] = innerMode(mode, state).mode; } + var style = mode.token(stream, state); + if (stream.pos > stream.start) { return style } + } + throw new Error("Mode " + mode.name + " failed to advance stream.") + } + + var Token = function(stream, type, state) { + this.start = stream.start; this.end = stream.pos; + this.string = stream.current(); + this.type = type || null; + this.state = state; + }; + + // Utility for getTokenAt and getLineTokens + function takeToken(cm, pos, precise, asArray) { + var doc = cm.doc, mode = doc.mode, style; + pos = clipPos(doc, pos); + var line = getLine(doc, pos.line), context = getContextBefore(cm, pos.line, precise); + var stream = new StringStream(line.text, cm.options.tabSize, context), tokens; + if (asArray) { tokens = []; } + while ((asArray || stream.pos < pos.ch) && !stream.eol()) { + stream.start = stream.pos; + style = readToken(mode, stream, context.state); + if (asArray) { tokens.push(new Token(stream, style, copyState(doc.mode, context.state))); } + } + return asArray ? tokens : new Token(stream, style, context.state) + } + + function extractLineClasses(type, output) { + if (type) { for (;;) { + var lineClass = type.match(/(?:^|\s+)line-(background-)?(\S+)/); + if (!lineClass) { break } + type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length); + var prop = lineClass[1] ? "bgClass" : "textClass"; + if (output[prop] == null) + { output[prop] = lineClass[2]; } + else if (!(new RegExp("(?:^|\\s)" + lineClass[2] + "(?:$|\\s)")).test(output[prop])) + { output[prop] += " " + lineClass[2]; } + } } + return type + } + + // Run the given mode's parser over a line, calling f for each token. + function runMode(cm, text, mode, context, f, lineClasses, forceToEnd) { + var flattenSpans = mode.flattenSpans; + if (flattenSpans == null) { flattenSpans = cm.options.flattenSpans; } + var curStart = 0, curStyle = null; + var stream = new StringStream(text, cm.options.tabSize, context), style; + var inner = cm.options.addModeClass && [null]; + if (text == "") { extractLineClasses(callBlankLine(mode, context.state), lineClasses); } + while (!stream.eol()) { + if (stream.pos > cm.options.maxHighlightLength) { + flattenSpans = false; + if (forceToEnd) { processLine(cm, text, context, stream.pos); } + stream.pos = text.length; + style = null; + } else { + style = extractLineClasses(readToken(mode, stream, context.state, inner), lineClasses); + } + if (inner) { + var mName = inner[0].name; + if (mName) { style = "m-" + (style ? mName + " " + style : mName); } + } + if (!flattenSpans || curStyle != style) { + while (curStart < stream.start) { + curStart = Math.min(stream.start, curStart + 5000); + f(curStart, curStyle); + } + curStyle = style; + } + stream.start = stream.pos; + } + while (curStart < stream.pos) { + // Webkit seems to refuse to render text nodes longer than 57444 + // characters, and returns inaccurate measurements in nodes + // starting around 5000 chars. + var pos = Math.min(stream.pos, curStart + 5000); + f(pos, curStyle); + curStart = pos; + } + } + + // Finds the line to start with when starting a parse. Tries to + // find a line with a stateAfter, so that it can start with a + // valid state. If that fails, it returns the line with the + // smallest indentation, which tends to need the least context to + // parse correctly. + function findStartLine(cm, n, precise) { + var minindent, minline, doc = cm.doc; + var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100); + for (var search = n; search > lim; --search) { + if (search <= doc.first) { return doc.first } + var line = getLine(doc, search - 1), after = line.stateAfter; + if (after && (!precise || search + (after instanceof SavedContext ? after.lookAhead : 0) <= doc.modeFrontier)) + { return search } + var indented = countColumn(line.text, null, cm.options.tabSize); + if (minline == null || minindent > indented) { + minline = search - 1; + minindent = indented; + } + } + return minline + } + + function retreatFrontier(doc, n) { + doc.modeFrontier = Math.min(doc.modeFrontier, n); + if (doc.highlightFrontier < n - 10) { return } + var start = doc.first; + for (var line = n - 1; line > start; line--) { + var saved = getLine(doc, line).stateAfter; + // change is on 3 + // state on line 1 looked ahead 2 -- so saw 3 + // test 1 + 2 < 3 should cover this + if (saved && (!(saved instanceof SavedContext) || line + saved.lookAhead < n)) { + start = line + 1; + break + } + } + doc.highlightFrontier = Math.min(doc.highlightFrontier, start); + } + + // Optimize some code when these features are not used. + var sawReadOnlySpans = false, sawCollapsedSpans = false; + + function seeReadOnlySpans() { + sawReadOnlySpans = true; + } + + function seeCollapsedSpans() { + sawCollapsedSpans = true; + } + + // TEXTMARKER SPANS + + function MarkedSpan(marker, from, to) { + this.marker = marker; + this.from = from; this.to = to; + } + + // Search an array of spans for a span matching the given marker. + function getMarkedSpanFor(spans, marker) { + if (spans) { for (var i = 0; i < spans.length; ++i) { + var span = spans[i]; + if (span.marker == marker) { return span } + } } + } + // Remove a span from an array, returning undefined if no spans are + // left (we don't store arrays for lines without spans). + function removeMarkedSpan(spans, span) { + var r; + for (var i = 0; i < spans.length; ++i) + { if (spans[i] != span) { (r || (r = [])).push(spans[i]); } } + return r + } + // Add a span to a line. + function addMarkedSpan(line, span) { + line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span]; + span.marker.attachLine(line); + } + + // Used for the algorithm that adjusts markers for a change in the + // document. These functions cut an array of spans at a given + // character position, returning an array of remaining chunks (or + // undefined if nothing remains). + function markedSpansBefore(old, startCh, isInsert) { + var nw; + if (old) { for (var i = 0; i < old.length; ++i) { + var span = old[i], marker = span.marker; + var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh); + if (startsBefore || span.from == startCh && marker.type == "bookmark" && (!isInsert || !span.marker.insertLeft)) { + var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh) + ;(nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to)); + } + } } + return nw + } + function markedSpansAfter(old, endCh, isInsert) { + var nw; + if (old) { for (var i = 0; i < old.length; ++i) { + var span = old[i], marker = span.marker; + var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh); + if (endsAfter || span.from == endCh && marker.type == "bookmark" && (!isInsert || span.marker.insertLeft)) { + var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh) + ;(nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh, + span.to == null ? null : span.to - endCh)); + } + } } + return nw + } + + // Given a change object, compute the new set of marker spans that + // cover the line in which the change took place. Removes spans + // entirely within the change, reconnects spans belonging to the + // same marker that appear on both sides of the change, and cuts off + // spans partially within the change. Returns an array of span + // arrays with one element for each line in (after) the change. + function stretchSpansOverChange(doc, change) { + if (change.full) { return null } + var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans; + var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans; + if (!oldFirst && !oldLast) { return null } + + var startCh = change.from.ch, endCh = change.to.ch, isInsert = cmp(change.from, change.to) == 0; + // Get the spans that 'stick out' on both sides + var first = markedSpansBefore(oldFirst, startCh, isInsert); + var last = markedSpansAfter(oldLast, endCh, isInsert); + + // Next, merge those two ends + var sameLine = change.text.length == 1, offset = lst(change.text).length + (sameLine ? startCh : 0); + if (first) { + // Fix up .to properties of first + for (var i = 0; i < first.length; ++i) { + var span = first[i]; + if (span.to == null) { + var found = getMarkedSpanFor(last, span.marker); + if (!found) { span.to = startCh; } + else if (sameLine) { span.to = found.to == null ? null : found.to + offset; } + } + } + } + if (last) { + // Fix up .from in last (or move them into first in case of sameLine) + for (var i$1 = 0; i$1 < last.length; ++i$1) { + var span$1 = last[i$1]; + if (span$1.to != null) { span$1.to += offset; } + if (span$1.from == null) { + var found$1 = getMarkedSpanFor(first, span$1.marker); + if (!found$1) { + span$1.from = offset; + if (sameLine) { (first || (first = [])).push(span$1); } + } + } else { + span$1.from += offset; + if (sameLine) { (first || (first = [])).push(span$1); } + } + } + } + // Make sure we didn't create any zero-length spans + if (first) { first = clearEmptySpans(first); } + if (last && last != first) { last = clearEmptySpans(last); } + + var newMarkers = [first]; + if (!sameLine) { + // Fill gap with whole-line-spans + var gap = change.text.length - 2, gapMarkers; + if (gap > 0 && first) + { for (var i$2 = 0; i$2 < first.length; ++i$2) + { if (first[i$2].to == null) + { (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i$2].marker, null, null)); } } } + for (var i$3 = 0; i$3 < gap; ++i$3) + { newMarkers.push(gapMarkers); } + newMarkers.push(last); + } + return newMarkers + } + + // Remove spans that are empty and don't have a clearWhenEmpty + // option of false. + function clearEmptySpans(spans) { + for (var i = 0; i < spans.length; ++i) { + var span = spans[i]; + if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false) + { spans.splice(i--, 1); } + } + if (!spans.length) { return null } + return spans + } + + // Used to 'clip' out readOnly ranges when making a change. + function removeReadOnlyRanges(doc, from, to) { + var markers = null; + doc.iter(from.line, to.line + 1, function (line) { + if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) { + var mark = line.markedSpans[i].marker; + if (mark.readOnly && (!markers || indexOf(markers, mark) == -1)) + { (markers || (markers = [])).push(mark); } + } } + }); + if (!markers) { return null } + var parts = [{from: from, to: to}]; + for (var i = 0; i < markers.length; ++i) { + var mk = markers[i], m = mk.find(0); + for (var j = 0; j < parts.length; ++j) { + var p = parts[j]; + if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) { continue } + var newParts = [j, 1], dfrom = cmp(p.from, m.from), dto = cmp(p.to, m.to); + if (dfrom < 0 || !mk.inclusiveLeft && !dfrom) + { newParts.push({from: p.from, to: m.from}); } + if (dto > 0 || !mk.inclusiveRight && !dto) + { newParts.push({from: m.to, to: p.to}); } + parts.splice.apply(parts, newParts); + j += newParts.length - 3; + } + } + return parts + } + + // Connect or disconnect spans from a line. + function detachMarkedSpans(line) { + var spans = line.markedSpans; + if (!spans) { return } + for (var i = 0; i < spans.length; ++i) + { spans[i].marker.detachLine(line); } + line.markedSpans = null; + } + function attachMarkedSpans(line, spans) { + if (!spans) { return } + for (var i = 0; i < spans.length; ++i) + { spans[i].marker.attachLine(line); } + line.markedSpans = spans; + } + + // Helpers used when computing which overlapping collapsed span + // counts as the larger one. + function extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0 } + function extraRight(marker) { return marker.inclusiveRight ? 1 : 0 } + + // Returns a number indicating which of two overlapping collapsed + // spans is larger (and thus includes the other). Falls back to + // comparing ids when the spans cover exactly the same range. + function compareCollapsedMarkers(a, b) { + var lenDiff = a.lines.length - b.lines.length; + if (lenDiff != 0) { return lenDiff } + var aPos = a.find(), bPos = b.find(); + var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b); + if (fromCmp) { return -fromCmp } + var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b); + if (toCmp) { return toCmp } + return b.id - a.id + } + + // Find out whether a line ends or starts in a collapsed span. If + // so, return the marker for that span. + function collapsedSpanAtSide(line, start) { + var sps = sawCollapsedSpans && line.markedSpans, found; + if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) { + sp = sps[i]; + if (sp.marker.collapsed && (start ? sp.from : sp.to) == null && + (!found || compareCollapsedMarkers(found, sp.marker) < 0)) + { found = sp.marker; } + } } + return found + } + function collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, true) } + function collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, false) } + + function collapsedSpanAround(line, ch) { + var sps = sawCollapsedSpans && line.markedSpans, found; + if (sps) { for (var i = 0; i < sps.length; ++i) { + var sp = sps[i]; + if (sp.marker.collapsed && (sp.from == null || sp.from < ch) && (sp.to == null || sp.to > ch) && + (!found || compareCollapsedMarkers(found, sp.marker) < 0)) { found = sp.marker; } + } } + return found + } + + // Test whether there exists a collapsed span that partially + // overlaps (covers the start or end, but not both) of a new span. + // Such overlap is not allowed. + function conflictingCollapsedRange(doc, lineNo, from, to, marker) { + var line = getLine(doc, lineNo); + var sps = sawCollapsedSpans && line.markedSpans; + if (sps) { for (var i = 0; i < sps.length; ++i) { + var sp = sps[i]; + if (!sp.marker.collapsed) { continue } + var found = sp.marker.find(0); + var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker); + var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker); + if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) { continue } + if (fromCmp <= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.to, from) >= 0 : cmp(found.to, from) > 0) || + fromCmp >= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.from, to) <= 0 : cmp(found.from, to) < 0)) + { return true } + } } + } + + // A visual line is a line as drawn on the screen. Folding, for + // example, can cause multiple logical lines to appear on the same + // visual line. This finds the start of the visual line that the + // given line is part of (usually that is the line itself). + function visualLine(line) { + var merged; + while (merged = collapsedSpanAtStart(line)) + { line = merged.find(-1, true).line; } + return line + } + + function visualLineEnd(line) { + var merged; + while (merged = collapsedSpanAtEnd(line)) + { line = merged.find(1, true).line; } + return line + } + + // Returns an array of logical lines that continue the visual line + // started by the argument, or undefined if there are no such lines. + function visualLineContinued(line) { + var merged, lines; + while (merged = collapsedSpanAtEnd(line)) { + line = merged.find(1, true).line + ;(lines || (lines = [])).push(line); + } + return lines + } + + // Get the line number of the start of the visual line that the + // given line number is part of. + function visualLineNo(doc, lineN) { + var line = getLine(doc, lineN), vis = visualLine(line); + if (line == vis) { return lineN } + return lineNo(vis) + } + + // Get the line number of the start of the next visual line after + // the given line. + function visualLineEndNo(doc, lineN) { + if (lineN > doc.lastLine()) { return lineN } + var line = getLine(doc, lineN), merged; + if (!lineIsHidden(doc, line)) { return lineN } + while (merged = collapsedSpanAtEnd(line)) + { line = merged.find(1, true).line; } + return lineNo(line) + 1 + } + + // Compute whether a line is hidden. Lines count as hidden when they + // are part of a visual line that starts with another line, or when + // they are entirely covered by collapsed, non-widget span. + function lineIsHidden(doc, line) { + var sps = sawCollapsedSpans && line.markedSpans; + if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) { + sp = sps[i]; + if (!sp.marker.collapsed) { continue } + if (sp.from == null) { return true } + if (sp.marker.widgetNode) { continue } + if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp)) + { return true } + } } + } + function lineIsHiddenInner(doc, line, span) { + if (span.to == null) { + var end = span.marker.find(1, true); + return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker)) + } + if (span.marker.inclusiveRight && span.to == line.text.length) + { return true } + for (var sp = (void 0), i = 0; i < line.markedSpans.length; ++i) { + sp = line.markedSpans[i]; + if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to && + (sp.to == null || sp.to != span.from) && + (sp.marker.inclusiveLeft || span.marker.inclusiveRight) && + lineIsHiddenInner(doc, line, sp)) { return true } + } + } + + // Find the height above the given line. + function heightAtLine(lineObj) { + lineObj = visualLine(lineObj); + + var h = 0, chunk = lineObj.parent; + for (var i = 0; i < chunk.lines.length; ++i) { + var line = chunk.lines[i]; + if (line == lineObj) { break } + else { h += line.height; } + } + for (var p = chunk.parent; p; chunk = p, p = chunk.parent) { + for (var i$1 = 0; i$1 < p.children.length; ++i$1) { + var cur = p.children[i$1]; + if (cur == chunk) { break } + else { h += cur.height; } + } + } + return h + } + + // Compute the character length of a line, taking into account + // collapsed ranges (see markText) that might hide parts, and join + // other lines onto it. + function lineLength(line) { + if (line.height == 0) { return 0 } + var len = line.text.length, merged, cur = line; + while (merged = collapsedSpanAtStart(cur)) { + var found = merged.find(0, true); + cur = found.from.line; + len += found.from.ch - found.to.ch; + } + cur = line; + while (merged = collapsedSpanAtEnd(cur)) { + var found$1 = merged.find(0, true); + len -= cur.text.length - found$1.from.ch; + cur = found$1.to.line; + len += cur.text.length - found$1.to.ch; + } + return len + } + + // Find the longest line in the document. + function findMaxLine(cm) { + var d = cm.display, doc = cm.doc; + d.maxLine = getLine(doc, doc.first); + d.maxLineLength = lineLength(d.maxLine); + d.maxLineChanged = true; + doc.iter(function (line) { + var len = lineLength(line); + if (len > d.maxLineLength) { + d.maxLineLength = len; + d.maxLine = line; + } + }); + } + + // LINE DATA STRUCTURE + + // Line objects. These hold state related to a line, including + // highlighting info (the styles array). + var Line = function(text, markedSpans, estimateHeight) { + this.text = text; + attachMarkedSpans(this, markedSpans); + this.height = estimateHeight ? estimateHeight(this) : 1; + }; + + Line.prototype.lineNo = function () { return lineNo(this) }; + eventMixin(Line); + + // Change the content (text, markers) of a line. Automatically + // invalidates cached information and tries to re-estimate the + // line's height. + function updateLine(line, text, markedSpans, estimateHeight) { + line.text = text; + if (line.stateAfter) { line.stateAfter = null; } + if (line.styles) { line.styles = null; } + if (line.order != null) { line.order = null; } + detachMarkedSpans(line); + attachMarkedSpans(line, markedSpans); + var estHeight = estimateHeight ? estimateHeight(line) : 1; + if (estHeight != line.height) { updateLineHeight(line, estHeight); } + } + + // Detach a line from the document tree and its markers. + function cleanUpLine(line) { + line.parent = null; + detachMarkedSpans(line); + } + + // Convert a style as returned by a mode (either null, or a string + // containing one or more styles) to a CSS style. This is cached, + // and also looks for line-wide styles. + var styleToClassCache = {}, styleToClassCacheWithMode = {}; + function interpretTokenStyle(style, options) { + if (!style || /^\s*$/.test(style)) { return null } + var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache; + return cache[style] || + (cache[style] = style.replace(/\S+/g, "cm-$&")) + } + + // Render the DOM representation of the text of a line. Also builds + // up a 'line map', which points at the DOM nodes that represent + // specific stretches of text, and is used by the measuring code. + // The returned object contains the DOM node, this map, and + // information about line-wide styles that were set by the mode. + function buildLineContent(cm, lineView) { + // The padding-right forces the element to have a 'border', which + // is needed on Webkit to be able to get line-level bounding + // rectangles for it (in measureChar). + var content = eltP("span", null, null, webkit ? "padding-right: .1px" : null); + var builder = {pre: eltP("pre", [content], "CodeMirror-line"), content: content, + col: 0, pos: 0, cm: cm, + trailingSpace: false, + splitSpaces: cm.getOption("lineWrapping")}; + lineView.measure = {}; + + // Iterate over the logical lines that make up this visual line. + for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) { + var line = i ? lineView.rest[i - 1] : lineView.line, order = (void 0); + builder.pos = 0; + builder.addToken = buildToken; + // Optionally wire in some hacks into the token-rendering + // algorithm, to deal with browser quirks. + if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line, cm.doc.direction))) + { builder.addToken = buildTokenBadBidi(builder.addToken, order); } + builder.map = []; + var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line); + insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate)); + if (line.styleClasses) { + if (line.styleClasses.bgClass) + { builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || ""); } + if (line.styleClasses.textClass) + { builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || ""); } + } + + // Ensure at least a single node is present, for measuring. + if (builder.map.length == 0) + { builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure))); } + + // Store the map and a cache object for the current logical line + if (i == 0) { + lineView.measure.map = builder.map; + lineView.measure.cache = {}; + } else { + (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map) + ;(lineView.measure.caches || (lineView.measure.caches = [])).push({}); + } + } + + // See issue #2901 + if (webkit) { + var last = builder.content.lastChild; + if (/\bcm-tab\b/.test(last.className) || (last.querySelector && last.querySelector(".cm-tab"))) + { builder.content.className = "cm-tab-wrap-hack"; } + } + + signal(cm, "renderLine", cm, lineView.line, builder.pre); + if (builder.pre.className) + { builder.textClass = joinClasses(builder.pre.className, builder.textClass || ""); } + + return builder + } + + function defaultSpecialCharPlaceholder(ch) { + var token = elt("span", "\u2022", "cm-invalidchar"); + token.title = "\\u" + ch.charCodeAt(0).toString(16); + token.setAttribute("aria-label", token.title); + return token + } + + // Build up the DOM representation for a single token, and add it to + // the line map. Takes care to render special characters separately. + function buildToken(builder, text, style, startStyle, endStyle, css, attributes) { + if (!text) { return } + var displayText = builder.splitSpaces ? splitSpaces(text, builder.trailingSpace) : text; + var special = builder.cm.state.specialChars, mustWrap = false; + var content; + if (!special.test(text)) { + builder.col += text.length; + content = document.createTextNode(displayText); + builder.map.push(builder.pos, builder.pos + text.length, content); + if (ie && ie_version < 9) { mustWrap = true; } + builder.pos += text.length; + } else { + content = document.createDocumentFragment(); + var pos = 0; + while (true) { + special.lastIndex = pos; + var m = special.exec(text); + var skipped = m ? m.index - pos : text.length - pos; + if (skipped) { + var txt = document.createTextNode(displayText.slice(pos, pos + skipped)); + if (ie && ie_version < 9) { content.appendChild(elt("span", [txt])); } + else { content.appendChild(txt); } + builder.map.push(builder.pos, builder.pos + skipped, txt); + builder.col += skipped; + builder.pos += skipped; + } + if (!m) { break } + pos += skipped + 1; + var txt$1 = (void 0); + if (m[0] == "\t") { + var tabSize = builder.cm.options.tabSize, tabWidth = tabSize - builder.col % tabSize; + txt$1 = content.appendChild(elt("span", spaceStr(tabWidth), "cm-tab")); + txt$1.setAttribute("role", "presentation"); + txt$1.setAttribute("cm-text", "\t"); + builder.col += tabWidth; + } else if (m[0] == "\r" || m[0] == "\n") { + txt$1 = content.appendChild(elt("span", m[0] == "\r" ? "\u240d" : "\u2424", "cm-invalidchar")); + txt$1.setAttribute("cm-text", m[0]); + builder.col += 1; + } else { + txt$1 = builder.cm.options.specialCharPlaceholder(m[0]); + txt$1.setAttribute("cm-text", m[0]); + if (ie && ie_version < 9) { content.appendChild(elt("span", [txt$1])); } + else { content.appendChild(txt$1); } + builder.col += 1; + } + builder.map.push(builder.pos, builder.pos + 1, txt$1); + builder.pos++; + } + } + builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32; + if (style || startStyle || endStyle || mustWrap || css || attributes) { + var fullStyle = style || ""; + if (startStyle) { fullStyle += startStyle; } + if (endStyle) { fullStyle += endStyle; } + var token = elt("span", [content], fullStyle, css); + if (attributes) { + for (var attr in attributes) { if (attributes.hasOwnProperty(attr) && attr != "style" && attr != "class") + { token.setAttribute(attr, attributes[attr]); } } + } + return builder.content.appendChild(token) + } + builder.content.appendChild(content); + } + + // Change some spaces to NBSP to prevent the browser from collapsing + // trailing spaces at the end of a line when rendering text (issue #1362). + function splitSpaces(text, trailingBefore) { + if (text.length > 1 && !/ /.test(text)) { return text } + var spaceBefore = trailingBefore, result = ""; + for (var i = 0; i < text.length; i++) { + var ch = text.charAt(i); + if (ch == " " && spaceBefore && (i == text.length - 1 || text.charCodeAt(i + 1) == 32)) + { ch = "\u00a0"; } + result += ch; + spaceBefore = ch == " "; + } + return result + } + + // Work around nonsense dimensions being reported for stretches of + // right-to-left text. + function buildTokenBadBidi(inner, order) { + return function (builder, text, style, startStyle, endStyle, css, attributes) { + style = style ? style + " cm-force-border" : "cm-force-border"; + var start = builder.pos, end = start + text.length; + for (;;) { + // Find the part that overlaps with the start of this text + var part = (void 0); + for (var i = 0; i < order.length; i++) { + part = order[i]; + if (part.to > start && part.from <= start) { break } + } + if (part.to >= end) { return inner(builder, text, style, startStyle, endStyle, css, attributes) } + inner(builder, text.slice(0, part.to - start), style, startStyle, null, css, attributes); + startStyle = null; + text = text.slice(part.to - start); + start = part.to; + } + } + } + + function buildCollapsedSpan(builder, size, marker, ignoreWidget) { + var widget = !ignoreWidget && marker.widgetNode; + if (widget) { builder.map.push(builder.pos, builder.pos + size, widget); } + if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) { + if (!widget) + { widget = builder.content.appendChild(document.createElement("span")); } + widget.setAttribute("cm-marker", marker.id); + } + if (widget) { + builder.cm.display.input.setUneditable(widget); + builder.content.appendChild(widget); + } + builder.pos += size; + builder.trailingSpace = false; + } + + // Outputs a number of spans to make up a line, taking highlighting + // and marked text into account. + function insertLineContent(line, builder, styles) { + var spans = line.markedSpans, allText = line.text, at = 0; + if (!spans) { + for (var i$1 = 1; i$1 < styles.length; i$1+=2) + { builder.addToken(builder, allText.slice(at, at = styles[i$1]), interpretTokenStyle(styles[i$1+1], builder.cm.options)); } + return + } + + var len = allText.length, pos = 0, i = 1, text = "", style, css; + var nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, collapsed, attributes; + for (;;) { + if (nextChange == pos) { // Update current marker set + spanStyle = spanEndStyle = spanStartStyle = css = ""; + attributes = null; + collapsed = null; nextChange = Infinity; + var foundBookmarks = [], endStyles = (void 0); + for (var j = 0; j < spans.length; ++j) { + var sp = spans[j], m = sp.marker; + if (m.type == "bookmark" && sp.from == pos && m.widgetNode) { + foundBookmarks.push(m); + } else if (sp.from <= pos && (sp.to == null || sp.to > pos || m.collapsed && sp.to == pos && sp.from == pos)) { + if (sp.to != null && sp.to != pos && nextChange > sp.to) { + nextChange = sp.to; + spanEndStyle = ""; + } + if (m.className) { spanStyle += " " + m.className; } + if (m.css) { css = (css ? css + ";" : "") + m.css; } + if (m.startStyle && sp.from == pos) { spanStartStyle += " " + m.startStyle; } + if (m.endStyle && sp.to == nextChange) { (endStyles || (endStyles = [])).push(m.endStyle, sp.to); } + // support for the old title property + // https://github.com/codemirror/CodeMirror/pull/5673 + if (m.title) { (attributes || (attributes = {})).title = m.title; } + if (m.attributes) { + for (var attr in m.attributes) + { (attributes || (attributes = {}))[attr] = m.attributes[attr]; } + } + if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0)) + { collapsed = sp; } + } else if (sp.from > pos && nextChange > sp.from) { + nextChange = sp.from; + } + } + if (endStyles) { for (var j$1 = 0; j$1 < endStyles.length; j$1 += 2) + { if (endStyles[j$1 + 1] == nextChange) { spanEndStyle += " " + endStyles[j$1]; } } } + + if (!collapsed || collapsed.from == pos) { for (var j$2 = 0; j$2 < foundBookmarks.length; ++j$2) + { buildCollapsedSpan(builder, 0, foundBookmarks[j$2]); } } + if (collapsed && (collapsed.from || 0) == pos) { + buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos, + collapsed.marker, collapsed.from == null); + if (collapsed.to == null) { return } + if (collapsed.to == pos) { collapsed = false; } + } + } + if (pos >= len) { break } + + var upto = Math.min(len, nextChange); + while (true) { + if (text) { + var end = pos + text.length; + if (!collapsed) { + var tokenText = end > upto ? text.slice(0, upto - pos) : text; + builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle, + spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : "", css, attributes); + } + if (end >= upto) {text = text.slice(upto - pos); pos = upto; break} + pos = end; + spanStartStyle = ""; + } + text = allText.slice(at, at = styles[i++]); + style = interpretTokenStyle(styles[i++], builder.cm.options); + } + } + } + + + // These objects are used to represent the visible (currently drawn) + // part of the document. A LineView may correspond to multiple + // logical lines, if those are connected by collapsed ranges. + function LineView(doc, line, lineN) { + // The starting line + this.line = line; + // Continuing lines, if any + this.rest = visualLineContinued(line); + // Number of logical lines in this visual line + this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1; + this.node = this.text = null; + this.hidden = lineIsHidden(doc, line); + } + + // Create a range of LineView objects for the given lines. + function buildViewArray(cm, from, to) { + var array = [], nextPos; + for (var pos = from; pos < to; pos = nextPos) { + var view = new LineView(cm.doc, getLine(cm.doc, pos), pos); + nextPos = pos + view.size; + array.push(view); + } + return array + } + + var operationGroup = null; + + function pushOperation(op) { + if (operationGroup) { + operationGroup.ops.push(op); + } else { + op.ownsGroup = operationGroup = { + ops: [op], + delayedCallbacks: [] + }; + } + } + + function fireCallbacksForOps(group) { + // Calls delayed callbacks and cursorActivity handlers until no + // new ones appear + var callbacks = group.delayedCallbacks, i = 0; + do { + for (; i < callbacks.length; i++) + { callbacks[i].call(null); } + for (var j = 0; j < group.ops.length; j++) { + var op = group.ops[j]; + if (op.cursorActivityHandlers) + { while (op.cursorActivityCalled < op.cursorActivityHandlers.length) + { op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm); } } + } + } while (i < callbacks.length) + } + + function finishOperation(op, endCb) { + var group = op.ownsGroup; + if (!group) { return } + + try { fireCallbacksForOps(group); } + finally { + operationGroup = null; + endCb(group); + } + } + + var orphanDelayedCallbacks = null; + + // Often, we want to signal events at a point where we are in the + // middle of some work, but don't want the handler to start calling + // other methods on the editor, which might be in an inconsistent + // state or simply not expect any other events to happen. + // signalLater looks whether there are any handlers, and schedules + // them to be executed when the last operation ends, or, if no + // operation is active, when a timeout fires. + function signalLater(emitter, type /*, values...*/) { + var arr = getHandlers(emitter, type); + if (!arr.length) { return } + var args = Array.prototype.slice.call(arguments, 2), list; + if (operationGroup) { + list = operationGroup.delayedCallbacks; + } else if (orphanDelayedCallbacks) { + list = orphanDelayedCallbacks; + } else { + list = orphanDelayedCallbacks = []; + setTimeout(fireOrphanDelayed, 0); + } + var loop = function ( i ) { + list.push(function () { return arr[i].apply(null, args); }); + }; + + for (var i = 0; i < arr.length; ++i) + loop( i ); + } + + function fireOrphanDelayed() { + var delayed = orphanDelayedCallbacks; + orphanDelayedCallbacks = null; + for (var i = 0; i < delayed.length; ++i) { delayed[i](); } + } + + // When an aspect of a line changes, a string is added to + // lineView.changes. This updates the relevant part of the line's + // DOM structure. + function updateLineForChanges(cm, lineView, lineN, dims) { + for (var j = 0; j < lineView.changes.length; j++) { + var type = lineView.changes[j]; + if (type == "text") { updateLineText(cm, lineView); } + else if (type == "gutter") { updateLineGutter(cm, lineView, lineN, dims); } + else if (type == "class") { updateLineClasses(cm, lineView); } + else if (type == "widget") { updateLineWidgets(cm, lineView, dims); } + } + lineView.changes = null; + } + + // Lines with gutter elements, widgets or a background class need to + // be wrapped, and have the extra elements added to the wrapper div + function ensureLineWrapped(lineView) { + if (lineView.node == lineView.text) { + lineView.node = elt("div", null, null, "position: relative"); + if (lineView.text.parentNode) + { lineView.text.parentNode.replaceChild(lineView.node, lineView.text); } + lineView.node.appendChild(lineView.text); + if (ie && ie_version < 8) { lineView.node.style.zIndex = 2; } + } + return lineView.node + } + + function updateLineBackground(cm, lineView) { + var cls = lineView.bgClass ? lineView.bgClass + " " + (lineView.line.bgClass || "") : lineView.line.bgClass; + if (cls) { cls += " CodeMirror-linebackground"; } + if (lineView.background) { + if (cls) { lineView.background.className = cls; } + else { lineView.background.parentNode.removeChild(lineView.background); lineView.background = null; } + } else if (cls) { + var wrap = ensureLineWrapped(lineView); + lineView.background = wrap.insertBefore(elt("div", null, cls), wrap.firstChild); + cm.display.input.setUneditable(lineView.background); + } + } + + // Wrapper around buildLineContent which will reuse the structure + // in display.externalMeasured when possible. + function getLineContent(cm, lineView) { + var ext = cm.display.externalMeasured; + if (ext && ext.line == lineView.line) { + cm.display.externalMeasured = null; + lineView.measure = ext.measure; + return ext.built + } + return buildLineContent(cm, lineView) + } + + // Redraw the line's text. Interacts with the background and text + // classes because the mode may output tokens that influence these + // classes. + function updateLineText(cm, lineView) { + var cls = lineView.text.className; + var built = getLineContent(cm, lineView); + if (lineView.text == lineView.node) { lineView.node = built.pre; } + lineView.text.parentNode.replaceChild(built.pre, lineView.text); + lineView.text = built.pre; + if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) { + lineView.bgClass = built.bgClass; + lineView.textClass = built.textClass; + updateLineClasses(cm, lineView); + } else if (cls) { + lineView.text.className = cls; + } + } + + function updateLineClasses(cm, lineView) { + updateLineBackground(cm, lineView); + if (lineView.line.wrapClass) + { ensureLineWrapped(lineView).className = lineView.line.wrapClass; } + else if (lineView.node != lineView.text) + { lineView.node.className = ""; } + var textClass = lineView.textClass ? lineView.textClass + " " + (lineView.line.textClass || "") : lineView.line.textClass; + lineView.text.className = textClass || ""; + } + + function updateLineGutter(cm, lineView, lineN, dims) { + if (lineView.gutter) { + lineView.node.removeChild(lineView.gutter); + lineView.gutter = null; + } + if (lineView.gutterBackground) { + lineView.node.removeChild(lineView.gutterBackground); + lineView.gutterBackground = null; + } + if (lineView.line.gutterClass) { + var wrap = ensureLineWrapped(lineView); + lineView.gutterBackground = elt("div", null, "CodeMirror-gutter-background " + lineView.line.gutterClass, + ("left: " + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + "px; width: " + (dims.gutterTotalWidth) + "px")); + cm.display.input.setUneditable(lineView.gutterBackground); + wrap.insertBefore(lineView.gutterBackground, lineView.text); + } + var markers = lineView.line.gutterMarkers; + if (cm.options.lineNumbers || markers) { + var wrap$1 = ensureLineWrapped(lineView); + var gutterWrap = lineView.gutter = elt("div", null, "CodeMirror-gutter-wrapper", ("left: " + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + "px")); + cm.display.input.setUneditable(gutterWrap); + wrap$1.insertBefore(gutterWrap, lineView.text); + if (lineView.line.gutterClass) + { gutterWrap.className += " " + lineView.line.gutterClass; } + if (cm.options.lineNumbers && (!markers || !markers["CodeMirror-linenumbers"])) + { lineView.lineNumber = gutterWrap.appendChild( + elt("div", lineNumberFor(cm.options, lineN), + "CodeMirror-linenumber CodeMirror-gutter-elt", + ("left: " + (dims.gutterLeft["CodeMirror-linenumbers"]) + "px; width: " + (cm.display.lineNumInnerWidth) + "px"))); } + if (markers) { for (var k = 0; k < cm.display.gutterSpecs.length; ++k) { + var id = cm.display.gutterSpecs[k].className, found = markers.hasOwnProperty(id) && markers[id]; + if (found) + { gutterWrap.appendChild(elt("div", [found], "CodeMirror-gutter-elt", + ("left: " + (dims.gutterLeft[id]) + "px; width: " + (dims.gutterWidth[id]) + "px"))); } + } } + } + } + + function updateLineWidgets(cm, lineView, dims) { + if (lineView.alignable) { lineView.alignable = null; } + var isWidget = classTest("CodeMirror-linewidget"); + for (var node = lineView.node.firstChild, next = (void 0); node; node = next) { + next = node.nextSibling; + if (isWidget.test(node.className)) { lineView.node.removeChild(node); } + } + insertLineWidgets(cm, lineView, dims); + } + + // Build a line's DOM representation from scratch + function buildLineElement(cm, lineView, lineN, dims) { + var built = getLineContent(cm, lineView); + lineView.text = lineView.node = built.pre; + if (built.bgClass) { lineView.bgClass = built.bgClass; } + if (built.textClass) { lineView.textClass = built.textClass; } + + updateLineClasses(cm, lineView); + updateLineGutter(cm, lineView, lineN, dims); + insertLineWidgets(cm, lineView, dims); + return lineView.node + } + + // A lineView may contain multiple logical lines (when merged by + // collapsed spans). The widgets for all of them need to be drawn. + function insertLineWidgets(cm, lineView, dims) { + insertLineWidgetsFor(cm, lineView.line, lineView, dims, true); + if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++) + { insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false); } } + } + + function insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) { + if (!line.widgets) { return } + var wrap = ensureLineWrapped(lineView); + for (var i = 0, ws = line.widgets; i < ws.length; ++i) { + var widget = ws[i], node = elt("div", [widget.node], "CodeMirror-linewidget" + (widget.className ? " " + widget.className : "")); + if (!widget.handleMouseEvents) { node.setAttribute("cm-ignore-events", "true"); } + positionLineWidget(widget, node, lineView, dims); + cm.display.input.setUneditable(node); + if (allowAbove && widget.above) + { wrap.insertBefore(node, lineView.gutter || lineView.text); } + else + { wrap.appendChild(node); } + signalLater(widget, "redraw"); + } + } + + function positionLineWidget(widget, node, lineView, dims) { + if (widget.noHScroll) { + (lineView.alignable || (lineView.alignable = [])).push(node); + var width = dims.wrapperWidth; + node.style.left = dims.fixedPos + "px"; + if (!widget.coverGutter) { + width -= dims.gutterTotalWidth; + node.style.paddingLeft = dims.gutterTotalWidth + "px"; + } + node.style.width = width + "px"; + } + if (widget.coverGutter) { + node.style.zIndex = 5; + node.style.position = "relative"; + if (!widget.noHScroll) { node.style.marginLeft = -dims.gutterTotalWidth + "px"; } + } + } + + function widgetHeight(widget) { + if (widget.height != null) { return widget.height } + var cm = widget.doc.cm; + if (!cm) { return 0 } + if (!contains(document.body, widget.node)) { + var parentStyle = "position: relative;"; + if (widget.coverGutter) + { parentStyle += "margin-left: -" + cm.display.gutters.offsetWidth + "px;"; } + if (widget.noHScroll) + { parentStyle += "width: " + cm.display.wrapper.clientWidth + "px;"; } + removeChildrenAndAdd(cm.display.measure, elt("div", [widget.node], null, parentStyle)); + } + return widget.height = widget.node.parentNode.offsetHeight + } + + // Return true when the given mouse event happened in a widget + function eventInWidget(display, e) { + for (var n = e_target(e); n != display.wrapper; n = n.parentNode) { + if (!n || (n.nodeType == 1 && n.getAttribute("cm-ignore-events") == "true") || + (n.parentNode == display.sizer && n != display.mover)) + { return true } + } + } + + // POSITION MEASUREMENT + + function paddingTop(display) {return display.lineSpace.offsetTop} + function paddingVert(display) {return display.mover.offsetHeight - display.lineSpace.offsetHeight} + function paddingH(display) { + if (display.cachedPaddingH) { return display.cachedPaddingH } + var e = removeChildrenAndAdd(display.measure, elt("pre", "x", "CodeMirror-line-like")); + var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle; + var data = {left: parseInt(style.paddingLeft), right: parseInt(style.paddingRight)}; + if (!isNaN(data.left) && !isNaN(data.right)) { display.cachedPaddingH = data; } + return data + } + + function scrollGap(cm) { return scrollerGap - cm.display.nativeBarWidth } + function displayWidth(cm) { + return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth + } + function displayHeight(cm) { + return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight + } + + // Ensure the lineView.wrapping.heights array is populated. This is + // an array of bottom offsets for the lines that make up a drawn + // line. When lineWrapping is on, there might be more than one + // height. + function ensureLineHeights(cm, lineView, rect) { + var wrapping = cm.options.lineWrapping; + var curWidth = wrapping && displayWidth(cm); + if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) { + var heights = lineView.measure.heights = []; + if (wrapping) { + lineView.measure.width = curWidth; + var rects = lineView.text.firstChild.getClientRects(); + for (var i = 0; i < rects.length - 1; i++) { + var cur = rects[i], next = rects[i + 1]; + if (Math.abs(cur.bottom - next.bottom) > 2) + { heights.push((cur.bottom + next.top) / 2 - rect.top); } + } + } + heights.push(rect.bottom - rect.top); + } + } + + // Find a line map (mapping character offsets to text nodes) and a + // measurement cache for the given line number. (A line view might + // contain multiple lines when collapsed ranges are present.) + function mapFromLineView(lineView, line, lineN) { + if (lineView.line == line) + { return {map: lineView.measure.map, cache: lineView.measure.cache} } + for (var i = 0; i < lineView.rest.length; i++) + { if (lineView.rest[i] == line) + { return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i]} } } + for (var i$1 = 0; i$1 < lineView.rest.length; i$1++) + { if (lineNo(lineView.rest[i$1]) > lineN) + { return {map: lineView.measure.maps[i$1], cache: lineView.measure.caches[i$1], before: true} } } + } + + // Render a line into the hidden node display.externalMeasured. Used + // when measurement is needed for a line that's not in the viewport. + function updateExternalMeasurement(cm, line) { + line = visualLine(line); + var lineN = lineNo(line); + var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN); + view.lineN = lineN; + var built = view.built = buildLineContent(cm, view); + view.text = built.pre; + removeChildrenAndAdd(cm.display.lineMeasure, built.pre); + return view + } + + // Get a {top, bottom, left, right} box (in line-local coordinates) + // for a given character. + function measureChar(cm, line, ch, bias) { + return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias) + } + + // Find a line view that corresponds to the given line number. + function findViewForLine(cm, lineN) { + if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo) + { return cm.display.view[findViewIndex(cm, lineN)] } + var ext = cm.display.externalMeasured; + if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size) + { return ext } + } + + // Measurement can be split in two steps, the set-up work that + // applies to the whole line, and the measurement of the actual + // character. Functions like coordsChar, that need to do a lot of + // measurements in a row, can thus ensure that the set-up work is + // only done once. + function prepareMeasureForLine(cm, line) { + var lineN = lineNo(line); + var view = findViewForLine(cm, lineN); + if (view && !view.text) { + view = null; + } else if (view && view.changes) { + updateLineForChanges(cm, view, lineN, getDimensions(cm)); + cm.curOp.forceUpdate = true; + } + if (!view) + { view = updateExternalMeasurement(cm, line); } + + var info = mapFromLineView(view, line, lineN); + return { + line: line, view: view, rect: null, + map: info.map, cache: info.cache, before: info.before, + hasHeights: false + } + } + + // Given a prepared measurement object, measures the position of an + // actual character (or fetches it from the cache). + function measureCharPrepared(cm, prepared, ch, bias, varHeight) { + if (prepared.before) { ch = -1; } + var key = ch + (bias || ""), found; + if (prepared.cache.hasOwnProperty(key)) { + found = prepared.cache[key]; + } else { + if (!prepared.rect) + { prepared.rect = prepared.view.text.getBoundingClientRect(); } + if (!prepared.hasHeights) { + ensureLineHeights(cm, prepared.view, prepared.rect); + prepared.hasHeights = true; + } + found = measureCharInner(cm, prepared, ch, bias); + if (!found.bogus) { prepared.cache[key] = found; } + } + return {left: found.left, right: found.right, + top: varHeight ? found.rtop : found.top, + bottom: varHeight ? found.rbottom : found.bottom} + } + + var nullRect = {left: 0, right: 0, top: 0, bottom: 0}; + + function nodeAndOffsetInLineMap(map, ch, bias) { + var node, start, end, collapse, mStart, mEnd; + // First, search the line map for the text node corresponding to, + // or closest to, the target character. + for (var i = 0; i < map.length; i += 3) { + mStart = map[i]; + mEnd = map[i + 1]; + if (ch < mStart) { + start = 0; end = 1; + collapse = "left"; + } else if (ch < mEnd) { + start = ch - mStart; + end = start + 1; + } else if (i == map.length - 3 || ch == mEnd && map[i + 3] > ch) { + end = mEnd - mStart; + start = end - 1; + if (ch >= mEnd) { collapse = "right"; } + } + if (start != null) { + node = map[i + 2]; + if (mStart == mEnd && bias == (node.insertLeft ? "left" : "right")) + { collapse = bias; } + if (bias == "left" && start == 0) + { while (i && map[i - 2] == map[i - 3] && map[i - 1].insertLeft) { + node = map[(i -= 3) + 2]; + collapse = "left"; + } } + if (bias == "right" && start == mEnd - mStart) + { while (i < map.length - 3 && map[i + 3] == map[i + 4] && !map[i + 5].insertLeft) { + node = map[(i += 3) + 2]; + collapse = "right"; + } } + break + } + } + return {node: node, start: start, end: end, collapse: collapse, coverStart: mStart, coverEnd: mEnd} + } + + function getUsefulRect(rects, bias) { + var rect = nullRect; + if (bias == "left") { for (var i = 0; i < rects.length; i++) { + if ((rect = rects[i]).left != rect.right) { break } + } } else { for (var i$1 = rects.length - 1; i$1 >= 0; i$1--) { + if ((rect = rects[i$1]).left != rect.right) { break } + } } + return rect + } + + function measureCharInner(cm, prepared, ch, bias) { + var place = nodeAndOffsetInLineMap(prepared.map, ch, bias); + var node = place.node, start = place.start, end = place.end, collapse = place.collapse; + + var rect; + if (node.nodeType == 3) { // If it is a text node, use a range to retrieve the coordinates. + for (var i$1 = 0; i$1 < 4; i$1++) { // Retry a maximum of 4 times when nonsense rectangles are returned + while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) { --start; } + while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) { ++end; } + if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart) + { rect = node.parentNode.getBoundingClientRect(); } + else + { rect = getUsefulRect(range(node, start, end).getClientRects(), bias); } + if (rect.left || rect.right || start == 0) { break } + end = start; + start = start - 1; + collapse = "right"; + } + if (ie && ie_version < 11) { rect = maybeUpdateRectForZooming(cm.display.measure, rect); } + } else { // If it is a widget, simply get the box for the whole widget. + if (start > 0) { collapse = bias = "right"; } + var rects; + if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1) + { rect = rects[bias == "right" ? rects.length - 1 : 0]; } + else + { rect = node.getBoundingClientRect(); } + } + if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) { + var rSpan = node.parentNode.getClientRects()[0]; + if (rSpan) + { rect = {left: rSpan.left, right: rSpan.left + charWidth(cm.display), top: rSpan.top, bottom: rSpan.bottom}; } + else + { rect = nullRect; } + } + + var rtop = rect.top - prepared.rect.top, rbot = rect.bottom - prepared.rect.top; + var mid = (rtop + rbot) / 2; + var heights = prepared.view.measure.heights; + var i = 0; + for (; i < heights.length - 1; i++) + { if (mid < heights[i]) { break } } + var top = i ? heights[i - 1] : 0, bot = heights[i]; + var result = {left: (collapse == "right" ? rect.right : rect.left) - prepared.rect.left, + right: (collapse == "left" ? rect.left : rect.right) - prepared.rect.left, + top: top, bottom: bot}; + if (!rect.left && !rect.right) { result.bogus = true; } + if (!cm.options.singleCursorHeightPerLine) { result.rtop = rtop; result.rbottom = rbot; } + + return result + } + + // Work around problem with bounding client rects on ranges being + // returned incorrectly when zoomed on IE10 and below. + function maybeUpdateRectForZooming(measure, rect) { + if (!window.screen || screen.logicalXDPI == null || + screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure)) + { return rect } + var scaleX = screen.logicalXDPI / screen.deviceXDPI; + var scaleY = screen.logicalYDPI / screen.deviceYDPI; + return {left: rect.left * scaleX, right: rect.right * scaleX, + top: rect.top * scaleY, bottom: rect.bottom * scaleY} + } + + function clearLineMeasurementCacheFor(lineView) { + if (lineView.measure) { + lineView.measure.cache = {}; + lineView.measure.heights = null; + if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++) + { lineView.measure.caches[i] = {}; } } + } + } + + function clearLineMeasurementCache(cm) { + cm.display.externalMeasure = null; + removeChildren(cm.display.lineMeasure); + for (var i = 0; i < cm.display.view.length; i++) + { clearLineMeasurementCacheFor(cm.display.view[i]); } + } + + function clearCaches(cm) { + clearLineMeasurementCache(cm); + cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null; + if (!cm.options.lineWrapping) { cm.display.maxLineChanged = true; } + cm.display.lineNumChars = null; + } + + function pageScrollX() { + // Work around https://bugs.chromium.org/p/chromium/issues/detail?id=489206 + // which causes page_Offset and bounding client rects to use + // different reference viewports and invalidate our calculations. + if (chrome && android) { return -(document.body.getBoundingClientRect().left - parseInt(getComputedStyle(document.body).marginLeft)) } + return window.pageXOffset || (document.documentElement || document.body).scrollLeft + } + function pageScrollY() { + if (chrome && android) { return -(document.body.getBoundingClientRect().top - parseInt(getComputedStyle(document.body).marginTop)) } + return window.pageYOffset || (document.documentElement || document.body).scrollTop + } + + function widgetTopHeight(lineObj) { + var height = 0; + if (lineObj.widgets) { for (var i = 0; i < lineObj.widgets.length; ++i) { if (lineObj.widgets[i].above) + { height += widgetHeight(lineObj.widgets[i]); } } } + return height + } + + // Converts a {top, bottom, left, right} box from line-local + // coordinates into another coordinate system. Context may be one of + // "line", "div" (display.lineDiv), "local"./null (editor), "window", + // or "page". + function intoCoordSystem(cm, lineObj, rect, context, includeWidgets) { + if (!includeWidgets) { + var height = widgetTopHeight(lineObj); + rect.top += height; rect.bottom += height; + } + if (context == "line") { return rect } + if (!context) { context = "local"; } + var yOff = heightAtLine(lineObj); + if (context == "local") { yOff += paddingTop(cm.display); } + else { yOff -= cm.display.viewOffset; } + if (context == "page" || context == "window") { + var lOff = cm.display.lineSpace.getBoundingClientRect(); + yOff += lOff.top + (context == "window" ? 0 : pageScrollY()); + var xOff = lOff.left + (context == "window" ? 0 : pageScrollX()); + rect.left += xOff; rect.right += xOff; + } + rect.top += yOff; rect.bottom += yOff; + return rect + } + + // Coverts a box from "div" coords to another coordinate system. + // Context may be "window", "page", "div", or "local"./null. + function fromCoordSystem(cm, coords, context) { + if (context == "div") { return coords } + var left = coords.left, top = coords.top; + // First move into "page" coordinate system + if (context == "page") { + left -= pageScrollX(); + top -= pageScrollY(); + } else if (context == "local" || !context) { + var localBox = cm.display.sizer.getBoundingClientRect(); + left += localBox.left; + top += localBox.top; + } + + var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect(); + return {left: left - lineSpaceBox.left, top: top - lineSpaceBox.top} + } + + function charCoords(cm, pos, context, lineObj, bias) { + if (!lineObj) { lineObj = getLine(cm.doc, pos.line); } + return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context) + } + + // Returns a box for a given cursor position, which may have an + // 'other' property containing the position of the secondary cursor + // on a bidi boundary. + // A cursor Pos(line, char, "before") is on the same visual line as `char - 1` + // and after `char - 1` in writing order of `char - 1` + // A cursor Pos(line, char, "after") is on the same visual line as `char` + // and before `char` in writing order of `char` + // Examples (upper-case letters are RTL, lower-case are LTR): + // Pos(0, 1, ...) + // before after + // ab a|b a|b + // aB a|B aB| + // Ab |Ab A|b + // AB B|A B|A + // Every position after the last character on a line is considered to stick + // to the last character on the line. + function cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) { + lineObj = lineObj || getLine(cm.doc, pos.line); + if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); } + function get(ch, right) { + var m = measureCharPrepared(cm, preparedMeasure, ch, right ? "right" : "left", varHeight); + if (right) { m.left = m.right; } else { m.right = m.left; } + return intoCoordSystem(cm, lineObj, m, context) + } + var order = getOrder(lineObj, cm.doc.direction), ch = pos.ch, sticky = pos.sticky; + if (ch >= lineObj.text.length) { + ch = lineObj.text.length; + sticky = "before"; + } else if (ch <= 0) { + ch = 0; + sticky = "after"; + } + if (!order) { return get(sticky == "before" ? ch - 1 : ch, sticky == "before") } + + function getBidi(ch, partPos, invert) { + var part = order[partPos], right = part.level == 1; + return get(invert ? ch - 1 : ch, right != invert) + } + var partPos = getBidiPartAt(order, ch, sticky); + var other = bidiOther; + var val = getBidi(ch, partPos, sticky == "before"); + if (other != null) { val.other = getBidi(ch, other, sticky != "before"); } + return val + } + + // Used to cheaply estimate the coordinates for a position. Used for + // intermediate scroll updates. + function estimateCoords(cm, pos) { + var left = 0; + pos = clipPos(cm.doc, pos); + if (!cm.options.lineWrapping) { left = charWidth(cm.display) * pos.ch; } + var lineObj = getLine(cm.doc, pos.line); + var top = heightAtLine(lineObj) + paddingTop(cm.display); + return {left: left, right: left, top: top, bottom: top + lineObj.height} + } + + // Positions returned by coordsChar contain some extra information. + // xRel is the relative x position of the input coordinates compared + // to the found position (so xRel > 0 means the coordinates are to + // the right of the character position, for example). When outside + // is true, that means the coordinates lie outside the line's + // vertical range. + function PosWithInfo(line, ch, sticky, outside, xRel) { + var pos = Pos(line, ch, sticky); + pos.xRel = xRel; + if (outside) { pos.outside = outside; } + return pos + } + + // Compute the character position closest to the given coordinates. + // Input must be lineSpace-local ("div" coordinate system). + function coordsChar(cm, x, y) { + var doc = cm.doc; + y += cm.display.viewOffset; + if (y < 0) { return PosWithInfo(doc.first, 0, null, -1, -1) } + var lineN = lineAtHeight(doc, y), last = doc.first + doc.size - 1; + if (lineN > last) + { return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, null, 1, 1) } + if (x < 0) { x = 0; } + + var lineObj = getLine(doc, lineN); + for (;;) { + var found = coordsCharInner(cm, lineObj, lineN, x, y); + var collapsed = collapsedSpanAround(lineObj, found.ch + (found.xRel > 0 || found.outside > 0 ? 1 : 0)); + if (!collapsed) { return found } + var rangeEnd = collapsed.find(1); + if (rangeEnd.line == lineN) { return rangeEnd } + lineObj = getLine(doc, lineN = rangeEnd.line); + } + } + + function wrappedLineExtent(cm, lineObj, preparedMeasure, y) { + y -= widgetTopHeight(lineObj); + var end = lineObj.text.length; + var begin = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch - 1).bottom <= y; }, end, 0); + end = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch).top > y; }, begin, end); + return {begin: begin, end: end} + } + + function wrappedLineExtentChar(cm, lineObj, preparedMeasure, target) { + if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); } + var targetTop = intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, target), "line").top; + return wrappedLineExtent(cm, lineObj, preparedMeasure, targetTop) + } + + // Returns true if the given side of a box is after the given + // coordinates, in top-to-bottom, left-to-right order. + function boxIsAfter(box, x, y, left) { + return box.bottom <= y ? false : box.top > y ? true : (left ? box.left : box.right) > x + } + + function coordsCharInner(cm, lineObj, lineNo, x, y) { + // Move y into line-local coordinate space + y -= heightAtLine(lineObj); + var preparedMeasure = prepareMeasureForLine(cm, lineObj); + // When directly calling `measureCharPrepared`, we have to adjust + // for the widgets at this line. + var widgetHeight = widgetTopHeight(lineObj); + var begin = 0, end = lineObj.text.length, ltr = true; + + var order = getOrder(lineObj, cm.doc.direction); + // If the line isn't plain left-to-right text, first figure out + // which bidi section the coordinates fall into. + if (order) { + var part = (cm.options.lineWrapping ? coordsBidiPartWrapped : coordsBidiPart) + (cm, lineObj, lineNo, preparedMeasure, order, x, y); + ltr = part.level != 1; + // The awkward -1 offsets are needed because findFirst (called + // on these below) will treat its first bound as inclusive, + // second as exclusive, but we want to actually address the + // characters in the part's range + begin = ltr ? part.from : part.to - 1; + end = ltr ? part.to : part.from - 1; + } + + // A binary search to find the first character whose bounding box + // starts after the coordinates. If we run across any whose box wrap + // the coordinates, store that. + var chAround = null, boxAround = null; + var ch = findFirst(function (ch) { + var box = measureCharPrepared(cm, preparedMeasure, ch); + box.top += widgetHeight; box.bottom += widgetHeight; + if (!boxIsAfter(box, x, y, false)) { return false } + if (box.top <= y && box.left <= x) { + chAround = ch; + boxAround = box; + } + return true + }, begin, end); + + var baseX, sticky, outside = false; + // If a box around the coordinates was found, use that + if (boxAround) { + // Distinguish coordinates nearer to the left or right side of the box + var atLeft = x - boxAround.left < boxAround.right - x, atStart = atLeft == ltr; + ch = chAround + (atStart ? 0 : 1); + sticky = atStart ? "after" : "before"; + baseX = atLeft ? boxAround.left : boxAround.right; + } else { + // (Adjust for extended bound, if necessary.) + if (!ltr && (ch == end || ch == begin)) { ch++; } + // To determine which side to associate with, get the box to the + // left of the character and compare it's vertical position to the + // coordinates + sticky = ch == 0 ? "after" : ch == lineObj.text.length ? "before" : + (measureCharPrepared(cm, preparedMeasure, ch - (ltr ? 1 : 0)).bottom + widgetHeight <= y) == ltr ? + "after" : "before"; + // Now get accurate coordinates for this place, in order to get a + // base X position + var coords = cursorCoords(cm, Pos(lineNo, ch, sticky), "line", lineObj, preparedMeasure); + baseX = coords.left; + outside = y < coords.top ? -1 : y >= coords.bottom ? 1 : 0; + } + + ch = skipExtendingChars(lineObj.text, ch, 1); + return PosWithInfo(lineNo, ch, sticky, outside, x - baseX) + } + + function coordsBidiPart(cm, lineObj, lineNo, preparedMeasure, order, x, y) { + // Bidi parts are sorted left-to-right, and in a non-line-wrapping + // situation, we can take this ordering to correspond to the visual + // ordering. This finds the first part whose end is after the given + // coordinates. + var index = findFirst(function (i) { + var part = order[i], ltr = part.level != 1; + return boxIsAfter(cursorCoords(cm, Pos(lineNo, ltr ? part.to : part.from, ltr ? "before" : "after"), + "line", lineObj, preparedMeasure), x, y, true) + }, 0, order.length - 1); + var part = order[index]; + // If this isn't the first part, the part's start is also after + // the coordinates, and the coordinates aren't on the same line as + // that start, move one part back. + if (index > 0) { + var ltr = part.level != 1; + var start = cursorCoords(cm, Pos(lineNo, ltr ? part.from : part.to, ltr ? "after" : "before"), + "line", lineObj, preparedMeasure); + if (boxIsAfter(start, x, y, true) && start.top > y) + { part = order[index - 1]; } + } + return part + } + + function coordsBidiPartWrapped(cm, lineObj, _lineNo, preparedMeasure, order, x, y) { + // In a wrapped line, rtl text on wrapping boundaries can do things + // that don't correspond to the ordering in our `order` array at + // all, so a binary search doesn't work, and we want to return a + // part that only spans one line so that the binary search in + // coordsCharInner is safe. As such, we first find the extent of the + // wrapped line, and then do a flat search in which we discard any + // spans that aren't on the line. + var ref = wrappedLineExtent(cm, lineObj, preparedMeasure, y); + var begin = ref.begin; + var end = ref.end; + if (/\s/.test(lineObj.text.charAt(end - 1))) { end--; } + var part = null, closestDist = null; + for (var i = 0; i < order.length; i++) { + var p = order[i]; + if (p.from >= end || p.to <= begin) { continue } + var ltr = p.level != 1; + var endX = measureCharPrepared(cm, preparedMeasure, ltr ? Math.min(end, p.to) - 1 : Math.max(begin, p.from)).right; + // Weigh against spans ending before this, so that they are only + // picked if nothing ends after + var dist = endX < x ? x - endX + 1e9 : endX - x; + if (!part || closestDist > dist) { + part = p; + closestDist = dist; + } + } + if (!part) { part = order[order.length - 1]; } + // Clip the part to the wrapped line. + if (part.from < begin) { part = {from: begin, to: part.to, level: part.level}; } + if (part.to > end) { part = {from: part.from, to: end, level: part.level}; } + return part + } + + var measureText; + // Compute the default text height. + function textHeight(display) { + if (display.cachedTextHeight != null) { return display.cachedTextHeight } + if (measureText == null) { + measureText = elt("pre", null, "CodeMirror-line-like"); + // Measure a bunch of lines, for browsers that compute + // fractional heights. + for (var i = 0; i < 49; ++i) { + measureText.appendChild(document.createTextNode("x")); + measureText.appendChild(elt("br")); + } + measureText.appendChild(document.createTextNode("x")); + } + removeChildrenAndAdd(display.measure, measureText); + var height = measureText.offsetHeight / 50; + if (height > 3) { display.cachedTextHeight = height; } + removeChildren(display.measure); + return height || 1 + } + + // Compute the default character width. + function charWidth(display) { + if (display.cachedCharWidth != null) { return display.cachedCharWidth } + var anchor = elt("span", "xxxxxxxxxx"); + var pre = elt("pre", [anchor], "CodeMirror-line-like"); + removeChildrenAndAdd(display.measure, pre); + var rect = anchor.getBoundingClientRect(), width = (rect.right - rect.left) / 10; + if (width > 2) { display.cachedCharWidth = width; } + return width || 10 + } + + // Do a bulk-read of the DOM positions and sizes needed to draw the + // view, so that we don't interleave reading and writing to the DOM. + function getDimensions(cm) { + var d = cm.display, left = {}, width = {}; + var gutterLeft = d.gutters.clientLeft; + for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) { + var id = cm.display.gutterSpecs[i].className; + left[id] = n.offsetLeft + n.clientLeft + gutterLeft; + width[id] = n.clientWidth; + } + return {fixedPos: compensateForHScroll(d), + gutterTotalWidth: d.gutters.offsetWidth, + gutterLeft: left, + gutterWidth: width, + wrapperWidth: d.wrapper.clientWidth} + } + + // Computes display.scroller.scrollLeft + display.gutters.offsetWidth, + // but using getBoundingClientRect to get a sub-pixel-accurate + // result. + function compensateForHScroll(display) { + return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left + } + + // Returns a function that estimates the height of a line, to use as + // first approximation until the line becomes visible (and is thus + // properly measurable). + function estimateHeight(cm) { + var th = textHeight(cm.display), wrapping = cm.options.lineWrapping; + var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3); + return function (line) { + if (lineIsHidden(cm.doc, line)) { return 0 } + + var widgetsHeight = 0; + if (line.widgets) { for (var i = 0; i < line.widgets.length; i++) { + if (line.widgets[i].height) { widgetsHeight += line.widgets[i].height; } + } } + + if (wrapping) + { return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th } + else + { return widgetsHeight + th } + } + } + + function estimateLineHeights(cm) { + var doc = cm.doc, est = estimateHeight(cm); + doc.iter(function (line) { + var estHeight = est(line); + if (estHeight != line.height) { updateLineHeight(line, estHeight); } + }); + } + + // Given a mouse event, find the corresponding position. If liberal + // is false, it checks whether a gutter or scrollbar was clicked, + // and returns null if it was. forRect is used by rectangular + // selections, and tries to estimate a character position even for + // coordinates beyond the right of the text. + function posFromMouse(cm, e, liberal, forRect) { + var display = cm.display; + if (!liberal && e_target(e).getAttribute("cm-not-content") == "true") { return null } + + var x, y, space = display.lineSpace.getBoundingClientRect(); + // Fails unpredictably on IE[67] when mouse is dragged around quickly. + try { x = e.clientX - space.left; y = e.clientY - space.top; } + catch (e$1) { return null } + var coords = coordsChar(cm, x, y), line; + if (forRect && coords.xRel > 0 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) { + var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length; + coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff)); + } + return coords + } + + // Find the view element corresponding to a given line. Return null + // when the line isn't visible. + function findViewIndex(cm, n) { + if (n >= cm.display.viewTo) { return null } + n -= cm.display.viewFrom; + if (n < 0) { return null } + var view = cm.display.view; + for (var i = 0; i < view.length; i++) { + n -= view[i].size; + if (n < 0) { return i } + } + } + + // Updates the display.view data structure for a given change to the + // document. From and to are in pre-change coordinates. Lendiff is + // the amount of lines added or subtracted by the change. This is + // used for changes that span multiple lines, or change the way + // lines are divided into visual lines. regLineChange (below) + // registers single-line changes. + function regChange(cm, from, to, lendiff) { + if (from == null) { from = cm.doc.first; } + if (to == null) { to = cm.doc.first + cm.doc.size; } + if (!lendiff) { lendiff = 0; } + + var display = cm.display; + if (lendiff && to < display.viewTo && + (display.updateLineNumbers == null || display.updateLineNumbers > from)) + { display.updateLineNumbers = from; } + + cm.curOp.viewChanged = true; + + if (from >= display.viewTo) { // Change after + if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo) + { resetView(cm); } + } else if (to <= display.viewFrom) { // Change before + if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) { + resetView(cm); + } else { + display.viewFrom += lendiff; + display.viewTo += lendiff; + } + } else if (from <= display.viewFrom && to >= display.viewTo) { // Full overlap + resetView(cm); + } else if (from <= display.viewFrom) { // Top overlap + var cut = viewCuttingPoint(cm, to, to + lendiff, 1); + if (cut) { + display.view = display.view.slice(cut.index); + display.viewFrom = cut.lineN; + display.viewTo += lendiff; + } else { + resetView(cm); + } + } else if (to >= display.viewTo) { // Bottom overlap + var cut$1 = viewCuttingPoint(cm, from, from, -1); + if (cut$1) { + display.view = display.view.slice(0, cut$1.index); + display.viewTo = cut$1.lineN; + } else { + resetView(cm); + } + } else { // Gap in the middle + var cutTop = viewCuttingPoint(cm, from, from, -1); + var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1); + if (cutTop && cutBot) { + display.view = display.view.slice(0, cutTop.index) + .concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN)) + .concat(display.view.slice(cutBot.index)); + display.viewTo += lendiff; + } else { + resetView(cm); + } + } + + var ext = display.externalMeasured; + if (ext) { + if (to < ext.lineN) + { ext.lineN += lendiff; } + else if (from < ext.lineN + ext.size) + { display.externalMeasured = null; } + } + } + + // Register a change to a single line. Type must be one of "text", + // "gutter", "class", "widget" + function regLineChange(cm, line, type) { + cm.curOp.viewChanged = true; + var display = cm.display, ext = cm.display.externalMeasured; + if (ext && line >= ext.lineN && line < ext.lineN + ext.size) + { display.externalMeasured = null; } + + if (line < display.viewFrom || line >= display.viewTo) { return } + var lineView = display.view[findViewIndex(cm, line)]; + if (lineView.node == null) { return } + var arr = lineView.changes || (lineView.changes = []); + if (indexOf(arr, type) == -1) { arr.push(type); } + } + + // Clear the view. + function resetView(cm) { + cm.display.viewFrom = cm.display.viewTo = cm.doc.first; + cm.display.view = []; + cm.display.viewOffset = 0; + } + + function viewCuttingPoint(cm, oldN, newN, dir) { + var index = findViewIndex(cm, oldN), diff, view = cm.display.view; + if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size) + { return {index: index, lineN: newN} } + var n = cm.display.viewFrom; + for (var i = 0; i < index; i++) + { n += view[i].size; } + if (n != oldN) { + if (dir > 0) { + if (index == view.length - 1) { return null } + diff = (n + view[index].size) - oldN; + index++; + } else { + diff = n - oldN; + } + oldN += diff; newN += diff; + } + while (visualLineNo(cm.doc, newN) != newN) { + if (index == (dir < 0 ? 0 : view.length - 1)) { return null } + newN += dir * view[index - (dir < 0 ? 1 : 0)].size; + index += dir; + } + return {index: index, lineN: newN} + } + + // Force the view to cover a given range, adding empty view element + // or clipping off existing ones as needed. + function adjustView(cm, from, to) { + var display = cm.display, view = display.view; + if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) { + display.view = buildViewArray(cm, from, to); + display.viewFrom = from; + } else { + if (display.viewFrom > from) + { display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view); } + else if (display.viewFrom < from) + { display.view = display.view.slice(findViewIndex(cm, from)); } + display.viewFrom = from; + if (display.viewTo < to) + { display.view = display.view.concat(buildViewArray(cm, display.viewTo, to)); } + else if (display.viewTo > to) + { display.view = display.view.slice(0, findViewIndex(cm, to)); } + } + display.viewTo = to; + } + + // Count the number of lines in the view whose DOM representation is + // out of date (or nonexistent). + function countDirtyView(cm) { + var view = cm.display.view, dirty = 0; + for (var i = 0; i < view.length; i++) { + var lineView = view[i]; + if (!lineView.hidden && (!lineView.node || lineView.changes)) { ++dirty; } + } + return dirty + } + + function updateSelection(cm) { + cm.display.input.showSelection(cm.display.input.prepareSelection()); + } + + function prepareSelection(cm, primary) { + if ( primary === void 0 ) primary = true; + + var doc = cm.doc, result = {}; + var curFragment = result.cursors = document.createDocumentFragment(); + var selFragment = result.selection = document.createDocumentFragment(); + + for (var i = 0; i < doc.sel.ranges.length; i++) { + if (!primary && i == doc.sel.primIndex) { continue } + var range = doc.sel.ranges[i]; + if (range.from().line >= cm.display.viewTo || range.to().line < cm.display.viewFrom) { continue } + var collapsed = range.empty(); + if (collapsed || cm.options.showCursorWhenSelecting) + { drawSelectionCursor(cm, range.head, curFragment); } + if (!collapsed) + { drawSelectionRange(cm, range, selFragment); } + } + return result + } + + // Draws a cursor for the given range + function drawSelectionCursor(cm, head, output) { + var pos = cursorCoords(cm, head, "div", null, null, !cm.options.singleCursorHeightPerLine); + + var cursor = output.appendChild(elt("div", "\u00a0", "CodeMirror-cursor")); + cursor.style.left = pos.left + "px"; + cursor.style.top = pos.top + "px"; + cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + "px"; + + if (pos.other) { + // Secondary cursor, shown when on a 'jump' in bi-directional text + var otherCursor = output.appendChild(elt("div", "\u00a0", "CodeMirror-cursor CodeMirror-secondarycursor")); + otherCursor.style.display = ""; + otherCursor.style.left = pos.other.left + "px"; + otherCursor.style.top = pos.other.top + "px"; + otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + "px"; + } + } + + function cmpCoords(a, b) { return a.top - b.top || a.left - b.left } + + // Draws the given range as a highlighted selection + function drawSelectionRange(cm, range, output) { + var display = cm.display, doc = cm.doc; + var fragment = document.createDocumentFragment(); + var padding = paddingH(cm.display), leftSide = padding.left; + var rightSide = Math.max(display.sizerWidth, displayWidth(cm) - display.sizer.offsetLeft) - padding.right; + var docLTR = doc.direction == "ltr"; + + function add(left, top, width, bottom) { + if (top < 0) { top = 0; } + top = Math.round(top); + bottom = Math.round(bottom); + fragment.appendChild(elt("div", null, "CodeMirror-selected", ("position: absolute; left: " + left + "px;\n top: " + top + "px; width: " + (width == null ? rightSide - left : width) + "px;\n height: " + (bottom - top) + "px"))); + } + + function drawForLine(line, fromArg, toArg) { + var lineObj = getLine(doc, line); + var lineLen = lineObj.text.length; + var start, end; + function coords(ch, bias) { + return charCoords(cm, Pos(line, ch), "div", lineObj, bias) + } + + function wrapX(pos, dir, side) { + var extent = wrappedLineExtentChar(cm, lineObj, null, pos); + var prop = (dir == "ltr") == (side == "after") ? "left" : "right"; + var ch = side == "after" ? extent.begin : extent.end - (/\s/.test(lineObj.text.charAt(extent.end - 1)) ? 2 : 1); + return coords(ch, prop)[prop] + } + + var order = getOrder(lineObj, doc.direction); + iterateBidiSections(order, fromArg || 0, toArg == null ? lineLen : toArg, function (from, to, dir, i) { + var ltr = dir == "ltr"; + var fromPos = coords(from, ltr ? "left" : "right"); + var toPos = coords(to - 1, ltr ? "right" : "left"); + + var openStart = fromArg == null && from == 0, openEnd = toArg == null && to == lineLen; + var first = i == 0, last = !order || i == order.length - 1; + if (toPos.top - fromPos.top <= 3) { // Single line + var openLeft = (docLTR ? openStart : openEnd) && first; + var openRight = (docLTR ? openEnd : openStart) && last; + var left = openLeft ? leftSide : (ltr ? fromPos : toPos).left; + var right = openRight ? rightSide : (ltr ? toPos : fromPos).right; + add(left, fromPos.top, right - left, fromPos.bottom); + } else { // Multiple lines + var topLeft, topRight, botLeft, botRight; + if (ltr) { + topLeft = docLTR && openStart && first ? leftSide : fromPos.left; + topRight = docLTR ? rightSide : wrapX(from, dir, "before"); + botLeft = docLTR ? leftSide : wrapX(to, dir, "after"); + botRight = docLTR && openEnd && last ? rightSide : toPos.right; + } else { + topLeft = !docLTR ? leftSide : wrapX(from, dir, "before"); + topRight = !docLTR && openStart && first ? rightSide : fromPos.right; + botLeft = !docLTR && openEnd && last ? leftSide : toPos.left; + botRight = !docLTR ? rightSide : wrapX(to, dir, "after"); + } + add(topLeft, fromPos.top, topRight - topLeft, fromPos.bottom); + if (fromPos.bottom < toPos.top) { add(leftSide, fromPos.bottom, null, toPos.top); } + add(botLeft, toPos.top, botRight - botLeft, toPos.bottom); + } + + if (!start || cmpCoords(fromPos, start) < 0) { start = fromPos; } + if (cmpCoords(toPos, start) < 0) { start = toPos; } + if (!end || cmpCoords(fromPos, end) < 0) { end = fromPos; } + if (cmpCoords(toPos, end) < 0) { end = toPos; } + }); + return {start: start, end: end} + } + + var sFrom = range.from(), sTo = range.to(); + if (sFrom.line == sTo.line) { + drawForLine(sFrom.line, sFrom.ch, sTo.ch); + } else { + var fromLine = getLine(doc, sFrom.line), toLine = getLine(doc, sTo.line); + var singleVLine = visualLine(fromLine) == visualLine(toLine); + var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end; + var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start; + if (singleVLine) { + if (leftEnd.top < rightStart.top - 2) { + add(leftEnd.right, leftEnd.top, null, leftEnd.bottom); + add(leftSide, rightStart.top, rightStart.left, rightStart.bottom); + } else { + add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom); + } + } + if (leftEnd.bottom < rightStart.top) + { add(leftSide, leftEnd.bottom, null, rightStart.top); } + } + + output.appendChild(fragment); + } + + // Cursor-blinking + function restartBlink(cm) { + if (!cm.state.focused) { return } + var display = cm.display; + clearInterval(display.blinker); + var on = true; + display.cursorDiv.style.visibility = ""; + if (cm.options.cursorBlinkRate > 0) + { display.blinker = setInterval(function () { + if (!cm.hasFocus()) { onBlur(cm); } + display.cursorDiv.style.visibility = (on = !on) ? "" : "hidden"; + }, cm.options.cursorBlinkRate); } + else if (cm.options.cursorBlinkRate < 0) + { display.cursorDiv.style.visibility = "hidden"; } + } + + function ensureFocus(cm) { + if (!cm.state.focused) { cm.display.input.focus(); onFocus(cm); } + } + + function delayBlurEvent(cm) { + cm.state.delayingBlurEvent = true; + setTimeout(function () { if (cm.state.delayingBlurEvent) { + cm.state.delayingBlurEvent = false; + onBlur(cm); + } }, 100); + } + + function onFocus(cm, e) { + if (cm.state.delayingBlurEvent) { cm.state.delayingBlurEvent = false; } + + if (cm.options.readOnly == "nocursor") { return } + if (!cm.state.focused) { + signal(cm, "focus", cm, e); + cm.state.focused = true; + addClass(cm.display.wrapper, "CodeMirror-focused"); + // This test prevents this from firing when a context + // menu is closed (since the input reset would kill the + // select-all detection hack) + if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) { + cm.display.input.reset(); + if (webkit) { setTimeout(function () { return cm.display.input.reset(true); }, 20); } // Issue #1730 + } + cm.display.input.receivedFocus(); + } + restartBlink(cm); + } + function onBlur(cm, e) { + if (cm.state.delayingBlurEvent) { return } + + if (cm.state.focused) { + signal(cm, "blur", cm, e); + cm.state.focused = false; + rmClass(cm.display.wrapper, "CodeMirror-focused"); + } + clearInterval(cm.display.blinker); + setTimeout(function () { if (!cm.state.focused) { cm.display.shift = false; } }, 150); + } + + // Read the actual heights of the rendered lines, and update their + // stored heights to match. + function updateHeightsInViewport(cm) { + var display = cm.display; + var prevBottom = display.lineDiv.offsetTop; + for (var i = 0; i < display.view.length; i++) { + var cur = display.view[i], wrapping = cm.options.lineWrapping; + var height = (void 0), width = 0; + if (cur.hidden) { continue } + if (ie && ie_version < 8) { + var bot = cur.node.offsetTop + cur.node.offsetHeight; + height = bot - prevBottom; + prevBottom = bot; + } else { + var box = cur.node.getBoundingClientRect(); + height = box.bottom - box.top; + // Check that lines don't extend past the right of the current + // editor width + if (!wrapping && cur.text.firstChild) + { width = cur.text.firstChild.getBoundingClientRect().right - box.left - 1; } + } + var diff = cur.line.height - height; + if (diff > .005 || diff < -.005) { + updateLineHeight(cur.line, height); + updateWidgetHeight(cur.line); + if (cur.rest) { for (var j = 0; j < cur.rest.length; j++) + { updateWidgetHeight(cur.rest[j]); } } + } + if (width > cm.display.sizerWidth) { + var chWidth = Math.ceil(width / charWidth(cm.display)); + if (chWidth > cm.display.maxLineLength) { + cm.display.maxLineLength = chWidth; + cm.display.maxLine = cur.line; + cm.display.maxLineChanged = true; + } + } + } + } + + // Read and store the height of line widgets associated with the + // given line. + function updateWidgetHeight(line) { + if (line.widgets) { for (var i = 0; i < line.widgets.length; ++i) { + var w = line.widgets[i], parent = w.node.parentNode; + if (parent) { w.height = parent.offsetHeight; } + } } + } + + // Compute the lines that are visible in a given viewport (defaults + // the the current scroll position). viewport may contain top, + // height, and ensure (see op.scrollToPos) properties. + function visibleLines(display, doc, viewport) { + var top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop; + top = Math.floor(top - paddingTop(display)); + var bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight; + + var from = lineAtHeight(doc, top), to = lineAtHeight(doc, bottom); + // Ensure is a {from: {line, ch}, to: {line, ch}} object, and + // forces those lines into the viewport (if possible). + if (viewport && viewport.ensure) { + var ensureFrom = viewport.ensure.from.line, ensureTo = viewport.ensure.to.line; + if (ensureFrom < from) { + from = ensureFrom; + to = lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight); + } else if (Math.min(ensureTo, doc.lastLine()) >= to) { + from = lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight); + to = ensureTo; + } + } + return {from: from, to: Math.max(to, from + 1)} + } + + // SCROLLING THINGS INTO VIEW + + // If an editor sits on the top or bottom of the window, partially + // scrolled out of view, this ensures that the cursor is visible. + function maybeScrollWindow(cm, rect) { + if (signalDOMEvent(cm, "scrollCursorIntoView")) { return } + + var display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null; + if (rect.top + box.top < 0) { doScroll = true; } + else if (rect.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) { doScroll = false; } + if (doScroll != null && !phantom) { + var scrollNode = elt("div", "\u200b", null, ("position: absolute;\n top: " + (rect.top - display.viewOffset - paddingTop(cm.display)) + "px;\n height: " + (rect.bottom - rect.top + scrollGap(cm) + display.barHeight) + "px;\n left: " + (rect.left) + "px; width: " + (Math.max(2, rect.right - rect.left)) + "px;")); + cm.display.lineSpace.appendChild(scrollNode); + scrollNode.scrollIntoView(doScroll); + cm.display.lineSpace.removeChild(scrollNode); + } + } + + // Scroll a given position into view (immediately), verifying that + // it actually became visible (as line heights are accurately + // measured, the position of something may 'drift' during drawing). + function scrollPosIntoView(cm, pos, end, margin) { + if (margin == null) { margin = 0; } + var rect; + if (!cm.options.lineWrapping && pos == end) { + // Set pos and end to the cursor positions around the character pos sticks to + // If pos.sticky == "before", that is around pos.ch - 1, otherwise around pos.ch + // If pos == Pos(_, 0, "before"), pos and end are unchanged + pos = pos.ch ? Pos(pos.line, pos.sticky == "before" ? pos.ch - 1 : pos.ch, "after") : pos; + end = pos.sticky == "before" ? Pos(pos.line, pos.ch + 1, "before") : pos; + } + for (var limit = 0; limit < 5; limit++) { + var changed = false; + var coords = cursorCoords(cm, pos); + var endCoords = !end || end == pos ? coords : cursorCoords(cm, end); + rect = {left: Math.min(coords.left, endCoords.left), + top: Math.min(coords.top, endCoords.top) - margin, + right: Math.max(coords.left, endCoords.left), + bottom: Math.max(coords.bottom, endCoords.bottom) + margin}; + var scrollPos = calculateScrollPos(cm, rect); + var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft; + if (scrollPos.scrollTop != null) { + updateScrollTop(cm, scrollPos.scrollTop); + if (Math.abs(cm.doc.scrollTop - startTop) > 1) { changed = true; } + } + if (scrollPos.scrollLeft != null) { + setScrollLeft(cm, scrollPos.scrollLeft); + if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) { changed = true; } + } + if (!changed) { break } + } + return rect + } + + // Scroll a given set of coordinates into view (immediately). + function scrollIntoView(cm, rect) { + var scrollPos = calculateScrollPos(cm, rect); + if (scrollPos.scrollTop != null) { updateScrollTop(cm, scrollPos.scrollTop); } + if (scrollPos.scrollLeft != null) { setScrollLeft(cm, scrollPos.scrollLeft); } + } + + // Calculate a new scroll position needed to scroll the given + // rectangle into view. Returns an object with scrollTop and + // scrollLeft properties. When these are undefined, the + // vertical/horizontal position does not need to be adjusted. + function calculateScrollPos(cm, rect) { + var display = cm.display, snapMargin = textHeight(cm.display); + if (rect.top < 0) { rect.top = 0; } + var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop; + var screen = displayHeight(cm), result = {}; + if (rect.bottom - rect.top > screen) { rect.bottom = rect.top + screen; } + var docBottom = cm.doc.height + paddingVert(display); + var atTop = rect.top < snapMargin, atBottom = rect.bottom > docBottom - snapMargin; + if (rect.top < screentop) { + result.scrollTop = atTop ? 0 : rect.top; + } else if (rect.bottom > screentop + screen) { + var newTop = Math.min(rect.top, (atBottom ? docBottom : rect.bottom) - screen); + if (newTop != screentop) { result.scrollTop = newTop; } + } + + var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft; + var screenw = displayWidth(cm) - (cm.options.fixedGutter ? display.gutters.offsetWidth : 0); + var tooWide = rect.right - rect.left > screenw; + if (tooWide) { rect.right = rect.left + screenw; } + if (rect.left < 10) + { result.scrollLeft = 0; } + else if (rect.left < screenleft) + { result.scrollLeft = Math.max(0, rect.left - (tooWide ? 0 : 10)); } + else if (rect.right > screenw + screenleft - 3) + { result.scrollLeft = rect.right + (tooWide ? 0 : 10) - screenw; } + return result + } + + // Store a relative adjustment to the scroll position in the current + // operation (to be applied when the operation finishes). + function addToScrollTop(cm, top) { + if (top == null) { return } + resolveScrollToPos(cm); + cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top; + } + + // Make sure that at the end of the operation the current cursor is + // shown. + function ensureCursorVisible(cm) { + resolveScrollToPos(cm); + var cur = cm.getCursor(); + cm.curOp.scrollToPos = {from: cur, to: cur, margin: cm.options.cursorScrollMargin}; + } + + function scrollToCoords(cm, x, y) { + if (x != null || y != null) { resolveScrollToPos(cm); } + if (x != null) { cm.curOp.scrollLeft = x; } + if (y != null) { cm.curOp.scrollTop = y; } + } + + function scrollToRange(cm, range) { + resolveScrollToPos(cm); + cm.curOp.scrollToPos = range; + } + + // When an operation has its scrollToPos property set, and another + // scroll action is applied before the end of the operation, this + // 'simulates' scrolling that position into view in a cheap way, so + // that the effect of intermediate scroll commands is not ignored. + function resolveScrollToPos(cm) { + var range = cm.curOp.scrollToPos; + if (range) { + cm.curOp.scrollToPos = null; + var from = estimateCoords(cm, range.from), to = estimateCoords(cm, range.to); + scrollToCoordsRange(cm, from, to, range.margin); + } + } + + function scrollToCoordsRange(cm, from, to, margin) { + var sPos = calculateScrollPos(cm, { + left: Math.min(from.left, to.left), + top: Math.min(from.top, to.top) - margin, + right: Math.max(from.right, to.right), + bottom: Math.max(from.bottom, to.bottom) + margin + }); + scrollToCoords(cm, sPos.scrollLeft, sPos.scrollTop); + } + + // Sync the scrollable area and scrollbars, ensure the viewport + // covers the visible area. + function updateScrollTop(cm, val) { + if (Math.abs(cm.doc.scrollTop - val) < 2) { return } + if (!gecko) { updateDisplaySimple(cm, {top: val}); } + setScrollTop(cm, val, true); + if (gecko) { updateDisplaySimple(cm); } + startWorker(cm, 100); + } + + function setScrollTop(cm, val, forceScroll) { + val = Math.max(0, Math.min(cm.display.scroller.scrollHeight - cm.display.scroller.clientHeight, val)); + if (cm.display.scroller.scrollTop == val && !forceScroll) { return } + cm.doc.scrollTop = val; + cm.display.scrollbars.setScrollTop(val); + if (cm.display.scroller.scrollTop != val) { cm.display.scroller.scrollTop = val; } + } + + // Sync scroller and scrollbar, ensure the gutter elements are + // aligned. + function setScrollLeft(cm, val, isScroller, forceScroll) { + val = Math.max(0, Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth)); + if ((isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) && !forceScroll) { return } + cm.doc.scrollLeft = val; + alignHorizontally(cm); + if (cm.display.scroller.scrollLeft != val) { cm.display.scroller.scrollLeft = val; } + cm.display.scrollbars.setScrollLeft(val); + } + + // SCROLLBARS + + // Prepare DOM reads needed to update the scrollbars. Done in one + // shot to minimize update/measure roundtrips. + function measureForScrollbars(cm) { + var d = cm.display, gutterW = d.gutters.offsetWidth; + var docH = Math.round(cm.doc.height + paddingVert(cm.display)); + return { + clientHeight: d.scroller.clientHeight, + viewHeight: d.wrapper.clientHeight, + scrollWidth: d.scroller.scrollWidth, clientWidth: d.scroller.clientWidth, + viewWidth: d.wrapper.clientWidth, + barLeft: cm.options.fixedGutter ? gutterW : 0, + docHeight: docH, + scrollHeight: docH + scrollGap(cm) + d.barHeight, + nativeBarWidth: d.nativeBarWidth, + gutterWidth: gutterW + } + } + + var NativeScrollbars = function(place, scroll, cm) { + this.cm = cm; + var vert = this.vert = elt("div", [elt("div", null, null, "min-width: 1px")], "CodeMirror-vscrollbar"); + var horiz = this.horiz = elt("div", [elt("div", null, null, "height: 100%; min-height: 1px")], "CodeMirror-hscrollbar"); + vert.tabIndex = horiz.tabIndex = -1; + place(vert); place(horiz); + + on(vert, "scroll", function () { + if (vert.clientHeight) { scroll(vert.scrollTop, "vertical"); } + }); + on(horiz, "scroll", function () { + if (horiz.clientWidth) { scroll(horiz.scrollLeft, "horizontal"); } + }); + + this.checkedZeroWidth = false; + // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8). + if (ie && ie_version < 8) { this.horiz.style.minHeight = this.vert.style.minWidth = "18px"; } + }; + + NativeScrollbars.prototype.update = function (measure) { + var needsH = measure.scrollWidth > measure.clientWidth + 1; + var needsV = measure.scrollHeight > measure.clientHeight + 1; + var sWidth = measure.nativeBarWidth; + + if (needsV) { + this.vert.style.display = "block"; + this.vert.style.bottom = needsH ? sWidth + "px" : "0"; + var totalHeight = measure.viewHeight - (needsH ? sWidth : 0); + // A bug in IE8 can cause this value to be negative, so guard it. + this.vert.firstChild.style.height = + Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + "px"; + } else { + this.vert.style.display = ""; + this.vert.firstChild.style.height = "0"; + } + + if (needsH) { + this.horiz.style.display = "block"; + this.horiz.style.right = needsV ? sWidth + "px" : "0"; + this.horiz.style.left = measure.barLeft + "px"; + var totalWidth = measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0); + this.horiz.firstChild.style.width = + Math.max(0, measure.scrollWidth - measure.clientWidth + totalWidth) + "px"; + } else { + this.horiz.style.display = ""; + this.horiz.firstChild.style.width = "0"; + } + + if (!this.checkedZeroWidth && measure.clientHeight > 0) { + if (sWidth == 0) { this.zeroWidthHack(); } + this.checkedZeroWidth = true; + } + + return {right: needsV ? sWidth : 0, bottom: needsH ? sWidth : 0} + }; + + NativeScrollbars.prototype.setScrollLeft = function (pos) { + if (this.horiz.scrollLeft != pos) { this.horiz.scrollLeft = pos; } + if (this.disableHoriz) { this.enableZeroWidthBar(this.horiz, this.disableHoriz, "horiz"); } + }; + + NativeScrollbars.prototype.setScrollTop = function (pos) { + if (this.vert.scrollTop != pos) { this.vert.scrollTop = pos; } + if (this.disableVert) { this.enableZeroWidthBar(this.vert, this.disableVert, "vert"); } + }; + + NativeScrollbars.prototype.zeroWidthHack = function () { + var w = mac && !mac_geMountainLion ? "12px" : "18px"; + this.horiz.style.height = this.vert.style.width = w; + this.horiz.style.pointerEvents = this.vert.style.pointerEvents = "none"; + this.disableHoriz = new Delayed; + this.disableVert = new Delayed; + }; + + NativeScrollbars.prototype.enableZeroWidthBar = function (bar, delay, type) { + bar.style.pointerEvents = "auto"; + function maybeDisable() { + // To find out whether the scrollbar is still visible, we + // check whether the element under the pixel in the bottom + // right corner of the scrollbar box is the scrollbar box + // itself (when the bar is still visible) or its filler child + // (when the bar is hidden). If it is still visible, we keep + // it enabled, if it's hidden, we disable pointer events. + var box = bar.getBoundingClientRect(); + var elt = type == "vert" ? document.elementFromPoint(box.right - 1, (box.top + box.bottom) / 2) + : document.elementFromPoint((box.right + box.left) / 2, box.bottom - 1); + if (elt != bar) { bar.style.pointerEvents = "none"; } + else { delay.set(1000, maybeDisable); } + } + delay.set(1000, maybeDisable); + }; + + NativeScrollbars.prototype.clear = function () { + var parent = this.horiz.parentNode; + parent.removeChild(this.horiz); + parent.removeChild(this.vert); + }; + + var NullScrollbars = function () {}; + + NullScrollbars.prototype.update = function () { return {bottom: 0, right: 0} }; + NullScrollbars.prototype.setScrollLeft = function () {}; + NullScrollbars.prototype.setScrollTop = function () {}; + NullScrollbars.prototype.clear = function () {}; + + function updateScrollbars(cm, measure) { + if (!measure) { measure = measureForScrollbars(cm); } + var startWidth = cm.display.barWidth, startHeight = cm.display.barHeight; + updateScrollbarsInner(cm, measure); + for (var i = 0; i < 4 && startWidth != cm.display.barWidth || startHeight != cm.display.barHeight; i++) { + if (startWidth != cm.display.barWidth && cm.options.lineWrapping) + { updateHeightsInViewport(cm); } + updateScrollbarsInner(cm, measureForScrollbars(cm)); + startWidth = cm.display.barWidth; startHeight = cm.display.barHeight; + } + } + + // Re-synchronize the fake scrollbars with the actual size of the + // content. + function updateScrollbarsInner(cm, measure) { + var d = cm.display; + var sizes = d.scrollbars.update(measure); + + d.sizer.style.paddingRight = (d.barWidth = sizes.right) + "px"; + d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + "px"; + d.heightForcer.style.borderBottom = sizes.bottom + "px solid transparent"; + + if (sizes.right && sizes.bottom) { + d.scrollbarFiller.style.display = "block"; + d.scrollbarFiller.style.height = sizes.bottom + "px"; + d.scrollbarFiller.style.width = sizes.right + "px"; + } else { d.scrollbarFiller.style.display = ""; } + if (sizes.bottom && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) { + d.gutterFiller.style.display = "block"; + d.gutterFiller.style.height = sizes.bottom + "px"; + d.gutterFiller.style.width = measure.gutterWidth + "px"; + } else { d.gutterFiller.style.display = ""; } + } + + var scrollbarModel = {"native": NativeScrollbars, "null": NullScrollbars}; + + function initScrollbars(cm) { + if (cm.display.scrollbars) { + cm.display.scrollbars.clear(); + if (cm.display.scrollbars.addClass) + { rmClass(cm.display.wrapper, cm.display.scrollbars.addClass); } + } + + cm.display.scrollbars = new scrollbarModel[cm.options.scrollbarStyle](function (node) { + cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller); + // Prevent clicks in the scrollbars from killing focus + on(node, "mousedown", function () { + if (cm.state.focused) { setTimeout(function () { return cm.display.input.focus(); }, 0); } + }); + node.setAttribute("cm-not-content", "true"); + }, function (pos, axis) { + if (axis == "horizontal") { setScrollLeft(cm, pos); } + else { updateScrollTop(cm, pos); } + }, cm); + if (cm.display.scrollbars.addClass) + { addClass(cm.display.wrapper, cm.display.scrollbars.addClass); } + } + + // Operations are used to wrap a series of changes to the editor + // state in such a way that each change won't have to update the + // cursor and display (which would be awkward, slow, and + // error-prone). Instead, display updates are batched and then all + // combined and executed at once. + + var nextOpId = 0; + // Start a new operation. + function startOperation(cm) { + cm.curOp = { + cm: cm, + viewChanged: false, // Flag that indicates that lines might need to be redrawn + startHeight: cm.doc.height, // Used to detect need to update scrollbar + forceUpdate: false, // Used to force a redraw + updateInput: 0, // Whether to reset the input textarea + typing: false, // Whether this reset should be careful to leave existing text (for compositing) + changeObjs: null, // Accumulated changes, for firing change events + cursorActivityHandlers: null, // Set of handlers to fire cursorActivity on + cursorActivityCalled: 0, // Tracks which cursorActivity handlers have been called already + selectionChanged: false, // Whether the selection needs to be redrawn + updateMaxLine: false, // Set when the widest line needs to be determined anew + scrollLeft: null, scrollTop: null, // Intermediate scroll position, not pushed to DOM yet + scrollToPos: null, // Used to scroll to a specific position + focus: false, + id: ++nextOpId // Unique ID + }; + pushOperation(cm.curOp); + } + + // Finish an operation, updating the display and signalling delayed events + function endOperation(cm) { + var op = cm.curOp; + if (op) { finishOperation(op, function (group) { + for (var i = 0; i < group.ops.length; i++) + { group.ops[i].cm.curOp = null; } + endOperations(group); + }); } + } + + // The DOM updates done when an operation finishes are batched so + // that the minimum number of relayouts are required. + function endOperations(group) { + var ops = group.ops; + for (var i = 0; i < ops.length; i++) // Read DOM + { endOperation_R1(ops[i]); } + for (var i$1 = 0; i$1 < ops.length; i$1++) // Write DOM (maybe) + { endOperation_W1(ops[i$1]); } + for (var i$2 = 0; i$2 < ops.length; i$2++) // Read DOM + { endOperation_R2(ops[i$2]); } + for (var i$3 = 0; i$3 < ops.length; i$3++) // Write DOM (maybe) + { endOperation_W2(ops[i$3]); } + for (var i$4 = 0; i$4 < ops.length; i$4++) // Read DOM + { endOperation_finish(ops[i$4]); } + } + + function endOperation_R1(op) { + var cm = op.cm, display = cm.display; + maybeClipScrollbars(cm); + if (op.updateMaxLine) { findMaxLine(cm); } + + op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null || + op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom || + op.scrollToPos.to.line >= display.viewTo) || + display.maxLineChanged && cm.options.lineWrapping; + op.update = op.mustUpdate && + new DisplayUpdate(cm, op.mustUpdate && {top: op.scrollTop, ensure: op.scrollToPos}, op.forceUpdate); + } + + function endOperation_W1(op) { + op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update); + } + + function endOperation_R2(op) { + var cm = op.cm, display = cm.display; + if (op.updatedDisplay) { updateHeightsInViewport(cm); } + + op.barMeasure = measureForScrollbars(cm); + + // If the max line changed since it was last measured, measure it, + // and ensure the document's width matches it. + // updateDisplay_W2 will use these properties to do the actual resizing + if (display.maxLineChanged && !cm.options.lineWrapping) { + op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3; + cm.display.sizerWidth = op.adjustWidthTo; + op.barMeasure.scrollWidth = + Math.max(display.scroller.clientWidth, display.sizer.offsetLeft + op.adjustWidthTo + scrollGap(cm) + cm.display.barWidth); + op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm)); + } + + if (op.updatedDisplay || op.selectionChanged) + { op.preparedSelection = display.input.prepareSelection(); } + } + + function endOperation_W2(op) { + var cm = op.cm; + + if (op.adjustWidthTo != null) { + cm.display.sizer.style.minWidth = op.adjustWidthTo + "px"; + if (op.maxScrollLeft < cm.doc.scrollLeft) + { setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true); } + cm.display.maxLineChanged = false; + } + + var takeFocus = op.focus && op.focus == activeElt(); + if (op.preparedSelection) + { cm.display.input.showSelection(op.preparedSelection, takeFocus); } + if (op.updatedDisplay || op.startHeight != cm.doc.height) + { updateScrollbars(cm, op.barMeasure); } + if (op.updatedDisplay) + { setDocumentHeight(cm, op.barMeasure); } + + if (op.selectionChanged) { restartBlink(cm); } + + if (cm.state.focused && op.updateInput) + { cm.display.input.reset(op.typing); } + if (takeFocus) { ensureFocus(op.cm); } + } + + function endOperation_finish(op) { + var cm = op.cm, display = cm.display, doc = cm.doc; + + if (op.updatedDisplay) { postUpdateDisplay(cm, op.update); } + + // Abort mouse wheel delta measurement, when scrolling explicitly + if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos)) + { display.wheelStartX = display.wheelStartY = null; } + + // Propagate the scroll position to the actual DOM scroller + if (op.scrollTop != null) { setScrollTop(cm, op.scrollTop, op.forceScroll); } + + if (op.scrollLeft != null) { setScrollLeft(cm, op.scrollLeft, true, true); } + // If we need to scroll a specific position into view, do so. + if (op.scrollToPos) { + var rect = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from), + clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin); + maybeScrollWindow(cm, rect); + } + + // Fire events for markers that are hidden/unidden by editing or + // undoing + var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers; + if (hidden) { for (var i = 0; i < hidden.length; ++i) + { if (!hidden[i].lines.length) { signal(hidden[i], "hide"); } } } + if (unhidden) { for (var i$1 = 0; i$1 < unhidden.length; ++i$1) + { if (unhidden[i$1].lines.length) { signal(unhidden[i$1], "unhide"); } } } + + if (display.wrapper.offsetHeight) + { doc.scrollTop = cm.display.scroller.scrollTop; } + + // Fire change events, and delayed event handlers + if (op.changeObjs) + { signal(cm, "changes", cm, op.changeObjs); } + if (op.update) + { op.update.finish(); } + } + + // Run the given function in an operation + function runInOp(cm, f) { + if (cm.curOp) { return f() } + startOperation(cm); + try { return f() } + finally { endOperation(cm); } + } + // Wraps a function in an operation. Returns the wrapped function. + function operation(cm, f) { + return function() { + if (cm.curOp) { return f.apply(cm, arguments) } + startOperation(cm); + try { return f.apply(cm, arguments) } + finally { endOperation(cm); } + } + } + // Used to add methods to editor and doc instances, wrapping them in + // operations. + function methodOp(f) { + return function() { + if (this.curOp) { return f.apply(this, arguments) } + startOperation(this); + try { return f.apply(this, arguments) } + finally { endOperation(this); } + } + } + function docMethodOp(f) { + return function() { + var cm = this.cm; + if (!cm || cm.curOp) { return f.apply(this, arguments) } + startOperation(cm); + try { return f.apply(this, arguments) } + finally { endOperation(cm); } + } + } + + // HIGHLIGHT WORKER + + function startWorker(cm, time) { + if (cm.doc.highlightFrontier < cm.display.viewTo) + { cm.state.highlight.set(time, bind(highlightWorker, cm)); } + } + + function highlightWorker(cm) { + var doc = cm.doc; + if (doc.highlightFrontier >= cm.display.viewTo) { return } + var end = +new Date + cm.options.workTime; + var context = getContextBefore(cm, doc.highlightFrontier); + var changedLines = []; + + doc.iter(context.line, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function (line) { + if (context.line >= cm.display.viewFrom) { // Visible + var oldStyles = line.styles; + var resetState = line.text.length > cm.options.maxHighlightLength ? copyState(doc.mode, context.state) : null; + var highlighted = highlightLine(cm, line, context, true); + if (resetState) { context.state = resetState; } + line.styles = highlighted.styles; + var oldCls = line.styleClasses, newCls = highlighted.classes; + if (newCls) { line.styleClasses = newCls; } + else if (oldCls) { line.styleClasses = null; } + var ischange = !oldStyles || oldStyles.length != line.styles.length || + oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass); + for (var i = 0; !ischange && i < oldStyles.length; ++i) { ischange = oldStyles[i] != line.styles[i]; } + if (ischange) { changedLines.push(context.line); } + line.stateAfter = context.save(); + context.nextLine(); + } else { + if (line.text.length <= cm.options.maxHighlightLength) + { processLine(cm, line.text, context); } + line.stateAfter = context.line % 5 == 0 ? context.save() : null; + context.nextLine(); + } + if (+new Date > end) { + startWorker(cm, cm.options.workDelay); + return true + } + }); + doc.highlightFrontier = context.line; + doc.modeFrontier = Math.max(doc.modeFrontier, context.line); + if (changedLines.length) { runInOp(cm, function () { + for (var i = 0; i < changedLines.length; i++) + { regLineChange(cm, changedLines[i], "text"); } + }); } + } + + // DISPLAY DRAWING + + var DisplayUpdate = function(cm, viewport, force) { + var display = cm.display; + + this.viewport = viewport; + // Store some values that we'll need later (but don't want to force a relayout for) + this.visible = visibleLines(display, cm.doc, viewport); + this.editorIsHidden = !display.wrapper.offsetWidth; + this.wrapperHeight = display.wrapper.clientHeight; + this.wrapperWidth = display.wrapper.clientWidth; + this.oldDisplayWidth = displayWidth(cm); + this.force = force; + this.dims = getDimensions(cm); + this.events = []; + }; + + DisplayUpdate.prototype.signal = function (emitter, type) { + if (hasHandler(emitter, type)) + { this.events.push(arguments); } + }; + DisplayUpdate.prototype.finish = function () { + for (var i = 0; i < this.events.length; i++) + { signal.apply(null, this.events[i]); } + }; + + function maybeClipScrollbars(cm) { + var display = cm.display; + if (!display.scrollbarsClipped && display.scroller.offsetWidth) { + display.nativeBarWidth = display.scroller.offsetWidth - display.scroller.clientWidth; + display.heightForcer.style.height = scrollGap(cm) + "px"; + display.sizer.style.marginBottom = -display.nativeBarWidth + "px"; + display.sizer.style.borderRightWidth = scrollGap(cm) + "px"; + display.scrollbarsClipped = true; + } + } + + function selectionSnapshot(cm) { + if (cm.hasFocus()) { return null } + var active = activeElt(); + if (!active || !contains(cm.display.lineDiv, active)) { return null } + var result = {activeElt: active}; + if (window.getSelection) { + var sel = window.getSelection(); + if (sel.anchorNode && sel.extend && contains(cm.display.lineDiv, sel.anchorNode)) { + result.anchorNode = sel.anchorNode; + result.anchorOffset = sel.anchorOffset; + result.focusNode = sel.focusNode; + result.focusOffset = sel.focusOffset; + } + } + return result + } + + function restoreSelection(snapshot) { + if (!snapshot || !snapshot.activeElt || snapshot.activeElt == activeElt()) { return } + snapshot.activeElt.focus(); + if (!/^(INPUT|TEXTAREA)$/.test(snapshot.activeElt.nodeName) && + snapshot.anchorNode && contains(document.body, snapshot.anchorNode) && contains(document.body, snapshot.focusNode)) { + var sel = window.getSelection(), range = document.createRange(); + range.setEnd(snapshot.anchorNode, snapshot.anchorOffset); + range.collapse(false); + sel.removeAllRanges(); + sel.addRange(range); + sel.extend(snapshot.focusNode, snapshot.focusOffset); + } + } + + // Does the actual updating of the line display. Bails out + // (returning false) when there is nothing to be done and forced is + // false. + function updateDisplayIfNeeded(cm, update) { + var display = cm.display, doc = cm.doc; + + if (update.editorIsHidden) { + resetView(cm); + return false + } + + // Bail out if the visible area is already rendered and nothing changed. + if (!update.force && + update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo && + (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) && + display.renderedView == display.view && countDirtyView(cm) == 0) + { return false } + + if (maybeUpdateLineNumberWidth(cm)) { + resetView(cm); + update.dims = getDimensions(cm); + } + + // Compute a suitable new viewport (from & to) + var end = doc.first + doc.size; + var from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first); + var to = Math.min(end, update.visible.to + cm.options.viewportMargin); + if (display.viewFrom < from && from - display.viewFrom < 20) { from = Math.max(doc.first, display.viewFrom); } + if (display.viewTo > to && display.viewTo - to < 20) { to = Math.min(end, display.viewTo); } + if (sawCollapsedSpans) { + from = visualLineNo(cm.doc, from); + to = visualLineEndNo(cm.doc, to); + } + + var different = from != display.viewFrom || to != display.viewTo || + display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth; + adjustView(cm, from, to); + + display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom)); + // Position the mover div to align with the current scroll position + cm.display.mover.style.top = display.viewOffset + "px"; + + var toUpdate = countDirtyView(cm); + if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view && + (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo)) + { return false } + + // For big changes, we hide the enclosing element during the + // update, since that speeds up the operations on most browsers. + var selSnapshot = selectionSnapshot(cm); + if (toUpdate > 4) { display.lineDiv.style.display = "none"; } + patchDisplay(cm, display.updateLineNumbers, update.dims); + if (toUpdate > 4) { display.lineDiv.style.display = ""; } + display.renderedView = display.view; + // There might have been a widget with a focused element that got + // hidden or updated, if so re-focus it. + restoreSelection(selSnapshot); + + // Prevent selection and cursors from interfering with the scroll + // width and height. + removeChildren(display.cursorDiv); + removeChildren(display.selectionDiv); + display.gutters.style.height = display.sizer.style.minHeight = 0; + + if (different) { + display.lastWrapHeight = update.wrapperHeight; + display.lastWrapWidth = update.wrapperWidth; + startWorker(cm, 400); + } + + display.updateLineNumbers = null; + + return true + } + + function postUpdateDisplay(cm, update) { + var viewport = update.viewport; + + for (var first = true;; first = false) { + if (!first || !cm.options.lineWrapping || update.oldDisplayWidth == displayWidth(cm)) { + // Clip forced viewport to actual scrollable area. + if (viewport && viewport.top != null) + { viewport = {top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)}; } + // Updated line heights might result in the drawn area not + // actually covering the viewport. Keep looping until it does. + update.visible = visibleLines(cm.display, cm.doc, viewport); + if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo) + { break } + } else if (first) { + update.visible = visibleLines(cm.display, cm.doc, viewport); + } + if (!updateDisplayIfNeeded(cm, update)) { break } + updateHeightsInViewport(cm); + var barMeasure = measureForScrollbars(cm); + updateSelection(cm); + updateScrollbars(cm, barMeasure); + setDocumentHeight(cm, barMeasure); + update.force = false; + } + + update.signal(cm, "update", cm); + if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) { + update.signal(cm, "viewportChange", cm, cm.display.viewFrom, cm.display.viewTo); + cm.display.reportedViewFrom = cm.display.viewFrom; cm.display.reportedViewTo = cm.display.viewTo; + } + } + + function updateDisplaySimple(cm, viewport) { + var update = new DisplayUpdate(cm, viewport); + if (updateDisplayIfNeeded(cm, update)) { + updateHeightsInViewport(cm); + postUpdateDisplay(cm, update); + var barMeasure = measureForScrollbars(cm); + updateSelection(cm); + updateScrollbars(cm, barMeasure); + setDocumentHeight(cm, barMeasure); + update.finish(); + } + } + + // Sync the actual display DOM structure with display.view, removing + // nodes for lines that are no longer in view, and creating the ones + // that are not there yet, and updating the ones that are out of + // date. + function patchDisplay(cm, updateNumbersFrom, dims) { + var display = cm.display, lineNumbers = cm.options.lineNumbers; + var container = display.lineDiv, cur = container.firstChild; + + function rm(node) { + var next = node.nextSibling; + // Works around a throw-scroll bug in OS X Webkit + if (webkit && mac && cm.display.currentWheelTarget == node) + { node.style.display = "none"; } + else + { node.parentNode.removeChild(node); } + return next + } + + var view = display.view, lineN = display.viewFrom; + // Loop over the elements in the view, syncing cur (the DOM nodes + // in display.lineDiv) with the view as we go. + for (var i = 0; i < view.length; i++) { + var lineView = view[i]; + if (lineView.hidden) ; else if (!lineView.node || lineView.node.parentNode != container) { // Not drawn yet + var node = buildLineElement(cm, lineView, lineN, dims); + container.insertBefore(node, cur); + } else { // Already drawn + while (cur != lineView.node) { cur = rm(cur); } + var updateNumber = lineNumbers && updateNumbersFrom != null && + updateNumbersFrom <= lineN && lineView.lineNumber; + if (lineView.changes) { + if (indexOf(lineView.changes, "gutter") > -1) { updateNumber = false; } + updateLineForChanges(cm, lineView, lineN, dims); + } + if (updateNumber) { + removeChildren(lineView.lineNumber); + lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN))); + } + cur = lineView.node.nextSibling; + } + lineN += lineView.size; + } + while (cur) { cur = rm(cur); } + } + + function updateGutterSpace(display) { + var width = display.gutters.offsetWidth; + display.sizer.style.marginLeft = width + "px"; + } + + function setDocumentHeight(cm, measure) { + cm.display.sizer.style.minHeight = measure.docHeight + "px"; + cm.display.heightForcer.style.top = measure.docHeight + "px"; + cm.display.gutters.style.height = (measure.docHeight + cm.display.barHeight + scrollGap(cm)) + "px"; + } + + // Re-align line numbers and gutter marks to compensate for + // horizontal scrolling. + function alignHorizontally(cm) { + var display = cm.display, view = display.view; + if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) { return } + var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft; + var gutterW = display.gutters.offsetWidth, left = comp + "px"; + for (var i = 0; i < view.length; i++) { if (!view[i].hidden) { + if (cm.options.fixedGutter) { + if (view[i].gutter) + { view[i].gutter.style.left = left; } + if (view[i].gutterBackground) + { view[i].gutterBackground.style.left = left; } + } + var align = view[i].alignable; + if (align) { for (var j = 0; j < align.length; j++) + { align[j].style.left = left; } } + } } + if (cm.options.fixedGutter) + { display.gutters.style.left = (comp + gutterW) + "px"; } + } + + // Used to ensure that the line number gutter is still the right + // size for the current document size. Returns true when an update + // is needed. + function maybeUpdateLineNumberWidth(cm) { + if (!cm.options.lineNumbers) { return false } + var doc = cm.doc, last = lineNumberFor(cm.options, doc.first + doc.size - 1), display = cm.display; + if (last.length != display.lineNumChars) { + var test = display.measure.appendChild(elt("div", [elt("div", last)], + "CodeMirror-linenumber CodeMirror-gutter-elt")); + var innerW = test.firstChild.offsetWidth, padding = test.offsetWidth - innerW; + display.lineGutter.style.width = ""; + display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding) + 1; + display.lineNumWidth = display.lineNumInnerWidth + padding; + display.lineNumChars = display.lineNumInnerWidth ? last.length : -1; + display.lineGutter.style.width = display.lineNumWidth + "px"; + updateGutterSpace(cm.display); + return true + } + return false + } + + function getGutters(gutters, lineNumbers) { + var result = [], sawLineNumbers = false; + for (var i = 0; i < gutters.length; i++) { + var name = gutters[i], style = null; + if (typeof name != "string") { style = name.style; name = name.className; } + if (name == "CodeMirror-linenumbers") { + if (!lineNumbers) { continue } + else { sawLineNumbers = true; } + } + result.push({className: name, style: style}); + } + if (lineNumbers && !sawLineNumbers) { result.push({className: "CodeMirror-linenumbers", style: null}); } + return result + } + + // Rebuild the gutter elements, ensure the margin to the left of the + // code matches their width. + function renderGutters(display) { + var gutters = display.gutters, specs = display.gutterSpecs; + removeChildren(gutters); + display.lineGutter = null; + for (var i = 0; i < specs.length; ++i) { + var ref = specs[i]; + var className = ref.className; + var style = ref.style; + var gElt = gutters.appendChild(elt("div", null, "CodeMirror-gutter " + className)); + if (style) { gElt.style.cssText = style; } + if (className == "CodeMirror-linenumbers") { + display.lineGutter = gElt; + gElt.style.width = (display.lineNumWidth || 1) + "px"; + } + } + gutters.style.display = specs.length ? "" : "none"; + updateGutterSpace(display); + } + + function updateGutters(cm) { + renderGutters(cm.display); + regChange(cm); + alignHorizontally(cm); + } + + // The display handles the DOM integration, both for input reading + // and content drawing. It holds references to DOM nodes and + // display-related state. + + function Display(place, doc, input, options) { + var d = this; + this.input = input; + + // Covers bottom-right square when both scrollbars are present. + d.scrollbarFiller = elt("div", null, "CodeMirror-scrollbar-filler"); + d.scrollbarFiller.setAttribute("cm-not-content", "true"); + // Covers bottom of gutter when coverGutterNextToScrollbar is on + // and h scrollbar is present. + d.gutterFiller = elt("div", null, "CodeMirror-gutter-filler"); + d.gutterFiller.setAttribute("cm-not-content", "true"); + // Will contain the actual code, positioned to cover the viewport. + d.lineDiv = eltP("div", null, "CodeMirror-code"); + // Elements are added to these to represent selection and cursors. + d.selectionDiv = elt("div", null, null, "position: relative; z-index: 1"); + d.cursorDiv = elt("div", null, "CodeMirror-cursors"); + // A visibility: hidden element used to find the size of things. + d.measure = elt("div", null, "CodeMirror-measure"); + // When lines outside of the viewport are measured, they are drawn in this. + d.lineMeasure = elt("div", null, "CodeMirror-measure"); + // Wraps everything that needs to exist inside the vertically-padded coordinate system + d.lineSpace = eltP("div", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv], + null, "position: relative; outline: none"); + var lines = eltP("div", [d.lineSpace], "CodeMirror-lines"); + // Moved around its parent to cover visible view. + d.mover = elt("div", [lines], null, "position: relative"); + // Set to the height of the document, allowing scrolling. + d.sizer = elt("div", [d.mover], "CodeMirror-sizer"); + d.sizerWidth = null; + // Behavior of elts with overflow: auto and padding is + // inconsistent across browsers. This is used to ensure the + // scrollable area is big enough. + d.heightForcer = elt("div", null, null, "position: absolute; height: " + scrollerGap + "px; width: 1px;"); + // Will contain the gutters, if any. + d.gutters = elt("div", null, "CodeMirror-gutters"); + d.lineGutter = null; + // Actual scrollable element. + d.scroller = elt("div", [d.sizer, d.heightForcer, d.gutters], "CodeMirror-scroll"); + d.scroller.setAttribute("tabIndex", "-1"); + // The element in which the editor lives. + d.wrapper = elt("div", [d.scrollbarFiller, d.gutterFiller, d.scroller], "CodeMirror"); + + // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported) + if (ie && ie_version < 8) { d.gutters.style.zIndex = -1; d.scroller.style.paddingRight = 0; } + if (!webkit && !(gecko && mobile)) { d.scroller.draggable = true; } + + if (place) { + if (place.appendChild) { place.appendChild(d.wrapper); } + else { place(d.wrapper); } + } + + // Current rendered range (may be bigger than the view window). + d.viewFrom = d.viewTo = doc.first; + d.reportedViewFrom = d.reportedViewTo = doc.first; + // Information about the rendered lines. + d.view = []; + d.renderedView = null; + // Holds info about a single rendered line when it was rendered + // for measurement, while not in view. + d.externalMeasured = null; + // Empty space (in pixels) above the view + d.viewOffset = 0; + d.lastWrapHeight = d.lastWrapWidth = 0; + d.updateLineNumbers = null; + + d.nativeBarWidth = d.barHeight = d.barWidth = 0; + d.scrollbarsClipped = false; + + // Used to only resize the line number gutter when necessary (when + // the amount of lines crosses a boundary that makes its width change) + d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null; + // Set to true when a non-horizontal-scrolling line widget is + // added. As an optimization, line widget aligning is skipped when + // this is false. + d.alignWidgets = false; + + d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null; + + // Tracks the maximum line length so that the horizontal scrollbar + // can be kept static when scrolling. + d.maxLine = null; + d.maxLineLength = 0; + d.maxLineChanged = false; + + // Used for measuring wheel scrolling granularity + d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null; + + // True when shift is held down. + d.shift = false; + + // Used to track whether anything happened since the context menu + // was opened. + d.selForContextMenu = null; + + d.activeTouch = null; + + d.gutterSpecs = getGutters(options.gutters, options.lineNumbers); + renderGutters(d); + + input.init(d); + } + + // Since the delta values reported on mouse wheel events are + // unstandardized between browsers and even browser versions, and + // generally horribly unpredictable, this code starts by measuring + // the scroll effect that the first few mouse wheel events have, + // and, from that, detects the way it can convert deltas to pixel + // offsets afterwards. + // + // The reason we want to know the amount a wheel event will scroll + // is that it gives us a chance to update the display before the + // actual scrolling happens, reducing flickering. + + var wheelSamples = 0, wheelPixelsPerUnit = null; + // Fill in a browser-detected starting value on browsers where we + // know one. These don't have to be accurate -- the result of them + // being wrong would just be a slight flicker on the first wheel + // scroll (if it is large enough). + if (ie) { wheelPixelsPerUnit = -.53; } + else if (gecko) { wheelPixelsPerUnit = 15; } + else if (chrome) { wheelPixelsPerUnit = -.7; } + else if (safari) { wheelPixelsPerUnit = -1/3; } + + function wheelEventDelta(e) { + var dx = e.wheelDeltaX, dy = e.wheelDeltaY; + if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) { dx = e.detail; } + if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) { dy = e.detail; } + else if (dy == null) { dy = e.wheelDelta; } + return {x: dx, y: dy} + } + function wheelEventPixels(e) { + var delta = wheelEventDelta(e); + delta.x *= wheelPixelsPerUnit; + delta.y *= wheelPixelsPerUnit; + return delta + } + + function onScrollWheel(cm, e) { + var delta = wheelEventDelta(e), dx = delta.x, dy = delta.y; + + var display = cm.display, scroll = display.scroller; + // Quit if there's nothing to scroll here + var canScrollX = scroll.scrollWidth > scroll.clientWidth; + var canScrollY = scroll.scrollHeight > scroll.clientHeight; + if (!(dx && canScrollX || dy && canScrollY)) { return } + + // Webkit browsers on OS X abort momentum scrolls when the target + // of the scroll event is removed from the scrollable element. + // This hack (see related code in patchDisplay) makes sure the + // element is kept around. + if (dy && mac && webkit) { + outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) { + for (var i = 0; i < view.length; i++) { + if (view[i].node == cur) { + cm.display.currentWheelTarget = cur; + break outer + } + } + } + } + + // On some browsers, horizontal scrolling will cause redraws to + // happen before the gutter has been realigned, causing it to + // wriggle around in a most unseemly way. When we have an + // estimated pixels/delta value, we just handle horizontal + // scrolling entirely here. It'll be slightly off from native, but + // better than glitching out. + if (dx && !gecko && !presto && wheelPixelsPerUnit != null) { + if (dy && canScrollY) + { updateScrollTop(cm, Math.max(0, scroll.scrollTop + dy * wheelPixelsPerUnit)); } + setScrollLeft(cm, Math.max(0, scroll.scrollLeft + dx * wheelPixelsPerUnit)); + // Only prevent default scrolling if vertical scrolling is + // actually possible. Otherwise, it causes vertical scroll + // jitter on OSX trackpads when deltaX is small and deltaY + // is large (issue #3579) + if (!dy || (dy && canScrollY)) + { e_preventDefault(e); } + display.wheelStartX = null; // Abort measurement, if in progress + return + } + + // 'Project' the visible viewport to cover the area that is being + // scrolled into view (if we know enough to estimate it). + if (dy && wheelPixelsPerUnit != null) { + var pixels = dy * wheelPixelsPerUnit; + var top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight; + if (pixels < 0) { top = Math.max(0, top + pixels - 50); } + else { bot = Math.min(cm.doc.height, bot + pixels + 50); } + updateDisplaySimple(cm, {top: top, bottom: bot}); + } + + if (wheelSamples < 20) { + if (display.wheelStartX == null) { + display.wheelStartX = scroll.scrollLeft; display.wheelStartY = scroll.scrollTop; + display.wheelDX = dx; display.wheelDY = dy; + setTimeout(function () { + if (display.wheelStartX == null) { return } + var movedX = scroll.scrollLeft - display.wheelStartX; + var movedY = scroll.scrollTop - display.wheelStartY; + var sample = (movedY && display.wheelDY && movedY / display.wheelDY) || + (movedX && display.wheelDX && movedX / display.wheelDX); + display.wheelStartX = display.wheelStartY = null; + if (!sample) { return } + wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1); + ++wheelSamples; + }, 200); + } else { + display.wheelDX += dx; display.wheelDY += dy; + } + } + } + + // Selection objects are immutable. A new one is created every time + // the selection changes. A selection is one or more non-overlapping + // (and non-touching) ranges, sorted, and an integer that indicates + // which one is the primary selection (the one that's scrolled into + // view, that getCursor returns, etc). + var Selection = function(ranges, primIndex) { + this.ranges = ranges; + this.primIndex = primIndex; + }; + + Selection.prototype.primary = function () { return this.ranges[this.primIndex] }; + + Selection.prototype.equals = function (other) { + if (other == this) { return true } + if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) { return false } + for (var i = 0; i < this.ranges.length; i++) { + var here = this.ranges[i], there = other.ranges[i]; + if (!equalCursorPos(here.anchor, there.anchor) || !equalCursorPos(here.head, there.head)) { return false } + } + return true + }; + + Selection.prototype.deepCopy = function () { + var out = []; + for (var i = 0; i < this.ranges.length; i++) + { out[i] = new Range(copyPos(this.ranges[i].anchor), copyPos(this.ranges[i].head)); } + return new Selection(out, this.primIndex) + }; + + Selection.prototype.somethingSelected = function () { + for (var i = 0; i < this.ranges.length; i++) + { if (!this.ranges[i].empty()) { return true } } + return false + }; + + Selection.prototype.contains = function (pos, end) { + if (!end) { end = pos; } + for (var i = 0; i < this.ranges.length; i++) { + var range = this.ranges[i]; + if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0) + { return i } + } + return -1 + }; + + var Range = function(anchor, head) { + this.anchor = anchor; this.head = head; + }; + + Range.prototype.from = function () { return minPos(this.anchor, this.head) }; + Range.prototype.to = function () { return maxPos(this.anchor, this.head) }; + Range.prototype.empty = function () { return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch }; + + // Take an unsorted, potentially overlapping set of ranges, and + // build a selection out of it. 'Consumes' ranges array (modifying + // it). + function normalizeSelection(cm, ranges, primIndex) { + var mayTouch = cm && cm.options.selectionsMayTouch; + var prim = ranges[primIndex]; + ranges.sort(function (a, b) { return cmp(a.from(), b.from()); }); + primIndex = indexOf(ranges, prim); + for (var i = 1; i < ranges.length; i++) { + var cur = ranges[i], prev = ranges[i - 1]; + var diff = cmp(prev.to(), cur.from()); + if (mayTouch && !cur.empty() ? diff > 0 : diff >= 0) { + var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to()); + var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head; + if (i <= primIndex) { --primIndex; } + ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to)); + } + } + return new Selection(ranges, primIndex) + } + + function simpleSelection(anchor, head) { + return new Selection([new Range(anchor, head || anchor)], 0) + } + + // Compute the position of the end of a change (its 'to' property + // refers to the pre-change end). + function changeEnd(change) { + if (!change.text) { return change.to } + return Pos(change.from.line + change.text.length - 1, + lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0)) + } + + // Adjust a position to refer to the post-change position of the + // same text, or the end of the change if the change covers it. + function adjustForChange(pos, change) { + if (cmp(pos, change.from) < 0) { return pos } + if (cmp(pos, change.to) <= 0) { return changeEnd(change) } + + var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1, ch = pos.ch; + if (pos.line == change.to.line) { ch += changeEnd(change).ch - change.to.ch; } + return Pos(line, ch) + } + + function computeSelAfterChange(doc, change) { + var out = []; + for (var i = 0; i < doc.sel.ranges.length; i++) { + var range = doc.sel.ranges[i]; + out.push(new Range(adjustForChange(range.anchor, change), + adjustForChange(range.head, change))); + } + return normalizeSelection(doc.cm, out, doc.sel.primIndex) + } + + function offsetPos(pos, old, nw) { + if (pos.line == old.line) + { return Pos(nw.line, pos.ch - old.ch + nw.ch) } + else + { return Pos(nw.line + (pos.line - old.line), pos.ch) } + } + + // Used by replaceSelections to allow moving the selection to the + // start or around the replaced test. Hint may be "start" or "around". + function computeReplacedSel(doc, changes, hint) { + var out = []; + var oldPrev = Pos(doc.first, 0), newPrev = oldPrev; + for (var i = 0; i < changes.length; i++) { + var change = changes[i]; + var from = offsetPos(change.from, oldPrev, newPrev); + var to = offsetPos(changeEnd(change), oldPrev, newPrev); + oldPrev = change.to; + newPrev = to; + if (hint == "around") { + var range = doc.sel.ranges[i], inv = cmp(range.head, range.anchor) < 0; + out[i] = new Range(inv ? to : from, inv ? from : to); + } else { + out[i] = new Range(from, from); + } + } + return new Selection(out, doc.sel.primIndex) + } + + // Used to get the editor into a consistent state again when options change. + + function loadMode(cm) { + cm.doc.mode = getMode(cm.options, cm.doc.modeOption); + resetModeState(cm); + } + + function resetModeState(cm) { + cm.doc.iter(function (line) { + if (line.stateAfter) { line.stateAfter = null; } + if (line.styles) { line.styles = null; } + }); + cm.doc.modeFrontier = cm.doc.highlightFrontier = cm.doc.first; + startWorker(cm, 100); + cm.state.modeGen++; + if (cm.curOp) { regChange(cm); } + } + + // DOCUMENT DATA STRUCTURE + + // By default, updates that start and end at the beginning of a line + // are treated specially, in order to make the association of line + // widgets and marker elements with the text behave more intuitive. + function isWholeLineUpdate(doc, change) { + return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == "" && + (!doc.cm || doc.cm.options.wholeLineUpdateBefore) + } + + // Perform a change on the document data structure. + function updateDoc(doc, change, markedSpans, estimateHeight) { + function spansFor(n) {return markedSpans ? markedSpans[n] : null} + function update(line, text, spans) { + updateLine(line, text, spans, estimateHeight); + signalLater(line, "change", line, change); + } + function linesFor(start, end) { + var result = []; + for (var i = start; i < end; ++i) + { result.push(new Line(text[i], spansFor(i), estimateHeight)); } + return result + } + + var from = change.from, to = change.to, text = change.text; + var firstLine = getLine(doc, from.line), lastLine = getLine(doc, to.line); + var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line; + + // Adjust the line structure + if (change.full) { + doc.insert(0, linesFor(0, text.length)); + doc.remove(text.length, doc.size - text.length); + } else if (isWholeLineUpdate(doc, change)) { + // This is a whole-line replace. Treated specially to make + // sure line objects move the way they are supposed to. + var added = linesFor(0, text.length - 1); + update(lastLine, lastLine.text, lastSpans); + if (nlines) { doc.remove(from.line, nlines); } + if (added.length) { doc.insert(from.line, added); } + } else if (firstLine == lastLine) { + if (text.length == 1) { + update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans); + } else { + var added$1 = linesFor(1, text.length - 1); + added$1.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight)); + update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0)); + doc.insert(from.line + 1, added$1); + } + } else if (text.length == 1) { + update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0)); + doc.remove(from.line + 1, nlines); + } else { + update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0)); + update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans); + var added$2 = linesFor(1, text.length - 1); + if (nlines > 1) { doc.remove(from.line + 1, nlines - 1); } + doc.insert(from.line + 1, added$2); + } + + signalLater(doc, "change", doc, change); + } + + // Call f for all linked documents. + function linkedDocs(doc, f, sharedHistOnly) { + function propagate(doc, skip, sharedHist) { + if (doc.linked) { for (var i = 0; i < doc.linked.length; ++i) { + var rel = doc.linked[i]; + if (rel.doc == skip) { continue } + var shared = sharedHist && rel.sharedHist; + if (sharedHistOnly && !shared) { continue } + f(rel.doc, shared); + propagate(rel.doc, doc, shared); + } } + } + propagate(doc, null, true); + } + + // Attach a document to an editor. + function attachDoc(cm, doc) { + if (doc.cm) { throw new Error("This document is already in use.") } + cm.doc = doc; + doc.cm = cm; + estimateLineHeights(cm); + loadMode(cm); + setDirectionClass(cm); + if (!cm.options.lineWrapping) { findMaxLine(cm); } + cm.options.mode = doc.modeOption; + regChange(cm); + } + + function setDirectionClass(cm) { + (cm.doc.direction == "rtl" ? addClass : rmClass)(cm.display.lineDiv, "CodeMirror-rtl"); + } + + function directionChanged(cm) { + runInOp(cm, function () { + setDirectionClass(cm); + regChange(cm); + }); + } + + function History(startGen) { + // Arrays of change events and selections. Doing something adds an + // event to done and clears undo. Undoing moves events from done + // to undone, redoing moves them in the other direction. + this.done = []; this.undone = []; + this.undoDepth = Infinity; + // Used to track when changes can be merged into a single undo + // event + this.lastModTime = this.lastSelTime = 0; + this.lastOp = this.lastSelOp = null; + this.lastOrigin = this.lastSelOrigin = null; + // Used by the isClean() method + this.generation = this.maxGeneration = startGen || 1; + } + + // Create a history change event from an updateDoc-style change + // object. + function historyChangeFromChange(doc, change) { + var histChange = {from: copyPos(change.from), to: changeEnd(change), text: getBetween(doc, change.from, change.to)}; + attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1); + linkedDocs(doc, function (doc) { return attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1); }, true); + return histChange + } + + // Pop all selection events off the end of a history array. Stop at + // a change event. + function clearSelectionEvents(array) { + while (array.length) { + var last = lst(array); + if (last.ranges) { array.pop(); } + else { break } + } + } + + // Find the top change event in the history. Pop off selection + // events that are in the way. + function lastChangeEvent(hist, force) { + if (force) { + clearSelectionEvents(hist.done); + return lst(hist.done) + } else if (hist.done.length && !lst(hist.done).ranges) { + return lst(hist.done) + } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) { + hist.done.pop(); + return lst(hist.done) + } + } + + // Register a change in the history. Merges changes that are within + // a single operation, or are close together with an origin that + // allows merging (starting with "+") into a single event. + function addChangeToHistory(doc, change, selAfter, opId) { + var hist = doc.history; + hist.undone.length = 0; + var time = +new Date, cur; + var last; + + if ((hist.lastOp == opId || + hist.lastOrigin == change.origin && change.origin && + ((change.origin.charAt(0) == "+" && hist.lastModTime > time - (doc.cm ? doc.cm.options.historyEventDelay : 500)) || + change.origin.charAt(0) == "*")) && + (cur = lastChangeEvent(hist, hist.lastOp == opId))) { + // Merge this change into the last event + last = lst(cur.changes); + if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) { + // Optimized case for simple insertion -- don't want to add + // new changesets for every character typed + last.to = changeEnd(change); + } else { + // Add new sub-event + cur.changes.push(historyChangeFromChange(doc, change)); + } + } else { + // Can not be merged, start a new event. + var before = lst(hist.done); + if (!before || !before.ranges) + { pushSelectionToHistory(doc.sel, hist.done); } + cur = {changes: [historyChangeFromChange(doc, change)], + generation: hist.generation}; + hist.done.push(cur); + while (hist.done.length > hist.undoDepth) { + hist.done.shift(); + if (!hist.done[0].ranges) { hist.done.shift(); } + } + } + hist.done.push(selAfter); + hist.generation = ++hist.maxGeneration; + hist.lastModTime = hist.lastSelTime = time; + hist.lastOp = hist.lastSelOp = opId; + hist.lastOrigin = hist.lastSelOrigin = change.origin; + + if (!last) { signal(doc, "historyAdded"); } + } + + function selectionEventCanBeMerged(doc, origin, prev, sel) { + var ch = origin.charAt(0); + return ch == "*" || + ch == "+" && + prev.ranges.length == sel.ranges.length && + prev.somethingSelected() == sel.somethingSelected() && + new Date - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500) + } + + // Called whenever the selection changes, sets the new selection as + // the pending selection in the history, and pushes the old pending + // selection into the 'done' array when it was significantly + // different (in number of selected ranges, emptiness, or time). + function addSelectionToHistory(doc, sel, opId, options) { + var hist = doc.history, origin = options && options.origin; + + // A new event is started when the previous origin does not match + // the current, or the origins don't allow matching. Origins + // starting with * are always merged, those starting with + are + // merged when similar and close together in time. + if (opId == hist.lastSelOp || + (origin && hist.lastSelOrigin == origin && + (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin || + selectionEventCanBeMerged(doc, origin, lst(hist.done), sel)))) + { hist.done[hist.done.length - 1] = sel; } + else + { pushSelectionToHistory(sel, hist.done); } + + hist.lastSelTime = +new Date; + hist.lastSelOrigin = origin; + hist.lastSelOp = opId; + if (options && options.clearRedo !== false) + { clearSelectionEvents(hist.undone); } + } + + function pushSelectionToHistory(sel, dest) { + var top = lst(dest); + if (!(top && top.ranges && top.equals(sel))) + { dest.push(sel); } + } + + // Used to store marked span information in the history. + function attachLocalSpans(doc, change, from, to) { + var existing = change["spans_" + doc.id], n = 0; + doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function (line) { + if (line.markedSpans) + { (existing || (existing = change["spans_" + doc.id] = {}))[n] = line.markedSpans; } + ++n; + }); + } + + // When un/re-doing restores text containing marked spans, those + // that have been explicitly cleared should not be restored. + function removeClearedSpans(spans) { + if (!spans) { return null } + var out; + for (var i = 0; i < spans.length; ++i) { + if (spans[i].marker.explicitlyCleared) { if (!out) { out = spans.slice(0, i); } } + else if (out) { out.push(spans[i]); } + } + return !out ? spans : out.length ? out : null + } + + // Retrieve and filter the old marked spans stored in a change event. + function getOldSpans(doc, change) { + var found = change["spans_" + doc.id]; + if (!found) { return null } + var nw = []; + for (var i = 0; i < change.text.length; ++i) + { nw.push(removeClearedSpans(found[i])); } + return nw + } + + // Used for un/re-doing changes from the history. Combines the + // result of computing the existing spans with the set of spans that + // existed in the history (so that deleting around a span and then + // undoing brings back the span). + function mergeOldSpans(doc, change) { + var old = getOldSpans(doc, change); + var stretched = stretchSpansOverChange(doc, change); + if (!old) { return stretched } + if (!stretched) { return old } + + for (var i = 0; i < old.length; ++i) { + var oldCur = old[i], stretchCur = stretched[i]; + if (oldCur && stretchCur) { + spans: for (var j = 0; j < stretchCur.length; ++j) { + var span = stretchCur[j]; + for (var k = 0; k < oldCur.length; ++k) + { if (oldCur[k].marker == span.marker) { continue spans } } + oldCur.push(span); + } + } else if (stretchCur) { + old[i] = stretchCur; + } + } + return old + } + + // Used both to provide a JSON-safe object in .getHistory, and, when + // detaching a document, to split the history in two + function copyHistoryArray(events, newGroup, instantiateSel) { + var copy = []; + for (var i = 0; i < events.length; ++i) { + var event = events[i]; + if (event.ranges) { + copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event); + continue + } + var changes = event.changes, newChanges = []; + copy.push({changes: newChanges}); + for (var j = 0; j < changes.length; ++j) { + var change = changes[j], m = (void 0); + newChanges.push({from: change.from, to: change.to, text: change.text}); + if (newGroup) { for (var prop in change) { if (m = prop.match(/^spans_(\d+)$/)) { + if (indexOf(newGroup, Number(m[1])) > -1) { + lst(newChanges)[prop] = change[prop]; + delete change[prop]; + } + } } } + } + } + return copy + } + + // The 'scroll' parameter given to many of these indicated whether + // the new cursor position should be scrolled into view after + // modifying the selection. + + // If shift is held or the extend flag is set, extends a range to + // include a given position (and optionally a second position). + // Otherwise, simply returns the range between the given positions. + // Used for cursor motion and such. + function extendRange(range, head, other, extend) { + if (extend) { + var anchor = range.anchor; + if (other) { + var posBefore = cmp(head, anchor) < 0; + if (posBefore != (cmp(other, anchor) < 0)) { + anchor = head; + head = other; + } else if (posBefore != (cmp(head, other) < 0)) { + head = other; + } + } + return new Range(anchor, head) + } else { + return new Range(other || head, head) + } + } + + // Extend the primary selection range, discard the rest. + function extendSelection(doc, head, other, options, extend) { + if (extend == null) { extend = doc.cm && (doc.cm.display.shift || doc.extend); } + setSelection(doc, new Selection([extendRange(doc.sel.primary(), head, other, extend)], 0), options); + } + + // Extend all selections (pos is an array of selections with length + // equal the number of selections) + function extendSelections(doc, heads, options) { + var out = []; + var extend = doc.cm && (doc.cm.display.shift || doc.extend); + for (var i = 0; i < doc.sel.ranges.length; i++) + { out[i] = extendRange(doc.sel.ranges[i], heads[i], null, extend); } + var newSel = normalizeSelection(doc.cm, out, doc.sel.primIndex); + setSelection(doc, newSel, options); + } + + // Updates a single range in the selection. + function replaceOneSelection(doc, i, range, options) { + var ranges = doc.sel.ranges.slice(0); + ranges[i] = range; + setSelection(doc, normalizeSelection(doc.cm, ranges, doc.sel.primIndex), options); + } + + // Reset the selection to a single range. + function setSimpleSelection(doc, anchor, head, options) { + setSelection(doc, simpleSelection(anchor, head), options); + } + + // Give beforeSelectionChange handlers a change to influence a + // selection update. + function filterSelectionChange(doc, sel, options) { + var obj = { + ranges: sel.ranges, + update: function(ranges) { + this.ranges = []; + for (var i = 0; i < ranges.length; i++) + { this.ranges[i] = new Range(clipPos(doc, ranges[i].anchor), + clipPos(doc, ranges[i].head)); } + }, + origin: options && options.origin + }; + signal(doc, "beforeSelectionChange", doc, obj); + if (doc.cm) { signal(doc.cm, "beforeSelectionChange", doc.cm, obj); } + if (obj.ranges != sel.ranges) { return normalizeSelection(doc.cm, obj.ranges, obj.ranges.length - 1) } + else { return sel } + } + + function setSelectionReplaceHistory(doc, sel, options) { + var done = doc.history.done, last = lst(done); + if (last && last.ranges) { + done[done.length - 1] = sel; + setSelectionNoUndo(doc, sel, options); + } else { + setSelection(doc, sel, options); + } + } + + // Set a new selection. + function setSelection(doc, sel, options) { + setSelectionNoUndo(doc, sel, options); + addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options); + } + + function setSelectionNoUndo(doc, sel, options) { + if (hasHandler(doc, "beforeSelectionChange") || doc.cm && hasHandler(doc.cm, "beforeSelectionChange")) + { sel = filterSelectionChange(doc, sel, options); } + + var bias = options && options.bias || + (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1); + setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true)); + + if (!(options && options.scroll === false) && doc.cm) + { ensureCursorVisible(doc.cm); } + } + + function setSelectionInner(doc, sel) { + if (sel.equals(doc.sel)) { return } + + doc.sel = sel; + + if (doc.cm) { + doc.cm.curOp.updateInput = 1; + doc.cm.curOp.selectionChanged = true; + signalCursorActivity(doc.cm); + } + signalLater(doc, "cursorActivity", doc); + } + + // Verify that the selection does not partially select any atomic + // marked ranges. + function reCheckSelection(doc) { + setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false)); + } + + // Return a selection that does not partially select any atomic + // ranges. + function skipAtomicInSelection(doc, sel, bias, mayClear) { + var out; + for (var i = 0; i < sel.ranges.length; i++) { + var range = sel.ranges[i]; + var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i]; + var newAnchor = skipAtomic(doc, range.anchor, old && old.anchor, bias, mayClear); + var newHead = skipAtomic(doc, range.head, old && old.head, bias, mayClear); + if (out || newAnchor != range.anchor || newHead != range.head) { + if (!out) { out = sel.ranges.slice(0, i); } + out[i] = new Range(newAnchor, newHead); + } + } + return out ? normalizeSelection(doc.cm, out, sel.primIndex) : sel + } + + function skipAtomicInner(doc, pos, oldPos, dir, mayClear) { + var line = getLine(doc, pos.line); + if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) { + var sp = line.markedSpans[i], m = sp.marker; + + // Determine if we should prevent the cursor being placed to the left/right of an atomic marker + // Historically this was determined using the inclusiveLeft/Right option, but the new way to control it + // is with selectLeft/Right + var preventCursorLeft = ("selectLeft" in m) ? !m.selectLeft : m.inclusiveLeft; + var preventCursorRight = ("selectRight" in m) ? !m.selectRight : m.inclusiveRight; + + if ((sp.from == null || (preventCursorLeft ? sp.from <= pos.ch : sp.from < pos.ch)) && + (sp.to == null || (preventCursorRight ? sp.to >= pos.ch : sp.to > pos.ch))) { + if (mayClear) { + signal(m, "beforeCursorEnter"); + if (m.explicitlyCleared) { + if (!line.markedSpans) { break } + else {--i; continue} + } + } + if (!m.atomic) { continue } + + if (oldPos) { + var near = m.find(dir < 0 ? 1 : -1), diff = (void 0); + if (dir < 0 ? preventCursorRight : preventCursorLeft) + { near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null); } + if (near && near.line == pos.line && (diff = cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0)) + { return skipAtomicInner(doc, near, pos, dir, mayClear) } + } + + var far = m.find(dir < 0 ? -1 : 1); + if (dir < 0 ? preventCursorLeft : preventCursorRight) + { far = movePos(doc, far, dir, far.line == pos.line ? line : null); } + return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null + } + } } + return pos + } + + // Ensure a given position is not inside an atomic range. + function skipAtomic(doc, pos, oldPos, bias, mayClear) { + var dir = bias || 1; + var found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) || + (!mayClear && skipAtomicInner(doc, pos, oldPos, dir, true)) || + skipAtomicInner(doc, pos, oldPos, -dir, mayClear) || + (!mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true)); + if (!found) { + doc.cantEdit = true; + return Pos(doc.first, 0) + } + return found + } + + function movePos(doc, pos, dir, line) { + if (dir < 0 && pos.ch == 0) { + if (pos.line > doc.first) { return clipPos(doc, Pos(pos.line - 1)) } + else { return null } + } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) { + if (pos.line < doc.first + doc.size - 1) { return Pos(pos.line + 1, 0) } + else { return null } + } else { + return new Pos(pos.line, pos.ch + dir) + } + } + + function selectAll(cm) { + cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll); + } + + // UPDATING + + // Allow "beforeChange" event handlers to influence a change + function filterChange(doc, change, update) { + var obj = { + canceled: false, + from: change.from, + to: change.to, + text: change.text, + origin: change.origin, + cancel: function () { return obj.canceled = true; } + }; + if (update) { obj.update = function (from, to, text, origin) { + if (from) { obj.from = clipPos(doc, from); } + if (to) { obj.to = clipPos(doc, to); } + if (text) { obj.text = text; } + if (origin !== undefined) { obj.origin = origin; } + }; } + signal(doc, "beforeChange", doc, obj); + if (doc.cm) { signal(doc.cm, "beforeChange", doc.cm, obj); } + + if (obj.canceled) { + if (doc.cm) { doc.cm.curOp.updateInput = 2; } + return null + } + return {from: obj.from, to: obj.to, text: obj.text, origin: obj.origin} + } + + // Apply a change to a document, and add it to the document's + // history, and propagating it to all linked documents. + function makeChange(doc, change, ignoreReadOnly) { + if (doc.cm) { + if (!doc.cm.curOp) { return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly) } + if (doc.cm.state.suppressEdits) { return } + } + + if (hasHandler(doc, "beforeChange") || doc.cm && hasHandler(doc.cm, "beforeChange")) { + change = filterChange(doc, change, true); + if (!change) { return } + } + + // Possibly split or suppress the update based on the presence + // of read-only spans in its range. + var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to); + if (split) { + for (var i = split.length - 1; i >= 0; --i) + { makeChangeInner(doc, {from: split[i].from, to: split[i].to, text: i ? [""] : change.text, origin: change.origin}); } + } else { + makeChangeInner(doc, change); + } + } + + function makeChangeInner(doc, change) { + if (change.text.length == 1 && change.text[0] == "" && cmp(change.from, change.to) == 0) { return } + var selAfter = computeSelAfterChange(doc, change); + addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN); + + makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change)); + var rebased = []; + + linkedDocs(doc, function (doc, sharedHist) { + if (!sharedHist && indexOf(rebased, doc.history) == -1) { + rebaseHist(doc.history, change); + rebased.push(doc.history); + } + makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change)); + }); + } + + // Revert a change stored in a document's history. + function makeChangeFromHistory(doc, type, allowSelectionOnly) { + var suppress = doc.cm && doc.cm.state.suppressEdits; + if (suppress && !allowSelectionOnly) { return } + + var hist = doc.history, event, selAfter = doc.sel; + var source = type == "undo" ? hist.done : hist.undone, dest = type == "undo" ? hist.undone : hist.done; + + // Verify that there is a useable event (so that ctrl-z won't + // needlessly clear selection events) + var i = 0; + for (; i < source.length; i++) { + event = source[i]; + if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges) + { break } + } + if (i == source.length) { return } + hist.lastOrigin = hist.lastSelOrigin = null; + + for (;;) { + event = source.pop(); + if (event.ranges) { + pushSelectionToHistory(event, dest); + if (allowSelectionOnly && !event.equals(doc.sel)) { + setSelection(doc, event, {clearRedo: false}); + return + } + selAfter = event; + } else if (suppress) { + source.push(event); + return + } else { break } + } + + // Build up a reverse change object to add to the opposite history + // stack (redo when undoing, and vice versa). + var antiChanges = []; + pushSelectionToHistory(selAfter, dest); + dest.push({changes: antiChanges, generation: hist.generation}); + hist.generation = event.generation || ++hist.maxGeneration; + + var filter = hasHandler(doc, "beforeChange") || doc.cm && hasHandler(doc.cm, "beforeChange"); + + var loop = function ( i ) { + var change = event.changes[i]; + change.origin = type; + if (filter && !filterChange(doc, change, false)) { + source.length = 0; + return {} + } + + antiChanges.push(historyChangeFromChange(doc, change)); + + var after = i ? computeSelAfterChange(doc, change) : lst(source); + makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change)); + if (!i && doc.cm) { doc.cm.scrollIntoView({from: change.from, to: changeEnd(change)}); } + var rebased = []; + + // Propagate to the linked documents + linkedDocs(doc, function (doc, sharedHist) { + if (!sharedHist && indexOf(rebased, doc.history) == -1) { + rebaseHist(doc.history, change); + rebased.push(doc.history); + } + makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change)); + }); + }; + + for (var i$1 = event.changes.length - 1; i$1 >= 0; --i$1) { + var returned = loop( i$1 ); + + if ( returned ) return returned.v; + } + } + + // Sub-views need their line numbers shifted when text is added + // above or below them in the parent document. + function shiftDoc(doc, distance) { + if (distance == 0) { return } + doc.first += distance; + doc.sel = new Selection(map(doc.sel.ranges, function (range) { return new Range( + Pos(range.anchor.line + distance, range.anchor.ch), + Pos(range.head.line + distance, range.head.ch) + ); }), doc.sel.primIndex); + if (doc.cm) { + regChange(doc.cm, doc.first, doc.first - distance, distance); + for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++) + { regLineChange(doc.cm, l, "gutter"); } + } + } + + // More lower-level change function, handling only a single document + // (not linked ones). + function makeChangeSingleDoc(doc, change, selAfter, spans) { + if (doc.cm && !doc.cm.curOp) + { return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans) } + + if (change.to.line < doc.first) { + shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line)); + return + } + if (change.from.line > doc.lastLine()) { return } + + // Clip the change to the size of this doc + if (change.from.line < doc.first) { + var shift = change.text.length - 1 - (doc.first - change.from.line); + shiftDoc(doc, shift); + change = {from: Pos(doc.first, 0), to: Pos(change.to.line + shift, change.to.ch), + text: [lst(change.text)], origin: change.origin}; + } + var last = doc.lastLine(); + if (change.to.line > last) { + change = {from: change.from, to: Pos(last, getLine(doc, last).text.length), + text: [change.text[0]], origin: change.origin}; + } + + change.removed = getBetween(doc, change.from, change.to); + + if (!selAfter) { selAfter = computeSelAfterChange(doc, change); } + if (doc.cm) { makeChangeSingleDocInEditor(doc.cm, change, spans); } + else { updateDoc(doc, change, spans); } + setSelectionNoUndo(doc, selAfter, sel_dontScroll); + + if (doc.cantEdit && skipAtomic(doc, Pos(doc.firstLine(), 0))) + { doc.cantEdit = false; } + } + + // Handle the interaction of a change to a document with the editor + // that this document is part of. + function makeChangeSingleDocInEditor(cm, change, spans) { + var doc = cm.doc, display = cm.display, from = change.from, to = change.to; + + var recomputeMaxLength = false, checkWidthStart = from.line; + if (!cm.options.lineWrapping) { + checkWidthStart = lineNo(visualLine(getLine(doc, from.line))); + doc.iter(checkWidthStart, to.line + 1, function (line) { + if (line == display.maxLine) { + recomputeMaxLength = true; + return true + } + }); + } + + if (doc.sel.contains(change.from, change.to) > -1) + { signalCursorActivity(cm); } + + updateDoc(doc, change, spans, estimateHeight(cm)); + + if (!cm.options.lineWrapping) { + doc.iter(checkWidthStart, from.line + change.text.length, function (line) { + var len = lineLength(line); + if (len > display.maxLineLength) { + display.maxLine = line; + display.maxLineLength = len; + display.maxLineChanged = true; + recomputeMaxLength = false; + } + }); + if (recomputeMaxLength) { cm.curOp.updateMaxLine = true; } + } + + retreatFrontier(doc, from.line); + startWorker(cm, 400); + + var lendiff = change.text.length - (to.line - from.line) - 1; + // Remember that these lines changed, for updating the display + if (change.full) + { regChange(cm); } + else if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change)) + { regLineChange(cm, from.line, "text"); } + else + { regChange(cm, from.line, to.line + 1, lendiff); } + + var changesHandler = hasHandler(cm, "changes"), changeHandler = hasHandler(cm, "change"); + if (changeHandler || changesHandler) { + var obj = { + from: from, to: to, + text: change.text, + removed: change.removed, + origin: change.origin + }; + if (changeHandler) { signalLater(cm, "change", cm, obj); } + if (changesHandler) { (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj); } + } + cm.display.selForContextMenu = null; + } + + function replaceRange(doc, code, from, to, origin) { + var assign; + + if (!to) { to = from; } + if (cmp(to, from) < 0) { (assign = [to, from], from = assign[0], to = assign[1]); } + if (typeof code == "string") { code = doc.splitLines(code); } + makeChange(doc, {from: from, to: to, text: code, origin: origin}); + } + + // Rebasing/resetting history to deal with externally-sourced changes + + function rebaseHistSelSingle(pos, from, to, diff) { + if (to < pos.line) { + pos.line += diff; + } else if (from < pos.line) { + pos.line = from; + pos.ch = 0; + } + } + + // Tries to rebase an array of history events given a change in the + // document. If the change touches the same lines as the event, the + // event, and everything 'behind' it, is discarded. If the change is + // before the event, the event's positions are updated. Uses a + // copy-on-write scheme for the positions, to avoid having to + // reallocate them all on every rebase, but also avoid problems with + // shared position objects being unsafely updated. + function rebaseHistArray(array, from, to, diff) { + for (var i = 0; i < array.length; ++i) { + var sub = array[i], ok = true; + if (sub.ranges) { + if (!sub.copied) { sub = array[i] = sub.deepCopy(); sub.copied = true; } + for (var j = 0; j < sub.ranges.length; j++) { + rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff); + rebaseHistSelSingle(sub.ranges[j].head, from, to, diff); + } + continue + } + for (var j$1 = 0; j$1 < sub.changes.length; ++j$1) { + var cur = sub.changes[j$1]; + if (to < cur.from.line) { + cur.from = Pos(cur.from.line + diff, cur.from.ch); + cur.to = Pos(cur.to.line + diff, cur.to.ch); + } else if (from <= cur.to.line) { + ok = false; + break + } + } + if (!ok) { + array.splice(0, i + 1); + i = 0; + } + } + } + + function rebaseHist(hist, change) { + var from = change.from.line, to = change.to.line, diff = change.text.length - (to - from) - 1; + rebaseHistArray(hist.done, from, to, diff); + rebaseHistArray(hist.undone, from, to, diff); + } + + // Utility for applying a change to a line by handle or number, + // returning the number and optionally registering the line as + // changed. + function changeLine(doc, handle, changeType, op) { + var no = handle, line = handle; + if (typeof handle == "number") { line = getLine(doc, clipLine(doc, handle)); } + else { no = lineNo(handle); } + if (no == null) { return null } + if (op(line, no) && doc.cm) { regLineChange(doc.cm, no, changeType); } + return line + } + + // The document is represented as a BTree consisting of leaves, with + // chunk of lines in them, and branches, with up to ten leaves or + // other branch nodes below them. The top node is always a branch + // node, and is the document object itself (meaning it has + // additional methods and properties). + // + // All nodes have parent links. The tree is used both to go from + // line numbers to line objects, and to go from objects to numbers. + // It also indexes by height, and is used to convert between height + // and line object, and to find the total height of the document. + // + // See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html + + function LeafChunk(lines) { + this.lines = lines; + this.parent = null; + var height = 0; + for (var i = 0; i < lines.length; ++i) { + lines[i].parent = this; + height += lines[i].height; + } + this.height = height; + } + + LeafChunk.prototype = { + chunkSize: function() { return this.lines.length }, + + // Remove the n lines at offset 'at'. + removeInner: function(at, n) { + for (var i = at, e = at + n; i < e; ++i) { + var line = this.lines[i]; + this.height -= line.height; + cleanUpLine(line); + signalLater(line, "delete"); + } + this.lines.splice(at, n); + }, + + // Helper used to collapse a small branch into a single leaf. + collapse: function(lines) { + lines.push.apply(lines, this.lines); + }, + + // Insert the given array of lines at offset 'at', count them as + // having the given height. + insertInner: function(at, lines, height) { + this.height += height; + this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at)); + for (var i = 0; i < lines.length; ++i) { lines[i].parent = this; } + }, + + // Used to iterate over a part of the tree. + iterN: function(at, n, op) { + for (var e = at + n; at < e; ++at) + { if (op(this.lines[at])) { return true } } + } + }; + + function BranchChunk(children) { + this.children = children; + var size = 0, height = 0; + for (var i = 0; i < children.length; ++i) { + var ch = children[i]; + size += ch.chunkSize(); height += ch.height; + ch.parent = this; + } + this.size = size; + this.height = height; + this.parent = null; + } + + BranchChunk.prototype = { + chunkSize: function() { return this.size }, + + removeInner: function(at, n) { + this.size -= n; + for (var i = 0; i < this.children.length; ++i) { + var child = this.children[i], sz = child.chunkSize(); + if (at < sz) { + var rm = Math.min(n, sz - at), oldHeight = child.height; + child.removeInner(at, rm); + this.height -= oldHeight - child.height; + if (sz == rm) { this.children.splice(i--, 1); child.parent = null; } + if ((n -= rm) == 0) { break } + at = 0; + } else { at -= sz; } + } + // If the result is smaller than 25 lines, ensure that it is a + // single leaf node. + if (this.size - n < 25 && + (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) { + var lines = []; + this.collapse(lines); + this.children = [new LeafChunk(lines)]; + this.children[0].parent = this; + } + }, + + collapse: function(lines) { + for (var i = 0; i < this.children.length; ++i) { this.children[i].collapse(lines); } + }, + + insertInner: function(at, lines, height) { + this.size += lines.length; + this.height += height; + for (var i = 0; i < this.children.length; ++i) { + var child = this.children[i], sz = child.chunkSize(); + if (at <= sz) { + child.insertInner(at, lines, height); + if (child.lines && child.lines.length > 50) { + // To avoid memory thrashing when child.lines is huge (e.g. first view of a large file), it's never spliced. + // Instead, small slices are taken. They're taken in order because sequential memory accesses are fastest. + var remaining = child.lines.length % 25 + 25; + for (var pos = remaining; pos < child.lines.length;) { + var leaf = new LeafChunk(child.lines.slice(pos, pos += 25)); + child.height -= leaf.height; + this.children.splice(++i, 0, leaf); + leaf.parent = this; + } + child.lines = child.lines.slice(0, remaining); + this.maybeSpill(); + } + break + } + at -= sz; + } + }, + + // When a node has grown, check whether it should be split. + maybeSpill: function() { + if (this.children.length <= 10) { return } + var me = this; + do { + var spilled = me.children.splice(me.children.length - 5, 5); + var sibling = new BranchChunk(spilled); + if (!me.parent) { // Become the parent node + var copy = new BranchChunk(me.children); + copy.parent = me; + me.children = [copy, sibling]; + me = copy; + } else { + me.size -= sibling.size; + me.height -= sibling.height; + var myIndex = indexOf(me.parent.children, me); + me.parent.children.splice(myIndex + 1, 0, sibling); + } + sibling.parent = me.parent; + } while (me.children.length > 10) + me.parent.maybeSpill(); + }, + + iterN: function(at, n, op) { + for (var i = 0; i < this.children.length; ++i) { + var child = this.children[i], sz = child.chunkSize(); + if (at < sz) { + var used = Math.min(n, sz - at); + if (child.iterN(at, used, op)) { return true } + if ((n -= used) == 0) { break } + at = 0; + } else { at -= sz; } + } + } + }; + + // Line widgets are block elements displayed above or below a line. + + var LineWidget = function(doc, node, options) { + if (options) { for (var opt in options) { if (options.hasOwnProperty(opt)) + { this[opt] = options[opt]; } } } + this.doc = doc; + this.node = node; + }; + + LineWidget.prototype.clear = function () { + var cm = this.doc.cm, ws = this.line.widgets, line = this.line, no = lineNo(line); + if (no == null || !ws) { return } + for (var i = 0; i < ws.length; ++i) { if (ws[i] == this) { ws.splice(i--, 1); } } + if (!ws.length) { line.widgets = null; } + var height = widgetHeight(this); + updateLineHeight(line, Math.max(0, line.height - height)); + if (cm) { + runInOp(cm, function () { + adjustScrollWhenAboveVisible(cm, line, -height); + regLineChange(cm, no, "widget"); + }); + signalLater(cm, "lineWidgetCleared", cm, this, no); + } + }; + + LineWidget.prototype.changed = function () { + var this$1 = this; + + var oldH = this.height, cm = this.doc.cm, line = this.line; + this.height = null; + var diff = widgetHeight(this) - oldH; + if (!diff) { return } + if (!lineIsHidden(this.doc, line)) { updateLineHeight(line, line.height + diff); } + if (cm) { + runInOp(cm, function () { + cm.curOp.forceUpdate = true; + adjustScrollWhenAboveVisible(cm, line, diff); + signalLater(cm, "lineWidgetChanged", cm, this$1, lineNo(line)); + }); + } + }; + eventMixin(LineWidget); + + function adjustScrollWhenAboveVisible(cm, line, diff) { + if (heightAtLine(line) < ((cm.curOp && cm.curOp.scrollTop) || cm.doc.scrollTop)) + { addToScrollTop(cm, diff); } + } + + function addLineWidget(doc, handle, node, options) { + var widget = new LineWidget(doc, node, options); + var cm = doc.cm; + if (cm && widget.noHScroll) { cm.display.alignWidgets = true; } + changeLine(doc, handle, "widget", function (line) { + var widgets = line.widgets || (line.widgets = []); + if (widget.insertAt == null) { widgets.push(widget); } + else { widgets.splice(Math.min(widgets.length - 1, Math.max(0, widget.insertAt)), 0, widget); } + widget.line = line; + if (cm && !lineIsHidden(doc, line)) { + var aboveVisible = heightAtLine(line) < doc.scrollTop; + updateLineHeight(line, line.height + widgetHeight(widget)); + if (aboveVisible) { addToScrollTop(cm, widget.height); } + cm.curOp.forceUpdate = true; + } + return true + }); + if (cm) { signalLater(cm, "lineWidgetAdded", cm, widget, typeof handle == "number" ? handle : lineNo(handle)); } + return widget + } + + // TEXTMARKERS + + // Created with markText and setBookmark methods. A TextMarker is a + // handle that can be used to clear or find a marked position in the + // document. Line objects hold arrays (markedSpans) containing + // {from, to, marker} object pointing to such marker objects, and + // indicating that such a marker is present on that line. Multiple + // lines may point to the same marker when it spans across lines. + // The spans will have null for their from/to properties when the + // marker continues beyond the start/end of the line. Markers have + // links back to the lines they currently touch. + + // Collapsed markers have unique ids, in order to be able to order + // them, which is needed for uniquely determining an outer marker + // when they overlap (they may nest, but not partially overlap). + var nextMarkerId = 0; + + var TextMarker = function(doc, type) { + this.lines = []; + this.type = type; + this.doc = doc; + this.id = ++nextMarkerId; + }; + + // Clear the marker. + TextMarker.prototype.clear = function () { + if (this.explicitlyCleared) { return } + var cm = this.doc.cm, withOp = cm && !cm.curOp; + if (withOp) { startOperation(cm); } + if (hasHandler(this, "clear")) { + var found = this.find(); + if (found) { signalLater(this, "clear", found.from, found.to); } + } + var min = null, max = null; + for (var i = 0; i < this.lines.length; ++i) { + var line = this.lines[i]; + var span = getMarkedSpanFor(line.markedSpans, this); + if (cm && !this.collapsed) { regLineChange(cm, lineNo(line), "text"); } + else if (cm) { + if (span.to != null) { max = lineNo(line); } + if (span.from != null) { min = lineNo(line); } + } + line.markedSpans = removeMarkedSpan(line.markedSpans, span); + if (span.from == null && this.collapsed && !lineIsHidden(this.doc, line) && cm) + { updateLineHeight(line, textHeight(cm.display)); } + } + if (cm && this.collapsed && !cm.options.lineWrapping) { for (var i$1 = 0; i$1 < this.lines.length; ++i$1) { + var visual = visualLine(this.lines[i$1]), len = lineLength(visual); + if (len > cm.display.maxLineLength) { + cm.display.maxLine = visual; + cm.display.maxLineLength = len; + cm.display.maxLineChanged = true; + } + } } + + if (min != null && cm && this.collapsed) { regChange(cm, min, max + 1); } + this.lines.length = 0; + this.explicitlyCleared = true; + if (this.atomic && this.doc.cantEdit) { + this.doc.cantEdit = false; + if (cm) { reCheckSelection(cm.doc); } + } + if (cm) { signalLater(cm, "markerCleared", cm, this, min, max); } + if (withOp) { endOperation(cm); } + if (this.parent) { this.parent.clear(); } + }; + + // Find the position of the marker in the document. Returns a {from, + // to} object by default. Side can be passed to get a specific side + // -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the + // Pos objects returned contain a line object, rather than a line + // number (used to prevent looking up the same line twice). + TextMarker.prototype.find = function (side, lineObj) { + if (side == null && this.type == "bookmark") { side = 1; } + var from, to; + for (var i = 0; i < this.lines.length; ++i) { + var line = this.lines[i]; + var span = getMarkedSpanFor(line.markedSpans, this); + if (span.from != null) { + from = Pos(lineObj ? line : lineNo(line), span.from); + if (side == -1) { return from } + } + if (span.to != null) { + to = Pos(lineObj ? line : lineNo(line), span.to); + if (side == 1) { return to } + } + } + return from && {from: from, to: to} + }; + + // Signals that the marker's widget changed, and surrounding layout + // should be recomputed. + TextMarker.prototype.changed = function () { + var this$1 = this; + + var pos = this.find(-1, true), widget = this, cm = this.doc.cm; + if (!pos || !cm) { return } + runInOp(cm, function () { + var line = pos.line, lineN = lineNo(pos.line); + var view = findViewForLine(cm, lineN); + if (view) { + clearLineMeasurementCacheFor(view); + cm.curOp.selectionChanged = cm.curOp.forceUpdate = true; + } + cm.curOp.updateMaxLine = true; + if (!lineIsHidden(widget.doc, line) && widget.height != null) { + var oldHeight = widget.height; + widget.height = null; + var dHeight = widgetHeight(widget) - oldHeight; + if (dHeight) + { updateLineHeight(line, line.height + dHeight); } + } + signalLater(cm, "markerChanged", cm, this$1); + }); + }; + + TextMarker.prototype.attachLine = function (line) { + if (!this.lines.length && this.doc.cm) { + var op = this.doc.cm.curOp; + if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1) + { (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this); } + } + this.lines.push(line); + }; + + TextMarker.prototype.detachLine = function (line) { + this.lines.splice(indexOf(this.lines, line), 1); + if (!this.lines.length && this.doc.cm) { + var op = this.doc.cm.curOp + ;(op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this); + } + }; + eventMixin(TextMarker); + + // Create a marker, wire it up to the right lines, and + function markText(doc, from, to, options, type) { + // Shared markers (across linked documents) are handled separately + // (markTextShared will call out to this again, once per + // document). + if (options && options.shared) { return markTextShared(doc, from, to, options, type) } + // Ensure we are in an operation. + if (doc.cm && !doc.cm.curOp) { return operation(doc.cm, markText)(doc, from, to, options, type) } + + var marker = new TextMarker(doc, type), diff = cmp(from, to); + if (options) { copyObj(options, marker, false); } + // Don't connect empty markers unless clearWhenEmpty is false + if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false) + { return marker } + if (marker.replacedWith) { + // Showing up as a widget implies collapsed (widget replaces text) + marker.collapsed = true; + marker.widgetNode = eltP("span", [marker.replacedWith], "CodeMirror-widget"); + if (!options.handleMouseEvents) { marker.widgetNode.setAttribute("cm-ignore-events", "true"); } + if (options.insertLeft) { marker.widgetNode.insertLeft = true; } + } + if (marker.collapsed) { + if (conflictingCollapsedRange(doc, from.line, from, to, marker) || + from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker)) + { throw new Error("Inserting collapsed marker partially overlapping an existing one") } + seeCollapsedSpans(); + } + + if (marker.addToHistory) + { addChangeToHistory(doc, {from: from, to: to, origin: "markText"}, doc.sel, NaN); } + + var curLine = from.line, cm = doc.cm, updateMaxLine; + doc.iter(curLine, to.line + 1, function (line) { + if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine) + { updateMaxLine = true; } + if (marker.collapsed && curLine != from.line) { updateLineHeight(line, 0); } + addMarkedSpan(line, new MarkedSpan(marker, + curLine == from.line ? from.ch : null, + curLine == to.line ? to.ch : null)); + ++curLine; + }); + // lineIsHidden depends on the presence of the spans, so needs a second pass + if (marker.collapsed) { doc.iter(from.line, to.line + 1, function (line) { + if (lineIsHidden(doc, line)) { updateLineHeight(line, 0); } + }); } + + if (marker.clearOnEnter) { on(marker, "beforeCursorEnter", function () { return marker.clear(); }); } + + if (marker.readOnly) { + seeReadOnlySpans(); + if (doc.history.done.length || doc.history.undone.length) + { doc.clearHistory(); } + } + if (marker.collapsed) { + marker.id = ++nextMarkerId; + marker.atomic = true; + } + if (cm) { + // Sync editor state + if (updateMaxLine) { cm.curOp.updateMaxLine = true; } + if (marker.collapsed) + { regChange(cm, from.line, to.line + 1); } + else if (marker.className || marker.startStyle || marker.endStyle || marker.css || + marker.attributes || marker.title) + { for (var i = from.line; i <= to.line; i++) { regLineChange(cm, i, "text"); } } + if (marker.atomic) { reCheckSelection(cm.doc); } + signalLater(cm, "markerAdded", cm, marker); + } + return marker + } + + // SHARED TEXTMARKERS + + // A shared marker spans multiple linked documents. It is + // implemented as a meta-marker-object controlling multiple normal + // markers. + var SharedTextMarker = function(markers, primary) { + this.markers = markers; + this.primary = primary; + for (var i = 0; i < markers.length; ++i) + { markers[i].parent = this; } + }; + + SharedTextMarker.prototype.clear = function () { + if (this.explicitlyCleared) { return } + this.explicitlyCleared = true; + for (var i = 0; i < this.markers.length; ++i) + { this.markers[i].clear(); } + signalLater(this, "clear"); + }; + + SharedTextMarker.prototype.find = function (side, lineObj) { + return this.primary.find(side, lineObj) + }; + eventMixin(SharedTextMarker); + + function markTextShared(doc, from, to, options, type) { + options = copyObj(options); + options.shared = false; + var markers = [markText(doc, from, to, options, type)], primary = markers[0]; + var widget = options.widgetNode; + linkedDocs(doc, function (doc) { + if (widget) { options.widgetNode = widget.cloneNode(true); } + markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type)); + for (var i = 0; i < doc.linked.length; ++i) + { if (doc.linked[i].isParent) { return } } + primary = lst(markers); + }); + return new SharedTextMarker(markers, primary) + } + + function findSharedMarkers(doc) { + return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), function (m) { return m.parent; }) + } + + function copySharedMarkers(doc, markers) { + for (var i = 0; i < markers.length; i++) { + var marker = markers[i], pos = marker.find(); + var mFrom = doc.clipPos(pos.from), mTo = doc.clipPos(pos.to); + if (cmp(mFrom, mTo)) { + var subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type); + marker.markers.push(subMark); + subMark.parent = marker; + } + } + } + + function detachSharedMarkers(markers) { + var loop = function ( i ) { + var marker = markers[i], linked = [marker.primary.doc]; + linkedDocs(marker.primary.doc, function (d) { return linked.push(d); }); + for (var j = 0; j < marker.markers.length; j++) { + var subMarker = marker.markers[j]; + if (indexOf(linked, subMarker.doc) == -1) { + subMarker.parent = null; + marker.markers.splice(j--, 1); + } + } + }; + + for (var i = 0; i < markers.length; i++) loop( i ); + } + + var nextDocId = 0; + var Doc = function(text, mode, firstLine, lineSep, direction) { + if (!(this instanceof Doc)) { return new Doc(text, mode, firstLine, lineSep, direction) } + if (firstLine == null) { firstLine = 0; } + + BranchChunk.call(this, [new LeafChunk([new Line("", null)])]); + this.first = firstLine; + this.scrollTop = this.scrollLeft = 0; + this.cantEdit = false; + this.cleanGeneration = 1; + this.modeFrontier = this.highlightFrontier = firstLine; + var start = Pos(firstLine, 0); + this.sel = simpleSelection(start); + this.history = new History(null); + this.id = ++nextDocId; + this.modeOption = mode; + this.lineSep = lineSep; + this.direction = (direction == "rtl") ? "rtl" : "ltr"; + this.extend = false; + + if (typeof text == "string") { text = this.splitLines(text); } + updateDoc(this, {from: start, to: start, text: text}); + setSelection(this, simpleSelection(start), sel_dontScroll); + }; + + Doc.prototype = createObj(BranchChunk.prototype, { + constructor: Doc, + // Iterate over the document. Supports two forms -- with only one + // argument, it calls that for each line in the document. With + // three, it iterates over the range given by the first two (with + // the second being non-inclusive). + iter: function(from, to, op) { + if (op) { this.iterN(from - this.first, to - from, op); } + else { this.iterN(this.first, this.first + this.size, from); } + }, + + // Non-public interface for adding and removing lines. + insert: function(at, lines) { + var height = 0; + for (var i = 0; i < lines.length; ++i) { height += lines[i].height; } + this.insertInner(at - this.first, lines, height); + }, + remove: function(at, n) { this.removeInner(at - this.first, n); }, + + // From here, the methods are part of the public interface. Most + // are also available from CodeMirror (editor) instances. + + getValue: function(lineSep) { + var lines = getLines(this, this.first, this.first + this.size); + if (lineSep === false) { return lines } + return lines.join(lineSep || this.lineSeparator()) + }, + setValue: docMethodOp(function(code) { + var top = Pos(this.first, 0), last = this.first + this.size - 1; + makeChange(this, {from: top, to: Pos(last, getLine(this, last).text.length), + text: this.splitLines(code), origin: "setValue", full: true}, true); + if (this.cm) { scrollToCoords(this.cm, 0, 0); } + setSelection(this, simpleSelection(top), sel_dontScroll); + }), + replaceRange: function(code, from, to, origin) { + from = clipPos(this, from); + to = to ? clipPos(this, to) : from; + replaceRange(this, code, from, to, origin); + }, + getRange: function(from, to, lineSep) { + var lines = getBetween(this, clipPos(this, from), clipPos(this, to)); + if (lineSep === false) { return lines } + return lines.join(lineSep || this.lineSeparator()) + }, + + getLine: function(line) {var l = this.getLineHandle(line); return l && l.text}, + + getLineHandle: function(line) {if (isLine(this, line)) { return getLine(this, line) }}, + getLineNumber: function(line) {return lineNo(line)}, + + getLineHandleVisualStart: function(line) { + if (typeof line == "number") { line = getLine(this, line); } + return visualLine(line) + }, + + lineCount: function() {return this.size}, + firstLine: function() {return this.first}, + lastLine: function() {return this.first + this.size - 1}, + + clipPos: function(pos) {return clipPos(this, pos)}, + + getCursor: function(start) { + var range = this.sel.primary(), pos; + if (start == null || start == "head") { pos = range.head; } + else if (start == "anchor") { pos = range.anchor; } + else if (start == "end" || start == "to" || start === false) { pos = range.to(); } + else { pos = range.from(); } + return pos + }, + listSelections: function() { return this.sel.ranges }, + somethingSelected: function() {return this.sel.somethingSelected()}, + + setCursor: docMethodOp(function(line, ch, options) { + setSimpleSelection(this, clipPos(this, typeof line == "number" ? Pos(line, ch || 0) : line), null, options); + }), + setSelection: docMethodOp(function(anchor, head, options) { + setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), options); + }), + extendSelection: docMethodOp(function(head, other, options) { + extendSelection(this, clipPos(this, head), other && clipPos(this, other), options); + }), + extendSelections: docMethodOp(function(heads, options) { + extendSelections(this, clipPosArray(this, heads), options); + }), + extendSelectionsBy: docMethodOp(function(f, options) { + var heads = map(this.sel.ranges, f); + extendSelections(this, clipPosArray(this, heads), options); + }), + setSelections: docMethodOp(function(ranges, primary, options) { + if (!ranges.length) { return } + var out = []; + for (var i = 0; i < ranges.length; i++) + { out[i] = new Range(clipPos(this, ranges[i].anchor), + clipPos(this, ranges[i].head)); } + if (primary == null) { primary = Math.min(ranges.length - 1, this.sel.primIndex); } + setSelection(this, normalizeSelection(this.cm, out, primary), options); + }), + addSelection: docMethodOp(function(anchor, head, options) { + var ranges = this.sel.ranges.slice(0); + ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor))); + setSelection(this, normalizeSelection(this.cm, ranges, ranges.length - 1), options); + }), + + getSelection: function(lineSep) { + var ranges = this.sel.ranges, lines; + for (var i = 0; i < ranges.length; i++) { + var sel = getBetween(this, ranges[i].from(), ranges[i].to()); + lines = lines ? lines.concat(sel) : sel; + } + if (lineSep === false) { return lines } + else { return lines.join(lineSep || this.lineSeparator()) } + }, + getSelections: function(lineSep) { + var parts = [], ranges = this.sel.ranges; + for (var i = 0; i < ranges.length; i++) { + var sel = getBetween(this, ranges[i].from(), ranges[i].to()); + if (lineSep !== false) { sel = sel.join(lineSep || this.lineSeparator()); } + parts[i] = sel; + } + return parts + }, + replaceSelection: function(code, collapse, origin) { + var dup = []; + for (var i = 0; i < this.sel.ranges.length; i++) + { dup[i] = code; } + this.replaceSelections(dup, collapse, origin || "+input"); + }, + replaceSelections: docMethodOp(function(code, collapse, origin) { + var changes = [], sel = this.sel; + for (var i = 0; i < sel.ranges.length; i++) { + var range = sel.ranges[i]; + changes[i] = {from: range.from(), to: range.to(), text: this.splitLines(code[i]), origin: origin}; + } + var newSel = collapse && collapse != "end" && computeReplacedSel(this, changes, collapse); + for (var i$1 = changes.length - 1; i$1 >= 0; i$1--) + { makeChange(this, changes[i$1]); } + if (newSel) { setSelectionReplaceHistory(this, newSel); } + else if (this.cm) { ensureCursorVisible(this.cm); } + }), + undo: docMethodOp(function() {makeChangeFromHistory(this, "undo");}), + redo: docMethodOp(function() {makeChangeFromHistory(this, "redo");}), + undoSelection: docMethodOp(function() {makeChangeFromHistory(this, "undo", true);}), + redoSelection: docMethodOp(function() {makeChangeFromHistory(this, "redo", true);}), + + setExtending: function(val) {this.extend = val;}, + getExtending: function() {return this.extend}, + + historySize: function() { + var hist = this.history, done = 0, undone = 0; + for (var i = 0; i < hist.done.length; i++) { if (!hist.done[i].ranges) { ++done; } } + for (var i$1 = 0; i$1 < hist.undone.length; i$1++) { if (!hist.undone[i$1].ranges) { ++undone; } } + return {undo: done, redo: undone} + }, + clearHistory: function() { + var this$1 = this; + + this.history = new History(this.history.maxGeneration); + linkedDocs(this, function (doc) { return doc.history = this$1.history; }, true); + }, + + markClean: function() { + this.cleanGeneration = this.changeGeneration(true); + }, + changeGeneration: function(forceSplit) { + if (forceSplit) + { this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null; } + return this.history.generation + }, + isClean: function (gen) { + return this.history.generation == (gen || this.cleanGeneration) + }, + + getHistory: function() { + return {done: copyHistoryArray(this.history.done), + undone: copyHistoryArray(this.history.undone)} + }, + setHistory: function(histData) { + var hist = this.history = new History(this.history.maxGeneration); + hist.done = copyHistoryArray(histData.done.slice(0), null, true); + hist.undone = copyHistoryArray(histData.undone.slice(0), null, true); + }, + + setGutterMarker: docMethodOp(function(line, gutterID, value) { + return changeLine(this, line, "gutter", function (line) { + var markers = line.gutterMarkers || (line.gutterMarkers = {}); + markers[gutterID] = value; + if (!value && isEmpty(markers)) { line.gutterMarkers = null; } + return true + }) + }), + + clearGutter: docMethodOp(function(gutterID) { + var this$1 = this; + + this.iter(function (line) { + if (line.gutterMarkers && line.gutterMarkers[gutterID]) { + changeLine(this$1, line, "gutter", function () { + line.gutterMarkers[gutterID] = null; + if (isEmpty(line.gutterMarkers)) { line.gutterMarkers = null; } + return true + }); + } + }); + }), + + lineInfo: function(line) { + var n; + if (typeof line == "number") { + if (!isLine(this, line)) { return null } + n = line; + line = getLine(this, line); + if (!line) { return null } + } else { + n = lineNo(line); + if (n == null) { return null } + } + return {line: n, handle: line, text: line.text, gutterMarkers: line.gutterMarkers, + textClass: line.textClass, bgClass: line.bgClass, wrapClass: line.wrapClass, + widgets: line.widgets} + }, + + addLineClass: docMethodOp(function(handle, where, cls) { + return changeLine(this, handle, where == "gutter" ? "gutter" : "class", function (line) { + var prop = where == "text" ? "textClass" + : where == "background" ? "bgClass" + : where == "gutter" ? "gutterClass" : "wrapClass"; + if (!line[prop]) { line[prop] = cls; } + else if (classTest(cls).test(line[prop])) { return false } + else { line[prop] += " " + cls; } + return true + }) + }), + removeLineClass: docMethodOp(function(handle, where, cls) { + return changeLine(this, handle, where == "gutter" ? "gutter" : "class", function (line) { + var prop = where == "text" ? "textClass" + : where == "background" ? "bgClass" + : where == "gutter" ? "gutterClass" : "wrapClass"; + var cur = line[prop]; + if (!cur) { return false } + else if (cls == null) { line[prop] = null; } + else { + var found = cur.match(classTest(cls)); + if (!found) { return false } + var end = found.index + found[0].length; + line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? "" : " ") + cur.slice(end) || null; + } + return true + }) + }), + + addLineWidget: docMethodOp(function(handle, node, options) { + return addLineWidget(this, handle, node, options) + }), + removeLineWidget: function(widget) { widget.clear(); }, + + markText: function(from, to, options) { + return markText(this, clipPos(this, from), clipPos(this, to), options, options && options.type || "range") + }, + setBookmark: function(pos, options) { + var realOpts = {replacedWith: options && (options.nodeType == null ? options.widget : options), + insertLeft: options && options.insertLeft, + clearWhenEmpty: false, shared: options && options.shared, + handleMouseEvents: options && options.handleMouseEvents}; + pos = clipPos(this, pos); + return markText(this, pos, pos, realOpts, "bookmark") + }, + findMarksAt: function(pos) { + pos = clipPos(this, pos); + var markers = [], spans = getLine(this, pos.line).markedSpans; + if (spans) { for (var i = 0; i < spans.length; ++i) { + var span = spans[i]; + if ((span.from == null || span.from <= pos.ch) && + (span.to == null || span.to >= pos.ch)) + { markers.push(span.marker.parent || span.marker); } + } } + return markers + }, + findMarks: function(from, to, filter) { + from = clipPos(this, from); to = clipPos(this, to); + var found = [], lineNo = from.line; + this.iter(from.line, to.line + 1, function (line) { + var spans = line.markedSpans; + if (spans) { for (var i = 0; i < spans.length; i++) { + var span = spans[i]; + if (!(span.to != null && lineNo == from.line && from.ch >= span.to || + span.from == null && lineNo != from.line || + span.from != null && lineNo == to.line && span.from >= to.ch) && + (!filter || filter(span.marker))) + { found.push(span.marker.parent || span.marker); } + } } + ++lineNo; + }); + return found + }, + getAllMarks: function() { + var markers = []; + this.iter(function (line) { + var sps = line.markedSpans; + if (sps) { for (var i = 0; i < sps.length; ++i) + { if (sps[i].from != null) { markers.push(sps[i].marker); } } } + }); + return markers + }, + + posFromIndex: function(off) { + var ch, lineNo = this.first, sepSize = this.lineSeparator().length; + this.iter(function (line) { + var sz = line.text.length + sepSize; + if (sz > off) { ch = off; return true } + off -= sz; + ++lineNo; + }); + return clipPos(this, Pos(lineNo, ch)) + }, + indexFromPos: function (coords) { + coords = clipPos(this, coords); + var index = coords.ch; + if (coords.line < this.first || coords.ch < 0) { return 0 } + var sepSize = this.lineSeparator().length; + this.iter(this.first, coords.line, function (line) { // iter aborts when callback returns a truthy value + index += line.text.length + sepSize; + }); + return index + }, + + copy: function(copyHistory) { + var doc = new Doc(getLines(this, this.first, this.first + this.size), + this.modeOption, this.first, this.lineSep, this.direction); + doc.scrollTop = this.scrollTop; doc.scrollLeft = this.scrollLeft; + doc.sel = this.sel; + doc.extend = false; + if (copyHistory) { + doc.history.undoDepth = this.history.undoDepth; + doc.setHistory(this.getHistory()); + } + return doc + }, + + linkedDoc: function(options) { + if (!options) { options = {}; } + var from = this.first, to = this.first + this.size; + if (options.from != null && options.from > from) { from = options.from; } + if (options.to != null && options.to < to) { to = options.to; } + var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from, this.lineSep, this.direction); + if (options.sharedHist) { copy.history = this.history + ; }(this.linked || (this.linked = [])).push({doc: copy, sharedHist: options.sharedHist}); + copy.linked = [{doc: this, isParent: true, sharedHist: options.sharedHist}]; + copySharedMarkers(copy, findSharedMarkers(this)); + return copy + }, + unlinkDoc: function(other) { + if (other instanceof CodeMirror) { other = other.doc; } + if (this.linked) { for (var i = 0; i < this.linked.length; ++i) { + var link = this.linked[i]; + if (link.doc != other) { continue } + this.linked.splice(i, 1); + other.unlinkDoc(this); + detachSharedMarkers(findSharedMarkers(this)); + break + } } + // If the histories were shared, split them again + if (other.history == this.history) { + var splitIds = [other.id]; + linkedDocs(other, function (doc) { return splitIds.push(doc.id); }, true); + other.history = new History(null); + other.history.done = copyHistoryArray(this.history.done, splitIds); + other.history.undone = copyHistoryArray(this.history.undone, splitIds); + } + }, + iterLinkedDocs: function(f) {linkedDocs(this, f);}, + + getMode: function() {return this.mode}, + getEditor: function() {return this.cm}, + + splitLines: function(str) { + if (this.lineSep) { return str.split(this.lineSep) } + return splitLinesAuto(str) + }, + lineSeparator: function() { return this.lineSep || "\n" }, + + setDirection: docMethodOp(function (dir) { + if (dir != "rtl") { dir = "ltr"; } + if (dir == this.direction) { return } + this.direction = dir; + this.iter(function (line) { return line.order = null; }); + if (this.cm) { directionChanged(this.cm); } + }) + }); + + // Public alias. + Doc.prototype.eachLine = Doc.prototype.iter; + + // Kludge to work around strange IE behavior where it'll sometimes + // re-fire a series of drag-related events right after the drop (#1551) + var lastDrop = 0; + + function onDrop(e) { + var cm = this; + clearDragCursor(cm); + if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) + { return } + e_preventDefault(e); + if (ie) { lastDrop = +new Date; } + var pos = posFromMouse(cm, e, true), files = e.dataTransfer.files; + if (!pos || cm.isReadOnly()) { return } + // Might be a file drop, in which case we simply extract the text + // and insert it. + if (files && files.length && window.FileReader && window.File) { + var n = files.length, text = Array(n), read = 0; + var markAsReadAndPasteIfAllFilesAreRead = function () { + if (++read == n) { + operation(cm, function () { + pos = clipPos(cm.doc, pos); + var change = {from: pos, to: pos, + text: cm.doc.splitLines( + text.filter(function (t) { return t != null; }).join(cm.doc.lineSeparator())), + origin: "paste"}; + makeChange(cm.doc, change); + setSelectionReplaceHistory(cm.doc, simpleSelection(clipPos(cm.doc, pos), clipPos(cm.doc, changeEnd(change)))); + })(); + } + }; + var readTextFromFile = function (file, i) { + if (cm.options.allowDropFileTypes && + indexOf(cm.options.allowDropFileTypes, file.type) == -1) { + markAsReadAndPasteIfAllFilesAreRead(); + return + } + var reader = new FileReader; + reader.onerror = function () { return markAsReadAndPasteIfAllFilesAreRead(); }; + reader.onload = function () { + var content = reader.result; + if (/[\x00-\x08\x0e-\x1f]{2}/.test(content)) { + markAsReadAndPasteIfAllFilesAreRead(); + return + } + text[i] = content; + markAsReadAndPasteIfAllFilesAreRead(); + }; + reader.readAsText(file); + }; + for (var i = 0; i < files.length; i++) { readTextFromFile(files[i], i); } + } else { // Normal drop + // Don't do a replace if the drop happened inside of the selected text. + if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) { + cm.state.draggingText(e); + // Ensure the editor is re-focused + setTimeout(function () { return cm.display.input.focus(); }, 20); + return + } + try { + var text$1 = e.dataTransfer.getData("Text"); + if (text$1) { + var selected; + if (cm.state.draggingText && !cm.state.draggingText.copy) + { selected = cm.listSelections(); } + setSelectionNoUndo(cm.doc, simpleSelection(pos, pos)); + if (selected) { for (var i$1 = 0; i$1 < selected.length; ++i$1) + { replaceRange(cm.doc, "", selected[i$1].anchor, selected[i$1].head, "drag"); } } + cm.replaceSelection(text$1, "around", "paste"); + cm.display.input.focus(); + } + } + catch(e$1){} + } + } + + function onDragStart(cm, e) { + if (ie && (!cm.state.draggingText || +new Date - lastDrop < 100)) { e_stop(e); return } + if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) { return } + + e.dataTransfer.setData("Text", cm.getSelection()); + e.dataTransfer.effectAllowed = "copyMove"; + + // Use dummy image instead of default browsers image. + // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there. + if (e.dataTransfer.setDragImage && !safari) { + var img = elt("img", null, null, "position: fixed; left: 0; top: 0;"); + img.src = "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="; + if (presto) { + img.width = img.height = 1; + cm.display.wrapper.appendChild(img); + // Force a relayout, or Opera won't use our image for some obscure reason + img._top = img.offsetTop; + } + e.dataTransfer.setDragImage(img, 0, 0); + if (presto) { img.parentNode.removeChild(img); } + } + } + + function onDragOver(cm, e) { + var pos = posFromMouse(cm, e); + if (!pos) { return } + var frag = document.createDocumentFragment(); + drawSelectionCursor(cm, pos, frag); + if (!cm.display.dragCursor) { + cm.display.dragCursor = elt("div", null, "CodeMirror-cursors CodeMirror-dragcursors"); + cm.display.lineSpace.insertBefore(cm.display.dragCursor, cm.display.cursorDiv); + } + removeChildrenAndAdd(cm.display.dragCursor, frag); + } + + function clearDragCursor(cm) { + if (cm.display.dragCursor) { + cm.display.lineSpace.removeChild(cm.display.dragCursor); + cm.display.dragCursor = null; + } + } + + // These must be handled carefully, because naively registering a + // handler for each editor will cause the editors to never be + // garbage collected. + + function forEachCodeMirror(f) { + if (!document.getElementsByClassName) { return } + var byClass = document.getElementsByClassName("CodeMirror"), editors = []; + for (var i = 0; i < byClass.length; i++) { + var cm = byClass[i].CodeMirror; + if (cm) { editors.push(cm); } + } + if (editors.length) { editors[0].operation(function () { + for (var i = 0; i < editors.length; i++) { f(editors[i]); } + }); } + } + + var globalsRegistered = false; + function ensureGlobalHandlers() { + if (globalsRegistered) { return } + registerGlobalHandlers(); + globalsRegistered = true; + } + function registerGlobalHandlers() { + // When the window resizes, we need to refresh active editors. + var resizeTimer; + on(window, "resize", function () { + if (resizeTimer == null) { resizeTimer = setTimeout(function () { + resizeTimer = null; + forEachCodeMirror(onResize); + }, 100); } + }); + // When the window loses focus, we want to show the editor as blurred + on(window, "blur", function () { return forEachCodeMirror(onBlur); }); + } + // Called when the window resizes + function onResize(cm) { + var d = cm.display; + // Might be a text scaling operation, clear size caches. + d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null; + d.scrollbarsClipped = false; + cm.setSize(); + } + + var keyNames = { + 3: "Pause", 8: "Backspace", 9: "Tab", 13: "Enter", 16: "Shift", 17: "Ctrl", 18: "Alt", + 19: "Pause", 20: "CapsLock", 27: "Esc", 32: "Space", 33: "PageUp", 34: "PageDown", 35: "End", + 36: "Home", 37: "Left", 38: "Up", 39: "Right", 40: "Down", 44: "PrintScrn", 45: "Insert", + 46: "Delete", 59: ";", 61: "=", 91: "Mod", 92: "Mod", 93: "Mod", + 106: "*", 107: "=", 109: "-", 110: ".", 111: "/", 145: "ScrollLock", + 173: "-", 186: ";", 187: "=", 188: ",", 189: "-", 190: ".", 191: "/", 192: "`", 219: "[", 220: "\\", + 221: "]", 222: "'", 224: "Mod", 63232: "Up", 63233: "Down", 63234: "Left", 63235: "Right", 63272: "Delete", + 63273: "Home", 63275: "End", 63276: "PageUp", 63277: "PageDown", 63302: "Insert" + }; + + // Number keys + for (var i = 0; i < 10; i++) { keyNames[i + 48] = keyNames[i + 96] = String(i); } + // Alphabetic keys + for (var i$1 = 65; i$1 <= 90; i$1++) { keyNames[i$1] = String.fromCharCode(i$1); } + // Function keys + for (var i$2 = 1; i$2 <= 12; i$2++) { keyNames[i$2 + 111] = keyNames[i$2 + 63235] = "F" + i$2; } + + var keyMap = {}; + + keyMap.basic = { + "Left": "goCharLeft", "Right": "goCharRight", "Up": "goLineUp", "Down": "goLineDown", + "End": "goLineEnd", "Home": "goLineStartSmart", "PageUp": "goPageUp", "PageDown": "goPageDown", + "Delete": "delCharAfter", "Backspace": "delCharBefore", "Shift-Backspace": "delCharBefore", + "Tab": "defaultTab", "Shift-Tab": "indentAuto", + "Enter": "newlineAndIndent", "Insert": "toggleOverwrite", + "Esc": "singleSelection" + }; + // Note that the save and find-related commands aren't defined by + // default. User code or addons can define them. Unknown commands + // are simply ignored. + keyMap.pcDefault = { + "Ctrl-A": "selectAll", "Ctrl-D": "deleteLine", "Ctrl-Z": "undo", "Shift-Ctrl-Z": "redo", "Ctrl-Y": "redo", + "Ctrl-Home": "goDocStart", "Ctrl-End": "goDocEnd", "Ctrl-Up": "goLineUp", "Ctrl-Down": "goLineDown", + "Ctrl-Left": "goGroupLeft", "Ctrl-Right": "goGroupRight", "Alt-Left": "goLineStart", "Alt-Right": "goLineEnd", + "Ctrl-Backspace": "delGroupBefore", "Ctrl-Delete": "delGroupAfter", "Ctrl-S": "save", "Ctrl-F": "find", + "Ctrl-G": "findNext", "Shift-Ctrl-G": "findPrev", "Shift-Ctrl-F": "replace", "Shift-Ctrl-R": "replaceAll", + "Ctrl-[": "indentLess", "Ctrl-]": "indentMore", + "Ctrl-U": "undoSelection", "Shift-Ctrl-U": "redoSelection", "Alt-U": "redoSelection", + "fallthrough": "basic" + }; + // Very basic readline/emacs-style bindings, which are standard on Mac. + keyMap.emacsy = { + "Ctrl-F": "goCharRight", "Ctrl-B": "goCharLeft", "Ctrl-P": "goLineUp", "Ctrl-N": "goLineDown", + "Alt-F": "goWordRight", "Alt-B": "goWordLeft", "Ctrl-A": "goLineStart", "Ctrl-E": "goLineEnd", + "Ctrl-V": "goPageDown", "Shift-Ctrl-V": "goPageUp", "Ctrl-D": "delCharAfter", "Ctrl-H": "delCharBefore", + "Alt-D": "delWordAfter", "Alt-Backspace": "delWordBefore", "Ctrl-K": "killLine", "Ctrl-T": "transposeChars", + "Ctrl-O": "openLine" + }; + keyMap.macDefault = { + "Cmd-A": "selectAll", "Cmd-D": "deleteLine", "Cmd-Z": "undo", "Shift-Cmd-Z": "redo", "Cmd-Y": "redo", + "Cmd-Home": "goDocStart", "Cmd-Up": "goDocStart", "Cmd-End": "goDocEnd", "Cmd-Down": "goDocEnd", "Alt-Left": "goGroupLeft", + "Alt-Right": "goGroupRight", "Cmd-Left": "goLineLeft", "Cmd-Right": "goLineRight", "Alt-Backspace": "delGroupBefore", + "Ctrl-Alt-Backspace": "delGroupAfter", "Alt-Delete": "delGroupAfter", "Cmd-S": "save", "Cmd-F": "find", + "Cmd-G": "findNext", "Shift-Cmd-G": "findPrev", "Cmd-Alt-F": "replace", "Shift-Cmd-Alt-F": "replaceAll", + "Cmd-[": "indentLess", "Cmd-]": "indentMore", "Cmd-Backspace": "delWrappedLineLeft", "Cmd-Delete": "delWrappedLineRight", + "Cmd-U": "undoSelection", "Shift-Cmd-U": "redoSelection", "Ctrl-Up": "goDocStart", "Ctrl-Down": "goDocEnd", + "fallthrough": ["basic", "emacsy"] + }; + keyMap["default"] = mac ? keyMap.macDefault : keyMap.pcDefault; + + // KEYMAP DISPATCH + + function normalizeKeyName(name) { + var parts = name.split(/-(?!$)/); + name = parts[parts.length - 1]; + var alt, ctrl, shift, cmd; + for (var i = 0; i < parts.length - 1; i++) { + var mod = parts[i]; + if (/^(cmd|meta|m)$/i.test(mod)) { cmd = true; } + else if (/^a(lt)?$/i.test(mod)) { alt = true; } + else if (/^(c|ctrl|control)$/i.test(mod)) { ctrl = true; } + else if (/^s(hift)?$/i.test(mod)) { shift = true; } + else { throw new Error("Unrecognized modifier name: " + mod) } + } + if (alt) { name = "Alt-" + name; } + if (ctrl) { name = "Ctrl-" + name; } + if (cmd) { name = "Cmd-" + name; } + if (shift) { name = "Shift-" + name; } + return name + } + + // This is a kludge to keep keymaps mostly working as raw objects + // (backwards compatibility) while at the same time support features + // like normalization and multi-stroke key bindings. It compiles a + // new normalized keymap, and then updates the old object to reflect + // this. + function normalizeKeyMap(keymap) { + var copy = {}; + for (var keyname in keymap) { if (keymap.hasOwnProperty(keyname)) { + var value = keymap[keyname]; + if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) { continue } + if (value == "...") { delete keymap[keyname]; continue } + + var keys = map(keyname.split(" "), normalizeKeyName); + for (var i = 0; i < keys.length; i++) { + var val = (void 0), name = (void 0); + if (i == keys.length - 1) { + name = keys.join(" "); + val = value; + } else { + name = keys.slice(0, i + 1).join(" "); + val = "..."; + } + var prev = copy[name]; + if (!prev) { copy[name] = val; } + else if (prev != val) { throw new Error("Inconsistent bindings for " + name) } + } + delete keymap[keyname]; + } } + for (var prop in copy) { keymap[prop] = copy[prop]; } + return keymap + } + + function lookupKey(key, map, handle, context) { + map = getKeyMap(map); + var found = map.call ? map.call(key, context) : map[key]; + if (found === false) { return "nothing" } + if (found === "...") { return "multi" } + if (found != null && handle(found)) { return "handled" } + + if (map.fallthrough) { + if (Object.prototype.toString.call(map.fallthrough) != "[object Array]") + { return lookupKey(key, map.fallthrough, handle, context) } + for (var i = 0; i < map.fallthrough.length; i++) { + var result = lookupKey(key, map.fallthrough[i], handle, context); + if (result) { return result } + } + } + } + + // Modifier key presses don't count as 'real' key presses for the + // purpose of keymap fallthrough. + function isModifierKey(value) { + var name = typeof value == "string" ? value : keyNames[value.keyCode]; + return name == "Ctrl" || name == "Alt" || name == "Shift" || name == "Mod" + } + + function addModifierNames(name, event, noShift) { + var base = name; + if (event.altKey && base != "Alt") { name = "Alt-" + name; } + if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != "Ctrl") { name = "Ctrl-" + name; } + if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != "Mod") { name = "Cmd-" + name; } + if (!noShift && event.shiftKey && base != "Shift") { name = "Shift-" + name; } + return name + } + + // Look up the name of a key as indicated by an event object. + function keyName(event, noShift) { + if (presto && event.keyCode == 34 && event["char"]) { return false } + var name = keyNames[event.keyCode]; + if (name == null || event.altGraphKey) { return false } + // Ctrl-ScrollLock has keyCode 3, same as Ctrl-Pause, + // so we'll use event.code when available (Chrome 48+, FF 38+, Safari 10.1+) + if (event.keyCode == 3 && event.code) { name = event.code; } + return addModifierNames(name, event, noShift) + } + + function getKeyMap(val) { + return typeof val == "string" ? keyMap[val] : val + } + + // Helper for deleting text near the selection(s), used to implement + // backspace, delete, and similar functionality. + function deleteNearSelection(cm, compute) { + var ranges = cm.doc.sel.ranges, kill = []; + // Build up a set of ranges to kill first, merging overlapping + // ranges. + for (var i = 0; i < ranges.length; i++) { + var toKill = compute(ranges[i]); + while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) { + var replaced = kill.pop(); + if (cmp(replaced.from, toKill.from) < 0) { + toKill.from = replaced.from; + break + } + } + kill.push(toKill); + } + // Next, remove those actual ranges. + runInOp(cm, function () { + for (var i = kill.length - 1; i >= 0; i--) + { replaceRange(cm.doc, "", kill[i].from, kill[i].to, "+delete"); } + ensureCursorVisible(cm); + }); + } + + function moveCharLogically(line, ch, dir) { + var target = skipExtendingChars(line.text, ch + dir, dir); + return target < 0 || target > line.text.length ? null : target + } + + function moveLogically(line, start, dir) { + var ch = moveCharLogically(line, start.ch, dir); + return ch == null ? null : new Pos(start.line, ch, dir < 0 ? "after" : "before") + } + + function endOfLine(visually, cm, lineObj, lineNo, dir) { + if (visually) { + if (cm.doc.direction == "rtl") { dir = -dir; } + var order = getOrder(lineObj, cm.doc.direction); + if (order) { + var part = dir < 0 ? lst(order) : order[0]; + var moveInStorageOrder = (dir < 0) == (part.level == 1); + var sticky = moveInStorageOrder ? "after" : "before"; + var ch; + // With a wrapped rtl chunk (possibly spanning multiple bidi parts), + // it could be that the last bidi part is not on the last visual line, + // since visual lines contain content order-consecutive chunks. + // Thus, in rtl, we are looking for the first (content-order) character + // in the rtl chunk that is on the last line (that is, the same line + // as the last (content-order) character). + if (part.level > 0 || cm.doc.direction == "rtl") { + var prep = prepareMeasureForLine(cm, lineObj); + ch = dir < 0 ? lineObj.text.length - 1 : 0; + var targetTop = measureCharPrepared(cm, prep, ch).top; + ch = findFirst(function (ch) { return measureCharPrepared(cm, prep, ch).top == targetTop; }, (dir < 0) == (part.level == 1) ? part.from : part.to - 1, ch); + if (sticky == "before") { ch = moveCharLogically(lineObj, ch, 1); } + } else { ch = dir < 0 ? part.to : part.from; } + return new Pos(lineNo, ch, sticky) + } + } + return new Pos(lineNo, dir < 0 ? lineObj.text.length : 0, dir < 0 ? "before" : "after") + } + + function moveVisually(cm, line, start, dir) { + var bidi = getOrder(line, cm.doc.direction); + if (!bidi) { return moveLogically(line, start, dir) } + if (start.ch >= line.text.length) { + start.ch = line.text.length; + start.sticky = "before"; + } else if (start.ch <= 0) { + start.ch = 0; + start.sticky = "after"; + } + var partPos = getBidiPartAt(bidi, start.ch, start.sticky), part = bidi[partPos]; + if (cm.doc.direction == "ltr" && part.level % 2 == 0 && (dir > 0 ? part.to > start.ch : part.from < start.ch)) { + // Case 1: We move within an ltr part in an ltr editor. Even with wrapped lines, + // nothing interesting happens. + return moveLogically(line, start, dir) + } + + var mv = function (pos, dir) { return moveCharLogically(line, pos instanceof Pos ? pos.ch : pos, dir); }; + var prep; + var getWrappedLineExtent = function (ch) { + if (!cm.options.lineWrapping) { return {begin: 0, end: line.text.length} } + prep = prep || prepareMeasureForLine(cm, line); + return wrappedLineExtentChar(cm, line, prep, ch) + }; + var wrappedLineExtent = getWrappedLineExtent(start.sticky == "before" ? mv(start, -1) : start.ch); + + if (cm.doc.direction == "rtl" || part.level == 1) { + var moveInStorageOrder = (part.level == 1) == (dir < 0); + var ch = mv(start, moveInStorageOrder ? 1 : -1); + if (ch != null && (!moveInStorageOrder ? ch >= part.from && ch >= wrappedLineExtent.begin : ch <= part.to && ch <= wrappedLineExtent.end)) { + // Case 2: We move within an rtl part or in an rtl editor on the same visual line + var sticky = moveInStorageOrder ? "before" : "after"; + return new Pos(start.line, ch, sticky) + } + } + + // Case 3: Could not move within this bidi part in this visual line, so leave + // the current bidi part + + var searchInVisualLine = function (partPos, dir, wrappedLineExtent) { + var getRes = function (ch, moveInStorageOrder) { return moveInStorageOrder + ? new Pos(start.line, mv(ch, 1), "before") + : new Pos(start.line, ch, "after"); }; + + for (; partPos >= 0 && partPos < bidi.length; partPos += dir) { + var part = bidi[partPos]; + var moveInStorageOrder = (dir > 0) == (part.level != 1); + var ch = moveInStorageOrder ? wrappedLineExtent.begin : mv(wrappedLineExtent.end, -1); + if (part.from <= ch && ch < part.to) { return getRes(ch, moveInStorageOrder) } + ch = moveInStorageOrder ? part.from : mv(part.to, -1); + if (wrappedLineExtent.begin <= ch && ch < wrappedLineExtent.end) { return getRes(ch, moveInStorageOrder) } + } + }; + + // Case 3a: Look for other bidi parts on the same visual line + var res = searchInVisualLine(partPos + dir, dir, wrappedLineExtent); + if (res) { return res } + + // Case 3b: Look for other bidi parts on the next visual line + var nextCh = dir > 0 ? wrappedLineExtent.end : mv(wrappedLineExtent.begin, -1); + if (nextCh != null && !(dir > 0 && nextCh == line.text.length)) { + res = searchInVisualLine(dir > 0 ? 0 : bidi.length - 1, dir, getWrappedLineExtent(nextCh)); + if (res) { return res } + } + + // Case 4: Nowhere to move + return null + } + + // Commands are parameter-less actions that can be performed on an + // editor, mostly used for keybindings. + var commands = { + selectAll: selectAll, + singleSelection: function (cm) { return cm.setSelection(cm.getCursor("anchor"), cm.getCursor("head"), sel_dontScroll); }, + killLine: function (cm) { return deleteNearSelection(cm, function (range) { + if (range.empty()) { + var len = getLine(cm.doc, range.head.line).text.length; + if (range.head.ch == len && range.head.line < cm.lastLine()) + { return {from: range.head, to: Pos(range.head.line + 1, 0)} } + else + { return {from: range.head, to: Pos(range.head.line, len)} } + } else { + return {from: range.from(), to: range.to()} + } + }); }, + deleteLine: function (cm) { return deleteNearSelection(cm, function (range) { return ({ + from: Pos(range.from().line, 0), + to: clipPos(cm.doc, Pos(range.to().line + 1, 0)) + }); }); }, + delLineLeft: function (cm) { return deleteNearSelection(cm, function (range) { return ({ + from: Pos(range.from().line, 0), to: range.from() + }); }); }, + delWrappedLineLeft: function (cm) { return deleteNearSelection(cm, function (range) { + var top = cm.charCoords(range.head, "div").top + 5; + var leftPos = cm.coordsChar({left: 0, top: top}, "div"); + return {from: leftPos, to: range.from()} + }); }, + delWrappedLineRight: function (cm) { return deleteNearSelection(cm, function (range) { + var top = cm.charCoords(range.head, "div").top + 5; + var rightPos = cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, "div"); + return {from: range.from(), to: rightPos } + }); }, + undo: function (cm) { return cm.undo(); }, + redo: function (cm) { return cm.redo(); }, + undoSelection: function (cm) { return cm.undoSelection(); }, + redoSelection: function (cm) { return cm.redoSelection(); }, + goDocStart: function (cm) { return cm.extendSelection(Pos(cm.firstLine(), 0)); }, + goDocEnd: function (cm) { return cm.extendSelection(Pos(cm.lastLine())); }, + goLineStart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStart(cm, range.head.line); }, + {origin: "+move", bias: 1} + ); }, + goLineStartSmart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStartSmart(cm, range.head); }, + {origin: "+move", bias: 1} + ); }, + goLineEnd: function (cm) { return cm.extendSelectionsBy(function (range) { return lineEnd(cm, range.head.line); }, + {origin: "+move", bias: -1} + ); }, + goLineRight: function (cm) { return cm.extendSelectionsBy(function (range) { + var top = cm.cursorCoords(range.head, "div").top + 5; + return cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, "div") + }, sel_move); }, + goLineLeft: function (cm) { return cm.extendSelectionsBy(function (range) { + var top = cm.cursorCoords(range.head, "div").top + 5; + return cm.coordsChar({left: 0, top: top}, "div") + }, sel_move); }, + goLineLeftSmart: function (cm) { return cm.extendSelectionsBy(function (range) { + var top = cm.cursorCoords(range.head, "div").top + 5; + var pos = cm.coordsChar({left: 0, top: top}, "div"); + if (pos.ch < cm.getLine(pos.line).search(/\S/)) { return lineStartSmart(cm, range.head) } + return pos + }, sel_move); }, + goLineUp: function (cm) { return cm.moveV(-1, "line"); }, + goLineDown: function (cm) { return cm.moveV(1, "line"); }, + goPageUp: function (cm) { return cm.moveV(-1, "page"); }, + goPageDown: function (cm) { return cm.moveV(1, "page"); }, + goCharLeft: function (cm) { return cm.moveH(-1, "char"); }, + goCharRight: function (cm) { return cm.moveH(1, "char"); }, + goColumnLeft: function (cm) { return cm.moveH(-1, "column"); }, + goColumnRight: function (cm) { return cm.moveH(1, "column"); }, + goWordLeft: function (cm) { return cm.moveH(-1, "word"); }, + goGroupRight: function (cm) { return cm.moveH(1, "group"); }, + goGroupLeft: function (cm) { return cm.moveH(-1, "group"); }, + goWordRight: function (cm) { return cm.moveH(1, "word"); }, + delCharBefore: function (cm) { return cm.deleteH(-1, "codepoint"); }, + delCharAfter: function (cm) { return cm.deleteH(1, "char"); }, + delWordBefore: function (cm) { return cm.deleteH(-1, "word"); }, + delWordAfter: function (cm) { return cm.deleteH(1, "word"); }, + delGroupBefore: function (cm) { return cm.deleteH(-1, "group"); }, + delGroupAfter: function (cm) { return cm.deleteH(1, "group"); }, + indentAuto: function (cm) { return cm.indentSelection("smart"); }, + indentMore: function (cm) { return cm.indentSelection("add"); }, + indentLess: function (cm) { return cm.indentSelection("subtract"); }, + insertTab: function (cm) { return cm.replaceSelection("\t"); }, + insertSoftTab: function (cm) { + var spaces = [], ranges = cm.listSelections(), tabSize = cm.options.tabSize; + for (var i = 0; i < ranges.length; i++) { + var pos = ranges[i].from(); + var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize); + spaces.push(spaceStr(tabSize - col % tabSize)); + } + cm.replaceSelections(spaces); + }, + defaultTab: function (cm) { + if (cm.somethingSelected()) { cm.indentSelection("add"); } + else { cm.execCommand("insertTab"); } + }, + // Swap the two chars left and right of each selection's head. + // Move cursor behind the two swapped characters afterwards. + // + // Doesn't consider line feeds a character. + // Doesn't scan more than one line above to find a character. + // Doesn't do anything on an empty line. + // Doesn't do anything with non-empty selections. + transposeChars: function (cm) { return runInOp(cm, function () { + var ranges = cm.listSelections(), newSel = []; + for (var i = 0; i < ranges.length; i++) { + if (!ranges[i].empty()) { continue } + var cur = ranges[i].head, line = getLine(cm.doc, cur.line).text; + if (line) { + if (cur.ch == line.length) { cur = new Pos(cur.line, cur.ch - 1); } + if (cur.ch > 0) { + cur = new Pos(cur.line, cur.ch + 1); + cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2), + Pos(cur.line, cur.ch - 2), cur, "+transpose"); + } else if (cur.line > cm.doc.first) { + var prev = getLine(cm.doc, cur.line - 1).text; + if (prev) { + cur = new Pos(cur.line, 1); + cm.replaceRange(line.charAt(0) + cm.doc.lineSeparator() + + prev.charAt(prev.length - 1), + Pos(cur.line - 1, prev.length - 1), cur, "+transpose"); + } + } + } + newSel.push(new Range(cur, cur)); + } + cm.setSelections(newSel); + }); }, + newlineAndIndent: function (cm) { return runInOp(cm, function () { + var sels = cm.listSelections(); + for (var i = sels.length - 1; i >= 0; i--) + { cm.replaceRange(cm.doc.lineSeparator(), sels[i].anchor, sels[i].head, "+input"); } + sels = cm.listSelections(); + for (var i$1 = 0; i$1 < sels.length; i$1++) + { cm.indentLine(sels[i$1].from().line, null, true); } + ensureCursorVisible(cm); + }); }, + openLine: function (cm) { return cm.replaceSelection("\n", "start"); }, + toggleOverwrite: function (cm) { return cm.toggleOverwrite(); } + }; + + + function lineStart(cm, lineN) { + var line = getLine(cm.doc, lineN); + var visual = visualLine(line); + if (visual != line) { lineN = lineNo(visual); } + return endOfLine(true, cm, visual, lineN, 1) + } + function lineEnd(cm, lineN) { + var line = getLine(cm.doc, lineN); + var visual = visualLineEnd(line); + if (visual != line) { lineN = lineNo(visual); } + return endOfLine(true, cm, line, lineN, -1) + } + function lineStartSmart(cm, pos) { + var start = lineStart(cm, pos.line); + var line = getLine(cm.doc, start.line); + var order = getOrder(line, cm.doc.direction); + if (!order || order[0].level == 0) { + var firstNonWS = Math.max(start.ch, line.text.search(/\S/)); + var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch; + return Pos(start.line, inWS ? 0 : firstNonWS, start.sticky) + } + return start + } + + // Run a handler that was bound to a key. + function doHandleBinding(cm, bound, dropShift) { + if (typeof bound == "string") { + bound = commands[bound]; + if (!bound) { return false } + } + // Ensure previous input has been read, so that the handler sees a + // consistent view of the document + cm.display.input.ensurePolled(); + var prevShift = cm.display.shift, done = false; + try { + if (cm.isReadOnly()) { cm.state.suppressEdits = true; } + if (dropShift) { cm.display.shift = false; } + done = bound(cm) != Pass; + } finally { + cm.display.shift = prevShift; + cm.state.suppressEdits = false; + } + return done + } + + function lookupKeyForEditor(cm, name, handle) { + for (var i = 0; i < cm.state.keyMaps.length; i++) { + var result = lookupKey(name, cm.state.keyMaps[i], handle, cm); + if (result) { return result } + } + return (cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm)) + || lookupKey(name, cm.options.keyMap, handle, cm) + } + + // Note that, despite the name, this function is also used to check + // for bound mouse clicks. + + var stopSeq = new Delayed; + + function dispatchKey(cm, name, e, handle) { + var seq = cm.state.keySeq; + if (seq) { + if (isModifierKey(name)) { return "handled" } + if (/\'$/.test(name)) + { cm.state.keySeq = null; } + else + { stopSeq.set(50, function () { + if (cm.state.keySeq == seq) { + cm.state.keySeq = null; + cm.display.input.reset(); + } + }); } + if (dispatchKeyInner(cm, seq + " " + name, e, handle)) { return true } + } + return dispatchKeyInner(cm, name, e, handle) + } + + function dispatchKeyInner(cm, name, e, handle) { + var result = lookupKeyForEditor(cm, name, handle); + + if (result == "multi") + { cm.state.keySeq = name; } + if (result == "handled") + { signalLater(cm, "keyHandled", cm, name, e); } + + if (result == "handled" || result == "multi") { + e_preventDefault(e); + restartBlink(cm); + } + + return !!result + } + + // Handle a key from the keydown event. + function handleKeyBinding(cm, e) { + var name = keyName(e, true); + if (!name) { return false } + + if (e.shiftKey && !cm.state.keySeq) { + // First try to resolve full name (including 'Shift-'). Failing + // that, see if there is a cursor-motion command (starting with + // 'go') bound to the keyname without 'Shift-'. + return dispatchKey(cm, "Shift-" + name, e, function (b) { return doHandleBinding(cm, b, true); }) + || dispatchKey(cm, name, e, function (b) { + if (typeof b == "string" ? /^go[A-Z]/.test(b) : b.motion) + { return doHandleBinding(cm, b) } + }) + } else { + return dispatchKey(cm, name, e, function (b) { return doHandleBinding(cm, b); }) + } + } + + // Handle a key from the keypress event + function handleCharBinding(cm, e, ch) { + return dispatchKey(cm, "'" + ch + "'", e, function (b) { return doHandleBinding(cm, b, true); }) + } + + var lastStoppedKey = null; + function onKeyDown(e) { + var cm = this; + if (e.target && e.target != cm.display.input.getField()) { return } + cm.curOp.focus = activeElt(); + if (signalDOMEvent(cm, e)) { return } + // IE does strange things with escape. + if (ie && ie_version < 11 && e.keyCode == 27) { e.returnValue = false; } + var code = e.keyCode; + cm.display.shift = code == 16 || e.shiftKey; + var handled = handleKeyBinding(cm, e); + if (presto) { + lastStoppedKey = handled ? code : null; + // Opera has no cut event... we try to at least catch the key combo + if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey)) + { cm.replaceSelection("", null, "cut"); } + } + if (gecko && !mac && !handled && code == 46 && e.shiftKey && !e.ctrlKey && document.execCommand) + { document.execCommand("cut"); } + + // Turn mouse into crosshair when Alt is held on Mac. + if (code == 18 && !/\bCodeMirror-crosshair\b/.test(cm.display.lineDiv.className)) + { showCrossHair(cm); } + } + + function showCrossHair(cm) { + var lineDiv = cm.display.lineDiv; + addClass(lineDiv, "CodeMirror-crosshair"); + + function up(e) { + if (e.keyCode == 18 || !e.altKey) { + rmClass(lineDiv, "CodeMirror-crosshair"); + off(document, "keyup", up); + off(document, "mouseover", up); + } + } + on(document, "keyup", up); + on(document, "mouseover", up); + } + + function onKeyUp(e) { + if (e.keyCode == 16) { this.doc.sel.shift = false; } + signalDOMEvent(this, e); + } + + function onKeyPress(e) { + var cm = this; + if (e.target && e.target != cm.display.input.getField()) { return } + if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) { return } + var keyCode = e.keyCode, charCode = e.charCode; + if (presto && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return} + if ((presto && (!e.which || e.which < 10)) && handleKeyBinding(cm, e)) { return } + var ch = String.fromCharCode(charCode == null ? keyCode : charCode); + // Some browsers fire keypress events for backspace + if (ch == "\x08") { return } + if (handleCharBinding(cm, e, ch)) { return } + cm.display.input.onKeyPress(e); + } + + var DOUBLECLICK_DELAY = 400; + + var PastClick = function(time, pos, button) { + this.time = time; + this.pos = pos; + this.button = button; + }; + + PastClick.prototype.compare = function (time, pos, button) { + return this.time + DOUBLECLICK_DELAY > time && + cmp(pos, this.pos) == 0 && button == this.button + }; + + var lastClick, lastDoubleClick; + function clickRepeat(pos, button) { + var now = +new Date; + if (lastDoubleClick && lastDoubleClick.compare(now, pos, button)) { + lastClick = lastDoubleClick = null; + return "triple" + } else if (lastClick && lastClick.compare(now, pos, button)) { + lastDoubleClick = new PastClick(now, pos, button); + lastClick = null; + return "double" + } else { + lastClick = new PastClick(now, pos, button); + lastDoubleClick = null; + return "single" + } + } + + // A mouse down can be a single click, double click, triple click, + // start of selection drag, start of text drag, new cursor + // (ctrl-click), rectangle drag (alt-drag), or xwin + // middle-click-paste. Or it might be a click on something we should + // not interfere with, such as a scrollbar or widget. + function onMouseDown(e) { + var cm = this, display = cm.display; + if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) { return } + display.input.ensurePolled(); + display.shift = e.shiftKey; + + if (eventInWidget(display, e)) { + if (!webkit) { + // Briefly turn off draggability, to allow widgets to do + // normal dragging things. + display.scroller.draggable = false; + setTimeout(function () { return display.scroller.draggable = true; }, 100); + } + return + } + if (clickInGutter(cm, e)) { return } + var pos = posFromMouse(cm, e), button = e_button(e), repeat = pos ? clickRepeat(pos, button) : "single"; + window.focus(); + + // #3261: make sure, that we're not starting a second selection + if (button == 1 && cm.state.selectingText) + { cm.state.selectingText(e); } + + if (pos && handleMappedButton(cm, button, pos, repeat, e)) { return } + + if (button == 1) { + if (pos) { leftButtonDown(cm, pos, repeat, e); } + else if (e_target(e) == display.scroller) { e_preventDefault(e); } + } else if (button == 2) { + if (pos) { extendSelection(cm.doc, pos); } + setTimeout(function () { return display.input.focus(); }, 20); + } else if (button == 3) { + if (captureRightClick) { cm.display.input.onContextMenu(e); } + else { delayBlurEvent(cm); } + } + } + + function handleMappedButton(cm, button, pos, repeat, event) { + var name = "Click"; + if (repeat == "double") { name = "Double" + name; } + else if (repeat == "triple") { name = "Triple" + name; } + name = (button == 1 ? "Left" : button == 2 ? "Middle" : "Right") + name; + + return dispatchKey(cm, addModifierNames(name, event), event, function (bound) { + if (typeof bound == "string") { bound = commands[bound]; } + if (!bound) { return false } + var done = false; + try { + if (cm.isReadOnly()) { cm.state.suppressEdits = true; } + done = bound(cm, pos) != Pass; + } finally { + cm.state.suppressEdits = false; + } + return done + }) + } + + function configureMouse(cm, repeat, event) { + var option = cm.getOption("configureMouse"); + var value = option ? option(cm, repeat, event) : {}; + if (value.unit == null) { + var rect = chromeOS ? event.shiftKey && event.metaKey : event.altKey; + value.unit = rect ? "rectangle" : repeat == "single" ? "char" : repeat == "double" ? "word" : "line"; + } + if (value.extend == null || cm.doc.extend) { value.extend = cm.doc.extend || event.shiftKey; } + if (value.addNew == null) { value.addNew = mac ? event.metaKey : event.ctrlKey; } + if (value.moveOnDrag == null) { value.moveOnDrag = !(mac ? event.altKey : event.ctrlKey); } + return value + } + + function leftButtonDown(cm, pos, repeat, event) { + if (ie) { setTimeout(bind(ensureFocus, cm), 0); } + else { cm.curOp.focus = activeElt(); } + + var behavior = configureMouse(cm, repeat, event); + + var sel = cm.doc.sel, contained; + if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() && + repeat == "single" && (contained = sel.contains(pos)) > -1 && + (cmp((contained = sel.ranges[contained]).from(), pos) < 0 || pos.xRel > 0) && + (cmp(contained.to(), pos) > 0 || pos.xRel < 0)) + { leftButtonStartDrag(cm, event, pos, behavior); } + else + { leftButtonSelect(cm, event, pos, behavior); } + } + + // Start a text drag. When it ends, see if any dragging actually + // happen, and treat as a click if it didn't. + function leftButtonStartDrag(cm, event, pos, behavior) { + var display = cm.display, moved = false; + var dragEnd = operation(cm, function (e) { + if (webkit) { display.scroller.draggable = false; } + cm.state.draggingText = false; + off(display.wrapper.ownerDocument, "mouseup", dragEnd); + off(display.wrapper.ownerDocument, "mousemove", mouseMove); + off(display.scroller, "dragstart", dragStart); + off(display.scroller, "drop", dragEnd); + if (!moved) { + e_preventDefault(e); + if (!behavior.addNew) + { extendSelection(cm.doc, pos, null, null, behavior.extend); } + // Work around unexplainable focus problem in IE9 (#2127) and Chrome (#3081) + if ((webkit && !safari) || ie && ie_version == 9) + { setTimeout(function () {display.wrapper.ownerDocument.body.focus({preventScroll: true}); display.input.focus();}, 20); } + else + { display.input.focus(); } + } + }); + var mouseMove = function(e2) { + moved = moved || Math.abs(event.clientX - e2.clientX) + Math.abs(event.clientY - e2.clientY) >= 10; + }; + var dragStart = function () { return moved = true; }; + // Let the drag handler handle this. + if (webkit) { display.scroller.draggable = true; } + cm.state.draggingText = dragEnd; + dragEnd.copy = !behavior.moveOnDrag; + // IE's approach to draggable + if (display.scroller.dragDrop) { display.scroller.dragDrop(); } + on(display.wrapper.ownerDocument, "mouseup", dragEnd); + on(display.wrapper.ownerDocument, "mousemove", mouseMove); + on(display.scroller, "dragstart", dragStart); + on(display.scroller, "drop", dragEnd); + + delayBlurEvent(cm); + setTimeout(function () { return display.input.focus(); }, 20); + } + + function rangeForUnit(cm, pos, unit) { + if (unit == "char") { return new Range(pos, pos) } + if (unit == "word") { return cm.findWordAt(pos) } + if (unit == "line") { return new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))) } + var result = unit(cm, pos); + return new Range(result.from, result.to) + } + + // Normal selection, as opposed to text dragging. + function leftButtonSelect(cm, event, start, behavior) { + var display = cm.display, doc = cm.doc; + e_preventDefault(event); + + var ourRange, ourIndex, startSel = doc.sel, ranges = startSel.ranges; + if (behavior.addNew && !behavior.extend) { + ourIndex = doc.sel.contains(start); + if (ourIndex > -1) + { ourRange = ranges[ourIndex]; } + else + { ourRange = new Range(start, start); } + } else { + ourRange = doc.sel.primary(); + ourIndex = doc.sel.primIndex; + } + + if (behavior.unit == "rectangle") { + if (!behavior.addNew) { ourRange = new Range(start, start); } + start = posFromMouse(cm, event, true, true); + ourIndex = -1; + } else { + var range = rangeForUnit(cm, start, behavior.unit); + if (behavior.extend) + { ourRange = extendRange(ourRange, range.anchor, range.head, behavior.extend); } + else + { ourRange = range; } + } + + if (!behavior.addNew) { + ourIndex = 0; + setSelection(doc, new Selection([ourRange], 0), sel_mouse); + startSel = doc.sel; + } else if (ourIndex == -1) { + ourIndex = ranges.length; + setSelection(doc, normalizeSelection(cm, ranges.concat([ourRange]), ourIndex), + {scroll: false, origin: "*mouse"}); + } else if (ranges.length > 1 && ranges[ourIndex].empty() && behavior.unit == "char" && !behavior.extend) { + setSelection(doc, normalizeSelection(cm, ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0), + {scroll: false, origin: "*mouse"}); + startSel = doc.sel; + } else { + replaceOneSelection(doc, ourIndex, ourRange, sel_mouse); + } + + var lastPos = start; + function extendTo(pos) { + if (cmp(lastPos, pos) == 0) { return } + lastPos = pos; + + if (behavior.unit == "rectangle") { + var ranges = [], tabSize = cm.options.tabSize; + var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize); + var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize); + var left = Math.min(startCol, posCol), right = Math.max(startCol, posCol); + for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line)); + line <= end; line++) { + var text = getLine(doc, line).text, leftPos = findColumn(text, left, tabSize); + if (left == right) + { ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos))); } + else if (text.length > leftPos) + { ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize)))); } + } + if (!ranges.length) { ranges.push(new Range(start, start)); } + setSelection(doc, normalizeSelection(cm, startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex), + {origin: "*mouse", scroll: false}); + cm.scrollIntoView(pos); + } else { + var oldRange = ourRange; + var range = rangeForUnit(cm, pos, behavior.unit); + var anchor = oldRange.anchor, head; + if (cmp(range.anchor, anchor) > 0) { + head = range.head; + anchor = minPos(oldRange.from(), range.anchor); + } else { + head = range.anchor; + anchor = maxPos(oldRange.to(), range.head); + } + var ranges$1 = startSel.ranges.slice(0); + ranges$1[ourIndex] = bidiSimplify(cm, new Range(clipPos(doc, anchor), head)); + setSelection(doc, normalizeSelection(cm, ranges$1, ourIndex), sel_mouse); + } + } + + var editorSize = display.wrapper.getBoundingClientRect(); + // Used to ensure timeout re-tries don't fire when another extend + // happened in the meantime (clearTimeout isn't reliable -- at + // least on Chrome, the timeouts still happen even when cleared, + // if the clear happens after their scheduled firing time). + var counter = 0; + + function extend(e) { + var curCount = ++counter; + var cur = posFromMouse(cm, e, true, behavior.unit == "rectangle"); + if (!cur) { return } + if (cmp(cur, lastPos) != 0) { + cm.curOp.focus = activeElt(); + extendTo(cur); + var visible = visibleLines(display, doc); + if (cur.line >= visible.to || cur.line < visible.from) + { setTimeout(operation(cm, function () {if (counter == curCount) { extend(e); }}), 150); } + } else { + var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0; + if (outside) { setTimeout(operation(cm, function () { + if (counter != curCount) { return } + display.scroller.scrollTop += outside; + extend(e); + }), 50); } + } + } + + function done(e) { + cm.state.selectingText = false; + counter = Infinity; + // If e is null or undefined we interpret this as someone trying + // to explicitly cancel the selection rather than the user + // letting go of the mouse button. + if (e) { + e_preventDefault(e); + display.input.focus(); + } + off(display.wrapper.ownerDocument, "mousemove", move); + off(display.wrapper.ownerDocument, "mouseup", up); + doc.history.lastSelOrigin = null; + } + + var move = operation(cm, function (e) { + if (e.buttons === 0 || !e_button(e)) { done(e); } + else { extend(e); } + }); + var up = operation(cm, done); + cm.state.selectingText = up; + on(display.wrapper.ownerDocument, "mousemove", move); + on(display.wrapper.ownerDocument, "mouseup", up); + } + + // Used when mouse-selecting to adjust the anchor to the proper side + // of a bidi jump depending on the visual position of the head. + function bidiSimplify(cm, range) { + var anchor = range.anchor; + var head = range.head; + var anchorLine = getLine(cm.doc, anchor.line); + if (cmp(anchor, head) == 0 && anchor.sticky == head.sticky) { return range } + var order = getOrder(anchorLine); + if (!order) { return range } + var index = getBidiPartAt(order, anchor.ch, anchor.sticky), part = order[index]; + if (part.from != anchor.ch && part.to != anchor.ch) { return range } + var boundary = index + ((part.from == anchor.ch) == (part.level != 1) ? 0 : 1); + if (boundary == 0 || boundary == order.length) { return range } + + // Compute the relative visual position of the head compared to the + // anchor (<0 is to the left, >0 to the right) + var leftSide; + if (head.line != anchor.line) { + leftSide = (head.line - anchor.line) * (cm.doc.direction == "ltr" ? 1 : -1) > 0; + } else { + var headIndex = getBidiPartAt(order, head.ch, head.sticky); + var dir = headIndex - index || (head.ch - anchor.ch) * (part.level == 1 ? -1 : 1); + if (headIndex == boundary - 1 || headIndex == boundary) + { leftSide = dir < 0; } + else + { leftSide = dir > 0; } + } + + var usePart = order[boundary + (leftSide ? -1 : 0)]; + var from = leftSide == (usePart.level == 1); + var ch = from ? usePart.from : usePart.to, sticky = from ? "after" : "before"; + return anchor.ch == ch && anchor.sticky == sticky ? range : new Range(new Pos(anchor.line, ch, sticky), head) + } + + + // Determines whether an event happened in the gutter, and fires the + // handlers for the corresponding event. + function gutterEvent(cm, e, type, prevent) { + var mX, mY; + if (e.touches) { + mX = e.touches[0].clientX; + mY = e.touches[0].clientY; + } else { + try { mX = e.clientX; mY = e.clientY; } + catch(e$1) { return false } + } + if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) { return false } + if (prevent) { e_preventDefault(e); } + + var display = cm.display; + var lineBox = display.lineDiv.getBoundingClientRect(); + + if (mY > lineBox.bottom || !hasHandler(cm, type)) { return e_defaultPrevented(e) } + mY -= lineBox.top - display.viewOffset; + + for (var i = 0; i < cm.display.gutterSpecs.length; ++i) { + var g = display.gutters.childNodes[i]; + if (g && g.getBoundingClientRect().right >= mX) { + var line = lineAtHeight(cm.doc, mY); + var gutter = cm.display.gutterSpecs[i]; + signal(cm, type, cm, line, gutter.className, e); + return e_defaultPrevented(e) + } + } + } + + function clickInGutter(cm, e) { + return gutterEvent(cm, e, "gutterClick", true) + } + + // CONTEXT MENU HANDLING + + // To make the context menu work, we need to briefly unhide the + // textarea (making it as unobtrusive as possible) to let the + // right-click take effect on it. + function onContextMenu(cm, e) { + if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) { return } + if (signalDOMEvent(cm, e, "contextmenu")) { return } + if (!captureRightClick) { cm.display.input.onContextMenu(e); } + } + + function contextMenuInGutter(cm, e) { + if (!hasHandler(cm, "gutterContextMenu")) { return false } + return gutterEvent(cm, e, "gutterContextMenu", false) + } + + function themeChanged(cm) { + cm.display.wrapper.className = cm.display.wrapper.className.replace(/\s*cm-s-\S+/g, "") + + cm.options.theme.replace(/(^|\s)\s*/g, " cm-s-"); + clearCaches(cm); + } + + var Init = {toString: function(){return "CodeMirror.Init"}}; + + var defaults = {}; + var optionHandlers = {}; + + function defineOptions(CodeMirror) { + var optionHandlers = CodeMirror.optionHandlers; + + function option(name, deflt, handle, notOnInit) { + CodeMirror.defaults[name] = deflt; + if (handle) { optionHandlers[name] = + notOnInit ? function (cm, val, old) {if (old != Init) { handle(cm, val, old); }} : handle; } + } + + CodeMirror.defineOption = option; + + // Passed to option handlers when there is no old value. + CodeMirror.Init = Init; + + // These two are, on init, called from the constructor because they + // have to be initialized before the editor can start at all. + option("value", "", function (cm, val) { return cm.setValue(val); }, true); + option("mode", null, function (cm, val) { + cm.doc.modeOption = val; + loadMode(cm); + }, true); + + option("indentUnit", 2, loadMode, true); + option("indentWithTabs", false); + option("smartIndent", true); + option("tabSize", 4, function (cm) { + resetModeState(cm); + clearCaches(cm); + regChange(cm); + }, true); + + option("lineSeparator", null, function (cm, val) { + cm.doc.lineSep = val; + if (!val) { return } + var newBreaks = [], lineNo = cm.doc.first; + cm.doc.iter(function (line) { + for (var pos = 0;;) { + var found = line.text.indexOf(val, pos); + if (found == -1) { break } + pos = found + val.length; + newBreaks.push(Pos(lineNo, found)); + } + lineNo++; + }); + for (var i = newBreaks.length - 1; i >= 0; i--) + { replaceRange(cm.doc, val, newBreaks[i], Pos(newBreaks[i].line, newBreaks[i].ch + val.length)); } + }); + option("specialChars", /[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b-\u200c\u200e\u200f\u2028\u2029\ufeff\ufff9-\ufffc]/g, function (cm, val, old) { + cm.state.specialChars = new RegExp(val.source + (val.test("\t") ? "" : "|\t"), "g"); + if (old != Init) { cm.refresh(); } + }); + option("specialCharPlaceholder", defaultSpecialCharPlaceholder, function (cm) { return cm.refresh(); }, true); + option("electricChars", true); + option("inputStyle", mobile ? "contenteditable" : "textarea", function () { + throw new Error("inputStyle can not (yet) be changed in a running editor") // FIXME + }, true); + option("spellcheck", false, function (cm, val) { return cm.getInputField().spellcheck = val; }, true); + option("autocorrect", false, function (cm, val) { return cm.getInputField().autocorrect = val; }, true); + option("autocapitalize", false, function (cm, val) { return cm.getInputField().autocapitalize = val; }, true); + option("rtlMoveVisually", !windows); + option("wholeLineUpdateBefore", true); + + option("theme", "default", function (cm) { + themeChanged(cm); + updateGutters(cm); + }, true); + option("keyMap", "default", function (cm, val, old) { + var next = getKeyMap(val); + var prev = old != Init && getKeyMap(old); + if (prev && prev.detach) { prev.detach(cm, next); } + if (next.attach) { next.attach(cm, prev || null); } + }); + option("extraKeys", null); + option("configureMouse", null); + + option("lineWrapping", false, wrappingChanged, true); + option("gutters", [], function (cm, val) { + cm.display.gutterSpecs = getGutters(val, cm.options.lineNumbers); + updateGutters(cm); + }, true); + option("fixedGutter", true, function (cm, val) { + cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + "px" : "0"; + cm.refresh(); + }, true); + option("coverGutterNextToScrollbar", false, function (cm) { return updateScrollbars(cm); }, true); + option("scrollbarStyle", "native", function (cm) { + initScrollbars(cm); + updateScrollbars(cm); + cm.display.scrollbars.setScrollTop(cm.doc.scrollTop); + cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft); + }, true); + option("lineNumbers", false, function (cm, val) { + cm.display.gutterSpecs = getGutters(cm.options.gutters, val); + updateGutters(cm); + }, true); + option("firstLineNumber", 1, updateGutters, true); + option("lineNumberFormatter", function (integer) { return integer; }, updateGutters, true); + option("showCursorWhenSelecting", false, updateSelection, true); + + option("resetSelectionOnContextMenu", true); + option("lineWiseCopyCut", true); + option("pasteLinesPerSelection", true); + option("selectionsMayTouch", false); + + option("readOnly", false, function (cm, val) { + if (val == "nocursor") { + onBlur(cm); + cm.display.input.blur(); + } + cm.display.input.readOnlyChanged(val); + }); + + option("screenReaderLabel", null, function (cm, val) { + val = (val === '') ? null : val; + cm.display.input.screenReaderLabelChanged(val); + }); + + option("disableInput", false, function (cm, val) {if (!val) { cm.display.input.reset(); }}, true); + option("dragDrop", true, dragDropChanged); + option("allowDropFileTypes", null); + + option("cursorBlinkRate", 530); + option("cursorScrollMargin", 0); + option("cursorHeight", 1, updateSelection, true); + option("singleCursorHeightPerLine", true, updateSelection, true); + option("workTime", 100); + option("workDelay", 100); + option("flattenSpans", true, resetModeState, true); + option("addModeClass", false, resetModeState, true); + option("pollInterval", 100); + option("undoDepth", 200, function (cm, val) { return cm.doc.history.undoDepth = val; }); + option("historyEventDelay", 1250); + option("viewportMargin", 10, function (cm) { return cm.refresh(); }, true); + option("maxHighlightLength", 10000, resetModeState, true); + option("moveInputWithCursor", true, function (cm, val) { + if (!val) { cm.display.input.resetPosition(); } + }); + + option("tabindex", null, function (cm, val) { return cm.display.input.getField().tabIndex = val || ""; }); + option("autofocus", null); + option("direction", "ltr", function (cm, val) { return cm.doc.setDirection(val); }, true); + option("phrases", null); + } + + function dragDropChanged(cm, value, old) { + var wasOn = old && old != Init; + if (!value != !wasOn) { + var funcs = cm.display.dragFunctions; + var toggle = value ? on : off; + toggle(cm.display.scroller, "dragstart", funcs.start); + toggle(cm.display.scroller, "dragenter", funcs.enter); + toggle(cm.display.scroller, "dragover", funcs.over); + toggle(cm.display.scroller, "dragleave", funcs.leave); + toggle(cm.display.scroller, "drop", funcs.drop); + } + } + + function wrappingChanged(cm) { + if (cm.options.lineWrapping) { + addClass(cm.display.wrapper, "CodeMirror-wrap"); + cm.display.sizer.style.minWidth = ""; + cm.display.sizerWidth = null; + } else { + rmClass(cm.display.wrapper, "CodeMirror-wrap"); + findMaxLine(cm); + } + estimateLineHeights(cm); + regChange(cm); + clearCaches(cm); + setTimeout(function () { return updateScrollbars(cm); }, 100); + } + + // A CodeMirror instance represents an editor. This is the object + // that user code is usually dealing with. + + function CodeMirror(place, options) { + var this$1 = this; + + if (!(this instanceof CodeMirror)) { return new CodeMirror(place, options) } + + this.options = options = options ? copyObj(options) : {}; + // Determine effective options based on given values and defaults. + copyObj(defaults, options, false); + + var doc = options.value; + if (typeof doc == "string") { doc = new Doc(doc, options.mode, null, options.lineSeparator, options.direction); } + else if (options.mode) { doc.modeOption = options.mode; } + this.doc = doc; + + var input = new CodeMirror.inputStyles[options.inputStyle](this); + var display = this.display = new Display(place, doc, input, options); + display.wrapper.CodeMirror = this; + themeChanged(this); + if (options.lineWrapping) + { this.display.wrapper.className += " CodeMirror-wrap"; } + initScrollbars(this); + + this.state = { + keyMaps: [], // stores maps added by addKeyMap + overlays: [], // highlighting overlays, as added by addOverlay + modeGen: 0, // bumped when mode/overlay changes, used to invalidate highlighting info + overwrite: false, + delayingBlurEvent: false, + focused: false, + suppressEdits: false, // used to disable editing during key handlers when in readOnly mode + pasteIncoming: -1, cutIncoming: -1, // help recognize paste/cut edits in input.poll + selectingText: false, + draggingText: false, + highlight: new Delayed(), // stores highlight worker timeout + keySeq: null, // Unfinished key sequence + specialChars: null + }; + + if (options.autofocus && !mobile) { display.input.focus(); } + + // Override magic textarea content restore that IE sometimes does + // on our hidden textarea on reload + if (ie && ie_version < 11) { setTimeout(function () { return this$1.display.input.reset(true); }, 20); } + + registerEventHandlers(this); + ensureGlobalHandlers(); + + startOperation(this); + this.curOp.forceUpdate = true; + attachDoc(this, doc); + + if ((options.autofocus && !mobile) || this.hasFocus()) + { setTimeout(function () { + if (this$1.hasFocus() && !this$1.state.focused) { onFocus(this$1); } + }, 20); } + else + { onBlur(this); } + + for (var opt in optionHandlers) { if (optionHandlers.hasOwnProperty(opt)) + { optionHandlers[opt](this, options[opt], Init); } } + maybeUpdateLineNumberWidth(this); + if (options.finishInit) { options.finishInit(this); } + for (var i = 0; i < initHooks.length; ++i) { initHooks[i](this); } + endOperation(this); + // Suppress optimizelegibility in Webkit, since it breaks text + // measuring on line wrapping boundaries. + if (webkit && options.lineWrapping && + getComputedStyle(display.lineDiv).textRendering == "optimizelegibility") + { display.lineDiv.style.textRendering = "auto"; } + } + + // The default configuration options. + CodeMirror.defaults = defaults; + // Functions to run when options are changed. + CodeMirror.optionHandlers = optionHandlers; + + // Attach the necessary event handlers when initializing the editor + function registerEventHandlers(cm) { + var d = cm.display; + on(d.scroller, "mousedown", operation(cm, onMouseDown)); + // Older IE's will not fire a second mousedown for a double click + if (ie && ie_version < 11) + { on(d.scroller, "dblclick", operation(cm, function (e) { + if (signalDOMEvent(cm, e)) { return } + var pos = posFromMouse(cm, e); + if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) { return } + e_preventDefault(e); + var word = cm.findWordAt(pos); + extendSelection(cm.doc, word.anchor, word.head); + })); } + else + { on(d.scroller, "dblclick", function (e) { return signalDOMEvent(cm, e) || e_preventDefault(e); }); } + // Some browsers fire contextmenu *after* opening the menu, at + // which point we can't mess with it anymore. Context menu is + // handled in onMouseDown for these browsers. + on(d.scroller, "contextmenu", function (e) { return onContextMenu(cm, e); }); + on(d.input.getField(), "contextmenu", function (e) { + if (!d.scroller.contains(e.target)) { onContextMenu(cm, e); } + }); + + // Used to suppress mouse event handling when a touch happens + var touchFinished, prevTouch = {end: 0}; + function finishTouch() { + if (d.activeTouch) { + touchFinished = setTimeout(function () { return d.activeTouch = null; }, 1000); + prevTouch = d.activeTouch; + prevTouch.end = +new Date; + } + } + function isMouseLikeTouchEvent(e) { + if (e.touches.length != 1) { return false } + var touch = e.touches[0]; + return touch.radiusX <= 1 && touch.radiusY <= 1 + } + function farAway(touch, other) { + if (other.left == null) { return true } + var dx = other.left - touch.left, dy = other.top - touch.top; + return dx * dx + dy * dy > 20 * 20 + } + on(d.scroller, "touchstart", function (e) { + if (!signalDOMEvent(cm, e) && !isMouseLikeTouchEvent(e) && !clickInGutter(cm, e)) { + d.input.ensurePolled(); + clearTimeout(touchFinished); + var now = +new Date; + d.activeTouch = {start: now, moved: false, + prev: now - prevTouch.end <= 300 ? prevTouch : null}; + if (e.touches.length == 1) { + d.activeTouch.left = e.touches[0].pageX; + d.activeTouch.top = e.touches[0].pageY; + } + } + }); + on(d.scroller, "touchmove", function () { + if (d.activeTouch) { d.activeTouch.moved = true; } + }); + on(d.scroller, "touchend", function (e) { + var touch = d.activeTouch; + if (touch && !eventInWidget(d, e) && touch.left != null && + !touch.moved && new Date - touch.start < 300) { + var pos = cm.coordsChar(d.activeTouch, "page"), range; + if (!touch.prev || farAway(touch, touch.prev)) // Single tap + { range = new Range(pos, pos); } + else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) // Double tap + { range = cm.findWordAt(pos); } + else // Triple tap + { range = new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))); } + cm.setSelection(range.anchor, range.head); + cm.focus(); + e_preventDefault(e); + } + finishTouch(); + }); + on(d.scroller, "touchcancel", finishTouch); + + // Sync scrolling between fake scrollbars and real scrollable + // area, ensure viewport is updated when scrolling. + on(d.scroller, "scroll", function () { + if (d.scroller.clientHeight) { + updateScrollTop(cm, d.scroller.scrollTop); + setScrollLeft(cm, d.scroller.scrollLeft, true); + signal(cm, "scroll", cm); + } + }); + + // Listen to wheel events in order to try and update the viewport on time. + on(d.scroller, "mousewheel", function (e) { return onScrollWheel(cm, e); }); + on(d.scroller, "DOMMouseScroll", function (e) { return onScrollWheel(cm, e); }); + + // Prevent wrapper from ever scrolling + on(d.wrapper, "scroll", function () { return d.wrapper.scrollTop = d.wrapper.scrollLeft = 0; }); + + d.dragFunctions = { + enter: function (e) {if (!signalDOMEvent(cm, e)) { e_stop(e); }}, + over: function (e) {if (!signalDOMEvent(cm, e)) { onDragOver(cm, e); e_stop(e); }}, + start: function (e) { return onDragStart(cm, e); }, + drop: operation(cm, onDrop), + leave: function (e) {if (!signalDOMEvent(cm, e)) { clearDragCursor(cm); }} + }; + + var inp = d.input.getField(); + on(inp, "keyup", function (e) { return onKeyUp.call(cm, e); }); + on(inp, "keydown", operation(cm, onKeyDown)); + on(inp, "keypress", operation(cm, onKeyPress)); + on(inp, "focus", function (e) { return onFocus(cm, e); }); + on(inp, "blur", function (e) { return onBlur(cm, e); }); + } + + var initHooks = []; + CodeMirror.defineInitHook = function (f) { return initHooks.push(f); }; + + // Indent the given line. The how parameter can be "smart", + // "add"/null, "subtract", or "prev". When aggressive is false + // (typically set to true for forced single-line indents), empty + // lines are not indented, and places where the mode returns Pass + // are left alone. + function indentLine(cm, n, how, aggressive) { + var doc = cm.doc, state; + if (how == null) { how = "add"; } + if (how == "smart") { + // Fall back to "prev" when the mode doesn't have an indentation + // method. + if (!doc.mode.indent) { how = "prev"; } + else { state = getContextBefore(cm, n).state; } + } + + var tabSize = cm.options.tabSize; + var line = getLine(doc, n), curSpace = countColumn(line.text, null, tabSize); + if (line.stateAfter) { line.stateAfter = null; } + var curSpaceString = line.text.match(/^\s*/)[0], indentation; + if (!aggressive && !/\S/.test(line.text)) { + indentation = 0; + how = "not"; + } else if (how == "smart") { + indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text); + if (indentation == Pass || indentation > 150) { + if (!aggressive) { return } + how = "prev"; + } + } + if (how == "prev") { + if (n > doc.first) { indentation = countColumn(getLine(doc, n-1).text, null, tabSize); } + else { indentation = 0; } + } else if (how == "add") { + indentation = curSpace + cm.options.indentUnit; + } else if (how == "subtract") { + indentation = curSpace - cm.options.indentUnit; + } else if (typeof how == "number") { + indentation = curSpace + how; + } + indentation = Math.max(0, indentation); + + var indentString = "", pos = 0; + if (cm.options.indentWithTabs) + { for (var i = Math.floor(indentation / tabSize); i; --i) {pos += tabSize; indentString += "\t";} } + if (pos < indentation) { indentString += spaceStr(indentation - pos); } + + if (indentString != curSpaceString) { + replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), "+input"); + line.stateAfter = null; + return true + } else { + // Ensure that, if the cursor was in the whitespace at the start + // of the line, it is moved to the end of that space. + for (var i$1 = 0; i$1 < doc.sel.ranges.length; i$1++) { + var range = doc.sel.ranges[i$1]; + if (range.head.line == n && range.head.ch < curSpaceString.length) { + var pos$1 = Pos(n, curSpaceString.length); + replaceOneSelection(doc, i$1, new Range(pos$1, pos$1)); + break + } + } + } + } + + // This will be set to a {lineWise: bool, text: [string]} object, so + // that, when pasting, we know what kind of selections the copied + // text was made out of. + var lastCopied = null; + + function setLastCopied(newLastCopied) { + lastCopied = newLastCopied; + } + + function applyTextInput(cm, inserted, deleted, sel, origin) { + var doc = cm.doc; + cm.display.shift = false; + if (!sel) { sel = doc.sel; } + + var recent = +new Date - 200; + var paste = origin == "paste" || cm.state.pasteIncoming > recent; + var textLines = splitLinesAuto(inserted), multiPaste = null; + // When pasting N lines into N selections, insert one line per selection + if (paste && sel.ranges.length > 1) { + if (lastCopied && lastCopied.text.join("\n") == inserted) { + if (sel.ranges.length % lastCopied.text.length == 0) { + multiPaste = []; + for (var i = 0; i < lastCopied.text.length; i++) + { multiPaste.push(doc.splitLines(lastCopied.text[i])); } + } + } else if (textLines.length == sel.ranges.length && cm.options.pasteLinesPerSelection) { + multiPaste = map(textLines, function (l) { return [l]; }); + } + } + + var updateInput = cm.curOp.updateInput; + // Normal behavior is to insert the new text into every selection + for (var i$1 = sel.ranges.length - 1; i$1 >= 0; i$1--) { + var range = sel.ranges[i$1]; + var from = range.from(), to = range.to(); + if (range.empty()) { + if (deleted && deleted > 0) // Handle deletion + { from = Pos(from.line, from.ch - deleted); } + else if (cm.state.overwrite && !paste) // Handle overwrite + { to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length)); } + else if (paste && lastCopied && lastCopied.lineWise && lastCopied.text.join("\n") == textLines.join("\n")) + { from = to = Pos(from.line, 0); } + } + var changeEvent = {from: from, to: to, text: multiPaste ? multiPaste[i$1 % multiPaste.length] : textLines, + origin: origin || (paste ? "paste" : cm.state.cutIncoming > recent ? "cut" : "+input")}; + makeChange(cm.doc, changeEvent); + signalLater(cm, "inputRead", cm, changeEvent); + } + if (inserted && !paste) + { triggerElectric(cm, inserted); } + + ensureCursorVisible(cm); + if (cm.curOp.updateInput < 2) { cm.curOp.updateInput = updateInput; } + cm.curOp.typing = true; + cm.state.pasteIncoming = cm.state.cutIncoming = -1; + } + + function handlePaste(e, cm) { + var pasted = e.clipboardData && e.clipboardData.getData("Text"); + if (pasted) { + e.preventDefault(); + if (!cm.isReadOnly() && !cm.options.disableInput) + { runInOp(cm, function () { return applyTextInput(cm, pasted, 0, null, "paste"); }); } + return true + } + } + + function triggerElectric(cm, inserted) { + // When an 'electric' character is inserted, immediately trigger a reindent + if (!cm.options.electricChars || !cm.options.smartIndent) { return } + var sel = cm.doc.sel; + + for (var i = sel.ranges.length - 1; i >= 0; i--) { + var range = sel.ranges[i]; + if (range.head.ch > 100 || (i && sel.ranges[i - 1].head.line == range.head.line)) { continue } + var mode = cm.getModeAt(range.head); + var indented = false; + if (mode.electricChars) { + for (var j = 0; j < mode.electricChars.length; j++) + { if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) { + indented = indentLine(cm, range.head.line, "smart"); + break + } } + } else if (mode.electricInput) { + if (mode.electricInput.test(getLine(cm.doc, range.head.line).text.slice(0, range.head.ch))) + { indented = indentLine(cm, range.head.line, "smart"); } + } + if (indented) { signalLater(cm, "electricInput", cm, range.head.line); } + } + } + + function copyableRanges(cm) { + var text = [], ranges = []; + for (var i = 0; i < cm.doc.sel.ranges.length; i++) { + var line = cm.doc.sel.ranges[i].head.line; + var lineRange = {anchor: Pos(line, 0), head: Pos(line + 1, 0)}; + ranges.push(lineRange); + text.push(cm.getRange(lineRange.anchor, lineRange.head)); + } + return {text: text, ranges: ranges} + } + + function disableBrowserMagic(field, spellcheck, autocorrect, autocapitalize) { + field.setAttribute("autocorrect", autocorrect ? "" : "off"); + field.setAttribute("autocapitalize", autocapitalize ? "" : "off"); + field.setAttribute("spellcheck", !!spellcheck); + } + + function hiddenTextarea() { + var te = elt("textarea", null, null, "position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; outline: none"); + var div = elt("div", [te], null, "overflow: hidden; position: relative; width: 3px; height: 0px;"); + // The textarea is kept positioned near the cursor to prevent the + // fact that it'll be scrolled into view on input from scrolling + // our fake cursor out of view. On webkit, when wrap=off, paste is + // very slow. So make the area wide instead. + if (webkit) { te.style.width = "1000px"; } + else { te.setAttribute("wrap", "off"); } + // If border: 0; -- iOS fails to open keyboard (issue #1287) + if (ios) { te.style.border = "1px solid black"; } + disableBrowserMagic(te); + return div + } + + // The publicly visible API. Note that methodOp(f) means + // 'wrap f in an operation, performed on its `this` parameter'. + + // This is not the complete set of editor methods. Most of the + // methods defined on the Doc type are also injected into + // CodeMirror.prototype, for backwards compatibility and + // convenience. + + function addEditorMethods(CodeMirror) { + var optionHandlers = CodeMirror.optionHandlers; + + var helpers = CodeMirror.helpers = {}; + + CodeMirror.prototype = { + constructor: CodeMirror, + focus: function(){window.focus(); this.display.input.focus();}, + + setOption: function(option, value) { + var options = this.options, old = options[option]; + if (options[option] == value && option != "mode") { return } + options[option] = value; + if (optionHandlers.hasOwnProperty(option)) + { operation(this, optionHandlers[option])(this, value, old); } + signal(this, "optionChange", this, option); + }, + + getOption: function(option) {return this.options[option]}, + getDoc: function() {return this.doc}, + + addKeyMap: function(map, bottom) { + this.state.keyMaps[bottom ? "push" : "unshift"](getKeyMap(map)); + }, + removeKeyMap: function(map) { + var maps = this.state.keyMaps; + for (var i = 0; i < maps.length; ++i) + { if (maps[i] == map || maps[i].name == map) { + maps.splice(i, 1); + return true + } } + }, + + addOverlay: methodOp(function(spec, options) { + var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec); + if (mode.startState) { throw new Error("Overlays may not be stateful.") } + insertSorted(this.state.overlays, + {mode: mode, modeSpec: spec, opaque: options && options.opaque, + priority: (options && options.priority) || 0}, + function (overlay) { return overlay.priority; }); + this.state.modeGen++; + regChange(this); + }), + removeOverlay: methodOp(function(spec) { + var overlays = this.state.overlays; + for (var i = 0; i < overlays.length; ++i) { + var cur = overlays[i].modeSpec; + if (cur == spec || typeof spec == "string" && cur.name == spec) { + overlays.splice(i, 1); + this.state.modeGen++; + regChange(this); + return + } + } + }), + + indentLine: methodOp(function(n, dir, aggressive) { + if (typeof dir != "string" && typeof dir != "number") { + if (dir == null) { dir = this.options.smartIndent ? "smart" : "prev"; } + else { dir = dir ? "add" : "subtract"; } + } + if (isLine(this.doc, n)) { indentLine(this, n, dir, aggressive); } + }), + indentSelection: methodOp(function(how) { + var ranges = this.doc.sel.ranges, end = -1; + for (var i = 0; i < ranges.length; i++) { + var range = ranges[i]; + if (!range.empty()) { + var from = range.from(), to = range.to(); + var start = Math.max(end, from.line); + end = Math.min(this.lastLine(), to.line - (to.ch ? 0 : 1)) + 1; + for (var j = start; j < end; ++j) + { indentLine(this, j, how); } + var newRanges = this.doc.sel.ranges; + if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0) + { replaceOneSelection(this.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll); } + } else if (range.head.line > end) { + indentLine(this, range.head.line, how, true); + end = range.head.line; + if (i == this.doc.sel.primIndex) { ensureCursorVisible(this); } + } + } + }), + + // Fetch the parser token for a given character. Useful for hacks + // that want to inspect the mode state (say, for completion). + getTokenAt: function(pos, precise) { + return takeToken(this, pos, precise) + }, + + getLineTokens: function(line, precise) { + return takeToken(this, Pos(line), precise, true) + }, + + getTokenTypeAt: function(pos) { + pos = clipPos(this.doc, pos); + var styles = getLineStyles(this, getLine(this.doc, pos.line)); + var before = 0, after = (styles.length - 1) / 2, ch = pos.ch; + var type; + if (ch == 0) { type = styles[2]; } + else { for (;;) { + var mid = (before + after) >> 1; + if ((mid ? styles[mid * 2 - 1] : 0) >= ch) { after = mid; } + else if (styles[mid * 2 + 1] < ch) { before = mid + 1; } + else { type = styles[mid * 2 + 2]; break } + } } + var cut = type ? type.indexOf("overlay ") : -1; + return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1) + }, + + getModeAt: function(pos) { + var mode = this.doc.mode; + if (!mode.innerMode) { return mode } + return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode + }, + + getHelper: function(pos, type) { + return this.getHelpers(pos, type)[0] + }, + + getHelpers: function(pos, type) { + var found = []; + if (!helpers.hasOwnProperty(type)) { return found } + var help = helpers[type], mode = this.getModeAt(pos); + if (typeof mode[type] == "string") { + if (help[mode[type]]) { found.push(help[mode[type]]); } + } else if (mode[type]) { + for (var i = 0; i < mode[type].length; i++) { + var val = help[mode[type][i]]; + if (val) { found.push(val); } + } + } else if (mode.helperType && help[mode.helperType]) { + found.push(help[mode.helperType]); + } else if (help[mode.name]) { + found.push(help[mode.name]); + } + for (var i$1 = 0; i$1 < help._global.length; i$1++) { + var cur = help._global[i$1]; + if (cur.pred(mode, this) && indexOf(found, cur.val) == -1) + { found.push(cur.val); } + } + return found + }, + + getStateAfter: function(line, precise) { + var doc = this.doc; + line = clipLine(doc, line == null ? doc.first + doc.size - 1: line); + return getContextBefore(this, line + 1, precise).state + }, + + cursorCoords: function(start, mode) { + var pos, range = this.doc.sel.primary(); + if (start == null) { pos = range.head; } + else if (typeof start == "object") { pos = clipPos(this.doc, start); } + else { pos = start ? range.from() : range.to(); } + return cursorCoords(this, pos, mode || "page") + }, + + charCoords: function(pos, mode) { + return charCoords(this, clipPos(this.doc, pos), mode || "page") + }, + + coordsChar: function(coords, mode) { + coords = fromCoordSystem(this, coords, mode || "page"); + return coordsChar(this, coords.left, coords.top) + }, + + lineAtHeight: function(height, mode) { + height = fromCoordSystem(this, {top: height, left: 0}, mode || "page").top; + return lineAtHeight(this.doc, height + this.display.viewOffset) + }, + heightAtLine: function(line, mode, includeWidgets) { + var end = false, lineObj; + if (typeof line == "number") { + var last = this.doc.first + this.doc.size - 1; + if (line < this.doc.first) { line = this.doc.first; } + else if (line > last) { line = last; end = true; } + lineObj = getLine(this.doc, line); + } else { + lineObj = line; + } + return intoCoordSystem(this, lineObj, {top: 0, left: 0}, mode || "page", includeWidgets || end).top + + (end ? this.doc.height - heightAtLine(lineObj) : 0) + }, + + defaultTextHeight: function() { return textHeight(this.display) }, + defaultCharWidth: function() { return charWidth(this.display) }, + + getViewport: function() { return {from: this.display.viewFrom, to: this.display.viewTo}}, + + addWidget: function(pos, node, scroll, vert, horiz) { + var display = this.display; + pos = cursorCoords(this, clipPos(this.doc, pos)); + var top = pos.bottom, left = pos.left; + node.style.position = "absolute"; + node.setAttribute("cm-ignore-events", "true"); + this.display.input.setUneditable(node); + display.sizer.appendChild(node); + if (vert == "over") { + top = pos.top; + } else if (vert == "above" || vert == "near") { + var vspace = Math.max(display.wrapper.clientHeight, this.doc.height), + hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth); + // Default to positioning above (if specified and possible); otherwise default to positioning below + if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight) + { top = pos.top - node.offsetHeight; } + else if (pos.bottom + node.offsetHeight <= vspace) + { top = pos.bottom; } + if (left + node.offsetWidth > hspace) + { left = hspace - node.offsetWidth; } + } + node.style.top = top + "px"; + node.style.left = node.style.right = ""; + if (horiz == "right") { + left = display.sizer.clientWidth - node.offsetWidth; + node.style.right = "0px"; + } else { + if (horiz == "left") { left = 0; } + else if (horiz == "middle") { left = (display.sizer.clientWidth - node.offsetWidth) / 2; } + node.style.left = left + "px"; + } + if (scroll) + { scrollIntoView(this, {left: left, top: top, right: left + node.offsetWidth, bottom: top + node.offsetHeight}); } + }, + + triggerOnKeyDown: methodOp(onKeyDown), + triggerOnKeyPress: methodOp(onKeyPress), + triggerOnKeyUp: onKeyUp, + triggerOnMouseDown: methodOp(onMouseDown), + + execCommand: function(cmd) { + if (commands.hasOwnProperty(cmd)) + { return commands[cmd].call(null, this) } + }, + + triggerElectric: methodOp(function(text) { triggerElectric(this, text); }), + + findPosH: function(from, amount, unit, visually) { + var dir = 1; + if (amount < 0) { dir = -1; amount = -amount; } + var cur = clipPos(this.doc, from); + for (var i = 0; i < amount; ++i) { + cur = findPosH(this.doc, cur, dir, unit, visually); + if (cur.hitSide) { break } + } + return cur + }, + + moveH: methodOp(function(dir, unit) { + var this$1 = this; + + this.extendSelectionsBy(function (range) { + if (this$1.display.shift || this$1.doc.extend || range.empty()) + { return findPosH(this$1.doc, range.head, dir, unit, this$1.options.rtlMoveVisually) } + else + { return dir < 0 ? range.from() : range.to() } + }, sel_move); + }), + + deleteH: methodOp(function(dir, unit) { + var sel = this.doc.sel, doc = this.doc; + if (sel.somethingSelected()) + { doc.replaceSelection("", null, "+delete"); } + else + { deleteNearSelection(this, function (range) { + var other = findPosH(doc, range.head, dir, unit, false); + return dir < 0 ? {from: other, to: range.head} : {from: range.head, to: other} + }); } + }), + + findPosV: function(from, amount, unit, goalColumn) { + var dir = 1, x = goalColumn; + if (amount < 0) { dir = -1; amount = -amount; } + var cur = clipPos(this.doc, from); + for (var i = 0; i < amount; ++i) { + var coords = cursorCoords(this, cur, "div"); + if (x == null) { x = coords.left; } + else { coords.left = x; } + cur = findPosV(this, coords, dir, unit); + if (cur.hitSide) { break } + } + return cur + }, + + moveV: methodOp(function(dir, unit) { + var this$1 = this; + + var doc = this.doc, goals = []; + var collapse = !this.display.shift && !doc.extend && doc.sel.somethingSelected(); + doc.extendSelectionsBy(function (range) { + if (collapse) + { return dir < 0 ? range.from() : range.to() } + var headPos = cursorCoords(this$1, range.head, "div"); + if (range.goalColumn != null) { headPos.left = range.goalColumn; } + goals.push(headPos.left); + var pos = findPosV(this$1, headPos, dir, unit); + if (unit == "page" && range == doc.sel.primary()) + { addToScrollTop(this$1, charCoords(this$1, pos, "div").top - headPos.top); } + return pos + }, sel_move); + if (goals.length) { for (var i = 0; i < doc.sel.ranges.length; i++) + { doc.sel.ranges[i].goalColumn = goals[i]; } } + }), + + // Find the word at the given position (as returned by coordsChar). + findWordAt: function(pos) { + var doc = this.doc, line = getLine(doc, pos.line).text; + var start = pos.ch, end = pos.ch; + if (line) { + var helper = this.getHelper(pos, "wordChars"); + if ((pos.sticky == "before" || end == line.length) && start) { --start; } else { ++end; } + var startChar = line.charAt(start); + var check = isWordChar(startChar, helper) + ? function (ch) { return isWordChar(ch, helper); } + : /\s/.test(startChar) ? function (ch) { return /\s/.test(ch); } + : function (ch) { return (!/\s/.test(ch) && !isWordChar(ch)); }; + while (start > 0 && check(line.charAt(start - 1))) { --start; } + while (end < line.length && check(line.charAt(end))) { ++end; } + } + return new Range(Pos(pos.line, start), Pos(pos.line, end)) + }, + + toggleOverwrite: function(value) { + if (value != null && value == this.state.overwrite) { return } + if (this.state.overwrite = !this.state.overwrite) + { addClass(this.display.cursorDiv, "CodeMirror-overwrite"); } + else + { rmClass(this.display.cursorDiv, "CodeMirror-overwrite"); } + + signal(this, "overwriteToggle", this, this.state.overwrite); + }, + hasFocus: function() { return this.display.input.getField() == activeElt() }, + isReadOnly: function() { return !!(this.options.readOnly || this.doc.cantEdit) }, + + scrollTo: methodOp(function (x, y) { scrollToCoords(this, x, y); }), + getScrollInfo: function() { + var scroller = this.display.scroller; + return {left: scroller.scrollLeft, top: scroller.scrollTop, + height: scroller.scrollHeight - scrollGap(this) - this.display.barHeight, + width: scroller.scrollWidth - scrollGap(this) - this.display.barWidth, + clientHeight: displayHeight(this), clientWidth: displayWidth(this)} + }, + + scrollIntoView: methodOp(function(range, margin) { + if (range == null) { + range = {from: this.doc.sel.primary().head, to: null}; + if (margin == null) { margin = this.options.cursorScrollMargin; } + } else if (typeof range == "number") { + range = {from: Pos(range, 0), to: null}; + } else if (range.from == null) { + range = {from: range, to: null}; + } + if (!range.to) { range.to = range.from; } + range.margin = margin || 0; + + if (range.from.line != null) { + scrollToRange(this, range); + } else { + scrollToCoordsRange(this, range.from, range.to, range.margin); + } + }), + + setSize: methodOp(function(width, height) { + var this$1 = this; + + var interpret = function (val) { return typeof val == "number" || /^\d+$/.test(String(val)) ? val + "px" : val; }; + if (width != null) { this.display.wrapper.style.width = interpret(width); } + if (height != null) { this.display.wrapper.style.height = interpret(height); } + if (this.options.lineWrapping) { clearLineMeasurementCache(this); } + var lineNo = this.display.viewFrom; + this.doc.iter(lineNo, this.display.viewTo, function (line) { + if (line.widgets) { for (var i = 0; i < line.widgets.length; i++) + { if (line.widgets[i].noHScroll) { regLineChange(this$1, lineNo, "widget"); break } } } + ++lineNo; + }); + this.curOp.forceUpdate = true; + signal(this, "refresh", this); + }), + + operation: function(f){return runInOp(this, f)}, + startOperation: function(){return startOperation(this)}, + endOperation: function(){return endOperation(this)}, + + refresh: methodOp(function() { + var oldHeight = this.display.cachedTextHeight; + regChange(this); + this.curOp.forceUpdate = true; + clearCaches(this); + scrollToCoords(this, this.doc.scrollLeft, this.doc.scrollTop); + updateGutterSpace(this.display); + if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5 || this.options.lineWrapping) + { estimateLineHeights(this); } + signal(this, "refresh", this); + }), + + swapDoc: methodOp(function(doc) { + var old = this.doc; + old.cm = null; + // Cancel the current text selection if any (#5821) + if (this.state.selectingText) { this.state.selectingText(); } + attachDoc(this, doc); + clearCaches(this); + this.display.input.reset(); + scrollToCoords(this, doc.scrollLeft, doc.scrollTop); + this.curOp.forceScroll = true; + signalLater(this, "swapDoc", this, old); + return old + }), + + phrase: function(phraseText) { + var phrases = this.options.phrases; + return phrases && Object.prototype.hasOwnProperty.call(phrases, phraseText) ? phrases[phraseText] : phraseText + }, + + getInputField: function(){return this.display.input.getField()}, + getWrapperElement: function(){return this.display.wrapper}, + getScrollerElement: function(){return this.display.scroller}, + getGutterElement: function(){return this.display.gutters} + }; + eventMixin(CodeMirror); + + CodeMirror.registerHelper = function(type, name, value) { + if (!helpers.hasOwnProperty(type)) { helpers[type] = CodeMirror[type] = {_global: []}; } + helpers[type][name] = value; + }; + CodeMirror.registerGlobalHelper = function(type, name, predicate, value) { + CodeMirror.registerHelper(type, name, value); + helpers[type]._global.push({pred: predicate, val: value}); + }; + } + + // Used for horizontal relative motion. Dir is -1 or 1 (left or + // right), unit can be "codepoint", "char", "column" (like char, but + // doesn't cross line boundaries), "word" (across next word), or + // "group" (to the start of next group of word or + // non-word-non-whitespace chars). The visually param controls + // whether, in right-to-left text, direction 1 means to move towards + // the next index in the string, or towards the character to the right + // of the current position. The resulting position will have a + // hitSide=true property if it reached the end of the document. + function findPosH(doc, pos, dir, unit, visually) { + var oldPos = pos; + var origDir = dir; + var lineObj = getLine(doc, pos.line); + var lineDir = visually && doc.direction == "rtl" ? -dir : dir; + function findNextLine() { + var l = pos.line + lineDir; + if (l < doc.first || l >= doc.first + doc.size) { return false } + pos = new Pos(l, pos.ch, pos.sticky); + return lineObj = getLine(doc, l) + } + function moveOnce(boundToLine) { + var next; + if (unit == "codepoint") { + var ch = lineObj.text.charCodeAt(pos.ch + (unit > 0 ? 0 : -1)); + if (isNaN(ch)) { next = null; } + else { next = new Pos(pos.line, Math.max(0, Math.min(lineObj.text.length, pos.ch + dir * (ch >= 0xD800 && ch < 0xDC00 ? 2 : 1))), + -dir); } + } else if (visually) { + next = moveVisually(doc.cm, lineObj, pos, dir); + } else { + next = moveLogically(lineObj, pos, dir); + } + if (next == null) { + if (!boundToLine && findNextLine()) + { pos = endOfLine(visually, doc.cm, lineObj, pos.line, lineDir); } + else + { return false } + } else { + pos = next; + } + return true + } + + if (unit == "char" || unit == "codepoint") { + moveOnce(); + } else if (unit == "column") { + moveOnce(true); + } else if (unit == "word" || unit == "group") { + var sawType = null, group = unit == "group"; + var helper = doc.cm && doc.cm.getHelper(pos, "wordChars"); + for (var first = true;; first = false) { + if (dir < 0 && !moveOnce(!first)) { break } + var cur = lineObj.text.charAt(pos.ch) || "\n"; + var type = isWordChar(cur, helper) ? "w" + : group && cur == "\n" ? "n" + : !group || /\s/.test(cur) ? null + : "p"; + if (group && !first && !type) { type = "s"; } + if (sawType && sawType != type) { + if (dir < 0) {dir = 1; moveOnce(); pos.sticky = "after";} + break + } + + if (type) { sawType = type; } + if (dir > 0 && !moveOnce(!first)) { break } + } + } + var result = skipAtomic(doc, pos, oldPos, origDir, true); + if (equalCursorPos(oldPos, result)) { result.hitSide = true; } + return result + } + + // For relative vertical movement. Dir may be -1 or 1. Unit can be + // "page" or "line". The resulting position will have a hitSide=true + // property if it reached the end of the document. + function findPosV(cm, pos, dir, unit) { + var doc = cm.doc, x = pos.left, y; + if (unit == "page") { + var pageSize = Math.min(cm.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight); + var moveAmount = Math.max(pageSize - .5 * textHeight(cm.display), 3); + y = (dir > 0 ? pos.bottom : pos.top) + dir * moveAmount; + + } else if (unit == "line") { + y = dir > 0 ? pos.bottom + 3 : pos.top - 3; + } + var target; + for (;;) { + target = coordsChar(cm, x, y); + if (!target.outside) { break } + if (dir < 0 ? y <= 0 : y >= doc.height) { target.hitSide = true; break } + y += dir * 5; + } + return target + } + + // CONTENTEDITABLE INPUT STYLE + + var ContentEditableInput = function(cm) { + this.cm = cm; + this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null; + this.polling = new Delayed(); + this.composing = null; + this.gracePeriod = false; + this.readDOMTimeout = null; + }; + + ContentEditableInput.prototype.init = function (display) { + var this$1 = this; + + var input = this, cm = input.cm; + var div = input.div = display.lineDiv; + disableBrowserMagic(div, cm.options.spellcheck, cm.options.autocorrect, cm.options.autocapitalize); + + function belongsToInput(e) { + for (var t = e.target; t; t = t.parentNode) { + if (t == div) { return true } + if (/\bCodeMirror-(?:line)?widget\b/.test(t.className)) { break } + } + return false + } + + on(div, "paste", function (e) { + if (!belongsToInput(e) || signalDOMEvent(cm, e) || handlePaste(e, cm)) { return } + // IE doesn't fire input events, so we schedule a read for the pasted content in this way + if (ie_version <= 11) { setTimeout(operation(cm, function () { return this$1.updateFromDOM(); }), 20); } + }); + + on(div, "compositionstart", function (e) { + this$1.composing = {data: e.data, done: false}; + }); + on(div, "compositionupdate", function (e) { + if (!this$1.composing) { this$1.composing = {data: e.data, done: false}; } + }); + on(div, "compositionend", function (e) { + if (this$1.composing) { + if (e.data != this$1.composing.data) { this$1.readFromDOMSoon(); } + this$1.composing.done = true; + } + }); + + on(div, "touchstart", function () { return input.forceCompositionEnd(); }); + + on(div, "input", function () { + if (!this$1.composing) { this$1.readFromDOMSoon(); } + }); + + function onCopyCut(e) { + if (!belongsToInput(e) || signalDOMEvent(cm, e)) { return } + if (cm.somethingSelected()) { + setLastCopied({lineWise: false, text: cm.getSelections()}); + if (e.type == "cut") { cm.replaceSelection("", null, "cut"); } + } else if (!cm.options.lineWiseCopyCut) { + return + } else { + var ranges = copyableRanges(cm); + setLastCopied({lineWise: true, text: ranges.text}); + if (e.type == "cut") { + cm.operation(function () { + cm.setSelections(ranges.ranges, 0, sel_dontScroll); + cm.replaceSelection("", null, "cut"); + }); + } + } + if (e.clipboardData) { + e.clipboardData.clearData(); + var content = lastCopied.text.join("\n"); + // iOS exposes the clipboard API, but seems to discard content inserted into it + e.clipboardData.setData("Text", content); + if (e.clipboardData.getData("Text") == content) { + e.preventDefault(); + return + } + } + // Old-fashioned briefly-focus-a-textarea hack + var kludge = hiddenTextarea(), te = kludge.firstChild; + cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild); + te.value = lastCopied.text.join("\n"); + var hadFocus = document.activeElement; + selectInput(te); + setTimeout(function () { + cm.display.lineSpace.removeChild(kludge); + hadFocus.focus(); + if (hadFocus == div) { input.showPrimarySelection(); } + }, 50); + } + on(div, "copy", onCopyCut); + on(div, "cut", onCopyCut); + }; + + ContentEditableInput.prototype.screenReaderLabelChanged = function (label) { + // Label for screenreaders, accessibility + if(label) { + this.div.setAttribute('aria-label', label); + } else { + this.div.removeAttribute('aria-label'); + } + }; + + ContentEditableInput.prototype.prepareSelection = function () { + var result = prepareSelection(this.cm, false); + result.focus = document.activeElement == this.div; + return result + }; + + ContentEditableInput.prototype.showSelection = function (info, takeFocus) { + if (!info || !this.cm.display.view.length) { return } + if (info.focus || takeFocus) { this.showPrimarySelection(); } + this.showMultipleSelections(info); + }; + + ContentEditableInput.prototype.getSelection = function () { + return this.cm.display.wrapper.ownerDocument.getSelection() + }; + + ContentEditableInput.prototype.showPrimarySelection = function () { + var sel = this.getSelection(), cm = this.cm, prim = cm.doc.sel.primary(); + var from = prim.from(), to = prim.to(); + + if (cm.display.viewTo == cm.display.viewFrom || from.line >= cm.display.viewTo || to.line < cm.display.viewFrom) { + sel.removeAllRanges(); + return + } + + var curAnchor = domToPos(cm, sel.anchorNode, sel.anchorOffset); + var curFocus = domToPos(cm, sel.focusNode, sel.focusOffset); + if (curAnchor && !curAnchor.bad && curFocus && !curFocus.bad && + cmp(minPos(curAnchor, curFocus), from) == 0 && + cmp(maxPos(curAnchor, curFocus), to) == 0) + { return } + + var view = cm.display.view; + var start = (from.line >= cm.display.viewFrom && posToDOM(cm, from)) || + {node: view[0].measure.map[2], offset: 0}; + var end = to.line < cm.display.viewTo && posToDOM(cm, to); + if (!end) { + var measure = view[view.length - 1].measure; + var map = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map; + end = {node: map[map.length - 1], offset: map[map.length - 2] - map[map.length - 3]}; + } + + if (!start || !end) { + sel.removeAllRanges(); + return + } + + var old = sel.rangeCount && sel.getRangeAt(0), rng; + try { rng = range(start.node, start.offset, end.offset, end.node); } + catch(e) {} // Our model of the DOM might be outdated, in which case the range we try to set can be impossible + if (rng) { + if (!gecko && cm.state.focused) { + sel.collapse(start.node, start.offset); + if (!rng.collapsed) { + sel.removeAllRanges(); + sel.addRange(rng); + } + } else { + sel.removeAllRanges(); + sel.addRange(rng); + } + if (old && sel.anchorNode == null) { sel.addRange(old); } + else if (gecko) { this.startGracePeriod(); } + } + this.rememberSelection(); + }; + + ContentEditableInput.prototype.startGracePeriod = function () { + var this$1 = this; + + clearTimeout(this.gracePeriod); + this.gracePeriod = setTimeout(function () { + this$1.gracePeriod = false; + if (this$1.selectionChanged()) + { this$1.cm.operation(function () { return this$1.cm.curOp.selectionChanged = true; }); } + }, 20); + }; + + ContentEditableInput.prototype.showMultipleSelections = function (info) { + removeChildrenAndAdd(this.cm.display.cursorDiv, info.cursors); + removeChildrenAndAdd(this.cm.display.selectionDiv, info.selection); + }; + + ContentEditableInput.prototype.rememberSelection = function () { + var sel = this.getSelection(); + this.lastAnchorNode = sel.anchorNode; this.lastAnchorOffset = sel.anchorOffset; + this.lastFocusNode = sel.focusNode; this.lastFocusOffset = sel.focusOffset; + }; + + ContentEditableInput.prototype.selectionInEditor = function () { + var sel = this.getSelection(); + if (!sel.rangeCount) { return false } + var node = sel.getRangeAt(0).commonAncestorContainer; + return contains(this.div, node) + }; + + ContentEditableInput.prototype.focus = function () { + if (this.cm.options.readOnly != "nocursor") { + if (!this.selectionInEditor() || document.activeElement != this.div) + { this.showSelection(this.prepareSelection(), true); } + this.div.focus(); + } + }; + ContentEditableInput.prototype.blur = function () { this.div.blur(); }; + ContentEditableInput.prototype.getField = function () { return this.div }; + + ContentEditableInput.prototype.supportsTouch = function () { return true }; + + ContentEditableInput.prototype.receivedFocus = function () { + var input = this; + if (this.selectionInEditor()) + { this.pollSelection(); } + else + { runInOp(this.cm, function () { return input.cm.curOp.selectionChanged = true; }); } + + function poll() { + if (input.cm.state.focused) { + input.pollSelection(); + input.polling.set(input.cm.options.pollInterval, poll); + } + } + this.polling.set(this.cm.options.pollInterval, poll); + }; + + ContentEditableInput.prototype.selectionChanged = function () { + var sel = this.getSelection(); + return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset || + sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset + }; + + ContentEditableInput.prototype.pollSelection = function () { + if (this.readDOMTimeout != null || this.gracePeriod || !this.selectionChanged()) { return } + var sel = this.getSelection(), cm = this.cm; + // On Android Chrome (version 56, at least), backspacing into an + // uneditable block element will put the cursor in that element, + // and then, because it's not editable, hide the virtual keyboard. + // Because Android doesn't allow us to actually detect backspace + // presses in a sane way, this code checks for when that happens + // and simulates a backspace press in this case. + if (android && chrome && this.cm.display.gutterSpecs.length && isInGutter(sel.anchorNode)) { + this.cm.triggerOnKeyDown({type: "keydown", keyCode: 8, preventDefault: Math.abs}); + this.blur(); + this.focus(); + return + } + if (this.composing) { return } + this.rememberSelection(); + var anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset); + var head = domToPos(cm, sel.focusNode, sel.focusOffset); + if (anchor && head) { runInOp(cm, function () { + setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll); + if (anchor.bad || head.bad) { cm.curOp.selectionChanged = true; } + }); } + }; + + ContentEditableInput.prototype.pollContent = function () { + if (this.readDOMTimeout != null) { + clearTimeout(this.readDOMTimeout); + this.readDOMTimeout = null; + } + + var cm = this.cm, display = cm.display, sel = cm.doc.sel.primary(); + var from = sel.from(), to = sel.to(); + if (from.ch == 0 && from.line > cm.firstLine()) + { from = Pos(from.line - 1, getLine(cm.doc, from.line - 1).length); } + if (to.ch == getLine(cm.doc, to.line).text.length && to.line < cm.lastLine()) + { to = Pos(to.line + 1, 0); } + if (from.line < display.viewFrom || to.line > display.viewTo - 1) { return false } + + var fromIndex, fromLine, fromNode; + if (from.line == display.viewFrom || (fromIndex = findViewIndex(cm, from.line)) == 0) { + fromLine = lineNo(display.view[0].line); + fromNode = display.view[0].node; + } else { + fromLine = lineNo(display.view[fromIndex].line); + fromNode = display.view[fromIndex - 1].node.nextSibling; + } + var toIndex = findViewIndex(cm, to.line); + var toLine, toNode; + if (toIndex == display.view.length - 1) { + toLine = display.viewTo - 1; + toNode = display.lineDiv.lastChild; + } else { + toLine = lineNo(display.view[toIndex + 1].line) - 1; + toNode = display.view[toIndex + 1].node.previousSibling; + } + + if (!fromNode) { return false } + var newText = cm.doc.splitLines(domTextBetween(cm, fromNode, toNode, fromLine, toLine)); + var oldText = getBetween(cm.doc, Pos(fromLine, 0), Pos(toLine, getLine(cm.doc, toLine).text.length)); + while (newText.length > 1 && oldText.length > 1) { + if (lst(newText) == lst(oldText)) { newText.pop(); oldText.pop(); toLine--; } + else if (newText[0] == oldText[0]) { newText.shift(); oldText.shift(); fromLine++; } + else { break } + } + + var cutFront = 0, cutEnd = 0; + var newTop = newText[0], oldTop = oldText[0], maxCutFront = Math.min(newTop.length, oldTop.length); + while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront)) + { ++cutFront; } + var newBot = lst(newText), oldBot = lst(oldText); + var maxCutEnd = Math.min(newBot.length - (newText.length == 1 ? cutFront : 0), + oldBot.length - (oldText.length == 1 ? cutFront : 0)); + while (cutEnd < maxCutEnd && + newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) + { ++cutEnd; } + // Try to move start of change to start of selection if ambiguous + if (newText.length == 1 && oldText.length == 1 && fromLine == from.line) { + while (cutFront && cutFront > from.ch && + newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) { + cutFront--; + cutEnd++; + } + } + + newText[newText.length - 1] = newBot.slice(0, newBot.length - cutEnd).replace(/^\u200b+/, ""); + newText[0] = newText[0].slice(cutFront).replace(/\u200b+$/, ""); + + var chFrom = Pos(fromLine, cutFront); + var chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd : 0); + if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) { + replaceRange(cm.doc, newText, chFrom, chTo, "+input"); + return true + } + }; + + ContentEditableInput.prototype.ensurePolled = function () { + this.forceCompositionEnd(); + }; + ContentEditableInput.prototype.reset = function () { + this.forceCompositionEnd(); + }; + ContentEditableInput.prototype.forceCompositionEnd = function () { + if (!this.composing) { return } + clearTimeout(this.readDOMTimeout); + this.composing = null; + this.updateFromDOM(); + this.div.blur(); + this.div.focus(); + }; + ContentEditableInput.prototype.readFromDOMSoon = function () { + var this$1 = this; + + if (this.readDOMTimeout != null) { return } + this.readDOMTimeout = setTimeout(function () { + this$1.readDOMTimeout = null; + if (this$1.composing) { + if (this$1.composing.done) { this$1.composing = null; } + else { return } + } + this$1.updateFromDOM(); + }, 80); + }; + + ContentEditableInput.prototype.updateFromDOM = function () { + var this$1 = this; + + if (this.cm.isReadOnly() || !this.pollContent()) + { runInOp(this.cm, function () { return regChange(this$1.cm); }); } + }; + + ContentEditableInput.prototype.setUneditable = function (node) { + node.contentEditable = "false"; + }; + + ContentEditableInput.prototype.onKeyPress = function (e) { + if (e.charCode == 0 || this.composing) { return } + e.preventDefault(); + if (!this.cm.isReadOnly()) + { operation(this.cm, applyTextInput)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0); } + }; + + ContentEditableInput.prototype.readOnlyChanged = function (val) { + this.div.contentEditable = String(val != "nocursor"); + }; + + ContentEditableInput.prototype.onContextMenu = function () {}; + ContentEditableInput.prototype.resetPosition = function () {}; + + ContentEditableInput.prototype.needsContentAttribute = true; + + function posToDOM(cm, pos) { + var view = findViewForLine(cm, pos.line); + if (!view || view.hidden) { return null } + var line = getLine(cm.doc, pos.line); + var info = mapFromLineView(view, line, pos.line); + + var order = getOrder(line, cm.doc.direction), side = "left"; + if (order) { + var partPos = getBidiPartAt(order, pos.ch); + side = partPos % 2 ? "right" : "left"; + } + var result = nodeAndOffsetInLineMap(info.map, pos.ch, side); + result.offset = result.collapse == "right" ? result.end : result.start; + return result + } + + function isInGutter(node) { + for (var scan = node; scan; scan = scan.parentNode) + { if (/CodeMirror-gutter-wrapper/.test(scan.className)) { return true } } + return false + } + + function badPos(pos, bad) { if (bad) { pos.bad = true; } return pos } + + function domTextBetween(cm, from, to, fromLine, toLine) { + var text = "", closing = false, lineSep = cm.doc.lineSeparator(), extraLinebreak = false; + function recognizeMarker(id) { return function (marker) { return marker.id == id; } } + function close() { + if (closing) { + text += lineSep; + if (extraLinebreak) { text += lineSep; } + closing = extraLinebreak = false; + } + } + function addText(str) { + if (str) { + close(); + text += str; + } + } + function walk(node) { + if (node.nodeType == 1) { + var cmText = node.getAttribute("cm-text"); + if (cmText) { + addText(cmText); + return + } + var markerID = node.getAttribute("cm-marker"), range; + if (markerID) { + var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID)); + if (found.length && (range = found[0].find(0))) + { addText(getBetween(cm.doc, range.from, range.to).join(lineSep)); } + return + } + if (node.getAttribute("contenteditable") == "false") { return } + var isBlock = /^(pre|div|p|li|table|br)$/i.test(node.nodeName); + if (!/^br$/i.test(node.nodeName) && node.textContent.length == 0) { return } + + if (isBlock) { close(); } + for (var i = 0; i < node.childNodes.length; i++) + { walk(node.childNodes[i]); } + + if (/^(pre|p)$/i.test(node.nodeName)) { extraLinebreak = true; } + if (isBlock) { closing = true; } + } else if (node.nodeType == 3) { + addText(node.nodeValue.replace(/\u200b/g, "").replace(/\u00a0/g, " ")); + } + } + for (;;) { + walk(from); + if (from == to) { break } + from = from.nextSibling; + extraLinebreak = false; + } + return text + } + + function domToPos(cm, node, offset) { + var lineNode; + if (node == cm.display.lineDiv) { + lineNode = cm.display.lineDiv.childNodes[offset]; + if (!lineNode) { return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true) } + node = null; offset = 0; + } else { + for (lineNode = node;; lineNode = lineNode.parentNode) { + if (!lineNode || lineNode == cm.display.lineDiv) { return null } + if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) { break } + } + } + for (var i = 0; i < cm.display.view.length; i++) { + var lineView = cm.display.view[i]; + if (lineView.node == lineNode) + { return locateNodeInLineView(lineView, node, offset) } + } + } + + function locateNodeInLineView(lineView, node, offset) { + var wrapper = lineView.text.firstChild, bad = false; + if (!node || !contains(wrapper, node)) { return badPos(Pos(lineNo(lineView.line), 0), true) } + if (node == wrapper) { + bad = true; + node = wrapper.childNodes[offset]; + offset = 0; + if (!node) { + var line = lineView.rest ? lst(lineView.rest) : lineView.line; + return badPos(Pos(lineNo(line), line.text.length), bad) + } + } + + var textNode = node.nodeType == 3 ? node : null, topNode = node; + if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) { + textNode = node.firstChild; + if (offset) { offset = textNode.nodeValue.length; } + } + while (topNode.parentNode != wrapper) { topNode = topNode.parentNode; } + var measure = lineView.measure, maps = measure.maps; + + function find(textNode, topNode, offset) { + for (var i = -1; i < (maps ? maps.length : 0); i++) { + var map = i < 0 ? measure.map : maps[i]; + for (var j = 0; j < map.length; j += 3) { + var curNode = map[j + 2]; + if (curNode == textNode || curNode == topNode) { + var line = lineNo(i < 0 ? lineView.line : lineView.rest[i]); + var ch = map[j] + offset; + if (offset < 0 || curNode != textNode) { ch = map[j + (offset ? 1 : 0)]; } + return Pos(line, ch) + } + } + } + } + var found = find(textNode, topNode, offset); + if (found) { return badPos(found, bad) } + + // FIXME this is all really shaky. might handle the few cases it needs to handle, but likely to cause problems + for (var after = topNode.nextSibling, dist = textNode ? textNode.nodeValue.length - offset : 0; after; after = after.nextSibling) { + found = find(after, after.firstChild, 0); + if (found) + { return badPos(Pos(found.line, found.ch - dist), bad) } + else + { dist += after.textContent.length; } + } + for (var before = topNode.previousSibling, dist$1 = offset; before; before = before.previousSibling) { + found = find(before, before.firstChild, -1); + if (found) + { return badPos(Pos(found.line, found.ch + dist$1), bad) } + else + { dist$1 += before.textContent.length; } + } + } + + // TEXTAREA INPUT STYLE + + var TextareaInput = function(cm) { + this.cm = cm; + // See input.poll and input.reset + this.prevInput = ""; + + // Flag that indicates whether we expect input to appear real soon + // now (after some event like 'keypress' or 'input') and are + // polling intensively. + this.pollingFast = false; + // Self-resetting timeout for the poller + this.polling = new Delayed(); + // Used to work around IE issue with selection being forgotten when focus moves away from textarea + this.hasSelection = false; + this.composing = null; + }; + + TextareaInput.prototype.init = function (display) { + var this$1 = this; + + var input = this, cm = this.cm; + this.createField(display); + var te = this.textarea; + + display.wrapper.insertBefore(this.wrapper, display.wrapper.firstChild); + + // Needed to hide big blue blinking cursor on Mobile Safari (doesn't seem to work in iOS 8 anymore) + if (ios) { te.style.width = "0px"; } + + on(te, "input", function () { + if (ie && ie_version >= 9 && this$1.hasSelection) { this$1.hasSelection = null; } + input.poll(); + }); + + on(te, "paste", function (e) { + if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { return } + + cm.state.pasteIncoming = +new Date; + input.fastPoll(); + }); + + function prepareCopyCut(e) { + if (signalDOMEvent(cm, e)) { return } + if (cm.somethingSelected()) { + setLastCopied({lineWise: false, text: cm.getSelections()}); + } else if (!cm.options.lineWiseCopyCut) { + return + } else { + var ranges = copyableRanges(cm); + setLastCopied({lineWise: true, text: ranges.text}); + if (e.type == "cut") { + cm.setSelections(ranges.ranges, null, sel_dontScroll); + } else { + input.prevInput = ""; + te.value = ranges.text.join("\n"); + selectInput(te); + } + } + if (e.type == "cut") { cm.state.cutIncoming = +new Date; } + } + on(te, "cut", prepareCopyCut); + on(te, "copy", prepareCopyCut); + + on(display.scroller, "paste", function (e) { + if (eventInWidget(display, e) || signalDOMEvent(cm, e)) { return } + if (!te.dispatchEvent) { + cm.state.pasteIncoming = +new Date; + input.focus(); + return + } + + // Pass the `paste` event to the textarea so it's handled by its event listener. + var event = new Event("paste"); + event.clipboardData = e.clipboardData; + te.dispatchEvent(event); + }); + + // Prevent normal selection in the editor (we handle our own) + on(display.lineSpace, "selectstart", function (e) { + if (!eventInWidget(display, e)) { e_preventDefault(e); } + }); + + on(te, "compositionstart", function () { + var start = cm.getCursor("from"); + if (input.composing) { input.composing.range.clear(); } + input.composing = { + start: start, + range: cm.markText(start, cm.getCursor("to"), {className: "CodeMirror-composing"}) + }; + }); + on(te, "compositionend", function () { + if (input.composing) { + input.poll(); + input.composing.range.clear(); + input.composing = null; + } + }); + }; + + TextareaInput.prototype.createField = function (_display) { + // Wraps and hides input textarea + this.wrapper = hiddenTextarea(); + // The semihidden textarea that is focused when the editor is + // focused, and receives input. + this.textarea = this.wrapper.firstChild; + }; + + TextareaInput.prototype.screenReaderLabelChanged = function (label) { + // Label for screenreaders, accessibility + if(label) { + this.textarea.setAttribute('aria-label', label); + } else { + this.textarea.removeAttribute('aria-label'); + } + }; + + TextareaInput.prototype.prepareSelection = function () { + // Redraw the selection and/or cursor + var cm = this.cm, display = cm.display, doc = cm.doc; + var result = prepareSelection(cm); + + // Move the hidden textarea near the cursor to prevent scrolling artifacts + if (cm.options.moveInputWithCursor) { + var headPos = cursorCoords(cm, doc.sel.primary().head, "div"); + var wrapOff = display.wrapper.getBoundingClientRect(), lineOff = display.lineDiv.getBoundingClientRect(); + result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10, + headPos.top + lineOff.top - wrapOff.top)); + result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10, + headPos.left + lineOff.left - wrapOff.left)); + } + + return result + }; + + TextareaInput.prototype.showSelection = function (drawn) { + var cm = this.cm, display = cm.display; + removeChildrenAndAdd(display.cursorDiv, drawn.cursors); + removeChildrenAndAdd(display.selectionDiv, drawn.selection); + if (drawn.teTop != null) { + this.wrapper.style.top = drawn.teTop + "px"; + this.wrapper.style.left = drawn.teLeft + "px"; + } + }; + + // Reset the input to correspond to the selection (or to be empty, + // when not typing and nothing is selected) + TextareaInput.prototype.reset = function (typing) { + if (this.contextMenuPending || this.composing) { return } + var cm = this.cm; + if (cm.somethingSelected()) { + this.prevInput = ""; + var content = cm.getSelection(); + this.textarea.value = content; + if (cm.state.focused) { selectInput(this.textarea); } + if (ie && ie_version >= 9) { this.hasSelection = content; } + } else if (!typing) { + this.prevInput = this.textarea.value = ""; + if (ie && ie_version >= 9) { this.hasSelection = null; } + } + }; + + TextareaInput.prototype.getField = function () { return this.textarea }; + + TextareaInput.prototype.supportsTouch = function () { return false }; + + TextareaInput.prototype.focus = function () { + if (this.cm.options.readOnly != "nocursor" && (!mobile || activeElt() != this.textarea)) { + try { this.textarea.focus(); } + catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM + } + }; + + TextareaInput.prototype.blur = function () { this.textarea.blur(); }; + + TextareaInput.prototype.resetPosition = function () { + this.wrapper.style.top = this.wrapper.style.left = 0; + }; + + TextareaInput.prototype.receivedFocus = function () { this.slowPoll(); }; + + // Poll for input changes, using the normal rate of polling. This + // runs as long as the editor is focused. + TextareaInput.prototype.slowPoll = function () { + var this$1 = this; + + if (this.pollingFast) { return } + this.polling.set(this.cm.options.pollInterval, function () { + this$1.poll(); + if (this$1.cm.state.focused) { this$1.slowPoll(); } + }); + }; + + // When an event has just come in that is likely to add or change + // something in the input textarea, we poll faster, to ensure that + // the change appears on the screen quickly. + TextareaInput.prototype.fastPoll = function () { + var missed = false, input = this; + input.pollingFast = true; + function p() { + var changed = input.poll(); + if (!changed && !missed) {missed = true; input.polling.set(60, p);} + else {input.pollingFast = false; input.slowPoll();} + } + input.polling.set(20, p); + }; + + // Read input from the textarea, and update the document to match. + // When something is selected, it is present in the textarea, and + // selected (unless it is huge, in which case a placeholder is + // used). When nothing is selected, the cursor sits after previously + // seen text (can be empty), which is stored in prevInput (we must + // not reset the textarea when typing, because that breaks IME). + TextareaInput.prototype.poll = function () { + var this$1 = this; + + var cm = this.cm, input = this.textarea, prevInput = this.prevInput; + // Since this is called a *lot*, try to bail out as cheaply as + // possible when it is clear that nothing happened. hasSelection + // will be the case when there is a lot of text in the textarea, + // in which case reading its value would be expensive. + if (this.contextMenuPending || !cm.state.focused || + (hasSelection(input) && !prevInput && !this.composing) || + cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq) + { return false } + + var text = input.value; + // If nothing changed, bail. + if (text == prevInput && !cm.somethingSelected()) { return false } + // Work around nonsensical selection resetting in IE9/10, and + // inexplicable appearance of private area unicode characters on + // some key combos in Mac (#2689). + if (ie && ie_version >= 9 && this.hasSelection === text || + mac && /[\uf700-\uf7ff]/.test(text)) { + cm.display.input.reset(); + return false + } + + if (cm.doc.sel == cm.display.selForContextMenu) { + var first = text.charCodeAt(0); + if (first == 0x200b && !prevInput) { prevInput = "\u200b"; } + if (first == 0x21da) { this.reset(); return this.cm.execCommand("undo") } + } + // Find the part of the input that is actually new + var same = 0, l = Math.min(prevInput.length, text.length); + while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) { ++same; } + + runInOp(cm, function () { + applyTextInput(cm, text.slice(same), prevInput.length - same, + null, this$1.composing ? "*compose" : null); + + // Don't leave long text in the textarea, since it makes further polling slow + if (text.length > 1000 || text.indexOf("\n") > -1) { input.value = this$1.prevInput = ""; } + else { this$1.prevInput = text; } + + if (this$1.composing) { + this$1.composing.range.clear(); + this$1.composing.range = cm.markText(this$1.composing.start, cm.getCursor("to"), + {className: "CodeMirror-composing"}); + } + }); + return true + }; + + TextareaInput.prototype.ensurePolled = function () { + if (this.pollingFast && this.poll()) { this.pollingFast = false; } + }; + + TextareaInput.prototype.onKeyPress = function () { + if (ie && ie_version >= 9) { this.hasSelection = null; } + this.fastPoll(); + }; + + TextareaInput.prototype.onContextMenu = function (e) { + var input = this, cm = input.cm, display = cm.display, te = input.textarea; + if (input.contextMenuPending) { input.contextMenuPending(); } + var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop; + if (!pos || presto) { return } // Opera is difficult. + + // Reset the current text selection only if the click is done outside of the selection + // and 'resetSelectionOnContextMenu' option is true. + var reset = cm.options.resetSelectionOnContextMenu; + if (reset && cm.doc.sel.contains(pos) == -1) + { operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll); } + + var oldCSS = te.style.cssText, oldWrapperCSS = input.wrapper.style.cssText; + var wrapperBox = input.wrapper.offsetParent.getBoundingClientRect(); + input.wrapper.style.cssText = "position: static"; + te.style.cssText = "position: absolute; width: 30px; height: 30px;\n top: " + (e.clientY - wrapperBox.top - 5) + "px; left: " + (e.clientX - wrapperBox.left - 5) + "px;\n z-index: 1000; background: " + (ie ? "rgba(255, 255, 255, .05)" : "transparent") + ";\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);"; + var oldScrollY; + if (webkit) { oldScrollY = window.scrollY; } // Work around Chrome issue (#2712) + display.input.focus(); + if (webkit) { window.scrollTo(null, oldScrollY); } + display.input.reset(); + // Adds "Select all" to context menu in FF + if (!cm.somethingSelected()) { te.value = input.prevInput = " "; } + input.contextMenuPending = rehide; + display.selForContextMenu = cm.doc.sel; + clearTimeout(display.detectingSelectAll); + + // Select-all will be greyed out if there's nothing to select, so + // this adds a zero-width space so that we can later check whether + // it got selected. + function prepareSelectAllHack() { + if (te.selectionStart != null) { + var selected = cm.somethingSelected(); + var extval = "\u200b" + (selected ? te.value : ""); + te.value = "\u21da"; // Used to catch context-menu undo + te.value = extval; + input.prevInput = selected ? "" : "\u200b"; + te.selectionStart = 1; te.selectionEnd = extval.length; + // Re-set this, in case some other handler touched the + // selection in the meantime. + display.selForContextMenu = cm.doc.sel; + } + } + function rehide() { + if (input.contextMenuPending != rehide) { return } + input.contextMenuPending = false; + input.wrapper.style.cssText = oldWrapperCSS; + te.style.cssText = oldCSS; + if (ie && ie_version < 9) { display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos); } + + // Try to detect the user choosing select-all + if (te.selectionStart != null) { + if (!ie || (ie && ie_version < 9)) { prepareSelectAllHack(); } + var i = 0, poll = function () { + if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0 && + te.selectionEnd > 0 && input.prevInput == "\u200b") { + operation(cm, selectAll)(cm); + } else if (i++ < 10) { + display.detectingSelectAll = setTimeout(poll, 500); + } else { + display.selForContextMenu = null; + display.input.reset(); + } + }; + display.detectingSelectAll = setTimeout(poll, 200); + } + } + + if (ie && ie_version >= 9) { prepareSelectAllHack(); } + if (captureRightClick) { + e_stop(e); + var mouseup = function () { + off(window, "mouseup", mouseup); + setTimeout(rehide, 20); + }; + on(window, "mouseup", mouseup); + } else { + setTimeout(rehide, 50); + } + }; + + TextareaInput.prototype.readOnlyChanged = function (val) { + if (!val) { this.reset(); } + this.textarea.disabled = val == "nocursor"; + this.textarea.readOnly = !!val; + }; + + TextareaInput.prototype.setUneditable = function () {}; + + TextareaInput.prototype.needsContentAttribute = false; + + function fromTextArea(textarea, options) { + options = options ? copyObj(options) : {}; + options.value = textarea.value; + if (!options.tabindex && textarea.tabIndex) + { options.tabindex = textarea.tabIndex; } + if (!options.placeholder && textarea.placeholder) + { options.placeholder = textarea.placeholder; } + // Set autofocus to true if this textarea is focused, or if it has + // autofocus and no other element is focused. + if (options.autofocus == null) { + var hasFocus = activeElt(); + options.autofocus = hasFocus == textarea || + textarea.getAttribute("autofocus") != null && hasFocus == document.body; + } + + function save() {textarea.value = cm.getValue();} + + var realSubmit; + if (textarea.form) { + on(textarea.form, "submit", save); + // Deplorable hack to make the submit method do the right thing. + if (!options.leaveSubmitMethodAlone) { + var form = textarea.form; + realSubmit = form.submit; + try { + var wrappedSubmit = form.submit = function () { + save(); + form.submit = realSubmit; + form.submit(); + form.submit = wrappedSubmit; + }; + } catch(e) {} + } + } + + options.finishInit = function (cm) { + cm.save = save; + cm.getTextArea = function () { return textarea; }; + cm.toTextArea = function () { + cm.toTextArea = isNaN; // Prevent this from being ran twice + save(); + textarea.parentNode.removeChild(cm.getWrapperElement()); + textarea.style.display = ""; + if (textarea.form) { + off(textarea.form, "submit", save); + if (!options.leaveSubmitMethodAlone && typeof textarea.form.submit == "function") + { textarea.form.submit = realSubmit; } + } + }; + }; + + textarea.style.display = "none"; + var cm = CodeMirror(function (node) { return textarea.parentNode.insertBefore(node, textarea.nextSibling); }, + options); + return cm + } + + function addLegacyProps(CodeMirror) { + CodeMirror.off = off; + CodeMirror.on = on; + CodeMirror.wheelEventPixels = wheelEventPixels; + CodeMirror.Doc = Doc; + CodeMirror.splitLines = splitLinesAuto; + CodeMirror.countColumn = countColumn; + CodeMirror.findColumn = findColumn; + CodeMirror.isWordChar = isWordCharBasic; + CodeMirror.Pass = Pass; + CodeMirror.signal = signal; + CodeMirror.Line = Line; + CodeMirror.changeEnd = changeEnd; + CodeMirror.scrollbarModel = scrollbarModel; + CodeMirror.Pos = Pos; + CodeMirror.cmpPos = cmp; + CodeMirror.modes = modes; + CodeMirror.mimeModes = mimeModes; + CodeMirror.resolveMode = resolveMode; + CodeMirror.getMode = getMode; + CodeMirror.modeExtensions = modeExtensions; + CodeMirror.extendMode = extendMode; + CodeMirror.copyState = copyState; + CodeMirror.startState = startState; + CodeMirror.innerMode = innerMode; + CodeMirror.commands = commands; + CodeMirror.keyMap = keyMap; + CodeMirror.keyName = keyName; + CodeMirror.isModifierKey = isModifierKey; + CodeMirror.lookupKey = lookupKey; + CodeMirror.normalizeKeyMap = normalizeKeyMap; + CodeMirror.StringStream = StringStream; + CodeMirror.SharedTextMarker = SharedTextMarker; + CodeMirror.TextMarker = TextMarker; + CodeMirror.LineWidget = LineWidget; + CodeMirror.e_preventDefault = e_preventDefault; + CodeMirror.e_stopPropagation = e_stopPropagation; + CodeMirror.e_stop = e_stop; + CodeMirror.addClass = addClass; + CodeMirror.contains = contains; + CodeMirror.rmClass = rmClass; + CodeMirror.keyNames = keyNames; + } + + // EDITOR CONSTRUCTOR + + defineOptions(CodeMirror); + + addEditorMethods(CodeMirror); + + // Set up methods on CodeMirror's prototype to redirect to the editor's document. + var dontDelegate = "iter insert remove copy getEditor constructor".split(" "); + for (var prop in Doc.prototype) { if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0) + { CodeMirror.prototype[prop] = (function(method) { + return function() {return method.apply(this.doc, arguments)} + })(Doc.prototype[prop]); } } + + eventMixin(Doc); + CodeMirror.inputStyles = {"textarea": TextareaInput, "contenteditable": ContentEditableInput}; + + // Extra arguments are stored as the mode's dependencies, which is + // used by (legacy) mechanisms like loadmode.js to automatically + // load a mode. (Preferred mechanism is the require/define calls.) + CodeMirror.defineMode = function(name/*, mode, …*/) { + if (!CodeMirror.defaults.mode && name != "null") { CodeMirror.defaults.mode = name; } + defineMode.apply(this, arguments); + }; + + CodeMirror.defineMIME = defineMIME; + + // Minimal default mode. + CodeMirror.defineMode("null", function () { return ({token: function (stream) { return stream.skipToEnd(); }}); }); + CodeMirror.defineMIME("text/plain", "null"); + + // EXTENSIONS + + CodeMirror.defineExtension = function (name, func) { + CodeMirror.prototype[name] = func; + }; + CodeMirror.defineDocExtension = function (name, func) { + Doc.prototype[name] = func; + }; + + CodeMirror.fromTextArea = fromTextArea; + + addLegacyProps(CodeMirror); + + CodeMirror.version = "5.58.1"; + + return CodeMirror; + +}))); + +},{}],117:[function(require,module,exports){ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: https://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("javascript", function(config, parserConfig) { + var indentUnit = config.indentUnit; + var statementIndent = parserConfig.statementIndent; + var jsonldMode = parserConfig.jsonld; + var jsonMode = parserConfig.json || jsonldMode; + var isTS = parserConfig.typescript; + var wordRE = parserConfig.wordCharacters || /[\w$\xa1-\uffff]/; + + // Tokenizer + + var keywords = function(){ + function kw(type) {return {type: type, style: "keyword"};} + var A = kw("keyword a"), B = kw("keyword b"), C = kw("keyword c"), D = kw("keyword d"); + var operator = kw("operator"), atom = {type: "atom", style: "atom"}; + + return { + "if": kw("if"), "while": A, "with": A, "else": B, "do": B, "try": B, "finally": B, + "return": D, "break": D, "continue": D, "new": kw("new"), "delete": C, "void": C, "throw": C, + "debugger": kw("debugger"), "var": kw("var"), "const": kw("var"), "let": kw("var"), + "function": kw("function"), "catch": kw("catch"), + "for": kw("for"), "switch": kw("switch"), "case": kw("case"), "default": kw("default"), + "in": operator, "typeof": operator, "instanceof": operator, + "true": atom, "false": atom, "null": atom, "undefined": atom, "NaN": atom, "Infinity": atom, + "this": kw("this"), "class": kw("class"), "super": kw("atom"), + "yield": C, "export": kw("export"), "import": kw("import"), "extends": C, + "await": C + }; + }(); + + var isOperatorChar = /[+\-*&%=<>!?|~^@]/; + var isJsonldKeyword = /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/; + + function readRegexp(stream) { + var escaped = false, next, inSet = false; + while ((next = stream.next()) != null) { + if (!escaped) { + if (next == "/" && !inSet) return; + if (next == "[") inSet = true; + else if (inSet && next == "]") inSet = false; + } + escaped = !escaped && next == "\\"; + } + } + + // Used as scratch variables to communicate multiple values without + // consing up tons of objects. + var type, content; + function ret(tp, style, cont) { + type = tp; content = cont; + return style; + } + function tokenBase(stream, state) { + var ch = stream.next(); + if (ch == '"' || ch == "'") { + state.tokenize = tokenString(ch); + return state.tokenize(stream, state); + } else if (ch == "." && stream.match(/^\d[\d_]*(?:[eE][+\-]?[\d_]+)?/)) { + return ret("number", "number"); + } else if (ch == "." && stream.match("..")) { + return ret("spread", "meta"); + } else if (/[\[\]{}\(\),;\:\.]/.test(ch)) { + return ret(ch); + } else if (ch == "=" && stream.eat(">")) { + return ret("=>", "operator"); + } else if (ch == "0" && stream.match(/^(?:x[\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/)) { + return ret("number", "number"); + } else if (/\d/.test(ch)) { + stream.match(/^[\d_]*(?:n|(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)?/); + return ret("number", "number"); + } else if (ch == "/") { + if (stream.eat("*")) { + state.tokenize = tokenComment; + return tokenComment(stream, state); + } else if (stream.eat("/")) { + stream.skipToEnd(); + return ret("comment", "comment"); + } else if (expressionAllowed(stream, state, 1)) { + readRegexp(stream); + stream.match(/^\b(([gimyus])(?![gimyus]*\2))+\b/); + return ret("regexp", "string-2"); + } else { + stream.eat("="); + return ret("operator", "operator", stream.current()); + } + } else if (ch == "`") { + state.tokenize = tokenQuasi; + return tokenQuasi(stream, state); + } else if (ch == "#" && stream.peek() == "!") { + stream.skipToEnd(); + return ret("meta", "meta"); + } else if (ch == "#" && stream.eatWhile(wordRE)) { + return ret("variable", "property") + } else if (ch == "<" && stream.match("!--") || + (ch == "-" && stream.match("->") && !/\S/.test(stream.string.slice(0, stream.start)))) { + stream.skipToEnd() + return ret("comment", "comment") + } else if (isOperatorChar.test(ch)) { + if (ch != ">" || !state.lexical || state.lexical.type != ">") { + if (stream.eat("=")) { + if (ch == "!" || ch == "=") stream.eat("=") + } else if (/[<>*+\-|&?]/.test(ch)) { + stream.eat(ch) + if (ch == ">") stream.eat(ch) + } + } + if (ch == "?" && stream.eat(".")) return ret(".") + return ret("operator", "operator", stream.current()); + } else if (wordRE.test(ch)) { + stream.eatWhile(wordRE); + var word = stream.current() + if (state.lastType != ".") { + if (keywords.propertyIsEnumerable(word)) { + var kw = keywords[word] + return ret(kw.type, kw.style, word) + } + if (word == "async" && stream.match(/^(\s|\/\*.*?\*\/)*[\[\(\w]/, false)) + return ret("async", "keyword", word) + } + return ret("variable", "variable", word) + } + } + + function tokenString(quote) { + return function(stream, state) { + var escaped = false, next; + if (jsonldMode && stream.peek() == "@" && stream.match(isJsonldKeyword)){ + state.tokenize = tokenBase; + return ret("jsonld-keyword", "meta"); + } + while ((next = stream.next()) != null) { + if (next == quote && !escaped) break; + escaped = !escaped && next == "\\"; + } + if (!escaped) state.tokenize = tokenBase; + return ret("string", "string"); + }; + } + + function tokenComment(stream, state) { + var maybeEnd = false, ch; + while (ch = stream.next()) { + if (ch == "/" && maybeEnd) { + state.tokenize = tokenBase; + break; + } + maybeEnd = (ch == "*"); + } + return ret("comment", "comment"); + } + + function tokenQuasi(stream, state) { + var escaped = false, next; + while ((next = stream.next()) != null) { + if (!escaped && (next == "`" || next == "$" && stream.eat("{"))) { + state.tokenize = tokenBase; + break; + } + escaped = !escaped && next == "\\"; + } + return ret("quasi", "string-2", stream.current()); + } + + var brackets = "([{}])"; + // This is a crude lookahead trick to try and notice that we're + // parsing the argument patterns for a fat-arrow function before we + // actually hit the arrow token. It only works if the arrow is on + // the same line as the arguments and there's no strange noise + // (comments) in between. Fallback is to only notice when we hit the + // arrow, and not declare the arguments as locals for the arrow + // body. + function findFatArrow(stream, state) { + if (state.fatArrowAt) state.fatArrowAt = null; + var arrow = stream.string.indexOf("=>", stream.start); + if (arrow < 0) return; + + if (isTS) { // Try to skip TypeScript return type declarations after the arguments + var m = /:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec(stream.string.slice(stream.start, arrow)) + if (m) arrow = m.index + } + + var depth = 0, sawSomething = false; + for (var pos = arrow - 1; pos >= 0; --pos) { + var ch = stream.string.charAt(pos); + var bracket = brackets.indexOf(ch); + if (bracket >= 0 && bracket < 3) { + if (!depth) { ++pos; break; } + if (--depth == 0) { if (ch == "(") sawSomething = true; break; } + } else if (bracket >= 3 && bracket < 6) { + ++depth; + } else if (wordRE.test(ch)) { + sawSomething = true; + } else if (/["'\/`]/.test(ch)) { + for (;; --pos) { + if (pos == 0) return + var next = stream.string.charAt(pos - 1) + if (next == ch && stream.string.charAt(pos - 2) != "\\") { pos--; break } + } + } else if (sawSomething && !depth) { + ++pos; + break; + } + } + if (sawSomething && !depth) state.fatArrowAt = pos; + } + + // Parser + + var atomicTypes = {"atom": true, "number": true, "variable": true, "string": true, "regexp": true, "this": true, "jsonld-keyword": true}; + + function JSLexical(indented, column, type, align, prev, info) { + this.indented = indented; + this.column = column; + this.type = type; + this.prev = prev; + this.info = info; + if (align != null) this.align = align; + } + + function inScope(state, varname) { + for (var v = state.localVars; v; v = v.next) + if (v.name == varname) return true; + for (var cx = state.context; cx; cx = cx.prev) { + for (var v = cx.vars; v; v = v.next) + if (v.name == varname) return true; + } + } + + function parseJS(state, style, type, content, stream) { + var cc = state.cc; + // Communicate our context to the combinators. + // (Less wasteful than consing up a hundred closures on every call.) + cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc; cx.style = style; + + if (!state.lexical.hasOwnProperty("align")) + state.lexical.align = true; + + while(true) { + var combinator = cc.length ? cc.pop() : jsonMode ? expression : statement; + if (combinator(type, content)) { + while(cc.length && cc[cc.length - 1].lex) + cc.pop()(); + if (cx.marked) return cx.marked; + if (type == "variable" && inScope(state, content)) return "variable-2"; + return style; + } + } + } + + // Combinator utils + + var cx = {state: null, column: null, marked: null, cc: null}; + function pass() { + for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]); + } + function cont() { + pass.apply(null, arguments); + return true; + } + function inList(name, list) { + for (var v = list; v; v = v.next) if (v.name == name) return true + return false; + } + function register(varname) { + var state = cx.state; + cx.marked = "def"; + if (state.context) { + if (state.lexical.info == "var" && state.context && state.context.block) { + // FIXME function decls are also not block scoped + var newContext = registerVarScoped(varname, state.context) + if (newContext != null) { + state.context = newContext + return + } + } else if (!inList(varname, state.localVars)) { + state.localVars = new Var(varname, state.localVars) + return + } + } + // Fall through means this is global + if (parserConfig.globalVars && !inList(varname, state.globalVars)) + state.globalVars = new Var(varname, state.globalVars) + } + function registerVarScoped(varname, context) { + if (!context) { + return null + } else if (context.block) { + var inner = registerVarScoped(varname, context.prev) + if (!inner) return null + if (inner == context.prev) return context + return new Context(inner, context.vars, true) + } else if (inList(varname, context.vars)) { + return context + } else { + return new Context(context.prev, new Var(varname, context.vars), false) + } + } + + function isModifier(name) { + return name == "public" || name == "private" || name == "protected" || name == "abstract" || name == "readonly" + } + + // Combinators + + function Context(prev, vars, block) { this.prev = prev; this.vars = vars; this.block = block } + function Var(name, next) { this.name = name; this.next = next } + + var defaultVars = new Var("this", new Var("arguments", null)) + function pushcontext() { + cx.state.context = new Context(cx.state.context, cx.state.localVars, false) + cx.state.localVars = defaultVars + } + function pushblockcontext() { + cx.state.context = new Context(cx.state.context, cx.state.localVars, true) + cx.state.localVars = null + } + function popcontext() { + cx.state.localVars = cx.state.context.vars + cx.state.context = cx.state.context.prev + } + popcontext.lex = true + function pushlex(type, info) { + var result = function() { + var state = cx.state, indent = state.indented; + if (state.lexical.type == "stat") indent = state.lexical.indented; + else for (var outer = state.lexical; outer && outer.type == ")" && outer.align; outer = outer.prev) + indent = outer.indented; + state.lexical = new JSLexical(indent, cx.stream.column(), type, null, state.lexical, info); + }; + result.lex = true; + return result; + } + function poplex() { + var state = cx.state; + if (state.lexical.prev) { + if (state.lexical.type == ")") + state.indented = state.lexical.indented; + state.lexical = state.lexical.prev; + } + } + poplex.lex = true; + + function expect(wanted) { + function exp(type) { + if (type == wanted) return cont(); + else if (wanted == ";" || type == "}" || type == ")" || type == "]") return pass(); + else return cont(exp); + }; + return exp; + } + + function statement(type, value) { + if (type == "var") return cont(pushlex("vardef", value), vardef, expect(";"), poplex); + if (type == "keyword a") return cont(pushlex("form"), parenExpr, statement, poplex); + if (type == "keyword b") return cont(pushlex("form"), statement, poplex); + if (type == "keyword d") return cx.stream.match(/^\s*$/, false) ? cont() : cont(pushlex("stat"), maybeexpression, expect(";"), poplex); + if (type == "debugger") return cont(expect(";")); + if (type == "{") return cont(pushlex("}"), pushblockcontext, block, poplex, popcontext); + if (type == ";") return cont(); + if (type == "if") { + if (cx.state.lexical.info == "else" && cx.state.cc[cx.state.cc.length - 1] == poplex) + cx.state.cc.pop()(); + return cont(pushlex("form"), parenExpr, statement, poplex, maybeelse); + } + if (type == "function") return cont(functiondef); + if (type == "for") return cont(pushlex("form"), forspec, statement, poplex); + if (type == "class" || (isTS && value == "interface")) { + cx.marked = "keyword" + return cont(pushlex("form", type == "class" ? type : value), className, poplex) + } + if (type == "variable") { + if (isTS && value == "declare") { + cx.marked = "keyword" + return cont(statement) + } else if (isTS && (value == "module" || value == "enum" || value == "type") && cx.stream.match(/^\s*\w/, false)) { + cx.marked = "keyword" + if (value == "enum") return cont(enumdef); + else if (value == "type") return cont(typename, expect("operator"), typeexpr, expect(";")); + else return cont(pushlex("form"), pattern, expect("{"), pushlex("}"), block, poplex, poplex) + } else if (isTS && value == "namespace") { + cx.marked = "keyword" + return cont(pushlex("form"), expression, statement, poplex) + } else if (isTS && value == "abstract") { + cx.marked = "keyword" + return cont(statement) + } else { + return cont(pushlex("stat"), maybelabel); + } + } + if (type == "switch") return cont(pushlex("form"), parenExpr, expect("{"), pushlex("}", "switch"), pushblockcontext, + block, poplex, poplex, popcontext); + if (type == "case") return cont(expression, expect(":")); + if (type == "default") return cont(expect(":")); + if (type == "catch") return cont(pushlex("form"), pushcontext, maybeCatchBinding, statement, poplex, popcontext); + if (type == "export") return cont(pushlex("stat"), afterExport, poplex); + if (type == "import") return cont(pushlex("stat"), afterImport, poplex); + if (type == "async") return cont(statement) + if (value == "@") return cont(expression, statement) + return pass(pushlex("stat"), expression, expect(";"), poplex); + } + function maybeCatchBinding(type) { + if (type == "(") return cont(funarg, expect(")")) + } + function expression(type, value) { + return expressionInner(type, value, false); + } + function expressionNoComma(type, value) { + return expressionInner(type, value, true); + } + function parenExpr(type) { + if (type != "(") return pass() + return cont(pushlex(")"), maybeexpression, expect(")"), poplex) + } + function expressionInner(type, value, noComma) { + if (cx.state.fatArrowAt == cx.stream.start) { + var body = noComma ? arrowBodyNoComma : arrowBody; + if (type == "(") return cont(pushcontext, pushlex(")"), commasep(funarg, ")"), poplex, expect("=>"), body, popcontext); + else if (type == "variable") return pass(pushcontext, pattern, expect("=>"), body, popcontext); + } + + var maybeop = noComma ? maybeoperatorNoComma : maybeoperatorComma; + if (atomicTypes.hasOwnProperty(type)) return cont(maybeop); + if (type == "function") return cont(functiondef, maybeop); + if (type == "class" || (isTS && value == "interface")) { cx.marked = "keyword"; return cont(pushlex("form"), classExpression, poplex); } + if (type == "keyword c" || type == "async") return cont(noComma ? expressionNoComma : expression); + if (type == "(") return cont(pushlex(")"), maybeexpression, expect(")"), poplex, maybeop); + if (type == "operator" || type == "spread") return cont(noComma ? expressionNoComma : expression); + if (type == "[") return cont(pushlex("]"), arrayLiteral, poplex, maybeop); + if (type == "{") return contCommasep(objprop, "}", null, maybeop); + if (type == "quasi") return pass(quasi, maybeop); + if (type == "new") return cont(maybeTarget(noComma)); + if (type == "import") return cont(expression); + return cont(); + } + function maybeexpression(type) { + if (type.match(/[;\}\)\],]/)) return pass(); + return pass(expression); + } + + function maybeoperatorComma(type, value) { + if (type == ",") return cont(maybeexpression); + return maybeoperatorNoComma(type, value, false); + } + function maybeoperatorNoComma(type, value, noComma) { + var me = noComma == false ? maybeoperatorComma : maybeoperatorNoComma; + var expr = noComma == false ? expression : expressionNoComma; + if (type == "=>") return cont(pushcontext, noComma ? arrowBodyNoComma : arrowBody, popcontext); + if (type == "operator") { + if (/\+\+|--/.test(value) || isTS && value == "!") return cont(me); + if (isTS && value == "<" && cx.stream.match(/^([^<>]|<[^<>]*>)*>\s*\(/, false)) + return cont(pushlex(">"), commasep(typeexpr, ">"), poplex, me); + if (value == "?") return cont(expression, expect(":"), expr); + return cont(expr); + } + if (type == "quasi") { return pass(quasi, me); } + if (type == ";") return; + if (type == "(") return contCommasep(expressionNoComma, ")", "call", me); + if (type == ".") return cont(property, me); + if (type == "[") return cont(pushlex("]"), maybeexpression, expect("]"), poplex, me); + if (isTS && value == "as") { cx.marked = "keyword"; return cont(typeexpr, me) } + if (type == "regexp") { + cx.state.lastType = cx.marked = "operator" + cx.stream.backUp(cx.stream.pos - cx.stream.start - 1) + return cont(expr) + } + } + function quasi(type, value) { + if (type != "quasi") return pass(); + if (value.slice(value.length - 2) != "${") return cont(quasi); + return cont(expression, continueQuasi); + } + function continueQuasi(type) { + if (type == "}") { + cx.marked = "string-2"; + cx.state.tokenize = tokenQuasi; + return cont(quasi); + } + } + function arrowBody(type) { + findFatArrow(cx.stream, cx.state); + return pass(type == "{" ? statement : expression); + } + function arrowBodyNoComma(type) { + findFatArrow(cx.stream, cx.state); + return pass(type == "{" ? statement : expressionNoComma); + } + function maybeTarget(noComma) { + return function(type) { + if (type == ".") return cont(noComma ? targetNoComma : target); + else if (type == "variable" && isTS) return cont(maybeTypeArgs, noComma ? maybeoperatorNoComma : maybeoperatorComma) + else return pass(noComma ? expressionNoComma : expression); + }; + } + function target(_, value) { + if (value == "target") { cx.marked = "keyword"; return cont(maybeoperatorComma); } + } + function targetNoComma(_, value) { + if (value == "target") { cx.marked = "keyword"; return cont(maybeoperatorNoComma); } + } + function maybelabel(type) { + if (type == ":") return cont(poplex, statement); + return pass(maybeoperatorComma, expect(";"), poplex); + } + function property(type) { + if (type == "variable") {cx.marked = "property"; return cont();} + } + function objprop(type, value) { + if (type == "async") { + cx.marked = "property"; + return cont(objprop); + } else if (type == "variable" || cx.style == "keyword") { + cx.marked = "property"; + if (value == "get" || value == "set") return cont(getterSetter); + var m // Work around fat-arrow-detection complication for detecting typescript typed arrow params + if (isTS && cx.state.fatArrowAt == cx.stream.start && (m = cx.stream.match(/^\s*:\s*/, false))) + cx.state.fatArrowAt = cx.stream.pos + m[0].length + return cont(afterprop); + } else if (type == "number" || type == "string") { + cx.marked = jsonldMode ? "property" : (cx.style + " property"); + return cont(afterprop); + } else if (type == "jsonld-keyword") { + return cont(afterprop); + } else if (isTS && isModifier(value)) { + cx.marked = "keyword" + return cont(objprop) + } else if (type == "[") { + return cont(expression, maybetype, expect("]"), afterprop); + } else if (type == "spread") { + return cont(expressionNoComma, afterprop); + } else if (value == "*") { + cx.marked = "keyword"; + return cont(objprop); + } else if (type == ":") { + return pass(afterprop) + } + } + function getterSetter(type) { + if (type != "variable") return pass(afterprop); + cx.marked = "property"; + return cont(functiondef); + } + function afterprop(type) { + if (type == ":") return cont(expressionNoComma); + if (type == "(") return pass(functiondef); + } + function commasep(what, end, sep) { + function proceed(type, value) { + if (sep ? sep.indexOf(type) > -1 : type == ",") { + var lex = cx.state.lexical; + if (lex.info == "call") lex.pos = (lex.pos || 0) + 1; + return cont(function(type, value) { + if (type == end || value == end) return pass() + return pass(what) + }, proceed); + } + if (type == end || value == end) return cont(); + if (sep && sep.indexOf(";") > -1) return pass(what) + return cont(expect(end)); + } + return function(type, value) { + if (type == end || value == end) return cont(); + return pass(what, proceed); + }; + } + function contCommasep(what, end, info) { + for (var i = 3; i < arguments.length; i++) + cx.cc.push(arguments[i]); + return cont(pushlex(end, info), commasep(what, end), poplex); + } + function block(type) { + if (type == "}") return cont(); + return pass(statement, block); + } + function maybetype(type, value) { + if (isTS) { + if (type == ":") return cont(typeexpr); + if (value == "?") return cont(maybetype); + } + } + function maybetypeOrIn(type, value) { + if (isTS && (type == ":" || value == "in")) return cont(typeexpr) + } + function mayberettype(type) { + if (isTS && type == ":") { + if (cx.stream.match(/^\s*\w+\s+is\b/, false)) return cont(expression, isKW, typeexpr) + else return cont(typeexpr) + } + } + function isKW(_, value) { + if (value == "is") { + cx.marked = "keyword" + return cont() + } + } + function typeexpr(type, value) { + if (value == "keyof" || value == "typeof" || value == "infer") { + cx.marked = "keyword" + return cont(value == "typeof" ? expressionNoComma : typeexpr) + } + if (type == "variable" || value == "void") { + cx.marked = "type" + return cont(afterType) + } + if (value == "|" || value == "&") return cont(typeexpr) + if (type == "string" || type == "number" || type == "atom") return cont(afterType); + if (type == "[") return cont(pushlex("]"), commasep(typeexpr, "]", ","), poplex, afterType) + if (type == "{") return cont(pushlex("}"), commasep(typeprop, "}", ",;"), poplex, afterType) + if (type == "(") return cont(commasep(typearg, ")"), maybeReturnType, afterType) + if (type == "<") return cont(commasep(typeexpr, ">"), typeexpr) + } + function maybeReturnType(type) { + if (type == "=>") return cont(typeexpr) + } + function typeprop(type, value) { + if (type == "variable" || cx.style == "keyword") { + cx.marked = "property" + return cont(typeprop) + } else if (value == "?" || type == "number" || type == "string") { + return cont(typeprop) + } else if (type == ":") { + return cont(typeexpr) + } else if (type == "[") { + return cont(expect("variable"), maybetypeOrIn, expect("]"), typeprop) + } else if (type == "(") { + return pass(functiondecl, typeprop) + } + } + function typearg(type, value) { + if (type == "variable" && cx.stream.match(/^\s*[?:]/, false) || value == "?") return cont(typearg) + if (type == ":") return cont(typeexpr) + if (type == "spread") return cont(typearg) + return pass(typeexpr) + } + function afterType(type, value) { + if (value == "<") return cont(pushlex(">"), commasep(typeexpr, ">"), poplex, afterType) + if (value == "|" || type == "." || value == "&") return cont(typeexpr) + if (type == "[") return cont(typeexpr, expect("]"), afterType) + if (value == "extends" || value == "implements") { cx.marked = "keyword"; return cont(typeexpr) } + if (value == "?") return cont(typeexpr, expect(":"), typeexpr) + } + function maybeTypeArgs(_, value) { + if (value == "<") return cont(pushlex(">"), commasep(typeexpr, ">"), poplex, afterType) + } + function typeparam() { + return pass(typeexpr, maybeTypeDefault) + } + function maybeTypeDefault(_, value) { + if (value == "=") return cont(typeexpr) + } + function vardef(_, value) { + if (value == "enum") {cx.marked = "keyword"; return cont(enumdef)} + return pass(pattern, maybetype, maybeAssign, vardefCont); + } + function pattern(type, value) { + if (isTS && isModifier(value)) { cx.marked = "keyword"; return cont(pattern) } + if (type == "variable") { register(value); return cont(); } + if (type == "spread") return cont(pattern); + if (type == "[") return contCommasep(eltpattern, "]"); + if (type == "{") return contCommasep(proppattern, "}"); + } + function proppattern(type, value) { + if (type == "variable" && !cx.stream.match(/^\s*:/, false)) { + register(value); + return cont(maybeAssign); + } + if (type == "variable") cx.marked = "property"; + if (type == "spread") return cont(pattern); + if (type == "}") return pass(); + if (type == "[") return cont(expression, expect(']'), expect(':'), proppattern); + return cont(expect(":"), pattern, maybeAssign); + } + function eltpattern() { + return pass(pattern, maybeAssign) + } + function maybeAssign(_type, value) { + if (value == "=") return cont(expressionNoComma); + } + function vardefCont(type) { + if (type == ",") return cont(vardef); + } + function maybeelse(type, value) { + if (type == "keyword b" && value == "else") return cont(pushlex("form", "else"), statement, poplex); + } + function forspec(type, value) { + if (value == "await") return cont(forspec); + if (type == "(") return cont(pushlex(")"), forspec1, poplex); + } + function forspec1(type) { + if (type == "var") return cont(vardef, forspec2); + if (type == "variable") return cont(forspec2); + return pass(forspec2) + } + function forspec2(type, value) { + if (type == ")") return cont() + if (type == ";") return cont(forspec2) + if (value == "in" || value == "of") { cx.marked = "keyword"; return cont(expression, forspec2) } + return pass(expression, forspec2) + } + function functiondef(type, value) { + if (value == "*") {cx.marked = "keyword"; return cont(functiondef);} + if (type == "variable") {register(value); return cont(functiondef);} + if (type == "(") return cont(pushcontext, pushlex(")"), commasep(funarg, ")"), poplex, mayberettype, statement, popcontext); + if (isTS && value == "<") return cont(pushlex(">"), commasep(typeparam, ">"), poplex, functiondef) + } + function functiondecl(type, value) { + if (value == "*") {cx.marked = "keyword"; return cont(functiondecl);} + if (type == "variable") {register(value); return cont(functiondecl);} + if (type == "(") return cont(pushcontext, pushlex(")"), commasep(funarg, ")"), poplex, mayberettype, popcontext); + if (isTS && value == "<") return cont(pushlex(">"), commasep(typeparam, ">"), poplex, functiondecl) + } + function typename(type, value) { + if (type == "keyword" || type == "variable") { + cx.marked = "type" + return cont(typename) + } else if (value == "<") { + return cont(pushlex(">"), commasep(typeparam, ">"), poplex) + } + } + function funarg(type, value) { + if (value == "@") cont(expression, funarg) + if (type == "spread") return cont(funarg); + if (isTS && isModifier(value)) { cx.marked = "keyword"; return cont(funarg); } + if (isTS && type == "this") return cont(maybetype, maybeAssign) + return pass(pattern, maybetype, maybeAssign); + } + function classExpression(type, value) { + // Class expressions may have an optional name. + if (type == "variable") return className(type, value); + return classNameAfter(type, value); + } + function className(type, value) { + if (type == "variable") {register(value); return cont(classNameAfter);} + } + function classNameAfter(type, value) { + if (value == "<") return cont(pushlex(">"), commasep(typeparam, ">"), poplex, classNameAfter) + if (value == "extends" || value == "implements" || (isTS && type == ",")) { + if (value == "implements") cx.marked = "keyword"; + return cont(isTS ? typeexpr : expression, classNameAfter); + } + if (type == "{") return cont(pushlex("}"), classBody, poplex); + } + function classBody(type, value) { + if (type == "async" || + (type == "variable" && + (value == "static" || value == "get" || value == "set" || (isTS && isModifier(value))) && + cx.stream.match(/^\s+[\w$\xa1-\uffff]/, false))) { + cx.marked = "keyword"; + return cont(classBody); + } + if (type == "variable" || cx.style == "keyword") { + cx.marked = "property"; + return cont(classfield, classBody); + } + if (type == "number" || type == "string") return cont(classfield, classBody); + if (type == "[") + return cont(expression, maybetype, expect("]"), classfield, classBody) + if (value == "*") { + cx.marked = "keyword"; + return cont(classBody); + } + if (isTS && type == "(") return pass(functiondecl, classBody) + if (type == ";" || type == ",") return cont(classBody); + if (type == "}") return cont(); + if (value == "@") return cont(expression, classBody) + } + function classfield(type, value) { + if (value == "?") return cont(classfield) + if (type == ":") return cont(typeexpr, maybeAssign) + if (value == "=") return cont(expressionNoComma) + var context = cx.state.lexical.prev, isInterface = context && context.info == "interface" + return pass(isInterface ? functiondecl : functiondef) + } + function afterExport(type, value) { + if (value == "*") { cx.marked = "keyword"; return cont(maybeFrom, expect(";")); } + if (value == "default") { cx.marked = "keyword"; return cont(expression, expect(";")); } + if (type == "{") return cont(commasep(exportField, "}"), maybeFrom, expect(";")); + return pass(statement); + } + function exportField(type, value) { + if (value == "as") { cx.marked = "keyword"; return cont(expect("variable")); } + if (type == "variable") return pass(expressionNoComma, exportField); + } + function afterImport(type) { + if (type == "string") return cont(); + if (type == "(") return pass(expression); + return pass(importSpec, maybeMoreImports, maybeFrom); + } + function importSpec(type, value) { + if (type == "{") return contCommasep(importSpec, "}"); + if (type == "variable") register(value); + if (value == "*") cx.marked = "keyword"; + return cont(maybeAs); + } + function maybeMoreImports(type) { + if (type == ",") return cont(importSpec, maybeMoreImports) + } + function maybeAs(_type, value) { + if (value == "as") { cx.marked = "keyword"; return cont(importSpec); } + } + function maybeFrom(_type, value) { + if (value == "from") { cx.marked = "keyword"; return cont(expression); } + } + function arrayLiteral(type) { + if (type == "]") return cont(); + return pass(commasep(expressionNoComma, "]")); + } + function enumdef() { + return pass(pushlex("form"), pattern, expect("{"), pushlex("}"), commasep(enummember, "}"), poplex, poplex) + } + function enummember() { + return pass(pattern, maybeAssign); + } + + function isContinuedStatement(state, textAfter) { + return state.lastType == "operator" || state.lastType == "," || + isOperatorChar.test(textAfter.charAt(0)) || + /[,.]/.test(textAfter.charAt(0)); + } + + function expressionAllowed(stream, state, backUp) { + return state.tokenize == tokenBase && + /^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\[{}\(,;:]|=>)$/.test(state.lastType) || + (state.lastType == "quasi" && /\{\s*$/.test(stream.string.slice(0, stream.pos - (backUp || 0)))) + } + + // Interface + + return { + startState: function(basecolumn) { + var state = { + tokenize: tokenBase, + lastType: "sof", + cc: [], + lexical: new JSLexical((basecolumn || 0) - indentUnit, 0, "block", false), + localVars: parserConfig.localVars, + context: parserConfig.localVars && new Context(null, null, false), + indented: basecolumn || 0 + }; + if (parserConfig.globalVars && typeof parserConfig.globalVars == "object") + state.globalVars = parserConfig.globalVars; + return state; + }, + + token: function(stream, state) { + if (stream.sol()) { + if (!state.lexical.hasOwnProperty("align")) + state.lexical.align = false; + state.indented = stream.indentation(); + findFatArrow(stream, state); + } + if (state.tokenize != tokenComment && stream.eatSpace()) return null; + var style = state.tokenize(stream, state); + if (type == "comment") return style; + state.lastType = type == "operator" && (content == "++" || content == "--") ? "incdec" : type; + return parseJS(state, style, type, content, stream); + }, + + indent: function(state, textAfter) { + if (state.tokenize == tokenComment) return CodeMirror.Pass; + if (state.tokenize != tokenBase) return 0; + var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical, top + // Kludge to prevent 'maybelse' from blocking lexical scope pops + if (!/^\s*else\b/.test(textAfter)) for (var i = state.cc.length - 1; i >= 0; --i) { + var c = state.cc[i]; + if (c == poplex) lexical = lexical.prev; + else if (c != maybeelse) break; + } + while ((lexical.type == "stat" || lexical.type == "form") && + (firstChar == "}" || ((top = state.cc[state.cc.length - 1]) && + (top == maybeoperatorComma || top == maybeoperatorNoComma) && + !/^[,\.=+\-*:?[\(]/.test(textAfter)))) + lexical = lexical.prev; + if (statementIndent && lexical.type == ")" && lexical.prev.type == "stat") + lexical = lexical.prev; + var type = lexical.type, closing = firstChar == type; + + if (type == "vardef") return lexical.indented + (state.lastType == "operator" || state.lastType == "," ? lexical.info.length + 1 : 0); + else if (type == "form" && firstChar == "{") return lexical.indented; + else if (type == "form") return lexical.indented + indentUnit; + else if (type == "stat") + return lexical.indented + (isContinuedStatement(state, textAfter) ? statementIndent || indentUnit : 0); + else if (lexical.info == "switch" && !closing && parserConfig.doubleIndentSwitch != false) + return lexical.indented + (/^(?:case|default)\b/.test(textAfter) ? indentUnit : 2 * indentUnit); + else if (lexical.align) return lexical.column + (closing ? 0 : 1); + else return lexical.indented + (closing ? 0 : indentUnit); + }, + + electricInput: /^\s*(?:case .*?:|default:|\{|\})$/, + blockCommentStart: jsonMode ? null : "/*", + blockCommentEnd: jsonMode ? null : "*/", + blockCommentContinue: jsonMode ? null : " * ", + lineComment: jsonMode ? null : "//", + fold: "brace", + closeBrackets: "()[]{}''\"\"``", + + helperType: jsonMode ? "json" : "javascript", + jsonldMode: jsonldMode, + jsonMode: jsonMode, + + expressionAllowed: expressionAllowed, + + skipExpression: function(state) { + var top = state.cc[state.cc.length - 1] + if (top == expression || top == expressionNoComma) state.cc.pop() + } + }; +}); + +CodeMirror.registerHelper("wordChars", "javascript", /[\w$]/); + +CodeMirror.defineMIME("text/javascript", "javascript"); +CodeMirror.defineMIME("text/ecmascript", "javascript"); +CodeMirror.defineMIME("application/javascript", "javascript"); +CodeMirror.defineMIME("application/x-javascript", "javascript"); +CodeMirror.defineMIME("application/ecmascript", "javascript"); +CodeMirror.defineMIME("application/json", {name: "javascript", json: true}); +CodeMirror.defineMIME("application/x-json", {name: "javascript", json: true}); +CodeMirror.defineMIME("application/ld+json", {name: "javascript", jsonld: true}); +CodeMirror.defineMIME("text/typescript", { name: "javascript", typescript: true }); +CodeMirror.defineMIME("application/typescript", { name: "javascript", typescript: true }); + +}); + +},{"../../lib/codemirror":116}],118:[function(require,module,exports){ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.dayjs=e()}(this,function(){"use strict";var t="millisecond",e="second",n="minute",r="hour",i="day",s="week",u="month",a="quarter",o="year",f="date",h=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[^0-9]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?.?(\d+)?$/,c=/\[([^\]]+)]|Y{2,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,d={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_")},$=function(t,e,n){var r=String(t);return!r||r.length>=e?t:""+Array(e+1-r.length).join(n)+t},l={s:$,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?"+":"-")+$(r,2,"0")+":"+$(i,2,"0")},m:function t(e,n){if(e.date() 1 ? sources[length - 1] : undefined, + guard = length > 2 ? sources[2] : undefined; + + customizer = (assigner.length > 3 && typeof customizer == 'function') + ? (length--, customizer) + : undefined; + + if (guard && isIterateeCall(sources[0], sources[1], guard)) { + customizer = length < 3 ? undefined : customizer; + length = 1; + } + object = Object(object); + while (++index < length) { + var source = sources[index]; + if (source) { + assigner(object, source, index, customizer); + } + } + return object; + }); +} + +module.exports = createAssigner; + +},{"./_baseRest":171,"./_isIterateeCall":219}],191:[function(require,module,exports){ +var isArrayLike = require('./isArrayLike'); + +/** + * Creates a `baseEach` or `baseEachRight` function. + * + * @private + * @param {Function} eachFunc The function to iterate over a collection. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ +function createBaseEach(eachFunc, fromRight) { + return function(collection, iteratee) { + if (collection == null) { + return collection; + } + if (!isArrayLike(collection)) { + return eachFunc(collection, iteratee); + } + var length = collection.length, + index = fromRight ? length : -1, + iterable = Object(collection); + + while ((fromRight ? index-- : ++index < length)) { + if (iteratee(iterable[index], index, iterable) === false) { + break; + } + } + return collection; + }; +} + +module.exports = createBaseEach; + +},{"./isArrayLike":272}],192:[function(require,module,exports){ +/** + * Creates a base function for methods like `_.forIn` and `_.forOwn`. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ +function createBaseFor(fromRight) { + return function(object, iteratee, keysFunc) { + var index = -1, + iterable = Object(object), + props = keysFunc(object), + length = props.length; + + while (length--) { + var key = props[fromRight ? length : ++index]; + if (iteratee(iterable[key], key, iterable) === false) { + break; + } + } + return object; + }; +} + +module.exports = createBaseFor; + +},{}],193:[function(require,module,exports){ +var getNative = require('./_getNative'); + +var defineProperty = (function() { + try { + var func = getNative(Object, 'defineProperty'); + func({}, '', {}); + return func; + } catch (e) {} +}()); + +module.exports = defineProperty; + +},{"./_getNative":202}],194:[function(require,module,exports){ +var SetCache = require('./_SetCache'), + arraySome = require('./_arraySome'), + cacheHas = require('./_cacheHas'); + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; + +/** + * A specialized version of `baseIsEqualDeep` for arrays with support for + * partial deep comparisons. + * + * @private + * @param {Array} array The array to compare. + * @param {Array} other The other array to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `array` and `other` objects. + * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. + */ +function equalArrays(array, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG, + arrLength = array.length, + othLength = other.length; + + if (arrLength != othLength && !(isPartial && othLength > arrLength)) { + return false; + } + // Check that cyclic values are equal. + var arrStacked = stack.get(array); + var othStacked = stack.get(other); + if (arrStacked && othStacked) { + return arrStacked == other && othStacked == array; + } + var index = -1, + result = true, + seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined; + + stack.set(array, other); + stack.set(other, array); + + // Ignore non-index properties. + while (++index < arrLength) { + var arrValue = array[index], + othValue = other[index]; + + if (customizer) { + var compared = isPartial + ? customizer(othValue, arrValue, index, other, array, stack) + : customizer(arrValue, othValue, index, array, other, stack); + } + if (compared !== undefined) { + if (compared) { + continue; + } + result = false; + break; + } + // Recursively compare arrays (susceptible to call stack limits). + if (seen) { + if (!arraySome(other, function(othValue, othIndex) { + if (!cacheHas(seen, othIndex) && + (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { + return seen.push(othIndex); + } + })) { + result = false; + break; + } + } else if (!( + arrValue === othValue || + equalFunc(arrValue, othValue, bitmask, customizer, stack) + )) { + result = false; + break; + } + } + stack['delete'](array); + stack['delete'](other); + return result; +} + +module.exports = equalArrays; + +},{"./_SetCache":126,"./_arraySome":137,"./_cacheHas":176}],195:[function(require,module,exports){ +var Symbol = require('./_Symbol'), + Uint8Array = require('./_Uint8Array'), + eq = require('./eq'), + equalArrays = require('./_equalArrays'), + mapToArray = require('./_mapToArray'), + setToArray = require('./_setToArray'); + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; + +/** `Object#toString` result references. */ +var boolTag = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + mapTag = '[object Map]', + numberTag = '[object Number]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + symbolTag = '[object Symbol]'; + +var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]'; + +/** Used to convert symbols to primitives and strings. */ +var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolValueOf = symbolProto ? symbolProto.valueOf : undefined; + +/** + * A specialized version of `baseIsEqualDeep` for comparing objects of + * the same `toStringTag`. + * + * **Note:** This function only supports comparing values with tags of + * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {string} tag The `toStringTag` of the objects to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ +function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) { + switch (tag) { + case dataViewTag: + if ((object.byteLength != other.byteLength) || + (object.byteOffset != other.byteOffset)) { + return false; + } + object = object.buffer; + other = other.buffer; + + case arrayBufferTag: + if ((object.byteLength != other.byteLength) || + !equalFunc(new Uint8Array(object), new Uint8Array(other))) { + return false; + } + return true; + + case boolTag: + case dateTag: + case numberTag: + // Coerce booleans to `1` or `0` and dates to milliseconds. + // Invalid dates are coerced to `NaN`. + return eq(+object, +other); + + case errorTag: + return object.name == other.name && object.message == other.message; + + case regexpTag: + case stringTag: + // Coerce regexes to strings and treat strings, primitives and objects, + // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring + // for more details. + return object == (other + ''); + + case mapTag: + var convert = mapToArray; + + case setTag: + var isPartial = bitmask & COMPARE_PARTIAL_FLAG; + convert || (convert = setToArray); + + if (object.size != other.size && !isPartial) { + return false; + } + // Assume cyclic values are equal. + var stacked = stack.get(object); + if (stacked) { + return stacked == other; + } + bitmask |= COMPARE_UNORDERED_FLAG; + + // Recursively compare objects (susceptible to call stack limits). + stack.set(object, other); + var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack); + stack['delete'](object); + return result; + + case symbolTag: + if (symbolValueOf) { + return symbolValueOf.call(object) == symbolValueOf.call(other); + } + } + return false; +} + +module.exports = equalByTag; + +},{"./_Symbol":128,"./_Uint8Array":129,"./_equalArrays":194,"./_mapToArray":235,"./_setToArray":249,"./eq":264}],196:[function(require,module,exports){ +var getAllKeys = require('./_getAllKeys'); + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * A specialized version of `baseIsEqualDeep` for objects with support for + * partial deep comparisons. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ +function equalObjects(object, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG, + objProps = getAllKeys(object), + objLength = objProps.length, + othProps = getAllKeys(other), + othLength = othProps.length; + + if (objLength != othLength && !isPartial) { + return false; + } + var index = objLength; + while (index--) { + var key = objProps[index]; + if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) { + return false; + } + } + // Check that cyclic values are equal. + var objStacked = stack.get(object); + var othStacked = stack.get(other); + if (objStacked && othStacked) { + return objStacked == other && othStacked == object; + } + var result = true; + stack.set(object, other); + stack.set(other, object); + + var skipCtor = isPartial; + while (++index < objLength) { + key = objProps[index]; + var objValue = object[key], + othValue = other[key]; + + if (customizer) { + var compared = isPartial + ? customizer(othValue, objValue, key, other, object, stack) + : customizer(objValue, othValue, key, object, other, stack); + } + // Recursively compare objects (susceptible to call stack limits). + if (!(compared === undefined + ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack)) + : compared + )) { + result = false; + break; + } + skipCtor || (skipCtor = key == 'constructor'); + } + if (result && !skipCtor) { + var objCtor = object.constructor, + othCtor = other.constructor; + + // Non `Object` object instances with different constructors are not equal. + if (objCtor != othCtor && + ('constructor' in object && 'constructor' in other) && + !(typeof objCtor == 'function' && objCtor instanceof objCtor && + typeof othCtor == 'function' && othCtor instanceof othCtor)) { + result = false; + } + } + stack['delete'](object); + stack['delete'](other); + return result; +} + +module.exports = equalObjects; + +},{"./_getAllKeys":198}],197:[function(require,module,exports){ +(function (global){ +/** Detect free variable `global` from Node.js. */ +var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; + +module.exports = freeGlobal; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) + +},{}],198:[function(require,module,exports){ +var baseGetAllKeys = require('./_baseGetAllKeys'), + getSymbols = require('./_getSymbols'), + keys = require('./keys'); + +/** + * Creates an array of own enumerable property names and symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names and symbols. + */ +function getAllKeys(object) { + return baseGetAllKeys(object, keys, getSymbols); +} + +module.exports = getAllKeys; + +},{"./_baseGetAllKeys":150,"./_getSymbols":205,"./keys":286}],199:[function(require,module,exports){ +var baseGetAllKeys = require('./_baseGetAllKeys'), + getSymbolsIn = require('./_getSymbolsIn'), + keysIn = require('./keysIn'); + +/** + * Creates an array of own and inherited enumerable property names and + * symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names and symbols. + */ +function getAllKeysIn(object) { + return baseGetAllKeys(object, keysIn, getSymbolsIn); +} + +module.exports = getAllKeysIn; + +},{"./_baseGetAllKeys":150,"./_getSymbolsIn":206,"./keysIn":287}],200:[function(require,module,exports){ +var isKeyable = require('./_isKeyable'); + +/** + * Gets the data for `map`. + * + * @private + * @param {Object} map The map to query. + * @param {string} key The reference key. + * @returns {*} Returns the map data. + */ +function getMapData(map, key) { + var data = map.__data__; + return isKeyable(key) + ? data[typeof key == 'string' ? 'string' : 'hash'] + : data.map; +} + +module.exports = getMapData; + +},{"./_isKeyable":221}],201:[function(require,module,exports){ +var isStrictComparable = require('./_isStrictComparable'), + keys = require('./keys'); + +/** + * Gets the property names, values, and compare flags of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the match data of `object`. + */ +function getMatchData(object) { + var result = keys(object), + length = result.length; + + while (length--) { + var key = result[length], + value = object[key]; + + result[length] = [key, value, isStrictComparable(value)]; + } + return result; +} + +module.exports = getMatchData; + +},{"./_isStrictComparable":224,"./keys":286}],202:[function(require,module,exports){ +var baseIsNative = require('./_baseIsNative'), + getValue = require('./_getValue'); + +/** + * Gets the native function at `key` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the method to get. + * @returns {*} Returns the function if it's native, else `undefined`. + */ +function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : undefined; +} + +module.exports = getNative; + +},{"./_baseIsNative":158,"./_getValue":208}],203:[function(require,module,exports){ +var overArg = require('./_overArg'); + +/** Built-in value references. */ +var getPrototype = overArg(Object.getPrototypeOf, Object); + +module.exports = getPrototype; + +},{"./_overArg":243}],204:[function(require,module,exports){ +var Symbol = require('./_Symbol'); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var nativeObjectToString = objectProto.toString; + +/** Built-in value references. */ +var symToStringTag = Symbol ? Symbol.toStringTag : undefined; + +/** + * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the raw `toStringTag`. + */ +function getRawTag(value) { + var isOwn = hasOwnProperty.call(value, symToStringTag), + tag = value[symToStringTag]; + + try { + value[symToStringTag] = undefined; + var unmasked = true; + } catch (e) {} + + var result = nativeObjectToString.call(value); + if (unmasked) { + if (isOwn) { + value[symToStringTag] = tag; + } else { + delete value[symToStringTag]; + } + } + return result; +} + +module.exports = getRawTag; + +},{"./_Symbol":128}],205:[function(require,module,exports){ +var arrayFilter = require('./_arrayFilter'), + stubArray = require('./stubArray'); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Built-in value references. */ +var propertyIsEnumerable = objectProto.propertyIsEnumerable; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeGetSymbols = Object.getOwnPropertySymbols; + +/** + * Creates an array of the own enumerable symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of symbols. + */ +var getSymbols = !nativeGetSymbols ? stubArray : function(object) { + if (object == null) { + return []; + } + object = Object(object); + return arrayFilter(nativeGetSymbols(object), function(symbol) { + return propertyIsEnumerable.call(object, symbol); + }); +}; + +module.exports = getSymbols; + +},{"./_arrayFilter":133,"./stubArray":293}],206:[function(require,module,exports){ +var arrayPush = require('./_arrayPush'), + getPrototype = require('./_getPrototype'), + getSymbols = require('./_getSymbols'), + stubArray = require('./stubArray'); + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeGetSymbols = Object.getOwnPropertySymbols; + +/** + * Creates an array of the own and inherited enumerable symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of symbols. + */ +var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) { + var result = []; + while (object) { + arrayPush(result, getSymbols(object)); + object = getPrototype(object); + } + return result; +}; + +module.exports = getSymbolsIn; + +},{"./_arrayPush":136,"./_getPrototype":203,"./_getSymbols":205,"./stubArray":293}],207:[function(require,module,exports){ +var DataView = require('./_DataView'), + Map = require('./_Map'), + Promise = require('./_Promise'), + Set = require('./_Set'), + WeakMap = require('./_WeakMap'), + baseGetTag = require('./_baseGetTag'), + toSource = require('./_toSource'); + +/** `Object#toString` result references. */ +var mapTag = '[object Map]', + objectTag = '[object Object]', + promiseTag = '[object Promise]', + setTag = '[object Set]', + weakMapTag = '[object WeakMap]'; + +var dataViewTag = '[object DataView]'; + +/** Used to detect maps, sets, and weakmaps. */ +var dataViewCtorString = toSource(DataView), + mapCtorString = toSource(Map), + promiseCtorString = toSource(Promise), + setCtorString = toSource(Set), + weakMapCtorString = toSource(WeakMap); + +/** + * Gets the `toStringTag` of `value`. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ +var getTag = baseGetTag; + +// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6. +if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) || + (Map && getTag(new Map) != mapTag) || + (Promise && getTag(Promise.resolve()) != promiseTag) || + (Set && getTag(new Set) != setTag) || + (WeakMap && getTag(new WeakMap) != weakMapTag)) { + getTag = function(value) { + var result = baseGetTag(value), + Ctor = result == objectTag ? value.constructor : undefined, + ctorString = Ctor ? toSource(Ctor) : ''; + + if (ctorString) { + switch (ctorString) { + case dataViewCtorString: return dataViewTag; + case mapCtorString: return mapTag; + case promiseCtorString: return promiseTag; + case setCtorString: return setTag; + case weakMapCtorString: return weakMapTag; + } + } + return result; + }; +} + +module.exports = getTag; + +},{"./_DataView":119,"./_Map":122,"./_Promise":124,"./_Set":125,"./_WeakMap":130,"./_baseGetTag":151,"./_toSource":259}],208:[function(require,module,exports){ +/** + * Gets the value at `key` of `object`. + * + * @private + * @param {Object} [object] The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ +function getValue(object, key) { + return object == null ? undefined : object[key]; +} + +module.exports = getValue; + +},{}],209:[function(require,module,exports){ +var castPath = require('./_castPath'), + isArguments = require('./isArguments'), + isArray = require('./isArray'), + isIndex = require('./_isIndex'), + isLength = require('./isLength'), + toKey = require('./_toKey'); + +/** + * Checks if `path` exists on `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @param {Function} hasFunc The function to check properties. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + */ +function hasPath(object, path, hasFunc) { + path = castPath(path, object); + + var index = -1, + length = path.length, + result = false; + + while (++index < length) { + var key = toKey(path[index]); + if (!(result = object != null && hasFunc(object, key))) { + break; + } + object = object[key]; + } + if (result || ++index != length) { + return result; + } + length = object == null ? 0 : object.length; + return !!length && isLength(length) && isIndex(key, length) && + (isArray(object) || isArguments(object)); +} + +module.exports = hasPath; + +},{"./_castPath":178,"./_isIndex":218,"./_toKey":258,"./isArguments":270,"./isArray":271,"./isLength":276}],210:[function(require,module,exports){ +var nativeCreate = require('./_nativeCreate'); + +/** + * Removes all key-value entries from the hash. + * + * @private + * @name clear + * @memberOf Hash + */ +function hashClear() { + this.__data__ = nativeCreate ? nativeCreate(null) : {}; + this.size = 0; +} + +module.exports = hashClear; + +},{"./_nativeCreate":238}],211:[function(require,module,exports){ +/** + * Removes `key` and its value from the hash. + * + * @private + * @name delete + * @memberOf Hash + * @param {Object} hash The hash to modify. + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function hashDelete(key) { + var result = this.has(key) && delete this.__data__[key]; + this.size -= result ? 1 : 0; + return result; +} + +module.exports = hashDelete; + +},{}],212:[function(require,module,exports){ +var nativeCreate = require('./_nativeCreate'); + +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED = '__lodash_hash_undefined__'; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Gets the hash value for `key`. + * + * @private + * @name get + * @memberOf Hash + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function hashGet(key) { + var data = this.__data__; + if (nativeCreate) { + var result = data[key]; + return result === HASH_UNDEFINED ? undefined : result; + } + return hasOwnProperty.call(data, key) ? data[key] : undefined; +} + +module.exports = hashGet; + +},{"./_nativeCreate":238}],213:[function(require,module,exports){ +var nativeCreate = require('./_nativeCreate'); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Checks if a hash value for `key` exists. + * + * @private + * @name has + * @memberOf Hash + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function hashHas(key) { + var data = this.__data__; + return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key); +} + +module.exports = hashHas; + +},{"./_nativeCreate":238}],214:[function(require,module,exports){ +var nativeCreate = require('./_nativeCreate'); + +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED = '__lodash_hash_undefined__'; + +/** + * Sets the hash `key` to `value`. + * + * @private + * @name set + * @memberOf Hash + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the hash instance. + */ +function hashSet(key, value) { + var data = this.__data__; + this.size += this.has(key) ? 0 : 1; + data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; + return this; +} + +module.exports = hashSet; + +},{"./_nativeCreate":238}],215:[function(require,module,exports){ +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Initializes an array clone. + * + * @private + * @param {Array} array The array to clone. + * @returns {Array} Returns the initialized clone. + */ +function initCloneArray(array) { + var length = array.length, + result = new array.constructor(length); + + // Add properties assigned by `RegExp#exec`. + if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) { + result.index = array.index; + result.input = array.input; + } + return result; +} + +module.exports = initCloneArray; + +},{}],216:[function(require,module,exports){ +var cloneArrayBuffer = require('./_cloneArrayBuffer'), + cloneDataView = require('./_cloneDataView'), + cloneRegExp = require('./_cloneRegExp'), + cloneSymbol = require('./_cloneSymbol'), + cloneTypedArray = require('./_cloneTypedArray'); + +/** `Object#toString` result references. */ +var boolTag = '[object Boolean]', + dateTag = '[object Date]', + mapTag = '[object Map]', + numberTag = '[object Number]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + symbolTag = '[object Symbol]'; + +var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; + +/** + * Initializes an object clone based on its `toStringTag`. + * + * **Note:** This function only supports cloning values with tags of + * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`. + * + * @private + * @param {Object} object The object to clone. + * @param {string} tag The `toStringTag` of the object to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the initialized clone. + */ +function initCloneByTag(object, tag, isDeep) { + var Ctor = object.constructor; + switch (tag) { + case arrayBufferTag: + return cloneArrayBuffer(object); + + case boolTag: + case dateTag: + return new Ctor(+object); + + case dataViewTag: + return cloneDataView(object, isDeep); + + case float32Tag: case float64Tag: + case int8Tag: case int16Tag: case int32Tag: + case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag: + return cloneTypedArray(object, isDeep); + + case mapTag: + return new Ctor; + + case numberTag: + case stringTag: + return new Ctor(object); + + case regexpTag: + return cloneRegExp(object); + + case setTag: + return new Ctor; + + case symbolTag: + return cloneSymbol(object); + } +} + +module.exports = initCloneByTag; + +},{"./_cloneArrayBuffer":179,"./_cloneDataView":181,"./_cloneRegExp":182,"./_cloneSymbol":183,"./_cloneTypedArray":184}],217:[function(require,module,exports){ +var baseCreate = require('./_baseCreate'), + getPrototype = require('./_getPrototype'), + isPrototype = require('./_isPrototype'); + +/** + * Initializes an object clone. + * + * @private + * @param {Object} object The object to clone. + * @returns {Object} Returns the initialized clone. + */ +function initCloneObject(object) { + return (typeof object.constructor == 'function' && !isPrototype(object)) + ? baseCreate(getPrototype(object)) + : {}; +} + +module.exports = initCloneObject; + +},{"./_baseCreate":145,"./_getPrototype":203,"./_isPrototype":223}],218:[function(require,module,exports){ +/** Used as references for various `Number` constants. */ +var MAX_SAFE_INTEGER = 9007199254740991; + +/** Used to detect unsigned integer values. */ +var reIsUint = /^(?:0|[1-9]\d*)$/; + +/** + * Checks if `value` is a valid array-like index. + * + * @private + * @param {*} value The value to check. + * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. + * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. + */ +function isIndex(value, length) { + var type = typeof value; + length = length == null ? MAX_SAFE_INTEGER : length; + + return !!length && + (type == 'number' || + (type != 'symbol' && reIsUint.test(value))) && + (value > -1 && value % 1 == 0 && value < length); +} + +module.exports = isIndex; + +},{}],219:[function(require,module,exports){ +var eq = require('./eq'), + isArrayLike = require('./isArrayLike'), + isIndex = require('./_isIndex'), + isObject = require('./isObject'); + +/** + * Checks if the given arguments are from an iteratee call. + * + * @private + * @param {*} value The potential iteratee value argument. + * @param {*} index The potential iteratee index or key argument. + * @param {*} object The potential iteratee object argument. + * @returns {boolean} Returns `true` if the arguments are from an iteratee call, + * else `false`. + */ +function isIterateeCall(value, index, object) { + if (!isObject(object)) { + return false; + } + var type = typeof index; + if (type == 'number' + ? (isArrayLike(object) && isIndex(index, object.length)) + : (type == 'string' && index in object) + ) { + return eq(object[index], value); + } + return false; +} + +module.exports = isIterateeCall; + +},{"./_isIndex":218,"./eq":264,"./isArrayLike":272,"./isObject":278}],220:[function(require,module,exports){ +var isArray = require('./isArray'), + isSymbol = require('./isSymbol'); + +/** Used to match property names within property paths. */ +var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, + reIsPlainProp = /^\w*$/; + +/** + * Checks if `value` is a property name and not a property path. + * + * @private + * @param {*} value The value to check. + * @param {Object} [object] The object to query keys on. + * @returns {boolean} Returns `true` if `value` is a property name, else `false`. + */ +function isKey(value, object) { + if (isArray(value)) { + return false; + } + var type = typeof value; + if (type == 'number' || type == 'symbol' || type == 'boolean' || + value == null || isSymbol(value)) { + return true; + } + return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || + (object != null && value in Object(object)); +} + +module.exports = isKey; + +},{"./isArray":271,"./isSymbol":283}],221:[function(require,module,exports){ +/** + * Checks if `value` is suitable for use as unique object key. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is suitable, else `false`. + */ +function isKeyable(value) { + var type = typeof value; + return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') + ? (value !== '__proto__') + : (value === null); +} + +module.exports = isKeyable; + +},{}],222:[function(require,module,exports){ +var coreJsData = require('./_coreJsData'); + +/** Used to detect methods masquerading as native. */ +var maskSrcKey = (function() { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); + return uid ? ('Symbol(src)_1.' + uid) : ''; +}()); + +/** + * Checks if `func` has its source masked. + * + * @private + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` is masked, else `false`. + */ +function isMasked(func) { + return !!maskSrcKey && (maskSrcKey in func); +} + +module.exports = isMasked; + +},{"./_coreJsData":189}],223:[function(require,module,exports){ +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** + * Checks if `value` is likely a prototype object. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. + */ +function isPrototype(value) { + var Ctor = value && value.constructor, + proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; + + return value === proto; +} + +module.exports = isPrototype; + +},{}],224:[function(require,module,exports){ +var isObject = require('./isObject'); + +/** + * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` if suitable for strict + * equality comparisons, else `false`. + */ +function isStrictComparable(value) { + return value === value && !isObject(value); +} + +module.exports = isStrictComparable; + +},{"./isObject":278}],225:[function(require,module,exports){ +/** + * Removes all key-value entries from the list cache. + * + * @private + * @name clear + * @memberOf ListCache + */ +function listCacheClear() { + this.__data__ = []; + this.size = 0; +} + +module.exports = listCacheClear; + +},{}],226:[function(require,module,exports){ +var assocIndexOf = require('./_assocIndexOf'); + +/** Used for built-in method references. */ +var arrayProto = Array.prototype; + +/** Built-in value references. */ +var splice = arrayProto.splice; + +/** + * Removes `key` and its value from the list cache. + * + * @private + * @name delete + * @memberOf ListCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function listCacheDelete(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + return false; + } + var lastIndex = data.length - 1; + if (index == lastIndex) { + data.pop(); + } else { + splice.call(data, index, 1); + } + --this.size; + return true; +} + +module.exports = listCacheDelete; + +},{"./_assocIndexOf":140}],227:[function(require,module,exports){ +var assocIndexOf = require('./_assocIndexOf'); + +/** + * Gets the list cache value for `key`. + * + * @private + * @name get + * @memberOf ListCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function listCacheGet(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + return index < 0 ? undefined : data[index][1]; +} + +module.exports = listCacheGet; + +},{"./_assocIndexOf":140}],228:[function(require,module,exports){ +var assocIndexOf = require('./_assocIndexOf'); + +/** + * Checks if a list cache value for `key` exists. + * + * @private + * @name has + * @memberOf ListCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function listCacheHas(key) { + return assocIndexOf(this.__data__, key) > -1; +} + +module.exports = listCacheHas; + +},{"./_assocIndexOf":140}],229:[function(require,module,exports){ +var assocIndexOf = require('./_assocIndexOf'); + +/** + * Sets the list cache `key` to `value`. + * + * @private + * @name set + * @memberOf ListCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the list cache instance. + */ +function listCacheSet(key, value) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + ++this.size; + data.push([key, value]); + } else { + data[index][1] = value; + } + return this; +} + +module.exports = listCacheSet; + +},{"./_assocIndexOf":140}],230:[function(require,module,exports){ +var Hash = require('./_Hash'), + ListCache = require('./_ListCache'), + Map = require('./_Map'); + +/** + * Removes all key-value entries from the map. + * + * @private + * @name clear + * @memberOf MapCache + */ +function mapCacheClear() { + this.size = 0; + this.__data__ = { + 'hash': new Hash, + 'map': new (Map || ListCache), + 'string': new Hash + }; +} + +module.exports = mapCacheClear; + +},{"./_Hash":120,"./_ListCache":121,"./_Map":122}],231:[function(require,module,exports){ +var getMapData = require('./_getMapData'); + +/** + * Removes `key` and its value from the map. + * + * @private + * @name delete + * @memberOf MapCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function mapCacheDelete(key) { + var result = getMapData(this, key)['delete'](key); + this.size -= result ? 1 : 0; + return result; +} + +module.exports = mapCacheDelete; + +},{"./_getMapData":200}],232:[function(require,module,exports){ +var getMapData = require('./_getMapData'); + +/** + * Gets the map value for `key`. + * + * @private + * @name get + * @memberOf MapCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function mapCacheGet(key) { + return getMapData(this, key).get(key); +} + +module.exports = mapCacheGet; + +},{"./_getMapData":200}],233:[function(require,module,exports){ +var getMapData = require('./_getMapData'); + +/** + * Checks if a map value for `key` exists. + * + * @private + * @name has + * @memberOf MapCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function mapCacheHas(key) { + return getMapData(this, key).has(key); +} + +module.exports = mapCacheHas; + +},{"./_getMapData":200}],234:[function(require,module,exports){ +var getMapData = require('./_getMapData'); + +/** + * Sets the map `key` to `value`. + * + * @private + * @name set + * @memberOf MapCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the map cache instance. + */ +function mapCacheSet(key, value) { + var data = getMapData(this, key), + size = data.size; + + data.set(key, value); + this.size += data.size == size ? 0 : 1; + return this; +} + +module.exports = mapCacheSet; + +},{"./_getMapData":200}],235:[function(require,module,exports){ +/** + * Converts `map` to its key-value pairs. + * + * @private + * @param {Object} map The map to convert. + * @returns {Array} Returns the key-value pairs. + */ +function mapToArray(map) { + var index = -1, + result = Array(map.size); + + map.forEach(function(value, key) { + result[++index] = [key, value]; + }); + return result; +} + +module.exports = mapToArray; + +},{}],236:[function(require,module,exports){ +/** + * A specialized version of `matchesProperty` for source values suitable + * for strict equality comparisons, i.e. `===`. + * + * @private + * @param {string} key The key of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + */ +function matchesStrictComparable(key, srcValue) { + return function(object) { + if (object == null) { + return false; + } + return object[key] === srcValue && + (srcValue !== undefined || (key in Object(object))); + }; +} + +module.exports = matchesStrictComparable; + +},{}],237:[function(require,module,exports){ +var memoize = require('./memoize'); + +/** Used as the maximum memoize cache size. */ +var MAX_MEMOIZE_SIZE = 500; + +/** + * A specialized version of `_.memoize` which clears the memoized function's + * cache when it exceeds `MAX_MEMOIZE_SIZE`. + * + * @private + * @param {Function} func The function to have its output memoized. + * @returns {Function} Returns the new memoized function. + */ +function memoizeCapped(func) { + var result = memoize(func, function(key) { + if (cache.size === MAX_MEMOIZE_SIZE) { + cache.clear(); + } + return key; + }); + + var cache = result.cache; + return result; +} + +module.exports = memoizeCapped; + +},{"./memoize":289}],238:[function(require,module,exports){ +var getNative = require('./_getNative'); + +/* Built-in method references that are verified to be native. */ +var nativeCreate = getNative(Object, 'create'); + +module.exports = nativeCreate; + +},{"./_getNative":202}],239:[function(require,module,exports){ +var overArg = require('./_overArg'); + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeKeys = overArg(Object.keys, Object); + +module.exports = nativeKeys; + +},{"./_overArg":243}],240:[function(require,module,exports){ +/** + * This function is like + * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * except that it includes inherited enumerable properties. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ +function nativeKeysIn(object) { + var result = []; + if (object != null) { + for (var key in Object(object)) { + result.push(key); + } + } + return result; +} + +module.exports = nativeKeysIn; + +},{}],241:[function(require,module,exports){ +var freeGlobal = require('./_freeGlobal'); + +/** Detect free variable `exports`. */ +var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; + +/** Detect free variable `module`. */ +var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; + +/** Detect the popular CommonJS extension `module.exports`. */ +var moduleExports = freeModule && freeModule.exports === freeExports; + +/** Detect free variable `process` from Node.js. */ +var freeProcess = moduleExports && freeGlobal.process; + +/** Used to access faster Node.js helpers. */ +var nodeUtil = (function() { + try { + // Use `util.types` for Node.js 10+. + var types = freeModule && freeModule.require && freeModule.require('util').types; + + if (types) { + return types; + } + + // Legacy `process.binding('util')` for Node.js < 10. + return freeProcess && freeProcess.binding && freeProcess.binding('util'); + } catch (e) {} +}()); + +module.exports = nodeUtil; + +},{"./_freeGlobal":197}],242:[function(require,module,exports){ +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var nativeObjectToString = objectProto.toString; + +/** + * Converts `value` to a string using `Object.prototype.toString`. + * + * @private + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + */ +function objectToString(value) { + return nativeObjectToString.call(value); +} + +module.exports = objectToString; + +},{}],243:[function(require,module,exports){ +/** + * Creates a unary function that invokes `func` with its argument transformed. + * + * @private + * @param {Function} func The function to wrap. + * @param {Function} transform The argument transform. + * @returns {Function} Returns the new function. + */ +function overArg(func, transform) { + return function(arg) { + return func(transform(arg)); + }; +} + +module.exports = overArg; + +},{}],244:[function(require,module,exports){ +var apply = require('./_apply'); + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMax = Math.max; + +/** + * A specialized version of `baseRest` which transforms the rest array. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @param {Function} transform The rest array transform. + * @returns {Function} Returns the new function. + */ +function overRest(func, start, transform) { + start = nativeMax(start === undefined ? (func.length - 1) : start, 0); + return function() { + var args = arguments, + index = -1, + length = nativeMax(args.length - start, 0), + array = Array(length); + + while (++index < length) { + array[index] = args[start + index]; + } + index = -1; + var otherArgs = Array(start + 1); + while (++index < start) { + otherArgs[index] = args[index]; + } + otherArgs[start] = transform(array); + return apply(func, this, otherArgs); + }; +} + +module.exports = overRest; + +},{"./_apply":131}],245:[function(require,module,exports){ +var freeGlobal = require('./_freeGlobal'); + +/** Detect free variable `self`. */ +var freeSelf = typeof self == 'object' && self && self.Object === Object && self; + +/** Used as a reference to the global object. */ +var root = freeGlobal || freeSelf || Function('return this')(); + +module.exports = root; + +},{"./_freeGlobal":197}],246:[function(require,module,exports){ +/** + * Gets the value at `key`, unless `key` is "__proto__" or "constructor". + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ +function safeGet(object, key) { + if (key === 'constructor' && typeof object[key] === 'function') { + return; + } + + if (key == '__proto__') { + return; + } + + return object[key]; +} + +module.exports = safeGet; + +},{}],247:[function(require,module,exports){ +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED = '__lodash_hash_undefined__'; + +/** + * Adds `value` to the array cache. + * + * @private + * @name add + * @memberOf SetCache + * @alias push + * @param {*} value The value to cache. + * @returns {Object} Returns the cache instance. + */ +function setCacheAdd(value) { + this.__data__.set(value, HASH_UNDEFINED); + return this; +} + +module.exports = setCacheAdd; + +},{}],248:[function(require,module,exports){ +/** + * Checks if `value` is in the array cache. + * + * @private + * @name has + * @memberOf SetCache + * @param {*} value The value to search for. + * @returns {number} Returns `true` if `value` is found, else `false`. + */ +function setCacheHas(value) { + return this.__data__.has(value); +} + +module.exports = setCacheHas; + +},{}],249:[function(require,module,exports){ +/** + * Converts `set` to an array of its values. + * + * @private + * @param {Object} set The set to convert. + * @returns {Array} Returns the values. + */ +function setToArray(set) { + var index = -1, + result = Array(set.size); + + set.forEach(function(value) { + result[++index] = value; + }); + return result; +} + +module.exports = setToArray; + +},{}],250:[function(require,module,exports){ +var baseSetToString = require('./_baseSetToString'), + shortOut = require('./_shortOut'); + +/** + * Sets the `toString` method of `func` to return `string`. + * + * @private + * @param {Function} func The function to modify. + * @param {Function} string The `toString` result. + * @returns {Function} Returns `func`. + */ +var setToString = shortOut(baseSetToString); + +module.exports = setToString; + +},{"./_baseSetToString":172,"./_shortOut":251}],251:[function(require,module,exports){ +/** Used to detect hot functions by number of calls within a span of milliseconds. */ +var HOT_COUNT = 800, + HOT_SPAN = 16; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeNow = Date.now; + +/** + * Creates a function that'll short out and invoke `identity` instead + * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN` + * milliseconds. + * + * @private + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new shortable function. + */ +function shortOut(func) { + var count = 0, + lastCalled = 0; + + return function() { + var stamp = nativeNow(), + remaining = HOT_SPAN - (stamp - lastCalled); + + lastCalled = stamp; + if (remaining > 0) { + if (++count >= HOT_COUNT) { + return arguments[0]; + } + } else { + count = 0; + } + return func.apply(undefined, arguments); + }; +} + +module.exports = shortOut; + +},{}],252:[function(require,module,exports){ +var ListCache = require('./_ListCache'); + +/** + * Removes all key-value entries from the stack. + * + * @private + * @name clear + * @memberOf Stack + */ +function stackClear() { + this.__data__ = new ListCache; + this.size = 0; +} + +module.exports = stackClear; + +},{"./_ListCache":121}],253:[function(require,module,exports){ +/** + * Removes `key` and its value from the stack. + * + * @private + * @name delete + * @memberOf Stack + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function stackDelete(key) { + var data = this.__data__, + result = data['delete'](key); + + this.size = data.size; + return result; +} + +module.exports = stackDelete; + +},{}],254:[function(require,module,exports){ +/** + * Gets the stack value for `key`. + * + * @private + * @name get + * @memberOf Stack + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function stackGet(key) { + return this.__data__.get(key); +} + +module.exports = stackGet; + +},{}],255:[function(require,module,exports){ +/** + * Checks if a stack value for `key` exists. + * + * @private + * @name has + * @memberOf Stack + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function stackHas(key) { + return this.__data__.has(key); +} + +module.exports = stackHas; + +},{}],256:[function(require,module,exports){ +var ListCache = require('./_ListCache'), + Map = require('./_Map'), + MapCache = require('./_MapCache'); + +/** Used as the size to enable large array optimizations. */ +var LARGE_ARRAY_SIZE = 200; + +/** + * Sets the stack `key` to `value`. + * + * @private + * @name set + * @memberOf Stack + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the stack cache instance. + */ +function stackSet(key, value) { + var data = this.__data__; + if (data instanceof ListCache) { + var pairs = data.__data__; + if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) { + pairs.push([key, value]); + this.size = ++data.size; + return this; + } + data = this.__data__ = new MapCache(pairs); + } + data.set(key, value); + this.size = data.size; + return this; +} + +module.exports = stackSet; + +},{"./_ListCache":121,"./_Map":122,"./_MapCache":123}],257:[function(require,module,exports){ +var memoizeCapped = require('./_memoizeCapped'); + +/** Used to match property names within property paths. */ +var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; + +/** Used to match backslashes in property paths. */ +var reEscapeChar = /\\(\\)?/g; + +/** + * Converts `string` to a property path array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the property path array. + */ +var stringToPath = memoizeCapped(function(string) { + var result = []; + if (string.charCodeAt(0) === 46 /* . */) { + result.push(''); + } + string.replace(rePropName, function(match, number, quote, subString) { + result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match)); + }); + return result; +}); + +module.exports = stringToPath; + +},{"./_memoizeCapped":237}],258:[function(require,module,exports){ +var isSymbol = require('./isSymbol'); + +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0; + +/** + * Converts `value` to a string key if it's not a string or symbol. + * + * @private + * @param {*} value The value to inspect. + * @returns {string|symbol} Returns the key. + */ +function toKey(value) { + if (typeof value == 'string' || isSymbol(value)) { + return value; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; +} + +module.exports = toKey; + +},{"./isSymbol":283}],259:[function(require,module,exports){ +/** Used for built-in method references. */ +var funcProto = Function.prototype; + +/** Used to resolve the decompiled source of functions. */ +var funcToString = funcProto.toString; + +/** + * Converts `func` to its source code. + * + * @private + * @param {Function} func The function to convert. + * @returns {string} Returns the source code. + */ +function toSource(func) { + if (func != null) { + try { + return funcToString.call(func); + } catch (e) {} + try { + return (func + ''); + } catch (e) {} + } + return ''; +} + +module.exports = toSource; + +},{}],260:[function(require,module,exports){ +var baseClone = require('./_baseClone'); + +/** Used to compose bitmasks for cloning. */ +var CLONE_DEEP_FLAG = 1, + CLONE_SYMBOLS_FLAG = 4; + +/** + * This method is like `_.clone` except that it recursively clones `value`. + * + * @static + * @memberOf _ + * @since 1.0.0 + * @category Lang + * @param {*} value The value to recursively clone. + * @returns {*} Returns the deep cloned value. + * @see _.clone + * @example + * + * var objects = [{ 'a': 1 }, { 'b': 2 }]; + * + * var deep = _.cloneDeep(objects); + * console.log(deep[0] === objects[0]); + * // => false + */ +function cloneDeep(value) { + return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG); +} + +module.exports = cloneDeep; + +},{"./_baseClone":144}],261:[function(require,module,exports){ +/** + * Creates a function that returns `value`. + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Util + * @param {*} value The value to return from the new function. + * @returns {Function} Returns the new constant function. + * @example + * + * var objects = _.times(2, _.constant({ 'a': 1 })); + * + * console.log(objects); + * // => [{ 'a': 1 }, { 'a': 1 }] + * + * console.log(objects[0] === objects[1]); + * // => true + */ +function constant(value) { + return function() { + return value; + }; +} + +module.exports = constant; + +},{}],262:[function(require,module,exports){ +var isObject = require('./isObject'), + now = require('./now'), + toNumber = require('./toNumber'); + +/** Error message constants. */ +var FUNC_ERROR_TEXT = 'Expected a function'; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMax = Math.max, + nativeMin = Math.min; + +/** + * Creates a debounced function that delays invoking `func` until after `wait` + * milliseconds have elapsed since the last time the debounced function was + * invoked. The debounced function comes with a `cancel` method to cancel + * delayed `func` invocations and a `flush` method to immediately invoke them. + * Provide `options` to indicate whether `func` should be invoked on the + * leading and/or trailing edge of the `wait` timeout. The `func` is invoked + * with the last arguments provided to the debounced function. Subsequent + * calls to the debounced function return the result of the last `func` + * invocation. + * + * **Note:** If `leading` and `trailing` options are `true`, `func` is + * invoked on the trailing edge of the timeout only if the debounced function + * is invoked more than once during the `wait` timeout. + * + * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred + * until to the next tick, similar to `setTimeout` with a timeout of `0`. + * + * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) + * for details over the differences between `_.debounce` and `_.throttle`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to debounce. + * @param {number} [wait=0] The number of milliseconds to delay. + * @param {Object} [options={}] The options object. + * @param {boolean} [options.leading=false] + * Specify invoking on the leading edge of the timeout. + * @param {number} [options.maxWait] + * The maximum time `func` is allowed to be delayed before it's invoked. + * @param {boolean} [options.trailing=true] + * Specify invoking on the trailing edge of the timeout. + * @returns {Function} Returns the new debounced function. + * @example + * + * // Avoid costly calculations while the window size is in flux. + * jQuery(window).on('resize', _.debounce(calculateLayout, 150)); + * + * // Invoke `sendMail` when clicked, debouncing subsequent calls. + * jQuery(element).on('click', _.debounce(sendMail, 300, { + * 'leading': true, + * 'trailing': false + * })); + * + * // Ensure `batchLog` is invoked once after 1 second of debounced calls. + * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 }); + * var source = new EventSource('/stream'); + * jQuery(source).on('message', debounced); + * + * // Cancel the trailing debounced invocation. + * jQuery(window).on('popstate', debounced.cancel); + */ +function debounce(func, wait, options) { + var lastArgs, + lastThis, + maxWait, + result, + timerId, + lastCallTime, + lastInvokeTime = 0, + leading = false, + maxing = false, + trailing = true; + + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + wait = toNumber(wait) || 0; + if (isObject(options)) { + leading = !!options.leading; + maxing = 'maxWait' in options; + maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait; + trailing = 'trailing' in options ? !!options.trailing : trailing; + } + + function invokeFunc(time) { + var args = lastArgs, + thisArg = lastThis; + + lastArgs = lastThis = undefined; + lastInvokeTime = time; + result = func.apply(thisArg, args); + return result; + } + + function leadingEdge(time) { + // Reset any `maxWait` timer. + lastInvokeTime = time; + // Start the timer for the trailing edge. + timerId = setTimeout(timerExpired, wait); + // Invoke the leading edge. + return leading ? invokeFunc(time) : result; + } + + function remainingWait(time) { + var timeSinceLastCall = time - lastCallTime, + timeSinceLastInvoke = time - lastInvokeTime, + timeWaiting = wait - timeSinceLastCall; + + return maxing + ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) + : timeWaiting; + } + + function shouldInvoke(time) { + var timeSinceLastCall = time - lastCallTime, + timeSinceLastInvoke = time - lastInvokeTime; + + // Either this is the first call, activity has stopped and we're at the + // trailing edge, the system time has gone backwards and we're treating + // it as the trailing edge, or we've hit the `maxWait` limit. + return (lastCallTime === undefined || (timeSinceLastCall >= wait) || + (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait)); + } + + function timerExpired() { + var time = now(); + if (shouldInvoke(time)) { + return trailingEdge(time); + } + // Restart the timer. + timerId = setTimeout(timerExpired, remainingWait(time)); + } + + function trailingEdge(time) { + timerId = undefined; + + // Only invoke if we have `lastArgs` which means `func` has been + // debounced at least once. + if (trailing && lastArgs) { + return invokeFunc(time); + } + lastArgs = lastThis = undefined; + return result; + } + + function cancel() { + if (timerId !== undefined) { + clearTimeout(timerId); + } + lastInvokeTime = 0; + lastArgs = lastCallTime = lastThis = timerId = undefined; + } + + function flush() { + return timerId === undefined ? result : trailingEdge(now()); + } + + function debounced() { + var time = now(), + isInvoking = shouldInvoke(time); + + lastArgs = arguments; + lastThis = this; + lastCallTime = time; + + if (isInvoking) { + if (timerId === undefined) { + return leadingEdge(lastCallTime); + } + if (maxing) { + // Handle invocations in a tight loop. + clearTimeout(timerId); + timerId = setTimeout(timerExpired, wait); + return invokeFunc(lastCallTime); + } + } + if (timerId === undefined) { + timerId = setTimeout(timerExpired, wait); + } + return result; + } + debounced.cancel = cancel; + debounced.flush = flush; + return debounced; +} + +module.exports = debounce; + +},{"./isObject":278,"./now":291,"./toNumber":296}],263:[function(require,module,exports){ +module.exports = require('./forEach'); + +},{"./forEach":265}],264:[function(require,module,exports){ +/** + * Performs a + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * comparison between two values to determine if they are equivalent. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.eq(object, object); + * // => true + * + * _.eq(object, other); + * // => false + * + * _.eq('a', 'a'); + * // => true + * + * _.eq('a', Object('a')); + * // => false + * + * _.eq(NaN, NaN); + * // => true + */ +function eq(value, other) { + return value === other || (value !== value && other !== other); +} + +module.exports = eq; + +},{}],265:[function(require,module,exports){ +var arrayEach = require('./_arrayEach'), + baseEach = require('./_baseEach'), + castFunction = require('./_castFunction'), + isArray = require('./isArray'); + +/** + * Iterates over elements of `collection` and invokes `iteratee` for each element. + * The iteratee is invoked with three arguments: (value, index|key, collection). + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * **Note:** As with other "Collections" methods, objects with a "length" + * property are iterated like arrays. To avoid this behavior use `_.forIn` + * or `_.forOwn` for object iteration. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @alias each + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + * @see _.forEachRight + * @example + * + * _.forEach([1, 2], function(value) { + * console.log(value); + * }); + * // => Logs `1` then `2`. + * + * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) { + * console.log(key); + * }); + * // => Logs 'a' then 'b' (iteration order is not guaranteed). + */ +function forEach(collection, iteratee) { + var func = isArray(collection) ? arrayEach : baseEach; + return func(collection, castFunction(iteratee)); +} + +module.exports = forEach; + +},{"./_arrayEach":132,"./_baseEach":146,"./_castFunction":177,"./isArray":271}],266:[function(require,module,exports){ +var baseForOwn = require('./_baseForOwn'), + castFunction = require('./_castFunction'); + +/** + * Iterates over own enumerable string keyed properties of an object and + * invokes `iteratee` for each property. The iteratee is invoked with three + * arguments: (value, key, object). Iteratee functions may exit iteration + * early by explicitly returning `false`. + * + * @static + * @memberOf _ + * @since 0.3.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns `object`. + * @see _.forOwnRight + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forOwn(new Foo, function(value, key) { + * console.log(key); + * }); + * // => Logs 'a' then 'b' (iteration order is not guaranteed). + */ +function forOwn(object, iteratee) { + return object && baseForOwn(object, castFunction(iteratee)); +} + +module.exports = forOwn; + +},{"./_baseForOwn":148,"./_castFunction":177}],267:[function(require,module,exports){ +var baseGet = require('./_baseGet'); + +/** + * Gets the value at `path` of `object`. If the resolved value is + * `undefined`, the `defaultValue` is returned in its place. + * + * @static + * @memberOf _ + * @since 3.7.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @param {*} [defaultValue] The value returned for `undefined` resolved values. + * @returns {*} Returns the resolved value. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.get(object, 'a[0].b.c'); + * // => 3 + * + * _.get(object, ['a', '0', 'b', 'c']); + * // => 3 + * + * _.get(object, 'a.b.c', 'default'); + * // => 'default' + */ +function get(object, path, defaultValue) { + var result = object == null ? undefined : baseGet(object, path); + return result === undefined ? defaultValue : result; +} + +module.exports = get; + +},{"./_baseGet":149}],268:[function(require,module,exports){ +var baseHasIn = require('./_baseHasIn'), + hasPath = require('./_hasPath'); + +/** + * Checks if `path` is a direct or inherited property of `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + * @example + * + * var object = _.create({ 'a': _.create({ 'b': 2 }) }); + * + * _.hasIn(object, 'a'); + * // => true + * + * _.hasIn(object, 'a.b'); + * // => true + * + * _.hasIn(object, ['a', 'b']); + * // => true + * + * _.hasIn(object, 'b'); + * // => false + */ +function hasIn(object, path) { + return object != null && hasPath(object, path, baseHasIn); +} + +module.exports = hasIn; + +},{"./_baseHasIn":152,"./_hasPath":209}],269:[function(require,module,exports){ +/** + * This method returns the first argument it receives. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {*} value Any value. + * @returns {*} Returns `value`. + * @example + * + * var object = { 'a': 1 }; + * + * console.log(_.identity(object) === object); + * // => true + */ +function identity(value) { + return value; +} + +module.exports = identity; + +},{}],270:[function(require,module,exports){ +var baseIsArguments = require('./_baseIsArguments'), + isObjectLike = require('./isObjectLike'); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** Built-in value references. */ +var propertyIsEnumerable = objectProto.propertyIsEnumerable; + +/** + * Checks if `value` is likely an `arguments` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + * else `false`. + * @example + * + * _.isArguments(function() { return arguments; }()); + * // => true + * + * _.isArguments([1, 2, 3]); + * // => false + */ +var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) { + return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && + !propertyIsEnumerable.call(value, 'callee'); +}; + +module.exports = isArguments; + +},{"./_baseIsArguments":153,"./isObjectLike":279}],271:[function(require,module,exports){ +/** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array, else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(document.body.children); + * // => false + * + * _.isArray('abc'); + * // => false + * + * _.isArray(_.noop); + * // => false + */ +var isArray = Array.isArray; + +module.exports = isArray; + +},{}],272:[function(require,module,exports){ +var isFunction = require('./isFunction'), + isLength = require('./isLength'); + +/** + * Checks if `value` is array-like. A value is considered array-like if it's + * not a function and has a `value.length` that's an integer greater than or + * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is array-like, else `false`. + * @example + * + * _.isArrayLike([1, 2, 3]); + * // => true + * + * _.isArrayLike(document.body.children); + * // => true + * + * _.isArrayLike('abc'); + * // => true + * + * _.isArrayLike(_.noop); + * // => false + */ +function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); +} + +module.exports = isArrayLike; + +},{"./isFunction":275,"./isLength":276}],273:[function(require,module,exports){ +var isArrayLike = require('./isArrayLike'), + isObjectLike = require('./isObjectLike'); + +/** + * This method is like `_.isArrayLike` except that it also checks if `value` + * is an object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array-like object, + * else `false`. + * @example + * + * _.isArrayLikeObject([1, 2, 3]); + * // => true + * + * _.isArrayLikeObject(document.body.children); + * // => true + * + * _.isArrayLikeObject('abc'); + * // => false + * + * _.isArrayLikeObject(_.noop); + * // => false + */ +function isArrayLikeObject(value) { + return isObjectLike(value) && isArrayLike(value); +} + +module.exports = isArrayLikeObject; + +},{"./isArrayLike":272,"./isObjectLike":279}],274:[function(require,module,exports){ +var root = require('./_root'), + stubFalse = require('./stubFalse'); + +/** Detect free variable `exports`. */ +var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; + +/** Detect free variable `module`. */ +var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; + +/** Detect the popular CommonJS extension `module.exports`. */ +var moduleExports = freeModule && freeModule.exports === freeExports; + +/** Built-in value references. */ +var Buffer = moduleExports ? root.Buffer : undefined; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined; + +/** + * Checks if `value` is a buffer. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a buffer, else `false`. + * @example + * + * _.isBuffer(new Buffer(2)); + * // => true + * + * _.isBuffer(new Uint8Array(2)); + * // => false + */ +var isBuffer = nativeIsBuffer || stubFalse; + +module.exports = isBuffer; + +},{"./_root":245,"./stubFalse":294}],275:[function(require,module,exports){ +var baseGetTag = require('./_baseGetTag'), + isObject = require('./isObject'); + +/** `Object#toString` result references. */ +var asyncTag = '[object AsyncFunction]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + proxyTag = '[object Proxy]'; + +/** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a function, else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */ +function isFunction(value) { + if (!isObject(value)) { + return false; + } + // The use of `Object#toString` avoids issues with the `typeof` operator + // in Safari 9 which returns 'object' for typed arrays and other constructors. + var tag = baseGetTag(value); + return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; +} + +module.exports = isFunction; + +},{"./_baseGetTag":151,"./isObject":278}],276:[function(require,module,exports){ +/** Used as references for various `Number` constants. */ +var MAX_SAFE_INTEGER = 9007199254740991; + +/** + * Checks if `value` is a valid array-like length. + * + * **Note:** This method is loosely based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. + * @example + * + * _.isLength(3); + * // => true + * + * _.isLength(Number.MIN_VALUE); + * // => false + * + * _.isLength(Infinity); + * // => false + * + * _.isLength('3'); + * // => false + */ +function isLength(value) { + return typeof value == 'number' && + value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; +} + +module.exports = isLength; + +},{}],277:[function(require,module,exports){ +var baseIsMap = require('./_baseIsMap'), + baseUnary = require('./_baseUnary'), + nodeUtil = require('./_nodeUtil'); + +/* Node.js helper references. */ +var nodeIsMap = nodeUtil && nodeUtil.isMap; + +/** + * Checks if `value` is classified as a `Map` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a map, else `false`. + * @example + * + * _.isMap(new Map); + * // => true + * + * _.isMap(new WeakMap); + * // => false + */ +var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap; + +module.exports = isMap; + +},{"./_baseIsMap":156,"./_baseUnary":175,"./_nodeUtil":241}],278:[function(require,module,exports){ +/** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ +function isObject(value) { + var type = typeof value; + return value != null && (type == 'object' || type == 'function'); +} + +module.exports = isObject; + +},{}],279:[function(require,module,exports){ +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ +function isObjectLike(value) { + return value != null && typeof value == 'object'; +} + +module.exports = isObjectLike; + +},{}],280:[function(require,module,exports){ +var baseGetTag = require('./_baseGetTag'), + getPrototype = require('./_getPrototype'), + isObjectLike = require('./isObjectLike'); + +/** `Object#toString` result references. */ +var objectTag = '[object Object]'; + +/** Used for built-in method references. */ +var funcProto = Function.prototype, + objectProto = Object.prototype; + +/** Used to resolve the decompiled source of functions. */ +var funcToString = funcProto.toString; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** Used to infer the `Object` constructor. */ +var objectCtorString = funcToString.call(Object); + +/** + * Checks if `value` is a plain object, that is, an object created by the + * `Object` constructor or one with a `[[Prototype]]` of `null`. + * + * @static + * @memberOf _ + * @since 0.8.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * _.isPlainObject(new Foo); + * // => false + * + * _.isPlainObject([1, 2, 3]); + * // => false + * + * _.isPlainObject({ 'x': 0, 'y': 0 }); + * // => true + * + * _.isPlainObject(Object.create(null)); + * // => true + */ +function isPlainObject(value) { + if (!isObjectLike(value) || baseGetTag(value) != objectTag) { + return false; + } + var proto = getPrototype(value); + if (proto === null) { + return true; + } + var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor; + return typeof Ctor == 'function' && Ctor instanceof Ctor && + funcToString.call(Ctor) == objectCtorString; +} + +module.exports = isPlainObject; + +},{"./_baseGetTag":151,"./_getPrototype":203,"./isObjectLike":279}],281:[function(require,module,exports){ +var baseIsSet = require('./_baseIsSet'), + baseUnary = require('./_baseUnary'), + nodeUtil = require('./_nodeUtil'); + +/* Node.js helper references. */ +var nodeIsSet = nodeUtil && nodeUtil.isSet; + +/** + * Checks if `value` is classified as a `Set` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a set, else `false`. + * @example + * + * _.isSet(new Set); + * // => true + * + * _.isSet(new WeakSet); + * // => false + */ +var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet; + +module.exports = isSet; + +},{"./_baseIsSet":159,"./_baseUnary":175,"./_nodeUtil":241}],282:[function(require,module,exports){ +var baseGetTag = require('./_baseGetTag'), + isArray = require('./isArray'), + isObjectLike = require('./isObjectLike'); + +/** `Object#toString` result references. */ +var stringTag = '[object String]'; + +/** + * Checks if `value` is classified as a `String` primitive or object. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a string, else `false`. + * @example + * + * _.isString('abc'); + * // => true + * + * _.isString(1); + * // => false + */ +function isString(value) { + return typeof value == 'string' || + (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag); +} + +module.exports = isString; + +},{"./_baseGetTag":151,"./isArray":271,"./isObjectLike":279}],283:[function(require,module,exports){ +var baseGetTag = require('./_baseGetTag'), + isObjectLike = require('./isObjectLike'); + +/** `Object#toString` result references. */ +var symbolTag = '[object Symbol]'; + +/** + * Checks if `value` is classified as a `Symbol` primitive or object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. + * @example + * + * _.isSymbol(Symbol.iterator); + * // => true + * + * _.isSymbol('abc'); + * // => false + */ +function isSymbol(value) { + return typeof value == 'symbol' || + (isObjectLike(value) && baseGetTag(value) == symbolTag); +} + +module.exports = isSymbol; + +},{"./_baseGetTag":151,"./isObjectLike":279}],284:[function(require,module,exports){ +var baseIsTypedArray = require('./_baseIsTypedArray'), + baseUnary = require('./_baseUnary'), + nodeUtil = require('./_nodeUtil'); + +/* Node.js helper references. */ +var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; + +/** + * Checks if `value` is classified as a typed array. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + * @example + * + * _.isTypedArray(new Uint8Array); + * // => true + * + * _.isTypedArray([]); + * // => false + */ +var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; + +module.exports = isTypedArray; + +},{"./_baseIsTypedArray":160,"./_baseUnary":175,"./_nodeUtil":241}],285:[function(require,module,exports){ +/** + * Checks if `value` is `undefined`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. + * @example + * + * _.isUndefined(void 0); + * // => true + * + * _.isUndefined(null); + * // => false + */ +function isUndefined(value) { + return value === undefined; +} + +module.exports = isUndefined; + +},{}],286:[function(require,module,exports){ +var arrayLikeKeys = require('./_arrayLikeKeys'), + baseKeys = require('./_baseKeys'), + isArrayLike = require('./isArrayLike'); + +/** + * Creates an array of the own enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. See the + * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * for more details. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keys(new Foo); + * // => ['a', 'b'] (iteration order is not guaranteed) + * + * _.keys('hi'); + * // => ['0', '1'] + */ +function keys(object) { + return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); +} + +module.exports = keys; + +},{"./_arrayLikeKeys":134,"./_baseKeys":162,"./isArrayLike":272}],287:[function(require,module,exports){ +var arrayLikeKeys = require('./_arrayLikeKeys'), + baseKeysIn = require('./_baseKeysIn'), + isArrayLike = require('./isArrayLike'); + +/** + * Creates an array of the own and inherited enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keysIn(new Foo); + * // => ['a', 'b', 'c'] (iteration order is not guaranteed) + */ +function keysIn(object) { + return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); +} + +module.exports = keysIn; + +},{"./_arrayLikeKeys":134,"./_baseKeysIn":163,"./isArrayLike":272}],288:[function(require,module,exports){ +var arrayMap = require('./_arrayMap'), + baseIteratee = require('./_baseIteratee'), + baseMap = require('./_baseMap'), + isArray = require('./isArray'); + +/** + * Creates an array of values by running each element in `collection` thru + * `iteratee`. The iteratee is invoked with three arguments: + * (value, index|key, collection). + * + * Many lodash methods are guarded to work as iteratees for methods like + * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`. + * + * The guarded methods are: + * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`, + * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`, + * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`, + * `template`, `trim`, `trimEnd`, `trimStart`, and `words` + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + * @example + * + * function square(n) { + * return n * n; + * } + * + * _.map([4, 8], square); + * // => [16, 64] + * + * _.map({ 'a': 4, 'b': 8 }, square); + * // => [16, 64] (iteration order is not guaranteed) + * + * var users = [ + * { 'user': 'barney' }, + * { 'user': 'fred' } + * ]; + * + * // The `_.property` iteratee shorthand. + * _.map(users, 'user'); + * // => ['barney', 'fred'] + */ +function map(collection, iteratee) { + var func = isArray(collection) ? arrayMap : baseMap; + return func(collection, baseIteratee(iteratee, 3)); +} + +module.exports = map; + +},{"./_arrayMap":135,"./_baseIteratee":161,"./_baseMap":164,"./isArray":271}],289:[function(require,module,exports){ +var MapCache = require('./_MapCache'); + +/** Error message constants. */ +var FUNC_ERROR_TEXT = 'Expected a function'; + +/** + * Creates a function that memoizes the result of `func`. If `resolver` is + * provided, it determines the cache key for storing the result based on the + * arguments provided to the memoized function. By default, the first argument + * provided to the memoized function is used as the map cache key. The `func` + * is invoked with the `this` binding of the memoized function. + * + * **Note:** The cache is exposed as the `cache` property on the memoized + * function. Its creation may be customized by replacing the `_.memoize.Cache` + * constructor with one whose instances implement the + * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) + * method interface of `clear`, `delete`, `get`, `has`, and `set`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to have its output memoized. + * @param {Function} [resolver] The function to resolve the cache key. + * @returns {Function} Returns the new memoized function. + * @example + * + * var object = { 'a': 1, 'b': 2 }; + * var other = { 'c': 3, 'd': 4 }; + * + * var values = _.memoize(_.values); + * values(object); + * // => [1, 2] + * + * values(other); + * // => [3, 4] + * + * object.a = 2; + * values(object); + * // => [1, 2] + * + * // Modify the result cache. + * values.cache.set(object, ['a', 'b']); + * values(object); + * // => ['a', 'b'] + * + * // Replace `_.memoize.Cache`. + * _.memoize.Cache = WeakMap; + */ +function memoize(func, resolver) { + if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) { + throw new TypeError(FUNC_ERROR_TEXT); + } + var memoized = function() { + var args = arguments, + key = resolver ? resolver.apply(this, args) : args[0], + cache = memoized.cache; + + if (cache.has(key)) { + return cache.get(key); + } + var result = func.apply(this, args); + memoized.cache = cache.set(key, result) || cache; + return result; + }; + memoized.cache = new (memoize.Cache || MapCache); + return memoized; +} + +// Expose `MapCache`. +memoize.Cache = MapCache; + +module.exports = memoize; + +},{"./_MapCache":123}],290:[function(require,module,exports){ +var baseMerge = require('./_baseMerge'), + createAssigner = require('./_createAssigner'); + +/** + * This method is like `_.assign` except that it recursively merges own and + * inherited enumerable string keyed properties of source objects into the + * destination object. Source properties that resolve to `undefined` are + * skipped if a destination value exists. Array and plain object properties + * are merged recursively. Other objects and value types are overridden by + * assignment. Source objects are applied from left to right. Subsequent + * sources overwrite property assignments of previous sources. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 0.5.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @example + * + * var object = { + * 'a': [{ 'b': 2 }, { 'd': 4 }] + * }; + * + * var other = { + * 'a': [{ 'c': 3 }, { 'e': 5 }] + * }; + * + * _.merge(object, other); + * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] } + */ +var merge = createAssigner(function(object, source, srcIndex) { + baseMerge(object, source, srcIndex); +}); + +module.exports = merge; + +},{"./_baseMerge":167,"./_createAssigner":190}],291:[function(require,module,exports){ +var root = require('./_root'); + +/** + * Gets the timestamp of the number of milliseconds that have elapsed since + * the Unix epoch (1 January 1970 00:00:00 UTC). + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Date + * @returns {number} Returns the timestamp. + * @example + * + * _.defer(function(stamp) { + * console.log(_.now() - stamp); + * }, _.now()); + * // => Logs the number of milliseconds it took for the deferred invocation. + */ +var now = function() { + return root.Date.now(); +}; + +module.exports = now; + +},{"./_root":245}],292:[function(require,module,exports){ +var baseProperty = require('./_baseProperty'), + basePropertyDeep = require('./_basePropertyDeep'), + isKey = require('./_isKey'), + toKey = require('./_toKey'); + +/** + * Creates a function that returns the value at `path` of a given object. + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Util + * @param {Array|string} path The path of the property to get. + * @returns {Function} Returns the new accessor function. + * @example + * + * var objects = [ + * { 'a': { 'b': 2 } }, + * { 'a': { 'b': 1 } } + * ]; + * + * _.map(objects, _.property('a.b')); + * // => [2, 1] + * + * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b'); + * // => [1, 2] + */ +function property(path) { + return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path); +} + +module.exports = property; + +},{"./_baseProperty":169,"./_basePropertyDeep":170,"./_isKey":220,"./_toKey":258}],293:[function(require,module,exports){ +/** + * This method returns a new empty array. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {Array} Returns the new empty array. + * @example + * + * var arrays = _.times(2, _.stubArray); + * + * console.log(arrays); + * // => [[], []] + * + * console.log(arrays[0] === arrays[1]); + * // => false + */ +function stubArray() { + return []; +} + +module.exports = stubArray; + +},{}],294:[function(require,module,exports){ +/** + * This method returns `false`. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {boolean} Returns `false`. + * @example + * + * _.times(2, _.stubFalse); + * // => [false, false] + */ +function stubFalse() { + return false; +} + +module.exports = stubFalse; + +},{}],295:[function(require,module,exports){ +var debounce = require('./debounce'), + isObject = require('./isObject'); + +/** Error message constants. */ +var FUNC_ERROR_TEXT = 'Expected a function'; + +/** + * Creates a throttled function that only invokes `func` at most once per + * every `wait` milliseconds. The throttled function comes with a `cancel` + * method to cancel delayed `func` invocations and a `flush` method to + * immediately invoke them. Provide `options` to indicate whether `func` + * should be invoked on the leading and/or trailing edge of the `wait` + * timeout. The `func` is invoked with the last arguments provided to the + * throttled function. Subsequent calls to the throttled function return the + * result of the last `func` invocation. + * + * **Note:** If `leading` and `trailing` options are `true`, `func` is + * invoked on the trailing edge of the timeout only if the throttled function + * is invoked more than once during the `wait` timeout. + * + * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred + * until to the next tick, similar to `setTimeout` with a timeout of `0`. + * + * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) + * for details over the differences between `_.throttle` and `_.debounce`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to throttle. + * @param {number} [wait=0] The number of milliseconds to throttle invocations to. + * @param {Object} [options={}] The options object. + * @param {boolean} [options.leading=true] + * Specify invoking on the leading edge of the timeout. + * @param {boolean} [options.trailing=true] + * Specify invoking on the trailing edge of the timeout. + * @returns {Function} Returns the new throttled function. + * @example + * + * // Avoid excessively updating the position while scrolling. + * jQuery(window).on('scroll', _.throttle(updatePosition, 100)); + * + * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes. + * var throttled = _.throttle(renewToken, 300000, { 'trailing': false }); + * jQuery(element).on('click', throttled); + * + * // Cancel the trailing throttled invocation. + * jQuery(window).on('popstate', throttled.cancel); + */ +function throttle(func, wait, options) { + var leading = true, + trailing = true; + + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + if (isObject(options)) { + leading = 'leading' in options ? !!options.leading : leading; + trailing = 'trailing' in options ? !!options.trailing : trailing; + } + return debounce(func, wait, { + 'leading': leading, + 'maxWait': wait, + 'trailing': trailing + }); +} + +module.exports = throttle; + +},{"./debounce":262,"./isObject":278}],296:[function(require,module,exports){ +var isObject = require('./isObject'), + isSymbol = require('./isSymbol'); + +/** Used as references for various `Number` constants. */ +var NAN = 0 / 0; + +/** Used to match leading and trailing whitespace. */ +var reTrim = /^\s+|\s+$/g; + +/** Used to detect bad signed hexadecimal string values. */ +var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; + +/** Used to detect binary string values. */ +var reIsBinary = /^0b[01]+$/i; + +/** Used to detect octal string values. */ +var reIsOctal = /^0o[0-7]+$/i; + +/** Built-in method references without a dependency on `root`. */ +var freeParseInt = parseInt; + +/** + * Converts `value` to a number. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to process. + * @returns {number} Returns the number. + * @example + * + * _.toNumber(3.2); + * // => 3.2 + * + * _.toNumber(Number.MIN_VALUE); + * // => 5e-324 + * + * _.toNumber(Infinity); + * // => Infinity + * + * _.toNumber('3.2'); + * // => 3.2 + */ +function toNumber(value) { + if (typeof value == 'number') { + return value; + } + if (isSymbol(value)) { + return NAN; + } + if (isObject(value)) { + var other = typeof value.valueOf == 'function' ? value.valueOf() : value; + value = isObject(other) ? (other + '') : other; + } + if (typeof value != 'string') { + return value === 0 ? value : +value; + } + value = value.replace(reTrim, ''); + var isBinary = reIsBinary.test(value); + return (isBinary || reIsOctal.test(value)) + ? freeParseInt(value.slice(2), isBinary ? 2 : 8) + : (reIsBadHex.test(value) ? NAN : +value); +} + +module.exports = toNumber; + +},{"./isObject":278,"./isSymbol":283}],297:[function(require,module,exports){ +var copyObject = require('./_copyObject'), + keysIn = require('./keysIn'); + +/** + * Converts `value` to a plain object flattening inherited enumerable string + * keyed properties of `value` to own properties of the plain object. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {Object} Returns the converted plain object. + * @example + * + * function Foo() { + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.assign({ 'a': 1 }, new Foo); + * // => { 'a': 1, 'b': 2 } + * + * _.assign({ 'a': 1 }, _.toPlainObject(new Foo)); + * // => { 'a': 1, 'b': 2, 'c': 3 } + */ +function toPlainObject(value) { + return copyObject(value, keysIn(value)); +} + +module.exports = toPlainObject; + +},{"./_copyObject":186,"./keysIn":287}],298:[function(require,module,exports){ +var baseToString = require('./_baseToString'); + +/** + * Converts `value` to a string. An empty string is returned for `null` + * and `undefined` values. The sign of `-0` is preserved. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + * @example + * + * _.toString(null); + * // => '' + * + * _.toString(-0); + * // => '-0' + * + * _.toString([1, 2, 3]); + * // => '1,2,3' + */ +function toString(value) { + return value == null ? '' : baseToString(value); +} + +module.exports = toString; + +},{"./_baseToString":174}],299:[function(require,module,exports){ +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + define([], factory); + } else if (typeof exports === 'object') { + module.exports = factory(); + } else { + root.materialColors = factory(); + } +})(this, function() { + return {"red":{"50":"#ffebee","100":"#ffcdd2","200":"#ef9a9a","300":"#e57373","400":"#ef5350","500":"#f44336","600":"#e53935","700":"#d32f2f","800":"#c62828","900":"#b71c1c","a100":"#ff8a80","a200":"#ff5252","a400":"#ff1744","a700":"#d50000"},"pink":{"50":"#fce4ec","100":"#f8bbd0","200":"#f48fb1","300":"#f06292","400":"#ec407a","500":"#e91e63","600":"#d81b60","700":"#c2185b","800":"#ad1457","900":"#880e4f","a100":"#ff80ab","a200":"#ff4081","a400":"#f50057","a700":"#c51162"},"purple":{"50":"#f3e5f5","100":"#e1bee7","200":"#ce93d8","300":"#ba68c8","400":"#ab47bc","500":"#9c27b0","600":"#8e24aa","700":"#7b1fa2","800":"#6a1b9a","900":"#4a148c","a100":"#ea80fc","a200":"#e040fb","a400":"#d500f9","a700":"#aa00ff"},"deepPurple":{"50":"#ede7f6","100":"#d1c4e9","200":"#b39ddb","300":"#9575cd","400":"#7e57c2","500":"#673ab7","600":"#5e35b1","700":"#512da8","800":"#4527a0","900":"#311b92","a100":"#b388ff","a200":"#7c4dff","a400":"#651fff","a700":"#6200ea"},"indigo":{"50":"#e8eaf6","100":"#c5cae9","200":"#9fa8da","300":"#7986cb","400":"#5c6bc0","500":"#3f51b5","600":"#3949ab","700":"#303f9f","800":"#283593","900":"#1a237e","a100":"#8c9eff","a200":"#536dfe","a400":"#3d5afe","a700":"#304ffe"},"blue":{"50":"#e3f2fd","100":"#bbdefb","200":"#90caf9","300":"#64b5f6","400":"#42a5f5","500":"#2196f3","600":"#1e88e5","700":"#1976d2","800":"#1565c0","900":"#0d47a1","a100":"#82b1ff","a200":"#448aff","a400":"#2979ff","a700":"#2962ff"},"lightBlue":{"50":"#e1f5fe","100":"#b3e5fc","200":"#81d4fa","300":"#4fc3f7","400":"#29b6f6","500":"#03a9f4","600":"#039be5","700":"#0288d1","800":"#0277bd","900":"#01579b","a100":"#80d8ff","a200":"#40c4ff","a400":"#00b0ff","a700":"#0091ea"},"cyan":{"50":"#e0f7fa","100":"#b2ebf2","200":"#80deea","300":"#4dd0e1","400":"#26c6da","500":"#00bcd4","600":"#00acc1","700":"#0097a7","800":"#00838f","900":"#006064","a100":"#84ffff","a200":"#18ffff","a400":"#00e5ff","a700":"#00b8d4"},"teal":{"50":"#e0f2f1","100":"#b2dfdb","200":"#80cbc4","300":"#4db6ac","400":"#26a69a","500":"#009688","600":"#00897b","700":"#00796b","800":"#00695c","900":"#004d40","a100":"#a7ffeb","a200":"#64ffda","a400":"#1de9b6","a700":"#00bfa5"},"green":{"50":"#e8f5e9","100":"#c8e6c9","200":"#a5d6a7","300":"#81c784","400":"#66bb6a","500":"#4caf50","600":"#43a047","700":"#388e3c","800":"#2e7d32","900":"#1b5e20","a100":"#b9f6ca","a200":"#69f0ae","a400":"#00e676","a700":"#00c853"},"lightGreen":{"50":"#f1f8e9","100":"#dcedc8","200":"#c5e1a5","300":"#aed581","400":"#9ccc65","500":"#8bc34a","600":"#7cb342","700":"#689f38","800":"#558b2f","900":"#33691e","a100":"#ccff90","a200":"#b2ff59","a400":"#76ff03","a700":"#64dd17"},"lime":{"50":"#f9fbe7","100":"#f0f4c3","200":"#e6ee9c","300":"#dce775","400":"#d4e157","500":"#cddc39","600":"#c0ca33","700":"#afb42b","800":"#9e9d24","900":"#827717","a100":"#f4ff81","a200":"#eeff41","a400":"#c6ff00","a700":"#aeea00"},"yellow":{"50":"#fffde7","100":"#fff9c4","200":"#fff59d","300":"#fff176","400":"#ffee58","500":"#ffeb3b","600":"#fdd835","700":"#fbc02d","800":"#f9a825","900":"#f57f17","a100":"#ffff8d","a200":"#ffff00","a400":"#ffea00","a700":"#ffd600"},"amber":{"50":"#fff8e1","100":"#ffecb3","200":"#ffe082","300":"#ffd54f","400":"#ffca28","500":"#ffc107","600":"#ffb300","700":"#ffa000","800":"#ff8f00","900":"#ff6f00","a100":"#ffe57f","a200":"#ffd740","a400":"#ffc400","a700":"#ffab00"},"orange":{"50":"#fff3e0","100":"#ffe0b2","200":"#ffcc80","300":"#ffb74d","400":"#ffa726","500":"#ff9800","600":"#fb8c00","700":"#f57c00","800":"#ef6c00","900":"#e65100","a100":"#ffd180","a200":"#ffab40","a400":"#ff9100","a700":"#ff6d00"},"deepOrange":{"50":"#fbe9e7","100":"#ffccbc","200":"#ffab91","300":"#ff8a65","400":"#ff7043","500":"#ff5722","600":"#f4511e","700":"#e64a19","800":"#d84315","900":"#bf360c","a100":"#ff9e80","a200":"#ff6e40","a400":"#ff3d00","a700":"#dd2c00"},"brown":{"50":"#efebe9","100":"#d7ccc8","200":"#bcaaa4","300":"#a1887f","400":"#8d6e63","500":"#795548","600":"#6d4c41","700":"#5d4037","800":"#4e342e","900":"#3e2723"},"grey":{"50":"#fafafa","100":"#f5f5f5","200":"#eeeeee","300":"#e0e0e0","400":"#bdbdbd","500":"#9e9e9e","600":"#757575","700":"#616161","800":"#424242","900":"#212121"},"blueGrey":{"50":"#eceff1","100":"#cfd8dc","200":"#b0bec5","300":"#90a4ae","400":"#78909c","500":"#607d8b","600":"#546e7a","700":"#455a64","800":"#37474f","900":"#263238"},"darkText":{"primary":"rgba(0, 0, 0, 0.87)","secondary":"rgba(0, 0, 0, 0.54)","disabled":"rgba(0, 0, 0, 0.38)","dividers":"rgba(0, 0, 0, 0.12)"},"lightText":{"primary":"rgba(255, 255, 255, 1)","secondary":"rgba(255, 255, 255, 0.7)","disabled":"rgba(255, 255, 255, 0.5)","dividers":"rgba(255, 255, 255, 0.12)"},"darkIcons":{"active":"rgba(0, 0, 0, 0.54)","inactive":"rgba(0, 0, 0, 0.38)"},"lightIcons":{"active":"rgba(255, 255, 255, 1)","inactive":"rgba(255, 255, 255, 0.5)"},"white":"#ffffff","black":"#000000"}; +}); + +},{}],300:[function(require,module,exports){ +/* object-assign (c) Sindre Sorhus @license MIT */ -'use strict';var _0x20c845=Object[_0x42dcc2('0xc6d')],_0x5c51a4=Object[_0x42dcc2('0x98c')]['hasOwnProperty'],_0x3c69cf=Object[_0x42dcc2('0x98c')]['propertyIsEnumerable'];function _0x2555c0(_0x55fedd){var _0x310326=_0x42dcc2;if(null==_0x55fedd)throw new TypeError(_0x310326('0xfb8'));return Object(_0x55fedd);}_0x563184[_0x42dcc2('0xddc')]=function(){var _0x45219a=_0x42dcc2;try{if(!Object['assign'])return!0x1;var _0x3cb431=new String(_0x45219a('0xd'));if(_0x3cb431[0x5]='de','5'===Object[_0x45219a('0x990')](_0x3cb431)[0x0])return!0x1;for(var _0x2ebdae={},_0x1537d3=0x0;_0x1537d3<0xa;_0x1537d3++)_0x2ebdae['_'+String[_0x45219a('0x251')](_0x1537d3)]=_0x1537d3;if(_0x45219a('0x1102')!==Object[_0x45219a('0x990')](_0x2ebdae)[_0x45219a('0xd49')](function(_0x2ebaec){return _0x2ebdae[_0x2ebaec];})['join'](''))return!0x1;var _0x3613bb={};return _0x45219a('0xc44')[_0x45219a('0x541')]('')[_0x45219a('0xa9e')](function(_0x48db4b){_0x3613bb[_0x48db4b]=_0x48db4b;}),_0x45219a('0xc44')===Object[_0x45219a('0x7ce')](Object['assign']({},_0x3613bb))[_0x45219a('0x582')]('');}catch(_0x3e6acc){return!0x1;}}()?Object['assign']:function(_0x41876c,_0x1d9264){var _0x30b72b=_0x42dcc2;for(var _0x48d91e,_0x1a88bb,_0x1b34e1=_0x2555c0(_0x41876c),_0x281c3a=0x1;_0x281c3a>';return _0x50b8fe['constructor'][_0x94b4ed('0x263')];}(_0x5d444f[_0xc314dc])+_0x54c1df('0xef9')+_0x9e59e0+_0x54c1df('0x33d')+_0x1ba5e2+'`.');}return null;});},'node':_0x7741d7(function(_0x195b2e,_0xb7fb9b,_0x3536fe,_0x22d9b9,_0x457fde){var _0x2f3473=_0x4307ab;return _0x141cd1(_0x195b2e[_0xb7fb9b])?null:new _0x43e2fc(_0x2f3473('0x11c0')+_0x22d9b9+'\x20`'+_0x457fde+_0x2f3473('0xef9')+_0x3536fe+_0x2f3473('0x2e4'));}),'objectOf':function(_0x46dc09){return _0x7741d7(function(_0x41b6ec,_0x430f06,_0x39e3d6,_0x396e22,_0x3dc05a){var _0x136a66=_0x3ab6;if('function'!=typeof _0x46dc09)return new _0x43e2fc(_0x136a66('0xbb4')+_0x3dc05a+_0x136a66('0x308')+_0x39e3d6+'`\x20has\x20invalid\x20PropType\x20notation\x20inside\x20objectOf.');var _0x1cbbd3=_0x41b6ec[_0x430f06],_0x588825=_0x43ba3e(_0x1cbbd3);if(_0x136a66('0x21e')!==_0x588825)return new _0x43e2fc(_0x136a66('0x11c0')+_0x396e22+'\x20`'+_0x3dc05a+_0x136a66('0xadf')+_0x588825+_0x136a66('0xef9')+_0x39e3d6+_0x136a66('0x1ba'));for(var _0x24ec6e in _0x1cbbd3)if(_0x323a6c(_0x1cbbd3,_0x24ec6e)){var _0x50ee71=_0x46dc09(_0x1cbbd3,_0x24ec6e,_0x39e3d6,_0x396e22,_0x3dc05a+'.'+_0x24ec6e,_0x5163e0);if(_0x50ee71 instanceof Error)return _0x50ee71;}return null;});},'oneOf':function(_0x370be6){var _0x329e3d=_0x4307ab;if(!Array[_0x329e3d('0x6f6')](_0x370be6))return _0x5503dc;function _0xe93940(_0x43cb6d,_0x1fdbab,_0x1bdbd9,_0x3d7661,_0x13bb72){var _0x24ec6d=_0x329e3d;for(var _0x8eeb4f=_0x43cb6d[_0x1fdbab],_0x16a14e=0x0;_0x16a14e<_0x370be6[_0x24ec6d('0x525')];_0x16a14e++)if(_0x144ff1(_0x8eeb4f,_0x370be6[_0x16a14e]))return null;var _0x88175d=JSON[_0x24ec6d('0x591')](_0x370be6,function(_0x34583d,_0x280dde){var _0x5688d9=_0x24ec6d;return _0x5688d9('0x245')===_0x2216c2(_0x280dde)?String(_0x280dde):_0x280dde;});return new _0x43e2fc(_0x24ec6d('0x11c0')+_0x3d7661+'\x20`'+_0x13bb72+_0x24ec6d('0xdef')+String(_0x8eeb4f)+'`\x20supplied\x20to\x20`'+_0x1bdbd9+_0x24ec6d('0xb85')+_0x88175d+'.');}return _0x7741d7(_0xe93940);},'oneOfType':function(_0x598317){var _0x4737a1=_0x4307ab;if(!Array[_0x4737a1('0x6f6')](_0x598317))return _0x5503dc;for(var _0x20e337=0x0;_0x20e337<_0x598317[_0x4737a1('0x525')];_0x20e337++){var _0x22c9c1=_0x598317[_0x20e337];if(_0x4737a1('0xae9')!=typeof _0x22c9c1)return _0x272024('Invalid\x20argument\x20supplied\x20to\x20oneOfType.\x20Expected\x20an\x20array\x20of\x20check\x20functions,\x20but\x20received\x20'+_0x337a31(_0x22c9c1)+_0x4737a1('0x680')+_0x20e337+'.'),_0x5503dc;}return _0x7741d7(function(_0x20d452,_0x5f4a49,_0x55b8e0,_0x5eb3a7,_0x1b7819){var _0x57dfb3=_0x4737a1;for(var _0x137a51=0x0;_0x137a51<_0x598317[_0x57dfb3('0x525')];_0x137a51++){if(null==(0x0,_0x598317[_0x137a51])(_0x20d452,_0x5f4a49,_0x55b8e0,_0x5eb3a7,_0x1b7819,_0x5163e0))return null;}return new _0x43e2fc('Invalid\x20'+_0x5eb3a7+'\x20`'+_0x1b7819+_0x57dfb3('0xef9')+_0x55b8e0+'`.');});},'shape':function(_0x4a409c){return _0x7741d7(function(_0x228074,_0xe54777,_0x5f3421,_0x84fdda,_0x3ff5c9){var _0x2e04cf=_0x3ab6,_0xd6badb=_0x228074[_0xe54777],_0x2f0446=_0x43ba3e(_0xd6badb);if(_0x2e04cf('0x21e')!==_0x2f0446)return new _0x43e2fc('Invalid\x20'+_0x84fdda+'\x20`'+_0x3ff5c9+'`\x20of\x20type\x20`'+_0x2f0446+_0x2e04cf('0xef9')+_0x5f3421+'`,\x20expected\x20`object`.');for(var _0x41e632 in _0x4a409c){var _0x3dd784=_0x4a409c[_0x41e632];if(_0x3dd784){var _0x3d38c7=_0x3dd784(_0xd6badb,_0x41e632,_0x5f3421,_0x84fdda,_0x3ff5c9+'.'+_0x41e632,_0x5163e0);if(_0x3d38c7)return _0x3d38c7;}}return null;});},'exact':function(_0x24fddb){return _0x7741d7(function(_0x591589,_0x1f77fa,_0x4b0c2a,_0x50e65c,_0x112ac3){var _0xddfebd=_0x3ab6,_0x18cacd=_0x591589[_0x1f77fa],_0x5694de=_0x43ba3e(_0x18cacd);if('object'!==_0x5694de)return new _0x43e2fc(_0xddfebd('0x11c0')+_0x50e65c+'\x20`'+_0x112ac3+_0xddfebd('0xadf')+_0x5694de+_0xddfebd('0xef9')+_0x4b0c2a+'`,\x20expected\x20`object`.');var _0x22847b=_0x5b4cd4({},_0x591589[_0x1f77fa],_0x24fddb);for(var _0x531eed in _0x22847b){var _0x46f878=_0x24fddb[_0x531eed];if(!_0x46f878)return new _0x43e2fc(_0xddfebd('0x11c0')+_0x50e65c+'\x20`'+_0x112ac3+'`\x20key\x20`'+_0x531eed+'`\x20supplied\x20to\x20`'+_0x4b0c2a+_0xddfebd('0x718')+JSON[_0xddfebd('0x591')](_0x591589[_0x1f77fa],null,'\x20\x20')+_0xddfebd('0x2d1')+JSON[_0xddfebd('0x591')](Object[_0xddfebd('0x7ce')](_0x24fddb),null,'\x20\x20'));var _0x9d78a8=_0x46f878(_0x18cacd,_0x531eed,_0x4b0c2a,_0x50e65c,_0x112ac3+'.'+_0x531eed,_0x5163e0);if(_0x9d78a8)return _0x9d78a8;}return null;});}};function _0x144ff1(_0x1e65bb,_0x58fd5b){return _0x1e65bb===_0x58fd5b?0x0!==_0x1e65bb||0x1/_0x1e65bb==0x1/_0x58fd5b:_0x1e65bb!=_0x1e65bb&&_0x58fd5b!=_0x58fd5b;}function _0x43e2fc(_0xd108b6){var _0x4cfc65=_0x4307ab;this['message']=_0xd108b6,this[_0x4cfc65('0x1d9')]='';}function _0x7741d7(_0x1bc05a){var _0x3a0de8=_0x4307ab;function _0x447fbf(_0x5a8c46,_0x18dd16,_0x46dff6,_0x326b12,_0x30baff,_0x40743e,_0xaf9851){var _0x2e81b2=_0x3ab6;if((_0x326b12=_0x326b12||_0x2e81b2('0x10c'),_0x40743e=_0x40743e||_0x46dff6,_0xaf9851!==_0x5163e0)&&_0x273b67){var _0x114747=new Error(_0x2e81b2('0xd81'));throw _0x114747[_0x2e81b2('0x263')]=_0x2e81b2('0xff9'),_0x114747;}return null==_0x18dd16[_0x46dff6]?_0x5a8c46?null===_0x18dd16[_0x46dff6]?new _0x43e2fc(_0x2e81b2('0x47a')+_0x30baff+'\x20`'+_0x40743e+_0x2e81b2('0xb2c')+_0x326b12+_0x2e81b2('0x779')):new _0x43e2fc(_0x2e81b2('0x47a')+_0x30baff+'\x20`'+_0x40743e+_0x2e81b2('0xb2c')+_0x326b12+_0x2e81b2('0x64c')):null:_0x1bc05a(_0x18dd16,_0x46dff6,_0x326b12,_0x30baff,_0x40743e);}var _0x1c2391=_0x447fbf[_0x3a0de8('0x11e5')](null,!0x1);return _0x1c2391[_0x3a0de8('0x69b')]=_0x447fbf[_0x3a0de8('0x11e5')](null,!0x0),_0x1c2391;}function _0x35ab32(_0x314383){return _0x7741d7(function(_0xc50029,_0x53a59c,_0x2ee37f,_0x17e585,_0x33c233,_0x4c395e){var _0x3703b3=_0x3ab6,_0x286573=_0xc50029[_0x53a59c];return _0x43ba3e(_0x286573)!==_0x314383?new _0x43e2fc(_0x3703b3('0x11c0')+_0x17e585+'\x20`'+_0x33c233+_0x3703b3('0xadf')+_0x2216c2(_0x286573)+'`\x20supplied\x20to\x20`'+_0x2ee37f+'`,\x20expected\x20`'+_0x314383+'`.'):null;});}function _0x141cd1(_0x50758c){var _0x774f88=_0x4307ab;switch(typeof _0x50758c){case _0x774f88('0xd95'):case'string':case _0x774f88('0x56'):return!0x0;case _0x774f88('0x3e'):return!_0x50758c;case _0x774f88('0x21e'):if(Array[_0x774f88('0x6f6')](_0x50758c))return _0x50758c[_0x774f88('0x1de')](_0x141cd1);if(null===_0x50758c||_0x177a53(_0x50758c))return!0x0;var _0x4b5893=function(_0x356d1a){var _0x41d297=_0x774f88,_0x20ff37=_0x356d1a&&(_0x59312a&&_0x356d1a[_0x59312a]||_0x356d1a[_0x41d297('0x101f')]);if(_0x41d297('0xae9')==typeof _0x20ff37)return _0x20ff37;}(_0x50758c);if(!_0x4b5893)return!0x1;var _0x591dd4,_0x1d6905=_0x4b5893[_0x774f88('0x4b0')](_0x50758c);if(_0x4b5893!==_0x50758c[_0x774f88('0xfa0')])for(;!(_0x591dd4=_0x1d6905[_0x774f88('0x4d7')]())[_0x774f88('0x10cf')];)if(!_0x141cd1(_0x591dd4[_0x774f88('0x832')]))return!0x1;else for(;!(_0x591dd4=_0x1d6905[_0x774f88('0x4d7')]())[_0x774f88('0x10cf')];){var _0x30dcd7=_0x591dd4['value'];if(_0x30dcd7&&!_0x141cd1(_0x30dcd7[0x1]))return!0x1;}return!0x0;default:return!0x1;}}function _0x43ba3e(_0x164e75){var _0x5646c8=_0x4307ab,_0x5b6b94=typeof _0x164e75;return Array[_0x5646c8('0x6f6')](_0x164e75)?_0x5646c8('0x1bb'):_0x164e75 instanceof RegExp?_0x5646c8('0x21e'):function(_0x2e06b5,_0x1b8e1c){var _0x141315=_0x5646c8;return'symbol'===_0x2e06b5||!!_0x1b8e1c&&(_0x141315('0x17')===_0x1b8e1c[_0x141315('0xd10')]||_0x141315('0xae9')==typeof Symbol&&_0x1b8e1c instanceof Symbol);}(_0x5b6b94,_0x164e75)?_0x5646c8('0x245'):_0x5b6b94;}function _0x2216c2(_0x25956e){var _0x4e0b1a=_0x4307ab;if(null==_0x25956e)return''+_0x25956e;var _0x267530=_0x43ba3e(_0x25956e);if('object'===_0x267530){if(_0x25956e instanceof Date)return _0x4e0b1a('0x65d');if(_0x25956e instanceof RegExp)return _0x4e0b1a('0xb24');}return _0x267530;}function _0x337a31(_0x27130d){var _0x38d469=_0x4307ab,_0x515d9e=_0x2216c2(_0x27130d);switch(_0x515d9e){case _0x38d469('0x1bb'):case _0x38d469('0x21e'):return _0x38d469('0xe8d')+_0x515d9e;case'boolean':case _0x38d469('0x65d'):case _0x38d469('0xb24'):return'a\x20'+_0x515d9e;default:return _0x515d9e;}}return _0x43e2fc[_0x4307ab('0x98c')]=Error['prototype'],_0x15e5eb[_0x4307ab('0xc6c')]=_0x568833,_0x15e5eb[_0x4307ab('0x8e9')]=_0x568833['resetWarningCache'],_0x15e5eb[_0x4307ab('0x79e')]=_0x15e5eb,_0x15e5eb;};},{'./checkPropTypes':0x12d,'./lib/ReactPropTypesSecret':0x131,'object-assign':0x12c,'react-is':0x16b}],0x130:[function(_0x482244,_0x4ac6cf,_0x2a76dd){var _0x14f2be=_0x404097;_0x4ac6cf['exports']=_0x482244(_0x14f2be('0x1013'))();},{'./factoryWithThrowingShims':0x12e,'./factoryWithTypeCheckers':0x12f,'react-is':0x16b}],0x131:[function(_0x109799,_0xba849d,_0x299e0c){var _0x366c63=_0x404097;'use strict';_0xba849d['exports']=_0x366c63('0x586');},{}],0x132:[function(_0x2692b4,_0xd889b1,_0x54afae){var _0x1c6c4e=_0x404097;'use strict';Object[_0x1c6c4e('0xa95')](_0x54afae,_0x1c6c4e('0x114c'),{'value':!0x0}),_0x54afae[_0x1c6c4e('0xb23')]=void 0x0;var _0x4e9e8e=Object[_0x1c6c4e('0xc7d')]||function(_0x3aa304){var _0x18a6fc=_0x1c6c4e;for(var _0x10b3bf=0x1;_0x10b3bf0x1&&(_0x4cbcd0['a']=0x1),_0x313627[_0x53a325('0x6e0')][_0x53a325('0xe90')]({'h':_0x313627[_0x53a325('0x6e0')][_0x53a325('0x41d')]['h'],'s':_0x313627[_0x53a325('0x6e0')][_0x53a325('0x41d')]['s'],'l':_0x313627[_0x53a325('0x6e0')][_0x53a325('0x41d')]['l'],'a':Math[_0x53a325('0xbbc')](0x64*_0x4cbcd0['a'])/0x64,'source':_0x53a325('0x467')},_0x2ac48a)):(_0x4cbcd0['h']||_0x4cbcd0['s']||_0x4cbcd0['l'])&&(_0x53a325('0x7c7')==typeof _0x4cbcd0['s']&&_0x4cbcd0['s'][_0x53a325('0x8cd')]('%')&&(_0x4cbcd0['s']=_0x4cbcd0['s'][_0x53a325('0x166')]('%','')),'string'==typeof _0x4cbcd0['l']&&_0x4cbcd0['l']['includes']('%')&&(_0x4cbcd0['l']=_0x4cbcd0['l'][_0x53a325('0x166')]('%','')),0x1==_0x4cbcd0['s']?_0x4cbcd0['s']=0.01:0x1==_0x4cbcd0['l']&&(_0x4cbcd0['l']=0.01),_0x313627[_0x53a325('0x6e0')][_0x53a325('0xe90')]({'h':_0x4cbcd0['h']||_0x313627[_0x53a325('0x6e0')][_0x53a325('0x41d')]['h'],'s':Number((0x0,_0x488142[_0x53a325('0x544')])(_0x4cbcd0['s'])?_0x313627[_0x53a325('0x6e0')][_0x53a325('0x41d')]['s']:_0x4cbcd0['s']),'l':Number((0x0,_0x488142[_0x53a325('0x544')])(_0x4cbcd0['l'])?_0x313627[_0x53a325('0x6e0')]['hsl']['l']:_0x4cbcd0['l']),'source':_0x53a325('0x41d')},_0x2ac48a));},_0x313627['showHighlight']=function(_0x8200c9){var _0x1bf123=_0x4ae410;_0x8200c9['currentTarget']['style']['background']=_0x1bf123('0xfcf');},_0x313627[_0x4ae410('0x3e4')]=function(_0x1b357c){var _0x2dd1ba=_0x4ae410;_0x1b357c[_0x2dd1ba('0x3af')][_0x2dd1ba('0x1cd')][_0x2dd1ba('0x9d9')]=_0x2dd1ba('0xdf6');},0x1!==_0x43deba[_0x4ae410('0x41d')]['a']&&_0x4ae410('0xf2b')===_0x43deba[_0x4ae410('0x1132')]?_0x313627['state']={'view':_0x4ae410('0x467')}:_0x313627['state']={'view':_0x43deba[_0x4ae410('0x1132')]},_0x313627;}return function(_0x27cdc4,_0x1b1069){var _0x3f8756=_0x3ab6;if(_0x3f8756('0xae9')!=typeof _0x1b1069&&null!==_0x1b1069)throw new TypeError(_0x3f8756('0x30f')+typeof _0x1b1069);_0x27cdc4['prototype']=Object['create'](_0x1b1069&&_0x1b1069[_0x3f8756('0x98c')],{'constructor':{'value':_0x27cdc4,'enumerable':!0x1,'writable':!0x0,'configurable':!0x0}}),_0x1b1069&&(Object[_0x3f8756('0x6c2')]?Object[_0x3f8756('0x6c2')](_0x27cdc4,_0x1b1069):_0x27cdc4[_0x3f8756('0x11e6')]=_0x1b1069);}(_0x362b03,_0x3b6ed1),_0x500b5e(_0x362b03,[{'key':'render','value':function(){var _0x52470c=_0x3ab6,_0xbfb5a0=this,_0x1b3e29=(0x0,_0x33dc18[_0x52470c('0x544')])({'default':{'wrap':{'paddingTop':_0x52470c('0x5e5'),'display':_0x52470c('0xfe1')},'fields':{'flex':'1','display':'flex','marginLeft':_0x52470c('0x845')},'field':{'paddingLeft':'6px','width':'100%'},'alpha':{'paddingLeft':_0x52470c('0x453'),'width':_0x52470c('0xeef')},'toggle':{'width':'32px','textAlign':_0x52470c('0x732'),'position':'relative'},'icon':{'marginRight':_0x52470c('0x3f6'),'marginTop':_0x52470c('0xa5a'),'cursor':_0x52470c('0x184'),'position':'relative'},'iconHighlight':{'position':'absolute','width':_0x52470c('0x101b'),'height':_0x52470c('0x7c3'),'background':_0x52470c('0xfcf'),'borderRadius':_0x52470c('0xd1d'),'top':_0x52470c('0x795'),'left':_0x52470c('0xa5a'),'display':_0x52470c('0x1c1')},'input':{'fontSize':_0x52470c('0xd61'),'color':'#333','width':_0x52470c('0xeef'),'borderRadius':_0x52470c('0x7cb'),'border':_0x52470c('0x1c1'),'boxShadow':_0x52470c('0x11cb'),'height':_0x52470c('0x56c'),'textAlign':_0x52470c('0x1ed')},'label':{'textTransform':_0x52470c('0x876'),'fontSize':_0x52470c('0xd61'),'lineHeight':_0x52470c('0xd61'),'color':_0x52470c('0x30c'),'textAlign':_0x52470c('0x1ed'),'display':_0x52470c('0xa52'),'marginTop':_0x52470c('0xa5a')},'svg':{'fill':'#333','width':_0x52470c('0x101b'),'height':_0x52470c('0x101b'),'border':_0x52470c('0x68e'),'borderRadius':'5px'}},'disableAlpha':{'alpha':{'display':_0x52470c('0x1c1')}}},this['props'],this[_0x52470c('0xfff')]),_0x363c1a=void 0x0;return'hex'===this[_0x52470c('0xfff')][_0x52470c('0x1132')]?_0x363c1a=_0xdcbd47[_0x52470c('0x544')][_0x52470c('0xd0f')](_0x52470c('0x7fc'),{'style':_0x1b3e29[_0x52470c('0x3e8')],'className':_0x52470c('0x7df')},_0xdcbd47[_0x52470c('0x544')][_0x52470c('0xd0f')](_0x52470c('0x7fc'),{'style':_0x1b3e29[_0x52470c('0x48f')]},_0xdcbd47[_0x52470c('0x544')][_0x52470c('0xd0f')](_0x370be2[_0x52470c('0xaf5')],{'style':{'input':_0x1b3e29[_0x52470c('0x20c')],'label':_0x1b3e29[_0x52470c('0xf90')]},'label':_0x52470c('0xf2b'),'value':this['props'][_0x52470c('0xf2b')],'onChange':this[_0x52470c('0xf89')]}))):_0x52470c('0x467')===this[_0x52470c('0xfff')]['view']?_0x363c1a=_0xdcbd47[_0x52470c('0x544')]['createElement'](_0x52470c('0x7fc'),{'style':_0x1b3e29[_0x52470c('0x3e8')],'className':_0x52470c('0x7df')},_0xdcbd47[_0x52470c('0x544')][_0x52470c('0xd0f')](_0x52470c('0x7fc'),{'style':_0x1b3e29[_0x52470c('0x48f')]},_0xdcbd47[_0x52470c('0x544')][_0x52470c('0xd0f')](_0x370be2[_0x52470c('0xaf5')],{'style':{'input':_0x1b3e29[_0x52470c('0x20c')],'label':_0x1b3e29[_0x52470c('0xf90')]},'label':'r','value':this[_0x52470c('0x6e0')]['rgb']['r'],'onChange':this[_0x52470c('0xf89')]})),_0xdcbd47[_0x52470c('0x544')][_0x52470c('0xd0f')](_0x52470c('0x7fc'),{'style':_0x1b3e29[_0x52470c('0x48f')]},_0xdcbd47['default']['createElement'](_0x370be2[_0x52470c('0xaf5')],{'style':{'input':_0x1b3e29[_0x52470c('0x20c')],'label':_0x1b3e29['label']},'label':'g','value':this[_0x52470c('0x6e0')]['rgb']['g'],'onChange':this[_0x52470c('0xf89')]})),_0xdcbd47[_0x52470c('0x544')][_0x52470c('0xd0f')]('div',{'style':_0x1b3e29[_0x52470c('0x48f')]},_0xdcbd47[_0x52470c('0x544')][_0x52470c('0xd0f')](_0x370be2[_0x52470c('0xaf5')],{'style':{'input':_0x1b3e29[_0x52470c('0x20c')],'label':_0x1b3e29[_0x52470c('0xf90')]},'label':'b','value':this[_0x52470c('0x6e0')][_0x52470c('0x467')]['b'],'onChange':this[_0x52470c('0xf89')]})),_0xdcbd47[_0x52470c('0x544')][_0x52470c('0xd0f')]('div',{'style':_0x1b3e29[_0x52470c('0x116b')]},_0xdcbd47[_0x52470c('0x544')][_0x52470c('0xd0f')](_0x370be2[_0x52470c('0xaf5')],{'style':{'input':_0x1b3e29[_0x52470c('0x20c')],'label':_0x1b3e29['label']},'label':'a','value':this['props'][_0x52470c('0x467')]['a'],'arrowOffset':0.01,'onChange':this[_0x52470c('0xf89')]}))):_0x52470c('0x41d')===this[_0x52470c('0xfff')]['view']&&(_0x363c1a=_0xdcbd47['default'][_0x52470c('0xd0f')]('div',{'style':_0x1b3e29['fields'],'className':_0x52470c('0x7df')},_0xdcbd47[_0x52470c('0x544')][_0x52470c('0xd0f')](_0x52470c('0x7fc'),{'style':_0x1b3e29[_0x52470c('0x48f')]},_0xdcbd47[_0x52470c('0x544')][_0x52470c('0xd0f')](_0x370be2[_0x52470c('0xaf5')],{'style':{'input':_0x1b3e29[_0x52470c('0x20c')],'label':_0x1b3e29[_0x52470c('0xf90')]},'label':'h','value':Math['round'](this[_0x52470c('0x6e0')]['hsl']['h']),'onChange':this[_0x52470c('0xf89')]})),_0xdcbd47['default']['createElement']('div',{'style':_0x1b3e29[_0x52470c('0x48f')]},_0xdcbd47[_0x52470c('0x544')]['createElement'](_0x370be2['EditableInput'],{'style':{'input':_0x1b3e29[_0x52470c('0x20c')],'label':_0x1b3e29[_0x52470c('0xf90')]},'label':'s','value':Math['round'](0x64*this[_0x52470c('0x6e0')][_0x52470c('0x41d')]['s'])+'%','onChange':this[_0x52470c('0xf89')]})),_0xdcbd47[_0x52470c('0x544')][_0x52470c('0xd0f')]('div',{'style':_0x1b3e29['field']},_0xdcbd47[_0x52470c('0x544')][_0x52470c('0xd0f')](_0x370be2[_0x52470c('0xaf5')],{'style':{'input':_0x1b3e29['input'],'label':_0x1b3e29[_0x52470c('0xf90')]},'label':'l','value':Math[_0x52470c('0xbbc')](0x64*this[_0x52470c('0x6e0')][_0x52470c('0x41d')]['l'])+'%','onChange':this[_0x52470c('0xf89')]})),_0xdcbd47[_0x52470c('0x544')][_0x52470c('0xd0f')]('div',{'style':_0x1b3e29[_0x52470c('0x116b')]},_0xdcbd47[_0x52470c('0x544')][_0x52470c('0xd0f')](_0x370be2[_0x52470c('0xaf5')],{'style':{'input':_0x1b3e29[_0x52470c('0x20c')],'label':_0x1b3e29[_0x52470c('0xf90')]},'label':'a','value':this[_0x52470c('0x6e0')][_0x52470c('0x41d')]['a'],'arrowOffset':0.01,'onChange':this['handleChange']})))),_0xdcbd47[_0x52470c('0x544')]['createElement'](_0x52470c('0x7fc'),{'style':_0x1b3e29[_0x52470c('0xfd8')],'className':_0x52470c('0x7df')},_0x363c1a,_0xdcbd47[_0x52470c('0x544')][_0x52470c('0xd0f')](_0x52470c('0x7fc'),{'style':_0x1b3e29[_0x52470c('0x596')]},_0xdcbd47[_0x52470c('0x544')][_0x52470c('0xd0f')](_0x52470c('0x7fc'),{'style':_0x1b3e29[_0x52470c('0xcb5')],'onClick':this[_0x52470c('0xfdd')],'ref':function(_0x306145){return _0xbfb5a0['icon']=_0x306145;}},_0xdcbd47[_0x52470c('0x544')][_0x52470c('0xd0f')](_0x27c89a['default'],{'style':_0x1b3e29['svg'],'onMouseOver':this[_0x52470c('0xcd9')],'onMouseEnter':this['showHighlight'],'onMouseOut':this[_0x52470c('0x3e4')]}))));}}],[{'key':_0x2b2549('0x30d'),'value':function(_0x42b953,_0x69c054){var _0x219e41=_0x2b2549;return 0x1!==_0x42b953[_0x219e41('0x41d')]['a']&&_0x219e41('0xf2b')===_0x69c054['view']?{'view':_0x219e41('0x467')}:null;}}]),_0x362b03;}(_0xdcbd47[_0x50f517('0x544')][_0x50f517('0x346')]);_0x41e3de[_0x50f517('0xdec')]={'view':_0x50f517('0xf2b')},_0x577bfe[_0x50f517('0x544')]=_0x41e3de;},{'../../helpers/color':0x164,'../common':0x144,'@icons/material/UnfoldMoreHorizontalIcon':0x57,'lodash/isUndefined':0x11d,'react':_0x404097('0x1041'),'reactcss':0x171}],0x138:[function(_0xfb84f6,_0x20fcd3,_0x1fac27){var _0x3b895a=_0x404097;'use strict';Object[_0x3b895a('0xa95')](_0x1fac27,_0x3b895a('0x114c'),{'value':!0x0}),_0x1fac27['ChromePointer']=void 0x0;var _0x4f478f=_0x18240c(_0xfb84f6(_0x3b895a('0x1041'))),_0x254117=_0x18240c(_0xfb84f6(_0x3b895a('0xc87')));function _0x18240c(_0x5652c8){return _0x5652c8&&_0x5652c8['__esModule']?_0x5652c8:{'default':_0x5652c8};}var _0x4d1de5=_0x1fac27['ChromePointer']=function(){var _0x1ef0a8=_0x3b895a,_0x2adbbe=(0x0,_0x254117['default'])({'default':{'picker':{'width':_0x1ef0a8('0xa5a'),'height':_0x1ef0a8('0xa5a'),'borderRadius':_0x1ef0a8('0x453'),'transform':_0x1ef0a8('0xcd6'),'backgroundColor':_0x1ef0a8('0x727'),'boxShadow':'0\x201px\x204px\x200\x20rgba(0,\x200,\x200,\x200.37)'}}});return _0x4f478f['default'][_0x1ef0a8('0xd0f')]('div',{'style':_0x2adbbe[_0x1ef0a8('0x18d')]});};_0x1fac27[_0x3b895a('0x544')]=_0x4d1de5;},{'react':_0x404097('0x1041'),'reactcss':0x171}],0x139:[function(_0x25dfd4,_0x169c6c,_0x32dcf8){var _0x2b4e49=_0x404097;'use strict';Object[_0x2b4e49('0xa95')](_0x32dcf8,_0x2b4e49('0x114c'),{'value':!0x0}),_0x32dcf8[_0x2b4e49('0xb61')]=void 0x0;var _0x19657c=_0x5e5d99(_0x25dfd4('react')),_0x3a3704=_0x5e5d99(_0x25dfd4('reactcss'));function _0x5e5d99(_0x515e8f){var _0x5d2fdd=_0x2b4e49;return _0x515e8f&&_0x515e8f[_0x5d2fdd('0x114c')]?_0x515e8f:{'default':_0x515e8f};}var _0x38b537=_0x32dcf8[_0x2b4e49('0xb61')]=function(){var _0x99e3ce=_0x2b4e49,_0x2d5e39=(0x0,_0x3a3704[_0x99e3ce('0x544')])({'default':{'picker':{'width':_0x99e3ce('0xa5a'),'height':_0x99e3ce('0xa5a'),'borderRadius':_0x99e3ce('0x453'),'boxShadow':_0x99e3ce('0x4e3'),'transform':_0x99e3ce('0x1015')}}});return _0x19657c[_0x99e3ce('0x544')][_0x99e3ce('0xd0f')](_0x99e3ce('0x7fc'),{'style':_0x2d5e39['picker']});};_0x32dcf8[_0x2b4e49('0x544')]=_0x38b537;},{'react':_0x404097('0x1041'),'reactcss':0x171}],0x13a:[function(_0x4c8ae5,_0x243b24,_0x1a247d){var _0x29ecba=_0x404097;'use strict';Object['defineProperty'](_0x1a247d,'__esModule',{'value':!0x0}),_0x1a247d['Circle']=void 0x0;var _0x565b7c=_0x419973(_0x4c8ae5(_0x29ecba('0x1041'))),_0x4a25cd=_0x419973(_0x4c8ae5('prop-types')),_0x156420=_0x419973(_0x4c8ae5(_0x29ecba('0xc87'))),_0xa0bbf=_0x419973(_0x4c8ae5(_0x29ecba('0x113'))),_0x2e84f5=_0x419973(_0x4c8ae5(_0x29ecba('0x7c5'))),_0x5b07e8=function(_0x588bf0){var _0x224db0=_0x29ecba;if(_0x588bf0&&_0x588bf0['__esModule'])return _0x588bf0;var _0x2b2f9d={};if(null!=_0x588bf0)for(var _0x17ed57 in _0x588bf0)Object['prototype'][_0x224db0('0x100')][_0x224db0('0x4b0')](_0x588bf0,_0x17ed57)&&(_0x2b2f9d[_0x17ed57]=_0x588bf0[_0x17ed57]);return _0x2b2f9d['default']=_0x588bf0,_0x2b2f9d;}(_0x4c8ae5('material-colors')),_0x43b08e=_0x4c8ae5(_0x29ecba('0xae6')),_0xe346e7=_0x419973(_0x4c8ae5('./CircleSwatch'));function _0x419973(_0x2d2e4e){return _0x2d2e4e&&_0x2d2e4e['__esModule']?_0x2d2e4e:{'default':_0x2d2e4e};}var _0x4f117c=_0x1a247d[_0x29ecba('0x1152')]=function(_0x345fc9){var _0x39d883=_0x29ecba,_0x47d3d8=_0x345fc9[_0x39d883('0xa7b')],_0x23d10c=_0x345fc9[_0x39d883('0xe90')],_0x3bae90=_0x345fc9[_0x39d883('0x5f5')],_0x3b76e0=_0x345fc9[_0x39d883('0x837')],_0x6eb5af=_0x345fc9[_0x39d883('0xf2b')],_0x35b59e=_0x345fc9[_0x39d883('0x3b')],_0x590a12=_0x345fc9[_0x39d883('0x110b')],_0x2a67ad=void 0x0===_0x590a12?{}:_0x590a12,_0x56fd8b=_0x345fc9['circleSpacing'],_0x261c19=_0x345fc9['className'],_0x4e3f20=void 0x0===_0x261c19?'':_0x261c19,_0x24d6df=(0x0,_0x156420[_0x39d883('0x544')])((0x0,_0x2e84f5[_0x39d883('0x544')])({'default':{'card':{'width':_0x47d3d8,'display':_0x39d883('0xfe1'),'flexWrap':_0x39d883('0xfd8'),'marginRight':-_0x56fd8b,'marginBottom':-_0x56fd8b}}},_0x2a67ad)),_0x1973d0=function(_0x1481af,_0x5eafd2){return _0x23d10c({'hex':_0x1481af,'source':'hex'},_0x5eafd2);};return _0x565b7c[_0x39d883('0x544')]['createElement'](_0x39d883('0x7fc'),{'style':_0x24d6df[_0x39d883('0xc02')],'className':_0x39d883('0xdc8')+_0x4e3f20},(0x0,_0xa0bbf[_0x39d883('0x544')])(_0x3b76e0,function(_0x26f469){var _0xca856f=_0x39d883;return _0x565b7c[_0xca856f('0x544')][_0xca856f('0xd0f')](_0xe346e7[_0xca856f('0x544')],{'key':_0x26f469,'color':_0x26f469,'onClick':_0x1973d0,'onSwatchHover':_0x3bae90,'active':_0x6eb5af===_0x26f469[_0xca856f('0x2e7')](),'circleSize':_0x35b59e,'circleSpacing':_0x56fd8b});}));};_0x4f117c[_0x29ecba('0xfa2')]={'width':_0x4a25cd[_0x29ecba('0x544')][_0x29ecba('0x74c')]([_0x4a25cd['default'][_0x29ecba('0x7c7')],_0x4a25cd[_0x29ecba('0x544')][_0x29ecba('0xd95')]]),'circleSize':_0x4a25cd[_0x29ecba('0x544')][_0x29ecba('0xd95')],'circleSpacing':_0x4a25cd[_0x29ecba('0x544')][_0x29ecba('0xd95')],'styles':_0x4a25cd[_0x29ecba('0x544')][_0x29ecba('0x21e')]},_0x4f117c[_0x29ecba('0xdec')]={'width':0xfc,'circleSize':0x1c,'circleSpacing':0xe,'colors':[_0x5b07e8['red'][0x1f4],_0x5b07e8['pink'][0x1f4],_0x5b07e8[_0x29ecba('0x818')][0x1f4],_0x5b07e8[_0x29ecba('0xca2')][0x1f4],_0x5b07e8['indigo'][0x1f4],_0x5b07e8['blue'][0x1f4],_0x5b07e8['lightBlue'][0x1f4],_0x5b07e8[_0x29ecba('0x3d7')][0x1f4],_0x5b07e8[_0x29ecba('0xbd8')][0x1f4],_0x5b07e8[_0x29ecba('0xfd3')][0x1f4],_0x5b07e8[_0x29ecba('0x1011')][0x1f4],_0x5b07e8[_0x29ecba('0x1070')][0x1f4],_0x5b07e8['yellow'][0x1f4],_0x5b07e8[_0x29ecba('0x3ae')][0x1f4],_0x5b07e8['orange'][0x1f4],_0x5b07e8[_0x29ecba('0x1038')][0x1f4],_0x5b07e8[_0x29ecba('0x36d')][0x1f4],_0x5b07e8[_0x29ecba('0xb73')][0x1f4]],'styles':{}},_0x1a247d['default']=(0x0,_0x43b08e['ColorWrap'])(_0x4f117c);},{'../common':0x144,'./CircleSwatch':0x13b,'lodash/map':0x120,'lodash/merge':0x122,'material-colors':0x12b,'prop-types':0x130,'react':_0x404097('0x1041'),'reactcss':0x171}],0x13b:[function(_0x5926b0,_0x5a5dad,_0x43a473){var _0x2f03f4=_0x404097;'use strict';Object[_0x2f03f4('0xa95')](_0x43a473,_0x2f03f4('0x114c'),{'value':!0x0}),_0x43a473['CircleSwatch']=void 0x0;var _0xff07fd=_0x569722(_0x5926b0(_0x2f03f4('0x1041'))),_0xa1093=_0x5926b0(_0x2f03f4('0xc87')),_0x593de1=_0x569722(_0xa1093),_0x4b7129=_0x5926b0(_0x2f03f4('0xae6'));function _0x569722(_0x310be9){var _0x8b2264=_0x2f03f4;return _0x310be9&&_0x310be9[_0x8b2264('0x114c')]?_0x310be9:{'default':_0x310be9};}var _0x5de8cc=_0x43a473[_0x2f03f4('0x6fc')]=function(_0x1a570c){var _0x3ff714=_0x2f03f4,_0x4cac6e=_0x1a570c[_0x3ff714('0x48e')],_0x5dd484=_0x1a570c['onClick'],_0x1a469b=_0x1a570c[_0x3ff714('0x5f5')],_0x2cdab4=_0x1a570c[_0x3ff714('0x28f')],_0x83e561=_0x1a570c[_0x3ff714('0xf23')],_0x3d70d8=_0x1a570c[_0x3ff714('0x3b')],_0x54cee5=_0x1a570c[_0x3ff714('0x25f')],_0x5120d4=(0x0,_0x593de1[_0x3ff714('0x544')])({'default':{'swatch':{'width':_0x3d70d8,'height':_0x3d70d8,'marginRight':_0x54cee5,'marginBottom':_0x54cee5,'transform':_0x3ff714('0xebb'),'transition':_0x3ff714('0xca8')},'Swatch':{'borderRadius':_0x3ff714('0x4d4'),'background':'transparent','boxShadow':_0x3ff714('0xf4')+(_0x3d70d8/0x2+0x1)+_0x3ff714('0x812')+_0x4cac6e,'transition':_0x3ff714('0xba8')}},'hover':{'swatch':{'transform':_0x3ff714('0x83')}},'active':{'Swatch':{'boxShadow':_0x3ff714('0x1f5')+_0x4cac6e}}},{'hover':_0x2cdab4,'active':_0x83e561});return _0xff07fd['default']['createElement']('div',{'style':_0x5120d4[_0x3ff714('0x1027')]},_0xff07fd[_0x3ff714('0x544')][_0x3ff714('0xd0f')](_0x4b7129['Swatch'],{'style':_0x5120d4[_0x3ff714('0x55f')],'color':_0x4cac6e,'onClick':_0x5dd484,'onHover':_0x1a469b,'focusStyle':{'boxShadow':_0x5120d4[_0x3ff714('0x55f')][_0x3ff714('0xaa7')]+_0x3ff714('0xdeb')+_0x4cac6e}}));};_0x5de8cc[_0x2f03f4('0xdec')]={'circleSize':0x1c,'circleSpacing':0xe},_0x43a473[_0x2f03f4('0x544')]=(0x0,_0xa1093[_0x2f03f4('0x2e3')])(_0x5de8cc);},{'../common':0x144,'react':'react','reactcss':0x171}],0x13c:[function(_0x1a1714,_0x292f9f,_0x5dcbc0){var _0x207e2b=_0x404097;'use strict';Object['defineProperty'](_0x5dcbc0,'__esModule',{'value':!0x0}),_0x5dcbc0['Alpha']=void 0x0;var _0x44a6ea=Object[_0x207e2b('0xc7d')]||function(_0x157841){var _0x58515b=_0x207e2b;for(var _0x277fed=0x1;_0x277fed-0x1)){var _0x4162b9=_0x19f917['getArrowOffset'](),_0x32c019=0x26===_0x2dec0e[_0x4f3d91('0xc7c')]?_0x1945d8+_0x4162b9:_0x1945d8-_0x4162b9;_0x19f917[_0x4f3d91('0x6af')](_0x32c019,_0x2dec0e);}},_0x19f917[_0x2f4f42('0xee8')]=function(_0x251558){var _0x277dbe=_0x2f4f42;if(_0x19f917['props']['dragLabel']){var _0x12b390=Math[_0x277dbe('0xbbc')](_0x19f917['props'][_0x277dbe('0x832')]+_0x251558['movementX']);_0x12b390>=0x0&&_0x12b390<=_0x19f917[_0x277dbe('0x6e0')][_0x277dbe('0xfb3')]&&_0x19f917[_0x277dbe('0x6e0')][_0x277dbe('0xe90')]&&_0x19f917[_0x277dbe('0x6e0')][_0x277dbe('0xe90')](_0x19f917['getValueObjectWithLabel'](_0x12b390),_0x251558);}},_0x19f917[_0x2f4f42('0xba4')]=function(_0x261da0){var _0x5e8481=_0x2f4f42;_0x19f917['props'][_0x5e8481('0x888')]&&(_0x261da0['preventDefault'](),_0x19f917[_0x5e8481('0xee8')](_0x261da0),window[_0x5e8481('0x55')](_0x5e8481('0x4ad'),_0x19f917[_0x5e8481('0xee8')]),window[_0x5e8481('0x55')](_0x5e8481('0xd66'),_0x19f917[_0x5e8481('0x383')]));},_0x19f917[_0x2f4f42('0x383')]=function(){var _0x1389ec=_0x2f4f42;_0x19f917[_0x1389ec('0x27c')]();},_0x19f917[_0x2f4f42('0x27c')]=function(){var _0x1ab7f5=_0x2f4f42;window[_0x1ab7f5('0x113b')](_0x1ab7f5('0x4ad'),_0x19f917['handleDrag']),window['removeEventListener'](_0x1ab7f5('0xd66'),_0x19f917[_0x1ab7f5('0x383')]);},_0x19f917[_0x2f4f42('0xfff')]={'value':String(_0x111849['value'])[_0x2f4f42('0x67d')](),'blurValue':String(_0x111849[_0x2f4f42('0x832')])['toUpperCase']()},_0x19f917[_0x2f4f42('0x149')]=_0x2f4f42('0x6e8')+_0x49e134++,_0x19f917;}return function(_0x2659fd,_0x1129e9){var _0x18291c=_0x3ab6;if('function'!=typeof _0x1129e9&&null!==_0x1129e9)throw new TypeError('Super\x20expression\x20must\x20either\x20be\x20null\x20or\x20a\x20function,\x20not\x20'+typeof _0x1129e9);_0x2659fd[_0x18291c('0x98c')]=Object[_0x18291c('0x5c2')](_0x1129e9&&_0x1129e9[_0x18291c('0x98c')],{'constructor':{'value':_0x2659fd,'enumerable':!0x1,'writable':!0x0,'configurable':!0x0}}),_0x1129e9&&(Object['setPrototypeOf']?Object[_0x18291c('0x6c2')](_0x2659fd,_0x1129e9):_0x2659fd['__proto__']=_0x1129e9);}(_0x2e3e3d,_0x4bfca9),_0x170da1(_0x2e3e3d,[{'key':_0x3d8d4a('0xa78'),'value':function(_0x4b259a,_0x5bb90d){var _0x23fb67=_0x3d8d4a;this[_0x23fb67('0x6e0')][_0x23fb67('0x832')]===this['state'][_0x23fb67('0x832')]||_0x4b259a[_0x23fb67('0x832')]===this[_0x23fb67('0x6e0')][_0x23fb67('0x832')]&&_0x5bb90d[_0x23fb67('0x832')]===this[_0x23fb67('0xfff')][_0x23fb67('0x832')]||(this['input']===document[_0x23fb67('0x80b')]?this[_0x23fb67('0x32b')]({'blurValue':String(this[_0x23fb67('0x6e0')][_0x23fb67('0x832')])[_0x23fb67('0x67d')]()}):this[_0x23fb67('0x32b')]({'value':String(this[_0x23fb67('0x6e0')][_0x23fb67('0x832')])[_0x23fb67('0x67d')](),'blurValue':!this['state'][_0x23fb67('0xab9')]&&String(this[_0x23fb67('0x6e0')][_0x23fb67('0x832')])[_0x23fb67('0x67d')]()}));}},{'key':_0x3d8d4a('0xdc9'),'value':function(){this['unbindEventListeners']();}},{'key':_0x3d8d4a('0x3ef'),'value':function(_0x56aa50){var _0x1c1a7b=_0x3d8d4a;return function(_0x38ba68,_0x1c14c8,_0x43b230){return _0x1c14c8 in _0x38ba68?Object['defineProperty'](_0x38ba68,_0x1c14c8,{'value':_0x43b230,'enumerable':!0x0,'configurable':!0x0,'writable':!0x0}):_0x38ba68[_0x1c14c8]=_0x43b230,_0x38ba68;}({},this[_0x1c1a7b('0x6e0')]['label'],_0x56aa50);}},{'key':_0x3d8d4a('0x8e3'),'value':function(){var _0x5cc55f=_0x3d8d4a;return this[_0x5cc55f('0x6e0')]['arrowOffset']||0x1;}},{'key':_0x3d8d4a('0x6af'),'value':function(_0x5c2c79,_0x3a2f21){var _0x33a44a=_0x3d8d4a,_0x57b178=this[_0x33a44a('0x6e0')][_0x33a44a('0xf90')]?this[_0x33a44a('0x3ef')](_0x5c2c79):_0x5c2c79;this[_0x33a44a('0x6e0')]['onChange']&&this[_0x33a44a('0x6e0')]['onChange'](_0x57b178,_0x3a2f21),this[_0x33a44a('0x32b')]({'value':_0x5c2c79});}},{'key':_0x3d8d4a('0x80f'),'value':function(){var _0x4c5cfc=_0x3d8d4a,_0x589e04=this,_0x1b111e=(0x0,_0x4e199e[_0x4c5cfc('0x544')])({'default':{'wrap':{'position':_0x4c5cfc('0x1148')}},'user-override':{'wrap':this[_0x4c5cfc('0x6e0')][_0x4c5cfc('0x1cd')]&&this[_0x4c5cfc('0x6e0')]['style'][_0x4c5cfc('0xfd8')]?this[_0x4c5cfc('0x6e0')][_0x4c5cfc('0x1cd')][_0x4c5cfc('0xfd8')]:{},'input':this['props'][_0x4c5cfc('0x1cd')]&&this['props'][_0x4c5cfc('0x1cd')][_0x4c5cfc('0x20c')]?this[_0x4c5cfc('0x6e0')][_0x4c5cfc('0x1cd')]['input']:{},'label':this[_0x4c5cfc('0x6e0')][_0x4c5cfc('0x1cd')]&&this['props'][_0x4c5cfc('0x1cd')][_0x4c5cfc('0xf90')]?this[_0x4c5cfc('0x6e0')][_0x4c5cfc('0x1cd')][_0x4c5cfc('0xf90')]:{}},'dragLabel-true':{'label':{'cursor':_0x4c5cfc('0x11ba')}}},{'user-override':!0x0},this['props']);return _0x54bd4e['default'][_0x4c5cfc('0xd0f')](_0x4c5cfc('0x7fc'),{'style':_0x1b111e[_0x4c5cfc('0xfd8')]},_0x54bd4e[_0x4c5cfc('0x544')][_0x4c5cfc('0xd0f')](_0x4c5cfc('0x20c'),{'id':this[_0x4c5cfc('0x149')],'style':_0x1b111e[_0x4c5cfc('0x20c')],'ref':function(_0x447dfe){var _0xc87e3a=_0x4c5cfc;return _0x589e04[_0xc87e3a('0x20c')]=_0x447dfe;},'value':this[_0x4c5cfc('0xfff')]['value'],'onKeyDown':this[_0x4c5cfc('0x63e')],'onChange':this[_0x4c5cfc('0xf89')],'onBlur':this['handleBlur'],'placeholder':this[_0x4c5cfc('0x6e0')]['placeholder'],'spellCheck':'false'}),this[_0x4c5cfc('0x6e0')]['label']&&!this[_0x4c5cfc('0x6e0')][_0x4c5cfc('0x79a')]?_0x54bd4e[_0x4c5cfc('0x544')][_0x4c5cfc('0xd0f')]('label',{'htmlFor':this['inputId'],'style':_0x1b111e[_0x4c5cfc('0xf90')],'onMouseDown':this[_0x4c5cfc('0xba4')]},this['props']['label']):null);}}]),_0x2e3e3d;}(_0x2f5f57['PureComponent']||_0x2f5f57[_0x282818('0x346')]);_0x65d4ed['default']=_0x2739b3;},{'react':'react','reactcss':0x171}],0x140:[function(_0x38749d,_0x47ad68,_0x4277b4){var _0x26ad12=_0x404097;'use strict';Object[_0x26ad12('0xa95')](_0x4277b4,_0x26ad12('0x114c'),{'value':!0x0}),_0x4277b4[_0x26ad12('0x274')]=void 0x0;var _0x5b29cc=function(){function _0x49102e(_0x59ae3f,_0x2e7d40){var _0x5eca13=_0x3ab6;for(var _0x44d6b5=0x0;_0x44d6b5<_0x2e7d40[_0x5eca13('0x525')];_0x44d6b5++){var _0x40ba9a=_0x2e7d40[_0x44d6b5];_0x40ba9a['enumerable']=_0x40ba9a['enumerable']||!0x1,_0x40ba9a[_0x5eca13('0xbb2')]=!0x0,_0x5eca13('0x832')in _0x40ba9a&&(_0x40ba9a[_0x5eca13('0x4db')]=!0x0),Object[_0x5eca13('0xa95')](_0x59ae3f,_0x40ba9a[_0x5eca13('0x1192')],_0x40ba9a);}}return function(_0x19837c,_0x3ffa2,_0x2e3a5a){var _0x575f76=_0x3ab6;return _0x3ffa2&&_0x49102e(_0x19837c[_0x575f76('0x98c')],_0x3ffa2),_0x2e3a5a&&_0x49102e(_0x19837c,_0x2e3a5a),_0x19837c;};}(),_0x8a4dc=_0x38749d(_0x26ad12('0x1041')),_0x54af58=_0x55db73(_0x8a4dc),_0x2f6899=_0x55db73(_0x38749d(_0x26ad12('0xc87'))),_0xd95e4a=function(_0x179bc4){var _0x2ad820=_0x26ad12;if(_0x179bc4&&_0x179bc4['__esModule'])return _0x179bc4;var _0x75b332={};if(null!=_0x179bc4)for(var _0x48d57 in _0x179bc4)Object[_0x2ad820('0x98c')]['hasOwnProperty'][_0x2ad820('0x4b0')](_0x179bc4,_0x48d57)&&(_0x75b332[_0x48d57]=_0x179bc4[_0x48d57]);return _0x75b332['default']=_0x179bc4,_0x75b332;}(_0x38749d('../../helpers/hue'));function _0x55db73(_0x4aa321){var _0x34a8c7=_0x26ad12;return _0x4aa321&&_0x4aa321[_0x34a8c7('0x114c')]?_0x4aa321:{'default':_0x4aa321};}function _0x8ba08f(_0x558a6a,_0x58f4db){if(!(_0x558a6a instanceof _0x58f4db))throw new TypeError('Cannot\x20call\x20a\x20class\x20as\x20a\x20function');}function _0x1b87fa(_0x463c29,_0x504453){var _0x2ad96b=_0x26ad12;if(!_0x463c29)throw new ReferenceError('this\x20hasn\x27t\x20been\x20initialised\x20-\x20super()\x20hasn\x27t\x20been\x20called');return!_0x504453||'object'!=typeof _0x504453&&_0x2ad96b('0xae9')!=typeof _0x504453?_0x463c29:_0x504453;}var _0x1682c4=_0x4277b4[_0x26ad12('0x274')]=function(_0x14c2f4){var _0x38bc83=_0x26ad12;function _0x59a74a(){var _0x45a28f=_0x3ab6,_0x1d3431,_0x5029dd,_0x3a6f77;_0x8ba08f(this,_0x59a74a);for(var _0x52125a=arguments[_0x45a28f('0x525')],_0x1247aa=Array(_0x52125a),_0xb03485=0x0;_0xb03485<_0x52125a;_0xb03485++)_0x1247aa[_0xb03485]=arguments[_0xb03485];return _0x5029dd=_0x3a6f77=_0x1b87fa(this,(_0x1d3431=_0x59a74a[_0x45a28f('0x11e6')]||Object[_0x45a28f('0x10c0')](_0x59a74a))[_0x45a28f('0x4b0')]['apply'](_0x1d3431,[this][_0x45a28f('0x3cc')](_0x1247aa))),_0x3a6f77[_0x45a28f('0xf89')]=function(_0x3e6030){var _0x5a6f7c=_0x45a28f,_0x461fa1=_0xd95e4a[_0x5a6f7c('0x73a')](_0x3e6030,_0x3a6f77[_0x5a6f7c('0x6e0')]['direction'],_0x3a6f77['props'][_0x5a6f7c('0x41d')],_0x3a6f77[_0x5a6f7c('0x850')]);_0x461fa1&&_0x5a6f7c('0xae9')==typeof _0x3a6f77[_0x5a6f7c('0x6e0')][_0x5a6f7c('0xe90')]&&_0x3a6f77['props'][_0x5a6f7c('0xe90')](_0x461fa1,_0x3e6030);},_0x3a6f77[_0x45a28f('0xba4')]=function(_0x3cf85a){var _0x561ee5=_0x45a28f;_0x3a6f77[_0x561ee5('0xf89')](_0x3cf85a),window[_0x561ee5('0x55')](_0x561ee5('0x4ad'),_0x3a6f77['handleChange']),window[_0x561ee5('0x55')](_0x561ee5('0xd66'),_0x3a6f77[_0x561ee5('0x383')]);},_0x3a6f77['handleMouseUp']=function(){var _0x3021af=_0x45a28f;_0x3a6f77[_0x3021af('0x27c')]();},_0x1b87fa(_0x3a6f77,_0x5029dd);}return function(_0x54b937,_0x479bb0){var _0x88f90=_0x3ab6;if('function'!=typeof _0x479bb0&&null!==_0x479bb0)throw new TypeError(_0x88f90('0x30f')+typeof _0x479bb0);_0x54b937[_0x88f90('0x98c')]=Object[_0x88f90('0x5c2')](_0x479bb0&&_0x479bb0[_0x88f90('0x98c')],{'constructor':{'value':_0x54b937,'enumerable':!0x1,'writable':!0x0,'configurable':!0x0}}),_0x479bb0&&(Object[_0x88f90('0x6c2')]?Object['setPrototypeOf'](_0x54b937,_0x479bb0):_0x54b937[_0x88f90('0x11e6')]=_0x479bb0);}(_0x59a74a,_0x14c2f4),_0x5b29cc(_0x59a74a,[{'key':_0x38bc83('0xdc9'),'value':function(){var _0x249f6b=_0x38bc83;this[_0x249f6b('0x27c')]();}},{'key':_0x38bc83('0x27c'),'value':function(){var _0x427458=_0x38bc83;window['removeEventListener']('mousemove',this['handleChange']),window[_0x427458('0x113b')](_0x427458('0xd66'),this[_0x427458('0x383')]);}},{'key':_0x38bc83('0x80f'),'value':function(){var _0x20fdcb=_0x38bc83,_0x2d743b=this,_0x1e5177=this[_0x20fdcb('0x6e0')][_0x20fdcb('0xd96')],_0x4410c9=void 0x0===_0x1e5177?'horizontal':_0x1e5177,_0x33aef3=(0x0,_0x2f6899['default'])({'default':{'hue':{'absolute':'0px\x200px\x200px\x200px','borderRadius':this['props']['radius'],'boxShadow':this['props']['shadow']},'container':{'padding':_0x20fdcb('0xb53'),'position':_0x20fdcb('0x1148'),'height':_0x20fdcb('0xeef'),'borderRadius':this[_0x20fdcb('0x6e0')][_0x20fdcb('0x9c1')]},'pointer':{'position':_0x20fdcb('0x257'),'left':0x64*this[_0x20fdcb('0x6e0')]['hsl']['h']/0x168+'%'},'slider':{'marginTop':_0x20fdcb('0x743'),'width':_0x20fdcb('0xd1d'),'borderRadius':_0x20fdcb('0x743'),'height':_0x20fdcb('0x4a9'),'boxShadow':_0x20fdcb('0xf8'),'background':_0x20fdcb('0xe8b'),'transform':_0x20fdcb('0x638')}},'vertical':{'pointer':{'left':_0x20fdcb('0x57d'),'top':-0x64*this[_0x20fdcb('0x6e0')]['hsl']['h']/0x168+0x64+'%'}}},{'vertical':_0x20fdcb('0xd20')===_0x4410c9});return _0x54af58['default'][_0x20fdcb('0xd0f')](_0x20fdcb('0x7fc'),{'style':_0x33aef3[_0x20fdcb('0xc71')]},_0x54af58[_0x20fdcb('0x544')][_0x20fdcb('0xd0f')](_0x20fdcb('0x7fc'),{'className':_0x20fdcb('0xdb2')+_0x4410c9,'style':_0x33aef3[_0x20fdcb('0x850')],'ref':function(_0x1e230c){return _0x2d743b['container']=_0x1e230c;},'onMouseDown':this[_0x20fdcb('0xba4')],'onTouchMove':this[_0x20fdcb('0xf89')],'onTouchStart':this['handleChange']},_0x54af58['default']['createElement'](_0x20fdcb('0x1cd'),null,'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20.hue-horizontal\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20linear-gradient(to\x20right,\x20#f00\x200%,\x20#ff0\x2017%,\x20#0f0\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x2033%,\x20#0ff\x2050%,\x20#00f\x2067%,\x20#f0f\x2083%,\x20#f00\x20100%);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20-webkit-linear-gradient(to\x20right,\x20#f00\x200%,\x20#ff0\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x2017%,\x20#0f0\x2033%,\x20#0ff\x2050%,\x20#00f\x2067%,\x20#f0f\x2083%,\x20#f00\x20100%);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20.hue-vertical\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20linear-gradient(to\x20top,\x20#f00\x200%,\x20#ff0\x2017%,\x20#0f0\x2033%,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#0ff\x2050%,\x20#00f\x2067%,\x20#f0f\x2083%,\x20#f00\x20100%);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20-webkit-linear-gradient(to\x20top,\x20#f00\x200%,\x20#ff0\x2017%,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#0f0\x2033%,\x20#0ff\x2050%,\x20#00f\x2067%,\x20#f0f\x2083%,\x20#f00\x20100%);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'),_0x54af58[_0x20fdcb('0x544')][_0x20fdcb('0xd0f')](_0x20fdcb('0x7fc'),{'style':_0x33aef3['pointer']},this[_0x20fdcb('0x6e0')][_0x20fdcb('0x184')]?_0x54af58[_0x20fdcb('0x544')][_0x20fdcb('0xd0f')](this[_0x20fdcb('0x6e0')][_0x20fdcb('0x184')],this[_0x20fdcb('0x6e0')]):_0x54af58[_0x20fdcb('0x544')][_0x20fdcb('0xd0f')](_0x20fdcb('0x7fc'),{'style':_0x33aef3['slider']}))));}}]),_0x59a74a;}(_0x8a4dc['PureComponent']||_0x8a4dc[_0x26ad12('0x346')]);_0x4277b4[_0x26ad12('0x544')]=_0x1682c4;},{'../../helpers/hue':0x165,'react':'react','reactcss':0x171}],0x141:[function(_0x45b638,_0x1389b9,_0x23d45c){var _0x290243=_0x404097;'use strict';Object[_0x290243('0xa95')](_0x23d45c,'__esModule',{'value':!0x0}),_0x23d45c['Raised']=void 0x0;var _0x5aac0a=_0x4e0b83(_0x45b638(_0x290243('0x1041'))),_0x2cf618=_0x4e0b83(_0x45b638(_0x290243('0xb37'))),_0x444c83=_0x4e0b83(_0x45b638(_0x290243('0xc87'))),_0x4a0f1b=_0x4e0b83(_0x45b638(_0x290243('0x7c5')));function _0x4e0b83(_0x70a688){var _0x27b960=_0x290243;return _0x70a688&&_0x70a688[_0x27b960('0x114c')]?_0x70a688:{'default':_0x70a688};}var _0x3fbaf3=_0x23d45c[_0x290243('0x9e4')]=function(_0x2d4741){var _0x4c9707=_0x290243,_0x1cb6bf=_0x2d4741['zDepth'],_0x5e1a6f=_0x2d4741[_0x4c9707('0x9c1')],_0x101da8=_0x2d4741[_0x4c9707('0x9d9')],_0x550828=_0x2d4741[_0x4c9707('0x115a')],_0x464cd6=_0x2d4741[_0x4c9707('0x110b')],_0x539777=void 0x0===_0x464cd6?{}:_0x464cd6,_0x19548e=(0x0,_0x444c83[_0x4c9707('0x544')])((0x0,_0x4a0f1b[_0x4c9707('0x544')])({'default':{'wrap':{'position':_0x4c9707('0x1148'),'display':'inline-block'},'content':{'position':_0x4c9707('0x1148')},'bg':{'absolute':_0x4c9707('0x66e'),'boxShadow':'0\x20'+_0x1cb6bf+_0x4c9707('0x812')+0x4*_0x1cb6bf+'px\x20rgba(0,0,0,.24)','borderRadius':_0x5e1a6f,'background':_0x101da8}},'zDepth-0':{'bg':{'boxShadow':_0x4c9707('0x1c1')}},'zDepth-1':{'bg':{'boxShadow':_0x4c9707('0xde7')}},'zDepth-2':{'bg':{'boxShadow':_0x4c9707('0xb33')}},'zDepth-3':{'bg':{'boxShadow':_0x4c9707('0x45f')}},'zDepth-4':{'bg':{'boxShadow':_0x4c9707('0x109a')}},'zDepth-5':{'bg':{'boxShadow':_0x4c9707('0xe94')}},'square':{'bg':{'borderRadius':'0'}},'circle':{'bg':{'borderRadius':_0x4c9707('0x4d4')}}},_0x539777),{'zDepth-1':0x1===_0x1cb6bf});return _0x5aac0a[_0x4c9707('0x544')]['createElement']('div',{'style':_0x19548e[_0x4c9707('0xfd8')]},_0x5aac0a[_0x4c9707('0x544')][_0x4c9707('0xd0f')](_0x4c9707('0x7fc'),{'style':_0x19548e['bg']}),_0x5aac0a[_0x4c9707('0x544')][_0x4c9707('0xd0f')](_0x4c9707('0x7fc'),{'style':_0x19548e[_0x4c9707('0xd5b')]},_0x550828));};_0x3fbaf3[_0x290243('0xfa2')]={'background':_0x2cf618[_0x290243('0x544')][_0x290243('0x7c7')],'zDepth':_0x2cf618['default'][_0x290243('0xce6')]([0x0,0x1,0x2,0x3,0x4,0x5]),'radius':_0x2cf618[_0x290243('0x544')][_0x290243('0xd95')],'styles':_0x2cf618[_0x290243('0x544')]['object']},_0x3fbaf3[_0x290243('0xdec')]={'background':_0x290243('0xe8b'),'zDepth':0x1,'radius':0x2,'styles':{}},_0x23d45c['default']=_0x3fbaf3;},{'lodash/merge':0x122,'prop-types':0x130,'react':'react','reactcss':0x171}],0x142:[function(_0x3a080a,_0x303b72,_0x22446f){var _0x160f7d=_0x404097;'use strict';Object[_0x160f7d('0xa95')](_0x22446f,_0x160f7d('0x114c'),{'value':!0x0}),_0x22446f[_0x160f7d('0x423')]=void 0x0;var _0x225af8=function(){function _0x5e22f4(_0x24618b,_0x9a82d2){var _0x4d2234=_0x3ab6;for(var _0xdbf7de=0x0;_0xdbf7de<_0x9a82d2[_0x4d2234('0x525')];_0xdbf7de++){var _0x4e4490=_0x9a82d2[_0xdbf7de];_0x4e4490['enumerable']=_0x4e4490[_0x4d2234('0x156')]||!0x1,_0x4e4490['configurable']=!0x0,_0x4d2234('0x832')in _0x4e4490&&(_0x4e4490[_0x4d2234('0x4db')]=!0x0),Object[_0x4d2234('0xa95')](_0x24618b,_0x4e4490[_0x4d2234('0x1192')],_0x4e4490);}}return function(_0x350b7e,_0x149d76,_0x415347){var _0x4d0002=_0x3ab6;return _0x149d76&&_0x5e22f4(_0x350b7e[_0x4d0002('0x98c')],_0x149d76),_0x415347&&_0x5e22f4(_0x350b7e,_0x415347),_0x350b7e;};}(),_0x2dbca6=_0x3a080a(_0x160f7d('0x1041')),_0x2beb35=_0x551252(_0x2dbca6),_0x584a13=_0x551252(_0x3a080a('reactcss')),_0x2be81e=_0x551252(_0x3a080a('lodash/throttle')),_0x35d098=function(_0x1a07b5){var _0x3fee52=_0x160f7d;if(_0x1a07b5&&_0x1a07b5['__esModule'])return _0x1a07b5;var _0x39290b={};if(null!=_0x1a07b5)for(var _0x1bddf3 in _0x1a07b5)Object[_0x3fee52('0x98c')]['hasOwnProperty'][_0x3fee52('0x4b0')](_0x1a07b5,_0x1bddf3)&&(_0x39290b[_0x1bddf3]=_0x1a07b5[_0x1bddf3]);return _0x39290b[_0x3fee52('0x544')]=_0x1a07b5,_0x39290b;}(_0x3a080a(_0x160f7d('0xfc0')));function _0x551252(_0x1087d4){var _0x5796e6=_0x160f7d;return _0x1087d4&&_0x1087d4[_0x5796e6('0x114c')]?_0x1087d4:{'default':_0x1087d4};}var _0x2eb368=_0x22446f[_0x160f7d('0x423')]=function(_0x3b0652){var _0x52f4ad=_0x160f7d;function _0x3e5d5d(_0x3cc775){var _0x16d392=_0x3ab6;!function(_0x3d61c7,_0x1dbbd){var _0x539077=_0x3ab6;if(!(_0x3d61c7 instanceof _0x1dbbd))throw new TypeError(_0x539077('0x202'));}(this,_0x3e5d5d);var _0x1ea7ed=function(_0xa8c9a6,_0x439ca0){var _0x5e63f8=_0x3ab6;if(!_0xa8c9a6)throw new ReferenceError(_0x5e63f8('0x2e9'));return!_0x439ca0||'object'!=typeof _0x439ca0&&_0x5e63f8('0xae9')!=typeof _0x439ca0?_0xa8c9a6:_0x439ca0;}(this,(_0x3e5d5d[_0x16d392('0x11e6')]||Object[_0x16d392('0x10c0')](_0x3e5d5d))[_0x16d392('0x4b0')](this,_0x3cc775));return _0x1ea7ed[_0x16d392('0xf89')]=function(_0x5cf1dc){var _0x569986=_0x16d392;_0x569986('0xae9')==typeof _0x1ea7ed['props'][_0x569986('0xe90')]&&_0x1ea7ed[_0x569986('0x10bf')](_0x1ea7ed['props'][_0x569986('0xe90')],_0x35d098[_0x569986('0x73a')](_0x5cf1dc,_0x1ea7ed[_0x569986('0x6e0')][_0x569986('0x41d')],_0x1ea7ed[_0x569986('0x850')]),_0x5cf1dc);},_0x1ea7ed[_0x16d392('0xba4')]=function(_0x5b5919){var _0x40ba86=_0x16d392;_0x1ea7ed[_0x40ba86('0xf89')](_0x5b5919);var _0x20b041=_0x1ea7ed['getContainerRenderWindow']();_0x20b041[_0x40ba86('0x55')](_0x40ba86('0x4ad'),_0x1ea7ed[_0x40ba86('0xf89')]),_0x20b041[_0x40ba86('0x55')](_0x40ba86('0xd66'),_0x1ea7ed[_0x40ba86('0x383')]);},_0x1ea7ed['handleMouseUp']=function(){var _0x3e145f=_0x16d392;_0x1ea7ed[_0x3e145f('0x27c')]();},_0x1ea7ed[_0x16d392('0x10bf')]=(0x0,_0x2be81e['default'])(function(_0x47ddd6,_0x2cca05,_0x3d4a98){_0x47ddd6(_0x2cca05,_0x3d4a98);},0x32),_0x1ea7ed;}return function(_0x5ac62c,_0x46798f){var _0x3c23ae=_0x3ab6;if(_0x3c23ae('0xae9')!=typeof _0x46798f&&null!==_0x46798f)throw new TypeError(_0x3c23ae('0x30f')+typeof _0x46798f);_0x5ac62c[_0x3c23ae('0x98c')]=Object[_0x3c23ae('0x5c2')](_0x46798f&&_0x46798f[_0x3c23ae('0x98c')],{'constructor':{'value':_0x5ac62c,'enumerable':!0x1,'writable':!0x0,'configurable':!0x0}}),_0x46798f&&(Object['setPrototypeOf']?Object['setPrototypeOf'](_0x5ac62c,_0x46798f):_0x5ac62c[_0x3c23ae('0x11e6')]=_0x46798f);}(_0x3e5d5d,_0x3b0652),_0x225af8(_0x3e5d5d,[{'key':'componentWillUnmount','value':function(){var _0x18b7ee=_0x3ab6;this[_0x18b7ee('0x10bf')]['cancel'](),this[_0x18b7ee('0x27c')]();}},{'key':_0x52f4ad('0xee4'),'value':function(){var _0x494256=_0x52f4ad;for(var _0x3775f8=this[_0x494256('0x850')],_0x26c696=window;!_0x26c696[_0x494256('0xe40')]['contains'](_0x3775f8)&&_0x26c696[_0x494256('0xeb7')]!==_0x26c696;)_0x26c696=_0x26c696[_0x494256('0xeb7')];return _0x26c696;}},{'key':'unbindEventListeners','value':function(){var _0xd954ad=_0x52f4ad,_0x275f10=this[_0xd954ad('0xee4')]();_0x275f10[_0xd954ad('0x113b')](_0xd954ad('0x4ad'),this[_0xd954ad('0xf89')]),_0x275f10[_0xd954ad('0x113b')](_0xd954ad('0xd66'),this[_0xd954ad('0x383')]);}},{'key':'render','value':function(){var _0x96aef0=_0x52f4ad,_0x13ee5c=this,_0x25458f=this[_0x96aef0('0x6e0')][_0x96aef0('0x1cd')]||{},_0x50f66e=_0x25458f[_0x96aef0('0x48e')],_0x4c6c5d=_0x25458f[_0x96aef0('0xf7')],_0x1f560c=_0x25458f[_0x96aef0('0xa53')],_0xc915fa=_0x25458f['pointer'],_0x308bdc=_0x25458f[_0x96aef0('0x9b5')],_0x3892a2=(0x0,_0x584a13[_0x96aef0('0x544')])({'default':{'color':{'absolute':_0x96aef0('0x66e'),'background':_0x96aef0('0x950')+this[_0x96aef0('0x6e0')][_0x96aef0('0x41d')]['h']+_0x96aef0('0x452'),'borderRadius':this[_0x96aef0('0x6e0')][_0x96aef0('0x9c1')]},'white':{'absolute':_0x96aef0('0x66e'),'borderRadius':this['props']['radius']},'black':{'absolute':_0x96aef0('0x66e'),'boxShadow':this[_0x96aef0('0x6e0')]['shadow'],'borderRadius':this[_0x96aef0('0x6e0')]['radius']},'pointer':{'position':_0x96aef0('0x257'),'top':-0x64*this[_0x96aef0('0x6e0')]['hsv']['v']+0x64+'%','left':0x64*this['props']['hsv']['s']+'%','cursor':_0x96aef0('0x544')},'circle':{'width':_0x96aef0('0xd1d'),'height':'4px','boxShadow':_0x96aef0('0x2f2'),'borderRadius':'50%','cursor':'hand','transform':_0x96aef0('0xc70')}},'custom':{'color':_0x50f66e,'white':_0x4c6c5d,'black':_0x1f560c,'pointer':_0xc915fa,'circle':_0x308bdc}},{'custom':!!this[_0x96aef0('0x6e0')][_0x96aef0('0x1cd')]});return _0x2beb35[_0x96aef0('0x544')]['createElement'](_0x96aef0('0x7fc'),{'style':_0x3892a2[_0x96aef0('0x48e')],'ref':function(_0x229558){var _0x5432e1=_0x96aef0;return _0x13ee5c[_0x5432e1('0x850')]=_0x229558;},'onMouseDown':this[_0x96aef0('0xba4')],'onTouchMove':this[_0x96aef0('0xf89')],'onTouchStart':this[_0x96aef0('0xf89')]},_0x2beb35[_0x96aef0('0x544')][_0x96aef0('0xd0f')](_0x96aef0('0x1cd'),null,'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20.saturation-white\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20-webkit-linear-gradient(to\x20right,\x20#fff,\x20rgba(255,255,255,0));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20linear-gradient(to\x20right,\x20#fff,\x20rgba(255,255,255,0));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20.saturation-black\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20-webkit-linear-gradient(to\x20top,\x20#000,\x20rgba(0,0,0,0));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20linear-gradient(to\x20top,\x20#000,\x20rgba(0,0,0,0));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20'),_0x2beb35[_0x96aef0('0x544')][_0x96aef0('0xd0f')]('div',{'style':_0x3892a2['white'],'className':_0x96aef0('0x964')},_0x2beb35[_0x96aef0('0x544')][_0x96aef0('0xd0f')]('div',{'style':_0x3892a2['black'],'className':'saturation-black'}),_0x2beb35[_0x96aef0('0x544')][_0x96aef0('0xd0f')](_0x96aef0('0x7fc'),{'style':_0x3892a2['pointer']},this[_0x96aef0('0x6e0')][_0x96aef0('0x184')]?_0x2beb35[_0x96aef0('0x544')][_0x96aef0('0xd0f')](this['props'][_0x96aef0('0x184')],this[_0x96aef0('0x6e0')]):_0x2beb35[_0x96aef0('0x544')][_0x96aef0('0xd0f')](_0x96aef0('0x7fc'),{'style':_0x3892a2[_0x96aef0('0x9b5')]}))));}}]),_0x3e5d5d;}(_0x2dbca6[_0x160f7d('0x24')]||_0x2dbca6['Component']);_0x22446f[_0x160f7d('0x544')]=_0x2eb368;},{'../../helpers/saturation':0x167,'lodash/throttle':0x127,'react':_0x404097('0x1041'),'reactcss':0x171}],0x143:[function(_0x271cce,_0x58916e,_0x4961ac){var _0x2a1559=_0x404097;'use strict';Object[_0x2a1559('0xa95')](_0x4961ac,'__esModule',{'value':!0x0}),_0x4961ac[_0x2a1559('0x55f')]=void 0x0;var _0x4f044c=Object[_0x2a1559('0xc7d')]||function(_0x2ddf90){var _0x20232f=_0x2a1559;for(var _0x524dc2=0x1;_0x524dc20.5});return _0x2a01ac[_0x28e915('0x544')]['createElement'](_0x28e915('0x7fc'),{'style':_0x4db52c[_0x28e915('0x18d')]});};_0xc85713[_0x149282('0x544')]=_0x44831f;},{'react':'react','reactcss':0x171}],0x156:[function(_0x331fdd,_0x314d1e,_0x192e66){var _0x4a69d4=_0x404097;'use strict';Object['defineProperty'](_0x192e66,_0x4a69d4('0x114c'),{'value':!0x0}),_0x192e66['PhotoshopPreviews']=void 0x0;var _0x5569a9=_0x5e5d72(_0x331fdd('react')),_0x4a3bee=_0x5e5d72(_0x331fdd(_0x4a69d4('0xc87')));function _0x5e5d72(_0x56b283){var _0x3826d1=_0x4a69d4;return _0x56b283&&_0x56b283[_0x3826d1('0x114c')]?_0x56b283:{'default':_0x56b283};}var _0x42252f=_0x192e66[_0x4a69d4('0xf47')]=function(_0x9d5f80){var _0x416bd9=_0x4a69d4,_0x3839fc=_0x9d5f80[_0x416bd9('0x467')],_0x4984ee=_0x9d5f80['currentColor'],_0x508de3=(0x0,_0x4a3bee[_0x416bd9('0x544')])({'default':{'swatches':{'border':_0x416bd9('0xdd6'),'borderBottom':'1px\x20solid\x20#F0F0F0','marginBottom':_0x416bd9('0x7cb'),'marginTop':'1px'},'new':{'height':_0x416bd9('0xf7c'),'background':_0x416bd9('0x105a')+_0x3839fc['r']+','+_0x3839fc['g']+',\x20'+_0x3839fc['b']+')','boxShadow':_0x416bd9('0xefd')},'current':{'height':_0x416bd9('0xf7c'),'background':_0x4984ee,'boxShadow':_0x416bd9('0xff8')},'label':{'fontSize':_0x416bd9('0x6e3'),'color':_0x416bd9('0xfab'),'textAlign':_0x416bd9('0x1ed')}}});return _0x5569a9[_0x416bd9('0x544')][_0x416bd9('0xd0f')](_0x416bd9('0x7fc'),null,_0x5569a9['default'][_0x416bd9('0xd0f')]('div',{'style':_0x508de3['label']},_0x416bd9('0xbdd')),_0x5569a9[_0x416bd9('0x544')][_0x416bd9('0xd0f')](_0x416bd9('0x7fc'),{'style':_0x508de3[_0x416bd9('0x34d')]},_0x5569a9[_0x416bd9('0x544')][_0x416bd9('0xd0f')](_0x416bd9('0x7fc'),{'style':_0x508de3[_0x416bd9('0xbdd')]}),_0x5569a9[_0x416bd9('0x544')]['createElement'](_0x416bd9('0x7fc'),{'style':_0x508de3[_0x416bd9('0x970')]})),_0x5569a9['default'][_0x416bd9('0xd0f')](_0x416bd9('0x7fc'),{'style':_0x508de3[_0x416bd9('0xf90')]},_0x416bd9('0x970')));};_0x192e66['default']=_0x42252f;},{'react':_0x404097('0x1041'),'reactcss':0x171}],0x157:[function(_0x31cf2c,_0x5cbe45,_0x1e7e24){var _0x138bda=_0x404097;'use strict';Object[_0x138bda('0xa95')](_0x1e7e24,'__esModule',{'value':!0x0}),_0x1e7e24[_0x138bda('0xb8e')]=void 0x0;var _0x2d1af3=Object[_0x138bda('0xc7d')]||function(_0x7be7b9){var _0x1b975f=_0x138bda;for(var _0x44eb44=0x1;_0x44eb440x64&&(_0xea98a4['a']=0x64),_0xea98a4['a']/=0x64,_0x17dd11({'h':_0x419b52['h'],'s':_0x419b52['s'],'l':_0x419b52['l'],'a':_0xea98a4['a'],'source':_0x28f0fa('0x467')},_0x33b1f0));};return _0x2a2727['default'][_0x3a8612('0xd0f')](_0x3a8612('0x7fc'),{'style':_0x5651a4[_0x3a8612('0x3e8')],'className':_0x3a8612('0x7df')},_0x2a2727[_0x3a8612('0x544')]['createElement']('div',{'style':_0x5651a4[_0x3a8612('0x672')]},_0x2a2727[_0x3a8612('0x544')]['createElement'](_0x42d2c8[_0x3a8612('0xaf5')],{'style':{'input':_0x5651a4[_0x3a8612('0x20c')],'label':_0x5651a4[_0x3a8612('0xf90')]},'label':'hex','value':_0x3eb704[_0x3a8612('0x166')]('#',''),'onChange':_0x3f745d})),_0x2a2727[_0x3a8612('0x544')][_0x3a8612('0xd0f')]('div',{'style':_0x5651a4[_0x3a8612('0x2bc')]},_0x2a2727[_0x3a8612('0x544')][_0x3a8612('0xd0f')](_0x42d2c8[_0x3a8612('0xaf5')],{'style':{'input':_0x5651a4[_0x3a8612('0x20c')],'label':_0x5651a4[_0x3a8612('0xf90')]},'label':'r','value':_0x53dd8e['r'],'onChange':_0x3f745d,'dragLabel':_0x3a8612('0xa04'),'dragMax':_0x3a8612('0xdfa')})),_0x2a2727[_0x3a8612('0x544')][_0x3a8612('0xd0f')](_0x3a8612('0x7fc'),{'style':_0x5651a4['single']},_0x2a2727[_0x3a8612('0x544')][_0x3a8612('0xd0f')](_0x42d2c8[_0x3a8612('0xaf5')],{'style':{'input':_0x5651a4[_0x3a8612('0x20c')],'label':_0x5651a4[_0x3a8612('0xf90')]},'label':'g','value':_0x53dd8e['g'],'onChange':_0x3f745d,'dragLabel':_0x3a8612('0xa04'),'dragMax':_0x3a8612('0xdfa')})),_0x2a2727['default']['createElement']('div',{'style':_0x5651a4[_0x3a8612('0x2bc')]},_0x2a2727[_0x3a8612('0x544')][_0x3a8612('0xd0f')](_0x42d2c8[_0x3a8612('0xaf5')],{'style':{'input':_0x5651a4['input'],'label':_0x5651a4['label']},'label':'b','value':_0x53dd8e['b'],'onChange':_0x3f745d,'dragLabel':'true','dragMax':_0x3a8612('0xdfa')})),_0x2a2727[_0x3a8612('0x544')][_0x3a8612('0xd0f')](_0x3a8612('0x7fc'),{'style':_0x5651a4['alpha']},_0x2a2727[_0x3a8612('0x544')][_0x3a8612('0xd0f')](_0x42d2c8[_0x3a8612('0xaf5')],{'style':{'input':_0x5651a4[_0x3a8612('0x20c')],'label':_0x5651a4[_0x3a8612('0xf90')]},'label':'a','value':Math[_0x3a8612('0xbbc')](0x64*_0x53dd8e['a']),'onChange':_0x3f745d,'dragLabel':'true','dragMax':_0x3a8612('0x5e6')})));};_0x4b27b8[_0x5bd73b('0x544')]=_0x9dd7ef;},{'../../helpers/color':0x164,'../common':0x144,'react':'react','reactcss':0x171}],0x159:[function(_0x3b1f79,_0x4037cc,_0x4e3695){var _0x222474=_0x404097;'use strict';Object[_0x222474('0xa95')](_0x4e3695,'__esModule',{'value':!0x0}),_0x4e3695[_0x222474('0xd6d')]=void 0x0;var _0x452cfd=Object['assign']||function(_0xa50b3d){var _0x2eb1d1=_0x222474;for(var _0x1a9588=0x1;_0x1a9588_0x3b41a5?0x1:Math[_0x2ec241('0xbbc')](0x64*_0x2691f6/_0x3b41a5)/0x64,_0x39ddfd['a']!==_0x94c963)return{'h':_0x39ddfd['h'],'s':_0x39ddfd['s'],'l':_0x39ddfd['l'],'a':_0x94c963,'source':'rgb'};}else{var _0xe0936c=void 0x0;if(_0x5c4a7e!==(_0xe0936c=_0x59798f<0x0?0x0:_0x59798f>_0x49931f?0x1:Math[_0x2ec241('0xbbc')](0x64*_0x59798f/_0x49931f)/0x64))return{'h':_0x39ddfd['h'],'s':_0x39ddfd['s'],'l':_0x39ddfd['l'],'a':_0xe0936c,'source':_0x2ec241('0x467')};}return null;};},{}],0x163:[function(_0x55c149,_0x7295ca,_0x2fbb47){var _0x57578c=_0x404097;'use strict';Object[_0x57578c('0xa95')](_0x2fbb47,_0x57578c('0x114c'),{'value':!0x0});var _0x5c2f49={},_0x4c3526=_0x2fbb47[_0x57578c('0x80f')]=function(_0x5adb77,_0x1d50a6,_0x2ded51,_0x463eee){var _0x847422=_0x57578c;if('undefined'==typeof document&&!_0x463eee)return null;var _0xa8a6b8=_0x463eee?new _0x463eee():document[_0x847422('0xd0f')](_0x847422('0xaf3'));_0xa8a6b8['width']=0x2*_0x2ded51,_0xa8a6b8[_0x847422('0x7f0')]=0x2*_0x2ded51;var _0x5f5d2a=_0xa8a6b8['getContext']('2d');return _0x5f5d2a?(_0x5f5d2a[_0x847422('0x472')]=_0x5adb77,_0x5f5d2a[_0x847422('0x10f')](0x0,0x0,_0xa8a6b8[_0x847422('0xa7b')],_0xa8a6b8[_0x847422('0x7f0')]),_0x5f5d2a['fillStyle']=_0x1d50a6,_0x5f5d2a[_0x847422('0x10f')](0x0,0x0,_0x2ded51,_0x2ded51),_0x5f5d2a['translate'](_0x2ded51,_0x2ded51),_0x5f5d2a[_0x847422('0x10f')](0x0,0x0,_0x2ded51,_0x2ded51),_0xa8a6b8[_0x847422('0x8c7')]()):null;};_0x2fbb47[_0x57578c('0x33')]=function(_0x275201,_0x446fdb,_0x5b3750,_0x56ea1e){var _0x46d446=_0x57578c,_0x3e0373=_0x275201+'-'+_0x446fdb+'-'+_0x5b3750+(_0x56ea1e?_0x46d446('0x669'):'');if(_0x5c2f49[_0x3e0373])return _0x5c2f49[_0x3e0373];var _0x3f9bfe=_0x4c3526(_0x275201,_0x446fdb,_0x5b3750,_0x56ea1e);return _0x5c2f49[_0x3e0373]=_0x3f9bfe,_0x3f9bfe;};},{}],0x164:[function(_0x2ce747,_0x5c3157,_0x2f8bfe){var _0x1100aa=_0x404097;'use strict';Object[_0x1100aa('0xa95')](_0x2f8bfe,'__esModule',{'value':!0x0}),_0x2f8bfe[_0x1100aa('0xc08')]=_0x2f8bfe[_0x1100aa('0xcca')]=_0x2f8bfe[_0x1100aa('0xf0b')]=_0x2f8bfe[_0x1100aa('0x2f8')]=_0x2f8bfe[_0x1100aa('0xf5e')]=_0x2f8bfe['simpleCheckForValidColor']=void 0x0;var _0x46ec9b=_0x14dfe3(_0x2ce747(_0x1100aa('0x7e4'))),_0x365e4b=_0x14dfe3(_0x2ce747('tinycolor2'));function _0x14dfe3(_0x5870be){var _0x4053a9=_0x1100aa;return _0x5870be&&_0x5870be[_0x4053a9('0x114c')]?_0x5870be:{'default':_0x5870be};}_0x2f8bfe[_0x1100aa('0x4c1')]=function(_0x4b56d7){var _0x2b53b8=0x0,_0x164ee9=0x0;return(0x0,_0x46ec9b['default'])(['r','g','b','a','h','s','l','v'],function(_0x63ab5a){_0x4b56d7[_0x63ab5a]&&(_0x2b53b8+=0x1,isNaN(_0x4b56d7[_0x63ab5a])||(_0x164ee9+=0x1),'s'===_0x63ab5a||'l'===_0x63ab5a)&&(/^\d+%$/['test'](_0x4b56d7[_0x63ab5a])&&(_0x164ee9+=0x1));}),_0x2b53b8===_0x164ee9&&_0x4b56d7;};var _0x5070cb=_0x2f8bfe[_0x1100aa('0xf5e')]=function(_0x40c0e4,_0x563425){var _0x293dbf=_0x1100aa,_0x35ce23=_0x40c0e4[_0x293dbf('0xf2b')]?(0x0,_0x365e4b[_0x293dbf('0x544')])(_0x40c0e4[_0x293dbf('0xf2b')]):(0x0,_0x365e4b['default'])(_0x40c0e4),_0x259b04=_0x35ce23['toHsl'](),_0x5c7f83=_0x35ce23[_0x293dbf('0x20f')](),_0x5c16c9=_0x35ce23[_0x293dbf('0xa2f')](),_0x5a30a1=_0x35ce23['toHex']();return 0x0===_0x259b04['s']&&(_0x259b04['h']=_0x563425||0x0,_0x5c7f83['h']=_0x563425||0x0),{'hsl':_0x259b04,'hex':_0x293dbf('0x10b1')===_0x5a30a1&&0x0===_0x5c16c9['a']?_0x293dbf('0xdf6'):'#'+_0x5a30a1,'rgb':_0x5c16c9,'hsv':_0x5c7f83,'oldHue':_0x40c0e4['h']||_0x563425||_0x259b04['h'],'source':_0x40c0e4['source']};};_0x2f8bfe[_0x1100aa('0x2f8')]=function(_0xa12f0d){var _0x165d8c=_0x1100aa;if(_0x165d8c('0xdf6')===_0xa12f0d)return!0x0;var _0x35703e='#'===String(_0xa12f0d)['charAt'](0x0)?0x1:0x0;return _0xa12f0d[_0x165d8c('0x525')]!==0x4+_0x35703e&&_0xa12f0d[_0x165d8c('0x525')]<0x7+_0x35703e&&(0x0,_0x365e4b[_0x165d8c('0x544')])(_0xa12f0d)[_0x165d8c('0x1143')]();},_0x2f8bfe['getContrastingColor']=function(_0x21ef3a){var _0x116bb3=_0x1100aa;if(!_0x21ef3a)return _0x116bb3('0xe8b');var _0x3f5d87=_0x5070cb(_0x21ef3a);return _0x116bb3('0xdf6')===_0x3f5d87[_0x116bb3('0xf2b')]?_0x116bb3('0x1188'):(0x12b*_0x3f5d87[_0x116bb3('0x467')]['r']+0x24b*_0x3f5d87[_0x116bb3('0x467')]['g']+0x72*_0x3f5d87[_0x116bb3('0x467')]['b'])/0x3e8>=0x80?_0x116bb3('0xfab'):'#fff';},_0x2f8bfe[_0x1100aa('0xcca')]={'hsl':{'a':0x1,'h':0x0,'l':0.5,'s':0x1},'hex':_0x1100aa('0x1f'),'rgb':{'r':0xff,'g':0x0,'b':0x0,'a':0x1},'hsv':{'h':0x0,'s':0x1,'v':0x1,'a':0x1}},_0x2f8bfe[_0x1100aa('0xc08')]=function(_0x421a4b,_0x3426d3){var _0x3cca09=_0x1100aa,_0x1b037e=_0x421a4b[_0x3cca09('0x166')]('°','');return(0x0,_0x365e4b[_0x3cca09('0x544')])(_0x3426d3+'\x20('+_0x1b037e+')')[_0x3cca09('0xa13')];};},{'lodash/each':0x107,'tinycolor2':0x175}],0x165:[function(_0xd4781,_0x4f5948,_0x291d85){var _0x57fe43=_0x404097;'use strict';Object[_0x57fe43('0xa95')](_0x291d85,_0x57fe43('0x114c'),{'value':!0x0}),_0x291d85[_0x57fe43('0x73a')]=function(_0x3280c8,_0x305c73,_0xd3c767,_0x2c6ab8){var _0x3d3f08=_0x57fe43,_0x2d0254=_0x2c6ab8[_0x3d3f08('0x71a')],_0x267096=_0x2c6ab8[_0x3d3f08('0x1a1')],_0x4756c9=_0x3d3f08('0xd95')==typeof _0x3280c8[_0x3d3f08('0x1022')]?_0x3280c8[_0x3d3f08('0x1022')]:_0x3280c8[_0x3d3f08('0xb19')][0x0]['pageX'],_0x2a0297=_0x3d3f08('0xd95')==typeof _0x3280c8[_0x3d3f08('0xaa5')]?_0x3280c8['pageY']:_0x3280c8['touches'][0x0][_0x3d3f08('0xaa5')],_0x53a3b6=_0x4756c9-(_0x2c6ab8[_0x3d3f08('0xe75')]()[_0x3d3f08('0xbab')]+window[_0x3d3f08('0xbbb')]),_0x118d3c=_0x2a0297-(_0x2c6ab8['getBoundingClientRect']()[_0x3d3f08('0x62d')]+window['pageYOffset']);if(_0x3d3f08('0xd20')===_0x305c73){var _0x57dafb=void 0x0;if(_0x118d3c<0x0)_0x57dafb=0x167;else{if(_0x118d3c>_0x267096)_0x57dafb=0x0;else _0x57dafb=0x168*(-0x64*_0x118d3c/_0x267096+0x64)/0x64;}if(_0xd3c767['h']!==_0x57dafb)return{'h':_0x57dafb,'s':_0xd3c767['s'],'l':_0xd3c767['l'],'a':_0xd3c767['a'],'source':_0x3d3f08('0x41d')};}else{var _0x518ba7=void 0x0;if(_0x53a3b6<0x0)_0x518ba7=0x0;else{if(_0x53a3b6>_0x2d0254)_0x518ba7=0x167;else _0x518ba7=0x168*(0x64*_0x53a3b6/_0x2d0254)/0x64;}if(_0xd3c767['h']!==_0x518ba7)return{'h':_0x518ba7,'s':_0xd3c767['s'],'l':_0xd3c767['l'],'a':_0xd3c767['a'],'source':_0x3d3f08('0x41d')};}return null;};},{}],0x166:[function(_0x309e0c,_0x457602,_0x7bf576){var _0x2eac06=_0x404097;'use strict';Object[_0x2eac06('0xa95')](_0x7bf576,_0x2eac06('0x114c'),{'value':!0x0}),_0x7bf576[_0x2eac06('0x956')]=void 0x0;var _0x3e6c6e,_0x3852b9=Object[_0x2eac06('0xc7d')]||function(_0x4c4dfc){var _0x13d258=_0x2eac06;for(var _0x592e1c=0x1;_0x592e1c0x1&&void 0x0!==arguments[0x1]?arguments[0x1]:_0x2789b7('0xd9');return function(_0x387c11){function _0x2d4e6e(){var _0x381954=_0x3ab6,_0x54fdd0,_0x4a59fe,_0x3bec21;_0x65d11b(this,_0x2d4e6e);for(var _0x56ab5b=arguments[_0x381954('0x525')],_0x2e25fe=Array(_0x56ab5b),_0x231ad7=0x0;_0x231ad7<_0x56ab5b;_0x231ad7++)_0x2e25fe[_0x231ad7]=arguments[_0x231ad7];return _0x4a59fe=_0x3bec21=_0x1e7ada(this,(_0x54fdd0=_0x2d4e6e['__proto__']||Object[_0x381954('0x10c0')](_0x2d4e6e))[_0x381954('0x4b0')]['apply'](_0x54fdd0,[this]['concat'](_0x2e25fe))),_0x3bec21[_0x381954('0xfff')]={'focus':!0x1},_0x3bec21[_0x381954('0x956')]=function(){var _0x4304b8=_0x381954;return _0x3bec21[_0x4304b8('0x32b')]({'focus':!0x0});},_0x3bec21[_0x381954('0xeb9')]=function(){var _0x24d1e1=_0x381954;return _0x3bec21[_0x24d1e1('0x32b')]({'focus':!0x1});},_0x1e7ada(_0x3bec21,_0x4a59fe);}return _0x44c452(_0x2d4e6e,_0x387c11),_0x37faba(_0x2d4e6e,[{'key':'render','value':function(){var _0x217c74=_0x3ab6;return _0x3a3b08['default'][_0x217c74('0xd0f')](_0x10372f,{'onFocus':this['handleFocus'],'onBlur':this[_0x217c74('0xeb9')]},_0x3a3b08[_0x217c74('0x544')][_0x217c74('0xd0f')](_0x23bcb7,_0x3852b9({},this[_0x217c74('0x6e0')],this['state'])));}}]),_0x2d4e6e;}(_0x3a3b08['default'][_0x2789b7('0x346')]);};},{'react':_0x404097('0x1041')}],0x167:[function(_0x3fcd3b,_0x1b0b07,_0x4dc7d3){var _0x411dc2=_0x404097;'use strict';Object[_0x411dc2('0xa95')](_0x4dc7d3,_0x411dc2('0x114c'),{'value':!0x0}),_0x4dc7d3[_0x411dc2('0x73a')]=function(_0x3a6dec,_0x5bed0f,_0xf1a34e){var _0x2017c4=_0x411dc2,_0x276f5f=_0xf1a34e[_0x2017c4('0xe75')](),_0x55481c=_0x276f5f[_0x2017c4('0xa7b')],_0x2a050f=_0x276f5f[_0x2017c4('0x7f0')],_0x3e326f=_0x2017c4('0xd95')==typeof _0x3a6dec[_0x2017c4('0x1022')]?_0x3a6dec[_0x2017c4('0x1022')]:_0x3a6dec[_0x2017c4('0xb19')][0x0][_0x2017c4('0x1022')],_0x553153=_0x2017c4('0xd95')==typeof _0x3a6dec['pageY']?_0x3a6dec['pageY']:_0x3a6dec['touches'][0x0][_0x2017c4('0xaa5')],_0x2b16e5=_0x3e326f-(_0xf1a34e['getBoundingClientRect']()['left']+window[_0x2017c4('0xbbb')]),_0x15e436=_0x553153-(_0xf1a34e['getBoundingClientRect']()[_0x2017c4('0x62d')]+window['pageYOffset']);_0x2b16e5<0x0?_0x2b16e5=0x0:_0x2b16e5>_0x55481c&&(_0x2b16e5=_0x55481c),_0x15e436<0x0?_0x15e436=0x0:_0x15e436>_0x2a050f&&(_0x15e436=_0x2a050f);var _0x32d19d=_0x2b16e5/_0x55481c,_0x1c3407=0x1-_0x15e436/_0x2a050f;return{'h':_0x5bed0f['h'],'s':_0x32d19d,'v':_0x1c3407,'a':_0x5bed0f['a'],'source':_0x2017c4('0x7d8')};};},{}],0x168:[function(_0x4ea024,_0x1eab40,_0x69a2ac){var _0x5b4a6d=_0x404097;'use strict';Object[_0x5b4a6d('0xa95')](_0x69a2ac,_0x5b4a6d('0x114c'),{'value':!0x0}),_0x69a2ac[_0x5b4a6d('0x395')]=_0x69a2ac[_0x5b4a6d('0x1092')]=_0x69a2ac[_0x5b4a6d('0x52b')]=_0x69a2ac[_0x5b4a6d('0xf7d')]=_0x69a2ac[_0x5b4a6d('0x97')]=_0x69a2ac[_0x5b4a6d('0xfb')]=_0x69a2ac[_0x5b4a6d('0xc59')]=_0x69a2ac['MaterialPicker']=_0x69a2ac[_0x5b4a6d('0x58')]=_0x69a2ac[_0x5b4a6d('0x611')]=_0x69a2ac[_0x5b4a6d('0xb6b')]=_0x69a2ac['ChromePicker']=_0x69a2ac[_0x5b4a6d('0x544')]=_0x69a2ac[_0x5b4a6d('0x372')]=_0x69a2ac['BlockPicker']=_0x69a2ac[_0x5b4a6d('0xb23')]=void 0x0;var _0x38a5b8=_0x4ea024(_0x5b4a6d('0x2c7'));Object[_0x5b4a6d('0xa95')](_0x69a2ac,_0x5b4a6d('0xb23'),{'enumerable':!0x0,'get':function(){return _0x117d17(_0x38a5b8)['default'];}});var _0x4f481b=_0x4ea024('./components/block/Block');Object[_0x5b4a6d('0xa95')](_0x69a2ac,_0x5b4a6d('0x4cd'),{'enumerable':!0x0,'get':function(){var _0x70ad6d=_0x5b4a6d;return _0x117d17(_0x4f481b)[_0x70ad6d('0x544')];}});var _0x294e93=_0x4ea024(_0x5b4a6d('0x8fd'));Object[_0x5b4a6d('0xa95')](_0x69a2ac,_0x5b4a6d('0x372'),{'enumerable':!0x0,'get':function(){var _0xc0a990=_0x5b4a6d;return _0x117d17(_0x294e93)[_0xc0a990('0x544')];}});var _0x2b6cc3=_0x4ea024('./components/chrome/Chrome');Object[_0x5b4a6d('0xa95')](_0x69a2ac,_0x5b4a6d('0x201'),{'enumerable':!0x0,'get':function(){var _0x55bdc5=_0x5b4a6d;return _0x117d17(_0x2b6cc3)[_0x55bdc5('0x544')];}});var _0xbd66a9=_0x4ea024(_0x5b4a6d('0x4e'));Object['defineProperty'](_0x69a2ac,'CompactPicker',{'enumerable':!0x0,'get':function(){var _0x11fb92=_0x5b4a6d;return _0x117d17(_0xbd66a9)[_0x11fb92('0x544')];}});var _0x5d14a1=_0x4ea024(_0x5b4a6d('0x608'));Object[_0x5b4a6d('0xa95')](_0x69a2ac,_0x5b4a6d('0x611'),{'enumerable':!0x0,'get':function(){var _0x61b422=_0x5b4a6d;return _0x117d17(_0x5d14a1)[_0x61b422('0x544')];}});var _0x444e4b=_0x4ea024('./components/hue/Hue');Object[_0x5b4a6d('0xa95')](_0x69a2ac,'HuePicker',{'enumerable':!0x0,'get':function(){var _0x59b1ce=_0x5b4a6d;return _0x117d17(_0x444e4b)[_0x59b1ce('0x544')];}});var _0x39a1e0=_0x4ea024(_0x5b4a6d('0x4bd'));Object[_0x5b4a6d('0xa95')](_0x69a2ac,_0x5b4a6d('0x8b2'),{'enumerable':!0x0,'get':function(){var _0x551de6=_0x5b4a6d;return _0x117d17(_0x39a1e0)[_0x551de6('0x544')];}});var _0x5d03d6=_0x4ea024(_0x5b4a6d('0x3bd'));Object['defineProperty'](_0x69a2ac,_0x5b4a6d('0xc59'),{'enumerable':!0x0,'get':function(){var _0x241d0d=_0x5b4a6d;return _0x117d17(_0x5d03d6)[_0x241d0d('0x544')];}});var _0x5a8a9a=_0x4ea024(_0x5b4a6d('0x312'));Object[_0x5b4a6d('0xa95')](_0x69a2ac,_0x5b4a6d('0xfb'),{'enumerable':!0x0,'get':function(){var _0x2a7ea6=_0x5b4a6d;return _0x117d17(_0x5a8a9a)[_0x2a7ea6('0x544')];}});var _0x307fcd=_0x4ea024(_0x5b4a6d('0xb0b'));Object[_0x5b4a6d('0xa95')](_0x69a2ac,'SliderPicker',{'enumerable':!0x0,'get':function(){return _0x117d17(_0x307fcd)['default'];}});var _0x442ea=_0x4ea024(_0x5b4a6d('0x7b2'));Object[_0x5b4a6d('0xa95')](_0x69a2ac,_0x5b4a6d('0xf7d'),{'enumerable':!0x0,'get':function(){var _0x424dd2=_0x5b4a6d;return _0x117d17(_0x442ea)[_0x424dd2('0x544')];}});var _0x14be5c=_0x4ea024(_0x5b4a6d('0x546'));Object[_0x5b4a6d('0xa95')](_0x69a2ac,'TwitterPicker',{'enumerable':!0x0,'get':function(){var _0x21b150=_0x5b4a6d;return _0x117d17(_0x14be5c)[_0x21b150('0x544')];}});var _0x26f62f=_0x4ea024('./components/google/Google');Object['defineProperty'](_0x69a2ac,_0x5b4a6d('0x1092'),{'enumerable':!0x0,'get':function(){var _0x4b3223=_0x5b4a6d;return _0x117d17(_0x26f62f)[_0x4b3223('0x544')];}});var _0x1b4547=_0x4ea024(_0x5b4a6d('0xa98'));Object[_0x5b4a6d('0xa95')](_0x69a2ac,'CustomPicker',{'enumerable':!0x0,'get':function(){var _0x204138=_0x5b4a6d;return _0x117d17(_0x1b4547)[_0x204138('0x544')];}});var _0x4f40ae=_0x117d17(_0x2b6cc3);function _0x117d17(_0x23378c){return _0x23378c&&_0x23378c['__esModule']?_0x23378c:{'default':_0x23378c};}_0x69a2ac[_0x5b4a6d('0x544')]=_0x4f40ae[_0x5b4a6d('0x544')];},{'./components/alpha/Alpha':0x132,'./components/block/Block':0x134,'./components/chrome/Chrome':0x136,'./components/circle/Circle':0x13a,'./components/common/ColorWrap':0x13e,'./components/compact/Compact':0x145,'./components/github/Github':0x148,'./components/google/Google':0x14a,'./components/hue/Hue':0x14e,'./components/material/Material':0x150,'./components/photoshop/Photoshop':0x151,'./components/sketch/Sketch':0x157,'./components/slider/Slider':0x15a,'./components/swatches/Swatches':0x15e,'./components/twitter/Twitter':0x161}],0x169:[function(_0x1d7ad2,_0x2d0d16,_0x446703){var _0x393add=_0x404097;(function(_0xbf4e44){var _0x4c789a=_0x3ab6;/** @license React v16.13.1 + +'use strict'; +/* eslint-disable no-unused-vars */ +var getOwnPropertySymbols = Object.getOwnPropertySymbols; +var hasOwnProperty = Object.prototype.hasOwnProperty; +var propIsEnumerable = Object.prototype.propertyIsEnumerable; + +function toObject(val) { + if (val === null || val === undefined) { + throw new TypeError('Object.assign cannot be called with null or undefined'); + } + + return Object(val); +} + +function shouldUseNative() { + try { + if (!Object.assign) { + return false; + } + + // Detect buggy property enumeration order in older V8 versions. + + // https://bugs.chromium.org/p/v8/issues/detail?id=4118 + var test1 = new String('abc'); // eslint-disable-line no-new-wrappers + test1[5] = 'de'; + if (Object.getOwnPropertyNames(test1)[0] === '5') { + return false; + } + + // https://bugs.chromium.org/p/v8/issues/detail?id=3056 + var test2 = {}; + for (var i = 0; i < 10; i++) { + test2['_' + String.fromCharCode(i)] = i; + } + var order2 = Object.getOwnPropertyNames(test2).map(function (n) { + return test2[n]; + }); + if (order2.join('') !== '0123456789') { + return false; + } + + // https://bugs.chromium.org/p/v8/issues/detail?id=3056 + var test3 = {}; + 'abcdefghijklmnopqrst'.split('').forEach(function (letter) { + test3[letter] = letter; + }); + if (Object.keys(Object.assign({}, test3)).join('') !== + 'abcdefghijklmnopqrst') { + return false; + } + + return true; + } catch (err) { + // We don't expect any of the above to throw, but better to be safe. + return false; + } +} + +module.exports = shouldUseNative() ? Object.assign : function (target, source) { + var from; + var to = toObject(target); + var symbols; + + for (var s = 1; s < arguments.length; s++) { + from = Object(arguments[s]); + + for (var key in from) { + if (hasOwnProperty.call(from, key)) { + to[key] = from[key]; + } + } + + if (getOwnPropertySymbols) { + symbols = getOwnPropertySymbols(from); + for (var i = 0; i < symbols.length; i++) { + if (propIsEnumerable.call(from, symbols[i])) { + to[symbols[i]] = from[symbols[i]]; + } + } + } + } + + return to; +}; + +},{}],301:[function(require,module,exports){ +(function (process){ +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +'use strict'; + +var printWarning = function() {}; + +if (process.env.NODE_ENV !== 'production') { + var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret'); + var loggedTypeFailures = {}; + var has = Function.call.bind(Object.prototype.hasOwnProperty); + + printWarning = function(text) { + var message = 'Warning: ' + text; + if (typeof console !== 'undefined') { + console.error(message); + } + try { + // --- Welcome to debugging React --- + // This error was thrown as a convenience so that you can use this stack + // to find the callsite that caused this warning to fire. + throw new Error(message); + } catch (x) {} + }; +} + +/** + * Assert that the values match with the type specs. + * Error messages are memorized and will only be shown once. + * + * @param {object} typeSpecs Map of name to a ReactPropType + * @param {object} values Runtime values that need to be type-checked + * @param {string} location e.g. "prop", "context", "child context" + * @param {string} componentName Name of the component for error messages. + * @param {?Function} getStack Returns the component stack. + * @private + */ +function checkPropTypes(typeSpecs, values, location, componentName, getStack) { + if (process.env.NODE_ENV !== 'production') { + for (var typeSpecName in typeSpecs) { + if (has(typeSpecs, typeSpecName)) { + var error; + // Prop type validation may throw. In case they do, we don't want to + // fail the render phase where it didn't fail before. So we log it. + // After these have been cleaned up, we'll let them throw. + try { + // This is intentionally an invariant that gets caught. It's the same + // behavior as without this statement except with a better message. + if (typeof typeSpecs[typeSpecName] !== 'function') { + var err = Error( + (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + ); + err.name = 'Invariant Violation'; + throw err; + } + error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret); + } catch (ex) { + error = ex; + } + if (error && !(error instanceof Error)) { + printWarning( + (componentName || 'React class') + ': type specification of ' + + location + ' `' + typeSpecName + '` is invalid; the type checker ' + + 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' + + 'You may have forgotten to pass an argument to the type checker ' + + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + + 'shape all require an argument).' + ); + } + if (error instanceof Error && !(error.message in loggedTypeFailures)) { + // Only monitor this failure once because there tends to be a lot of the + // same error. + loggedTypeFailures[error.message] = true; + + var stack = getStack ? getStack() : ''; + + printWarning( + 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '') + ); + } + } + } + } +} + +/** + * Resets warning cache when testing. + * + * @private + */ +checkPropTypes.resetWarningCache = function() { + if (process.env.NODE_ENV !== 'production') { + loggedTypeFailures = {}; + } +} + +module.exports = checkPropTypes; + +}).call(this,require('_process')) + +},{"./lib/ReactPropTypesSecret":305,"_process":1}],302:[function(require,module,exports){ +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +'use strict'; + +var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret'); + +function emptyFunction() {} +function emptyFunctionWithReset() {} +emptyFunctionWithReset.resetWarningCache = emptyFunction; + +module.exports = function() { + function shim(props, propName, componentName, location, propFullName, secret) { + if (secret === ReactPropTypesSecret) { + // It is still safe when called from React. + return; + } + var err = new Error( + 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' + + 'Use PropTypes.checkPropTypes() to call them. ' + + 'Read more at http://fb.me/use-check-prop-types' + ); + err.name = 'Invariant Violation'; + throw err; + }; + shim.isRequired = shim; + function getShim() { + return shim; + }; + // Important! + // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`. + var ReactPropTypes = { + array: shim, + bool: shim, + func: shim, + number: shim, + object: shim, + string: shim, + symbol: shim, + + any: shim, + arrayOf: getShim, + element: shim, + elementType: shim, + instanceOf: getShim, + node: shim, + objectOf: getShim, + oneOf: getShim, + oneOfType: getShim, + shape: getShim, + exact: getShim, + + checkPropTypes: emptyFunctionWithReset, + resetWarningCache: emptyFunction + }; + + ReactPropTypes.PropTypes = ReactPropTypes; + + return ReactPropTypes; +}; + +},{"./lib/ReactPropTypesSecret":305}],303:[function(require,module,exports){ +(function (process){ +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +'use strict'; + +var ReactIs = require('react-is'); +var assign = require('object-assign'); + +var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret'); +var checkPropTypes = require('./checkPropTypes'); + +var has = Function.call.bind(Object.prototype.hasOwnProperty); +var printWarning = function() {}; + +if (process.env.NODE_ENV !== 'production') { + printWarning = function(text) { + var message = 'Warning: ' + text; + if (typeof console !== 'undefined') { + console.error(message); + } + try { + // --- Welcome to debugging React --- + // This error was thrown as a convenience so that you can use this stack + // to find the callsite that caused this warning to fire. + throw new Error(message); + } catch (x) {} + }; +} + +function emptyFunctionThatReturnsNull() { + return null; +} + +module.exports = function(isValidElement, throwOnDirectAccess) { + /* global Symbol */ + var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator; + var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec. + + /** + * Returns the iterator method function contained on the iterable object. + * + * Be sure to invoke the function with the iterable as context: + * + * var iteratorFn = getIteratorFn(myIterable); + * if (iteratorFn) { + * var iterator = iteratorFn.call(myIterable); + * ... + * } + * + * @param {?object} maybeIterable + * @return {?function} + */ + function getIteratorFn(maybeIterable) { + var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]); + if (typeof iteratorFn === 'function') { + return iteratorFn; + } + } + + /** + * Collection of methods that allow declaration and validation of props that are + * supplied to React components. Example usage: + * + * var Props = require('ReactPropTypes'); + * var MyArticle = React.createClass({ + * propTypes: { + * // An optional string prop named "description". + * description: Props.string, + * + * // A required enum prop named "category". + * category: Props.oneOf(['News','Photos']).isRequired, + * + * // A prop named "dialog" that requires an instance of Dialog. + * dialog: Props.instanceOf(Dialog).isRequired + * }, + * render: function() { ... } + * }); + * + * A more formal specification of how these methods are used: + * + * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...) + * decl := ReactPropTypes.{type}(.isRequired)? + * + * Each and every declaration produces a function with the same signature. This + * allows the creation of custom validation functions. For example: + * + * var MyLink = React.createClass({ + * propTypes: { + * // An optional string or URI prop named "href". + * href: function(props, propName, componentName) { + * var propValue = props[propName]; + * if (propValue != null && typeof propValue !== 'string' && + * !(propValue instanceof URI)) { + * return new Error( + * 'Expected a string or an URI for ' + propName + ' in ' + + * componentName + * ); + * } + * } + * }, + * render: function() {...} + * }); + * + * @internal + */ + + var ANONYMOUS = '<>'; + + // Important! + // Keep this list in sync with production version in `./factoryWithThrowingShims.js`. + var ReactPropTypes = { + array: createPrimitiveTypeChecker('array'), + bool: createPrimitiveTypeChecker('boolean'), + func: createPrimitiveTypeChecker('function'), + number: createPrimitiveTypeChecker('number'), + object: createPrimitiveTypeChecker('object'), + string: createPrimitiveTypeChecker('string'), + symbol: createPrimitiveTypeChecker('symbol'), + + any: createAnyTypeChecker(), + arrayOf: createArrayOfTypeChecker, + element: createElementTypeChecker(), + elementType: createElementTypeTypeChecker(), + instanceOf: createInstanceTypeChecker, + node: createNodeChecker(), + objectOf: createObjectOfTypeChecker, + oneOf: createEnumTypeChecker, + oneOfType: createUnionTypeChecker, + shape: createShapeTypeChecker, + exact: createStrictShapeTypeChecker, + }; + + /** + * inlined Object.is polyfill to avoid requiring consumers ship their own + * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is + */ + /*eslint-disable no-self-compare*/ + function is(x, y) { + // SameValue algorithm + if (x === y) { + // Steps 1-5, 7-10 + // Steps 6.b-6.e: +0 != -0 + return x !== 0 || 1 / x === 1 / y; + } else { + // Step 6.a: NaN == NaN + return x !== x && y !== y; + } + } + /*eslint-enable no-self-compare*/ + + /** + * We use an Error-like object for backward compatibility as people may call + * PropTypes directly and inspect their output. However, we don't use real + * Errors anymore. We don't inspect their stack anyway, and creating them + * is prohibitively expensive if they are created too often, such as what + * happens in oneOfType() for any type before the one that matched. + */ + function PropTypeError(message) { + this.message = message; + this.stack = ''; + } + // Make `instanceof Error` still work for returned errors. + PropTypeError.prototype = Error.prototype; + + function createChainableTypeChecker(validate) { + if (process.env.NODE_ENV !== 'production') { + var manualPropTypeCallCache = {}; + var manualPropTypeWarningCount = 0; + } + function checkType(isRequired, props, propName, componentName, location, propFullName, secret) { + componentName = componentName || ANONYMOUS; + propFullName = propFullName || propName; + + if (secret !== ReactPropTypesSecret) { + if (throwOnDirectAccess) { + // New behavior only for users of `prop-types` package + var err = new Error( + 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' + + 'Use `PropTypes.checkPropTypes()` to call them. ' + + 'Read more at http://fb.me/use-check-prop-types' + ); + err.name = 'Invariant Violation'; + throw err; + } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') { + // Old behavior for people using React.PropTypes + var cacheKey = componentName + ':' + propName; + if ( + !manualPropTypeCallCache[cacheKey] && + // Avoid spamming the console because they are often not actionable except for lib authors + manualPropTypeWarningCount < 3 + ) { + printWarning( + 'You are manually calling a React.PropTypes validation ' + + 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' + + 'and will throw in the standalone `prop-types` package. ' + + 'You may be seeing this warning due to a third-party PropTypes ' + + 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.' + ); + manualPropTypeCallCache[cacheKey] = true; + manualPropTypeWarningCount++; + } + } + } + if (props[propName] == null) { + if (isRequired) { + if (props[propName] === null) { + return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.')); + } + return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.')); + } + return null; + } else { + return validate(props, propName, componentName, location, propFullName); + } + } + + var chainedCheckType = checkType.bind(null, false); + chainedCheckType.isRequired = checkType.bind(null, true); + + return chainedCheckType; + } + + function createPrimitiveTypeChecker(expectedType) { + function validate(props, propName, componentName, location, propFullName, secret) { + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== expectedType) { + // `propValue` being instance of, say, date/regexp, pass the 'object' + // check, but we can offer a more precise error message here rather than + // 'of type `object`'. + var preciseType = getPreciseType(propValue); + + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createAnyTypeChecker() { + return createChainableTypeChecker(emptyFunctionThatReturnsNull); + } + + function createArrayOfTypeChecker(typeChecker) { + function validate(props, propName, componentName, location, propFullName) { + if (typeof typeChecker !== 'function') { + return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.'); + } + var propValue = props[propName]; + if (!Array.isArray(propValue)) { + var propType = getPropType(propValue); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.')); + } + for (var i = 0; i < propValue.length; i++) { + var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret); + if (error instanceof Error) { + return error; + } + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createElementTypeChecker() { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + if (!isValidElement(propValue)) { + var propType = getPropType(propValue); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createElementTypeTypeChecker() { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + if (!ReactIs.isValidElementType(propValue)) { + var propType = getPropType(propValue); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createInstanceTypeChecker(expectedClass) { + function validate(props, propName, componentName, location, propFullName) { + if (!(props[propName] instanceof expectedClass)) { + var expectedClassName = expectedClass.name || ANONYMOUS; + var actualClassName = getClassName(props[propName]); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createEnumTypeChecker(expectedValues) { + if (!Array.isArray(expectedValues)) { + if (process.env.NODE_ENV !== 'production') { + if (arguments.length > 1) { + printWarning( + 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' + + 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).' + ); + } else { + printWarning('Invalid argument supplied to oneOf, expected an array.'); + } + } + return emptyFunctionThatReturnsNull; + } + + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + for (var i = 0; i < expectedValues.length; i++) { + if (is(propValue, expectedValues[i])) { + return null; + } + } + + var valuesString = JSON.stringify(expectedValues, function replacer(key, value) { + var type = getPreciseType(value); + if (type === 'symbol') { + return String(value); + } + return value; + }); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.')); + } + return createChainableTypeChecker(validate); + } + + function createObjectOfTypeChecker(typeChecker) { + function validate(props, propName, componentName, location, propFullName) { + if (typeof typeChecker !== 'function') { + return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.'); + } + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== 'object') { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.')); + } + for (var key in propValue) { + if (has(propValue, key)) { + var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); + if (error instanceof Error) { + return error; + } + } + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createUnionTypeChecker(arrayOfTypeCheckers) { + if (!Array.isArray(arrayOfTypeCheckers)) { + process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0; + return emptyFunctionThatReturnsNull; + } + + for (var i = 0; i < arrayOfTypeCheckers.length; i++) { + var checker = arrayOfTypeCheckers[i]; + if (typeof checker !== 'function') { + printWarning( + 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' + + 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.' + ); + return emptyFunctionThatReturnsNull; + } + } + + function validate(props, propName, componentName, location, propFullName) { + for (var i = 0; i < arrayOfTypeCheckers.length; i++) { + var checker = arrayOfTypeCheckers[i]; + if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) { + return null; + } + } + + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.')); + } + return createChainableTypeChecker(validate); + } + + function createNodeChecker() { + function validate(props, propName, componentName, location, propFullName) { + if (!isNode(props[propName])) { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createShapeTypeChecker(shapeTypes) { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== 'object') { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.')); + } + for (var key in shapeTypes) { + var checker = shapeTypes[key]; + if (!checker) { + continue; + } + var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); + if (error) { + return error; + } + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createStrictShapeTypeChecker(shapeTypes) { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== 'object') { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.')); + } + // We need to check all keys in case some are required but missing from + // props. + var allKeys = assign({}, props[propName], shapeTypes); + for (var key in allKeys) { + var checker = shapeTypes[key]; + if (!checker) { + return new PropTypeError( + 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' + + '\nBad object: ' + JSON.stringify(props[propName], null, ' ') + + '\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ') + ); + } + var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); + if (error) { + return error; + } + } + return null; + } + + return createChainableTypeChecker(validate); + } + + function isNode(propValue) { + switch (typeof propValue) { + case 'number': + case 'string': + case 'undefined': + return true; + case 'boolean': + return !propValue; + case 'object': + if (Array.isArray(propValue)) { + return propValue.every(isNode); + } + if (propValue === null || isValidElement(propValue)) { + return true; + } + + var iteratorFn = getIteratorFn(propValue); + if (iteratorFn) { + var iterator = iteratorFn.call(propValue); + var step; + if (iteratorFn !== propValue.entries) { + while (!(step = iterator.next()).done) { + if (!isNode(step.value)) { + return false; + } + } + } else { + // Iterator will provide entry [k,v] tuples rather than values. + while (!(step = iterator.next()).done) { + var entry = step.value; + if (entry) { + if (!isNode(entry[1])) { + return false; + } + } + } + } + } else { + return false; + } + + return true; + default: + return false; + } + } + + function isSymbol(propType, propValue) { + // Native Symbol. + if (propType === 'symbol') { + return true; + } + + // falsy value can't be a Symbol + if (!propValue) { + return false; + } + + // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol' + if (propValue['@@toStringTag'] === 'Symbol') { + return true; + } + + // Fallback for non-spec compliant Symbols which are polyfilled. + if (typeof Symbol === 'function' && propValue instanceof Symbol) { + return true; + } + + return false; + } + + // Equivalent of `typeof` but with special handling for array and regexp. + function getPropType(propValue) { + var propType = typeof propValue; + if (Array.isArray(propValue)) { + return 'array'; + } + if (propValue instanceof RegExp) { + // Old webkits (at least until Android 4.0) return 'function' rather than + // 'object' for typeof a RegExp. We'll normalize this here so that /bla/ + // passes PropTypes.object. + return 'object'; + } + if (isSymbol(propType, propValue)) { + return 'symbol'; + } + return propType; + } + + // This handles more types than `getPropType`. Only used for error messages. + // See `createPrimitiveTypeChecker`. + function getPreciseType(propValue) { + if (typeof propValue === 'undefined' || propValue === null) { + return '' + propValue; + } + var propType = getPropType(propValue); + if (propType === 'object') { + if (propValue instanceof Date) { + return 'date'; + } else if (propValue instanceof RegExp) { + return 'regexp'; + } + } + return propType; + } + + // Returns a string that is postfixed to a warning about an invalid type. + // For example, "undefined" or "of type array" + function getPostfixForTypeWarning(value) { + var type = getPreciseType(value); + switch (type) { + case 'array': + case 'object': + return 'an ' + type; + case 'boolean': + case 'date': + case 'regexp': + return 'a ' + type; + default: + return type; + } + } + + // Returns class name of the object, if any. + function getClassName(propValue) { + if (!propValue.constructor || !propValue.constructor.name) { + return ANONYMOUS; + } + return propValue.constructor.name; + } + + ReactPropTypes.checkPropTypes = checkPropTypes; + ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache; + ReactPropTypes.PropTypes = ReactPropTypes; + + return ReactPropTypes; +}; + +}).call(this,require('_process')) + +},{"./checkPropTypes":301,"./lib/ReactPropTypesSecret":305,"_process":1,"object-assign":300,"react-is":363}],304:[function(require,module,exports){ +(function (process){ +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +if (process.env.NODE_ENV !== 'production') { + var ReactIs = require('react-is'); + + // By explicitly using `prop-types` you are opting into new development behavior. + // http://fb.me/prop-types-in-prod + var throwOnDirectAccess = true; + module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess); +} else { + // By explicitly using `prop-types` you are opting into new production behavior. + // http://fb.me/prop-types-in-prod + module.exports = require('./factoryWithThrowingShims')(); +} + +}).call(this,require('_process')) + +},{"./factoryWithThrowingShims":302,"./factoryWithTypeCheckers":303,"_process":1,"react-is":363}],305:[function(require,module,exports){ +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +'use strict'; + +var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'; + +module.exports = ReactPropTypesSecret; + +},{}],306:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.AlphaPicker = undefined; + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _common = require('../common'); + +var _AlphaPointer = require('./AlphaPointer'); + +var _AlphaPointer2 = _interopRequireDefault(_AlphaPointer); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var AlphaPicker = exports.AlphaPicker = function AlphaPicker(_ref) { + var rgb = _ref.rgb, + hsl = _ref.hsl, + width = _ref.width, + height = _ref.height, + onChange = _ref.onChange, + direction = _ref.direction, + style = _ref.style, + renderers = _ref.renderers, + pointer = _ref.pointer, + _ref$className = _ref.className, + className = _ref$className === undefined ? '' : _ref$className; + + var styles = (0, _reactcss2.default)({ + 'default': { + picker: { + position: 'relative', + width: width, + height: height + }, + alpha: { + radius: '2px', + style: style + } + } + }); + + return _react2.default.createElement( + 'div', + { style: styles.picker, className: 'alpha-picker ' + className }, + _react2.default.createElement(_common.Alpha, _extends({}, styles.alpha, { + rgb: rgb, + hsl: hsl, + pointer: pointer, + renderers: renderers, + onChange: onChange, + direction: direction + })) + ); +}; + +AlphaPicker.defaultProps = { + width: '316px', + height: '16px', + direction: 'horizontal', + pointer: _AlphaPointer2.default +}; + +exports.default = (0, _common.ColorWrap)(AlphaPicker); +},{"../common":324,"./AlphaPointer":307,"react":"react","reactcss":369}],307:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.AlphaPointer = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var AlphaPointer = exports.AlphaPointer = function AlphaPointer(_ref) { + var direction = _ref.direction; + + var styles = (0, _reactcss2.default)({ + 'default': { + picker: { + width: '18px', + height: '18px', + borderRadius: '50%', + transform: 'translate(-9px, -1px)', + backgroundColor: 'rgb(248, 248, 248)', + boxShadow: '0 1px 4px 0 rgba(0, 0, 0, 0.37)' + } + }, + 'vertical': { + picker: { + transform: 'translate(-3px, -9px)' + } + } + }, { vertical: direction === 'vertical' }); + + return _react2.default.createElement('div', { style: styles.picker }); +}; + +exports.default = AlphaPointer; +},{"react":"react","reactcss":369}],308:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Block = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _propTypes = require('prop-types'); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _merge = require('lodash/merge'); + +var _merge2 = _interopRequireDefault(_merge); + +var _color = require('../../helpers/color'); + +var color = _interopRequireWildcard(_color); + +var _common = require('../common'); + +var _BlockSwatches = require('./BlockSwatches'); + +var _BlockSwatches2 = _interopRequireDefault(_BlockSwatches); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var Block = exports.Block = function Block(_ref) { + var onChange = _ref.onChange, + onSwatchHover = _ref.onSwatchHover, + hex = _ref.hex, + colors = _ref.colors, + width = _ref.width, + triangle = _ref.triangle, + _ref$styles = _ref.styles, + passedStyles = _ref$styles === undefined ? {} : _ref$styles, + _ref$className = _ref.className, + className = _ref$className === undefined ? '' : _ref$className; + + var transparent = hex === 'transparent'; + var handleChange = function handleChange(hexCode, e) { + color.isValidHex(hexCode) && onChange({ + hex: hexCode, + source: 'hex' + }, e); + }; + + var styles = (0, _reactcss2.default)((0, _merge2.default)({ + 'default': { + card: { + width: width, + background: '#fff', + boxShadow: '0 1px rgba(0,0,0,.1)', + borderRadius: '6px', + position: 'relative' + }, + head: { + height: '110px', + background: hex, + borderRadius: '6px 6px 0 0', + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + position: 'relative' + }, + body: { + padding: '10px' + }, + label: { + fontSize: '18px', + color: color.getContrastingColor(hex), + position: 'relative' + }, + triangle: { + width: '0px', + height: '0px', + borderStyle: 'solid', + borderWidth: '0 10px 10px 10px', + borderColor: 'transparent transparent ' + hex + ' transparent', + position: 'absolute', + top: '-10px', + left: '50%', + marginLeft: '-10px' + }, + input: { + width: '100%', + fontSize: '12px', + color: '#666', + border: '0px', + outline: 'none', + height: '22px', + boxShadow: 'inset 0 0 0 1px #ddd', + borderRadius: '4px', + padding: '0 7px', + boxSizing: 'border-box' + } + }, + 'hide-triangle': { + triangle: { + display: 'none' + } + } + }, passedStyles), { 'hide-triangle': triangle === 'hide' }); + + return _react2.default.createElement( + 'div', + { style: styles.card, className: 'block-picker ' + className }, + _react2.default.createElement('div', { style: styles.triangle }), + _react2.default.createElement( + 'div', + { style: styles.head }, + transparent && _react2.default.createElement(_common.Checkboard, { borderRadius: '6px 6px 0 0' }), + _react2.default.createElement( + 'div', + { style: styles.label }, + hex + ) + ), + _react2.default.createElement( + 'div', + { style: styles.body }, + _react2.default.createElement(_BlockSwatches2.default, { colors: colors, onClick: handleChange, onSwatchHover: onSwatchHover }), + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input }, + value: hex, + onChange: handleChange + }) + ) + ); +}; + +Block.propTypes = { + width: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]), + colors: _propTypes2.default.arrayOf(_propTypes2.default.string), + triangle: _propTypes2.default.oneOf(['top', 'hide']), + styles: _propTypes2.default.object +}; + +Block.defaultProps = { + width: 170, + colors: ['#D9E3F0', '#F47373', '#697689', '#37D67A', '#2CCCE4', '#555555', '#dce775', '#ff8a65', '#ba68c8'], + triangle: 'top', + styles: {} +}; + +exports.default = (0, _common.ColorWrap)(Block); +},{"../../helpers/color":356,"../common":324,"./BlockSwatches":309,"lodash/merge":290,"prop-types":304,"react":"react","reactcss":369}],309:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.BlockSwatches = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _map = require('lodash/map'); + +var _map2 = _interopRequireDefault(_map); + +var _common = require('../common'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var BlockSwatches = exports.BlockSwatches = function BlockSwatches(_ref) { + var colors = _ref.colors, + onClick = _ref.onClick, + onSwatchHover = _ref.onSwatchHover; + + var styles = (0, _reactcss2.default)({ + 'default': { + swatches: { + marginRight: '-10px' + }, + swatch: { + width: '22px', + height: '22px', + float: 'left', + marginRight: '10px', + marginBottom: '10px', + borderRadius: '4px' + }, + clear: { + clear: 'both' + } + } + }); + + return _react2.default.createElement( + 'div', + { style: styles.swatches }, + (0, _map2.default)(colors, function (c) { + return _react2.default.createElement(_common.Swatch, { + key: c, + color: c, + style: styles.swatch, + onClick: onClick, + onHover: onSwatchHover, + focusStyle: { + boxShadow: '0 0 4px ' + c + } + }); + }), + _react2.default.createElement('div', { style: styles.clear }) + ); +}; + +exports.default = BlockSwatches; +},{"../common":324,"lodash/map":288,"react":"react","reactcss":369}],310:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Chrome = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _propTypes = require('prop-types'); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _merge = require('lodash/merge'); + +var _merge2 = _interopRequireDefault(_merge); + +var _common = require('../common'); + +var _ChromeFields = require('./ChromeFields'); + +var _ChromeFields2 = _interopRequireDefault(_ChromeFields); + +var _ChromePointer = require('./ChromePointer'); + +var _ChromePointer2 = _interopRequireDefault(_ChromePointer); + +var _ChromePointerCircle = require('./ChromePointerCircle'); + +var _ChromePointerCircle2 = _interopRequireDefault(_ChromePointerCircle); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var Chrome = exports.Chrome = function Chrome(_ref) { + var width = _ref.width, + onChange = _ref.onChange, + disableAlpha = _ref.disableAlpha, + rgb = _ref.rgb, + hsl = _ref.hsl, + hsv = _ref.hsv, + hex = _ref.hex, + renderers = _ref.renderers, + _ref$styles = _ref.styles, + passedStyles = _ref$styles === undefined ? {} : _ref$styles, + _ref$className = _ref.className, + className = _ref$className === undefined ? '' : _ref$className, + defaultView = _ref.defaultView; + + var styles = (0, _reactcss2.default)((0, _merge2.default)({ + 'default': { + picker: { + width: width, + background: '#fff', + borderRadius: '2px', + boxShadow: '0 0 2px rgba(0,0,0,.3), 0 4px 8px rgba(0,0,0,.3)', + boxSizing: 'initial', + fontFamily: 'Menlo' + }, + saturation: { + width: '100%', + paddingBottom: '55%', + position: 'relative', + borderRadius: '2px 2px 0 0', + overflow: 'hidden' + }, + Saturation: { + radius: '2px 2px 0 0' + }, + body: { + padding: '16px 16px 12px' + }, + controls: { + display: 'flex' + }, + color: { + width: '32px' + }, + swatch: { + marginTop: '6px', + width: '16px', + height: '16px', + borderRadius: '8px', + position: 'relative', + overflow: 'hidden' + }, + active: { + absolute: '0px 0px 0px 0px', + borderRadius: '8px', + boxShadow: 'inset 0 0 0 1px rgba(0,0,0,.1)', + background: 'rgba(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ', ' + rgb.a + ')', + zIndex: '2' + }, + toggles: { + flex: '1' + }, + hue: { + height: '10px', + position: 'relative', + marginBottom: '8px' + }, + Hue: { + radius: '2px' + }, + alpha: { + height: '10px', + position: 'relative' + }, + Alpha: { + radius: '2px' + } + }, + 'disableAlpha': { + color: { + width: '22px' + }, + alpha: { + display: 'none' + }, + hue: { + marginBottom: '0px' + }, + swatch: { + width: '10px', + height: '10px', + marginTop: '0px' + } + } + }, passedStyles), { disableAlpha: disableAlpha }); + + return _react2.default.createElement( + 'div', + { style: styles.picker, className: 'chrome-picker ' + className }, + _react2.default.createElement( + 'div', + { style: styles.saturation }, + _react2.default.createElement(_common.Saturation, { + style: styles.Saturation, + hsl: hsl, + hsv: hsv, + pointer: _ChromePointerCircle2.default, + onChange: onChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.body }, + _react2.default.createElement( + 'div', + { style: styles.controls, className: 'flexbox-fix' }, + _react2.default.createElement( + 'div', + { style: styles.color }, + _react2.default.createElement( + 'div', + { style: styles.swatch }, + _react2.default.createElement('div', { style: styles.active }), + _react2.default.createElement(_common.Checkboard, { renderers: renderers }) + ) + ), + _react2.default.createElement( + 'div', + { style: styles.toggles }, + _react2.default.createElement( + 'div', + { style: styles.hue }, + _react2.default.createElement(_common.Hue, { + style: styles.Hue, + hsl: hsl, + pointer: _ChromePointer2.default, + onChange: onChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.alpha }, + _react2.default.createElement(_common.Alpha, { + style: styles.Alpha, + rgb: rgb, + hsl: hsl, + pointer: _ChromePointer2.default, + renderers: renderers, + onChange: onChange + }) + ) + ) + ), + _react2.default.createElement(_ChromeFields2.default, { + rgb: rgb, + hsl: hsl, + hex: hex, + view: defaultView, + onChange: onChange, + disableAlpha: disableAlpha + }) + ) + ); +}; + +Chrome.propTypes = { + width: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]), + disableAlpha: _propTypes2.default.bool, + styles: _propTypes2.default.object, + defaultView: _propTypes2.default.oneOf(["hex", "rgb", "hsl"]) +}; + +Chrome.defaultProps = { + width: 225, + disableAlpha: false, + styles: {} +}; + +exports.default = (0, _common.ColorWrap)(Chrome); +},{"../common":324,"./ChromeFields":311,"./ChromePointer":312,"./ChromePointerCircle":313,"lodash/merge":290,"prop-types":304,"react":"react","reactcss":369}],311:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ChromeFields = undefined; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _color = require('../../helpers/color'); + +var color = _interopRequireWildcard(_color); + +var _isUndefined = require('lodash/isUndefined'); + +var _isUndefined2 = _interopRequireDefault(_isUndefined); + +var _common = require('../common'); + +var _UnfoldMoreHorizontalIcon = require('@icons/material/UnfoldMoreHorizontalIcon'); + +var _UnfoldMoreHorizontalIcon2 = _interopRequireDefault(_UnfoldMoreHorizontalIcon); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /* eslint-disable react/no-did-mount-set-state, no-param-reassign */ + +var ChromeFields = exports.ChromeFields = function (_React$Component) { + _inherits(ChromeFields, _React$Component); + + function ChromeFields(props) { + _classCallCheck(this, ChromeFields); + + var _this = _possibleConstructorReturn(this, (ChromeFields.__proto__ || Object.getPrototypeOf(ChromeFields)).call(this)); + + _this.toggleViews = function () { + if (_this.state.view === 'hex') { + _this.setState({ view: 'rgb' }); + } else if (_this.state.view === 'rgb') { + _this.setState({ view: 'hsl' }); + } else if (_this.state.view === 'hsl') { + if (_this.props.hsl.a === 1) { + _this.setState({ view: 'hex' }); + } else { + _this.setState({ view: 'rgb' }); + } + } + }; + + _this.handleChange = function (data, e) { + if (data.hex) { + color.isValidHex(data.hex) && _this.props.onChange({ + hex: data.hex, + source: 'hex' + }, e); + } else if (data.r || data.g || data.b) { + _this.props.onChange({ + r: data.r || _this.props.rgb.r, + g: data.g || _this.props.rgb.g, + b: data.b || _this.props.rgb.b, + source: 'rgb' + }, e); + } else if (data.a) { + if (data.a < 0) { + data.a = 0; + } else if (data.a > 1) { + data.a = 1; + } + + _this.props.onChange({ + h: _this.props.hsl.h, + s: _this.props.hsl.s, + l: _this.props.hsl.l, + a: Math.round(data.a * 100) / 100, + source: 'rgb' + }, e); + } else if (data.h || data.s || data.l) { + // Remove any occurances of '%'. + if (typeof data.s === 'string' && data.s.includes('%')) { + data.s = data.s.replace('%', ''); + } + if (typeof data.l === 'string' && data.l.includes('%')) { + data.l = data.l.replace('%', ''); + } + + // We store HSL as a unit interval so we need to override the 1 input to 0.01 + if (data.s == 1) { + data.s = 0.01; + } else if (data.l == 1) { + data.l = 0.01; + } + + _this.props.onChange({ + h: data.h || _this.props.hsl.h, + s: Number(!(0, _isUndefined2.default)(data.s) ? data.s : _this.props.hsl.s), + l: Number(!(0, _isUndefined2.default)(data.l) ? data.l : _this.props.hsl.l), + source: 'hsl' + }, e); + } + }; + + _this.showHighlight = function (e) { + e.currentTarget.style.background = '#eee'; + }; + + _this.hideHighlight = function (e) { + e.currentTarget.style.background = 'transparent'; + }; + + if (props.hsl.a !== 1 && props.view === "hex") { + _this.state = { + view: "rgb" + }; + } else { + _this.state = { + view: props.view + }; + } + return _this; + } + + _createClass(ChromeFields, [{ + key: 'render', + value: function render() { + var _this2 = this; + + var styles = (0, _reactcss2.default)({ + 'default': { + wrap: { + paddingTop: '16px', + display: 'flex' + }, + fields: { + flex: '1', + display: 'flex', + marginLeft: '-6px' + }, + field: { + paddingLeft: '6px', + width: '100%' + }, + alpha: { + paddingLeft: '6px', + width: '100%' + }, + toggle: { + width: '32px', + textAlign: 'right', + position: 'relative' + }, + icon: { + marginRight: '-4px', + marginTop: '12px', + cursor: 'pointer', + position: 'relative' + }, + iconHighlight: { + position: 'absolute', + width: '24px', + height: '28px', + background: '#eee', + borderRadius: '4px', + top: '10px', + left: '12px', + display: 'none' + }, + input: { + fontSize: '11px', + color: '#333', + width: '100%', + borderRadius: '2px', + border: 'none', + boxShadow: 'inset 0 0 0 1px #dadada', + height: '21px', + textAlign: 'center' + }, + label: { + textTransform: 'uppercase', + fontSize: '11px', + lineHeight: '11px', + color: '#969696', + textAlign: 'center', + display: 'block', + marginTop: '12px' + }, + svg: { + fill: '#333', + width: '24px', + height: '24px', + border: '1px transparent solid', + borderRadius: '5px' + } + }, + 'disableAlpha': { + alpha: { + display: 'none' + } + } + }, this.props, this.state); + + var fields = void 0; + if (this.state.view === 'hex') { + fields = _react2.default.createElement( + 'div', + { style: styles.fields, className: 'flexbox-fix' }, + _react2.default.createElement( + 'div', + { style: styles.field }, + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input, label: styles.label }, + label: 'hex', value: this.props.hex, + onChange: this.handleChange + }) + ) + ); + } else if (this.state.view === 'rgb') { + fields = _react2.default.createElement( + 'div', + { style: styles.fields, className: 'flexbox-fix' }, + _react2.default.createElement( + 'div', + { style: styles.field }, + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input, label: styles.label }, + label: 'r', + value: this.props.rgb.r, + onChange: this.handleChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.field }, + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input, label: styles.label }, + label: 'g', + value: this.props.rgb.g, + onChange: this.handleChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.field }, + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input, label: styles.label }, + label: 'b', + value: this.props.rgb.b, + onChange: this.handleChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.alpha }, + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input, label: styles.label }, + label: 'a', + value: this.props.rgb.a, + arrowOffset: 0.01, + onChange: this.handleChange + }) + ) + ); + } else if (this.state.view === 'hsl') { + fields = _react2.default.createElement( + 'div', + { style: styles.fields, className: 'flexbox-fix' }, + _react2.default.createElement( + 'div', + { style: styles.field }, + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input, label: styles.label }, + label: 'h', + value: Math.round(this.props.hsl.h), + onChange: this.handleChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.field }, + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input, label: styles.label }, + label: 's', + value: Math.round(this.props.hsl.s * 100) + '%', + onChange: this.handleChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.field }, + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input, label: styles.label }, + label: 'l', + value: Math.round(this.props.hsl.l * 100) + '%', + onChange: this.handleChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.alpha }, + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input, label: styles.label }, + label: 'a', + value: this.props.hsl.a, + arrowOffset: 0.01, + onChange: this.handleChange + }) + ) + ); + } + + return _react2.default.createElement( + 'div', + { style: styles.wrap, className: 'flexbox-fix' }, + fields, + _react2.default.createElement( + 'div', + { style: styles.toggle }, + _react2.default.createElement( + 'div', + { style: styles.icon, onClick: this.toggleViews, ref: function ref(icon) { + return _this2.icon = icon; + } }, + _react2.default.createElement(_UnfoldMoreHorizontalIcon2.default, { + style: styles.svg, + onMouseOver: this.showHighlight, + onMouseEnter: this.showHighlight, + onMouseOut: this.hideHighlight + }) + ) + ) + ); + } + }], [{ + key: 'getDerivedStateFromProps', + value: function getDerivedStateFromProps(nextProps, state) { + if (nextProps.hsl.a !== 1 && state.view === 'hex') { + return { view: 'rgb' }; + } + return null; + } + }]); + + return ChromeFields; +}(_react2.default.Component); + +ChromeFields.defaultProps = { + view: "hex" +}; + +exports.default = ChromeFields; +},{"../../helpers/color":356,"../common":324,"@icons/material/UnfoldMoreHorizontalIcon":87,"lodash/isUndefined":285,"react":"react","reactcss":369}],312:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ChromePointer = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var ChromePointer = exports.ChromePointer = function ChromePointer() { + var styles = (0, _reactcss2.default)({ + 'default': { + picker: { + width: '12px', + height: '12px', + borderRadius: '6px', + transform: 'translate(-6px, -1px)', + backgroundColor: 'rgb(248, 248, 248)', + boxShadow: '0 1px 4px 0 rgba(0, 0, 0, 0.37)' + } + } + }); + + return _react2.default.createElement('div', { style: styles.picker }); +}; + +exports.default = ChromePointer; +},{"react":"react","reactcss":369}],313:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ChromePointerCircle = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var ChromePointerCircle = exports.ChromePointerCircle = function ChromePointerCircle() { + var styles = (0, _reactcss2.default)({ + 'default': { + picker: { + width: '12px', + height: '12px', + borderRadius: '6px', + boxShadow: 'inset 0 0 0 1px #fff', + transform: 'translate(-6px, -6px)' + } + } + }); + + return _react2.default.createElement('div', { style: styles.picker }); +}; + +exports.default = ChromePointerCircle; +},{"react":"react","reactcss":369}],314:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Circle = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _propTypes = require('prop-types'); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _map = require('lodash/map'); + +var _map2 = _interopRequireDefault(_map); + +var _merge = require('lodash/merge'); + +var _merge2 = _interopRequireDefault(_merge); + +var _materialColors = require('material-colors'); + +var material = _interopRequireWildcard(_materialColors); + +var _common = require('../common'); + +var _CircleSwatch = require('./CircleSwatch'); + +var _CircleSwatch2 = _interopRequireDefault(_CircleSwatch); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var Circle = exports.Circle = function Circle(_ref) { + var width = _ref.width, + onChange = _ref.onChange, + onSwatchHover = _ref.onSwatchHover, + colors = _ref.colors, + hex = _ref.hex, + circleSize = _ref.circleSize, + _ref$styles = _ref.styles, + passedStyles = _ref$styles === undefined ? {} : _ref$styles, + circleSpacing = _ref.circleSpacing, + _ref$className = _ref.className, + className = _ref$className === undefined ? '' : _ref$className; + + var styles = (0, _reactcss2.default)((0, _merge2.default)({ + 'default': { + card: { + width: width, + display: 'flex', + flexWrap: 'wrap', + marginRight: -circleSpacing, + marginBottom: -circleSpacing + } + } + }, passedStyles)); + + var handleChange = function handleChange(hexCode, e) { + return onChange({ hex: hexCode, source: 'hex' }, e); + }; + + return _react2.default.createElement( + 'div', + { style: styles.card, className: 'circle-picker ' + className }, + (0, _map2.default)(colors, function (c) { + return _react2.default.createElement(_CircleSwatch2.default, { + key: c, + color: c, + onClick: handleChange, + onSwatchHover: onSwatchHover, + active: hex === c.toLowerCase(), + circleSize: circleSize, + circleSpacing: circleSpacing + }); + }) + ); +}; + +Circle.propTypes = { + width: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]), + circleSize: _propTypes2.default.number, + circleSpacing: _propTypes2.default.number, + styles: _propTypes2.default.object +}; + +Circle.defaultProps = { + width: 252, + circleSize: 28, + circleSpacing: 14, + colors: [material.red['500'], material.pink['500'], material.purple['500'], material.deepPurple['500'], material.indigo['500'], material.blue['500'], material.lightBlue['500'], material.cyan['500'], material.teal['500'], material.green['500'], material.lightGreen['500'], material.lime['500'], material.yellow['500'], material.amber['500'], material.orange['500'], material.deepOrange['500'], material.brown['500'], material.blueGrey['500']], + styles: {} +}; + +exports.default = (0, _common.ColorWrap)(Circle); +},{"../common":324,"./CircleSwatch":315,"lodash/map":288,"lodash/merge":290,"material-colors":299,"prop-types":304,"react":"react","reactcss":369}],315:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.CircleSwatch = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _common = require('../common'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var CircleSwatch = exports.CircleSwatch = function CircleSwatch(_ref) { + var color = _ref.color, + onClick = _ref.onClick, + onSwatchHover = _ref.onSwatchHover, + hover = _ref.hover, + active = _ref.active, + circleSize = _ref.circleSize, + circleSpacing = _ref.circleSpacing; + + var styles = (0, _reactcss2.default)({ + 'default': { + swatch: { + width: circleSize, + height: circleSize, + marginRight: circleSpacing, + marginBottom: circleSpacing, + transform: 'scale(1)', + transition: '100ms transform ease' + }, + Swatch: { + borderRadius: '50%', + background: 'transparent', + boxShadow: 'inset 0 0 0 ' + (circleSize / 2 + 1) + 'px ' + color, + transition: '100ms box-shadow ease' + } + }, + 'hover': { + swatch: { + transform: 'scale(1.2)' + } + }, + 'active': { + Swatch: { + boxShadow: 'inset 0 0 0 3px ' + color + } + } + }, { hover: hover, active: active }); + + return _react2.default.createElement( + 'div', + { style: styles.swatch }, + _react2.default.createElement(_common.Swatch, { + style: styles.Swatch, + color: color, + onClick: onClick, + onHover: onSwatchHover, + focusStyle: { boxShadow: styles.Swatch.boxShadow + ', 0 0 5px ' + color } + }) + ); +}; + +CircleSwatch.defaultProps = { + circleSize: 28, + circleSpacing: 14 +}; + +exports.default = (0, _reactcss.handleHover)(CircleSwatch); +},{"../common":324,"react":"react","reactcss":369}],316:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Alpha = undefined; + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _alpha = require('../../helpers/alpha'); + +var alpha = _interopRequireWildcard(_alpha); + +var _Checkboard = require('./Checkboard'); + +var _Checkboard2 = _interopRequireDefault(_Checkboard); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var Alpha = exports.Alpha = function (_ref) { + _inherits(Alpha, _ref); + + function Alpha() { + var _ref2; + + var _temp, _this, _ret; + + _classCallCheck(this, Alpha); + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref2 = Alpha.__proto__ || Object.getPrototypeOf(Alpha)).call.apply(_ref2, [this].concat(args))), _this), _this.handleChange = function (e) { + var change = alpha.calculateChange(e, _this.props.hsl, _this.props.direction, _this.props.a, _this.container); + change && typeof _this.props.onChange === 'function' && _this.props.onChange(change, e); + }, _this.handleMouseDown = function (e) { + _this.handleChange(e); + window.addEventListener('mousemove', _this.handleChange); + window.addEventListener('mouseup', _this.handleMouseUp); + }, _this.handleMouseUp = function () { + _this.unbindEventListeners(); + }, _this.unbindEventListeners = function () { + window.removeEventListener('mousemove', _this.handleChange); + window.removeEventListener('mouseup', _this.handleMouseUp); + }, _temp), _possibleConstructorReturn(_this, _ret); + } + + _createClass(Alpha, [{ + key: 'componentWillUnmount', + value: function componentWillUnmount() { + this.unbindEventListeners(); + } + }, { + key: 'render', + value: function render() { + var _this2 = this; + + var rgb = this.props.rgb; + var styles = (0, _reactcss2.default)({ + 'default': { + alpha: { + absolute: '0px 0px 0px 0px', + borderRadius: this.props.radius + }, + checkboard: { + absolute: '0px 0px 0px 0px', + overflow: 'hidden', + borderRadius: this.props.radius + }, + gradient: { + absolute: '0px 0px 0px 0px', + background: 'linear-gradient(to right, rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ', 0) 0%,\n rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ', 1) 100%)', + boxShadow: this.props.shadow, + borderRadius: this.props.radius + }, + container: { + position: 'relative', + height: '100%', + margin: '0 3px' + }, + pointer: { + position: 'absolute', + left: rgb.a * 100 + '%' + }, + slider: { + width: '4px', + borderRadius: '1px', + height: '8px', + boxShadow: '0 0 2px rgba(0, 0, 0, .6)', + background: '#fff', + marginTop: '1px', + transform: 'translateX(-2px)' + } + }, + 'vertical': { + gradient: { + background: 'linear-gradient(to bottom, rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ', 0) 0%,\n rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ', 1) 100%)' + }, + pointer: { + left: 0, + top: rgb.a * 100 + '%' + } + }, + 'overwrite': _extends({}, this.props.style) + }, { + vertical: this.props.direction === 'vertical', + overwrite: true + }); + + return _react2.default.createElement( + 'div', + { style: styles.alpha }, + _react2.default.createElement( + 'div', + { style: styles.checkboard }, + _react2.default.createElement(_Checkboard2.default, { renderers: this.props.renderers }) + ), + _react2.default.createElement('div', { style: styles.gradient }), + _react2.default.createElement( + 'div', + { + style: styles.container, + ref: function ref(container) { + return _this2.container = container; + }, + onMouseDown: this.handleMouseDown, + onTouchMove: this.handleChange, + onTouchStart: this.handleChange + }, + _react2.default.createElement( + 'div', + { style: styles.pointer }, + this.props.pointer ? _react2.default.createElement(this.props.pointer, this.props) : _react2.default.createElement('div', { style: styles.slider }) + ) + ) + ); + } + }]); + + return Alpha; +}(_react.PureComponent || _react.Component); + +exports.default = Alpha; +},{"../../helpers/alpha":354,"./Checkboard":317,"react":"react","reactcss":369}],317:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Checkboard = undefined; + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _checkboard = require('../../helpers/checkboard'); + +var checkboard = _interopRequireWildcard(_checkboard); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var Checkboard = exports.Checkboard = function Checkboard(_ref) { + var white = _ref.white, + grey = _ref.grey, + size = _ref.size, + renderers = _ref.renderers, + borderRadius = _ref.borderRadius, + boxShadow = _ref.boxShadow, + children = _ref.children; + + var styles = (0, _reactcss2.default)({ + 'default': { + grid: { + borderRadius: borderRadius, + boxShadow: boxShadow, + absolute: '0px 0px 0px 0px', + background: 'url(' + checkboard.get(white, grey, size, renderers.canvas) + ') center left' + } + } + }); + return (0, _react.isValidElement)(children) ? _react2.default.cloneElement(children, _extends({}, children.props, { style: _extends({}, children.props.style, styles.grid) })) : _react2.default.createElement('div', { style: styles.grid }); +}; + +Checkboard.defaultProps = { + size: 8, + white: 'transparent', + grey: 'rgba(0,0,0,.08)', + renderers: {} +}; + +exports.default = Checkboard; +},{"../../helpers/checkboard":355,"react":"react","reactcss":369}],318:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ColorWrap = undefined; + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _debounce = require('lodash/debounce'); + +var _debounce2 = _interopRequireDefault(_debounce); + +var _color = require('../../helpers/color'); + +var color = _interopRequireWildcard(_color); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var ColorWrap = exports.ColorWrap = function ColorWrap(Picker) { + var ColorPicker = function (_ref) { + _inherits(ColorPicker, _ref); + + function ColorPicker(props) { + _classCallCheck(this, ColorPicker); + + var _this = _possibleConstructorReturn(this, (ColorPicker.__proto__ || Object.getPrototypeOf(ColorPicker)).call(this)); + + _this.handleChange = function (data, event) { + var isValidColor = color.simpleCheckForValidColor(data); + if (isValidColor) { + var colors = color.toState(data, data.h || _this.state.oldHue); + _this.setState(colors); + _this.props.onChangeComplete && _this.debounce(_this.props.onChangeComplete, colors, event); + _this.props.onChange && _this.props.onChange(colors, event); + } + }; + + _this.handleSwatchHover = function (data, event) { + var isValidColor = color.simpleCheckForValidColor(data); + if (isValidColor) { + var colors = color.toState(data, data.h || _this.state.oldHue); + _this.props.onSwatchHover && _this.props.onSwatchHover(colors, event); + } + }; + + _this.state = _extends({}, color.toState(props.color, 0)); + + _this.debounce = (0, _debounce2.default)(function (fn, data, event) { + fn(data, event); + }, 100); + return _this; + } + + _createClass(ColorPicker, [{ + key: 'render', + value: function render() { + var optionalEvents = {}; + if (this.props.onSwatchHover) { + optionalEvents.onSwatchHover = this.handleSwatchHover; + } + + return _react2.default.createElement(Picker, _extends({}, this.props, this.state, { + onChange: this.handleChange + }, optionalEvents)); + } + }], [{ + key: 'getDerivedStateFromProps', + value: function getDerivedStateFromProps(nextProps, state) { + return _extends({}, color.toState(nextProps.color, state.oldHue)); + } + }]); + + return ColorPicker; + }(_react.PureComponent || _react.Component); + + ColorPicker.propTypes = _extends({}, Picker.propTypes); + + ColorPicker.defaultProps = _extends({}, Picker.defaultProps, { + color: { + h: 250, + s: 0.50, + l: 0.20, + a: 1 + } + }); + + return ColorPicker; +}; + +exports.default = ColorWrap; +},{"../../helpers/color":356,"lodash/debounce":262,"react":"react"}],319:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.EditableInput = undefined; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var DEFAULT_ARROW_OFFSET = 1; + +var UP_KEY_CODE = 38; +var DOWN_KEY_CODE = 40; +var VALID_KEY_CODES = [UP_KEY_CODE, DOWN_KEY_CODE]; +var isValidKeyCode = function isValidKeyCode(keyCode) { + return VALID_KEY_CODES.indexOf(keyCode) > -1; +}; +var getNumberValue = function getNumberValue(value) { + return Number(String(value).replace(/%/g, '')); +}; + +var idCounter = 1; + +var EditableInput = exports.EditableInput = function (_ref) { + _inherits(EditableInput, _ref); + + function EditableInput(props) { + _classCallCheck(this, EditableInput); + + var _this = _possibleConstructorReturn(this, (EditableInput.__proto__ || Object.getPrototypeOf(EditableInput)).call(this)); + + _this.handleBlur = function () { + if (_this.state.blurValue) { + _this.setState({ value: _this.state.blurValue, blurValue: null }); + } + }; + + _this.handleChange = function (e) { + _this.setUpdatedValue(e.target.value, e); + }; + + _this.handleKeyDown = function (e) { + // In case `e.target.value` is a percentage remove the `%` character + // and update accordingly with a percentage + // https://github.com/casesandberg/react-color/issues/383 + var value = getNumberValue(e.target.value); + if (!isNaN(value) && isValidKeyCode(e.keyCode)) { + var offset = _this.getArrowOffset(); + var updatedValue = e.keyCode === UP_KEY_CODE ? value + offset : value - offset; + + _this.setUpdatedValue(updatedValue, e); + } + }; + + _this.handleDrag = function (e) { + if (_this.props.dragLabel) { + var newValue = Math.round(_this.props.value + e.movementX); + if (newValue >= 0 && newValue <= _this.props.dragMax) { + _this.props.onChange && _this.props.onChange(_this.getValueObjectWithLabel(newValue), e); + } + } + }; + + _this.handleMouseDown = function (e) { + if (_this.props.dragLabel) { + e.preventDefault(); + _this.handleDrag(e); + window.addEventListener('mousemove', _this.handleDrag); + window.addEventListener('mouseup', _this.handleMouseUp); + } + }; + + _this.handleMouseUp = function () { + _this.unbindEventListeners(); + }; + + _this.unbindEventListeners = function () { + window.removeEventListener('mousemove', _this.handleDrag); + window.removeEventListener('mouseup', _this.handleMouseUp); + }; + + _this.state = { + value: String(props.value).toUpperCase(), + blurValue: String(props.value).toUpperCase() + }; + + _this.inputId = 'rc-editable-input-' + idCounter++; + return _this; + } + + _createClass(EditableInput, [{ + key: 'componentDidUpdate', + value: function componentDidUpdate(prevProps, prevState) { + if (this.props.value !== this.state.value && (prevProps.value !== this.props.value || prevState.value !== this.state.value)) { + if (this.input === document.activeElement) { + this.setState({ blurValue: String(this.props.value).toUpperCase() }); + } else { + this.setState({ value: String(this.props.value).toUpperCase(), blurValue: !this.state.blurValue && String(this.props.value).toUpperCase() }); + } + } + } + }, { + key: 'componentWillUnmount', + value: function componentWillUnmount() { + this.unbindEventListeners(); + } + }, { + key: 'getValueObjectWithLabel', + value: function getValueObjectWithLabel(value) { + return _defineProperty({}, this.props.label, value); + } + }, { + key: 'getArrowOffset', + value: function getArrowOffset() { + return this.props.arrowOffset || DEFAULT_ARROW_OFFSET; + } + }, { + key: 'setUpdatedValue', + value: function setUpdatedValue(value, e) { + var onChangeValue = this.props.label ? this.getValueObjectWithLabel(value) : value; + this.props.onChange && this.props.onChange(onChangeValue, e); + + this.setState({ value: value }); + } + }, { + key: 'render', + value: function render() { + var _this2 = this; + + var styles = (0, _reactcss2.default)({ + 'default': { + wrap: { + position: 'relative' + } + }, + 'user-override': { + wrap: this.props.style && this.props.style.wrap ? this.props.style.wrap : {}, + input: this.props.style && this.props.style.input ? this.props.style.input : {}, + label: this.props.style && this.props.style.label ? this.props.style.label : {} + }, + 'dragLabel-true': { + label: { + cursor: 'ew-resize' + } + } + }, { + 'user-override': true + }, this.props); + + return _react2.default.createElement( + 'div', + { style: styles.wrap }, + _react2.default.createElement('input', { + id: this.inputId, + style: styles.input, + ref: function ref(input) { + return _this2.input = input; + }, + value: this.state.value, + onKeyDown: this.handleKeyDown, + onChange: this.handleChange, + onBlur: this.handleBlur, + placeholder: this.props.placeholder, + spellCheck: 'false' + }), + this.props.label && !this.props.hideLabel ? _react2.default.createElement( + 'label', + { + htmlFor: this.inputId, + style: styles.label, + onMouseDown: this.handleMouseDown + }, + this.props.label + ) : null + ); + } + }]); + + return EditableInput; +}(_react.PureComponent || _react.Component); + +exports.default = EditableInput; +},{"react":"react","reactcss":369}],320:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Hue = undefined; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _hue = require('../../helpers/hue'); + +var hue = _interopRequireWildcard(_hue); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var Hue = exports.Hue = function (_ref) { + _inherits(Hue, _ref); + + function Hue() { + var _ref2; + + var _temp, _this, _ret; + + _classCallCheck(this, Hue); + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref2 = Hue.__proto__ || Object.getPrototypeOf(Hue)).call.apply(_ref2, [this].concat(args))), _this), _this.handleChange = function (e) { + var change = hue.calculateChange(e, _this.props.direction, _this.props.hsl, _this.container); + change && typeof _this.props.onChange === 'function' && _this.props.onChange(change, e); + }, _this.handleMouseDown = function (e) { + _this.handleChange(e); + window.addEventListener('mousemove', _this.handleChange); + window.addEventListener('mouseup', _this.handleMouseUp); + }, _this.handleMouseUp = function () { + _this.unbindEventListeners(); + }, _temp), _possibleConstructorReturn(_this, _ret); + } + + _createClass(Hue, [{ + key: 'componentWillUnmount', + value: function componentWillUnmount() { + this.unbindEventListeners(); + } + }, { + key: 'unbindEventListeners', + value: function unbindEventListeners() { + window.removeEventListener('mousemove', this.handleChange); + window.removeEventListener('mouseup', this.handleMouseUp); + } + }, { + key: 'render', + value: function render() { + var _this2 = this; + + var _props$direction = this.props.direction, + direction = _props$direction === undefined ? 'horizontal' : _props$direction; + + + var styles = (0, _reactcss2.default)({ + 'default': { + hue: { + absolute: '0px 0px 0px 0px', + borderRadius: this.props.radius, + boxShadow: this.props.shadow + }, + container: { + padding: '0 2px', + position: 'relative', + height: '100%', + borderRadius: this.props.radius + }, + pointer: { + position: 'absolute', + left: this.props.hsl.h * 100 / 360 + '%' + }, + slider: { + marginTop: '1px', + width: '4px', + borderRadius: '1px', + height: '8px', + boxShadow: '0 0 2px rgba(0, 0, 0, .6)', + background: '#fff', + transform: 'translateX(-2px)' + } + }, + 'vertical': { + pointer: { + left: '0px', + top: -(this.props.hsl.h * 100 / 360) + 100 + '%' + } + } + }, { vertical: direction === 'vertical' }); + + return _react2.default.createElement( + 'div', + { style: styles.hue }, + _react2.default.createElement( + 'div', + { + className: 'hue-' + direction, + style: styles.container, + ref: function ref(container) { + return _this2.container = container; + }, + onMouseDown: this.handleMouseDown, + onTouchMove: this.handleChange, + onTouchStart: this.handleChange + }, + _react2.default.createElement( + 'style', + null, + '\n .hue-horizontal {\n background: linear-gradient(to right, #f00 0%, #ff0 17%, #0f0\n 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);\n background: -webkit-linear-gradient(to right, #f00 0%, #ff0\n 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);\n }\n\n .hue-vertical {\n background: linear-gradient(to top, #f00 0%, #ff0 17%, #0f0 33%,\n #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);\n background: -webkit-linear-gradient(to top, #f00 0%, #ff0 17%,\n #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);\n }\n ' + ), + _react2.default.createElement( + 'div', + { style: styles.pointer }, + this.props.pointer ? _react2.default.createElement(this.props.pointer, this.props) : _react2.default.createElement('div', { style: styles.slider }) + ) + ) + ); + } + }]); + + return Hue; +}(_react.PureComponent || _react.Component); + +exports.default = Hue; +},{"../../helpers/hue":357,"react":"react","reactcss":369}],321:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Raised = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _propTypes = require('prop-types'); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _merge = require('lodash/merge'); + +var _merge2 = _interopRequireDefault(_merge); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var Raised = exports.Raised = function Raised(_ref) { + var zDepth = _ref.zDepth, + radius = _ref.radius, + background = _ref.background, + children = _ref.children, + _ref$styles = _ref.styles, + passedStyles = _ref$styles === undefined ? {} : _ref$styles; + + var styles = (0, _reactcss2.default)((0, _merge2.default)({ + 'default': { + wrap: { + position: 'relative', + display: 'inline-block' + }, + content: { + position: 'relative' + }, + bg: { + absolute: '0px 0px 0px 0px', + boxShadow: '0 ' + zDepth + 'px ' + zDepth * 4 + 'px rgba(0,0,0,.24)', + borderRadius: radius, + background: background + } + }, + 'zDepth-0': { + bg: { + boxShadow: 'none' + } + }, + + 'zDepth-1': { + bg: { + boxShadow: '0 2px 10px rgba(0,0,0,.12), 0 2px 5px rgba(0,0,0,.16)' + } + }, + 'zDepth-2': { + bg: { + boxShadow: '0 6px 20px rgba(0,0,0,.19), 0 8px 17px rgba(0,0,0,.2)' + } + }, + 'zDepth-3': { + bg: { + boxShadow: '0 17px 50px rgba(0,0,0,.19), 0 12px 15px rgba(0,0,0,.24)' + } + }, + 'zDepth-4': { + bg: { + boxShadow: '0 25px 55px rgba(0,0,0,.21), 0 16px 28px rgba(0,0,0,.22)' + } + }, + 'zDepth-5': { + bg: { + boxShadow: '0 40px 77px rgba(0,0,0,.22), 0 27px 24px rgba(0,0,0,.2)' + } + }, + 'square': { + bg: { + borderRadius: '0' + } + }, + 'circle': { + bg: { + borderRadius: '50%' + } + } + }, passedStyles), { 'zDepth-1': zDepth === 1 }); + + return _react2.default.createElement( + 'div', + { style: styles.wrap }, + _react2.default.createElement('div', { style: styles.bg }), + _react2.default.createElement( + 'div', + { style: styles.content }, + children + ) + ); +}; + +Raised.propTypes = { + background: _propTypes2.default.string, + zDepth: _propTypes2.default.oneOf([0, 1, 2, 3, 4, 5]), + radius: _propTypes2.default.number, + styles: _propTypes2.default.object +}; + +Raised.defaultProps = { + background: '#fff', + zDepth: 1, + radius: 2, + styles: {} +}; + +exports.default = Raised; +},{"lodash/merge":290,"prop-types":304,"react":"react","reactcss":369}],322:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Saturation = undefined; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _throttle = require('lodash/throttle'); + +var _throttle2 = _interopRequireDefault(_throttle); + +var _saturation = require('../../helpers/saturation'); + +var saturation = _interopRequireWildcard(_saturation); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var Saturation = exports.Saturation = function (_ref) { + _inherits(Saturation, _ref); + + function Saturation(props) { + _classCallCheck(this, Saturation); + + var _this = _possibleConstructorReturn(this, (Saturation.__proto__ || Object.getPrototypeOf(Saturation)).call(this, props)); + + _this.handleChange = function (e) { + typeof _this.props.onChange === 'function' && _this.throttle(_this.props.onChange, saturation.calculateChange(e, _this.props.hsl, _this.container), e); + }; + + _this.handleMouseDown = function (e) { + _this.handleChange(e); + var renderWindow = _this.getContainerRenderWindow(); + renderWindow.addEventListener('mousemove', _this.handleChange); + renderWindow.addEventListener('mouseup', _this.handleMouseUp); + }; + + _this.handleMouseUp = function () { + _this.unbindEventListeners(); + }; + + _this.throttle = (0, _throttle2.default)(function (fn, data, e) { + fn(data, e); + }, 50); + return _this; + } + + _createClass(Saturation, [{ + key: 'componentWillUnmount', + value: function componentWillUnmount() { + this.throttle.cancel(); + this.unbindEventListeners(); + } + }, { + key: 'getContainerRenderWindow', + value: function getContainerRenderWindow() { + var container = this.container; + + var renderWindow = window; + while (!renderWindow.document.contains(container) && renderWindow.parent !== renderWindow) { + renderWindow = renderWindow.parent; + } + return renderWindow; + } + }, { + key: 'unbindEventListeners', + value: function unbindEventListeners() { + var renderWindow = this.getContainerRenderWindow(); + renderWindow.removeEventListener('mousemove', this.handleChange); + renderWindow.removeEventListener('mouseup', this.handleMouseUp); + } + }, { + key: 'render', + value: function render() { + var _this2 = this; + + var _ref2 = this.props.style || {}, + color = _ref2.color, + white = _ref2.white, + black = _ref2.black, + pointer = _ref2.pointer, + circle = _ref2.circle; + + var styles = (0, _reactcss2.default)({ + 'default': { + color: { + absolute: '0px 0px 0px 0px', + background: 'hsl(' + this.props.hsl.h + ',100%, 50%)', + borderRadius: this.props.radius + }, + white: { + absolute: '0px 0px 0px 0px', + borderRadius: this.props.radius + }, + black: { + absolute: '0px 0px 0px 0px', + boxShadow: this.props.shadow, + borderRadius: this.props.radius + }, + pointer: { + position: 'absolute', + top: -(this.props.hsv.v * 100) + 100 + '%', + left: this.props.hsv.s * 100 + '%', + cursor: 'default' + }, + circle: { + width: '4px', + height: '4px', + boxShadow: '0 0 0 1.5px #fff, inset 0 0 1px 1px rgba(0,0,0,.3),\n 0 0 1px 2px rgba(0,0,0,.4)', + borderRadius: '50%', + cursor: 'hand', + transform: 'translate(-2px, -2px)' + } + }, + 'custom': { + color: color, + white: white, + black: black, + pointer: pointer, + circle: circle + } + }, { 'custom': !!this.props.style }); + + return _react2.default.createElement( + 'div', + { + style: styles.color, + ref: function ref(container) { + return _this2.container = container; + }, + onMouseDown: this.handleMouseDown, + onTouchMove: this.handleChange, + onTouchStart: this.handleChange + }, + _react2.default.createElement( + 'style', + null, + '\n .saturation-white {\n background: -webkit-linear-gradient(to right, #fff, rgba(255,255,255,0));\n background: linear-gradient(to right, #fff, rgba(255,255,255,0));\n }\n .saturation-black {\n background: -webkit-linear-gradient(to top, #000, rgba(0,0,0,0));\n background: linear-gradient(to top, #000, rgba(0,0,0,0));\n }\n ' + ), + _react2.default.createElement( + 'div', + { style: styles.white, className: 'saturation-white' }, + _react2.default.createElement('div', { style: styles.black, className: 'saturation-black' }), + _react2.default.createElement( + 'div', + { style: styles.pointer }, + this.props.pointer ? _react2.default.createElement(this.props.pointer, this.props) : _react2.default.createElement('div', { style: styles.circle }) + ) + ) + ); + } + }]); + + return Saturation; +}(_react.PureComponent || _react.Component); + +exports.default = Saturation; +},{"../../helpers/saturation":359,"lodash/throttle":295,"react":"react","reactcss":369}],323:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Swatch = undefined; + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _interaction = require('../../helpers/interaction'); + +var _Checkboard = require('./Checkboard'); + +var _Checkboard2 = _interopRequireDefault(_Checkboard); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var ENTER = 13; + +var Swatch = exports.Swatch = function Swatch(_ref) { + var color = _ref.color, + style = _ref.style, + _ref$onClick = _ref.onClick, + onClick = _ref$onClick === undefined ? function () {} : _ref$onClick, + onHover = _ref.onHover, + _ref$title = _ref.title, + title = _ref$title === undefined ? color : _ref$title, + children = _ref.children, + focus = _ref.focus, + _ref$focusStyle = _ref.focusStyle, + focusStyle = _ref$focusStyle === undefined ? {} : _ref$focusStyle; + + var transparent = color === 'transparent'; + var styles = (0, _reactcss2.default)({ + default: { + swatch: _extends({ + background: color, + height: '100%', + width: '100%', + cursor: 'pointer', + position: 'relative', + outline: 'none' + }, style, focus ? focusStyle : {}) + } + }); + + var handleClick = function handleClick(e) { + return onClick(color, e); + }; + var handleKeyDown = function handleKeyDown(e) { + return e.keyCode === ENTER && onClick(color, e); + }; + var handleHover = function handleHover(e) { + return onHover(color, e); + }; + + var optionalEvents = {}; + if (onHover) { + optionalEvents.onMouseOver = handleHover; + } + + return _react2.default.createElement( + 'div', + _extends({ + style: styles.swatch, + onClick: handleClick, + title: title, + tabIndex: 0, + onKeyDown: handleKeyDown + }, optionalEvents), + children, + transparent && _react2.default.createElement(_Checkboard2.default, { + borderRadius: styles.swatch.borderRadius, + boxShadow: 'inset 0 0 0 1px rgba(0,0,0,0.1)' + }) + ); +}; + +exports.default = (0, _interaction.handleFocus)(Swatch); +},{"../../helpers/interaction":358,"./Checkboard":317,"react":"react","reactcss":369}],324:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _Alpha = require('./Alpha'); + +Object.defineProperty(exports, 'Alpha', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Alpha).default; + } +}); + +var _Checkboard = require('./Checkboard'); + +Object.defineProperty(exports, 'Checkboard', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Checkboard).default; + } +}); + +var _EditableInput = require('./EditableInput'); + +Object.defineProperty(exports, 'EditableInput', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_EditableInput).default; + } +}); + +var _Hue = require('./Hue'); + +Object.defineProperty(exports, 'Hue', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Hue).default; + } +}); + +var _Raised = require('./Raised'); + +Object.defineProperty(exports, 'Raised', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Raised).default; + } +}); + +var _Saturation = require('./Saturation'); + +Object.defineProperty(exports, 'Saturation', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Saturation).default; + } +}); + +var _ColorWrap = require('./ColorWrap'); + +Object.defineProperty(exports, 'ColorWrap', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_ColorWrap).default; + } +}); + +var _Swatch = require('./Swatch'); + +Object.defineProperty(exports, 'Swatch', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Swatch).default; + } +}); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +},{"./Alpha":316,"./Checkboard":317,"./ColorWrap":318,"./EditableInput":319,"./Hue":320,"./Raised":321,"./Saturation":322,"./Swatch":323}],325:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Compact = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _propTypes = require('prop-types'); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _map = require('lodash/map'); + +var _map2 = _interopRequireDefault(_map); + +var _merge = require('lodash/merge'); + +var _merge2 = _interopRequireDefault(_merge); + +var _color = require('../../helpers/color'); + +var color = _interopRequireWildcard(_color); + +var _common = require('../common'); + +var _CompactColor = require('./CompactColor'); + +var _CompactColor2 = _interopRequireDefault(_CompactColor); + +var _CompactFields = require('./CompactFields'); + +var _CompactFields2 = _interopRequireDefault(_CompactFields); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var Compact = exports.Compact = function Compact(_ref) { + var onChange = _ref.onChange, + onSwatchHover = _ref.onSwatchHover, + colors = _ref.colors, + hex = _ref.hex, + rgb = _ref.rgb, + _ref$styles = _ref.styles, + passedStyles = _ref$styles === undefined ? {} : _ref$styles, + _ref$className = _ref.className, + className = _ref$className === undefined ? '' : _ref$className; + + var styles = (0, _reactcss2.default)((0, _merge2.default)({ + 'default': { + Compact: { + background: '#f6f6f6', + radius: '4px' + }, + compact: { + paddingTop: '5px', + paddingLeft: '5px', + boxSizing: 'initial', + width: '240px' + }, + clear: { + clear: 'both' + } + } + }, passedStyles)); + + var handleChange = function handleChange(data, e) { + if (data.hex) { + color.isValidHex(data.hex) && onChange({ + hex: data.hex, + source: 'hex' + }, e); + } else { + onChange(data, e); + } + }; + + return _react2.default.createElement( + _common.Raised, + { style: styles.Compact, styles: passedStyles }, + _react2.default.createElement( + 'div', + { style: styles.compact, className: 'compact-picker ' + className }, + _react2.default.createElement( + 'div', + null, + (0, _map2.default)(colors, function (c) { + return _react2.default.createElement(_CompactColor2.default, { + key: c, + color: c, + active: c.toLowerCase() === hex, + onClick: handleChange, + onSwatchHover: onSwatchHover + }); + }), + _react2.default.createElement('div', { style: styles.clear }) + ), + _react2.default.createElement(_CompactFields2.default, { hex: hex, rgb: rgb, onChange: handleChange }) + ) + ); +}; + +Compact.propTypes = { + colors: _propTypes2.default.arrayOf(_propTypes2.default.string), + styles: _propTypes2.default.object +}; + +Compact.defaultProps = { + colors: ['#4D4D4D', '#999999', '#FFFFFF', '#F44E3B', '#FE9200', '#FCDC00', '#DBDF00', '#A4DD00', '#68CCCA', '#73D8FF', '#AEA1FF', '#FDA1FF', '#333333', '#808080', '#cccccc', '#D33115', '#E27300', '#FCC400', '#B0BC00', '#68BC00', '#16A5A5', '#009CE0', '#7B64FF', '#FA28FF', '#000000', '#666666', '#B3B3B3', '#9F0500', '#C45100', '#FB9E00', '#808900', '#194D33', '#0C797D', '#0062B1', '#653294', '#AB149E'], + styles: {} +}; + +exports.default = (0, _common.ColorWrap)(Compact); +},{"../../helpers/color":356,"../common":324,"./CompactColor":326,"./CompactFields":327,"lodash/map":288,"lodash/merge":290,"prop-types":304,"react":"react","reactcss":369}],326:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.CompactColor = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _color = require('../../helpers/color'); + +var colorUtils = _interopRequireWildcard(_color); + +var _common = require('../common'); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var CompactColor = exports.CompactColor = function CompactColor(_ref) { + var color = _ref.color, + _ref$onClick = _ref.onClick, + onClick = _ref$onClick === undefined ? function () {} : _ref$onClick, + onSwatchHover = _ref.onSwatchHover, + active = _ref.active; + + var styles = (0, _reactcss2.default)({ + 'default': { + color: { + background: color, + width: '15px', + height: '15px', + float: 'left', + marginRight: '5px', + marginBottom: '5px', + position: 'relative', + cursor: 'pointer' + }, + dot: { + absolute: '5px 5px 5px 5px', + background: colorUtils.getContrastingColor(color), + borderRadius: '50%', + opacity: '0' + } + }, + 'active': { + dot: { + opacity: '1' + } + }, + 'color-#FFFFFF': { + color: { + boxShadow: 'inset 0 0 0 1px #ddd' + }, + dot: { + background: '#000' + } + }, + 'transparent': { + dot: { + background: '#000' + } + } + }, { active: active, 'color-#FFFFFF': color === '#FFFFFF', 'transparent': color === 'transparent' }); + + return _react2.default.createElement( + _common.Swatch, + { + style: styles.color, + color: color, + onClick: onClick, + onHover: onSwatchHover, + focusStyle: { boxShadow: '0 0 4px ' + color } + }, + _react2.default.createElement('div', { style: styles.dot }) + ); +}; + +exports.default = CompactColor; +},{"../../helpers/color":356,"../common":324,"react":"react","reactcss":369}],327:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.CompactFields = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _common = require('../common'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var CompactFields = exports.CompactFields = function CompactFields(_ref) { + var hex = _ref.hex, + rgb = _ref.rgb, + onChange = _ref.onChange; + + var styles = (0, _reactcss2.default)({ + 'default': { + fields: { + display: 'flex', + paddingBottom: '6px', + paddingRight: '5px', + position: 'relative' + }, + active: { + position: 'absolute', + top: '6px', + left: '5px', + height: '9px', + width: '9px', + background: hex + }, + HEXwrap: { + flex: '6', + position: 'relative' + }, + HEXinput: { + width: '80%', + padding: '0px', + paddingLeft: '20%', + border: 'none', + outline: 'none', + background: 'none', + fontSize: '12px', + color: '#333', + height: '16px' + }, + HEXlabel: { + display: 'none' + }, + RGBwrap: { + flex: '3', + position: 'relative' + }, + RGBinput: { + width: '70%', + padding: '0px', + paddingLeft: '30%', + border: 'none', + outline: 'none', + background: 'none', + fontSize: '12px', + color: '#333', + height: '16px' + }, + RGBlabel: { + position: 'absolute', + top: '3px', + left: '0px', + lineHeight: '16px', + textTransform: 'uppercase', + fontSize: '12px', + color: '#999' + } + } + }); + + var handleChange = function handleChange(data, e) { + if (data.r || data.g || data.b) { + onChange({ + r: data.r || rgb.r, + g: data.g || rgb.g, + b: data.b || rgb.b, + source: 'rgb' + }, e); + } else { + onChange({ + hex: data.hex, + source: 'hex' + }, e); + } + }; + + return _react2.default.createElement( + 'div', + { style: styles.fields, className: 'flexbox-fix' }, + _react2.default.createElement('div', { style: styles.active }), + _react2.default.createElement(_common.EditableInput, { + style: { wrap: styles.HEXwrap, input: styles.HEXinput, label: styles.HEXlabel }, + label: 'hex', + value: hex, + onChange: handleChange + }), + _react2.default.createElement(_common.EditableInput, { + style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel }, + label: 'r', + value: rgb.r, + onChange: handleChange + }), + _react2.default.createElement(_common.EditableInput, { + style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel }, + label: 'g', + value: rgb.g, + onChange: handleChange + }), + _react2.default.createElement(_common.EditableInput, { + style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel }, + label: 'b', + value: rgb.b, + onChange: handleChange + }) + ); +}; + +exports.default = CompactFields; +},{"../common":324,"react":"react","reactcss":369}],328:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Github = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _propTypes = require('prop-types'); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _map = require('lodash/map'); + +var _map2 = _interopRequireDefault(_map); + +var _merge = require('lodash/merge'); + +var _merge2 = _interopRequireDefault(_merge); + +var _common = require('../common'); + +var _GithubSwatch = require('./GithubSwatch'); + +var _GithubSwatch2 = _interopRequireDefault(_GithubSwatch); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var Github = exports.Github = function Github(_ref) { + var width = _ref.width, + colors = _ref.colors, + onChange = _ref.onChange, + onSwatchHover = _ref.onSwatchHover, + triangle = _ref.triangle, + _ref$styles = _ref.styles, + passedStyles = _ref$styles === undefined ? {} : _ref$styles, + _ref$className = _ref.className, + className = _ref$className === undefined ? '' : _ref$className; + + var styles = (0, _reactcss2.default)((0, _merge2.default)({ + 'default': { + card: { + width: width, + background: '#fff', + border: '1px solid rgba(0,0,0,0.2)', + boxShadow: '0 3px 12px rgba(0,0,0,0.15)', + borderRadius: '4px', + position: 'relative', + padding: '5px', + display: 'flex', + flexWrap: 'wrap' + }, + triangle: { + position: 'absolute', + border: '7px solid transparent', + borderBottomColor: '#fff' + }, + triangleShadow: { + position: 'absolute', + border: '8px solid transparent', + borderBottomColor: 'rgba(0,0,0,0.15)' + } + }, + 'hide-triangle': { + triangle: { + display: 'none' + }, + triangleShadow: { + display: 'none' + } + }, + 'top-left-triangle': { + triangle: { + top: '-14px', + left: '10px' + }, + triangleShadow: { + top: '-16px', + left: '9px' + } + }, + 'top-right-triangle': { + triangle: { + top: '-14px', + right: '10px' + }, + triangleShadow: { + top: '-16px', + right: '9px' + } + }, + 'bottom-left-triangle': { + triangle: { + top: '35px', + left: '10px', + transform: 'rotate(180deg)' + }, + triangleShadow: { + top: '37px', + left: '9px', + transform: 'rotate(180deg)' + } + }, + 'bottom-right-triangle': { + triangle: { + top: '35px', + right: '10px', + transform: 'rotate(180deg)' + }, + triangleShadow: { + top: '37px', + right: '9px', + transform: 'rotate(180deg)' + } + } + }, passedStyles), { + 'hide-triangle': triangle === 'hide', + 'top-left-triangle': triangle === 'top-left', + 'top-right-triangle': triangle === 'top-right', + 'bottom-left-triangle': triangle === 'bottom-left', + 'bottom-right-triangle': triangle === 'bottom-right' + }); + + var handleChange = function handleChange(hex, e) { + return onChange({ hex: hex, source: 'hex' }, e); + }; + + return _react2.default.createElement( + 'div', + { style: styles.card, className: 'github-picker ' + className }, + _react2.default.createElement('div', { style: styles.triangleShadow }), + _react2.default.createElement('div', { style: styles.triangle }), + (0, _map2.default)(colors, function (c) { + return _react2.default.createElement(_GithubSwatch2.default, { + color: c, + key: c, + onClick: handleChange, + onSwatchHover: onSwatchHover + }); + }) + ); +}; + +Github.propTypes = { + width: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]), + colors: _propTypes2.default.arrayOf(_propTypes2.default.string), + triangle: _propTypes2.default.oneOf(['hide', 'top-left', 'top-right', 'bottom-left', 'bottom-right']), + styles: _propTypes2.default.object +}; + +Github.defaultProps = { + width: 200, + colors: ['#B80000', '#DB3E00', '#FCCB00', '#008B02', '#006B76', '#1273DE', '#004DCF', '#5300EB', '#EB9694', '#FAD0C3', '#FEF3BD', '#C1E1C5', '#BEDADC', '#C4DEF6', '#BED3F3', '#D4C4FB'], + triangle: 'top-left', + styles: {} +}; + +exports.default = (0, _common.ColorWrap)(Github); +},{"../common":324,"./GithubSwatch":329,"lodash/map":288,"lodash/merge":290,"prop-types":304,"react":"react","reactcss":369}],329:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.GithubSwatch = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _common = require('../common'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var GithubSwatch = exports.GithubSwatch = function GithubSwatch(_ref) { + var hover = _ref.hover, + color = _ref.color, + onClick = _ref.onClick, + onSwatchHover = _ref.onSwatchHover; + + var hoverSwatch = { + position: 'relative', + zIndex: '2', + outline: '2px solid #fff', + boxShadow: '0 0 5px 2px rgba(0,0,0,0.25)' + }; + + var styles = (0, _reactcss2.default)({ + 'default': { + swatch: { + width: '25px', + height: '25px', + fontSize: '0' + } + }, + 'hover': { + swatch: hoverSwatch + } + }, { hover: hover }); + + return _react2.default.createElement( + 'div', + { style: styles.swatch }, + _react2.default.createElement(_common.Swatch, { + color: color, + onClick: onClick, + onHover: onSwatchHover, + focusStyle: hoverSwatch + }) + ); +}; + +exports.default = (0, _reactcss.handleHover)(GithubSwatch); +},{"../common":324,"react":"react","reactcss":369}],330:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Google = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _propTypes = require('prop-types'); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _merge = require('lodash/merge'); + +var _merge2 = _interopRequireDefault(_merge); + +var _common = require('../common'); + +var _GooglePointerCircle = require('./GooglePointerCircle'); + +var _GooglePointerCircle2 = _interopRequireDefault(_GooglePointerCircle); + +var _GooglePointer = require('./GooglePointer'); + +var _GooglePointer2 = _interopRequireDefault(_GooglePointer); + +var _GoogleFields = require('./GoogleFields'); + +var _GoogleFields2 = _interopRequireDefault(_GoogleFields); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var Google = exports.Google = function Google(_ref) { + var width = _ref.width, + onChange = _ref.onChange, + rgb = _ref.rgb, + hsl = _ref.hsl, + hsv = _ref.hsv, + hex = _ref.hex, + header = _ref.header, + _ref$styles = _ref.styles, + passedStyles = _ref$styles === undefined ? {} : _ref$styles, + _ref$className = _ref.className, + className = _ref$className === undefined ? '' : _ref$className; + + var styles = (0, _reactcss2.default)((0, _merge2.default)({ + 'default': { + picker: { + width: width, + background: '#fff', + border: '1px solid #dfe1e5', + boxSizing: 'initial', + display: 'flex', + flexWrap: 'wrap', + borderRadius: '8px 8px 0px 0px' + }, + head: { + height: '57px', + width: '100%', + paddingTop: '16px', + paddingBottom: '16px', + paddingLeft: '16px', + fontSize: '20px', + boxSizing: 'border-box', + fontFamily: 'Roboto-Regular,HelveticaNeue,Arial,sans-serif' + }, + saturation: { + width: '70%', + padding: '0px', + position: 'relative', + overflow: 'hidden' + }, + swatch: { + width: '30%', + height: '228px', + padding: '0px', + background: 'rgba(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ', 1)', + position: 'relative', + overflow: 'hidden' + }, + body: { + margin: 'auto', + width: '95%' + }, + controls: { + display: 'flex', + boxSizing: 'border-box', + height: '52px', + paddingTop: '22px' + }, + color: { + width: '32px' + }, + hue: { + height: '8px', + position: 'relative', + margin: '0px 16px 0px 16px', + width: '100%' + }, + Hue: { + radius: '2px' + } + } + }, passedStyles)); + return _react2.default.createElement( + 'div', + { style: styles.picker, className: 'google-picker ' + className }, + _react2.default.createElement( + 'div', + { style: styles.head }, + header + ), + _react2.default.createElement('div', { style: styles.swatch }), + _react2.default.createElement( + 'div', + { style: styles.saturation }, + _react2.default.createElement(_common.Saturation, { + hsl: hsl, + hsv: hsv, + pointer: _GooglePointerCircle2.default, + onChange: onChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.body }, + _react2.default.createElement( + 'div', + { style: styles.controls, className: 'flexbox-fix' }, + _react2.default.createElement( + 'div', + { style: styles.hue }, + _react2.default.createElement(_common.Hue, { + style: styles.Hue, + hsl: hsl, + radius: '4px', + pointer: _GooglePointer2.default, + onChange: onChange + }) + ) + ), + _react2.default.createElement(_GoogleFields2.default, { + rgb: rgb, + hsl: hsl, + hex: hex, + hsv: hsv, + onChange: onChange + }) + ) + ); +}; + +Google.propTypes = { + width: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]), + styles: _propTypes2.default.object, + header: _propTypes2.default.string + +}; + +Google.defaultProps = { + width: 652, + styles: {}, + header: 'Color picker' +}; + +exports.default = (0, _common.ColorWrap)(Google); +},{"../common":324,"./GoogleFields":331,"./GooglePointer":332,"./GooglePointerCircle":333,"lodash/merge":290,"prop-types":304,"react":"react","reactcss":369}],331:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.GoogleFields = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _color = require('../../helpers/color'); + +var color = _interopRequireWildcard(_color); + +var _common = require('../common'); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var GoogleFields = exports.GoogleFields = function GoogleFields(_ref) { + var onChange = _ref.onChange, + rgb = _ref.rgb, + hsl = _ref.hsl, + hex = _ref.hex, + hsv = _ref.hsv; + + + var handleChange = function handleChange(data, e) { + if (data.hex) { + color.isValidHex(data.hex) && onChange({ + hex: data.hex, + source: 'hex' + }, e); + } else if (data.rgb) { + var values = data.rgb.split(','); + color.isvalidColorString(data.rgb, 'rgb') && onChange({ + r: values[0], + g: values[1], + b: values[2], + a: 1, + source: 'rgb' + }, e); + } else if (data.hsv) { + var _values = data.hsv.split(','); + if (color.isvalidColorString(data.hsv, 'hsv')) { + _values[2] = _values[2].replace('%', ''); + _values[1] = _values[1].replace('%', ''); + _values[0] = _values[0].replace('°', ''); + if (_values[1] == 1) { + _values[1] = 0.01; + } else if (_values[2] == 1) { + _values[2] = 0.01; + } + onChange({ + h: Number(_values[0]), + s: Number(_values[1]), + v: Number(_values[2]), + source: 'hsv' + }, e); + } + } else if (data.hsl) { + var _values2 = data.hsl.split(','); + if (color.isvalidColorString(data.hsl, 'hsl')) { + _values2[2] = _values2[2].replace('%', ''); + _values2[1] = _values2[1].replace('%', ''); + _values2[0] = _values2[0].replace('°', ''); + if (hsvValue[1] == 1) { + hsvValue[1] = 0.01; + } else if (hsvValue[2] == 1) { + hsvValue[2] = 0.01; + } + onChange({ + h: Number(_values2[0]), + s: Number(_values2[1]), + v: Number(_values2[2]), + source: 'hsl' + }, e); + } + } + }; + + var styles = (0, _reactcss2.default)({ + 'default': { + wrap: { + display: 'flex', + height: '100px', + marginTop: '4px' + }, + fields: { + width: '100%' + }, + column: { + paddingTop: '10px', + display: 'flex', + justifyContent: 'space-between' + }, + double: { + padding: '0px 4.4px', + boxSizing: 'border-box' + }, + input: { + width: '100%', + height: '38px', + boxSizing: 'border-box', + padding: '4px 10% 3px', + textAlign: 'center', + border: '1px solid #dadce0', + fontSize: '11px', + textTransform: 'lowercase', + borderRadius: '5px', + outline: 'none', + fontFamily: 'Roboto,Arial,sans-serif' + }, + input2: { + height: '38px', + width: '100%', + border: '1px solid #dadce0', + boxSizing: 'border-box', + fontSize: '11px', + textTransform: 'lowercase', + borderRadius: '5px', + outline: 'none', + paddingLeft: '10px', + fontFamily: 'Roboto,Arial,sans-serif' + }, + label: { + textAlign: 'center', + fontSize: '12px', + background: '#fff', + position: 'absolute', + textTransform: 'uppercase', + color: '#3c4043', + width: '35px', + top: '-6px', + left: '0', + right: '0', + marginLeft: 'auto', + marginRight: 'auto', + fontFamily: 'Roboto,Arial,sans-serif' + }, + label2: { + left: '10px', + textAlign: 'center', + fontSize: '12px', + background: '#fff', + position: 'absolute', + textTransform: 'uppercase', + color: '#3c4043', + width: '32px', + top: '-6px', + fontFamily: 'Roboto,Arial,sans-serif' + }, + single: { + flexGrow: '1', + margin: '0px 4.4px' + } + } + }); + + var rgbValue = rgb.r + ', ' + rgb.g + ', ' + rgb.b; + var hslValue = Math.round(hsl.h) + '\xB0, ' + Math.round(hsl.s * 100) + '%, ' + Math.round(hsl.l * 100) + '%'; + var hsvValue = Math.round(hsv.h) + '\xB0, ' + Math.round(hsv.s * 100) + '%, ' + Math.round(hsv.v * 100) + '%'; + + return _react2.default.createElement( + 'div', + { style: styles.wrap, className: 'flexbox-fix' }, + _react2.default.createElement( + 'div', + { style: styles.fields }, + _react2.default.createElement( + 'div', + { style: styles.double }, + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input, label: styles.label }, + label: 'hex', + value: hex, + onChange: handleChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.column }, + _react2.default.createElement( + 'div', + { style: styles.single }, + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input2, label: styles.label2 }, + label: 'rgb', + value: rgbValue, + onChange: handleChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.single }, + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input2, label: styles.label2 }, + label: 'hsv', + value: hsvValue, + onChange: handleChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.single }, + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input2, label: styles.label2 }, + label: 'hsl', + value: hslValue, + onChange: handleChange + }) + ) + ) + ) + ); +}; + +exports.default = GoogleFields; +},{"../../helpers/color":356,"../common":324,"react":"react","reactcss":369}],332:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.GooglePointer = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _propTypes = require('prop-types'); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var GooglePointer = exports.GooglePointer = function GooglePointer(props) { + var styles = (0, _reactcss2.default)({ + 'default': { + picker: { + width: '20px', + height: '20px', + borderRadius: '22px', + transform: 'translate(-10px, -7px)', + background: 'hsl(' + Math.round(props.hsl.h) + ', 100%, 50%)', + border: '2px white solid' + } + } + }); + + return _react2.default.createElement('div', { style: styles.picker }); +}; + +GooglePointer.propTypes = { + hsl: _propTypes2.default.shape({ + h: _propTypes2.default.number, + s: _propTypes2.default.number, + l: _propTypes2.default.number, + a: _propTypes2.default.number + }) +}; + +GooglePointer.defaultProps = { + hsl: { a: 1, h: 249.94, l: 0.2, s: 0.50 } +}; + +exports.default = GooglePointer; +},{"prop-types":304,"react":"react","reactcss":369}],333:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.GooglePointerCircle = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _propTypes = require('prop-types'); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var GooglePointerCircle = exports.GooglePointerCircle = function GooglePointerCircle(props) { + var styles = (0, _reactcss2.default)({ + 'default': { + picker: { + width: '20px', + height: '20px', + borderRadius: '22px', + border: '2px #fff solid', + transform: 'translate(-12px, -13px)', + background: 'hsl(' + Math.round(props.hsl.h) + ', ' + Math.round(props.hsl.s * 100) + '%, ' + Math.round(props.hsl.l * 100) + '%)' + } + } + }); + + return _react2.default.createElement('div', { style: styles.picker }); +}; + +GooglePointerCircle.propTypes = { + hsl: _propTypes2.default.shape({ + h: _propTypes2.default.number, + s: _propTypes2.default.number, + l: _propTypes2.default.number, + a: _propTypes2.default.number + }) +}; + +GooglePointerCircle.defaultProps = { + hsl: { a: 1, h: 249.94, l: 0.2, s: 0.50 } +}; + +exports.default = GooglePointerCircle; +},{"prop-types":304,"react":"react","reactcss":369}],334:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.HuePicker = undefined; + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _propTypes = require('prop-types'); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _merge = require('lodash/merge'); + +var _merge2 = _interopRequireDefault(_merge); + +var _common = require('../common'); + +var _HuePointer = require('./HuePointer'); + +var _HuePointer2 = _interopRequireDefault(_HuePointer); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var HuePicker = exports.HuePicker = function HuePicker(_ref) { + var width = _ref.width, + height = _ref.height, + onChange = _ref.onChange, + hsl = _ref.hsl, + direction = _ref.direction, + pointer = _ref.pointer, + _ref$styles = _ref.styles, + passedStyles = _ref$styles === undefined ? {} : _ref$styles, + _ref$className = _ref.className, + className = _ref$className === undefined ? '' : _ref$className; + + var styles = (0, _reactcss2.default)((0, _merge2.default)({ + 'default': { + picker: { + position: 'relative', + width: width, + height: height + }, + hue: { + radius: '2px' + } + } + }, passedStyles)); + + // Overwrite to provide pure hue color + var handleChange = function handleChange(data) { + return onChange({ a: 1, h: data.h, l: 0.5, s: 1 }); + }; + + return _react2.default.createElement( + 'div', + { style: styles.picker, className: 'hue-picker ' + className }, + _react2.default.createElement(_common.Hue, _extends({}, styles.hue, { + hsl: hsl, + pointer: pointer, + onChange: handleChange, + direction: direction + })) + ); +}; + +HuePicker.propTypes = { + styles: _propTypes2.default.object +}; +HuePicker.defaultProps = { + width: '316px', + height: '16px', + direction: 'horizontal', + pointer: _HuePointer2.default, + styles: {} +}; + +exports.default = (0, _common.ColorWrap)(HuePicker); +},{"../common":324,"./HuePointer":335,"lodash/merge":290,"prop-types":304,"react":"react","reactcss":369}],335:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SliderPointer = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var SliderPointer = exports.SliderPointer = function SliderPointer(_ref) { + var direction = _ref.direction; + + var styles = (0, _reactcss2.default)({ + 'default': { + picker: { + width: '18px', + height: '18px', + borderRadius: '50%', + transform: 'translate(-9px, -1px)', + backgroundColor: 'rgb(248, 248, 248)', + boxShadow: '0 1px 4px 0 rgba(0, 0, 0, 0.37)' + } + }, + 'vertical': { + picker: { + transform: 'translate(-3px, -9px)' + } + } + }, { vertical: direction === 'vertical' }); + + return _react2.default.createElement('div', { style: styles.picker }); +}; + +exports.default = SliderPointer; +},{"react":"react","reactcss":369}],336:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Material = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _merge = require('lodash/merge'); + +var _merge2 = _interopRequireDefault(_merge); + +var _color = require('../../helpers/color'); + +var color = _interopRequireWildcard(_color); + +var _common = require('../common'); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var Material = exports.Material = function Material(_ref) { + var onChange = _ref.onChange, + hex = _ref.hex, + rgb = _ref.rgb, + _ref$styles = _ref.styles, + passedStyles = _ref$styles === undefined ? {} : _ref$styles, + _ref$className = _ref.className, + className = _ref$className === undefined ? '' : _ref$className; + + var styles = (0, _reactcss2.default)((0, _merge2.default)({ + 'default': { + material: { + width: '98px', + height: '98px', + padding: '16px', + fontFamily: 'Roboto' + }, + HEXwrap: { + position: 'relative' + }, + HEXinput: { + width: '100%', + marginTop: '12px', + fontSize: '15px', + color: '#333', + padding: '0px', + border: '0px', + borderBottom: '2px solid ' + hex, + outline: 'none', + height: '30px' + }, + HEXlabel: { + position: 'absolute', + top: '0px', + left: '0px', + fontSize: '11px', + color: '#999999', + textTransform: 'capitalize' + }, + Hex: { + style: {} + }, + RGBwrap: { + position: 'relative' + }, + RGBinput: { + width: '100%', + marginTop: '12px', + fontSize: '15px', + color: '#333', + padding: '0px', + border: '0px', + borderBottom: '1px solid #eee', + outline: 'none', + height: '30px' + }, + RGBlabel: { + position: 'absolute', + top: '0px', + left: '0px', + fontSize: '11px', + color: '#999999', + textTransform: 'capitalize' + }, + split: { + display: 'flex', + marginRight: '-10px', + paddingTop: '11px' + }, + third: { + flex: '1', + paddingRight: '10px' + } + } + }, passedStyles)); + + var handleChange = function handleChange(data, e) { + if (data.hex) { + color.isValidHex(data.hex) && onChange({ + hex: data.hex, + source: 'hex' + }, e); + } else if (data.r || data.g || data.b) { + onChange({ + r: data.r || rgb.r, + g: data.g || rgb.g, + b: data.b || rgb.b, + source: 'rgb' + }, e); + } + }; + + return _react2.default.createElement( + _common.Raised, + { styles: passedStyles }, + _react2.default.createElement( + 'div', + { style: styles.material, className: 'material-picker ' + className }, + _react2.default.createElement(_common.EditableInput, { + style: { wrap: styles.HEXwrap, input: styles.HEXinput, label: styles.HEXlabel }, + label: 'hex', + value: hex, + onChange: handleChange + }), + _react2.default.createElement( + 'div', + { style: styles.split, className: 'flexbox-fix' }, + _react2.default.createElement( + 'div', + { style: styles.third }, + _react2.default.createElement(_common.EditableInput, { + style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel }, + label: 'r', value: rgb.r, + onChange: handleChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.third }, + _react2.default.createElement(_common.EditableInput, { + style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel }, + label: 'g', + value: rgb.g, + onChange: handleChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.third }, + _react2.default.createElement(_common.EditableInput, { + style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel }, + label: 'b', + value: rgb.b, + onChange: handleChange + }) + ) + ) + ) + ); +}; + +exports.default = (0, _common.ColorWrap)(Material); +},{"../../helpers/color":356,"../common":324,"lodash/merge":290,"react":"react","reactcss":369}],337:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Photoshop = undefined; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _propTypes = require('prop-types'); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _merge = require('lodash/merge'); + +var _merge2 = _interopRequireDefault(_merge); + +var _common = require('../common'); + +var _PhotoshopFields = require('./PhotoshopFields'); + +var _PhotoshopFields2 = _interopRequireDefault(_PhotoshopFields); + +var _PhotoshopPointerCircle = require('./PhotoshopPointerCircle'); + +var _PhotoshopPointerCircle2 = _interopRequireDefault(_PhotoshopPointerCircle); + +var _PhotoshopPointer = require('./PhotoshopPointer'); + +var _PhotoshopPointer2 = _interopRequireDefault(_PhotoshopPointer); + +var _PhotoshopButton = require('./PhotoshopButton'); + +var _PhotoshopButton2 = _interopRequireDefault(_PhotoshopButton); + +var _PhotoshopPreviews = require('./PhotoshopPreviews'); + +var _PhotoshopPreviews2 = _interopRequireDefault(_PhotoshopPreviews); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var Photoshop = exports.Photoshop = function (_React$Component) { + _inherits(Photoshop, _React$Component); + + function Photoshop(props) { + _classCallCheck(this, Photoshop); + + var _this = _possibleConstructorReturn(this, (Photoshop.__proto__ || Object.getPrototypeOf(Photoshop)).call(this)); + + _this.state = { + currentColor: props.hex + }; + return _this; + } + + _createClass(Photoshop, [{ + key: 'render', + value: function render() { + var _props = this.props, + _props$styles = _props.styles, + passedStyles = _props$styles === undefined ? {} : _props$styles, + _props$className = _props.className, + className = _props$className === undefined ? '' : _props$className; + + var styles = (0, _reactcss2.default)((0, _merge2.default)({ + 'default': { + picker: { + background: '#DCDCDC', + borderRadius: '4px', + boxShadow: '0 0 0 1px rgba(0,0,0,.25), 0 8px 16px rgba(0,0,0,.15)', + boxSizing: 'initial', + width: '513px' + }, + head: { + backgroundImage: 'linear-gradient(-180deg, #F0F0F0 0%, #D4D4D4 100%)', + borderBottom: '1px solid #B1B1B1', + boxShadow: 'inset 0 1px 0 0 rgba(255,255,255,.2), inset 0 -1px 0 0 rgba(0,0,0,.02)', + height: '23px', + lineHeight: '24px', + borderRadius: '4px 4px 0 0', + fontSize: '13px', + color: '#4D4D4D', + textAlign: 'center' + }, + body: { + padding: '15px 15px 0', + display: 'flex' + }, + saturation: { + width: '256px', + height: '256px', + position: 'relative', + border: '2px solid #B3B3B3', + borderBottom: '2px solid #F0F0F0', + overflow: 'hidden' + }, + hue: { + position: 'relative', + height: '256px', + width: '19px', + marginLeft: '10px', + border: '2px solid #B3B3B3', + borderBottom: '2px solid #F0F0F0' + }, + controls: { + width: '180px', + marginLeft: '10px' + }, + top: { + display: 'flex' + }, + previews: { + width: '60px' + }, + actions: { + flex: '1', + marginLeft: '20px' + } + } + }, passedStyles)); + + return _react2.default.createElement( + 'div', + { style: styles.picker, className: 'photoshop-picker ' + className }, + _react2.default.createElement( + 'div', + { style: styles.head }, + this.props.header + ), + _react2.default.createElement( + 'div', + { style: styles.body, className: 'flexbox-fix' }, + _react2.default.createElement( + 'div', + { style: styles.saturation }, + _react2.default.createElement(_common.Saturation, { + hsl: this.props.hsl, + hsv: this.props.hsv, + pointer: _PhotoshopPointerCircle2.default, + onChange: this.props.onChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.hue }, + _react2.default.createElement(_common.Hue, { + direction: 'vertical', + hsl: this.props.hsl, + pointer: _PhotoshopPointer2.default, + onChange: this.props.onChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.controls }, + _react2.default.createElement( + 'div', + { style: styles.top, className: 'flexbox-fix' }, + _react2.default.createElement( + 'div', + { style: styles.previews }, + _react2.default.createElement(_PhotoshopPreviews2.default, { + rgb: this.props.rgb, + currentColor: this.state.currentColor + }) + ), + _react2.default.createElement( + 'div', + { style: styles.actions }, + _react2.default.createElement(_PhotoshopButton2.default, { label: 'OK', onClick: this.props.onAccept, active: true }), + _react2.default.createElement(_PhotoshopButton2.default, { label: 'Cancel', onClick: this.props.onCancel }), + _react2.default.createElement(_PhotoshopFields2.default, { + onChange: this.props.onChange, + rgb: this.props.rgb, + hsv: this.props.hsv, + hex: this.props.hex + }) + ) + ) + ) + ) + ); + } + }]); + + return Photoshop; +}(_react2.default.Component); + +Photoshop.propTypes = { + header: _propTypes2.default.string, + styles: _propTypes2.default.object +}; + +Photoshop.defaultProps = { + header: 'Color Picker', + styles: {} +}; + +exports.default = (0, _common.ColorWrap)(Photoshop); +},{"../common":324,"./PhotoshopButton":338,"./PhotoshopFields":339,"./PhotoshopPointer":340,"./PhotoshopPointerCircle":341,"./PhotoshopPreviews":342,"lodash/merge":290,"prop-types":304,"react":"react","reactcss":369}],338:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.PhotoshopButton = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var PhotoshopButton = exports.PhotoshopButton = function PhotoshopButton(_ref) { + var onClick = _ref.onClick, + label = _ref.label, + children = _ref.children, + active = _ref.active; + + var styles = (0, _reactcss2.default)({ + 'default': { + button: { + backgroundImage: 'linear-gradient(-180deg, #FFFFFF 0%, #E6E6E6 100%)', + border: '1px solid #878787', + borderRadius: '2px', + height: '20px', + boxShadow: '0 1px 0 0 #EAEAEA', + fontSize: '14px', + color: '#000', + lineHeight: '20px', + textAlign: 'center', + marginBottom: '10px', + cursor: 'pointer' + } + }, + 'active': { + button: { + boxShadow: '0 0 0 1px #878787' + } + } + }, { active: active }); + + return _react2.default.createElement( + 'div', + { style: styles.button, onClick: onClick }, + label || children + ); +}; + +exports.default = PhotoshopButton; +},{"react":"react","reactcss":369}],339:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.PhotoshopPicker = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _color = require('../../helpers/color'); + +var color = _interopRequireWildcard(_color); + +var _common = require('../common'); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var PhotoshopPicker = exports.PhotoshopPicker = function PhotoshopPicker(_ref) { + var onChange = _ref.onChange, + rgb = _ref.rgb, + hsv = _ref.hsv, + hex = _ref.hex; + + var styles = (0, _reactcss2.default)({ + 'default': { + fields: { + paddingTop: '5px', + paddingBottom: '9px', + width: '80px', + position: 'relative' + }, + divider: { + height: '5px' + }, + RGBwrap: { + position: 'relative' + }, + RGBinput: { + marginLeft: '40%', + width: '40%', + height: '18px', + border: '1px solid #888888', + boxShadow: 'inset 0 1px 1px rgba(0,0,0,.1), 0 1px 0 0 #ECECEC', + marginBottom: '5px', + fontSize: '13px', + paddingLeft: '3px', + marginRight: '10px' + }, + RGBlabel: { + left: '0px', + top: '0px', + width: '34px', + textTransform: 'uppercase', + fontSize: '13px', + height: '18px', + lineHeight: '22px', + position: 'absolute' + }, + HEXwrap: { + position: 'relative' + }, + HEXinput: { + marginLeft: '20%', + width: '80%', + height: '18px', + border: '1px solid #888888', + boxShadow: 'inset 0 1px 1px rgba(0,0,0,.1), 0 1px 0 0 #ECECEC', + marginBottom: '6px', + fontSize: '13px', + paddingLeft: '3px' + }, + HEXlabel: { + position: 'absolute', + top: '0px', + left: '0px', + width: '14px', + textTransform: 'uppercase', + fontSize: '13px', + height: '18px', + lineHeight: '22px' + }, + fieldSymbols: { + position: 'absolute', + top: '5px', + right: '-7px', + fontSize: '13px' + }, + symbol: { + height: '20px', + lineHeight: '22px', + paddingBottom: '7px' + } + } + }); + + var handleChange = function handleChange(data, e) { + if (data['#']) { + color.isValidHex(data['#']) && onChange({ + hex: data['#'], + source: 'hex' + }, e); + } else if (data.r || data.g || data.b) { + onChange({ + r: data.r || rgb.r, + g: data.g || rgb.g, + b: data.b || rgb.b, + source: 'rgb' + }, e); + } else if (data.h || data.s || data.v) { + onChange({ + h: data.h || hsv.h, + s: data.s || hsv.s, + v: data.v || hsv.v, + source: 'hsv' + }, e); + } + }; + + return _react2.default.createElement( + 'div', + { style: styles.fields }, + _react2.default.createElement(_common.EditableInput, { + style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel }, + label: 'h', + value: Math.round(hsv.h), + onChange: handleChange + }), + _react2.default.createElement(_common.EditableInput, { + style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel }, + label: 's', + value: Math.round(hsv.s * 100), + onChange: handleChange + }), + _react2.default.createElement(_common.EditableInput, { + style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel }, + label: 'v', + value: Math.round(hsv.v * 100), + onChange: handleChange + }), + _react2.default.createElement('div', { style: styles.divider }), + _react2.default.createElement(_common.EditableInput, { + style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel }, + label: 'r', + value: rgb.r, + onChange: handleChange + }), + _react2.default.createElement(_common.EditableInput, { + style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel }, + label: 'g', + value: rgb.g, + onChange: handleChange + }), + _react2.default.createElement(_common.EditableInput, { + style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel }, + label: 'b', + value: rgb.b, + onChange: handleChange + }), + _react2.default.createElement('div', { style: styles.divider }), + _react2.default.createElement(_common.EditableInput, { + style: { wrap: styles.HEXwrap, input: styles.HEXinput, label: styles.HEXlabel }, + label: '#', + value: hex.replace('#', ''), + onChange: handleChange + }), + _react2.default.createElement( + 'div', + { style: styles.fieldSymbols }, + _react2.default.createElement( + 'div', + { style: styles.symbol }, + '\xB0' + ), + _react2.default.createElement( + 'div', + { style: styles.symbol }, + '%' + ), + _react2.default.createElement( + 'div', + { style: styles.symbol }, + '%' + ) + ) + ); +}; + +exports.default = PhotoshopPicker; +},{"../../helpers/color":356,"../common":324,"react":"react","reactcss":369}],340:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.PhotoshopPointerCircle = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var PhotoshopPointerCircle = exports.PhotoshopPointerCircle = function PhotoshopPointerCircle() { + var styles = (0, _reactcss2.default)({ + 'default': { + triangle: { + width: 0, + height: 0, + borderStyle: 'solid', + borderWidth: '4px 0 4px 6px', + borderColor: 'transparent transparent transparent #fff', + position: 'absolute', + top: '1px', + left: '1px' + }, + triangleBorder: { + width: 0, + height: 0, + borderStyle: 'solid', + borderWidth: '5px 0 5px 8px', + borderColor: 'transparent transparent transparent #555' + }, + + left: { + Extend: 'triangleBorder', + transform: 'translate(-13px, -4px)' + }, + leftInside: { + Extend: 'triangle', + transform: 'translate(-8px, -5px)' + }, + + right: { + Extend: 'triangleBorder', + transform: 'translate(20px, -14px) rotate(180deg)' + }, + rightInside: { + Extend: 'triangle', + transform: 'translate(-8px, -5px)' + } + } + }); + + return _react2.default.createElement( + 'div', + { style: styles.pointer }, + _react2.default.createElement( + 'div', + { style: styles.left }, + _react2.default.createElement('div', { style: styles.leftInside }) + ), + _react2.default.createElement( + 'div', + { style: styles.right }, + _react2.default.createElement('div', { style: styles.rightInside }) + ) + ); +}; + +exports.default = PhotoshopPointerCircle; +},{"react":"react","reactcss":369}],341:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.PhotoshopPointerCircle = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var PhotoshopPointerCircle = exports.PhotoshopPointerCircle = function PhotoshopPointerCircle(_ref) { + var hsl = _ref.hsl; + + var styles = (0, _reactcss2.default)({ + 'default': { + picker: { + width: '12px', + height: '12px', + borderRadius: '6px', + boxShadow: 'inset 0 0 0 1px #fff', + transform: 'translate(-6px, -6px)' + } + }, + 'black-outline': { + picker: { + boxShadow: 'inset 0 0 0 1px #000' + } + } + }, { 'black-outline': hsl.l > 0.5 }); + + return _react2.default.createElement('div', { style: styles.picker }); +}; + +exports.default = PhotoshopPointerCircle; +},{"react":"react","reactcss":369}],342:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.PhotoshopPreviews = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var PhotoshopPreviews = exports.PhotoshopPreviews = function PhotoshopPreviews(_ref) { + var rgb = _ref.rgb, + currentColor = _ref.currentColor; + + var styles = (0, _reactcss2.default)({ + 'default': { + swatches: { + border: '1px solid #B3B3B3', + borderBottom: '1px solid #F0F0F0', + marginBottom: '2px', + marginTop: '1px' + }, + new: { + height: '34px', + background: 'rgb(' + rgb.r + ',' + rgb.g + ', ' + rgb.b + ')', + boxShadow: 'inset 1px 0 0 #000, inset -1px 0 0 #000, inset 0 1px 0 #000' + }, + current: { + height: '34px', + background: currentColor, + boxShadow: 'inset 1px 0 0 #000, inset -1px 0 0 #000, inset 0 -1px 0 #000' + }, + label: { + fontSize: '14px', + color: '#000', + textAlign: 'center' + } + } + }); + + return _react2.default.createElement( + 'div', + null, + _react2.default.createElement( + 'div', + { style: styles.label }, + 'new' + ), + _react2.default.createElement( + 'div', + { style: styles.swatches }, + _react2.default.createElement('div', { style: styles.new }), + _react2.default.createElement('div', { style: styles.current }) + ), + _react2.default.createElement( + 'div', + { style: styles.label }, + 'current' + ) + ); +}; + +exports.default = PhotoshopPreviews; +},{"react":"react","reactcss":369}],343:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Sketch = undefined; + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _propTypes = require('prop-types'); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _merge = require('lodash/merge'); + +var _merge2 = _interopRequireDefault(_merge); + +var _common = require('../common'); + +var _SketchFields = require('./SketchFields'); + +var _SketchFields2 = _interopRequireDefault(_SketchFields); + +var _SketchPresetColors = require('./SketchPresetColors'); + +var _SketchPresetColors2 = _interopRequireDefault(_SketchPresetColors); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var Sketch = exports.Sketch = function Sketch(_ref) { + var width = _ref.width, + rgb = _ref.rgb, + hex = _ref.hex, + hsv = _ref.hsv, + hsl = _ref.hsl, + onChange = _ref.onChange, + onSwatchHover = _ref.onSwatchHover, + disableAlpha = _ref.disableAlpha, + presetColors = _ref.presetColors, + renderers = _ref.renderers, + _ref$styles = _ref.styles, + passedStyles = _ref$styles === undefined ? {} : _ref$styles, + _ref$className = _ref.className, + className = _ref$className === undefined ? '' : _ref$className; + + var styles = (0, _reactcss2.default)((0, _merge2.default)({ + 'default': _extends({ + picker: { + width: width, + padding: '10px 10px 0', + boxSizing: 'initial', + background: '#fff', + borderRadius: '4px', + boxShadow: '0 0 0 1px rgba(0,0,0,.15), 0 8px 16px rgba(0,0,0,.15)' + }, + saturation: { + width: '100%', + paddingBottom: '75%', + position: 'relative', + overflow: 'hidden' + }, + Saturation: { + radius: '3px', + shadow: 'inset 0 0 0 1px rgba(0,0,0,.15), inset 0 0 4px rgba(0,0,0,.25)' + }, + controls: { + display: 'flex' + }, + sliders: { + padding: '4px 0', + flex: '1' + }, + color: { + width: '24px', + height: '24px', + position: 'relative', + marginTop: '4px', + marginLeft: '4px', + borderRadius: '3px' + }, + activeColor: { + absolute: '0px 0px 0px 0px', + borderRadius: '2px', + background: 'rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ',' + rgb.a + ')', + boxShadow: 'inset 0 0 0 1px rgba(0,0,0,.15), inset 0 0 4px rgba(0,0,0,.25)' + }, + hue: { + position: 'relative', + height: '10px', + overflow: 'hidden' + }, + Hue: { + radius: '2px', + shadow: 'inset 0 0 0 1px rgba(0,0,0,.15), inset 0 0 4px rgba(0,0,0,.25)' + }, + + alpha: { + position: 'relative', + height: '10px', + marginTop: '4px', + overflow: 'hidden' + }, + Alpha: { + radius: '2px', + shadow: 'inset 0 0 0 1px rgba(0,0,0,.15), inset 0 0 4px rgba(0,0,0,.25)' + } + }, passedStyles), + 'disableAlpha': { + color: { + height: '10px' + }, + hue: { + height: '10px' + }, + alpha: { + display: 'none' + } + } + }, passedStyles), { disableAlpha: disableAlpha }); + + return _react2.default.createElement( + 'div', + { style: styles.picker, className: 'sketch-picker ' + className }, + _react2.default.createElement( + 'div', + { style: styles.saturation }, + _react2.default.createElement(_common.Saturation, { + style: styles.Saturation, + hsl: hsl, + hsv: hsv, + onChange: onChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.controls, className: 'flexbox-fix' }, + _react2.default.createElement( + 'div', + { style: styles.sliders }, + _react2.default.createElement( + 'div', + { style: styles.hue }, + _react2.default.createElement(_common.Hue, { + style: styles.Hue, + hsl: hsl, + onChange: onChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.alpha }, + _react2.default.createElement(_common.Alpha, { + style: styles.Alpha, + rgb: rgb, + hsl: hsl, + renderers: renderers, + onChange: onChange + }) + ) + ), + _react2.default.createElement( + 'div', + { style: styles.color }, + _react2.default.createElement(_common.Checkboard, null), + _react2.default.createElement('div', { style: styles.activeColor }) + ) + ), + _react2.default.createElement(_SketchFields2.default, { + rgb: rgb, + hsl: hsl, + hex: hex, + onChange: onChange, + disableAlpha: disableAlpha + }), + _react2.default.createElement(_SketchPresetColors2.default, { + colors: presetColors, + onClick: onChange, + onSwatchHover: onSwatchHover + }) + ); +}; + +Sketch.propTypes = { + disableAlpha: _propTypes2.default.bool, + width: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]), + styles: _propTypes2.default.object +}; + +Sketch.defaultProps = { + disableAlpha: false, + width: 200, + styles: {}, + presetColors: ['#D0021B', '#F5A623', '#F8E71C', '#8B572A', '#7ED321', '#417505', '#BD10E0', '#9013FE', '#4A90E2', '#50E3C2', '#B8E986', '#000000', '#4A4A4A', '#9B9B9B', '#FFFFFF'] +}; + +exports.default = (0, _common.ColorWrap)(Sketch); +},{"../common":324,"./SketchFields":344,"./SketchPresetColors":345,"lodash/merge":290,"prop-types":304,"react":"react","reactcss":369}],344:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SketchFields = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _color = require('../../helpers/color'); + +var color = _interopRequireWildcard(_color); + +var _common = require('../common'); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/* eslint-disable no-param-reassign */ + +var SketchFields = exports.SketchFields = function SketchFields(_ref) { + var onChange = _ref.onChange, + rgb = _ref.rgb, + hsl = _ref.hsl, + hex = _ref.hex, + disableAlpha = _ref.disableAlpha; + + var styles = (0, _reactcss2.default)({ + 'default': { + fields: { + display: 'flex', + paddingTop: '4px' + }, + single: { + flex: '1', + paddingLeft: '6px' + }, + alpha: { + flex: '1', + paddingLeft: '6px' + }, + double: { + flex: '2' + }, + input: { + width: '80%', + padding: '4px 10% 3px', + border: 'none', + boxShadow: 'inset 0 0 0 1px #ccc', + fontSize: '11px' + }, + label: { + display: 'block', + textAlign: 'center', + fontSize: '11px', + color: '#222', + paddingTop: '3px', + paddingBottom: '4px', + textTransform: 'capitalize' + } + }, + 'disableAlpha': { + alpha: { + display: 'none' + } + } + }, { disableAlpha: disableAlpha }); + + var handleChange = function handleChange(data, e) { + if (data.hex) { + color.isValidHex(data.hex) && onChange({ + hex: data.hex, + source: 'hex' + }, e); + } else if (data.r || data.g || data.b) { + onChange({ + r: data.r || rgb.r, + g: data.g || rgb.g, + b: data.b || rgb.b, + a: rgb.a, + source: 'rgb' + }, e); + } else if (data.a) { + if (data.a < 0) { + data.a = 0; + } else if (data.a > 100) { + data.a = 100; + } + + data.a /= 100; + onChange({ + h: hsl.h, + s: hsl.s, + l: hsl.l, + a: data.a, + source: 'rgb' + }, e); + } + }; + + return _react2.default.createElement( + 'div', + { style: styles.fields, className: 'flexbox-fix' }, + _react2.default.createElement( + 'div', + { style: styles.double }, + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input, label: styles.label }, + label: 'hex', + value: hex.replace('#', ''), + onChange: handleChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.single }, + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input, label: styles.label }, + label: 'r', + value: rgb.r, + onChange: handleChange, + dragLabel: 'true', + dragMax: '255' + }) + ), + _react2.default.createElement( + 'div', + { style: styles.single }, + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input, label: styles.label }, + label: 'g', + value: rgb.g, + onChange: handleChange, + dragLabel: 'true', + dragMax: '255' + }) + ), + _react2.default.createElement( + 'div', + { style: styles.single }, + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input, label: styles.label }, + label: 'b', + value: rgb.b, + onChange: handleChange, + dragLabel: 'true', + dragMax: '255' + }) + ), + _react2.default.createElement( + 'div', + { style: styles.alpha }, + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input, label: styles.label }, + label: 'a', + value: Math.round(rgb.a * 100), + onChange: handleChange, + dragLabel: 'true', + dragMax: '100' + }) + ) + ); +}; + +exports.default = SketchFields; +},{"../../helpers/color":356,"../common":324,"react":"react","reactcss":369}],345:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SketchPresetColors = undefined; + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _propTypes = require('prop-types'); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _common = require('../common'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var SketchPresetColors = exports.SketchPresetColors = function SketchPresetColors(_ref) { + var colors = _ref.colors, + _ref$onClick = _ref.onClick, + onClick = _ref$onClick === undefined ? function () {} : _ref$onClick, + onSwatchHover = _ref.onSwatchHover; + + var styles = (0, _reactcss2.default)({ + 'default': { + colors: { + margin: '0 -10px', + padding: '10px 0 0 10px', + borderTop: '1px solid #eee', + display: 'flex', + flexWrap: 'wrap', + position: 'relative' + }, + swatchWrap: { + width: '16px', + height: '16px', + margin: '0 10px 10px 0' + }, + swatch: { + borderRadius: '3px', + boxShadow: 'inset 0 0 0 1px rgba(0,0,0,.15)' + } + }, + 'no-presets': { + colors: { + display: 'none' + } + } + }, { + 'no-presets': !colors || !colors.length + }); + + var handleClick = function handleClick(hex, e) { + onClick({ + hex: hex, + source: 'hex' + }, e); + }; + + return _react2.default.createElement( + 'div', + { style: styles.colors, className: 'flexbox-fix' }, + colors.map(function (colorObjOrString) { + var c = typeof colorObjOrString === 'string' ? { color: colorObjOrString } : colorObjOrString; + var key = '' + c.color + (c.title || ''); + return _react2.default.createElement( + 'div', + { key: key, style: styles.swatchWrap }, + _react2.default.createElement(_common.Swatch, _extends({}, c, { + style: styles.swatch, + onClick: handleClick, + onHover: onSwatchHover, + focusStyle: { + boxShadow: 'inset 0 0 0 1px rgba(0,0,0,.15), 0 0 4px ' + c.color + } + })) + ); + }) + ); +}; + +SketchPresetColors.propTypes = { + colors: _propTypes2.default.arrayOf(_propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.shape({ + color: _propTypes2.default.string, + title: _propTypes2.default.string + })])).isRequired +}; + +exports.default = SketchPresetColors; +},{"../common":324,"prop-types":304,"react":"react","reactcss":369}],346:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Slider = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _propTypes = require('prop-types'); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _merge = require('lodash/merge'); + +var _merge2 = _interopRequireDefault(_merge); + +var _common = require('../common'); + +var _SliderSwatches = require('./SliderSwatches'); + +var _SliderSwatches2 = _interopRequireDefault(_SliderSwatches); + +var _SliderPointer = require('./SliderPointer'); + +var _SliderPointer2 = _interopRequireDefault(_SliderPointer); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var Slider = exports.Slider = function Slider(_ref) { + var hsl = _ref.hsl, + onChange = _ref.onChange, + pointer = _ref.pointer, + _ref$styles = _ref.styles, + passedStyles = _ref$styles === undefined ? {} : _ref$styles, + _ref$className = _ref.className, + className = _ref$className === undefined ? '' : _ref$className; + + var styles = (0, _reactcss2.default)((0, _merge2.default)({ + 'default': { + hue: { + height: '12px', + position: 'relative' + }, + Hue: { + radius: '2px' + } + } + }, passedStyles)); + + return _react2.default.createElement( + 'div', + { style: styles.wrap || {}, className: 'slider-picker ' + className }, + _react2.default.createElement( + 'div', + { style: styles.hue }, + _react2.default.createElement(_common.Hue, { + style: styles.Hue, + hsl: hsl, + pointer: pointer, + onChange: onChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.swatches }, + _react2.default.createElement(_SliderSwatches2.default, { hsl: hsl, onClick: onChange }) + ) + ); +}; + +Slider.propTypes = { + styles: _propTypes2.default.object +}; +Slider.defaultProps = { + pointer: _SliderPointer2.default, + styles: {} +}; + +exports.default = (0, _common.ColorWrap)(Slider); +},{"../common":324,"./SliderPointer":347,"./SliderSwatches":349,"lodash/merge":290,"prop-types":304,"react":"react","reactcss":369}],347:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SliderPointer = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var SliderPointer = exports.SliderPointer = function SliderPointer() { + var styles = (0, _reactcss2.default)({ + 'default': { + picker: { + width: '14px', + height: '14px', + borderRadius: '6px', + transform: 'translate(-7px, -1px)', + backgroundColor: 'rgb(248, 248, 248)', + boxShadow: '0 1px 4px 0 rgba(0, 0, 0, 0.37)' + } + } + }); + + return _react2.default.createElement('div', { style: styles.picker }); +}; + +exports.default = SliderPointer; +},{"react":"react","reactcss":369}],348:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SliderSwatch = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var SliderSwatch = exports.SliderSwatch = function SliderSwatch(_ref) { + var hsl = _ref.hsl, + offset = _ref.offset, + _ref$onClick = _ref.onClick, + onClick = _ref$onClick === undefined ? function () {} : _ref$onClick, + active = _ref.active, + first = _ref.first, + last = _ref.last; + + var styles = (0, _reactcss2.default)({ + 'default': { + swatch: { + height: '12px', + background: 'hsl(' + hsl.h + ', 50%, ' + offset * 100 + '%)', + cursor: 'pointer' + } + }, + 'first': { + swatch: { + borderRadius: '2px 0 0 2px' + } + }, + 'last': { + swatch: { + borderRadius: '0 2px 2px 0' + } + }, + 'active': { + swatch: { + transform: 'scaleY(1.8)', + borderRadius: '3.6px/2px' + } + } + }, { active: active, first: first, last: last }); + + var handleClick = function handleClick(e) { + return onClick({ + h: hsl.h, + s: 0.5, + l: offset, + source: 'hsl' + }, e); + }; + + return _react2.default.createElement('div', { style: styles.swatch, onClick: handleClick }); +}; + +exports.default = SliderSwatch; +},{"react":"react","reactcss":369}],349:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SliderSwatches = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _SliderSwatch = require('./SliderSwatch'); + +var _SliderSwatch2 = _interopRequireDefault(_SliderSwatch); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var SliderSwatches = exports.SliderSwatches = function SliderSwatches(_ref) { + var onClick = _ref.onClick, + hsl = _ref.hsl; + + var styles = (0, _reactcss2.default)({ + 'default': { + swatches: { + marginTop: '20px' + }, + swatch: { + boxSizing: 'border-box', + width: '20%', + paddingRight: '1px', + float: 'left' + }, + clear: { + clear: 'both' + } + } + }); + + // Acceptible difference in floating point equality + var epsilon = 0.1; + + return _react2.default.createElement( + 'div', + { style: styles.swatches }, + _react2.default.createElement( + 'div', + { style: styles.swatch }, + _react2.default.createElement(_SliderSwatch2.default, { + hsl: hsl, + offset: '.80', + active: Math.abs(hsl.l - 0.80) < epsilon && Math.abs(hsl.s - 0.50) < epsilon, + onClick: onClick, + first: true + }) + ), + _react2.default.createElement( + 'div', + { style: styles.swatch }, + _react2.default.createElement(_SliderSwatch2.default, { + hsl: hsl, + offset: '.65', + active: Math.abs(hsl.l - 0.65) < epsilon && Math.abs(hsl.s - 0.50) < epsilon, + onClick: onClick + }) + ), + _react2.default.createElement( + 'div', + { style: styles.swatch }, + _react2.default.createElement(_SliderSwatch2.default, { + hsl: hsl, + offset: '.50', + active: Math.abs(hsl.l - 0.50) < epsilon && Math.abs(hsl.s - 0.50) < epsilon, + onClick: onClick + }) + ), + _react2.default.createElement( + 'div', + { style: styles.swatch }, + _react2.default.createElement(_SliderSwatch2.default, { + hsl: hsl, + offset: '.35', + active: Math.abs(hsl.l - 0.35) < epsilon && Math.abs(hsl.s - 0.50) < epsilon, + onClick: onClick + }) + ), + _react2.default.createElement( + 'div', + { style: styles.swatch }, + _react2.default.createElement(_SliderSwatch2.default, { + hsl: hsl, + offset: '.20', + active: Math.abs(hsl.l - 0.20) < epsilon && Math.abs(hsl.s - 0.50) < epsilon, + onClick: onClick, + last: true + }) + ), + _react2.default.createElement('div', { style: styles.clear }) + ); +}; + +exports.default = SliderSwatches; +},{"./SliderSwatch":348,"react":"react","reactcss":369}],350:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Swatches = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _propTypes = require('prop-types'); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _map = require('lodash/map'); + +var _map2 = _interopRequireDefault(_map); + +var _merge = require('lodash/merge'); + +var _merge2 = _interopRequireDefault(_merge); + +var _materialColors = require('material-colors'); + +var material = _interopRequireWildcard(_materialColors); + +var _common = require('../common'); + +var _SwatchesGroup = require('./SwatchesGroup'); + +var _SwatchesGroup2 = _interopRequireDefault(_SwatchesGroup); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var Swatches = exports.Swatches = function Swatches(_ref) { + var width = _ref.width, + height = _ref.height, + onChange = _ref.onChange, + onSwatchHover = _ref.onSwatchHover, + colors = _ref.colors, + hex = _ref.hex, + _ref$styles = _ref.styles, + passedStyles = _ref$styles === undefined ? {} : _ref$styles, + _ref$className = _ref.className, + className = _ref$className === undefined ? '' : _ref$className; + + var styles = (0, _reactcss2.default)((0, _merge2.default)({ + 'default': { + picker: { + width: width, + height: height + }, + overflow: { + height: height, + overflowY: 'scroll' + }, + body: { + padding: '16px 0 6px 16px' + }, + clear: { + clear: 'both' + } + } + }, passedStyles)); + + var handleChange = function handleChange(data, e) { + return onChange({ hex: data, source: 'hex' }, e); + }; + + return _react2.default.createElement( + 'div', + { style: styles.picker, className: 'swatches-picker ' + className }, + _react2.default.createElement( + _common.Raised, + null, + _react2.default.createElement( + 'div', + { style: styles.overflow }, + _react2.default.createElement( + 'div', + { style: styles.body }, + (0, _map2.default)(colors, function (group) { + return _react2.default.createElement(_SwatchesGroup2.default, { + key: group.toString(), + group: group, + active: hex, + onClick: handleChange, + onSwatchHover: onSwatchHover + }); + }), + _react2.default.createElement('div', { style: styles.clear }) + ) + ) + ) + ); +}; + +Swatches.propTypes = { + width: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]), + height: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]), + colors: _propTypes2.default.arrayOf(_propTypes2.default.arrayOf(_propTypes2.default.string)), + styles: _propTypes2.default.object + + /* eslint-disable max-len */ +};Swatches.defaultProps = { + width: 320, + height: 240, + colors: [[material.red['900'], material.red['700'], material.red['500'], material.red['300'], material.red['100']], [material.pink['900'], material.pink['700'], material.pink['500'], material.pink['300'], material.pink['100']], [material.purple['900'], material.purple['700'], material.purple['500'], material.purple['300'], material.purple['100']], [material.deepPurple['900'], material.deepPurple['700'], material.deepPurple['500'], material.deepPurple['300'], material.deepPurple['100']], [material.indigo['900'], material.indigo['700'], material.indigo['500'], material.indigo['300'], material.indigo['100']], [material.blue['900'], material.blue['700'], material.blue['500'], material.blue['300'], material.blue['100']], [material.lightBlue['900'], material.lightBlue['700'], material.lightBlue['500'], material.lightBlue['300'], material.lightBlue['100']], [material.cyan['900'], material.cyan['700'], material.cyan['500'], material.cyan['300'], material.cyan['100']], [material.teal['900'], material.teal['700'], material.teal['500'], material.teal['300'], material.teal['100']], ['#194D33', material.green['700'], material.green['500'], material.green['300'], material.green['100']], [material.lightGreen['900'], material.lightGreen['700'], material.lightGreen['500'], material.lightGreen['300'], material.lightGreen['100']], [material.lime['900'], material.lime['700'], material.lime['500'], material.lime['300'], material.lime['100']], [material.yellow['900'], material.yellow['700'], material.yellow['500'], material.yellow['300'], material.yellow['100']], [material.amber['900'], material.amber['700'], material.amber['500'], material.amber['300'], material.amber['100']], [material.orange['900'], material.orange['700'], material.orange['500'], material.orange['300'], material.orange['100']], [material.deepOrange['900'], material.deepOrange['700'], material.deepOrange['500'], material.deepOrange['300'], material.deepOrange['100']], [material.brown['900'], material.brown['700'], material.brown['500'], material.brown['300'], material.brown['100']], [material.blueGrey['900'], material.blueGrey['700'], material.blueGrey['500'], material.blueGrey['300'], material.blueGrey['100']], ['#000000', '#525252', '#969696', '#D9D9D9', '#FFFFFF']], + styles: {} +}; + +exports.default = (0, _common.ColorWrap)(Swatches); +},{"../common":324,"./SwatchesGroup":352,"lodash/map":288,"lodash/merge":290,"material-colors":299,"prop-types":304,"react":"react","reactcss":369}],351:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SwatchesColor = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _color = require('../../helpers/color'); + +var colorUtils = _interopRequireWildcard(_color); + +var _common = require('../common'); + +var _CheckIcon = require('@icons/material/CheckIcon'); + +var _CheckIcon2 = _interopRequireDefault(_CheckIcon); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var SwatchesColor = exports.SwatchesColor = function SwatchesColor(_ref) { + var color = _ref.color, + _ref$onClick = _ref.onClick, + onClick = _ref$onClick === undefined ? function () {} : _ref$onClick, + onSwatchHover = _ref.onSwatchHover, + first = _ref.first, + last = _ref.last, + active = _ref.active; + + var styles = (0, _reactcss2.default)({ + 'default': { + color: { + width: '40px', + height: '24px', + cursor: 'pointer', + background: color, + marginBottom: '1px' + }, + check: { + color: colorUtils.getContrastingColor(color), + marginLeft: '8px', + display: 'none' + } + }, + 'first': { + color: { + overflow: 'hidden', + borderRadius: '2px 2px 0 0' + } + }, + 'last': { + color: { + overflow: 'hidden', + borderRadius: '0 0 2px 2px' + } + }, + 'active': { + check: { + display: 'block' + } + }, + 'color-#FFFFFF': { + color: { + boxShadow: 'inset 0 0 0 1px #ddd' + }, + check: { + color: '#333' + } + }, + 'transparent': { + check: { + color: '#333' + } + } + }, { + first: first, + last: last, + active: active, + 'color-#FFFFFF': color === '#FFFFFF', + 'transparent': color === 'transparent' + }); + + return _react2.default.createElement( + _common.Swatch, + { + color: color, + style: styles.color, + onClick: onClick, + onHover: onSwatchHover, + focusStyle: { boxShadow: '0 0 4px ' + color } + }, + _react2.default.createElement( + 'div', + { style: styles.check }, + _react2.default.createElement(_CheckIcon2.default, null) + ) + ); +}; + +exports.default = SwatchesColor; +},{"../../helpers/color":356,"../common":324,"@icons/material/CheckIcon":86,"react":"react","reactcss":369}],352:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SwatchesGroup = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _map = require('lodash/map'); + +var _map2 = _interopRequireDefault(_map); + +var _SwatchesColor = require('./SwatchesColor'); + +var _SwatchesColor2 = _interopRequireDefault(_SwatchesColor); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var SwatchesGroup = exports.SwatchesGroup = function SwatchesGroup(_ref) { + var onClick = _ref.onClick, + onSwatchHover = _ref.onSwatchHover, + group = _ref.group, + active = _ref.active; + + var styles = (0, _reactcss2.default)({ + 'default': { + group: { + paddingBottom: '10px', + width: '40px', + float: 'left', + marginRight: '10px' + } + } + }); + + return _react2.default.createElement( + 'div', + { style: styles.group }, + (0, _map2.default)(group, function (color, i) { + return _react2.default.createElement(_SwatchesColor2.default, { + key: color, + color: color, + active: color.toLowerCase() === active, + first: i === 0, + last: i === group.length - 1, + onClick: onClick, + onSwatchHover: onSwatchHover + }); + }) + ); +}; + +exports.default = SwatchesGroup; +},{"./SwatchesColor":351,"lodash/map":288,"react":"react","reactcss":369}],353:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Twitter = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _propTypes = require('prop-types'); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _map = require('lodash/map'); + +var _map2 = _interopRequireDefault(_map); + +var _merge = require('lodash/merge'); + +var _merge2 = _interopRequireDefault(_merge); + +var _color = require('../../helpers/color'); + +var color = _interopRequireWildcard(_color); + +var _common = require('../common'); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var Twitter = exports.Twitter = function Twitter(_ref) { + var onChange = _ref.onChange, + onSwatchHover = _ref.onSwatchHover, + hex = _ref.hex, + colors = _ref.colors, + width = _ref.width, + triangle = _ref.triangle, + _ref$styles = _ref.styles, + passedStyles = _ref$styles === undefined ? {} : _ref$styles, + _ref$className = _ref.className, + className = _ref$className === undefined ? '' : _ref$className; + + var styles = (0, _reactcss2.default)((0, _merge2.default)({ + 'default': { + card: { + width: width, + background: '#fff', + border: '0 solid rgba(0,0,0,0.25)', + boxShadow: '0 1px 4px rgba(0,0,0,0.25)', + borderRadius: '4px', + position: 'relative' + }, + body: { + padding: '15px 9px 9px 15px' + }, + label: { + fontSize: '18px', + color: '#fff' + }, + triangle: { + width: '0px', + height: '0px', + borderStyle: 'solid', + borderWidth: '0 9px 10px 9px', + borderColor: 'transparent transparent #fff transparent', + position: 'absolute' + }, + triangleShadow: { + width: '0px', + height: '0px', + borderStyle: 'solid', + borderWidth: '0 9px 10px 9px', + borderColor: 'transparent transparent rgba(0,0,0,.1) transparent', + position: 'absolute' + }, + hash: { + background: '#F0F0F0', + height: '30px', + width: '30px', + borderRadius: '4px 0 0 4px', + float: 'left', + color: '#98A1A4', + display: 'flex', + alignItems: 'center', + justifyContent: 'center' + }, + input: { + width: '100px', + fontSize: '14px', + color: '#666', + border: '0px', + outline: 'none', + height: '28px', + boxShadow: 'inset 0 0 0 1px #F0F0F0', + boxSizing: 'content-box', + borderRadius: '0 4px 4px 0', + float: 'left', + paddingLeft: '8px' + }, + swatch: { + width: '30px', + height: '30px', + float: 'left', + borderRadius: '4px', + margin: '0 6px 6px 0' + }, + clear: { + clear: 'both' + } + }, + 'hide-triangle': { + triangle: { + display: 'none' + }, + triangleShadow: { + display: 'none' + } + }, + 'top-left-triangle': { + triangle: { + top: '-10px', + left: '12px' + }, + triangleShadow: { + top: '-11px', + left: '12px' + } + }, + 'top-right-triangle': { + triangle: { + top: '-10px', + right: '12px' + }, + triangleShadow: { + top: '-11px', + right: '12px' + } + } + }, passedStyles), { + 'hide-triangle': triangle === 'hide', + 'top-left-triangle': triangle === 'top-left', + 'top-right-triangle': triangle === 'top-right' + }); + + var handleChange = function handleChange(hexcode, e) { + color.isValidHex(hexcode) && onChange({ + hex: hexcode, + source: 'hex' + }, e); + }; + + return _react2.default.createElement( + 'div', + { style: styles.card, className: 'twitter-picker ' + className }, + _react2.default.createElement('div', { style: styles.triangleShadow }), + _react2.default.createElement('div', { style: styles.triangle }), + _react2.default.createElement( + 'div', + { style: styles.body }, + (0, _map2.default)(colors, function (c, i) { + return _react2.default.createElement(_common.Swatch, { + key: i, + color: c, + hex: c, + style: styles.swatch, + onClick: handleChange, + onHover: onSwatchHover, + focusStyle: { + boxShadow: '0 0 4px ' + c + } + }); + }), + _react2.default.createElement( + 'div', + { style: styles.hash }, + '#' + ), + _react2.default.createElement(_common.EditableInput, { + label: null, + style: { input: styles.input }, + value: hex.replace('#', ''), + onChange: handleChange + }), + _react2.default.createElement('div', { style: styles.clear }) + ) + ); +}; + +Twitter.propTypes = { + width: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]), + triangle: _propTypes2.default.oneOf(['hide', 'top-left', 'top-right']), + colors: _propTypes2.default.arrayOf(_propTypes2.default.string), + styles: _propTypes2.default.object +}; + +Twitter.defaultProps = { + width: 276, + colors: ['#FF6900', '#FCB900', '#7BDCB5', '#00D084', '#8ED1FC', '#0693E3', '#ABB8C3', '#EB144C', '#F78DA7', '#9900EF'], + triangle: 'top-left', + styles: {} +}; + +exports.default = (0, _common.ColorWrap)(Twitter); +},{"../../helpers/color":356,"../common":324,"lodash/map":288,"lodash/merge":290,"prop-types":304,"react":"react","reactcss":369}],354:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +var calculateChange = exports.calculateChange = function calculateChange(e, hsl, direction, initialA, container) { + var containerWidth = container.clientWidth; + var containerHeight = container.clientHeight; + var x = typeof e.pageX === 'number' ? e.pageX : e.touches[0].pageX; + var y = typeof e.pageY === 'number' ? e.pageY : e.touches[0].pageY; + var left = x - (container.getBoundingClientRect().left + window.pageXOffset); + var top = y - (container.getBoundingClientRect().top + window.pageYOffset); + + if (direction === 'vertical') { + var a = void 0; + if (top < 0) { + a = 0; + } else if (top > containerHeight) { + a = 1; + } else { + a = Math.round(top * 100 / containerHeight) / 100; + } + + if (hsl.a !== a) { + return { + h: hsl.h, + s: hsl.s, + l: hsl.l, + a: a, + source: 'rgb' + }; + } + } else { + var _a = void 0; + if (left < 0) { + _a = 0; + } else if (left > containerWidth) { + _a = 1; + } else { + _a = Math.round(left * 100 / containerWidth) / 100; + } + + if (initialA !== _a) { + return { + h: hsl.h, + s: hsl.s, + l: hsl.l, + a: _a, + source: 'rgb' + }; + } + } + return null; +}; +},{}],355:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +var checkboardCache = {}; + +var render = exports.render = function render(c1, c2, size, serverCanvas) { + if (typeof document === 'undefined' && !serverCanvas) { + return null; + } + var canvas = serverCanvas ? new serverCanvas() : document.createElement('canvas'); + canvas.width = size * 2; + canvas.height = size * 2; + var ctx = canvas.getContext('2d'); + if (!ctx) { + return null; + } // If no context can be found, return early. + ctx.fillStyle = c1; + ctx.fillRect(0, 0, canvas.width, canvas.height); + ctx.fillStyle = c2; + ctx.fillRect(0, 0, size, size); + ctx.translate(size, size); + ctx.fillRect(0, 0, size, size); + return canvas.toDataURL(); +}; + +var get = exports.get = function get(c1, c2, size, serverCanvas) { + var key = c1 + '-' + c2 + '-' + size + (serverCanvas ? '-server' : ''); + + if (checkboardCache[key]) { + return checkboardCache[key]; + } + + var checkboard = render(c1, c2, size, serverCanvas); + checkboardCache[key] = checkboard; + return checkboard; +}; +},{}],356:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.isvalidColorString = exports.red = exports.getContrastingColor = exports.isValidHex = exports.toState = exports.simpleCheckForValidColor = undefined; + +var _each = require('lodash/each'); + +var _each2 = _interopRequireDefault(_each); + +var _tinycolor = require('tinycolor2'); + +var _tinycolor2 = _interopRequireDefault(_tinycolor); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var simpleCheckForValidColor = exports.simpleCheckForValidColor = function simpleCheckForValidColor(data) { + var keysToCheck = ['r', 'g', 'b', 'a', 'h', 's', 'l', 'v']; + var checked = 0; + var passed = 0; + (0, _each2.default)(keysToCheck, function (letter) { + if (data[letter]) { + checked += 1; + if (!isNaN(data[letter])) { + passed += 1; + } + if (letter === 's' || letter === 'l') { + var percentPatt = /^\d+%$/; + if (percentPatt.test(data[letter])) { + passed += 1; + } + } + } + }); + return checked === passed ? data : false; +}; + +var toState = exports.toState = function toState(data, oldHue) { + var color = data.hex ? (0, _tinycolor2.default)(data.hex) : (0, _tinycolor2.default)(data); + var hsl = color.toHsl(); + var hsv = color.toHsv(); + var rgb = color.toRgb(); + var hex = color.toHex(); + if (hsl.s === 0) { + hsl.h = oldHue || 0; + hsv.h = oldHue || 0; + } + var transparent = hex === '000000' && rgb.a === 0; + + return { + hsl: hsl, + hex: transparent ? 'transparent' : '#' + hex, + rgb: rgb, + hsv: hsv, + oldHue: data.h || oldHue || hsl.h, + source: data.source + }; +}; + +var isValidHex = exports.isValidHex = function isValidHex(hex) { + if (hex === 'transparent') { + return true; + } + // disable hex4 and hex8 + var lh = String(hex).charAt(0) === '#' ? 1 : 0; + return hex.length !== 4 + lh && hex.length < 7 + lh && (0, _tinycolor2.default)(hex).isValid(); +}; + +var getContrastingColor = exports.getContrastingColor = function getContrastingColor(data) { + if (!data) { + return '#fff'; + } + var col = toState(data); + if (col.hex === 'transparent') { + return 'rgba(0,0,0,0.4)'; + } + var yiq = (col.rgb.r * 299 + col.rgb.g * 587 + col.rgb.b * 114) / 1000; + return yiq >= 128 ? '#000' : '#fff'; +}; + +var red = exports.red = { + hsl: { a: 1, h: 0, l: 0.5, s: 1 }, + hex: '#ff0000', + rgb: { r: 255, g: 0, b: 0, a: 1 }, + hsv: { h: 0, s: 1, v: 1, a: 1 } +}; + +var isvalidColorString = exports.isvalidColorString = function isvalidColorString(string, type) { + var stringWithoutDegree = string.replace('°', ''); + return (0, _tinycolor2.default)(type + ' (' + stringWithoutDegree + ')')._ok; +}; +},{"lodash/each":263,"tinycolor2":373}],357:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +var calculateChange = exports.calculateChange = function calculateChange(e, direction, hsl, container) { + var containerWidth = container.clientWidth; + var containerHeight = container.clientHeight; + var x = typeof e.pageX === 'number' ? e.pageX : e.touches[0].pageX; + var y = typeof e.pageY === 'number' ? e.pageY : e.touches[0].pageY; + var left = x - (container.getBoundingClientRect().left + window.pageXOffset); + var top = y - (container.getBoundingClientRect().top + window.pageYOffset); + + if (direction === 'vertical') { + var h = void 0; + if (top < 0) { + h = 359; + } else if (top > containerHeight) { + h = 0; + } else { + var percent = -(top * 100 / containerHeight) + 100; + h = 360 * percent / 100; + } + + if (hsl.h !== h) { + return { + h: h, + s: hsl.s, + l: hsl.l, + a: hsl.a, + source: 'hsl' + }; + } + } else { + var _h = void 0; + if (left < 0) { + _h = 0; + } else if (left > containerWidth) { + _h = 359; + } else { + var _percent = left * 100 / containerWidth; + _h = 360 * _percent / 100; + } + + if (hsl.h !== _h) { + return { + h: _h, + s: hsl.s, + l: hsl.l, + a: hsl.a, + source: 'hsl' + }; + } + } + return null; +}; +},{}],358:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.handleFocus = undefined; + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /* eslint-disable no-invalid-this */ + + +var handleFocus = exports.handleFocus = function handleFocus(Component) { + var Span = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'span'; + return function (_React$Component) { + _inherits(Focus, _React$Component); + + function Focus() { + var _ref; + + var _temp, _this, _ret; + + _classCallCheck(this, Focus); + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Focus.__proto__ || Object.getPrototypeOf(Focus)).call.apply(_ref, [this].concat(args))), _this), _this.state = { focus: false }, _this.handleFocus = function () { + return _this.setState({ focus: true }); + }, _this.handleBlur = function () { + return _this.setState({ focus: false }); + }, _temp), _possibleConstructorReturn(_this, _ret); + } + + _createClass(Focus, [{ + key: 'render', + value: function render() { + return _react2.default.createElement( + Span, + { onFocus: this.handleFocus, onBlur: this.handleBlur }, + _react2.default.createElement(Component, _extends({}, this.props, this.state)) + ); + } + }]); + + return Focus; + }(_react2.default.Component); +}; +},{"react":"react"}],359:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +var calculateChange = exports.calculateChange = function calculateChange(e, hsl, container) { + var _container$getBoundin = container.getBoundingClientRect(), + containerWidth = _container$getBoundin.width, + containerHeight = _container$getBoundin.height; + + var x = typeof e.pageX === 'number' ? e.pageX : e.touches[0].pageX; + var y = typeof e.pageY === 'number' ? e.pageY : e.touches[0].pageY; + var left = x - (container.getBoundingClientRect().left + window.pageXOffset); + var top = y - (container.getBoundingClientRect().top + window.pageYOffset); + + if (left < 0) { + left = 0; + } else if (left > containerWidth) { + left = containerWidth; + } + + if (top < 0) { + top = 0; + } else if (top > containerHeight) { + top = containerHeight; + } + + var saturation = left / containerWidth; + var bright = 1 - top / containerHeight; + + return { + h: hsl.h, + s: saturation, + v: bright, + a: hsl.a, + source: 'hsv' + }; +}; +},{}],360:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.CustomPicker = exports.GooglePicker = exports.TwitterPicker = exports.SwatchesPicker = exports.SliderPicker = exports.SketchPicker = exports.PhotoshopPicker = exports.MaterialPicker = exports.HuePicker = exports.GithubPicker = exports.CompactPicker = exports.ChromePicker = exports.default = exports.CirclePicker = exports.BlockPicker = exports.AlphaPicker = undefined; + +var _Alpha = require('./components/alpha/Alpha'); + +Object.defineProperty(exports, 'AlphaPicker', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Alpha).default; + } +}); + +var _Block = require('./components/block/Block'); + +Object.defineProperty(exports, 'BlockPicker', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Block).default; + } +}); + +var _Circle = require('./components/circle/Circle'); + +Object.defineProperty(exports, 'CirclePicker', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Circle).default; + } +}); + +var _Chrome = require('./components/chrome/Chrome'); + +Object.defineProperty(exports, 'ChromePicker', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Chrome).default; + } +}); + +var _Compact = require('./components/compact/Compact'); + +Object.defineProperty(exports, 'CompactPicker', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Compact).default; + } +}); + +var _Github = require('./components/github/Github'); + +Object.defineProperty(exports, 'GithubPicker', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Github).default; + } +}); + +var _Hue = require('./components/hue/Hue'); + +Object.defineProperty(exports, 'HuePicker', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Hue).default; + } +}); + +var _Material = require('./components/material/Material'); + +Object.defineProperty(exports, 'MaterialPicker', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Material).default; + } +}); + +var _Photoshop = require('./components/photoshop/Photoshop'); + +Object.defineProperty(exports, 'PhotoshopPicker', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Photoshop).default; + } +}); + +var _Sketch = require('./components/sketch/Sketch'); + +Object.defineProperty(exports, 'SketchPicker', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Sketch).default; + } +}); + +var _Slider = require('./components/slider/Slider'); + +Object.defineProperty(exports, 'SliderPicker', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Slider).default; + } +}); + +var _Swatches = require('./components/swatches/Swatches'); + +Object.defineProperty(exports, 'SwatchesPicker', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Swatches).default; + } +}); + +var _Twitter = require('./components/twitter/Twitter'); + +Object.defineProperty(exports, 'TwitterPicker', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Twitter).default; + } +}); + +var _Google = require('./components/google/Google'); + +Object.defineProperty(exports, 'GooglePicker', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Google).default; + } +}); + +var _ColorWrap = require('./components/common/ColorWrap'); + +Object.defineProperty(exports, 'CustomPicker', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_ColorWrap).default; + } +}); + +var _Chrome2 = _interopRequireDefault(_Chrome); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +exports.default = _Chrome2.default; +},{"./components/alpha/Alpha":306,"./components/block/Block":308,"./components/chrome/Chrome":310,"./components/circle/Circle":314,"./components/common/ColorWrap":318,"./components/compact/Compact":325,"./components/github/Github":328,"./components/google/Google":330,"./components/hue/Hue":334,"./components/material/Material":336,"./components/photoshop/Photoshop":337,"./components/sketch/Sketch":343,"./components/slider/Slider":346,"./components/swatches/Swatches":350,"./components/twitter/Twitter":353}],361:[function(require,module,exports){ +(function (process){ +/** @license React v16.13.1 * react-is.development.js * * Copyright (c) Facebook, Inc. and its affiliates. @@ -11,7 +44621,184 @@ object-assign * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ -'use strict';'production'!==_0xbf4e44['env'][_0x4c789a('0x6d6')]&&function(){var _0x944293=_0x4c789a,_0x492f65=_0x944293('0xae9')==typeof Symbol&&Symbol[_0x944293('0xa1f')],_0x522262=_0x492f65?Symbol['for'](_0x944293('0xf8e')):0xeac7,_0x3f8244=_0x492f65?Symbol[_0x944293('0xa1f')](_0x944293('0xbcd')):0xeaca,_0x34bba0=_0x492f65?Symbol[_0x944293('0xa1f')](_0x944293('0xe4a')):0xeacb,_0x5801c8=_0x492f65?Symbol[_0x944293('0xa1f')](_0x944293('0x34e')):0xeacc,_0x240c3b=_0x492f65?Symbol[_0x944293('0xa1f')](_0x944293('0xa7')):0xead2,_0x41f1f4=_0x492f65?Symbol[_0x944293('0xa1f')](_0x944293('0x931')):0xeacd,_0x30130a=_0x492f65?Symbol[_0x944293('0xa1f')](_0x944293('0xb59')):0xeace,_0xfc088a=_0x492f65?Symbol['for'](_0x944293('0xf87')):0xeacf,_0x695c8e=_0x492f65?Symbol[_0x944293('0xa1f')](_0x944293('0xccc')):0xeacf,_0x2c1082=_0x492f65?Symbol['for']('react.forward_ref'):0xead0,_0x52cda6=_0x492f65?Symbol['for']('react.suspense'):0xead1,_0x1d682c=_0x492f65?Symbol[_0x944293('0xa1f')](_0x944293('0x71c')):0xead8,_0x554c06=_0x492f65?Symbol[_0x944293('0xa1f')](_0x944293('0xb3b')):0xead3,_0x3cc30a=_0x492f65?Symbol['for']('react.lazy'):0xead4,_0x4a4d09=_0x492f65?Symbol[_0x944293('0xa1f')](_0x944293('0xcb')):0xead9,_0x14c169=_0x492f65?Symbol[_0x944293('0xa1f')]('react.fundamental'):0xead5,_0x4fdf2c=_0x492f65?Symbol[_0x944293('0xa1f')](_0x944293('0x734')):0xead6,_0x20a171=_0x492f65?Symbol[_0x944293('0xa1f')]('react.scope'):0xead7;function _0x2cd0f7(_0x367702){var _0x59fbeb=_0x944293;if(_0x59fbeb('0x21e')==typeof _0x367702&&null!==_0x367702){var _0x51721e=_0x367702[_0x59fbeb('0x826')];switch(_0x51721e){case _0x522262:var _0x4c5cb9=_0x367702[_0x59fbeb('0x3f7')];switch(_0x4c5cb9){case _0xfc088a:case _0x695c8e:case _0x34bba0:case _0x240c3b:case _0x5801c8:case _0x52cda6:return _0x4c5cb9;default:var _0x108cc7=_0x4c5cb9&&_0x4c5cb9[_0x59fbeb('0x826')];switch(_0x108cc7){case _0x30130a:case _0x2c1082:case _0x3cc30a:case _0x554c06:case _0x41f1f4:return _0x108cc7;default:return _0x51721e;}}case _0x3f8244:return _0x51721e;}}}var _0x3eb674=_0xfc088a,_0x2cbf4a=_0x695c8e,_0x1573f8=_0x30130a,_0x4b0034=_0x41f1f4,_0x36e0f3=_0x522262,_0x434123=_0x2c1082,_0xe3f5fc=_0x34bba0,_0xe8ad2d=_0x3cc30a,_0x1fceac=_0x554c06,_0x2cdc73=_0x3f8244,_0x19788e=_0x240c3b,_0x15e5db=_0x5801c8,_0x467b78=_0x52cda6,_0x34e570=!0x1;function _0x258a3f(_0x1ce767){return _0x2cd0f7(_0x1ce767)===_0x695c8e;}_0x446703[_0x944293('0x859')]=_0x3eb674,_0x446703[_0x944293('0x10d1')]=_0x2cbf4a,_0x446703[_0x944293('0x858')]=_0x1573f8,_0x446703['ContextProvider']=_0x4b0034,_0x446703[_0x944293('0x532')]=_0x36e0f3,_0x446703[_0x944293('0x107')]=_0x434123,_0x446703[_0x944293('0x6f4')]=_0xe3f5fc,_0x446703[_0x944293('0xd85')]=_0xe8ad2d,_0x446703[_0x944293('0x379')]=_0x1fceac,_0x446703[_0x944293('0x26a')]=_0x2cdc73,_0x446703[_0x944293('0x118a')]=_0x19788e,_0x446703[_0x944293('0x80d')]=_0x15e5db,_0x446703[_0x944293('0x10b3')]=_0x467b78,_0x446703[_0x944293('0x720')]=function(_0x29c5eb){var _0x51279d=_0x944293;return _0x34e570||(_0x34e570=!0x0,console[_0x51279d('0x226')](_0x51279d('0x258'))),_0x258a3f(_0x29c5eb)||_0x2cd0f7(_0x29c5eb)===_0xfc088a;},_0x446703[_0x944293('0x555')]=_0x258a3f,_0x446703['isContextConsumer']=function(_0x2e9fd3){return _0x2cd0f7(_0x2e9fd3)===_0x30130a;},_0x446703[_0x944293('0x1012')]=function(_0x5c3ae3){return _0x2cd0f7(_0x5c3ae3)===_0x41f1f4;},_0x446703['isElement']=function(_0x378919){var _0x219ae6=_0x944293;return _0x219ae6('0x21e')==typeof _0x378919&&null!==_0x378919&&_0x378919['$$typeof']===_0x522262;},_0x446703[_0x944293('0x2ef')]=function(_0x482295){return _0x2cd0f7(_0x482295)===_0x2c1082;},_0x446703[_0x944293('0x7dd')]=function(_0x550d22){return _0x2cd0f7(_0x550d22)===_0x34bba0;},_0x446703['isLazy']=function(_0x378b8b){return _0x2cd0f7(_0x378b8b)===_0x3cc30a;},_0x446703[_0x944293('0x36')]=function(_0x3b37c6){return _0x2cd0f7(_0x3b37c6)===_0x554c06;},_0x446703[_0x944293('0x9fb')]=function(_0x329a39){return _0x2cd0f7(_0x329a39)===_0x3f8244;},_0x446703[_0x944293('0x9ac')]=function(_0x1a083b){return _0x2cd0f7(_0x1a083b)===_0x240c3b;},_0x446703[_0x944293('0x985')]=function(_0x4f819a){return _0x2cd0f7(_0x4f819a)===_0x5801c8;},_0x446703['isSuspense']=function(_0x3c82af){return _0x2cd0f7(_0x3c82af)===_0x52cda6;},_0x446703['isValidElementType']=function(_0x440b17){var _0x455831=_0x944293;return _0x455831('0x7c7')==typeof _0x440b17||_0x455831('0xae9')==typeof _0x440b17||_0x440b17===_0x34bba0||_0x440b17===_0x695c8e||_0x440b17===_0x240c3b||_0x440b17===_0x5801c8||_0x440b17===_0x52cda6||_0x440b17===_0x1d682c||'object'==typeof _0x440b17&&null!==_0x440b17&&(_0x440b17[_0x455831('0x826')]===_0x3cc30a||_0x440b17[_0x455831('0x826')]===_0x554c06||_0x440b17[_0x455831('0x826')]===_0x41f1f4||_0x440b17[_0x455831('0x826')]===_0x30130a||_0x440b17[_0x455831('0x826')]===_0x2c1082||_0x440b17['$$typeof']===_0x14c169||_0x440b17[_0x455831('0x826')]===_0x4fdf2c||_0x440b17[_0x455831('0x826')]===_0x20a171||_0x440b17[_0x455831('0x826')]===_0x4a4d09);},_0x446703[_0x944293('0x640')]=_0x2cd0f7;}();}[_0x393add('0x4b0')](this,_0x1d7ad2(_0x393add('0x11e'))));},{'_process':0x1}],0x16a:[function(_0x34a533,_0xcc6355,_0x34ccdc){var _0x40aeae=_0x404097;/** @license React v16.13.1 + +'use strict'; + + + +if (process.env.NODE_ENV !== "production") { + (function() { +'use strict'; + +// The Symbol used to tag the ReactElement-like types. If there is no native Symbol +// nor polyfill, then a plain number is used for performance. +var hasSymbol = typeof Symbol === 'function' && Symbol.for; +var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7; +var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca; +var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb; +var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc; +var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2; +var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd; +var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary +// (unstable) APIs that have been removed. Can we remove the symbols? + +var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf; +var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf; +var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0; +var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1; +var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8; +var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3; +var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4; +var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9; +var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5; +var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6; +var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7; + +function isValidElementType(type) { + return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill. + type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE); +} + +function typeOf(object) { + if (typeof object === 'object' && object !== null) { + var $$typeof = object.$$typeof; + + switch ($$typeof) { + case REACT_ELEMENT_TYPE: + var type = object.type; + + switch (type) { + case REACT_ASYNC_MODE_TYPE: + case REACT_CONCURRENT_MODE_TYPE: + case REACT_FRAGMENT_TYPE: + case REACT_PROFILER_TYPE: + case REACT_STRICT_MODE_TYPE: + case REACT_SUSPENSE_TYPE: + return type; + + default: + var $$typeofType = type && type.$$typeof; + + switch ($$typeofType) { + case REACT_CONTEXT_TYPE: + case REACT_FORWARD_REF_TYPE: + case REACT_LAZY_TYPE: + case REACT_MEMO_TYPE: + case REACT_PROVIDER_TYPE: + return $$typeofType; + + default: + return $$typeof; + } + + } + + case REACT_PORTAL_TYPE: + return $$typeof; + } + } + + return undefined; +} // AsyncMode is deprecated along with isAsyncMode + +var AsyncMode = REACT_ASYNC_MODE_TYPE; +var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE; +var ContextConsumer = REACT_CONTEXT_TYPE; +var ContextProvider = REACT_PROVIDER_TYPE; +var Element = REACT_ELEMENT_TYPE; +var ForwardRef = REACT_FORWARD_REF_TYPE; +var Fragment = REACT_FRAGMENT_TYPE; +var Lazy = REACT_LAZY_TYPE; +var Memo = REACT_MEMO_TYPE; +var Portal = REACT_PORTAL_TYPE; +var Profiler = REACT_PROFILER_TYPE; +var StrictMode = REACT_STRICT_MODE_TYPE; +var Suspense = REACT_SUSPENSE_TYPE; +var hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated + +function isAsyncMode(object) { + { + if (!hasWarnedAboutDeprecatedIsAsyncMode) { + hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint + + console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.'); + } + } + + return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE; +} +function isConcurrentMode(object) { + return typeOf(object) === REACT_CONCURRENT_MODE_TYPE; +} +function isContextConsumer(object) { + return typeOf(object) === REACT_CONTEXT_TYPE; +} +function isContextProvider(object) { + return typeOf(object) === REACT_PROVIDER_TYPE; +} +function isElement(object) { + return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; +} +function isForwardRef(object) { + return typeOf(object) === REACT_FORWARD_REF_TYPE; +} +function isFragment(object) { + return typeOf(object) === REACT_FRAGMENT_TYPE; +} +function isLazy(object) { + return typeOf(object) === REACT_LAZY_TYPE; +} +function isMemo(object) { + return typeOf(object) === REACT_MEMO_TYPE; +} +function isPortal(object) { + return typeOf(object) === REACT_PORTAL_TYPE; +} +function isProfiler(object) { + return typeOf(object) === REACT_PROFILER_TYPE; +} +function isStrictMode(object) { + return typeOf(object) === REACT_STRICT_MODE_TYPE; +} +function isSuspense(object) { + return typeOf(object) === REACT_SUSPENSE_TYPE; +} + +exports.AsyncMode = AsyncMode; +exports.ConcurrentMode = ConcurrentMode; +exports.ContextConsumer = ContextConsumer; +exports.ContextProvider = ContextProvider; +exports.Element = Element; +exports.ForwardRef = ForwardRef; +exports.Fragment = Fragment; +exports.Lazy = Lazy; +exports.Memo = Memo; +exports.Portal = Portal; +exports.Profiler = Profiler; +exports.StrictMode = StrictMode; +exports.Suspense = Suspense; +exports.isAsyncMode = isAsyncMode; +exports.isConcurrentMode = isConcurrentMode; +exports.isContextConsumer = isContextConsumer; +exports.isContextProvider = isContextProvider; +exports.isElement = isElement; +exports.isForwardRef = isForwardRef; +exports.isFragment = isFragment; +exports.isLazy = isLazy; +exports.isMemo = isMemo; +exports.isPortal = isPortal; +exports.isProfiler = isProfiler; +exports.isStrictMode = isStrictMode; +exports.isSuspense = isSuspense; +exports.isValidElementType = isValidElementType; +exports.typeOf = typeOf; + })(); +} + +}).call(this,require('_process')) + +},{"_process":1}],362:[function(require,module,exports){ +/** @license React v16.13.1 * react-is.production.min.js * * Copyright (c) Facebook, Inc. and its affiliates. @@ -19,4 +44806,2244 @@ object-assign * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ -'use strict';var _0x114cb2=_0x40aeae('0xae9')==typeof Symbol&&Symbol['for'],_0x10ec9e=_0x114cb2?Symbol['for'](_0x40aeae('0xf8e')):0xeac7,_0x496119=_0x114cb2?Symbol['for']('react.portal'):0xeaca,_0x3c664c=_0x114cb2?Symbol['for']('react.fragment'):0xeacb,_0x295c8c=_0x114cb2?Symbol['for']('react.strict_mode'):0xeacc,_0x4971f8=_0x114cb2?Symbol[_0x40aeae('0xa1f')](_0x40aeae('0xa7')):0xead2,_0x30159b=_0x114cb2?Symbol[_0x40aeae('0xa1f')](_0x40aeae('0x931')):0xeacd,_0x3ef375=_0x114cb2?Symbol[_0x40aeae('0xa1f')](_0x40aeae('0xb59')):0xeace,_0x5c7926=_0x114cb2?Symbol[_0x40aeae('0xa1f')]('react.async_mode'):0xeacf,_0x3656b6=_0x114cb2?Symbol[_0x40aeae('0xa1f')](_0x40aeae('0xccc')):0xeacf,_0x3f6bd1=_0x114cb2?Symbol[_0x40aeae('0xa1f')](_0x40aeae('0x843')):0xead0,_0x9af565=_0x114cb2?Symbol[_0x40aeae('0xa1f')](_0x40aeae('0x330')):0xead1,_0x3a5e8f=_0x114cb2?Symbol['for'](_0x40aeae('0x71c')):0xead8,_0xdf04e0=_0x114cb2?Symbol[_0x40aeae('0xa1f')](_0x40aeae('0xb3b')):0xead3,_0xc995e8=_0x114cb2?Symbol['for']('react.lazy'):0xead4,_0x2f720c=_0x114cb2?Symbol[_0x40aeae('0xa1f')]('react.block'):0xead9,_0x5345e0=_0x114cb2?Symbol[_0x40aeae('0xa1f')](_0x40aeae('0x7da')):0xead5,_0x3b4f29=_0x114cb2?Symbol[_0x40aeae('0xa1f')](_0x40aeae('0x734')):0xead6,_0x2b6c52=_0x114cb2?Symbol[_0x40aeae('0xa1f')](_0x40aeae('0x6ec')):0xead7;function _0x243665(_0x27c162){var _0x477e20=_0x40aeae;if(_0x477e20('0x21e')==typeof _0x27c162&&null!==_0x27c162){var _0x2a3e19=_0x27c162[_0x477e20('0x826')];switch(_0x2a3e19){case _0x10ec9e:switch(_0x27c162=_0x27c162[_0x477e20('0x3f7')]){case _0x5c7926:case _0x3656b6:case _0x3c664c:case _0x4971f8:case _0x295c8c:case _0x9af565:return _0x27c162;default:switch(_0x27c162=_0x27c162&&_0x27c162['$$typeof']){case _0x3ef375:case _0x3f6bd1:case _0xc995e8:case _0xdf04e0:case _0x30159b:return _0x27c162;default:return _0x2a3e19;}}case _0x496119:return _0x2a3e19;}}}function _0x1a9aba(_0x486494){return _0x243665(_0x486494)===_0x3656b6;}_0x34ccdc[_0x40aeae('0x859')]=_0x5c7926,_0x34ccdc['ConcurrentMode']=_0x3656b6,_0x34ccdc['ContextConsumer']=_0x3ef375,_0x34ccdc['ContextProvider']=_0x30159b,_0x34ccdc[_0x40aeae('0x532')]=_0x10ec9e,_0x34ccdc['ForwardRef']=_0x3f6bd1,_0x34ccdc[_0x40aeae('0x6f4')]=_0x3c664c,_0x34ccdc['Lazy']=_0xc995e8,_0x34ccdc[_0x40aeae('0x379')]=_0xdf04e0,_0x34ccdc[_0x40aeae('0x26a')]=_0x496119,_0x34ccdc['Profiler']=_0x4971f8,_0x34ccdc[_0x40aeae('0x80d')]=_0x295c8c,_0x34ccdc['Suspense']=_0x9af565,_0x34ccdc[_0x40aeae('0x720')]=function(_0x5d2a04){return _0x1a9aba(_0x5d2a04)||_0x243665(_0x5d2a04)===_0x5c7926;},_0x34ccdc[_0x40aeae('0x555')]=_0x1a9aba,_0x34ccdc[_0x40aeae('0xcb0')]=function(_0xccad5c){return _0x243665(_0xccad5c)===_0x3ef375;},_0x34ccdc[_0x40aeae('0x1012')]=function(_0x60aaf6){return _0x243665(_0x60aaf6)===_0x30159b;},_0x34ccdc[_0x40aeae('0x2d2')]=function(_0x151e8f){var _0x52a93a=_0x40aeae;return'object'==typeof _0x151e8f&&null!==_0x151e8f&&_0x151e8f[_0x52a93a('0x826')]===_0x10ec9e;},_0x34ccdc[_0x40aeae('0x2ef')]=function(_0x259e91){return _0x243665(_0x259e91)===_0x3f6bd1;},_0x34ccdc['isFragment']=function(_0x45cf2b){return _0x243665(_0x45cf2b)===_0x3c664c;},_0x34ccdc[_0x40aeae('0x82b')]=function(_0x4afcda){return _0x243665(_0x4afcda)===_0xc995e8;},_0x34ccdc[_0x40aeae('0x36')]=function(_0x53df21){return _0x243665(_0x53df21)===_0xdf04e0;},_0x34ccdc[_0x40aeae('0x9fb')]=function(_0x32b2c2){return _0x243665(_0x32b2c2)===_0x496119;},_0x34ccdc[_0x40aeae('0x9ac')]=function(_0x1ad96f){return _0x243665(_0x1ad96f)===_0x4971f8;},_0x34ccdc[_0x40aeae('0x985')]=function(_0x40b91f){return _0x243665(_0x40b91f)===_0x295c8c;},_0x34ccdc[_0x40aeae('0xd21')]=function(_0x5a5405){return _0x243665(_0x5a5405)===_0x9af565;},_0x34ccdc['isValidElementType']=function(_0x19de46){var _0x1ead0c=_0x40aeae;return _0x1ead0c('0x7c7')==typeof _0x19de46||'function'==typeof _0x19de46||_0x19de46===_0x3c664c||_0x19de46===_0x3656b6||_0x19de46===_0x4971f8||_0x19de46===_0x295c8c||_0x19de46===_0x9af565||_0x19de46===_0x3a5e8f||_0x1ead0c('0x21e')==typeof _0x19de46&&null!==_0x19de46&&(_0x19de46[_0x1ead0c('0x826')]===_0xc995e8||_0x19de46[_0x1ead0c('0x826')]===_0xdf04e0||_0x19de46[_0x1ead0c('0x826')]===_0x30159b||_0x19de46[_0x1ead0c('0x826')]===_0x3ef375||_0x19de46[_0x1ead0c('0x826')]===_0x3f6bd1||_0x19de46[_0x1ead0c('0x826')]===_0x5345e0||_0x19de46[_0x1ead0c('0x826')]===_0x3b4f29||_0x19de46['$$typeof']===_0x2b6c52||_0x19de46[_0x1ead0c('0x826')]===_0x2f720c);},_0x34ccdc[_0x40aeae('0x640')]=_0x243665;},{}],0x16b:[function(_0x1affae,_0x36e375,_0x56422e){var _0x5cee93=_0x404097;(function(_0x330fdc){var _0x463324=_0x3ab6;'use strict';'production'===_0x330fdc[_0x463324('0x1179')][_0x463324('0x6d6')]?_0x36e375[_0x463324('0xddc')]=_0x1affae(_0x463324('0xc5b')):_0x36e375[_0x463324('0xddc')]=_0x1affae('./cjs/react-is.development.js');}[_0x5cee93('0x4b0')](this,_0x1affae(_0x5cee93('0x11e'))));},{'./cjs/react-is.development.js':0x169,'./cjs/react-is.production.min.js':0x16a,'_process':0x1}],0x16c:[function(_0x10660a,_0x5413dd,_0xc36eb){!function(_0x45d5d9,_0x6f5c37){var _0x33cf4c=_0x3ab6;_0x33cf4c('0x21e')==typeof _0xc36eb&&_0x33cf4c('0x21e')==typeof _0x5413dd?_0x5413dd['exports']=_0x6f5c37(_0x10660a(_0x33cf4c('0xb37')),_0x10660a(_0x33cf4c('0x1041')),_0x10660a(_0x33cf4c('0x211')),_0x10660a(_0x33cf4c('0x3d'))):_0x33cf4c('0xae9')==typeof define&&define['amd']?define([_0x33cf4c('0xb37'),'react','signature_pad',_0x33cf4c('0x3d')],_0x6f5c37):'object'==typeof _0xc36eb?_0xc36eb[_0x33cf4c('0x1094')]=_0x6f5c37(_0x10660a(_0x33cf4c('0xb37')),_0x10660a('react'),_0x10660a('signature_pad'),_0x10660a(_0x33cf4c('0x3d'))):_0x45d5d9[_0x33cf4c('0x1094')]=_0x6f5c37(_0x45d5d9[_0x33cf4c('0xb37')],_0x45d5d9['react'],_0x45d5d9[_0x33cf4c('0x211')],_0x45d5d9[_0x33cf4c('0x3d')]);}(this,function(_0x5df377,_0x5a5476,_0x49e5f4,_0xa9f67){return function(_0x480eca){function _0x5b80c0(_0x404168){var _0x55d699=_0x3ab6;if(_0x7c9667[_0x404168])return _0x7c9667[_0x404168][_0x55d699('0xddc')];var _0x24167a=_0x7c9667[_0x404168]={'exports':{},'id':_0x404168,'loaded':!0x1};return _0x480eca[_0x404168][_0x55d699('0x4b0')](_0x24167a[_0x55d699('0xddc')],_0x24167a,_0x24167a[_0x55d699('0xddc')],_0x5b80c0),_0x24167a['loaded']=!0x0,_0x24167a[_0x55d699('0xddc')];}var _0x7c9667={};return _0x5b80c0['m']=_0x480eca,_0x5b80c0['c']=_0x7c9667,_0x5b80c0['p']='',_0x5b80c0(0x0);}([function(_0x5453c1,_0x5f00a7,_0x5a2cfb){var _0x15a324=_0x3ab6;'use strict';function _0x437a68(_0x2c6326){var _0x152006=_0x3ab6;return _0x2c6326&&_0x2c6326[_0x152006('0x114c')]?_0x2c6326:{'default':_0x2c6326};}function _0x5128ba(_0x5c18c2,_0x30c625){var _0x560003=_0x3ab6,_0x42cbe5={};for(var _0x3c88bf in _0x5c18c2)_0x30c625['indexOf'](_0x3c88bf)>=0x0||Object['prototype'][_0x560003('0x100')]['call'](_0x5c18c2,_0x3c88bf)&&(_0x42cbe5[_0x3c88bf]=_0x5c18c2[_0x3c88bf]);return _0x42cbe5;}function _0x58a8ac(_0x44aeaf,_0x555519){var _0x64acc0=_0x3ab6;if(!(_0x44aeaf instanceof _0x555519))throw new TypeError(_0x64acc0('0x202'));}function _0x2e2619(_0x3be005,_0x46cb51){var _0x463325=_0x3ab6;if(!_0x3be005)throw new ReferenceError(_0x463325('0x2e9'));return!_0x46cb51||_0x463325('0x21e')!=typeof _0x46cb51&&_0x463325('0xae9')!=typeof _0x46cb51?_0x3be005:_0x46cb51;}Object['defineProperty'](_0x5f00a7,'__esModule',{'value':!0x0});var _0x563df4=Object[_0x15a324('0xc7d')]||function(_0x1c9534){var _0x3053a6=_0x15a324;for(var _0x3a7322=0x1;_0x3a73220x1&&void 0x0!==arguments[0x1]?arguments[0x1]:'span';return function(_0x2f3c19){function _0x3a1093(){var _0x52ff87=_0x3ab6,_0x37a793,_0x2e1316,_0x5a83ef;_0x41fcd9(this,_0x3a1093);for(var _0x2f87cf=arguments[_0x52ff87('0x525')],_0x5c392c=Array(_0x2f87cf),_0x29b05a=0x0;_0x29b05a<_0x2f87cf;_0x29b05a++)_0x5c392c[_0x29b05a]=arguments[_0x29b05a];return _0x2e1316=_0x5a83ef=_0x4194db(this,(_0x37a793=_0x3a1093['__proto__']||Object[_0x52ff87('0x10c0')](_0x3a1093))['call'][_0x52ff87('0x1036')](_0x37a793,[this]['concat'](_0x5c392c))),_0x5a83ef[_0x52ff87('0xfff')]={'active':!0x1},_0x5a83ef[_0x52ff87('0xba4')]=function(){return _0x5a83ef['setState']({'active':!0x0});},_0x5a83ef[_0x52ff87('0x383')]=function(){var _0x3e8b14=_0x52ff87;return _0x5a83ef[_0x3e8b14('0x32b')]({'active':!0x1});},_0x5a83ef[_0x52ff87('0x80f')]=function(){var _0x24b03e=_0x52ff87;return _0x151c29['default'][_0x24b03e('0xd0f')](_0x56bcd6,{'onMouseDown':_0x5a83ef[_0x24b03e('0xba4')],'onMouseUp':_0x5a83ef[_0x24b03e('0x383')]},_0x151c29['default'][_0x24b03e('0xd0f')](_0x142c84,_0xed2c5a({},_0x5a83ef['props'],_0x5a83ef[_0x24b03e('0xfff')])));},_0x4194db(_0x5a83ef,_0x2e1316);}return _0xd23c06(_0x3a1093,_0x2f3c19),_0x3a1093;}(_0x151c29[_0x1d79b3('0x544')]['Component']);};_0x212b16[_0x378e51('0x544')]=_0x2bf8d4;},{'react':_0x404097('0x1041')}],0x16f:[function(_0x393ea2,_0x298100,_0x5861ec){var _0x34c0b8=_0x404097;'use strict';Object[_0x34c0b8('0xa95')](_0x5861ec,_0x34c0b8('0x114c'),{'value':!0x0}),_0x5861ec[_0x34c0b8('0x28f')]=void 0x0;var _0x314647,_0x27311b=Object['assign']||function(_0x1da8fc){var _0x5e1377=_0x34c0b8;for(var _0x1c3208=0x1;_0x1c32080x1&&void 0x0!==arguments[0x1]?arguments[0x1]:_0x108a5b('0xd9');return function(_0x26dab3){function _0x43cca(){var _0x2f4fcd=_0x3ab6,_0x23dc94,_0xdfe11b,_0x4362c4;_0x5d364f(this,_0x43cca);for(var _0x1bbb13=arguments['length'],_0x2621d5=Array(_0x1bbb13),_0x48c89a=0x0;_0x48c89a<_0x1bbb13;_0x48c89a++)_0x2621d5[_0x48c89a]=arguments[_0x48c89a];return _0xdfe11b=_0x4362c4=_0x294632(this,(_0x23dc94=_0x43cca[_0x2f4fcd('0x11e6')]||Object[_0x2f4fcd('0x10c0')](_0x43cca))[_0x2f4fcd('0x4b0')][_0x2f4fcd('0x1036')](_0x23dc94,[this]['concat'](_0x2621d5))),_0x4362c4['state']={'hover':!0x1},_0x4362c4[_0x2f4fcd('0xbe')]=function(){return _0x4362c4['setState']({'hover':!0x0});},_0x4362c4[_0x2f4fcd('0xd25')]=function(){return _0x4362c4['setState']({'hover':!0x1});},_0x4362c4[_0x2f4fcd('0x80f')]=function(){var _0x48addf=_0x2f4fcd;return _0x2fe0b4['default'][_0x48addf('0xd0f')](_0x150123,{'onMouseOver':_0x4362c4['handleMouseOver'],'onMouseOut':_0x4362c4['handleMouseOut']},_0x2fe0b4['default'][_0x48addf('0xd0f')](_0x50774a,_0x27311b({},_0x4362c4[_0x48addf('0x6e0')],_0x4362c4[_0x48addf('0xfff')])));},_0x294632(_0x4362c4,_0xdfe11b);}return _0x43e803(_0x43cca,_0x26dab3),_0x43cca;}(_0x2fe0b4['default'][_0x108a5b('0x346')]);};_0x5861ec[_0x34c0b8('0x544')]=_0x5881aa;},{'react':_0x404097('0x1041')}],0x170:[function(_0x4e9cd2,_0x134024,_0x436935){var _0x10cd6c=_0x404097;'use strict';Object['defineProperty'](_0x436935,_0x10cd6c('0x114c'),{'value':!0x0}),_0x436935[_0x10cd6c('0x92a')]=void 0x0;var _0x46c38e=_0x200c77(_0x4e9cd2('lodash/isString')),_0xe32443=_0x200c77(_0x4e9cd2(_0x10cd6c('0x82a'))),_0x3defe9=_0x200c77(_0x4e9cd2(_0x10cd6c('0x91'))),_0x36b094=_0x200c77(_0x4e9cd2(_0x10cd6c('0x113')));function _0x200c77(_0x38c6cc){var _0x16ffd2=_0x10cd6c;return _0x38c6cc&&_0x38c6cc[_0x16ffd2('0x114c')]?_0x38c6cc:{'default':_0x38c6cc};}var _0x1dfd8c=_0x436935[_0x10cd6c('0x92a')]=function _0xc9b319(){var _0x45e7bc=_0x10cd6c,_0x9b9af1=arguments[_0x45e7bc('0x525')]>0x0&&void 0x0!==arguments[0x0]?arguments[0x0]:[],_0x546642=[];return(0x0,_0x36b094['default'])(_0x9b9af1,function(_0x1eca6b){var _0x57b917=_0x45e7bc;Array['isArray'](_0x1eca6b)?_0xc9b319(_0x1eca6b)[_0x57b917('0xd49')](function(_0x8a22ef){return _0x546642['push'](_0x8a22ef);}):(0x0,_0x3defe9[_0x57b917('0x544')])(_0x1eca6b)?(0x0,_0xe32443[_0x57b917('0x544')])(_0x1eca6b,function(_0x11a158,_0x4f37a4){var _0x15d825=_0x57b917;!0x0===_0x11a158&&_0x546642[_0x15d825('0x8f8')](_0x4f37a4),_0x546642[_0x15d825('0x8f8')](_0x4f37a4+'-'+_0x11a158);}):(0x0,_0x46c38e[_0x57b917('0x544')])(_0x1eca6b)&&_0x546642['push'](_0x1eca6b);}),_0x546642;};_0x436935[_0x10cd6c('0x544')]=_0x1dfd8c;},{'lodash/forOwn':0x10a,'lodash/isPlainObject':0x118,'lodash/isString':0x11a,'lodash/map':0x120}],0x171:[function(_0x1e8805,_0x46efd8,_0x3c655b){var _0x22e2e9=_0x404097;'use strict';Object[_0x22e2e9('0xa95')](_0x3c655b,_0x22e2e9('0x114c'),{'value':!0x0}),_0x3c655b[_0x22e2e9('0x891')]=_0x3c655b['loop']=_0x3c655b[_0x22e2e9('0x893')]=_0x3c655b[_0x22e2e9('0x2e3')]=_0x3c655b[_0x22e2e9('0x28f')]=void 0x0;var _0x1127cc=_0x3bda2b(_0x1e8805(_0x22e2e9('0x43d'))),_0x186897=_0x3bda2b(_0x1e8805(_0x22e2e9('0xde8'))),_0x161d6f=_0x3bda2b(_0x1e8805('./autoprefix')),_0x2194c9=_0x3bda2b(_0x1e8805(_0x22e2e9('0x290'))),_0x586deb=_0x3bda2b(_0x1e8805(_0x22e2e9('0xd38'))),_0x33e0bc=_0x3bda2b(_0x1e8805('./loop'));function _0x3bda2b(_0x236e2c){return _0x236e2c&&_0x236e2c['__esModule']?_0x236e2c:{'default':_0x236e2c};}_0x3c655b[_0x22e2e9('0x28f')]=_0x2194c9[_0x22e2e9('0x544')],_0x3c655b['handleHover']=_0x2194c9[_0x22e2e9('0x544')],_0x3c655b[_0x22e2e9('0x893')]=_0x586deb[_0x22e2e9('0x544')],_0x3c655b[_0x22e2e9('0x3c5')]=_0x33e0bc[_0x22e2e9('0x544')];var _0x464c4f=_0x3c655b[_0x22e2e9('0x891')]=function(_0x2138dc){var _0x2876b5=_0x22e2e9;for(var _0x2544c6=arguments[_0x2876b5('0x525')],_0x41e2e5=Array(_0x2544c6>0x1?_0x2544c6-0x1:0x0),_0x3a6f6c=0x1;_0x3a6f6c<_0x2544c6;_0x3a6f6c++)_0x41e2e5[_0x3a6f6c-0x1]=arguments[_0x3a6f6c];var _0x1f5ad7=(0x0,_0x1127cc[_0x2876b5('0x544')])(_0x41e2e5),_0x5bfcd3=(0x0,_0x186897['default'])(_0x2138dc,_0x1f5ad7);return(0x0,_0x161d6f[_0x2876b5('0x544')])(_0x5bfcd3);};_0x3c655b[_0x22e2e9('0x544')]=_0x464c4f;},{'./autoprefix':0x16d,'./components/active':0x16e,'./components/hover':0x16f,'./flattenNames':0x170,'./loop':0x172,'./mergeClasses':0x173}],0x172:[function(_0x532114,_0x45eac4,_0x32532a){var _0x129aa7=_0x404097;'use strict';Object[_0x129aa7('0xa95')](_0x32532a,_0x129aa7('0x114c'),{'value':!0x0}),_0x32532a['default']=function(_0x5be1e3,_0x1a7194){var _0x4f0165=_0x129aa7,_0x50eaec={},_0x3e4e1e=function(_0xe12d2e){var _0x1199be=_0x3ab6,_0x238266=!(arguments[_0x1199be('0x525')]>0x1&&void 0x0!==arguments[0x1])||arguments[0x1];_0x50eaec[_0xe12d2e]=_0x238266;};return 0x0===_0x5be1e3&&_0x3e4e1e(_0x4f0165('0xc12')),_0x5be1e3===_0x1a7194-0x1&&_0x3e4e1e(_0x4f0165('0xd1b')),(0x0===_0x5be1e3||_0x5be1e3%0x2==0x0)&&_0x3e4e1e(_0x4f0165('0xdd')),0x1===Math[_0x4f0165('0x74f')](_0x5be1e3%0x2)&&_0x3e4e1e('odd'),_0x3e4e1e(_0x4f0165('0x89'),_0x5be1e3),_0x50eaec;};},{}],0x173:[function(_0xee3bbf,_0x3a6c8c,_0x9276e7){var _0x811267=_0x404097;'use strict';Object[_0x811267('0xa95')](_0x9276e7,_0x811267('0x114c'),{'value':!0x0}),_0x9276e7[_0x811267('0x186')]=void 0x0;var _0xb1ad80=_0x23f189(_0xee3bbf(_0x811267('0x82a'))),_0x535a9f=_0x23f189(_0xee3bbf(_0x811267('0x108'))),_0x1cef3e=Object['assign']||function(_0x1162f9){var _0x2387db=_0x811267;for(var _0x4238a6=0x1;_0x4238a60x1&&void 0x0!==arguments[0x1]?arguments[0x1]:[],_0x3c79ea=_0x2bf087[_0x47a423('0x544')]&&(0x0,_0x535a9f[_0x47a423('0x544')])(_0x2bf087[_0x47a423('0x544')])||{};return _0x137db[_0x47a423('0xd49')](function(_0x12bb3d){var _0x17ab89=_0x47a423,_0x27ec0c=_0x2bf087[_0x12bb3d];return _0x27ec0c&&(0x0,_0xb1ad80[_0x17ab89('0x544')])(_0x27ec0c,function(_0x3bef2b,_0xba2985){_0x3c79ea[_0xba2985]||(_0x3c79ea[_0xba2985]={}),_0x3c79ea[_0xba2985]=_0x1cef3e({},_0x3c79ea[_0xba2985],_0x27ec0c[_0xba2985]);}),_0x12bb3d;}),_0x3c79ea;};_0x9276e7['default']=_0x1be937;},{'lodash/cloneDeep':0x104,'lodash/forOwn':0x10a}],0x174:[function(_0x5a7d4c,_0x566f9d,_0x4a81a7){!function(_0x16c274,_0x16a588){var _0x48dae7=_0x3ab6;'object'==typeof _0x4a81a7&&void 0x0!==_0x566f9d?_0x566f9d[_0x48dae7('0xddc')]=_0x16a588():_0x48dae7('0xae9')==typeof define&&define[_0x48dae7('0x733')]?define(_0x16a588):_0x16c274[_0x48dae7('0x5a2')]=_0x16a588();}(this,function(){var _0x4bc041=_0x3ab6;'use strict';function _0x4d7fcc(_0x1d9986,_0x1ccd9e,_0x54b432){var _0x1e2520=_0x3ab6;this['x']=_0x1d9986,this['y']=_0x1ccd9e,this[_0x1e2520('0x918')]=_0x54b432||new Date()[_0x1e2520('0xa5d')]();}function _0x5318dd(_0x1e4410,_0x3c9aea,_0x3330a3,_0x30cced){var _0x3a1c50=_0x3ab6;this[_0x3a1c50('0xa9d')]=_0x1e4410,this[_0x3a1c50('0xbbe')]=_0x3c9aea,this[_0x3a1c50('0x913')]=_0x3330a3,this[_0x3a1c50('0x4ea')]=_0x30cced;}function _0x4fa68e(_0x608cc,_0x33766c){var _0x5bf5af=_0x3ab6,_0x219ed9=this,_0x149d5d=_0x33766c||{};this['velocityFilterWeight']=_0x149d5d[_0x5bf5af('0xfd5')]||0.7,this['minWidth']=_0x149d5d[_0x5bf5af('0xc6')]||0.5,this[_0x5bf5af('0x9e7')]=_0x149d5d[_0x5bf5af('0x9e7')]||2.5,this[_0x5bf5af('0x10bf')]='throttle'in _0x149d5d?_0x149d5d['throttle']:0x10,this[_0x5bf5af('0xc76')]=_0x5bf5af('0xc76')in _0x149d5d?_0x149d5d[_0x5bf5af('0xc76')]:0x5,this[_0x5bf5af('0x10bf')]?this['_strokeMoveUpdate']=function(_0x29de73,_0x30eaa5,_0x29c5fd){var _0x50bc96,_0x1b9717,_0x4ce421,_0x16abff=null,_0x5e3440=0x0;_0x29c5fd||(_0x29c5fd={});var _0x52e606=function(){var _0x4d6448=_0x3ab6;_0x5e3440=!0x1===_0x29c5fd[_0x4d6448('0xb11')]?0x0:Date[_0x4d6448('0x6ce')](),_0x16abff=null,_0x4ce421=_0x29de73[_0x4d6448('0x1036')](_0x50bc96,_0x1b9717),_0x16abff||(_0x50bc96=_0x1b9717=null);};return function(){var _0x2cb105=_0x3ab6,_0x5eca1d=Date['now']();_0x5e3440||!0x1!==_0x29c5fd[_0x2cb105('0xb11')]||(_0x5e3440=_0x5eca1d);var _0x5757b4=_0x30eaa5-(_0x5eca1d-_0x5e3440);return _0x50bc96=this,_0x1b9717=arguments,_0x5757b4<=0x0||_0x5757b4>_0x30eaa5?(_0x16abff&&(clearTimeout(_0x16abff),_0x16abff=null),_0x5e3440=_0x5eca1d,_0x4ce421=_0x29de73[_0x2cb105('0x1036')](_0x50bc96,_0x1b9717),_0x16abff||(_0x50bc96=_0x1b9717=null)):_0x16abff||!0x1===_0x29c5fd[_0x2cb105('0xdb5')]||(_0x16abff=setTimeout(_0x52e606,_0x5757b4)),_0x4ce421;};}(_0x4fa68e[_0x5bf5af('0x98c')][_0x5bf5af('0xa22')],this['throttle']):this[_0x5bf5af('0x267')]=_0x4fa68e[_0x5bf5af('0x98c')][_0x5bf5af('0xa22')],this[_0x5bf5af('0x1093')]=_0x149d5d['dotSize']||function(){var _0x5eeb3d=_0x5bf5af;return(this[_0x5eeb3d('0xc6')]+this['maxWidth'])/0x2;},this[_0x5bf5af('0x95c')]=_0x149d5d[_0x5bf5af('0x95c')]||'black',this[_0x5bf5af('0x9c7')]=_0x149d5d['backgroundColor']||_0x5bf5af('0xf08'),this['onBegin']=_0x149d5d[_0x5bf5af('0x43f')],this[_0x5bf5af('0xc56')]=_0x149d5d[_0x5bf5af('0xc56')],this[_0x5bf5af('0x292')]=_0x608cc,this['_ctx']=_0x608cc['getContext']('2d'),this[_0x5bf5af('0xedd')](),this['_handleMouseDown']=function(_0x20ec5f){var _0x187ac0=_0x5bf5af;0x1===_0x20ec5f[_0x187ac0('0x789')]&&(_0x219ed9[_0x187ac0('0xb51')]=!0x0,_0x219ed9[_0x187ac0('0x72d')](_0x20ec5f));},this[_0x5bf5af('0x266')]=function(_0x28a42a){var _0x2b2704=_0x5bf5af;_0x219ed9[_0x2b2704('0xb51')]&&_0x219ed9[_0x2b2704('0x267')](_0x28a42a);},this[_0x5bf5af('0x30')]=function(_0x56adbe){var _0x1b7e4f=_0x5bf5af;0x1===_0x56adbe[_0x1b7e4f('0x789')]&&_0x219ed9['_mouseButtonDown']&&(_0x219ed9[_0x1b7e4f('0xb51')]=!0x1,_0x219ed9[_0x1b7e4f('0xf0f')](_0x56adbe));},this[_0x5bf5af('0x7b3')]=function(_0x4f2fc7){var _0x593d2b=_0x5bf5af;if(0x1===_0x4f2fc7[_0x593d2b('0x1037')][_0x593d2b('0x525')]){var _0x1f3dd4=_0x4f2fc7[_0x593d2b('0x934')][0x0];_0x219ed9[_0x593d2b('0x72d')](_0x1f3dd4);}},this['_handleTouchMove']=function(_0x3801e4){var _0x7017d4=_0x5bf5af;_0x3801e4[_0x7017d4('0xb65')]();var _0x3f33c4=_0x3801e4[_0x7017d4('0x1037')][0x0];_0x219ed9[_0x7017d4('0x267')](_0x3f33c4);},this[_0x5bf5af('0x3d0')]=function(_0x71c2c3){var _0x2aebcc=_0x5bf5af;_0x71c2c3['target']===_0x219ed9[_0x2aebcc('0x292')]&&(_0x71c2c3[_0x2aebcc('0xb65')](),_0x219ed9[_0x2aebcc('0xf0f')](_0x71c2c3));},this['on']();}return _0x4d7fcc['prototype'][_0x4bc041('0xf7a')]=function(_0x116155){var _0x20df4b=_0x4bc041;return this['time']!==_0x116155[_0x20df4b('0x918')]?this[_0x20df4b('0xb9f')](_0x116155)/(this['time']-_0x116155[_0x20df4b('0x918')]):0x1;},_0x4d7fcc[_0x4bc041('0x98c')][_0x4bc041('0xb9f')]=function(_0xa27768){var _0x5891ff=_0x4bc041;return Math[_0x5891ff('0xd35')](Math[_0x5891ff('0xf78')](this['x']-_0xa27768['x'],0x2)+Math[_0x5891ff('0xf78')](this['y']-_0xa27768['y'],0x2));},_0x4d7fcc[_0x4bc041('0x98c')][_0x4bc041('0xdd4')]=function(_0x4c3eb2){var _0x5c84de=_0x4bc041;return this['x']===_0x4c3eb2['x']&&this['y']===_0x4c3eb2['y']&&this[_0x5c84de('0x918')]===_0x4c3eb2['time'];},_0x5318dd['prototype'][_0x4bc041('0x525')]=function(){var _0x42efff=_0x4bc041;for(var _0x303043=0x0,_0xac2173=void 0x0,_0x1b3539=void 0x0,_0x4e4e31=0x0;_0x4e4e31<=0xa;_0x4e4e31+=0x1){var _0x92868d=_0x4e4e31/0xa,_0x34611e=this['_point'](_0x92868d,this[_0x42efff('0xa9d')]['x'],this[_0x42efff('0xbbe')]['x'],this[_0x42efff('0x913')]['x'],this[_0x42efff('0x4ea')]['x']),_0x51a25b=this['_point'](_0x92868d,this[_0x42efff('0xa9d')]['y'],this['control1']['y'],this[_0x42efff('0x913')]['y'],this[_0x42efff('0x4ea')]['y']);if(_0x4e4e31>0x0){var _0x2bae66=_0x34611e-_0xac2173,_0x59db86=_0x51a25b-_0x1b3539;_0x303043+=Math[_0x42efff('0xd35')](_0x2bae66*_0x2bae66+_0x59db86*_0x59db86);}_0xac2173=_0x34611e,_0x1b3539=_0x51a25b;}return _0x303043;},_0x5318dd[_0x4bc041('0x98c')][_0x4bc041('0xa97')]=function(_0x5d6f49,_0x2a167a,_0x5f4281,_0x1af754,_0x37af65){return _0x2a167a*(0x1-_0x5d6f49)*(0x1-_0x5d6f49)*(0x1-_0x5d6f49)+0x3*_0x5f4281*(0x1-_0x5d6f49)*(0x1-_0x5d6f49)*_0x5d6f49+0x3*_0x1af754*(0x1-_0x5d6f49)*_0x5d6f49*_0x5d6f49+_0x37af65*_0x5d6f49*_0x5d6f49*_0x5d6f49;},_0x4fa68e[_0x4bc041('0x98c')][_0x4bc041('0xedd')]=function(){var _0x38a845=_0x4bc041,_0x35bbbc=this[_0x38a845('0xa7d')],_0x193ad=this['_canvas'];_0x35bbbc[_0x38a845('0x472')]=this[_0x38a845('0x9c7')],_0x35bbbc[_0x38a845('0xd9c')](0x0,0x0,_0x193ad[_0x38a845('0xa7b')],_0x193ad[_0x38a845('0x7f0')]),_0x35bbbc['fillRect'](0x0,0x0,_0x193ad[_0x38a845('0xa7b')],_0x193ad[_0x38a845('0x7f0')]),this[_0x38a845('0xbdb')]=[],this[_0x38a845('0xaf9')](),this[_0x38a845('0x8fa')]=!0x0;},_0x4fa68e[_0x4bc041('0x98c')][_0x4bc041('0x9c0')]=function(_0xa0eaa){var _0x112936=_0x4bc041,_0x33a9e5=this,_0x4dec53=arguments[_0x112936('0x525')]>0x1&&void 0x0!==arguments[0x1]?arguments[0x1]:{},_0x3896ab=new Image(),_0x318744=_0x4dec53[_0x112936('0xbf1')]||window[_0x112936('0x8ec')]||0x1,_0x1ad49a=_0x4dec53['width']||this[_0x112936('0x292')][_0x112936('0xa7b')]/_0x318744,_0x19bf40=_0x4dec53['height']||this['_canvas'][_0x112936('0x7f0')]/_0x318744;this[_0x112936('0xaf9')](),_0x3896ab[_0x112936('0xce8')]=_0xa0eaa,_0x3896ab[_0x112936('0x9ad')]=function(){var _0x3e8e38=_0x112936;_0x33a9e5['_ctx'][_0x3e8e38('0xda7')](_0x3896ab,0x0,0x0,_0x1ad49a,_0x19bf40);},this[_0x112936('0x8fa')]=!0x1;},_0x4fa68e[_0x4bc041('0x98c')][_0x4bc041('0x8c7')]=function(_0x2a89b7){var _0x387af2=_0x4bc041,_0x2306e8;switch(_0x2a89b7){case _0x387af2('0x1a3'):return this[_0x387af2('0x15e')]();default:for(var _0x1d74d6=arguments[_0x387af2('0x525')],_0x1d7a62=Array(_0x1d74d6>0x1?_0x1d74d6-0x1:0x0),_0x3b4db1=0x1;_0x3b4db1<_0x1d74d6;_0x3b4db1++)_0x1d7a62[_0x3b4db1-0x1]=arguments[_0x3b4db1];return(_0x2306e8=this[_0x387af2('0x292')])[_0x387af2('0x8c7')][_0x387af2('0x1036')](_0x2306e8,[_0x2a89b7]['concat'](_0x1d7a62));}},_0x4fa68e['prototype']['on']=function(){var _0x474d1f=_0x4bc041;this['_handleMouseEvents'](),this[_0x474d1f('0xdc6')]();},_0x4fa68e[_0x4bc041('0x98c')][_0x4bc041('0xc1f')]=function(){var _0x405ded=_0x4bc041;this[_0x405ded('0x292')][_0x405ded('0x113b')](_0x405ded('0x9ff'),this[_0x405ded('0x116f')]),this[_0x405ded('0x292')][_0x405ded('0x113b')](_0x405ded('0x4ad'),this[_0x405ded('0x266')]),document['removeEventListener'](_0x405ded('0xd66'),this[_0x405ded('0x30')]),this[_0x405ded('0x292')][_0x405ded('0x113b')](_0x405ded('0x897'),this['_handleTouchStart']),this[_0x405ded('0x292')][_0x405ded('0x113b')](_0x405ded('0x996'),this[_0x405ded('0x1065')]),this[_0x405ded('0x292')][_0x405ded('0x113b')](_0x405ded('0xc6f'),this[_0x405ded('0x3d0')]);},_0x4fa68e[_0x4bc041('0x98c')][_0x4bc041('0xf56')]=function(){var _0x20bfb3=_0x4bc041;return this[_0x20bfb3('0x8fa')];},_0x4fa68e[_0x4bc041('0x98c')][_0x4bc041('0x72d')]=function(_0x44348a){var _0x536efc=_0x4bc041;this['_data'][_0x536efc('0x8f8')]([]),this[_0x536efc('0xaf9')](),this[_0x536efc('0xa22')](_0x44348a),_0x536efc('0xae9')==typeof this[_0x536efc('0x43f')]&&this['onBegin'](_0x44348a);},_0x4fa68e[_0x4bc041('0x98c')][_0x4bc041('0xa22')]=function(_0x4accfc){var _0x5c97fc=_0x4bc041,_0x114026=_0x4accfc[_0x5c97fc('0x7ef')],_0x5bb29a=_0x4accfc[_0x5c97fc('0xd50')],_0x21196c=this[_0x5c97fc('0x1033')](_0x114026,_0x5bb29a),_0x3a844a=this[_0x5c97fc('0xbdb')][this[_0x5c97fc('0xbdb')][_0x5c97fc('0x525')]-0x1],_0x3212ba=_0x3a844a&&_0x3a844a[_0x3a844a[_0x5c97fc('0x525')]-0x1],_0x5db29d=_0x3212ba&&_0x21196c[_0x5c97fc('0xb9f')](_0x3212ba)0x2,_0x2b9b3a=this['points'][0x0];if(!_0x370507&&_0x2b9b3a&&this[_0x1edbb1('0xef6')](_0x2b9b3a),_0x2b9b3a){var _0x384f87=this[_0x1edbb1('0xbdb')][this[_0x1edbb1('0xbdb')][_0x1edbb1('0x525')]-0x1],_0x9a6a24=_0x384f87[_0x384f87[_0x1edbb1('0x525')]-0x1];_0x2b9b3a['equals'](_0x9a6a24)||_0x384f87['push']({'x':_0x2b9b3a['x'],'y':_0x2b9b3a['y'],'time':_0x2b9b3a[_0x1edbb1('0x918')],'color':this[_0x1edbb1('0x95c')]});}_0x1edbb1('0xae9')==typeof this[_0x1edbb1('0xc56')]&&this['onEnd'](_0x518d27);},_0x4fa68e[_0x4bc041('0x98c')]['_handleMouseEvents']=function(){var _0x5dcc94=_0x4bc041;this['_mouseButtonDown']=!0x1,this[_0x5dcc94('0x292')][_0x5dcc94('0x55')](_0x5dcc94('0x9ff'),this[_0x5dcc94('0x116f')]),this['_canvas'][_0x5dcc94('0x55')](_0x5dcc94('0x4ad'),this[_0x5dcc94('0x266')]),document[_0x5dcc94('0x55')](_0x5dcc94('0xd66'),this[_0x5dcc94('0x30')]);},_0x4fa68e[_0x4bc041('0x98c')][_0x4bc041('0xdc6')]=function(){var _0x62b22a=_0x4bc041;this['_canvas'][_0x62b22a('0x1cd')][_0x62b22a('0x557')]=_0x62b22a('0x1c1'),this['_canvas'][_0x62b22a('0x1cd')]['touchAction']='none',this[_0x62b22a('0x292')][_0x62b22a('0x55')](_0x62b22a('0x897'),this[_0x62b22a('0x7b3')]),this['_canvas'][_0x62b22a('0x55')](_0x62b22a('0x996'),this[_0x62b22a('0x1065')]),this[_0x62b22a('0x292')][_0x62b22a('0x55')](_0x62b22a('0xc6f'),this['_handleTouchEnd']);},_0x4fa68e['prototype']['_reset']=function(){var _0x1cbcbc=_0x4bc041;this[_0x1cbcbc('0xd0e')]=[],this[_0x1cbcbc('0x53d')]=0x0,this[_0x1cbcbc('0x836')]=(this['minWidth']+this[_0x1cbcbc('0x9e7')])/0x2,this[_0x1cbcbc('0xa7d')][_0x1cbcbc('0x472')]=this['penColor'];},_0x4fa68e[_0x4bc041('0x98c')][_0x4bc041('0x1033')]=function(_0x5e1643,_0xa69f0b,_0x56567b){var _0x30dbb4=_0x4bc041,_0x31ad6e=this[_0x30dbb4('0x292')]['getBoundingClientRect']();return new _0x4d7fcc(_0x5e1643-_0x31ad6e[_0x30dbb4('0xbab')],_0xa69f0b-_0x31ad6e['top'],_0x56567b||new Date()[_0x30dbb4('0xa5d')]());},_0x4fa68e[_0x4bc041('0x98c')]['_addPoint']=function(_0x368806){var _0x1d3d6e=_0x4bc041,_0x23766f=this[_0x1d3d6e('0xd0e')];if(_0x23766f[_0x1d3d6e('0x8f8')](_0x368806),_0x23766f[_0x1d3d6e('0x525')]>0x2){0x3===_0x23766f['length']&&_0x23766f[_0x1d3d6e('0x8c9')](_0x23766f[0x0]);var _0x4de751=this[_0x1d3d6e('0xbaf')](_0x23766f[0x0],_0x23766f[0x1],_0x23766f[0x2])['c2'],_0x158015=this[_0x1d3d6e('0xbaf')](_0x23766f[0x1],_0x23766f[0x2],_0x23766f[0x3])['c1'],_0x2bb48e=new _0x5318dd(_0x23766f[0x1],_0x4de751,_0x158015,_0x23766f[0x2]),_0x191ba7=this['_calculateCurveWidths'](_0x2bb48e);return _0x23766f[_0x1d3d6e('0x8be')](),{'curve':_0x2bb48e,'widths':_0x191ba7};}return{};},_0x4fa68e[_0x4bc041('0x98c')][_0x4bc041('0xbaf')]=function(_0x3be194,_0x44948a,_0xe5d408){var _0x20d86c=_0x4bc041,_0x5ddfbf=_0x3be194['x']-_0x44948a['x'],_0x32e2be=_0x3be194['y']-_0x44948a['y'],_0x389a16=_0x44948a['x']-_0xe5d408['x'],_0x12f90c=_0x44948a['y']-_0xe5d408['y'],_0x5b18bf=(_0x3be194['x']+_0x44948a['x'])/0x2,_0x12f212=(_0x3be194['y']+_0x44948a['y'])/0x2,_0x1a1b90=(_0x44948a['x']+_0xe5d408['x'])/0x2,_0xab0460=(_0x44948a['y']+_0xe5d408['y'])/0x2,_0x254810=Math[_0x20d86c('0xd35')](_0x5ddfbf*_0x5ddfbf+_0x32e2be*_0x32e2be),_0x5c78f2=Math[_0x20d86c('0xd35')](_0x389a16*_0x389a16+_0x12f90c*_0x12f90c),_0x42913e=_0x5c78f2/(_0x254810+_0x5c78f2),_0x6102b0=_0x1a1b90+(_0x5b18bf-_0x1a1b90)*_0x42913e,_0x39e998=_0xab0460+(_0x12f212-_0xab0460)*_0x42913e,_0x25e534=_0x44948a['x']-_0x6102b0,_0x37ba1c=_0x44948a['y']-_0x39e998;return{'c1':new _0x4d7fcc(_0x5b18bf+_0x25e534,_0x12f212+_0x37ba1c),'c2':new _0x4d7fcc(_0x1a1b90+_0x25e534,_0xab0460+_0x37ba1c)};},_0x4fa68e[_0x4bc041('0x98c')][_0x4bc041('0xcb3')]=function(_0x6136c9){var _0x274992=_0x4bc041,_0x37538a=_0x6136c9[_0x274992('0xa9d')],_0x295992=_0x6136c9[_0x274992('0x4ea')],_0x1c17a5={'start':null,'end':null},_0x32d53f=this['velocityFilterWeight']*_0x295992[_0x274992('0xf7a')](_0x37538a)+(0x1-this['velocityFilterWeight'])*this[_0x274992('0x53d')],_0x43574e=this[_0x274992('0x8bb')](_0x32d53f);return _0x1c17a5[_0x274992('0x1045')]=this[_0x274992('0x836')],_0x1c17a5[_0x274992('0xbc6')]=_0x43574e,this[_0x274992('0x53d')]=_0x32d53f,this[_0x274992('0x836')]=_0x43574e,_0x1c17a5;},_0x4fa68e[_0x4bc041('0x98c')][_0x4bc041('0x8bb')]=function(_0x3ca261){var _0x5975bf=_0x4bc041;return Math[_0x5975bf('0xf65')](this[_0x5975bf('0x9e7')]/(_0x3ca261+0x1),this[_0x5975bf('0xc6')]);},_0x4fa68e[_0x4bc041('0x98c')][_0x4bc041('0x13c')]=function(_0x17940a,_0x3b61e6,_0x482e8e){var _0xc3d72b=_0x4bc041,_0x248c20=this[_0xc3d72b('0xa7d')];_0x248c20[_0xc3d72b('0xc13')](_0x17940a,_0x3b61e6),_0x248c20[_0xc3d72b('0x962')](_0x17940a,_0x3b61e6,_0x482e8e,0x0,0x2*Math['PI'],!0x1),this[_0xc3d72b('0x8fa')]=!0x1;},_0x4fa68e['prototype'][_0x4bc041('0xb4e')]=function(_0x5cfef8,_0x2ef309,_0x3eece5){var _0x3c2cd4=_0x4bc041,_0x2a2864=this[_0x3c2cd4('0xa7d')],_0x4e467d=_0x3eece5-_0x2ef309,_0x21b41c=Math[_0x3c2cd4('0x536')](_0x5cfef8[_0x3c2cd4('0x525')]());_0x2a2864[_0x3c2cd4('0xe0e')]();for(var _0x4f2437=0x0;_0x4f2437<_0x21b41c;_0x4f2437+=0x1){var _0x139975=_0x4f2437/_0x21b41c,_0x59dc21=_0x139975*_0x139975,_0x2e5079=_0x59dc21*_0x139975,_0x318e27=0x1-_0x139975,_0x176095=_0x318e27*_0x318e27,_0x55c24a=_0x176095*_0x318e27,_0x1b84d3=_0x55c24a*_0x5cfef8[_0x3c2cd4('0xa9d')]['x'];_0x1b84d3+=0x3*_0x176095*_0x139975*_0x5cfef8[_0x3c2cd4('0xbbe')]['x'],_0x1b84d3+=0x3*_0x318e27*_0x59dc21*_0x5cfef8[_0x3c2cd4('0x913')]['x'],_0x1b84d3+=_0x2e5079*_0x5cfef8['endPoint']['x'];var _0x54bf40=_0x55c24a*_0x5cfef8[_0x3c2cd4('0xa9d')]['y'];_0x54bf40+=0x3*_0x176095*_0x139975*_0x5cfef8[_0x3c2cd4('0xbbe')]['y'],_0x54bf40+=0x3*_0x318e27*_0x59dc21*_0x5cfef8['control2']['y'],_0x54bf40+=_0x2e5079*_0x5cfef8[_0x3c2cd4('0x4ea')]['y'];var _0xff5216=_0x2ef309+_0x2e5079*_0x4e467d;this[_0x3c2cd4('0x13c')](_0x1b84d3,_0x54bf40,_0xff5216);}_0x2a2864[_0x3c2cd4('0xd4')](),_0x2a2864['fill']();},_0x4fa68e[_0x4bc041('0x98c')][_0x4bc041('0xef6')]=function(_0x2ad6de){var _0x56670a=_0x4bc041,_0x1edbca=this[_0x56670a('0xa7d')],_0x5dd428='function'==typeof this['dotSize']?this[_0x56670a('0x1093')]():this[_0x56670a('0x1093')];_0x1edbca[_0x56670a('0xe0e')](),this[_0x56670a('0x13c')](_0x2ad6de['x'],_0x2ad6de['y'],_0x5dd428),_0x1edbca['closePath'](),_0x1edbca['fill']();},_0x4fa68e[_0x4bc041('0x98c')]['_fromData']=function(_0x1a0d6b,_0x3676a2,_0x2fa78f){var _0x20200d=_0x4bc041;for(var _0x19cb2f=0x0;_0x19cb2f<_0x1a0d6b['length'];_0x19cb2f+=0x1){var _0xaa9c9=_0x1a0d6b[_0x19cb2f];if(_0xaa9c9[_0x20200d('0x525')]>0x1)for(var _0x51279c=0x0;_0x51279c<_0xaa9c9[_0x20200d('0x525')];_0x51279c+=0x1){var _0x2c33eb=_0xaa9c9[_0x51279c],_0x2d318c=new _0x4d7fcc(_0x2c33eb['x'],_0x2c33eb['y'],_0x2c33eb[_0x20200d('0x918')]),_0x1cdffc=_0x2c33eb[_0x20200d('0x48e')];if(0x0===_0x51279c)this[_0x20200d('0x95c')]=_0x1cdffc,this[_0x20200d('0xaf9')](),this[_0x20200d('0x61b')](_0x2d318c);else{if(_0x51279c!==_0xaa9c9['length']-0x1){var _0x1b06b5=this['_addPoint'](_0x2d318c),_0x3b8d94=_0x1b06b5[_0x20200d('0x104a')],_0x2aa24d=_0x1b06b5[_0x20200d('0x4bc')];_0x3b8d94&&_0x2aa24d&&_0x3676a2(_0x3b8d94,_0x2aa24d,_0x1cdffc);}}}else this[_0x20200d('0xaf9')](),_0x2fa78f(_0xaa9c9[0x0]);}},_0x4fa68e[_0x4bc041('0x98c')][_0x4bc041('0x15e')]=function(){var _0x4f646c=_0x4bc041,_0x190314=this,_0xab9b2d=this[_0x4f646c('0xbdb')],_0x4eba3f=this['_canvas'],_0x3a2388=Math[_0x4f646c('0xf65')](window[_0x4f646c('0x8ec')]||0x1,0x1),_0x47158a=_0x4eba3f[_0x4f646c('0xa7b')]/_0x3a2388,_0x5ac863=_0x4eba3f['height']/_0x3a2388,_0xd22f89=document['createElementNS'](_0x4f646c('0x265'),'svg');_0xd22f89[_0x4f646c('0xab3')](null,_0x4f646c('0xa7b'),_0x4eba3f[_0x4f646c('0xa7b')]),_0xd22f89[_0x4f646c('0xab3')](null,_0x4f646c('0x7f0'),_0x4eba3f[_0x4f646c('0x7f0')]),this[_0x4f646c('0xebd')](_0xab9b2d,function(_0x13e86b,_0x3a6c5f,_0x348e02){var _0x3d08d0=_0x4f646c,_0x3915c6=document[_0x3d08d0('0xd0f')](_0x3d08d0('0x558'));if(!(isNaN(_0x13e86b[_0x3d08d0('0xbbe')]['x'])||isNaN(_0x13e86b[_0x3d08d0('0xbbe')]['y'])||isNaN(_0x13e86b[_0x3d08d0('0x913')]['x'])||isNaN(_0x13e86b['control2']['y']))){var _0x4132b7='M\x20'+_0x13e86b[_0x3d08d0('0xa9d')]['x'][_0x3d08d0('0xf6d')](0x3)+','+_0x13e86b[_0x3d08d0('0xa9d')]['y'][_0x3d08d0('0xf6d')](0x3)+_0x3d08d0('0x5eb')+_0x13e86b[_0x3d08d0('0xbbe')]['x']['toFixed'](0x3)+','+_0x13e86b[_0x3d08d0('0xbbe')]['y'][_0x3d08d0('0xf6d')](0x3)+'\x20'+_0x13e86b['control2']['x']['toFixed'](0x3)+','+_0x13e86b[_0x3d08d0('0x913')]['y']['toFixed'](0x3)+'\x20'+_0x13e86b[_0x3d08d0('0x4ea')]['x']['toFixed'](0x3)+','+_0x13e86b[_0x3d08d0('0x4ea')]['y']['toFixed'](0x3);_0x3915c6[_0x3d08d0('0xfdc')]('d',_0x4132b7),_0x3915c6[_0x3d08d0('0xfdc')](_0x3d08d0('0x898'),(2.25*_0x3a6c5f[_0x3d08d0('0xbc6')])[_0x3d08d0('0xf6d')](0x3)),_0x3915c6[_0x3d08d0('0xfdc')](_0x3d08d0('0xc82'),_0x348e02),_0x3915c6[_0x3d08d0('0xfdc')](_0x3d08d0('0xbd'),'none'),_0x3915c6[_0x3d08d0('0xfdc')]('stroke-linecap','round'),_0xd22f89[_0x3d08d0('0x11be')](_0x3915c6);}},function(_0x542eb4){var _0xd18ea7=_0x4f646c,_0xeb56e1=document[_0xd18ea7('0xd0f')](_0xd18ea7('0x9b5')),_0x44dd77=_0xd18ea7('0xae9')==typeof _0x190314[_0xd18ea7('0x1093')]?_0x190314['dotSize']():_0x190314[_0xd18ea7('0x1093')];_0xeb56e1['setAttribute']('r',_0x44dd77),_0xeb56e1[_0xd18ea7('0xfdc')]('cx',_0x542eb4['x']),_0xeb56e1[_0xd18ea7('0xfdc')]('cy',_0x542eb4['y']),_0xeb56e1['setAttribute'](_0xd18ea7('0xbd'),_0x542eb4[_0xd18ea7('0x48e')]),_0xd22f89[_0xd18ea7('0x11be')](_0xeb56e1);});var _0x536955=_0x4f646c('0x16d')+_0x47158a+'\x20'+_0x5ac863+_0x4f646c('0x412')+_0x47158a+_0x4f646c('0x709')+_0x5ac863+'\x22>',_0x513e9a=_0xd22f89[_0x4f646c('0x736')];if(void 0x0===_0x513e9a){var _0xfcab14=document[_0x4f646c('0xd0f')](_0x4f646c('0x5b2')),_0x2a3293=_0xd22f89[_0x4f646c('0x4e6')];_0xfcab14[_0x4f646c('0x736')]='';for(var _0x315a88=0x0;_0x315a88<_0x2a3293[_0x4f646c('0x525')];_0x315a88+=0x1)_0xfcab14['appendChild'](_0x2a3293[_0x315a88][_0x4f646c('0x40')](!0x0));_0x513e9a=_0xfcab14['innerHTML'];}return _0x4f646c('0xa66')+btoa(_0x536955+_0x513e9a+_0x4f646c('0x10da'));},_0x4fa68e[_0x4bc041('0x98c')][_0x4bc041('0x6f9')]=function(_0x4d5a53){var _0x16a735=_0x4bc041,_0x522bf6=this;this[_0x16a735('0xedd')](),this[_0x16a735('0xebd')](_0x4d5a53,function(_0x2a7c38,_0x3ea639){var _0xd70fc3=_0x16a735;return _0x522bf6[_0xd70fc3('0xb4e')](_0x2a7c38,_0x3ea639['start'],_0x3ea639[_0xd70fc3('0xbc6')]);},function(_0x460978){return _0x522bf6['_drawDot'](_0x460978);}),this[_0x16a735('0xbdb')]=_0x4d5a53;},_0x4fa68e[_0x4bc041('0x98c')]['toData']=function(){var _0x39fceb=_0x4bc041;return this[_0x39fceb('0xbdb')];},_0x4fa68e;});},{}],0x175:[function(_0x3ca137,_0x3285dc,_0x2b3ca4){!function(_0x133ce8){var _0x1f194b=_0x3ab6,_0x10ff07=/^\s+/,_0x2339f3=/\s+$/,_0x199057=0x0,_0x3af5c4=_0x133ce8[_0x1f194b('0xbbc')],_0x2c41a7=_0x133ce8[_0x1f194b('0xc0d')],_0x71baee=_0x133ce8[_0x1f194b('0xf65')],_0x240772=_0x133ce8[_0x1f194b('0xb63')];function _0x1100d3(_0x4a6e4a,_0x49802b){var _0x31468c=_0x1f194b;if(_0x49802b=_0x49802b||{},(_0x4a6e4a=_0x4a6e4a||'')instanceof _0x1100d3)return _0x4a6e4a;if(!(this instanceof _0x1100d3))return new _0x1100d3(_0x4a6e4a,_0x49802b);var _0x1f9488=function(_0x34c250){var _0x4a955b=_0x3ab6,_0x25bd17={'r':0x0,'g':0x0,'b':0x0},_0x2d8d9d=0x1,_0x4c28a3=null,_0x59a863=null,_0x15e29e=null,_0xa1b3c1=!0x1,_0x4066bc=!0x1;'string'==typeof _0x34c250&&(_0x34c250=function(_0x547824){var _0x24a2cc=_0x3ab6;_0x547824=_0x547824[_0x24a2cc('0x166')](_0x10ff07,'')[_0x24a2cc('0x166')](_0x2339f3,'')['toLowerCase']();var _0x370263,_0x28729d=!0x1;if(_0x10c072[_0x547824])_0x547824=_0x10c072[_0x547824],_0x28729d=!0x0;else{if(_0x24a2cc('0xdf6')==_0x547824)return{'r':0x0,'g':0x0,'b':0x0,'a':0x0,'format':_0x24a2cc('0x263')};}if(_0x370263=_0x451298[_0x24a2cc('0x467')][_0x24a2cc('0xd16')](_0x547824))return{'r':_0x370263[0x1],'g':_0x370263[0x2],'b':_0x370263[0x3]};if(_0x370263=_0x451298['rgba'][_0x24a2cc('0xd16')](_0x547824))return{'r':_0x370263[0x1],'g':_0x370263[0x2],'b':_0x370263[0x3],'a':_0x370263[0x4]};if(_0x370263=_0x451298['hsl'][_0x24a2cc('0xd16')](_0x547824))return{'h':_0x370263[0x1],'s':_0x370263[0x2],'l':_0x370263[0x3]};if(_0x370263=_0x451298[_0x24a2cc('0x3ab')][_0x24a2cc('0xd16')](_0x547824))return{'h':_0x370263[0x1],'s':_0x370263[0x2],'l':_0x370263[0x3],'a':_0x370263[0x4]};if(_0x370263=_0x451298['hsv'][_0x24a2cc('0xd16')](_0x547824))return{'h':_0x370263[0x1],'s':_0x370263[0x2],'v':_0x370263[0x3]};if(_0x370263=_0x451298['hsva'][_0x24a2cc('0xd16')](_0x547824))return{'h':_0x370263[0x1],'s':_0x370263[0x2],'v':_0x370263[0x3],'a':_0x370263[0x4]};if(_0x370263=_0x451298[_0x24a2cc('0x7e3')][_0x24a2cc('0xd16')](_0x547824))return{'r':_0x592b33(_0x370263[0x1]),'g':_0x592b33(_0x370263[0x2]),'b':_0x592b33(_0x370263[0x3]),'a':_0x50f11b(_0x370263[0x4]),'format':_0x28729d?_0x24a2cc('0x263'):_0x24a2cc('0x7e3')};if(_0x370263=_0x451298[_0x24a2cc('0xf5b')][_0x24a2cc('0xd16')](_0x547824))return{'r':_0x592b33(_0x370263[0x1]),'g':_0x592b33(_0x370263[0x2]),'b':_0x592b33(_0x370263[0x3]),'format':_0x28729d?'name':_0x24a2cc('0xf2b')};if(_0x370263=_0x451298[_0x24a2cc('0x62f')][_0x24a2cc('0xd16')](_0x547824))return{'r':_0x592b33(_0x370263[0x1]+''+_0x370263[0x1]),'g':_0x592b33(_0x370263[0x2]+''+_0x370263[0x2]),'b':_0x592b33(_0x370263[0x3]+''+_0x370263[0x3]),'a':_0x50f11b(_0x370263[0x4]+''+_0x370263[0x4]),'format':_0x28729d?'name':_0x24a2cc('0x7e3')};if(_0x370263=_0x451298['hex3']['exec'](_0x547824))return{'r':_0x592b33(_0x370263[0x1]+''+_0x370263[0x1]),'g':_0x592b33(_0x370263[0x2]+''+_0x370263[0x2]),'b':_0x592b33(_0x370263[0x3]+''+_0x370263[0x3]),'format':_0x28729d?_0x24a2cc('0x263'):_0x24a2cc('0xf2b')};return!0x1;}(_0x34c250)),_0x4a955b('0x21e')==typeof _0x34c250&&(_0x1297de(_0x34c250['r'])&&_0x1297de(_0x34c250['g'])&&_0x1297de(_0x34c250['b'])?(_0x4e4ea4=_0x34c250['r'],_0x1e6760=_0x34c250['g'],_0x88de5=_0x34c250['b'],_0x25bd17={'r':0xff*_0x2fc6fd(_0x4e4ea4,0xff),'g':0xff*_0x2fc6fd(_0x1e6760,0xff),'b':0xff*_0x2fc6fd(_0x88de5,0xff)},_0xa1b3c1=!0x0,_0x4066bc='%'===String(_0x34c250['r'])[_0x4a955b('0x111d')](-0x1)?_0x4a955b('0x253'):_0x4a955b('0x467')):_0x1297de(_0x34c250['h'])&&_0x1297de(_0x34c250['s'])&&_0x1297de(_0x34c250['v'])?(_0x4c28a3=_0x1ab76d(_0x34c250['s']),_0x59a863=_0x1ab76d(_0x34c250['v']),_0x25bd17=function(_0x3b46fb,_0x7b6005,_0x2b3e6d){var _0x348ba9=_0x4a955b;_0x3b46fb=0x6*_0x2fc6fd(_0x3b46fb,0x168),_0x7b6005=_0x2fc6fd(_0x7b6005,0x64),_0x2b3e6d=_0x2fc6fd(_0x2b3e6d,0x64);var _0x13d2ae=_0x133ce8[_0x348ba9('0x536')](_0x3b46fb),_0x21dff2=_0x3b46fb-_0x13d2ae,_0x1f449f=_0x2b3e6d*(0x1-_0x7b6005),_0x375d86=_0x2b3e6d*(0x1-_0x21dff2*_0x7b6005),_0x31d56e=_0x2b3e6d*(0x1-(0x1-_0x21dff2)*_0x7b6005),_0x865b6d=_0x13d2ae%0x6;return{'r':0xff*[_0x2b3e6d,_0x375d86,_0x1f449f,_0x1f449f,_0x31d56e,_0x2b3e6d][_0x865b6d],'g':0xff*[_0x31d56e,_0x2b3e6d,_0x2b3e6d,_0x375d86,_0x1f449f,_0x1f449f][_0x865b6d],'b':0xff*[_0x1f449f,_0x1f449f,_0x31d56e,_0x2b3e6d,_0x2b3e6d,_0x375d86][_0x865b6d]};}(_0x34c250['h'],_0x4c28a3,_0x59a863),_0xa1b3c1=!0x0,_0x4066bc=_0x4a955b('0x7d8')):_0x1297de(_0x34c250['h'])&&_0x1297de(_0x34c250['s'])&&_0x1297de(_0x34c250['l'])&&(_0x4c28a3=_0x1ab76d(_0x34c250['s']),_0x15e29e=_0x1ab76d(_0x34c250['l']),_0x25bd17=function(_0x5c12df,_0xaa00b3,_0x1fc698){var _0x334a85,_0x4ec15e,_0x38c983;function _0x1079f8(_0x289022,_0x289318,_0x199e17){return _0x199e17<0x0&&(_0x199e17+=0x1),_0x199e17>0x1&&(_0x199e17-=0x1),_0x199e17<0x1/0x6?_0x289022+0x6*(_0x289318-_0x289022)*_0x199e17:_0x199e17<0.5?_0x289318:_0x199e17<0x2/0x3?_0x289022+(_0x289318-_0x289022)*(0x2/0x3-_0x199e17)*0x6:_0x289022;}if(_0x5c12df=_0x2fc6fd(_0x5c12df,0x168),_0xaa00b3=_0x2fc6fd(_0xaa00b3,0x64),_0x1fc698=_0x2fc6fd(_0x1fc698,0x64),0x0===_0xaa00b3)_0x334a85=_0x4ec15e=_0x38c983=_0x1fc698;else{var _0x3a952b=_0x1fc698<0.5?_0x1fc698*(0x1+_0xaa00b3):_0x1fc698+_0xaa00b3-_0x1fc698*_0xaa00b3,_0x178bdd=0x2*_0x1fc698-_0x3a952b;_0x334a85=_0x1079f8(_0x178bdd,_0x3a952b,_0x5c12df+0x1/0x3),_0x4ec15e=_0x1079f8(_0x178bdd,_0x3a952b,_0x5c12df),_0x38c983=_0x1079f8(_0x178bdd,_0x3a952b,_0x5c12df-0x1/0x3);}return{'r':0xff*_0x334a85,'g':0xff*_0x4ec15e,'b':0xff*_0x38c983};}(_0x34c250['h'],_0x4c28a3,_0x15e29e),_0xa1b3c1=!0x0,_0x4066bc=_0x4a955b('0x41d')),_0x34c250[_0x4a955b('0x100')]('a')&&(_0x2d8d9d=_0x34c250['a']));var _0x4e4ea4,_0x1e6760,_0x88de5;return _0x2d8d9d=_0x31e6c7(_0x2d8d9d),{'ok':_0xa1b3c1,'format':_0x34c250[_0x4a955b('0xe02')]||_0x4066bc,'r':_0x2c41a7(0xff,_0x71baee(_0x25bd17['r'],0x0)),'g':_0x2c41a7(0xff,_0x71baee(_0x25bd17['g'],0x0)),'b':_0x2c41a7(0xff,_0x71baee(_0x25bd17['b'],0x0)),'a':_0x2d8d9d};}(_0x4a6e4a);this[_0x31468c('0x9a5')]=_0x4a6e4a,this['_r']=_0x1f9488['r'],this['_g']=_0x1f9488['g'],this['_b']=_0x1f9488['b'],this['_a']=_0x1f9488['a'],this[_0x31468c('0x9b8')]=_0x3af5c4(0x64*this['_a'])/0x64,this['_format']=_0x49802b[_0x31468c('0xe02')]||_0x1f9488[_0x31468c('0xe02')],this[_0x31468c('0x920')]=_0x49802b[_0x31468c('0xe7b')],this['_r']<0x1&&(this['_r']=_0x3af5c4(this['_r'])),this['_g']<0x1&&(this['_g']=_0x3af5c4(this['_g'])),this['_b']<0x1&&(this['_b']=_0x3af5c4(this['_b'])),this[_0x31468c('0xa13')]=_0x1f9488['ok'],this[_0x31468c('0x118b')]=_0x199057++;}function _0x2d0ecb(_0x39e949,_0x1a4299,_0x3311ed){_0x39e949=_0x2fc6fd(_0x39e949,0xff),_0x1a4299=_0x2fc6fd(_0x1a4299,0xff),_0x3311ed=_0x2fc6fd(_0x3311ed,0xff);var _0x27924d,_0x2d1424,_0x4ac519=_0x71baee(_0x39e949,_0x1a4299,_0x3311ed),_0x59fea6=_0x2c41a7(_0x39e949,_0x1a4299,_0x3311ed),_0x3a8c38=(_0x4ac519+_0x59fea6)/0x2;if(_0x4ac519==_0x59fea6)_0x27924d=_0x2d1424=0x0;else{var _0x17399e=_0x4ac519-_0x59fea6;switch(_0x2d1424=_0x3a8c38>0.5?_0x17399e/(0x2-_0x4ac519-_0x59fea6):_0x17399e/(_0x4ac519+_0x59fea6),_0x4ac519){case _0x39e949:_0x27924d=(_0x1a4299-_0x3311ed)/_0x17399e+(_0x1a4299<_0x3311ed?0x6:0x0);break;case _0x1a4299:_0x27924d=(_0x3311ed-_0x39e949)/_0x17399e+0x2;break;case _0x3311ed:_0x27924d=(_0x39e949-_0x1a4299)/_0x17399e+0x4;}_0x27924d/=0x6;}return{'h':_0x27924d,'s':_0x2d1424,'l':_0x3a8c38};}function _0x339e58(_0x4ba535,_0x4e5d82,_0x4ed2f1){_0x4ba535=_0x2fc6fd(_0x4ba535,0xff),_0x4e5d82=_0x2fc6fd(_0x4e5d82,0xff),_0x4ed2f1=_0x2fc6fd(_0x4ed2f1,0xff);var _0x26de26,_0x41fa5b,_0x5905da=_0x71baee(_0x4ba535,_0x4e5d82,_0x4ed2f1),_0x2d3302=_0x2c41a7(_0x4ba535,_0x4e5d82,_0x4ed2f1),_0x5b6eda=_0x5905da,_0x3a0be2=_0x5905da-_0x2d3302;if(_0x41fa5b=0x0===_0x5905da?0x0:_0x3a0be2/_0x5905da,_0x5905da==_0x2d3302)_0x26de26=0x0;else{switch(_0x5905da){case _0x4ba535:_0x26de26=(_0x4e5d82-_0x4ed2f1)/_0x3a0be2+(_0x4e5d82<_0x4ed2f1?0x6:0x0);break;case _0x4e5d82:_0x26de26=(_0x4ed2f1-_0x4ba535)/_0x3a0be2+0x2;break;case _0x4ed2f1:_0x26de26=(_0x4ba535-_0x4e5d82)/_0x3a0be2+0x4;}_0x26de26/=0x6;}return{'h':_0x26de26,'s':_0x41fa5b,'v':_0x5b6eda};}function _0x3895cf(_0x5590b5,_0x3d8e19,_0x2fdd2b,_0xe0fd82){var _0x527f46=_0x1f194b,_0x2aaea7=[_0x8a1ede(_0x3af5c4(_0x5590b5)[_0x527f46('0x537')](0x10)),_0x8a1ede(_0x3af5c4(_0x3d8e19)[_0x527f46('0x537')](0x10)),_0x8a1ede(_0x3af5c4(_0x2fdd2b)[_0x527f46('0x537')](0x10))];return _0xe0fd82&&_0x2aaea7[0x0][_0x527f46('0xc8e')](0x0)==_0x2aaea7[0x0][_0x527f46('0xc8e')](0x1)&&_0x2aaea7[0x1][_0x527f46('0xc8e')](0x0)==_0x2aaea7[0x1]['charAt'](0x1)&&_0x2aaea7[0x2][_0x527f46('0xc8e')](0x0)==_0x2aaea7[0x2]['charAt'](0x1)?_0x2aaea7[0x0][_0x527f46('0xc8e')](0x0)+_0x2aaea7[0x1][_0x527f46('0xc8e')](0x0)+_0x2aaea7[0x2][_0x527f46('0xc8e')](0x0):_0x2aaea7[_0x527f46('0x582')]('');}function _0x147ead(_0x401996,_0x48ec42,_0x2a41d9,_0x57e887){var _0x19fa6c=_0x1f194b;return[_0x8a1ede(_0x366a73(_0x57e887)),_0x8a1ede(_0x3af5c4(_0x401996)[_0x19fa6c('0x537')](0x10)),_0x8a1ede(_0x3af5c4(_0x48ec42)[_0x19fa6c('0x537')](0x10)),_0x8a1ede(_0x3af5c4(_0x2a41d9)[_0x19fa6c('0x537')](0x10))][_0x19fa6c('0x582')]('');}function _0x5bc486(_0x22ae8c,_0x241cba){var _0x5bedc0=_0x1f194b;_0x241cba=0x0===_0x241cba?0x0:_0x241cba||0xa;var _0x4ba467=_0x1100d3(_0x22ae8c)[_0x5bedc0('0x7fe')]();return _0x4ba467['s']-=_0x241cba/0x64,_0x4ba467['s']=_0x48663a(_0x4ba467['s']),_0x1100d3(_0x4ba467);}function _0x14d3cb(_0x3eccfb,_0x16c3bc){var _0x1ccdf2=_0x1f194b;_0x16c3bc=0x0===_0x16c3bc?0x0:_0x16c3bc||0xa;var _0x22de0c=_0x1100d3(_0x3eccfb)[_0x1ccdf2('0x7fe')]();return _0x22de0c['s']+=_0x16c3bc/0x64,_0x22de0c['s']=_0x48663a(_0x22de0c['s']),_0x1100d3(_0x22de0c);}function _0x5af495(_0x1bfbc2){var _0x5f36d7=_0x1f194b;return _0x1100d3(_0x1bfbc2)[_0x5f36d7('0x436')](0x64);}function _0x583a0a(_0x3731f1,_0x299151){var _0x5136fc=_0x1f194b;_0x299151=0x0===_0x299151?0x0:_0x299151||0xa;var _0x4635ad=_0x1100d3(_0x3731f1)[_0x5136fc('0x7fe')]();return _0x4635ad['l']+=_0x299151/0x64,_0x4635ad['l']=_0x48663a(_0x4635ad['l']),_0x1100d3(_0x4635ad);}function _0x149a9c(_0x45ad0d,_0x20faa3){var _0x5d0bec=_0x1f194b;_0x20faa3=0x0===_0x20faa3?0x0:_0x20faa3||0xa;var _0x1a61ab=_0x1100d3(_0x45ad0d)[_0x5d0bec('0xa2f')]();return _0x1a61ab['r']=_0x71baee(0x0,_0x2c41a7(0xff,_0x1a61ab['r']-_0x3af5c4(-_0x20faa3/0x64*0xff))),_0x1a61ab['g']=_0x71baee(0x0,_0x2c41a7(0xff,_0x1a61ab['g']-_0x3af5c4(-_0x20faa3/0x64*0xff))),_0x1a61ab['b']=_0x71baee(0x0,_0x2c41a7(0xff,_0x1a61ab['b']-_0x3af5c4(-_0x20faa3/0x64*0xff))),_0x1100d3(_0x1a61ab);}function _0x2e56c3(_0x5d96f4,_0xb4978d){var _0x178a59=_0x1f194b;_0xb4978d=0x0===_0xb4978d?0x0:_0xb4978d||0xa;var _0xf4484=_0x1100d3(_0x5d96f4)[_0x178a59('0x7fe')]();return _0xf4484['l']-=_0xb4978d/0x64,_0xf4484['l']=_0x48663a(_0xf4484['l']),_0x1100d3(_0xf4484);}function _0x449856(_0x151155,_0x46765d){var _0x53dcb9=_0x1f194b,_0x1203a6=_0x1100d3(_0x151155)[_0x53dcb9('0x7fe')](),_0x4f3320=(_0x1203a6['h']+_0x46765d)%0x168;return _0x1203a6['h']=_0x4f3320<0x0?0x168+_0x4f3320:_0x4f3320,_0x1100d3(_0x1203a6);}function _0x563b5d(_0x3d612e){var _0x5cba66=_0x1f194b,_0x36ead2=_0x1100d3(_0x3d612e)[_0x5cba66('0x7fe')]();return _0x36ead2['h']=(_0x36ead2['h']+0xb4)%0x168,_0x1100d3(_0x36ead2);}function _0x18c0ac(_0x5aa153){var _0x462c21=_0x1f194b,_0x3d0905=_0x1100d3(_0x5aa153)[_0x462c21('0x7fe')](),_0x59d4fa=_0x3d0905['h'];return[_0x1100d3(_0x5aa153),_0x1100d3({'h':(_0x59d4fa+0x78)%0x168,'s':_0x3d0905['s'],'l':_0x3d0905['l']}),_0x1100d3({'h':(_0x59d4fa+0xf0)%0x168,'s':_0x3d0905['s'],'l':_0x3d0905['l']})];}function _0x4bddc2(_0x28eaa8){var _0x2c65c9=_0x1f194b,_0x1ab167=_0x1100d3(_0x28eaa8)[_0x2c65c9('0x7fe')](),_0x2d70a2=_0x1ab167['h'];return[_0x1100d3(_0x28eaa8),_0x1100d3({'h':(_0x2d70a2+0x5a)%0x168,'s':_0x1ab167['s'],'l':_0x1ab167['l']}),_0x1100d3({'h':(_0x2d70a2+0xb4)%0x168,'s':_0x1ab167['s'],'l':_0x1ab167['l']}),_0x1100d3({'h':(_0x2d70a2+0x10e)%0x168,'s':_0x1ab167['s'],'l':_0x1ab167['l']})];}function _0x15c926(_0x3a33ca){var _0x3e4d18=_0x1f194b,_0x3a750e=_0x1100d3(_0x3a33ca)[_0x3e4d18('0x7fe')](),_0x1960eb=_0x3a750e['h'];return[_0x1100d3(_0x3a33ca),_0x1100d3({'h':(_0x1960eb+0x48)%0x168,'s':_0x3a750e['s'],'l':_0x3a750e['l']}),_0x1100d3({'h':(_0x1960eb+0xd8)%0x168,'s':_0x3a750e['s'],'l':_0x3a750e['l']})];}function _0x404a63(_0x3907d7,_0x12955d,_0xab52b8){var _0x5b3f5c=_0x1f194b;_0x12955d=_0x12955d||0x6,_0xab52b8=_0xab52b8||0x1e;var _0x11e6d7=_0x1100d3(_0x3907d7)['toHsl'](),_0x5e677c=0x168/_0xab52b8,_0x1f9083=[_0x1100d3(_0x3907d7)];for(_0x11e6d7['h']=(_0x11e6d7['h']-(_0x5e677c*_0x12955d>>0x1)+0x2d0)%0x168;--_0x12955d;)_0x11e6d7['h']=(_0x11e6d7['h']+_0x5e677c)%0x168,_0x1f9083[_0x5b3f5c('0x8f8')](_0x1100d3(_0x11e6d7));return _0x1f9083;}function _0x3a3c84(_0x4d65a0,_0x312827){var _0x52ee89=_0x1f194b;_0x312827=_0x312827||0x6;for(var _0x5c8b89=_0x1100d3(_0x4d65a0)[_0x52ee89('0x20f')](),_0x16606d=_0x5c8b89['h'],_0xd8386c=_0x5c8b89['s'],_0x133b8b=_0x5c8b89['v'],_0x3e8f84=[],_0x329bca=0x1/_0x312827;_0x312827--;)_0x3e8f84[_0x52ee89('0x8f8')](_0x1100d3({'h':_0x16606d,'s':_0xd8386c,'v':_0x133b8b})),_0x133b8b=(_0x133b8b+_0x329bca)%0x1;return _0x3e8f84;}_0x1100d3['prototype']={'isDark':function(){var _0x504dc6=_0x1f194b;return this[_0x504dc6('0xf51')]()<0x80;},'isLight':function(){var _0x17718d=_0x1f194b;return!this[_0x17718d('0x12c')]();},'isValid':function(){var _0x57326a=_0x1f194b;return this[_0x57326a('0xa13')];},'getOriginalInput':function(){var _0x199372=_0x1f194b;return this[_0x199372('0x9a5')];},'getFormat':function(){var _0x161e86=_0x1f194b;return this[_0x161e86('0x11e8')];},'getAlpha':function(){return this['_a'];},'getBrightness':function(){var _0x2c7a9a=_0x1f194b,_0x3a6ac6=this[_0x2c7a9a('0xa2f')]();return(0x12b*_0x3a6ac6['r']+0x24b*_0x3a6ac6['g']+0x72*_0x3a6ac6['b'])/0x3e8;},'getLuminance':function(){var _0x324b0c=_0x1f194b,_0x5c0001,_0x353d4b,_0x56af47,_0x413a8e=this['toRgb']();return _0x5c0001=_0x413a8e['r']/0xff,_0x353d4b=_0x413a8e['g']/0xff,_0x56af47=_0x413a8e['b']/0xff,0.2126*(_0x5c0001<=0.03928?_0x5c0001/12.92:_0x133ce8[_0x324b0c('0xf78')]((_0x5c0001+0.055)/1.055,2.4))+0.7152*(_0x353d4b<=0.03928?_0x353d4b/12.92:_0x133ce8[_0x324b0c('0xf78')]((_0x353d4b+0.055)/1.055,2.4))+0.0722*(_0x56af47<=0.03928?_0x56af47/12.92:_0x133ce8[_0x324b0c('0xf78')]((_0x56af47+0.055)/1.055,2.4));},'setAlpha':function(_0x575949){var _0x19b504=_0x1f194b;return this['_a']=_0x31e6c7(_0x575949),this[_0x19b504('0x9b8')]=_0x3af5c4(0x64*this['_a'])/0x64,this;},'toHsv':function(){var _0x5b6244=_0x339e58(this['_r'],this['_g'],this['_b']);return{'h':0x168*_0x5b6244['h'],'s':_0x5b6244['s'],'v':_0x5b6244['v'],'a':this['_a']};},'toHsvString':function(){var _0x45a049=_0x1f194b,_0x18205b=_0x339e58(this['_r'],this['_g'],this['_b']),_0x319201=_0x3af5c4(0x168*_0x18205b['h']),_0x741bff=_0x3af5c4(0x64*_0x18205b['s']),_0x2afa71=_0x3af5c4(0x64*_0x18205b['v']);return 0x1==this['_a']?_0x45a049('0x1f6')+_0x319201+',\x20'+_0x741bff+'%,\x20'+_0x2afa71+'%)':_0x45a049('0x485')+_0x319201+',\x20'+_0x741bff+_0x45a049('0x4ce')+_0x2afa71+_0x45a049('0x4ce')+this[_0x45a049('0x9b8')]+')';},'toHsl':function(){var _0xdba6b=_0x2d0ecb(this['_r'],this['_g'],this['_b']);return{'h':0x168*_0xdba6b['h'],'s':_0xdba6b['s'],'l':_0xdba6b['l'],'a':this['_a']};},'toHslString':function(){var _0x3ccef6=_0x1f194b,_0x437cf8=_0x2d0ecb(this['_r'],this['_g'],this['_b']),_0x11e84a=_0x3af5c4(0x168*_0x437cf8['h']),_0x35a2a3=_0x3af5c4(0x64*_0x437cf8['s']),_0xdf31c=_0x3af5c4(0x64*_0x437cf8['l']);return 0x1==this['_a']?_0x3ccef6('0x950')+_0x11e84a+',\x20'+_0x35a2a3+'%,\x20'+_0xdf31c+'%)':'hsla('+_0x11e84a+',\x20'+_0x35a2a3+_0x3ccef6('0x4ce')+_0xdf31c+'%,\x20'+this[_0x3ccef6('0x9b8')]+')';},'toHex':function(_0xf2774c){return _0x3895cf(this['_r'],this['_g'],this['_b'],_0xf2774c);},'toHexString':function(_0x1d6543){var _0x25bf07=_0x1f194b;return'#'+this[_0x25bf07('0x88c')](_0x1d6543);},'toHex8':function(_0x3812b3){return function(_0x130dea,_0x4c9ccd,_0x7ce7b0,_0x5343df,_0x8e5387){var _0x19ffae=_0x3ab6,_0x2a3dff=[_0x8a1ede(_0x3af5c4(_0x130dea)[_0x19ffae('0x537')](0x10)),_0x8a1ede(_0x3af5c4(_0x4c9ccd)[_0x19ffae('0x537')](0x10)),_0x8a1ede(_0x3af5c4(_0x7ce7b0)[_0x19ffae('0x537')](0x10)),_0x8a1ede(_0x366a73(_0x5343df))];if(_0x8e5387&&_0x2a3dff[0x0][_0x19ffae('0xc8e')](0x0)==_0x2a3dff[0x0]['charAt'](0x1)&&_0x2a3dff[0x1][_0x19ffae('0xc8e')](0x0)==_0x2a3dff[0x1][_0x19ffae('0xc8e')](0x1)&&_0x2a3dff[0x2][_0x19ffae('0xc8e')](0x0)==_0x2a3dff[0x2][_0x19ffae('0xc8e')](0x1)&&_0x2a3dff[0x3][_0x19ffae('0xc8e')](0x0)==_0x2a3dff[0x3]['charAt'](0x1))return _0x2a3dff[0x0][_0x19ffae('0xc8e')](0x0)+_0x2a3dff[0x1][_0x19ffae('0xc8e')](0x0)+_0x2a3dff[0x2][_0x19ffae('0xc8e')](0x0)+_0x2a3dff[0x3][_0x19ffae('0xc8e')](0x0);return _0x2a3dff[_0x19ffae('0x582')]('');}(this['_r'],this['_g'],this['_b'],this['_a'],_0x3812b3);},'toHex8String':function(_0x379159){var _0x4aa87c=_0x1f194b;return'#'+this[_0x4aa87c('0xc35')](_0x379159);},'toRgb':function(){return{'r':_0x3af5c4(this['_r']),'g':_0x3af5c4(this['_g']),'b':_0x3af5c4(this['_b']),'a':this['_a']};},'toRgbString':function(){var _0x22e452=_0x1f194b;return 0x1==this['_a']?_0x22e452('0x105a')+_0x3af5c4(this['_r'])+',\x20'+_0x3af5c4(this['_g'])+',\x20'+_0x3af5c4(this['_b'])+')':_0x22e452('0xa38')+_0x3af5c4(this['_r'])+',\x20'+_0x3af5c4(this['_g'])+',\x20'+_0x3af5c4(this['_b'])+',\x20'+this[_0x22e452('0x9b8')]+')';},'toPercentageRgb':function(){return{'r':_0x3af5c4(0x64*_0x2fc6fd(this['_r'],0xff))+'%','g':_0x3af5c4(0x64*_0x2fc6fd(this['_g'],0xff))+'%','b':_0x3af5c4(0x64*_0x2fc6fd(this['_b'],0xff))+'%','a':this['_a']};},'toPercentageRgbString':function(){var _0x1720e7=_0x1f194b;return 0x1==this['_a']?_0x1720e7('0x105a')+_0x3af5c4(0x64*_0x2fc6fd(this['_r'],0xff))+_0x1720e7('0x4ce')+_0x3af5c4(0x64*_0x2fc6fd(this['_g'],0xff))+_0x1720e7('0x4ce')+_0x3af5c4(0x64*_0x2fc6fd(this['_b'],0xff))+'%)':_0x1720e7('0xa38')+_0x3af5c4(0x64*_0x2fc6fd(this['_r'],0xff))+_0x1720e7('0x4ce')+_0x3af5c4(0x64*_0x2fc6fd(this['_g'],0xff))+_0x1720e7('0x4ce')+_0x3af5c4(0x64*_0x2fc6fd(this['_b'],0xff))+_0x1720e7('0x4ce')+this[_0x1720e7('0x9b8')]+')';},'toName':function(){var _0x44f398=_0x1f194b;return 0x0===this['_a']?_0x44f398('0xdf6'):!(this['_a']<0x1)&&(_0x17e40a[_0x3895cf(this['_r'],this['_g'],this['_b'],!0x0)]||!0x1);},'toFilter':function(_0x2a1620){var _0x223c11=_0x1f194b,_0x579cbc='#'+_0x147ead(this['_r'],this['_g'],this['_b'],this['_a']),_0x1b52c3=_0x579cbc,_0x1e78b3=this[_0x223c11('0x920')]?_0x223c11('0xbf8'):'';if(_0x2a1620){var _0x1a6fa7=_0x1100d3(_0x2a1620);_0x1b52c3='#'+_0x147ead(_0x1a6fa7['_r'],_0x1a6fa7['_g'],_0x1a6fa7['_b'],_0x1a6fa7['_a']);}return _0x223c11('0x3a2')+_0x1e78b3+_0x223c11('0x9dd')+_0x579cbc+_0x223c11('0x87f')+_0x1b52c3+')';},'toString':function(_0x251c57){var _0x299565=_0x1f194b,_0x3db89a=!!_0x251c57;_0x251c57=_0x251c57||this['_format'];var _0x3370cb=!0x1,_0xf256fd=this['_a']<0x1&&this['_a']>=0x0;return _0x3db89a||!_0xf256fd||_0x299565('0xf2b')!==_0x251c57&&_0x299565('0xf5b')!==_0x251c57&&_0x299565('0x7d4')!==_0x251c57&&'hex4'!==_0x251c57&&_0x299565('0x7e3')!==_0x251c57&&_0x299565('0x263')!==_0x251c57?(_0x299565('0x467')===_0x251c57&&(_0x3370cb=this['toRgbString']()),_0x299565('0x253')===_0x251c57&&(_0x3370cb=this[_0x299565('0x105d')]()),'hex'!==_0x251c57&&_0x299565('0xf5b')!==_0x251c57||(_0x3370cb=this[_0x299565('0xa1e')]()),_0x299565('0x7d4')===_0x251c57&&(_0x3370cb=this[_0x299565('0xa1e')](!0x0)),_0x299565('0x62f')===_0x251c57&&(_0x3370cb=this[_0x299565('0xd4b')](!0x0)),'hex8'===_0x251c57&&(_0x3370cb=this['toHex8String']()),_0x299565('0x263')===_0x251c57&&(_0x3370cb=this[_0x299565('0x1195')]()),_0x299565('0x41d')===_0x251c57&&(_0x3370cb=this[_0x299565('0x10a5')]()),'hsv'===_0x251c57&&(_0x3370cb=this['toHsvString']()),_0x3370cb||this['toHexString']()):_0x299565('0x263')===_0x251c57&&0x0===this['_a']?this[_0x299565('0x1195')]():this[_0x299565('0x30a')]();},'clone':function(){var _0x4f1dfc=_0x1f194b;return _0x1100d3(this[_0x4f1dfc('0x537')]());},'_applyModification':function(_0x2d7f62,_0x1b6f16){var _0x23b964=_0x1f194b,_0xbf729c=_0x2d7f62[_0x23b964('0x1036')](null,[this][_0x23b964('0x3cc')]([][_0x23b964('0xbc0')][_0x23b964('0x4b0')](_0x1b6f16)));return this['_r']=_0xbf729c['_r'],this['_g']=_0xbf729c['_g'],this['_b']=_0xbf729c['_b'],this[_0x23b964('0x79')](_0xbf729c['_a']),this;},'lighten':function(){var _0x237557=_0x1f194b;return this[_0x237557('0xef4')](_0x583a0a,arguments);},'brighten':function(){var _0x7b89d9=_0x1f194b;return this[_0x7b89d9('0xef4')](_0x149a9c,arguments);},'darken':function(){var _0x478cd9=_0x1f194b;return this[_0x478cd9('0xef4')](_0x2e56c3,arguments);},'desaturate':function(){var _0x4b71fb=_0x1f194b;return this[_0x4b71fb('0xef4')](_0x5bc486,arguments);},'saturate':function(){var _0x421dbf=_0x1f194b;return this[_0x421dbf('0xef4')](_0x14d3cb,arguments);},'greyscale':function(){var _0x1fb0ae=_0x1f194b;return this[_0x1fb0ae('0xef4')](_0x5af495,arguments);},'spin':function(){var _0x790949=_0x1f194b;return this[_0x790949('0xef4')](_0x449856,arguments);},'_applyCombination':function(_0xc5b7f6,_0x2f4910){var _0x1df81d=_0x1f194b;return _0xc5b7f6[_0x1df81d('0x1036')](null,[this][_0x1df81d('0x3cc')]([][_0x1df81d('0xbc0')][_0x1df81d('0x4b0')](_0x2f4910)));},'analogous':function(){var _0x20a8b2=_0x1f194b;return this[_0x20a8b2('0xa47')](_0x404a63,arguments);},'complement':function(){var _0x477107=_0x1f194b;return this[_0x477107('0xa47')](_0x563b5d,arguments);},'monochromatic':function(){return this['_applyCombination'](_0x3a3c84,arguments);},'splitcomplement':function(){return this['_applyCombination'](_0x15c926,arguments);},'triad':function(){var _0x4aaa5c=_0x1f194b;return this[_0x4aaa5c('0xa47')](_0x18c0ac,arguments);},'tetrad':function(){var _0x226cf1=_0x1f194b;return this[_0x226cf1('0xa47')](_0x4bddc2,arguments);}},_0x1100d3[_0x1f194b('0xae3')]=function(_0x7a5c90,_0x50ee4a){var _0x3211f2=_0x1f194b;if(_0x3211f2('0x21e')==typeof _0x7a5c90){var _0x2f0c64={};for(var _0x152f3c in _0x7a5c90)_0x7a5c90['hasOwnProperty'](_0x152f3c)&&(_0x2f0c64[_0x152f3c]='a'===_0x152f3c?_0x7a5c90[_0x152f3c]:_0x1ab76d(_0x7a5c90[_0x152f3c]));_0x7a5c90=_0x2f0c64;}return _0x1100d3(_0x7a5c90,_0x50ee4a);},_0x1100d3['equals']=function(_0x34b376,_0xf2bc1){var _0x9f919e=_0x1f194b;return!(!_0x34b376||!_0xf2bc1)&&_0x1100d3(_0x34b376)[_0x9f919e('0x30a')]()==_0x1100d3(_0xf2bc1)[_0x9f919e('0x30a')]();},_0x1100d3[_0x1f194b('0xb63')]=function(){return _0x1100d3['fromRatio']({'r':_0x240772(),'g':_0x240772(),'b':_0x240772()});},_0x1100d3[_0x1f194b('0x3b8')]=function(_0x3296d3,_0x249081,_0x1f802f){var _0x1ba02c=_0x1f194b;_0x1f802f=0x0===_0x1f802f?0x0:_0x1f802f||0x32;var _0x335389=_0x1100d3(_0x3296d3)['toRgb'](),_0x46ffa1=_0x1100d3(_0x249081)[_0x1ba02c('0xa2f')](),_0x54a73b=_0x1f802f/0x64;return _0x1100d3({'r':(_0x46ffa1['r']-_0x335389['r'])*_0x54a73b+_0x335389['r'],'g':(_0x46ffa1['g']-_0x335389['g'])*_0x54a73b+_0x335389['g'],'b':(_0x46ffa1['b']-_0x335389['b'])*_0x54a73b+_0x335389['b'],'a':(_0x46ffa1['a']-_0x335389['a'])*_0x54a73b+_0x335389['a']});},_0x1100d3[_0x1f194b('0x10e0')]=function(_0x48a863,_0x560a5d){var _0x29716b=_0x1f194b,_0x361051=_0x1100d3(_0x48a863),_0x1133b3=_0x1100d3(_0x560a5d);return(_0x133ce8['max'](_0x361051[_0x29716b('0x38a')](),_0x1133b3[_0x29716b('0x38a')]())+0.05)/(_0x133ce8['min'](_0x361051['getLuminance'](),_0x1133b3[_0x29716b('0x38a')]())+0.05);},_0x1100d3[_0x1f194b('0x12f')]=function(_0x17e1ef,_0x4dd8f5,_0x479397){var _0x58450a=_0x1f194b,_0x30a8f9,_0x3a5427,_0x2b264a=_0x1100d3[_0x58450a('0x10e0')](_0x17e1ef,_0x4dd8f5);switch(_0x3a5427=!0x1,(_0x30a8f9=function(_0x4c60e1){var _0xaeff8d=_0x58450a,_0x31dc0d,_0x11872a;return _0x31dc0d=((_0x4c60e1=_0x4c60e1||{'level':'AA','size':_0xaeff8d('0xa4c')})[_0xaeff8d('0x1fe')]||'AA')[_0xaeff8d('0x67d')](),_0x11872a=(_0x4c60e1[_0xaeff8d('0x844')]||'small')['toLowerCase'](),'AA'!==_0x31dc0d&&'AAA'!==_0x31dc0d&&(_0x31dc0d='AA'),_0xaeff8d('0xa4c')!==_0x11872a&&_0xaeff8d('0xb0c')!==_0x11872a&&(_0x11872a='small'),{'level':_0x31dc0d,'size':_0x11872a};}(_0x479397))[_0x58450a('0x1fe')]+_0x30a8f9[_0x58450a('0x844')]){case _0x58450a('0x3f8'):case _0x58450a('0xf6a'):_0x3a5427=_0x2b264a>=4.5;break;case _0x58450a('0x34'):_0x3a5427=_0x2b264a>=0x3;break;case'AAAsmall':_0x3a5427=_0x2b264a>=0x7;}return _0x3a5427;},_0x1100d3['mostReadable']=function(_0x20abe3,_0x2a96b3,_0x458132){var _0x285402=_0x1f194b,_0x5bc18e,_0x13c079,_0x5a139a,_0x1770fa,_0x51a82e=null,_0x2db5a4=0x0;_0x13c079=(_0x458132=_0x458132||{})[_0x285402('0x23f')],_0x5a139a=_0x458132[_0x285402('0x1fe')],_0x1770fa=_0x458132[_0x285402('0x844')];for(var _0x593773=0x0;_0x593773<_0x2a96b3['length'];_0x593773++)(_0x5bc18e=_0x1100d3['readability'](_0x20abe3,_0x2a96b3[_0x593773]))>_0x2db5a4&&(_0x2db5a4=_0x5bc18e,_0x51a82e=_0x1100d3(_0x2a96b3[_0x593773]));return _0x1100d3[_0x285402('0x12f')](_0x20abe3,_0x51a82e,{'level':_0x5a139a,'size':_0x1770fa})||!_0x13c079?_0x51a82e:(_0x458132[_0x285402('0x23f')]=!0x1,_0x1100d3['mostReadable'](_0x20abe3,[_0x285402('0xe8b'),_0x285402('0xfab')],_0x458132));};var _0x10c072=_0x1100d3[_0x1f194b('0xf28')]={'aliceblue':_0x1f194b('0xb1c'),'antiquewhite':_0x1f194b('0x15c'),'aqua':_0x1f194b('0xeae'),'aquamarine':_0x1f194b('0xb5f'),'azure':_0x1f194b('0x35a'),'beige':'f5f5dc','bisque':_0x1f194b('0xd3f'),'black':_0x1f194b('0x1f2'),'blanchedalmond':_0x1f194b('0xf'),'blue':_0x1f194b('0x539'),'blueviolet':_0x1f194b('0x8a3'),'brown':_0x1f194b('0x285'),'burlywood':_0x1f194b('0xec7'),'burntsienna':'ea7e5d','cadetblue':_0x1f194b('0x107c'),'chartreuse':_0x1f194b('0xbf9'),'chocolate':_0x1f194b('0xb57'),'coral':_0x1f194b('0xd57'),'cornflowerblue':_0x1f194b('0xb16'),'cornsilk':_0x1f194b('0xd1f'),'crimson':_0x1f194b('0x831'),'cyan':_0x1f194b('0xeae'),'darkblue':'00008b','darkcyan':_0x1f194b('0x41'),'darkgoldenrod':_0x1f194b('0xbe5'),'darkgray':_0x1f194b('0x213'),'darkgreen':_0x1f194b('0x11b6'),'darkgrey':'a9a9a9','darkkhaki':_0x1f194b('0xf97'),'darkmagenta':_0x1f194b('0x7a5'),'darkolivegreen':_0x1f194b('0xfcb'),'darkorange':_0x1f194b('0x4b2'),'darkorchid':_0x1f194b('0x1c2'),'darkred':_0x1f194b('0x10c7'),'darksalmon':_0x1f194b('0xb8'),'darkseagreen':_0x1f194b('0x72'),'darkslateblue':_0x1f194b('0x6ee'),'darkslategray':_0x1f194b('0x474'),'darkslategrey':_0x1f194b('0x474'),'darkturquoise':'00ced1','darkviolet':_0x1f194b('0xd89'),'deeppink':_0x1f194b('0x3c7'),'deepskyblue':_0x1f194b('0xe16'),'dimgray':_0x1f194b('0x93d'),'dimgrey':_0x1f194b('0x93d'),'dodgerblue':_0x1f194b('0x8c'),'firebrick':_0x1f194b('0xed6'),'floralwhite':_0x1f194b('0x323'),'forestgreen':_0x1f194b('0xdf0'),'fuchsia':_0x1f194b('0x4b'),'gainsboro':_0x1f194b('0x2af'),'ghostwhite':'f8f8ff','gold':_0x1f194b('0x6e5'),'goldenrod':_0x1f194b('0xe7'),'gray':_0x1f194b('0xe6c'),'green':_0x1f194b('0x497'),'greenyellow':_0x1f194b('0xcc2'),'grey':_0x1f194b('0xe6c'),'honeydew':_0x1f194b('0x2db'),'hotpink':'ff69b4','indianred':_0x1f194b('0xc1d'),'indigo':_0x1f194b('0x1b3'),'ivory':'fffff0','khaki':'f0e68c','lavender':_0x1f194b('0xf17'),'lavenderblush':_0x1f194b('0x606'),'lawngreen':_0x1f194b('0x77c'),'lemonchiffon':'fffacd','lightblue':'add8e6','lightcoral':'f08080','lightcyan':'e0ffff','lightgoldenrodyellow':'fafad2','lightgray':_0x1f194b('0x11f'),'lightgreen':_0x1f194b('0x44c'),'lightgrey':_0x1f194b('0x11f'),'lightpink':_0x1f194b('0x78d'),'lightsalmon':_0x1f194b('0xad7'),'lightseagreen':_0x1f194b('0x216'),'lightskyblue':_0x1f194b('0xd84'),'lightslategray':_0x1f194b('0x562'),'lightslategrey':_0x1f194b('0x562'),'lightsteelblue':_0x1f194b('0x10f3'),'lightyellow':_0x1f194b('0xd92'),'lime':'0f0','limegreen':_0x1f194b('0x9d8'),'linen':_0x1f194b('0xb5e'),'magenta':_0x1f194b('0x4b'),'maroon':_0x1f194b('0xf44'),'mediumaquamarine':_0x1f194b('0x64a'),'mediumblue':_0x1f194b('0xe78'),'mediumorchid':'ba55d3','mediumpurple':'9370db','mediumseagreen':'3cb371','mediumslateblue':_0x1f194b('0x8a1'),'mediumspringgreen':'00fa9a','mediumturquoise':'48d1cc','mediumvioletred':'c71585','midnightblue':_0x1f194b('0x5db'),'mintcream':_0x1f194b('0x286'),'mistyrose':_0x1f194b('0x10a9'),'moccasin':_0x1f194b('0x68'),'navajowhite':_0x1f194b('0x6f7'),'navy':_0x1f194b('0xfe0'),'oldlace':_0x1f194b('0xd62'),'olive':_0x1f194b('0x49c'),'olivedrab':_0x1f194b('0x325'),'orange':_0x1f194b('0x168'),'orangered':_0x1f194b('0xffc'),'orchid':_0x1f194b('0xe17'),'palegoldenrod':_0x1f194b('0xe24'),'palegreen':_0x1f194b('0x36e'),'paleturquoise':_0x1f194b('0x630'),'palevioletred':'db7093','papayawhip':'ffefd5','peachpuff':_0x1f194b('0x5cc'),'peru':_0x1f194b('0x516'),'pink':_0x1f194b('0x469'),'plum':_0x1f194b('0xd6c'),'powderblue':_0x1f194b('0x11a6'),'purple':_0x1f194b('0x40a'),'rebeccapurple':'663399','red':_0x1f194b('0xb02'),'rosybrown':_0x1f194b('0x691'),'royalblue':_0x1f194b('0x3c3'),'saddlebrown':_0x1f194b('0x74'),'salmon':_0x1f194b('0x1ea'),'sandybrown':_0x1f194b('0x450'),'seagreen':'2e8b57','seashell':_0x1f194b('0xa1d'),'sienna':_0x1f194b('0x433'),'silver':_0x1f194b('0x6ca'),'skyblue':_0x1f194b('0x1f9'),'slateblue':_0x1f194b('0x7e'),'slategray':_0x1f194b('0xce3'),'slategrey':_0x1f194b('0xce3'),'snow':_0x1f194b('0x4be'),'springgreen':'00ff7f','steelblue':'4682b4','tan':_0x1f194b('0xa59'),'teal':_0x1f194b('0xdb3'),'thistle':_0x1f194b('0x88f'),'tomato':'ff6347','turquoise':_0x1f194b('0x84c'),'violet':_0x1f194b('0x815'),'wheat':_0x1f194b('0xee1'),'white':_0x1f194b('0x5ce'),'whitesmoke':_0x1f194b('0x459'),'yellow':'ff0','yellowgreen':'9acd32'},_0x17e40a=_0x1100d3['hexNames']=function(_0x475487){var _0x4eb9e4=_0x1f194b,_0x22b453={};for(var _0x3e292a in _0x475487)_0x475487[_0x4eb9e4('0x100')](_0x3e292a)&&(_0x22b453[_0x475487[_0x3e292a]]=_0x3e292a);return _0x22b453;}(_0x10c072);function _0x31e6c7(_0x260c1d){return _0x260c1d=parseFloat(_0x260c1d),(isNaN(_0x260c1d)||_0x260c1d<0x0||_0x260c1d>0x1)&&(_0x260c1d=0x1),_0x260c1d;}function _0x2fc6fd(_0x4dbb8e,_0x1b2fea){var _0x23d117=_0x1f194b;(function(_0x1fb96d){var _0x25e5b6=_0x3ab6;return _0x25e5b6('0x7c7')==typeof _0x1fb96d&&-0x1!=_0x1fb96d[_0x25e5b6('0x4dc')]('.')&&0x1===parseFloat(_0x1fb96d);}(_0x4dbb8e)&&(_0x4dbb8e=_0x23d117('0xeef')));var _0xab2e3c=function(_0x422f9b){var _0x1cab44=_0x23d117;return _0x1cab44('0x7c7')==typeof _0x422f9b&&-0x1!=_0x422f9b[_0x1cab44('0x4dc')]('%');}(_0x4dbb8e);return _0x4dbb8e=_0x2c41a7(_0x1b2fea,_0x71baee(0x0,parseFloat(_0x4dbb8e))),_0xab2e3c&&(_0x4dbb8e=parseInt(_0x4dbb8e*_0x1b2fea,0xa)/0x64),_0x133ce8[_0x23d117('0x74f')](_0x4dbb8e-_0x1b2fea)<0.000001?0x1:_0x4dbb8e%_0x1b2fea/parseFloat(_0x1b2fea);}function _0x48663a(_0xb6b0ce){return _0x2c41a7(0x1,_0x71baee(0x0,_0xb6b0ce));}function _0x592b33(_0x24c997){return parseInt(_0x24c997,0x10);}function _0x8a1ede(_0x309531){var _0x11b2a8=_0x1f194b;return 0x1==_0x309531[_0x11b2a8('0x525')]?'0'+_0x309531:''+_0x309531;}function _0x1ab76d(_0x5ae636){return _0x5ae636<=0x1&&(_0x5ae636=0x64*_0x5ae636+'%'),_0x5ae636;}function _0x366a73(_0x681868){var _0x2d4d17=_0x1f194b;return _0x133ce8[_0x2d4d17('0xbbc')](0xff*parseFloat(_0x681868))['toString'](0x10);}function _0x50f11b(_0x5b6b33){return _0x592b33(_0x5b6b33)/0xff;}var _0xef3573,_0x3f652a,_0x5a9d77,_0x451298=(_0x3f652a=_0x1f194b('0x65f')+(_0xef3573=_0x1f194b('0x617'))+')[,|\x5cs]+('+_0xef3573+_0x1f194b('0xa35')+_0xef3573+_0x1f194b('0xce'),_0x5a9d77=_0x1f194b('0x65f')+_0xef3573+_0x1f194b('0xa35')+_0xef3573+_0x1f194b('0xa35')+_0xef3573+_0x1f194b('0xa35')+_0xef3573+_0x1f194b('0xce'),{'CSS_UNIT':new RegExp(_0xef3573),'rgb':new RegExp(_0x1f194b('0x467')+_0x3f652a),'rgba':new RegExp(_0x1f194b('0x9bb')+_0x5a9d77),'hsl':new RegExp(_0x1f194b('0x41d')+_0x3f652a),'hsla':new RegExp(_0x1f194b('0x3ab')+_0x5a9d77),'hsv':new RegExp(_0x1f194b('0x7d8')+_0x3f652a),'hsva':new RegExp(_0x1f194b('0x999')+_0x5a9d77),'hex3':/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,'hex6':/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,'hex4':/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,'hex8':/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/});function _0x1297de(_0x122183){var _0x1c951c=_0x1f194b;return!!_0x451298[_0x1c951c('0x588')][_0x1c951c('0xd16')](_0x122183);}void 0x0!==_0x3285dc&&_0x3285dc[_0x1f194b('0xddc')]?_0x3285dc['exports']=_0x1100d3:_0x1f194b('0xae9')==typeof define&&define[_0x1f194b('0x733')]?define(function(){return _0x1100d3;}):window[_0x1f194b('0xc3')]=_0x1100d3;}(Math);},{}],0x176:[function(_0x235199,_0x15d02a,_0x143946){var _0x331b73=_0x404097,_0x13930c,_0x54e324;_0x13930c=this,_0x54e324=function(){return function(_0xeb53e0){function _0x410507(_0x1a334f){var _0x1c18ce=_0x3ab6;if(_0x31430a[_0x1a334f])return _0x31430a[_0x1a334f][_0x1c18ce('0xddc')];var _0x12f490=_0x31430a[_0x1a334f]={'exports':{},'id':_0x1a334f,'loaded':!0x1};return _0xeb53e0[_0x1a334f][_0x1c18ce('0x4b0')](_0x12f490[_0x1c18ce('0xddc')],_0x12f490,_0x12f490[_0x1c18ce('0xddc')],_0x410507),_0x12f490['loaded']=!0x0,_0x12f490['exports'];}var _0x31430a={};return _0x410507['m']=_0xeb53e0,_0x410507['c']=_0x31430a,_0x410507['p']='',_0x410507(0x0);}([function(_0xfe7f18,_0x21b74d){var _0xd3191=_0x3ab6;'use strict';function _0x520d54(_0x2658e7,_0x5341be,_0x143516,_0x5006e8){var _0x4aba02=_0x3ab6;return function(_0x191314,_0x5ee76d,_0x1fefdb,_0x20f1a9){return{'red':_0x20f1a9[0x4*(_0x1fefdb*_0x5ee76d+_0x191314)],'green':_0x20f1a9[0x4*(_0x1fefdb*_0x5ee76d+_0x191314)+0x1],'blue':_0x20f1a9[0x4*(_0x1fefdb*_0x5ee76d+_0x191314)+0x2],'alpha':_0x20f1a9[0x4*(_0x1fefdb*_0x5ee76d+_0x191314)+0x3]};}(_0x2658e7,_0x5341be,_0x143516,_0x5006e8)[_0x4aba02('0x116b')];}function _0x2adfdd(_0x12c85c,_0x259ded,_0x34608c,_0x2bd639){for(var _0x5c6a7f=_0x12c85c?0x1:-0x1,_0xe72216=_0x12c85c?0x0:_0x34608c-0x1;_0x12c85c?_0xe72216<_0x34608c:_0xe72216>-0x1;_0xe72216+=_0x5c6a7f)for(var _0x4e646f=0x0;_0x4e646f<_0x259ded;_0x4e646f++)if(_0x520d54(_0x4e646f,_0xe72216,_0x259ded,_0x2bd639))return _0xe72216;return null;}function _0x151c6e(_0x5dd09e,_0x21b2f3,_0x1085d6,_0x561d6b){for(var _0x261ced=_0x5dd09e?0x1:-0x1,_0x490666=_0x5dd09e?0x0:_0x21b2f3-0x1;_0x5dd09e?_0x490666<_0x21b2f3:_0x490666>-0x1;_0x490666+=_0x261ced)for(var _0x4704a9=0x0;_0x4704a9<_0x1085d6;_0x4704a9++)if(_0x520d54(_0x490666,_0x4704a9,_0x21b2f3,_0x561d6b))return _0x490666;return null;}Object[_0xd3191('0xa95')](_0x21b74d,_0xd3191('0x114c'),{'value':!0x0}),_0x21b74d[_0xd3191('0x544')]=function(_0x57a3ea){var _0x19b62d=_0xd3191,_0x3d85ea=_0x57a3ea['getContext']('2d'),_0x5312e6=_0x57a3ea['width'],_0x2e4da6=_0x57a3ea[_0x19b62d('0x7f0')],_0x1a1985=_0x3d85ea[_0x19b62d('0x628')](0x0,0x0,_0x5312e6,_0x2e4da6)['data'],_0x305144=_0x2adfdd(!0x0,_0x5312e6,_0x2e4da6,_0x1a1985),_0x1396b2=_0x2adfdd(!0x1,_0x5312e6,_0x2e4da6,_0x1a1985),_0x5f9286=_0x151c6e(!0x0,_0x5312e6,_0x2e4da6,_0x1a1985),_0x2412c7=_0x151c6e(!0x1,_0x5312e6,_0x2e4da6,_0x1a1985)-_0x5f9286+0x1,_0x6873ba=_0x1396b2-_0x305144+0x1,_0x6769ea=_0x3d85ea[_0x19b62d('0x628')](_0x5f9286,_0x305144,_0x2412c7,_0x6873ba);return _0x57a3ea[_0x19b62d('0xa7b')]=_0x2412c7,_0x57a3ea[_0x19b62d('0x7f0')]=_0x6873ba,_0x3d85ea[_0x19b62d('0xd9c')](0x0,0x0,_0x2412c7,_0x6873ba),_0x3d85ea[_0x19b62d('0xa70')](_0x6769ea,0x0,0x0),_0x57a3ea;};}]);},'object'==typeof _0x143946&&_0x331b73('0x21e')==typeof _0x15d02a?_0x15d02a['exports']=_0x54e324():_0x331b73('0xae9')==typeof define&&define[_0x331b73('0x733')]?define([],_0x54e324):_0x331b73('0x21e')==typeof _0x143946?_0x143946[_0x331b73('0x51')]=_0x54e324():_0x13930c[_0x331b73('0x51')]=_0x54e324();},{}]},{},[0x2,0x8,0xd,0xf,0x6,0x4,0x11,0x13,0x15,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x24,0x26,0x28,0x2a,0x2c,0x2e,0x30,0x32,0x34,0x36]); \ No newline at end of file + +'use strict';var b="function"===typeof Symbol&&Symbol.for,c=b?Symbol.for("react.element"):60103,d=b?Symbol.for("react.portal"):60106,e=b?Symbol.for("react.fragment"):60107,f=b?Symbol.for("react.strict_mode"):60108,g=b?Symbol.for("react.profiler"):60114,h=b?Symbol.for("react.provider"):60109,k=b?Symbol.for("react.context"):60110,l=b?Symbol.for("react.async_mode"):60111,m=b?Symbol.for("react.concurrent_mode"):60111,n=b?Symbol.for("react.forward_ref"):60112,p=b?Symbol.for("react.suspense"):60113,q=b? +Symbol.for("react.suspense_list"):60120,r=b?Symbol.for("react.memo"):60115,t=b?Symbol.for("react.lazy"):60116,v=b?Symbol.for("react.block"):60121,w=b?Symbol.for("react.fundamental"):60117,x=b?Symbol.for("react.responder"):60118,y=b?Symbol.for("react.scope"):60119; +function z(a){if("object"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d; +exports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return"object"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t}; +exports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p}; +exports.isValidElementType=function(a){return"string"===typeof a||"function"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||"object"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z; + +},{}],363:[function(require,module,exports){ +(function (process){ +'use strict'; + +if (process.env.NODE_ENV === 'production') { + module.exports = require('./cjs/react-is.production.min.js'); +} else { + module.exports = require('./cjs/react-is.development.js'); +} + +}).call(this,require('_process')) + +},{"./cjs/react-is.development.js":361,"./cjs/react-is.production.min.js":362,"_process":1}],364:[function(require,module,exports){ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("prop-types"),require("react"),require("signature_pad"),require("trim-canvas")):"function"==typeof define&&define.amd?define(["prop-types","react","signature_pad","trim-canvas"],t):"object"==typeof exports?exports.SignatureCanvas=t(require("prop-types"),require("react"),require("signature_pad"),require("trim-canvas")):e.SignatureCanvas=t(e["prop-types"],e.react,e.signature_pad,e["trim-canvas"])}(this,function(e,t,n,r){return function(e){function t(r){if(n[r])return n[r].exports;var a=n[r]={exports:{},id:r,loaded:!1};return e[r].call(a.exports,a,a.exports,t),a.loaded=!0,a.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function a(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function u(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=Object.assign||function(e){for(var t=1;t 1 && arguments[1] !== undefined ? arguments[1] : 'span'; + + return function (_React$Component) { + _inherits(Active, _React$Component); + + function Active() { + var _ref; + + var _temp, _this, _ret; + + _classCallCheck(this, Active); + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Active.__proto__ || Object.getPrototypeOf(Active)).call.apply(_ref, [this].concat(args))), _this), _this.state = { active: false }, _this.handleMouseDown = function () { + return _this.setState({ active: true }); + }, _this.handleMouseUp = function () { + return _this.setState({ active: false }); + }, _this.render = function () { + return _react2.default.createElement( + Span, + { onMouseDown: _this.handleMouseDown, onMouseUp: _this.handleMouseUp }, + _react2.default.createElement(Component, _extends({}, _this.props, _this.state)) + ); + }, _temp), _possibleConstructorReturn(_this, _ret); + } + + return Active; + }(_react2.default.Component); +}; + +exports.default = active; +},{"react":"react"}],367:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.hover = undefined; + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var hover = exports.hover = function hover(Component) { + var Span = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'span'; + + return function (_React$Component) { + _inherits(Hover, _React$Component); + + function Hover() { + var _ref; + + var _temp, _this, _ret; + + _classCallCheck(this, Hover); + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Hover.__proto__ || Object.getPrototypeOf(Hover)).call.apply(_ref, [this].concat(args))), _this), _this.state = { hover: false }, _this.handleMouseOver = function () { + return _this.setState({ hover: true }); + }, _this.handleMouseOut = function () { + return _this.setState({ hover: false }); + }, _this.render = function () { + return _react2.default.createElement( + Span, + { onMouseOver: _this.handleMouseOver, onMouseOut: _this.handleMouseOut }, + _react2.default.createElement(Component, _extends({}, _this.props, _this.state)) + ); + }, _temp), _possibleConstructorReturn(_this, _ret); + } + + return Hover; + }(_react2.default.Component); +}; + +exports.default = hover; +},{"react":"react"}],368:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.flattenNames = undefined; + +var _isString2 = require('lodash/isString'); + +var _isString3 = _interopRequireDefault(_isString2); + +var _forOwn2 = require('lodash/forOwn'); + +var _forOwn3 = _interopRequireDefault(_forOwn2); + +var _isPlainObject2 = require('lodash/isPlainObject'); + +var _isPlainObject3 = _interopRequireDefault(_isPlainObject2); + +var _map2 = require('lodash/map'); + +var _map3 = _interopRequireDefault(_map2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var flattenNames = exports.flattenNames = function flattenNames() { + var things = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; + + var names = []; + + (0, _map3.default)(things, function (thing) { + if (Array.isArray(thing)) { + flattenNames(thing).map(function (name) { + return names.push(name); + }); + } else if ((0, _isPlainObject3.default)(thing)) { + (0, _forOwn3.default)(thing, function (value, key) { + value === true && names.push(key); + names.push(key + '-' + value); + }); + } else if ((0, _isString3.default)(thing)) { + names.push(thing); + } + }); + + return names; +}; + +exports.default = flattenNames; +},{"lodash/forOwn":266,"lodash/isPlainObject":280,"lodash/isString":282,"lodash/map":288}],369:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ReactCSS = exports.loop = exports.handleActive = exports.handleHover = exports.hover = undefined; + +var _flattenNames = require('./flattenNames'); + +var _flattenNames2 = _interopRequireDefault(_flattenNames); + +var _mergeClasses = require('./mergeClasses'); + +var _mergeClasses2 = _interopRequireDefault(_mergeClasses); + +var _autoprefix = require('./autoprefix'); + +var _autoprefix2 = _interopRequireDefault(_autoprefix); + +var _hover2 = require('./components/hover'); + +var _hover3 = _interopRequireDefault(_hover2); + +var _active = require('./components/active'); + +var _active2 = _interopRequireDefault(_active); + +var _loop2 = require('./loop'); + +var _loop3 = _interopRequireDefault(_loop2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +exports.hover = _hover3.default; +exports.handleHover = _hover3.default; +exports.handleActive = _active2.default; +exports.loop = _loop3.default; +var ReactCSS = exports.ReactCSS = function ReactCSS(classes) { + for (var _len = arguments.length, activations = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + activations[_key - 1] = arguments[_key]; + } + + var activeNames = (0, _flattenNames2.default)(activations); + var merged = (0, _mergeClasses2.default)(classes, activeNames); + return (0, _autoprefix2.default)(merged); +}; + +exports.default = ReactCSS; +},{"./autoprefix":365,"./components/active":366,"./components/hover":367,"./flattenNames":368,"./loop":370,"./mergeClasses":371}],370:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +var loopable = function loopable(i, length) { + var props = {}; + var setProp = function setProp(name) { + var value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + + props[name] = value; + }; + + i === 0 && setProp('first-child'); + i === length - 1 && setProp('last-child'); + (i === 0 || i % 2 === 0) && setProp('even'); + Math.abs(i % 2) === 1 && setProp('odd'); + setProp('nth-child', i); + + return props; +}; + +exports.default = loopable; +},{}],371:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.mergeClasses = undefined; + +var _forOwn2 = require('lodash/forOwn'); + +var _forOwn3 = _interopRequireDefault(_forOwn2); + +var _cloneDeep2 = require('lodash/cloneDeep'); + +var _cloneDeep3 = _interopRequireDefault(_cloneDeep2); + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var mergeClasses = exports.mergeClasses = function mergeClasses(classes) { + var activeNames = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; + + var styles = classes.default && (0, _cloneDeep3.default)(classes.default) || {}; + activeNames.map(function (name) { + var toMerge = classes[name]; + if (toMerge) { + (0, _forOwn3.default)(toMerge, function (value, key) { + if (!styles[key]) { + styles[key] = {}; + } + + styles[key] = _extends({}, styles[key], toMerge[key]); + }); + } + + return name; + }); + return styles; +}; + +exports.default = mergeClasses; +},{"lodash/cloneDeep":260,"lodash/forOwn":266}],372:[function(require,module,exports){ +/*! + * Signature Pad v2.3.2 + * https://github.com/szimek/signature_pad + * + * Copyright 2017 Szymon Nowak + * Released under the MIT license + * + * The main idea and some parts of the code (e.g. drawing variable width Bézier curve) are taken from: + * http://corner.squareup.com/2012/07/smoother-signatures.html + * + * Implementation of interpolation using cubic Bézier curves is taken from: + * http://benknowscode.wordpress.com/2012/09/14/path-interpolation-using-cubic-bezier-and-control-point-estimation-in-javascript + * + * Algorithm for approximated length of a Bézier curve is taken from: + * http://www.lemoda.net/maths/bezier-length/index.html + * + */ + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global.SignaturePad = factory()); +}(this, (function () { 'use strict'; + +function Point(x, y, time) { + this.x = x; + this.y = y; + this.time = time || new Date().getTime(); +} + +Point.prototype.velocityFrom = function (start) { + return this.time !== start.time ? this.distanceTo(start) / (this.time - start.time) : 1; +}; + +Point.prototype.distanceTo = function (start) { + return Math.sqrt(Math.pow(this.x - start.x, 2) + Math.pow(this.y - start.y, 2)); +}; + +Point.prototype.equals = function (other) { + return this.x === other.x && this.y === other.y && this.time === other.time; +}; + +function Bezier(startPoint, control1, control2, endPoint) { + this.startPoint = startPoint; + this.control1 = control1; + this.control2 = control2; + this.endPoint = endPoint; +} + +// Returns approximated length. +Bezier.prototype.length = function () { + var steps = 10; + var length = 0; + var px = void 0; + var py = void 0; + + for (var i = 0; i <= steps; i += 1) { + var t = i / steps; + var cx = this._point(t, this.startPoint.x, this.control1.x, this.control2.x, this.endPoint.x); + var cy = this._point(t, this.startPoint.y, this.control1.y, this.control2.y, this.endPoint.y); + if (i > 0) { + var xdiff = cx - px; + var ydiff = cy - py; + length += Math.sqrt(xdiff * xdiff + ydiff * ydiff); + } + px = cx; + py = cy; + } + + return length; +}; + +/* eslint-disable no-multi-spaces, space-in-parens */ +Bezier.prototype._point = function (t, start, c1, c2, end) { + return start * (1.0 - t) * (1.0 - t) * (1.0 - t) + 3.0 * c1 * (1.0 - t) * (1.0 - t) * t + 3.0 * c2 * (1.0 - t) * t * t + end * t * t * t; +}; + +/* eslint-disable */ + +// http://stackoverflow.com/a/27078401/815507 +function throttle(func, wait, options) { + var context, args, result; + var timeout = null; + var previous = 0; + if (!options) options = {}; + var later = function later() { + previous = options.leading === false ? 0 : Date.now(); + timeout = null; + result = func.apply(context, args); + if (!timeout) context = args = null; + }; + return function () { + var now = Date.now(); + if (!previous && options.leading === false) previous = now; + var remaining = wait - (now - previous); + context = this; + args = arguments; + if (remaining <= 0 || remaining > wait) { + if (timeout) { + clearTimeout(timeout); + timeout = null; + } + previous = now; + result = func.apply(context, args); + if (!timeout) context = args = null; + } else if (!timeout && options.trailing !== false) { + timeout = setTimeout(later, remaining); + } + return result; + }; +} + +function SignaturePad(canvas, options) { + var self = this; + var opts = options || {}; + + this.velocityFilterWeight = opts.velocityFilterWeight || 0.7; + this.minWidth = opts.minWidth || 0.5; + this.maxWidth = opts.maxWidth || 2.5; + this.throttle = 'throttle' in opts ? opts.throttle : 16; // in miliseconds + this.minDistance = 'minDistance' in opts ? opts.minDistance : 5; + + if (this.throttle) { + this._strokeMoveUpdate = throttle(SignaturePad.prototype._strokeUpdate, this.throttle); + } else { + this._strokeMoveUpdate = SignaturePad.prototype._strokeUpdate; + } + + this.dotSize = opts.dotSize || function () { + return (this.minWidth + this.maxWidth) / 2; + }; + this.penColor = opts.penColor || 'black'; + this.backgroundColor = opts.backgroundColor || 'rgba(0,0,0,0)'; + this.onBegin = opts.onBegin; + this.onEnd = opts.onEnd; + + this._canvas = canvas; + this._ctx = canvas.getContext('2d'); + this.clear(); + + // We need add these inline so they are available to unbind while still having + // access to 'self' we could use _.bind but it's not worth adding a dependency. + this._handleMouseDown = function (event) { + if (event.which === 1) { + self._mouseButtonDown = true; + self._strokeBegin(event); + } + }; + + this._handleMouseMove = function (event) { + if (self._mouseButtonDown) { + self._strokeMoveUpdate(event); + } + }; + + this._handleMouseUp = function (event) { + if (event.which === 1 && self._mouseButtonDown) { + self._mouseButtonDown = false; + self._strokeEnd(event); + } + }; + + this._handleTouchStart = function (event) { + if (event.targetTouches.length === 1) { + var touch = event.changedTouches[0]; + self._strokeBegin(touch); + } + }; + + this._handleTouchMove = function (event) { + // Prevent scrolling. + event.preventDefault(); + + var touch = event.targetTouches[0]; + self._strokeMoveUpdate(touch); + }; + + this._handleTouchEnd = function (event) { + var wasCanvasTouched = event.target === self._canvas; + if (wasCanvasTouched) { + event.preventDefault(); + self._strokeEnd(event); + } + }; + + // Enable mouse and touch event handlers + this.on(); +} + +// Public methods +SignaturePad.prototype.clear = function () { + var ctx = this._ctx; + var canvas = this._canvas; + + ctx.fillStyle = this.backgroundColor; + ctx.clearRect(0, 0, canvas.width, canvas.height); + ctx.fillRect(0, 0, canvas.width, canvas.height); + + this._data = []; + this._reset(); + this._isEmpty = true; +}; + +SignaturePad.prototype.fromDataURL = function (dataUrl) { + var _this = this; + + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + var image = new Image(); + var ratio = options.ratio || window.devicePixelRatio || 1; + var width = options.width || this._canvas.width / ratio; + var height = options.height || this._canvas.height / ratio; + + this._reset(); + image.src = dataUrl; + image.onload = function () { + _this._ctx.drawImage(image, 0, 0, width, height); + }; + this._isEmpty = false; +}; + +SignaturePad.prototype.toDataURL = function (type) { + var _canvas; + + switch (type) { + case 'image/svg+xml': + return this._toSVG(); + default: + for (var _len = arguments.length, options = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + options[_key - 1] = arguments[_key]; + } + + return (_canvas = this._canvas).toDataURL.apply(_canvas, [type].concat(options)); + } +}; + +SignaturePad.prototype.on = function () { + this._handleMouseEvents(); + this._handleTouchEvents(); +}; + +SignaturePad.prototype.off = function () { + this._canvas.removeEventListener('mousedown', this._handleMouseDown); + this._canvas.removeEventListener('mousemove', this._handleMouseMove); + document.removeEventListener('mouseup', this._handleMouseUp); + + this._canvas.removeEventListener('touchstart', this._handleTouchStart); + this._canvas.removeEventListener('touchmove', this._handleTouchMove); + this._canvas.removeEventListener('touchend', this._handleTouchEnd); +}; + +SignaturePad.prototype.isEmpty = function () { + return this._isEmpty; +}; + +// Private methods +SignaturePad.prototype._strokeBegin = function (event) { + this._data.push([]); + this._reset(); + this._strokeUpdate(event); + + if (typeof this.onBegin === 'function') { + this.onBegin(event); + } +}; + +SignaturePad.prototype._strokeUpdate = function (event) { + var x = event.clientX; + var y = event.clientY; + + var point = this._createPoint(x, y); + var lastPointGroup = this._data[this._data.length - 1]; + var lastPoint = lastPointGroup && lastPointGroup[lastPointGroup.length - 1]; + var isLastPointTooClose = lastPoint && point.distanceTo(lastPoint) < this.minDistance; + + // Skip this point if it's too close to the previous one + if (!(lastPoint && isLastPointTooClose)) { + var _addPoint = this._addPoint(point), + curve = _addPoint.curve, + widths = _addPoint.widths; + + if (curve && widths) { + this._drawCurve(curve, widths.start, widths.end); + } + + this._data[this._data.length - 1].push({ + x: point.x, + y: point.y, + time: point.time, + color: this.penColor + }); + } +}; + +SignaturePad.prototype._strokeEnd = function (event) { + var canDrawCurve = this.points.length > 2; + var point = this.points[0]; // Point instance + + if (!canDrawCurve && point) { + this._drawDot(point); + } + + if (point) { + var lastPointGroup = this._data[this._data.length - 1]; + var lastPoint = lastPointGroup[lastPointGroup.length - 1]; // plain object + + // When drawing a dot, there's only one point in a group, so without this check + // such group would end up with exactly the same 2 points. + if (!point.equals(lastPoint)) { + lastPointGroup.push({ + x: point.x, + y: point.y, + time: point.time, + color: this.penColor + }); + } + } + + if (typeof this.onEnd === 'function') { + this.onEnd(event); + } +}; + +SignaturePad.prototype._handleMouseEvents = function () { + this._mouseButtonDown = false; + + this._canvas.addEventListener('mousedown', this._handleMouseDown); + this._canvas.addEventListener('mousemove', this._handleMouseMove); + document.addEventListener('mouseup', this._handleMouseUp); +}; + +SignaturePad.prototype._handleTouchEvents = function () { + // Pass touch events to canvas element on mobile IE11 and Edge. + this._canvas.style.msTouchAction = 'none'; + this._canvas.style.touchAction = 'none'; + + this._canvas.addEventListener('touchstart', this._handleTouchStart); + this._canvas.addEventListener('touchmove', this._handleTouchMove); + this._canvas.addEventListener('touchend', this._handleTouchEnd); +}; + +SignaturePad.prototype._reset = function () { + this.points = []; + this._lastVelocity = 0; + this._lastWidth = (this.minWidth + this.maxWidth) / 2; + this._ctx.fillStyle = this.penColor; +}; + +SignaturePad.prototype._createPoint = function (x, y, time) { + var rect = this._canvas.getBoundingClientRect(); + + return new Point(x - rect.left, y - rect.top, time || new Date().getTime()); +}; + +SignaturePad.prototype._addPoint = function (point) { + var points = this.points; + var tmp = void 0; + + points.push(point); + + if (points.length > 2) { + // To reduce the initial lag make it work with 3 points + // by copying the first point to the beginning. + if (points.length === 3) points.unshift(points[0]); + + tmp = this._calculateCurveControlPoints(points[0], points[1], points[2]); + var c2 = tmp.c2; + tmp = this._calculateCurveControlPoints(points[1], points[2], points[3]); + var c3 = tmp.c1; + var curve = new Bezier(points[1], c2, c3, points[2]); + var widths = this._calculateCurveWidths(curve); + + // Remove the first element from the list, + // so that we always have no more than 4 points in points array. + points.shift(); + + return { curve: curve, widths: widths }; + } + + return {}; +}; + +SignaturePad.prototype._calculateCurveControlPoints = function (s1, s2, s3) { + var dx1 = s1.x - s2.x; + var dy1 = s1.y - s2.y; + var dx2 = s2.x - s3.x; + var dy2 = s2.y - s3.y; + + var m1 = { x: (s1.x + s2.x) / 2.0, y: (s1.y + s2.y) / 2.0 }; + var m2 = { x: (s2.x + s3.x) / 2.0, y: (s2.y + s3.y) / 2.0 }; + + var l1 = Math.sqrt(dx1 * dx1 + dy1 * dy1); + var l2 = Math.sqrt(dx2 * dx2 + dy2 * dy2); + + var dxm = m1.x - m2.x; + var dym = m1.y - m2.y; + + var k = l2 / (l1 + l2); + var cm = { x: m2.x + dxm * k, y: m2.y + dym * k }; + + var tx = s2.x - cm.x; + var ty = s2.y - cm.y; + + return { + c1: new Point(m1.x + tx, m1.y + ty), + c2: new Point(m2.x + tx, m2.y + ty) + }; +}; + +SignaturePad.prototype._calculateCurveWidths = function (curve) { + var startPoint = curve.startPoint; + var endPoint = curve.endPoint; + var widths = { start: null, end: null }; + + var velocity = this.velocityFilterWeight * endPoint.velocityFrom(startPoint) + (1 - this.velocityFilterWeight) * this._lastVelocity; + + var newWidth = this._strokeWidth(velocity); + + widths.start = this._lastWidth; + widths.end = newWidth; + + this._lastVelocity = velocity; + this._lastWidth = newWidth; + + return widths; +}; + +SignaturePad.prototype._strokeWidth = function (velocity) { + return Math.max(this.maxWidth / (velocity + 1), this.minWidth); +}; + +SignaturePad.prototype._drawPoint = function (x, y, size) { + var ctx = this._ctx; + + ctx.moveTo(x, y); + ctx.arc(x, y, size, 0, 2 * Math.PI, false); + this._isEmpty = false; +}; + +SignaturePad.prototype._drawCurve = function (curve, startWidth, endWidth) { + var ctx = this._ctx; + var widthDelta = endWidth - startWidth; + var drawSteps = Math.floor(curve.length()); + + ctx.beginPath(); + + for (var i = 0; i < drawSteps; i += 1) { + // Calculate the Bezier (x, y) coordinate for this step. + var t = i / drawSteps; + var tt = t * t; + var ttt = tt * t; + var u = 1 - t; + var uu = u * u; + var uuu = uu * u; + + var x = uuu * curve.startPoint.x; + x += 3 * uu * t * curve.control1.x; + x += 3 * u * tt * curve.control2.x; + x += ttt * curve.endPoint.x; + + var y = uuu * curve.startPoint.y; + y += 3 * uu * t * curve.control1.y; + y += 3 * u * tt * curve.control2.y; + y += ttt * curve.endPoint.y; + + var width = startWidth + ttt * widthDelta; + this._drawPoint(x, y, width); + } + + ctx.closePath(); + ctx.fill(); +}; + +SignaturePad.prototype._drawDot = function (point) { + var ctx = this._ctx; + var width = typeof this.dotSize === 'function' ? this.dotSize() : this.dotSize; + + ctx.beginPath(); + this._drawPoint(point.x, point.y, width); + ctx.closePath(); + ctx.fill(); +}; + +SignaturePad.prototype._fromData = function (pointGroups, drawCurve, drawDot) { + for (var i = 0; i < pointGroups.length; i += 1) { + var group = pointGroups[i]; + + if (group.length > 1) { + for (var j = 0; j < group.length; j += 1) { + var rawPoint = group[j]; + var point = new Point(rawPoint.x, rawPoint.y, rawPoint.time); + var color = rawPoint.color; + + if (j === 0) { + // First point in a group. Nothing to draw yet. + + // All points in the group have the same color, so it's enough to set + // penColor just at the beginning. + this.penColor = color; + this._reset(); + + this._addPoint(point); + } else if (j !== group.length - 1) { + // Middle point in a group. + var _addPoint2 = this._addPoint(point), + curve = _addPoint2.curve, + widths = _addPoint2.widths; + + if (curve && widths) { + drawCurve(curve, widths, color); + } + } else { + // Last point in a group. Do nothing. + } + } + } else { + this._reset(); + var _rawPoint = group[0]; + drawDot(_rawPoint); + } + } +}; + +SignaturePad.prototype._toSVG = function () { + var _this2 = this; + + var pointGroups = this._data; + var canvas = this._canvas; + var ratio = Math.max(window.devicePixelRatio || 1, 1); + var minX = 0; + var minY = 0; + var maxX = canvas.width / ratio; + var maxY = canvas.height / ratio; + var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg'); + + svg.setAttributeNS(null, 'width', canvas.width); + svg.setAttributeNS(null, 'height', canvas.height); + + this._fromData(pointGroups, function (curve, widths, color) { + var path = document.createElement('path'); + + // Need to check curve for NaN values, these pop up when drawing + // lines on the canvas that are not continuous. E.g. Sharp corners + // or stopping mid-stroke and than continuing without lifting mouse. + if (!isNaN(curve.control1.x) && !isNaN(curve.control1.y) && !isNaN(curve.control2.x) && !isNaN(curve.control2.y)) { + var attr = 'M ' + curve.startPoint.x.toFixed(3) + ',' + curve.startPoint.y.toFixed(3) + ' ' + ('C ' + curve.control1.x.toFixed(3) + ',' + curve.control1.y.toFixed(3) + ' ') + (curve.control2.x.toFixed(3) + ',' + curve.control2.y.toFixed(3) + ' ') + (curve.endPoint.x.toFixed(3) + ',' + curve.endPoint.y.toFixed(3)); + + path.setAttribute('d', attr); + path.setAttribute('stroke-width', (widths.end * 2.25).toFixed(3)); + path.setAttribute('stroke', color); + path.setAttribute('fill', 'none'); + path.setAttribute('stroke-linecap', 'round'); + + svg.appendChild(path); + } + }, function (rawPoint) { + var circle = document.createElement('circle'); + var dotSize = typeof _this2.dotSize === 'function' ? _this2.dotSize() : _this2.dotSize; + circle.setAttribute('r', dotSize); + circle.setAttribute('cx', rawPoint.x); + circle.setAttribute('cy', rawPoint.y); + circle.setAttribute('fill', rawPoint.color); + + svg.appendChild(circle); + }); + + var prefix = 'data:image/svg+xml;base64,'; + var header = ''; + var body = svg.innerHTML; + + // IE hack for missing innerHTML property on SVGElement + if (body === undefined) { + var dummy = document.createElement('dummy'); + var nodes = svg.childNodes; + dummy.innerHTML = ''; + + for (var i = 0; i < nodes.length; i += 1) { + dummy.appendChild(nodes[i].cloneNode(true)); + } + + body = dummy.innerHTML; + } + + var footer = ''; + var data = header + body + footer; + + return prefix + btoa(data); +}; + +SignaturePad.prototype.fromData = function (pointGroups) { + var _this3 = this; + + this.clear(); + + this._fromData(pointGroups, function (curve, widths) { + return _this3._drawCurve(curve, widths.start, widths.end); + }, function (rawPoint) { + return _this3._drawDot(rawPoint); + }); + + this._data = pointGroups; +}; + +SignaturePad.prototype.toData = function () { + return this._data; +}; + +return SignaturePad; + +}))); + +},{}],373:[function(require,module,exports){ +// TinyColor v1.4.2 +// https://github.com/bgrins/TinyColor +// Brian Grinstead, MIT License + +(function(Math) { + +var trimLeft = /^\s+/, + trimRight = /\s+$/, + tinyCounter = 0, + mathRound = Math.round, + mathMin = Math.min, + mathMax = Math.max, + mathRandom = Math.random; + +function tinycolor (color, opts) { + + color = (color) ? color : ''; + opts = opts || { }; + + // If input is already a tinycolor, return itself + if (color instanceof tinycolor) { + return color; + } + // If we are called as a function, call using new instead + if (!(this instanceof tinycolor)) { + return new tinycolor(color, opts); + } + + var rgb = inputToRGB(color); + this._originalInput = color, + this._r = rgb.r, + this._g = rgb.g, + this._b = rgb.b, + this._a = rgb.a, + this._roundA = mathRound(100*this._a) / 100, + this._format = opts.format || rgb.format; + this._gradientType = opts.gradientType; + + // Don't let the range of [0,255] come back in [0,1]. + // Potentially lose a little bit of precision here, but will fix issues where + // .5 gets interpreted as half of the total, instead of half of 1 + // If it was supposed to be 128, this was already taken care of by `inputToRgb` + if (this._r < 1) { this._r = mathRound(this._r); } + if (this._g < 1) { this._g = mathRound(this._g); } + if (this._b < 1) { this._b = mathRound(this._b); } + + this._ok = rgb.ok; + this._tc_id = tinyCounter++; +} + +tinycolor.prototype = { + isDark: function() { + return this.getBrightness() < 128; + }, + isLight: function() { + return !this.isDark(); + }, + isValid: function() { + return this._ok; + }, + getOriginalInput: function() { + return this._originalInput; + }, + getFormat: function() { + return this._format; + }, + getAlpha: function() { + return this._a; + }, + getBrightness: function() { + //http://www.w3.org/TR/AERT#color-contrast + var rgb = this.toRgb(); + return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000; + }, + getLuminance: function() { + //http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef + var rgb = this.toRgb(); + var RsRGB, GsRGB, BsRGB, R, G, B; + RsRGB = rgb.r/255; + GsRGB = rgb.g/255; + BsRGB = rgb.b/255; + + if (RsRGB <= 0.03928) {R = RsRGB / 12.92;} else {R = Math.pow(((RsRGB + 0.055) / 1.055), 2.4);} + if (GsRGB <= 0.03928) {G = GsRGB / 12.92;} else {G = Math.pow(((GsRGB + 0.055) / 1.055), 2.4);} + if (BsRGB <= 0.03928) {B = BsRGB / 12.92;} else {B = Math.pow(((BsRGB + 0.055) / 1.055), 2.4);} + return (0.2126 * R) + (0.7152 * G) + (0.0722 * B); + }, + setAlpha: function(value) { + this._a = boundAlpha(value); + this._roundA = mathRound(100*this._a) / 100; + return this; + }, + toHsv: function() { + var hsv = rgbToHsv(this._r, this._g, this._b); + return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this._a }; + }, + toHsvString: function() { + var hsv = rgbToHsv(this._r, this._g, this._b); + var h = mathRound(hsv.h * 360), s = mathRound(hsv.s * 100), v = mathRound(hsv.v * 100); + return (this._a == 1) ? + "hsv(" + h + ", " + s + "%, " + v + "%)" : + "hsva(" + h + ", " + s + "%, " + v + "%, "+ this._roundA + ")"; + }, + toHsl: function() { + var hsl = rgbToHsl(this._r, this._g, this._b); + return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this._a }; + }, + toHslString: function() { + var hsl = rgbToHsl(this._r, this._g, this._b); + var h = mathRound(hsl.h * 360), s = mathRound(hsl.s * 100), l = mathRound(hsl.l * 100); + return (this._a == 1) ? + "hsl(" + h + ", " + s + "%, " + l + "%)" : + "hsla(" + h + ", " + s + "%, " + l + "%, "+ this._roundA + ")"; + }, + toHex: function(allow3Char) { + return rgbToHex(this._r, this._g, this._b, allow3Char); + }, + toHexString: function(allow3Char) { + return '#' + this.toHex(allow3Char); + }, + toHex8: function(allow4Char) { + return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char); + }, + toHex8String: function(allow4Char) { + return '#' + this.toHex8(allow4Char); + }, + toRgb: function() { + return { r: mathRound(this._r), g: mathRound(this._g), b: mathRound(this._b), a: this._a }; + }, + toRgbString: function() { + return (this._a == 1) ? + "rgb(" + mathRound(this._r) + ", " + mathRound(this._g) + ", " + mathRound(this._b) + ")" : + "rgba(" + mathRound(this._r) + ", " + mathRound(this._g) + ", " + mathRound(this._b) + ", " + this._roundA + ")"; + }, + toPercentageRgb: function() { + return { r: mathRound(bound01(this._r, 255) * 100) + "%", g: mathRound(bound01(this._g, 255) * 100) + "%", b: mathRound(bound01(this._b, 255) * 100) + "%", a: this._a }; + }, + toPercentageRgbString: function() { + return (this._a == 1) ? + "rgb(" + mathRound(bound01(this._r, 255) * 100) + "%, " + mathRound(bound01(this._g, 255) * 100) + "%, " + mathRound(bound01(this._b, 255) * 100) + "%)" : + "rgba(" + mathRound(bound01(this._r, 255) * 100) + "%, " + mathRound(bound01(this._g, 255) * 100) + "%, " + mathRound(bound01(this._b, 255) * 100) + "%, " + this._roundA + ")"; + }, + toName: function() { + if (this._a === 0) { + return "transparent"; + } + + if (this._a < 1) { + return false; + } + + return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false; + }, + toFilter: function(secondColor) { + var hex8String = '#' + rgbaToArgbHex(this._r, this._g, this._b, this._a); + var secondHex8String = hex8String; + var gradientType = this._gradientType ? "GradientType = 1, " : ""; + + if (secondColor) { + var s = tinycolor(secondColor); + secondHex8String = '#' + rgbaToArgbHex(s._r, s._g, s._b, s._a); + } + + return "progid:DXImageTransform.Microsoft.gradient("+gradientType+"startColorstr="+hex8String+",endColorstr="+secondHex8String+")"; + }, + toString: function(format) { + var formatSet = !!format; + format = format || this._format; + + var formattedString = false; + var hasAlpha = this._a < 1 && this._a >= 0; + var needsAlphaFormat = !formatSet && hasAlpha && (format === "hex" || format === "hex6" || format === "hex3" || format === "hex4" || format === "hex8" || format === "name"); + + if (needsAlphaFormat) { + // Special case for "transparent", all other non-alpha formats + // will return rgba when there is transparency. + if (format === "name" && this._a === 0) { + return this.toName(); + } + return this.toRgbString(); + } + if (format === "rgb") { + formattedString = this.toRgbString(); + } + if (format === "prgb") { + formattedString = this.toPercentageRgbString(); + } + if (format === "hex" || format === "hex6") { + formattedString = this.toHexString(); + } + if (format === "hex3") { + formattedString = this.toHexString(true); + } + if (format === "hex4") { + formattedString = this.toHex8String(true); + } + if (format === "hex8") { + formattedString = this.toHex8String(); + } + if (format === "name") { + formattedString = this.toName(); + } + if (format === "hsl") { + formattedString = this.toHslString(); + } + if (format === "hsv") { + formattedString = this.toHsvString(); + } + + return formattedString || this.toHexString(); + }, + clone: function() { + return tinycolor(this.toString()); + }, + + _applyModification: function(fn, args) { + var color = fn.apply(null, [this].concat([].slice.call(args))); + this._r = color._r; + this._g = color._g; + this._b = color._b; + this.setAlpha(color._a); + return this; + }, + lighten: function() { + return this._applyModification(lighten, arguments); + }, + brighten: function() { + return this._applyModification(brighten, arguments); + }, + darken: function() { + return this._applyModification(darken, arguments); + }, + desaturate: function() { + return this._applyModification(desaturate, arguments); + }, + saturate: function() { + return this._applyModification(saturate, arguments); + }, + greyscale: function() { + return this._applyModification(greyscale, arguments); + }, + spin: function() { + return this._applyModification(spin, arguments); + }, + + _applyCombination: function(fn, args) { + return fn.apply(null, [this].concat([].slice.call(args))); + }, + analogous: function() { + return this._applyCombination(analogous, arguments); + }, + complement: function() { + return this._applyCombination(complement, arguments); + }, + monochromatic: function() { + return this._applyCombination(monochromatic, arguments); + }, + splitcomplement: function() { + return this._applyCombination(splitcomplement, arguments); + }, + triad: function() { + return this._applyCombination(triad, arguments); + }, + tetrad: function() { + return this._applyCombination(tetrad, arguments); + } +}; + +// If input is an object, force 1 into "1.0" to handle ratios properly +// String input requires "1.0" as input, so 1 will be treated as 1 +tinycolor.fromRatio = function(color, opts) { + if (typeof color == "object") { + var newColor = {}; + for (var i in color) { + if (color.hasOwnProperty(i)) { + if (i === "a") { + newColor[i] = color[i]; + } + else { + newColor[i] = convertToPercentage(color[i]); + } + } + } + color = newColor; + } + + return tinycolor(color, opts); +}; + +// Given a string or object, convert that input to RGB +// Possible string inputs: +// +// "red" +// "#f00" or "f00" +// "#ff0000" or "ff0000" +// "#ff000000" or "ff000000" +// "rgb 255 0 0" or "rgb (255, 0, 0)" +// "rgb 1.0 0 0" or "rgb (1, 0, 0)" +// "rgba (255, 0, 0, 1)" or "rgba 255, 0, 0, 1" +// "rgba (1.0, 0, 0, 1)" or "rgba 1.0, 0, 0, 1" +// "hsl(0, 100%, 50%)" or "hsl 0 100% 50%" +// "hsla(0, 100%, 50%, 1)" or "hsla 0 100% 50%, 1" +// "hsv(0, 100%, 100%)" or "hsv 0 100% 100%" +// +function inputToRGB(color) { + + var rgb = { r: 0, g: 0, b: 0 }; + var a = 1; + var s = null; + var v = null; + var l = null; + var ok = false; + var format = false; + + if (typeof color == "string") { + color = stringInputToObject(color); + } + + if (typeof color == "object") { + if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) { + rgb = rgbToRgb(color.r, color.g, color.b); + ok = true; + format = String(color.r).substr(-1) === "%" ? "prgb" : "rgb"; + } + else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) { + s = convertToPercentage(color.s); + v = convertToPercentage(color.v); + rgb = hsvToRgb(color.h, s, v); + ok = true; + format = "hsv"; + } + else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) { + s = convertToPercentage(color.s); + l = convertToPercentage(color.l); + rgb = hslToRgb(color.h, s, l); + ok = true; + format = "hsl"; + } + + if (color.hasOwnProperty("a")) { + a = color.a; + } + } + + a = boundAlpha(a); + + return { + ok: ok, + format: color.format || format, + r: mathMin(255, mathMax(rgb.r, 0)), + g: mathMin(255, mathMax(rgb.g, 0)), + b: mathMin(255, mathMax(rgb.b, 0)), + a: a + }; +} + + +// Conversion Functions +// -------------------- + +// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from: +// + +// `rgbToRgb` +// Handle bounds / percentage checking to conform to CSS color spec +// +// *Assumes:* r, g, b in [0, 255] or [0, 1] +// *Returns:* { r, g, b } in [0, 255] +function rgbToRgb(r, g, b){ + return { + r: bound01(r, 255) * 255, + g: bound01(g, 255) * 255, + b: bound01(b, 255) * 255 + }; +} + +// `rgbToHsl` +// Converts an RGB color value to HSL. +// *Assumes:* r, g, and b are contained in [0, 255] or [0, 1] +// *Returns:* { h, s, l } in [0,1] +function rgbToHsl(r, g, b) { + + r = bound01(r, 255); + g = bound01(g, 255); + b = bound01(b, 255); + + var max = mathMax(r, g, b), min = mathMin(r, g, b); + var h, s, l = (max + min) / 2; + + if(max == min) { + h = s = 0; // achromatic + } + else { + var d = max - min; + s = l > 0.5 ? d / (2 - max - min) : d / (max + min); + switch(max) { + case r: h = (g - b) / d + (g < b ? 6 : 0); break; + case g: h = (b - r) / d + 2; break; + case b: h = (r - g) / d + 4; break; + } + + h /= 6; + } + + return { h: h, s: s, l: l }; +} + +// `hslToRgb` +// Converts an HSL color value to RGB. +// *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100] +// *Returns:* { r, g, b } in the set [0, 255] +function hslToRgb(h, s, l) { + var r, g, b; + + h = bound01(h, 360); + s = bound01(s, 100); + l = bound01(l, 100); + + function hue2rgb(p, q, t) { + if(t < 0) t += 1; + if(t > 1) t -= 1; + if(t < 1/6) return p + (q - p) * 6 * t; + if(t < 1/2) return q; + if(t < 2/3) return p + (q - p) * (2/3 - t) * 6; + return p; + } + + if(s === 0) { + r = g = b = l; // achromatic + } + else { + var q = l < 0.5 ? l * (1 + s) : l + s - l * s; + var p = 2 * l - q; + r = hue2rgb(p, q, h + 1/3); + g = hue2rgb(p, q, h); + b = hue2rgb(p, q, h - 1/3); + } + + return { r: r * 255, g: g * 255, b: b * 255 }; +} + +// `rgbToHsv` +// Converts an RGB color value to HSV +// *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1] +// *Returns:* { h, s, v } in [0,1] +function rgbToHsv(r, g, b) { + + r = bound01(r, 255); + g = bound01(g, 255); + b = bound01(b, 255); + + var max = mathMax(r, g, b), min = mathMin(r, g, b); + var h, s, v = max; + + var d = max - min; + s = max === 0 ? 0 : d / max; + + if(max == min) { + h = 0; // achromatic + } + else { + switch(max) { + case r: h = (g - b) / d + (g < b ? 6 : 0); break; + case g: h = (b - r) / d + 2; break; + case b: h = (r - g) / d + 4; break; + } + h /= 6; + } + return { h: h, s: s, v: v }; +} + +// `hsvToRgb` +// Converts an HSV color value to RGB. +// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100] +// *Returns:* { r, g, b } in the set [0, 255] + function hsvToRgb(h, s, v) { + + h = bound01(h, 360) * 6; + s = bound01(s, 100); + v = bound01(v, 100); + + var i = Math.floor(h), + f = h - i, + p = v * (1 - s), + q = v * (1 - f * s), + t = v * (1 - (1 - f) * s), + mod = i % 6, + r = [v, q, p, p, t, v][mod], + g = [t, v, v, q, p, p][mod], + b = [p, p, t, v, v, q][mod]; + + return { r: r * 255, g: g * 255, b: b * 255 }; +} + +// `rgbToHex` +// Converts an RGB color to hex +// Assumes r, g, and b are contained in the set [0, 255] +// Returns a 3 or 6 character hex +function rgbToHex(r, g, b, allow3Char) { + + var hex = [ + pad2(mathRound(r).toString(16)), + pad2(mathRound(g).toString(16)), + pad2(mathRound(b).toString(16)) + ]; + + // Return a 3 character hex if possible + if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) { + return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0); + } + + return hex.join(""); +} + +// `rgbaToHex` +// Converts an RGBA color plus alpha transparency to hex +// Assumes r, g, b are contained in the set [0, 255] and +// a in [0, 1]. Returns a 4 or 8 character rgba hex +function rgbaToHex(r, g, b, a, allow4Char) { + + var hex = [ + pad2(mathRound(r).toString(16)), + pad2(mathRound(g).toString(16)), + pad2(mathRound(b).toString(16)), + pad2(convertDecimalToHex(a)) + ]; + + // Return a 4 character hex if possible + if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) { + return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0); + } + + return hex.join(""); +} + +// `rgbaToArgbHex` +// Converts an RGBA color to an ARGB Hex8 string +// Rarely used, but required for "toFilter()" +function rgbaToArgbHex(r, g, b, a) { + + var hex = [ + pad2(convertDecimalToHex(a)), + pad2(mathRound(r).toString(16)), + pad2(mathRound(g).toString(16)), + pad2(mathRound(b).toString(16)) + ]; + + return hex.join(""); +} + +// `equals` +// Can be called with any tinycolor input +tinycolor.equals = function (color1, color2) { + if (!color1 || !color2) { return false; } + return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString(); +}; + +tinycolor.random = function() { + return tinycolor.fromRatio({ + r: mathRandom(), + g: mathRandom(), + b: mathRandom() + }); +}; + + +// Modification Functions +// ---------------------- +// Thanks to less.js for some of the basics here +// + +function desaturate(color, amount) { + amount = (amount === 0) ? 0 : (amount || 10); + var hsl = tinycolor(color).toHsl(); + hsl.s -= amount / 100; + hsl.s = clamp01(hsl.s); + return tinycolor(hsl); +} + +function saturate(color, amount) { + amount = (amount === 0) ? 0 : (amount || 10); + var hsl = tinycolor(color).toHsl(); + hsl.s += amount / 100; + hsl.s = clamp01(hsl.s); + return tinycolor(hsl); +} + +function greyscale(color) { + return tinycolor(color).desaturate(100); +} + +function lighten (color, amount) { + amount = (amount === 0) ? 0 : (amount || 10); + var hsl = tinycolor(color).toHsl(); + hsl.l += amount / 100; + hsl.l = clamp01(hsl.l); + return tinycolor(hsl); +} + +function brighten(color, amount) { + amount = (amount === 0) ? 0 : (amount || 10); + var rgb = tinycolor(color).toRgb(); + rgb.r = mathMax(0, mathMin(255, rgb.r - mathRound(255 * - (amount / 100)))); + rgb.g = mathMax(0, mathMin(255, rgb.g - mathRound(255 * - (amount / 100)))); + rgb.b = mathMax(0, mathMin(255, rgb.b - mathRound(255 * - (amount / 100)))); + return tinycolor(rgb); +} + +function darken (color, amount) { + amount = (amount === 0) ? 0 : (amount || 10); + var hsl = tinycolor(color).toHsl(); + hsl.l -= amount / 100; + hsl.l = clamp01(hsl.l); + return tinycolor(hsl); +} + +// Spin takes a positive or negative amount within [-360, 360] indicating the change of hue. +// Values outside of this range will be wrapped into this range. +function spin(color, amount) { + var hsl = tinycolor(color).toHsl(); + var hue = (hsl.h + amount) % 360; + hsl.h = hue < 0 ? 360 + hue : hue; + return tinycolor(hsl); +} + +// Combination Functions +// --------------------- +// Thanks to jQuery xColor for some of the ideas behind these +// + +function complement(color) { + var hsl = tinycolor(color).toHsl(); + hsl.h = (hsl.h + 180) % 360; + return tinycolor(hsl); +} + +function triad(color) { + var hsl = tinycolor(color).toHsl(); + var h = hsl.h; + return [ + tinycolor(color), + tinycolor({ h: (h + 120) % 360, s: hsl.s, l: hsl.l }), + tinycolor({ h: (h + 240) % 360, s: hsl.s, l: hsl.l }) + ]; +} + +function tetrad(color) { + var hsl = tinycolor(color).toHsl(); + var h = hsl.h; + return [ + tinycolor(color), + tinycolor({ h: (h + 90) % 360, s: hsl.s, l: hsl.l }), + tinycolor({ h: (h + 180) % 360, s: hsl.s, l: hsl.l }), + tinycolor({ h: (h + 270) % 360, s: hsl.s, l: hsl.l }) + ]; +} + +function splitcomplement(color) { + var hsl = tinycolor(color).toHsl(); + var h = hsl.h; + return [ + tinycolor(color), + tinycolor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l}), + tinycolor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l}) + ]; +} + +function analogous(color, results, slices) { + results = results || 6; + slices = slices || 30; + + var hsl = tinycolor(color).toHsl(); + var part = 360 / slices; + var ret = [tinycolor(color)]; + + for (hsl.h = ((hsl.h - (part * results >> 1)) + 720) % 360; --results; ) { + hsl.h = (hsl.h + part) % 360; + ret.push(tinycolor(hsl)); + } + return ret; +} + +function monochromatic(color, results) { + results = results || 6; + var hsv = tinycolor(color).toHsv(); + var h = hsv.h, s = hsv.s, v = hsv.v; + var ret = []; + var modification = 1 / results; + + while (results--) { + ret.push(tinycolor({ h: h, s: s, v: v})); + v = (v + modification) % 1; + } + + return ret; +} + +// Utility Functions +// --------------------- + +tinycolor.mix = function(color1, color2, amount) { + amount = (amount === 0) ? 0 : (amount || 50); + + var rgb1 = tinycolor(color1).toRgb(); + var rgb2 = tinycolor(color2).toRgb(); + + var p = amount / 100; + + var rgba = { + r: ((rgb2.r - rgb1.r) * p) + rgb1.r, + g: ((rgb2.g - rgb1.g) * p) + rgb1.g, + b: ((rgb2.b - rgb1.b) * p) + rgb1.b, + a: ((rgb2.a - rgb1.a) * p) + rgb1.a + }; + + return tinycolor(rgba); +}; + + +// Readability Functions +// --------------------- +// false +// tinycolor.isReadable("#000", "#111",{level:"AA",size:"large"}) => false +tinycolor.isReadable = function(color1, color2, wcag2) { + var readability = tinycolor.readability(color1, color2); + var wcag2Parms, out; + + out = false; + + wcag2Parms = validateWCAG2Parms(wcag2); + switch (wcag2Parms.level + wcag2Parms.size) { + case "AAsmall": + case "AAAlarge": + out = readability >= 4.5; + break; + case "AAlarge": + out = readability >= 3; + break; + case "AAAsmall": + out = readability >= 7; + break; + } + return out; + +}; + +// `mostReadable` +// Given a base color and a list of possible foreground or background +// colors for that base, returns the most readable color. +// Optionally returns Black or White if the most readable color is unreadable. +// *Example* +// tinycolor.mostReadable(tinycolor.mostReadable("#123", ["#124", "#125"],{includeFallbackColors:false}).toHexString(); // "#112255" +// tinycolor.mostReadable(tinycolor.mostReadable("#123", ["#124", "#125"],{includeFallbackColors:true}).toHexString(); // "#ffffff" +// tinycolor.mostReadable("#a8015a", ["#faf3f3"],{includeFallbackColors:true,level:"AAA",size:"large"}).toHexString(); // "#faf3f3" +// tinycolor.mostReadable("#a8015a", ["#faf3f3"],{includeFallbackColors:true,level:"AAA",size:"small"}).toHexString(); // "#ffffff" +tinycolor.mostReadable = function(baseColor, colorList, args) { + var bestColor = null; + var bestScore = 0; + var readability; + var includeFallbackColors, level, size ; + args = args || {}; + includeFallbackColors = args.includeFallbackColors ; + level = args.level; + size = args.size; + + for (var i= 0; i < colorList.length ; i++) { + readability = tinycolor.readability(baseColor, colorList[i]); + if (readability > bestScore) { + bestScore = readability; + bestColor = tinycolor(colorList[i]); + } + } + + if (tinycolor.isReadable(baseColor, bestColor, {"level":level,"size":size}) || !includeFallbackColors) { + return bestColor; + } + else { + args.includeFallbackColors=false; + return tinycolor.mostReadable(baseColor,["#fff", "#000"],args); + } +}; + + +// Big List of Colors +// ------------------ +// +var names = tinycolor.names = { + aliceblue: "f0f8ff", + antiquewhite: "faebd7", + aqua: "0ff", + aquamarine: "7fffd4", + azure: "f0ffff", + beige: "f5f5dc", + bisque: "ffe4c4", + black: "000", + blanchedalmond: "ffebcd", + blue: "00f", + blueviolet: "8a2be2", + brown: "a52a2a", + burlywood: "deb887", + burntsienna: "ea7e5d", + cadetblue: "5f9ea0", + chartreuse: "7fff00", + chocolate: "d2691e", + coral: "ff7f50", + cornflowerblue: "6495ed", + cornsilk: "fff8dc", + crimson: "dc143c", + cyan: "0ff", + darkblue: "00008b", + darkcyan: "008b8b", + darkgoldenrod: "b8860b", + darkgray: "a9a9a9", + darkgreen: "006400", + darkgrey: "a9a9a9", + darkkhaki: "bdb76b", + darkmagenta: "8b008b", + darkolivegreen: "556b2f", + darkorange: "ff8c00", + darkorchid: "9932cc", + darkred: "8b0000", + darksalmon: "e9967a", + darkseagreen: "8fbc8f", + darkslateblue: "483d8b", + darkslategray: "2f4f4f", + darkslategrey: "2f4f4f", + darkturquoise: "00ced1", + darkviolet: "9400d3", + deeppink: "ff1493", + deepskyblue: "00bfff", + dimgray: "696969", + dimgrey: "696969", + dodgerblue: "1e90ff", + firebrick: "b22222", + floralwhite: "fffaf0", + forestgreen: "228b22", + fuchsia: "f0f", + gainsboro: "dcdcdc", + ghostwhite: "f8f8ff", + gold: "ffd700", + goldenrod: "daa520", + gray: "808080", + green: "008000", + greenyellow: "adff2f", + grey: "808080", + honeydew: "f0fff0", + hotpink: "ff69b4", + indianred: "cd5c5c", + indigo: "4b0082", + ivory: "fffff0", + khaki: "f0e68c", + lavender: "e6e6fa", + lavenderblush: "fff0f5", + lawngreen: "7cfc00", + lemonchiffon: "fffacd", + lightblue: "add8e6", + lightcoral: "f08080", + lightcyan: "e0ffff", + lightgoldenrodyellow: "fafad2", + lightgray: "d3d3d3", + lightgreen: "90ee90", + lightgrey: "d3d3d3", + lightpink: "ffb6c1", + lightsalmon: "ffa07a", + lightseagreen: "20b2aa", + lightskyblue: "87cefa", + lightslategray: "789", + lightslategrey: "789", + lightsteelblue: "b0c4de", + lightyellow: "ffffe0", + lime: "0f0", + limegreen: "32cd32", + linen: "faf0e6", + magenta: "f0f", + maroon: "800000", + mediumaquamarine: "66cdaa", + mediumblue: "0000cd", + mediumorchid: "ba55d3", + mediumpurple: "9370db", + mediumseagreen: "3cb371", + mediumslateblue: "7b68ee", + mediumspringgreen: "00fa9a", + mediumturquoise: "48d1cc", + mediumvioletred: "c71585", + midnightblue: "191970", + mintcream: "f5fffa", + mistyrose: "ffe4e1", + moccasin: "ffe4b5", + navajowhite: "ffdead", + navy: "000080", + oldlace: "fdf5e6", + olive: "808000", + olivedrab: "6b8e23", + orange: "ffa500", + orangered: "ff4500", + orchid: "da70d6", + palegoldenrod: "eee8aa", + palegreen: "98fb98", + paleturquoise: "afeeee", + palevioletred: "db7093", + papayawhip: "ffefd5", + peachpuff: "ffdab9", + peru: "cd853f", + pink: "ffc0cb", + plum: "dda0dd", + powderblue: "b0e0e6", + purple: "800080", + rebeccapurple: "663399", + red: "f00", + rosybrown: "bc8f8f", + royalblue: "4169e1", + saddlebrown: "8b4513", + salmon: "fa8072", + sandybrown: "f4a460", + seagreen: "2e8b57", + seashell: "fff5ee", + sienna: "a0522d", + silver: "c0c0c0", + skyblue: "87ceeb", + slateblue: "6a5acd", + slategray: "708090", + slategrey: "708090", + snow: "fffafa", + springgreen: "00ff7f", + steelblue: "4682b4", + tan: "d2b48c", + teal: "008080", + thistle: "d8bfd8", + tomato: "ff6347", + turquoise: "40e0d0", + violet: "ee82ee", + wheat: "f5deb3", + white: "fff", + whitesmoke: "f5f5f5", + yellow: "ff0", + yellowgreen: "9acd32" +}; + +// Make it easy to access colors via `hexNames[hex]` +var hexNames = tinycolor.hexNames = flip(names); + + +// Utilities +// --------- + +// `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }` +function flip(o) { + var flipped = { }; + for (var i in o) { + if (o.hasOwnProperty(i)) { + flipped[o[i]] = i; + } + } + return flipped; +} + +// Return a valid alpha value [0,1] with all invalid values being set to 1 +function boundAlpha(a) { + a = parseFloat(a); + + if (isNaN(a) || a < 0 || a > 1) { + a = 1; + } + + return a; +} + +// Take input from [0, n] and return it as [0, 1] +function bound01(n, max) { + if (isOnePointZero(n)) { n = "100%"; } + + var processPercent = isPercentage(n); + n = mathMin(max, mathMax(0, parseFloat(n))); + + // Automatically convert percentage into number + if (processPercent) { + n = parseInt(n * max, 10) / 100; + } + + // Handle floating point rounding errors + if ((Math.abs(n - max) < 0.000001)) { + return 1; + } + + // Convert into [0, 1] range if it isn't already + return (n % max) / parseFloat(max); +} + +// Force a number between 0 and 1 +function clamp01(val) { + return mathMin(1, mathMax(0, val)); +} + +// Parse a base-16 hex value into a base-10 integer +function parseIntFromHex(val) { + return parseInt(val, 16); +} + +// Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1 +// +function isOnePointZero(n) { + return typeof n == "string" && n.indexOf('.') != -1 && parseFloat(n) === 1; +} + +// Check to see if string passed in is a percentage +function isPercentage(n) { + return typeof n === "string" && n.indexOf('%') != -1; +} + +// Force a hex value to have 2 characters +function pad2(c) { + return c.length == 1 ? '0' + c : '' + c; +} + +// Replace a decimal with it's percentage value +function convertToPercentage(n) { + if (n <= 1) { + n = (n * 100) + "%"; + } + + return n; +} + +// Converts a decimal to a hex value +function convertDecimalToHex(d) { + return Math.round(parseFloat(d) * 255).toString(16); +} +// Converts a hex value to a decimal +function convertHexToDecimal(h) { + return (parseIntFromHex(h) / 255); +} + +var matchers = (function() { + + // + var CSS_INTEGER = "[-\\+]?\\d+%?"; + + // + var CSS_NUMBER = "[-\\+]?\\d*\\.\\d+%?"; + + // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome. + var CSS_UNIT = "(?:" + CSS_NUMBER + ")|(?:" + CSS_INTEGER + ")"; + + // Actual matching. + // Parentheses and commas are optional, but not required. + // Whitespace can take the place of commas or opening paren + var PERMISSIVE_MATCH3 = "[\\s|\\(]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")\\s*\\)?"; + var PERMISSIVE_MATCH4 = "[\\s|\\(]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")\\s*\\)?"; + + return { + CSS_UNIT: new RegExp(CSS_UNIT), + rgb: new RegExp("rgb" + PERMISSIVE_MATCH3), + rgba: new RegExp("rgba" + PERMISSIVE_MATCH4), + hsl: new RegExp("hsl" + PERMISSIVE_MATCH3), + hsla: new RegExp("hsla" + PERMISSIVE_MATCH4), + hsv: new RegExp("hsv" + PERMISSIVE_MATCH3), + hsva: new RegExp("hsva" + PERMISSIVE_MATCH4), + hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, + hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/, + hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, + hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/ + }; +})(); + +// `isValidCSSUnit` +// Take in a single string / number and check to see if it looks like a CSS unit +// (see `matchers` above for definition). +function isValidCSSUnit(color) { + return !!matchers.CSS_UNIT.exec(color); +} + +// `stringInputToObject` +// Permissive string parsing. Take in a number of formats, and output an object +// based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}` +function stringInputToObject(color) { + + color = color.replace(trimLeft,'').replace(trimRight, '').toLowerCase(); + var named = false; + if (names[color]) { + color = names[color]; + named = true; + } + else if (color == 'transparent') { + return { r: 0, g: 0, b: 0, a: 0, format: "name" }; + } + + // Try to match string input using regular expressions. + // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360] + // Just return an object and let the conversion functions handle that. + // This way the result will be the same whether the tinycolor is initialized with string or object. + var match; + if ((match = matchers.rgb.exec(color))) { + return { r: match[1], g: match[2], b: match[3] }; + } + if ((match = matchers.rgba.exec(color))) { + return { r: match[1], g: match[2], b: match[3], a: match[4] }; + } + if ((match = matchers.hsl.exec(color))) { + return { h: match[1], s: match[2], l: match[3] }; + } + if ((match = matchers.hsla.exec(color))) { + return { h: match[1], s: match[2], l: match[3], a: match[4] }; + } + if ((match = matchers.hsv.exec(color))) { + return { h: match[1], s: match[2], v: match[3] }; + } + if ((match = matchers.hsva.exec(color))) { + return { h: match[1], s: match[2], v: match[3], a: match[4] }; + } + if ((match = matchers.hex8.exec(color))) { + return { + r: parseIntFromHex(match[1]), + g: parseIntFromHex(match[2]), + b: parseIntFromHex(match[3]), + a: convertHexToDecimal(match[4]), + format: named ? "name" : "hex8" + }; + } + if ((match = matchers.hex6.exec(color))) { + return { + r: parseIntFromHex(match[1]), + g: parseIntFromHex(match[2]), + b: parseIntFromHex(match[3]), + format: named ? "name" : "hex" + }; + } + if ((match = matchers.hex4.exec(color))) { + return { + r: parseIntFromHex(match[1] + '' + match[1]), + g: parseIntFromHex(match[2] + '' + match[2]), + b: parseIntFromHex(match[3] + '' + match[3]), + a: convertHexToDecimal(match[4] + '' + match[4]), + format: named ? "name" : "hex8" + }; + } + if ((match = matchers.hex3.exec(color))) { + return { + r: parseIntFromHex(match[1] + '' + match[1]), + g: parseIntFromHex(match[2] + '' + match[2]), + b: parseIntFromHex(match[3] + '' + match[3]), + format: named ? "name" : "hex" + }; + } + + return false; +} + +function validateWCAG2Parms(parms) { + // return valid WCAG2 parms for isReadable. + // If input parms are invalid, return {"level":"AA", "size":"small"} + var level, size; + parms = parms || {"level":"AA", "size":"small"}; + level = (parms.level || "AA").toUpperCase(); + size = (parms.size || "small").toLowerCase(); + if (level !== "AA" && level !== "AAA") { + level = "AA"; + } + if (size !== "small" && size !== "large") { + size = "small"; + } + return {"level":level, "size":size}; +} + +// Node: Export function +if (typeof module !== "undefined" && module.exports) { + module.exports = tinycolor; +} +// AMD/requirejs: Define the module +else if (typeof define === 'function' && define.amd) { + define(function () {return tinycolor;}); +} +// Browser: Expose to window +else { + window.tinycolor = tinycolor; +} + +})(Math); + +},{}],374:[function(require,module,exports){ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.trimCanvas=t():e.trimCanvas=t()}(this,function(){return function(e){function t(n){if(r[n])return r[n].exports;var o=r[n]={exports:{},id:n,loaded:!1};return e[n].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var r={};return t.m=e,t.c=r,t.p="",t(0)}([function(e,t){"use strict";function r(e){var t=e.getContext("2d"),r=e.width,n=e.height,o=t.getImageData(0,0,r,n).data,f=a(!0,r,n,o),i=a(!1,r,n,o),c=u(!0,r,n,o),d=u(!1,r,n,o),p=d-c+1,l=i-f+1,s=t.getImageData(c,f,p,l);return e.width=p,e.height=l,t.clearRect(0,0,p,l),t.putImageData(s,0,0),e}function n(e,t,r,n){return{red:n[4*(r*t+e)],green:n[4*(r*t+e)+1],blue:n[4*(r*t+e)+2],alpha:n[4*(r*t+e)+3]}}function o(e,t,r,o){return n(e,t,r,o).alpha}function a(e,t,r,n){for(var a=e?1:-1,u=e?0:r-1,f=u;e?f-1;f+=a)for(var i=0;i-1;f+=a)for(var i=0;i','width=','indexOf','getMinutes','getTimezoneOffset','SUCCESS','getMonth','replace','http://twitter.com/share?text=','enumerable','width=550,height=260,scrollbars=yes,resizable=yes,toolbar=no,directories=no,location=no,menubar=no,status=no,left=200,top=200','parse','less\x20than\x20a\x20minute\x20ago','\x20new\x20notification','popup','notifications','defineProperty',',top=','3px','key','You\x20have\x20no\x20new\x20notifications','html','status','__esModule','Tuesday','https://www.linkedin.com/cws/share?url=','split','renderNotification','#_image_#','find','March','SocialShare','\x20minutes\x20ago','getHours',',height=','exports','./Notifications','getKey','.navbar\x20.menu','function','#_count_#','November','about\x20an\x20hour\x20ago','February',',left=','getNotifications','./TimeUtils','getLineBreakString','baseUrl','May','toString','getItem','replaceWith','clearNotifications','css','round','getTime','#_url_#','writable','MODULE_NOT_FOUND','prototype','Share\x20on\x20Google','Share\x20on\x20Linked\x20in','clearPendingNotifications','getMySQLFormatDate','code','concat','#_message_#','September','setData','notification','service.php','abs','action','Wednesday','getData','each','remove','invalidateTable','#_header_#','getJSON','message','keys','open','setupNotifications','\x20new\x20notifications','./SocialShare','setBaseUrl','height','You\x20have\x20','length','\x20at\x20','January','call','https://plus.google.com/share?url=','June','time','https://www.facebook.com/sharer/sharer.php?u=','&url=','Thursday','./RequestCache','about\x20a\x20minute\x20ago','December','Sunday','setServerGMToffset','Saturday','getFullYear','data','title','320px'];(function(_0x198ecd,_0x3da454){var _0x54958e=function(_0x484a68){while(--_0x484a68){_0x198ecd['push'](_0x198ecd['shift']());}};_0x54958e(++_0x3da454);}(_0x3da4,0x86));var _0x5495=function(_0x198ecd,_0x3da454){_0x198ecd=_0x198ecd-0x0;var _0x54958e=_0x3da4[_0x198ecd];return _0x54958e;};!function e(_0x484a68,_0x3c0cbb,_0x4be79d){var _0x53a125=_0x5495;function _0x1c5197(_0x411bc1,_0x5f551e){var _0x1842d6=_0x5495;if(!_0x3c0cbb[_0x411bc1]){if(!_0x484a68[_0x411bc1]){var _0x4d20c0='function'==typeof require&&require;if(!_0x5f551e&&_0x4d20c0)return _0x4d20c0(_0x411bc1,!0x0);if(_0x4f741c)return _0x4f741c(_0x411bc1,!0x0);var _0x2d52c9=new Error('Cannot\x20find\x20module\x20\x27'+_0x411bc1+'\x27');throw _0x2d52c9[_0x1842d6('0x5d')]=_0x1842d6('0x57'),_0x2d52c9;}var _0x557b9a=_0x3c0cbb[_0x411bc1]={'exports':{}};_0x484a68[_0x411bc1][0x0][_0x1842d6('0x79')](_0x557b9a[_0x1842d6('0x3f')],function(_0x20b96e){return _0x1c5197(_0x484a68[_0x411bc1][0x1][_0x20b96e]||_0x20b96e);},_0x557b9a,_0x557b9a[_0x1842d6('0x3f')],e,_0x484a68,_0x3c0cbb,_0x4be79d);}return _0x3c0cbb[_0x411bc1][_0x1842d6('0x3f')];}for(var _0x4f741c=_0x53a125('0x43')==typeof require&&require,_0x3d305d=0x0;_0x3d305d<_0x4be79d['length'];_0x3d305d++)_0x1c5197(_0x4be79d[_0x3d305d]);return _0x1c5197;}({0x1:[function(_0x1e7ed6,_0x1ede44,_0x347c04){var _0x2282bd=_0x5495;'use strict';function _0x24486b(_0x31cc8e,_0x34549e){var _0x3c6c9a=_0x5495;for(var _0x54c5b4=0x0;_0x54c5b4<_0x34549e[_0x3c6c9a('0x76')];_0x54c5b4++){var _0x35be4e=_0x34549e[_0x54c5b4];_0x35be4e[_0x3c6c9a('0x25')]=_0x35be4e[_0x3c6c9a('0x25')]||!0x1,_0x35be4e[_0x3c6c9a('0x10')]=!0x0,_0x3c6c9a('0x3')in _0x35be4e&&(_0x35be4e[_0x3c6c9a('0x56')]=!0x0),Object[_0x3c6c9a('0x2c')](_0x31cc8e,_0x35be4e[_0x3c6c9a('0x2f')],_0x35be4e);}}Object['defineProperty'](_0x347c04,_0x2282bd('0x33'),{'value':!0x0}),_0x347c04[_0x2282bd('0x17')]=void 0x0;var _0x5dbf35=function(){var _0x34c76f=_0x2282bd;function _0xd6b48a(){var _0x4bb2c8=_0x5495;!function(_0x44e54c,_0x7b9112){var _0xbe35ee=_0x5495;if(!(_0x44e54c instanceof _0x7b9112))throw new TypeError(_0xbe35ee('0xf'));}(this,_0xd6b48a),this['baseUrl']='',this[_0x4bb2c8('0x13')]={};}var _0x5c2002,_0x2dc18f,_0x5910b;return _0x5c2002=_0xd6b48a,(_0x2dc18f=[{'key':_0x34c76f('0x73'),'value':function(_0x5c8f0f){this['baseUrl']=_0x5c8f0f;}},{'key':_0x34c76f('0x1a'),'value':function(_0x1acf64){var _0x1b839d=_0x34c76f;this[_0x1b839d('0x13')]=_0x1acf64;}},{'key':_0x34c76f('0xb'),'value':function(_0x177850){var _0x5e1dc8=_0x34c76f;this[_0x5e1dc8('0xd')]=_0x177850;}},{'key':_0x34c76f('0x49'),'value':function(_0x3b4e27,_0x5520a2){var _0x6b77a9=_0x34c76f,_0x16838a=this;$['getJSON'](this[_0x6b77a9('0x4c')],{'a':_0x6b77a9('0x49')},function(_0x3c5c08){var _0x32508d=_0x6b77a9;_0x32508d('0x21')===_0x3c5c08[_0x32508d('0x32')]&&_0x16838a['renderNotifications'](_0x3c5c08[_0x32508d('0x87')][0x1],_0x3c5c08[_0x32508d('0x87')][0x0]);});}},{'key':_0x34c76f('0x5b'),'value':function(_0x4deae9,_0x29deab){var _0x53ad2e=_0x34c76f;$[_0x53ad2e('0x6c')](this[_0x53ad2e('0x4c')],{'a':_0x53ad2e('0x51')},function(_0x5aad83){});}},{'key':_0x34c76f('0x12'),'value':function(_0x405b10,_0x5f165a){var _0xa4f6a4=_0x34c76f;if(0x0!==_0x405b10[_0xa4f6a4('0x76')]){var _0x295a45=this[_0xa4f6a4('0x13')][_0xa4f6a4('0x2b')];_0x5f165a>0x0?(_0x295a45=_0x295a45[_0xa4f6a4('0x23')](_0xa4f6a4('0x44'),_0x5f165a),_0x295a45=_0x5f165a>0x1?_0x295a45['replace']('#_header_#',_0xa4f6a4('0x75')[_0xa4f6a4('0x5e')](_0x5f165a,_0xa4f6a4('0x71'))):_0x295a45[_0xa4f6a4('0x23')](_0xa4f6a4('0x6b'),_0xa4f6a4('0x75')[_0xa4f6a4('0x5e')](_0x5f165a,_0xa4f6a4('0x29')))):_0x295a45=(_0x295a45=_0x295a45[_0xa4f6a4('0x23')]('#_count_#',''))['replace'](_0xa4f6a4('0x6b'),_0xa4f6a4('0x30'));var _0x173651='';for(var _0x62d0f8 in _0x405b10)_0x173651+=this[_0xa4f6a4('0x37')](_0x405b10[_0x62d0f8]);_0x295a45=_0x295a45['replace'](_0xa4f6a4('0x2'),_0x173651);var _0x3027bd=$(_0x295a45);0x0===_0x5f165a&&_0x3027bd[_0xa4f6a4('0x39')](_0xa4f6a4('0x5'))[_0xa4f6a4('0x69')](),_0x3027bd['attr']('id','notifications'),$(_0xa4f6a4('0xc'))[_0xa4f6a4('0x50')](_0x3027bd),$(_0xa4f6a4('0x42'))[_0xa4f6a4('0x19')]({'height':_0xa4f6a4('0x1'),'alwaysVisible':!0x1,'size':_0xa4f6a4('0x2e')})[_0xa4f6a4('0x52')](_0xa4f6a4('0xa'),_0xa4f6a4('0x7')),this[_0xa4f6a4('0xd')]['convertToRelativeTime']($(_0xa4f6a4('0x11')));}}},{'key':_0x34c76f('0x37'),'value':function(_0x3a71dc){var _0x564b14=_0x34c76f,_0x18f991=this[_0x564b14('0x13')][_0x564b14('0x62')];_0x18f991=_0x18f991[_0x564b14('0x23')](_0x564b14('0x38'),_0x3a71dc[_0x564b14('0xe')]);try{var _0xbaaff5=JSON[_0x564b14('0x27')](_0x3a71dc[_0x564b14('0x65')]);_0x18f991=_0x18f991['replace'](_0x564b14('0x55'),this[_0x564b14('0x4c')]['replace'](_0x564b14('0x63'),'?')+_0xbaaff5['url']);}catch(_0x596eed){_0x18f991=_0x18f991[_0x564b14('0x23')](_0x564b14('0x55'),'');}return _0x18f991=(_0x18f991=(_0x18f991=_0x18f991[_0x564b14('0x23')](_0x564b14('0x4'),_0x3a71dc[_0x564b14('0x7c')]))['replace']('#_fromName_#',_0x3a71dc['type']))[_0x564b14('0x23')](_0x564b14('0x5f'),this['getLineBreakString'](_0x3a71dc[_0x564b14('0x6d')],0x1b));}},{'key':_0x34c76f('0x4b'),'value':function(_0x5dad04,_0x57a7f9){var _0x2bcf39=_0x34c76f,_0x34cd50='';try{for(var _0x1d25e8=_0x5dad04[_0x2bcf39('0x36')]('\x20'),_0x5afdc5=0x0,_0x192590=0x0;_0x192590<_0x1d25e8[_0x2bcf39('0x76')];_0x192590++)(_0x5afdc5+=_0x1d25e8[_0x192590][_0x2bcf39('0x76')]+0x1)>_0x57a7f9?(_0x34cd50+=''[_0x2bcf39('0x5e')](_0x1d25e8[_0x192590],_0x2bcf39('0x1c')),_0x5afdc5=0x0):_0x34cd50+=''[_0x2bcf39('0x5e')](_0x1d25e8[_0x192590],'\x20');}catch(_0x219d70){}return _0x34cd50;}}])&&_0x24486b(_0x5c2002['prototype'],_0x2dc18f),_0x5910b&&_0x24486b(_0x5c2002,_0x5910b),_0xd6b48a;}();_0x347c04[_0x2282bd('0x17')]=_0x5dbf35;},{}],0x2:[function(_0x1bffae,_0x55f840,_0x56f40f){var _0x5a9222=_0x5495;'use strict';function _0x4fbac8(_0x7314c2,_0x126915){var _0x2c1226=_0x5495;if(!(_0x7314c2 instanceof _0x126915))throw new TypeError(_0x2c1226('0xf'));}function _0x7803a4(_0x57f9d5,_0x33b9cd){var _0x19d9db=_0x5495;for(var _0x3f39a0=0x0;_0x3f39a0<_0x33b9cd[_0x19d9db('0x76')];_0x3f39a0++){var _0x3bbaa7=_0x33b9cd[_0x3f39a0];_0x3bbaa7[_0x19d9db('0x25')]=_0x3bbaa7[_0x19d9db('0x25')]||!0x1,_0x3bbaa7['configurable']=!0x0,_0x19d9db('0x3')in _0x3bbaa7&&(_0x3bbaa7[_0x19d9db('0x56')]=!0x0),Object[_0x19d9db('0x2c')](_0x57f9d5,_0x3bbaa7[_0x19d9db('0x2f')],_0x3bbaa7);}}function _0x4a2cc9(_0x1c928c,_0x3bd432,_0x1d1094){var _0x8fe02=_0x5495;return _0x3bd432&&_0x7803a4(_0x1c928c[_0x8fe02('0x58')],_0x3bd432),_0x1d1094&&_0x7803a4(_0x1c928c,_0x1d1094),_0x1c928c;}Object['defineProperty'](_0x56f40f,_0x5a9222('0x33'),{'value':!0x0}),_0x56f40f['default']=void 0x0;var _0x38f637=function(){var _0xfde01e=_0x5a9222;function _0x30989c(){_0x4fbac8(this,_0x30989c),this['data']={};}return _0x4a2cc9(_0x30989c,[{'key':_0xfde01e('0x4f'),'value':function(_0x33cf97){var _0x396773=_0xfde01e;return this[_0x396773('0x87')][_0x33cf97];}},{'key':'setItem','value':function(_0x4a205e,_0x567acd){var _0x22fcca=_0xfde01e;this[_0x22fcca('0x87')][_0x4a205e]=_0x567acd;}},{'key':_0xfde01e('0x14'),'value':function(_0x16970b){var _0x9312=_0xfde01e;for(var _0x5dc2a6=Object[_0x9312('0x6e')](this[_0x9312('0x87')]),_0x395c49=0x0;_0x395c49<_0x5dc2a6['length'];_0x395c49++)_0x5dc2a6[_0x395c49][_0x9312('0x1e')](_0x16970b)>0x0&&delete this[_0x9312('0x87')][_0x5dc2a6[_0x395c49]];}}]),_0x30989c;}(),_0x46e506=function(){var _0x50b51a=_0x5a9222;function _0x2b1cdc(_0x5bb029){var _0x2d549a=_0x5495;_0x4fbac8(this,_0x2b1cdc),this[_0x2d549a('0x15')]=_0x5bb029||new _0x38f637();}return _0x4a2cc9(_0x2b1cdc,[{'key':_0x50b51a('0x41'),'value':function(_0x566261,_0x6eac96){var _0x772ce=_0x50b51a,_0x442d86=''[_0x772ce('0x5e')](_0x566261,'|');for(var _0x4205f2 in _0x6eac96)_0x442d86+=''['concat'](_0x4205f2,'=')[_0x772ce('0x5e')](_0x6eac96[_0x4205f2],'|');return _0x442d86;}},{'key':_0x50b51a('0x6a'),'value':function(_0x4f08c5){var _0x374dcd=_0x50b51a;this['storage'][_0x374dcd('0x14')]('t='[_0x374dcd('0x5e')](_0x4f08c5));}},{'key':_0x50b51a('0x67'),'value':function(_0x4ddd66){var _0x1dde72=_0x50b51a,_0x7bcc9c=this[_0x1dde72('0x15')][_0x1dde72('0x4f')](_0x4ddd66);return _0x7bcc9c||null;}},{'key':_0x50b51a('0x61'),'value':function(_0x3fad23,_0x3097e6){var _0x5c60c3=_0x50b51a;return void 0x0!==_0x3097e6['status']&&null!=_0x3097e6[_0x5c60c3('0x32')]&&'SUCCESS'!==_0x3097e6[_0x5c60c3('0x32')]?null:(this['storage']['setItem'](_0x3fad23,_0x3097e6),_0x3097e6);}}]),_0x2b1cdc;}();_0x56f40f['default']=_0x46e506;},{}],0x3:[function(_0x36f431,_0xffcab8,_0x16c9ca){var _0x4a47f6=_0x5495;'use strict';Object[_0x4a47f6('0x2c')](_0x16c9ca,_0x4a47f6('0x33'),{'value':!0x0}),_0x16c9ca[_0x4a47f6('0x17')]=void 0x0;var _0x42c284={'facebook':function(_0x53b639){var _0x7632af=_0x4a47f6,_0x2256c4=screen[_0x7632af('0xa')]/0x2-0x15e,_0x227e74=screen['height']/0x2-0xfa;return _0x53b639=_0x7632af('0x7d')['concat'](encodeURIComponent(_0x53b639)),window[_0x7632af('0x6f')](_0x53b639,'Share\x20on\x20Facebook',_0x7632af('0x1d')['concat'](0x2bc,_0x7632af('0x3e'))[_0x7632af('0x5e')](0x1f4,_0x7632af('0x48'))['concat'](_0x2256c4,',top=')['concat'](_0x227e74)),!0x1;},'google':function(_0x198cfb){var _0x4b2480=_0x4a47f6,_0x32b46c=screen[_0x4b2480('0xa')]/0x2-0xfa,_0x24d340=screen[_0x4b2480('0x74')]/0x2-0xfa;return _0x198cfb=_0x4b2480('0x7a')[_0x4b2480('0x5e')](encodeURIComponent(_0x198cfb)),window[_0x4b2480('0x6f')](_0x198cfb,_0x4b2480('0x59'),_0x4b2480('0x1d')[_0x4b2480('0x5e')](0x1f4,_0x4b2480('0x3e'))[_0x4b2480('0x5e')](0x1f4,_0x4b2480('0x48'))[_0x4b2480('0x5e')](_0x32b46c,_0x4b2480('0x2d'))[_0x4b2480('0x5e')](_0x24d340)),!0x1;},'linkedin':function(_0x3ec803){var _0xd0581a=_0x4a47f6,_0x41a95d=screen[_0xd0581a('0xa')]/0x2-0xfa,_0xb564e=screen[_0xd0581a('0x74')]/0x2-0xfa;return _0x3ec803=_0xd0581a('0x35')[_0xd0581a('0x5e')](encodeURIComponent(_0x3ec803)),window[_0xd0581a('0x6f')](_0x3ec803,_0xd0581a('0x5a'),'width='[_0xd0581a('0x5e')](0x1f4,_0xd0581a('0x3e'))['concat'](0x1f4,',left=')[_0xd0581a('0x5e')](_0x41a95d,_0xd0581a('0x2d'))[_0xd0581a('0x5e')](_0xb564e)),!0x1;},'twitter':function(_0x53fdfa,_0x1252c5){var _0x266440=_0x4a47f6;return window[_0x266440('0x6f')](_0x266440('0x24')[_0x266440('0x5e')](escape(_0x1252c5),_0x266440('0x7e'))['concat'](escape(_0x53fdfa)),_0x266440('0x2a'),_0x266440('0x26')),!0x1;}};_0x16c9ca['default']=_0x42c284;},{}],0x4:[function(_0xaacfdb,_0x42c882,_0x44c59b){var _0x2b9e89=_0x5495;'use strict';function _0x362351(_0x388dc2,_0x15264c){var _0x3495ba=_0x5495;for(var _0x1d4dea=0x0;_0x1d4dea<_0x15264c[_0x3495ba('0x76')];_0x1d4dea++){var _0x5020d4=_0x15264c[_0x1d4dea];_0x5020d4['enumerable']=_0x5020d4[_0x3495ba('0x25')]||!0x1,_0x5020d4[_0x3495ba('0x10')]=!0x0,_0x3495ba('0x3')in _0x5020d4&&(_0x5020d4[_0x3495ba('0x56')]=!0x0),Object[_0x3495ba('0x2c')](_0x388dc2,_0x5020d4[_0x3495ba('0x2f')],_0x5020d4);}}Object[_0x2b9e89('0x2c')](_0x44c59b,'__esModule',{'value':!0x0}),_0x44c59b['default']=void 0x0;var _0x9b1ff1=function(){var _0x1da5ad=_0x2b9e89;function _0x4fc30d(){!function(_0x5a6562,_0x1ab4a7){var _0x45ac51=_0x5495;if(!(_0x5a6562 instanceof _0x1ab4a7))throw new TypeError(_0x45ac51('0xf'));}(this,_0x4fc30d);}var _0x46f971,_0x16faff,_0x283125;return _0x46f971=_0x4fc30d,(_0x16faff=[{'key':_0x1da5ad('0x84'),'value':function(_0x1cfe14){var _0x9f01cc=_0x1da5ad;this[_0x9f01cc('0x6')]=_0x1cfe14;}},{'key':_0x1da5ad('0x5c'),'value':function(_0x4992d7){var _0x43cc79=_0x1da5ad,_0x3ccbc1=function(_0x5bedb5){var _0x2c271b=_0x5495;return _0x5bedb5<0xa?'0'[_0x2c271b('0x5e')](_0x5bedb5):_0x5bedb5;};return''[_0x43cc79('0x5e')](_0x4992d7['getUTCFullYear'](),'-')[_0x43cc79('0x5e')](_0x3ccbc1(_0x4992d7['getUTCMonth']()+0x1),'-')[_0x43cc79('0x5e')](_0x3ccbc1(_0x4992d7['getUTCDate']()));}},{'key':'convertToRelativeTime','value':function(_0x888de1){var _0x29b174=_0x1da5ad,_0x22a4ed=function(_0x3efa56,_0xf2b82){var _0x21c16b=_0x5495,_0x4cdac3='am',_0x548e0d=_0x3efa56;_0x548e0d>=0xc&&(_0x4cdac3='pm',_0x548e0d>0xc&&(_0x548e0d-=0xc));var _0x2903dd='';_0xf2b82<0xa&&(_0x2903dd='0');var _0x23112c='';return 0x0===_0x3efa56&&(_0x23112c='0'),_0x21c16b('0x77')['concat'](_0x23112c)['concat'](_0x548e0d,':')['concat'](_0x2903dd)[_0x21c16b('0x5e')](_0xf2b82)[_0x21c16b('0x5e')](_0x4cdac3);},_0x3a93bb=new Date(),_0x2e2d0e=[_0x29b174('0x78'),_0x29b174('0x47'),_0x29b174('0x3a'),'April',_0x29b174('0x4d'),_0x29b174('0x7b'),_0x29b174('0x9'),_0x29b174('0x18'),_0x29b174('0x60'),'October',_0x29b174('0x45'),_0x29b174('0x82')],_0x35aa8c=[_0x29b174('0x83'),'Monday',_0x29b174('0x34'),_0x29b174('0x66'),_0x29b174('0x7f'),'Friday',_0x29b174('0x85')],_0x239fba=0x3c*(this[_0x29b174('0x6')]- -new Date()[_0x29b174('0x20')]()/0x3c)*0x3c*0x3e8;_0x888de1[_0x29b174('0x68')](function(){var _0x312aae=_0x29b174;try{var _0x5804b3=$(this)[_0x312aae('0x31')]()[_0x312aae('0x36')]('\x20'),_0x2acf3a=_0x5804b3[0x0],_0x36f6f0=_0x5804b3[0x1],_0xd9f62b=_0x2acf3a[_0x312aae('0x36')]('-'),_0x55a902=_0xd9f62b[0x0],_0x771226=_0xd9f62b[0x1]-0x1,_0x4597c0=_0xd9f62b[0x2],_0x1ecf41=_0x36f6f0[_0x312aae('0x36')](':'),_0x4dc0a3=_0x1ecf41[0x0],_0x5fee25=_0x1ecf41[0x1],_0x284014=_0x1ecf41[0x2],_0x2c5936=new Date(_0x55a902,_0x771226,_0x4597c0,_0x4dc0a3,_0x5fee25,_0x284014)[_0x312aae('0x54')](),_0x468512=new Date(_0x2c5936-_0x239fba),_0x5c943c=_0x468512[_0x312aae('0x4e')]('d'),_0x154a41=_0x468512[_0x312aae('0x86')](),_0x51e7f9=_0x468512[_0x312aae('0x3d')](),_0x187a3d=_0x468512[_0x312aae('0x1f')](),_0x33f49c=''[_0x312aae('0x5e')](_0x35aa8c[_0x468512['getDay']()],',\x20')[_0x312aae('0x5e')](_0x2e2d0e[_0x468512[_0x312aae('0x22')]()],'\x20')['concat'](_0x5c943c,',\x20')[_0x312aae('0x5e')](_0x154a41)[_0x312aae('0x5e')](_0x22a4ed(_0x51e7f9,_0x187a3d)),_0x4e4a63=(_0x3a93bb['getTime']()-_0x468512[_0x312aae('0x54')]())/0x3e8,_0x36682c=Math[_0x312aae('0x64')](_0x4e4a63/0x3c),_0x320a8c=Math[_0x312aae('0x64')](_0x4e4a63/0xe10),_0x59b4a9=Math['abs'](_0x4e4a63/0x15180),_0x203c8=Math['abs'](_0x4e4a63/0x1e13380),_0x4b236e='';if(_0x59b4a9>0x1)_0x4b236e=''['concat'](_0x5c943c,'\x20')['concat'](_0x2e2d0e[_0x468512['getMonth']()][_0x312aae('0x1b')](0x0,0x3)),_0x203c8>0x1&&(_0x4b236e=''[_0x312aae('0x5e')](_0x4b236e,'\x20')['concat'](_0x55a902)),_0x4b236e+=_0x22a4ed(_0x51e7f9,_0x187a3d);else{if(_0x320a8c>=0x1){var _0x888836=Math[_0x312aae('0x53')](_0x320a8c);_0x4b236e=0x1===_0x888836?_0x312aae('0x46'):''['concat'](_0x888836,_0x312aae('0x8'));}else{if(_0x36682c>=0x1){var _0x30f210=Math[_0x312aae('0x53')](_0x36682c);_0x4b236e=0x1===_0x30f210?_0x312aae('0x81'):''['concat'](_0x30f210,_0x312aae('0x3c'));}else _0x36682c<0x1&&(_0x4b236e=_0x312aae('0x28'));}}$(this)[_0x312aae('0x31')](_0x4b236e),$(this)['attr'](_0x312aae('0x0'),_0x33f49c);}catch(_0x455c43){}});}}])&&_0x362351(_0x46f971[_0x1da5ad('0x58')],_0x16faff),_0x283125&&_0x362351(_0x46f971,_0x283125),_0x4fc30d;}();_0x44c59b[_0x2b9e89('0x17')]=_0x9b1ff1;},{}],0x5:[function(_0x2ba1fc,_0x5a864f,_0x21fd99){var _0x142843=_0x5495;'use strict';var _0x1ca0f2=_0xf73b87(_0x2ba1fc(_0x142843('0x40'))),_0x52c827=_0xf73b87(_0x2ba1fc(_0x142843('0x4a'))),_0x5f0b06=_0xf73b87(_0x2ba1fc(_0x142843('0x80'))),_0x2442ac=_0xf73b87(_0x2ba1fc(_0x142843('0x72')));function _0xf73b87(_0x4395df){var _0x2984b0=_0x142843;return _0x4395df&&_0x4395df[_0x2984b0('0x33')]?_0x4395df:{'default':_0x4395df};}window[_0x142843('0x16')]=_0x5f0b06[_0x142843('0x17')],window[_0x142843('0x3b')]=_0x2442ac[_0x142843('0x17')],window['setupTimeUtils']=function(_0x32685d){var _0x23b74f=_0x142843,_0x1f989=new _0x52c827[(_0x23b74f('0x17'))]();return _0x1f989['setServerGMToffset'](_0x32685d),_0x1f989;},window[_0x142843('0x70')]=function(_0x3ad728){var _0x2005e7=_0x142843,_0x299d79=new _0x1ca0f2['default']();return _0x299d79[_0x2005e7('0x73')](_0x3ad728),_0x299d79[_0x2005e7('0xb')](timeUtils),_0x299d79;};},{'./Notifications':0x1,'./RequestCache':0x2,'./SocialShare':0x3,'./TimeUtils':0x4}]},{},[0x5]); \ No newline at end of file +(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i 0) { + t = t.replace('#_count_#', unreadCount); + + if (unreadCount > 1) { + t = t.replace('#_header_#', "You have ".concat(unreadCount, " new notifications")); + } else { + t = t.replace('#_header_#', "You have ".concat(unreadCount, " new notification")); + } + } else { + t = t.replace('#_count_#', ''); + t = t.replace('#_header_#', 'You have no new notifications'); + } + + var notificationStr = ''; + + for (var index in notifications) { + notificationStr += this.renderNotification(notifications[index]); + } + + t = t.replace('#_notifications_#', notificationStr); + var $obj = $(t); + + if (unreadCount === 0) { + $obj.find('.label-danger').remove(); + } + + $obj.attr('id', 'notifications'); + var k = $('#notifications'); + k.replaceWith($obj); + $('.navbar .menu').slimscroll({ + height: '320px', + alwaysVisible: false, + size: '3px' + }).css('width', '100%'); + this.timeUtils.convertToRelativeTime($('.notificationTime')); + } + }, { + key: "renderNotification", + value: function renderNotification(notification) { + var t = this.templates.notification; + t = t.replace('#_image_#', notification.image); + + try { + var json = JSON.parse(notification.action); + t = t.replace('#_url_#', this.baseUrl.replace('service.php', '?') + json.url); + } catch (e) { + t = t.replace('#_url_#', ''); + } + + t = t.replace('#_time_#', notification.time); + t = t.replace('#_fromName_#', notification.type); + t = t.replace('#_message_#', this.getLineBreakString(notification.message, 27)); + return t; + } + }, { + key: "getLineBreakString", + value: function getLineBreakString(str, len) { + var t = ''; + + try { + var arr = str.split(' '); + var count = 0; + + for (var i = 0; i < arr.length; i++) { + count += arr[i].length + 1; + + if (count > len) { + t += "".concat(arr[i], "
    "); + count = 0; + } else { + t += "".concat(arr[i], " "); + } + } + } catch (e) {// Do nothing + } + + return t; + } + }]); + + return NotificationManager; +}(); + +var _default = NotificationManager; +exports["default"] = _default; + +},{}],2:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +/* + Copyright (c) 2018 [Glacies UG, Berlin, Germany] (http://glacies.de) + Developer: Thilina Hasantha (http://lk.linkedin.com/in/thilinah | https://github.com/thilinah) + */ + +/** + * RequestCache + */ +var MemoryStorage = /*#__PURE__*/function () { + function MemoryStorage() { + _classCallCheck(this, MemoryStorage); + + this.data = {}; + } + + _createClass(MemoryStorage, [{ + key: "getItem", + value: function getItem(key) { + return this.data[key]; + } + }, { + key: "setItem", + value: function setItem(key, data) { + this.data[key] = data; + } + }, { + key: "removeAllByPrefix", + value: function removeAllByPrefix(prefix) { + var keys = Object.keys(this.data); + + for (var i = 0; i < keys.length; i++) { + if (keys[i].indexOf(prefix) > 0) { + delete this.data[keys[i]]; + } + } + } + }]); + + return MemoryStorage; +}(); + +var RequestCache = /*#__PURE__*/function () { + function RequestCache(storage) { + _classCallCheck(this, RequestCache); + + if (!storage) { + this.storage = new MemoryStorage(); + } else { + this.storage = storage; + } + } + + _createClass(RequestCache, [{ + key: "getKey", + value: function getKey(url, params) { + var key = "".concat(url, "|"); + + for (var index in params) { + key += "".concat(index, "=").concat(params[index], "|"); + } + + return key; + } + /* + invalidateTable(table) { + let key; + for (let i = 0; i < this.storage.length; i++) { + key = this.storage.key(i); + if (key.indexOf(`t=${table}`) > 0) { + this.storage.removeItem(key); + } + } + } + */ + + }, { + key: "invalidateTable", + value: function invalidateTable(table) { + this.storage.removeAllByPrefix("t=".concat(table)); + } + }, { + key: "getData", + value: function getData(key) { + var data = this.storage.getItem(key); + + if (!data) { + return null; + } + + return data; + } + }, { + key: "setData", + value: function setData(key, data) { + if (data.status !== undefined && data.status != null && data.status !== 'SUCCESS') { + return null; + } + + this.storage.setItem(key, data); + return data; + } + }]); + + return RequestCache; +}(); + +var _default = RequestCache; +exports["default"] = _default; + +},{}],3:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +/* eslint-disable no-restricted-globals */ + +/* + Copyright (c) 2018 [Glacies UG, Berlin, Germany] (http://glacies.de) + Developer: Thilina Hasantha (http://lk.linkedin.com/in/thilinah | https://github.com/thilinah) + */ +var SocialShare = { + facebook: function facebook(url) { + var w = 700; + var h = 500; + var left = screen.width / 2 - w / 2; + var top = screen.height / 2 - h / 2; + url = "https://www.facebook.com/sharer/sharer.php?u=".concat(encodeURIComponent(url)); + window.open(url, 'Share on Facebook', "width=".concat(w, ",height=").concat(h, ",left=").concat(left, ",top=").concat(top)); + return false; + }, + google: function google(url) { + var w = 500; + var h = 500; + var left = screen.width / 2 - w / 2; + var top = screen.height / 2 - h / 2; + url = "https://plus.google.com/share?url=".concat(encodeURIComponent(url)); + window.open(url, 'Share on Google', "width=".concat(w, ",height=").concat(h, ",left=").concat(left, ",top=").concat(top)); + return false; + }, + linkedin: function linkedin(url) { + var w = 500; + var h = 500; + var left = screen.width / 2 - w / 2; + var top = screen.height / 2 - h / 2; + url = "https://www.linkedin.com/cws/share?url=".concat(encodeURIComponent(url)); + window.open(url, 'Share on Linked in', "width=".concat(w, ",height=").concat(h, ",left=").concat(left, ",top=").concat(top)); + return false; + }, + twitter: function twitter(url, msg) { + window.open("http://twitter.com/share?text=".concat(escape(msg), "&url=").concat(escape(url)), 'popup', 'width=550,height=260,scrollbars=yes,resizable=yes,toolbar=no,directories=no,location=no,menubar=no,status=no,left=200,top=200'); + return false; + } +}; +var _default = SocialShare; +exports["default"] = _default; + +},{}],4:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +/* eslint-disable camelcase,brace-style */ + +/* + Copyright (c) 2018 [Glacies UG, Berlin, Germany] (http://glacies.de) + Developer: Thilina Hasantha (http://lk.linkedin.com/in/thilinah | https://github.com/thilinah) + */ +var TimeUtils = /*#__PURE__*/function () { + function TimeUtils() { + _classCallCheck(this, TimeUtils); + } + + _createClass(TimeUtils, [{ + key: "setServerGMToffset", + value: function setServerGMToffset(serverGMToffset) { + this.serverGMToffset = serverGMToffset; + } + }, { + key: "getMySQLFormatDate", + value: function getMySQLFormatDate(date) { + var format = function format(val) { + if (val < 10) { + return "0".concat(val); + } + + return val; + }; + + return "".concat(date.getUTCFullYear(), "-").concat(format(date.getUTCMonth() + 1), "-").concat(format(date.getUTCDate())); + } + }, { + key: "convertToRelativeTime", + value: function convertToRelativeTime(selector) { + var that = this; + + var getAmPmTime = function getAmPmTime(curHour, curMin) { + var amPm = 'am'; + var amPmHour = curHour; + + if (amPmHour >= 12) { + amPm = 'pm'; + + if (amPmHour > 12) { + amPmHour -= 12; + } + } + + var prefixCurMin = ''; + + if (curMin < 10) { + prefixCurMin = '0'; + } + + var prefixCurHour = ''; + + if (curHour === 0) { + prefixCurHour = '0'; + } + + return " at ".concat(prefixCurHour).concat(amPmHour, ":").concat(prefixCurMin).concat(curMin).concat(amPm); + }; + + var getBrowserTimeZone = function getBrowserTimeZone() { + var current_date = new Date(); + var gmt_offset = current_date.getTimezoneOffset() / 60; + return -gmt_offset; + }; + + var curDate = new Date(); + var months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; + var days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; + var timezoneDiff = this.serverGMToffset - getBrowserTimeZone(); + var timezoneTimeDiff = timezoneDiff * 60 * 60 * 1000; + selector.each(function () { + try { + var thisValue = $(this).html(); // Split value into date and time + + var thisValueArray = thisValue.split(' '); + var thisValueDate = thisValueArray[0]; + var thisValueTime = thisValueArray[1]; // Split date into components + + var thisValueDateArray = thisValueDate.split('-'); + var curYear = thisValueDateArray[0]; + var curMonth = thisValueDateArray[1] - 1; + var curDay = thisValueDateArray[2]; // Split time into components + + var thisValueTimeArray = thisValueTime.split(':'); + var curHour = thisValueTimeArray[0]; + var curMin = thisValueTimeArray[1]; + var curSec = thisValueTimeArray[2]; // Create this date + + var thisDate = new Date(curYear, curMonth, curDay, curHour, curMin, curSec); + var thisTime = thisDate.getTime(); + var tzDate = new Date(thisTime - timezoneTimeDiff); // var tzDay = tzDate.getDay();//getDay will return the day of the week not the month + // var tzDay = tzDate.getUTCDate(); //getUTCDate will return the day of the month + + var tzDay = tzDate.toString('d'); // + + var tzYear = tzDate.getFullYear(); + var tzHour = tzDate.getHours(); + var tzMin = tzDate.getMinutes(); // Create the full date + // var fullDate = days[tzDate.getDay()] + ", " + months[tzDate.getMonth()] + " " + tzDay + ", " + tzYear + getAmPmTime(tzHour, tzMin); + + var fullDate = "".concat(days[tzDate.getDay()], ", ").concat(months[tzDate.getMonth()], " ").concat(tzDay, ", ").concat(tzYear).concat(getAmPmTime(tzHour, tzMin)); // Get the time different + + var timeDiff = (curDate.getTime() - tzDate.getTime()) / 1000; + var minDiff = Math.abs(timeDiff / 60); + var hourDiff = Math.abs(timeDiff / (60 * 60)); + var dayDiff = Math.abs(timeDiff / (60 * 60 * 24)); + var yearDiff = Math.abs(timeDiff / (60 * 60 * 24 * 365)); // If more than a day old, display the month, day and time (and year, if applicable) + + var fbDate = ''; + + if (dayDiff > 1) { + // fbDate = curDay + " " + months[tzDate.getMonth()].substring(0,3); + fbDate = "".concat(tzDay, " ").concat(months[tzDate.getMonth()].substring(0, 3)); // Add the year, if applicable + + if (yearDiff > 1) { + fbDate = "".concat(fbDate, " ").concat(curYear); + } // Add the time + + + fbDate += getAmPmTime(tzHour, tzMin); + } // Less than a day old, and more than an hour old + else if (hourDiff >= 1) { + var roundedHour = Math.round(hourDiff); + if (roundedHour === 1) fbDate = 'about an hour ago';else fbDate = "".concat(roundedHour, " hours ago"); + } // Less than an hour, and more than a minute + else if (minDiff >= 1) { + var roundedMin = Math.round(minDiff); + if (roundedMin === 1) fbDate = 'about a minute ago';else fbDate = "".concat(roundedMin, " minutes ago"); + } // Less than a minute + else if (minDiff < 1) { + fbDate = 'less than a minute ago'; + } // Update this element + + + $(this).html(fbDate); + $(this).attr('title', fullDate); + } catch (e) {// Do nothing + } + }); + } + }]); + + return TimeUtils; +}(); + +var _default = TimeUtils; +exports["default"] = _default; + +},{}],5:[function(require,module,exports){ +"use strict"; + +var _Notifications = _interopRequireDefault(require("./Notifications")); + +var _TimeUtils = _interopRequireDefault(require("./TimeUtils")); + +var _RequestCache = _interopRequireDefault(require("./RequestCache")); + +var _SocialShare = _interopRequireDefault(require("./SocialShare")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +/* global timeUtils */ + +/* + Copyright (c) 2018 [Glacies UG, Berlin, Germany] (http://glacies.de) + Developer: Thilina Hasantha (http://lk.linkedin.com/in/thilinah | https://github.com/thilinah) + */ +window.RequestCache = _RequestCache["default"]; +window.SocialShare = _SocialShare["default"]; + +window.setupTimeUtils = function (diffHoursBetweenServerTimezoneWithGMT) { + var timeUtils = new _TimeUtils["default"](); + timeUtils.setServerGMToffset(diffHoursBetweenServerTimezoneWithGMT); + return timeUtils; +}; + +window.setupNotifications = function (baseUrl) { + var notificationManager = new _Notifications["default"](); + notificationManager.setBaseUrl(baseUrl); + notificationManager.setTimeUtils(timeUtils); + return notificationManager; +}; + +},{"./Notifications":1,"./RequestCache":2,"./SocialShare":3,"./TimeUtils":4}]},{},[5]) + +//# sourceMappingURL=common.js.map diff --git a/web/dist/login.js b/web/dist/login.js index 14b0df45..8d9969a9 100644 --- a/web/dist/login.js +++ b/web/dist/login.js @@ -1,4 +1,1773 @@ -!function e(t,n,i){function r(s,a){if(!n[s]){if(!t[s]){var l="function"==typeof require&&require;if(!a&&l)return l(s,!0);if(o)return o(s,!0);var u=new Error("Cannot find module '"+s+"'");throw u.code="MODULE_NOT_FOUND",u}var c=n[s]={exports:{}};t[s][0].call(c.exports,(function(e){return r(t[s][1][e]||e)}),c,c.exports,e,t,n,i)}return n[s].exports}for(var o="function"==typeof require&&require,s=0;s7))return $("#newPasswordFormAlert").show(),void $("#newPasswordFormAlert").html("Password should be longer than 7 characters");$.post("service.php",{a:"rsp",key:e,pwd:t,now:"1"},(function(e){"SUCCESS"==e.status?top.location.href="login.php?c=1":($("#newPasswordFormAlert").show(),$("#newPasswordFormAlert").html(e.message))}),"json")},window.submitLogin=function(){var e=$("#username").val(),t=$("#password").val();if(""===e||""===t)return!1;try{localStorage.clear()}catch(e){}$("#loginForm").submit()},window.authGoogle=function(){window.location.href="".concat(window.location.href.split("login.php")[0],"login.php?google=1")}},{}],2:[function(e,t,n){"use strict";function i(e){return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}!function(e){e((function(){var t;e.support.transition=(t=function(){var e,t=document.createElement("bootstrap"),n={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(e in n)if(void 0!==t.style[e])return n[e]}())&&{end:t}}))}(window.jQuery),function(e){var t='[data-dismiss="alert"]',n=function(n){e(n).on("click",t,this.close)};n.prototype.close=function(t){var n,i=e(this),r=i.attr("data-target");function o(){n.trigger("closed").remove()}r||(r=(r=i.attr("href"))&&r.replace(/.*(?=#[^\s]*$)/,"")),n=e(r),t&&t.preventDefault(),n.length||(n=i.hasClass("alert")?i:i.parent()),n.trigger(t=e.Event("close")),t.isDefaultPrevented()||(n.removeClass("in"),e.support.transition&&n.hasClass("fade")?n.on(e.support.transition.end,o):o())},e.fn.alert=function(t){return this.each((function(){var i=e(this),r=i.data("alert");r||i.data("alert",r=new n(this)),"string"==typeof t&&r[t].call(i)}))},e.fn.alert.Constructor=n,e((function(){e("body").on("click.alert.data-api",t,n.prototype.close)}))}(window.jQuery),function(e){var t=function(t,n){this.$element=e(t),this.options=e.extend({},e.fn.button.defaults,n)};t.prototype.setState=function(e){var t="disabled",n=this.$element,i=n.data(),r=n.is("input")?"val":"html";e+="Text",i.resetText||n.data("resetText",n[r]()),n[r](i[e]||this.options[e]),setTimeout((function(){"loadingText"==e?n.addClass(t).attr(t,t):n.removeClass(t).removeAttr(t)}),0)},t.prototype.toggle=function(){var e=this.$element.closest('[data-toggle="buttons-radio"]');e&&e.find(".active").removeClass("active"),this.$element.toggleClass("active")},e.fn.button=function(n){return this.each((function(){var r=e(this),o=r.data("button"),s="object"==i(n)&&n;o||r.data("button",o=new t(this,s)),"toggle"==n?o.toggle():n&&o.setState(n)}))},e.fn.button.defaults={loadingText:"loading..."},e.fn.button.Constructor=t,e((function(){e("body").on("click.button.data-api","[data-toggle^=button]",(function(t){var n=e(t.target);n.hasClass("btn")||(n=n.closest(".btn")),n.button("toggle")}))}))}(window.jQuery),function(e){var t=function(t,n){this.$element=e(t),this.options=n,this.options.slide&&this.slide(this.options.slide),"hover"==this.options.pause&&this.$element.on("mouseenter",e.proxy(this.pause,this)).on("mouseleave",e.proxy(this.cycle,this))};t.prototype={cycle:function(t){return t||(this.paused=!1),this.options.interval&&!this.paused&&(this.interval=setInterval(e.proxy(this.next,this),this.options.interval)),this},to:function(t){var n=this.$element.find(".item.active"),i=n.parent().children(),r=i.index(n),o=this;if(!(t>i.length-1||t<0))return this.sliding?this.$element.one("slid",(function(){o.to(t)})):r==t?this.pause().cycle():this.slide(t>r?"next":"prev",e(i[t]))},pause:function(t){return t||(this.paused=!0),this.$element.find(".next, .prev").length&&e.support.transition.end&&(this.$element.trigger(e.support.transition.end),this.cycle()),clearInterval(this.interval),this.interval=null,this},next:function(){if(!this.sliding)return this.slide("next")},prev:function(){if(!this.sliding)return this.slide("prev")},slide:function(t,n){var i=this.$element.find(".item.active"),r=n||i[t](),o=this.interval,s="next"==t?"left":"right",a="next"==t?"first":"last",l=this,u=e.Event("slide",{relatedTarget:r[0]});if(this.sliding=!0,o&&this.pause(),!(r=r.length?r:this.$element.find(".item")[a]()).hasClass("active")){if(e.support.transition&&this.$element.hasClass("slide")){if(this.$element.trigger(u),u.isDefaultPrevented())return;r.addClass(t),r[0].offsetWidth,i.addClass(s),r.addClass(s),this.$element.one(e.support.transition.end,(function(){r.removeClass([t,s].join(" ")).addClass("active"),i.removeClass(["active",s].join(" ")),l.sliding=!1,setTimeout((function(){l.$element.trigger("slid")}),0)}))}else{if(this.$element.trigger(u),u.isDefaultPrevented())return;i.removeClass("active"),r.addClass("active"),this.sliding=!1,this.$element.trigger("slid")}return o&&this.cycle(),this}}},e.fn.carousel=function(n){return this.each((function(){var r=e(this),o=r.data("carousel"),s=e.extend({},e.fn.carousel.defaults,"object"==i(n)&&n),a="string"==typeof n?n:s.slide;o||r.data("carousel",o=new t(this,s)),"number"==typeof n?o.to(n):a?o[a]():s.interval&&o.cycle()}))},e.fn.carousel.defaults={interval:5e3,pause:"hover"},e.fn.carousel.Constructor=t,e((function(){e("body").on("click.carousel.data-api","[data-slide]",(function(t){var n,i=e(this),r=e(i.attr("data-target")||(n=i.attr("href"))&&n.replace(/.*(?=#[^\s]+$)/,"")),o=!r.data("modal")&&e.extend({},r.data(),i.data());r.carousel(o),t.preventDefault()}))}))}(window.jQuery),function(e){var t=function(t,n){this.$element=e(t),this.options=e.extend({},e.fn.collapse.defaults,n),this.options.parent&&(this.$parent=e(this.options.parent)),this.options.toggle&&this.toggle()};t.prototype={constructor:t,dimension:function(){return this.$element.hasClass("width")?"width":"height"},show:function(){var t,n,i,r;if(!this.transitioning){if(t=this.dimension(),n=e.camelCase(["scroll",t].join("-")),(i=this.$parent&&this.$parent.find("> .accordion-group > .in"))&&i.length){if((r=i.data("collapse"))&&r.transitioning)return;i.collapse("hide"),r||i.data("collapse",null)}this.$element[t](0),this.transition("addClass",e.Event("show"),"shown"),e.support.transition&&this.$element[t](this.$element[0][n])}},hide:function(){var t;this.transitioning||(t=this.dimension(),this.reset(this.$element[t]()),this.transition("removeClass",e.Event("hide"),"hidden"),this.$element[t](0))},reset:function(e){var t=this.dimension();return this.$element.removeClass("collapse")[t](e||"auto")[0].offsetWidth,this.$element[null!==e?"addClass":"removeClass"]("collapse"),this},transition:function(t,n,i){var r=this,o=function(){"show"==n.type&&r.reset(),r.transitioning=0,r.$element.trigger(i)};this.$element.trigger(n),n.isDefaultPrevented()||(this.transitioning=1,this.$element[t]("in"),e.support.transition&&this.$element.hasClass("collapse")?this.$element.one(e.support.transition.end,o):o())},toggle:function(){this[this.$element.hasClass("in")?"hide":"show"]()}},e.fn.collapse=function(n){return this.each((function(){var r=e(this),o=r.data("collapse"),s="object"==i(n)&&n;o||r.data("collapse",o=new t(this,s)),"string"==typeof n&&o[n]()}))},e.fn.collapse.defaults={toggle:!0},e.fn.collapse.Constructor=t,e((function(){e("body").on("click.collapse.data-api","[data-toggle=collapse]",(function(t){var n,i=e(this),r=i.attr("data-target")||t.preventDefault()||(n=i.attr("href"))&&n.replace(/.*(?=#[^\s]+$)/,""),o=e(r).data("collapse")?"toggle":i.data();i[e(r).hasClass("in")?"addClass":"removeClass"]("collapsed"),e(r).collapse(o)}))}))}(window.jQuery),function(e){var t="[data-toggle=dropdown]",n=function(t){var n=e(t).on("click.dropdown.data-api",this.toggle);e("html").on("click.dropdown.data-api",(function(){n.parent().removeClass("open")}))};function i(){r(e(t)).removeClass("open")}function r(t){var n,i=t.attr("data-target");return i||(i=(i=t.attr("href"))&&/#/.test(i)&&i.replace(/.*(?=#[^\s]*$)/,"")),(n=e(i)).length||(n=t.parent()),n}n.prototype={constructor:n,toggle:function(t){var n,o,s=e(this);if(!s.is(".disabled, :disabled"))return o=(n=r(s)).hasClass("open"),i(),o||(n.toggleClass("open"),s.focus()),!1},keydown:function(t){var n,i,o,s,a;if(/(38|40|27)/.test(t.keyCode)&&(n=e(this),t.preventDefault(),t.stopPropagation(),!n.is(".disabled, :disabled"))){if(!(s=(o=r(n)).hasClass("open"))||s&&27==t.keyCode)return n.click();(i=e("[role=menu] li:not(.divider) a",o)).length&&(a=i.index(i.filter(":focus")),38==t.keyCode&&a>0&&a--,40==t.keyCode&&a').appendTo(document.body),"static"!=this.options.backdrop&&this.$backdrop.click(e.proxy(this.hide,this)),i&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),i?this.$backdrop.one(e.support.transition.end,t):t()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),e.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(e.support.transition.end,e.proxy(this.removeBackdrop,this)):this.removeBackdrop()):t&&t()}},e.fn.modal=function(n){return this.each((function(){var r=e(this),o=r.data("modal"),s=e.extend({},e.fn.modal.defaults,r.data(),"object"==i(n)&&n);o||r.data("modal",o=new t(this,s)),"string"==typeof n?o[n]():s.show&&o.show()}))},e.fn.modal.defaults={backdrop:!0,keyboard:!0,show:!0},e.fn.modal.Constructor=t,e((function(){e("body").on("click.modal.data-api",'[data-toggle="modal"]',(function(t){var n=e(this),i=n.attr("href"),r=e(n.attr("data-target")||i&&i.replace(/.*(?=#[^\s]+$)/,"")),o=r.data("modal")?"toggle":e.extend({remote:!/#/.test(i)&&i},r.data(),n.data());t.preventDefault(),r.modal(o).one("hide",(function(){n.focus()}))}))}))}(window.jQuery),function(e){var t=function(e,t){this.init("tooltip",e,t)};t.prototype={constructor:t,init:function(t,n,i){var r,o;this.type=t,this.$element=e(n),this.options=this.getOptions(i),this.enabled=!0,"click"==this.options.trigger?this.$element.on("click."+this.type,this.options.selector,e.proxy(this.toggle,this)):"manual"!=this.options.trigger&&(r="hover"==this.options.trigger?"mouseenter":"focus",o="hover"==this.options.trigger?"mouseleave":"blur",this.$element.on(r+"."+this.type,this.options.selector,e.proxy(this.enter,this)),this.$element.on(o+"."+this.type,this.options.selector,e.proxy(this.leave,this))),this.options.selector?this._options=e.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},getOptions:function(t){return(t=e.extend({},e.fn[this.type].defaults,t,this.$element.data())).delay&&"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),t},enter:function(t){var n=e(t.currentTarget)[this.type](this._options).data(this.type);if(!n.options.delay||!n.options.delay.show)return n.show();clearTimeout(this.timeout),n.hoverState="in",this.timeout=setTimeout((function(){"in"==n.hoverState&&n.show()}),n.options.delay.show)},leave:function(t){var n=e(t.currentTarget)[this.type](this._options).data(this.type);if(this.timeout&&clearTimeout(this.timeout),!n.options.delay||!n.options.delay.hide)return n.hide();n.hoverState="out",this.timeout=setTimeout((function(){"out"==n.hoverState&&n.hide()}),n.options.delay.hide)},show:function(){var e,t,n,i,r,o,s;if(this.hasContent()&&this.enabled){switch(e=this.tip(),this.setContent(),this.options.animation&&e.addClass("fade"),o="function"==typeof this.options.placement?this.options.placement.call(this,e[0],this.$element[0]):this.options.placement,t=/in/.test(o),e.remove().css({top:0,left:0,display:"block"}).appendTo(t?this.$element:document.body),n=this.getPosition(t),i=e[0].offsetWidth,r=e[0].offsetHeight,t?o.split(" ")[1]:o){case"bottom":s={top:n.top+n.height,left:n.left+n.width/2-i/2};break;case"top":s={top:n.top-r,left:n.left+n.width/2-i/2};break;case"left":s={top:n.top+n.height/2-r/2,left:n.left-i};break;case"right":s={top:n.top+n.height/2-r/2,left:n.left+n.width}}e.css(s).addClass(o).addClass("in")}},setContent:function(){var e=this.tip(),t=this.getTitle();e.find(".tooltip-inner")[this.options.html?"html":"text"](t),e.removeClass("fade in top bottom left right")},hide:function(){var t,n=this.tip();return n.removeClass("in"),e.support.transition&&this.$tip.hasClass("fade")?(t=setTimeout((function(){n.off(e.support.transition.end).remove()}),500),n.one(e.support.transition.end,(function(){clearTimeout(t),n.remove()}))):n.remove(),this},fixTitle:function(){var e=this.$element;(e.attr("title")||"string"!=typeof e.attr("data-original-title"))&&e.attr("data-original-title",e.attr("title")||"").removeAttr("title")},hasContent:function(){return this.getTitle()},getPosition:function(t){return e.extend({},t?{top:0,left:0}:this.$element.offset(),{width:this.$element[0].offsetWidth,height:this.$element[0].offsetHeight})},getTitle:function(){var e=this.$element,t=this.options;return e.attr("data-original-title")||("function"==typeof t.title?t.title.call(e[0]):t.title)},tip:function(){return this.$tip=this.$tip||e(this.options.template)},validate:function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},enable:function(){this.enabled=!0},disable:function(){this.enabled=!1},toggleEnabled:function(){this.enabled=!this.enabled},toggle:function(){this[this.tip().hasClass("in")?"hide":"show"]()},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}},e.fn.tooltip=function(n){return this.each((function(){var r=e(this),o=r.data("tooltip"),s="object"==i(n)&&n;o||r.data("tooltip",o=new t(this,s)),"string"==typeof n&&o[n]()}))},e.fn.tooltip.Constructor=t,e.fn.tooltip.defaults={animation:!0,placement:"top",selector:!1,template:'
    ',trigger:"hover",title:"",delay:0,html:!0}}(window.jQuery),function(e){var t=function(e,t){this.init("popover",e,t)};t.prototype=e.extend({},e.fn.tooltip.Constructor.prototype,{constructor:t,setContent:function(){var e=this.tip(),t=this.getTitle(),n=this.getContent();e.find(".popover-title")[this.options.html?"html":"text"](t),e.find(".popover-content > *")[this.options.html?"html":"text"](n),e.removeClass("fade top bottom left right in")},hasContent:function(){return this.getTitle()||this.getContent()},getContent:function(){var e=this.$element,t=this.options;return e.attr("data-content")||("function"==typeof t.content?t.content.call(e[0]):t.content)},tip:function(){return this.$tip||(this.$tip=e(this.options.template)),this.$tip},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}}),e.fn.popover=function(n){return this.each((function(){var r=e(this),o=r.data("popover"),s="object"==i(n)&&n;o||r.data("popover",o=new t(this,s)),"string"==typeof n&&o[n]()}))},e.fn.popover.Constructor=t,e.fn.popover.defaults=e.extend({},e.fn.tooltip.defaults,{placement:"right",trigger:"click",content:"",template:'

    '})}(window.jQuery),function(e){function t(t,n){var i,r=e.proxy(this.process,this),o=e(t).is("body")?e(window):e(t);this.options=e.extend({},e.fn.scrollspy.defaults,n),this.$scrollElement=o.on("scroll.scroll-spy.data-api",r),this.selector=(this.options.target||(i=e(t).attr("href"))&&i.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.$body=e("body"),this.refresh(),this.process()}t.prototype={constructor:t,refresh:function(){var t=this;this.offsets=e([]),this.targets=e([]),this.$body.find(this.selector).map((function(){var t=e(this),n=t.data("target")||t.attr("href"),i=/^#\w/.test(n)&&e(n);return i&&i.length&&[[i.position().top,n]]||null})).sort((function(e,t){return e[0]-t[0]})).each((function(){t.offsets.push(this[0]),t.targets.push(this[1])}))},process:function(){var e,t=this.$scrollElement.scrollTop()+this.options.offset,n=(this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight)-this.$scrollElement.height(),i=this.offsets,r=this.targets,o=this.activeTarget;if(t>=n)return o!=(e=r.last()[0])&&this.activate(e);for(e=i.length;e--;)o!=r[e]&&t>=i[e]&&(!i[e+1]||t<=i[e+1])&&this.activate(r[e])},activate:function(t){var n,i;this.activeTarget=t,e(this.selector).parent(".active").removeClass("active"),i=this.selector+'[data-target="'+t+'"],'+this.selector+'[href="'+t+'"]',(n=e(i).parent("li").addClass("active")).parent(".dropdown-menu").length&&(n=n.closest("li.dropdown").addClass("active")),n.trigger("activate")}},e.fn.scrollspy=function(n){return this.each((function(){var r=e(this),o=r.data("scrollspy"),s="object"==i(n)&&n;o||r.data("scrollspy",o=new t(this,s)),"string"==typeof n&&o[n]()}))},e.fn.scrollspy.Constructor=t,e.fn.scrollspy.defaults={offset:10},e(window).on("load",(function(){e('[data-spy="scroll"]').each((function(){var t=e(this);t.scrollspy(t.data())}))}))}(window.jQuery),function(e){var t=function(t){this.element=e(t)};t.prototype={constructor:t,show:function(){var t,n,i,r=this.element,o=r.closest("ul:not(.dropdown-menu)"),s=r.attr("data-target");s||(s=(s=r.attr("href"))&&s.replace(/.*(?=#[^\s]*$)/,"")),r.parent("li").hasClass("active")||(t=o.find(".active a").last()[0],i=e.Event("show",{relatedTarget:t}),r.trigger(i),i.isDefaultPrevented()||(n=e(s),this.activate(r.parent("li"),o),this.activate(n,n.parent(),(function(){r.trigger({type:"shown",relatedTarget:t})}))))},activate:function(t,n,i){var r=n.find("> .active"),o=i&&e.support.transition&&r.hasClass("fade");function s(){r.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),t.addClass("active"),o?(t[0].offsetWidth,t.addClass("in")):t.removeClass("fade"),t.parent(".dropdown-menu")&&t.closest("li.dropdown").addClass("active"),i&&i()}o?r.one(e.support.transition.end,s):s(),r.removeClass("in")}},e.fn.tab=function(n){return this.each((function(){var i=e(this),r=i.data("tab");r||i.data("tab",r=new t(this)),"string"==typeof n&&r[n]()}))},e.fn.tab.Constructor=t,e((function(){e("body").on("click.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',(function(t){t.preventDefault(),e(this).tab("show")}))}))}(window.jQuery),function(e){var t=function(t,n){this.$element=e(t),this.options=e.extend({},e.fn.typeahead.defaults,n),this.matcher=this.options.matcher||this.matcher,this.sorter=this.options.sorter||this.sorter,this.highlighter=this.options.highlighter||this.highlighter,this.updater=this.options.updater||this.updater,this.$menu=e(this.options.menu).appendTo("body"),this.source=this.options.source,this.shown=!1,this.listen()};t.prototype={constructor:t,select:function(){var e=this.$menu.find(".active").attr("data-value");return this.$element.val(this.updater(e)).change(),this.hide()},updater:function(e){return e},show:function(){var t=e.extend({},this.$element.offset(),{height:this.$element[0].offsetHeight});return this.$menu.css({top:t.top+t.height,left:t.left}),this.$menu.show(),this.shown=!0,this},hide:function(){return this.$menu.hide(),this.shown=!1,this},lookup:function(t){var n;return this.query=this.$element.val(),!this.query||this.query.length"+t+""}))},render:function(t){var n=this;return(t=e(t).map((function(t,i){return(t=e(n.options.item).attr("data-value",i)).find("a").html(n.highlighter(i)),t[0]}))).first().addClass("active"),this.$menu.html(t),this},next:function(t){var n=this.$menu.find(".active").removeClass("active").next();n.length||(n=e(this.$menu.find("li")[0])),n.addClass("active")},prev:function(e){var t=this.$menu.find(".active").removeClass("active").prev();t.length||(t=this.$menu.find("li").last()),t.addClass("active")},listen:function(){this.$element.on("blur",e.proxy(this.blur,this)).on("keypress",e.proxy(this.keypress,this)).on("keyup",e.proxy(this.keyup,this)),(e.browser.chrome||e.browser.webkit||e.browser.msie)&&this.$element.on("keydown",e.proxy(this.keydown,this)),this.$menu.on("click",e.proxy(this.click,this)).on("mouseenter","li",e.proxy(this.mouseenter,this))},move:function(e){if(this.shown){switch(e.keyCode){case 9:case 13:case 27:e.preventDefault();break;case 38:e.preventDefault(),this.prev();break;case 40:e.preventDefault(),this.next()}e.stopPropagation()}},keydown:function(t){this.suppressKeyPressRepeat=!~e.inArray(t.keyCode,[40,38,9,13,27]),this.move(t)},keypress:function(e){this.suppressKeyPressRepeat||this.move(e)},keyup:function(e){switch(e.keyCode){case 40:case 38:break;case 9:case 13:if(!this.shown)return;this.select();break;case 27:if(!this.shown)return;this.hide();break;default:this.lookup()}e.stopPropagation(),e.preventDefault()},blur:function(e){var t=this;setTimeout((function(){t.hide()}),150)},click:function(e){e.stopPropagation(),e.preventDefault(),this.select()},mouseenter:function(t){this.$menu.find(".active").removeClass("active"),e(t.currentTarget).addClass("active")}},e.fn.typeahead=function(n){return this.each((function(){var r=e(this),o=r.data("typeahead"),s="object"==i(n)&&n;o||r.data("typeahead",o=new t(this,s)),"string"==typeof n&&o[n]()}))},e.fn.typeahead.defaults={source:[],items:8,menu:'',item:'
  • ',minLength:1},e.fn.typeahead.Constructor=t,e((function(){e("body").on("focus.typeahead.data-api",'[data-provide="typeahead"]',(function(t){var n=e(this);n.data("typeahead")||(t.preventDefault(),n.typeahead(n.data()))}))}))}(window.jQuery),function(e){var t=function(t,n){this.options=e.extend({},e.fn.affix.defaults,n),this.$window=e(window).on("scroll.affix.data-api",e.proxy(this.checkPosition,this)),this.$element=e(t),this.checkPosition()};t.prototype.checkPosition=function(){if(this.$element.is(":visible")){var t,n=e(document).height(),r=this.$window.scrollTop(),o=this.$element.offset(),s=this.options.offset,a=s.bottom,l=s.top;"object"!=i(s)&&(a=l=s),"function"==typeof l&&(l=s.top()),"function"==typeof a&&(a=s.bottom()),t=!(null!=this.unpin&&r+this.unpin<=o.top)&&(null!=a&&o.top+this.$element.height()>=n-a?"bottom":null!=l&&r<=l&&"top"),this.affixed!==t&&(this.affixed=t,this.unpin="bottom"==t?o.top-r:null,this.$element.removeClass("affix affix-top affix-bottom").addClass("affix"+(t?"-"+t:"")))}},e.fn.affix=function(n){return this.each((function(){var r=e(this),o=r.data("affix"),s="object"==i(n)&&n;o||r.data("affix",o=new t(this,s)),"string"==typeof n&&o[n]()}))},e.fn.affix.Constructor=t,e.fn.affix.defaults={offset:0},e(window).on("load",(function(){e('[data-spy="affix"]').each((function(){var t=e(this),n=t.data();n.offset=n.offset||{},n.offsetBottom&&(n.offset.bottom=n.offsetBottom),n.offsetTop&&(n.offset.top=n.offsetTop),t.affix(n)}))}))}(window.jQuery)},{}],3:[function(e,t,n){"use strict";function i(e){return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)} +(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i 7; + }; + + if (!passwordValidation(password)) { + $('#newPasswordFormAlert').show(); + $('#newPasswordFormAlert').html('Password should be longer than 7 characters'); + return; + } + + $.post('service.php', { + a: 'rsp', + key: key, + pwd: password, + now: '1' + }, function (data) { + if (data.status == 'SUCCESS') { + top.location.href = 'login.php?c=1'; + } else { + $('#newPasswordFormAlert').show(); + $('#newPasswordFormAlert').html(data.message); + } + }, 'json'); +}; + +window.submitLogin = function () { + var username = $('#username').val(); + var password = $('#password').val(); + + if (username === '' || password === '') { + return false; + } + + try { + localStorage.clear(); + } catch (e) {} + + $('#loginForm').submit(); +}; + +window.authGoogle = function () { + window.location.href = "".concat(window.location.href.split('login.php')[0], "login.php?google=1"); +}; + +},{}],2:[function(require,module,exports){ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +/* =================================================== + * bootstrap-transition.js v2.1.1 + * http://twitter.github.com/bootstrap/javascript.html#transitions + * =================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ +!function ($) { + $(function () { + "use strict"; // jshint ;_; + + /* CSS TRANSITION SUPPORT (http://www.modernizr.com/) + * ======================================================= */ + + $.support.transition = function () { + var transitionEnd = function () { + var el = document.createElement('bootstrap'), + transEndEventNames = { + 'WebkitTransition': 'webkitTransitionEnd', + 'MozTransition': 'transitionend', + 'OTransition': 'oTransitionEnd otransitionend', + 'transition': 'transitionend' + }, + name; + + for (name in transEndEventNames) { + if (el.style[name] !== undefined) { + return transEndEventNames[name]; + } + } + }(); + + return transitionEnd && { + end: transitionEnd + }; + }(); + }); +}(window.jQuery); +/* ========================================================== +* bootstrap-alert.js v2.1.1 +* http://twitter.github.com/bootstrap/javascript.html#alerts +* ========================================================== +* Copyright 2012 Twitter, Inc. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +* ========================================================== */ + +!function ($) { + "use strict"; // jshint ;_; + + /* ALERT CLASS DEFINITION + * ====================== */ + + var dismiss = '[data-dismiss="alert"]', + Alert = function Alert(el) { + $(el).on('click', dismiss, this.close); + }; + + Alert.prototype.close = function (e) { + var $this = $(this), + selector = $this.attr('data-target'), + $parent; + + if (!selector) { + selector = $this.attr('href'); + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, ''); //strip for ie7 + } + + $parent = $(selector); + e && e.preventDefault(); + $parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent()); + $parent.trigger(e = $.Event('close')); + if (e.isDefaultPrevented()) return; + $parent.removeClass('in'); + + function removeElement() { + $parent.trigger('closed').remove(); + } + + $.support.transition && $parent.hasClass('fade') ? $parent.on($.support.transition.end, removeElement) : removeElement(); + }; + /* ALERT PLUGIN DEFINITION + * ======================= */ + + + $.fn.alert = function (option) { + return this.each(function () { + var $this = $(this), + data = $this.data('alert'); + if (!data) $this.data('alert', data = new Alert(this)); + if (typeof option == 'string') data[option].call($this); + }); + }; + + $.fn.alert.Constructor = Alert; + /* ALERT DATA-API + * ============== */ + + $(function () { + $('body').on('click.alert.data-api', dismiss, Alert.prototype.close); + }); +}(window.jQuery); +/* ============================================================ +* bootstrap-button.js v2.1.1 +* http://twitter.github.com/bootstrap/javascript.html#buttons +* ============================================================ +* Copyright 2012 Twitter, Inc. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +* ============================================================ */ + +!function ($) { + "use strict"; // jshint ;_; + + /* BUTTON PUBLIC CLASS DEFINITION + * ============================== */ + + var Button = function Button(element, options) { + this.$element = $(element); + this.options = $.extend({}, $.fn.button.defaults, options); + }; + + Button.prototype.setState = function (state) { + var d = 'disabled', + $el = this.$element, + data = $el.data(), + val = $el.is('input') ? 'val' : 'html'; + state = state + 'Text'; + data.resetText || $el.data('resetText', $el[val]()); + $el[val](data[state] || this.options[state]); // push to event loop to allow forms to submit + + setTimeout(function () { + state == 'loadingText' ? $el.addClass(d).attr(d, d) : $el.removeClass(d).removeAttr(d); + }, 0); + }; + + Button.prototype.toggle = function () { + var $parent = this.$element.closest('[data-toggle="buttons-radio"]'); + $parent && $parent.find('.active').removeClass('active'); + this.$element.toggleClass('active'); + }; + /* BUTTON PLUGIN DEFINITION + * ======================== */ + + + $.fn.button = function (option) { + return this.each(function () { + var $this = $(this), + data = $this.data('button'), + options = _typeof(option) == 'object' && option; + if (!data) $this.data('button', data = new Button(this, options)); + if (option == 'toggle') data.toggle();else if (option) data.setState(option); + }); + }; + + $.fn.button.defaults = { + loadingText: 'loading...' + }; + $.fn.button.Constructor = Button; + /* BUTTON DATA-API + * =============== */ + + $(function () { + $('body').on('click.button.data-api', '[data-toggle^=button]', function (e) { + var $btn = $(e.target); + if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn'); + $btn.button('toggle'); + }); + }); +}(window.jQuery); +/* ========================================================== +* bootstrap-carousel.js v2.1.1 +* http://twitter.github.com/bootstrap/javascript.html#carousel +* ========================================================== +* Copyright 2012 Twitter, Inc. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +* ========================================================== */ + +!function ($) { + "use strict"; // jshint ;_; + + /* CAROUSEL CLASS DEFINITION + * ========================= */ + + var Carousel = function Carousel(element, options) { + this.$element = $(element); + this.options = options; + this.options.slide && this.slide(this.options.slide); + this.options.pause == 'hover' && this.$element.on('mouseenter', $.proxy(this.pause, this)).on('mouseleave', $.proxy(this.cycle, this)); + }; + + Carousel.prototype = { + cycle: function cycle(e) { + if (!e) this.paused = false; + this.options.interval && !this.paused && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)); + return this; + }, + to: function to(pos) { + var $active = this.$element.find('.item.active'), + children = $active.parent().children(), + activePos = children.index($active), + that = this; + if (pos > children.length - 1 || pos < 0) return; + + if (this.sliding) { + return this.$element.one('slid', function () { + that.to(pos); + }); + } + + if (activePos == pos) { + return this.pause().cycle(); + } + + return this.slide(pos > activePos ? 'next' : 'prev', $(children[pos])); + }, + pause: function pause(e) { + if (!e) this.paused = true; + + if (this.$element.find('.next, .prev').length && $.support.transition.end) { + this.$element.trigger($.support.transition.end); + this.cycle(); + } + + clearInterval(this.interval); + this.interval = null; + return this; + }, + next: function next() { + if (this.sliding) return; + return this.slide('next'); + }, + prev: function prev() { + if (this.sliding) return; + return this.slide('prev'); + }, + slide: function slide(type, next) { + var $active = this.$element.find('.item.active'), + $next = next || $active[type](), + isCycling = this.interval, + direction = type == 'next' ? 'left' : 'right', + fallback = type == 'next' ? 'first' : 'last', + that = this, + e = $.Event('slide', { + relatedTarget: $next[0] + }); + this.sliding = true; + isCycling && this.pause(); + $next = $next.length ? $next : this.$element.find('.item')[fallback](); + if ($next.hasClass('active')) return; + + if ($.support.transition && this.$element.hasClass('slide')) { + this.$element.trigger(e); + if (e.isDefaultPrevented()) return; + $next.addClass(type); + $next[0].offsetWidth; // force reflow + + $active.addClass(direction); + $next.addClass(direction); + this.$element.one($.support.transition.end, function () { + $next.removeClass([type, direction].join(' ')).addClass('active'); + $active.removeClass(['active', direction].join(' ')); + that.sliding = false; + setTimeout(function () { + that.$element.trigger('slid'); + }, 0); + }); + } else { + this.$element.trigger(e); + if (e.isDefaultPrevented()) return; + $active.removeClass('active'); + $next.addClass('active'); + this.sliding = false; + this.$element.trigger('slid'); + } + + isCycling && this.cycle(); + return this; + } + }; + /* CAROUSEL PLUGIN DEFINITION + * ========================== */ + + $.fn.carousel = function (option) { + return this.each(function () { + var $this = $(this), + data = $this.data('carousel'), + options = $.extend({}, $.fn.carousel.defaults, _typeof(option) == 'object' && option), + action = typeof option == 'string' ? option : options.slide; + if (!data) $this.data('carousel', data = new Carousel(this, options)); + if (typeof option == 'number') data.to(option);else if (action) data[action]();else if (options.interval) data.cycle(); + }); + }; + + $.fn.carousel.defaults = { + interval: 5000, + pause: 'hover' + }; + $.fn.carousel.Constructor = Carousel; + /* CAROUSEL DATA-API + * ================= */ + + $(function () { + $('body').on('click.carousel.data-api', '[data-slide]', function (e) { + var $this = $(this), + href, + $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 + , + options = !$target.data('modal') && $.extend({}, $target.data(), $this.data()); + $target.carousel(options); + e.preventDefault(); + }); + }); +}(window.jQuery); +/* ============================================================= +* bootstrap-collapse.js v2.1.1 +* http://twitter.github.com/bootstrap/javascript.html#collapse +* ============================================================= +* Copyright 2012 Twitter, Inc. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +* ============================================================ */ + +!function ($) { + "use strict"; // jshint ;_; + + /* COLLAPSE PUBLIC CLASS DEFINITION + * ================================ */ + + var Collapse = function Collapse(element, options) { + this.$element = $(element); + this.options = $.extend({}, $.fn.collapse.defaults, options); + + if (this.options.parent) { + this.$parent = $(this.options.parent); + } + + this.options.toggle && this.toggle(); + }; + + Collapse.prototype = { + constructor: Collapse, + dimension: function dimension() { + var hasWidth = this.$element.hasClass('width'); + return hasWidth ? 'width' : 'height'; + }, + show: function show() { + var dimension, scroll, actives, hasData; + if (this.transitioning) return; + dimension = this.dimension(); + scroll = $.camelCase(['scroll', dimension].join('-')); + actives = this.$parent && this.$parent.find('> .accordion-group > .in'); + + if (actives && actives.length) { + hasData = actives.data('collapse'); + if (hasData && hasData.transitioning) return; + actives.collapse('hide'); + hasData || actives.data('collapse', null); + } + + this.$element[dimension](0); + this.transition('addClass', $.Event('show'), 'shown'); + $.support.transition && this.$element[dimension](this.$element[0][scroll]); + }, + hide: function hide() { + var dimension; + if (this.transitioning) return; + dimension = this.dimension(); + this.reset(this.$element[dimension]()); + this.transition('removeClass', $.Event('hide'), 'hidden'); + this.$element[dimension](0); + }, + reset: function reset(size) { + var dimension = this.dimension(); + this.$element.removeClass('collapse')[dimension](size || 'auto')[0].offsetWidth; + this.$element[size !== null ? 'addClass' : 'removeClass']('collapse'); + return this; + }, + transition: function transition(method, startEvent, completeEvent) { + var that = this, + complete = function complete() { + if (startEvent.type == 'show') that.reset(); + that.transitioning = 0; + that.$element.trigger(completeEvent); + }; + + this.$element.trigger(startEvent); + if (startEvent.isDefaultPrevented()) return; + this.transitioning = 1; + this.$element[method]('in'); + $.support.transition && this.$element.hasClass('collapse') ? this.$element.one($.support.transition.end, complete) : complete(); + }, + toggle: function toggle() { + this[this.$element.hasClass('in') ? 'hide' : 'show'](); + } + }; + /* COLLAPSIBLE PLUGIN DEFINITION + * ============================== */ + + $.fn.collapse = function (option) { + return this.each(function () { + var $this = $(this), + data = $this.data('collapse'), + options = _typeof(option) == 'object' && option; + if (!data) $this.data('collapse', data = new Collapse(this, options)); + if (typeof option == 'string') data[option](); + }); + }; + + $.fn.collapse.defaults = { + toggle: true + }; + $.fn.collapse.Constructor = Collapse; + /* COLLAPSIBLE DATA-API + * ==================== */ + + $(function () { + $('body').on('click.collapse.data-api', '[data-toggle=collapse]', function (e) { + var $this = $(this), + href, + target = $this.attr('data-target') || e.preventDefault() || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7 + , + option = $(target).data('collapse') ? 'toggle' : $this.data(); + $this[$(target).hasClass('in') ? 'addClass' : 'removeClass']('collapsed'); + $(target).collapse(option); + }); + }); +}(window.jQuery); +/* ============================================================ +* bootstrap-dropdown.js v2.1.1 +* http://twitter.github.com/bootstrap/javascript.html#dropdowns +* ============================================================ +* Copyright 2012 Twitter, Inc. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +* ============================================================ */ + +!function ($) { + "use strict"; // jshint ;_; + + /* DROPDOWN CLASS DEFINITION + * ========================= */ + + var toggle = '[data-toggle=dropdown]', + Dropdown = function Dropdown(element) { + var $el = $(element).on('click.dropdown.data-api', this.toggle); + $('html').on('click.dropdown.data-api', function () { + $el.parent().removeClass('open'); + }); + }; + + Dropdown.prototype = { + constructor: Dropdown, + toggle: function toggle(e) { + var $this = $(this), + $parent, + isActive; + if ($this.is('.disabled, :disabled')) return; + $parent = getParent($this); + isActive = $parent.hasClass('open'); + clearMenus(); + + if (!isActive) { + $parent.toggleClass('open'); + $this.focus(); + } + + return false; + }, + keydown: function keydown(e) { + var $this, $items, $active, $parent, isActive, index; + if (!/(38|40|27)/.test(e.keyCode)) return; + $this = $(this); + e.preventDefault(); + e.stopPropagation(); + if ($this.is('.disabled, :disabled')) return; + $parent = getParent($this); + isActive = $parent.hasClass('open'); + if (!isActive || isActive && e.keyCode == 27) return $this.click(); + $items = $('[role=menu] li:not(.divider) a', $parent); + if (!$items.length) return; + index = $items.index($items.filter(':focus')); + if (e.keyCode == 38 && index > 0) index--; // up + + if (e.keyCode == 40 && index < $items.length - 1) index++; // down + + if (!~index) index = 0; + $items.eq(index).focus(); + } + }; + + function clearMenus() { + getParent($(toggle)).removeClass('open'); + } + + function getParent($this) { + var selector = $this.attr('data-target'), + $parent; + + if (!selector) { + selector = $this.attr('href'); + selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, ''); //strip for ie7 + } + + $parent = $(selector); + $parent.length || ($parent = $this.parent()); + return $parent; + } + /* DROPDOWN PLUGIN DEFINITION + * ========================== */ + + + $.fn.dropdown = function (option) { + return this.each(function () { + var $this = $(this), + data = $this.data('dropdown'); + if (!data) $this.data('dropdown', data = new Dropdown(this)); + if (typeof option == 'string') data[option].call($this); + }); + }; + + $.fn.dropdown.Constructor = Dropdown; + /* APPLY TO STANDARD DROPDOWN ELEMENTS + * =================================== */ + + $(function () { + $('html').on('click.dropdown.data-Api touchstart.dropdown.data-Api', clearMenus); + $('body').on('click.dropdown touchstart.dropdown.data-api', '.dropdown form', function (e) { + e.stopPropagation(); + }).on('click.dropdown.data-Api touchstart.dropdown.data-Api', toggle, Dropdown.prototype.toggle).on('keydown.dropdown.data-Api touchstart.dropdown.data-Api', toggle + ', [role=menu]', Dropdown.prototype.keydown); + }); +}(window.jQuery); +/* ========================================================= +* bootstrap-modal.js v2.1.1 +* http://twitter.github.com/bootstrap/javascript.html#modals +* ========================================================= +* Copyright 2012 Twitter, Inc. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +* ========================================================= */ + +!function ($) { + "use strict"; // jshint ;_; + + /* MODAL CLASS DEFINITION + * ====================== */ + + var Modal = function Modal(element, options) { + this.options = options; + this.$element = $(element).delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this)); + this.options.remote && this.$element.find('.modal-body').load(this.options.remote); + }; + + Modal.prototype = { + constructor: Modal, + toggle: function toggle() { + return this[!this.isShown ? 'show' : 'hide'](); + }, + show: function show() { + var that = this, + e = $.Event('show'); + this.$element.trigger(e); + if (this.isShown || e.isDefaultPrevented()) return; + $('body').addClass('modal-open'); + this.isShown = true; + this.escape(); + this.backdrop(function () { + var transition = $.support.transition && that.$element.hasClass('fade'); + + if (!that.$element.parent().length) { + that.$element.appendTo(document.body); //don't move modals dom position + } + + that.$element.show(); + + if (transition) { + that.$element[0].offsetWidth; // force reflow + } + + that.$element.addClass('in').attr('aria-hidden', false).focus(); + that.enforceFocus(); + transition ? that.$element.one($.support.transition.end, function () { + that.$element.trigger('shown'); + }) : that.$element.trigger('shown'); + }); + }, + hide: function hide(e) { + e && e.preventDefault(); + var that = this; + e = $.Event('hide'); + this.$element.trigger(e); + if (!this.isShown || e.isDefaultPrevented()) return; + this.isShown = false; + $('body').removeClass('modal-open'); + this.escape(); + $(document).off('focusin.modal'); + this.$element.removeClass('in').attr('aria-hidden', true); + $.support.transition && this.$element.hasClass('fade') ? this.hideWithTransition() : this.hideModal(); + }, + enforceFocus: function enforceFocus() { + var that = this; + $(document).on('focusin.modal', function (e) { + if (that.$element[0] !== e.target && !that.$element.has(e.target).length) { + that.$element.focus(); + } + }); + }, + escape: function escape() { + var that = this; + + if (this.isShown && this.options.keyboard) { + this.$element.on('keyup.dismiss.modal', function (e) { + e.which == 27 && that.hide(); + }); + } else if (!this.isShown) { + this.$element.off('keyup.dismiss.modal'); + } + }, + hideWithTransition: function hideWithTransition() { + var that = this, + timeout = setTimeout(function () { + that.$element.off($.support.transition.end); + that.hideModal(); + }, 500); + this.$element.one($.support.transition.end, function () { + clearTimeout(timeout); + that.hideModal(); + }); + }, + hideModal: function hideModal(that) { + this.$element.hide().trigger('hidden'); + this.backdrop(); + }, + removeBackdrop: function removeBackdrop() { + this.$backdrop.remove(); + this.$backdrop = null; + }, + backdrop: function backdrop(callback) { + var that = this, + animate = this.$element.hasClass('fade') ? 'fade' : ''; + + if (this.isShown && this.options.backdrop) { + var doAnimate = $.support.transition && animate; + this.$backdrop = $('"]),g.fn.extend({text:function(e){return g.access(this,(function(e){return void 0===e?g.text(this):this.empty().append((this[0]&&this[0].ownerDocument||o).createTextNode(e))}),null,e,arguments.length)},wrapAll:function(e){if(g.isFunction(e))return this.each((function(t){g(this).wrapAll(e.call(this,t))}));if(this[0]){var t=g(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map((function(){for(var e=this;e.firstChild&&1===e.firstChild.nodeType;)e=e.firstChild;return e})).append(this)}return this},wrapInner:function(e){return g.isFunction(e)?this.each((function(t){g(this).wrapInner(e.call(this,t))})):this.each((function(){var t=g(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)}))},wrap:function(e){var t=g.isFunction(e);return this.each((function(n){g(this).wrapAll(t?e.call(this,n):e)}))},unwrap:function(){return this.parent().each((function(){g.nodeName(this,"body")||g(this).replaceWith(this.childNodes)})).end()},append:function(){return this.domManip(arguments,!0,(function(e){1!==this.nodeType&&11!==this.nodeType||this.appendChild(e)}))},prepend:function(){return this.domManip(arguments,!0,(function(e){1!==this.nodeType&&11!==this.nodeType||this.insertBefore(e,this.firstChild)}))},before:function(){if(!ae(this[0]))return this.domManip(arguments,!1,(function(e){this.parentNode.insertBefore(e,this)}));if(arguments.length){var e=g.clean(arguments);return this.pushStack(g.merge(e,this),"before",this.selector)}},after:function(){if(!ae(this[0]))return this.domManip(arguments,!1,(function(e){this.parentNode.insertBefore(e,this.nextSibling)}));if(arguments.length){var e=g.clean(arguments);return this.pushStack(g.merge(this,e),"after",this.selector)}},remove:function(e,t){for(var n,i=0;null!=(n=this[i]);i++)e&&!g.filter(e,[n]).length||(t||1!==n.nodeType||(g.cleanData(n.getElementsByTagName("*")),g.cleanData([n])),n.parentNode&&n.parentNode.removeChild(n));return this},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)for(1===e.nodeType&&g.cleanData(e.getElementsByTagName("*"));e.firstChild;)e.removeChild(e.firstChild);return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map((function(){return g.clone(this,e,t)}))},html:function(e){return g.access(this,(function(e){var t=this[0]||{},n=0,i=this.length;if(void 0===e)return 1===t.nodeType?t.innerHTML.replace(he,""):void 0;if("string"==typeof e&&!xe.test(e)&&(g.support.htmlSerialize||!Ce.test(e))&&(g.support.leadingWhitespace||!me.test(e))&&!$e[(ve.exec(e)||["",""])[1].toLowerCase()]){e=e.replace(ge,"<$1>");try{for(;n1&&"string"==typeof c&&ke.test(c))return this.each((function(){g(this).domManip(e,t,n)}));if(g.isFunction(c))return this.each((function(i){var r=g(this);e[0]=c.call(this,i,t?r.html():void 0),r.domManip(e,t,n)}));if(this[0]){if(r=(o=(i=g.buildFragment(e,this,d)).fragment).firstChild,1===o.childNodes.length&&(o=r),r)for(t=t&&g.nodeName(r,"tr"),s=i.cacheable||f-1;u0?this.clone(!0):this).get(),g(s[r])[t](i),o=o.concat(i);return this.pushStack(o,e,s.selector)}})),g.extend({clone:function(e,t,n){var i,r,o,s;if(g.support.html5Clone||g.isXMLDoc(e)||!Ce.test("<"+e.nodeName+">")?s=e.cloneNode(!0):(Ae.innerHTML=e.outerHTML,Ae.removeChild(s=Ae.firstChild)),!(g.support.noCloneEvent&&g.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||g.isXMLDoc(e)))for(De(e,s),i=Le(e),r=Le(s),o=0;i[o];++o)r[o]&&De(i[o],r[o]);if(t&&(je(e,s),n))for(i=Le(e),r=Le(s),o=0;i[o];++o)je(i[o],r[o]);return i=r=null,s},clean:function(e,t,n,i){var r,s,a,l,u,c,d,f,p,h,m,v=t===o&&Se,y=[];for(t&&void 0!==t.createDocumentFragment||(t=o),r=0;null!=(a=e[r]);r++)if("number"==typeof a&&(a+=""),a){if("string"==typeof a)if(be.test(a)){for(v=v||ce(t),d=t.createElement("div"),v.appendChild(d),a=a.replace(ge,"<$1>"),l=(ve.exec(a)||["",""])[1].toLowerCase(),c=(u=$e[l]||$e._default)[0],d.innerHTML=u[1]+a+u[2];c--;)d=d.lastChild;if(!g.support.tbody)for(f=ye.test(a),s=(p="table"!==l||f?""!==u[1]||f?[]:d.childNodes:d.firstChild&&d.firstChild.childNodes).length-1;s>=0;--s)g.nodeName(p[s],"tbody")&&!p[s].childNodes.length&&p[s].parentNode.removeChild(p[s]);!g.support.leadingWhitespace&&me.test(a)&&d.insertBefore(t.createTextNode(me.exec(a)[0]),d.firstChild),a=d.childNodes,d.parentNode.removeChild(d)}else a=t.createTextNode(a);a.nodeType?y.push(a):g.merge(y,a)}if(d&&(a=d=v=null),!g.support.appendChecked)for(r=0;null!=(a=y[r]);r++)g.nodeName(a,"input")?He(a):void 0!==a.getElementsByTagName&&g.grep(a.getElementsByTagName("input"),He);if(n)for(h=function(e){if(!e.type||Ne.test(e.type))return i?i.push(e.parentNode?e.parentNode.removeChild(e):e):n.appendChild(e)},r=0;null!=(a=y[r]);r++)g.nodeName(a,"script")&&h(a)||(n.appendChild(a),void 0!==a.getElementsByTagName&&(m=g.grep(g.merge([],a.getElementsByTagName("script")),h),y.splice.apply(y,[r+1,0].concat(m)),r+=m.length));return y},cleanData:function(e,t){for(var n,i,r,o,s=0,a=g.expando,l=g.cache,u=g.support.deleteExpando,c=g.event.special;null!=(r=e[s]);s++)if((t||g.acceptData(r))&&(n=(i=r[a])&&l[i])){if(n.events)for(o in n.events)c[o]?g.event.remove(r,o):g.removeEvent(r,o,n.handle);l[i]&&(delete l[i],u?delete r[a]:r.removeAttribute?r.removeAttribute(a):r[a]=null,g.deletedIds.push(i))}}}),g.uaMatch=function(e){e=e.toLowerCase();var t=/(chrome)[ \/]([\w.]+)/.exec(e)||/(webkit)[ \/]([\w.]+)/.exec(e)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e)||/(msie) ([\w.]+)/.exec(e)||e.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(e)||[];return{browser:t[1]||"",version:t[2]||"0"}},fe={},(de=g.uaMatch(a.userAgent)).browser&&(fe[de.browser]=!0,fe.version=de.version),fe.chrome?fe.webkit=!0:fe.webkit&&(fe.safari=!0),g.browser=fe,g.sub=function(){function e(t,n){return new e.fn.init(t,n)}g.extend(!0,e,this),e.superclass=this,e.fn=e.prototype=this(),e.fn.constructor=e,e.sub=this.sub,e.fn.init=function(n,i){return i&&i instanceof g&&!(i instanceof e)&&(i=e(i)),g.fn.init.call(this,n,i,t)},e.fn.init.prototype=e.fn;var t=e(o);return e};var Fe,qe,Me,Pe=/alpha\([^)]*\)/i,Oe=/opacity=([^)]*)/,_e=/^(top|right|bottom|left)$/,Be=/^(none|table(?!-c[ea]).+)/,We=/^margin/,Re=new RegExp("^("+v+")(.*)$","i"),Ie=new RegExp("^("+v+")(?!px)[a-z%]+$","i"),ze=new RegExp("^([-+])=("+v+")","i"),Xe={},Ue={position:"absolute",visibility:"hidden",display:"block"},Qe={letterSpacing:0,fontWeight:400},Ye=["Top","Right","Bottom","Left"],Ge=["Webkit","O","Moz","ms"],Je=g.fn.toggle;function Ve(e,t){if(t in e)return t;for(var n=t.charAt(0).toUpperCase()+t.slice(1),i=t,r=Ge.length;r--;)if((t=Ge[r]+n)in e)return t;return i}function Ke(e,t){return"none"===g.css(e=t||e,"display")||!g.contains(e.ownerDocument,e)}function Ze(e,t){for(var n,i,r=[],o=0,s=e.length;o").appendTo(o.body),n=t.css("display");return t.remove(),"none"!==n&&""!==n||(qe=o.body.appendChild(qe||g.extend(o.createElement("iframe"),{frameBorder:0,width:0,height:0})),Me&&qe.createElement||((Me=(qe.contentWindow||qe.contentDocument).document).write(""),Me.close()),t=Me.body.appendChild(Me.createElement(e)),n=Fe(t,"display"),o.body.removeChild(qe)),Xe[e]=n,n}g.fn.extend({css:function(e,t){return g.access(this,(function(e,t,n){return void 0!==n?g.style(e,t,n):g.css(e,t)}),e,t,arguments.length>1)},show:function(){return Ze(this,!0)},hide:function(){return Ze(this)},toggle:function(e,t){var n="boolean"==typeof e;return g.isFunction(e)&&g.isFunction(t)?Je.apply(this,arguments):this.each((function(){(n?e:Ke(this))?g(this).show():g(this).hide()}))}}),g.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Fe(e,"opacity");return""===n?"1":n}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{float:g.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,s,a,l=g.camelCase(t),u=e.style;if(t=g.cssProps[l]||(g.cssProps[l]=Ve(u,l)),a=g.cssHooks[t]||g.cssHooks[l],void 0===n)return a&&"get"in a&&void 0!==(o=a.get(e,!1,r))?o:u[t];if(!("string"===(s=i(n))&&(o=ze.exec(n))&&(n=(o[1]+1)*o[2]+parseFloat(g.css(e,t)),s="number"),null==n||"number"===s&&isNaN(n)||("number"!==s||g.cssNumber[l]||(n+="px"),a&&"set"in a&&void 0===(n=a.set(e,n,r)))))try{u[t]=n}catch(e){}}},css:function(e,t,n,i){var r,o,s,a=g.camelCase(t);return t=g.cssProps[a]||(g.cssProps[a]=Ve(e.style,a)),(s=g.cssHooks[t]||g.cssHooks[a])&&"get"in s&&(r=s.get(e,!0,i)),void 0===r&&(r=Fe(e,t)),"normal"===r&&t in Qe&&(r=Qe[t]),n||void 0!==i?(o=parseFloat(r),n||g.isNumeric(o)?o||0:r):r},swap:function(e,t,n){var i,r,o={};for(r in t)o[r]=e.style[r],e.style[r]=t[r];for(r in i=n.call(e),t)e.style[r]=o[r];return i}}),e.getComputedStyle?Fe=function(t,n){var i,r,o,s,a=e.getComputedStyle(t,null),l=t.style;return a&&(""!==(i=a[n])||g.contains(t.ownerDocument,t)||(i=g.style(t,n)),Ie.test(i)&&We.test(n)&&(r=l.width,o=l.minWidth,s=l.maxWidth,l.minWidth=l.maxWidth=l.width=i,i=a.width,l.width=r,l.minWidth=o,l.maxWidth=s)),i}:o.documentElement.currentStyle&&(Fe=function(e,t){var n,i,r=e.currentStyle&&e.currentStyle[t],o=e.style;return null==r&&o&&o[t]&&(r=o[t]),Ie.test(r)&&!_e.test(t)&&(n=o.left,(i=e.runtimeStyle&&e.runtimeStyle.left)&&(e.runtimeStyle.left=e.currentStyle.left),o.left="fontSize"===t?"1em":r,r=o.pixelLeft+"px",o.left=n,i&&(e.runtimeStyle.left=i)),""===r?"auto":r}),g.each(["height","width"],(function(e,t){g.cssHooks[t]={get:function(e,n,i){if(n)return 0===e.offsetWidth&&Be.test(Fe(e,"display"))?g.swap(e,Ue,(function(){return nt(e,t,i)})):nt(e,t,i)},set:function(e,n,i){return et(0,n,i?tt(e,t,i,g.support.boxSizing&&"border-box"===g.css(e,"boxSizing")):0)}}})),g.support.opacity||(g.cssHooks.opacity={get:function(e,t){return Oe.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,i=e.currentStyle,r=g.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=i&&i.filter||n.filter||"";n.zoom=1,t>=1&&""===g.trim(o.replace(Pe,""))&&n.removeAttribute&&(n.removeAttribute("filter"),i&&!i.filter)||(n.filter=Pe.test(o)?o.replace(Pe,r):o+" "+r)}}),g((function(){g.support.reliableMarginRight||(g.cssHooks.marginRight={get:function(e,t){return g.swap(e,{display:"inline-block"},(function(){if(t)return Fe(e,"marginRight")}))}}),!g.support.pixelPosition&&g.fn.position&&g.each(["top","left"],(function(e,t){g.cssHooks[t]={get:function(e,n){if(n){var i=Fe(e,t);return Ie.test(i)?g(e).position()[t]+"px":i}}}}))})),g.expr&&g.expr.filters&&(g.expr.filters.hidden=function(e){return 0===e.offsetWidth&&0===e.offsetHeight||!g.support.reliableHiddenOffsets&&"none"===(e.style&&e.style.display||Fe(e,"display"))},g.expr.filters.visible=function(e){return!g.expr.filters.hidden(e)}),g.each({margin:"",padding:"",border:"Width"},(function(e,t){g.cssHooks[e+t]={expand:function(n){var i,r="string"==typeof n?n.split(" "):[n],o={};for(i=0;i<4;i++)o[e+Ye[i]+t]=r[i]||r[i-2]||r[0];return o}},We.test(e)||(g.cssHooks[e+t].set=et)}));var rt=/%20/g,ot=/\[\]$/,st=/\r?\n/g,at=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,lt=/^(?:select|textarea)/i;function ut(e,t,n,r){var o;if(g.isArray(t))g.each(t,(function(t,o){n||ot.test(e)?r(e,o):ut(e+"["+("object"===i(o)?t:"")+"]",o,n,r)}));else if(n||"object"!==g.type(t))r(e,t);else for(o in t)ut(e+"["+o+"]",t[o],n,r)}g.fn.extend({serialize:function(){return g.param(this.serializeArray())},serializeArray:function(){return this.map((function(){return this.elements?g.makeArray(this.elements):this})).filter((function(){return this.name&&!this.disabled&&(this.checked||lt.test(this.nodeName)||at.test(this.type))})).map((function(e,t){var n=g(this).val();return null==n?null:g.isArray(n)?g.map(n,(function(e,n){return{name:t.name,value:e.replace(st,"\r\n")}})):{name:t.name,value:n.replace(st,"\r\n")}})).get()}}),g.param=function(e,t){var n,i=[],r=function(e,t){t=g.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(void 0===t&&(t=g.ajaxSettings&&g.ajaxSettings.traditional),g.isArray(e)||e.jquery&&!g.isPlainObject(e))g.each(e,(function(){r(this.name,this.value)}));else for(n in e)ut(n,e[n],t,r);return i.join("&").replace(rt,"+")};var ct,dt,ft=/#.*$/,pt=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,ht=/^(?:GET|HEAD)$/,mt=/^\/\//,gt=/\?/,vt=/)<[^<]*)*<\/script>/gi,yt=/([?&])_=[^&]*/,bt=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,xt=g.fn.load,wt={},Ct={},Tt=["*/"]+["*"];try{ct=s.href}catch(e){(ct=o.createElement("a")).href="",ct=ct.href}function kt(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var i,r,o=t.toLowerCase().split(b),s=0,a=o.length;if(g.isFunction(n))for(;s=0&&(r=e.slice(l,e.length),e=e.slice(0,l)),g.isFunction(t)?(n=t,t=void 0):t&&"object"===i(t)&&(o="POST"),g.ajax({url:e,type:o,dataType:"html",data:t,complete:function(e,t){n&&a.each(n,s||[e.responseText,t,e])}}).done((function(e){s=arguments,a.html(r?g("
    ").append(e.replace(vt,"")).find(r):e)})),this},g.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),(function(e,t){g.fn[t]=function(e){return this.on(t,e)}})),g.each(["get","post"],(function(e,t){g[t]=function(e,n,i,r){return g.isFunction(n)&&(r=r||i,i=n,n=void 0),g.ajax({type:t,url:e,data:n,success:i,dataType:r})}})),g.extend({getScript:function(e,t){return g.get(e,void 0,t,"script")},getJSON:function(e,t,n){return g.get(e,t,n,"json")},ajaxSetup:function(e,t){return t?Et(e,g.ajaxSettings):(t=e,e=g.ajaxSettings),Et(e,t),e},ajaxSettings:{url:ct,isLocal:/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/.test(dt[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":Tt},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":e.String,"text html":!0,"text json":g.parseJSON,"text xml":g.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:kt(wt),ajaxTransport:kt(Ct),ajax:function(e,t){"object"===i(e)&&(t=e,e=void 0);var n,r,o,s,a,l,u,c,d=g.ajaxSetup({},t=t||{}),f=d.context||d,p=f!==d&&(f.nodeType||f instanceof g)?g(f):g.event,h=g.Deferred(),m=g.Callbacks("once memory"),v=d.statusCode||{},y={},x={},w=0,C="canceled",T={readyState:0,setRequestHeader:function(e,t){if(!w){var n=e.toLowerCase();e=x[n]=x[n]||e,y[e]=t}return this},getAllResponseHeaders:function(){return 2===w?r:null},getResponseHeader:function(e){var t;if(2===w){if(!o)for(o={};t=pt.exec(r);)o[t[1].toLowerCase()]=t[2];t=o[e.toLowerCase()]}return void 0===t?null:t},overrideMimeType:function(e){return w||(d.mimeType=e),this},abort:function(e){return e=e||C,s&&s.abort(e),k(0,e),this}};function k(e,t,i,o){var l,c,y,b,x,C=t;2!==w&&(w=2,a&&clearTimeout(a),s=void 0,r=o||"",T.readyState=e>0?4:0,i&&(b=function(e,t,n){var i,r,o,s,a=e.contents,l=e.dataTypes,u=e.responseFields;for(r in u)r in n&&(t[u[r]]=n[r]);for(;"*"===l[0];)l.shift(),void 0===i&&(i=e.mimeType||t.getResponseHeader("content-type"));if(i)for(r in a)if(a[r]&&a[r].test(i)){l.unshift(r);break}if(l[0]in n)o=l[0];else{for(r in n){if(!l[0]||e.converters[r+" "+l[0]]){o=r;break}s||(s=r)}o=o||s}if(o)return o!==l[0]&&l.unshift(o),n[o]}(d,T,i)),e>=200&&e<300||304===e?(d.ifModified&&((x=T.getResponseHeader("Last-Modified"))&&(g.lastModified[n]=x),(x=T.getResponseHeader("Etag"))&&(g.etag[n]=x)),304===e?(C="notmodified",l=!0):(C=(l=function(e,t){var n,i,r,o,s=e.dataTypes.slice(),a=s[0],l={},u=0;e.dataFilter&&(t=e.dataFilter(t,e.dataType));if(s[1])for(n in e.converters)l[n.toLowerCase()]=e.converters[n];for(;r=s[++u];)if("*"!==r){if("*"!==a&&a!==r){if(!(n=l[a+" "+r]||l["* "+r]))for(i in l)if((o=i.split(" "))[1]===r&&(n=l[a+" "+o[0]]||l["* "+o[0]])){!0===n?n=l[i]:!0!==l[i]&&(r=o[0],s.splice(u--,0,r));break}if(!0!==n)if(n&&e.throws)t=n(t);else try{t=n(t)}catch(e){return{state:"parsererror",error:n?e:"No conversion from "+a+" to "+r}}}a=r}return{state:"success",data:t}}(d,b)).state,c=l.data,l=!(y=l.error))):(y=C,C&&!e||(C="error",e<0&&(e=0))),T.status=e,T.statusText=""+(t||C),l?h.resolveWith(f,[c,C,T]):h.rejectWith(f,[T,C,y]),T.statusCode(v),v=void 0,u&&p.trigger("ajax"+(l?"Success":"Error"),[T,d,l?c:y]),m.fireWith(f,[T,C]),u&&(p.trigger("ajaxComplete",[T,d]),--g.active||g.event.trigger("ajaxStop")))}if(h.promise(T),T.success=T.done,T.error=T.fail,T.complete=m.add,T.statusCode=function(e){var t;if(e)if(w<2)for(t in e)v[t]=[v[t],e[t]];else t=e[T.status],T.always(t);return this},d.url=((e||d.url)+"").replace(ft,"").replace(mt,dt[1]+"//"),d.dataTypes=g.trim(d.dataType||"*").toLowerCase().split(b),null==d.crossDomain&&(l=bt.exec(d.url.toLowerCase()),d.crossDomain=!(!l||l[1]==dt[1]&&l[2]==dt[2]&&(l[3]||("http:"===l[1]?80:443))==(dt[3]||("http:"===dt[1]?80:443)))),d.data&&d.processData&&"string"!=typeof d.data&&(d.data=g.param(d.data,d.traditional)),Nt(wt,d,t,T),2===w)return T;if(u=d.global,d.type=d.type.toUpperCase(),d.hasContent=!ht.test(d.type),u&&0==g.active++&&g.event.trigger("ajaxStart"),!d.hasContent&&(d.data&&(d.url+=(gt.test(d.url)?"&":"?")+d.data,delete d.data),n=d.url,!1===d.cache)){var N=g.now(),E=d.url.replace(yt,"$1_="+N);d.url=E+(E===d.url?(gt.test(d.url)?"&":"?")+"_="+N:"")}for(c in(d.data&&d.hasContent&&!1!==d.contentType||t.contentType)&&T.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(n=n||d.url,g.lastModified[n]&&T.setRequestHeader("If-Modified-Since",g.lastModified[n]),g.etag[n]&&T.setRequestHeader("If-None-Match",g.etag[n])),T.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+("*"!==d.dataTypes[0]?", "+Tt+"; q=0.01":""):d.accepts["*"]),d.headers)T.setRequestHeader(c,d.headers[c]);if(d.beforeSend&&(!1===d.beforeSend.call(f,T,d)||2===w))return T.abort();for(c in C="abort",{success:1,error:1,complete:1})T[c](d[c]);if(s=Nt(Ct,d,t,T)){T.readyState=1,u&&p.trigger("ajaxSend",[T,d]),d.async&&d.timeout>0&&(a=setTimeout((function(){T.abort("timeout")}),d.timeout));try{w=1,s.send(y,k)}catch(e){if(!(w<2))throw e;k(-1,e)}}else k(-1,"No Transport");return T},active:0,lastModified:{},etag:{}});var $t=[],St=/\?/,At=/(=)\?(?=&|$)|\?\?/,jt=g.now();g.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=$t.pop()||g.expando+"_"+jt++;return this[e]=!0,e}}),g.ajaxPrefilter("json jsonp",(function(t,n,i){var r,o,s,a=t.data,l=t.url,u=!1!==t.jsonp,c=u&&At.test(l),d=u&&!c&&"string"==typeof a&&!(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&At.test(a);if("jsonp"===t.dataTypes[0]||c||d)return r=t.jsonpCallback=g.isFunction(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,o=e[r],c?t.url=l.replace(At,"$1"+r):d?t.data=a.replace(At,"$1"+r):u&&(t.url+=(St.test(l)?"&":"?")+t.jsonp+"="+r),t.converters["script json"]=function(){return s||g.error(r+" was not called"),s[0]},t.dataTypes[0]="json",e[r]=function(){s=arguments},i.always((function(){e[r]=o,t[r]&&(t.jsonpCallback=n.jsonpCallback,$t.push(r)),s&&g.isFunction(o)&&o(s[0]),s=o=void 0})),"script"})),g.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(e){return g.globalEval(e),e}}}),g.ajaxPrefilter("script",(function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)})),g.ajaxTransport("script",(function(e){if(e.crossDomain){var t,n=o.head||o.getElementsByTagName("head")[0]||o.documentElement;return{send:function(i,r){(t=o.createElement("script")).async="async",e.scriptCharset&&(t.charset=e.scriptCharset),t.src=e.url,t.onload=t.onreadystatechange=function(e,i){(i||!t.readyState||/loaded|complete/.test(t.readyState))&&(t.onload=t.onreadystatechange=null,n&&t.parentNode&&n.removeChild(t),t=void 0,i||r(200,"success"))},n.insertBefore(t,n.firstChild)},abort:function(){t&&t.onload(0,1)}}}}));var Dt,Lt,Ht=!!e.ActiveXObject&&function(){for(var e in Dt)Dt[e](0,1)},Ft=0;function qt(){try{return new e.XMLHttpRequest}catch(e){}}g.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&qt()||function(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(e){}}()}:qt,Lt=g.ajaxSettings.xhr(),g.extend(g.support,{ajax:!!Lt,cors:!!Lt&&"withCredentials"in Lt}),g.support.ajax&&g.ajaxTransport((function(t){var n;if(!t.crossDomain||g.support.cors)return{send:function(i,r){var o,s,a=t.xhr();if(t.username?a.open(t.type,t.url,t.async,t.username,t.password):a.open(t.type,t.url,t.async),t.xhrFields)for(s in t.xhrFields)a[s]=t.xhrFields[s];t.mimeType&&a.overrideMimeType&&a.overrideMimeType(t.mimeType),t.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");try{for(s in i)a.setRequestHeader(s,i[s])}catch(e){}a.send(t.hasContent&&t.data||null),n=function(e,i){var s,l,u,c,d;try{if(n&&(i||4===a.readyState))if(n=void 0,o&&(a.onreadystatechange=g.noop,Ht&&delete Dt[o]),i)4!==a.readyState&&a.abort();else{s=a.status,u=a.getAllResponseHeaders(),c={},(d=a.responseXML)&&d.documentElement&&(c.xml=d);try{c.text=a.responseText}catch(e){}try{l=a.statusText}catch(e){l=""}s||!t.isLocal||t.crossDomain?1223===s&&(s=204):s=c.text?200:404}}catch(e){i||r(-1,e)}c&&r(s,l,c,u)},t.async?4===a.readyState?setTimeout(n,0):(o=++Ft,Ht&&(Dt||(Dt={},g(e).unload(Ht)),Dt[o]=n),a.onreadystatechange=n):n()},abort:function(){n&&n(0,1)}}}));var Mt,Pt,Ot=/^(?:toggle|show|hide)$/,_t=new RegExp("^(?:([-+])=|)("+v+")([a-z%]*)$","i"),Bt=/queueHooks$/,Wt=[function(e,t,n){var i,r,o,s,a,l,u,c,d=this,f=e.style,p={},h=[],m=e.nodeType&&Ke(e);n.queue||(null==(u=g._queueHooks(e,"fx")).unqueued&&(u.unqueued=0,c=u.empty.fire,u.empty.fire=function(){u.unqueued||c()}),u.unqueued++,d.always((function(){d.always((function(){u.unqueued--,g.queue(e,"fx").length||u.empty.fire()}))})));1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[f.overflow,f.overflowX,f.overflowY],"inline"===g.css(e,"display")&&"none"===g.css(e,"float")&&(g.support.inlineBlockNeedsLayout&&"inline"!==it(e.nodeName)?f.zoom=1:f.display="inline-block"));n.overflow&&(f.overflow="hidden",g.support.shrinkWrapBlocks||d.done((function(){f.overflow=n.overflow[0],f.overflowX=n.overflow[1],f.overflowY=n.overflow[2]})));for(i in t)if(o=t[i],Ot.exec(o)){if(delete t[i],o===(m?"hide":"show"))continue;h.push(i)}if(s=h.length)for(a=g._data(e,"fxshow")||g._data(e,"fxshow",{}),m?g(e).show():d.done((function(){g(e).hide()})),d.done((function(){var t;for(t in g.removeData(e,"fxshow",!0),p)g.style(e,t,p[t])})),i=0;i-1?(r=(d=s.position()).top,o=d.left):(r=parseFloat(l)||0,o=parseFloat(u)||0),g.isFunction(t)&&(t=t.call(e,n,a)),null!=t.top&&(c.top=t.top-a.top+r),null!=t.left&&(c.left=t.left-a.left+o),"using"in t?t.using.call(e,c):s.css(c)}},g.fn.extend({position:function(){if(this[0]){var e=this[0],t=this.offsetParent(),n=this.offset(),i=Qt.test(t[0].nodeName)?{top:0,left:0}:t.offset();return n.top-=parseFloat(g.css(e,"marginTop"))||0,n.left-=parseFloat(g.css(e,"marginLeft"))||0,i.top+=parseFloat(g.css(t[0],"borderTopWidth"))||0,i.left+=parseFloat(g.css(t[0],"borderLeftWidth"))||0,{top:n.top-i.top,left:n.left-i.left}}},offsetParent:function(){return this.map((function(){for(var e=this.offsetParent||o.body;e&&!Qt.test(e.nodeName)&&"static"===g.css(e,"position");)e=e.offsetParent;return e||o.body}))}}),g.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},(function(e,t){var n=/Y/.test(t);g.fn[e]=function(i){return g.access(this,(function(e,i,r){var o=Yt(e);if(void 0===r)return o?t in o?o[t]:o.document.documentElement[i]:e[i];o?o.scrollTo(n?g(o).scrollLeft():r,n?r:g(o).scrollTop()):e[i]=r}),e,i,arguments.length,null)}})),g.each({Height:"height",Width:"width"},(function(e,t){g.each({padding:"inner"+e,content:t,"":"outer"+e},(function(n,i){g.fn[i]=function(i,r){var o=arguments.length&&(n||"boolean"!=typeof i),s=n||(!0===i||!0===r?"margin":"border");return g.access(this,(function(t,n,i){var r;return g.isWindow(t)?t.document.documentElement["client"+e]:9===t.nodeType?(r=t.documentElement,Math.max(t.body["scroll"+e],r["scroll"+e],t.body["offset"+e],r["offset"+e],r["client"+e])):void 0===i?g.css(t,n,i,s):g.style(t,n,i,s)}),t,o?i:void 0,o,null)}}))})),e.jQuery=e.$=g,"function"==typeof define&&define.amd&&define.amd.jQuery&&define("jquery",[],(function(){return g}))}(window)},{}]},{},[3,2,1]); \ No newline at end of file + + (function (window, undefined) { + var dirruns, + cachedruns, + assertGetIdNotName, + Expr, + getText, + isXML, + contains, + compile, + sortOrder, + hasDuplicate, + baseHasDuplicate = true, + strundefined = "undefined", + expando = ("sizcache" + Math.random()).replace(".", ""), + document = window.document, + docElem = document.documentElement, + done = 0, + slice = [].slice, + push = [].push, + // Augment a function for special use by Sizzle + markFunction = function markFunction(fn, value) { + fn[expando] = value || true; + return fn; + }, + createCache = function createCache() { + var cache = {}, + keys = []; + return markFunction(function (key, value) { + // Only keep the most recent entries + if (keys.push(key) > Expr.cacheLength) { + delete cache[keys.shift()]; + } + + return cache[key] = value; + }, cache); + }, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + // Regex + // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + // http://www.w3.org/TR/css3-syntax/#characters + characterEncoding = "(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+", + // Loosely modeled on CSS identifier characters + // An unquoted value should be a CSS identifier (http://www.w3.org/TR/css3-selectors/#attribute-selectors) + // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = characterEncoding.replace("w", "w#"), + // Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors + operators = "([*^$|!~]?=)", + attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace + "*(?:" + operators + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]", + // Prefer arguments not in parens/brackets, + // then attribute selectors and non-pseudos (denoted by :), + // then anything else + // These preferences are here to reduce the number of selectors + // needing tokenize in the PSEUDO preFilter + pseudos = ":(" + characterEncoding + ")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:" + attributes + ")|[^:]|\\\\.)*|.*))\\)|)", + // For matchExpr.POS and matchExpr.needsContext + pos = ":(nth|eq|gt|lt|first|last|even|odd)(?:\\(((?:-\\d)?\\d*)\\)|)(?=[^-]|$)", + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rtrim = new RegExp("^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g"), + rcomma = new RegExp("^" + whitespace + "*," + whitespace + "*"), + rcombinators = new RegExp("^" + whitespace + "*([\\x20\\t\\r\\n\\f>+~])" + whitespace + "*"), + rpseudo = new RegExp(pseudos), + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/, + rnot = /^:not/, + rsibling = /[\x20\t\r\n\f]*[+~]/, + rendsWithNot = /:not\($/, + rheader = /h\d/i, + rinputs = /input|select|textarea|button/i, + rbackslash = /\\(?!\\)/g, + matchExpr = { + "ID": new RegExp("^#(" + characterEncoding + ")"), + "CLASS": new RegExp("^\\.(" + characterEncoding + ")"), + "NAME": new RegExp("^\\[name=['\"]?(" + characterEncoding + ")['\"]?\\]"), + "TAG": new RegExp("^(" + characterEncoding.replace("w", "w*") + ")"), + "ATTR": new RegExp("^" + attributes), + "PSEUDO": new RegExp("^" + pseudos), + "CHILD": new RegExp("^:(only|nth|last|first)-child(?:\\(" + whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i"), + "POS": new RegExp(pos, "ig"), + // For use in libraries implementing .is() + "needsContext": new RegExp("^" + whitespace + "*[>+~]|" + pos, "i") + }, + // Support + // Used for testing something on an element + assert = function assert(fn) { + var div = document.createElement("div"); + + try { + return fn(div); + } catch (e) { + return false; + } finally { + // release memory in IE + div = null; + } + }, + // Check if getElementsByTagName("*") returns only elements + assertTagNameNoComments = assert(function (div) { + div.appendChild(document.createComment("")); + return !div.getElementsByTagName("*").length; + }), + // Check if getAttribute returns normalized href attributes + assertHrefNotNormalized = assert(function (div) { + div.innerHTML = ""; + return div.firstChild && _typeof(div.firstChild.getAttribute) !== strundefined && div.firstChild.getAttribute("href") === "#"; + }), + // Check if attributes should be retrieved by attribute nodes + assertAttributes = assert(function (div) { + div.innerHTML = ""; + + var type = _typeof(div.lastChild.getAttribute("multiple")); // IE8 returns a string for some attributes even when not present + + + return type !== "boolean" && type !== "string"; + }), + // Check if getElementsByClassName can be trusted + assertUsableClassName = assert(function (div) { + // Opera can't find a second classname (in 9.6) + div.innerHTML = ""; + + if (!div.getElementsByClassName || !div.getElementsByClassName("e").length) { + return false; + } // Safari 3.2 caches class attributes and doesn't catch changes + + + div.lastChild.className = "e"; + return div.getElementsByClassName("e").length === 2; + }), + // Check if getElementById returns elements by name + // Check if getElementsByName privileges form controls or returns elements by ID + assertUsableName = assert(function (div) { + // Inject content + div.id = expando + 0; + div.innerHTML = "
    "; + docElem.insertBefore(div, docElem.firstChild); // Test + + var pass = document.getElementsByName && // buggy browsers will return fewer than the correct 2 + document.getElementsByName(expando).length === 2 + // buggy browsers will return more than the correct 0 + document.getElementsByName(expando + 0).length; + assertGetIdNotName = !document.getElementById(expando); // Cleanup + + docElem.removeChild(div); + return pass; + }); // If slice is not available, provide a backup + + + try { + slice.call(docElem.childNodes, 0)[0].nodeType; + } catch (e) { + slice = function slice(i) { + var elem, + results = []; + + for (; elem = this[i]; i++) { + results.push(elem); + } + + return results; + }; + } + + function Sizzle(selector, context, results, seed) { + results = results || []; + context = context || document; + var match, + elem, + xml, + m, + nodeType = context.nodeType; + + if (nodeType !== 1 && nodeType !== 9) { + return []; + } + + if (!selector || typeof selector !== "string") { + return results; + } + + xml = isXML(context); + + if (!xml && !seed) { + if (match = rquickExpr.exec(selector)) { + // Speed-up: Sizzle("#ID") + if (m = match[1]) { + if (nodeType === 9) { + elem = context.getElementById(m); // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + + if (elem && elem.parentNode) { + // Handle the case where IE, Opera, and Webkit return items + // by name instead of ID + if (elem.id === m) { + results.push(elem); + return results; + } + } else { + return results; + } + } else { + // Context is not a document + if (context.ownerDocument && (elem = context.ownerDocument.getElementById(m)) && contains(context, elem) && elem.id === m) { + results.push(elem); + return results; + } + } // Speed-up: Sizzle("TAG") + + } else if (match[2]) { + push.apply(results, slice.call(context.getElementsByTagName(selector), 0)); + return results; // Speed-up: Sizzle(".CLASS") + } else if ((m = match[3]) && assertUsableClassName && context.getElementsByClassName) { + push.apply(results, slice.call(context.getElementsByClassName(m), 0)); + return results; + } + } + } // All others + + + return select(selector, context, results, seed, xml); + } + + Sizzle.matches = function (expr, elements) { + return Sizzle(expr, null, null, elements); + }; + + Sizzle.matchesSelector = function (elem, expr) { + return Sizzle(expr, null, null, [elem]).length > 0; + }; // Returns a function to use in pseudos for input types + + + function createInputPseudo(type) { + return function (elem) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; + } // Returns a function to use in pseudos for buttons + + + function createButtonPseudo(type) { + return function (elem) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && elem.type === type; + }; + } + /** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ + + + getText = Sizzle.getText = function (elem) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if (nodeType) { + if (nodeType === 1 || nodeType === 9 || nodeType === 11) { + // Use textContent for elements + // innerText usage removed for consistency of new lines (see #11153) + if (typeof elem.textContent === "string") { + return elem.textContent; + } else { + // Traverse its children + for (elem = elem.firstChild; elem; elem = elem.nextSibling) { + ret += getText(elem); + } + } + } else if (nodeType === 3 || nodeType === 4) { + return elem.nodeValue; + } // Do not include comment or processing instruction nodes + + } else { + // If no nodeType, this is expected to be an array + for (; node = elem[i]; i++) { + // Do not traverse comment nodes + ret += getText(node); + } + } + + return ret; + }; + + isXML = Sizzle.isXML = function isXML(elem) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = elem && (elem.ownerDocument || elem).documentElement; + return documentElement ? documentElement.nodeName !== "HTML" : false; + }; // Element contains another + + + contains = Sizzle.contains = docElem.contains ? function (a, b) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!(bup && bup.nodeType === 1 && adown.contains && adown.contains(bup)); + } : docElem.compareDocumentPosition ? function (a, b) { + return b && !!(a.compareDocumentPosition(b) & 16); + } : function (a, b) { + while (b = b.parentNode) { + if (b === a) { + return true; + } + } + + return false; + }; + + Sizzle.attr = function (elem, name) { + var attr, + xml = isXML(elem); + + if (!xml) { + name = name.toLowerCase(); + } + + if (Expr.attrHandle[name]) { + return Expr.attrHandle[name](elem); + } + + if (assertAttributes || xml) { + return elem.getAttribute(name); + } + + attr = elem.getAttributeNode(name); + return attr ? typeof elem[name] === "boolean" ? elem[name] ? name : null : attr.specified ? attr.value : null : null; + }; + + Expr = Sizzle.selectors = { + // Can be adjusted by the user + cacheLength: 50, + createPseudo: markFunction, + match: matchExpr, + order: new RegExp("ID|TAG" + (assertUsableName ? "|NAME" : "") + (assertUsableClassName ? "|CLASS" : "")), + // IE6/7 return a modified href + attrHandle: assertHrefNotNormalized ? {} : { + "href": function href(elem) { + return elem.getAttribute("href", 2); + }, + "type": function type(elem) { + return elem.getAttribute("type"); + } + }, + find: { + "ID": assertGetIdNotName ? function (id, context, xml) { + if (_typeof(context.getElementById) !== strundefined && !xml) { + var m = context.getElementById(id); // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + + return m && m.parentNode ? [m] : []; + } + } : function (id, context, xml) { + if (_typeof(context.getElementById) !== strundefined && !xml) { + var m = context.getElementById(id); + return m ? m.id === id || _typeof(m.getAttributeNode) !== strundefined && m.getAttributeNode("id").value === id ? [m] : undefined : []; + } + }, + "TAG": assertTagNameNoComments ? function (tag, context) { + if (_typeof(context.getElementsByTagName) !== strundefined) { + return context.getElementsByTagName(tag); + } + } : function (tag, context) { + var results = context.getElementsByTagName(tag); // Filter out possible comments + + if (tag === "*") { + var elem, + tmp = [], + i = 0; + + for (; elem = results[i]; i++) { + if (elem.nodeType === 1) { + tmp.push(elem); + } + } + + return tmp; + } + + return results; + }, + "NAME": function NAME(tag, context) { + if (_typeof(context.getElementsByName) !== strundefined) { + return context.getElementsByName(name); + } + }, + "CLASS": function CLASS(className, context, xml) { + if (_typeof(context.getElementsByClassName) !== strundefined && !xml) { + return context.getElementsByClassName(className); + } + } + }, + relative: { + ">": { + dir: "parentNode", + first: true + }, + " ": { + dir: "parentNode" + }, + "+": { + dir: "previousSibling", + first: true + }, + "~": { + dir: "previousSibling" + } + }, + preFilter: { + "ATTR": function ATTR(match) { + match[1] = match[1].replace(rbackslash, ""); // Move the given value to match[3] whether quoted or unquoted + + match[3] = (match[4] || match[5] || "").replace(rbackslash, ""); + + if (match[2] === "~=") { + match[3] = " " + match[3] + " "; + } + + return match.slice(0, 4); + }, + "CHILD": function CHILD(match) { + /* matches from matchExpr.CHILD + 1 type (only|nth|...) + 2 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 3 xn-component of xn+y argument ([+-]?\d*n|) + 4 sign of xn-component + 5 x of xn-component + 6 sign of y-component + 7 y of y-component + */ + match[1] = match[1].toLowerCase(); + + if (match[1] === "nth") { + // nth-child requires argument + if (!match[2]) { + Sizzle.error(match[0]); + } // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + + + match[3] = +(match[3] ? match[4] + (match[5] || 1) : 2 * (match[2] === "even" || match[2] === "odd")); + match[4] = +(match[6] + match[7] || match[2] === "odd"); // other types prohibit arguments + } else if (match[2]) { + Sizzle.error(match[0]); + } + + return match; + }, + "PSEUDO": function PSEUDO(match, context, xml) { + var unquoted, excess; + + if (matchExpr["CHILD"].test(match[0])) { + return null; + } + + if (match[3]) { + match[2] = match[3]; + } else if (unquoted = match[4]) { + // Only check arguments that contain a pseudo + if (rpseudo.test(unquoted) && ( // Get excess from tokenize (recursively) + excess = tokenize(unquoted, context, xml, true)) && ( // advance to the next closing parenthesis + excess = unquoted.indexOf(")", unquoted.length - excess) - unquoted.length)) { + // excess is a negative index + unquoted = unquoted.slice(0, excess); + match[0] = match[0].slice(0, excess); + } + + match[2] = unquoted; + } // Return only captures needed by the pseudo filter method (type and argument) + + + return match.slice(0, 3); + } + }, + filter: { + "ID": assertGetIdNotName ? function (id) { + id = id.replace(rbackslash, ""); + return function (elem) { + return elem.getAttribute("id") === id; + }; + } : function (id) { + id = id.replace(rbackslash, ""); + return function (elem) { + var node = _typeof(elem.getAttributeNode) !== strundefined && elem.getAttributeNode("id"); + return node && node.value === id; + }; + }, + "TAG": function TAG(nodeName) { + if (nodeName === "*") { + return function () { + return true; + }; + } + + nodeName = nodeName.replace(rbackslash, "").toLowerCase(); + return function (elem) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + "CLASS": function CLASS(className) { + var pattern = classCache[expando][className]; + + if (!pattern) { + pattern = classCache(className, new RegExp("(^|" + whitespace + ")" + className + "(" + whitespace + "|$)")); + } + + return function (elem) { + return pattern.test(elem.className || _typeof(elem.getAttribute) !== strundefined && elem.getAttribute("class") || ""); + }; + }, + "ATTR": function ATTR(name, operator, check) { + if (!operator) { + return function (elem) { + return Sizzle.attr(elem, name) != null; + }; + } + + return function (elem) { + var result = Sizzle.attr(elem, name), + value = result + ""; + + if (result == null) { + return operator === "!="; + } + + switch (operator) { + case "=": + return value === check; + + case "!=": + return value !== check; + + case "^=": + return check && value.indexOf(check) === 0; + + case "*=": + return check && value.indexOf(check) > -1; + + case "$=": + return check && value.substr(value.length - check.length) === check; + + case "~=": + return (" " + value + " ").indexOf(check) > -1; + + case "|=": + return value === check || value.substr(0, check.length + 1) === check + "-"; + } + }; + }, + "CHILD": function CHILD(type, argument, first, last) { + if (type === "nth") { + var doneName = done++; + return function (elem) { + var parent, + diff, + count = 0, + node = elem; + + if (first === 1 && last === 0) { + return true; + } + + parent = elem.parentNode; + + if (parent && (parent[expando] !== doneName || !elem.sizset)) { + for (node = parent.firstChild; node; node = node.nextSibling) { + if (node.nodeType === 1) { + node.sizset = ++count; + + if (node === elem) { + break; + } + } + } + + parent[expando] = doneName; + } + + diff = elem.sizset - last; + + if (first === 0) { + return diff === 0; + } else { + return diff % first === 0 && diff / first >= 0; + } + }; + } + + return function (elem) { + var node = elem; + + switch (type) { + case "only": + case "first": + while (node = node.previousSibling) { + if (node.nodeType === 1) { + return false; + } + } + + if (type === "first") { + return true; + } + + node = elem; + + /* falls through */ + + case "last": + while (node = node.nextSibling) { + if (node.nodeType === 1) { + return false; + } + } + + return true; + } + }; + }, + "PSEUDO": function PSEUDO(pseudo, argument, context, xml) { + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + var args, + fn = Expr.pseudos[pseudo] || Expr.pseudos[pseudo.toLowerCase()]; + + if (!fn) { + Sizzle.error("unsupported pseudo: " + pseudo); + } // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + + + if (!fn[expando]) { + if (fn.length > 1) { + args = [pseudo, pseudo, "", argument]; + return function (elem) { + return fn(elem, 0, args); + }; + } + + return fn; + } + + return fn(argument, context, xml); + } + }, + pseudos: { + "not": markFunction(function (selector, context, xml) { + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var matcher = compile(selector.replace(rtrim, "$1"), context, xml); + return function (elem) { + return !matcher(elem); + }; + }), + "enabled": function enabled(elem) { + return elem.disabled === false; + }, + "disabled": function disabled(elem) { + return elem.disabled === true; + }, + "checked": function checked(elem) { + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return nodeName === "input" && !!elem.checked || nodeName === "option" && !!elem.selected; + }, + "selected": function selected(elem) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if (elem.parentNode) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + "parent": function parent(elem) { + return !Expr.pseudos["empty"](elem); + }, + "empty": function empty(elem) { + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is only affected by element nodes and content nodes(including text(3), cdata(4)), + // not comment, processing instructions, or others + // Thanks to Diego Perini for the nodeName shortcut + // Greater than "@" means alpha characters (specifically not starting with "#" or "?") + var nodeType; + elem = elem.firstChild; + + while (elem) { + if (elem.nodeName > "@" || (nodeType = elem.nodeType) === 3 || nodeType === 4) { + return false; + } + + elem = elem.nextSibling; + } + + return true; + }, + "contains": markFunction(function (text) { + return function (elem) { + return (elem.textContent || elem.innerText || getText(elem)).indexOf(text) > -1; + }; + }), + "has": markFunction(function (selector) { + return function (elem) { + return Sizzle(selector, elem).length > 0; + }; + }), + "header": function header(elem) { + return rheader.test(elem.nodeName); + }, + "text": function text(elem) { + var type, attr; // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) + // use getAttribute instead to test this case + + return elem.nodeName.toLowerCase() === "input" && (type = elem.type) === "text" && ((attr = elem.getAttribute("type")) == null || attr.toLowerCase() === type); + }, + // Input types + "radio": createInputPseudo("radio"), + "checkbox": createInputPseudo("checkbox"), + "file": createInputPseudo("file"), + "password": createInputPseudo("password"), + "image": createInputPseudo("image"), + "submit": createButtonPseudo("submit"), + "reset": createButtonPseudo("reset"), + "button": function button(elem) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + "input": function input(elem) { + return rinputs.test(elem.nodeName); + }, + "focus": function focus(elem) { + var doc = elem.ownerDocument; + return elem === doc.activeElement && (!doc.hasFocus || doc.hasFocus()) && !!(elem.type || elem.href); + }, + "active": function active(elem) { + return elem === elem.ownerDocument.activeElement; + } + }, + setFilters: { + "first": function first(elements, argument, not) { + return not ? elements.slice(1) : [elements[0]]; + }, + "last": function last(elements, argument, not) { + var elem = elements.pop(); + return not ? elements : [elem]; + }, + "even": function even(elements, argument, not) { + var results = [], + i = not ? 1 : 0, + len = elements.length; + + for (; i < len; i = i + 2) { + results.push(elements[i]); + } + + return results; + }, + "odd": function odd(elements, argument, not) { + var results = [], + i = not ? 0 : 1, + len = elements.length; + + for (; i < len; i = i + 2) { + results.push(elements[i]); + } + + return results; + }, + "lt": function lt(elements, argument, not) { + return not ? elements.slice(+argument) : elements.slice(0, +argument); + }, + "gt": function gt(elements, argument, not) { + return not ? elements.slice(0, +argument + 1) : elements.slice(+argument + 1); + }, + "eq": function eq(elements, argument, not) { + var elem = elements.splice(+argument, 1); + return not ? elements : elem; + } + } + }; + + function siblingCheck(a, b, ret) { + if (a === b) { + return ret; + } + + var cur = a.nextSibling; + + while (cur) { + if (cur === b) { + return -1; + } + + cur = cur.nextSibling; + } + + return 1; + } + + sortOrder = docElem.compareDocumentPosition ? function (a, b) { + if (a === b) { + hasDuplicate = true; + return 0; + } + + return (!a.compareDocumentPosition || !b.compareDocumentPosition ? a.compareDocumentPosition : a.compareDocumentPosition(b) & 4) ? -1 : 1; + } : function (a, b) { + // The nodes are identical, we can exit early + if (a === b) { + hasDuplicate = true; + return 0; // Fallback to using sourceIndex (in IE) if it's available on both nodes + } else if (a.sourceIndex && b.sourceIndex) { + return a.sourceIndex - b.sourceIndex; + } + + var al, + bl, + ap = [], + bp = [], + aup = a.parentNode, + bup = b.parentNode, + cur = aup; // If the nodes are siblings (or identical) we can do a quick check + + if (aup === bup) { + return siblingCheck(a, b); // If no parents were found then the nodes are disconnected + } else if (!aup) { + return -1; + } else if (!bup) { + return 1; + } // Otherwise they're somewhere else in the tree so we need + // to build up a full list of the parentNodes for comparison + + + while (cur) { + ap.unshift(cur); + cur = cur.parentNode; + } + + cur = bup; + + while (cur) { + bp.unshift(cur); + cur = cur.parentNode; + } + + al = ap.length; + bl = bp.length; // Start walking down the tree looking for a discrepancy + + for (var i = 0; i < al && i < bl; i++) { + if (ap[i] !== bp[i]) { + return siblingCheck(ap[i], bp[i]); + } + } // We ended someplace up the tree so do a sibling check + + + return i === al ? siblingCheck(a, bp[i], -1) : siblingCheck(ap[i], b, 1); + }; // Always assume the presence of duplicates if sort doesn't + // pass them to our comparison function (as in Google Chrome). + + [0, 0].sort(sortOrder); + baseHasDuplicate = !hasDuplicate; // Document sorting and removing duplicates + + Sizzle.uniqueSort = function (results) { + var elem, + i = 1; + hasDuplicate = baseHasDuplicate; + results.sort(sortOrder); + + if (hasDuplicate) { + for (; elem = results[i]; i++) { + if (elem === results[i - 1]) { + results.splice(i--, 1); + } + } + } + + return results; + }; + + Sizzle.error = function (msg) { + throw new Error("Syntax error, unrecognized expression: " + msg); + }; + + function tokenize(selector, context, xml, parseOnly) { + var matched, + match, + tokens, + type, + soFar, + groups, + group, + i, + preFilters, + filters, + checkContext = !xml && context !== document, + // Token cache should maintain spaces + key = (checkContext ? "" : "") + selector.replace(rtrim, "$1"), + cached = tokenCache[expando][key]; + + if (cached) { + return parseOnly ? 0 : slice.call(cached, 0); + } + + soFar = selector; + groups = []; + i = 0; + preFilters = Expr.preFilter; + filters = Expr.filter; + + while (soFar) { + // Comma and first run + if (!matched || (match = rcomma.exec(soFar))) { + if (match) { + soFar = soFar.slice(match[0].length); + tokens.selector = group; + } + + groups.push(tokens = []); + group = ""; // Need to make sure we're within a narrower context if necessary + // Adding a descendant combinator will generate what is needed + + if (checkContext) { + soFar = " " + soFar; + } + } + + matched = false; // Combinators + + if (match = rcombinators.exec(soFar)) { + group += match[0]; + soFar = soFar.slice(match[0].length); // Cast descendant combinators to space + + matched = tokens.push({ + part: match.pop().replace(rtrim, " "), + string: match[0], + captures: match + }); + } // Filters + + + for (type in filters) { + if ((match = matchExpr[type].exec(soFar)) && (!preFilters[type] || (match = preFilters[type](match, context, xml)))) { + group += match[0]; + soFar = soFar.slice(match[0].length); + matched = tokens.push({ + part: type, + string: match.shift(), + captures: match + }); + } + } + + if (!matched) { + break; + } + } // Attach the full group as a selector + + + if (group) { + tokens.selector = group; + } // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + + + return parseOnly ? soFar.length : soFar ? Sizzle.error(selector) : // Cache the tokens + slice.call(tokenCache(key, groups), 0); + } + + function addCombinator(matcher, combinator, context, xml) { + var dir = combinator.dir, + doneName = done++; + + if (!matcher) { + // If there is no matcher to check, check against the context + matcher = function matcher(elem) { + return elem === context; + }; + } + + return combinator.first ? function (elem) { + while (elem = elem[dir]) { + if (elem.nodeType === 1) { + return matcher(elem) && elem; + } + } + } : xml ? function (elem) { + while (elem = elem[dir]) { + if (elem.nodeType === 1) { + if (matcher(elem)) { + return elem; + } + } + } + } : function (elem) { + var cache, + dirkey = doneName + "." + dirruns, + cachedkey = dirkey + "." + cachedruns; + + while (elem = elem[dir]) { + if (elem.nodeType === 1) { + if ((cache = elem[expando]) === cachedkey) { + return elem.sizset; + } else if (typeof cache === "string" && cache.indexOf(dirkey) === 0) { + if (elem.sizset) { + return elem; + } + } else { + elem[expando] = cachedkey; + + if (matcher(elem)) { + elem.sizset = true; + return elem; + } + + elem.sizset = false; + } + } + } + }; + } + + function addMatcher(higher, deeper) { + return higher ? function (elem) { + var result = deeper(elem); + return result && higher(result === true ? elem : result); + } : deeper; + } // ["TAG", ">", "ID", " ", "CLASS"] + + + function matcherFromTokens(tokens, context, xml) { + var token, + matcher, + i = 0; + + for (; token = tokens[i]; i++) { + if (Expr.relative[token.part]) { + matcher = addCombinator(matcher, Expr.relative[token.part], context, xml); + } else { + matcher = addMatcher(matcher, Expr.filter[token.part].apply(null, token.captures.concat(context, xml))); + } + } + + return matcher; + } + + function matcherFromGroupMatchers(matchers) { + return function (elem) { + var matcher, + j = 0; + + for (; matcher = matchers[j]; j++) { + if (matcher(elem)) { + return true; + } + } + + return false; + }; + } + + compile = Sizzle.compile = function (selector, context, xml) { + var group, + i, + len, + cached = compilerCache[expando][selector]; // Return a cached group function if already generated (context dependent) + + if (cached && cached.context === context) { + return cached; + } // Generate a function of recursive functions that can be used to check each element + + + group = tokenize(selector, context, xml); + + for (i = 0, len = group.length; i < len; i++) { + group[i] = matcherFromTokens(group[i], context, xml); + } // Cache the compiled function + + + cached = compilerCache(selector, matcherFromGroupMatchers(group)); + cached.context = context; + cached.runs = cached.dirruns = 0; + return cached; + }; + + function multipleContexts(selector, contexts, results, seed) { + var i = 0, + len = contexts.length; + + for (; i < len; i++) { + Sizzle(selector, contexts[i], results, seed); + } + } + + function handlePOSGroup(selector, posfilter, argument, contexts, seed, not) { + var results, + fn = Expr.setFilters[posfilter.toLowerCase()]; + + if (!fn) { + Sizzle.error(posfilter); + } + + if (selector || !(results = seed)) { + multipleContexts(selector || "*", contexts, results = [], seed); + } + + return results.length > 0 ? fn(results, argument, not) : []; + } + + function handlePOS(groups, context, results, seed) { + var group, + part, + j, + groupLen, + token, + selector, + anchor, + elements, + match, + matched, + lastIndex, + currentContexts, + not, + i = 0, + len = groups.length, + rpos = matchExpr["POS"], + // This is generated here in case matchExpr["POS"] is extended + rposgroups = new RegExp("^" + rpos.source + "(?!" + whitespace + ")", "i"), + // This is for making sure non-participating + // matching groups are represented cross-browser (IE6-8) + setUndefined = function setUndefined() { + var i = 1, + len = arguments.length - 2; + + for (; i < len; i++) { + if (arguments[i] === undefined) { + match[i] = undefined; + } + } + }; + + for (; i < len; i++) { + group = groups[i]; + part = ""; + elements = seed; + + for (j = 0, groupLen = group.length; j < groupLen; j++) { + token = group[j]; + selector = token.string; + + if (token.part === "PSEUDO") { + // Reset regex index to 0 + rpos.exec(""); + anchor = 0; + + while (match = rpos.exec(selector)) { + matched = true; + lastIndex = rpos.lastIndex = match.index + match[0].length; + + if (lastIndex > anchor) { + part += selector.slice(anchor, match.index); + anchor = lastIndex; + currentContexts = [context]; + + if (rcombinators.test(part)) { + if (elements) { + currentContexts = elements; + } + + elements = seed; + } + + if (not = rendsWithNot.test(part)) { + part = part.slice(0, -5).replace(rcombinators, "$&*"); + anchor++; + } + + if (match.length > 1) { + match[0].replace(rposgroups, setUndefined); + } + + elements = handlePOSGroup(part, match[1], match[2], currentContexts, elements, not); + } + + part = ""; + } + } + + if (!matched) { + part += selector; + } + + matched = false; + } + + if (part) { + if (rcombinators.test(part)) { + multipleContexts(part, elements || [context], results, seed); + } else { + Sizzle(part, context, results, seed ? seed.concat(elements) : elements); + } + } else { + push.apply(results, elements); + } + } // Do not sort if this is a single filter + + + return len === 1 ? results : Sizzle.uniqueSort(results); + } + + function select(selector, context, results, seed, xml) { + // Remove excessive whitespace + selector = selector.replace(rtrim, "$1"); + var elements, + matcher, + cached, + elem, + i, + tokens, + token, + lastToken, + findContext, + type, + match = tokenize(selector, context, xml), + contextNodeType = context.nodeType; // POS handling + + if (matchExpr["POS"].test(selector)) { + return handlePOS(match, context, results, seed); + } + + if (seed) { + elements = slice.call(seed, 0); // To maintain document order, only narrow the + // set if there is one group + } else if (match.length === 1) { + // Take a shortcut and set the context if the root selector is an ID + if ((tokens = slice.call(match[0], 0)).length > 2 && (token = tokens[0]).part === "ID" && contextNodeType === 9 && !xml && Expr.relative[tokens[1].part]) { + context = Expr.find["ID"](token.captures[0].replace(rbackslash, ""), context, xml)[0]; + + if (!context) { + return results; + } + + selector = selector.slice(tokens.shift().string.length); + } + + findContext = (match = rsibling.exec(tokens[0].string)) && !match.index && context.parentNode || context; // Reduce the set if possible + + lastToken = ""; + + for (i = tokens.length - 1; i >= 0; i--) { + token = tokens[i]; + type = token.part; + lastToken = token.string + lastToken; + + if (Expr.relative[type]) { + break; + } + + if (Expr.order.test(type)) { + elements = Expr.find[type](token.captures[0].replace(rbackslash, ""), findContext, xml); + + if (elements == null) { + continue; + } else { + selector = selector.slice(0, selector.length - lastToken.length) + lastToken.replace(matchExpr[type], ""); + + if (!selector) { + push.apply(results, slice.call(elements, 0)); + } + + break; + } + } + } + } // Only loop over the given elements once + + + if (selector) { + matcher = compile(selector, context, xml); + dirruns = matcher.dirruns++; + + if (elements == null) { + elements = Expr.find["TAG"]("*", rsibling.test(selector) && context.parentNode || context); + } + + for (i = 0; elem = elements[i]; i++) { + cachedruns = matcher.runs++; + + if (matcher(elem)) { + results.push(elem); + } + } + } + + return results; + } + + if (document.querySelectorAll) { + (function () { + var disconnectedMatch, + oldSelect = select, + rescape = /'|\\/g, + rattributeQuotes = /\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g, + rbuggyQSA = [], + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + // A support test would require too much code (would include document ready) + // just skip matchesSelector for :active + rbuggyMatches = [":active"], + matches = docElem.matchesSelector || docElem.mozMatchesSelector || docElem.webkitMatchesSelector || docElem.oMatchesSelector || docElem.msMatchesSelector; // Build QSA regex + // Regex strategy adopted from Diego Perini + + assert(function (div) { + // Select is set to empty string on purpose + // This is to test IE's treatment of not explictly + // setting a boolean content attribute, + // since its presence should be enough + // http://bugs.jquery.com/ticket/12359 + div.innerHTML = ""; // IE8 - Some boolean attributes are not treated correctly + + if (!div.querySelectorAll("[selected]").length) { + rbuggyQSA.push("\\[" + whitespace + "*(?:checked|disabled|ismap|multiple|readonly|selected|value)"); + } // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here (do not put tests after this one) + + + if (!div.querySelectorAll(":checked").length) { + rbuggyQSA.push(":checked"); + } + }); + assert(function (div) { + // Opera 10-12/IE9 - ^= $= *= and empty values + // Should not select anything + div.innerHTML = "

    "; + + if (div.querySelectorAll("[test^='']").length) { + rbuggyQSA.push("[*^$]=" + whitespace + "*(?:\"\"|'')"); + } // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here (do not put tests after this one) + + + div.innerHTML = ""; + + if (!div.querySelectorAll(":enabled").length) { + rbuggyQSA.push(":enabled", ":disabled"); + } + }); + rbuggyQSA = rbuggyQSA.length && new RegExp(rbuggyQSA.join("|")); + + select = function select(selector, context, results, seed, xml) { + // Only use querySelectorAll when not filtering, + // when this is not xml, + // and when no QSA bugs apply + if (!seed && !xml && (!rbuggyQSA || !rbuggyQSA.test(selector))) { + if (context.nodeType === 9) { + try { + push.apply(results, slice.call(context.querySelectorAll(selector), 0)); + return results; + } catch (qsaError) {} // qSA works strangely on Element-rooted queries + // We can work around this by specifying an extra ID on the root + // and working up from there (Thanks to Andrew Dupont for the technique) + // IE 8 doesn't work on object elements + + } else if (context.nodeType === 1 && context.nodeName.toLowerCase() !== "object") { + var groups, + i, + len, + old = context.getAttribute("id"), + nid = old || expando, + newContext = rsibling.test(selector) && context.parentNode || context; + + if (old) { + nid = nid.replace(rescape, "\\$&"); + } else { + context.setAttribute("id", nid); + } + + groups = tokenize(selector, context, xml); // Trailing space is unnecessary + // There is always a context check + + nid = "[id='" + nid + "']"; + + for (i = 0, len = groups.length; i < len; i++) { + groups[i] = nid + groups[i].selector; + } + + try { + push.apply(results, slice.call(newContext.querySelectorAll(groups.join(",")), 0)); + return results; + } catch (qsaError) {} finally { + if (!old) { + context.removeAttribute("id"); + } + } + } + } + + return oldSelect(selector, context, results, seed, xml); + }; + + if (matches) { + assert(function (div) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + disconnectedMatch = matches.call(div, "div"); // This should fail with an exception + // Gecko does not error, returns false instead + + try { + matches.call(div, "[test!='']:sizzle"); + rbuggyMatches.push(matchExpr["PSEUDO"].source, matchExpr["POS"].source, "!="); + } catch (e) {} + }); // rbuggyMatches always contains :active, so no need for a length check + + rbuggyMatches = + /* rbuggyMatches.length && */ + new RegExp(rbuggyMatches.join("|")); + + Sizzle.matchesSelector = function (elem, expr) { + // Make sure that attribute selectors are quoted + expr = expr.replace(rattributeQuotes, "='$1']"); // rbuggyMatches always contains :active, so no need for an existence check + + if (!isXML(elem) && !rbuggyMatches.test(expr) && (!rbuggyQSA || !rbuggyQSA.test(expr))) { + try { + var ret = matches.call(elem, expr); // IE 9's matchesSelector returns false on disconnected nodes + + if (ret || disconnectedMatch || // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11) { + return ret; + } + } catch (e) {} + } + + return Sizzle(expr, null, null, [elem]).length > 0; + }; + } + })(); + } // Deprecated + + + Expr.setFilters["nth"] = Expr.setFilters["eq"]; // Back-compat + + Expr.filters = Expr.pseudos; // Override sizzle attribute retrieval + + Sizzle.attr = jQuery.attr; + jQuery.find = Sizzle; + jQuery.expr = Sizzle.selectors; + jQuery.expr[":"] = jQuery.expr.pseudos; + jQuery.unique = Sizzle.uniqueSort; + jQuery.text = Sizzle.getText; + jQuery.isXMLDoc = Sizzle.isXML; + jQuery.contains = Sizzle.contains; + })(window); + + var runtil = /Until$/, + rparentsprev = /^(?:parents|prev(?:Until|All))/, + isSimple = /^.[^:#\[\.,]*$/, + rneedsContext = jQuery.expr.match.needsContext, + // methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + jQuery.fn.extend({ + find: function find(selector) { + var i, + l, + length, + n, + r, + ret, + self = this; + + if (typeof selector !== "string") { + return jQuery(selector).filter(function () { + for (i = 0, l = self.length; i < l; i++) { + if (jQuery.contains(self[i], this)) { + return true; + } + } + }); + } + + ret = this.pushStack("", "find", selector); + + for (i = 0, l = this.length; i < l; i++) { + length = ret.length; + jQuery.find(selector, this[i], ret); + + if (i > 0) { + // Make sure that the results are unique + for (n = length; n < ret.length; n++) { + for (r = 0; r < length; r++) { + if (ret[r] === ret[n]) { + ret.splice(n--, 1); + break; + } + } + } + } + } + + return ret; + }, + has: function has(target) { + var i, + targets = jQuery(target, this), + len = targets.length; + return this.filter(function () { + for (i = 0; i < len; i++) { + if (jQuery.contains(this, targets[i])) { + return true; + } + } + }); + }, + not: function not(selector) { + return this.pushStack(winnow(this, selector, false), "not", selector); + }, + filter: function filter(selector) { + return this.pushStack(winnow(this, selector, true), "filter", selector); + }, + is: function is(selector) { + return !!selector && (typeof selector === "string" ? // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + rneedsContext.test(selector) ? jQuery(selector, this.context).index(this[0]) >= 0 : jQuery.filter(selector, this).length > 0 : this.filter(selector).length > 0); + }, + closest: function closest(selectors, context) { + var cur, + i = 0, + l = this.length, + ret = [], + pos = rneedsContext.test(selectors) || typeof selectors !== "string" ? jQuery(selectors, context || this.context) : 0; + + for (; i < l; i++) { + cur = this[i]; + + while (cur && cur.ownerDocument && cur !== context && cur.nodeType !== 11) { + if (pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors)) { + ret.push(cur); + break; + } + + cur = cur.parentNode; + } + } + + ret = ret.length > 1 ? jQuery.unique(ret) : ret; + return this.pushStack(ret, "closest", selectors); + }, + // Determine the position of an element within + // the matched set of elements + index: function index(elem) { + // No argument, return index in parent + if (!elem) { + return this[0] && this[0].parentNode ? this.prevAll().length : -1; + } // index in selector + + + if (typeof elem === "string") { + return jQuery.inArray(this[0], jQuery(elem)); + } // Locate the position of the desired element + + + return jQuery.inArray( // If it receives a jQuery object, the first element is used + elem.jquery ? elem[0] : elem, this); + }, + add: function add(selector, context) { + var set = typeof selector === "string" ? jQuery(selector, context) : jQuery.makeArray(selector && selector.nodeType ? [selector] : selector), + all = jQuery.merge(this.get(), set); + return this.pushStack(isDisconnected(set[0]) || isDisconnected(all[0]) ? all : jQuery.unique(all)); + }, + addBack: function addBack(selector) { + return this.add(selector == null ? this.prevObject : this.prevObject.filter(selector)); + } + }); + jQuery.fn.andSelf = jQuery.fn.addBack; // A painfully simple check to see if an element is disconnected + // from a document (should be improved, where feasible). + + function isDisconnected(node) { + return !node || !node.parentNode || node.parentNode.nodeType === 11; + } + + function sibling(cur, dir) { + do { + cur = cur[dir]; + } while (cur && cur.nodeType !== 1); + + return cur; + } + + jQuery.each({ + parent: function parent(elem) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function parents(elem) { + return jQuery.dir(elem, "parentNode"); + }, + parentsUntil: function parentsUntil(elem, i, until) { + return jQuery.dir(elem, "parentNode", until); + }, + next: function next(elem) { + return sibling(elem, "nextSibling"); + }, + prev: function prev(elem) { + return sibling(elem, "previousSibling"); + }, + nextAll: function nextAll(elem) { + return jQuery.dir(elem, "nextSibling"); + }, + prevAll: function prevAll(elem) { + return jQuery.dir(elem, "previousSibling"); + }, + nextUntil: function nextUntil(elem, i, until) { + return jQuery.dir(elem, "nextSibling", until); + }, + prevUntil: function prevUntil(elem, i, until) { + return jQuery.dir(elem, "previousSibling", until); + }, + siblings: function siblings(elem) { + return jQuery.sibling((elem.parentNode || {}).firstChild, elem); + }, + children: function children(elem) { + return jQuery.sibling(elem.firstChild); + }, + contents: function contents(elem) { + return jQuery.nodeName(elem, "iframe") ? elem.contentDocument || elem.contentWindow.document : jQuery.merge([], elem.childNodes); + } + }, function (name, fn) { + jQuery.fn[name] = function (until, selector) { + var ret = jQuery.map(this, fn, until); + + if (!runtil.test(name)) { + selector = until; + } + + if (selector && typeof selector === "string") { + ret = jQuery.filter(selector, ret); + } + + ret = this.length > 1 && !guaranteedUnique[name] ? jQuery.unique(ret) : ret; + + if (this.length > 1 && rparentsprev.test(name)) { + ret = ret.reverse(); + } + + return this.pushStack(ret, name, core_slice.call(arguments).join(",")); + }; + }); + jQuery.extend({ + filter: function filter(expr, elems, not) { + if (not) { + expr = ":not(" + expr + ")"; + } + + return elems.length === 1 ? jQuery.find.matchesSelector(elems[0], expr) ? [elems[0]] : [] : jQuery.find.matches(expr, elems); + }, + dir: function dir(elem, _dir, until) { + var matched = [], + cur = elem[_dir]; + + while (cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery(cur).is(until))) { + if (cur.nodeType === 1) { + matched.push(cur); + } + + cur = cur[_dir]; + } + + return matched; + }, + sibling: function sibling(n, elem) { + var r = []; + + for (; n; n = n.nextSibling) { + if (n.nodeType === 1 && n !== elem) { + r.push(n); + } + } + + return r; + } + }); // Implement the identical functionality for filter and not + + function winnow(elements, qualifier, keep) { + // Can't pass null or undefined to indexOf in Firefox 4 + // Set to 0 to skip string check + qualifier = qualifier || 0; + + if (jQuery.isFunction(qualifier)) { + return jQuery.grep(elements, function (elem, i) { + var retVal = !!qualifier.call(elem, i, elem); + return retVal === keep; + }); + } else if (qualifier.nodeType) { + return jQuery.grep(elements, function (elem, i) { + return elem === qualifier === keep; + }); + } else if (typeof qualifier === "string") { + var filtered = jQuery.grep(elements, function (elem) { + return elem.nodeType === 1; + }); + + if (isSimple.test(qualifier)) { + return jQuery.filter(qualifier, filtered, !keep); + } else { + qualifier = jQuery.filter(qualifier, filtered); + } + } + + return jQuery.grep(elements, function (elem, i) { + return jQuery.inArray(elem, qualifier) >= 0 === keep; + }); + } + + function createSafeFragment(document) { + var list = nodeNames.split("|"), + safeFrag = document.createDocumentFragment(); + + if (safeFrag.createElement) { + while (list.length) { + safeFrag.createElement(list.pop()); + } + } + + return safeFrag; + } + + var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" + "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", + rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g, + rleadingWhitespace = /^\s+/, + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, + rtagName = /<([\w:]+)/, + rtbody = /
    ]", "i"), + rcheckableType = /^(?:checkbox|radio)$/, + // checked="checked" or checked + rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, + rscriptType = /\/(java|ecma)script/i, + rcleanScript = /^\s*\s*$/g, + wrapMap = { + option: [1, ""], + legend: [1, "
    ", "
    "], + thead: [1, "
    ", "
    "], + tr: [2, "", "
    "], + td: [3, "", "
    "], + col: [2, "", "
    "], + area: [1, "", ""], + _default: [0, "", ""] + }, + safeFragment = createSafeFragment(document), + fragmentDiv = safeFragment.appendChild(document.createElement("div")); + wrapMap.optgroup = wrapMap.option; + wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; + wrapMap.th = wrapMap.td; // IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags, + // unless wrapped in a div with non-breaking characters in front of it. + + if (!jQuery.support.htmlSerialize) { + wrapMap._default = [1, "X
    ", "
    "]; + } + + jQuery.fn.extend({ + text: function text(value) { + return jQuery.access(this, function (value) { + return value === undefined ? jQuery.text(this) : this.empty().append((this[0] && this[0].ownerDocument || document).createTextNode(value)); + }, null, value, arguments.length); + }, + wrapAll: function wrapAll(html) { + if (jQuery.isFunction(html)) { + return this.each(function (i) { + jQuery(this).wrapAll(html.call(this, i)); + }); + } + + if (this[0]) { + // The elements to wrap the target around + var wrap = jQuery(html, this[0].ownerDocument).eq(0).clone(true); + + if (this[0].parentNode) { + wrap.insertBefore(this[0]); + } + + wrap.map(function () { + var elem = this; + + while (elem.firstChild && elem.firstChild.nodeType === 1) { + elem = elem.firstChild; + } + + return elem; + }).append(this); + } + + return this; + }, + wrapInner: function wrapInner(html) { + if (jQuery.isFunction(html)) { + return this.each(function (i) { + jQuery(this).wrapInner(html.call(this, i)); + }); + } + + return this.each(function () { + var self = jQuery(this), + contents = self.contents(); + + if (contents.length) { + contents.wrapAll(html); + } else { + self.append(html); + } + }); + }, + wrap: function wrap(html) { + var isFunction = jQuery.isFunction(html); + return this.each(function (i) { + jQuery(this).wrapAll(isFunction ? html.call(this, i) : html); + }); + }, + unwrap: function unwrap() { + return this.parent().each(function () { + if (!jQuery.nodeName(this, "body")) { + jQuery(this).replaceWith(this.childNodes); + } + }).end(); + }, + append: function append() { + return this.domManip(arguments, true, function (elem) { + if (this.nodeType === 1 || this.nodeType === 11) { + this.appendChild(elem); + } + }); + }, + prepend: function prepend() { + return this.domManip(arguments, true, function (elem) { + if (this.nodeType === 1 || this.nodeType === 11) { + this.insertBefore(elem, this.firstChild); + } + }); + }, + before: function before() { + if (!isDisconnected(this[0])) { + return this.domManip(arguments, false, function (elem) { + this.parentNode.insertBefore(elem, this); + }); + } + + if (arguments.length) { + var set = jQuery.clean(arguments); + return this.pushStack(jQuery.merge(set, this), "before", this.selector); + } + }, + after: function after() { + if (!isDisconnected(this[0])) { + return this.domManip(arguments, false, function (elem) { + this.parentNode.insertBefore(elem, this.nextSibling); + }); + } + + if (arguments.length) { + var set = jQuery.clean(arguments); + return this.pushStack(jQuery.merge(this, set), "after", this.selector); + } + }, + // keepData is for internal use only--do not document + remove: function remove(selector, keepData) { + var elem, + i = 0; + + for (; (elem = this[i]) != null; i++) { + if (!selector || jQuery.filter(selector, [elem]).length) { + if (!keepData && elem.nodeType === 1) { + jQuery.cleanData(elem.getElementsByTagName("*")); + jQuery.cleanData([elem]); + } + + if (elem.parentNode) { + elem.parentNode.removeChild(elem); + } + } + } + + return this; + }, + empty: function empty() { + var elem, + i = 0; + + for (; (elem = this[i]) != null; i++) { + // Remove element nodes and prevent memory leaks + if (elem.nodeType === 1) { + jQuery.cleanData(elem.getElementsByTagName("*")); + } // Remove any remaining nodes + + + while (elem.firstChild) { + elem.removeChild(elem.firstChild); + } + } + + return this; + }, + clone: function clone(dataAndEvents, deepDataAndEvents) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + return this.map(function () { + return jQuery.clone(this, dataAndEvents, deepDataAndEvents); + }); + }, + html: function html(value) { + return jQuery.access(this, function (value) { + var elem = this[0] || {}, + i = 0, + l = this.length; + + if (value === undefined) { + return elem.nodeType === 1 ? elem.innerHTML.replace(rinlinejQuery, "") : undefined; + } // See if we can take a shortcut and just use innerHTML + + + if (typeof value === "string" && !rnoInnerhtml.test(value) && (jQuery.support.htmlSerialize || !rnoshimcache.test(value)) && (jQuery.support.leadingWhitespace || !rleadingWhitespace.test(value)) && !wrapMap[(rtagName.exec(value) || ["", ""])[1].toLowerCase()]) { + value = value.replace(rxhtmlTag, "<$1>"); + + try { + for (; i < l; i++) { + // Remove element nodes and prevent memory leaks + elem = this[i] || {}; + + if (elem.nodeType === 1) { + jQuery.cleanData(elem.getElementsByTagName("*")); + elem.innerHTML = value; + } + } + + elem = 0; // If using innerHTML throws an exception, use the fallback method + } catch (e) {} + } + + if (elem) { + this.empty().append(value); + } + }, null, value, arguments.length); + }, + replaceWith: function replaceWith(value) { + if (!isDisconnected(this[0])) { + // Make sure that the elements are removed from the DOM before they are inserted + // this can help fix replacing a parent with child elements + if (jQuery.isFunction(value)) { + return this.each(function (i) { + var self = jQuery(this), + old = self.html(); + self.replaceWith(value.call(this, i, old)); + }); + } + + if (typeof value !== "string") { + value = jQuery(value).detach(); + } + + return this.each(function () { + var next = this.nextSibling, + parent = this.parentNode; + jQuery(this).remove(); + + if (next) { + jQuery(next).before(value); + } else { + jQuery(parent).append(value); + } + }); + } + + return this.length ? this.pushStack(jQuery(jQuery.isFunction(value) ? value() : value), "replaceWith", value) : this; + }, + detach: function detach(selector) { + return this.remove(selector, true); + }, + domManip: function domManip(args, table, callback) { + // Flatten any nested arrays + args = [].concat.apply([], args); + var results, + first, + fragment, + iNoClone, + i = 0, + value = args[0], + scripts = [], + l = this.length; // We can't cloneNode fragments that contain checked, in WebKit + + if (!jQuery.support.checkClone && l > 1 && typeof value === "string" && rchecked.test(value)) { + return this.each(function () { + jQuery(this).domManip(args, table, callback); + }); + } + + if (jQuery.isFunction(value)) { + return this.each(function (i) { + var self = jQuery(this); + args[0] = value.call(this, i, table ? self.html() : undefined); + self.domManip(args, table, callback); + }); + } + + if (this[0]) { + results = jQuery.buildFragment(args, this, scripts); + fragment = results.fragment; + first = fragment.firstChild; + + if (fragment.childNodes.length === 1) { + fragment = first; + } + + if (first) { + table = table && jQuery.nodeName(first, "tr"); // Use the original fragment for the last item instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + // Fragments from the fragment cache must always be cloned and never used in place. + + for (iNoClone = results.cacheable || l - 1; i < l; i++) { + callback.call(table && jQuery.nodeName(this[i], "table") ? findOrAppend(this[i], "tbody") : this[i], i === iNoClone ? fragment : jQuery.clone(fragment, true, true)); + } + } // Fix #11809: Avoid leaking memory + + + fragment = first = null; + + if (scripts.length) { + jQuery.each(scripts, function (i, elem) { + if (elem.src) { + if (jQuery.ajax) { + jQuery.ajax({ + url: elem.src, + type: "GET", + dataType: "script", + async: false, + global: false, + "throws": true + }); + } else { + jQuery.error("no ajax"); + } + } else { + jQuery.globalEval((elem.text || elem.textContent || elem.innerHTML || "").replace(rcleanScript, "")); + } + + if (elem.parentNode) { + elem.parentNode.removeChild(elem); + } + }); + } + } + + return this; + } + }); + + function findOrAppend(elem, tag) { + return elem.getElementsByTagName(tag)[0] || elem.appendChild(elem.ownerDocument.createElement(tag)); + } + + function cloneCopyEvent(src, dest) { + if (dest.nodeType !== 1 || !jQuery.hasData(src)) { + return; + } + + var type, + i, + l, + oldData = jQuery._data(src), + curData = jQuery._data(dest, oldData), + events = oldData.events; + + if (events) { + delete curData.handle; + curData.events = {}; + + for (type in events) { + for (i = 0, l = events[type].length; i < l; i++) { + jQuery.event.add(dest, type, events[type][i]); + } + } + } // make the cloned public data object a copy from the original + + + if (curData.data) { + curData.data = jQuery.extend({}, curData.data); + } + } + + function cloneFixAttributes(src, dest) { + var nodeName; // We do not need to do anything for non-Elements + + if (dest.nodeType !== 1) { + return; + } // clearAttributes removes the attributes, which we don't want, + // but also removes the attachEvent events, which we *do* want + + + if (dest.clearAttributes) { + dest.clearAttributes(); + } // mergeAttributes, in contrast, only merges back on the + // original attributes, not the events + + + if (dest.mergeAttributes) { + dest.mergeAttributes(src); + } + + nodeName = dest.nodeName.toLowerCase(); + + if (nodeName === "object") { + // IE6-10 improperly clones children of object elements using classid. + // IE10 throws NoModificationAllowedError if parent is null, #12132. + if (dest.parentNode) { + dest.outerHTML = src.outerHTML; + } // This path appears unavoidable for IE9. When cloning an object + // element in IE9, the outerHTML strategy above is not sufficient. + // If the src has innerHTML and the destination does not, + // copy the src.innerHTML into the dest.innerHTML. #10324 + + + if (jQuery.support.html5Clone && src.innerHTML && !jQuery.trim(dest.innerHTML)) { + dest.innerHTML = src.innerHTML; + } + } else if (nodeName === "input" && rcheckableType.test(src.type)) { + // IE6-8 fails to persist the checked state of a cloned checkbox + // or radio button. Worse, IE6-7 fail to give the cloned element + // a checked appearance if the defaultChecked value isn't also set + dest.defaultChecked = dest.checked = src.checked; // IE6-7 get confused and end up setting the value of a cloned + // checkbox/radio button to an empty string instead of "on" + + if (dest.value !== src.value) { + dest.value = src.value; + } // IE6-8 fails to return the selected option to the default selected + // state when cloning options + + } else if (nodeName === "option") { + dest.selected = src.defaultSelected; // IE6-8 fails to set the defaultValue to the correct value when + // cloning other types of input fields + } else if (nodeName === "input" || nodeName === "textarea") { + dest.defaultValue = src.defaultValue; // IE blanks contents when cloning scripts + } else if (nodeName === "script" && dest.text !== src.text) { + dest.text = src.text; + } // Event data gets referenced instead of copied if the expando + // gets copied too + + + dest.removeAttribute(jQuery.expando); + } + + jQuery.buildFragment = function (args, context, scripts) { + var fragment, + cacheable, + cachehit, + first = args[0]; // Set context from what may come in as undefined or a jQuery collection or a node + // Updated to fix #12266 where accessing context[0] could throw an exception in IE9/10 & + // also doubles as fix for #8950 where plain objects caused createDocumentFragment exception + + context = context || document; + context = !context.nodeType && context[0] || context; + context = context.ownerDocument || context; // Only cache "small" (1/2 KB) HTML strings that are associated with the main document + // Cloning options loses the selected state, so don't cache them + // IE 6 doesn't like it when you put or elements in a fragment + // Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache + // Lastly, IE6,7,8 will not correctly reuse cached fragments that were created from unknown elems #10501 + + if (args.length === 1 && typeof first === "string" && first.length < 512 && context === document && first.charAt(0) === "<" && !rnocache.test(first) && (jQuery.support.checkClone || !rchecked.test(first)) && (jQuery.support.html5Clone || !rnoshimcache.test(first))) { + // Mark cacheable and look for a hit + cacheable = true; + fragment = jQuery.fragments[first]; + cachehit = fragment !== undefined; + } + + if (!fragment) { + fragment = context.createDocumentFragment(); + jQuery.clean(args, context, fragment, scripts); // Update the cache, but only store false + // unless this is a second parsing of the same content + + if (cacheable) { + jQuery.fragments[first] = cachehit && fragment; + } + } + + return { + fragment: fragment, + cacheable: cacheable + }; + }; + + jQuery.fragments = {}; + jQuery.each({ + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" + }, function (name, original) { + jQuery.fn[name] = function (selector) { + var elems, + i = 0, + ret = [], + insert = jQuery(selector), + l = insert.length, + parent = this.length === 1 && this[0].parentNode; + + if ((parent == null || parent && parent.nodeType === 11 && parent.childNodes.length === 1) && l === 1) { + insert[original](this[0]); + return this; + } else { + for (; i < l; i++) { + elems = (i > 0 ? this.clone(true) : this).get(); + jQuery(insert[i])[original](elems); + ret = ret.concat(elems); + } + + return this.pushStack(ret, name, insert.selector); + } + }; + }); + + function getAll(elem) { + if (typeof elem.getElementsByTagName !== "undefined") { + return elem.getElementsByTagName("*"); + } else if (typeof elem.querySelectorAll !== "undefined") { + return elem.querySelectorAll("*"); + } else { + return []; + } + } // Used in clean, fixes the defaultChecked property + + + function fixDefaultChecked(elem) { + if (rcheckableType.test(elem.type)) { + elem.defaultChecked = elem.checked; + } + } + + jQuery.extend({ + clone: function clone(elem, dataAndEvents, deepDataAndEvents) { + var srcElements, destElements, i, clone; + + if (jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test("<" + elem.nodeName + ">")) { + clone = elem.cloneNode(true); // IE<=8 does not properly clone detached, unknown element nodes + } else { + fragmentDiv.innerHTML = elem.outerHTML; + fragmentDiv.removeChild(clone = fragmentDiv.firstChild); + } + + if ((!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) && (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem)) { + // IE copies events bound via attachEvent when using cloneNode. + // Calling detachEvent on the clone will also remove the events + // from the original. In order to get around this, we use some + // proprietary methods to clear the events. Thanks to MooTools + // guys for this hotness. + cloneFixAttributes(elem, clone); // Using Sizzle here is crazy slow, so we use getElementsByTagName instead + + srcElements = getAll(elem); + destElements = getAll(clone); // Weird iteration because IE will replace the length property + // with an element if you are cloning the body and one of the + // elements on the page has a name or id of "length" + + for (i = 0; srcElements[i]; ++i) { + // Ensure that the destination node is not null; Fixes #9587 + if (destElements[i]) { + cloneFixAttributes(srcElements[i], destElements[i]); + } + } + } // Copy the events from the original to the clone + + + if (dataAndEvents) { + cloneCopyEvent(elem, clone); + + if (deepDataAndEvents) { + srcElements = getAll(elem); + destElements = getAll(clone); + + for (i = 0; srcElements[i]; ++i) { + cloneCopyEvent(srcElements[i], destElements[i]); + } + } + } + + srcElements = destElements = null; // Return the cloned set + + return clone; + }, + clean: function clean(elems, context, fragment, scripts) { + var i, + j, + elem, + tag, + wrap, + depth, + div, + hasBody, + tbody, + len, + handleScript, + jsTags, + safe = context === document && safeFragment, + ret = []; // Ensure that context is a document + + if (!context || typeof context.createDocumentFragment === "undefined") { + context = document; + } // Use the already-created safe fragment if context permits + + + for (i = 0; (elem = elems[i]) != null; i++) { + if (typeof elem === "number") { + elem += ""; + } + + if (!elem) { + continue; + } // Convert html string into DOM nodes + + + if (typeof elem === "string") { + if (!rhtml.test(elem)) { + elem = context.createTextNode(elem); + } else { + // Ensure a safe container in which to render the html + safe = safe || createSafeFragment(context); + div = context.createElement("div"); + safe.appendChild(div); // Fix "XHTML"-style tags in all browsers + + elem = elem.replace(rxhtmlTag, "<$1>"); // Go to html and back, then peel off extra wrappers + + tag = (rtagName.exec(elem) || ["", ""])[1].toLowerCase(); + wrap = wrapMap[tag] || wrapMap._default; + depth = wrap[0]; + div.innerHTML = wrap[1] + elem + wrap[2]; // Move to the right depth + + while (depth--) { + div = div.lastChild; + } // Remove IE's autoinserted from table fragments + + + if (!jQuery.support.tbody) { + // String was a , *may* have spurious + hasBody = rtbody.test(elem); + tbody = tag === "table" && !hasBody ? div.firstChild && div.firstChild.childNodes : // String was a bare or + wrap[1] === "
    " && !hasBody ? div.childNodes : []; + + for (j = tbody.length - 1; j >= 0; --j) { + if (jQuery.nodeName(tbody[j], "tbody") && !tbody[j].childNodes.length) { + tbody[j].parentNode.removeChild(tbody[j]); + } + } + } // IE completely kills leading whitespace when innerHTML is used + + + if (!jQuery.support.leadingWhitespace && rleadingWhitespace.test(elem)) { + div.insertBefore(context.createTextNode(rleadingWhitespace.exec(elem)[0]), div.firstChild); + } + + elem = div.childNodes; // Take out of fragment container (we need a fresh div each time) + + div.parentNode.removeChild(div); + } + } + + if (elem.nodeType) { + ret.push(elem); + } else { + jQuery.merge(ret, elem); + } + } // Fix #11356: Clear elements from safeFragment + + + if (div) { + elem = div = safe = null; + } // Reset defaultChecked for any radios and checkboxes + // about to be appended to the DOM in IE 6/7 (#8060) + + + if (!jQuery.support.appendChecked) { + for (i = 0; (elem = ret[i]) != null; i++) { + if (jQuery.nodeName(elem, "input")) { + fixDefaultChecked(elem); + } else if (typeof elem.getElementsByTagName !== "undefined") { + jQuery.grep(elem.getElementsByTagName("input"), fixDefaultChecked); + } + } + } // Append elements to a provided document fragment + + + if (fragment) { + // Special handling of each script element + handleScript = function handleScript(elem) { + // Check if we consider it executable + if (!elem.type || rscriptType.test(elem.type)) { + // Detach the script and store it in the scripts array (if provided) or the fragment + // Return truthy to indicate that it has been handled + return scripts ? scripts.push(elem.parentNode ? elem.parentNode.removeChild(elem) : elem) : fragment.appendChild(elem); + } + }; + + for (i = 0; (elem = ret[i]) != null; i++) { + // Check if we're done after handling an executable script + if (!(jQuery.nodeName(elem, "script") && handleScript(elem))) { + // Append to fragment and handle embedded scripts + fragment.appendChild(elem); + + if (typeof elem.getElementsByTagName !== "undefined") { + // handleScript alters the DOM, so use jQuery.merge to ensure snapshot iteration + jsTags = jQuery.grep(jQuery.merge([], elem.getElementsByTagName("script")), handleScript); // Splice the scripts into ret after their former ancestor and advance our index beyond them + + ret.splice.apply(ret, [i + 1, 0].concat(jsTags)); + i += jsTags.length; + } + } + } + } + + return ret; + }, + cleanData: function cleanData(elems, + /* internal */ + acceptData) { + var data, + id, + elem, + type, + i = 0, + internalKey = jQuery.expando, + cache = jQuery.cache, + deleteExpando = jQuery.support.deleteExpando, + special = jQuery.event.special; + + for (; (elem = elems[i]) != null; i++) { + if (acceptData || jQuery.acceptData(elem)) { + id = elem[internalKey]; + data = id && cache[id]; + + if (data) { + if (data.events) { + for (type in data.events) { + if (special[type]) { + jQuery.event.remove(elem, type); // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent(elem, type, data.handle); + } + } + } // Remove cache only if it was not already removed by jQuery.event.remove + + + if (cache[id]) { + delete cache[id]; // IE does not allow us to delete expando properties from nodes, + // nor does it have a removeAttribute function on Document nodes; + // we must handle all of these cases + + if (deleteExpando) { + delete elem[internalKey]; + } else if (elem.removeAttribute) { + elem.removeAttribute(internalKey); + } else { + elem[internalKey] = null; + } + + jQuery.deletedIds.push(id); + } + } + } + } + } + }); // Limit scope pollution from any deprecated API + + (function () { + var matched, browser; // Use of jQuery.browser is frowned upon. + // More details: http://api.jquery.com/jQuery.browser + // jQuery.uaMatch maintained for back-compat + + jQuery.uaMatch = function (ua) { + ua = ua.toLowerCase(); + var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || /(webkit)[ \/]([\w.]+)/.exec(ua) || /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || /(msie) ([\w.]+)/.exec(ua) || ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || []; + return { + browser: match[1] || "", + version: match[2] || "0" + }; + }; + + matched = jQuery.uaMatch(navigator.userAgent); + browser = {}; + + if (matched.browser) { + browser[matched.browser] = true; + browser.version = matched.version; + } // Chrome is Webkit, but Webkit is also Safari. + + + if (browser.chrome) { + browser.webkit = true; + } else if (browser.webkit) { + browser.safari = true; + } + + jQuery.browser = browser; + + jQuery.sub = function () { + function jQuerySub(selector, context) { + return new jQuerySub.fn.init(selector, context); + } + + jQuery.extend(true, jQuerySub, this); + jQuerySub.superclass = this; + jQuerySub.fn = jQuerySub.prototype = this(); + jQuerySub.fn.constructor = jQuerySub; + jQuerySub.sub = this.sub; + + jQuerySub.fn.init = function init(selector, context) { + if (context && context instanceof jQuery && !(context instanceof jQuerySub)) { + context = jQuerySub(context); + } + + return jQuery.fn.init.call(this, selector, context, rootjQuerySub); + }; + + jQuerySub.fn.init.prototype = jQuerySub.fn; + var rootjQuerySub = jQuerySub(document); + return jQuerySub; + }; + })(); + + var curCSS, + iframe, + iframeDoc, + ralpha = /alpha\([^)]*\)/i, + ropacity = /opacity=([^)]*)/, + rposition = /^(top|right|bottom|left)$/, + // swappable if display is none or starts with table except "table", "table-cell", or "table-caption" + // see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display + rdisplayswap = /^(none|table(?!-c[ea]).+)/, + rmargin = /^margin/, + rnumsplit = new RegExp("^(" + core_pnum + ")(.*)$", "i"), + rnumnonpx = new RegExp("^(" + core_pnum + ")(?!px)[a-z%]+$", "i"), + rrelNum = new RegExp("^([-+])=(" + core_pnum + ")", "i"), + elemdisplay = {}, + cssShow = { + position: "absolute", + visibility: "hidden", + display: "block" + }, + cssNormalTransform = { + letterSpacing: 0, + fontWeight: 400 + }, + cssExpand = ["Top", "Right", "Bottom", "Left"], + cssPrefixes = ["Webkit", "O", "Moz", "ms"], + eventsToggle = jQuery.fn.toggle; // return a css property mapped to a potentially vendor prefixed property + + function vendorPropName(style, name) { + // shortcut for names that are not vendor prefixed + if (name in style) { + return name; + } // check for vendor prefixed names + + + var capName = name.charAt(0).toUpperCase() + name.slice(1), + origName = name, + i = cssPrefixes.length; + + while (i--) { + name = cssPrefixes[i] + capName; + + if (name in style) { + return name; + } + } + + return origName; + } + + function isHidden(elem, el) { + elem = el || elem; + return jQuery.css(elem, "display") === "none" || !jQuery.contains(elem.ownerDocument, elem); + } + + function showHide(elements, show) { + var elem, + display, + values = [], + index = 0, + length = elements.length; + + for (; index < length; index++) { + elem = elements[index]; + + if (!elem.style) { + continue; + } + + values[index] = jQuery._data(elem, "olddisplay"); + + if (show) { + // Reset the inline display of this element to learn if it is + // being hidden by cascaded rules or not + if (!values[index] && elem.style.display === "none") { + elem.style.display = ""; + } // Set elements which have been overridden with display: none + // in a stylesheet to whatever the default browser style is + // for such an element + + + if (elem.style.display === "" && isHidden(elem)) { + values[index] = jQuery._data(elem, "olddisplay", css_defaultDisplay(elem.nodeName)); + } + } else { + display = curCSS(elem, "display"); + + if (!values[index] && display !== "none") { + jQuery._data(elem, "olddisplay", display); + } + } + } // Set the display of most of the elements in a second loop + // to avoid the constant reflow + + + for (index = 0; index < length; index++) { + elem = elements[index]; + + if (!elem.style) { + continue; + } + + if (!show || elem.style.display === "none" || elem.style.display === "") { + elem.style.display = show ? values[index] || "" : "none"; + } + } + + return elements; + } + + jQuery.fn.extend({ + css: function css(name, value) { + return jQuery.access(this, function (elem, name, value) { + return value !== undefined ? jQuery.style(elem, name, value) : jQuery.css(elem, name); + }, name, value, arguments.length > 1); + }, + show: function show() { + return showHide(this, true); + }, + hide: function hide() { + return showHide(this); + }, + toggle: function toggle(state, fn2) { + var bool = typeof state === "boolean"; + + if (jQuery.isFunction(state) && jQuery.isFunction(fn2)) { + return eventsToggle.apply(this, arguments); + } + + return this.each(function () { + if (bool ? state : isHidden(this)) { + jQuery(this).show(); + } else { + jQuery(this).hide(); + } + }); + } + }); + jQuery.extend({ + // Add in style property hooks for overriding the default + // behavior of getting and setting a style property + cssHooks: { + opacity: { + get: function get(elem, computed) { + if (computed) { + // We should always get a number back from opacity + var ret = curCSS(elem, "opacity"); + return ret === "" ? "1" : ret; + } + } + } + }, + // Exclude the following css properties to add px + cssNumber: { + "fillOpacity": true, + "fontWeight": true, + "lineHeight": true, + "opacity": true, + "orphans": true, + "widows": true, + "zIndex": true, + "zoom": true + }, + // Add in properties whose names you wish to fix before + // setting or getting the value + cssProps: { + // normalize float css property + "float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat" + }, + // Get and set the style property on a DOM Node + style: function style(elem, name, value, extra) { + // Don't set styles on text and comment nodes + if (!elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style) { + return; + } // Make sure that we're working with the right name + + + var ret, + type, + hooks, + origName = jQuery.camelCase(name), + style = elem.style; + name = jQuery.cssProps[origName] || (jQuery.cssProps[origName] = vendorPropName(style, origName)); // gets hook for the prefixed version + // followed by the unprefixed version + + hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName]; // Check if we're setting a value + + if (value !== undefined) { + type = _typeof(value); // convert relative number strings (+= or -=) to relative numbers. #7345 + + if (type === "string" && (ret = rrelNum.exec(value))) { + value = (ret[1] + 1) * ret[2] + parseFloat(jQuery.css(elem, name)); // Fixes bug #9237 + + type = "number"; + } // Make sure that NaN and null values aren't set. See: #7116 + + + if (value == null || type === "number" && isNaN(value)) { + return; + } // If a number was passed in, add 'px' to the (except for certain CSS properties) + + + if (type === "number" && !jQuery.cssNumber[origName]) { + value += "px"; + } // If a hook was provided, use that value, otherwise just set the specified value + + + if (!hooks || !("set" in hooks) || (value = hooks.set(elem, value, extra)) !== undefined) { + // Wrapped to prevent IE from throwing errors when 'invalid' values are provided + // Fixes bug #5509 + try { + style[name] = value; + } catch (e) {} + } + } else { + // If a hook was provided get the non-computed value from there + if (hooks && "get" in hooks && (ret = hooks.get(elem, false, extra)) !== undefined) { + return ret; + } // Otherwise just get the value from the style object + + + return style[name]; + } + }, + css: function css(elem, name, numeric, extra) { + var val, + num, + hooks, + origName = jQuery.camelCase(name); // Make sure that we're working with the right name + + name = jQuery.cssProps[origName] || (jQuery.cssProps[origName] = vendorPropName(elem.style, origName)); // gets hook for the prefixed version + // followed by the unprefixed version + + hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName]; // If a hook was provided get the computed value from there + + if (hooks && "get" in hooks) { + val = hooks.get(elem, true, extra); + } // Otherwise, if a way to get the computed value exists, use that + + + if (val === undefined) { + val = curCSS(elem, name); + } //convert "normal" to computed value + + + if (val === "normal" && name in cssNormalTransform) { + val = cssNormalTransform[name]; + } // Return, converting to number if forced or a qualifier was provided and val looks numeric + + + if (numeric || extra !== undefined) { + num = parseFloat(val); + return numeric || jQuery.isNumeric(num) ? num || 0 : val; + } + + return val; + }, + // A method for quickly swapping in/out CSS properties to get correct calculations + swap: function swap(elem, options, callback) { + var ret, + name, + old = {}; // Remember the old values, and insert the new ones + + for (name in options) { + old[name] = elem.style[name]; + elem.style[name] = options[name]; + } + + ret = callback.call(elem); // Revert the old values + + for (name in options) { + elem.style[name] = old[name]; + } + + return ret; + } + }); // NOTE: To any future maintainer, we've window.getComputedStyle + // because jsdom on node.js will break without it. + + if (window.getComputedStyle) { + curCSS = function curCSS(elem, name) { + var ret, + width, + minWidth, + maxWidth, + computed = window.getComputedStyle(elem, null), + style = elem.style; + + if (computed) { + ret = computed[name]; + + if (ret === "" && !jQuery.contains(elem.ownerDocument, elem)) { + ret = jQuery.style(elem, name); + } // A tribute to the "awesome hack by Dean Edwards" + // Chrome < 17 and Safari 5.0 uses "computed value" instead of "used value" for margin-right + // Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels + // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values + + + if (rnumnonpx.test(ret) && rmargin.test(name)) { + width = style.width; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + + return ret; + }; + } else if (document.documentElement.currentStyle) { + curCSS = function curCSS(elem, name) { + var left, + rsLeft, + ret = elem.currentStyle && elem.currentStyle[name], + style = elem.style; // Avoid setting ret to empty string here + // so we don't default to auto + + if (ret == null && style && style[name]) { + ret = style[name]; + } // From the awesome hack by Dean Edwards + // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291 + // If we're not dealing with a regular pixel number + // but a number that has a weird ending, we need to convert it to pixels + // but not position css attributes, as those are proportional to the parent element instead + // and we can't measure the parent instead because it might trigger a "stacking dolls" problem + + + if (rnumnonpx.test(ret) && !rposition.test(name)) { + // Remember the original values + left = style.left; + rsLeft = elem.runtimeStyle && elem.runtimeStyle.left; // Put in the new values to get a computed value out + + if (rsLeft) { + elem.runtimeStyle.left = elem.currentStyle.left; + } + + style.left = name === "fontSize" ? "1em" : ret; + ret = style.pixelLeft + "px"; // Revert the changed values + + style.left = left; + + if (rsLeft) { + elem.runtimeStyle.left = rsLeft; + } + } + + return ret === "" ? "auto" : ret; + }; + } + + function setPositiveNumber(elem, value, subtract) { + var matches = rnumsplit.exec(value); + return matches ? Math.max(0, matches[1] - (subtract || 0)) + (matches[2] || "px") : value; + } + + function augmentWidthOrHeight(elem, name, extra, isBorderBox) { + var i = extra === (isBorderBox ? "border" : "content") ? // If we already have the right measurement, avoid augmentation + 4 : // Otherwise initialize for horizontal or vertical properties + name === "width" ? 1 : 0, + val = 0; + + for (; i < 4; i += 2) { + // both box models exclude margin, so add it if we want it + if (extra === "margin") { + // we use jQuery.css instead of curCSS here + // because of the reliableMarginRight CSS hook! + val += jQuery.css(elem, extra + cssExpand[i], true); + } // From this point on we use curCSS for maximum performance (relevant in animations) + + + if (isBorderBox) { + // border-box includes padding, so remove it if we want content + if (extra === "content") { + val -= parseFloat(curCSS(elem, "padding" + cssExpand[i])) || 0; + } // at this point, extra isn't border nor margin, so remove border + + + if (extra !== "margin") { + val -= parseFloat(curCSS(elem, "border" + cssExpand[i] + "Width")) || 0; + } + } else { + // at this point, extra isn't content, so add padding + val += parseFloat(curCSS(elem, "padding" + cssExpand[i])) || 0; // at this point, extra isn't content nor padding, so add border + + if (extra !== "padding") { + val += parseFloat(curCSS(elem, "border" + cssExpand[i] + "Width")) || 0; + } + } + } + + return val; + } + + function getWidthOrHeight(elem, name, extra) { + // Start with offset property, which is equivalent to the border-box value + var val = name === "width" ? elem.offsetWidth : elem.offsetHeight, + valueIsBorderBox = true, + isBorderBox = jQuery.support.boxSizing && jQuery.css(elem, "boxSizing") === "border-box"; // some non-html elements return undefined for offsetWidth, so check for null/undefined + // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285 + // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668 + + if (val <= 0 || val == null) { + // Fall back to computed then uncomputed css if necessary + val = curCSS(elem, name); + + if (val < 0 || val == null) { + val = elem.style[name]; + } // Computed unit is not pixels. Stop here and return. + + + if (rnumnonpx.test(val)) { + return val; + } // we need the check for style in case a browser which returns unreliable values + // for getComputedStyle silently falls back to the reliable elem.style + + + valueIsBorderBox = isBorderBox && (jQuery.support.boxSizingReliable || val === elem.style[name]); // Normalize "", auto, and prepare for extra + + val = parseFloat(val) || 0; + } // use the active box-sizing model to add/subtract irrelevant styles + + + return val + augmentWidthOrHeight(elem, name, extra || (isBorderBox ? "border" : "content"), valueIsBorderBox) + "px"; + } // Try to determine the default display value of an element + + + function css_defaultDisplay(nodeName) { + if (elemdisplay[nodeName]) { + return elemdisplay[nodeName]; + } + + var elem = jQuery("<" + nodeName + ">").appendTo(document.body), + display = elem.css("display"); + elem.remove(); // If the simple way fails, + // get element's real default display by attaching it to a temp iframe + + if (display === "none" || display === "") { + // Use the already-created iframe if possible + iframe = document.body.appendChild(iframe || jQuery.extend(document.createElement("iframe"), { + frameBorder: 0, + width: 0, + height: 0 + })); // Create a cacheable copy of the iframe document on first call. + // IE and Opera will allow us to reuse the iframeDoc without re-writing the fake HTML + // document to it; WebKit & Firefox won't allow reusing the iframe document. + + if (!iframeDoc || !iframe.createElement) { + iframeDoc = (iframe.contentWindow || iframe.contentDocument).document; + iframeDoc.write(""); + iframeDoc.close(); + } + + elem = iframeDoc.body.appendChild(iframeDoc.createElement(nodeName)); + display = curCSS(elem, "display"); + document.body.removeChild(iframe); + } // Store the correct default display + + + elemdisplay[nodeName] = display; + return display; + } + + jQuery.each(["height", "width"], function (i, name) { + jQuery.cssHooks[name] = { + get: function get(elem, computed, extra) { + if (computed) { + // certain elements can have dimension info if we invisibly show them + // however, it must have a current display style that would benefit from this + if (elem.offsetWidth === 0 && rdisplayswap.test(curCSS(elem, "display"))) { + return jQuery.swap(elem, cssShow, function () { + return getWidthOrHeight(elem, name, extra); + }); + } else { + return getWidthOrHeight(elem, name, extra); + } + } + }, + set: function set(elem, value, extra) { + return setPositiveNumber(elem, value, extra ? augmentWidthOrHeight(elem, name, extra, jQuery.support.boxSizing && jQuery.css(elem, "boxSizing") === "border-box") : 0); + } + }; + }); + + if (!jQuery.support.opacity) { + jQuery.cssHooks.opacity = { + get: function get(elem, computed) { + // IE uses filters for opacity + return ropacity.test((computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "") ? 0.01 * parseFloat(RegExp.$1) + "" : computed ? "1" : ""; + }, + set: function set(elem, value) { + var style = elem.style, + currentStyle = elem.currentStyle, + opacity = jQuery.isNumeric(value) ? "alpha(opacity=" + value * 100 + ")" : "", + filter = currentStyle && currentStyle.filter || style.filter || ""; // IE has trouble with opacity if it does not have layout + // Force it by setting the zoom level + + style.zoom = 1; // if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652 + + if (value >= 1 && jQuery.trim(filter.replace(ralpha, "")) === "" && style.removeAttribute) { + // Setting style.filter to null, "" & " " still leave "filter:" in the cssText + // if "filter:" is present at all, clearType is disabled, we want to avoid this + // style.removeAttribute is IE Only, but so apparently is this code path... + style.removeAttribute("filter"); // if there there is no filter style applied in a css rule, we are done + + if (currentStyle && !currentStyle.filter) { + return; + } + } // otherwise, set new filter values + + + style.filter = ralpha.test(filter) ? filter.replace(ralpha, opacity) : filter + " " + opacity; + } + }; + } // These hooks cannot be added until DOM ready because the support test + // for it is not run until after DOM ready + + + jQuery(function () { + if (!jQuery.support.reliableMarginRight) { + jQuery.cssHooks.marginRight = { + get: function get(elem, computed) { + // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right + // Work around by temporarily setting element display to inline-block + return jQuery.swap(elem, { + "display": "inline-block" + }, function () { + if (computed) { + return curCSS(elem, "marginRight"); + } + }); + } + }; + } // Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084 + // getComputedStyle returns percent when specified for top/left/bottom/right + // rather than make the css module depend on the offset module, we just check for it here + + + if (!jQuery.support.pixelPosition && jQuery.fn.position) { + jQuery.each(["top", "left"], function (i, prop) { + jQuery.cssHooks[prop] = { + get: function get(elem, computed) { + if (computed) { + var ret = curCSS(elem, prop); // if curCSS returns percentage, fallback to offset + + return rnumnonpx.test(ret) ? jQuery(elem).position()[prop] + "px" : ret; + } + } + }; + }); + } + }); + + if (jQuery.expr && jQuery.expr.filters) { + jQuery.expr.filters.hidden = function (elem) { + return elem.offsetWidth === 0 && elem.offsetHeight === 0 || !jQuery.support.reliableHiddenOffsets && (elem.style && elem.style.display || curCSS(elem, "display")) === "none"; + }; + + jQuery.expr.filters.visible = function (elem) { + return !jQuery.expr.filters.hidden(elem); + }; + } // These hooks are used by animate to expand properties + + + jQuery.each({ + margin: "", + padding: "", + border: "Width" + }, function (prefix, suffix) { + jQuery.cssHooks[prefix + suffix] = { + expand: function expand(value) { + var i, + // assumes a single number if not a string + parts = typeof value === "string" ? value.split(" ") : [value], + expanded = {}; + + for (i = 0; i < 4; i++) { + expanded[prefix + cssExpand[i] + suffix] = parts[i] || parts[i - 2] || parts[0]; + } + + return expanded; + } + }; + + if (!rmargin.test(prefix)) { + jQuery.cssHooks[prefix + suffix].set = setPositiveNumber; + } + }); + var r20 = /%20/g, + rbracket = /\[\]$/, + rCRLF = /\r?\n/g, + rinput = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i, + rselectTextarea = /^(?:select|textarea)/i; + jQuery.fn.extend({ + serialize: function serialize() { + return jQuery.param(this.serializeArray()); + }, + serializeArray: function serializeArray() { + return this.map(function () { + return this.elements ? jQuery.makeArray(this.elements) : this; + }).filter(function () { + return this.name && !this.disabled && (this.checked || rselectTextarea.test(this.nodeName) || rinput.test(this.type)); + }).map(function (i, elem) { + var val = jQuery(this).val(); + return val == null ? null : jQuery.isArray(val) ? jQuery.map(val, function (val, i) { + return { + name: elem.name, + value: val.replace(rCRLF, "\r\n") + }; + }) : { + name: elem.name, + value: val.replace(rCRLF, "\r\n") + }; + }).get(); + } + }); //Serialize an array of form elements or a set of + //key/values into a query string + + jQuery.param = function (a, traditional) { + var prefix, + s = [], + add = function add(key, value) { + // If value is a function, invoke it and return its value + value = jQuery.isFunction(value) ? value() : value == null ? "" : value; + s[s.length] = encodeURIComponent(key) + "=" + encodeURIComponent(value); + }; // Set traditional to true for jQuery <= 1.3.2 behavior. + + + if (traditional === undefined) { + traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional; + } // If an array was passed in, assume that it is an array of form elements. + + + if (jQuery.isArray(a) || a.jquery && !jQuery.isPlainObject(a)) { + // Serialize the form elements + jQuery.each(a, function () { + add(this.name, this.value); + }); + } else { + // If traditional, encode the "old" way (the way 1.3.2 or older + // did it), otherwise encode params recursively. + for (prefix in a) { + buildParams(prefix, a[prefix], traditional, add); + } + } // Return the resulting serialization + + + return s.join("&").replace(r20, "+"); + }; + + function buildParams(prefix, obj, traditional, add) { + var name; + + if (jQuery.isArray(obj)) { + // Serialize array item. + jQuery.each(obj, function (i, v) { + if (traditional || rbracket.test(prefix)) { + // Treat each array item as a scalar. + add(prefix, v); + } else { + // If array item is non-scalar (array or object), encode its + // numeric index to resolve deserialization ambiguity issues. + // Note that rack (as of 1.0.0) can't currently deserialize + // nested arrays properly, and attempting to do so may cause + // a server error. Possible fixes are to modify rack's + // deserialization algorithm or to provide an option or flag + // to force array serialization to be shallow. + buildParams(prefix + "[" + (_typeof(v) === "object" ? i : "") + "]", v, traditional, add); + } + }); + } else if (!traditional && jQuery.type(obj) === "object") { + // Serialize object item. + for (name in obj) { + buildParams(prefix + "[" + name + "]", obj[name], traditional, add); + } + } else { + // Serialize scalar item. + add(prefix, obj); + } + } + + var // Document location + ajaxLocation, + // Document location segments + ajaxLocParts, + rhash = /#.*$/, + rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, + // IE leaves an \r character at EOL + // #7653, #8125, #8152: local protocol detection + rlocalProtocol = /^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/, + rnoContent = /^(?:GET|HEAD)$/, + rprotocol = /^\/\//, + rquery = /\?/, + rscript = /)<[^<]*)*<\/script>/gi, + rts = /([?&])_=[^&]*/, + rurl = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/, + // Keep a copy of the old load method + _load = jQuery.fn.load, + + /* Prefilters + * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) + * 2) These are called: + * - BEFORE asking for a transport + * - AFTER param serialization (s.data is a string if s.processData is true) + * 3) key is the dataType + * 4) the catchall symbol "*" can be used + * 5) execution will start with transport dataType and THEN continue down to "*" if needed + */ + prefilters = {}, + + /* Transports bindings + * 1) key is the dataType + * 2) the catchall symbol "*" can be used + * 3) selection will start with transport dataType and THEN go to "*" if needed + */ + transports = {}, + // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression + allTypes = ["*/"] + ["*"]; // #8138, IE may throw an exception when accessing + // a field from window.location if document.domain has been set + + try { + ajaxLocation = location.href; + } catch (e) { + // Use the href attribute of an A element + // since IE will modify it given document.location + ajaxLocation = document.createElement("a"); + ajaxLocation.href = ""; + ajaxLocation = ajaxLocation.href; + } // Segment location into parts + + + ajaxLocParts = rurl.exec(ajaxLocation.toLowerCase()) || []; // Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport + + function addToPrefiltersOrTransports(structure) { + // dataTypeExpression is optional and defaults to "*" + return function (dataTypeExpression, func) { + if (typeof dataTypeExpression !== "string") { + func = dataTypeExpression; + dataTypeExpression = "*"; + } + + var dataType, + list, + placeBefore, + dataTypes = dataTypeExpression.toLowerCase().split(core_rspace), + i = 0, + length = dataTypes.length; + + if (jQuery.isFunction(func)) { + // For each dataType in the dataTypeExpression + for (; i < length; i++) { + dataType = dataTypes[i]; // We control if we're asked to add before + // any existing element + + placeBefore = /^\+/.test(dataType); + + if (placeBefore) { + dataType = dataType.substr(1) || "*"; + } + + list = structure[dataType] = structure[dataType] || []; // then we add to the structure accordingly + + list[placeBefore ? "unshift" : "push"](func); + } + } + }; + } // Base inspection function for prefilters and transports + + + function inspectPrefiltersOrTransports(structure, options, originalOptions, jqXHR, dataType + /* internal */ + , inspected + /* internal */ + ) { + dataType = dataType || options.dataTypes[0]; + inspected = inspected || {}; + inspected[dataType] = true; + var selection, + list = structure[dataType], + i = 0, + length = list ? list.length : 0, + executeOnly = structure === prefilters; + + for (; i < length && (executeOnly || !selection); i++) { + selection = list[i](options, originalOptions, jqXHR); // If we got redirected to another dataType + // we try there if executing only and not done already + + if (typeof selection === "string") { + if (!executeOnly || inspected[selection]) { + selection = undefined; + } else { + options.dataTypes.unshift(selection); + selection = inspectPrefiltersOrTransports(structure, options, originalOptions, jqXHR, selection, inspected); + } + } + } // If we're only executing or nothing was selected + // we try the catchall dataType if not done already + + + if ((executeOnly || !selection) && !inspected["*"]) { + selection = inspectPrefiltersOrTransports(structure, options, originalOptions, jqXHR, "*", inspected); + } // unnecessary when only executing (prefilters) + // but it'll be ignored by the caller in that case + + + return selection; + } // A special extend for ajax options + // that takes "flat" options (not to be deep extended) + // Fixes #9887 + + + function ajaxExtend(target, src) { + var key, + deep, + flatOptions = jQuery.ajaxSettings.flatOptions || {}; + + for (key in src) { + if (src[key] !== undefined) { + (flatOptions[key] ? target : deep || (deep = {}))[key] = src[key]; + } + } + + if (deep) { + jQuery.extend(true, target, deep); + } + } + + jQuery.fn.load = function (url, params, callback) { + if (typeof url !== "string" && _load) { + return _load.apply(this, arguments); + } // Don't do a request if no elements are being requested + + + if (!this.length) { + return this; + } + + var selector, + type, + response, + self = this, + off = url.indexOf(" "); + + if (off >= 0) { + selector = url.slice(off, url.length); + url = url.slice(0, off); + } // If it's a function + + + if (jQuery.isFunction(params)) { + // We assume that it's the callback + callback = params; + params = undefined; // Otherwise, build a param string + } else if (params && _typeof(params) === "object") { + type = "POST"; + } // Request the remote document + + + jQuery.ajax({ + url: url, + // if "type" variable is undefined, then "GET" method will be used + type: type, + dataType: "html", + data: params, + complete: function complete(jqXHR, status) { + if (callback) { + self.each(callback, response || [jqXHR.responseText, status, jqXHR]); + } + } + }).done(function (responseText) { + // Save response for use in complete callback + response = arguments; // See if a selector was specified + + self.html(selector ? // Create a dummy div to hold the results + jQuery("
    ") // inject the contents of the document in, removing the scripts + // to avoid any 'Permission Denied' errors in IE + .append(responseText.replace(rscript, "")) // Locate the specified elements + .find(selector) : // If not, just inject the full result + responseText); + }); + return this; + }; // Attach a bunch of functions for handling common AJAX events + + + jQuery.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), function (i, o) { + jQuery.fn[o] = function (f) { + return this.on(o, f); + }; + }); + jQuery.each(["get", "post"], function (i, method) { + jQuery[method] = function (url, data, callback, type) { + // shift arguments if data argument was omitted + if (jQuery.isFunction(data)) { + type = type || callback; + callback = data; + data = undefined; + } + + return jQuery.ajax({ + type: method, + url: url, + data: data, + success: callback, + dataType: type + }); + }; + }); + jQuery.extend({ + getScript: function getScript(url, callback) { + return jQuery.get(url, undefined, callback, "script"); + }, + getJSON: function getJSON(url, data, callback) { + return jQuery.get(url, data, callback, "json"); + }, + // Creates a full fledged settings object into target + // with both ajaxSettings and settings fields. + // If target is omitted, writes into ajaxSettings. + ajaxSetup: function ajaxSetup(target, settings) { + if (settings) { + // Building a settings object + ajaxExtend(target, jQuery.ajaxSettings); + } else { + // Extending ajaxSettings + settings = target; + target = jQuery.ajaxSettings; + } + + ajaxExtend(target, settings); + return target; + }, + ajaxSettings: { + url: ajaxLocation, + isLocal: rlocalProtocol.test(ajaxLocParts[1]), + global: true, + type: "GET", + contentType: "application/x-www-form-urlencoded; charset=UTF-8", + processData: true, + async: true, + + /* + timeout: 0, + data: null, + dataType: null, + username: null, + password: null, + cache: null, + throws: false, + traditional: false, + headers: {}, + */ + accepts: { + xml: "application/xml, text/xml", + html: "text/html", + text: "text/plain", + json: "application/json, text/javascript", + "*": allTypes + }, + contents: { + xml: /xml/, + html: /html/, + json: /json/ + }, + responseFields: { + xml: "responseXML", + text: "responseText" + }, + // List of data converters + // 1) key format is "source_type destination_type" (a single space in-between) + // 2) the catchall symbol "*" can be used for source_type + converters: { + // Convert anything to text + "* text": window.String, + // Text to html (true = no transformation) + "text html": true, + // Evaluate text as a json expression + "text json": jQuery.parseJSON, + // Parse text as xml + "text xml": jQuery.parseXML + }, + // For options that shouldn't be deep extended: + // you can add your own custom options here if + // and when you create one that shouldn't be + // deep extended (see ajaxExtend) + flatOptions: { + context: true, + url: true + } + }, + ajaxPrefilter: addToPrefiltersOrTransports(prefilters), + ajaxTransport: addToPrefiltersOrTransports(transports), + // Main method + ajax: function ajax(url, options) { + // If url is an object, simulate pre-1.5 signature + if (_typeof(url) === "object") { + options = url; + url = undefined; + } // Force options to be an object + + + options = options || {}; + var // ifModified key + ifModifiedKey, + // Response headers + responseHeadersString, + responseHeaders, + // transport + transport, + // timeout handle + timeoutTimer, + // Cross-domain detection vars + parts, + // To know if global events are to be dispatched + fireGlobals, + // Loop variable + i, + // Create the final options object + s = jQuery.ajaxSetup({}, options), + // Callbacks context + callbackContext = s.context || s, + // Context for global events + // It's the callbackContext if one was provided in the options + // and if it's a DOM node or a jQuery collection + globalEventContext = callbackContext !== s && (callbackContext.nodeType || callbackContext instanceof jQuery) ? jQuery(callbackContext) : jQuery.event, + // Deferreds + deferred = jQuery.Deferred(), + completeDeferred = jQuery.Callbacks("once memory"), + // Status-dependent callbacks + statusCode = s.statusCode || {}, + // Headers (they are sent all at once) + requestHeaders = {}, + requestHeadersNames = {}, + // The jqXHR state + state = 0, + // Default abort message + strAbort = "canceled", + // Fake xhr + jqXHR = { + readyState: 0, + // Caches the header + setRequestHeader: function setRequestHeader(name, value) { + if (!state) { + var lname = name.toLowerCase(); + name = requestHeadersNames[lname] = requestHeadersNames[lname] || name; + requestHeaders[name] = value; + } + + return this; + }, + // Raw string + getAllResponseHeaders: function getAllResponseHeaders() { + return state === 2 ? responseHeadersString : null; + }, + // Builds headers hashtable if needed + getResponseHeader: function getResponseHeader(key) { + var match; + + if (state === 2) { + if (!responseHeaders) { + responseHeaders = {}; + + while (match = rheaders.exec(responseHeadersString)) { + responseHeaders[match[1].toLowerCase()] = match[2]; + } + } + + match = responseHeaders[key.toLowerCase()]; + } + + return match === undefined ? null : match; + }, + // Overrides response content-type header + overrideMimeType: function overrideMimeType(type) { + if (!state) { + s.mimeType = type; + } + + return this; + }, + // Cancel the request + abort: function abort(statusText) { + statusText = statusText || strAbort; + + if (transport) { + transport.abort(statusText); + } + + done(0, statusText); + return this; + } + }; // Callback for when everything is done + // It is defined here because jslint complains if it is declared + // at the end of the function (which would be more logical and readable) + + function done(status, nativeStatusText, responses, headers) { + var isSuccess, + success, + error, + response, + modified, + statusText = nativeStatusText; // Called once + + if (state === 2) { + return; + } // State is "done" now + + + state = 2; // Clear timeout if it exists + + if (timeoutTimer) { + clearTimeout(timeoutTimer); + } // Dereference transport for early garbage collection + // (no matter how long the jqXHR object will be used) + + + transport = undefined; // Cache response headers + + responseHeadersString = headers || ""; // Set readyState + + jqXHR.readyState = status > 0 ? 4 : 0; // Get response data + + if (responses) { + response = ajaxHandleResponses(s, jqXHR, responses); + } // If successful, handle type chaining + + + if (status >= 200 && status < 300 || status === 304) { + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if (s.ifModified) { + modified = jqXHR.getResponseHeader("Last-Modified"); + + if (modified) { + jQuery.lastModified[ifModifiedKey] = modified; + } + + modified = jqXHR.getResponseHeader("Etag"); + + if (modified) { + jQuery.etag[ifModifiedKey] = modified; + } + } // If not modified + + + if (status === 304) { + statusText = "notmodified"; + isSuccess = true; // If we have data + } else { + isSuccess = ajaxConvert(s, response); + statusText = isSuccess.state; + success = isSuccess.data; + error = isSuccess.error; + isSuccess = !error; + } + } else { + // We extract error from statusText + // then normalize statusText and status for non-aborts + error = statusText; + + if (!statusText || status) { + statusText = "error"; + + if (status < 0) { + status = 0; + } + } + } // Set data for the fake xhr object + + + jqXHR.status = status; + jqXHR.statusText = "" + (nativeStatusText || statusText); // Success/Error + + if (isSuccess) { + deferred.resolveWith(callbackContext, [success, statusText, jqXHR]); + } else { + deferred.rejectWith(callbackContext, [jqXHR, statusText, error]); + } // Status-dependent callbacks + + + jqXHR.statusCode(statusCode); + statusCode = undefined; + + if (fireGlobals) { + globalEventContext.trigger("ajax" + (isSuccess ? "Success" : "Error"), [jqXHR, s, isSuccess ? success : error]); + } // Complete + + + completeDeferred.fireWith(callbackContext, [jqXHR, statusText]); + + if (fireGlobals) { + globalEventContext.trigger("ajaxComplete", [jqXHR, s]); // Handle the global AJAX counter + + if (! --jQuery.active) { + jQuery.event.trigger("ajaxStop"); + } + } + } // Attach deferreds + + + deferred.promise(jqXHR); + jqXHR.success = jqXHR.done; + jqXHR.error = jqXHR.fail; + jqXHR.complete = completeDeferred.add; // Status-dependent callbacks + + jqXHR.statusCode = function (map) { + if (map) { + var tmp; + + if (state < 2) { + for (tmp in map) { + statusCode[tmp] = [statusCode[tmp], map[tmp]]; + } + } else { + tmp = map[jqXHR.status]; + jqXHR.always(tmp); + } + } + + return this; + }; // Remove hash character (#7531: and string promotion) + // Add protocol if not provided (#5866: IE7 issue with protocol-less urls) + // We also use the url parameter if available + + + s.url = ((url || s.url) + "").replace(rhash, "").replace(rprotocol, ajaxLocParts[1] + "//"); // Extract dataTypes list + + s.dataTypes = jQuery.trim(s.dataType || "*").toLowerCase().split(core_rspace); // Determine if a cross-domain request is in order + + if (s.crossDomain == null) { + parts = rurl.exec(s.url.toLowerCase()); + s.crossDomain = !!(parts && (parts[1] != ajaxLocParts[1] || parts[2] != ajaxLocParts[2] || (parts[3] || (parts[1] === "http:" ? 80 : 443)) != (ajaxLocParts[3] || (ajaxLocParts[1] === "http:" ? 80 : 443)))); + } // Convert data if not already a string + + + if (s.data && s.processData && typeof s.data !== "string") { + s.data = jQuery.param(s.data, s.traditional); + } // Apply prefilters + + + inspectPrefiltersOrTransports(prefilters, s, options, jqXHR); // If request was aborted inside a prefilter, stop there + + if (state === 2) { + return jqXHR; + } // We can fire global events as of now if asked to + + + fireGlobals = s.global; // Uppercase the type + + s.type = s.type.toUpperCase(); // Determine if request has content + + s.hasContent = !rnoContent.test(s.type); // Watch for a new set of requests + + if (fireGlobals && jQuery.active++ === 0) { + jQuery.event.trigger("ajaxStart"); + } // More options handling for requests with no content + + + if (!s.hasContent) { + // If data is available, append data to url + if (s.data) { + s.url += (rquery.test(s.url) ? "&" : "?") + s.data; // #9682: remove data so that it's not used in an eventual retry + + delete s.data; + } // Get ifModifiedKey before adding the anti-cache parameter + + + ifModifiedKey = s.url; // Add anti-cache in url if needed + + if (s.cache === false) { + var ts = jQuery.now(), + // try replacing _= if it is there + ret = s.url.replace(rts, "$1_=" + ts); // if nothing was replaced, add timestamp to the end + + s.url = ret + (ret === s.url ? (rquery.test(s.url) ? "&" : "?") + "_=" + ts : ""); + } + } // Set the correct header, if data is being sent + + + if (s.data && s.hasContent && s.contentType !== false || options.contentType) { + jqXHR.setRequestHeader("Content-Type", s.contentType); + } // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + + + if (s.ifModified) { + ifModifiedKey = ifModifiedKey || s.url; + + if (jQuery.lastModified[ifModifiedKey]) { + jqXHR.setRequestHeader("If-Modified-Since", jQuery.lastModified[ifModifiedKey]); + } + + if (jQuery.etag[ifModifiedKey]) { + jqXHR.setRequestHeader("If-None-Match", jQuery.etag[ifModifiedKey]); + } + } // Set the Accepts header for the server, depending on the dataType + + + jqXHR.setRequestHeader("Accept", s.dataTypes[0] && s.accepts[s.dataTypes[0]] ? s.accepts[s.dataTypes[0]] + (s.dataTypes[0] !== "*" ? ", " + allTypes + "; q=0.01" : "") : s.accepts["*"]); // Check for headers option + + for (i in s.headers) { + jqXHR.setRequestHeader(i, s.headers[i]); + } // Allow custom headers/mimetypes and early abort + + + if (s.beforeSend && (s.beforeSend.call(callbackContext, jqXHR, s) === false || state === 2)) { + // Abort if not done already and return + return jqXHR.abort(); + } // aborting is no longer a cancellation + + + strAbort = "abort"; // Install callbacks on deferreds + + for (i in { + success: 1, + error: 1, + complete: 1 + }) { + jqXHR[i](s[i]); + } // Get transport + + + transport = inspectPrefiltersOrTransports(transports, s, options, jqXHR); // If no transport, we auto-abort + + if (!transport) { + done(-1, "No Transport"); + } else { + jqXHR.readyState = 1; // Send global event + + if (fireGlobals) { + globalEventContext.trigger("ajaxSend", [jqXHR, s]); + } // Timeout + + + if (s.async && s.timeout > 0) { + timeoutTimer = setTimeout(function () { + jqXHR.abort("timeout"); + }, s.timeout); + } + + try { + state = 1; + transport.send(requestHeaders, done); + } catch (e) { + // Propagate exception as error if not done + if (state < 2) { + done(-1, e); // Simply rethrow otherwise + } else { + throw e; + } + } + } + + return jqXHR; + }, + // Counter for holding the number of active queries + active: 0, + // Last-Modified header cache for next request + lastModified: {}, + etag: {} + }); + /* Handles responses to an ajax request: + * - sets all responseXXX fields accordingly + * - finds the right dataType (mediates between content-type and expected dataType) + * - returns the corresponding response + */ + + function ajaxHandleResponses(s, jqXHR, responses) { + var ct, + type, + finalDataType, + firstDataType, + contents = s.contents, + dataTypes = s.dataTypes, + responseFields = s.responseFields; // Fill responseXXX fields + + for (type in responseFields) { + if (type in responses) { + jqXHR[responseFields[type]] = responses[type]; + } + } // Remove auto dataType and get content-type in the process + + + while (dataTypes[0] === "*") { + dataTypes.shift(); + + if (ct === undefined) { + ct = s.mimeType || jqXHR.getResponseHeader("content-type"); + } + } // Check if we're dealing with a known content-type + + + if (ct) { + for (type in contents) { + if (contents[type] && contents[type].test(ct)) { + dataTypes.unshift(type); + break; + } + } + } // Check to see if we have a response for the expected dataType + + + if (dataTypes[0] in responses) { + finalDataType = dataTypes[0]; + } else { + // Try convertible dataTypes + for (type in responses) { + if (!dataTypes[0] || s.converters[type + " " + dataTypes[0]]) { + finalDataType = type; + break; + } + + if (!firstDataType) { + firstDataType = type; + } + } // Or just use first one + + + finalDataType = finalDataType || firstDataType; + } // If we found a dataType + // We add the dataType to the list if needed + // and return the corresponding response + + + if (finalDataType) { + if (finalDataType !== dataTypes[0]) { + dataTypes.unshift(finalDataType); + } + + return responses[finalDataType]; + } + } // Chain conversions given the request and the original response + + + function ajaxConvert(s, response) { + var conv, + conv2, + current, + tmp, + // Work with a copy of dataTypes in case we need to modify it for conversion + dataTypes = s.dataTypes.slice(), + prev = dataTypes[0], + converters = {}, + i = 0; // Apply the dataFilter if provided + + if (s.dataFilter) { + response = s.dataFilter(response, s.dataType); + } // Create converters map with lowercased keys + + + if (dataTypes[1]) { + for (conv in s.converters) { + converters[conv.toLowerCase()] = s.converters[conv]; + } + } // Convert to each sequential dataType, tolerating list modification + + + for (; current = dataTypes[++i];) { + // There's only work to do if current dataType is non-auto + if (current !== "*") { + // Convert response if prev dataType is non-auto and differs from current + if (prev !== "*" && prev !== current) { + // Seek a direct converter + conv = converters[prev + " " + current] || converters["* " + current]; // If none found, seek a pair + + if (!conv) { + for (conv2 in converters) { + // If conv2 outputs current + tmp = conv2.split(" "); + + if (tmp[1] === current) { + // If prev can be converted to accepted input + conv = converters[prev + " " + tmp[0]] || converters["* " + tmp[0]]; + + if (conv) { + // Condense equivalence converters + if (conv === true) { + conv = converters[conv2]; // Otherwise, insert the intermediate dataType + } else if (converters[conv2] !== true) { + current = tmp[0]; + dataTypes.splice(i--, 0, current); + } + + break; + } + } + } + } // Apply converter (if not an equivalence) + + + if (conv !== true) { + // Unless errors are allowed to bubble, catch and return them + if (conv && s["throws"]) { + response = conv(response); + } else { + try { + response = conv(response); + } catch (e) { + return { + state: "parsererror", + error: conv ? e : "No conversion from " + prev + " to " + current + }; + } + } + } + } // Update prev for next iteration + + + prev = current; + } + } + + return { + state: "success", + data: response + }; + } + + var oldCallbacks = [], + rquestion = /\?/, + rjsonp = /(=)\?(?=&|$)|\?\?/, + nonce = jQuery.now(); // Default jsonp settings + + jQuery.ajaxSetup({ + jsonp: "callback", + jsonpCallback: function jsonpCallback() { + var callback = oldCallbacks.pop() || jQuery.expando + "_" + nonce++; + this[callback] = true; + return callback; + } + }); // Detect, normalize options and install callbacks for jsonp requests + + jQuery.ajaxPrefilter("json jsonp", function (s, originalSettings, jqXHR) { + var callbackName, + overwritten, + responseContainer, + data = s.data, + url = s.url, + hasCallback = s.jsonp !== false, + replaceInUrl = hasCallback && rjsonp.test(url), + replaceInData = hasCallback && !replaceInUrl && typeof data === "string" && !(s.contentType || "").indexOf("application/x-www-form-urlencoded") && rjsonp.test(data); // Handle iff the expected data type is "jsonp" or we have a parameter to set + + if (s.dataTypes[0] === "jsonp" || replaceInUrl || replaceInData) { + // Get callback name, remembering preexisting value associated with it + callbackName = s.jsonpCallback = jQuery.isFunction(s.jsonpCallback) ? s.jsonpCallback() : s.jsonpCallback; + overwritten = window[callbackName]; // Insert callback into url or form data + + if (replaceInUrl) { + s.url = url.replace(rjsonp, "$1" + callbackName); + } else if (replaceInData) { + s.data = data.replace(rjsonp, "$1" + callbackName); + } else if (hasCallback) { + s.url += (rquestion.test(url) ? "&" : "?") + s.jsonp + "=" + callbackName; + } // Use data converter to retrieve json after script execution + + + s.converters["script json"] = function () { + if (!responseContainer) { + jQuery.error(callbackName + " was not called"); + } + + return responseContainer[0]; + }; // force json dataType + + + s.dataTypes[0] = "json"; // Install callback + + window[callbackName] = function () { + responseContainer = arguments; + }; // Clean-up function (fires after converters) + + + jqXHR.always(function () { + // Restore preexisting value + window[callbackName] = overwritten; // Save back as free + + if (s[callbackName]) { + // make sure that re-using the options doesn't screw things around + s.jsonpCallback = originalSettings.jsonpCallback; // save the callback name for future use + + oldCallbacks.push(callbackName); + } // Call if it was a function and we have a response + + + if (responseContainer && jQuery.isFunction(overwritten)) { + overwritten(responseContainer[0]); + } + + responseContainer = overwritten = undefined; + }); // Delegate to script + + return "script"; + } + }); // Install script dataType + + jQuery.ajaxSetup({ + accepts: { + script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript" + }, + contents: { + script: /javascript|ecmascript/ + }, + converters: { + "text script": function textScript(text) { + jQuery.globalEval(text); + return text; + } + } + }); // Handle cache's special case and global + + jQuery.ajaxPrefilter("script", function (s) { + if (s.cache === undefined) { + s.cache = false; + } + + if (s.crossDomain) { + s.type = "GET"; + s.global = false; + } + }); // Bind script tag hack transport + + jQuery.ajaxTransport("script", function (s) { + // This transport only deals with cross domain requests + if (s.crossDomain) { + var script, + head = document.head || document.getElementsByTagName("head")[0] || document.documentElement; + return { + send: function send(_, callback) { + script = document.createElement("script"); + script.async = "async"; + + if (s.scriptCharset) { + script.charset = s.scriptCharset; + } + + script.src = s.url; // Attach handlers for all browsers + + script.onload = script.onreadystatechange = function (_, isAbort) { + if (isAbort || !script.readyState || /loaded|complete/.test(script.readyState)) { + // Handle memory leak in IE + script.onload = script.onreadystatechange = null; // Remove the script + + if (head && script.parentNode) { + head.removeChild(script); + } // Dereference the script + + + script = undefined; // Callback if not abort + + if (!isAbort) { + callback(200, "success"); + } + } + }; // Use insertBefore instead of appendChild to circumvent an IE6 bug. + // This arises when a base node is used (#2709 and #4378). + + + head.insertBefore(script, head.firstChild); + }, + abort: function abort() { + if (script) { + script.onload(0, 1); + } + } + }; + } + }); + var xhrCallbacks, + // #5280: Internet Explorer will keep connections alive if we don't abort on unload + xhrOnUnloadAbort = window.ActiveXObject ? function () { + // Abort all pending requests + for (var key in xhrCallbacks) { + xhrCallbacks[key](0, 1); + } + } : false, + xhrId = 0; // Functions to create xhrs + + function createStandardXHR() { + try { + return new window.XMLHttpRequest(); + } catch (e) {} + } + + function createActiveXHR() { + try { + return new window.ActiveXObject("Microsoft.XMLHTTP"); + } catch (e) {} + } // Create the request object + // (This is still attached to ajaxSettings for backward compatibility) + + + jQuery.ajaxSettings.xhr = window.ActiveXObject ? + /* Microsoft failed to properly + * implement the XMLHttpRequest in IE7 (can't request local files), + * so we use the ActiveXObject when it is available + * Additionally XMLHttpRequest can be disabled in IE7/IE8 so + * we need a fallback. + */ + function () { + return !this.isLocal && createStandardXHR() || createActiveXHR(); + } : // For all other browsers, use the standard XMLHttpRequest object + createStandardXHR; // Determine support properties + + (function (xhr) { + jQuery.extend(jQuery.support, { + ajax: !!xhr, + cors: !!xhr && "withCredentials" in xhr + }); + })(jQuery.ajaxSettings.xhr()); // Create transport if the browser can provide an xhr + + + if (jQuery.support.ajax) { + jQuery.ajaxTransport(function (s) { + // Cross domain only allowed if supported through XMLHttpRequest + if (!s.crossDomain || jQuery.support.cors) { + var _callback; + + return { + send: function send(headers, complete) { + // Get a new xhr + var handle, + i, + xhr = s.xhr(); // Open the socket + // Passing null username, generates a login popup on Opera (#2865) + + if (s.username) { + xhr.open(s.type, s.url, s.async, s.username, s.password); + } else { + xhr.open(s.type, s.url, s.async); + } // Apply custom fields if provided + + + if (s.xhrFields) { + for (i in s.xhrFields) { + xhr[i] = s.xhrFields[i]; + } + } // Override mime type if needed + + + if (s.mimeType && xhr.overrideMimeType) { + xhr.overrideMimeType(s.mimeType); + } // X-Requested-With header + // For cross-domain requests, seeing as conditions for a preflight are + // akin to a jigsaw puzzle, we simply never set it to be sure. + // (it can always be set on a per-request basis or even using ajaxSetup) + // For same-domain requests, won't change header if already provided. + + + if (!s.crossDomain && !headers["X-Requested-With"]) { + headers["X-Requested-With"] = "XMLHttpRequest"; + } // Need an extra try/catch for cross domain requests in Firefox 3 + + + try { + for (i in headers) { + xhr.setRequestHeader(i, headers[i]); + } + } catch (_) {} // Do send the request + // This may raise an exception which is actually + // handled in jQuery.ajax (so no try/catch here) + + + xhr.send(s.hasContent && s.data || null); // Listener + + _callback = function callback(_, isAbort) { + var status, statusText, responseHeaders, responses, xml; // Firefox throws exceptions when accessing properties + // of an xhr when a network error occurred + // http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE) + + try { + // Was never called and is aborted or complete + if (_callback && (isAbort || xhr.readyState === 4)) { + // Only called once + _callback = undefined; // Do not keep as active anymore + + if (handle) { + xhr.onreadystatechange = jQuery.noop; + + if (xhrOnUnloadAbort) { + delete xhrCallbacks[handle]; + } + } // If it's an abort + + + if (isAbort) { + // Abort it manually if needed + if (xhr.readyState !== 4) { + xhr.abort(); + } + } else { + status = xhr.status; + responseHeaders = xhr.getAllResponseHeaders(); + responses = {}; + xml = xhr.responseXML; // Construct response list + + if (xml && xml.documentElement + /* #4958 */ + ) { + responses.xml = xml; + } // When requesting binary data, IE6-9 will throw an exception + // on any attempt to access responseText (#11426) + + + try { + responses.text = xhr.responseText; + } catch (_) {} // Firefox throws an exception when accessing + // statusText for faulty cross-domain requests + + + try { + statusText = xhr.statusText; + } catch (e) { + // We normalize with Webkit giving an empty statusText + statusText = ""; + } // Filter status for non standard behaviors + // If the request is local and we have data: assume a success + // (success with no data won't get notified, that's the best we + // can do given current implementations) + + + if (!status && s.isLocal && !s.crossDomain) { + status = responses.text ? 200 : 404; // IE - #1450: sometimes returns 1223 when it should be 204 + } else if (status === 1223) { + status = 204; + } + } + } + } catch (firefoxAccessException) { + if (!isAbort) { + complete(-1, firefoxAccessException); + } + } // Call complete if needed + + + if (responses) { + complete(status, statusText, responses, responseHeaders); + } + }; + + if (!s.async) { + // if we're in sync mode we fire the callback + _callback(); + } else if (xhr.readyState === 4) { + // (IE6 & IE7) if it's in cache and has been + // retrieved directly we need to fire the callback + setTimeout(_callback, 0); + } else { + handle = ++xhrId; + + if (xhrOnUnloadAbort) { + // Create the active xhrs callbacks list if needed + // and attach the unload handler + if (!xhrCallbacks) { + xhrCallbacks = {}; + jQuery(window).unload(xhrOnUnloadAbort); + } // Add to list of active xhrs callbacks + + + xhrCallbacks[handle] = _callback; + } + + xhr.onreadystatechange = _callback; + } + }, + abort: function abort() { + if (_callback) { + _callback(0, 1); + } + } + }; + } + }); + } + + var fxNow, + timerId, + rfxtypes = /^(?:toggle|show|hide)$/, + rfxnum = new RegExp("^(?:([-+])=|)(" + core_pnum + ")([a-z%]*)$", "i"), + rrun = /queueHooks$/, + animationPrefilters = [defaultPrefilter], + tweeners = { + "*": [function (prop, value) { + var end, + unit, + prevScale, + tween = this.createTween(prop, value), + parts = rfxnum.exec(value), + target = tween.cur(), + start = +target || 0, + scale = 1; + + if (parts) { + end = +parts[2]; + unit = parts[3] || (jQuery.cssNumber[prop] ? "" : "px"); // We need to compute starting value + + if (unit !== "px" && start) { + // Iteratively approximate from a nonzero starting point + // Prefer the current property, because this process will be trivial if it uses the same units + // Fallback to end or a simple constant + start = jQuery.css(tween.elem, prop, true) || end || 1; + + do { + // If previous iteration zeroed out, double until we get *something* + // Use a string for doubling factor so we don't accidentally see scale as unchanged below + prevScale = scale = scale || ".5"; // Adjust and apply + + start = start / scale; + jQuery.style(tween.elem, prop, start + unit); // Update scale, tolerating zeroes from tween.cur() + + scale = tween.cur() / target; // Stop looping if we've hit the mark or scale is unchanged + } while (scale !== 1 && scale !== prevScale); + } + + tween.unit = unit; + tween.start = start; // If a +=/-= token was provided, we're doing a relative animation + + tween.end = parts[1] ? start + (parts[1] + 1) * end : end; + } + + return tween; + }] + }; // Animations created synchronously will run synchronously + + function createFxNow() { + setTimeout(function () { + fxNow = undefined; + }, 0); + return fxNow = jQuery.now(); + } + + function createTweens(animation, props) { + jQuery.each(props, function (prop, value) { + var collection = (tweeners[prop] || []).concat(tweeners["*"]), + index = 0, + length = collection.length; + + for (; index < length; index++) { + if (collection[index].call(animation, prop, value)) { + // we're done with this property + return; + } + } + }); + } + + function Animation(elem, properties, options) { + var result, + index = 0, + tweenerIndex = 0, + length = animationPrefilters.length, + deferred = jQuery.Deferred().always(function () { + // don't match elem in the :animated selector + delete tick.elem; + }), + tick = function tick() { + var currentTime = fxNow || createFxNow(), + remaining = Math.max(0, animation.startTime + animation.duration - currentTime), + percent = 1 - (remaining / animation.duration || 0), + index = 0, + length = animation.tweens.length; + + for (; index < length; index++) { + animation.tweens[index].run(percent); + } + + deferred.notifyWith(elem, [animation, percent, remaining]); + + if (percent < 1 && length) { + return remaining; + } else { + deferred.resolveWith(elem, [animation]); + return false; + } + }, + animation = deferred.promise({ + elem: elem, + props: jQuery.extend({}, properties), + opts: jQuery.extend(true, { + specialEasing: {} + }, options), + originalProperties: properties, + originalOptions: options, + startTime: fxNow || createFxNow(), + duration: options.duration, + tweens: [], + createTween: function createTween(prop, end, easing) { + var tween = jQuery.Tween(elem, animation.opts, prop, end, animation.opts.specialEasing[prop] || animation.opts.easing); + animation.tweens.push(tween); + return tween; + }, + stop: function stop(gotoEnd) { + var index = 0, + // if we are going to the end, we want to run all the tweens + // otherwise we skip this part + length = gotoEnd ? animation.tweens.length : 0; + + for (; index < length; index++) { + animation.tweens[index].run(1); + } // resolve when we played the last frame + // otherwise, reject + + + if (gotoEnd) { + deferred.resolveWith(elem, [animation, gotoEnd]); + } else { + deferred.rejectWith(elem, [animation, gotoEnd]); + } + + return this; + } + }), + props = animation.props; + + propFilter(props, animation.opts.specialEasing); + + for (; index < length; index++) { + result = animationPrefilters[index].call(animation, elem, props, animation.opts); + + if (result) { + return result; + } + } + + createTweens(animation, props); + + if (jQuery.isFunction(animation.opts.start)) { + animation.opts.start.call(elem, animation); + } + + jQuery.fx.timer(jQuery.extend(tick, { + anim: animation, + queue: animation.opts.queue, + elem: elem + })); // attach callbacks from options + + return animation.progress(animation.opts.progress).done(animation.opts.done, animation.opts.complete).fail(animation.opts.fail).always(animation.opts.always); + } + + function propFilter(props, specialEasing) { + var index, name, easing, value, hooks; // camelCase, specialEasing and expand cssHook pass + + for (index in props) { + name = jQuery.camelCase(index); + easing = specialEasing[name]; + value = props[index]; + + if (jQuery.isArray(value)) { + easing = value[1]; + value = props[index] = value[0]; + } + + if (index !== name) { + props[name] = value; + delete props[index]; + } + + hooks = jQuery.cssHooks[name]; + + if (hooks && "expand" in hooks) { + value = hooks.expand(value); + delete props[name]; // not quite $.extend, this wont overwrite keys already present. + // also - reusing 'index' from above because we have the correct "name" + + for (index in value) { + if (!(index in props)) { + props[index] = value[index]; + specialEasing[index] = easing; + } + } + } else { + specialEasing[name] = easing; + } + } + } + + jQuery.Animation = jQuery.extend(Animation, { + tweener: function tweener(props, callback) { + if (jQuery.isFunction(props)) { + callback = props; + props = ["*"]; + } else { + props = props.split(" "); + } + + var prop, + index = 0, + length = props.length; + + for (; index < length; index++) { + prop = props[index]; + tweeners[prop] = tweeners[prop] || []; + tweeners[prop].unshift(callback); + } + }, + prefilter: function prefilter(callback, prepend) { + if (prepend) { + animationPrefilters.unshift(callback); + } else { + animationPrefilters.push(callback); + } + } + }); + + function defaultPrefilter(elem, props, opts) { + var index, + prop, + value, + length, + dataShow, + tween, + hooks, + oldfire, + anim = this, + style = elem.style, + orig = {}, + handled = [], + hidden = elem.nodeType && isHidden(elem); // handle queue: false promises + + if (!opts.queue) { + hooks = jQuery._queueHooks(elem, "fx"); + + if (hooks.unqueued == null) { + hooks.unqueued = 0; + oldfire = hooks.empty.fire; + + hooks.empty.fire = function () { + if (!hooks.unqueued) { + oldfire(); + } + }; + } + + hooks.unqueued++; + anim.always(function () { + // doing this makes sure that the complete handler will be called + // before this completes + anim.always(function () { + hooks.unqueued--; + + if (!jQuery.queue(elem, "fx").length) { + hooks.empty.fire(); + } + }); + }); + } // height/width overflow pass + + + if (elem.nodeType === 1 && ("height" in props || "width" in props)) { + // Make sure that nothing sneaks out + // Record all 3 overflow attributes because IE does not + // change the overflow attribute when overflowX and + // overflowY are set to the same value + opts.overflow = [style.overflow, style.overflowX, style.overflowY]; // Set display property to inline-block for height/width + // animations on inline elements that are having width/height animated + + if (jQuery.css(elem, "display") === "inline" && jQuery.css(elem, "float") === "none") { + // inline-level elements accept inline-block; + // block-level elements need to be inline with layout + if (!jQuery.support.inlineBlockNeedsLayout || css_defaultDisplay(elem.nodeName) === "inline") { + style.display = "inline-block"; + } else { + style.zoom = 1; + } + } + } + + if (opts.overflow) { + style.overflow = "hidden"; + + if (!jQuery.support.shrinkWrapBlocks) { + anim.done(function () { + style.overflow = opts.overflow[0]; + style.overflowX = opts.overflow[1]; + style.overflowY = opts.overflow[2]; + }); + } + } // show/hide pass + + + for (index in props) { + value = props[index]; + + if (rfxtypes.exec(value)) { + delete props[index]; + + if (value === (hidden ? "hide" : "show")) { + continue; + } + + handled.push(index); + } + } + + length = handled.length; + + if (length) { + dataShow = jQuery._data(elem, "fxshow") || jQuery._data(elem, "fxshow", {}); + + if (hidden) { + jQuery(elem).show(); + } else { + anim.done(function () { + jQuery(elem).hide(); + }); + } + + anim.done(function () { + var prop; + jQuery.removeData(elem, "fxshow", true); + + for (prop in orig) { + jQuery.style(elem, prop, orig[prop]); + } + }); + + for (index = 0; index < length; index++) { + prop = handled[index]; + tween = anim.createTween(prop, hidden ? dataShow[prop] : 0); + orig[prop] = dataShow[prop] || jQuery.style(elem, prop); + + if (!(prop in dataShow)) { + dataShow[prop] = tween.start; + + if (hidden) { + tween.end = tween.start; + tween.start = prop === "width" || prop === "height" ? 1 : 0; + } + } + } + } + } + + function Tween(elem, options, prop, end, easing) { + return new Tween.prototype.init(elem, options, prop, end, easing); + } + + jQuery.Tween = Tween; + Tween.prototype = { + constructor: Tween, + init: function init(elem, options, prop, end, easing, unit) { + this.elem = elem; + this.prop = prop; + this.easing = easing || "swing"; + this.options = options; + this.start = this.now = this.cur(); + this.end = end; + this.unit = unit || (jQuery.cssNumber[prop] ? "" : "px"); + }, + cur: function cur() { + var hooks = Tween.propHooks[this.prop]; + return hooks && hooks.get ? hooks.get(this) : Tween.propHooks._default.get(this); + }, + run: function run(percent) { + var eased, + hooks = Tween.propHooks[this.prop]; + + if (this.options.duration) { + this.pos = eased = jQuery.easing[this.easing](percent, this.options.duration * percent, 0, 1, this.options.duration); + } else { + this.pos = eased = percent; + } + + this.now = (this.end - this.start) * eased + this.start; + + if (this.options.step) { + this.options.step.call(this.elem, this.now, this); + } + + if (hooks && hooks.set) { + hooks.set(this); + } else { + Tween.propHooks._default.set(this); + } + + return this; + } + }; + Tween.prototype.init.prototype = Tween.prototype; + Tween.propHooks = { + _default: { + get: function get(tween) { + var result; + + if (tween.elem[tween.prop] != null && (!tween.elem.style || tween.elem.style[tween.prop] == null)) { + return tween.elem[tween.prop]; + } // passing any value as a 4th parameter to .css will automatically + // attempt a parseFloat and fallback to a string if the parse fails + // so, simple values such as "10px" are parsed to Float. + // complex values such as "rotate(1rad)" are returned as is. + + + result = jQuery.css(tween.elem, tween.prop, false, ""); // Empty strings, null, undefined and "auto" are converted to 0. + + return !result || result === "auto" ? 0 : result; + }, + set: function set(tween) { + // use step hook for back compat - use cssHook if its there - use .style if its + // available and use plain properties where available + if (jQuery.fx.step[tween.prop]) { + jQuery.fx.step[tween.prop](tween); + } else if (tween.elem.style && (tween.elem.style[jQuery.cssProps[tween.prop]] != null || jQuery.cssHooks[tween.prop])) { + jQuery.style(tween.elem, tween.prop, tween.now + tween.unit); + } else { + tween.elem[tween.prop] = tween.now; + } + } + } + }; // Remove in 2.0 - this supports IE8's panic based approach + // to setting things on disconnected nodes + + Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { + set: function set(tween) { + if (tween.elem.nodeType && tween.elem.parentNode) { + tween.elem[tween.prop] = tween.now; + } + } + }; + jQuery.each(["toggle", "show", "hide"], function (i, name) { + var cssFn = jQuery.fn[name]; + + jQuery.fn[name] = function (speed, easing, callback) { + return speed == null || typeof speed === "boolean" || // special check for .toggle( handler, handler, ... ) + !i && jQuery.isFunction(speed) && jQuery.isFunction(easing) ? cssFn.apply(this, arguments) : this.animate(genFx(name, true), speed, easing, callback); + }; + }); + jQuery.fn.extend({ + fadeTo: function fadeTo(speed, to, easing, callback) { + // show any hidden elements after setting opacity to 0 + return this.filter(isHidden).css("opacity", 0).show() // animate to the value specified + .end().animate({ + opacity: to + }, speed, easing, callback); + }, + animate: function animate(prop, speed, easing, callback) { + var empty = jQuery.isEmptyObject(prop), + optall = jQuery.speed(speed, easing, callback), + doAnimation = function doAnimation() { + // Operate on a copy of prop so per-property easing won't be lost + var anim = Animation(this, jQuery.extend({}, prop), optall); // Empty animations resolve immediately + + if (empty) { + anim.stop(true); + } + }; + + return empty || optall.queue === false ? this.each(doAnimation) : this.queue(optall.queue, doAnimation); + }, + stop: function stop(type, clearQueue, gotoEnd) { + var stopQueue = function stopQueue(hooks) { + var stop = hooks.stop; + delete hooks.stop; + stop(gotoEnd); + }; + + if (typeof type !== "string") { + gotoEnd = clearQueue; + clearQueue = type; + type = undefined; + } + + if (clearQueue && type !== false) { + this.queue(type || "fx", []); + } + + return this.each(function () { + var dequeue = true, + index = type != null && type + "queueHooks", + timers = jQuery.timers, + data = jQuery._data(this); + + if (index) { + if (data[index] && data[index].stop) { + stopQueue(data[index]); + } + } else { + for (index in data) { + if (data[index] && data[index].stop && rrun.test(index)) { + stopQueue(data[index]); + } + } + } + + for (index = timers.length; index--;) { + if (timers[index].elem === this && (type == null || timers[index].queue === type)) { + timers[index].anim.stop(gotoEnd); + dequeue = false; + timers.splice(index, 1); + } + } // start the next in the queue if the last step wasn't forced + // timers currently will call their complete callbacks, which will dequeue + // but only if they were gotoEnd + + + if (dequeue || !gotoEnd) { + jQuery.dequeue(this, type); + } + }); + } + }); // Generate parameters to create a standard animation + + function genFx(type, includeWidth) { + var which, + attrs = { + height: type + }, + i = 0; // if we include width, step value is 1 to do all cssExpand values, + // if we don't include width, step value is 2 to skip over Left and Right + + includeWidth = includeWidth ? 1 : 0; + + for (; i < 4; i += 2 - includeWidth) { + which = cssExpand[i]; + attrs["margin" + which] = attrs["padding" + which] = type; + } + + if (includeWidth) { + attrs.opacity = attrs.width = type; + } + + return attrs; + } // Generate shortcuts for custom animations + + + jQuery.each({ + slideDown: genFx("show"), + slideUp: genFx("hide"), + slideToggle: genFx("toggle"), + fadeIn: { + opacity: "show" + }, + fadeOut: { + opacity: "hide" + }, + fadeToggle: { + opacity: "toggle" + } + }, function (name, props) { + jQuery.fn[name] = function (speed, easing, callback) { + return this.animate(props, speed, easing, callback); + }; + }); + + jQuery.speed = function (speed, easing, fn) { + var opt = speed && _typeof(speed) === "object" ? jQuery.extend({}, speed) : { + complete: fn || !fn && easing || jQuery.isFunction(speed) && speed, + duration: speed, + easing: fn && easing || easing && !jQuery.isFunction(easing) && easing + }; + opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration : opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[opt.duration] : jQuery.fx.speeds._default; // normalize opt.queue - true/undefined/null -> "fx" + + if (opt.queue == null || opt.queue === true) { + opt.queue = "fx"; + } // Queueing + + + opt.old = opt.complete; + + opt.complete = function () { + if (jQuery.isFunction(opt.old)) { + opt.old.call(this); + } + + if (opt.queue) { + jQuery.dequeue(this, opt.queue); + } + }; + + return opt; + }; + + jQuery.easing = { + linear: function linear(p) { + return p; + }, + swing: function swing(p) { + return 0.5 - Math.cos(p * Math.PI) / 2; + } + }; + jQuery.timers = []; + jQuery.fx = Tween.prototype.init; + + jQuery.fx.tick = function () { + var timer, + timers = jQuery.timers, + i = 0; + + for (; i < timers.length; i++) { + timer = timers[i]; // Checks the timer has not already been removed + + if (!timer() && timers[i] === timer) { + timers.splice(i--, 1); + } + } + + if (!timers.length) { + jQuery.fx.stop(); + } + }; + + jQuery.fx.timer = function (timer) { + if (timer() && jQuery.timers.push(timer) && !timerId) { + timerId = setInterval(jQuery.fx.tick, jQuery.fx.interval); + } + }; + + jQuery.fx.interval = 13; + + jQuery.fx.stop = function () { + clearInterval(timerId); + timerId = null; + }; + + jQuery.fx.speeds = { + slow: 600, + fast: 200, + // Default speed + _default: 400 + }; // Back Compat <1.8 extension point + + jQuery.fx.step = {}; + + if (jQuery.expr && jQuery.expr.filters) { + jQuery.expr.filters.animated = function (elem) { + return jQuery.grep(jQuery.timers, function (fn) { + return elem === fn.elem; + }).length; + }; + } + + var rroot = /^(?:body|html)$/i; + + jQuery.fn.offset = function (options) { + if (arguments.length) { + return options === undefined ? this : this.each(function (i) { + jQuery.offset.setOffset(this, options, i); + }); + } + + var box, + docElem, + body, + win, + clientTop, + clientLeft, + scrollTop, + scrollLeft, + top, + left, + elem = this[0], + doc = elem && elem.ownerDocument; + + if (!doc) { + return; + } + + if ((body = doc.body) === elem) { + return jQuery.offset.bodyOffset(elem); + } + + docElem = doc.documentElement; // Make sure we're not dealing with a disconnected DOM node + + if (!jQuery.contains(docElem, elem)) { + return { + top: 0, + left: 0 + }; + } + + box = elem.getBoundingClientRect(); + win = getWindow(doc); + clientTop = docElem.clientTop || body.clientTop || 0; + clientLeft = docElem.clientLeft || body.clientLeft || 0; + scrollTop = win.pageYOffset || docElem.scrollTop; + scrollLeft = win.pageXOffset || docElem.scrollLeft; + top = box.top + scrollTop - clientTop; + left = box.left + scrollLeft - clientLeft; + return { + top: top, + left: left + }; + }; + + jQuery.offset = { + bodyOffset: function bodyOffset(body) { + var top = body.offsetTop, + left = body.offsetLeft; + + if (jQuery.support.doesNotIncludeMarginInBodyOffset) { + top += parseFloat(jQuery.css(body, "marginTop")) || 0; + left += parseFloat(jQuery.css(body, "marginLeft")) || 0; + } + + return { + top: top, + left: left + }; + }, + setOffset: function setOffset(elem, options, i) { + var position = jQuery.css(elem, "position"); // set position first, in-case top/left are set even on static elem + + if (position === "static") { + elem.style.position = "relative"; + } + + var curElem = jQuery(elem), + curOffset = curElem.offset(), + curCSSTop = jQuery.css(elem, "top"), + curCSSLeft = jQuery.css(elem, "left"), + calculatePosition = (position === "absolute" || position === "fixed") && jQuery.inArray("auto", [curCSSTop, curCSSLeft]) > -1, + props = {}, + curPosition = {}, + curTop, + curLeft; // need to be able to calculate position if either top or left is auto and position is either absolute or fixed + + if (calculatePosition) { + curPosition = curElem.position(); + curTop = curPosition.top; + curLeft = curPosition.left; + } else { + curTop = parseFloat(curCSSTop) || 0; + curLeft = parseFloat(curCSSLeft) || 0; + } + + if (jQuery.isFunction(options)) { + options = options.call(elem, i, curOffset); + } + + if (options.top != null) { + props.top = options.top - curOffset.top + curTop; + } + + if (options.left != null) { + props.left = options.left - curOffset.left + curLeft; + } + + if ("using" in options) { + options.using.call(elem, props); + } else { + curElem.css(props); + } + } + }; + jQuery.fn.extend({ + position: function position() { + if (!this[0]) { + return; + } + + var elem = this[0], + // Get *real* offsetParent + offsetParent = this.offsetParent(), + // Get correct offsets + offset = this.offset(), + parentOffset = rroot.test(offsetParent[0].nodeName) ? { + top: 0, + left: 0 + } : offsetParent.offset(); // Subtract element margins + // note: when an element has margin: auto the offsetLeft and marginLeft + // are the same in Safari causing offset.left to incorrectly be 0 + + offset.top -= parseFloat(jQuery.css(elem, "marginTop")) || 0; + offset.left -= parseFloat(jQuery.css(elem, "marginLeft")) || 0; // Add offsetParent borders + + parentOffset.top += parseFloat(jQuery.css(offsetParent[0], "borderTopWidth")) || 0; + parentOffset.left += parseFloat(jQuery.css(offsetParent[0], "borderLeftWidth")) || 0; // Subtract the two offsets + + return { + top: offset.top - parentOffset.top, + left: offset.left - parentOffset.left + }; + }, + offsetParent: function offsetParent() { + return this.map(function () { + var offsetParent = this.offsetParent || document.body; + + while (offsetParent && !rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, "position") === "static") { + offsetParent = offsetParent.offsetParent; + } + + return offsetParent || document.body; + }); + } + }); // Create scrollLeft and scrollTop methods + + jQuery.each({ + scrollLeft: "pageXOffset", + scrollTop: "pageYOffset" + }, function (method, prop) { + var top = /Y/.test(prop); + + jQuery.fn[method] = function (val) { + return jQuery.access(this, function (elem, method, val) { + var win = getWindow(elem); + + if (val === undefined) { + return win ? prop in win ? win[prop] : win.document.documentElement[method] : elem[method]; + } + + if (win) { + win.scrollTo(!top ? val : jQuery(win).scrollLeft(), top ? val : jQuery(win).scrollTop()); + } else { + elem[method] = val; + } + }, method, val, arguments.length, null); + }; + }); + + function getWindow(elem) { + return jQuery.isWindow(elem) ? elem : elem.nodeType === 9 ? elem.defaultView || elem.parentWindow : false; + } // Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods + + + jQuery.each({ + Height: "height", + Width: "width" + }, function (name, type) { + jQuery.each({ + padding: "inner" + name, + content: type, + "": "outer" + name + }, function (defaultExtra, funcName) { + // margin is only for outerHeight, outerWidth + jQuery.fn[funcName] = function (margin, value) { + var chainable = arguments.length && (defaultExtra || typeof margin !== "boolean"), + extra = defaultExtra || (margin === true || value === true ? "margin" : "border"); + return jQuery.access(this, function (elem, type, value) { + var doc; + + if (jQuery.isWindow(elem)) { + // As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there + // isn't a whole lot we can do. See pull request at this URL for discussion: + // https://github.com/jquery/jquery/pull/764 + return elem.document.documentElement["client" + name]; + } // Get document width or height + + + if (elem.nodeType === 9) { + doc = elem.documentElement; // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], whichever is greatest + // unfortunately, this causes bug #3838 in IE6/8 only, but there is currently no good, small way to fix it. + + return Math.max(elem.body["scroll" + name], doc["scroll" + name], elem.body["offset" + name], doc["offset" + name], doc["client" + name]); + } + + return value === undefined ? // Get width or height on the element, requesting but not forcing parseFloat + jQuery.css(elem, type, value, extra) : // Set width or height on the element + jQuery.style(elem, type, value, extra); + }, type, chainable ? margin : undefined, chainable, null); + }; + }); + }); // Expose jQuery to the global object + + window.jQuery = window.$ = jQuery; // Expose jQuery as an AMD module, but only for AMD loaders that + // understand the issues with loading multiple versions of jQuery + // in a page that all might call define(). The loader will indicate + // they have special allowances for multiple jQuery versions by + // specifying define.amd.jQuery = true. Register as a named module, + // since jQuery can be concatenated with other files that may use define, + // but not use a proper concatenation script that understands anonymous + // AMD modules. A named AMD is safest and most robust way to register. + // Lowercase jquery is used because AMD module names are derived from + // file names, and jQuery is normally delivered in a lowercase file name. + // Do this after creating the global so that if an AMD module wants to call + // noConflict to hide this version of jQuery, it will work. + + if (typeof define === "function" && define.amd && define.amd.jQuery) { + define("jquery", [], function () { + return jQuery; + }); + } +})(window); + +},{}]},{},[3,2,1]) +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJ3ZWIvYXBpLWNvbW1vbi9sb2dpbi5qcyIsIndlYi9ib290c3RyYXAvanMvYm9vdHN0cmFwLmpzIiwid2ViL2pzL2pxdWVyeS0xLjguMS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0FDQUEsQ0FBQyxDQUFDLFFBQUQsQ0FBRCxDQUFZLEtBQVosQ0FBa0IsWUFBTTtBQUN0QixFQUFBLENBQUMsQ0FBQyxNQUFELENBQUQsQ0FBVSxPQUFWLENBQWtCLFVBQUMsS0FBRCxFQUFXO0FBQzNCLFFBQUksS0FBSyxDQUFDLE9BQU4sSUFBaUIsRUFBckIsRUFBeUI7QUFDdkIsTUFBQSxLQUFLLENBQUMsY0FBTjtBQUNBLGFBQU8sS0FBUDtBQUNEO0FBQ0YsR0FMRDtBQU9BLEVBQUEsQ0FBQyxDQUFDLFdBQUQsQ0FBRCxDQUFlLE9BQWYsQ0FBdUIsVUFBQyxLQUFELEVBQVc7QUFDaEMsUUFBSSxLQUFLLENBQUMsT0FBTixJQUFpQixFQUFyQixFQUF5QjtBQUN2QixNQUFBLFdBQVc7QUFDWCxhQUFPLEtBQVA7QUFDRDtBQUNGLEdBTEQ7QUFNRCxDQWREOztBQWdCQSxNQUFNLENBQUMsa0JBQVAsR0FBNEIsWUFBTTtBQUNoQyxFQUFBLENBQUMsQ0FBQyxZQUFELENBQUQsQ0FBZ0IsSUFBaEI7QUFDQSxFQUFBLENBQUMsQ0FBQyw0QkFBRCxDQUFELENBQWdDLElBQWhDO0FBQ0QsQ0FIRDs7QUFLQSxNQUFNLENBQUMscUJBQVAsR0FBK0IsWUFBTTtBQUNuQyxFQUFBLENBQUMsQ0FBQyxpQ0FBRCxDQUFELENBQXFDLElBQXJDO0FBQ0EsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLGlCQUFELENBQUQsQ0FBcUIsR0FBckIsRUFBWDs7QUFDQSxNQUFJLEVBQUUsS0FBSyxFQUFYLEVBQWU7QUFDYixXQUFPLEtBQVA7QUFDRDs7QUFDRCxFQUFBLENBQUMsQ0FBQyxJQUFGLENBQU8sYUFBUCxF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SUE3QkksRUE2QkUsU0FBUyxHQUFHLE1BQUgsR0FBWSxTQTdCdkIsRUE2QmtDLFNBN0JsQyxFQTZCNkMsSUE3QjdDLENBQVA7QUE4QkEsT0FsQ0Q7QUFtQ0EsS0FyQ0Q7QUFzQ0EsR0F2Q0QsRUE1Z1MrQixDQW9qUy9COztBQUNBLEVBQUEsTUFBTSxDQUFDLE1BQVAsR0FBZ0IsTUFBTSxDQUFDLENBQVAsR0FBVyxNQUEzQixDQXJqUytCLENBdWpTL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNBLE1BQUssT0FBTyxNQUFQLEtBQWtCLFVBQWxCLElBQWdDLE1BQU0sQ0FBQyxHQUF2QyxJQUE4QyxNQUFNLENBQUMsR0FBUCxDQUFXLE1BQTlELEVBQXVFO0FBQ3RFLElBQUEsTUFBTSxDQUFFLFFBQUYsRUFBWSxFQUFaLEVBQWdCLFlBQVk7QUFBRSxhQUFPLE1BQVA7QUFBZ0IsS0FBOUMsQ0FBTjtBQUNBO0FBRUEsQ0F2a1NELEVBdWtTSSxNQXZrU0oiLCJmaWxlIjoiZ2VuZXJhdGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbigpe2Z1bmN0aW9uIHIoZSxuLHQpe2Z1bmN0aW9uIG8oaSxmKXtpZighbltpXSl7aWYoIWVbaV0pe3ZhciBjPVwiZnVuY3Rpb25cIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmU7aWYoIWYmJmMpcmV0dXJuIGMoaSwhMCk7aWYodSlyZXR1cm4gdShpLCEwKTt2YXIgYT1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK2krXCInXCIpO3Rocm93IGEuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixhfXZhciBwPW5baV09e2V4cG9ydHM6e319O2VbaV1bMF0uY2FsbChwLmV4cG9ydHMsZnVuY3Rpb24ocil7dmFyIG49ZVtpXVsxXVtyXTtyZXR1cm4gbyhufHxyKX0scCxwLmV4cG9ydHMscixlLG4sdCl9cmV0dXJuIG5baV0uZXhwb3J0c31mb3IodmFyIHU9XCJmdW5jdGlvblwiPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZSxpPTA7aTx0Lmxlbmd0aDtpKyspbyh0W2ldKTtyZXR1cm4gb31yZXR1cm4gcn0pKCkiLCIkKGRvY3VtZW50KS5yZWFkeSgoKSA9PiB7XHJcbiAgJCh3aW5kb3cpLmtleWRvd24oKGV2ZW50KSA9PiB7XHJcbiAgICBpZiAoZXZlbnQua2V5Q29kZSA9PSAxMykge1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfSk7XHJcblxyXG4gICQoJyNwYXNzd29yZCcpLmtleWRvd24oKGV2ZW50KSA9PiB7XHJcbiAgICBpZiAoZXZlbnQua2V5Q29kZSA9PSAxMykge1xyXG4gICAgICBzdWJtaXRMb2dpbigpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfSk7XHJcbn0pO1xyXG5cclxud2luZG93LnNob3dGb3Jnb3RQYXNzd29yZCA9ICgpID0+IHtcclxuICAkKCcjbG9naW5Gb3JtJykuaGlkZSgpO1xyXG4gICQoJyNyZXF1ZXN0UGFzc3dvcmRDaGFuZ2VGb3JtJykuc2hvdygpO1xyXG59O1xyXG5cclxud2luZG93LnJlcXVlc3RQYXNzd29yZENoYW5nZSA9ICgpID0+IHtcclxuICAkKCcjcmVxdWVzdFBhc3N3b3JkQ2hhbmdlRm9ybUFsZXJ0JykuaGlkZSgpO1xyXG4gIGNvbnN0IGlkID0gJCgnI3VzZXJuYW1lQ2hhbmdlJykudmFsKCk7XHJcbiAgaWYgKGlkID09PSAnJykge1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICAkLnBvc3QoJ3NlcnZpY2UucGhwJywgeyBhOiAncnBjJywgaWQgfSwgKGRhdGEpID0+IHtcclxuICAgIGlmIChkYXRhLnN0YXR1cyA9PSAnU1VDQ0VTUycpIHtcclxuICAgICAgJCgnI3JlcXVlc3RQYXNzd29yZENoYW5nZUZvcm1BbGVydCcpLnNob3coKTtcclxuICAgICAgJCgnI3JlcXVlc3RQYXNzd29yZENoYW5nZUZvcm1BbGVydCcpLmh0bWwoZGF0YS5tZXNzYWdlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICQoJyNyZXF1ZXN0UGFzc3dvcmRDaGFuZ2VGb3JtQWxlcnQnKS5zaG93KCk7XHJcbiAgICAgICQoJyNyZXF1ZXN0UGFzc3dvcmRDaGFuZ2VGb3JtQWxlcnQnKS5odG1sKGRhdGEubWVzc2FnZSk7XHJcbiAgICB9XHJcbiAgfSwgJ2pzb24nKTtcclxufTtcclxuXHJcbndpbmRvdy5jaGFuZ2VQYXNzd29yZCA9IChrZXkpID0+IHtcclxuICAkKCcjbmV3UGFzc3dvcmRGb3JtQWxlcnQnKS5oaWRlKCk7XHJcbiAgY29uc3QgcGFzc3dvcmQgPSAkKCcjcGFzc3dvcmQnKS52YWwoKTtcclxuXHJcbiAgY29uc3QgcGFzc3dvcmRWYWxpZGF0aW9uID0gZnVuY3Rpb24gKHN0cikge1xyXG4gICAgcmV0dXJuIHN0ci5sZW5ndGggPiA3O1xyXG4gIH07XHJcblxyXG5cclxuICBpZiAoIXBhc3N3b3JkVmFsaWRhdGlvbihwYXNzd29yZCkpIHtcclxuICAgICQoJyNuZXdQYXNzd29yZEZvcm1BbGVydCcpLnNob3coKTtcclxuICAgICQoJyNuZXdQYXNzd29yZEZvcm1BbGVydCcpLmh0bWwoJ1Bhc3N3b3JkIHNob3VsZCBiZSBsb25nZXIgdGhhbiA3IGNoYXJhY3RlcnMnKTtcclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG5cclxuICAkLnBvc3QoJ3NlcnZpY2UucGhwJywge1xyXG4gICAgYTogJ3JzcCcsIGtleSwgcHdkOiBwYXNzd29yZCwgbm93OiAnMScsXHJcbiAgfSwgKGRhdGEpID0+IHtcclxuICAgIGlmIChkYXRhLnN0YXR1cyA9PSAnU1VDQ0VTUycpIHtcclxuICAgICAgdG9wLmxvY2F0aW9uLmhyZWYgPSAnbG9naW4ucGhwP2M9MSc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAkKCcjbmV3UGFzc3dvcmRGb3JtQWxlcnQnKS5zaG93KCk7XHJcbiAgICAgICQoJyNuZXdQYXNzd29yZEZvcm1BbGVydCcpLmh0bWwoZGF0YS5tZXNzYWdlKTtcclxuICAgIH1cclxuICB9LCAnanNvbicpO1xyXG59O1xyXG5cclxud2luZG93LnN1Ym1pdExvZ2luID0gKCkgPT4ge1xyXG4gIGNvbnN0IHVzZXJuYW1lID0gJCgnI3VzZXJuYW1lJykudmFsKCk7XHJcbiAgY29uc3QgcGFzc3dvcmQgPSAkKCcjcGFzc3dvcmQnKS52YWwoKTtcclxuICBpZiAodXNlcm5hbWUgPT09ICcnIHx8IHBhc3N3b3JkID09PSAnJykge1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICB0cnkge1xyXG4gICAgbG9jYWxTdG9yYWdlLmNsZWFyKCk7XHJcbiAgfSBjYXRjaCAoZSkge31cclxuICAkKCcjbG9naW5Gb3JtJykuc3VibWl0KCk7XHJcbn07XHJcblxyXG53aW5kb3cuYXV0aEdvb2dsZSA9ICgpID0+IHtcclxuICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGAke3dpbmRvdy5sb2NhdGlvbi5ocmVmLnNwbGl0KCdsb2dpbi5waHAnKVswXX1sb2dpbi5waHA/Z29vZ2xlPTFgO1xyXG59O1xyXG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICogYm9vdHN0cmFwLXRyYW5zaXRpb24uanMgdjIuMS4xXHJcbiAqIGh0dHA6Ly90d2l0dGVyLmdpdGh1Yi5jb20vYm9vdHN0cmFwL2phdmFzY3JpcHQuaHRtbCN0cmFuc2l0aW9uc1xyXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICogQ29weXJpZ2h0IDIwMTIgVHdpdHRlciwgSW5jLlxyXG4gKlxyXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xyXG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXHJcbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxyXG4gKlxyXG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuICpcclxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxyXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXHJcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxyXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXHJcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG5cclxuIWZ1bmN0aW9uICgkKSB7XHJcblxyXG4gICQoZnVuY3Rpb24gKCkge1xyXG5cclxuICAgIFwidXNlIHN0cmljdFwiOyAvLyBqc2hpbnQgO187XHJcblxyXG5cclxuICAgIC8qIENTUyBUUkFOU0lUSU9OIFNVUFBPUlQgKGh0dHA6Ly93d3cubW9kZXJuaXpyLmNvbS8pXHJcbiAgICAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG4gICAgJC5zdXBwb3J0LnRyYW5zaXRpb24gPSAoZnVuY3Rpb24gKCkge1xyXG5cclxuICAgICAgdmFyIHRyYW5zaXRpb25FbmQgPSAoZnVuY3Rpb24gKCkge1xyXG5cclxuICAgICAgICB2YXIgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdib290c3RyYXAnKVxyXG4gICAgICAgICAgLCB0cmFuc0VuZEV2ZW50TmFtZXMgPSB7XHJcbiAgICAgICAgICAgICAgICdXZWJraXRUcmFuc2l0aW9uJyA6ICd3ZWJraXRUcmFuc2l0aW9uRW5kJ1xyXG4gICAgICAgICAgICAsICAnTW96VHJhbnNpdGlvbicgICAgOiAndHJhbnNpdGlvbmVuZCdcclxuICAgICAgICAgICAgLCAgJ09UcmFuc2l0aW9uJyAgICAgIDogJ29UcmFuc2l0aW9uRW5kIG90cmFuc2l0aW9uZW5kJ1xyXG4gICAgICAgICAgICAsICAndHJhbnNpdGlvbicgICAgICAgOiAndHJhbnNpdGlvbmVuZCdcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgLCBuYW1lXHJcblxyXG4gICAgICAgIGZvciAobmFtZSBpbiB0cmFuc0VuZEV2ZW50TmFtZXMpe1xyXG4gICAgICAgICAgaWYgKGVsLnN0eWxlW25hbWVdICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRyYW5zRW5kRXZlbnROYW1lc1tuYW1lXVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH0oKSlcclxuXHJcbiAgICAgIHJldHVybiB0cmFuc2l0aW9uRW5kICYmIHtcclxuICAgICAgICBlbmQ6IHRyYW5zaXRpb25FbmRcclxuICAgICAgfVxyXG5cclxuICAgIH0pKClcclxuXHJcbiAgfSlcclxuXHJcbn0od2luZG93LmpRdWVyeSk7LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gKiBib290c3RyYXAtYWxlcnQuanMgdjIuMS4xXHJcbiAqIGh0dHA6Ly90d2l0dGVyLmdpdGh1Yi5jb20vYm9vdHN0cmFwL2phdmFzY3JpcHQuaHRtbCNhbGVydHNcclxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gKiBDb3B5cmlnaHQgMjAxMiBUd2l0dGVyLCBJbmMuXHJcbiAqXHJcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XHJcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cclxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XHJcbiAqXHJcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxyXG4gKlxyXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXHJcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcclxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXHJcbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcclxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXHJcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcblxyXG4hZnVuY3Rpb24gKCQpIHtcclxuXHJcbiAgXCJ1c2Ugc3RyaWN0XCI7IC8vIGpzaGludCA7XztcclxuXHJcblxyXG4gLyogQUxFUlQgQ0xBU1MgREVGSU5JVElPTlxyXG4gICogPT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuICB2YXIgZGlzbWlzcyA9ICdbZGF0YS1kaXNtaXNzPVwiYWxlcnRcIl0nXHJcbiAgICAsIEFsZXJ0ID0gZnVuY3Rpb24gKGVsKSB7XHJcbiAgICAgICAgJChlbCkub24oJ2NsaWNrJywgZGlzbWlzcywgdGhpcy5jbG9zZSlcclxuICAgICAgfVxyXG5cclxuICBBbGVydC5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbiAoZSkge1xyXG4gICAgdmFyICR0aGlzID0gJCh0aGlzKVxyXG4gICAgICAsIHNlbGVjdG9yID0gJHRoaXMuYXR0cignZGF0YS10YXJnZXQnKVxyXG4gICAgICAsICRwYXJlbnRcclxuXHJcbiAgICBpZiAoIXNlbGVjdG9yKSB7XHJcbiAgICAgIHNlbGVjdG9yID0gJHRoaXMuYXR0cignaHJlZicpXHJcbiAgICAgIHNlbGVjdG9yID0gc2VsZWN0b3IgJiYgc2VsZWN0b3IucmVwbGFjZSgvLiooPz0jW15cXHNdKiQpLywgJycpIC8vc3RyaXAgZm9yIGllN1xyXG4gICAgfVxyXG5cclxuICAgICRwYXJlbnQgPSAkKHNlbGVjdG9yKVxyXG5cclxuICAgIGUgJiYgZS5wcmV2ZW50RGVmYXVsdCgpXHJcblxyXG4gICAgJHBhcmVudC5sZW5ndGggfHwgKCRwYXJlbnQgPSAkdGhpcy5oYXNDbGFzcygnYWxlcnQnKSA/ICR0aGlzIDogJHRoaXMucGFyZW50KCkpXHJcblxyXG4gICAgJHBhcmVudC50cmlnZ2VyKGUgPSAkLkV2ZW50KCdjbG9zZScpKVxyXG5cclxuICAgIGlmIChlLmlzRGVmYXVsdFByZXZlbnRlZCgpKSByZXR1cm5cclxuXHJcbiAgICAkcGFyZW50LnJlbW92ZUNsYXNzKCdpbicpXHJcblxyXG4gICAgZnVuY3Rpb24gcmVtb3ZlRWxlbWVudCgpIHtcclxuICAgICAgJHBhcmVudFxyXG4gICAgICAgIC50cmlnZ2VyKCdjbG9zZWQnKVxyXG4gICAgICAgIC5yZW1vdmUoKVxyXG4gICAgfVxyXG5cclxuICAgICQuc3VwcG9ydC50cmFuc2l0aW9uICYmICRwYXJlbnQuaGFzQ2xhc3MoJ2ZhZGUnKSA/XHJcbiAgICAgICRwYXJlbnQub24oJC5zdXBwb3J0LnRyYW5zaXRpb24uZW5kLCByZW1vdmVFbGVtZW50KSA6XHJcbiAgICAgIHJlbW92ZUVsZW1lbnQoKVxyXG4gIH1cclxuXHJcblxyXG4gLyogQUxFUlQgUExVR0lOIERFRklOSVRJT05cclxuICAqID09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG4gICQuZm4uYWxlcnQgPSBmdW5jdGlvbiAob3B0aW9uKSB7XHJcbiAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHtcclxuICAgICAgdmFyICR0aGlzID0gJCh0aGlzKVxyXG4gICAgICAgICwgZGF0YSA9ICR0aGlzLmRhdGEoJ2FsZXJ0JylcclxuICAgICAgaWYgKCFkYXRhKSAkdGhpcy5kYXRhKCdhbGVydCcsIChkYXRhID0gbmV3IEFsZXJ0KHRoaXMpKSlcclxuICAgICAgaWYgKHR5cGVvZiBvcHRpb24gPT0gJ3N0cmluZycpIGRhdGFbb3B0aW9uXS5jYWxsKCR0aGlzKVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gICQuZm4uYWxlcnQuQ29uc3RydWN0b3IgPSBBbGVydFxyXG5cclxuXHJcbiAvKiBBTEVSVCBEQVRBLUFQSVxyXG4gICogPT09PT09PT09PT09PT0gKi9cclxuXHJcbiAgJChmdW5jdGlvbiAoKSB7XHJcbiAgICAkKCdib2R5Jykub24oJ2NsaWNrLmFsZXJ0LmRhdGEtYXBpJywgZGlzbWlzcywgQWxlcnQucHJvdG90eXBlLmNsb3NlKVxyXG4gIH0pXHJcblxyXG59KHdpbmRvdy5qUXVlcnkpOy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gKiBib290c3RyYXAtYnV0dG9uLmpzIHYyLjEuMVxyXG4gKiBodHRwOi8vdHdpdHRlci5naXRodWIuY29tL2Jvb3RzdHJhcC9qYXZhc2NyaXB0Lmh0bWwjYnV0dG9uc1xyXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICogQ29weXJpZ2h0IDIwMTIgVHdpdHRlciwgSW5jLlxyXG4gKlxyXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xyXG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXHJcbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxyXG4gKlxyXG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuICpcclxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxyXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXHJcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxyXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXHJcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcblxyXG4hZnVuY3Rpb24gKCQpIHtcclxuXHJcbiAgXCJ1c2Ugc3RyaWN0XCI7IC8vIGpzaGludCA7XztcclxuXHJcblxyXG4gLyogQlVUVE9OIFBVQkxJQyBDTEFTUyBERUZJTklUSU9OXHJcbiAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbiAgdmFyIEJ1dHRvbiA9IGZ1bmN0aW9uIChlbGVtZW50LCBvcHRpb25zKSB7XHJcbiAgICB0aGlzLiRlbGVtZW50ID0gJChlbGVtZW50KVxyXG4gICAgdGhpcy5vcHRpb25zID0gJC5leHRlbmQoe30sICQuZm4uYnV0dG9uLmRlZmF1bHRzLCBvcHRpb25zKVxyXG4gIH1cclxuXHJcbiAgQnV0dG9uLnByb3RvdHlwZS5zZXRTdGF0ZSA9IGZ1bmN0aW9uIChzdGF0ZSkge1xyXG4gICAgdmFyIGQgPSAnZGlzYWJsZWQnXHJcbiAgICAgICwgJGVsID0gdGhpcy4kZWxlbWVudFxyXG4gICAgICAsIGRhdGEgPSAkZWwuZGF0YSgpXHJcbiAgICAgICwgdmFsID0gJGVsLmlzKCdpbnB1dCcpID8gJ3ZhbCcgOiAnaHRtbCdcclxuXHJcbiAgICBzdGF0ZSA9IHN0YXRlICsgJ1RleHQnXHJcbiAgICBkYXRhLnJlc2V0VGV4dCB8fCAkZWwuZGF0YSgncmVzZXRUZXh0JywgJGVsW3ZhbF0oKSlcclxuXHJcbiAgICAkZWxbdmFsXShkYXRhW3N0YXRlXSB8fCB0aGlzLm9wdGlvbnNbc3RhdGVdKVxyXG5cclxuICAgIC8vIHB1c2ggdG8gZXZlbnQgbG9vcCB0byBhbGxvdyBmb3JtcyB0byBzdWJtaXRcclxuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xyXG4gICAgICBzdGF0ZSA9PSAnbG9hZGluZ1RleHQnID9cclxuICAgICAgICAkZWwuYWRkQ2xhc3MoZCkuYXR0cihkLCBkKSA6XHJcbiAgICAgICAgJGVsLnJlbW92ZUNsYXNzKGQpLnJlbW92ZUF0dHIoZClcclxuICAgIH0sIDApXHJcbiAgfVxyXG5cclxuICBCdXR0b24ucHJvdG90eXBlLnRvZ2dsZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciAkcGFyZW50ID0gdGhpcy4kZWxlbWVudC5jbG9zZXN0KCdbZGF0YS10b2dnbGU9XCJidXR0b25zLXJhZGlvXCJdJylcclxuXHJcbiAgICAkcGFyZW50ICYmICRwYXJlbnRcclxuICAgICAgLmZpbmQoJy5hY3RpdmUnKVxyXG4gICAgICAucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpXHJcblxyXG4gICAgdGhpcy4kZWxlbWVudC50b2dnbGVDbGFzcygnYWN0aXZlJylcclxuICB9XHJcblxyXG5cclxuIC8qIEJVVFRPTiBQTFVHSU4gREVGSU5JVElPTlxyXG4gICogPT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG4gICQuZm4uYnV0dG9uID0gZnVuY3Rpb24gKG9wdGlvbikge1xyXG4gICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHZhciAkdGhpcyA9ICQodGhpcylcclxuICAgICAgICAsIGRhdGEgPSAkdGhpcy5kYXRhKCdidXR0b24nKVxyXG4gICAgICAgICwgb3B0aW9ucyA9IHR5cGVvZiBvcHRpb24gPT0gJ29iamVjdCcgJiYgb3B0aW9uXHJcbiAgICAgIGlmICghZGF0YSkgJHRoaXMuZGF0YSgnYnV0dG9uJywgKGRhdGEgPSBuZXcgQnV0dG9uKHRoaXMsIG9wdGlvbnMpKSlcclxuICAgICAgaWYgKG9wdGlvbiA9PSAndG9nZ2xlJykgZGF0YS50b2dnbGUoKVxyXG4gICAgICBlbHNlIGlmIChvcHRpb24pIGRhdGEuc2V0U3RhdGUob3B0aW9uKVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gICQuZm4uYnV0dG9uLmRlZmF1bHRzID0ge1xyXG4gICAgbG9hZGluZ1RleHQ6ICdsb2FkaW5nLi4uJ1xyXG4gIH1cclxuXHJcbiAgJC5mbi5idXR0b24uQ29uc3RydWN0b3IgPSBCdXR0b25cclxuXHJcblxyXG4gLyogQlVUVE9OIERBVEEtQVBJXHJcbiAgKiA9PT09PT09PT09PT09PT0gKi9cclxuXHJcbiAgJChmdW5jdGlvbiAoKSB7XHJcbiAgICAkKCdib2R5Jykub24oJ2NsaWNrLmJ1dHRvbi5kYXRhLWFwaScsICdbZGF0YS10b2dnbGVePWJ1dHRvbl0nLCBmdW5jdGlvbiAoIGUgKSB7XHJcbiAgICAgIHZhciAkYnRuID0gJChlLnRhcmdldClcclxuICAgICAgaWYgKCEkYnRuLmhhc0NsYXNzKCdidG4nKSkgJGJ0biA9ICRidG4uY2xvc2VzdCgnLmJ0bicpXHJcbiAgICAgICRidG4uYnV0dG9uKCd0b2dnbGUnKVxyXG4gICAgfSlcclxuICB9KVxyXG5cclxufSh3aW5kb3cualF1ZXJ5KTsvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAqIGJvb3RzdHJhcC1jYXJvdXNlbC5qcyB2Mi4xLjFcclxuICogaHR0cDovL3R3aXR0ZXIuZ2l0aHViLmNvbS9ib290c3RyYXAvamF2YXNjcmlwdC5odG1sI2Nhcm91c2VsXHJcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICogQ29weXJpZ2h0IDIwMTIgVHdpdHRlciwgSW5jLlxyXG4gKlxyXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xyXG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXHJcbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxyXG4gKlxyXG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuICpcclxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxyXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXHJcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxyXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXHJcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG5cclxuIWZ1bmN0aW9uICgkKSB7XHJcblxyXG4gIFwidXNlIHN0cmljdFwiOyAvLyBqc2hpbnQgO187XHJcblxyXG5cclxuIC8qIENBUk9VU0VMIENMQVNTIERFRklOSVRJT05cclxuICAqID09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbiAgdmFyIENhcm91c2VsID0gZnVuY3Rpb24gKGVsZW1lbnQsIG9wdGlvbnMpIHtcclxuICAgIHRoaXMuJGVsZW1lbnQgPSAkKGVsZW1lbnQpXHJcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zXHJcbiAgICB0aGlzLm9wdGlvbnMuc2xpZGUgJiYgdGhpcy5zbGlkZSh0aGlzLm9wdGlvbnMuc2xpZGUpXHJcbiAgICB0aGlzLm9wdGlvbnMucGF1c2UgPT0gJ2hvdmVyJyAmJiB0aGlzLiRlbGVtZW50XHJcbiAgICAgIC5vbignbW91c2VlbnRlcicsICQucHJveHkodGhpcy5wYXVzZSwgdGhpcykpXHJcbiAgICAgIC5vbignbW91c2VsZWF2ZScsICQucHJveHkodGhpcy5jeWNsZSwgdGhpcykpXHJcbiAgfVxyXG5cclxuICBDYXJvdXNlbC5wcm90b3R5cGUgPSB7XHJcblxyXG4gICAgY3ljbGU6IGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgIGlmICghZSkgdGhpcy5wYXVzZWQgPSBmYWxzZVxyXG4gICAgICB0aGlzLm9wdGlvbnMuaW50ZXJ2YWxcclxuICAgICAgICAmJiAhdGhpcy5wYXVzZWRcclxuICAgICAgICAmJiAodGhpcy5pbnRlcnZhbCA9IHNldEludGVydmFsKCQucHJveHkodGhpcy5uZXh0LCB0aGlzKSwgdGhpcy5vcHRpb25zLmludGVydmFsKSlcclxuICAgICAgcmV0dXJuIHRoaXNcclxuICAgIH1cclxuXHJcbiAgLCB0bzogZnVuY3Rpb24gKHBvcykge1xyXG4gICAgICB2YXIgJGFjdGl2ZSA9IHRoaXMuJGVsZW1lbnQuZmluZCgnLml0ZW0uYWN0aXZlJylcclxuICAgICAgICAsIGNoaWxkcmVuID0gJGFjdGl2ZS5wYXJlbnQoKS5jaGlsZHJlbigpXHJcbiAgICAgICAgLCBhY3RpdmVQb3MgPSBjaGlsZHJlbi5pbmRleCgkYWN0aXZlKVxyXG4gICAgICAgICwgdGhhdCA9IHRoaXNcclxuXHJcbiAgICAgIGlmIChwb3MgPiAoY2hpbGRyZW4ubGVuZ3RoIC0gMSkgfHwgcG9zIDwgMCkgcmV0dXJuXHJcblxyXG4gICAgICBpZiAodGhpcy5zbGlkaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuJGVsZW1lbnQub25lKCdzbGlkJywgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgdGhhdC50byhwb3MpXHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGFjdGl2ZVBvcyA9PSBwb3MpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wYXVzZSgpLmN5Y2xlKClcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuc2xpZGUocG9zID4gYWN0aXZlUG9zID8gJ25leHQnIDogJ3ByZXYnLCAkKGNoaWxkcmVuW3Bvc10pKVxyXG4gICAgfVxyXG5cclxuICAsIHBhdXNlOiBmdW5jdGlvbiAoZSkge1xyXG4gICAgICBpZiAoIWUpIHRoaXMucGF1c2VkID0gdHJ1ZVxyXG4gICAgICBpZiAodGhpcy4kZWxlbWVudC5maW5kKCcubmV4dCwgLnByZXYnKS5sZW5ndGggJiYgJC5zdXBwb3J0LnRyYW5zaXRpb24uZW5kKSB7XHJcbiAgICAgICAgdGhpcy4kZWxlbWVudC50cmlnZ2VyKCQuc3VwcG9ydC50cmFuc2l0aW9uLmVuZClcclxuICAgICAgICB0aGlzLmN5Y2xlKClcclxuICAgICAgfVxyXG4gICAgICBjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWwpXHJcbiAgICAgIHRoaXMuaW50ZXJ2YWwgPSBudWxsXHJcbiAgICAgIHJldHVybiB0aGlzXHJcbiAgICB9XHJcblxyXG4gICwgbmV4dDogZnVuY3Rpb24gKCkge1xyXG4gICAgICBpZiAodGhpcy5zbGlkaW5nKSByZXR1cm5cclxuICAgICAgcmV0dXJuIHRoaXMuc2xpZGUoJ25leHQnKVxyXG4gICAgfVxyXG5cclxuICAsIHByZXY6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgaWYgKHRoaXMuc2xpZGluZykgcmV0dXJuXHJcbiAgICAgIHJldHVybiB0aGlzLnNsaWRlKCdwcmV2JylcclxuICAgIH1cclxuXHJcbiAgLCBzbGlkZTogZnVuY3Rpb24gKHR5cGUsIG5leHQpIHtcclxuICAgICAgdmFyICRhY3RpdmUgPSB0aGlzLiRlbGVtZW50LmZpbmQoJy5pdGVtLmFjdGl2ZScpXHJcbiAgICAgICAgLCAkbmV4dCA9IG5leHQgfHwgJGFjdGl2ZVt0eXBlXSgpXHJcbiAgICAgICAgLCBpc0N5Y2xpbmcgPSB0aGlzLmludGVydmFsXHJcbiAgICAgICAgLCBkaXJlY3Rpb24gPSB0eXBlID09ICduZXh0JyA/ICdsZWZ0JyA6ICdyaWdodCdcclxuICAgICAgICAsIGZhbGxiYWNrICA9IHR5cGUgPT0gJ25leHQnID8gJ2ZpcnN0JyA6ICdsYXN0J1xyXG4gICAgICAgICwgdGhhdCA9IHRoaXNcclxuICAgICAgICAsIGUgPSAkLkV2ZW50KCdzbGlkZScsIHtcclxuICAgICAgICAgICAgcmVsYXRlZFRhcmdldDogJG5leHRbMF1cclxuICAgICAgICAgIH0pXHJcblxyXG4gICAgICB0aGlzLnNsaWRpbmcgPSB0cnVlXHJcblxyXG4gICAgICBpc0N5Y2xpbmcgJiYgdGhpcy5wYXVzZSgpXHJcblxyXG4gICAgICAkbmV4dCA9ICRuZXh0Lmxlbmd0aCA/ICRuZXh0IDogdGhpcy4kZWxlbWVudC5maW5kKCcuaXRlbScpW2ZhbGxiYWNrXSgpXHJcblxyXG4gICAgICBpZiAoJG5leHQuaGFzQ2xhc3MoJ2FjdGl2ZScpKSByZXR1cm5cclxuXHJcbiAgICAgIGlmICgkLnN1cHBvcnQudHJhbnNpdGlvbiAmJiB0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCdzbGlkZScpKSB7XHJcbiAgICAgICAgdGhpcy4kZWxlbWVudC50cmlnZ2VyKGUpXHJcbiAgICAgICAgaWYgKGUuaXNEZWZhdWx0UHJldmVudGVkKCkpIHJldHVyblxyXG4gICAgICAgICRuZXh0LmFkZENsYXNzKHR5cGUpXHJcbiAgICAgICAgJG5leHRbMF0ub2Zmc2V0V2lkdGggLy8gZm9yY2UgcmVmbG93XHJcbiAgICAgICAgJGFjdGl2ZS5hZGRDbGFzcyhkaXJlY3Rpb24pXHJcbiAgICAgICAgJG5leHQuYWRkQ2xhc3MoZGlyZWN0aW9uKVxyXG4gICAgICAgIHRoaXMuJGVsZW1lbnQub25lKCQuc3VwcG9ydC50cmFuc2l0aW9uLmVuZCwgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgJG5leHQucmVtb3ZlQ2xhc3MoW3R5cGUsIGRpcmVjdGlvbl0uam9pbignICcpKS5hZGRDbGFzcygnYWN0aXZlJylcclxuICAgICAgICAgICRhY3RpdmUucmVtb3ZlQ2xhc3MoWydhY3RpdmUnLCBkaXJlY3Rpb25dLmpvaW4oJyAnKSlcclxuICAgICAgICAgIHRoYXQuc2xpZGluZyA9IGZhbHNlXHJcbiAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgdGhhdC4kZWxlbWVudC50cmlnZ2VyKCdzbGlkJykgfSwgMClcclxuICAgICAgICB9KVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuJGVsZW1lbnQudHJpZ2dlcihlKVxyXG4gICAgICAgIGlmIChlLmlzRGVmYXVsdFByZXZlbnRlZCgpKSByZXR1cm5cclxuICAgICAgICAkYWN0aXZlLnJlbW92ZUNsYXNzKCdhY3RpdmUnKVxyXG4gICAgICAgICRuZXh0LmFkZENsYXNzKCdhY3RpdmUnKVxyXG4gICAgICAgIHRoaXMuc2xpZGluZyA9IGZhbHNlXHJcbiAgICAgICAgdGhpcy4kZWxlbWVudC50cmlnZ2VyKCdzbGlkJylcclxuICAgICAgfVxyXG5cclxuICAgICAgaXNDeWNsaW5nICYmIHRoaXMuY3ljbGUoKVxyXG5cclxuICAgICAgcmV0dXJuIHRoaXNcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuXHJcbiAvKiBDQVJPVVNFTCBQTFVHSU4gREVGSU5JVElPTlxyXG4gICogPT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbiAgJC5mbi5jYXJvdXNlbCA9IGZ1bmN0aW9uIChvcHRpb24pIHtcclxuICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkge1xyXG4gICAgICB2YXIgJHRoaXMgPSAkKHRoaXMpXHJcbiAgICAgICAgLCBkYXRhID0gJHRoaXMuZGF0YSgnY2Fyb3VzZWwnKVxyXG4gICAgICAgICwgb3B0aW9ucyA9ICQuZXh0ZW5kKHt9LCAkLmZuLmNhcm91c2VsLmRlZmF1bHRzLCB0eXBlb2Ygb3B0aW9uID09ICdvYmplY3QnICYmIG9wdGlvbilcclxuICAgICAgICAsIGFjdGlvbiA9IHR5cGVvZiBvcHRpb24gPT0gJ3N0cmluZycgPyBvcHRpb24gOiBvcHRpb25zLnNsaWRlXHJcbiAgICAgIGlmICghZGF0YSkgJHRoaXMuZGF0YSgnY2Fyb3VzZWwnLCAoZGF0YSA9IG5ldyBDYXJvdXNlbCh0aGlzLCBvcHRpb25zKSkpXHJcbiAgICAgIGlmICh0eXBlb2Ygb3B0aW9uID09ICdudW1iZXInKSBkYXRhLnRvKG9wdGlvbilcclxuICAgICAgZWxzZSBpZiAoYWN0aW9uKSBkYXRhW2FjdGlvbl0oKVxyXG4gICAgICBlbHNlIGlmIChvcHRpb25zLmludGVydmFsKSBkYXRhLmN5Y2xlKClcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICAkLmZuLmNhcm91c2VsLmRlZmF1bHRzID0ge1xyXG4gICAgaW50ZXJ2YWw6IDUwMDBcclxuICAsIHBhdXNlOiAnaG92ZXInXHJcbiAgfVxyXG5cclxuICAkLmZuLmNhcm91c2VsLkNvbnN0cnVjdG9yID0gQ2Fyb3VzZWxcclxuXHJcblxyXG4gLyogQ0FST1VTRUwgREFUQS1BUElcclxuICAqID09PT09PT09PT09PT09PT09ICovXHJcblxyXG4gICQoZnVuY3Rpb24gKCkge1xyXG4gICAgJCgnYm9keScpLm9uKCdjbGljay5jYXJvdXNlbC5kYXRhLWFwaScsICdbZGF0YS1zbGlkZV0nLCBmdW5jdGlvbiAoIGUgKSB7XHJcbiAgICAgIHZhciAkdGhpcyA9ICQodGhpcyksIGhyZWZcclxuICAgICAgICAsICR0YXJnZXQgPSAkKCR0aGlzLmF0dHIoJ2RhdGEtdGFyZ2V0JykgfHwgKGhyZWYgPSAkdGhpcy5hdHRyKCdocmVmJykpICYmIGhyZWYucmVwbGFjZSgvLiooPz0jW15cXHNdKyQpLywgJycpKSAvL3N0cmlwIGZvciBpZTdcclxuICAgICAgICAsIG9wdGlvbnMgPSAhJHRhcmdldC5kYXRhKCdtb2RhbCcpICYmICQuZXh0ZW5kKHt9LCAkdGFyZ2V0LmRhdGEoKSwgJHRoaXMuZGF0YSgpKVxyXG4gICAgICAkdGFyZ2V0LmNhcm91c2VsKG9wdGlvbnMpXHJcbiAgICAgIGUucHJldmVudERlZmF1bHQoKVxyXG4gICAgfSlcclxuICB9KVxyXG5cclxufSh3aW5kb3cualF1ZXJ5KTsvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAqIGJvb3RzdHJhcC1jb2xsYXBzZS5qcyB2Mi4xLjFcclxuICogaHR0cDovL3R3aXR0ZXIuZ2l0aHViLmNvbS9ib290c3RyYXAvamF2YXNjcmlwdC5odG1sI2NvbGxhcHNlXHJcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICogQ29weXJpZ2h0IDIwMTIgVHdpdHRlciwgSW5jLlxyXG4gKlxyXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xyXG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXHJcbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxyXG4gKlxyXG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuICpcclxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxyXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXHJcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxyXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXHJcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcblxyXG4hZnVuY3Rpb24gKCQpIHtcclxuXHJcbiAgXCJ1c2Ugc3RyaWN0XCI7IC8vIGpzaGludCA7XztcclxuXHJcblxyXG4gLyogQ09MTEFQU0UgUFVCTElDIENMQVNTIERFRklOSVRJT05cclxuICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG4gIHZhciBDb2xsYXBzZSA9IGZ1bmN0aW9uIChlbGVtZW50LCBvcHRpb25zKSB7XHJcbiAgICB0aGlzLiRlbGVtZW50ID0gJChlbGVtZW50KVxyXG4gICAgdGhpcy5vcHRpb25zID0gJC5leHRlbmQoe30sICQuZm4uY29sbGFwc2UuZGVmYXVsdHMsIG9wdGlvbnMpXHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5wYXJlbnQpIHtcclxuICAgICAgdGhpcy4kcGFyZW50ID0gJCh0aGlzLm9wdGlvbnMucGFyZW50KVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMub3B0aW9ucy50b2dnbGUgJiYgdGhpcy50b2dnbGUoKVxyXG4gIH1cclxuXHJcbiAgQ29sbGFwc2UucHJvdG90eXBlID0ge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yOiBDb2xsYXBzZVxyXG5cclxuICAsIGRpbWVuc2lvbjogZnVuY3Rpb24gKCkge1xyXG4gICAgICB2YXIgaGFzV2lkdGggPSB0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCd3aWR0aCcpXHJcbiAgICAgIHJldHVybiBoYXNXaWR0aCA/ICd3aWR0aCcgOiAnaGVpZ2h0J1xyXG4gICAgfVxyXG5cclxuICAsIHNob3c6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgdmFyIGRpbWVuc2lvblxyXG4gICAgICAgICwgc2Nyb2xsXHJcbiAgICAgICAgLCBhY3RpdmVzXHJcbiAgICAgICAgLCBoYXNEYXRhXHJcblxyXG4gICAgICBpZiAodGhpcy50cmFuc2l0aW9uaW5nKSByZXR1cm5cclxuXHJcbiAgICAgIGRpbWVuc2lvbiA9IHRoaXMuZGltZW5zaW9uKClcclxuICAgICAgc2Nyb2xsID0gJC5jYW1lbENhc2UoWydzY3JvbGwnLCBkaW1lbnNpb25dLmpvaW4oJy0nKSlcclxuICAgICAgYWN0aXZlcyA9IHRoaXMuJHBhcmVudCAmJiB0aGlzLiRwYXJlbnQuZmluZCgnPiAuYWNjb3JkaW9uLWdyb3VwID4gLmluJylcclxuXHJcbiAgICAgIGlmIChhY3RpdmVzICYmIGFjdGl2ZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgaGFzRGF0YSA9IGFjdGl2ZXMuZGF0YSgnY29sbGFwc2UnKVxyXG4gICAgICAgIGlmIChoYXNEYXRhICYmIGhhc0RhdGEudHJhbnNpdGlvbmluZykgcmV0dXJuXHJcbiAgICAgICAgYWN0aXZlcy5jb2xsYXBzZSgnaGlkZScpXHJcbiAgICAgICAgaGFzRGF0YSB8fCBhY3RpdmVzLmRhdGEoJ2NvbGxhcHNlJywgbnVsbClcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy4kZWxlbWVudFtkaW1lbnNpb25dKDApXHJcbiAgICAgIHRoaXMudHJhbnNpdGlvbignYWRkQ2xhc3MnLCAkLkV2ZW50KCdzaG93JyksICdzaG93bicpXHJcbiAgICAgICQuc3VwcG9ydC50cmFuc2l0aW9uICYmIHRoaXMuJGVsZW1lbnRbZGltZW5zaW9uXSh0aGlzLiRlbGVtZW50WzBdW3Njcm9sbF0pXHJcbiAgICB9XHJcblxyXG4gICwgaGlkZTogZnVuY3Rpb24gKCkge1xyXG4gICAgICB2YXIgZGltZW5zaW9uXHJcbiAgICAgIGlmICh0aGlzLnRyYW5zaXRpb25pbmcpIHJldHVyblxyXG4gICAgICBkaW1lbnNpb24gPSB0aGlzLmRpbWVuc2lvbigpXHJcbiAgICAgIHRoaXMucmVzZXQodGhpcy4kZWxlbWVudFtkaW1lbnNpb25dKCkpXHJcbiAgICAgIHRoaXMudHJhbnNpdGlvbigncmVtb3ZlQ2xhc3MnLCAkLkV2ZW50KCdoaWRlJyksICdoaWRkZW4nKVxyXG4gICAgICB0aGlzLiRlbGVtZW50W2RpbWVuc2lvbl0oMClcclxuICAgIH1cclxuXHJcbiAgLCByZXNldDogZnVuY3Rpb24gKHNpemUpIHtcclxuICAgICAgdmFyIGRpbWVuc2lvbiA9IHRoaXMuZGltZW5zaW9uKClcclxuXHJcbiAgICAgIHRoaXMuJGVsZW1lbnRcclxuICAgICAgICAucmVtb3ZlQ2xhc3MoJ2NvbGxhcHNlJylcclxuICAgICAgICBbZGltZW5zaW9uXShzaXplIHx8ICdhdXRvJylcclxuICAgICAgICBbMF0ub2Zmc2V0V2lkdGhcclxuXHJcbiAgICAgIHRoaXMuJGVsZW1lbnRbc2l6ZSAhPT0gbnVsbCA/ICdhZGRDbGFzcycgOiAncmVtb3ZlQ2xhc3MnXSgnY29sbGFwc2UnKVxyXG5cclxuICAgICAgcmV0dXJuIHRoaXNcclxuICAgIH1cclxuXHJcbiAgLCB0cmFuc2l0aW9uOiBmdW5jdGlvbiAobWV0aG9kLCBzdGFydEV2ZW50LCBjb21wbGV0ZUV2ZW50KSB7XHJcbiAgICAgIHZhciB0aGF0ID0gdGhpc1xyXG4gICAgICAgICwgY29tcGxldGUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGlmIChzdGFydEV2ZW50LnR5cGUgPT0gJ3Nob3cnKSB0aGF0LnJlc2V0KClcclxuICAgICAgICAgICAgdGhhdC50cmFuc2l0aW9uaW5nID0gMFxyXG4gICAgICAgICAgICB0aGF0LiRlbGVtZW50LnRyaWdnZXIoY29tcGxldGVFdmVudClcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuJGVsZW1lbnQudHJpZ2dlcihzdGFydEV2ZW50KVxyXG5cclxuICAgICAgaWYgKHN0YXJ0RXZlbnQuaXNEZWZhdWx0UHJldmVudGVkKCkpIHJldHVyblxyXG5cclxuICAgICAgdGhpcy50cmFuc2l0aW9uaW5nID0gMVxyXG5cclxuICAgICAgdGhpcy4kZWxlbWVudFttZXRob2RdKCdpbicpXHJcblxyXG4gICAgICAkLnN1cHBvcnQudHJhbnNpdGlvbiAmJiB0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCdjb2xsYXBzZScpID9cclxuICAgICAgICB0aGlzLiRlbGVtZW50Lm9uZSgkLnN1cHBvcnQudHJhbnNpdGlvbi5lbmQsIGNvbXBsZXRlKSA6XHJcbiAgICAgICAgY29tcGxldGUoKVxyXG4gICAgfVxyXG5cclxuICAsIHRvZ2dsZTogZnVuY3Rpb24gKCkge1xyXG4gICAgICB0aGlzW3RoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoJ2luJykgPyAnaGlkZScgOiAnc2hvdyddKClcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuXHJcbiAvKiBDT0xMQVBTSUJMRSBQTFVHSU4gREVGSU5JVElPTlxyXG4gICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG4gICQuZm4uY29sbGFwc2UgPSBmdW5jdGlvbiAob3B0aW9uKSB7XHJcbiAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHtcclxuICAgICAgdmFyICR0aGlzID0gJCh0aGlzKVxyXG4gICAgICAgICwgZGF0YSA9ICR0aGlzLmRhdGEoJ2NvbGxhcHNlJylcclxuICAgICAgICAsIG9wdGlvbnMgPSB0eXBlb2Ygb3B0aW9uID09ICdvYmplY3QnICYmIG9wdGlvblxyXG4gICAgICBpZiAoIWRhdGEpICR0aGlzLmRhdGEoJ2NvbGxhcHNlJywgKGRhdGEgPSBuZXcgQ29sbGFwc2UodGhpcywgb3B0aW9ucykpKVxyXG4gICAgICBpZiAodHlwZW9mIG9wdGlvbiA9PSAnc3RyaW5nJykgZGF0YVtvcHRpb25dKClcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICAkLmZuLmNvbGxhcHNlLmRlZmF1bHRzID0ge1xyXG4gICAgdG9nZ2xlOiB0cnVlXHJcbiAgfVxyXG5cclxuICAkLmZuLmNvbGxhcHNlLkNvbnN0cnVjdG9yID0gQ29sbGFwc2VcclxuXHJcblxyXG4gLyogQ09MTEFQU0lCTEUgREFUQS1BUElcclxuICAqID09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG4gICQoZnVuY3Rpb24gKCkge1xyXG4gICAgJCgnYm9keScpLm9uKCdjbGljay5jb2xsYXBzZS5kYXRhLWFwaScsICdbZGF0YS10b2dnbGU9Y29sbGFwc2VdJywgZnVuY3Rpb24gKGUpIHtcclxuICAgICAgdmFyICR0aGlzID0gJCh0aGlzKSwgaHJlZlxyXG4gICAgICAgICwgdGFyZ2V0ID0gJHRoaXMuYXR0cignZGF0YS10YXJnZXQnKVxyXG4gICAgICAgICAgfHwgZS5wcmV2ZW50RGVmYXVsdCgpXHJcbiAgICAgICAgICB8fCAoaHJlZiA9ICR0aGlzLmF0dHIoJ2hyZWYnKSkgJiYgaHJlZi5yZXBsYWNlKC8uKig/PSNbXlxcc10rJCkvLCAnJykgLy9zdHJpcCBmb3IgaWU3XHJcbiAgICAgICAgLCBvcHRpb24gPSAkKHRhcmdldCkuZGF0YSgnY29sbGFwc2UnKSA/ICd0b2dnbGUnIDogJHRoaXMuZGF0YSgpXHJcbiAgICAgICR0aGlzWyQodGFyZ2V0KS5oYXNDbGFzcygnaW4nKSA/ICdhZGRDbGFzcycgOiAncmVtb3ZlQ2xhc3MnXSgnY29sbGFwc2VkJylcclxuICAgICAgJCh0YXJnZXQpLmNvbGxhcHNlKG9wdGlvbilcclxuICAgIH0pXHJcbiAgfSlcclxuXHJcbn0od2luZG93LmpRdWVyeSk7LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAqIGJvb3RzdHJhcC1kcm9wZG93bi5qcyB2Mi4xLjFcclxuICogaHR0cDovL3R3aXR0ZXIuZ2l0aHViLmNvbS9ib290c3RyYXAvamF2YXNjcmlwdC5odG1sI2Ryb3Bkb3duc1xyXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICogQ29weXJpZ2h0IDIwMTIgVHdpdHRlciwgSW5jLlxyXG4gKlxyXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xyXG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXHJcbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxyXG4gKlxyXG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuICpcclxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxyXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXHJcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxyXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXHJcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcblxyXG4hZnVuY3Rpb24gKCQpIHtcclxuXHJcbiAgXCJ1c2Ugc3RyaWN0XCI7IC8vIGpzaGludCA7XztcclxuXHJcblxyXG4gLyogRFJPUERPV04gQ0xBU1MgREVGSU5JVElPTlxyXG4gICogPT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuICB2YXIgdG9nZ2xlID0gJ1tkYXRhLXRvZ2dsZT1kcm9wZG93bl0nXHJcbiAgICAsIERyb3Bkb3duID0gZnVuY3Rpb24gKGVsZW1lbnQpIHtcclxuICAgICAgICB2YXIgJGVsID0gJChlbGVtZW50KS5vbignY2xpY2suZHJvcGRvd24uZGF0YS1hcGknLCB0aGlzLnRvZ2dsZSlcclxuICAgICAgICAkKCdodG1sJykub24oJ2NsaWNrLmRyb3Bkb3duLmRhdGEtYXBpJywgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgJGVsLnBhcmVudCgpLnJlbW92ZUNsYXNzKCdvcGVuJylcclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcblxyXG4gIERyb3Bkb3duLnByb3RvdHlwZSA9IHtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcjogRHJvcGRvd25cclxuXHJcbiAgLCB0b2dnbGU6IGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgIHZhciAkdGhpcyA9ICQodGhpcylcclxuICAgICAgICAsICRwYXJlbnRcclxuICAgICAgICAsIGlzQWN0aXZlXHJcblxyXG4gICAgICBpZiAoJHRoaXMuaXMoJy5kaXNhYmxlZCwgOmRpc2FibGVkJykpIHJldHVyblxyXG5cclxuICAgICAgJHBhcmVudCA9IGdldFBhcmVudCgkdGhpcylcclxuXHJcbiAgICAgIGlzQWN0aXZlID0gJHBhcmVudC5oYXNDbGFzcygnb3BlbicpXHJcblxyXG4gICAgICBjbGVhck1lbnVzKClcclxuXHJcbiAgICAgIGlmICghaXNBY3RpdmUpIHtcclxuICAgICAgICAkcGFyZW50LnRvZ2dsZUNsYXNzKCdvcGVuJylcclxuICAgICAgICAkdGhpcy5mb2N1cygpXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBmYWxzZVxyXG4gICAgfVxyXG5cclxuICAsIGtleWRvd246IGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgIHZhciAkdGhpc1xyXG4gICAgICAgICwgJGl0ZW1zXHJcbiAgICAgICAgLCAkYWN0aXZlXHJcbiAgICAgICAgLCAkcGFyZW50XHJcbiAgICAgICAgLCBpc0FjdGl2ZVxyXG4gICAgICAgICwgaW5kZXhcclxuXHJcbiAgICAgIGlmICghLygzOHw0MHwyNykvLnRlc3QoZS5rZXlDb2RlKSkgcmV0dXJuXHJcblxyXG4gICAgICAkdGhpcyA9ICQodGhpcylcclxuXHJcbiAgICAgIGUucHJldmVudERlZmF1bHQoKVxyXG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpXHJcblxyXG4gICAgICBpZiAoJHRoaXMuaXMoJy5kaXNhYmxlZCwgOmRpc2FibGVkJykpIHJldHVyblxyXG5cclxuICAgICAgJHBhcmVudCA9IGdldFBhcmVudCgkdGhpcylcclxuXHJcbiAgICAgIGlzQWN0aXZlID0gJHBhcmVudC5oYXNDbGFzcygnb3BlbicpXHJcblxyXG4gICAgICBpZiAoIWlzQWN0aXZlIHx8IChpc0FjdGl2ZSAmJiBlLmtleUNvZGUgPT0gMjcpKSByZXR1cm4gJHRoaXMuY2xpY2soKVxyXG5cclxuICAgICAgJGl0ZW1zID0gJCgnW3JvbGU9bWVudV0gbGk6bm90KC5kaXZpZGVyKSBhJywgJHBhcmVudClcclxuXHJcbiAgICAgIGlmICghJGl0ZW1zLmxlbmd0aCkgcmV0dXJuXHJcblxyXG4gICAgICBpbmRleCA9ICRpdGVtcy5pbmRleCgkaXRlbXMuZmlsdGVyKCc6Zm9jdXMnKSlcclxuXHJcbiAgICAgIGlmIChlLmtleUNvZGUgPT0gMzggJiYgaW5kZXggPiAwKSBpbmRleC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVwXHJcbiAgICAgIGlmIChlLmtleUNvZGUgPT0gNDAgJiYgaW5kZXggPCAkaXRlbXMubGVuZ3RoIC0gMSkgaW5kZXgrKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvd25cclxuICAgICAgaWYgKCF+aW5kZXgpIGluZGV4ID0gMFxyXG5cclxuICAgICAgJGl0ZW1zXHJcbiAgICAgICAgLmVxKGluZGV4KVxyXG4gICAgICAgIC5mb2N1cygpXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgZnVuY3Rpb24gY2xlYXJNZW51cygpIHtcclxuICAgIGdldFBhcmVudCgkKHRvZ2dsZSkpXHJcbiAgICAgIC5yZW1vdmVDbGFzcygnb3BlbicpXHJcbiAgfVxyXG5cclxuICBmdW5jdGlvbiBnZXRQYXJlbnQoJHRoaXMpIHtcclxuICAgIHZhciBzZWxlY3RvciA9ICR0aGlzLmF0dHIoJ2RhdGEtdGFyZ2V0JylcclxuICAgICAgLCAkcGFyZW50XHJcblxyXG4gICAgaWYgKCFzZWxlY3Rvcikge1xyXG4gICAgICBzZWxlY3RvciA9ICR0aGlzLmF0dHIoJ2hyZWYnKVxyXG4gICAgICBzZWxlY3RvciA9IHNlbGVjdG9yICYmIC8jLy50ZXN0KHNlbGVjdG9yKSAmJiBzZWxlY3Rvci5yZXBsYWNlKC8uKig/PSNbXlxcc10qJCkvLCAnJykgLy9zdHJpcCBmb3IgaWU3XHJcbiAgICB9XHJcblxyXG4gICAgJHBhcmVudCA9ICQoc2VsZWN0b3IpXHJcbiAgICAkcGFyZW50Lmxlbmd0aCB8fCAoJHBhcmVudCA9ICR0aGlzLnBhcmVudCgpKVxyXG5cclxuICAgIHJldHVybiAkcGFyZW50XHJcbiAgfVxyXG5cclxuXHJcbiAgLyogRFJPUERPV04gUExVR0lOIERFRklOSVRJT05cclxuICAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuICAkLmZuLmRyb3Bkb3duID0gZnVuY3Rpb24gKG9wdGlvbikge1xyXG4gICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHZhciAkdGhpcyA9ICQodGhpcylcclxuICAgICAgICAsIGRhdGEgPSAkdGhpcy5kYXRhKCdkcm9wZG93bicpXHJcbiAgICAgIGlmICghZGF0YSkgJHRoaXMuZGF0YSgnZHJvcGRvd24nLCAoZGF0YSA9IG5ldyBEcm9wZG93bih0aGlzKSkpXHJcbiAgICAgIGlmICh0eXBlb2Ygb3B0aW9uID09ICdzdHJpbmcnKSBkYXRhW29wdGlvbl0uY2FsbCgkdGhpcylcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICAkLmZuLmRyb3Bkb3duLkNvbnN0cnVjdG9yID0gRHJvcGRvd25cclxuXHJcblxyXG4gIC8qIEFQUExZIFRPIFNUQU5EQVJEIERST1BET1dOIEVMRU1FTlRTXHJcbiAgICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbiAgJChmdW5jdGlvbiAoKSB7XHJcbiAgICAkKCdodG1sJylcclxuICAgICAgLm9uKCdjbGljay5kcm9wZG93bi5kYXRhLUFwaSB0b3VjaHN0YXJ0LmRyb3Bkb3duLmRhdGEtQXBpJywgY2xlYXJNZW51cylcclxuICAgICQoJ2JvZHknKVxyXG4gICAgICAub24oJ2NsaWNrLmRyb3Bkb3duIHRvdWNoc3RhcnQuZHJvcGRvd24uZGF0YS1hcGknLCAnLmRyb3Bkb3duIGZvcm0nLCBmdW5jdGlvbiAoZSkgeyBlLnN0b3BQcm9wYWdhdGlvbigpIH0pXHJcbiAgICAgIC5vbignY2xpY2suZHJvcGRvd24uZGF0YS1BcGkgdG91Y2hzdGFydC5kcm9wZG93bi5kYXRhLUFwaScgICwgdG9nZ2xlLCBEcm9wZG93bi5wcm90b3R5cGUudG9nZ2xlKVxyXG4gICAgICAub24oJ2tleWRvd24uZHJvcGRvd24uZGF0YS1BcGkgdG91Y2hzdGFydC5kcm9wZG93bi5kYXRhLUFwaScsIHRvZ2dsZSArICcsIFtyb2xlPW1lbnVdJyAsIERyb3Bkb3duLnByb3RvdHlwZS5rZXlkb3duKVxyXG4gIH0pXHJcblxyXG59KHdpbmRvdy5qUXVlcnkpOy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gKiBib290c3RyYXAtbW9kYWwuanMgdjIuMS4xXHJcbiAqIGh0dHA6Ly90d2l0dGVyLmdpdGh1Yi5jb20vYm9vdHN0cmFwL2phdmFzY3JpcHQuaHRtbCNtb2RhbHNcclxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAqIENvcHlyaWdodCAyMDEyIFR3aXR0ZXIsIEluYy5cclxuICpcclxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcclxuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxyXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcclxuICpcclxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXHJcbiAqXHJcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcclxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxyXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cclxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxyXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cclxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG5cclxuIWZ1bmN0aW9uICgkKSB7XHJcblxyXG4gIFwidXNlIHN0cmljdFwiOyAvLyBqc2hpbnQgO187XHJcblxyXG5cclxuIC8qIE1PREFMIENMQVNTIERFRklOSVRJT05cclxuICAqID09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbiAgdmFyIE1vZGFsID0gZnVuY3Rpb24gKGVsZW1lbnQsIG9wdGlvbnMpIHtcclxuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnNcclxuICAgIHRoaXMuJGVsZW1lbnQgPSAkKGVsZW1lbnQpXHJcbiAgICAgIC5kZWxlZ2F0ZSgnW2RhdGEtZGlzbWlzcz1cIm1vZGFsXCJdJywgJ2NsaWNrLmRpc21pc3MubW9kYWwnLCAkLnByb3h5KHRoaXMuaGlkZSwgdGhpcykpXHJcbiAgICB0aGlzLm9wdGlvbnMucmVtb3RlICYmIHRoaXMuJGVsZW1lbnQuZmluZCgnLm1vZGFsLWJvZHknKS5sb2FkKHRoaXMub3B0aW9ucy5yZW1vdGUpXHJcbiAgfVxyXG5cclxuICBNb2RhbC5wcm90b3R5cGUgPSB7XHJcblxyXG4gICAgICBjb25zdHJ1Y3RvcjogTW9kYWxcclxuXHJcbiAgICAsIHRvZ2dsZTogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzWyF0aGlzLmlzU2hvd24gPyAnc2hvdycgOiAnaGlkZSddKClcclxuICAgICAgfVxyXG5cclxuICAgICwgc2hvdzogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciB0aGF0ID0gdGhpc1xyXG4gICAgICAgICAgLCBlID0gJC5FdmVudCgnc2hvdycpXHJcblxyXG4gICAgICAgIHRoaXMuJGVsZW1lbnQudHJpZ2dlcihlKVxyXG5cclxuICAgICAgICBpZiAodGhpcy5pc1Nob3duIHx8IGUuaXNEZWZhdWx0UHJldmVudGVkKCkpIHJldHVyblxyXG5cclxuICAgICAgICAkKCdib2R5JykuYWRkQ2xhc3MoJ21vZGFsLW9wZW4nKVxyXG5cclxuICAgICAgICB0aGlzLmlzU2hvd24gPSB0cnVlXHJcblxyXG4gICAgICAgIHRoaXMuZXNjYXBlKClcclxuXHJcbiAgICAgICAgdGhpcy5iYWNrZHJvcChmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICB2YXIgdHJhbnNpdGlvbiA9ICQuc3VwcG9ydC50cmFuc2l0aW9uICYmIHRoYXQuJGVsZW1lbnQuaGFzQ2xhc3MoJ2ZhZGUnKVxyXG5cclxuICAgICAgICAgIGlmICghdGhhdC4kZWxlbWVudC5wYXJlbnQoKS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhhdC4kZWxlbWVudC5hcHBlbmRUbyhkb2N1bWVudC5ib2R5KSAvL2Rvbid0IG1vdmUgbW9kYWxzIGRvbSBwb3NpdGlvblxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRoYXQuJGVsZW1lbnRcclxuICAgICAgICAgICAgLnNob3coKVxyXG5cclxuICAgICAgICAgIGlmICh0cmFuc2l0aW9uKSB7XHJcbiAgICAgICAgICAgIHRoYXQuJGVsZW1lbnRbMF0ub2Zmc2V0V2lkdGggLy8gZm9yY2UgcmVmbG93XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdGhhdC4kZWxlbWVudFxyXG4gICAgICAgICAgICAuYWRkQ2xhc3MoJ2luJylcclxuICAgICAgICAgICAgLmF0dHIoJ2FyaWEtaGlkZGVuJywgZmFsc2UpXHJcbiAgICAgICAgICAgIC5mb2N1cygpXHJcblxyXG4gICAgICAgICAgdGhhdC5lbmZvcmNlRm9jdXMoKVxyXG5cclxuICAgICAgICAgIHRyYW5zaXRpb24gP1xyXG4gICAgICAgICAgICB0aGF0LiRlbGVtZW50Lm9uZSgkLnN1cHBvcnQudHJhbnNpdGlvbi5lbmQsIGZ1bmN0aW9uICgpIHsgdGhhdC4kZWxlbWVudC50cmlnZ2VyKCdzaG93bicpIH0pIDpcclxuICAgICAgICAgICAgdGhhdC4kZWxlbWVudC50cmlnZ2VyKCdzaG93bicpXHJcblxyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuXHJcbiAgICAsIGhpZGU6IGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgZSAmJiBlLnByZXZlbnREZWZhdWx0KClcclxuXHJcbiAgICAgICAgdmFyIHRoYXQgPSB0aGlzXHJcblxyXG4gICAgICAgIGUgPSAkLkV2ZW50KCdoaWRlJylcclxuXHJcbiAgICAgICAgdGhpcy4kZWxlbWVudC50cmlnZ2VyKGUpXHJcblxyXG4gICAgICAgIGlmICghdGhpcy5pc1Nob3duIHx8IGUuaXNEZWZhdWx0UHJldmVudGVkKCkpIHJldHVyblxyXG5cclxuICAgICAgICB0aGlzLmlzU2hvd24gPSBmYWxzZVxyXG5cclxuICAgICAgICAkKCdib2R5JykucmVtb3ZlQ2xhc3MoJ21vZGFsLW9wZW4nKVxyXG5cclxuICAgICAgICB0aGlzLmVzY2FwZSgpXHJcblxyXG4gICAgICAgICQoZG9jdW1lbnQpLm9mZignZm9jdXNpbi5tb2RhbCcpXHJcblxyXG4gICAgICAgIHRoaXMuJGVsZW1lbnRcclxuICAgICAgICAgIC5yZW1vdmVDbGFzcygnaW4nKVxyXG4gICAgICAgICAgLmF0dHIoJ2FyaWEtaGlkZGVuJywgdHJ1ZSlcclxuXHJcbiAgICAgICAgJC5zdXBwb3J0LnRyYW5zaXRpb24gJiYgdGhpcy4kZWxlbWVudC5oYXNDbGFzcygnZmFkZScpID9cclxuICAgICAgICAgIHRoaXMuaGlkZVdpdGhUcmFuc2l0aW9uKCkgOlxyXG4gICAgICAgICAgdGhpcy5oaWRlTW9kYWwoKVxyXG4gICAgICB9XHJcblxyXG4gICAgLCBlbmZvcmNlRm9jdXM6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgdGhhdCA9IHRoaXNcclxuICAgICAgICAkKGRvY3VtZW50KS5vbignZm9jdXNpbi5tb2RhbCcsIGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgICBpZiAodGhhdC4kZWxlbWVudFswXSAhPT0gZS50YXJnZXQgJiYgIXRoYXQuJGVsZW1lbnQuaGFzKGUudGFyZ2V0KS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhhdC4kZWxlbWVudC5mb2N1cygpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG5cclxuICAgICwgZXNjYXBlOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIHRoYXQgPSB0aGlzXHJcbiAgICAgICAgaWYgKHRoaXMuaXNTaG93biAmJiB0aGlzLm9wdGlvbnMua2V5Ym9hcmQpIHtcclxuICAgICAgICAgIHRoaXMuJGVsZW1lbnQub24oJ2tleXVwLmRpc21pc3MubW9kYWwnLCBmdW5jdGlvbiAoIGUgKSB7XHJcbiAgICAgICAgICAgIGUud2hpY2ggPT0gMjcgJiYgdGhhdC5oaWRlKClcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfSBlbHNlIGlmICghdGhpcy5pc1Nob3duKSB7XHJcbiAgICAgICAgICB0aGlzLiRlbGVtZW50Lm9mZigna2V5dXAuZGlzbWlzcy5tb2RhbCcpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgLCBoaWRlV2l0aFRyYW5zaXRpb246IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgdGhhdCA9IHRoaXNcclxuICAgICAgICAgICwgdGltZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgIHRoYXQuJGVsZW1lbnQub2ZmKCQuc3VwcG9ydC50cmFuc2l0aW9uLmVuZClcclxuICAgICAgICAgICAgICB0aGF0LmhpZGVNb2RhbCgpXHJcbiAgICAgICAgICAgIH0sIDUwMClcclxuXHJcbiAgICAgICAgdGhpcy4kZWxlbWVudC5vbmUoJC5zdXBwb3J0LnRyYW5zaXRpb24uZW5kLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dClcclxuICAgICAgICAgIHRoYXQuaGlkZU1vZGFsKClcclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcblxyXG4gICAgLCBoaWRlTW9kYWw6IGZ1bmN0aW9uICh0aGF0KSB7XHJcbiAgICAgICAgdGhpcy4kZWxlbWVudFxyXG4gICAgICAgICAgLmhpZGUoKVxyXG4gICAgICAgICAgLnRyaWdnZXIoJ2hpZGRlbicpXHJcblxyXG4gICAgICAgIHRoaXMuYmFja2Ryb3AoKVxyXG4gICAgICB9XHJcblxyXG4gICAgLCByZW1vdmVCYWNrZHJvcDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHRoaXMuJGJhY2tkcm9wLnJlbW92ZSgpXHJcbiAgICAgICAgdGhpcy4kYmFja2Ryb3AgPSBudWxsXHJcbiAgICAgIH1cclxuXHJcbiAgICAsIGJhY2tkcm9wOiBmdW5jdGlvbiAoY2FsbGJhY2spIHtcclxuICAgICAgICB2YXIgdGhhdCA9IHRoaXNcclxuICAgICAgICAgICwgYW5pbWF0ZSA9IHRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoJ2ZhZGUnKSA/ICdmYWRlJyA6ICcnXHJcblxyXG4gICAgICAgIGlmICh0aGlzLmlzU2hvd24gJiYgdGhpcy5vcHRpb25zLmJhY2tkcm9wKSB7XHJcbiAgICAgICAgICB2YXIgZG9BbmltYXRlID0gJC5zdXBwb3J0LnRyYW5zaXRpb24gJiYgYW5pbWF0ZVxyXG5cclxuICAgICAgICAgIHRoaXMuJGJhY2tkcm9wID0gJCgnPGRpdiBjbGFzcz1cIm1vZGFsLWJhY2tkcm9wICcgKyBhbmltYXRlICsgJ1wiIC8+JylcclxuICAgICAgICAgICAgLmFwcGVuZFRvKGRvY3VtZW50LmJvZHkpXHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5iYWNrZHJvcCAhPSAnc3RhdGljJykge1xyXG4gICAgICAgICAgICB0aGlzLiRiYWNrZHJvcC5jbGljaygkLnByb3h5KHRoaXMuaGlkZSwgdGhpcykpXHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKGRvQW5pbWF0ZSkgdGhpcy4kYmFja2Ryb3BbMF0ub2Zmc2V0V2lkdGggLy8gZm9yY2UgcmVmbG93XHJcblxyXG4gICAgICAgICAgdGhpcy4kYmFja2Ryb3AuYWRkQ2xhc3MoJ2luJylcclxuXHJcbiAgICAgICAgICBkb0FuaW1hdGUgP1xyXG4gICAgICAgICAgICB0aGlzLiRiYWNrZHJvcC5vbmUoJC5zdXBwb3J0LnRyYW5zaXRpb24uZW5kLCBjYWxsYmFjaykgOlxyXG4gICAgICAgICAgICBjYWxsYmFjaygpXHJcblxyXG4gICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuaXNTaG93biAmJiB0aGlzLiRiYWNrZHJvcCkge1xyXG4gICAgICAgICAgdGhpcy4kYmFja2Ryb3AucmVtb3ZlQ2xhc3MoJ2luJylcclxuXHJcbiAgICAgICAgICAkLnN1cHBvcnQudHJhbnNpdGlvbiAmJiB0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCdmYWRlJyk/XHJcbiAgICAgICAgICAgIHRoaXMuJGJhY2tkcm9wLm9uZSgkLnN1cHBvcnQudHJhbnNpdGlvbi5lbmQsICQucHJveHkodGhpcy5yZW1vdmVCYWNrZHJvcCwgdGhpcykpIDpcclxuICAgICAgICAgICAgdGhpcy5yZW1vdmVCYWNrZHJvcCgpXHJcblxyXG4gICAgICAgIH0gZWxzZSBpZiAoY2FsbGJhY2spIHtcclxuICAgICAgICAgIGNhbGxiYWNrKClcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICB9XHJcblxyXG5cclxuIC8qIE1PREFMIFBMVUdJTiBERUZJTklUSU9OXHJcbiAgKiA9PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuICAkLmZuLm1vZGFsID0gZnVuY3Rpb24gKG9wdGlvbikge1xyXG4gICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHZhciAkdGhpcyA9ICQodGhpcylcclxuICAgICAgICAsIGRhdGEgPSAkdGhpcy5kYXRhKCdtb2RhbCcpXHJcbiAgICAgICAgLCBvcHRpb25zID0gJC5leHRlbmQoe30sICQuZm4ubW9kYWwuZGVmYXVsdHMsICR0aGlzLmRhdGEoKSwgdHlwZW9mIG9wdGlvbiA9PSAnb2JqZWN0JyAmJiBvcHRpb24pXHJcbiAgICAgIGlmICghZGF0YSkgJHRoaXMuZGF0YSgnbW9kYWwnLCAoZGF0YSA9IG5ldyBNb2RhbCh0aGlzLCBvcHRpb25zKSkpXHJcbiAgICAgIGlmICh0eXBlb2Ygb3B0aW9uID09ICdzdHJpbmcnKSBkYXRhW29wdGlvbl0oKVxyXG4gICAgICBlbHNlIGlmIChvcHRpb25zLnNob3cpIGRhdGEuc2hvdygpXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgJC5mbi5tb2RhbC5kZWZhdWx0cyA9IHtcclxuICAgICAgYmFja2Ryb3A6IHRydWVcclxuICAgICwga2V5Ym9hcmQ6IHRydWVcclxuICAgICwgc2hvdzogdHJ1ZVxyXG4gIH1cclxuXHJcbiAgJC5mbi5tb2RhbC5Db25zdHJ1Y3RvciA9IE1vZGFsXHJcblxyXG5cclxuIC8qIE1PREFMIERBVEEtQVBJXHJcbiAgKiA9PT09PT09PT09PT09PSAqL1xyXG5cclxuICAkKGZ1bmN0aW9uICgpIHtcclxuICAgICQoJ2JvZHknKS5vbignY2xpY2subW9kYWwuZGF0YS1hcGknLCAnW2RhdGEtdG9nZ2xlPVwibW9kYWxcIl0nLCBmdW5jdGlvbiAoIGUgKSB7XHJcbiAgICAgIHZhciAkdGhpcyA9ICQodGhpcylcclxuICAgICAgICAsIGhyZWYgPSAkdGhpcy5hdHRyKCdocmVmJylcclxuICAgICAgICAsICR0YXJnZXQgPSAkKCR0aGlzLmF0dHIoJ2RhdGEtdGFyZ2V0JykgfHwgKGhyZWYgJiYgaHJlZi5yZXBsYWNlKC8uKig/PSNbXlxcc10rJCkvLCAnJykpKSAvL3N0cmlwIGZvciBpZTdcclxuICAgICAgICAsIG9wdGlvbiA9ICR0YXJnZXQuZGF0YSgnbW9kYWwnKSA/ICd0b2dnbGUnIDogJC5leHRlbmQoeyByZW1vdGU6ICEvIy8udGVzdChocmVmKSAmJiBocmVmIH0sICR0YXJnZXQuZGF0YSgpLCAkdGhpcy5kYXRhKCkpXHJcblxyXG4gICAgICBlLnByZXZlbnREZWZhdWx0KClcclxuXHJcbiAgICAgICR0YXJnZXRcclxuICAgICAgICAubW9kYWwob3B0aW9uKVxyXG4gICAgICAgIC5vbmUoJ2hpZGUnLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAkdGhpcy5mb2N1cygpXHJcbiAgICAgICAgfSlcclxuICAgIH0pXHJcbiAgfSlcclxuXHJcbn0od2luZG93LmpRdWVyeSk7LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICogYm9vdHN0cmFwLXRvb2x0aXAuanMgdjIuMS4xXHJcbiAqIGh0dHA6Ly90d2l0dGVyLmdpdGh1Yi5jb20vYm9vdHN0cmFwL2phdmFzY3JpcHQuaHRtbCN0b29sdGlwc1xyXG4gKiBJbnNwaXJlZCBieSB0aGUgb3JpZ2luYWwgalF1ZXJ5LnRpcHN5IGJ5IEphc29uIEZyYW1lXHJcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAqIENvcHlyaWdodCAyMDEyIFR3aXR0ZXIsIEluYy5cclxuICpcclxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcclxuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxyXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcclxuICpcclxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXHJcbiAqXHJcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcclxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxyXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cclxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxyXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cclxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuXHJcbiFmdW5jdGlvbiAoJCkge1xyXG5cclxuICBcInVzZSBzdHJpY3RcIjsgLy8ganNoaW50IDtfO1xyXG5cclxuXHJcbiAvKiBUT09MVElQIFBVQkxJQyBDTEFTUyBERUZJTklUSU9OXHJcbiAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG4gIHZhciBUb29sdGlwID0gZnVuY3Rpb24gKGVsZW1lbnQsIG9wdGlvbnMpIHtcclxuICAgIHRoaXMuaW5pdCgndG9vbHRpcCcsIGVsZW1lbnQsIG9wdGlvbnMpXHJcbiAgfVxyXG5cclxuICBUb29sdGlwLnByb3RvdHlwZSA9IHtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcjogVG9vbHRpcFxyXG5cclxuICAsIGluaXQ6IGZ1bmN0aW9uICh0eXBlLCBlbGVtZW50LCBvcHRpb25zKSB7XHJcbiAgICAgIHZhciBldmVudEluXHJcbiAgICAgICAgLCBldmVudE91dFxyXG5cclxuICAgICAgdGhpcy50eXBlID0gdHlwZVxyXG4gICAgICB0aGlzLiRlbGVtZW50ID0gJChlbGVtZW50KVxyXG4gICAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLmdldE9wdGlvbnMob3B0aW9ucylcclxuICAgICAgdGhpcy5lbmFibGVkID0gdHJ1ZVxyXG5cclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy50cmlnZ2VyID09ICdjbGljaycpIHtcclxuICAgICAgICB0aGlzLiRlbGVtZW50Lm9uKCdjbGljay4nICsgdGhpcy50eXBlLCB0aGlzLm9wdGlvbnMuc2VsZWN0b3IsICQucHJveHkodGhpcy50b2dnbGUsIHRoaXMpKVxyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMub3B0aW9ucy50cmlnZ2VyICE9ICdtYW51YWwnKSB7XHJcbiAgICAgICAgZXZlbnRJbiA9IHRoaXMub3B0aW9ucy50cmlnZ2VyID09ICdob3ZlcicgPyAnbW91c2VlbnRlcicgOiAnZm9jdXMnXHJcbiAgICAgICAgZXZlbnRPdXQgPSB0aGlzLm9wdGlvbnMudHJpZ2dlciA9PSAnaG92ZXInID8gJ21vdXNlbGVhdmUnIDogJ2JsdXInXHJcbiAgICAgICAgdGhpcy4kZWxlbWVudC5vbihldmVudEluICsgJy4nICsgdGhpcy50eXBlLCB0aGlzLm9wdGlvbnMuc2VsZWN0b3IsICQucHJveHkodGhpcy5lbnRlciwgdGhpcykpXHJcbiAgICAgICAgdGhpcy4kZWxlbWVudC5vbihldmVudE91dCArICcuJyArIHRoaXMudHlwZSwgdGhpcy5vcHRpb25zLnNlbGVjdG9yLCAkLnByb3h5KHRoaXMubGVhdmUsIHRoaXMpKVxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLm9wdGlvbnMuc2VsZWN0b3IgP1xyXG4gICAgICAgICh0aGlzLl9vcHRpb25zID0gJC5leHRlbmQoe30sIHRoaXMub3B0aW9ucywgeyB0cmlnZ2VyOiAnbWFudWFsJywgc2VsZWN0b3I6ICcnIH0pKSA6XHJcbiAgICAgICAgdGhpcy5maXhUaXRsZSgpXHJcbiAgICB9XHJcblxyXG4gICwgZ2V0T3B0aW9uczogZnVuY3Rpb24gKG9wdGlvbnMpIHtcclxuICAgICAgb3B0aW9ucyA9ICQuZXh0ZW5kKHt9LCAkLmZuW3RoaXMudHlwZV0uZGVmYXVsdHMsIG9wdGlvbnMsIHRoaXMuJGVsZW1lbnQuZGF0YSgpKVxyXG5cclxuICAgICAgaWYgKG9wdGlvbnMuZGVsYXkgJiYgdHlwZW9mIG9wdGlvbnMuZGVsYXkgPT0gJ251bWJlcicpIHtcclxuICAgICAgICBvcHRpb25zLmRlbGF5ID0ge1xyXG4gICAgICAgICAgc2hvdzogb3B0aW9ucy5kZWxheVxyXG4gICAgICAgICwgaGlkZTogb3B0aW9ucy5kZWxheVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIG9wdGlvbnNcclxuICAgIH1cclxuXHJcbiAgLCBlbnRlcjogZnVuY3Rpb24gKGUpIHtcclxuICAgICAgdmFyIHNlbGYgPSAkKGUuY3VycmVudFRhcmdldClbdGhpcy50eXBlXSh0aGlzLl9vcHRpb25zKS5kYXRhKHRoaXMudHlwZSlcclxuXHJcbiAgICAgIGlmICghc2VsZi5vcHRpb25zLmRlbGF5IHx8ICFzZWxmLm9wdGlvbnMuZGVsYXkuc2hvdykgcmV0dXJuIHNlbGYuc2hvdygpXHJcblxyXG4gICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0KVxyXG4gICAgICBzZWxmLmhvdmVyU3RhdGUgPSAnaW4nXHJcbiAgICAgIHRoaXMudGltZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgaWYgKHNlbGYuaG92ZXJTdGF0ZSA9PSAnaW4nKSBzZWxmLnNob3coKVxyXG4gICAgICB9LCBzZWxmLm9wdGlvbnMuZGVsYXkuc2hvdylcclxuICAgIH1cclxuXHJcbiAgLCBsZWF2ZTogZnVuY3Rpb24gKGUpIHtcclxuICAgICAgdmFyIHNlbGYgPSAkKGUuY3VycmVudFRhcmdldClbdGhpcy50eXBlXSh0aGlzLl9vcHRpb25zKS5kYXRhKHRoaXMudHlwZSlcclxuXHJcbiAgICAgIGlmICh0aGlzLnRpbWVvdXQpIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQpXHJcbiAgICAgIGlmICghc2VsZi5vcHRpb25zLmRlbGF5IHx8ICFzZWxmLm9wdGlvbnMuZGVsYXkuaGlkZSkgcmV0dXJuIHNlbGYuaGlkZSgpXHJcblxyXG4gICAgICBzZWxmLmhvdmVyU3RhdGUgPSAnb3V0J1xyXG4gICAgICB0aGlzLnRpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIGlmIChzZWxmLmhvdmVyU3RhdGUgPT0gJ291dCcpIHNlbGYuaGlkZSgpXHJcbiAgICAgIH0sIHNlbGYub3B0aW9ucy5kZWxheS5oaWRlKVxyXG4gICAgfVxyXG5cclxuICAsIHNob3c6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgdmFyICR0aXBcclxuICAgICAgICAsIGluc2lkZVxyXG4gICAgICAgICwgcG9zXHJcbiAgICAgICAgLCBhY3R1YWxXaWR0aFxyXG4gICAgICAgICwgYWN0dWFsSGVpZ2h0XHJcbiAgICAgICAgLCBwbGFjZW1lbnRcclxuICAgICAgICAsIHRwXHJcblxyXG4gICAgICBpZiAodGhpcy5oYXNDb250ZW50KCkgJiYgdGhpcy5lbmFibGVkKSB7XHJcbiAgICAgICAgJHRpcCA9IHRoaXMudGlwKClcclxuICAgICAgICB0aGlzLnNldENvbnRlbnQoKVxyXG5cclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmFuaW1hdGlvbikge1xyXG4gICAgICAgICAgJHRpcC5hZGRDbGFzcygnZmFkZScpXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBwbGFjZW1lbnQgPSB0eXBlb2YgdGhpcy5vcHRpb25zLnBsYWNlbWVudCA9PSAnZnVuY3Rpb24nID9cclxuICAgICAgICAgIHRoaXMub3B0aW9ucy5wbGFjZW1lbnQuY2FsbCh0aGlzLCAkdGlwWzBdLCB0aGlzLiRlbGVtZW50WzBdKSA6XHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMucGxhY2VtZW50XHJcblxyXG4gICAgICAgIGluc2lkZSA9IC9pbi8udGVzdChwbGFjZW1lbnQpXHJcblxyXG4gICAgICAgICR0aXBcclxuICAgICAgICAgIC5yZW1vdmUoKVxyXG4gICAgICAgICAgLmNzcyh7IHRvcDogMCwgbGVmdDogMCwgZGlzcGxheTogJ2Jsb2NrJyB9KVxyXG4gICAgICAgICAgLmFwcGVuZFRvKGluc2lkZSA/IHRoaXMuJGVsZW1lbnQgOiBkb2N1bWVudC5ib2R5KVxyXG5cclxuICAgICAgICBwb3MgPSB0aGlzLmdldFBvc2l0aW9uKGluc2lkZSlcclxuXHJcbiAgICAgICAgYWN0dWFsV2lkdGggPSAkdGlwWzBdLm9mZnNldFdpZHRoXHJcbiAgICAgICAgYWN0dWFsSGVpZ2h0ID0gJHRpcFswXS5vZmZzZXRIZWlnaHRcclxuXHJcbiAgICAgICAgc3dpdGNoIChpbnNpZGUgPyBwbGFjZW1lbnQuc3BsaXQoJyAnKVsxXSA6IHBsYWNlbWVudCkge1xyXG4gICAgICAgICAgY2FzZSAnYm90dG9tJzpcclxuICAgICAgICAgICAgdHAgPSB7dG9wOiBwb3MudG9wICsgcG9zLmhlaWdodCwgbGVmdDogcG9zLmxlZnQgKyBwb3Mud2lkdGggLyAyIC0gYWN0dWFsV2lkdGggLyAyfVxyXG4gICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgY2FzZSAndG9wJzpcclxuICAgICAgICAgICAgdHAgPSB7dG9wOiBwb3MudG9wIC0gYWN0dWFsSGVpZ2h0LCBsZWZ0OiBwb3MubGVmdCArIHBvcy53aWR0aCAvIDIgLSBhY3R1YWxXaWR0aCAvIDJ9XHJcbiAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICBjYXNlICdsZWZ0JzpcclxuICAgICAgICAgICAgdHAgPSB7dG9wOiBwb3MudG9wICsgcG9zLmhlaWdodCAvIDIgLSBhY3R1YWxIZWlnaHQgLyAyLCBsZWZ0OiBwb3MubGVmdCAtIGFjdHVhbFdpZHRofVxyXG4gICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgY2FzZSAncmlnaHQnOlxyXG4gICAgICAgICAgICB0cCA9IHt0b3A6IHBvcy50b3AgKyBwb3MuaGVpZ2h0IC8gMiAtIGFjdHVhbEhlaWdodCAvIDIsIGxlZnQ6IHBvcy5sZWZ0ICsgcG9zLndpZHRofVxyXG4gICAgICAgICAgICBicmVha1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJHRpcFxyXG4gICAgICAgICAgLmNzcyh0cClcclxuICAgICAgICAgIC5hZGRDbGFzcyhwbGFjZW1lbnQpXHJcbiAgICAgICAgICAuYWRkQ2xhc3MoJ2luJylcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAsIHNldENvbnRlbnQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgdmFyICR0aXAgPSB0aGlzLnRpcCgpXHJcbiAgICAgICAgLCB0aXRsZSA9IHRoaXMuZ2V0VGl0bGUoKVxyXG5cclxuICAgICAgJHRpcC5maW5kKCcudG9vbHRpcC1pbm5lcicpW3RoaXMub3B0aW9ucy5odG1sID8gJ2h0bWwnIDogJ3RleHQnXSh0aXRsZSlcclxuICAgICAgJHRpcC5yZW1vdmVDbGFzcygnZmFkZSBpbiB0b3AgYm90dG9tIGxlZnQgcmlnaHQnKVxyXG4gICAgfVxyXG5cclxuICAsIGhpZGU6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgdmFyIHRoYXQgPSB0aGlzXHJcbiAgICAgICAgLCAkdGlwID0gdGhpcy50aXAoKVxyXG5cclxuICAgICAgJHRpcC5yZW1vdmVDbGFzcygnaW4nKVxyXG5cclxuICAgICAgZnVuY3Rpb24gcmVtb3ZlV2l0aEFuaW1hdGlvbigpIHtcclxuICAgICAgICB2YXIgdGltZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgJHRpcC5vZmYoJC5zdXBwb3J0LnRyYW5zaXRpb24uZW5kKS5yZW1vdmUoKVxyXG4gICAgICAgIH0sIDUwMClcclxuXHJcbiAgICAgICAgJHRpcC5vbmUoJC5zdXBwb3J0LnRyYW5zaXRpb24uZW5kLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dClcclxuICAgICAgICAgICR0aXAucmVtb3ZlKClcclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcblxyXG4gICAgICAkLnN1cHBvcnQudHJhbnNpdGlvbiAmJiB0aGlzLiR0aXAuaGFzQ2xhc3MoJ2ZhZGUnKSA/XHJcbiAgICAgICAgcmVtb3ZlV2l0aEFuaW1hdGlvbigpIDpcclxuICAgICAgICAkdGlwLnJlbW92ZSgpXHJcblxyXG4gICAgICByZXR1cm4gdGhpc1xyXG4gICAgfVxyXG5cclxuICAsIGZpeFRpdGxlOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHZhciAkZSA9IHRoaXMuJGVsZW1lbnRcclxuICAgICAgaWYgKCRlLmF0dHIoJ3RpdGxlJykgfHwgdHlwZW9mKCRlLmF0dHIoJ2RhdGEtb3JpZ2luYWwtdGl0bGUnKSkgIT0gJ3N0cmluZycpIHtcclxuICAgICAgICAkZS5hdHRyKCdkYXRhLW9yaWdpbmFsLXRpdGxlJywgJGUuYXR0cigndGl0bGUnKSB8fCAnJykucmVtb3ZlQXR0cigndGl0bGUnKVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICwgaGFzQ29udGVudDogZnVuY3Rpb24gKCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5nZXRUaXRsZSgpXHJcbiAgICB9XHJcblxyXG4gICwgZ2V0UG9zaXRpb246IGZ1bmN0aW9uIChpbnNpZGUpIHtcclxuICAgICAgcmV0dXJuICQuZXh0ZW5kKHt9LCAoaW5zaWRlID8ge3RvcDogMCwgbGVmdDogMH0gOiB0aGlzLiRlbGVtZW50Lm9mZnNldCgpKSwge1xyXG4gICAgICAgIHdpZHRoOiB0aGlzLiRlbGVtZW50WzBdLm9mZnNldFdpZHRoXHJcbiAgICAgICwgaGVpZ2h0OiB0aGlzLiRlbGVtZW50WzBdLm9mZnNldEhlaWdodFxyXG4gICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAsIGdldFRpdGxlOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHZhciB0aXRsZVxyXG4gICAgICAgICwgJGUgPSB0aGlzLiRlbGVtZW50XHJcbiAgICAgICAgLCBvID0gdGhpcy5vcHRpb25zXHJcblxyXG4gICAgICB0aXRsZSA9ICRlLmF0dHIoJ2RhdGEtb3JpZ2luYWwtdGl0bGUnKVxyXG4gICAgICAgIHx8ICh0eXBlb2Ygby50aXRsZSA9PSAnZnVuY3Rpb24nID8gby50aXRsZS5jYWxsKCRlWzBdKSA6ICBvLnRpdGxlKVxyXG5cclxuICAgICAgcmV0dXJuIHRpdGxlXHJcbiAgICB9XHJcblxyXG4gICwgdGlwOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLiR0aXAgPSB0aGlzLiR0aXAgfHwgJCh0aGlzLm9wdGlvbnMudGVtcGxhdGUpXHJcbiAgICB9XHJcblxyXG4gICwgdmFsaWRhdGU6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgaWYgKCF0aGlzLiRlbGVtZW50WzBdLnBhcmVudE5vZGUpIHtcclxuICAgICAgICB0aGlzLmhpZGUoKVxyXG4gICAgICAgIHRoaXMuJGVsZW1lbnQgPSBudWxsXHJcbiAgICAgICAgdGhpcy5vcHRpb25zID0gbnVsbFxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICwgZW5hYmxlOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHRoaXMuZW5hYmxlZCA9IHRydWVcclxuICAgIH1cclxuXHJcbiAgLCBkaXNhYmxlOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHRoaXMuZW5hYmxlZCA9IGZhbHNlXHJcbiAgICB9XHJcblxyXG4gICwgdG9nZ2xlRW5hYmxlZDogZnVuY3Rpb24gKCkge1xyXG4gICAgICB0aGlzLmVuYWJsZWQgPSAhdGhpcy5lbmFibGVkXHJcbiAgICB9XHJcblxyXG4gICwgdG9nZ2xlOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHRoaXNbdGhpcy50aXAoKS5oYXNDbGFzcygnaW4nKSA/ICdoaWRlJyA6ICdzaG93J10oKVxyXG4gICAgfVxyXG5cclxuICAsIGRlc3Ryb3k6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgdGhpcy5oaWRlKCkuJGVsZW1lbnQub2ZmKCcuJyArIHRoaXMudHlwZSkucmVtb3ZlRGF0YSh0aGlzLnR5cGUpXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcblxyXG4gLyogVE9PTFRJUCBQTFVHSU4gREVGSU5JVElPTlxyXG4gICogPT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuICAkLmZuLnRvb2x0aXAgPSBmdW5jdGlvbiAoIG9wdGlvbiApIHtcclxuICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkge1xyXG4gICAgICB2YXIgJHRoaXMgPSAkKHRoaXMpXHJcbiAgICAgICAgLCBkYXRhID0gJHRoaXMuZGF0YSgndG9vbHRpcCcpXHJcbiAgICAgICAgLCBvcHRpb25zID0gdHlwZW9mIG9wdGlvbiA9PSAnb2JqZWN0JyAmJiBvcHRpb25cclxuICAgICAgaWYgKCFkYXRhKSAkdGhpcy5kYXRhKCd0b29sdGlwJywgKGRhdGEgPSBuZXcgVG9vbHRpcCh0aGlzLCBvcHRpb25zKSkpXHJcbiAgICAgIGlmICh0eXBlb2Ygb3B0aW9uID09ICdzdHJpbmcnKSBkYXRhW29wdGlvbl0oKVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gICQuZm4udG9vbHRpcC5Db25zdHJ1Y3RvciA9IFRvb2x0aXBcclxuXHJcbiAgJC5mbi50b29sdGlwLmRlZmF1bHRzID0ge1xyXG4gICAgYW5pbWF0aW9uOiB0cnVlXHJcbiAgLCBwbGFjZW1lbnQ6ICd0b3AnXHJcbiAgLCBzZWxlY3RvcjogZmFsc2VcclxuICAsIHRlbXBsYXRlOiAnPGRpdiBjbGFzcz1cInRvb2x0aXBcIj48ZGl2IGNsYXNzPVwidG9vbHRpcC1hcnJvd1wiPjwvZGl2PjxkaXYgY2xhc3M9XCJ0b29sdGlwLWlubmVyXCI+PC9kaXY+PC9kaXY+J1xyXG4gICwgdHJpZ2dlcjogJ2hvdmVyJ1xyXG4gICwgdGl0bGU6ICcnXHJcbiAgLCBkZWxheTogMFxyXG4gICwgaHRtbDogdHJ1ZVxyXG4gIH1cclxuXHJcbn0od2luZG93LmpRdWVyeSk7XHJcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAqIGJvb3RzdHJhcC1wb3BvdmVyLmpzIHYyLjEuMVxyXG4gKiBodHRwOi8vdHdpdHRlci5naXRodWIuY29tL2Jvb3RzdHJhcC9qYXZhc2NyaXB0Lmh0bWwjcG9wb3ZlcnNcclxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICogQ29weXJpZ2h0IDIwMTIgVHdpdHRlciwgSW5jLlxyXG4gKlxyXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xyXG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXHJcbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxyXG4gKlxyXG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuICpcclxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxyXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXHJcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxyXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXHJcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuXHJcbiFmdW5jdGlvbiAoJCkge1xyXG5cclxuICBcInVzZSBzdHJpY3RcIjsgLy8ganNoaW50IDtfO1xyXG5cclxuXHJcbiAvKiBQT1BPVkVSIFBVQkxJQyBDTEFTUyBERUZJTklUSU9OXHJcbiAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG4gIHZhciBQb3BvdmVyID0gZnVuY3Rpb24gKGVsZW1lbnQsIG9wdGlvbnMpIHtcclxuICAgIHRoaXMuaW5pdCgncG9wb3ZlcicsIGVsZW1lbnQsIG9wdGlvbnMpXHJcbiAgfVxyXG5cclxuXHJcbiAgLyogTk9URTogUE9QT1ZFUiBFWFRFTkRTIEJPT1RTVFJBUC1UT09MVElQLmpzXHJcbiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG4gIFBvcG92ZXIucHJvdG90eXBlID0gJC5leHRlbmQoe30sICQuZm4udG9vbHRpcC5Db25zdHJ1Y3Rvci5wcm90b3R5cGUsIHtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcjogUG9wb3ZlclxyXG5cclxuICAsIHNldENvbnRlbnQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgdmFyICR0aXAgPSB0aGlzLnRpcCgpXHJcbiAgICAgICAgLCB0aXRsZSA9IHRoaXMuZ2V0VGl0bGUoKVxyXG4gICAgICAgICwgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpXHJcblxyXG4gICAgICAkdGlwLmZpbmQoJy5wb3BvdmVyLXRpdGxlJylbdGhpcy5vcHRpb25zLmh0bWwgPyAnaHRtbCcgOiAndGV4dCddKHRpdGxlKVxyXG4gICAgICAkdGlwLmZpbmQoJy5wb3BvdmVyLWNvbnRlbnQgPiAqJylbdGhpcy5vcHRpb25zLmh0bWwgPyAnaHRtbCcgOiAndGV4dCddKGNvbnRlbnQpXHJcblxyXG4gICAgICAkdGlwLnJlbW92ZUNsYXNzKCdmYWRlIHRvcCBib3R0b20gbGVmdCByaWdodCBpbicpXHJcbiAgICB9XHJcblxyXG4gICwgaGFzQ29udGVudDogZnVuY3Rpb24gKCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5nZXRUaXRsZSgpIHx8IHRoaXMuZ2V0Q29udGVudCgpXHJcbiAgICB9XHJcblxyXG4gICwgZ2V0Q29udGVudDogZnVuY3Rpb24gKCkge1xyXG4gICAgICB2YXIgY29udGVudFxyXG4gICAgICAgICwgJGUgPSB0aGlzLiRlbGVtZW50XHJcbiAgICAgICAgLCBvID0gdGhpcy5vcHRpb25zXHJcblxyXG4gICAgICBjb250ZW50ID0gJGUuYXR0cignZGF0YS1jb250ZW50JylcclxuICAgICAgICB8fCAodHlwZW9mIG8uY29udGVudCA9PSAnZnVuY3Rpb24nID8gby5jb250ZW50LmNhbGwoJGVbMF0pIDogIG8uY29udGVudClcclxuXHJcbiAgICAgIHJldHVybiBjb250ZW50XHJcbiAgICB9XHJcblxyXG4gICwgdGlwOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIGlmICghdGhpcy4kdGlwKSB7XHJcbiAgICAgICAgdGhpcy4kdGlwID0gJCh0aGlzLm9wdGlvbnMudGVtcGxhdGUpXHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRoaXMuJHRpcFxyXG4gICAgfVxyXG5cclxuICAsIGRlc3Ryb3k6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgdGhpcy5oaWRlKCkuJGVsZW1lbnQub2ZmKCcuJyArIHRoaXMudHlwZSkucmVtb3ZlRGF0YSh0aGlzLnR5cGUpXHJcbiAgICB9XHJcblxyXG4gIH0pXHJcblxyXG5cclxuIC8qIFBPUE9WRVIgUExVR0lOIERFRklOSVRJT05cclxuICAqID09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG4gICQuZm4ucG9wb3ZlciA9IGZ1bmN0aW9uIChvcHRpb24pIHtcclxuICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkge1xyXG4gICAgICB2YXIgJHRoaXMgPSAkKHRoaXMpXHJcbiAgICAgICAgLCBkYXRhID0gJHRoaXMuZGF0YSgncG9wb3ZlcicpXHJcbiAgICAgICAgLCBvcHRpb25zID0gdHlwZW9mIG9wdGlvbiA9PSAnb2JqZWN0JyAmJiBvcHRpb25cclxuICAgICAgaWYgKCFkYXRhKSAkdGhpcy5kYXRhKCdwb3BvdmVyJywgKGRhdGEgPSBuZXcgUG9wb3Zlcih0aGlzLCBvcHRpb25zKSkpXHJcbiAgICAgIGlmICh0eXBlb2Ygb3B0aW9uID09ICdzdHJpbmcnKSBkYXRhW29wdGlvbl0oKVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gICQuZm4ucG9wb3Zlci5Db25zdHJ1Y3RvciA9IFBvcG92ZXJcclxuXHJcbiAgJC5mbi5wb3BvdmVyLmRlZmF1bHRzID0gJC5leHRlbmQoe30gLCAkLmZuLnRvb2x0aXAuZGVmYXVsdHMsIHtcclxuICAgIHBsYWNlbWVudDogJ3JpZ2h0J1xyXG4gICwgdHJpZ2dlcjogJ2NsaWNrJ1xyXG4gICwgY29udGVudDogJydcclxuICAsIHRlbXBsYXRlOiAnPGRpdiBjbGFzcz1cInBvcG92ZXJcIj48ZGl2IGNsYXNzPVwiYXJyb3dcIj48L2Rpdj48ZGl2IGNsYXNzPVwicG9wb3Zlci1pbm5lclwiPjxoMyBjbGFzcz1cInBvcG92ZXItdGl0bGVcIj48L2gzPjxkaXYgY2xhc3M9XCJwb3BvdmVyLWNvbnRlbnRcIj48cD48L3A+PC9kaXY+PC9kaXY+PC9kaXY+J1xyXG4gIH0pXHJcblxyXG59KHdpbmRvdy5qUXVlcnkpOy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICogYm9vdHN0cmFwLXNjcm9sbHNweS5qcyB2Mi4xLjFcclxuICogaHR0cDovL3R3aXR0ZXIuZ2l0aHViLmNvbS9ib290c3RyYXAvamF2YXNjcmlwdC5odG1sI3Njcm9sbHNweVxyXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAqIENvcHlyaWdodCAyMDEyIFR3aXR0ZXIsIEluYy5cclxuICpcclxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcclxuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxyXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcclxuICpcclxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXHJcbiAqXHJcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcclxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxyXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cclxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxyXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cclxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcblxyXG4hZnVuY3Rpb24gKCQpIHtcclxuXHJcbiAgXCJ1c2Ugc3RyaWN0XCI7IC8vIGpzaGludCA7XztcclxuXHJcblxyXG4gLyogU0NST0xMU1BZIENMQVNTIERFRklOSVRJT05cclxuICAqID09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG4gIGZ1bmN0aW9uIFNjcm9sbFNweShlbGVtZW50LCBvcHRpb25zKSB7XHJcbiAgICB2YXIgcHJvY2VzcyA9ICQucHJveHkodGhpcy5wcm9jZXNzLCB0aGlzKVxyXG4gICAgICAsICRlbGVtZW50ID0gJChlbGVtZW50KS5pcygnYm9keScpID8gJCh3aW5kb3cpIDogJChlbGVtZW50KVxyXG4gICAgICAsIGhyZWZcclxuICAgIHRoaXMub3B0aW9ucyA9ICQuZXh0ZW5kKHt9LCAkLmZuLnNjcm9sbHNweS5kZWZhdWx0cywgb3B0aW9ucylcclxuICAgIHRoaXMuJHNjcm9sbEVsZW1lbnQgPSAkZWxlbWVudC5vbignc2Nyb2xsLnNjcm9sbC1zcHkuZGF0YS1hcGknLCBwcm9jZXNzKVxyXG4gICAgdGhpcy5zZWxlY3RvciA9ICh0aGlzLm9wdGlvbnMudGFyZ2V0XHJcbiAgICAgIHx8ICgoaHJlZiA9ICQoZWxlbWVudCkuYXR0cignaHJlZicpKSAmJiBocmVmLnJlcGxhY2UoLy4qKD89I1teXFxzXSskKS8sICcnKSkgLy9zdHJpcCBmb3IgaWU3XHJcbiAgICAgIHx8ICcnKSArICcgLm5hdiBsaSA+IGEnXHJcbiAgICB0aGlzLiRib2R5ID0gJCgnYm9keScpXHJcbiAgICB0aGlzLnJlZnJlc2goKVxyXG4gICAgdGhpcy5wcm9jZXNzKClcclxuICB9XHJcblxyXG4gIFNjcm9sbFNweS5wcm90b3R5cGUgPSB7XHJcblxyXG4gICAgICBjb25zdHJ1Y3RvcjogU2Nyb2xsU3B5XHJcblxyXG4gICAgLCByZWZyZXNoOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIHNlbGYgPSB0aGlzXHJcbiAgICAgICAgICAsICR0YXJnZXRzXHJcblxyXG4gICAgICAgIHRoaXMub2Zmc2V0cyA9ICQoW10pXHJcbiAgICAgICAgdGhpcy50YXJnZXRzID0gJChbXSlcclxuXHJcbiAgICAgICAgJHRhcmdldHMgPSB0aGlzLiRib2R5XHJcbiAgICAgICAgICAuZmluZCh0aGlzLnNlbGVjdG9yKVxyXG4gICAgICAgICAgLm1hcChmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHZhciAkZWwgPSAkKHRoaXMpXHJcbiAgICAgICAgICAgICAgLCBocmVmID0gJGVsLmRhdGEoJ3RhcmdldCcpIHx8ICRlbC5hdHRyKCdocmVmJylcclxuICAgICAgICAgICAgICAsICRocmVmID0gL14jXFx3Ly50ZXN0KGhyZWYpICYmICQoaHJlZilcclxuICAgICAgICAgICAgcmV0dXJuICggJGhyZWZcclxuICAgICAgICAgICAgICAmJiAkaHJlZi5sZW5ndGhcclxuICAgICAgICAgICAgICAmJiBbWyAkaHJlZi5wb3NpdGlvbigpLnRvcCwgaHJlZiBdXSApIHx8IG51bGxcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAuc29ydChmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYVswXSAtIGJbMF0gfSlcclxuICAgICAgICAgIC5lYWNoKGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgc2VsZi5vZmZzZXRzLnB1c2godGhpc1swXSlcclxuICAgICAgICAgICAgc2VsZi50YXJnZXRzLnB1c2godGhpc1sxXSlcclxuICAgICAgICAgIH0pXHJcbiAgICAgIH1cclxuXHJcbiAgICAsIHByb2Nlc3M6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgc2Nyb2xsVG9wID0gdGhpcy4kc2Nyb2xsRWxlbWVudC5zY3JvbGxUb3AoKSArIHRoaXMub3B0aW9ucy5vZmZzZXRcclxuICAgICAgICAgICwgc2Nyb2xsSGVpZ2h0ID0gdGhpcy4kc2Nyb2xsRWxlbWVudFswXS5zY3JvbGxIZWlnaHQgfHwgdGhpcy4kYm9keVswXS5zY3JvbGxIZWlnaHRcclxuICAgICAgICAgICwgbWF4U2Nyb2xsID0gc2Nyb2xsSGVpZ2h0IC0gdGhpcy4kc2Nyb2xsRWxlbWVudC5oZWlnaHQoKVxyXG4gICAgICAgICAgLCBvZmZzZXRzID0gdGhpcy5vZmZzZXRzXHJcbiAgICAgICAgICAsIHRhcmdldHMgPSB0aGlzLnRhcmdldHNcclxuICAgICAgICAgICwgYWN0aXZlVGFyZ2V0ID0gdGhpcy5hY3RpdmVUYXJnZXRcclxuICAgICAgICAgICwgaVxyXG5cclxuICAgICAgICBpZiAoc2Nyb2xsVG9wID49IG1heFNjcm9sbCkge1xyXG4gICAgICAgICAgcmV0dXJuIGFjdGl2ZVRhcmdldCAhPSAoaSA9IHRhcmdldHMubGFzdCgpWzBdKVxyXG4gICAgICAgICAgICAmJiB0aGlzLmFjdGl2YXRlICggaSApXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBmb3IgKGkgPSBvZmZzZXRzLmxlbmd0aDsgaS0tOykge1xyXG4gICAgICAgICAgYWN0aXZlVGFyZ2V0ICE9IHRhcmdldHNbaV1cclxuICAgICAgICAgICAgJiYgc2Nyb2xsVG9wID49IG9mZnNldHNbaV1cclxuICAgICAgICAgICAgJiYgKCFvZmZzZXRzW2kgKyAxXSB8fCBzY3JvbGxUb3AgPD0gb2Zmc2V0c1tpICsgMV0pXHJcbiAgICAgICAgICAgICYmIHRoaXMuYWN0aXZhdGUoIHRhcmdldHNbaV0gKVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICwgYWN0aXZhdGU6IGZ1bmN0aW9uICh0YXJnZXQpIHtcclxuICAgICAgICB2YXIgYWN0aXZlXHJcbiAgICAgICAgICAsIHNlbGVjdG9yXHJcblxyXG4gICAgICAgIHRoaXMuYWN0aXZlVGFyZ2V0ID0gdGFyZ2V0XHJcblxyXG4gICAgICAgICQodGhpcy5zZWxlY3RvcilcclxuICAgICAgICAgIC5wYXJlbnQoJy5hY3RpdmUnKVxyXG4gICAgICAgICAgLnJlbW92ZUNsYXNzKCdhY3RpdmUnKVxyXG5cclxuICAgICAgICBzZWxlY3RvciA9IHRoaXMuc2VsZWN0b3JcclxuICAgICAgICAgICsgJ1tkYXRhLXRhcmdldD1cIicgKyB0YXJnZXQgKyAnXCJdLCdcclxuICAgICAgICAgICsgdGhpcy5zZWxlY3RvciArICdbaHJlZj1cIicgKyB0YXJnZXQgKyAnXCJdJ1xyXG5cclxuICAgICAgICBhY3RpdmUgPSAkKHNlbGVjdG9yKVxyXG4gICAgICAgICAgLnBhcmVudCgnbGknKVxyXG4gICAgICAgICAgLmFkZENsYXNzKCdhY3RpdmUnKVxyXG5cclxuICAgICAgICBpZiAoYWN0aXZlLnBhcmVudCgnLmRyb3Bkb3duLW1lbnUnKS5sZW5ndGgpICB7XHJcbiAgICAgICAgICBhY3RpdmUgPSBhY3RpdmUuY2xvc2VzdCgnbGkuZHJvcGRvd24nKS5hZGRDbGFzcygnYWN0aXZlJylcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGFjdGl2ZS50cmlnZ2VyKCdhY3RpdmF0ZScpXHJcbiAgICAgIH1cclxuXHJcbiAgfVxyXG5cclxuXHJcbiAvKiBTQ1JPTExTUFkgUExVR0lOIERFRklOSVRJT05cclxuICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuICAkLmZuLnNjcm9sbHNweSA9IGZ1bmN0aW9uIChvcHRpb24pIHtcclxuICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkge1xyXG4gICAgICB2YXIgJHRoaXMgPSAkKHRoaXMpXHJcbiAgICAgICAgLCBkYXRhID0gJHRoaXMuZGF0YSgnc2Nyb2xsc3B5JylcclxuICAgICAgICAsIG9wdGlvbnMgPSB0eXBlb2Ygb3B0aW9uID09ICdvYmplY3QnICYmIG9wdGlvblxyXG4gICAgICBpZiAoIWRhdGEpICR0aGlzLmRhdGEoJ3Njcm9sbHNweScsIChkYXRhID0gbmV3IFNjcm9sbFNweSh0aGlzLCBvcHRpb25zKSkpXHJcbiAgICAgIGlmICh0eXBlb2Ygb3B0aW9uID09ICdzdHJpbmcnKSBkYXRhW29wdGlvbl0oKVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gICQuZm4uc2Nyb2xsc3B5LkNvbnN0cnVjdG9yID0gU2Nyb2xsU3B5XHJcblxyXG4gICQuZm4uc2Nyb2xsc3B5LmRlZmF1bHRzID0ge1xyXG4gICAgb2Zmc2V0OiAxMFxyXG4gIH1cclxuXHJcblxyXG4gLyogU0NST0xMU1BZIERBVEEtQVBJXHJcbiAgKiA9PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbiAgJCh3aW5kb3cpLm9uKCdsb2FkJywgZnVuY3Rpb24gKCkge1xyXG4gICAgJCgnW2RhdGEtc3B5PVwic2Nyb2xsXCJdJykuZWFjaChmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHZhciAkc3B5ID0gJCh0aGlzKVxyXG4gICAgICAkc3B5LnNjcm9sbHNweSgkc3B5LmRhdGEoKSlcclxuICAgIH0pXHJcbiAgfSlcclxuXHJcbn0od2luZG93LmpRdWVyeSk7LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICogYm9vdHN0cmFwLXRhYi5qcyB2Mi4xLjFcclxuICogaHR0cDovL3R3aXR0ZXIuZ2l0aHViLmNvbS9ib290c3RyYXAvamF2YXNjcmlwdC5odG1sI3RhYnNcclxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICogQ29weXJpZ2h0IDIwMTIgVHdpdHRlciwgSW5jLlxyXG4gKlxyXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xyXG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXHJcbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxyXG4gKlxyXG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuICpcclxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxyXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXHJcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxyXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXHJcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuXHJcbiFmdW5jdGlvbiAoJCkge1xyXG5cclxuICBcInVzZSBzdHJpY3RcIjsgLy8ganNoaW50IDtfO1xyXG5cclxuXHJcbiAvKiBUQUIgQ0xBU1MgREVGSU5JVElPTlxyXG4gICogPT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbiAgdmFyIFRhYiA9IGZ1bmN0aW9uIChlbGVtZW50KSB7XHJcbiAgICB0aGlzLmVsZW1lbnQgPSAkKGVsZW1lbnQpXHJcbiAgfVxyXG5cclxuICBUYWIucHJvdG90eXBlID0ge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yOiBUYWJcclxuXHJcbiAgLCBzaG93OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHZhciAkdGhpcyA9IHRoaXMuZWxlbWVudFxyXG4gICAgICAgICwgJHVsID0gJHRoaXMuY2xvc2VzdCgndWw6bm90KC5kcm9wZG93bi1tZW51KScpXHJcbiAgICAgICAgLCBzZWxlY3RvciA9ICR0aGlzLmF0dHIoJ2RhdGEtdGFyZ2V0JylcclxuICAgICAgICAsIHByZXZpb3VzXHJcbiAgICAgICAgLCAkdGFyZ2V0XHJcbiAgICAgICAgLCBlXHJcblxyXG4gICAgICBpZiAoIXNlbGVjdG9yKSB7XHJcbiAgICAgICAgc2VsZWN0b3IgPSAkdGhpcy5hdHRyKCdocmVmJylcclxuICAgICAgICBzZWxlY3RvciA9IHNlbGVjdG9yICYmIHNlbGVjdG9yLnJlcGxhY2UoLy4qKD89I1teXFxzXSokKS8sICcnKSAvL3N0cmlwIGZvciBpZTdcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCAkdGhpcy5wYXJlbnQoJ2xpJykuaGFzQ2xhc3MoJ2FjdGl2ZScpICkgcmV0dXJuXHJcblxyXG4gICAgICBwcmV2aW91cyA9ICR1bC5maW5kKCcuYWN0aXZlIGEnKS5sYXN0KClbMF1cclxuXHJcbiAgICAgIGUgPSAkLkV2ZW50KCdzaG93Jywge1xyXG4gICAgICAgIHJlbGF0ZWRUYXJnZXQ6IHByZXZpb3VzXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICAkdGhpcy50cmlnZ2VyKGUpXHJcblxyXG4gICAgICBpZiAoZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSkgcmV0dXJuXHJcblxyXG4gICAgICAkdGFyZ2V0ID0gJChzZWxlY3RvcilcclxuXHJcbiAgICAgIHRoaXMuYWN0aXZhdGUoJHRoaXMucGFyZW50KCdsaScpLCAkdWwpXHJcbiAgICAgIHRoaXMuYWN0aXZhdGUoJHRhcmdldCwgJHRhcmdldC5wYXJlbnQoKSwgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICR0aGlzLnRyaWdnZXIoe1xyXG4gICAgICAgICAgdHlwZTogJ3Nob3duJ1xyXG4gICAgICAgICwgcmVsYXRlZFRhcmdldDogcHJldmlvdXNcclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAsIGFjdGl2YXRlOiBmdW5jdGlvbiAoIGVsZW1lbnQsIGNvbnRhaW5lciwgY2FsbGJhY2spIHtcclxuICAgICAgdmFyICRhY3RpdmUgPSBjb250YWluZXIuZmluZCgnPiAuYWN0aXZlJylcclxuICAgICAgICAsIHRyYW5zaXRpb24gPSBjYWxsYmFja1xyXG4gICAgICAgICAgICAmJiAkLnN1cHBvcnQudHJhbnNpdGlvblxyXG4gICAgICAgICAgICAmJiAkYWN0aXZlLmhhc0NsYXNzKCdmYWRlJylcclxuXHJcbiAgICAgIGZ1bmN0aW9uIG5leHQoKSB7XHJcbiAgICAgICAgJGFjdGl2ZVxyXG4gICAgICAgICAgLnJlbW92ZUNsYXNzKCdhY3RpdmUnKVxyXG4gICAgICAgICAgLmZpbmQoJz4gLmRyb3Bkb3duLW1lbnUgPiAuYWN0aXZlJylcclxuICAgICAgICAgIC5yZW1vdmVDbGFzcygnYWN0aXZlJylcclxuXHJcbiAgICAgICAgZWxlbWVudC5hZGRDbGFzcygnYWN0aXZlJylcclxuXHJcbiAgICAgICAgaWYgKHRyYW5zaXRpb24pIHtcclxuICAgICAgICAgIGVsZW1lbnRbMF0ub2Zmc2V0V2lkdGggLy8gcmVmbG93IGZvciB0cmFuc2l0aW9uXHJcbiAgICAgICAgICBlbGVtZW50LmFkZENsYXNzKCdpbicpXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGVsZW1lbnQucmVtb3ZlQ2xhc3MoJ2ZhZGUnKVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCBlbGVtZW50LnBhcmVudCgnLmRyb3Bkb3duLW1lbnUnKSApIHtcclxuICAgICAgICAgIGVsZW1lbnQuY2xvc2VzdCgnbGkuZHJvcGRvd24nKS5hZGRDbGFzcygnYWN0aXZlJylcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNhbGxiYWNrICYmIGNhbGxiYWNrKClcclxuICAgICAgfVxyXG5cclxuICAgICAgdHJhbnNpdGlvbiA/XHJcbiAgICAgICAgJGFjdGl2ZS5vbmUoJC5zdXBwb3J0LnRyYW5zaXRpb24uZW5kLCBuZXh0KSA6XHJcbiAgICAgICAgbmV4dCgpXHJcblxyXG4gICAgICAkYWN0aXZlLnJlbW92ZUNsYXNzKCdpbicpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAvKiBUQUIgUExVR0lOIERFRklOSVRJT05cclxuICAqID09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuICAkLmZuLnRhYiA9IGZ1bmN0aW9uICggb3B0aW9uICkge1xyXG4gICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHZhciAkdGhpcyA9ICQodGhpcylcclxuICAgICAgICAsIGRhdGEgPSAkdGhpcy5kYXRhKCd0YWInKVxyXG4gICAgICBpZiAoIWRhdGEpICR0aGlzLmRhdGEoJ3RhYicsIChkYXRhID0gbmV3IFRhYih0aGlzKSkpXHJcbiAgICAgIGlmICh0eXBlb2Ygb3B0aW9uID09ICdzdHJpbmcnKSBkYXRhW29wdGlvbl0oKVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gICQuZm4udGFiLkNvbnN0cnVjdG9yID0gVGFiXHJcblxyXG5cclxuIC8qIFRBQiBEQVRBLUFQSVxyXG4gICogPT09PT09PT09PT09ICovXHJcblxyXG4gICQoZnVuY3Rpb24gKCkge1xyXG4gICAgJCgnYm9keScpLm9uKCdjbGljay50YWIuZGF0YS1hcGknLCAnW2RhdGEtdG9nZ2xlPVwidGFiXCJdLCBbZGF0YS10b2dnbGU9XCJwaWxsXCJdJywgZnVuY3Rpb24gKGUpIHtcclxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXHJcbiAgICAgICQodGhpcykudGFiKCdzaG93JylcclxuICAgIH0pXHJcbiAgfSlcclxuXHJcbn0od2luZG93LmpRdWVyeSk7LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gKiBib290c3RyYXAtdHlwZWFoZWFkLmpzIHYyLjEuMVxyXG4gKiBodHRwOi8vdHdpdHRlci5naXRodWIuY29tL2Jvb3RzdHJhcC9qYXZhc2NyaXB0Lmh0bWwjdHlwZWFoZWFkXHJcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICogQ29weXJpZ2h0IDIwMTIgVHdpdHRlciwgSW5jLlxyXG4gKlxyXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xyXG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXHJcbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxyXG4gKlxyXG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuICpcclxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxyXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXHJcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxyXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXHJcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcblxyXG4hZnVuY3Rpb24oJCl7XHJcblxyXG4gIFwidXNlIHN0cmljdFwiOyAvLyBqc2hpbnQgO187XHJcblxyXG5cclxuIC8qIFRZUEVBSEVBRCBQVUJMSUMgQ0xBU1MgREVGSU5JVElPTlxyXG4gICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG4gIHZhciBUeXBlYWhlYWQgPSBmdW5jdGlvbiAoZWxlbWVudCwgb3B0aW9ucykge1xyXG4gICAgdGhpcy4kZWxlbWVudCA9ICQoZWxlbWVudClcclxuICAgIHRoaXMub3B0aW9ucyA9ICQuZXh0ZW5kKHt9LCAkLmZuLnR5cGVhaGVhZC5kZWZhdWx0cywgb3B0aW9ucylcclxuICAgIHRoaXMubWF0Y2hlciA9IHRoaXMub3B0aW9ucy5tYXRjaGVyIHx8IHRoaXMubWF0Y2hlclxyXG4gICAgdGhpcy5zb3J0ZXIgPSB0aGlzLm9wdGlvbnMuc29ydGVyIHx8IHRoaXMuc29ydGVyXHJcbiAgICB0aGlzLmhpZ2hsaWdodGVyID0gdGhpcy5vcHRpb25zLmhpZ2hsaWdodGVyIHx8IHRoaXMuaGlnaGxpZ2h0ZXJcclxuICAgIHRoaXMudXBkYXRlciA9IHRoaXMub3B0aW9ucy51cGRhdGVyIHx8IHRoaXMudXBkYXRlclxyXG4gICAgdGhpcy4kbWVudSA9ICQodGhpcy5vcHRpb25zLm1lbnUpLmFwcGVuZFRvKCdib2R5JylcclxuICAgIHRoaXMuc291cmNlID0gdGhpcy5vcHRpb25zLnNvdXJjZVxyXG4gICAgdGhpcy5zaG93biA9IGZhbHNlXHJcbiAgICB0aGlzLmxpc3RlbigpXHJcbiAgfVxyXG5cclxuICBUeXBlYWhlYWQucHJvdG90eXBlID0ge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yOiBUeXBlYWhlYWRcclxuXHJcbiAgLCBzZWxlY3Q6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgdmFyIHZhbCA9IHRoaXMuJG1lbnUuZmluZCgnLmFjdGl2ZScpLmF0dHIoJ2RhdGEtdmFsdWUnKVxyXG4gICAgICB0aGlzLiRlbGVtZW50XHJcbiAgICAgICAgLnZhbCh0aGlzLnVwZGF0ZXIodmFsKSlcclxuICAgICAgICAuY2hhbmdlKClcclxuICAgICAgcmV0dXJuIHRoaXMuaGlkZSgpXHJcbiAgICB9XHJcblxyXG4gICwgdXBkYXRlcjogZnVuY3Rpb24gKGl0ZW0pIHtcclxuICAgICAgcmV0dXJuIGl0ZW1cclxuICAgIH1cclxuXHJcbiAgLCBzaG93OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHZhciBwb3MgPSAkLmV4dGVuZCh7fSwgdGhpcy4kZWxlbWVudC5vZmZzZXQoKSwge1xyXG4gICAgICAgIGhlaWdodDogdGhpcy4kZWxlbWVudFswXS5vZmZzZXRIZWlnaHRcclxuICAgICAgfSlcclxuXHJcbiAgICAgIHRoaXMuJG1lbnUuY3NzKHtcclxuICAgICAgICB0b3A6IHBvcy50b3AgKyBwb3MuaGVpZ2h0XHJcbiAgICAgICwgbGVmdDogcG9zLmxlZnRcclxuICAgICAgfSlcclxuXHJcbiAgICAgIHRoaXMuJG1lbnUuc2hvdygpXHJcbiAgICAgIHRoaXMuc2hvd24gPSB0cnVlXHJcbiAgICAgIHJldHVybiB0aGlzXHJcbiAgICB9XHJcblxyXG4gICwgaGlkZTogZnVuY3Rpb24gKCkge1xyXG4gICAgICB0aGlzLiRtZW51LmhpZGUoKVxyXG4gICAgICB0aGlzLnNob3duID0gZmFsc2VcclxuICAgICAgcmV0dXJuIHRoaXNcclxuICAgIH1cclxuXHJcbiAgLCBsb29rdXA6IGZ1bmN0aW9uIChldmVudCkge1xyXG4gICAgICB2YXIgaXRlbXNcclxuXHJcbiAgICAgIHRoaXMucXVlcnkgPSB0aGlzLiRlbGVtZW50LnZhbCgpXHJcblxyXG4gICAgICBpZiAoIXRoaXMucXVlcnkgfHwgdGhpcy5xdWVyeS5sZW5ndGggPCB0aGlzLm9wdGlvbnMubWluTGVuZ3RoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2hvd24gPyB0aGlzLmhpZGUoKSA6IHRoaXNcclxuICAgICAgfVxyXG5cclxuICAgICAgaXRlbXMgPSAkLmlzRnVuY3Rpb24odGhpcy5zb3VyY2UpID8gdGhpcy5zb3VyY2UodGhpcy5xdWVyeSwgJC5wcm94eSh0aGlzLnByb2Nlc3MsIHRoaXMpKSA6IHRoaXMuc291cmNlXHJcblxyXG4gICAgICByZXR1cm4gaXRlbXMgPyB0aGlzLnByb2Nlc3MoaXRlbXMpIDogdGhpc1xyXG4gICAgfVxyXG5cclxuICAsIHByb2Nlc3M6IGZ1bmN0aW9uIChpdGVtcykge1xyXG4gICAgICB2YXIgdGhhdCA9IHRoaXNcclxuXHJcbiAgICAgIGl0ZW1zID0gJC5ncmVwKGl0ZW1zLCBmdW5jdGlvbiAoaXRlbSkge1xyXG4gICAgICAgIHJldHVybiB0aGF0Lm1hdGNoZXIoaXRlbSlcclxuICAgICAgfSlcclxuXHJcbiAgICAgIGl0ZW1zID0gdGhpcy5zb3J0ZXIoaXRlbXMpXHJcblxyXG4gICAgICBpZiAoIWl0ZW1zLmxlbmd0aCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNob3duID8gdGhpcy5oaWRlKCkgOiB0aGlzXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiB0aGlzLnJlbmRlcihpdGVtcy5zbGljZSgwLCB0aGlzLm9wdGlvbnMuaXRlbXMpKS5zaG93KClcclxuICAgIH1cclxuXHJcbiAgLCBtYXRjaGVyOiBmdW5jdGlvbiAoaXRlbSkge1xyXG4gICAgICByZXR1cm4gfml0ZW0udG9Mb3dlckNhc2UoKS5pbmRleE9mKHRoaXMucXVlcnkudG9Mb3dlckNhc2UoKSlcclxuICAgIH1cclxuXHJcbiAgLCBzb3J0ZXI6IGZ1bmN0aW9uIChpdGVtcykge1xyXG4gICAgICB2YXIgYmVnaW5zd2l0aCA9IFtdXHJcbiAgICAgICAgLCBjYXNlU2Vuc2l0aXZlID0gW11cclxuICAgICAgICAsIGNhc2VJbnNlbnNpdGl2ZSA9IFtdXHJcbiAgICAgICAgLCBpdGVtXHJcblxyXG4gICAgICB3aGlsZSAoaXRlbSA9IGl0ZW1zLnNoaWZ0KCkpIHtcclxuICAgICAgICBpZiAoIWl0ZW0udG9Mb3dlckNhc2UoKS5pbmRleE9mKHRoaXMucXVlcnkudG9Mb3dlckNhc2UoKSkpIGJlZ2luc3dpdGgucHVzaChpdGVtKVxyXG4gICAgICAgIGVsc2UgaWYgKH5pdGVtLmluZGV4T2YodGhpcy5xdWVyeSkpIGNhc2VTZW5zaXRpdmUucHVzaChpdGVtKVxyXG4gICAgICAgIGVsc2UgY2FzZUluc2Vuc2l0aXZlLnB1c2goaXRlbSlcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIGJlZ2luc3dpdGguY29uY2F0KGNhc2VTZW5zaXRpdmUsIGNhc2VJbnNlbnNpdGl2ZSlcclxuICAgIH1cclxuXHJcbiAgLCBoaWdobGlnaHRlcjogZnVuY3Rpb24gKGl0ZW0pIHtcclxuICAgICAgdmFyIHF1ZXJ5ID0gdGhpcy5xdWVyeS5yZXBsYWNlKC9bXFwtXFxbXFxde30oKSorPy4sXFxcXFxcXiR8I1xcc10vZywgJ1xcXFwkJicpXHJcbiAgICAgIHJldHVybiBpdGVtLnJlcGxhY2UobmV3IFJlZ0V4cCgnKCcgKyBxdWVyeSArICcpJywgJ2lnJyksIGZ1bmN0aW9uICgkMSwgbWF0Y2gpIHtcclxuICAgICAgICByZXR1cm4gJzxzdHJvbmc+JyArIG1hdGNoICsgJzwvc3Ryb25nPidcclxuICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgLCByZW5kZXI6IGZ1bmN0aW9uIChpdGVtcykge1xyXG4gICAgICB2YXIgdGhhdCA9IHRoaXNcclxuXHJcbiAgICAgIGl0ZW1zID0gJChpdGVtcykubWFwKGZ1bmN0aW9uIChpLCBpdGVtKSB7XHJcbiAgICAgICAgaSA9ICQodGhhdC5vcHRpb25zLml0ZW0pLmF0dHIoJ2RhdGEtdmFsdWUnLCBpdGVtKVxyXG4gICAgICAgIGkuZmluZCgnYScpLmh0bWwodGhhdC5oaWdobGlnaHRlcihpdGVtKSlcclxuICAgICAgICByZXR1cm4gaVswXVxyXG4gICAgICB9KVxyXG5cclxuICAgICAgaXRlbXMuZmlyc3QoKS5hZGRDbGFzcygnYWN0aXZlJylcclxuICAgICAgdGhpcy4kbWVudS5odG1sKGl0ZW1zKVxyXG4gICAgICByZXR1cm4gdGhpc1xyXG4gICAgfVxyXG5cclxuICAsIG5leHQ6IGZ1bmN0aW9uIChldmVudCkge1xyXG4gICAgICB2YXIgYWN0aXZlID0gdGhpcy4kbWVudS5maW5kKCcuYWN0aXZlJykucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpXHJcbiAgICAgICAgLCBuZXh0ID0gYWN0aXZlLm5leHQoKVxyXG5cclxuICAgICAgaWYgKCFuZXh0Lmxlbmd0aCkge1xyXG4gICAgICAgIG5leHQgPSAkKHRoaXMuJG1lbnUuZmluZCgnbGknKVswXSlcclxuICAgICAgfVxyXG5cclxuICAgICAgbmV4dC5hZGRDbGFzcygnYWN0aXZlJylcclxuICAgIH1cclxuXHJcbiAgLCBwcmV2OiBmdW5jdGlvbiAoZXZlbnQpIHtcclxuICAgICAgdmFyIGFjdGl2ZSA9IHRoaXMuJG1lbnUuZmluZCgnLmFjdGl2ZScpLnJlbW92ZUNsYXNzKCdhY3RpdmUnKVxyXG4gICAgICAgICwgcHJldiA9IGFjdGl2ZS5wcmV2KClcclxuXHJcbiAgICAgIGlmICghcHJldi5sZW5ndGgpIHtcclxuICAgICAgICBwcmV2ID0gdGhpcy4kbWVudS5maW5kKCdsaScpLmxhc3QoKVxyXG4gICAgICB9XHJcblxyXG4gICAgICBwcmV2LmFkZENsYXNzKCdhY3RpdmUnKVxyXG4gICAgfVxyXG5cclxuICAsIGxpc3RlbjogZnVuY3Rpb24gKCkge1xyXG4gICAgICB0aGlzLiRlbGVtZW50XHJcbiAgICAgICAgLm9uKCdibHVyJywgICAgICQucHJveHkodGhpcy5ibHVyLCB0aGlzKSlcclxuICAgICAgICAub24oJ2tleXByZXNzJywgJC5wcm94eSh0aGlzLmtleXByZXNzLCB0aGlzKSlcclxuICAgICAgICAub24oJ2tleXVwJywgICAgJC5wcm94eSh0aGlzLmtleXVwLCB0aGlzKSlcclxuXHJcbiAgICAgIGlmICgkLmJyb3dzZXIuY2hyb21lIHx8ICQuYnJvd3Nlci53ZWJraXQgfHwgJC5icm93c2VyLm1zaWUpIHtcclxuICAgICAgICB0aGlzLiRlbGVtZW50Lm9uKCdrZXlkb3duJywgJC5wcm94eSh0aGlzLmtleWRvd24sIHRoaXMpKVxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLiRtZW51XHJcbiAgICAgICAgLm9uKCdjbGljaycsICQucHJveHkodGhpcy5jbGljaywgdGhpcykpXHJcbiAgICAgICAgLm9uKCdtb3VzZWVudGVyJywgJ2xpJywgJC5wcm94eSh0aGlzLm1vdXNlZW50ZXIsIHRoaXMpKVxyXG4gICAgfVxyXG5cclxuICAsIG1vdmU6IGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgIGlmICghdGhpcy5zaG93bikgcmV0dXJuXHJcblxyXG4gICAgICBzd2l0Y2goZS5rZXlDb2RlKSB7XHJcbiAgICAgICAgY2FzZSA5OiAvLyB0YWJcclxuICAgICAgICBjYXNlIDEzOiAvLyBlbnRlclxyXG4gICAgICAgIGNhc2UgMjc6IC8vIGVzY2FwZVxyXG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXHJcbiAgICAgICAgICBicmVha1xyXG5cclxuICAgICAgICBjYXNlIDM4OiAvLyB1cCBhcnJvd1xyXG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXHJcbiAgICAgICAgICB0aGlzLnByZXYoKVxyXG4gICAgICAgICAgYnJlYWtcclxuXHJcbiAgICAgICAgY2FzZSA0MDogLy8gZG93biBhcnJvd1xyXG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXHJcbiAgICAgICAgICB0aGlzLm5leHQoKVxyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgfVxyXG5cclxuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKVxyXG4gICAgfVxyXG5cclxuICAsIGtleWRvd246IGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgIHRoaXMuc3VwcHJlc3NLZXlQcmVzc1JlcGVhdCA9ICF+JC5pbkFycmF5KGUua2V5Q29kZSwgWzQwLDM4LDksMTMsMjddKVxyXG4gICAgICB0aGlzLm1vdmUoZSlcclxuICAgIH1cclxuXHJcbiAgLCBrZXlwcmVzczogZnVuY3Rpb24gKGUpIHtcclxuICAgICAgaWYgKHRoaXMuc3VwcHJlc3NLZXlQcmVzc1JlcGVhdCkgcmV0dXJuXHJcbiAgICAgIHRoaXMubW92ZShlKVxyXG4gICAgfVxyXG5cclxuICAsIGtleXVwOiBmdW5jdGlvbiAoZSkge1xyXG4gICAgICBzd2l0Y2goZS5rZXlDb2RlKSB7XHJcbiAgICAgICAgY2FzZSA0MDogLy8gZG93biBhcnJvd1xyXG4gICAgICAgIGNhc2UgMzg6IC8vIHVwIGFycm93XHJcbiAgICAgICAgICBicmVha1xyXG5cclxuICAgICAgICBjYXNlIDk6IC8vIHRhYlxyXG4gICAgICAgIGNhc2UgMTM6IC8vIGVudGVyXHJcbiAgICAgICAgICBpZiAoIXRoaXMuc2hvd24pIHJldHVyblxyXG4gICAgICAgICAgdGhpcy5zZWxlY3QoKVxyXG4gICAgICAgICAgYnJlYWtcclxuXHJcbiAgICAgICAgY2FzZSAyNzogLy8gZXNjYXBlXHJcbiAgICAgICAgICBpZiAoIXRoaXMuc2hvd24pIHJldHVyblxyXG4gICAgICAgICAgdGhpcy5oaWRlKClcclxuICAgICAgICAgIGJyZWFrXHJcblxyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICB0aGlzLmxvb2t1cCgpXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcclxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXHJcbiAgfVxyXG5cclxuICAsIGJsdXI6IGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgIHZhciB0aGF0ID0gdGhpc1xyXG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgdGhhdC5oaWRlKCkgfSwgMTUwKVxyXG4gICAgfVxyXG5cclxuICAsIGNsaWNrOiBmdW5jdGlvbiAoZSkge1xyXG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpXHJcbiAgICAgIGUucHJldmVudERlZmF1bHQoKVxyXG4gICAgICB0aGlzLnNlbGVjdCgpXHJcbiAgICB9XHJcblxyXG4gICwgbW91c2VlbnRlcjogZnVuY3Rpb24gKGUpIHtcclxuICAgICAgdGhpcy4kbWVudS5maW5kKCcuYWN0aXZlJykucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpXHJcbiAgICAgICQoZS5jdXJyZW50VGFyZ2V0KS5hZGRDbGFzcygnYWN0aXZlJylcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuXHJcbiAgLyogVFlQRUFIRUFEIFBMVUdJTiBERUZJTklUSU9OXHJcbiAgICogPT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG4gICQuZm4udHlwZWFoZWFkID0gZnVuY3Rpb24gKG9wdGlvbikge1xyXG4gICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHZhciAkdGhpcyA9ICQodGhpcylcclxuICAgICAgICAsIGRhdGEgPSAkdGhpcy5kYXRhKCd0eXBlYWhlYWQnKVxyXG4gICAgICAgICwgb3B0aW9ucyA9IHR5cGVvZiBvcHRpb24gPT0gJ29iamVjdCcgJiYgb3B0aW9uXHJcbiAgICAgIGlmICghZGF0YSkgJHRoaXMuZGF0YSgndHlwZWFoZWFkJywgKGRhdGEgPSBuZXcgVHlwZWFoZWFkKHRoaXMsIG9wdGlvbnMpKSlcclxuICAgICAgaWYgKHR5cGVvZiBvcHRpb24gPT0gJ3N0cmluZycpIGRhdGFbb3B0aW9uXSgpXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgJC5mbi50eXBlYWhlYWQuZGVmYXVsdHMgPSB7XHJcbiAgICBzb3VyY2U6IFtdXHJcbiAgLCBpdGVtczogOFxyXG4gICwgbWVudTogJzx1bCBjbGFzcz1cInR5cGVhaGVhZCBkcm9wZG93bi1tZW51XCI+PC91bD4nXHJcbiAgLCBpdGVtOiAnPGxpPjxhIGhyZWY9XCIjXCI+PC9hPjwvbGk+J1xyXG4gICwgbWluTGVuZ3RoOiAxXHJcbiAgfVxyXG5cclxuICAkLmZuLnR5cGVhaGVhZC5Db25zdHJ1Y3RvciA9IFR5cGVhaGVhZFxyXG5cclxuXHJcbiAvKiAgIFRZUEVBSEVBRCBEQVRBLUFQSVxyXG4gICogPT09PT09PT09PT09PT09PT09ICovXHJcblxyXG4gICQoZnVuY3Rpb24gKCkge1xyXG4gICAgJCgnYm9keScpLm9uKCdmb2N1cy50eXBlYWhlYWQuZGF0YS1hcGknLCAnW2RhdGEtcHJvdmlkZT1cInR5cGVhaGVhZFwiXScsIGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgIHZhciAkdGhpcyA9ICQodGhpcylcclxuICAgICAgaWYgKCR0aGlzLmRhdGEoJ3R5cGVhaGVhZCcpKSByZXR1cm5cclxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXHJcbiAgICAgICR0aGlzLnR5cGVhaGVhZCgkdGhpcy5kYXRhKCkpXHJcbiAgICB9KVxyXG4gIH0pXHJcblxyXG59KHdpbmRvdy5qUXVlcnkpO1xyXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAqIGJvb3RzdHJhcC1hZmZpeC5qcyB2Mi4xLjFcclxuICogaHR0cDovL3R3aXR0ZXIuZ2l0aHViLmNvbS9ib290c3RyYXAvamF2YXNjcmlwdC5odG1sI2FmZml4XHJcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICogQ29weXJpZ2h0IDIwMTIgVHdpdHRlciwgSW5jLlxyXG4gKlxyXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xyXG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXHJcbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxyXG4gKlxyXG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuICpcclxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxyXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXHJcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxyXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXHJcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG5cclxuIWZ1bmN0aW9uICgkKSB7XHJcblxyXG4gIFwidXNlIHN0cmljdFwiOyAvLyBqc2hpbnQgO187XHJcblxyXG5cclxuIC8qIEFGRklYIENMQVNTIERFRklOSVRJT05cclxuICAqID09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbiAgdmFyIEFmZml4ID0gZnVuY3Rpb24gKGVsZW1lbnQsIG9wdGlvbnMpIHtcclxuICAgIHRoaXMub3B0aW9ucyA9ICQuZXh0ZW5kKHt9LCAkLmZuLmFmZml4LmRlZmF1bHRzLCBvcHRpb25zKVxyXG4gICAgdGhpcy4kd2luZG93ID0gJCh3aW5kb3cpLm9uKCdzY3JvbGwuYWZmaXguZGF0YS1hcGknLCAkLnByb3h5KHRoaXMuY2hlY2tQb3NpdGlvbiwgdGhpcykpXHJcbiAgICB0aGlzLiRlbGVtZW50ID0gJChlbGVtZW50KVxyXG4gICAgdGhpcy5jaGVja1Bvc2l0aW9uKClcclxuICB9XHJcblxyXG4gIEFmZml4LnByb3RvdHlwZS5jaGVja1Bvc2l0aW9uID0gZnVuY3Rpb24gKCkge1xyXG4gICAgaWYgKCF0aGlzLiRlbGVtZW50LmlzKCc6dmlzaWJsZScpKSByZXR1cm5cclxuXHJcbiAgICB2YXIgc2Nyb2xsSGVpZ2h0ID0gJChkb2N1bWVudCkuaGVpZ2h0KClcclxuICAgICAgLCBzY3JvbGxUb3AgPSB0aGlzLiR3aW5kb3cuc2Nyb2xsVG9wKClcclxuICAgICAgLCBwb3NpdGlvbiA9IHRoaXMuJGVsZW1lbnQub2Zmc2V0KClcclxuICAgICAgLCBvZmZzZXQgPSB0aGlzLm9wdGlvbnMub2Zmc2V0XHJcbiAgICAgICwgb2Zmc2V0Qm90dG9tID0gb2Zmc2V0LmJvdHRvbVxyXG4gICAgICAsIG9mZnNldFRvcCA9IG9mZnNldC50b3BcclxuICAgICAgLCByZXNldCA9ICdhZmZpeCBhZmZpeC10b3AgYWZmaXgtYm90dG9tJ1xyXG4gICAgICAsIGFmZml4XHJcblxyXG4gICAgaWYgKHR5cGVvZiBvZmZzZXQgIT0gJ29iamVjdCcpIG9mZnNldEJvdHRvbSA9IG9mZnNldFRvcCA9IG9mZnNldFxyXG4gICAgaWYgKHR5cGVvZiBvZmZzZXRUb3AgPT0gJ2Z1bmN0aW9uJykgb2Zmc2V0VG9wID0gb2Zmc2V0LnRvcCgpXHJcbiAgICBpZiAodHlwZW9mIG9mZnNldEJvdHRvbSA9PSAnZnVuY3Rpb24nKSBvZmZzZXRCb3R0b20gPSBvZmZzZXQuYm90dG9tKClcclxuXHJcbiAgICBhZmZpeCA9IHRoaXMudW5waW4gIT0gbnVsbCAmJiAoc2Nyb2xsVG9wICsgdGhpcy51bnBpbiA8PSBwb3NpdGlvbi50b3ApID9cclxuICAgICAgZmFsc2UgICAgOiBvZmZzZXRCb3R0b20gIT0gbnVsbCAmJiAocG9zaXRpb24udG9wICsgdGhpcy4kZWxlbWVudC5oZWlnaHQoKSA+PSBzY3JvbGxIZWlnaHQgLSBvZmZzZXRCb3R0b20pID9cclxuICAgICAgJ2JvdHRvbScgOiBvZmZzZXRUb3AgIT0gbnVsbCAmJiBzY3JvbGxUb3AgPD0gb2Zmc2V0VG9wID9cclxuICAgICAgJ3RvcCcgICAgOiBmYWxzZVxyXG5cclxuICAgIGlmICh0aGlzLmFmZml4ZWQgPT09IGFmZml4KSByZXR1cm5cclxuXHJcbiAgICB0aGlzLmFmZml4ZWQgPSBhZmZpeFxyXG4gICAgdGhpcy51bnBpbiA9IGFmZml4ID09ICdib3R0b20nID8gcG9zaXRpb24udG9wIC0gc2Nyb2xsVG9wIDogbnVsbFxyXG5cclxuICAgIHRoaXMuJGVsZW1lbnQucmVtb3ZlQ2xhc3MocmVzZXQpLmFkZENsYXNzKCdhZmZpeCcgKyAoYWZmaXggPyAnLScgKyBhZmZpeCA6ICcnKSlcclxuICB9XHJcblxyXG5cclxuIC8qIEFGRklYIFBMVUdJTiBERUZJTklUSU9OXHJcbiAgKiA9PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuICAkLmZuLmFmZml4ID0gZnVuY3Rpb24gKG9wdGlvbikge1xyXG4gICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHZhciAkdGhpcyA9ICQodGhpcylcclxuICAgICAgICAsIGRhdGEgPSAkdGhpcy5kYXRhKCdhZmZpeCcpXHJcbiAgICAgICAgLCBvcHRpb25zID0gdHlwZW9mIG9wdGlvbiA9PSAnb2JqZWN0JyAmJiBvcHRpb25cclxuICAgICAgaWYgKCFkYXRhKSAkdGhpcy5kYXRhKCdhZmZpeCcsIChkYXRhID0gbmV3IEFmZml4KHRoaXMsIG9wdGlvbnMpKSlcclxuICAgICAgaWYgKHR5cGVvZiBvcHRpb24gPT0gJ3N0cmluZycpIGRhdGFbb3B0aW9uXSgpXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgJC5mbi5hZmZpeC5Db25zdHJ1Y3RvciA9IEFmZml4XHJcblxyXG4gICQuZm4uYWZmaXguZGVmYXVsdHMgPSB7XHJcbiAgICBvZmZzZXQ6IDBcclxuICB9XHJcblxyXG5cclxuIC8qIEFGRklYIERBVEEtQVBJXHJcbiAgKiA9PT09PT09PT09PT09PSAqL1xyXG5cclxuICAkKHdpbmRvdykub24oJ2xvYWQnLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAkKCdbZGF0YS1zcHk9XCJhZmZpeFwiXScpLmVhY2goZnVuY3Rpb24gKCkge1xyXG4gICAgICB2YXIgJHNweSA9ICQodGhpcylcclxuICAgICAgICAsIGRhdGEgPSAkc3B5LmRhdGEoKVxyXG5cclxuICAgICAgZGF0YS5vZmZzZXQgPSBkYXRhLm9mZnNldCB8fCB7fVxyXG5cclxuICAgICAgZGF0YS5vZmZzZXRCb3R0b20gJiYgKGRhdGEub2Zmc2V0LmJvdHRvbSA9IGRhdGEub2Zmc2V0Qm90dG9tKVxyXG4gICAgICBkYXRhLm9mZnNldFRvcCAmJiAoZGF0YS5vZmZzZXQudG9wID0gZGF0YS5vZmZzZXRUb3ApXHJcblxyXG4gICAgICAkc3B5LmFmZml4KGRhdGEpXHJcbiAgICB9KVxyXG4gIH0pXHJcblxyXG5cclxufSh3aW5kb3cualF1ZXJ5KTtcclxuIiwiLyohXHJcbiAqIGpRdWVyeSBKYXZhU2NyaXB0IExpYnJhcnkgdjEuOC4xXHJcbiAqIGh0dHA6Ly9qcXVlcnkuY29tL1xyXG4gKlxyXG4gKiBJbmNsdWRlcyBTaXp6bGUuanNcclxuICogaHR0cDovL3NpenpsZWpzLmNvbS9cclxuICpcclxuICogQ29weXJpZ2h0IDIwMTIgalF1ZXJ5IEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9yc1xyXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2VcclxuICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZVxyXG4gKlxyXG4gKiBEYXRlOiBUaHUgQXVnIDMwIDIwMTIgMTc6MTc6MjIgR01ULTA0MDAgKEVhc3Rlcm4gRGF5bGlnaHQgVGltZSlcclxuICovXHJcbihmdW5jdGlvbiggd2luZG93LCB1bmRlZmluZWQgKSB7XHJcbnZhclxyXG5cdC8vIEEgY2VudHJhbCByZWZlcmVuY2UgdG8gdGhlIHJvb3QgalF1ZXJ5KGRvY3VtZW50KVxyXG5cdHJvb3RqUXVlcnksXHJcblxyXG5cdC8vIFRoZSBkZWZlcnJlZCB1c2VkIG9uIERPTSByZWFkeVxyXG5cdHJlYWR5TGlzdCxcclxuXHJcblx0Ly8gVXNlIHRoZSBjb3JyZWN0IGRvY3VtZW50IGFjY29yZGluZ2x5IHdpdGggd2luZG93IGFyZ3VtZW50IChzYW5kYm94KVxyXG5cdGRvY3VtZW50ID0gd2luZG93LmRvY3VtZW50LFxyXG5cdGxvY2F0aW9uID0gd2luZG93LmxvY2F0aW9uLFxyXG5cdG5hdmlnYXRvciA9IHdpbmRvdy5uYXZpZ2F0b3IsXHJcblxyXG5cdC8vIE1hcCBvdmVyIGpRdWVyeSBpbiBjYXNlIG9mIG92ZXJ3cml0ZVxyXG5cdF9qUXVlcnkgPSB3aW5kb3cualF1ZXJ5LFxyXG5cclxuXHQvLyBNYXAgb3ZlciB0aGUgJCBpbiBjYXNlIG9mIG92ZXJ3cml0ZVxyXG5cdF8kID0gd2luZG93LiQsXHJcblxyXG5cdC8vIFNhdmUgYSByZWZlcmVuY2UgdG8gc29tZSBjb3JlIG1ldGhvZHNcclxuXHRjb3JlX3B1c2ggPSBBcnJheS5wcm90b3R5cGUucHVzaCxcclxuXHRjb3JlX3NsaWNlID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLFxyXG5cdGNvcmVfaW5kZXhPZiA9IEFycmF5LnByb3RvdHlwZS5pbmRleE9mLFxyXG5cdGNvcmVfdG9TdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLFxyXG5cdGNvcmVfaGFzT3duID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxcclxuXHRjb3JlX3RyaW0gPSBTdHJpbmcucHJvdG90eXBlLnRyaW0sXHJcblxyXG5cdC8vIERlZmluZSBhIGxvY2FsIGNvcHkgb2YgalF1ZXJ5XHJcblx0alF1ZXJ5ID0gZnVuY3Rpb24oIHNlbGVjdG9yLCBjb250ZXh0ICkge1xyXG5cdFx0Ly8gVGhlIGpRdWVyeSBvYmplY3QgaXMgYWN0dWFsbHkganVzdCB0aGUgaW5pdCBjb25zdHJ1Y3RvciAnZW5oYW5jZWQnXHJcblx0XHRyZXR1cm4gbmV3IGpRdWVyeS5mbi5pbml0KCBzZWxlY3RvciwgY29udGV4dCwgcm9vdGpRdWVyeSApO1xyXG5cdH0sXHJcblxyXG5cdC8vIFVzZWQgZm9yIG1hdGNoaW5nIG51bWJlcnNcclxuXHRjb3JlX3BudW0gPSAvW1xcLStdPyg/OlxcZCpcXC58KVxcZCsoPzpbZUVdW1xcLStdP1xcZCt8KS8uc291cmNlLFxyXG5cclxuXHQvLyBVc2VkIGZvciBkZXRlY3RpbmcgYW5kIHRyaW1taW5nIHdoaXRlc3BhY2VcclxuXHRjb3JlX3Jub3R3aGl0ZSA9IC9cXFMvLFxyXG5cdGNvcmVfcnNwYWNlID0gL1xccysvLFxyXG5cclxuXHQvLyBNYWtlIHN1cmUgd2UgdHJpbSBCT00gYW5kIE5CU1AgKGhlcmUncyBsb29raW5nIGF0IHlvdSwgU2FmYXJpIDUuMCBhbmQgSUUpXHJcblx0cnRyaW0gPSAvXltcXHNcXHVGRUZGXFx4QTBdK3xbXFxzXFx1RkVGRlxceEEwXSskL2csXHJcblxyXG5cdC8vIEEgc2ltcGxlIHdheSB0byBjaGVjayBmb3IgSFRNTCBzdHJpbmdzXHJcblx0Ly8gUHJpb3JpdGl6ZSAjaWQgb3ZlciA8dGFnPiB0byBhdm9pZCBYU1MgdmlhIGxvY2F0aW9uLmhhc2ggKCM5NTIxKVxyXG5cdHJxdWlja0V4cHIgPSAvXig/OlteIzxdKig8W1xcd1xcV10rPilbXj5dKiR8IyhbXFx3XFwtXSopJCkvLFxyXG5cclxuXHQvLyBNYXRjaCBhIHN0YW5kYWxvbmUgdGFnXHJcblx0cnNpbmdsZVRhZyA9IC9ePChcXHcrKVxccypcXC8/Pig/OjxcXC9cXDE+fCkkLyxcclxuXHJcblx0Ly8gSlNPTiBSZWdFeHBcclxuXHRydmFsaWRjaGFycyA9IC9eW1xcXSw6e31cXHNdKiQvLFxyXG5cdHJ2YWxpZGJyYWNlcyA9IC8oPzpefDp8LCkoPzpcXHMqXFxbKSsvZyxcclxuXHRydmFsaWRlc2NhcGUgPSAvXFxcXCg/OltcIlxcXFxcXC9iZm5ydF18dVtcXGRhLWZBLUZdezR9KS9nLFxyXG5cdHJ2YWxpZHRva2VucyA9IC9cIlteXCJcXFxcXFxyXFxuXSpcInx0cnVlfGZhbHNlfG51bGx8LT8oPzpcXGRcXGQqXFwufClcXGQrKD86W2VFXVtcXC0rXT9cXGQrfCkvZyxcclxuXHJcblx0Ly8gTWF0Y2hlcyBkYXNoZWQgc3RyaW5nIGZvciBjYW1lbGl6aW5nXHJcblx0cm1zUHJlZml4ID0gL14tbXMtLyxcclxuXHRyZGFzaEFscGhhID0gLy0oW1xcZGEtel0pL2dpLFxyXG5cclxuXHQvLyBVc2VkIGJ5IGpRdWVyeS5jYW1lbENhc2UgYXMgY2FsbGJhY2sgdG8gcmVwbGFjZSgpXHJcblx0ZmNhbWVsQ2FzZSA9IGZ1bmN0aW9uKCBhbGwsIGxldHRlciApIHtcclxuXHRcdHJldHVybiAoIGxldHRlciArIFwiXCIgKS50b1VwcGVyQ2FzZSgpO1xyXG5cdH0sXHJcblxyXG5cdC8vIFRoZSByZWFkeSBldmVudCBoYW5kbGVyIGFuZCBzZWxmIGNsZWFudXAgbWV0aG9kXHJcblx0RE9NQ29udGVudExvYWRlZCA9IGZ1bmN0aW9uKCkge1xyXG5cdFx0aWYgKCBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyICkge1xyXG5cdFx0XHRkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCBcIkRPTUNvbnRlbnRMb2FkZWRcIiwgRE9NQ29udGVudExvYWRlZCwgZmFsc2UgKTtcclxuXHRcdFx0alF1ZXJ5LnJlYWR5KCk7XHJcblx0XHR9IGVsc2UgaWYgKCBkb2N1bWVudC5yZWFkeVN0YXRlID09PSBcImNvbXBsZXRlXCIgKSB7XHJcblx0XHRcdC8vIHdlJ3JlIGhlcmUgYmVjYXVzZSByZWFkeVN0YXRlID09PSBcImNvbXBsZXRlXCIgaW4gb2xkSUVcclxuXHRcdFx0Ly8gd2hpY2ggaXMgZ29vZCBlbm91Z2ggZm9yIHVzIHRvIGNhbGwgdGhlIGRvbSByZWFkeSFcclxuXHRcdFx0ZG9jdW1lbnQuZGV0YWNoRXZlbnQoIFwib25yZWFkeXN0YXRlY2hhbmdlXCIsIERPTUNvbnRlbnRMb2FkZWQgKTtcclxuXHRcdFx0alF1ZXJ5LnJlYWR5KCk7XHJcblx0XHR9XHJcblx0fSxcclxuXHJcblx0Ly8gW1tDbGFzc11dIC0+IHR5cGUgcGFpcnNcclxuXHRjbGFzczJ0eXBlID0ge307XHJcblxyXG5qUXVlcnkuZm4gPSBqUXVlcnkucHJvdG90eXBlID0ge1xyXG5cdGNvbnN0cnVjdG9yOiBqUXVlcnksXHJcblx0aW5pdDogZnVuY3Rpb24oIHNlbGVjdG9yLCBjb250ZXh0LCByb290alF1ZXJ5ICkge1xyXG5cdFx0dmFyIG1hdGNoLCBlbGVtLCByZXQsIGRvYztcclxuXHJcblx0XHQvLyBIYW5kbGUgJChcIlwiKSwgJChudWxsKSwgJCh1bmRlZmluZWQpLCAkKGZhbHNlKVxyXG5cdFx0aWYgKCAhc2VsZWN0b3IgKSB7XHJcblx0XHRcdHJldHVybiB0aGlzO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIEhhbmRsZSAkKERPTUVsZW1lbnQpXHJcblx0XHRpZiAoIHNlbGVjdG9yLm5vZGVUeXBlICkge1xyXG5cdFx0XHR0aGlzLmNvbnRleHQgPSB0aGlzWzBdID0gc2VsZWN0b3I7XHJcblx0XHRcdHRoaXMubGVuZ3RoID0gMTtcclxuXHRcdFx0cmV0dXJuIHRoaXM7XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gSGFuZGxlIEhUTUwgc3RyaW5nc1xyXG5cdFx0aWYgKCB0eXBlb2Ygc2VsZWN0b3IgPT09IFwic3RyaW5nXCIgKSB7XHJcblx0XHRcdGlmICggc2VsZWN0b3IuY2hhckF0KDApID09PSBcIjxcIiAmJiBzZWxlY3Rvci5jaGFyQXQoIHNlbGVjdG9yLmxlbmd0aCAtIDEgKSA9PT0gXCI+XCIgJiYgc2VsZWN0b3IubGVuZ3RoID49IDMgKSB7XHJcblx0XHRcdFx0Ly8gQXNzdW1lIHRoYXQgc3RyaW5ncyB0aGF0IHN0YXJ0IGFuZCBlbmQgd2l0aCA8PiBhcmUgSFRNTCBhbmQgc2tpcCB0aGUgcmVnZXggY2hlY2tcclxuXHRcdFx0XHRtYXRjaCA9IFsgbnVsbCwgc2VsZWN0b3IsIG51bGwgXTtcclxuXHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0bWF0Y2ggPSBycXVpY2tFeHByLmV4ZWMoIHNlbGVjdG9yICk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8vIE1hdGNoIGh0bWwgb3IgbWFrZSBzdXJlIG5vIGNvbnRleHQgaXMgc3BlY2lmaWVkIGZvciAjaWRcclxuXHRcdFx0aWYgKCBtYXRjaCAmJiAobWF0Y2hbMV0gfHwgIWNvbnRleHQpICkge1xyXG5cclxuXHRcdFx0XHQvLyBIQU5ETEU6ICQoaHRtbCkgLT4gJChhcnJheSlcclxuXHRcdFx0XHRpZiAoIG1hdGNoWzFdICkge1xyXG5cdFx0XHRcdFx0Y29udGV4dCA9IGNvbnRleHQgaW5zdGFuY2VvZiBqUXVlcnkgPyBjb250ZXh0WzBdIDogY29udGV4dDtcclxuXHRcdFx0XHRcdGRvYyA9ICggY29udGV4dCAmJiBjb250ZXh0Lm5vZGVUeXBlID8gY29udGV4dC5vd25lckRvY3VtZW50IHx8IGNvbnRleHQgOiBkb2N1bWVudCApO1xyXG5cclxuXHRcdFx0XHRcdC8vIHNjcmlwdHMgaXMgdHJ1ZSBmb3IgYmFjay1jb21wYXRcclxuXHRcdFx0XHRcdHNlbGVjdG9yID0galF1ZXJ5LnBhcnNlSFRNTCggbWF0Y2hbMV0sIGRvYywgdHJ1ZSApO1xyXG5cdFx0XHRcdFx0aWYgKCByc2luZ2xlVGFnLnRlc3QoIG1hdGNoWzFdICkgJiYgalF1ZXJ5LmlzUGxhaW5PYmplY3QoIGNvbnRleHQgKSApIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5hdHRyLmNhbGwoIHNlbGVjdG9yLCBjb250ZXh0LCB0cnVlICk7XHJcblx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0cmV0dXJuIGpRdWVyeS5tZXJnZSggdGhpcywgc2VsZWN0b3IgKTtcclxuXHJcblx0XHRcdFx0Ly8gSEFORExFOiAkKCNpZClcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0ZWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCBtYXRjaFsyXSApO1xyXG5cclxuXHRcdFx0XHRcdC8vIENoZWNrIHBhcmVudE5vZGUgdG8gY2F0Y2ggd2hlbiBCbGFja2JlcnJ5IDQuNiByZXR1cm5zXHJcblx0XHRcdFx0XHQvLyBub2RlcyB0aGF0IGFyZSBubyBsb25nZXIgaW4gdGhlIGRvY3VtZW50ICM2OTYzXHJcblx0XHRcdFx0XHRpZiAoIGVsZW0gJiYgZWxlbS5wYXJlbnROb2RlICkge1xyXG5cdFx0XHRcdFx0XHQvLyBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgSUUgYW5kIE9wZXJhIHJldHVybiBpdGVtc1xyXG5cdFx0XHRcdFx0XHQvLyBieSBuYW1lIGluc3RlYWQgb2YgSURcclxuXHRcdFx0XHRcdFx0aWYgKCBlbGVtLmlkICE9PSBtYXRjaFsyXSApIHtcclxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gcm9vdGpRdWVyeS5maW5kKCBzZWxlY3RvciApO1xyXG5cdFx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0XHQvLyBPdGhlcndpc2UsIHdlIGluamVjdCB0aGUgZWxlbWVudCBkaXJlY3RseSBpbnRvIHRoZSBqUXVlcnkgb2JqZWN0XHJcblx0XHRcdFx0XHRcdHRoaXMubGVuZ3RoID0gMTtcclxuXHRcdFx0XHRcdFx0dGhpc1swXSA9IGVsZW07XHJcblx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0dGhpcy5jb250ZXh0ID0gZG9jdW1lbnQ7XHJcblx0XHRcdFx0XHR0aGlzLnNlbGVjdG9yID0gc2VsZWN0b3I7XHJcblx0XHRcdFx0XHRyZXR1cm4gdGhpcztcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHQvLyBIQU5ETEU6ICQoZXhwciwgJCguLi4pKVxyXG5cdFx0XHR9IGVsc2UgaWYgKCAhY29udGV4dCB8fCBjb250ZXh0LmpxdWVyeSApIHtcclxuXHRcdFx0XHRyZXR1cm4gKCBjb250ZXh0IHx8IHJvb3RqUXVlcnkgKS5maW5kKCBzZWxlY3RvciApO1xyXG5cclxuXHRcdFx0Ly8gSEFORExFOiAkKGV4cHIsIGNvbnRleHQpXHJcblx0XHRcdC8vICh3aGljaCBpcyBqdXN0IGVxdWl2YWxlbnQgdG86ICQoY29udGV4dCkuZmluZChleHByKVxyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHJldHVybiB0aGlzLmNvbnN0cnVjdG9yKCBjb250ZXh0ICkuZmluZCggc2VsZWN0b3IgKTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdC8vIEhBTkRMRTogJChmdW5jdGlvbilcclxuXHRcdC8vIFNob3J0Y3V0IGZvciBkb2N1bWVudCByZWFkeVxyXG5cdFx0fSBlbHNlIGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHNlbGVjdG9yICkgKSB7XHJcblx0XHRcdHJldHVybiByb290alF1ZXJ5LnJlYWR5KCBzZWxlY3RvciApO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICggc2VsZWN0b3Iuc2VsZWN0b3IgIT09IHVuZGVmaW5lZCApIHtcclxuXHRcdFx0dGhpcy5zZWxlY3RvciA9IHNlbGVjdG9yLnNlbGVjdG9yO1xyXG5cdFx0XHR0aGlzLmNvbnRleHQgPSBzZWxlY3Rvci5jb250ZXh0O1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiBqUXVlcnkubWFrZUFycmF5KCBzZWxlY3RvciwgdGhpcyApO1xyXG5cdH0sXHJcblxyXG5cdC8vIFN0YXJ0IHdpdGggYW4gZW1wdHkgc2VsZWN0b3JcclxuXHRzZWxlY3RvcjogXCJcIixcclxuXHJcblx0Ly8gVGhlIGN1cnJlbnQgdmVyc2lvbiBvZiBqUXVlcnkgYmVpbmcgdXNlZFxyXG5cdGpxdWVyeTogXCIxLjguMVwiLFxyXG5cclxuXHQvLyBUaGUgZGVmYXVsdCBsZW5ndGggb2YgYSBqUXVlcnkgb2JqZWN0IGlzIDBcclxuXHRsZW5ndGg6IDAsXHJcblxyXG5cdC8vIFRoZSBudW1iZXIgb2YgZWxlbWVudHMgY29udGFpbmVkIGluIHRoZSBtYXRjaGVkIGVsZW1lbnQgc2V0XHJcblx0c2l6ZTogZnVuY3Rpb24oKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5sZW5ndGg7XHJcblx0fSxcclxuXHJcblx0dG9BcnJheTogZnVuY3Rpb24oKSB7XHJcblx0XHRyZXR1cm4gY29yZV9zbGljZS5jYWxsKCB0aGlzICk7XHJcblx0fSxcclxuXHJcblx0Ly8gR2V0IHRoZSBOdGggZWxlbWVudCBpbiB0aGUgbWF0Y2hlZCBlbGVtZW50IHNldCBPUlxyXG5cdC8vIEdldCB0aGUgd2hvbGUgbWF0Y2hlZCBlbGVtZW50IHNldCBhcyBhIGNsZWFuIGFycmF5XHJcblx0Z2V0OiBmdW5jdGlvbiggbnVtICkge1xyXG5cdFx0cmV0dXJuIG51bSA9PSBudWxsID9cclxuXHJcblx0XHRcdC8vIFJldHVybiBhICdjbGVhbicgYXJyYXlcclxuXHRcdFx0dGhpcy50b0FycmF5KCkgOlxyXG5cclxuXHRcdFx0Ly8gUmV0dXJuIGp1c3QgdGhlIG9iamVjdFxyXG5cdFx0XHQoIG51bSA8IDAgPyB0aGlzWyB0aGlzLmxlbmd0aCArIG51bSBdIDogdGhpc1sgbnVtIF0gKTtcclxuXHR9LFxyXG5cclxuXHQvLyBUYWtlIGFuIGFycmF5IG9mIGVsZW1lbnRzIGFuZCBwdXNoIGl0IG9udG8gdGhlIHN0YWNrXHJcblx0Ly8gKHJldHVybmluZyB0aGUgbmV3IG1hdGNoZWQgZWxlbWVudCBzZXQpXHJcblx0cHVzaFN0YWNrOiBmdW5jdGlvbiggZWxlbXMsIG5hbWUsIHNlbGVjdG9yICkge1xyXG5cclxuXHRcdC8vIEJ1aWxkIGEgbmV3IGpRdWVyeSBtYXRjaGVkIGVsZW1lbnQgc2V0XHJcblx0XHR2YXIgcmV0ID0galF1ZXJ5Lm1lcmdlKCB0aGlzLmNvbnN0cnVjdG9yKCksIGVsZW1zICk7XHJcblxyXG5cdFx0Ly8gQWRkIHRoZSBvbGQgb2JqZWN0IG9udG8gdGhlIHN0YWNrIChhcyBhIHJlZmVyZW5jZSlcclxuXHRcdHJldC5wcmV2T2JqZWN0ID0gdGhpcztcclxuXHJcblx0XHRyZXQuY29udGV4dCA9IHRoaXMuY29udGV4dDtcclxuXHJcblx0XHRpZiAoIG5hbWUgPT09IFwiZmluZFwiICkge1xyXG5cdFx0XHRyZXQuc2VsZWN0b3IgPSB0aGlzLnNlbGVjdG9yICsgKCB0aGlzLnNlbGVjdG9yID8gXCIgXCIgOiBcIlwiICkgKyBzZWxlY3RvcjtcclxuXHRcdH0gZWxzZSBpZiAoIG5hbWUgKSB7XHJcblx0XHRcdHJldC5zZWxlY3RvciA9IHRoaXMuc2VsZWN0b3IgKyBcIi5cIiArIG5hbWUgKyBcIihcIiArIHNlbGVjdG9yICsgXCIpXCI7XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gUmV0dXJuIHRoZSBuZXdseS1mb3JtZWQgZWxlbWVudCBzZXRcclxuXHRcdHJldHVybiByZXQ7XHJcblx0fSxcclxuXHJcblx0Ly8gRXhlY3V0ZSBhIGNhbGxiYWNrIGZvciBldmVyeSBlbGVtZW50IGluIHRoZSBtYXRjaGVkIHNldC5cclxuXHQvLyAoWW91IGNhbiBzZWVkIHRoZSBhcmd1bWVudHMgd2l0aCBhbiBhcnJheSBvZiBhcmdzLCBidXQgdGhpcyBpc1xyXG5cdC8vIG9ubHkgdXNlZCBpbnRlcm5hbGx5LilcclxuXHRlYWNoOiBmdW5jdGlvbiggY2FsbGJhY2ssIGFyZ3MgKSB7XHJcblx0XHRyZXR1cm4galF1ZXJ5LmVhY2goIHRoaXMsIGNhbGxiYWNrLCBhcmdzICk7XHJcblx0fSxcclxuXHJcblx0cmVhZHk6IGZ1bmN0aW9uKCBmbiApIHtcclxuXHRcdC8vIEFkZCB0aGUgY2FsbGJhY2tcclxuXHRcdGpRdWVyeS5yZWFkeS5wcm9taXNlKCkuZG9uZSggZm4gKTtcclxuXHJcblx0XHRyZXR1cm4gdGhpcztcclxuXHR9LFxyXG5cclxuXHRlcTogZnVuY3Rpb24oIGkgKSB7XHJcblx0XHRpID0gK2k7XHJcblx0XHRyZXR1cm4gaSA9PT0gLTEgP1xyXG5cdFx0XHR0aGlzLnNsaWNlKCBpICkgOlxyXG5cdFx0XHR0aGlzLnNsaWNlKCBpLCBpICsgMSApO1xyXG5cdH0sXHJcblxyXG5cdGZpcnN0OiBmdW5jdGlvbigpIHtcclxuXHRcdHJldHVybiB0aGlzLmVxKCAwICk7XHJcblx0fSxcclxuXHJcblx0bGFzdDogZnVuY3Rpb24oKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5lcSggLTEgKTtcclxuXHR9LFxyXG5cclxuXHRzbGljZTogZnVuY3Rpb24oKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIGNvcmVfc2xpY2UuYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApLFxyXG5cdFx0XHRcInNsaWNlXCIsIGNvcmVfc2xpY2UuY2FsbChhcmd1bWVudHMpLmpvaW4oXCIsXCIpICk7XHJcblx0fSxcclxuXHJcblx0bWFwOiBmdW5jdGlvbiggY2FsbGJhY2sgKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIGpRdWVyeS5tYXAodGhpcywgZnVuY3Rpb24oIGVsZW0sIGkgKSB7XHJcblx0XHRcdHJldHVybiBjYWxsYmFjay5jYWxsKCBlbGVtLCBpLCBlbGVtICk7XHJcblx0XHR9KSk7XHJcblx0fSxcclxuXHJcblx0ZW5kOiBmdW5jdGlvbigpIHtcclxuXHRcdHJldHVybiB0aGlzLnByZXZPYmplY3QgfHwgdGhpcy5jb25zdHJ1Y3RvcihudWxsKTtcclxuXHR9LFxyXG5cclxuXHQvLyBGb3IgaW50ZXJuYWwgdXNlIG9ubHkuXHJcblx0Ly8gQmVoYXZlcyBsaWtlIGFuIEFycmF5J3MgbWV0aG9kLCBub3QgbGlrZSBhIGpRdWVyeSBtZXRob2QuXHJcblx0cHVzaDogY29yZV9wdXNoLFxyXG5cdHNvcnQ6IFtdLnNvcnQsXHJcblx0c3BsaWNlOiBbXS5zcGxpY2VcclxufTtcclxuXHJcbi8vIEdpdmUgdGhlIGluaXQgZnVuY3Rpb24gdGhlIGpRdWVyeSBwcm90b3R5cGUgZm9yIGxhdGVyIGluc3RhbnRpYXRpb25cclxualF1ZXJ5LmZuLmluaXQucHJvdG90eXBlID0galF1ZXJ5LmZuO1xyXG5cclxualF1ZXJ5LmV4dGVuZCA9IGpRdWVyeS5mbi5leHRlbmQgPSBmdW5jdGlvbigpIHtcclxuXHR2YXIgb3B0aW9ucywgbmFtZSwgc3JjLCBjb3B5LCBjb3B5SXNBcnJheSwgY2xvbmUsXHJcblx0XHR0YXJnZXQgPSBhcmd1bWVudHNbMF0gfHwge30sXHJcblx0XHRpID0gMSxcclxuXHRcdGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGgsXHJcblx0XHRkZWVwID0gZmFsc2U7XHJcblxyXG5cdC8vIEhhbmRsZSBhIGRlZXAgY29weSBzaXR1YXRpb25cclxuXHRpZiAoIHR5cGVvZiB0YXJnZXQgPT09IFwiYm9vbGVhblwiICkge1xyXG5cdFx0ZGVlcCA9IHRhcmdldDtcclxuXHRcdHRhcmdldCA9IGFyZ3VtZW50c1sxXSB8fCB7fTtcclxuXHRcdC8vIHNraXAgdGhlIGJvb2xlYW4gYW5kIHRoZSB0YXJnZXRcclxuXHRcdGkgPSAyO1xyXG5cdH1cclxuXHJcblx0Ly8gSGFuZGxlIGNhc2Ugd2hlbiB0YXJnZXQgaXMgYSBzdHJpbmcgb3Igc29tZXRoaW5nIChwb3NzaWJsZSBpbiBkZWVwIGNvcHkpXHJcblx0aWYgKCB0eXBlb2YgdGFyZ2V0ICE9PSBcIm9iamVjdFwiICYmICFqUXVlcnkuaXNGdW5jdGlvbih0YXJnZXQpICkge1xyXG5cdFx0dGFyZ2V0ID0ge307XHJcblx0fVxyXG5cclxuXHQvLyBleHRlbmQgalF1ZXJ5IGl0c2VsZiBpZiBvbmx5IG9uZSBhcmd1bWVudCBpcyBwYXNzZWRcclxuXHRpZiAoIGxlbmd0aCA9PT0gaSApIHtcclxuXHRcdHRhcmdldCA9IHRoaXM7XHJcblx0XHQtLWk7XHJcblx0fVxyXG5cclxuXHRmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHtcclxuXHRcdC8vIE9ubHkgZGVhbCB3aXRoIG5vbi1udWxsL3VuZGVmaW5lZCB2YWx1ZXNcclxuXHRcdGlmICggKG9wdGlvbnMgPSBhcmd1bWVudHNbIGkgXSkgIT0gbnVsbCApIHtcclxuXHRcdFx0Ly8gRXh0ZW5kIHRoZSBiYXNlIG9iamVjdFxyXG5cdFx0XHRmb3IgKCBuYW1lIGluIG9wdGlvbnMgKSB7XHJcblx0XHRcdFx0c3JjID0gdGFyZ2V0WyBuYW1lIF07XHJcblx0XHRcdFx0Y29weSA9IG9wdGlvbnNbIG5hbWUgXTtcclxuXHJcblx0XHRcdFx0Ly8gUHJldmVudCBuZXZlci1lbmRpbmcgbG9vcFxyXG5cdFx0XHRcdGlmICggdGFyZ2V0ID09PSBjb3B5ICkge1xyXG5cdFx0XHRcdFx0Y29udGludWU7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHQvLyBSZWN1cnNlIGlmIHdlJ3JlIG1lcmdpbmcgcGxhaW4gb2JqZWN0cyBvciBhcnJheXNcclxuXHRcdFx0XHRpZiAoIGRlZXAgJiYgY29weSAmJiAoIGpRdWVyeS5pc1BsYWluT2JqZWN0KGNvcHkpIHx8IChjb3B5SXNBcnJheSA9IGpRdWVyeS5pc0FycmF5KGNvcHkpKSApICkge1xyXG5cdFx0XHRcdFx0aWYgKCBjb3B5SXNBcnJheSApIHtcclxuXHRcdFx0XHRcdFx0Y29weUlzQXJyYXkgPSBmYWxzZTtcclxuXHRcdFx0XHRcdFx0Y2xvbmUgPSBzcmMgJiYgalF1ZXJ5LmlzQXJyYXkoc3JjKSA/IHNyYyA6IFtdO1xyXG5cclxuXHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdGNsb25lID0gc3JjICYmIGpRdWVyeS5pc1BsYWluT2JqZWN0KHNyYykgPyBzcmMgOiB7fTtcclxuXHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHQvLyBOZXZlciBtb3ZlIG9yaWdpbmFsIG9iamVjdHMsIGNsb25lIHRoZW1cclxuXHRcdFx0XHRcdHRhcmdldFsgbmFtZSBdID0galF1ZXJ5LmV4dGVuZCggZGVlcCwgY2xvbmUsIGNvcHkgKTtcclxuXHJcblx0XHRcdFx0Ly8gRG9uJ3QgYnJpbmcgaW4gdW5kZWZpbmVkIHZhbHVlc1xyXG5cdFx0XHRcdH0gZWxzZSBpZiAoIGNvcHkgIT09IHVuZGVmaW5lZCApIHtcclxuXHRcdFx0XHRcdHRhcmdldFsgbmFtZSBdID0gY29weTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8vIFJldHVybiB0aGUgbW9kaWZpZWQgb2JqZWN0XHJcblx0cmV0dXJuIHRhcmdldDtcclxufTtcclxuXHJcbmpRdWVyeS5leHRlbmQoe1xyXG5cdG5vQ29uZmxpY3Q6IGZ1bmN0aW9uKCBkZWVwICkge1xyXG5cdFx0aWYgKCB3aW5kb3cuJCA9PT0galF1ZXJ5ICkge1xyXG5cdFx0XHR3aW5kb3cuJCA9IF8kO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICggZGVlcCAmJiB3aW5kb3cualF1ZXJ5ID09PSBqUXVlcnkgKSB7XHJcblx0XHRcdHdpbmRvdy5qUXVlcnkgPSBfalF1ZXJ5O1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiBqUXVlcnk7XHJcblx0fSxcclxuXHJcblx0Ly8gSXMgdGhlIERPTSByZWFkeSB0byBiZSB1c2VkPyBTZXQgdG8gdHJ1ZSBvbmNlIGl0IG9jY3Vycy5cclxuXHRpc1JlYWR5OiBmYWxzZSxcclxuXHJcblx0Ly8gQSBjb3VudGVyIHRvIHRyYWNrIGhvdyBtYW55IGl0ZW1zIHRvIHdhaXQgZm9yIGJlZm9yZVxyXG5cdC8vIHRoZSByZWFkeSBldmVudCBmaXJlcy4gU2VlICM2NzgxXHJcblx0cmVhZHlXYWl0OiAxLFxyXG5cclxuXHQvLyBIb2xkIChvciByZWxlYXNlKSB0aGUgcmVhZHkgZXZlbnRcclxuXHRob2xkUmVhZHk6IGZ1bmN0aW9uKCBob2xkICkge1xyXG5cdFx0aWYgKCBob2xkICkge1xyXG5cdFx0XHRqUXVlcnkucmVhZHlXYWl0Kys7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRqUXVlcnkucmVhZHkoIHRydWUgKTtcclxuXHRcdH1cclxuXHR9LFxyXG5cclxuXHQvLyBIYW5kbGUgd2hlbiB0aGUgRE9NIGlzIHJlYWR5XHJcblx0cmVhZHk6IGZ1bmN0aW9uKCB3YWl0ICkge1xyXG5cclxuXHRcdC8vIEFib3J0IGlmIHRoZXJlIGFyZSBwZW5kaW5nIGhvbGRzIG9yIHdlJ3JlIGFscmVhZHkgcmVhZHlcclxuXHRcdGlmICggd2FpdCA9PT0gdHJ1ZSA/IC0talF1ZXJ5LnJlYWR5V2FpdCA6IGpRdWVyeS5pc1JlYWR5ICkge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gTWFrZSBzdXJlIGJvZHkgZXhpc3RzLCBhdCBsZWFzdCwgaW4gY2FzZSBJRSBnZXRzIGEgbGl0dGxlIG92ZXJ6ZWFsb3VzICh0aWNrZXQgIzU0NDMpLlxyXG5cdFx0aWYgKCAhZG9jdW1lbnQuYm9keSApIHtcclxuXHRcdFx0cmV0dXJuIHNldFRpbWVvdXQoIGpRdWVyeS5yZWFkeSwgMSApO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIFJlbWVtYmVyIHRoYXQgdGhlIERPTSBpcyByZWFkeVxyXG5cdFx0alF1ZXJ5LmlzUmVhZHkgPSB0cnVlO1xyXG5cclxuXHRcdC8vIElmIGEgbm9ybWFsIERPTSBSZWFkeSBldmVudCBmaXJlZCwgZGVjcmVtZW50LCBhbmQgd2FpdCBpZiBuZWVkIGJlXHJcblx0XHRpZiAoIHdhaXQgIT09IHRydWUgJiYgLS1qUXVlcnkucmVhZHlXYWl0ID4gMCApIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIElmIHRoZXJlIGFyZSBmdW5jdGlvbnMgYm91bmQsIHRvIGV4ZWN1dGVcclxuXHRcdHJlYWR5TGlzdC5yZXNvbHZlV2l0aCggZG9jdW1lbnQsIFsgalF1ZXJ5IF0gKTtcclxuXHJcblx0XHQvLyBUcmlnZ2VyIGFueSBib3VuZCByZWFkeSBldmVudHNcclxuXHRcdGlmICggalF1ZXJ5LmZuLnRyaWdnZXIgKSB7XHJcblx0XHRcdGpRdWVyeSggZG9jdW1lbnQgKS50cmlnZ2VyKFwicmVhZHlcIikub2ZmKFwicmVhZHlcIik7XHJcblx0XHR9XHJcblx0fSxcclxuXHJcblx0Ly8gU2VlIHRlc3QvdW5pdC9jb3JlLmpzIGZvciBkZXRhaWxzIGNvbmNlcm5pbmcgaXNGdW5jdGlvbi5cclxuXHQvLyBTaW5jZSB2ZXJzaW9uIDEuMywgRE9NIG1ldGhvZHMgYW5kIGZ1bmN0aW9ucyBsaWtlIGFsZXJ0XHJcblx0Ly8gYXJlbid0IHN1cHBvcnRlZC4gVGhleSByZXR1cm4gZmFsc2Ugb24gSUUgKCMyOTY4KS5cclxuXHRpc0Z1bmN0aW9uOiBmdW5jdGlvbiggb2JqICkge1xyXG5cdFx0cmV0dXJuIGpRdWVyeS50eXBlKG9iaikgPT09IFwiZnVuY3Rpb25cIjtcclxuXHR9LFxyXG5cclxuXHRpc0FycmF5OiBBcnJheS5pc0FycmF5IHx8IGZ1bmN0aW9uKCBvYmogKSB7XHJcblx0XHRyZXR1cm4galF1ZXJ5LnR5cGUob2JqKSA9PT0gXCJhcnJheVwiO1xyXG5cdH0sXHJcblxyXG5cdGlzV2luZG93OiBmdW5jdGlvbiggb2JqICkge1xyXG5cdFx0cmV0dXJuIG9iaiAhPSBudWxsICYmIG9iaiA9PSBvYmoud2luZG93O1xyXG5cdH0sXHJcblxyXG5cdGlzTnVtZXJpYzogZnVuY3Rpb24oIG9iaiApIHtcclxuXHRcdHJldHVybiAhaXNOYU4oIHBhcnNlRmxvYXQob2JqKSApICYmIGlzRmluaXRlKCBvYmogKTtcclxuXHR9LFxyXG5cclxuXHR0eXBlOiBmdW5jdGlvbiggb2JqICkge1xyXG5cdFx0cmV0dXJuIG9iaiA9PSBudWxsID9cclxuXHRcdFx0U3RyaW5nKCBvYmogKSA6XHJcblx0XHRcdGNsYXNzMnR5cGVbIGNvcmVfdG9TdHJpbmcuY2FsbChvYmopIF0gfHwgXCJvYmplY3RcIjtcclxuXHR9LFxyXG5cclxuXHRpc1BsYWluT2JqZWN0OiBmdW5jdGlvbiggb2JqICkge1xyXG5cdFx0Ly8gTXVzdCBiZSBhbiBPYmplY3QuXHJcblx0XHQvLyBCZWNhdXNlIG9mIElFLCB3ZSBhbHNvIGhhdmUgdG8gY2hlY2sgdGhlIHByZXNlbmNlIG9mIHRoZSBjb25zdHJ1Y3RvciBwcm9wZXJ0eS5cclxuXHRcdC8vIE1ha2Ugc3VyZSB0aGF0IERPTSBub2RlcyBhbmQgd2luZG93IG9iamVjdHMgZG9uJ3QgcGFzcyB0aHJvdWdoLCBhcyB3ZWxsXHJcblx0XHRpZiAoICFvYmogfHwgalF1ZXJ5LnR5cGUob2JqKSAhPT0gXCJvYmplY3RcIiB8fCBvYmoubm9kZVR5cGUgfHwgalF1ZXJ5LmlzV2luZG93KCBvYmogKSApIHtcclxuXHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0fVxyXG5cclxuXHRcdHRyeSB7XHJcblx0XHRcdC8vIE5vdCBvd24gY29uc3RydWN0b3IgcHJvcGVydHkgbXVzdCBiZSBPYmplY3RcclxuXHRcdFx0aWYgKCBvYmouY29uc3RydWN0b3IgJiZcclxuXHRcdFx0XHQhY29yZV9oYXNPd24uY2FsbChvYmosIFwiY29uc3RydWN0b3JcIikgJiZcclxuXHRcdFx0XHQhY29yZV9oYXNPd24uY2FsbChvYmouY29uc3RydWN0b3IucHJvdG90eXBlLCBcImlzUHJvdG90eXBlT2ZcIikgKSB7XHJcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0XHR9XHJcblx0XHR9IGNhdGNoICggZSApIHtcclxuXHRcdFx0Ly8gSUU4LDkgV2lsbCB0aHJvdyBleGNlcHRpb25zIG9uIGNlcnRhaW4gaG9zdCBvYmplY3RzICM5ODk3XHJcblx0XHRcdHJldHVybiBmYWxzZTtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBPd24gcHJvcGVydGllcyBhcmUgZW51bWVyYXRlZCBmaXJzdGx5LCBzbyB0byBzcGVlZCB1cCxcclxuXHRcdC8vIGlmIGxhc3Qgb25lIGlzIG93biwgdGhlbiBhbGwgcHJvcGVydGllcyBhcmUgb3duLlxyXG5cclxuXHRcdHZhciBrZXk7XHJcblx0XHRmb3IgKCBrZXkgaW4gb2JqICkge31cclxuXHJcblx0XHRyZXR1cm4ga2V5ID09PSB1bmRlZmluZWQgfHwgY29yZV9oYXNPd24uY2FsbCggb2JqLCBrZXkgKTtcclxuXHR9LFxyXG5cclxuXHRpc0VtcHR5T2JqZWN0OiBmdW5jdGlvbiggb2JqICkge1xyXG5cdFx0dmFyIG5hbWU7XHJcblx0XHRmb3IgKCBuYW1lIGluIG9iaiApIHtcclxuXHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHRydWU7XHJcblx0fSxcclxuXHJcblx0ZXJyb3I6IGZ1bmN0aW9uKCBtc2cgKSB7XHJcblx0XHR0aHJvdyBuZXcgRXJyb3IoIG1zZyApO1xyXG5cdH0sXHJcblxyXG5cdC8vIGRhdGE6IHN0cmluZyBvZiBodG1sXHJcblx0Ly8gY29udGV4dCAob3B0aW9uYWwpOiBJZiBzcGVjaWZpZWQsIHRoZSBmcmFnbWVudCB3aWxsIGJlIGNyZWF0ZWQgaW4gdGhpcyBjb250ZXh0LCBkZWZhdWx0cyB0byBkb2N1bWVudFxyXG5cdC8vIHNjcmlwdHMgKG9wdGlvbmFsKTogSWYgdHJ1ZSwgd2lsbCBpbmNsdWRlIHNjcmlwdHMgcGFzc2VkIGluIHRoZSBodG1sIHN0cmluZ1xyXG5cdHBhcnNlSFRNTDogZnVuY3Rpb24oIGRhdGEsIGNvbnRleHQsIHNjcmlwdHMgKSB7XHJcblx0XHR2YXIgcGFyc2VkO1xyXG5cdFx0aWYgKCAhZGF0YSB8fCB0eXBlb2YgZGF0YSAhPT0gXCJzdHJpbmdcIiApIHtcclxuXHRcdFx0cmV0dXJuIG51bGw7XHJcblx0XHR9XHJcblx0XHRpZiAoIHR5cGVvZiBjb250ZXh0ID09PSBcImJvb2xlYW5cIiApIHtcclxuXHRcdFx0c2NyaXB0cyA9IGNvbnRleHQ7XHJcblx0XHRcdGNvbnRleHQgPSAwO1xyXG5cdFx0fVxyXG5cdFx0Y29udGV4dCA9IGNvbnRleHQgfHwgZG9jdW1lbnQ7XHJcblxyXG5cdFx0Ly8gU2luZ2xlIHRhZ1xyXG5cdFx0aWYgKCAocGFyc2VkID0gcnNpbmdsZVRhZy5leGVjKCBkYXRhICkpICkge1xyXG5cdFx0XHRyZXR1cm4gWyBjb250ZXh0LmNyZWF0ZUVsZW1lbnQoIHBhcnNlZFsxXSApIF07XHJcblx0XHR9XHJcblxyXG5cdFx0cGFyc2VkID0galF1ZXJ5LmJ1aWxkRnJhZ21lbnQoIFsgZGF0YSBdLCBjb250ZXh0LCBzY3JpcHRzID8gbnVsbCA6IFtdICk7XHJcblx0XHRyZXR1cm4galF1ZXJ5Lm1lcmdlKCBbXSxcclxuXHRcdFx0KHBhcnNlZC5jYWNoZWFibGUgPyBqUXVlcnkuY2xvbmUoIHBhcnNlZC5mcmFnbWVudCApIDogcGFyc2VkLmZyYWdtZW50KS5jaGlsZE5vZGVzICk7XHJcblx0fSxcclxuXHJcblx0cGFyc2VKU09OOiBmdW5jdGlvbiggZGF0YSApIHtcclxuXHRcdGlmICggIWRhdGEgfHwgdHlwZW9mIGRhdGEgIT09IFwic3RyaW5nXCIpIHtcclxuXHRcdFx0cmV0dXJuIG51bGw7XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gTWFrZSBzdXJlIGxlYWRpbmcvdHJhaWxpbmcgd2hpdGVzcGFjZSBpcyByZW1vdmVkIChJRSBjYW4ndCBoYW5kbGUgaXQpXHJcblx0XHRkYXRhID0galF1ZXJ5LnRyaW0oIGRhdGEgKTtcclxuXHJcblx0XHQvLyBBdHRlbXB0IHRvIHBhcnNlIHVzaW5nIHRoZSBuYXRpdmUgSlNPTiBwYXJzZXIgZmlyc3RcclxuXHRcdGlmICggd2luZG93LkpTT04gJiYgd2luZG93LkpTT04ucGFyc2UgKSB7XHJcblx0XHRcdHJldHVybiB3aW5kb3cuSlNPTi5wYXJzZSggZGF0YSApO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIE1ha2Ugc3VyZSB0aGUgaW5jb21pbmcgZGF0YSBpcyBhY3R1YWwgSlNPTlxyXG5cdFx0Ly8gTG9naWMgYm9ycm93ZWQgZnJvbSBodHRwOi8vanNvbi5vcmcvanNvbjIuanNcclxuXHRcdGlmICggcnZhbGlkY2hhcnMudGVzdCggZGF0YS5yZXBsYWNlKCBydmFsaWRlc2NhcGUsIFwiQFwiIClcclxuXHRcdFx0LnJlcGxhY2UoIHJ2YWxpZHRva2VucywgXCJdXCIgKVxyXG5cdFx0XHQucmVwbGFjZSggcnZhbGlkYnJhY2VzLCBcIlwiKSkgKSB7XHJcblxyXG5cdFx0XHRyZXR1cm4gKCBuZXcgRnVuY3Rpb24oIFwicmV0dXJuIFwiICsgZGF0YSApICkoKTtcclxuXHJcblx0XHR9XHJcblx0XHRqUXVlcnkuZXJyb3IoIFwiSW52YWxpZCBKU09OOiBcIiArIGRhdGEgKTtcclxuXHR9LFxyXG5cclxuXHQvLyBDcm9zcy1icm93c2VyIHhtbCBwYXJzaW5nXHJcblx0cGFyc2VYTUw6IGZ1bmN0aW9uKCBkYXRhICkge1xyXG5cdFx0dmFyIHhtbCwgdG1wO1xyXG5cdFx0aWYgKCAhZGF0YSB8fCB0eXBlb2YgZGF0YSAhPT0gXCJzdHJpbmdcIiApIHtcclxuXHRcdFx0cmV0dXJuIG51bGw7XHJcblx0XHR9XHJcblx0XHR0cnkge1xyXG5cdFx0XHRpZiAoIHdpbmRvdy5ET01QYXJzZXIgKSB7IC8vIFN0YW5kYXJkXHJcblx0XHRcdFx0dG1wID0gbmV3IERPTVBhcnNlcigpO1xyXG5cdFx0XHRcdHhtbCA9IHRtcC5wYXJzZUZyb21TdHJpbmcoIGRhdGEgLCBcInRleHQveG1sXCIgKTtcclxuXHRcdFx0fSBlbHNlIHsgLy8gSUVcclxuXHRcdFx0XHR4bWwgPSBuZXcgQWN0aXZlWE9iamVjdCggXCJNaWNyb3NvZnQuWE1MRE9NXCIgKTtcclxuXHRcdFx0XHR4bWwuYXN5bmMgPSBcImZhbHNlXCI7XHJcblx0XHRcdFx0eG1sLmxvYWRYTUwoIGRhdGEgKTtcclxuXHRcdFx0fVxyXG5cdFx0fSBjYXRjaCggZSApIHtcclxuXHRcdFx0eG1sID0gdW5kZWZpbmVkO1xyXG5cdFx0fVxyXG5cdFx0aWYgKCAheG1sIHx8ICF4bWwuZG9jdW1lbnRFbGVtZW50IHx8IHhtbC5nZXRFbGVtZW50c0J5VGFnTmFtZSggXCJwYXJzZXJlcnJvclwiICkubGVuZ3RoICkge1xyXG5cdFx0XHRqUXVlcnkuZXJyb3IoIFwiSW52YWxpZCBYTUw6IFwiICsgZGF0YSApO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHhtbDtcclxuXHR9LFxyXG5cclxuXHRub29wOiBmdW5jdGlvbigpIHt9LFxyXG5cclxuXHQvLyBFdmFsdWF0ZXMgYSBzY3JpcHQgaW4gYSBnbG9iYWwgY29udGV4dFxyXG5cdC8vIFdvcmthcm91bmRzIGJhc2VkIG9uIGZpbmRpbmdzIGJ5IEppbSBEcmlzY29sbFxyXG5cdC8vIGh0dHA6Ly93ZWJsb2dzLmphdmEubmV0L2Jsb2cvZHJpc2NvbGwvYXJjaGl2ZS8yMDA5LzA5LzA4L2V2YWwtamF2YXNjcmlwdC1nbG9iYWwtY29udGV4dFxyXG5cdGdsb2JhbEV2YWw6IGZ1bmN0aW9uKCBkYXRhICkge1xyXG5cdFx0aWYgKCBkYXRhICYmIGNvcmVfcm5vdHdoaXRlLnRlc3QoIGRhdGEgKSApIHtcclxuXHRcdFx0Ly8gV2UgdXNlIGV4ZWNTY3JpcHQgb24gSW50ZXJuZXQgRXhwbG9yZXJcclxuXHRcdFx0Ly8gV2UgdXNlIGFuIGFub255bW91cyBmdW5jdGlvbiBzbyB0aGF0IGNvbnRleHQgaXMgd2luZG93XHJcblx0XHRcdC8vIHJhdGhlciB0aGFuIGpRdWVyeSBpbiBGaXJlZm94XHJcblx0XHRcdCggd2luZG93LmV4ZWNTY3JpcHQgfHwgZnVuY3Rpb24oIGRhdGEgKSB7XHJcblx0XHRcdFx0d2luZG93WyBcImV2YWxcIiBdLmNhbGwoIHdpbmRvdywgZGF0YSApO1xyXG5cdFx0XHR9ICkoIGRhdGEgKTtcclxuXHRcdH1cclxuXHR9LFxyXG5cclxuXHQvLyBDb252ZXJ0IGRhc2hlZCB0byBjYW1lbENhc2U7IHVzZWQgYnkgdGhlIGNzcyBhbmQgZGF0YSBtb2R1bGVzXHJcblx0Ly8gTWljcm9zb2Z0IGZvcmdvdCB0byBodW1wIHRoZWlyIHZlbmRvciBwcmVmaXggKCM5NTcyKVxyXG5cdGNhbWVsQ2FzZTogZnVuY3Rpb24oIHN0cmluZyApIHtcclxuXHRcdHJldHVybiBzdHJpbmcucmVwbGFjZSggcm1zUHJlZml4LCBcIm1zLVwiICkucmVwbGFjZSggcmRhc2hBbHBoYSwgZmNhbWVsQ2FzZSApO1xyXG5cdH0sXHJcblxyXG5cdG5vZGVOYW1lOiBmdW5jdGlvbiggZWxlbSwgbmFtZSApIHtcclxuXHRcdHJldHVybiBlbGVtLm5vZGVOYW1lICYmIGVsZW0ubm9kZU5hbWUudG9VcHBlckNhc2UoKSA9PT0gbmFtZS50b1VwcGVyQ2FzZSgpO1xyXG5cdH0sXHJcblxyXG5cdC8vIGFyZ3MgaXMgZm9yIGludGVybmFsIHVzYWdlIG9ubHlcclxuXHRlYWNoOiBmdW5jdGlvbiggb2JqLCBjYWxsYmFjaywgYXJncyApIHtcclxuXHRcdHZhciBuYW1lLFxyXG5cdFx0XHRpID0gMCxcclxuXHRcdFx0bGVuZ3RoID0gb2JqLmxlbmd0aCxcclxuXHRcdFx0aXNPYmogPSBsZW5ndGggPT09IHVuZGVmaW5lZCB8fCBqUXVlcnkuaXNGdW5jdGlvbiggb2JqICk7XHJcblxyXG5cdFx0aWYgKCBhcmdzICkge1xyXG5cdFx0XHRpZiAoIGlzT2JqICkge1xyXG5cdFx0XHRcdGZvciAoIG5hbWUgaW4gb2JqICkge1xyXG5cdFx0XHRcdFx0aWYgKCBjYWxsYmFjay5hcHBseSggb2JqWyBuYW1lIF0sIGFyZ3MgKSA9PT0gZmFsc2UgKSB7XHJcblx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRmb3IgKCA7IGkgPCBsZW5ndGg7ICkge1xyXG5cdFx0XHRcdFx0aWYgKCBjYWxsYmFjay5hcHBseSggb2JqWyBpKysgXSwgYXJncyApID09PSBmYWxzZSApIHtcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblxyXG5cdFx0Ly8gQSBzcGVjaWFsLCBmYXN0LCBjYXNlIGZvciB0aGUgbW9zdCBjb21tb24gdXNlIG9mIGVhY2hcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGlmICggaXNPYmogKSB7XHJcblx0XHRcdFx0Zm9yICggbmFtZSBpbiBvYmogKSB7XHJcblx0XHRcdFx0XHRpZiAoIGNhbGxiYWNrLmNhbGwoIG9ialsgbmFtZSBdLCBuYW1lLCBvYmpbIG5hbWUgXSApID09PSBmYWxzZSApIHtcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdGZvciAoIDsgaSA8IGxlbmd0aDsgKSB7XHJcblx0XHRcdFx0XHRpZiAoIGNhbGxiYWNrLmNhbGwoIG9ialsgaSBdLCBpLCBvYmpbIGkrKyBdICkgPT09IGZhbHNlICkge1xyXG5cdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gb2JqO1xyXG5cdH0sXHJcblxyXG5cdC8vIFVzZSBuYXRpdmUgU3RyaW5nLnRyaW0gZnVuY3Rpb24gd2hlcmV2ZXIgcG9zc2libGVcclxuXHR0cmltOiBjb3JlX3RyaW0gJiYgIWNvcmVfdHJpbS5jYWxsKFwiXFx1RkVGRlxceEEwXCIpID9cclxuXHRcdGZ1bmN0aW9uKCB0ZXh0ICkge1xyXG5cdFx0XHRyZXR1cm4gdGV4dCA9PSBudWxsID9cclxuXHRcdFx0XHRcIlwiIDpcclxuXHRcdFx0XHRjb3JlX3RyaW0uY2FsbCggdGV4dCApO1xyXG5cdFx0fSA6XHJcblxyXG5cdFx0Ly8gT3RoZXJ3aXNlIHVzZSBvdXIgb3duIHRyaW1taW5nIGZ1bmN0aW9uYWxpdHlcclxuXHRcdGZ1bmN0aW9uKCB0ZXh0ICkge1xyXG5cdFx0XHRyZXR1cm4gdGV4dCA9PSBudWxsID9cclxuXHRcdFx0XHRcIlwiIDpcclxuXHRcdFx0XHR0ZXh0LnRvU3RyaW5nKCkucmVwbGFjZSggcnRyaW0sIFwiXCIgKTtcclxuXHRcdH0sXHJcblxyXG5cdC8vIHJlc3VsdHMgaXMgZm9yIGludGVybmFsIHVzYWdlIG9ubHlcclxuXHRtYWtlQXJyYXk6IGZ1bmN0aW9uKCBhcnIsIHJlc3VsdHMgKSB7XHJcblx0XHR2YXIgdHlwZSxcclxuXHRcdFx0cmV0ID0gcmVzdWx0cyB8fCBbXTtcclxuXHJcblx0XHRpZiAoIGFyciAhPSBudWxsICkge1xyXG5cdFx0XHQvLyBUaGUgd2luZG93LCBzdHJpbmdzIChhbmQgZnVuY3Rpb25zKSBhbHNvIGhhdmUgJ2xlbmd0aCdcclxuXHRcdFx0Ly8gVHdlYWtlZCBsb2dpYyBzbGlnaHRseSB0byBoYW5kbGUgQmxhY2tiZXJyeSA0LjcgUmVnRXhwIGlzc3VlcyAjNjkzMFxyXG5cdFx0XHR0eXBlID0galF1ZXJ5LnR5cGUoIGFyciApO1xyXG5cclxuXHRcdFx0aWYgKCBhcnIubGVuZ3RoID09IG51bGwgfHwgdHlwZSA9PT0gXCJzdHJpbmdcIiB8fCB0eXBlID09PSBcImZ1bmN0aW9uXCIgfHwgdHlwZSA9PT0gXCJyZWdleHBcIiB8fCBqUXVlcnkuaXNXaW5kb3coIGFyciApICkge1xyXG5cdFx0XHRcdGNvcmVfcHVzaC5jYWxsKCByZXQsIGFyciApO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdGpRdWVyeS5tZXJnZSggcmV0LCBhcnIgKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiByZXQ7XHJcblx0fSxcclxuXHJcblx0aW5BcnJheTogZnVuY3Rpb24oIGVsZW0sIGFyciwgaSApIHtcclxuXHRcdHZhciBsZW47XHJcblxyXG5cdFx0aWYgKCBhcnIgKSB7XHJcblx0XHRcdGlmICggY29yZV9pbmRleE9mICkge1xyXG5cdFx0XHRcdHJldHVybiBjb3JlX2luZGV4T2YuY2FsbCggYXJyLCBlbGVtLCBpICk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGxlbiA9IGFyci5sZW5ndGg7XHJcblx0XHRcdGkgPSBpID8gaSA8IDAgPyBNYXRoLm1heCggMCwgbGVuICsgaSApIDogaSA6IDA7XHJcblxyXG5cdFx0XHRmb3IgKCA7IGkgPCBsZW47IGkrKyApIHtcclxuXHRcdFx0XHQvLyBTa2lwIGFjY2Vzc2luZyBpbiBzcGFyc2UgYXJyYXlzXHJcblx0XHRcdFx0aWYgKCBpIGluIGFyciAmJiBhcnJbIGkgXSA9PT0gZWxlbSApIHtcclxuXHRcdFx0XHRcdHJldHVybiBpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiAtMTtcclxuXHR9LFxyXG5cclxuXHRtZXJnZTogZnVuY3Rpb24oIGZpcnN0LCBzZWNvbmQgKSB7XHJcblx0XHR2YXIgbCA9IHNlY29uZC5sZW5ndGgsXHJcblx0XHRcdGkgPSBmaXJzdC5sZW5ndGgsXHJcblx0XHRcdGogPSAwO1xyXG5cclxuXHRcdGlmICggdHlwZW9mIGwgPT09IFwibnVtYmVyXCIgKSB7XHJcblx0XHRcdGZvciAoIDsgaiA8IGw7IGorKyApIHtcclxuXHRcdFx0XHRmaXJzdFsgaSsrIF0gPSBzZWNvbmRbIGogXTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHdoaWxlICggc2Vjb25kW2pdICE9PSB1bmRlZmluZWQgKSB7XHJcblx0XHRcdFx0Zmlyc3RbIGkrKyBdID0gc2Vjb25kWyBqKysgXTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdGZpcnN0Lmxlbmd0aCA9IGk7XHJcblxyXG5cdFx0cmV0dXJuIGZpcnN0O1xyXG5cdH0sXHJcblxyXG5cdGdyZXA6IGZ1bmN0aW9uKCBlbGVtcywgY2FsbGJhY2ssIGludiApIHtcclxuXHRcdHZhciByZXRWYWwsXHJcblx0XHRcdHJldCA9IFtdLFxyXG5cdFx0XHRpID0gMCxcclxuXHRcdFx0bGVuZ3RoID0gZWxlbXMubGVuZ3RoO1xyXG5cdFx0aW52ID0gISFpbnY7XHJcblxyXG5cdFx0Ly8gR28gdGhyb3VnaCB0aGUgYXJyYXksIG9ubHkgc2F2aW5nIHRoZSBpdGVtc1xyXG5cdFx0Ly8gdGhhdCBwYXNzIHRoZSB2YWxpZGF0b3IgZnVuY3Rpb25cclxuXHRcdGZvciAoIDsgaSA8IGxlbmd0aDsgaSsrICkge1xyXG5cdFx0XHRyZXRWYWwgPSAhIWNhbGxiYWNrKCBlbGVtc1sgaSBdLCBpICk7XHJcblx0XHRcdGlmICggaW52ICE9PSByZXRWYWwgKSB7XHJcblx0XHRcdFx0cmV0LnB1c2goIGVsZW1zWyBpIF0gKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiByZXQ7XHJcblx0fSxcclxuXHJcblx0Ly8gYXJnIGlzIGZvciBpbnRlcm5hbCB1c2FnZSBvbmx5XHJcblx0bWFwOiBmdW5jdGlvbiggZWxlbXMsIGNhbGxiYWNrLCBhcmcgKSB7XHJcblx0XHR2YXIgdmFsdWUsIGtleSxcclxuXHRcdFx0cmV0ID0gW10sXHJcblx0XHRcdGkgPSAwLFxyXG5cdFx0XHRsZW5ndGggPSBlbGVtcy5sZW5ndGgsXHJcblx0XHRcdC8vIGpxdWVyeSBvYmplY3RzIGFyZSB0cmVhdGVkIGFzIGFycmF5c1xyXG5cdFx0XHRpc0FycmF5ID0gZWxlbXMgaW5zdGFuY2VvZiBqUXVlcnkgfHwgbGVuZ3RoICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIGxlbmd0aCA9PT0gXCJudW1iZXJcIiAmJiAoICggbGVuZ3RoID4gMCAmJiBlbGVtc1sgMCBdICYmIGVsZW1zWyBsZW5ndGggLTEgXSApIHx8IGxlbmd0aCA9PT0gMCB8fCBqUXVlcnkuaXNBcnJheSggZWxlbXMgKSApIDtcclxuXHJcblx0XHQvLyBHbyB0aHJvdWdoIHRoZSBhcnJheSwgdHJhbnNsYXRpbmcgZWFjaCBvZiB0aGUgaXRlbXMgdG8gdGhlaXJcclxuXHRcdGlmICggaXNBcnJheSApIHtcclxuXHRcdFx0Zm9yICggOyBpIDwgbGVuZ3RoOyBpKysgKSB7XHJcblx0XHRcdFx0dmFsdWUgPSBjYWxsYmFjayggZWxlbXNbIGkgXSwgaSwgYXJnICk7XHJcblxyXG5cdFx0XHRcdGlmICggdmFsdWUgIT0gbnVsbCApIHtcclxuXHRcdFx0XHRcdHJldFsgcmV0Lmxlbmd0aCBdID0gdmFsdWU7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblxyXG5cdFx0Ly8gR28gdGhyb3VnaCBldmVyeSBrZXkgb24gdGhlIG9iamVjdCxcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGZvciAoIGtleSBpbiBlbGVtcyApIHtcclxuXHRcdFx0XHR2YWx1ZSA9IGNhbGxiYWNrKCBlbGVtc1sga2V5IF0sIGtleSwgYXJnICk7XHJcblxyXG5cdFx0XHRcdGlmICggdmFsdWUgIT0gbnVsbCApIHtcclxuXHRcdFx0XHRcdHJldFsgcmV0Lmxlbmd0aCBdID0gdmFsdWU7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gRmxhdHRlbiBhbnkgbmVzdGVkIGFycmF5c1xyXG5cdFx0cmV0dXJuIHJldC5jb25jYXQuYXBwbHkoIFtdLCByZXQgKTtcclxuXHR9LFxyXG5cclxuXHQvLyBBIGdsb2JhbCBHVUlEIGNvdW50ZXIgZm9yIG9iamVjdHNcclxuXHRndWlkOiAxLFxyXG5cclxuXHQvLyBCaW5kIGEgZnVuY3Rpb24gdG8gYSBjb250ZXh0LCBvcHRpb25hbGx5IHBhcnRpYWxseSBhcHBseWluZyBhbnlcclxuXHQvLyBhcmd1bWVudHMuXHJcblx0cHJveHk6IGZ1bmN0aW9uKCBmbiwgY29udGV4dCApIHtcclxuXHRcdHZhciB0bXAsIGFyZ3MsIHByb3h5O1xyXG5cclxuXHRcdGlmICggdHlwZW9mIGNvbnRleHQgPT09IFwic3RyaW5nXCIgKSB7XHJcblx0XHRcdHRtcCA9IGZuWyBjb250ZXh0IF07XHJcblx0XHRcdGNvbnRleHQgPSBmbjtcclxuXHRcdFx0Zm4gPSB0bXA7XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gUXVpY2sgY2hlY2sgdG8gZGV0ZXJtaW5lIGlmIHRhcmdldCBpcyBjYWxsYWJsZSwgaW4gdGhlIHNwZWNcclxuXHRcdC8vIHRoaXMgdGhyb3dzIGEgVHlwZUVycm9yLCBidXQgd2Ugd2lsbCBqdXN0IHJldHVybiB1bmRlZmluZWQuXHJcblx0XHRpZiAoICFqUXVlcnkuaXNGdW5jdGlvbiggZm4gKSApIHtcclxuXHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBTaW11bGF0ZWQgYmluZFxyXG5cdFx0YXJncyA9IGNvcmVfc2xpY2UuY2FsbCggYXJndW1lbnRzLCAyICk7XHJcblx0XHRwcm94eSA9IGZ1bmN0aW9uKCkge1xyXG5cdFx0XHRyZXR1cm4gZm4uYXBwbHkoIGNvbnRleHQsIGFyZ3MuY29uY2F0KCBjb3JlX3NsaWNlLmNhbGwoIGFyZ3VtZW50cyApICkgKTtcclxuXHRcdH07XHJcblxyXG5cdFx0Ly8gU2V0IHRoZSBndWlkIG9mIHVuaXF1ZSBoYW5kbGVyIHRvIHRoZSBzYW1lIG9mIG9yaWdpbmFsIGhhbmRsZXIsIHNvIGl0IGNhbiBiZSByZW1vdmVkXHJcblx0XHRwcm94eS5ndWlkID0gZm4uZ3VpZCA9IGZuLmd1aWQgfHwgcHJveHkuZ3VpZCB8fCBqUXVlcnkuZ3VpZCsrO1xyXG5cclxuXHRcdHJldHVybiBwcm94eTtcclxuXHR9LFxyXG5cclxuXHQvLyBNdWx0aWZ1bmN0aW9uYWwgbWV0aG9kIHRvIGdldCBhbmQgc2V0IHZhbHVlcyBvZiBhIGNvbGxlY3Rpb25cclxuXHQvLyBUaGUgdmFsdWUvcyBjYW4gb3B0aW9uYWxseSBiZSBleGVjdXRlZCBpZiBpdCdzIGEgZnVuY3Rpb25cclxuXHRhY2Nlc3M6IGZ1bmN0aW9uKCBlbGVtcywgZm4sIGtleSwgdmFsdWUsIGNoYWluYWJsZSwgZW1wdHlHZXQsIHBhc3MgKSB7XHJcblx0XHR2YXIgZXhlYyxcclxuXHRcdFx0YnVsayA9IGtleSA9PSBudWxsLFxyXG5cdFx0XHRpID0gMCxcclxuXHRcdFx0bGVuZ3RoID0gZWxlbXMubGVuZ3RoO1xyXG5cclxuXHRcdC8vIFNldHMgbWFueSB2YWx1ZXNcclxuXHRcdGlmICgga2V5ICYmIHR5cGVvZiBrZXkgPT09IFwib2JqZWN0XCIgKSB7XHJcblx0XHRcdGZvciAoIGkgaW4ga2V5ICkge1xyXG5cdFx0XHRcdGpRdWVyeS5hY2Nlc3MoIGVsZW1zLCBmbiwgaSwga2V5W2ldLCAxLCBlbXB0eUdldCwgdmFsdWUgKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRjaGFpbmFibGUgPSAxO1xyXG5cclxuXHRcdC8vIFNldHMgb25lIHZhbHVlXHJcblx0XHR9IGVsc2UgaWYgKCB2YWx1ZSAhPT0gdW5kZWZpbmVkICkge1xyXG5cdFx0XHQvLyBPcHRpb25hbGx5LCBmdW5jdGlvbiB2YWx1ZXMgZ2V0IGV4ZWN1dGVkIGlmIGV4ZWMgaXMgdHJ1ZVxyXG5cdFx0XHRleGVjID0gcGFzcyA9PT0gdW5kZWZpbmVkICYmIGpRdWVyeS5pc0Z1bmN0aW9uKCB2YWx1ZSApO1xyXG5cclxuXHRcdFx0aWYgKCBidWxrICkge1xyXG5cdFx0XHRcdC8vIEJ1bGsgb3BlcmF0aW9ucyBvbmx5IGl0ZXJhdGUgd2hlbiBleGVjdXRpbmcgZnVuY3Rpb24gdmFsdWVzXHJcblx0XHRcdFx0aWYgKCBleGVjICkge1xyXG5cdFx0XHRcdFx0ZXhlYyA9IGZuO1xyXG5cdFx0XHRcdFx0Zm4gPSBmdW5jdGlvbiggZWxlbSwga2V5LCB2YWx1ZSApIHtcclxuXHRcdFx0XHRcdFx0cmV0dXJuIGV4ZWMuY2FsbCggalF1ZXJ5KCBlbGVtICksIHZhbHVlICk7XHJcblx0XHRcdFx0XHR9O1xyXG5cclxuXHRcdFx0XHQvLyBPdGhlcndpc2UgdGhleSBydW4gYWdhaW5zdCB0aGUgZW50aXJlIHNldFxyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRmbi5jYWxsKCBlbGVtcywgdmFsdWUgKTtcclxuXHRcdFx0XHRcdGZuID0gbnVsbDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGlmICggZm4gKSB7XHJcblx0XHRcdFx0Zm9yICg7IGkgPCBsZW5ndGg7IGkrKyApIHtcclxuXHRcdFx0XHRcdGZuKCBlbGVtc1tpXSwga2V5LCBleGVjID8gdmFsdWUuY2FsbCggZWxlbXNbaV0sIGksIGZuKCBlbGVtc1tpXSwga2V5ICkgKSA6IHZhbHVlLCBwYXNzICk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRjaGFpbmFibGUgPSAxO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiBjaGFpbmFibGUgP1xyXG5cdFx0XHRlbGVtcyA6XHJcblxyXG5cdFx0XHQvLyBHZXRzXHJcblx0XHRcdGJ1bGsgP1xyXG5cdFx0XHRcdGZuLmNhbGwoIGVsZW1zICkgOlxyXG5cdFx0XHRcdGxlbmd0aCA/IGZuKCBlbGVtc1swXSwga2V5ICkgOiBlbXB0eUdldDtcclxuXHR9LFxyXG5cclxuXHRub3c6IGZ1bmN0aW9uKCkge1xyXG5cdFx0cmV0dXJuICggbmV3IERhdGUoKSApLmdldFRpbWUoKTtcclxuXHR9XHJcbn0pO1xyXG5cclxualF1ZXJ5LnJlYWR5LnByb21pc2UgPSBmdW5jdGlvbiggb2JqICkge1xyXG5cdGlmICggIXJlYWR5TGlzdCApIHtcclxuXHJcblx0XHRyZWFkeUxpc3QgPSBqUXVlcnkuRGVmZXJyZWQoKTtcclxuXHJcblx0XHQvLyBDYXRjaCBjYXNlcyB3aGVyZSAkKGRvY3VtZW50KS5yZWFkeSgpIGlzIGNhbGxlZCBhZnRlciB0aGUgYnJvd3NlciBldmVudCBoYXMgYWxyZWFkeSBvY2N1cnJlZC5cclxuXHRcdC8vIHdlIG9uY2UgdHJpZWQgdG8gdXNlIHJlYWR5U3RhdGUgXCJpbnRlcmFjdGl2ZVwiIGhlcmUsIGJ1dCBpdCBjYXVzZWQgaXNzdWVzIGxpa2UgdGhlIG9uZVxyXG5cdFx0Ly8gZGlzY292ZXJlZCBieSBDaHJpc1MgaGVyZTogaHR0cDovL2J1Z3MuanF1ZXJ5LmNvbS90aWNrZXQvMTIyODIjY29tbWVudDoxNVxyXG5cdFx0aWYgKCBkb2N1bWVudC5yZWFkeVN0YXRlID09PSBcImNvbXBsZXRlXCIgKSB7XHJcblx0XHRcdC8vIEhhbmRsZSBpdCBhc3luY2hyb25vdXNseSB0byBhbGxvdyBzY3JpcHRzIHRoZSBvcHBvcnR1bml0eSB0byBkZWxheSByZWFkeVxyXG5cdFx0XHRzZXRUaW1lb3V0KCBqUXVlcnkucmVhZHksIDEgKTtcclxuXHJcblx0XHQvLyBTdGFuZGFyZHMtYmFzZWQgYnJvd3NlcnMgc3VwcG9ydCBET01Db250ZW50TG9hZGVkXHJcblx0XHR9IGVsc2UgaWYgKCBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyICkge1xyXG5cdFx0XHQvLyBVc2UgdGhlIGhhbmR5IGV2ZW50IGNhbGxiYWNrXHJcblx0XHRcdGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIFwiRE9NQ29udGVudExvYWRlZFwiLCBET01Db250ZW50TG9hZGVkLCBmYWxzZSApO1xyXG5cclxuXHRcdFx0Ly8gQSBmYWxsYmFjayB0byB3aW5kb3cub25sb2FkLCB0aGF0IHdpbGwgYWx3YXlzIHdvcmtcclxuXHRcdFx0d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIFwibG9hZFwiLCBqUXVlcnkucmVhZHksIGZhbHNlICk7XHJcblxyXG5cdFx0Ly8gSWYgSUUgZXZlbnQgbW9kZWwgaXMgdXNlZFxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0Ly8gRW5zdXJlIGZpcmluZyBiZWZvcmUgb25sb2FkLCBtYXliZSBsYXRlIGJ1dCBzYWZlIGFsc28gZm9yIGlmcmFtZXNcclxuXHRcdFx0ZG9jdW1lbnQuYXR0YWNoRXZlbnQoIFwib25yZWFkeXN0YXRlY2hhbmdlXCIsIERPTUNvbnRlbnRMb2FkZWQgKTtcclxuXHJcblx0XHRcdC8vIEEgZmFsbGJhY2sgdG8gd2luZG93Lm9ubG9hZCwgdGhhdCB3aWxsIGFsd2F5cyB3b3JrXHJcblx0XHRcdHdpbmRvdy5hdHRhY2hFdmVudCggXCJvbmxvYWRcIiwgalF1ZXJ5LnJlYWR5ICk7XHJcblxyXG5cdFx0XHQvLyBJZiBJRSBhbmQgbm90IGEgZnJhbWVcclxuXHRcdFx0Ly8gY29udGludWFsbHkgY2hlY2sgdG8gc2VlIGlmIHRoZSBkb2N1bWVudCBpcyByZWFkeVxyXG5cdFx0XHR2YXIgdG9wID0gZmFsc2U7XHJcblxyXG5cdFx0XHR0cnkge1xyXG5cdFx0XHRcdHRvcCA9IHdpbmRvdy5mcmFtZUVsZW1lbnQgPT0gbnVsbCAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XHJcblx0XHRcdH0gY2F0Y2goZSkge31cclxuXHJcblx0XHRcdGlmICggdG9wICYmIHRvcC5kb1Njcm9sbCApIHtcclxuXHRcdFx0XHQoZnVuY3Rpb24gZG9TY3JvbGxDaGVjaygpIHtcclxuXHRcdFx0XHRcdGlmICggIWpRdWVyeS5pc1JlYWR5ICkge1xyXG5cclxuXHRcdFx0XHRcdFx0dHJ5IHtcclxuXHRcdFx0XHRcdFx0XHQvLyBVc2UgdGhlIHRyaWNrIGJ5IERpZWdvIFBlcmluaVxyXG5cdFx0XHRcdFx0XHRcdC8vIGh0dHA6Ly9qYXZhc2NyaXB0Lm53Ym94LmNvbS9JRUNvbnRlbnRMb2FkZWQvXHJcblx0XHRcdFx0XHRcdFx0dG9wLmRvU2Nyb2xsKFwibGVmdFwiKTtcclxuXHRcdFx0XHRcdFx0fSBjYXRjaChlKSB7XHJcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHNldFRpbWVvdXQoIGRvU2Nyb2xsQ2hlY2ssIDUwICk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRcdC8vIGFuZCBleGVjdXRlIGFueSB3YWl0aW5nIGZ1bmN0aW9uc1xyXG5cdFx0XHRcdFx0XHRqUXVlcnkucmVhZHkoKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KSgpO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cdHJldHVybiByZWFkeUxpc3QucHJvbWlzZSggb2JqICk7XHJcbn07XHJcblxyXG4vLyBQb3B1bGF0ZSB0aGUgY2xhc3MydHlwZSBtYXBcclxualF1ZXJ5LmVhY2goXCJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rpb24gQXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0XCIuc3BsaXQoXCIgXCIpLCBmdW5jdGlvbihpLCBuYW1lKSB7XHJcblx0Y2xhc3MydHlwZVsgXCJbb2JqZWN0IFwiICsgbmFtZSArIFwiXVwiIF0gPSBuYW1lLnRvTG93ZXJDYXNlKCk7XHJcbn0pO1xyXG5cclxuLy8gQWxsIGpRdWVyeSBvYmplY3RzIHNob3VsZCBwb2ludCBiYWNrIHRvIHRoZXNlXHJcbnJvb3RqUXVlcnkgPSBqUXVlcnkoZG9jdW1lbnQpO1xyXG4vLyBTdHJpbmcgdG8gT2JqZWN0IG9wdGlvbnMgZm9ybWF0IGNhY2hlXHJcbnZhciBvcHRpb25zQ2FjaGUgPSB7fTtcclxuXHJcbi8vIENvbnZlcnQgU3RyaW5nLWZvcm1hdHRlZCBvcHRpb25zIGludG8gT2JqZWN0LWZvcm1hdHRlZCBvbmVzIGFuZCBzdG9yZSBpbiBjYWNoZVxyXG5mdW5jdGlvbiBjcmVhdGVPcHRpb25zKCBvcHRpb25zICkge1xyXG5cdHZhciBvYmplY3QgPSBvcHRpb25zQ2FjaGVbIG9wdGlvbnMgXSA9IHt9O1xyXG5cdGpRdWVyeS5lYWNoKCBvcHRpb25zLnNwbGl0KCBjb3JlX3JzcGFjZSApLCBmdW5jdGlvbiggXywgZmxhZyApIHtcclxuXHRcdG9iamVjdFsgZmxhZyBdID0gdHJ1ZTtcclxuXHR9KTtcclxuXHRyZXR1cm4gb2JqZWN0O1xyXG59XHJcblxyXG4vKlxyXG4gKiBDcmVhdGUgYSBjYWxsYmFjayBsaXN0IHVzaW5nIHRoZSBmb2xsb3dpbmcgcGFyYW1ldGVyczpcclxuICpcclxuICpcdG9wdGlvbnM6IGFuIG9wdGlvbmFsIGxpc3Qgb2Ygc3BhY2Utc2VwYXJhdGVkIG9wdGlvbnMgdGhhdCB3aWxsIGNoYW5nZSBob3dcclxuICpcdFx0XHR0aGUgY2FsbGJhY2sgbGlzdCBiZWhhdmVzIG9yIGEgbW9yZSB0cmFkaXRpb25hbCBvcHRpb24gb2JqZWN0XHJcbiAqXHJcbiAqIEJ5IGRlZmF1bHQgYSBjYWxsYmFjayBsaXN0IHdpbGwgYWN0IGxpa2UgYW4gZXZlbnQgY2FsbGJhY2sgbGlzdCBhbmQgY2FuIGJlXHJcbiAqIFwiZmlyZWRcIiBtdWx0aXBsZSB0aW1lcy5cclxuICpcclxuICogUG9zc2libGUgb3B0aW9uczpcclxuICpcclxuICpcdG9uY2U6XHRcdFx0d2lsbCBlbnN1cmUgdGhlIGNhbGxiYWNrIGxpc3QgY2FuIG9ubHkgYmUgZmlyZWQgb25jZSAobGlrZSBhIERlZmVycmVkKVxyXG4gKlxyXG4gKlx0bWVtb3J5Olx0XHRcdHdpbGwga2VlcCB0cmFjayBvZiBwcmV2aW91cyB2YWx1ZXMgYW5kIHdpbGwgY2FsbCBhbnkgY2FsbGJhY2sgYWRkZWRcclxuICpcdFx0XHRcdFx0YWZ0ZXIgdGhlIGxpc3QgaGFzIGJlZW4gZmlyZWQgcmlnaHQgYXdheSB3aXRoIHRoZSBsYXRlc3QgXCJtZW1vcml6ZWRcIlxyXG4gKlx0XHRcdFx0XHR2YWx1ZXMgKGxpa2UgYSBEZWZlcnJlZClcclxuICpcclxuICpcdHVuaXF1ZTpcdFx0XHR3aWxsIGVuc3VyZSBhIGNhbGxiYWNrIGNhbiBvbmx5IGJlIGFkZGVkIG9uY2UgKG5vIGR1cGxpY2F0ZSBpbiB0aGUgbGlzdClcclxuICpcclxuICpcdHN0b3BPbkZhbHNlOlx0aW50ZXJydXB0IGNhbGxpbmdzIHdoZW4gYSBjYWxsYmFjayByZXR1cm5zIGZhbHNlXHJcbiAqXHJcbiAqL1xyXG5qUXVlcnkuQ2FsbGJhY2tzID0gZnVuY3Rpb24oIG9wdGlvbnMgKSB7XHJcblxyXG5cdC8vIENvbnZlcnQgb3B0aW9ucyBmcm9tIFN0cmluZy1mb3JtYXR0ZWQgdG8gT2JqZWN0LWZvcm1hdHRlZCBpZiBuZWVkZWRcclxuXHQvLyAod2UgY2hlY2sgaW4gY2FjaGUgZmlyc3QpXHJcblx0b3B0aW9ucyA9IHR5cGVvZiBvcHRpb25zID09PSBcInN0cmluZ1wiID9cclxuXHRcdCggb3B0aW9uc0NhY2hlWyBvcHRpb25zIF0gfHwgY3JlYXRlT3B0aW9ucyggb3B0aW9ucyApICkgOlxyXG5cdFx0alF1ZXJ5LmV4dGVuZCgge30sIG9wdGlvbnMgKTtcclxuXHJcblx0dmFyIC8vIExhc3QgZmlyZSB2YWx1ZSAoZm9yIG5vbi1mb3JnZXR0YWJsZSBsaXN0cylcclxuXHRcdG1lbW9yeSxcclxuXHRcdC8vIEZsYWcgdG8ga25vdyBpZiBsaXN0IHdhcyBhbHJlYWR5IGZpcmVkXHJcblx0XHRmaXJlZCxcclxuXHRcdC8vIEZsYWcgdG8ga25vdyBpZiBsaXN0IGlzIGN1cnJlbnRseSBmaXJpbmdcclxuXHRcdGZpcmluZyxcclxuXHRcdC8vIEZpcnN0IGNhbGxiYWNrIHRvIGZpcmUgKHVzZWQgaW50ZXJuYWxseSBieSBhZGQgYW5kIGZpcmVXaXRoKVxyXG5cdFx0ZmlyaW5nU3RhcnQsXHJcblx0XHQvLyBFbmQgb2YgdGhlIGxvb3Agd2hlbiBmaXJpbmdcclxuXHRcdGZpcmluZ0xlbmd0aCxcclxuXHRcdC8vIEluZGV4IG9mIGN1cnJlbnRseSBmaXJpbmcgY2FsbGJhY2sgKG1vZGlmaWVkIGJ5IHJlbW92ZSBpZiBuZWVkZWQpXHJcblx0XHRmaXJpbmdJbmRleCxcclxuXHRcdC8vIEFjdHVhbCBjYWxsYmFjayBsaXN0XHJcblx0XHRsaXN0ID0gW10sXHJcblx0XHQvLyBTdGFjayBvZiBmaXJlIGNhbGxzIGZvciByZXBlYXRhYmxlIGxpc3RzXHJcblx0XHRzdGFjayA9ICFvcHRpb25zLm9uY2UgJiYgW10sXHJcblx0XHQvLyBGaXJlIGNhbGxiYWNrc1xyXG5cdFx0ZmlyZSA9IGZ1bmN0aW9uKCBkYXRhICkge1xyXG5cdFx0XHRtZW1vcnkgPSBvcHRpb25zLm1lbW9yeSAmJiBkYXRhO1xyXG5cdFx0XHRmaXJlZCA9IHRydWU7XHJcblx0XHRcdGZpcmluZ0luZGV4ID0gZmlyaW5nU3RhcnQgfHwgMDtcclxuXHRcdFx0ZmlyaW5nU3RhcnQgPSAwO1xyXG5cdFx0XHRmaXJpbmdMZW5ndGggPSBsaXN0Lmxlbmd0aDtcclxuXHRcdFx0ZmlyaW5nID0gdHJ1ZTtcclxuXHRcdFx0Zm9yICggOyBsaXN0ICYmIGZpcmluZ0luZGV4IDwgZmlyaW5nTGVuZ3RoOyBmaXJpbmdJbmRleCsrICkge1xyXG5cdFx0XHRcdGlmICggbGlzdFsgZmlyaW5nSW5kZXggXS5hcHBseSggZGF0YVsgMCBdLCBkYXRhWyAxIF0gKSA9PT0gZmFsc2UgJiYgb3B0aW9ucy5zdG9wT25GYWxzZSApIHtcclxuXHRcdFx0XHRcdG1lbW9yeSA9IGZhbHNlOyAvLyBUbyBwcmV2ZW50IGZ1cnRoZXIgY2FsbHMgdXNpbmcgYWRkXHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdFx0ZmlyaW5nID0gZmFsc2U7XHJcblx0XHRcdGlmICggbGlzdCApIHtcclxuXHRcdFx0XHRpZiAoIHN0YWNrICkge1xyXG5cdFx0XHRcdFx0aWYgKCBzdGFjay5sZW5ndGggKSB7XHJcblx0XHRcdFx0XHRcdGZpcmUoIHN0YWNrLnNoaWZ0KCkgKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9IGVsc2UgaWYgKCBtZW1vcnkgKSB7XHJcblx0XHRcdFx0XHRsaXN0ID0gW107XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdHNlbGYuZGlzYWJsZSgpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fSxcclxuXHRcdC8vIEFjdHVhbCBDYWxsYmFja3Mgb2JqZWN0XHJcblx0XHRzZWxmID0ge1xyXG5cdFx0XHQvLyBBZGQgYSBjYWxsYmFjayBvciBhIGNvbGxlY3Rpb24gb2YgY2FsbGJhY2tzIHRvIHRoZSBsaXN0XHJcblx0XHRcdGFkZDogZnVuY3Rpb24oKSB7XHJcblx0XHRcdFx0aWYgKCBsaXN0ICkge1xyXG5cdFx0XHRcdFx0Ly8gRmlyc3QsIHdlIHNhdmUgdGhlIGN1cnJlbnQgbGVuZ3RoXHJcblx0XHRcdFx0XHR2YXIgc3RhcnQgPSBsaXN0Lmxlbmd0aDtcclxuXHRcdFx0XHRcdChmdW5jdGlvbiBhZGQoIGFyZ3MgKSB7XHJcblx0XHRcdFx0XHRcdGpRdWVyeS5lYWNoKCBhcmdzLCBmdW5jdGlvbiggXywgYXJnICkge1xyXG5cdFx0XHRcdFx0XHRcdHZhciB0eXBlID0galF1ZXJ5LnR5cGUoIGFyZyApO1xyXG5cdFx0XHRcdFx0XHRcdGlmICggdHlwZSA9PT0gXCJmdW5jdGlvblwiICYmICggIW9wdGlvbnMudW5pcXVlIHx8ICFzZWxmLmhhcyggYXJnICkgKSApIHtcclxuXHRcdFx0XHRcdFx0XHRcdGxpc3QucHVzaCggYXJnICk7XHJcblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmICggYXJnICYmIGFyZy5sZW5ndGggJiYgdHlwZSAhPT0gXCJzdHJpbmdcIiApIHtcclxuXHRcdFx0XHRcdFx0XHRcdC8vIEluc3BlY3QgcmVjdXJzaXZlbHlcclxuXHRcdFx0XHRcdFx0XHRcdGFkZCggYXJnICk7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdH0pKCBhcmd1bWVudHMgKTtcclxuXHRcdFx0XHRcdC8vIERvIHdlIG5lZWQgdG8gYWRkIHRoZSBjYWxsYmFja3MgdG8gdGhlXHJcblx0XHRcdFx0XHQvLyBjdXJyZW50IGZpcmluZyBiYXRjaD9cclxuXHRcdFx0XHRcdGlmICggZmlyaW5nICkge1xyXG5cdFx0XHRcdFx0XHRmaXJpbmdMZW5ndGggPSBsaXN0Lmxlbmd0aDtcclxuXHRcdFx0XHRcdC8vIFdpdGggbWVtb3J5LCBpZiB3ZSdyZSBub3QgZmlyaW5nIHRoZW5cclxuXHRcdFx0XHRcdC8vIHdlIHNob3VsZCBjYWxsIHJpZ2h0IGF3YXlcclxuXHRcdFx0XHRcdH0gZWxzZSBpZiAoIG1lbW9yeSApIHtcclxuXHRcdFx0XHRcdFx0ZmlyaW5nU3RhcnQgPSBzdGFydDtcclxuXHRcdFx0XHRcdFx0ZmlyZSggbWVtb3J5ICk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHJldHVybiB0aGlzO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHQvLyBSZW1vdmUgYSBjYWxsYmFjayBmcm9tIHRoZSBsaXN0XHJcblx0XHRcdHJlbW92ZTogZnVuY3Rpb24oKSB7XHJcblx0XHRcdFx0aWYgKCBsaXN0ICkge1xyXG5cdFx0XHRcdFx0alF1ZXJ5LmVhY2goIGFyZ3VtZW50cywgZnVuY3Rpb24oIF8sIGFyZyApIHtcclxuXHRcdFx0XHRcdFx0dmFyIGluZGV4O1xyXG5cdFx0XHRcdFx0XHR3aGlsZSggKCBpbmRleCA9IGpRdWVyeS5pbkFycmF5KCBhcmcsIGxpc3QsIGluZGV4ICkgKSA+IC0xICkge1xyXG5cdFx0XHRcdFx0XHRcdGxpc3Quc3BsaWNlKCBpbmRleCwgMSApO1xyXG5cdFx0XHRcdFx0XHRcdC8vIEhhbmRsZSBmaXJpbmcgaW5kZXhlc1xyXG5cdFx0XHRcdFx0XHRcdGlmICggZmlyaW5nICkge1xyXG5cdFx0XHRcdFx0XHRcdFx0aWYgKCBpbmRleCA8PSBmaXJpbmdMZW5ndGggKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGZpcmluZ0xlbmd0aC0tO1xyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0aWYgKCBpbmRleCA8PSBmaXJpbmdJbmRleCApIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0ZmlyaW5nSW5kZXgtLTtcclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRyZXR1cm4gdGhpcztcclxuXHRcdFx0fSxcclxuXHRcdFx0Ly8gQ29udHJvbCBpZiBhIGdpdmVuIGNhbGxiYWNrIGlzIGluIHRoZSBsaXN0XHJcblx0XHRcdGhhczogZnVuY3Rpb24oIGZuICkge1xyXG5cdFx0XHRcdHJldHVybiBqUXVlcnkuaW5BcnJheSggZm4sIGxpc3QgKSA+IC0xO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHQvLyBSZW1vdmUgYWxsIGNhbGxiYWNrcyBmcm9tIHRoZSBsaXN0XHJcblx0XHRcdGVtcHR5OiBmdW5jdGlvbigpIHtcclxuXHRcdFx0XHRsaXN0ID0gW107XHJcblx0XHRcdFx0cmV0dXJuIHRoaXM7XHJcblx0XHRcdH0sXHJcblx0XHRcdC8vIEhhdmUgdGhlIGxpc3QgZG8gbm90aGluZyBhbnltb3JlXHJcblx0XHRcdGRpc2FibGU6IGZ1bmN0aW9uKCkge1xyXG5cdFx0XHRcdGxpc3QgPSBzdGFjayA9IG1lbW9yeSA9IHVuZGVmaW5lZDtcclxuXHRcdFx0XHRyZXR1cm4gdGhpcztcclxuXHRcdFx0fSxcclxuXHRcdFx0Ly8gSXMgaXQgZGlzYWJsZWQ/XHJcblx0XHRcdGRpc2FibGVkOiBmdW5jdGlvbigpIHtcclxuXHRcdFx0XHRyZXR1cm4gIWxpc3Q7XHJcblx0XHRcdH0sXHJcblx0XHRcdC8vIExvY2sgdGhlIGxpc3QgaW4gaXRzIGN1cnJlbnQgc3RhdGVcclxuXHRcdFx0bG9jazogZnVuY3Rpb24oKSB7XHJcblx0XHRcdFx0c3RhY2sgPSB1bmRlZmluZWQ7XHJcblx0XHRcdFx0aWYgKCAhbWVtb3J5ICkge1xyXG5cdFx0XHRcdFx0c2VsZi5kaXNhYmxlKCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHJldHVybiB0aGlzO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHQvLyBJcyBpdCBsb2NrZWQ/XHJcblx0XHRcdGxvY2tlZDogZnVuY3Rpb24oKSB7XHJcblx0XHRcdFx0cmV0dXJuICFzdGFjaztcclxuXHRcdFx0fSxcclxuXHRcdFx0Ly8gQ2FsbCBhbGwgY2FsbGJhY2tzIHdpdGggdGhlIGdpdmVuIGNvbnRleHQgYW5kIGFyZ3VtZW50c1xyXG5cdFx0XHRmaXJlV2l0aDogZnVuY3Rpb24oIGNvbnRleHQsIGFyZ3MgKSB7XHJcblx0XHRcdFx0YXJncyA9IGFyZ3MgfHwgW107XHJcblx0XHRcdFx0YXJncyA9IFsgY29udGV4dCwgYXJncy5zbGljZSA/IGFyZ3Muc2xpY2UoKSA6IGFyZ3MgXTtcclxuXHRcdFx0XHRpZiAoIGxpc3QgJiYgKCAhZmlyZWQgfHwgc3RhY2sgKSApIHtcclxuXHRcdFx0XHRcdGlmICggZmlyaW5nICkge1xyXG5cdFx0XHRcdFx0XHRzdGFjay5wdXNoKCBhcmdzICk7XHJcblx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRmaXJlKCBhcmdzICk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHJldHVybiB0aGlzO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHQvLyBDYWxsIGFsbCB0aGUgY2FsbGJhY2tzIHdpdGggdGhlIGdpdmVuIGFyZ3VtZW50c1xyXG5cdFx0XHRmaXJlOiBmdW5jdGlvbigpIHtcclxuXHRcdFx0XHRzZWxmLmZpcmVXaXRoKCB0aGlzLCBhcmd1bWVudHMgKTtcclxuXHRcdFx0XHRyZXR1cm4gdGhpcztcclxuXHRcdFx0fSxcclxuXHRcdFx0Ly8gVG8ga25vdyBpZiB0aGUgY2FsbGJhY2tzIGhhdmUgYWxyZWFkeSBiZWVuIGNhbGxlZCBhdCBsZWFzdCBvbmNlXHJcblx0XHRcdGZpcmVkOiBmdW5jdGlvbigpIHtcclxuXHRcdFx0XHRyZXR1cm4gISFmaXJlZDtcclxuXHRcdFx0fVxyXG5cdFx0fTtcclxuXHJcblx0cmV0dXJuIHNlbGY7XHJcbn07XHJcbmpRdWVyeS5leHRlbmQoe1xyXG5cclxuXHREZWZlcnJlZDogZnVuY3Rpb24oIGZ1bmMgKSB7XHJcblx0XHR2YXIgdHVwbGVzID0gW1xyXG5cdFx0XHRcdC8vIGFjdGlvbiwgYWRkIGxpc3RlbmVyLCBsaXN0ZW5lciBsaXN0LCBmaW5hbCBzdGF0ZVxyXG5cdFx0XHRcdFsgXCJyZXNvbHZlXCIsIFwiZG9uZVwiLCBqUXVlcnkuQ2FsbGJhY2tzKFwib25jZSBtZW1vcnlcIiksIFwicmVzb2x2ZWRcIiBdLFxyXG5cdFx0XHRcdFsgXCJyZWplY3RcIiwgXCJmYWlsXCIsIGpRdWVyeS5DYWxsYmFja3MoXCJvbmNlIG1lbW9yeVwiKSwgXCJyZWplY3RlZFwiIF0sXHJcblx0XHRcdFx0WyBcIm5vdGlmeVwiLCBcInByb2dyZXNzXCIsIGpRdWVyeS5DYWxsYmFja3MoXCJtZW1vcnlcIikgXVxyXG5cdFx0XHRdLFxyXG5cdFx0XHRzdGF0ZSA9IFwicGVuZGluZ1wiLFxyXG5cdFx0XHRwcm9taXNlID0ge1xyXG5cdFx0XHRcdHN0YXRlOiBmdW5jdGlvbigpIHtcclxuXHRcdFx0XHRcdHJldHVybiBzdGF0ZTtcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdGFsd2F5czogZnVuY3Rpb24oKSB7XHJcblx0XHRcdFx0XHRkZWZlcnJlZC5kb25lKCBhcmd1bWVudHMgKS5mYWlsKCBhcmd1bWVudHMgKTtcclxuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0dGhlbjogZnVuY3Rpb24oIC8qIGZuRG9uZSwgZm5GYWlsLCBmblByb2dyZXNzICovICkge1xyXG5cdFx0XHRcdFx0dmFyIGZucyA9IGFyZ3VtZW50cztcclxuXHRcdFx0XHRcdHJldHVybiBqUXVlcnkuRGVmZXJyZWQoZnVuY3Rpb24oIG5ld0RlZmVyICkge1xyXG5cdFx0XHRcdFx0XHRqUXVlcnkuZWFjaCggdHVwbGVzLCBmdW5jdGlvbiggaSwgdHVwbGUgKSB7XHJcblx0XHRcdFx0XHRcdFx0dmFyIGFjdGlvbiA9IHR1cGxlWyAwIF0sXHJcblx0XHRcdFx0XHRcdFx0XHRmbiA9IGZuc1sgaSBdO1xyXG5cdFx0XHRcdFx0XHRcdC8vIGRlZmVycmVkWyBkb25lIHwgZmFpbCB8IHByb2dyZXNzIF0gZm9yIGZvcndhcmRpbmcgYWN0aW9ucyB0byBuZXdEZWZlclxyXG5cdFx0XHRcdFx0XHRcdGRlZmVycmVkWyB0dXBsZVsxXSBdKCBqUXVlcnkuaXNGdW5jdGlvbiggZm4gKSA/XHJcblx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbigpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIHJldHVybmVkID0gZm4uYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoIHJldHVybmVkICYmIGpRdWVyeS5pc0Z1bmN0aW9uKCByZXR1cm5lZC5wcm9taXNlICkgKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuZWQucHJvbWlzZSgpXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuZG9uZSggbmV3RGVmZXIucmVzb2x2ZSApXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuZmFpbCggbmV3RGVmZXIucmVqZWN0IClcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5wcm9ncmVzcyggbmV3RGVmZXIubm90aWZ5ICk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0bmV3RGVmZXJbIGFjdGlvbiArIFwiV2l0aFwiIF0oIHRoaXMgPT09IGRlZmVycmVkID8gbmV3RGVmZXIgOiB0aGlzLCBbIHJldHVybmVkIF0gKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0fSA6XHJcblx0XHRcdFx0XHRcdFx0XHRuZXdEZWZlclsgYWN0aW9uIF1cclxuXHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0Zm5zID0gbnVsbDtcclxuXHRcdFx0XHRcdH0pLnByb21pc2UoKTtcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdC8vIEdldCBhIHByb21pc2UgZm9yIHRoaXMgZGVmZXJyZWRcclxuXHRcdFx0XHQvLyBJZiBvYmogaXMgcHJvdmlkZWQsIHRoZSBwcm9taXNlIGFzcGVjdCBpcyBhZGRlZCB0byB0aGUgb2JqZWN0XHJcblx0XHRcdFx0cHJvbWlzZTogZnVuY3Rpb24oIG9iaiApIHtcclxuXHRcdFx0XHRcdHJldHVybiB0eXBlb2Ygb2JqID09PSBcIm9iamVjdFwiID8galF1ZXJ5LmV4dGVuZCggb2JqLCBwcm9taXNlICkgOiBwcm9taXNlO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0ZGVmZXJyZWQgPSB7fTtcclxuXHJcblx0XHQvLyBLZWVwIHBpcGUgZm9yIGJhY2stY29tcGF0XHJcblx0XHRwcm9taXNlLnBpcGUgPSBwcm9taXNlLnRoZW47XHJcblxyXG5cdFx0Ly8gQWRkIGxpc3Qtc3BlY2lmaWMgbWV0aG9kc1xyXG5cdFx0alF1ZXJ5LmVhY2goIHR1cGxlcywgZnVuY3Rpb24oIGksIHR1cGxlICkge1xyXG5cdFx0XHR2YXIgbGlzdCA9IHR1cGxlWyAyIF0sXHJcblx0XHRcdFx0c3RhdGVTdHJpbmcgPSB0dXBsZVsgMyBdO1xyXG5cclxuXHRcdFx0Ly8gcHJvbWlzZVsgZG9uZSB8IGZhaWwgfCBwcm9ncmVzcyBdID0gbGlzdC5hZGRcclxuXHRcdFx0cHJvbWlzZVsgdHVwbGVbMV0gXSA9IGxpc3QuYWRkO1xyXG5cclxuXHRcdFx0Ly8gSGFuZGxlIHN0YXRlXHJcblx0XHRcdGlmICggc3RhdGVTdHJpbmcgKSB7XHJcblx0XHRcdFx0bGlzdC5hZGQoZnVuY3Rpb24oKSB7XHJcblx0XHRcdFx0XHQvLyBzdGF0ZSA9IFsgcmVzb2x2ZWQgfCByZWplY3RlZCBdXHJcblx0XHRcdFx0XHRzdGF0ZSA9IHN0YXRlU3RyaW5nO1xyXG5cclxuXHRcdFx0XHQvLyBbIHJlamVjdF9saXN0IHwgcmVzb2x2ZV9saXN0IF0uZGlzYWJsZTsgcHJvZ3Jlc3NfbGlzdC5sb2NrXHJcblx0XHRcdFx0fSwgdHVwbGVzWyBpIF4gMSBdWyAyIF0uZGlzYWJsZSwgdHVwbGVzWyAyIF1bIDIgXS5sb2NrICk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8vIGRlZmVycmVkWyByZXNvbHZlIHwgcmVqZWN0IHwgbm90aWZ5IF0gPSBsaXN0LmZpcmVcclxuXHRcdFx0ZGVmZXJyZWRbIHR1cGxlWzBdIF0gPSBsaXN0LmZpcmU7XHJcblx0XHRcdGRlZmVycmVkWyB0dXBsZVswXSArIFwiV2l0aFwiIF0gPSBsaXN0LmZpcmVXaXRoO1xyXG5cdFx0fSk7XHJcblxyXG5cdFx0Ly8gTWFrZSB0aGUgZGVmZXJyZWQgYSBwcm9taXNlXHJcblx0XHRwcm9taXNlLnByb21pc2UoIGRlZmVycmVkICk7XHJcblxyXG5cdFx0Ly8gQ2FsbCBnaXZlbiBmdW5jIGlmIGFueVxyXG5cdFx0aWYgKCBmdW5jICkge1xyXG5cdFx0XHRmdW5jLmNhbGwoIGRlZmVycmVkLCBkZWZlcnJlZCApO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIEFsbCBkb25lIVxyXG5cdFx0cmV0dXJuIGRlZmVycmVkO1xyXG5cdH0sXHJcblxyXG5cdC8vIERlZmVycmVkIGhlbHBlclxyXG5cdHdoZW46IGZ1bmN0aW9uKCBzdWJvcmRpbmF0ZSAvKiAsIC4uLiwgc3Vib3JkaW5hdGVOICovICkge1xyXG5cdFx0dmFyIGkgPSAwLFxyXG5cdFx0XHRyZXNvbHZlVmFsdWVzID0gY29yZV9zbGljZS5jYWxsKCBhcmd1bWVudHMgKSxcclxuXHRcdFx0bGVuZ3RoID0gcmVzb2x2ZVZhbHVlcy5sZW5ndGgsXHJcblxyXG5cdFx0XHQvLyB0aGUgY291bnQgb2YgdW5jb21wbGV0ZWQgc3Vib3JkaW5hdGVzXHJcblx0XHRcdHJlbWFpbmluZyA9IGxlbmd0aCAhPT0gMSB8fCAoIHN1Ym9yZGluYXRlICYmIGpRdWVyeS5pc0Z1bmN0aW9uKCBzdWJvcmRpbmF0ZS5wcm9taXNlICkgKSA/IGxlbmd0aCA6IDAsXHJcblxyXG5cdFx0XHQvLyB0aGUgbWFzdGVyIERlZmVycmVkLiBJZiByZXNvbHZlVmFsdWVzIGNvbnNpc3Qgb2Ygb25seSBhIHNpbmdsZSBEZWZlcnJlZCwganVzdCB1c2UgdGhhdC5cclxuXHRcdFx0ZGVmZXJyZWQgPSByZW1haW5pbmcgPT09IDEgPyBzdWJvcmRpbmF0ZSA6IGpRdWVyeS5EZWZlcnJlZCgpLFxyXG5cclxuXHRcdFx0Ly8gVXBkYXRlIGZ1bmN0aW9uIGZvciBib3RoIHJlc29sdmUgYW5kIHByb2dyZXNzIHZhbHVlc1xyXG5cdFx0XHR1cGRhdGVGdW5jID0gZnVuY3Rpb24oIGksIGNvbnRleHRzLCB2YWx1ZXMgKSB7XHJcblx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCB2YWx1ZSApIHtcclxuXHRcdFx0XHRcdGNvbnRleHRzWyBpIF0gPSB0aGlzO1xyXG5cdFx0XHRcdFx0dmFsdWVzWyBpIF0gPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGNvcmVfc2xpY2UuY2FsbCggYXJndW1lbnRzICkgOiB2YWx1ZTtcclxuXHRcdFx0XHRcdGlmKCB2YWx1ZXMgPT09IHByb2dyZXNzVmFsdWVzICkge1xyXG5cdFx0XHRcdFx0XHRkZWZlcnJlZC5ub3RpZnlXaXRoKCBjb250ZXh0cywgdmFsdWVzICk7XHJcblx0XHRcdFx0XHR9IGVsc2UgaWYgKCAhKCAtLXJlbWFpbmluZyApICkge1xyXG5cdFx0XHRcdFx0XHRkZWZlcnJlZC5yZXNvbHZlV2l0aCggY29udGV4dHMsIHZhbHVlcyApO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH07XHJcblx0XHRcdH0sXHJcblxyXG5cdFx0XHRwcm9ncmVzc1ZhbHVlcywgcHJvZ3Jlc3NDb250ZXh0cywgcmVzb2x2ZUNvbnRleHRzO1xyXG5cclxuXHRcdC8vIGFkZCBsaXN0ZW5lcnMgdG8gRGVmZXJyZWQgc3Vib3JkaW5hdGVzOyB0cmVhdCBvdGhlcnMgYXMgcmVzb2x2ZWRcclxuXHRcdGlmICggbGVuZ3RoID4gMSApIHtcclxuXHRcdFx0cHJvZ3Jlc3NWYWx1ZXMgPSBuZXcgQXJyYXkoIGxlbmd0aCApO1xyXG5cdFx0XHRwcm9ncmVzc0NvbnRleHRzID0gbmV3IEFycmF5KCBsZW5ndGggKTtcclxuXHRcdFx0cmVzb2x2ZUNvbnRleHRzID0gbmV3IEFycmF5KCBsZW5ndGggKTtcclxuXHRcdFx0Zm9yICggOyBpIDwgbGVuZ3RoOyBpKysgKSB7XHJcblx0XHRcdFx0aWYgKCByZXNvbHZlVmFsdWVzWyBpIF0gJiYgalF1ZXJ5LmlzRnVuY3Rpb24oIHJlc29sdmVWYWx1ZXNbIGkgXS5wcm9taXNlICkgKSB7XHJcblx0XHRcdFx0XHRyZXNvbHZlVmFsdWVzWyBpIF0ucHJvbWlzZSgpXHJcblx0XHRcdFx0XHRcdC5kb25lKCB1cGRhdGVGdW5jKCBpLCByZXNvbHZlQ29udGV4dHMsIHJlc29sdmVWYWx1ZXMgKSApXHJcblx0XHRcdFx0XHRcdC5mYWlsKCBkZWZlcnJlZC5yZWplY3QgKVxyXG5cdFx0XHRcdFx0XHQucHJvZ3Jlc3MoIHVwZGF0ZUZ1bmMoIGksIHByb2dyZXNzQ29udGV4dHMsIHByb2dyZXNzVmFsdWVzICkgKTtcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0LS1yZW1haW5pbmc7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gaWYgd2UncmUgbm90IHdhaXRpbmcgb24gYW55dGhpbmcsIHJlc29sdmUgdGhlIG1hc3RlclxyXG5cdFx0aWYgKCAhcmVtYWluaW5nICkge1xyXG5cdFx0XHRkZWZlcnJlZC5yZXNvbHZlV2l0aCggcmVzb2x2ZUNvbnRleHRzLCByZXNvbHZlVmFsdWVzICk7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIGRlZmVycmVkLnByb21pc2UoKTtcclxuXHR9XHJcbn0pO1xyXG5qUXVlcnkuc3VwcG9ydCA9IChmdW5jdGlvbigpIHtcclxuXHJcblx0dmFyIHN1cHBvcnQsXHJcblx0XHRhbGwsXHJcblx0XHRhLFxyXG5cdFx0c2VsZWN0LFxyXG5cdFx0b3B0LFxyXG5cdFx0aW5wdXQsXHJcblx0XHRmcmFnbWVudCxcclxuXHRcdGV2ZW50TmFtZSxcclxuXHRcdGksXHJcblx0XHRpc1N1cHBvcnRlZCxcclxuXHRcdGNsaWNrRm4sXHJcblx0XHRkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xyXG5cclxuXHQvLyBQcmVsaW1pbmFyeSB0ZXN0c1xyXG5cdGRpdi5zZXRBdHRyaWJ1dGUoIFwiY2xhc3NOYW1lXCIsIFwidFwiICk7XHJcblx0ZGl2LmlubmVySFRNTCA9IFwiICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0nL2EnPmE8L2E+PGlucHV0IHR5cGU9J2NoZWNrYm94Jy8+XCI7XHJcblxyXG5cdGFsbCA9IGRpdi5nZXRFbGVtZW50c0J5VGFnTmFtZShcIipcIik7XHJcblx0YSA9IGRpdi5nZXRFbGVtZW50c0J5VGFnTmFtZShcImFcIilbIDAgXTtcclxuXHRhLnN0eWxlLmNzc1RleHQgPSBcInRvcDoxcHg7ZmxvYXQ6bGVmdDtvcGFjaXR5Oi41XCI7XHJcblxyXG5cdC8vIENhbid0IGdldCBiYXNpYyB0ZXN0IHN1cHBvcnRcclxuXHRpZiAoICFhbGwgfHwgIWFsbC5sZW5ndGggfHwgIWEgKSB7XHJcblx0XHRyZXR1cm4ge307XHJcblx0fVxyXG5cclxuXHQvLyBGaXJzdCBiYXRjaCBvZiBzdXBwb3J0cyB0ZXN0c1xyXG5cdHNlbGVjdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzZWxlY3RcIik7XHJcblx0b3B0ID0gc2VsZWN0LmFwcGVuZENoaWxkKCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwib3B0aW9uXCIpICk7XHJcblx0aW5wdXQgPSBkaXYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJpbnB1dFwiKVsgMCBdO1xyXG5cclxuXHRzdXBwb3J0ID0ge1xyXG5cdFx0Ly8gSUUgc3RyaXBzIGxlYWRpbmcgd2hpdGVzcGFjZSB3aGVuIC5pbm5lckhUTUwgaXMgdXNlZFxyXG5cdFx0bGVhZGluZ1doaXRlc3BhY2U6ICggZGl2LmZpcnN0Q2hpbGQubm9kZVR5cGUgPT09IDMgKSxcclxuXHJcblx0XHQvLyBNYWtlIHN1cmUgdGhhdCB0Ym9keSBlbGVtZW50cyBhcmVuJ3QgYXV0b21hdGljYWxseSBpbnNlcnRlZFxyXG5cdFx0Ly8gSUUgd2lsbCBpbnNlcnQgdGhlbSBpbnRvIGVtcHR5IHRhYmxlc1xyXG5cdFx0dGJvZHk6ICFkaXYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJ0Ym9keVwiKS5sZW5ndGgsXHJcblxyXG5cdFx0Ly8gTWFrZSBzdXJlIHRoYXQgbGluayBlbGVtZW50cyBnZXQgc2VyaWFsaXplZCBjb3JyZWN0bHkgYnkgaW5uZXJIVE1MXHJcblx0XHQvLyBUaGlzIHJlcXVpcmVzIGEgd3JhcHBlciBlbGVtZW50IGluIElFXHJcblx0XHRodG1sU2VyaWFsaXplOiAhIWRpdi5nZXRFbGVtZW50c0J5VGFnTmFtZShcImxpbmtcIikubGVuZ3RoLFxyXG5cclxuXHRcdC8vIEdldCB0aGUgc3R5bGUgaW5mb3JtYXRpb24gZnJvbSBnZXRBdHRyaWJ1dGVcclxuXHRcdC8vIChJRSB1c2VzIC5jc3NUZXh0IGluc3RlYWQpXHJcblx0XHRzdHlsZTogL3RvcC8udGVzdCggYS5nZXRBdHRyaWJ1dGUoXCJzdHlsZVwiKSApLFxyXG5cclxuXHRcdC8vIE1ha2Ugc3VyZSB0aGF0IFVSTHMgYXJlbid0IG1hbmlwdWxhdGVkXHJcblx0XHQvLyAoSUUgbm9ybWFsaXplcyBpdCBieSBkZWZhdWx0KVxyXG5cdFx0aHJlZk5vcm1hbGl6ZWQ6ICggYS5nZXRBdHRyaWJ1dGUoXCJocmVmXCIpID09PSBcIi9hXCIgKSxcclxuXHJcblx0XHQvLyBNYWtlIHN1cmUgdGhhdCBlbGVtZW50IG9wYWNpdHkgZXhpc3RzXHJcblx0XHQvLyAoSUUgdXNlcyBmaWx0ZXIgaW5zdGVhZClcclxuXHRcdC8vIFVzZSBhIHJlZ2V4IHRvIHdvcmsgYXJvdW5kIGEgV2ViS2l0IGlzc3VlLiBTZWUgIzUxNDVcclxuXHRcdG9wYWNpdHk6IC9eMC41Ly50ZXN0KCBhLnN0eWxlLm9wYWNpdHkgKSxcclxuXHJcblx0XHQvLyBWZXJpZnkgc3R5bGUgZmxvYXQgZXhpc3RlbmNlXHJcblx0XHQvLyAoSUUgdXNlcyBzdHlsZUZsb2F0IGluc3RlYWQgb2YgY3NzRmxvYXQpXHJcblx0XHRjc3NGbG9hdDogISFhLnN0eWxlLmNzc0Zsb2F0LFxyXG5cclxuXHRcdC8vIE1ha2Ugc3VyZSB0aGF0IGlmIG5vIHZhbHVlIGlzIHNwZWNpZmllZCBmb3IgYSBjaGVja2JveFxyXG5cdFx0Ly8gdGhhdCBpdCBkZWZhdWx0cyB0byBcIm9uXCIuXHJcblx0XHQvLyAoV2ViS2l0IGRlZmF1bHRzIHRvIFwiXCIgaW5zdGVhZClcclxuXHRcdGNoZWNrT246ICggaW5wdXQudmFsdWUgPT09IFwib25cIiApLFxyXG5cclxuXHRcdC8vIE1ha2Ugc3VyZSB0aGF0IGEgc2VsZWN0ZWQtYnktZGVmYXVsdCBvcHRpb24gaGFzIGEgd29ya2luZyBzZWxlY3RlZCBwcm9wZXJ0eS5cclxuXHRcdC8vIChXZWJLaXQgZGVmYXVsdHMgdG8gZmFsc2UgaW5zdGVhZCBvZiB0cnVlLCBJRSB0b28sIGlmIGl0J3MgaW4gYW4gb3B0Z3JvdXApXHJcblx0XHRvcHRTZWxlY3RlZDogb3B0LnNlbGVjdGVkLFxyXG5cclxuXHRcdC8vIFRlc3Qgc2V0QXR0cmlidXRlIG9uIGNhbWVsQ2FzZSBjbGFzcy4gSWYgaXQgd29ya3MsIHdlIG5lZWQgYXR0ckZpeGVzIHdoZW4gZG9pbmcgZ2V0L3NldEF0dHJpYnV0ZSAoaWU2LzcpXHJcblx0XHRnZXRTZXRBdHRyaWJ1dGU6IGRpdi5jbGFzc05hbWUgIT09IFwidFwiLFxyXG5cclxuXHRcdC8vIFRlc3RzIGZvciBlbmN0eXBlIHN1cHBvcnQgb24gYSBmb3JtKCM2NzQzKVxyXG5cdFx0ZW5jdHlwZTogISFkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZm9ybVwiKS5lbmN0eXBlLFxyXG5cclxuXHRcdC8vIE1ha2VzIHN1cmUgY2xvbmluZyBhbiBodG1sNSBlbGVtZW50IGRvZXMgbm90IGNhdXNlIHByb2JsZW1zXHJcblx0XHQvLyBXaGVyZSBvdXRlckhUTUwgaXMgdW5kZWZpbmVkLCB0aGlzIHN0aWxsIHdvcmtzXHJcblx0XHRodG1sNUNsb25lOiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwibmF2XCIpLmNsb25lTm9kZSggdHJ1ZSApLm91dGVySFRNTCAhPT0gXCI8Om5hdj48LzpuYXY+XCIsXHJcblxyXG5cdFx0Ly8galF1ZXJ5LnN1cHBvcnQuYm94TW9kZWwgREVQUkVDQVRFRCBpbiAxLjggc2luY2Ugd2UgZG9uJ3Qgc3VwcG9ydCBRdWlya3MgTW9kZVxyXG5cdFx0Ym94TW9kZWw6ICggZG9jdW1lbnQuY29tcGF0TW9kZSA9PT0gXCJDU1MxQ29tcGF0XCIgKSxcclxuXHJcblx0XHQvLyBXaWxsIGJlIGRlZmluZWQgbGF0ZXJcclxuXHRcdHN1Ym1pdEJ1YmJsZXM6IHRydWUsXHJcblx0XHRjaGFuZ2VCdWJibGVzOiB0cnVlLFxyXG5cdFx0Zm9jdXNpbkJ1YmJsZXM6IGZhbHNlLFxyXG5cdFx0ZGVsZXRlRXhwYW5kbzogdHJ1ZSxcclxuXHRcdG5vQ2xvbmVFdmVudDogdHJ1ZSxcclxuXHRcdGlubGluZUJsb2NrTmVlZHNMYXlvdXQ6IGZhbHNlLFxyXG5cdFx0c2hyaW5rV3JhcEJsb2NrczogZmFsc2UsXHJcblx0XHRyZWxpYWJsZU1hcmdpblJpZ2h0OiB0cnVlLFxyXG5cdFx0Ym94U2l6aW5nUmVsaWFibGU6IHRydWUsXHJcblx0XHRwaXhlbFBvc2l0aW9uOiBmYWxzZVxyXG5cdH07XHJcblxyXG5cdC8vIE1ha2Ugc3VyZSBjaGVja2VkIHN0YXR1cyBpcyBwcm9wZXJseSBjbG9uZWRcclxuXHRpbnB1dC5jaGVja2VkID0gdHJ1ZTtcclxuXHRzdXBwb3J0Lm5vQ2xvbmVDaGVja2VkID0gaW5wdXQuY2xvbmVOb2RlKCB0cnVlICkuY2hlY2tlZDtcclxuXHJcblx0Ly8gTWFrZSBzdXJlIHRoYXQgdGhlIG9wdGlvbnMgaW5zaWRlIGRpc2FibGVkIHNlbGVjdHMgYXJlbid0IG1hcmtlZCBhcyBkaXNhYmxlZFxyXG5cdC8vIChXZWJLaXQgbWFya3MgdGhlbSBhcyBkaXNhYmxlZClcclxuXHRzZWxlY3QuZGlzYWJsZWQgPSB0cnVlO1xyXG5cdHN1cHBvcnQub3B0RGlzYWJsZWQgPSAhb3B0LmRpc2FibGVkO1xyXG5cclxuXHQvLyBUZXN0IHRvIHNlZSBpZiBpdCdzIHBvc3NpYmxlIHRvIGRlbGV0ZSBhbiBleHBhbmRvIGZyb20gYW4gZWxlbWVudFxyXG5cdC8vIEZhaWxzIGluIEludGVybmV0IEV4cGxvcmVyXHJcblx0dHJ5IHtcclxuXHRcdGRlbGV0ZSBkaXYudGVzdDtcclxuXHR9IGNhdGNoKCBlICkge1xyXG5cdFx0c3VwcG9ydC5kZWxldGVFeHBhbmRvID0gZmFsc2U7XHJcblx0fVxyXG5cclxuXHRpZiAoICFkaXYuYWRkRXZlbnRMaXN0ZW5lciAmJiBkaXYuYXR0YWNoRXZlbnQgJiYgZGl2LmZpcmVFdmVudCApIHtcclxuXHRcdGRpdi5hdHRhY2hFdmVudCggXCJvbmNsaWNrXCIsIGNsaWNrRm4gPSBmdW5jdGlvbigpIHtcclxuXHRcdFx0Ly8gQ2xvbmluZyBhIG5vZGUgc2hvdWxkbid0IGNvcHkgb3ZlciBhbnlcclxuXHRcdFx0Ly8gYm91bmQgZXZlbnQgaGFuZGxlcnMgKElFIGRvZXMgdGhpcylcclxuXHRcdFx0c3VwcG9ydC5ub0Nsb25lRXZlbnQgPSBmYWxzZTtcclxuXHRcdH0pO1xyXG5cdFx0ZGl2LmNsb25lTm9kZSggdHJ1ZSApLmZpcmVFdmVudChcIm9uY2xpY2tcIik7XHJcblx0XHRkaXYuZGV0YWNoRXZlbnQoIFwib25jbGlja1wiLCBjbGlja0ZuICk7XHJcblx0fVxyXG5cclxuXHQvLyBDaGVjayBpZiBhIHJhZGlvIG1haW50YWlucyBpdHMgdmFsdWVcclxuXHQvLyBhZnRlciBiZWluZyBhcHBlbmRlZCB0byB0aGUgRE9NXHJcblx0aW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIik7XHJcblx0aW5wdXQudmFsdWUgPSBcInRcIjtcclxuXHRpbnB1dC5zZXRBdHRyaWJ1dGUoIFwidHlwZVwiLCBcInJhZGlvXCIgKTtcclxuXHRzdXBwb3J0LnJhZGlvVmFsdWUgPSBpbnB1dC52YWx1ZSA9PT0gXCJ0XCI7XHJcblxyXG5cdGlucHV0LnNldEF0dHJpYnV0ZSggXCJjaGVja2VkXCIsIFwiY2hlY2tlZFwiICk7XHJcblxyXG5cdC8vICMxMTIxNyAtIFdlYktpdCBsb3NlcyBjaGVjayB3aGVuIHRoZSBuYW1lIGlzIGFmdGVyIHRoZSBjaGVja2VkIGF0dHJpYnV0ZVxyXG5cdGlucHV0LnNldEF0dHJpYnV0ZSggXCJuYW1lXCIsIFwidFwiICk7XHJcblxyXG5cdGRpdi5hcHBlbmRDaGlsZCggaW5wdXQgKTtcclxuXHRmcmFnbWVudCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcclxuXHRmcmFnbWVudC5hcHBlbmRDaGlsZCggZGl2Lmxhc3RDaGlsZCApO1xyXG5cclxuXHQvLyBXZWJLaXQgZG9lc24ndCBjbG9uZSBjaGVja2VkIHN0YXRlIGNvcnJlY3RseSBpbiBmcmFnbWVudHNcclxuXHRzdXBwb3J0LmNoZWNrQ2xvbmUgPSBmcmFnbWVudC5jbG9uZU5vZGUoIHRydWUgKS5jbG9uZU5vZGUoIHRydWUgKS5sYXN0Q2hpbGQuY2hlY2tlZDtcclxuXHJcblx0Ly8gQ2hlY2sgaWYgYSBkaXNjb25uZWN0ZWQgY2hlY2tib3ggd2lsbCByZXRhaW4gaXRzIGNoZWNrZWRcclxuXHQvLyB2YWx1ZSBvZiB0cnVlIGFmdGVyIGFwcGVuZGVkIHRvIHRoZSBET00gKElFNi83KVxyXG5cdHN1cHBvcnQuYXBwZW5kQ2hlY2tlZCA9IGlucHV0LmNoZWNrZWQ7XHJcblxyXG5cdGZyYWdtZW50LnJlbW92ZUNoaWxkKCBpbnB1dCApO1xyXG5cdGZyYWdtZW50LmFwcGVuZENoaWxkKCBkaXYgKTtcclxuXHJcblx0Ly8gVGVjaG5pcXVlIGZyb20gSnVyaXkgWmF5dHNldlxyXG5cdC8vIGh0dHA6Ly9wZXJmZWN0aW9ua2lsbHMuY29tL2RldGVjdGluZy1ldmVudC1zdXBwb3J0LXdpdGhvdXQtYnJvd3Nlci1zbmlmZmluZy9cclxuXHQvLyBXZSBvbmx5IGNhcmUgYWJvdXQgdGhlIGNhc2Ugd2hlcmUgbm9uLXN0YW5kYXJkIGV2ZW50IHN5c3RlbXNcclxuXHQvLyBhcmUgdXNlZCwgbmFtZWx5IGluIElFLiBTaG9ydC1jaXJjdWl0aW5nIGhlcmUgaGVscHMgdXMgdG9cclxuXHQvLyBhdm9pZCBhbiBldmFsIGNhbGwgKGluIHNldEF0dHJpYnV0ZSkgd2hpY2ggY2FuIGNhdXNlIENTUFxyXG5cdC8vIHRvIGdvIGhheXdpcmUuIFNlZTogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4vU2VjdXJpdHkvQ1NQXHJcblx0aWYgKCBkaXYuYXR0YWNoRXZlbnQgKSB7XHJcblx0XHRmb3IgKCBpIGluIHtcclxuXHRcdFx0c3VibWl0OiB0cnVlLFxyXG5cdFx0XHRjaGFuZ2U6IHRydWUsXHJcblx0XHRcdGZvY3VzaW46IHRydWVcclxuXHRcdH0pIHtcclxuXHRcdFx0ZXZlbnROYW1lID0gXCJvblwiICsgaTtcclxuXHRcdFx0aXNTdXBwb3J0ZWQgPSAoIGV2ZW50TmFtZSBpbiBkaXYgKTtcclxuXHRcdFx0aWYgKCAhaXNTdXBwb3J0ZWQgKSB7XHJcblx0XHRcdFx0ZGl2LnNldEF0dHJpYnV0ZSggZXZlbnROYW1lLCBcInJldHVybjtcIiApO1xyXG5cdFx0XHRcdGlzU3VwcG9ydGVkID0gKCB0eXBlb2YgZGl2WyBldmVudE5hbWUgXSA9PT0gXCJmdW5jdGlvblwiICk7XHJcblx0XHRcdH1cclxuXHRcdFx0c3VwcG9ydFsgaSArIFwiQnViYmxlc1wiIF0gPSBpc1N1cHBvcnRlZDtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8vIFJ1biB0ZXN0cyB0aGF0IG5lZWQgYSBib2R5IGF0IGRvYyByZWFkeVxyXG5cdGpRdWVyeShmdW5jdGlvbigpIHtcclxuXHRcdHZhciBjb250YWluZXIsIGRpdiwgdGRzLCBtYXJnaW5EaXYsXHJcblx0XHRcdGRpdlJlc2V0ID0gXCJwYWRkaW5nOjA7bWFyZ2luOjA7Ym9yZGVyOjA7ZGlzcGxheTpibG9jaztvdmVyZmxvdzpoaWRkZW47XCIsXHJcblx0XHRcdGJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImJvZHlcIilbMF07XHJcblxyXG5cdFx0aWYgKCAhYm9keSApIHtcclxuXHRcdFx0Ly8gUmV0dXJuIGZvciBmcmFtZXNldCBkb2NzIHRoYXQgZG9uJ3QgaGF2ZSBhIGJvZHlcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XHJcblx0XHRjb250YWluZXIuc3R5bGUuY3NzVGV4dCA9IFwidmlzaWJpbGl0eTpoaWRkZW47Ym9yZGVyOjA7d2lkdGg6MDtoZWlnaHQ6MDtwb3NpdGlvbjpzdGF0aWM7dG9wOjA7bWFyZ2luLXRvcDoxcHhcIjtcclxuXHRcdGJvZHkuaW5zZXJ0QmVmb3JlKCBjb250YWluZXIsIGJvZHkuZmlyc3RDaGlsZCApO1xyXG5cclxuXHRcdC8vIENvbnN0cnVjdCB0aGUgdGVzdCBlbGVtZW50XHJcblx0XHRkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xyXG5cdFx0Y29udGFpbmVyLmFwcGVuZENoaWxkKCBkaXYgKTtcclxuXHJcblx0XHQvLyBDaGVjayBpZiB0YWJsZSBjZWxscyBzdGlsbCBoYXZlIG9mZnNldFdpZHRoL0hlaWdodCB3aGVuIHRoZXkgYXJlIHNldFxyXG5cdFx0Ly8gdG8gZGlzcGxheTpub25lIGFuZCB0aGVyZSBhcmUgc3RpbGwgb3RoZXIgdmlzaWJsZSB0YWJsZSBjZWxscyBpbiBhXHJcblx0XHQvLyB0YWJsZSByb3c7IGlmIHNvLCBvZmZzZXRXaWR0aC9IZWlnaHQgYXJlIG5vdCByZWxpYWJsZSBmb3IgdXNlIHdoZW5cclxuXHRcdC8vIGRldGVybWluaW5nIGlmIGFuIGVsZW1lbnQgaGFzIGJlZW4gaGlkZGVuIGRpcmVjdGx5IHVzaW5nXHJcblx0XHQvLyBkaXNwbGF5Om5vbmUgKGl0IGlzIHN0aWxsIHNhZmUgdG8gdXNlIG9mZnNldHMgaWYgYSBwYXJlbnQgZWxlbWVudCBpc1xyXG5cdFx0Ly8gaGlkZGVuOyBkb24gc2FmZXR5IGdvZ2dsZXMgYW5kIHNlZSBidWcgIzQ1MTIgZm9yIG1vcmUgaW5mb3JtYXRpb24pLlxyXG5cdFx0Ly8gKG9ubHkgSUUgOCBmYWlscyB0aGlzIHRlc3QpXHJcblx0XHRkaXYuaW5uZXJIVE1MID0gXCI8dGFibGU+PHRyPjx0ZD48L3RkPjx0ZD50PC90ZD48L3RyPjwvdGFibGU+XCI7XHJcblx0XHR0ZHMgPSBkaXYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJ0ZFwiKTtcclxuXHRcdHRkc1sgMCBdLnN0eWxlLmNzc1RleHQgPSBcInBhZGRpbmc6MDttYXJnaW46MDtib3JkZXI6MDtkaXNwbGF5Om5vbmVcIjtcclxuXHRcdGlzU3VwcG9ydGVkID0gKCB0ZHNbIDAgXS5vZmZzZXRIZWlnaHQgPT09IDAgKTtcclxuXHJcblx0XHR0ZHNbIDAgXS5zdHlsZS5kaXNwbGF5ID0gXCJcIjtcclxuXHRcdHRkc1sgMSBdLnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcclxuXHJcblx0XHQvLyBDaGVjayBpZiBlbXB0eSB0YWJsZSBjZWxscyBzdGlsbCBoYXZlIG9mZnNldFdpZHRoL0hlaWdodFxyXG5cdFx0Ly8gKElFIDw9IDggZmFpbCB0aGlzIHRlc3QpXHJcblx0XHRzdXBwb3J0LnJlbGlhYmxlSGlkZGVuT2Zmc2V0cyA9IGlzU3VwcG9ydGVkICYmICggdGRzWyAwIF0ub2Zmc2V0SGVpZ2h0ID09PSAwICk7XHJcblxyXG5cdFx0Ly8gQ2hlY2sgYm94LXNpemluZyBhbmQgbWFyZ2luIGJlaGF2aW9yXHJcblx0XHRkaXYuaW5uZXJIVE1MID0gXCJcIjtcclxuXHRcdGRpdi5zdHlsZS5jc3NUZXh0ID0gXCJib3gtc2l6aW5nOmJvcmRlci1ib3g7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7cGFkZGluZzoxcHg7Ym9yZGVyOjFweDtkaXNwbGF5OmJsb2NrO3dpZHRoOjRweDttYXJnaW4tdG9wOjElO3Bvc2l0aW9uOmFic29sdXRlO3RvcDoxJTtcIjtcclxuXHRcdHN1cHBvcnQuYm94U2l6aW5nID0gKCBkaXYub2Zmc2V0V2lkdGggPT09IDQgKTtcclxuXHRcdHN1cHBvcnQuZG9lc05vdEluY2x1ZGVNYXJnaW5JbkJvZHlPZmZzZXQgPSAoIGJvZHkub2Zmc2V0VG9wICE9PSAxICk7XHJcblxyXG5cdFx0Ly8gTk9URTogVG8gYW55IGZ1dHVyZSBtYWludGFpbmVyLCB3ZSd2ZSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZVxyXG5cdFx0Ly8gYmVjYXVzZSBqc2RvbSBvbiBub2RlLmpzIHdpbGwgYnJlYWsgd2l0aG91dCBpdC5cclxuXHRcdGlmICggd2luZG93LmdldENvbXB1dGVkU3R5bGUgKSB7XHJcblx0XHRcdHN1cHBvcnQucGl4ZWxQb3NpdGlvbiA9ICggd2luZG93LmdldENvbXB1dGVkU3R5bGUoIGRpdiwgbnVsbCApIHx8IHt9ICkudG9wICE9PSBcIjElXCI7XHJcblx0XHRcdHN1cHBvcnQuYm94U2l6aW5nUmVsaWFibGUgPSAoIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKCBkaXYsIG51bGwgKSB8fCB7IHdpZHRoOiBcIjRweFwiIH0gKS53aWR0aCA9PT0gXCI0cHhcIjtcclxuXHJcblx0XHRcdC8vIENoZWNrIGlmIGRpdiB3aXRoIGV4cGxpY2l0IHdpZHRoIGFuZCBubyBtYXJnaW4tcmlnaHQgaW5jb3JyZWN0bHlcclxuXHRcdFx0Ly8gZ2V0cyBjb21wdXRlZCBtYXJnaW4tcmlnaHQgYmFzZWQgb24gd2lkdGggb2YgY29udGFpbmVyLiBGb3IgbW9yZVxyXG5cdFx0XHQvLyBpbmZvIHNlZSBidWcgIzMzMzNcclxuXHRcdFx0Ly8gRmFpbHMgaW4gV2ViS2l0IGJlZm9yZSBGZWIgMjAxMSBuaWdodGxpZXNcclxuXHRcdFx0Ly8gV2ViS2l0IEJ1ZyAxMzM0MyAtIGdldENvbXB1dGVkU3R5bGUgcmV0dXJucyB3cm9uZyB2YWx1ZSBmb3IgbWFyZ2luLXJpZ2h0XHJcblx0XHRcdG1hcmdpbkRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XHJcblx0XHRcdG1hcmdpbkRpdi5zdHlsZS5jc3NUZXh0ID0gZGl2LnN0eWxlLmNzc1RleHQgPSBkaXZSZXNldDtcclxuXHRcdFx0bWFyZ2luRGl2LnN0eWxlLm1hcmdpblJpZ2h0ID0gbWFyZ2luRGl2LnN0eWxlLndpZHRoID0gXCIwXCI7XHJcblx0XHRcdGRpdi5zdHlsZS53aWR0aCA9IFwiMXB4XCI7XHJcblx0XHRcdGRpdi5hcHBlbmRDaGlsZCggbWFyZ2luRGl2ICk7XHJcblx0XHRcdHN1cHBvcnQucmVsaWFibGVNYXJnaW5SaWdodCA9XHJcblx0XHRcdFx0IXBhcnNlRmxvYXQoICggd2luZG93LmdldENvbXB1dGVkU3R5bGUoIG1hcmdpbkRpdiwgbnVsbCApIHx8IHt9ICkubWFyZ2luUmlnaHQgKTtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAoIHR5cGVvZiBkaXYuc3R5bGUuem9vbSAhPT0gXCJ1bmRlZmluZWRcIiApIHtcclxuXHRcdFx0Ly8gQ2hlY2sgaWYgbmF0aXZlbHkgYmxvY2stbGV2ZWwgZWxlbWVudHMgYWN0IGxpa2UgaW5saW5lLWJsb2NrXHJcblx0XHRcdC8vIGVsZW1lbnRzIHdoZW4gc2V0dGluZyB0aGVpciBkaXNwbGF5IHRvICdpbmxpbmUnIGFuZCBnaXZpbmdcclxuXHRcdFx0Ly8gdGhlbSBsYXlvdXRcclxuXHRcdFx0Ly8gKElFIDwgOCBkb2VzIHRoaXMpXHJcblx0XHRcdGRpdi5pbm5lckhUTUwgPSBcIlwiO1xyXG5cdFx0XHRkaXYuc3R5bGUuY3NzVGV4dCA9IGRpdlJlc2V0ICsgXCJ3aWR0aDoxcHg7cGFkZGluZzoxcHg7ZGlzcGxheTppbmxpbmU7em9vbToxXCI7XHJcblx0XHRcdHN1cHBvcnQuaW5saW5lQmxvY2tOZWVkc0xheW91dCA9ICggZGl2Lm9mZnNldFdpZHRoID09PSAzICk7XHJcblxyXG5cdFx0XHQvLyBDaGVjayBpZiBlbGVtZW50cyB3aXRoIGxheW91dCBzaHJpbmstd3JhcCB0aGVpciBjaGlsZHJlblxyXG5cdFx0XHQvLyAoSUUgNiBkb2VzIHRoaXMpXHJcblx0XHRcdGRpdi5zdHlsZS5kaXNwbGF5ID0gXCJibG9ja1wiO1xyXG5cdFx0XHRkaXYuc3R5bGUub3ZlcmZsb3cgPSBcInZpc2libGVcIjtcclxuXHRcdFx0ZGl2LmlubmVySFRNTCA9IFwiPGRpdj48L2Rpdj5cIjtcclxuXHRcdFx0ZGl2LmZpcnN0Q2hpbGQuc3R5bGUud2lkdGggPSBcIjVweFwiO1xyXG5cdFx0XHRzdXBwb3J0LnNocmlua1dyYXBCbG9ja3MgPSAoIGRpdi5vZmZzZXRXaWR0aCAhPT0gMyApO1xyXG5cclxuXHRcdFx0Y29udGFpbmVyLnN0eWxlLnpvb20gPSAxO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIE51bGwgZWxlbWVudHMgdG8gYXZvaWQgbGVha3MgaW4gSUVcclxuXHRcdGJvZHkucmVtb3ZlQ2hpbGQoIGNvbnRhaW5lciApO1xyXG5cdFx0Y29udGFpbmVyID0gZGl2ID0gdGRzID0gbWFyZ2luRGl2ID0gbnVsbDtcclxuXHR9KTtcclxuXHJcblx0Ly8gTnVsbCBlbGVtZW50cyB0byBhdm9pZCBsZWFrcyBpbiBJRVxyXG5cdGZyYWdtZW50LnJlbW92ZUNoaWxkKCBkaXYgKTtcclxuXHRhbGwgPSBhID0gc2VsZWN0ID0gb3B0ID0gaW5wdXQgPSBmcmFnbWVudCA9IGRpdiA9IG51bGw7XHJcblxyXG5cdHJldHVybiBzdXBwb3J0O1xyXG59KSgpO1xyXG52YXIgcmJyYWNlID0gLyg/Olxce1tcXHNcXFNdKlxcfXxcXFtbXFxzXFxTXSpcXF0pJC8sXHJcblx0cm11bHRpRGFzaCA9IC8oW0EtWl0pL2c7XHJcblxyXG5qUXVlcnkuZXh0ZW5kKHtcclxuXHRjYWNoZToge30sXHJcblxyXG5cdGRlbGV0ZWRJZHM6IFtdLFxyXG5cclxuXHQvLyBQbGVhc2UgdXNlIHdpdGggY2F1dGlvblxyXG5cdHV1aWQ6IDAsXHJcblxyXG5cdC8vIFVuaXF1ZSBmb3IgZWFjaCBjb3B5IG9mIGpRdWVyeSBvbiB0aGUgcGFnZVxyXG5cdC8vIE5vbi1kaWdpdHMgcmVtb3ZlZCB0byBtYXRjaCByaW5saW5lalF1ZXJ5XHJcblx0ZXhwYW5kbzogXCJqUXVlcnlcIiArICggalF1ZXJ5LmZuLmpxdWVyeSArIE1hdGgucmFuZG9tKCkgKS5yZXBsYWNlKCAvXFxEL2csIFwiXCIgKSxcclxuXHJcblx0Ly8gVGhlIGZvbGxvd2luZyBlbGVtZW50cyB0aHJvdyB1bmNhdGNoYWJsZSBleGNlcHRpb25zIGlmIHlvdVxyXG5cdC8vIGF0dGVtcHQgdG8gYWRkIGV4cGFuZG8gcHJvcGVydGllcyB0byB0aGVtLlxyXG5cdG5vRGF0YToge1xyXG5cdFx0XCJlbWJlZFwiOiB0cnVlLFxyXG5cdFx0Ly8gQmFuIGFsbCBvYmplY3RzIGV4Y2VwdCBmb3IgRmxhc2ggKHdoaWNoIGhhbmRsZSBleHBhbmRvcylcclxuXHRcdFwib2JqZWN0XCI6IFwiY2xzaWQ6RDI3Q0RCNkUtQUU2RC0xMWNmLTk2QjgtNDQ0NTUzNTQwMDAwXCIsXHJcblx0XHRcImFwcGxldFwiOiB0cnVlXHJcblx0fSxcclxuXHJcblx0aGFzRGF0YTogZnVuY3Rpb24oIGVsZW0gKSB7XHJcblx0XHRlbGVtID0gZWxlbS5ub2RlVHlwZSA/IGpRdWVyeS5jYWNoZVsgZWxlbVtqUXVlcnkuZXhwYW5kb10gXSA6IGVsZW1bIGpRdWVyeS5leHBhbmRvIF07XHJcblx0XHRyZXR1cm4gISFlbGVtICYmICFpc0VtcHR5RGF0YU9iamVjdCggZWxlbSApO1xyXG5cdH0sXHJcblxyXG5cdGRhdGE6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBkYXRhLCBwdnQgLyogSW50ZXJuYWwgVXNlIE9ubHkgKi8gKSB7XHJcblx0XHRpZiAoICFqUXVlcnkuYWNjZXB0RGF0YSggZWxlbSApICkge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0dmFyIHRoaXNDYWNoZSwgcmV0LFxyXG5cdFx0XHRpbnRlcm5hbEtleSA9IGpRdWVyeS5leHBhbmRvLFxyXG5cdFx0XHRnZXRCeU5hbWUgPSB0eXBlb2YgbmFtZSA9PT0gXCJzdHJpbmdcIixcclxuXHJcblx0XHRcdC8vIFdlIGhhdmUgdG8gaGFuZGxlIERPTSBub2RlcyBhbmQgSlMgb2JqZWN0cyBkaWZmZXJlbnRseSBiZWNhdXNlIElFNi03XHJcblx0XHRcdC8vIGNhbid0IEdDIG9iamVjdCByZWZlcmVuY2VzIHByb3Blcmx5IGFjcm9zcyB0aGUgRE9NLUpTIGJvdW5kYXJ5XHJcblx0XHRcdGlzTm9kZSA9IGVsZW0ubm9kZVR5cGUsXHJcblxyXG5cdFx0XHQvLyBPbmx5IERPTSBub2RlcyBuZWVkIHRoZSBnbG9iYWwgalF1ZXJ5IGNhY2hlOyBKUyBvYmplY3QgZGF0YSBpc1xyXG5cdFx0XHQvLyBhdHRhY2hlZCBkaXJlY3RseSB0byB0aGUgb2JqZWN0IHNvIEdDIGNhbiBvY2N1ciBhdXRvbWF0aWNhbGx5XHJcblx0XHRcdGNhY2hlID0gaXNOb2RlID8galF1ZXJ5LmNhY2hlIDogZWxlbSxcclxuXHJcblx0XHRcdC8vIE9ubHkgZGVmaW5pbmcgYW4gSUQgZm9yIEpTIG9iamVjdHMgaWYgaXRzIGNhY2hlIGFscmVhZHkgZXhpc3RzIGFsbG93c1xyXG5cdFx0XHQvLyB0aGUgY29kZSB0byBzaG9ydGN1dCBvbiB0aGUgc2FtZSBwYXRoIGFzIGEgRE9NIG5vZGUgd2l0aCBubyBjYWNoZVxyXG5cdFx0XHRpZCA9IGlzTm9kZSA/IGVsZW1bIGludGVybmFsS2V5IF0gOiBlbGVtWyBpbnRlcm5hbEtleSBdICYmIGludGVybmFsS2V5O1xyXG5cclxuXHRcdC8vIEF2b2lkIGRvaW5nIGFueSBtb3JlIHdvcmsgdGhhbiB3ZSBuZWVkIHRvIHdoZW4gdHJ5aW5nIHRvIGdldCBkYXRhIG9uIGFuXHJcblx0XHQvLyBvYmplY3QgdGhhdCBoYXMgbm8gZGF0YSBhdCBhbGxcclxuXHRcdGlmICggKCFpZCB8fCAhY2FjaGVbaWRdIHx8ICghcHZ0ICYmICFjYWNoZVtpZF0uZGF0YSkpICYmIGdldEJ5TmFtZSAmJiBkYXRhID09PSB1bmRlZmluZWQgKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAoICFpZCApIHtcclxuXHRcdFx0Ly8gT25seSBET00gbm9kZXMgbmVlZCBhIG5ldyB1bmlxdWUgSUQgZm9yIGVhY2ggZWxlbWVudCBzaW5jZSB0aGVpciBkYXRhXHJcblx0XHRcdC8vIGVuZHMgdXAgaW4gdGhlIGdsb2JhbCBjYWNoZVxyXG5cdFx0XHRpZiAoIGlzTm9kZSApIHtcclxuXHRcdFx0XHRlbGVtWyBpbnRlcm5hbEtleSBdID0gaWQgPSBqUXVlcnkuZGVsZXRlZElkcy5wb3AoKSB8fCArK2pRdWVyeS51dWlkO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdGlkID0gaW50ZXJuYWxLZXk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRpZiAoICFjYWNoZVsgaWQgXSApIHtcclxuXHRcdFx0Y2FjaGVbIGlkIF0gPSB7fTtcclxuXHJcblx0XHRcdC8vIEF2b2lkcyBleHBvc2luZyBqUXVlcnkgbWV0YWRhdGEgb24gcGxhaW4gSlMgb2JqZWN0cyB3aGVuIHRoZSBvYmplY3RcclxuXHRcdFx0Ly8gaXMgc2VyaWFsaXplZCB1c2luZyBKU09OLnN0cmluZ2lmeVxyXG5cdFx0XHRpZiAoICFpc05vZGUgKSB7XHJcblx0XHRcdFx0Y2FjaGVbIGlkIF0udG9KU09OID0galF1ZXJ5Lm5vb3A7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHQvLyBBbiBvYmplY3QgY2FuIGJlIHBhc3NlZCB0byBqUXVlcnkuZGF0YSBpbnN0ZWFkIG9mIGEga2V5L3ZhbHVlIHBhaXI7IHRoaXMgZ2V0c1xyXG5cdFx0Ly8gc2hhbGxvdyBjb3BpZWQgb3ZlciBvbnRvIHRoZSBleGlzdGluZyBjYWNoZVxyXG5cdFx0aWYgKCB0eXBlb2YgbmFtZSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgbmFtZSA9PT0gXCJmdW5jdGlvblwiICkge1xyXG5cdFx0XHRpZiAoIHB2dCApIHtcclxuXHRcdFx0XHRjYWNoZVsgaWQgXSA9IGpRdWVyeS5leHRlbmQoIGNhY2hlWyBpZCBdLCBuYW1lICk7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0Y2FjaGVbIGlkIF0uZGF0YSA9IGpRdWVyeS5leHRlbmQoIGNhY2hlWyBpZCBdLmRhdGEsIG5hbWUgKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdHRoaXNDYWNoZSA9IGNhY2hlWyBpZCBdO1xyXG5cclxuXHRcdC8vIGpRdWVyeSBkYXRhKCkgaXMgc3RvcmVkIGluIGEgc2VwYXJhdGUgb2JqZWN0IGluc2lkZSB0aGUgb2JqZWN0J3MgaW50ZXJuYWwgZGF0YVxyXG5cdFx0Ly8gY2FjaGUgaW4gb3JkZXIgdG8gYXZvaWQga2V5IGNvbGxpc2lvbnMgYmV0d2VlbiBpbnRlcm5hbCBkYXRhIGFuZCB1c2VyLWRlZmluZWRcclxuXHRcdC8vIGRhdGEuXHJcblx0XHRpZiAoICFwdnQgKSB7XHJcblx0XHRcdGlmICggIXRoaXNDYWNoZS5kYXRhICkge1xyXG5cdFx0XHRcdHRoaXNDYWNoZS5kYXRhID0ge307XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdHRoaXNDYWNoZSA9IHRoaXNDYWNoZS5kYXRhO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICggZGF0YSAhPT0gdW5kZWZpbmVkICkge1xyXG5cdFx0XHR0aGlzQ2FjaGVbIGpRdWVyeS5jYW1lbENhc2UoIG5hbWUgKSBdID0gZGF0YTtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBDaGVjayBmb3IgYm90aCBjb252ZXJ0ZWQtdG8tY2FtZWwgYW5kIG5vbi1jb252ZXJ0ZWQgZGF0YSBwcm9wZXJ0eSBuYW1lc1xyXG5cdFx0Ly8gSWYgYSBkYXRhIHByb3BlcnR5IHdhcyBzcGVjaWZpZWRcclxuXHRcdGlmICggZ2V0QnlOYW1lICkge1xyXG5cclxuXHRcdFx0Ly8gRmlyc3QgVHJ5IHRvIGZpbmQgYXMtaXMgcHJvcGVydHkgZGF0YVxyXG5cdFx0XHRyZXQgPSB0aGlzQ2FjaGVbIG5hbWUgXTtcclxuXHJcblx0XHRcdC8vIFRlc3QgZm9yIG51bGx8dW5kZWZpbmVkIHByb3BlcnR5IGRhdGFcclxuXHRcdFx0aWYgKCByZXQgPT0gbnVsbCApIHtcclxuXHJcblx0XHRcdFx0Ly8gVHJ5IHRvIGZpbmQgdGhlIGNhbWVsQ2FzZWQgcHJvcGVydHlcclxuXHRcdFx0XHRyZXQgPSB0aGlzQ2FjaGVbIGpRdWVyeS5jYW1lbENhc2UoIG5hbWUgKSBdO1xyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRyZXQgPSB0aGlzQ2FjaGU7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIHJldDtcclxuXHR9LFxyXG5cclxuXHRyZW1vdmVEYXRhOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgcHZ0IC8qIEludGVybmFsIFVzZSBPbmx5ICovICkge1xyXG5cdFx0aWYgKCAhalF1ZXJ5LmFjY2VwdERhdGEoIGVsZW0gKSApIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdHZhciB0aGlzQ2FjaGUsIGksIGwsXHJcblxyXG5cdFx0XHRpc05vZGUgPSBlbGVtLm5vZGVUeXBlLFxyXG5cclxuXHRcdFx0Ly8gU2VlIGpRdWVyeS5kYXRhIGZvciBtb3JlIGluZm9ybWF0aW9uXHJcblx0XHRcdGNhY2hlID0gaXNOb2RlID8galF1ZXJ5LmNhY2hlIDogZWxlbSxcclxuXHRcdFx0aWQgPSBpc05vZGUgPyBlbGVtWyBqUXVlcnkuZXhwYW5kbyBdIDogalF1ZXJ5LmV4cGFuZG87XHJcblxyXG5cdFx0Ly8gSWYgdGhlcmUgaXMgYWxyZWFkeSBubyBjYWNoZSBlbnRyeSBmb3IgdGhpcyBvYmplY3QsIHRoZXJlIGlzIG5vXHJcblx0XHQvLyBwdXJwb3NlIGluIGNvbnRpbnVpbmdcclxuXHRcdGlmICggIWNhY2hlWyBpZCBdICkge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKCBuYW1lICkge1xyXG5cclxuXHRcdFx0dGhpc0NhY2hlID0gcHZ0ID8gY2FjaGVbIGlkIF0gOiBjYWNoZVsgaWQgXS5kYXRhO1xyXG5cclxuXHRcdFx0aWYgKCB0aGlzQ2FjaGUgKSB7XHJcblxyXG5cdFx0XHRcdC8vIFN1cHBvcnQgYXJyYXkgb3Igc3BhY2Ugc2VwYXJhdGVkIHN0cmluZyBuYW1lcyBmb3IgZGF0YSBrZXlzXHJcblx0XHRcdFx0aWYgKCAhalF1ZXJ5LmlzQXJyYXkoIG5hbWUgKSApIHtcclxuXHJcblx0XHRcdFx0XHQvLyB0cnkgdGhlIHN0cmluZyBhcyBhIGtleSBiZWZvcmUgYW55IG1hbmlwdWxhdGlvblxyXG5cdFx0XHRcdFx0aWYgKCBuYW1lIGluIHRoaXNDYWNoZSApIHtcclxuXHRcdFx0XHRcdFx0bmFtZSA9IFsgbmFtZSBdO1xyXG5cdFx0XHRcdFx0fSBlbHNlIHtcclxuXHJcblx0XHRcdFx0XHRcdC8vIHNwbGl0IHRoZSBjYW1lbCBjYXNlZCB2ZXJzaW9uIGJ5IHNwYWNlcyB1bmxlc3MgYSBrZXkgd2l0aCB0aGUgc3BhY2VzIGV4aXN0c1xyXG5cdFx0XHRcdFx0XHRuYW1lID0galF1ZXJ5LmNhbWVsQ2FzZSggbmFtZSApO1xyXG5cdFx0XHRcdFx0XHRpZiAoIG5hbWUgaW4gdGhpc0NhY2hlICkge1xyXG5cdFx0XHRcdFx0XHRcdG5hbWUgPSBbIG5hbWUgXTtcclxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRuYW1lID0gbmFtZS5zcGxpdChcIiBcIik7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdGZvciAoIGkgPSAwLCBsID0gbmFtZS5sZW5ndGg7IGkgPCBsOyBpKysgKSB7XHJcblx0XHRcdFx0XHRkZWxldGUgdGhpc0NhY2hlWyBuYW1lW2ldIF07XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHQvLyBJZiB0aGVyZSBpcyBubyBkYXRhIGxlZnQgaW4gdGhlIGNhY2hlLCB3ZSB3YW50IHRvIGNvbnRpbnVlXHJcblx0XHRcdFx0Ly8gYW5kIGxldCB0aGUgY2FjaGUgb2JqZWN0IGl0c2VsZiBnZXQgZGVzdHJveWVkXHJcblx0XHRcdFx0aWYgKCAhKCBwdnQgPyBpc0VtcHR5RGF0YU9iamVjdCA6IGpRdWVyeS5pc0VtcHR5T2JqZWN0ICkoIHRoaXNDYWNoZSApICkge1xyXG5cdFx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdC8vIFNlZSBqUXVlcnkuZGF0YSBmb3IgbW9yZSBpbmZvcm1hdGlvblxyXG5cdFx0aWYgKCAhcHZ0ICkge1xyXG5cdFx0XHRkZWxldGUgY2FjaGVbIGlkIF0uZGF0YTtcclxuXHJcblx0XHRcdC8vIERvbid0IGRlc3Ryb3kgdGhlIHBhcmVudCBjYWNoZSB1bmxlc3MgdGhlIGludGVybmFsIGRhdGEgb2JqZWN0XHJcblx0XHRcdC8vIGhhZCBiZWVuIHRoZSBvbmx5IHRoaW5nIGxlZnQgaW4gaXRcclxuXHRcdFx0aWYgKCAhaXNFbXB0eURhdGFPYmplY3QoIGNhY2hlWyBpZCBdICkgKSB7XHJcblx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gRGVzdHJveSB0aGUgY2FjaGVcclxuXHRcdGlmICggaXNOb2RlICkge1xyXG5cdFx0XHRqUXVlcnkuY2xlYW5EYXRhKCBbIGVsZW0gXSwgdHJ1ZSApO1xyXG5cclxuXHRcdC8vIFVzZSBkZWxldGUgd2hlbiBzdXBwb3J0ZWQgZm9yIGV4cGFuZG9zIG9yIGBjYWNoZWAgaXMgbm90IGEgd2luZG93IHBlciBpc1dpbmRvdyAoIzEwMDgwKVxyXG5cdFx0fSBlbHNlIGlmICggalF1ZXJ5LnN1cHBvcnQuZGVsZXRlRXhwYW5kbyB8fCBjYWNoZSAhPSBjYWNoZS53aW5kb3cgKSB7XHJcblx0XHRcdGRlbGV0ZSBjYWNoZVsgaWQgXTtcclxuXHJcblx0XHQvLyBXaGVuIGFsbCBlbHNlIGZhaWxzLCBudWxsXHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRjYWNoZVsgaWQgXSA9IG51bGw7XHJcblx0XHR9XHJcblx0fSxcclxuXHJcblx0Ly8gRm9yIGludGVybmFsIHVzZSBvbmx5LlxyXG5cdF9kYXRhOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgZGF0YSApIHtcclxuXHRcdHJldHVybiBqUXVlcnkuZGF0YSggZWxlbSwgbmFtZSwgZGF0YSwgdHJ1ZSApO1xyXG5cdH0sXHJcblxyXG5cdC8vIEEgbWV0aG9kIGZvciBkZXRlcm1pbmluZyBpZiBhIERPTSBub2RlIGNhbiBoYW5kbGUgdGhlIGRhdGEgZXhwYW5kb1xyXG5cdGFjY2VwdERhdGE6IGZ1bmN0aW9uKCBlbGVtICkge1xyXG5cdFx0dmFyIG5vRGF0YSA9IGVsZW0ubm9kZU5hbWUgJiYgalF1ZXJ5Lm5vRGF0YVsgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpIF07XHJcblxyXG5cdFx0Ly8gbm9kZXMgYWNjZXB0IGRhdGEgdW5sZXNzIG90aGVyd2lzZSBzcGVjaWZpZWQ7IHJlamVjdGlvbiBjYW4gYmUgY29uZGl0aW9uYWxcclxuXHRcdHJldHVybiAhbm9EYXRhIHx8IG5vRGF0YSAhPT0gdHJ1ZSAmJiBlbGVtLmdldEF0dHJpYnV0ZShcImNsYXNzaWRcIikgPT09IG5vRGF0YTtcclxuXHR9XHJcbn0pO1xyXG5cclxualF1ZXJ5LmZuLmV4dGVuZCh7XHJcblx0ZGF0YTogZnVuY3Rpb24oIGtleSwgdmFsdWUgKSB7XHJcblx0XHR2YXIgcGFydHMsIHBhcnQsIGF0dHIsIG5hbWUsIGwsXHJcblx0XHRcdGVsZW0gPSB0aGlzWzBdLFxyXG5cdFx0XHRpID0gMCxcclxuXHRcdFx0ZGF0YSA9IG51bGw7XHJcblxyXG5cdFx0Ly8gR2V0cyBhbGwgdmFsdWVzXHJcblx0XHRpZiAoIGtleSA9PT0gdW5kZWZpbmVkICkge1xyXG5cdFx0XHRpZiAoIHRoaXMubGVuZ3RoICkge1xyXG5cdFx0XHRcdGRhdGEgPSBqUXVlcnkuZGF0YSggZWxlbSApO1xyXG5cclxuXHRcdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgJiYgIWpRdWVyeS5fZGF0YSggZWxlbSwgXCJwYXJzZWRBdHRyc1wiICkgKSB7XHJcblx0XHRcdFx0XHRhdHRyID0gZWxlbS5hdHRyaWJ1dGVzO1xyXG5cdFx0XHRcdFx0Zm9yICggbCA9IGF0dHIubGVuZ3RoOyBpIDwgbDsgaSsrICkge1xyXG5cdFx0XHRcdFx0XHRuYW1lID0gYXR0cltpXS5uYW1lO1xyXG5cclxuXHRcdFx0XHRcdFx0aWYgKCBuYW1lLmluZGV4T2YoIFwiZGF0YS1cIiApID09PSAwICkge1xyXG5cdFx0XHRcdFx0XHRcdG5hbWUgPSBqUXVlcnkuY2FtZWxDYXNlKCBuYW1lLnN1YnN0cmluZyg1KSApO1xyXG5cclxuXHRcdFx0XHRcdFx0XHRkYXRhQXR0ciggZWxlbSwgbmFtZSwgZGF0YVsgbmFtZSBdICk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGpRdWVyeS5fZGF0YSggZWxlbSwgXCJwYXJzZWRBdHRyc1wiLCB0cnVlICk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRyZXR1cm4gZGF0YTtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBTZXRzIG11bHRpcGxlIHZhbHVlc1xyXG5cdFx0aWYgKCB0eXBlb2Yga2V5ID09PSBcIm9iamVjdFwiICkge1xyXG5cdFx0XHRyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkge1xyXG5cdFx0XHRcdGpRdWVyeS5kYXRhKCB0aGlzLCBrZXkgKTtcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblxyXG5cdFx0cGFydHMgPSBrZXkuc3BsaXQoIFwiLlwiLCAyICk7XHJcblx0XHRwYXJ0c1sxXSA9IHBhcnRzWzFdID8gXCIuXCIgKyBwYXJ0c1sxXSA6IFwiXCI7XHJcblx0XHRwYXJ0ID0gcGFydHNbMV0gKyBcIiFcIjtcclxuXHJcblx0XHRyZXR1cm4galF1ZXJ5LmFjY2VzcyggdGhpcywgZnVuY3Rpb24oIHZhbHVlICkge1xyXG5cclxuXHRcdFx0aWYgKCB2YWx1ZSA9PT0gdW5kZWZpbmVkICkge1xyXG5cdFx0XHRcdGRhdGEgPSB0aGlzLnRyaWdnZXJIYW5kbGVyKCBcImdldERhdGFcIiArIHBhcnQsIFsgcGFydHNbMF0gXSApO1xyXG5cclxuXHRcdFx0XHQvLyBUcnkgdG8gZmV0Y2ggYW55IGludGVybmFsbHkgc3RvcmVkIGRhdGEgZmlyc3RcclxuXHRcdFx0XHRpZiAoIGRhdGEgPT09IHVuZGVmaW5lZCAmJiBlbGVtICkge1xyXG5cdFx0XHRcdFx0ZGF0YSA9IGpRdWVyeS5kYXRhKCBlbGVtLCBrZXkgKTtcclxuXHRcdFx0XHRcdGRhdGEgPSBkYXRhQXR0ciggZWxlbSwga2V5LCBkYXRhICk7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRyZXR1cm4gZGF0YSA9PT0gdW5kZWZpbmVkICYmIHBhcnRzWzFdID9cclxuXHRcdFx0XHRcdHRoaXMuZGF0YSggcGFydHNbMF0gKSA6XHJcblx0XHRcdFx0XHRkYXRhO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRwYXJ0c1sxXSA9IHZhbHVlO1xyXG5cdFx0XHR0aGlzLmVhY2goZnVuY3Rpb24oKSB7XHJcblx0XHRcdFx0dmFyIHNlbGYgPSBqUXVlcnkoIHRoaXMgKTtcclxuXHJcblx0XHRcdFx0c2VsZi50cmlnZ2VySGFuZGxlciggXCJzZXREYXRhXCIgKyBwYXJ0LCBwYXJ0cyApO1xyXG5cdFx0XHRcdGpRdWVyeS5kYXRhKCB0aGlzLCBrZXksIHZhbHVlICk7XHJcblx0XHRcdFx0c2VsZi50cmlnZ2VySGFuZGxlciggXCJjaGFuZ2VEYXRhXCIgKyBwYXJ0LCBwYXJ0cyApO1xyXG5cdFx0XHR9KTtcclxuXHRcdH0sIG51bGwsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoID4gMSwgbnVsbCwgZmFsc2UgKTtcclxuXHR9LFxyXG5cclxuXHRyZW1vdmVEYXRhOiBmdW5jdGlvbigga2V5ICkge1xyXG5cdFx0cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHtcclxuXHRcdFx0alF1ZXJ5LnJlbW92ZURhdGEoIHRoaXMsIGtleSApO1xyXG5cdFx0fSk7XHJcblx0fVxyXG59KTtcclxuXHJcbmZ1bmN0aW9uIGRhdGFBdHRyKCBlbGVtLCBrZXksIGRhdGEgKSB7XHJcblx0Ly8gSWYgbm90aGluZyB3YXMgZm91bmQgaW50ZXJuYWxseSwgdHJ5IHRvIGZldGNoIGFueVxyXG5cdC8vIGRhdGEgZnJvbSB0aGUgSFRNTDUgZGF0YS0qIGF0dHJpYnV0ZVxyXG5cdGlmICggZGF0YSA9PT0gdW5kZWZpbmVkICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7XHJcblxyXG5cdFx0dmFyIG5hbWUgPSBcImRhdGEtXCIgKyBrZXkucmVwbGFjZSggcm11bHRpRGFzaCwgXCItJDFcIiApLnRvTG93ZXJDYXNlKCk7XHJcblxyXG5cdFx0ZGF0YSA9IGVsZW0uZ2V0QXR0cmlidXRlKCBuYW1lICk7XHJcblxyXG5cdFx0aWYgKCB0eXBlb2YgZGF0YSA9PT0gXCJzdHJpbmdcIiApIHtcclxuXHRcdFx0dHJ5IHtcclxuXHRcdFx0XHRkYXRhID0gZGF0YSA9PT0gXCJ0cnVlXCIgPyB0cnVlIDpcclxuXHRcdFx0XHRkYXRhID09PSBcImZhbHNlXCIgPyBmYWxzZSA6XHJcblx0XHRcdFx0ZGF0YSA9PT0gXCJudWxsXCIgPyBudWxsIDpcclxuXHRcdFx0XHQvLyBPbmx5IGNvbnZlcnQgdG8gYSBudW1iZXIgaWYgaXQgZG9lc24ndCBjaGFuZ2UgdGhlIHN0cmluZ1xyXG5cdFx0XHRcdCtkYXRhICsgXCJcIiA9PT0gZGF0YSA/ICtkYXRhIDpcclxuXHRcdFx0XHRyYnJhY2UudGVzdCggZGF0YSApID8galF1ZXJ5LnBhcnNlSlNPTiggZGF0YSApIDpcclxuXHRcdFx0XHRcdGRhdGE7XHJcblx0XHRcdH0gY2F0Y2goIGUgKSB7fVxyXG5cclxuXHRcdFx0Ly8gTWFrZSBzdXJlIHdlIHNldCB0aGUgZGF0YSBzbyBpdCBpc24ndCBjaGFuZ2VkIGxhdGVyXHJcblx0XHRcdGpRdWVyeS5kYXRhKCBlbGVtLCBrZXksIGRhdGEgKTtcclxuXHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRkYXRhID0gdW5kZWZpbmVkO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cmV0dXJuIGRhdGE7XHJcbn1cclxuXHJcbi8vIGNoZWNrcyBhIGNhY2hlIG9iamVjdCBmb3IgZW1wdGluZXNzXHJcbmZ1bmN0aW9uIGlzRW1wdHlEYXRhT2JqZWN0KCBvYmogKSB7XHJcblx0dmFyIG5hbWU7XHJcblx0Zm9yICggbmFtZSBpbiBvYmogKSB7XHJcblxyXG5cdFx0Ly8gaWYgdGhlIHB1YmxpYyBkYXRhIG9iamVjdCBpcyBlbXB0eSwgdGhlIHByaXZhdGUgaXMgc3RpbGwgZW1wdHlcclxuXHRcdGlmICggbmFtZSA9PT0gXCJkYXRhXCIgJiYgalF1ZXJ5LmlzRW1wdHlPYmplY3QoIG9ialtuYW1lXSApICkge1xyXG5cdFx0XHRjb250aW51ZTtcclxuXHRcdH1cclxuXHRcdGlmICggbmFtZSAhPT0gXCJ0b0pTT05cIiApIHtcclxuXHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cmV0dXJuIHRydWU7XHJcbn1cclxualF1ZXJ5LmV4dGVuZCh7XHJcblx0cXVldWU6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlLCBkYXRhICkge1xyXG5cdFx0dmFyIHF1ZXVlO1xyXG5cclxuXHRcdGlmICggZWxlbSApIHtcclxuXHRcdFx0dHlwZSA9ICggdHlwZSB8fCBcImZ4XCIgKSArIFwicXVldWVcIjtcclxuXHRcdFx0cXVldWUgPSBqUXVlcnkuX2RhdGEoIGVsZW0sIHR5cGUgKTtcclxuXHJcblx0XHRcdC8vIFNwZWVkIHVwIGRlcXVldWUgYnkgZ2V0dGluZyBvdXQgcXVpY2tseSBpZiB0aGlzIGlzIGp1c3QgYSBsb29rdXBcclxuXHRcdFx0aWYgKCBkYXRhICkge1xyXG5cdFx0XHRcdGlmICggIXF1ZXVlIHx8IGpRdWVyeS5pc0FycmF5KGRhdGEpICkge1xyXG5cdFx0XHRcdFx0cXVldWUgPSBqUXVlcnkuX2RhdGEoIGVsZW0sIHR5cGUsIGpRdWVyeS5tYWtlQXJyYXkoZGF0YSkgKTtcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0cXVldWUucHVzaCggZGF0YSApO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0XHRyZXR1cm4gcXVldWUgfHwgW107XHJcblx0XHR9XHJcblx0fSxcclxuXHJcblx0ZGVxdWV1ZTogZnVuY3Rpb24oIGVsZW0sIHR5cGUgKSB7XHJcblx0XHR0eXBlID0gdHlwZSB8fCBcImZ4XCI7XHJcblxyXG5cdFx0dmFyIHF1ZXVlID0galF1ZXJ5LnF1ZXVlKCBlbGVtLCB0eXBlICksXHJcblx0XHRcdHN0YXJ0TGVuZ3RoID0gcXVldWUubGVuZ3RoLFxyXG5cdFx0XHRmbiA9IHF1ZXVlLnNoaWZ0KCksXHJcblx0XHRcdGhvb2tzID0galF1ZXJ5Ll9xdWV1ZUhvb2tzKCBlbGVtLCB0eXBlICksXHJcblx0XHRcdG5leHQgPSBmdW5jdGlvbigpIHtcclxuXHRcdFx0XHRqUXVlcnkuZGVxdWV1ZSggZWxlbSwgdHlwZSApO1xyXG5cdFx0XHR9O1xyXG5cclxuXHRcdC8vIElmIHRoZSBmeCBxdWV1ZSBpcyBkZXF1ZXVlZCwgYWx3YXlzIHJlbW92ZSB0aGUgcHJvZ3Jlc3Mgc2VudGluZWxcclxuXHRcdGlmICggZm4gPT09IFwiaW5wcm9ncmVzc1wiICkge1xyXG5cdFx0XHRmbiA9IHF1ZXVlLnNoaWZ0KCk7XHJcblx0XHRcdHN0YXJ0TGVuZ3RoLS07XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKCBmbiApIHtcclxuXHJcblx0XHRcdC8vIEFkZCBhIHByb2dyZXNzIHNlbnRpbmVsIHRvIHByZXZlbnQgdGhlIGZ4IHF1ZXVlIGZyb20gYmVpbmdcclxuXHRcdFx0Ly8gYXV0b21hdGljYWxseSBkZXF1ZXVlZFxyXG5cdFx0XHRpZiAoIHR5cGUgPT09IFwiZnhcIiApIHtcclxuXHRcdFx0XHRxdWV1ZS51bnNoaWZ0KCBcImlucHJvZ3Jlc3NcIiApO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvLyBjbGVhciB1cCB0aGUgbGFzdCBxdWV1ZSBzdG9wIGZ1bmN0aW9uXHJcblx0XHRcdGRlbGV0ZSBob29rcy5zdG9wO1xyXG5cdFx0XHRmbi5jYWxsKCBlbGVtLCBuZXh0LCBob29rcyApO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICggIXN0YXJ0TGVuZ3RoICYmIGhvb2tzICkge1xyXG5cdFx0XHRob29rcy5lbXB0eS5maXJlKCk7XHJcblx0XHR9XHJcblx0fSxcclxuXHJcblx0Ly8gbm90IGludGVuZGVkIGZvciBwdWJsaWMgY29uc3VtcHRpb24gLSBnZW5lcmF0ZXMgYSBxdWV1ZUhvb2tzIG9iamVjdCwgb3IgcmV0dXJucyB0aGUgY3VycmVudCBvbmVcclxuXHRfcXVldWVIb29rczogZnVuY3Rpb24oIGVsZW0sIHR5cGUgKSB7XHJcblx0XHR2YXIga2V5ID0gdHlwZSArIFwicXVldWVIb29rc1wiO1xyXG5cdFx0cmV0dXJuIGpRdWVyeS5fZGF0YSggZWxlbSwga2V5ICkgfHwgalF1ZXJ5Ll9kYXRhKCBlbGVtLCBrZXksIHtcclxuXHRcdFx0ZW1wdHk6IGpRdWVyeS5DYWxsYmFja3MoXCJvbmNlIG1lbW9yeVwiKS5hZGQoZnVuY3Rpb24oKSB7XHJcblx0XHRcdFx0alF1ZXJ5LnJlbW92ZURhdGEoIGVsZW0sIHR5cGUgKyBcInF1ZXVlXCIsIHRydWUgKTtcclxuXHRcdFx0XHRqUXVlcnkucmVtb3ZlRGF0YSggZWxlbSwga2V5LCB0cnVlICk7XHJcblx0XHRcdH0pXHJcblx0XHR9KTtcclxuXHR9XHJcbn0pO1xyXG5cclxualF1ZXJ5LmZuLmV4dGVuZCh7XHJcblx0cXVldWU6IGZ1bmN0aW9uKCB0eXBlLCBkYXRhICkge1xyXG5cdFx0dmFyIHNldHRlciA9IDI7XHJcblxyXG5cdFx0aWYgKCB0eXBlb2YgdHlwZSAhPT0gXCJzdHJpbmdcIiApIHtcclxuXHRcdFx0ZGF0YSA9IHR5cGU7XHJcblx0XHRcdHR5cGUgPSBcImZ4XCI7XHJcblx0XHRcdHNldHRlci0tO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICggYXJndW1lbnRzLmxlbmd0aCA8IHNldHRlciApIHtcclxuXHRcdFx0cmV0dXJuIGpRdWVyeS5xdWV1ZSggdGhpc1swXSwgdHlwZSApO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiBkYXRhID09PSB1bmRlZmluZWQgP1xyXG5cdFx0XHR0aGlzIDpcclxuXHRcdFx0dGhpcy5lYWNoKGZ1bmN0aW9uKCkge1xyXG5cdFx0XHRcdHZhciBxdWV1ZSA9IGpRdWVyeS5xdWV1ZSggdGhpcywgdHlwZSwgZGF0YSApO1xyXG5cclxuXHRcdFx0XHQvLyBlbnN1cmUgYSBob29rcyBmb3IgdGhpcyBxdWV1ZVxyXG5cdFx0XHRcdGpRdWVyeS5fcXVldWVIb29rcyggdGhpcywgdHlwZSApO1xyXG5cclxuXHRcdFx0XHRpZiAoIHR5cGUgPT09IFwiZnhcIiAmJiBxdWV1ZVswXSAhPT0gXCJpbnByb2dyZXNzXCIgKSB7XHJcblx0XHRcdFx0XHRqUXVlcnkuZGVxdWV1ZSggdGhpcywgdHlwZSApO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0fSxcclxuXHRkZXF1ZXVlOiBmdW5jdGlvbiggdHlwZSApIHtcclxuXHRcdHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7XHJcblx0XHRcdGpRdWVyeS5kZXF1ZXVlKCB0aGlzLCB0eXBlICk7XHJcblx0XHR9KTtcclxuXHR9LFxyXG5cdC8vIEJhc2VkIG9mZiBvZiB0aGUgcGx1Z2luIGJ5IENsaW50IEhlbGZlcnMsIHdpdGggcGVybWlzc2lvbi5cclxuXHQvLyBodHRwOi8vYmxpbmRzaWduYWxzLmNvbS9pbmRleC5waHAvMjAwOS8wNy9qcXVlcnktZGVsYXkvXHJcblx0ZGVsYXk6IGZ1bmN0aW9uKCB0aW1lLCB0eXBlICkge1xyXG5cdFx0dGltZSA9IGpRdWVyeS5meCA/IGpRdWVyeS5meC5zcGVlZHNbIHRpbWUgXSB8fCB0aW1lIDogdGltZTtcclxuXHRcdHR5cGUgPSB0eXBlIHx8IFwiZnhcIjtcclxuXHJcblx0XHRyZXR1cm4gdGhpcy5xdWV1ZSggdHlwZSwgZnVuY3Rpb24oIG5leHQsIGhvb2tzICkge1xyXG5cdFx0XHR2YXIgdGltZW91dCA9IHNldFRpbWVvdXQoIG5leHQsIHRpbWUgKTtcclxuXHRcdFx0aG9va3Muc3RvcCA9IGZ1bmN0aW9uKCkge1xyXG5cdFx0XHRcdGNsZWFyVGltZW91dCggdGltZW91dCApO1xyXG5cdFx0XHR9O1xyXG5cdFx0fSk7XHJcblx0fSxcclxuXHRjbGVhclF1ZXVlOiBmdW5jdGlvbiggdHlwZSApIHtcclxuXHRcdHJldHVybiB0aGlzLnF1ZXVlKCB0eXBlIHx8IFwiZnhcIiwgW10gKTtcclxuXHR9LFxyXG5cdC8vIEdldCBhIHByb21pc2UgcmVzb2x2ZWQgd2hlbiBxdWV1ZXMgb2YgYSBjZXJ0YWluIHR5cGVcclxuXHQvLyBhcmUgZW1wdGllZCAoZnggaXMgdGhlIHR5cGUgYnkgZGVmYXVsdClcclxuXHRwcm9taXNlOiBmdW5jdGlvbiggdHlwZSwgb2JqICkge1xyXG5cdFx0dmFyIHRtcCxcclxuXHRcdFx0Y291bnQgPSAxLFxyXG5cdFx0XHRkZWZlciA9IGpRdWVyeS5EZWZlcnJlZCgpLFxyXG5cdFx0XHRlbGVtZW50cyA9IHRoaXMsXHJcblx0XHRcdGkgPSB0aGlzLmxlbmd0aCxcclxuXHRcdFx0cmVzb2x2ZSA9IGZ1bmN0aW9uKCkge1xyXG5cdFx0XHRcdGlmICggISggLS1jb3VudCApICkge1xyXG5cdFx0XHRcdFx0ZGVmZXIucmVzb2x2ZVdpdGgoIGVsZW1lbnRzLCBbIGVsZW1lbnRzIF0gKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH07XHJcblxyXG5cdFx0aWYgKCB0eXBlb2YgdHlwZSAhPT0gXCJzdHJpbmdcIiApIHtcclxuXHRcdFx0b2JqID0gdHlwZTtcclxuXHRcdFx0dHlwZSA9IHVuZGVmaW5lZDtcclxuXHRcdH1cclxuXHRcdHR5cGUgPSB0eXBlIHx8IFwiZnhcIjtcclxuXHJcblx0XHR3aGlsZSggaS0tICkge1xyXG5cdFx0XHR0bXAgPSBqUXVlcnkuX2RhdGEoIGVsZW1lbnRzWyBpIF0sIHR5cGUgKyBcInF1ZXVlSG9va3NcIiApO1xyXG5cdFx0XHRpZiAoIHRtcCAmJiB0bXAuZW1wdHkgKSB7XHJcblx0XHRcdFx0Y291bnQrKztcclxuXHRcdFx0XHR0bXAuZW1wdHkuYWRkKCByZXNvbHZlICk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJlc29sdmUoKTtcclxuXHRcdHJldHVybiBkZWZlci5wcm9taXNlKCBvYmogKTtcclxuXHR9XHJcbn0pO1xyXG52YXIgbm9kZUhvb2ssIGJvb2xIb29rLCBmaXhTcGVjaWZpZWQsXHJcblx0cmNsYXNzID0gL1tcXHRcXHJcXG5dL2csXHJcblx0cnJldHVybiA9IC9cXHIvZyxcclxuXHRydHlwZSA9IC9eKD86YnV0dG9ufGlucHV0KSQvaSxcclxuXHRyZm9jdXNhYmxlID0gL14oPzpidXR0b258aW5wdXR8b2JqZWN0fHNlbGVjdHx0ZXh0YXJlYSkkL2ksXHJcblx0cmNsaWNrYWJsZSA9IC9eYSg/OnJlYXwpJC9pLFxyXG5cdHJib29sZWFuID0gL14oPzphdXRvZm9jdXN8YXV0b3BsYXl8YXN5bmN8Y2hlY2tlZHxjb250cm9sc3xkZWZlcnxkaXNhYmxlZHxoaWRkZW58bG9vcHxtdWx0aXBsZXxvcGVufHJlYWRvbmx5fHJlcXVpcmVkfHNjb3BlZHxzZWxlY3RlZCkkL2ksXHJcblx0Z2V0U2V0QXR0cmlidXRlID0galF1ZXJ5LnN1cHBvcnQuZ2V0U2V0QXR0cmlidXRlO1xyXG5cclxualF1ZXJ5LmZuLmV4dGVuZCh7XHJcblx0YXR0cjogZnVuY3Rpb24oIG5hbWUsIHZhbHVlICkge1xyXG5cdFx0cmV0dXJuIGpRdWVyeS5hY2Nlc3MoIHRoaXMsIGpRdWVyeS5hdHRyLCBuYW1lLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEgKTtcclxuXHR9LFxyXG5cclxuXHRyZW1vdmVBdHRyOiBmdW5jdGlvbiggbmFtZSApIHtcclxuXHRcdHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7XHJcblx0XHRcdGpRdWVyeS5yZW1vdmVBdHRyKCB0aGlzLCBuYW1lICk7XHJcblx0XHR9KTtcclxuXHR9LFxyXG5cclxuXHRwcm9wOiBmdW5jdGlvbiggbmFtZSwgdmFsdWUgKSB7XHJcblx0XHRyZXR1cm4galF1ZXJ5LmFjY2VzcyggdGhpcywgalF1ZXJ5LnByb3AsIG5hbWUsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoID4gMSApO1xyXG5cdH0sXHJcblxyXG5cdHJlbW92ZVByb3A6IGZ1bmN0aW9uKCBuYW1lICkge1xyXG5cdFx0bmFtZSA9IGpRdWVyeS5wcm9wRml4WyBuYW1lIF0gfHwgbmFtZTtcclxuXHRcdHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7XHJcblx0XHRcdC8vIHRyeS9jYXRjaCBoYW5kbGVzIGNhc2VzIHdoZXJlIElFIGJhbGtzIChzdWNoIGFzIHJlbW92aW5nIGEgcHJvcGVydHkgb24gd2luZG93KVxyXG5cdFx0XHR0cnkge1xyXG5cdFx0XHRcdHRoaXNbIG5hbWUgXSA9IHVuZGVmaW5lZDtcclxuXHRcdFx0XHRkZWxldGUgdGhpc1sgbmFtZSBdO1xyXG5cdFx0XHR9IGNhdGNoKCBlICkge31cclxuXHRcdH0pO1xyXG5cdH0sXHJcblxyXG5cdGFkZENsYXNzOiBmdW5jdGlvbiggdmFsdWUgKSB7XHJcblx0XHR2YXIgY2xhc3NOYW1lcywgaSwgbCwgZWxlbSxcclxuXHRcdFx0c2V0Q2xhc3MsIGMsIGNsO1xyXG5cclxuXHRcdGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHZhbHVlICkgKSB7XHJcblx0XHRcdHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oIGogKSB7XHJcblx0XHRcdFx0alF1ZXJ5KCB0aGlzICkuYWRkQ2xhc3MoIHZhbHVlLmNhbGwodGhpcywgaiwgdGhpcy5jbGFzc05hbWUpICk7XHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICggdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICkge1xyXG5cdFx0XHRjbGFzc05hbWVzID0gdmFsdWUuc3BsaXQoIGNvcmVfcnNwYWNlICk7XHJcblxyXG5cdFx0XHRmb3IgKCBpID0gMCwgbCA9IHRoaXMubGVuZ3RoOyBpIDwgbDsgaSsrICkge1xyXG5cdFx0XHRcdGVsZW0gPSB0aGlzWyBpIF07XHJcblxyXG5cdFx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcclxuXHRcdFx0XHRcdGlmICggIWVsZW0uY2xhc3NOYW1lICYmIGNsYXNzTmFtZXMubGVuZ3RoID09PSAxICkge1xyXG5cdFx0XHRcdFx0XHRlbGVtLmNsYXNzTmFtZSA9IHZhbHVlO1xyXG5cclxuXHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdHNldENsYXNzID0gXCIgXCIgKyBlbGVtLmNsYXNzTmFtZSArIFwiIFwiO1xyXG5cclxuXHRcdFx0XHRcdFx0Zm9yICggYyA9IDAsIGNsID0gY2xhc3NOYW1lcy5sZW5ndGg7IGMgPCBjbDsgYysrICkge1xyXG5cdFx0XHRcdFx0XHRcdGlmICggIX5zZXRDbGFzcy5pbmRleE9mKCBcIiBcIiArIGNsYXNzTmFtZXNbIGMgXSArIFwiIFwiICkgKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRzZXRDbGFzcyArPSBjbGFzc05hbWVzWyBjIF0gKyBcIiBcIjtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0ZWxlbS5jbGFzc05hbWUgPSBqUXVlcnkudHJpbSggc2V0Q2xhc3MgKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gdGhpcztcclxuXHR9LFxyXG5cclxuXHRyZW1vdmVDbGFzczogZnVuY3Rpb24oIHZhbHVlICkge1xyXG5cdFx0dmFyIHJlbW92ZXMsIGNsYXNzTmFtZSwgZWxlbSwgYywgY2wsIGksIGw7XHJcblxyXG5cdFx0aWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggdmFsdWUgKSApIHtcclxuXHRcdFx0cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiggaiApIHtcclxuXHRcdFx0XHRqUXVlcnkoIHRoaXMgKS5yZW1vdmVDbGFzcyggdmFsdWUuY2FsbCh0aGlzLCBqLCB0aGlzLmNsYXNzTmFtZSkgKTtcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0XHRpZiAoICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHx8IHZhbHVlID09PSB1bmRlZmluZWQgKSB7XHJcblx0XHRcdHJlbW92ZXMgPSAoIHZhbHVlIHx8IFwiXCIgKS5zcGxpdCggY29yZV9yc3BhY2UgKTtcclxuXHJcblx0XHRcdGZvciAoIGkgPSAwLCBsID0gdGhpcy5sZW5ndGg7IGkgPCBsOyBpKysgKSB7XHJcblx0XHRcdFx0ZWxlbSA9IHRoaXNbIGkgXTtcclxuXHRcdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgJiYgZWxlbS5jbGFzc05hbWUgKSB7XHJcblxyXG5cdFx0XHRcdFx0Y2xhc3NOYW1lID0gKFwiIFwiICsgZWxlbS5jbGFzc05hbWUgKyBcIiBcIikucmVwbGFjZSggcmNsYXNzLCBcIiBcIiApO1xyXG5cclxuXHRcdFx0XHRcdC8vIGxvb3Agb3ZlciBlYWNoIGl0ZW0gaW4gdGhlIHJlbW92YWwgbGlzdFxyXG5cdFx0XHRcdFx0Zm9yICggYyA9IDAsIGNsID0gcmVtb3Zlcy5sZW5ndGg7IGMgPCBjbDsgYysrICkge1xyXG5cdFx0XHRcdFx0XHQvLyBSZW1vdmUgdW50aWwgdGhlcmUgaXMgbm90aGluZyB0byByZW1vdmUsXHJcblx0XHRcdFx0XHRcdHdoaWxlICggY2xhc3NOYW1lLmluZGV4T2YoXCIgXCIgKyByZW1vdmVzWyBjIF0gKyBcIiBcIikgPiAtMSApIHtcclxuXHRcdFx0XHRcdFx0XHRjbGFzc05hbWUgPSBjbGFzc05hbWUucmVwbGFjZSggXCIgXCIgKyByZW1vdmVzWyBjIF0gKyBcIiBcIiAsIFwiIFwiICk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGVsZW0uY2xhc3NOYW1lID0gdmFsdWUgPyBqUXVlcnkudHJpbSggY2xhc3NOYW1lICkgOiBcIlwiO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiB0aGlzO1xyXG5cdH0sXHJcblxyXG5cdHRvZ2dsZUNsYXNzOiBmdW5jdGlvbiggdmFsdWUsIHN0YXRlVmFsICkge1xyXG5cdFx0dmFyIHR5cGUgPSB0eXBlb2YgdmFsdWUsXHJcblx0XHRcdGlzQm9vbCA9IHR5cGVvZiBzdGF0ZVZhbCA9PT0gXCJib29sZWFuXCI7XHJcblxyXG5cdFx0aWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggdmFsdWUgKSApIHtcclxuXHRcdFx0cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiggaSApIHtcclxuXHRcdFx0XHRqUXVlcnkoIHRoaXMgKS50b2dnbGVDbGFzcyggdmFsdWUuY2FsbCh0aGlzLCBpLCB0aGlzLmNsYXNzTmFtZSwgc3RhdGVWYWwpLCBzdGF0ZVZhbCApO1xyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkge1xyXG5cdFx0XHRpZiAoIHR5cGUgPT09IFwic3RyaW5nXCIgKSB7XHJcblx0XHRcdFx0Ly8gdG9nZ2xlIGluZGl2aWR1YWwgY2xhc3MgbmFtZXNcclxuXHRcdFx0XHR2YXIgY2xhc3NOYW1lLFxyXG5cdFx0XHRcdFx0aSA9IDAsXHJcblx0XHRcdFx0XHRzZWxmID0galF1ZXJ5KCB0aGlzICksXHJcblx0XHRcdFx0XHRzdGF0ZSA9IHN0YXRlVmFsLFxyXG5cdFx0XHRcdFx0Y2xhc3NOYW1lcyA9IHZhbHVlLnNwbGl0KCBjb3JlX3JzcGFjZSApO1xyXG5cclxuXHRcdFx0XHR3aGlsZSAoIChjbGFzc05hbWUgPSBjbGFzc05hbWVzWyBpKysgXSkgKSB7XHJcblx0XHRcdFx0XHQvLyBjaGVjayBlYWNoIGNsYXNzTmFtZSBnaXZlbiwgc3BhY2Ugc2VwYXJhdGVkIGxpc3RcclxuXHRcdFx0XHRcdHN0YXRlID0gaXNCb29sID8gc3RhdGUgOiAhc2VsZi5oYXNDbGFzcyggY2xhc3NOYW1lICk7XHJcblx0XHRcdFx0XHRzZWxmWyBzdGF0ZSA/IFwiYWRkQ2xhc3NcIiA6IFwicmVtb3ZlQ2xhc3NcIiBdKCBjbGFzc05hbWUgKTtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHR9IGVsc2UgaWYgKCB0eXBlID09PSBcInVuZGVmaW5lZFwiIHx8IHR5cGUgPT09IFwiYm9vbGVhblwiICkge1xyXG5cdFx0XHRcdGlmICggdGhpcy5jbGFzc05hbWUgKSB7XHJcblx0XHRcdFx0XHQvLyBzdG9yZSBjbGFzc05hbWUgaWYgc2V0XHJcblx0XHRcdFx0XHRqUXVlcnkuX2RhdGEoIHRoaXMsIFwiX19jbGFzc05hbWVfX1wiLCB0aGlzLmNsYXNzTmFtZSApO1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0Ly8gdG9nZ2xlIHdob2xlIGNsYXNzTmFtZVxyXG5cdFx0XHRcdHRoaXMuY2xhc3NOYW1lID0gdGhpcy5jbGFzc05hbWUgfHwgdmFsdWUgPT09IGZhbHNlID8gXCJcIiA6IGpRdWVyeS5fZGF0YSggdGhpcywgXCJfX2NsYXNzTmFtZV9fXCIgKSB8fCBcIlwiO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9LFxyXG5cclxuXHRoYXNDbGFzczogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xyXG5cdFx0dmFyIGNsYXNzTmFtZSA9IFwiIFwiICsgc2VsZWN0b3IgKyBcIiBcIixcclxuXHRcdFx0aSA9IDAsXHJcblx0XHRcdGwgPSB0aGlzLmxlbmd0aDtcclxuXHRcdGZvciAoIDsgaSA8IGw7IGkrKyApIHtcclxuXHRcdFx0aWYgKCB0aGlzW2ldLm5vZGVUeXBlID09PSAxICYmIChcIiBcIiArIHRoaXNbaV0uY2xhc3NOYW1lICsgXCIgXCIpLnJlcGxhY2UocmNsYXNzLCBcIiBcIikuaW5kZXhPZiggY2xhc3NOYW1lICkgPiAtMSApIHtcclxuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiBmYWxzZTtcclxuXHR9LFxyXG5cclxuXHR2YWw6IGZ1bmN0aW9uKCB2YWx1ZSApIHtcclxuXHRcdHZhciBob29rcywgcmV0LCBpc0Z1bmN0aW9uLFxyXG5cdFx0XHRlbGVtID0gdGhpc1swXTtcclxuXHJcblx0XHRpZiAoICFhcmd1bWVudHMubGVuZ3RoICkge1xyXG5cdFx0XHRpZiAoIGVsZW0gKSB7XHJcblx0XHRcdFx0aG9va3MgPSBqUXVlcnkudmFsSG9va3NbIGVsZW0udHlwZSBdIHx8IGpRdWVyeS52YWxIb29rc1sgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpIF07XHJcblxyXG5cdFx0XHRcdGlmICggaG9va3MgJiYgXCJnZXRcIiBpbiBob29rcyAmJiAocmV0ID0gaG9va3MuZ2V0KCBlbGVtLCBcInZhbHVlXCIgKSkgIT09IHVuZGVmaW5lZCApIHtcclxuXHRcdFx0XHRcdHJldHVybiByZXQ7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRyZXQgPSBlbGVtLnZhbHVlO1xyXG5cclxuXHRcdFx0XHRyZXR1cm4gdHlwZW9mIHJldCA9PT0gXCJzdHJpbmdcIiA/XHJcblx0XHRcdFx0XHQvLyBoYW5kbGUgbW9zdCBjb21tb24gc3RyaW5nIGNhc2VzXHJcblx0XHRcdFx0XHRyZXQucmVwbGFjZShycmV0dXJuLCBcIlwiKSA6XHJcblx0XHRcdFx0XHQvLyBoYW5kbGUgY2FzZXMgd2hlcmUgdmFsdWUgaXMgbnVsbC91bmRlZiBvciBudW1iZXJcclxuXHRcdFx0XHRcdHJldCA9PSBudWxsID8gXCJcIiA6IHJldDtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlzRnVuY3Rpb24gPSBqUXVlcnkuaXNGdW5jdGlvbiggdmFsdWUgKTtcclxuXHJcblx0XHRyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCBpICkge1xyXG5cdFx0XHR2YXIgdmFsLFxyXG5cdFx0XHRcdHNlbGYgPSBqUXVlcnkodGhpcyk7XHJcblxyXG5cdFx0XHRpZiAoIHRoaXMubm9kZVR5cGUgIT09IDEgKSB7XHJcblx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRpZiAoIGlzRnVuY3Rpb24gKSB7XHJcblx0XHRcdFx0dmFsID0gdmFsdWUuY2FsbCggdGhpcywgaSwgc2VsZi52YWwoKSApO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHZhbCA9IHZhbHVlO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvLyBUcmVhdCBudWxsL3VuZGVmaW5lZCBhcyBcIlwiOyBjb252ZXJ0IG51bWJlcnMgdG8gc3RyaW5nXHJcblx0XHRcdGlmICggdmFsID09IG51bGwgKSB7XHJcblx0XHRcdFx0dmFsID0gXCJcIjtcclxuXHRcdFx0fSBlbHNlIGlmICggdHlwZW9mIHZhbCA9PT0gXCJudW1iZXJcIiApIHtcclxuXHRcdFx0XHR2YWwgKz0gXCJcIjtcclxuXHRcdFx0fSBlbHNlIGlmICggalF1ZXJ5LmlzQXJyYXkoIHZhbCApICkge1xyXG5cdFx0XHRcdHZhbCA9IGpRdWVyeS5tYXAodmFsLCBmdW5jdGlvbiAoIHZhbHVlICkge1xyXG5cdFx0XHRcdFx0cmV0dXJuIHZhbHVlID09IG51bGwgPyBcIlwiIDogdmFsdWUgKyBcIlwiO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRob29rcyA9IGpRdWVyeS52YWxIb29rc1sgdGhpcy50eXBlIF0gfHwgalF1ZXJ5LnZhbEhvb2tzWyB0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgXTtcclxuXHJcblx0XHRcdC8vIElmIHNldCByZXR1cm5zIHVuZGVmaW5lZCwgZmFsbCBiYWNrIHRvIG5vcm1hbCBzZXR0aW5nXHJcblx0XHRcdGlmICggIWhvb2tzIHx8ICEoXCJzZXRcIiBpbiBob29rcykgfHwgaG9va3Muc2V0KCB0aGlzLCB2YWwsIFwidmFsdWVcIiApID09PSB1bmRlZmluZWQgKSB7XHJcblx0XHRcdFx0dGhpcy52YWx1ZSA9IHZhbDtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG59KTtcclxuXHJcbmpRdWVyeS5leHRlbmQoe1xyXG5cdHZhbEhvb2tzOiB7XHJcblx0XHRvcHRpb246IHtcclxuXHRcdFx0Z2V0OiBmdW5jdGlvbiggZWxlbSApIHtcclxuXHRcdFx0XHQvLyBhdHRyaWJ1dGVzLnZhbHVlIGlzIHVuZGVmaW5lZCBpbiBCbGFja2JlcnJ5IDQuNyBidXRcclxuXHRcdFx0XHQvLyB1c2VzIC52YWx1ZS4gU2VlICM2OTMyXHJcblx0XHRcdFx0dmFyIHZhbCA9IGVsZW0uYXR0cmlidXRlcy52YWx1ZTtcclxuXHRcdFx0XHRyZXR1cm4gIXZhbCB8fCB2YWwuc3BlY2lmaWVkID8gZWxlbS52YWx1ZSA6IGVsZW0udGV4dDtcclxuXHRcdFx0fVxyXG5cdFx0fSxcclxuXHRcdHNlbGVjdDoge1xyXG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKCBlbGVtICkge1xyXG5cdFx0XHRcdHZhciB2YWx1ZSwgaSwgbWF4LCBvcHRpb24sXHJcblx0XHRcdFx0XHRpbmRleCA9IGVsZW0uc2VsZWN0ZWRJbmRleCxcclxuXHRcdFx0XHRcdHZhbHVlcyA9IFtdLFxyXG5cdFx0XHRcdFx0b3B0aW9ucyA9IGVsZW0ub3B0aW9ucyxcclxuXHRcdFx0XHRcdG9uZSA9IGVsZW0udHlwZSA9PT0gXCJzZWxlY3Qtb25lXCI7XHJcblxyXG5cdFx0XHRcdC8vIE5vdGhpbmcgd2FzIHNlbGVjdGVkXHJcblx0XHRcdFx0aWYgKCBpbmRleCA8IDAgKSB7XHJcblx0XHRcdFx0XHRyZXR1cm4gbnVsbDtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdC8vIExvb3AgdGhyb3VnaCBhbGwgdGhlIHNlbGVjdGVkIG9wdGlvbnNcclxuXHRcdFx0XHRpID0gb25lID8gaW5kZXggOiAwO1xyXG5cdFx0XHRcdG1heCA9IG9uZSA/IGluZGV4ICsgMSA6IG9wdGlvbnMubGVuZ3RoO1xyXG5cdFx0XHRcdGZvciAoIDsgaSA8IG1heDsgaSsrICkge1xyXG5cdFx0XHRcdFx0b3B0aW9uID0gb3B0aW9uc1sgaSBdO1xyXG5cclxuXHRcdFx0XHRcdC8vIERvbid0IHJldHVybiBvcHRpb25zIHRoYXQgYXJlIGRpc2FibGVkIG9yIGluIGEgZGlzYWJsZWQgb3B0Z3JvdXBcclxuXHRcdFx0XHRcdGlmICggb3B0aW9uLnNlbGVjdGVkICYmIChqUXVlcnkuc3VwcG9ydC5vcHREaXNhYmxlZCA/ICFvcHRpb24uZGlzYWJsZWQgOiBvcHRpb24uZ2V0QXR0cmlidXRlKFwiZGlzYWJsZWRcIikgPT09IG51bGwpICYmXHJcblx0XHRcdFx0XHRcdFx0KCFvcHRpb24ucGFyZW50Tm9kZS5kaXNhYmxlZCB8fCAhalF1ZXJ5Lm5vZGVOYW1lKCBvcHRpb24ucGFyZW50Tm9kZSwgXCJvcHRncm91cFwiICkpICkge1xyXG5cclxuXHRcdFx0XHRcdFx0Ly8gR2V0IHRoZSBzcGVjaWZpYyB2YWx1ZSBmb3IgdGhlIG9wdGlvblxyXG5cdFx0XHRcdFx0XHR2YWx1ZSA9IGpRdWVyeSggb3B0aW9uICkudmFsKCk7XHJcblxyXG5cdFx0XHRcdFx0XHQvLyBXZSBkb24ndCBuZWVkIGFuIGFycmF5IGZvciBvbmUgc2VsZWN0c1xyXG5cdFx0XHRcdFx0XHRpZiAoIG9uZSApIHtcclxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdmFsdWU7XHJcblx0XHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRcdC8vIE11bHRpLVNlbGVjdHMgcmV0dXJuIGFuIGFycmF5XHJcblx0XHRcdFx0XHRcdHZhbHVlcy5wdXNoKCB2YWx1ZSApO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0Ly8gRml4ZXMgQnVnICMyNTUxIC0tIHNlbGVjdC52YWwoKSBicm9rZW4gaW4gSUUgYWZ0ZXIgZm9ybS5yZXNldCgpXHJcblx0XHRcdFx0aWYgKCBvbmUgJiYgIXZhbHVlcy5sZW5ndGggJiYgb3B0aW9ucy5sZW5ndGggKSB7XHJcblx0XHRcdFx0XHRyZXR1cm4galF1ZXJ5KCBvcHRpb25zWyBpbmRleCBdICkudmFsKCk7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRyZXR1cm4gdmFsdWVzO1xyXG5cdFx0XHR9LFxyXG5cclxuXHRcdFx0c2V0OiBmdW5jdGlvbiggZWxlbSwgdmFsdWUgKSB7XHJcblx0XHRcdFx0dmFyIHZhbHVlcyA9IGpRdWVyeS5tYWtlQXJyYXkoIHZhbHVlICk7XHJcblxyXG5cdFx0XHRcdGpRdWVyeShlbGVtKS5maW5kKFwib3B0aW9uXCIpLmVhY2goZnVuY3Rpb24oKSB7XHJcblx0XHRcdFx0XHR0aGlzLnNlbGVjdGVkID0galF1ZXJ5LmluQXJyYXkoIGpRdWVyeSh0aGlzKS52YWwoKSwgdmFsdWVzICkgPj0gMDtcclxuXHRcdFx0XHR9KTtcclxuXHJcblx0XHRcdFx0aWYgKCAhdmFsdWVzLmxlbmd0aCApIHtcclxuXHRcdFx0XHRcdGVsZW0uc2VsZWN0ZWRJbmRleCA9IC0xO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRyZXR1cm4gdmFsdWVzO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fSxcclxuXHJcblx0Ly8gVW51c2VkIGluIDEuOCwgbGVmdCBpbiBzbyBhdHRyRm4tc3RhYmJlcnMgd29uJ3QgZGllOyByZW1vdmUgaW4gMS45XHJcblx0YXR0ckZuOiB7fSxcclxuXHJcblx0YXR0cjogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIHZhbHVlLCBwYXNzICkge1xyXG5cdFx0dmFyIHJldCwgaG9va3MsIG5vdHhtbCxcclxuXHRcdFx0blR5cGUgPSBlbGVtLm5vZGVUeXBlO1xyXG5cclxuXHRcdC8vIGRvbid0IGdldC9zZXQgYXR0cmlidXRlcyBvbiB0ZXh0LCBjb21tZW50IGFuZCBhdHRyaWJ1dGUgbm9kZXNcclxuXHRcdGlmICggIWVsZW0gfHwgblR5cGUgPT09IDMgfHwgblR5cGUgPT09IDggfHwgblR5cGUgPT09IDIgKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAoIHBhc3MgJiYgalF1ZXJ5LmlzRnVuY3Rpb24oIGpRdWVyeS5mblsgbmFtZSBdICkgKSB7XHJcblx0XHRcdHJldHVybiBqUXVlcnkoIGVsZW0gKVsgbmFtZSBdKCB2YWx1ZSApO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIEZhbGxiYWNrIHRvIHByb3Agd2hlbiBhdHRyaWJ1dGVzIGFyZSBub3Qgc3VwcG9ydGVkXHJcblx0XHRpZiAoIHR5cGVvZiBlbGVtLmdldEF0dHJpYnV0ZSA9PT0gXCJ1bmRlZmluZWRcIiApIHtcclxuXHRcdFx0cmV0dXJuIGpRdWVyeS5wcm9wKCBlbGVtLCBuYW1lLCB2YWx1ZSApO1xyXG5cdFx0fVxyXG5cclxuXHRcdG5vdHhtbCA9IG5UeXBlICE9PSAxIHx8ICFqUXVlcnkuaXNYTUxEb2MoIGVsZW0gKTtcclxuXHJcblx0XHQvLyBBbGwgYXR0cmlidXRlcyBhcmUgbG93ZXJjYXNlXHJcblx0XHQvLyBHcmFiIG5lY2Vzc2FyeSBob29rIGlmIG9uZSBpcyBkZWZpbmVkXHJcblx0XHRpZiAoIG5vdHhtbCApIHtcclxuXHRcdFx0bmFtZSA9IG5hbWUudG9Mb3dlckNhc2UoKTtcclxuXHRcdFx0aG9va3MgPSBqUXVlcnkuYXR0ckhvb2tzWyBuYW1lIF0gfHwgKCByYm9vbGVhbi50ZXN0KCBuYW1lICkgPyBib29sSG9vayA6IG5vZGVIb29rICk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKCB2YWx1ZSAhPT0gdW5kZWZpbmVkICkge1xyXG5cclxuXHRcdFx0aWYgKCB2YWx1ZSA9PT0gbnVsbCApIHtcclxuXHRcdFx0XHRqUXVlcnkucmVtb3ZlQXR0ciggZWxlbSwgbmFtZSApO1xyXG5cdFx0XHRcdHJldHVybjtcclxuXHJcblx0XHRcdH0gZWxzZSBpZiAoIGhvb2tzICYmIFwic2V0XCIgaW4gaG9va3MgJiYgbm90eG1sICYmIChyZXQgPSBob29rcy5zZXQoIGVsZW0sIHZhbHVlLCBuYW1lICkpICE9PSB1bmRlZmluZWQgKSB7XHJcblx0XHRcdFx0cmV0dXJuIHJldDtcclxuXHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0ZWxlbS5zZXRBdHRyaWJ1dGUoIG5hbWUsIFwiXCIgKyB2YWx1ZSApO1xyXG5cdFx0XHRcdHJldHVybiB2YWx1ZTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdH0gZWxzZSBpZiAoIGhvb2tzICYmIFwiZ2V0XCIgaW4gaG9va3MgJiYgbm90eG1sICYmIChyZXQgPSBob29rcy5nZXQoIGVsZW0sIG5hbWUgKSkgIT09IG51bGwgKSB7XHJcblx0XHRcdHJldHVybiByZXQ7XHJcblxyXG5cdFx0fSBlbHNlIHtcclxuXHJcblx0XHRcdHJldCA9IGVsZW0uZ2V0QXR0cmlidXRlKCBuYW1lICk7XHJcblxyXG5cdFx0XHQvLyBOb24tZXhpc3RlbnQgYXR0cmlidXRlcyByZXR1cm4gbnVsbCwgd2Ugbm9ybWFsaXplIHRvIHVuZGVmaW5lZFxyXG5cdFx0XHRyZXR1cm4gcmV0ID09PSBudWxsID9cclxuXHRcdFx0XHR1bmRlZmluZWQgOlxyXG5cdFx0XHRcdHJldDtcclxuXHRcdH1cclxuXHR9LFxyXG5cclxuXHRyZW1vdmVBdHRyOiBmdW5jdGlvbiggZWxlbSwgdmFsdWUgKSB7XHJcblx0XHR2YXIgcHJvcE5hbWUsIGF0dHJOYW1lcywgbmFtZSwgaXNCb29sLFxyXG5cdFx0XHRpID0gMDtcclxuXHJcblx0XHRpZiAoIHZhbHVlICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7XHJcblxyXG5cdFx0XHRhdHRyTmFtZXMgPSB2YWx1ZS5zcGxpdCggY29yZV9yc3BhY2UgKTtcclxuXHJcblx0XHRcdGZvciAoIDsgaSA8IGF0dHJOYW1lcy5sZW5ndGg7IGkrKyApIHtcclxuXHRcdFx0XHRuYW1lID0gYXR0ck5hbWVzWyBpIF07XHJcblxyXG5cdFx0XHRcdGlmICggbmFtZSApIHtcclxuXHRcdFx0XHRcdHByb3BOYW1lID0galF1ZXJ5LnByb3BGaXhbIG5hbWUgXSB8fCBuYW1lO1xyXG5cdFx0XHRcdFx0aXNCb29sID0gcmJvb2xlYW4udGVzdCggbmFtZSApO1xyXG5cclxuXHRcdFx0XHRcdC8vIFNlZSAjOTY5OSBmb3IgZXhwbGFuYXRpb24gb2YgdGhpcyBhcHByb2FjaCAoc2V0dGluZyBmaXJzdCwgdGhlbiByZW1vdmFsKVxyXG5cdFx0XHRcdFx0Ly8gRG8gbm90IGRvIHRoaXMgZm9yIGJvb2xlYW4gYXR0cmlidXRlcyAoc2VlICMxMDg3MClcclxuXHRcdFx0XHRcdGlmICggIWlzQm9vbCApIHtcclxuXHRcdFx0XHRcdFx0alF1ZXJ5LmF0dHIoIGVsZW0sIG5hbWUsIFwiXCIgKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGVsZW0ucmVtb3ZlQXR0cmlidXRlKCBnZXRTZXRBdHRyaWJ1dGUgPyBuYW1lIDogcHJvcE5hbWUgKTtcclxuXHJcblx0XHRcdFx0XHQvLyBTZXQgY29ycmVzcG9uZGluZyBwcm9wZXJ0eSB0byBmYWxzZSBmb3IgYm9vbGVhbiBhdHRyaWJ1dGVzXHJcblx0XHRcdFx0XHRpZiAoIGlzQm9vbCAmJiBwcm9wTmFtZSBpbiBlbGVtICkge1xyXG5cdFx0XHRcdFx0XHRlbGVtWyBwcm9wTmFtZSBdID0gZmFsc2U7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fSxcclxuXHJcblx0YXR0ckhvb2tzOiB7XHJcblx0XHR0eXBlOiB7XHJcblx0XHRcdHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlICkge1xyXG5cdFx0XHRcdC8vIFdlIGNhbid0IGFsbG93IHRoZSB0eXBlIHByb3BlcnR5IHRvIGJlIGNoYW5nZWQgKHNpbmNlIGl0IGNhdXNlcyBwcm9ibGVtcyBpbiBJRSlcclxuXHRcdFx0XHRpZiAoIHJ0eXBlLnRlc3QoIGVsZW0ubm9kZU5hbWUgKSAmJiBlbGVtLnBhcmVudE5vZGUgKSB7XHJcblx0XHRcdFx0XHRqUXVlcnkuZXJyb3IoIFwidHlwZSBwcm9wZXJ0eSBjYW4ndCBiZSBjaGFuZ2VkXCIgKTtcclxuXHRcdFx0XHR9IGVsc2UgaWYgKCAhalF1ZXJ5LnN1cHBvcnQucmFkaW9WYWx1ZSAmJiB2YWx1ZSA9PT0gXCJyYWRpb1wiICYmIGpRdWVyeS5ub2RlTmFtZShlbGVtLCBcImlucHV0XCIpICkge1xyXG5cdFx0XHRcdFx0Ly8gU2V0dGluZyB0aGUgdHlwZSBvbiBhIHJhZGlvIGJ1dHRvbiBhZnRlciB0aGUgdmFsdWUgcmVzZXRzIHRoZSB2YWx1ZSBpbiBJRTYtOVxyXG5cdFx0XHRcdFx0Ly8gUmVzZXQgdmFsdWUgdG8gaXQncyBkZWZhdWx0IGluIGNhc2UgdHlwZSBpcyBzZXQgYWZ0ZXIgdmFsdWVcclxuXHRcdFx0XHRcdC8vIFRoaXMgaXMgZm9yIGVsZW1lbnQgY3JlYXRpb25cclxuXHRcdFx0XHRcdHZhciB2YWwgPSBlbGVtLnZhbHVlO1xyXG5cdFx0XHRcdFx0ZWxlbS5zZXRBdHRyaWJ1dGUoIFwidHlwZVwiLCB2YWx1ZSApO1xyXG5cdFx0XHRcdFx0aWYgKCB2YWwgKSB7XHJcblx0XHRcdFx0XHRcdGVsZW0udmFsdWUgPSB2YWw7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRyZXR1cm4gdmFsdWU7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0Ly8gVXNlIHRoZSB2YWx1ZSBwcm9wZXJ0eSBmb3IgYmFjayBjb21wYXRcclxuXHRcdC8vIFVzZSB0aGUgbm9kZUhvb2sgZm9yIGJ1dHRvbiBlbGVtZW50cyBpbiBJRTYvNyAoIzE5NTQpXHJcblx0XHR2YWx1ZToge1xyXG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lICkge1xyXG5cdFx0XHRcdGlmICggbm9kZUhvb2sgJiYgalF1ZXJ5Lm5vZGVOYW1lKCBlbGVtLCBcImJ1dHRvblwiICkgKSB7XHJcblx0XHRcdFx0XHRyZXR1cm4gbm9kZUhvb2suZ2V0KCBlbGVtLCBuYW1lICk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHJldHVybiBuYW1lIGluIGVsZW0gP1xyXG5cdFx0XHRcdFx0ZWxlbS52YWx1ZSA6XHJcblx0XHRcdFx0XHRudWxsO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSwgbmFtZSApIHtcclxuXHRcdFx0XHRpZiAoIG5vZGVIb29rICYmIGpRdWVyeS5ub2RlTmFtZSggZWxlbSwgXCJidXR0b25cIiApICkge1xyXG5cdFx0XHRcdFx0cmV0dXJuIG5vZGVIb29rLnNldCggZWxlbSwgdmFsdWUsIG5hbWUgKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Ly8gRG9lcyBub3QgcmV0dXJuIHNvIHRoYXQgc2V0QXR0cmlidXRlIGlzIGFsc28gdXNlZFxyXG5cdFx0XHRcdGVsZW0udmFsdWUgPSB2YWx1ZTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH0sXHJcblxyXG5cdHByb3BGaXg6IHtcclxuXHRcdHRhYmluZGV4OiBcInRhYkluZGV4XCIsXHJcblx0XHRyZWFkb25seTogXCJyZWFkT25seVwiLFxyXG5cdFx0XCJmb3JcIjogXCJodG1sRm9yXCIsXHJcblx0XHRcImNsYXNzXCI6IFwiY2xhc3NOYW1lXCIsXHJcblx0XHRtYXhsZW5ndGg6IFwibWF4TGVuZ3RoXCIsXHJcblx0XHRjZWxsc3BhY2luZzogXCJjZWxsU3BhY2luZ1wiLFxyXG5cdFx0Y2VsbHBhZGRpbmc6IFwiY2VsbFBhZGRpbmdcIixcclxuXHRcdHJvd3NwYW46IFwicm93U3BhblwiLFxyXG5cdFx0Y29sc3BhbjogXCJjb2xTcGFuXCIsXHJcblx0XHR1c2VtYXA6IFwidXNlTWFwXCIsXHJcblx0XHRmcmFtZWJvcmRlcjogXCJmcmFtZUJvcmRlclwiLFxyXG5cdFx0Y29udGVudGVkaXRhYmxlOiBcImNvbnRlbnRFZGl0YWJsZVwiXHJcblx0fSxcclxuXHJcblx0cHJvcDogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIHZhbHVlICkge1xyXG5cdFx0dmFyIHJldCwgaG9va3MsIG5vdHhtbCxcclxuXHRcdFx0blR5cGUgPSBlbGVtLm5vZGVUeXBlO1xyXG5cclxuXHRcdC8vIGRvbid0IGdldC9zZXQgcHJvcGVydGllcyBvbiB0ZXh0LCBjb21tZW50IGFuZCBhdHRyaWJ1dGUgbm9kZXNcclxuXHRcdGlmICggIWVsZW0gfHwgblR5cGUgPT09IDMgfHwgblR5cGUgPT09IDggfHwgblR5cGUgPT09IDIgKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHRub3R4bWwgPSBuVHlwZSAhPT0gMSB8fCAhalF1ZXJ5LmlzWE1MRG9jKCBlbGVtICk7XHJcblxyXG5cdFx0aWYgKCBub3R4bWwgKSB7XHJcblx0XHRcdC8vIEZpeCBuYW1lIGFuZCBhdHRhY2ggaG9va3NcclxuXHRcdFx0bmFtZSA9IGpRdWVyeS5wcm9wRml4WyBuYW1lIF0gfHwgbmFtZTtcclxuXHRcdFx0aG9va3MgPSBqUXVlcnkucHJvcEhvb2tzWyBuYW1lIF07XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKCB2YWx1ZSAhPT0gdW5kZWZpbmVkICkge1xyXG5cdFx0XHRpZiAoIGhvb2tzICYmIFwic2V0XCIgaW4gaG9va3MgJiYgKHJldCA9IGhvb2tzLnNldCggZWxlbSwgdmFsdWUsIG5hbWUgKSkgIT09IHVuZGVmaW5lZCApIHtcclxuXHRcdFx0XHRyZXR1cm4gcmV0O1xyXG5cclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRyZXR1cm4gKCBlbGVtWyBuYW1lIF0gPSB2YWx1ZSApO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0aWYgKCBob29rcyAmJiBcImdldFwiIGluIGhvb2tzICYmIChyZXQgPSBob29rcy5nZXQoIGVsZW0sIG5hbWUgKSkgIT09IG51bGwgKSB7XHJcblx0XHRcdFx0cmV0dXJuIHJldDtcclxuXHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0cmV0dXJuIGVsZW1bIG5hbWUgXTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH0sXHJcblxyXG5cdHByb3BIb29rczoge1xyXG5cdFx0dGFiSW5kZXg6IHtcclxuXHRcdFx0Z2V0OiBmdW5jdGlvbiggZWxlbSApIHtcclxuXHRcdFx0XHQvLyBlbGVtLnRhYkluZGV4IGRvZXNuJ3QgYWx3YXlzIHJldHVybiB0aGUgY29ycmVjdCB2YWx1ZSB3aGVuIGl0IGhhc24ndCBiZWVuIGV4cGxpY2l0bHkgc2V0XHJcblx0XHRcdFx0Ly8gaHR0cDovL2ZsdWlkcHJvamVjdC5vcmcvYmxvZy8yMDA4LzAxLzA5L2dldHRpbmctc2V0dGluZy1hbmQtcmVtb3ZpbmctdGFiaW5kZXgtdmFsdWVzLXdpdGgtamF2YXNjcmlwdC9cclxuXHRcdFx0XHR2YXIgYXR0cmlidXRlTm9kZSA9IGVsZW0uZ2V0QXR0cmlidXRlTm9kZShcInRhYmluZGV4XCIpO1xyXG5cclxuXHRcdFx0XHRyZXR1cm4gYXR0cmlidXRlTm9kZSAmJiBhdHRyaWJ1dGVOb2RlLnNwZWNpZmllZCA/XHJcblx0XHRcdFx0XHRwYXJzZUludCggYXR0cmlidXRlTm9kZS52YWx1ZSwgMTAgKSA6XHJcblx0XHRcdFx0XHRyZm9jdXNhYmxlLnRlc3QoIGVsZW0ubm9kZU5hbWUgKSB8fCByY2xpY2thYmxlLnRlc3QoIGVsZW0ubm9kZU5hbWUgKSAmJiBlbGVtLmhyZWYgP1xyXG5cdFx0XHRcdFx0XHQwIDpcclxuXHRcdFx0XHRcdFx0dW5kZWZpbmVkO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG59KTtcclxuXHJcbi8vIEhvb2sgZm9yIGJvb2xlYW4gYXR0cmlidXRlc1xyXG5ib29sSG9vayA9IHtcclxuXHRnZXQ6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lICkge1xyXG5cdFx0Ly8gQWxpZ24gYm9vbGVhbiBhdHRyaWJ1dGVzIHdpdGggY29ycmVzcG9uZGluZyBwcm9wZXJ0aWVzXHJcblx0XHQvLyBGYWxsIGJhY2sgdG8gYXR0cmlidXRlIHByZXNlbmNlIHdoZXJlIHNvbWUgYm9vbGVhbnMgYXJlIG5vdCBzdXBwb3J0ZWRcclxuXHRcdHZhciBhdHRyTm9kZSxcclxuXHRcdFx0cHJvcGVydHkgPSBqUXVlcnkucHJvcCggZWxlbSwgbmFtZSApO1xyXG5cdFx0cmV0dXJuIHByb3BlcnR5ID09PSB0cnVlIHx8IHR5cGVvZiBwcm9wZXJ0eSAhPT0gXCJib29sZWFuXCIgJiYgKCBhdHRyTm9kZSA9IGVsZW0uZ2V0QXR0cmlidXRlTm9kZShuYW1lKSApICYmIGF0dHJOb2RlLm5vZGVWYWx1ZSAhPT0gZmFsc2UgP1xyXG5cdFx0XHRuYW1lLnRvTG93ZXJDYXNlKCkgOlxyXG5cdFx0XHR1bmRlZmluZWQ7XHJcblx0fSxcclxuXHRzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSwgbmFtZSApIHtcclxuXHRcdHZhciBwcm9wTmFtZTtcclxuXHRcdGlmICggdmFsdWUgPT09IGZhbHNlICkge1xyXG5cdFx0XHQvLyBSZW1vdmUgYm9vbGVhbiBhdHRyaWJ1dGVzIHdoZW4gc2V0IHRvIGZhbHNlXHJcblx0XHRcdGpRdWVyeS5yZW1vdmVBdHRyKCBlbGVtLCBuYW1lICk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHQvLyB2YWx1ZSBpcyB0cnVlIHNpbmNlIHdlIGtub3cgYXQgdGhpcyBwb2ludCBpdCdzIHR5cGUgYm9vbGVhbiBhbmQgbm90IGZhbHNlXHJcblx0XHRcdC8vIFNldCBib29sZWFuIGF0dHJpYnV0ZXMgdG8gdGhlIHNhbWUgbmFtZSBhbmQgc2V0IHRoZSBET00gcHJvcGVydHlcclxuXHRcdFx0cHJvcE5hbWUgPSBqUXVlcnkucHJvcEZpeFsgbmFtZSBdIHx8IG5hbWU7XHJcblx0XHRcdGlmICggcHJvcE5hbWUgaW4gZWxlbSApIHtcclxuXHRcdFx0XHQvLyBPbmx5IHNldCB0aGUgSURMIHNwZWNpZmljYWxseSBpZiBpdCBhbHJlYWR5IGV4aXN0cyBvbiB0aGUgZWxlbWVudFxyXG5cdFx0XHRcdGVsZW1bIHByb3BOYW1lIF0gPSB0cnVlO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRlbGVtLnNldEF0dHJpYnV0ZSggbmFtZSwgbmFtZS50b0xvd2VyQ2FzZSgpICk7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gbmFtZTtcclxuXHR9XHJcbn07XHJcblxyXG4vLyBJRTYvNyBkbyBub3Qgc3VwcG9ydCBnZXR0aW5nL3NldHRpbmcgc29tZSBhdHRyaWJ1dGVzIHdpdGggZ2V0L3NldEF0dHJpYnV0ZVxyXG5pZiAoICFnZXRTZXRBdHRyaWJ1dGUgKSB7XHJcblxyXG5cdGZpeFNwZWNpZmllZCA9IHtcclxuXHRcdG5hbWU6IHRydWUsXHJcblx0XHRpZDogdHJ1ZSxcclxuXHRcdGNvb3JkczogdHJ1ZVxyXG5cdH07XHJcblxyXG5cdC8vIFVzZSB0aGlzIGZvciBhbnkgYXR0cmlidXRlIGluIElFNi83XHJcblx0Ly8gVGhpcyBmaXhlcyBhbG1vc3QgZXZlcnkgSUU2LzcgaXNzdWVcclxuXHRub2RlSG9vayA9IGpRdWVyeS52YWxIb29rcy5idXR0b24gPSB7XHJcblx0XHRnZXQ6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lICkge1xyXG5cdFx0XHR2YXIgcmV0O1xyXG5cdFx0XHRyZXQgPSBlbGVtLmdldEF0dHJpYnV0ZU5vZGUoIG5hbWUgKTtcclxuXHRcdFx0cmV0dXJuIHJldCAmJiAoIGZpeFNwZWNpZmllZFsgbmFtZSBdID8gcmV0LnZhbHVlICE9PSBcIlwiIDogcmV0LnNwZWNpZmllZCApID9cclxuXHRcdFx0XHRyZXQudmFsdWUgOlxyXG5cdFx0XHRcdHVuZGVmaW5lZDtcclxuXHRcdH0sXHJcblx0XHRzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSwgbmFtZSApIHtcclxuXHRcdFx0Ly8gU2V0IHRoZSBleGlzdGluZyBvciBjcmVhdGUgYSBuZXcgYXR0cmlidXRlIG5vZGVcclxuXHRcdFx0dmFyIHJldCA9IGVsZW0uZ2V0QXR0cmlidXRlTm9kZSggbmFtZSApO1xyXG5cdFx0XHRpZiAoICFyZXQgKSB7XHJcblx0XHRcdFx0cmV0ID0gZG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlKCBuYW1lICk7XHJcblx0XHRcdFx0ZWxlbS5zZXRBdHRyaWJ1dGVOb2RlKCByZXQgKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRyZXR1cm4gKCByZXQudmFsdWUgPSB2YWx1ZSArIFwiXCIgKTtcclxuXHRcdH1cclxuXHR9O1xyXG5cclxuXHQvLyBTZXQgd2lkdGggYW5kIGhlaWdodCB0byBhdXRvIGluc3RlYWQgb2YgMCBvbiBlbXB0eSBzdHJpbmcoIEJ1ZyAjODE1MCApXHJcblx0Ly8gVGhpcyBpcyBmb3IgcmVtb3ZhbHNcclxuXHRqUXVlcnkuZWFjaChbIFwid2lkdGhcIiwgXCJoZWlnaHRcIiBdLCBmdW5jdGlvbiggaSwgbmFtZSApIHtcclxuXHRcdGpRdWVyeS5hdHRySG9va3NbIG5hbWUgXSA9IGpRdWVyeS5leHRlbmQoIGpRdWVyeS5hdHRySG9va3NbIG5hbWUgXSwge1xyXG5cdFx0XHRzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHtcclxuXHRcdFx0XHRpZiAoIHZhbHVlID09PSBcIlwiICkge1xyXG5cdFx0XHRcdFx0ZWxlbS5zZXRBdHRyaWJ1dGUoIG5hbWUsIFwiYXV0b1wiICk7XHJcblx0XHRcdFx0XHRyZXR1cm4gdmFsdWU7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9KTtcclxuXHJcblx0Ly8gU2V0IGNvbnRlbnRlZGl0YWJsZSB0byBmYWxzZSBvbiByZW1vdmFscygjMTA0MjkpXHJcblx0Ly8gU2V0dGluZyB0byBlbXB0eSBzdHJpbmcgdGhyb3dzIGFuIGVycm9yIGFzIGFuIGludmFsaWQgdmFsdWVcclxuXHRqUXVlcnkuYXR0ckhvb2tzLmNvbnRlbnRlZGl0YWJsZSA9IHtcclxuXHRcdGdldDogbm9kZUhvb2suZ2V0LFxyXG5cdFx0c2V0OiBmdW5jdGlvbiggZWxlbSwgdmFsdWUsIG5hbWUgKSB7XHJcblx0XHRcdGlmICggdmFsdWUgPT09IFwiXCIgKSB7XHJcblx0XHRcdFx0dmFsdWUgPSBcImZhbHNlXCI7XHJcblx0XHRcdH1cclxuXHRcdFx0bm9kZUhvb2suc2V0KCBlbGVtLCB2YWx1ZSwgbmFtZSApO1xyXG5cdFx0fVxyXG5cdH07XHJcbn1cclxuXHJcblxyXG4vLyBTb21lIGF0dHJpYnV0ZXMgcmVxdWlyZSBhIHNwZWNpYWwgY2FsbCBvbiBJRVxyXG5pZiAoICFqUXVlcnkuc3VwcG9ydC5ocmVmTm9ybWFsaXplZCApIHtcclxuXHRqUXVlcnkuZWFjaChbIFwiaHJlZlwiLCBcInNyY1wiLCBcIndpZHRoXCIsIFwiaGVpZ2h0XCIgXSwgZnVuY3Rpb24oIGksIG5hbWUgKSB7XHJcblx0XHRqUXVlcnkuYXR0ckhvb2tzWyBuYW1lIF0gPSBqUXVlcnkuZXh0ZW5kKCBqUXVlcnkuYXR0ckhvb2tzWyBuYW1lIF0sIHtcclxuXHRcdFx0Z2V0OiBmdW5jdGlvbiggZWxlbSApIHtcclxuXHRcdFx0XHR2YXIgcmV0ID0gZWxlbS5nZXRBdHRyaWJ1dGUoIG5hbWUsIDIgKTtcclxuXHRcdFx0XHRyZXR1cm4gcmV0ID09PSBudWxsID8gdW5kZWZpbmVkIDogcmV0O1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9KTtcclxufVxyXG5cclxuaWYgKCAhalF1ZXJ5LnN1cHBvcnQuc3R5bGUgKSB7XHJcblx0alF1ZXJ5LmF0dHJIb29rcy5zdHlsZSA9IHtcclxuXHRcdGdldDogZnVuY3Rpb24oIGVsZW0gKSB7XHJcblx0XHRcdC8vIFJldHVybiB1bmRlZmluZWQgaW4gdGhlIGNhc2Ugb2YgZW1wdHkgc3RyaW5nXHJcblx0XHRcdC8vIE5vcm1hbGl6ZSB0byBsb3dlcmNhc2Ugc2luY2UgSUUgdXBwZXJjYXNlcyBjc3MgcHJvcGVydHkgbmFtZXNcclxuXHRcdFx0cmV0dXJuIGVsZW0uc3R5bGUuY3NzVGV4dC50b0xvd2VyQ2FzZSgpIHx8IHVuZGVmaW5lZDtcclxuXHRcdH0sXHJcblx0XHRzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHtcclxuXHRcdFx0cmV0dXJuICggZWxlbS5zdHlsZS5jc3NUZXh0ID0gXCJcIiArIHZhbHVlICk7XHJcblx0XHR9XHJcblx0fTtcclxufVxyXG5cclxuLy8gU2FmYXJpIG1pcy1yZXBvcnRzIHRoZSBkZWZhdWx0IHNlbGVjdGVkIHByb3BlcnR5IG9mIGFuIG9wdGlvblxyXG4vLyBBY2Nlc3NpbmcgdGhlIHBhcmVudCdzIHNlbGVjdGVkSW5kZXggcHJvcGVydHkgZml4ZXMgaXRcclxuaWYgKCAhalF1ZXJ5LnN1cHBvcnQub3B0U2VsZWN0ZWQgKSB7XHJcblx0alF1ZXJ5LnByb3BIb29rcy5zZWxlY3RlZCA9IGpRdWVyeS5leHRlbmQoIGpRdWVyeS5wcm9wSG9va3Muc2VsZWN0ZWQsIHtcclxuXHRcdGdldDogZnVuY3Rpb24oIGVsZW0gKSB7XHJcblx0XHRcdHZhciBwYXJlbnQgPSBlbGVtLnBhcmVudE5vZGU7XHJcblxyXG5cdFx0XHRpZiAoIHBhcmVudCApIHtcclxuXHRcdFx0XHRwYXJlbnQuc2VsZWN0ZWRJbmRleDtcclxuXHJcblx0XHRcdFx0Ly8gTWFrZSBzdXJlIHRoYXQgaXQgYWxzbyB3b3JrcyB3aXRoIG9wdGdyb3Vwcywgc2VlICM1NzAxXHJcblx0XHRcdFx0aWYgKCBwYXJlbnQucGFyZW50Tm9kZSApIHtcclxuXHRcdFx0XHRcdHBhcmVudC5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXg7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHRcdHJldHVybiBudWxsO1xyXG5cdFx0fVxyXG5cdH0pO1xyXG59XHJcblxyXG4vLyBJRTYvNyBjYWxsIGVuY3R5cGUgZW5jb2RpbmdcclxuaWYgKCAhalF1ZXJ5LnN1cHBvcnQuZW5jdHlwZSApIHtcclxuXHRqUXVlcnkucHJvcEZpeC5lbmN0eXBlID0gXCJlbmNvZGluZ1wiO1xyXG59XHJcblxyXG4vLyBSYWRpb3MgYW5kIGNoZWNrYm94ZXMgZ2V0dGVyL3NldHRlclxyXG5pZiAoICFqUXVlcnkuc3VwcG9ydC5jaGVja09uICkge1xyXG5cdGpRdWVyeS5lYWNoKFsgXCJyYWRpb1wiLCBcImNoZWNrYm94XCIgXSwgZnVuY3Rpb24oKSB7XHJcblx0XHRqUXVlcnkudmFsSG9va3NbIHRoaXMgXSA9IHtcclxuXHRcdFx0Z2V0OiBmdW5jdGlvbiggZWxlbSApIHtcclxuXHRcdFx0XHQvLyBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgaW4gV2Via2l0IFwiXCIgaXMgcmV0dXJuZWQgaW5zdGVhZCBvZiBcIm9uXCIgaWYgYSB2YWx1ZSBpc24ndCBzcGVjaWZpZWRcclxuXHRcdFx0XHRyZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUoXCJ2YWx1ZVwiKSA9PT0gbnVsbCA/IFwib25cIiA6IGVsZW0udmFsdWU7XHJcblx0XHRcdH1cclxuXHRcdH07XHJcblx0fSk7XHJcbn1cclxualF1ZXJ5LmVhY2goWyBcInJhZGlvXCIsIFwiY2hlY2tib3hcIiBdLCBmdW5jdGlvbigpIHtcclxuXHRqUXVlcnkudmFsSG9va3NbIHRoaXMgXSA9IGpRdWVyeS5leHRlbmQoIGpRdWVyeS52YWxIb29rc1sgdGhpcyBdLCB7XHJcblx0XHRzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHtcclxuXHRcdFx0aWYgKCBqUXVlcnkuaXNBcnJheSggdmFsdWUgKSApIHtcclxuXHRcdFx0XHRyZXR1cm4gKCBlbGVtLmNoZWNrZWQgPSBqUXVlcnkuaW5BcnJheSggalF1ZXJ5KGVsZW0pLnZhbCgpLCB2YWx1ZSApID49IDAgKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH0pO1xyXG59KTtcclxudmFyIHJmb3JtRWxlbXMgPSAvXig/OnRleHRhcmVhfGlucHV0fHNlbGVjdCkkL2ksXHJcblx0cnR5cGVuYW1lc3BhY2UgPSAvXihbXlxcLl0qfCkoPzpcXC4oLispfCkkLyxcclxuXHRyaG92ZXJIYWNrID0gLyg/Ol58XFxzKWhvdmVyKFxcLlxcUyt8KVxcYi8sXHJcblx0cmtleUV2ZW50ID0gL15rZXkvLFxyXG5cdHJtb3VzZUV2ZW50ID0gL14oPzptb3VzZXxjb250ZXh0bWVudSl8Y2xpY2svLFxyXG5cdHJmb2N1c01vcnBoID0gL14oPzpmb2N1c2luZm9jdXN8Zm9jdXNvdXRibHVyKSQvLFxyXG5cdGhvdmVySGFjayA9IGZ1bmN0aW9uKCBldmVudHMgKSB7XHJcblx0XHRyZXR1cm4galF1ZXJ5LmV2ZW50LnNwZWNpYWwuaG92ZXIgPyBldmVudHMgOiBldmVudHMucmVwbGFjZSggcmhvdmVySGFjaywgXCJtb3VzZWVudGVyJDEgbW91c2VsZWF2ZSQxXCIgKTtcclxuXHR9O1xyXG5cclxuLypcclxuICogSGVscGVyIGZ1bmN0aW9ucyBmb3IgbWFuYWdpbmcgZXZlbnRzIC0tIG5vdCBwYXJ0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLlxyXG4gKiBQcm9wcyB0byBEZWFuIEVkd2FyZHMnIGFkZEV2ZW50IGxpYnJhcnkgZm9yIG1hbnkgb2YgdGhlIGlkZWFzLlxyXG4gKi9cclxualF1ZXJ5LmV2ZW50ID0ge1xyXG5cclxuXHRhZGQ6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlcywgaGFuZGxlciwgZGF0YSwgc2VsZWN0b3IgKSB7XHJcblxyXG5cdFx0dmFyIGVsZW1EYXRhLCBldmVudEhhbmRsZSwgZXZlbnRzLFxyXG5cdFx0XHR0LCB0bnMsIHR5cGUsIG5hbWVzcGFjZXMsIGhhbmRsZU9iaixcclxuXHRcdFx0aGFuZGxlT2JqSW4sIGhhbmRsZXJzLCBzcGVjaWFsO1xyXG5cclxuXHRcdC8vIERvbid0IGF0dGFjaCBldmVudHMgdG8gbm9EYXRhIG9yIHRleHQvY29tbWVudCBub2RlcyAoYWxsb3cgcGxhaW4gb2JqZWN0cyB0aG8pXHJcblx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDMgfHwgZWxlbS5ub2RlVHlwZSA9PT0gOCB8fCAhdHlwZXMgfHwgIWhhbmRsZXIgfHwgIShlbGVtRGF0YSA9IGpRdWVyeS5fZGF0YSggZWxlbSApKSApIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIENhbGxlciBjYW4gcGFzcyBpbiBhbiBvYmplY3Qgb2YgY3VzdG9tIGRhdGEgaW4gbGlldSBvZiB0aGUgaGFuZGxlclxyXG5cdFx0aWYgKCBoYW5kbGVyLmhhbmRsZXIgKSB7XHJcblx0XHRcdGhhbmRsZU9iakluID0gaGFuZGxlcjtcclxuXHRcdFx0aGFuZGxlciA9IGhhbmRsZU9iakluLmhhbmRsZXI7XHJcblx0XHRcdHNlbGVjdG9yID0gaGFuZGxlT2JqSW4uc2VsZWN0b3I7XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gTWFrZSBzdXJlIHRoYXQgdGhlIGhhbmRsZXIgaGFzIGEgdW5pcXVlIElELCB1c2VkIHRvIGZpbmQvcmVtb3ZlIGl0IGxhdGVyXHJcblx0XHRpZiAoICFoYW5kbGVyLmd1aWQgKSB7XHJcblx0XHRcdGhhbmRsZXIuZ3VpZCA9IGpRdWVyeS5ndWlkKys7XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gSW5pdCB0aGUgZWxlbWVudCdzIGV2ZW50IHN0cnVjdHVyZSBhbmQgbWFpbiBoYW5kbGVyLCBpZiB0aGlzIGlzIHRoZSBmaXJzdFxyXG5cdFx0ZXZlbnRzID0gZWxlbURhdGEuZXZlbnRzO1xyXG5cdFx0aWYgKCAhZXZlbnRzICkge1xyXG5cdFx0XHRlbGVtRGF0YS5ldmVudHMgPSBldmVudHMgPSB7fTtcclxuXHRcdH1cclxuXHRcdGV2ZW50SGFuZGxlID0gZWxlbURhdGEuaGFuZGxlO1xyXG5cdFx0aWYgKCAhZXZlbnRIYW5kbGUgKSB7XHJcblx0XHRcdGVsZW1EYXRhLmhhbmRsZSA9IGV2ZW50SGFuZGxlID0gZnVuY3Rpb24oIGUgKSB7XHJcblx0XHRcdFx0Ly8gRGlzY2FyZCB0aGUgc2Vjb25kIGV2ZW50IG9mIGEgalF1ZXJ5LmV2ZW50LnRyaWdnZXIoKSBhbmRcclxuXHRcdFx0XHQvLyB3aGVuIGFuIGV2ZW50IGlzIGNhbGxlZCBhZnRlciBhIHBhZ2UgaGFzIHVubG9hZGVkXHJcblx0XHRcdFx0cmV0dXJuIHR5cGVvZiBqUXVlcnkgIT09IFwidW5kZWZpbmVkXCIgJiYgKCFlIHx8IGpRdWVyeS5ldmVudC50cmlnZ2VyZWQgIT09IGUudHlwZSkgP1xyXG5cdFx0XHRcdFx0alF1ZXJ5LmV2ZW50LmRpc3BhdGNoLmFwcGx5KCBldmVudEhhbmRsZS5lbGVtLCBhcmd1bWVudHMgKSA6XHJcblx0XHRcdFx0XHR1bmRlZmluZWQ7XHJcblx0XHRcdH07XHJcblx0XHRcdC8vIEFkZCBlbGVtIGFzIGEgcHJvcGVydHkgb2YgdGhlIGhhbmRsZSBmbiB0byBwcmV2ZW50IGEgbWVtb3J5IGxlYWsgd2l0aCBJRSBub24tbmF0aXZlIGV2ZW50c1xyXG5cdFx0XHRldmVudEhhbmRsZS5lbGVtID0gZWxlbTtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBIYW5kbGUgbXVsdGlwbGUgZXZlbnRzIHNlcGFyYXRlZCBieSBhIHNwYWNlXHJcblx0XHQvLyBqUXVlcnkoLi4uKS5iaW5kKFwibW91c2VvdmVyIG1vdXNlb3V0XCIsIGZuKTtcclxuXHRcdHR5cGVzID0galF1ZXJ5LnRyaW0oIGhvdmVySGFjayh0eXBlcykgKS5zcGxpdCggXCIgXCIgKTtcclxuXHRcdGZvciAoIHQgPSAwOyB0IDwgdHlwZXMubGVuZ3RoOyB0KysgKSB7XHJcblxyXG5cdFx0XHR0bnMgPSBydHlwZW5hbWVzcGFjZS5leGVjKCB0eXBlc1t0XSApIHx8IFtdO1xyXG5cdFx0XHR0eXBlID0gdG5zWzFdO1xyXG5cdFx0XHRuYW1lc3BhY2VzID0gKCB0bnNbMl0gfHwgXCJcIiApLnNwbGl0KCBcIi5cIiApLnNvcnQoKTtcclxuXHJcblx0XHRcdC8vIElmIGV2ZW50IGNoYW5nZXMgaXRzIHR5cGUsIHVzZSB0aGUgc3BlY2lhbCBldmVudCBoYW5kbGVycyBmb3IgdGhlIGNoYW5nZWQgdHlwZVxyXG5cdFx0XHRzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWxbIHR5cGUgXSB8fCB7fTtcclxuXHJcblx0XHRcdC8vIElmIHNlbGVjdG9yIGRlZmluZWQsIGRldGVybWluZSBzcGVjaWFsIGV2ZW50IGFwaSB0eXBlLCBvdGhlcndpc2UgZ2l2ZW4gdHlwZVxyXG5cdFx0XHR0eXBlID0gKCBzZWxlY3RvciA/IHNwZWNpYWwuZGVsZWdhdGVUeXBlIDogc3BlY2lhbC5iaW5kVHlwZSApIHx8IHR5cGU7XHJcblxyXG5cdFx0XHQvLyBVcGRhdGUgc3BlY2lhbCBiYXNlZCBvbiBuZXdseSByZXNldCB0eXBlXHJcblx0XHRcdHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgdHlwZSBdIHx8IHt9O1xyXG5cclxuXHRcdFx0Ly8gaGFuZGxlT2JqIGlzIHBhc3NlZCB0byBhbGwgZXZlbnQgaGFuZGxlcnNcclxuXHRcdFx0aGFuZGxlT2JqID0galF1ZXJ5LmV4dGVuZCh7XHJcblx0XHRcdFx0dHlwZTogdHlwZSxcclxuXHRcdFx0XHRvcmlnVHlwZTogdG5zWzFdLFxyXG5cdFx0XHRcdGRhdGE6IGRhdGEsXHJcblx0XHRcdFx0aGFuZGxlcjogaGFuZGxlcixcclxuXHRcdFx0XHRndWlkOiBoYW5kbGVyLmd1aWQsXHJcblx0XHRcdFx0c2VsZWN0b3I6IHNlbGVjdG9yLFxyXG5cdFx0XHRcdG5hbWVzcGFjZTogbmFtZXNwYWNlcy5qb2luKFwiLlwiKVxyXG5cdFx0XHR9LCBoYW5kbGVPYmpJbiApO1xyXG5cclxuXHRcdFx0Ly8gSW5pdCB0aGUgZXZlbnQgaGFuZGxlciBxdWV1ZSBpZiB3ZSdyZSB0aGUgZmlyc3RcclxuXHRcdFx0aGFuZGxlcnMgPSBldmVudHNbIHR5cGUgXTtcclxuXHRcdFx0aWYgKCAhaGFuZGxlcnMgKSB7XHJcblx0XHRcdFx0aGFuZGxlcnMgPSBldmVudHNbIHR5cGUgXSA9IFtdO1xyXG5cdFx0XHRcdGhhbmRsZXJzLmRlbGVnYXRlQ291bnQgPSAwO1xyXG5cclxuXHRcdFx0XHQvLyBPbmx5IHVzZSBhZGRFdmVudExpc3RlbmVyL2F0dGFjaEV2ZW50IGlmIHRoZSBzcGVjaWFsIGV2ZW50cyBoYW5kbGVyIHJldHVybnMgZmFsc2VcclxuXHRcdFx0XHRpZiAoICFzcGVjaWFsLnNldHVwIHx8IHNwZWNpYWwuc2V0dXAuY2FsbCggZWxlbSwgZGF0YSwgbmFtZXNwYWNlcywgZXZlbnRIYW5kbGUgKSA9PT0gZmFsc2UgKSB7XHJcblx0XHRcdFx0XHQvLyBCaW5kIHRoZSBnbG9iYWwgZXZlbnQgaGFuZGxlciB0byB0aGUgZWxlbWVudFxyXG5cdFx0XHRcdFx0aWYgKCBlbGVtLmFkZEV2ZW50TGlzdGVuZXIgKSB7XHJcblx0XHRcdFx0XHRcdGVsZW0uYWRkRXZlbnRMaXN0ZW5lciggdHlwZSwgZXZlbnRIYW5kbGUsIGZhbHNlICk7XHJcblxyXG5cdFx0XHRcdFx0fSBlbHNlIGlmICggZWxlbS5hdHRhY2hFdmVudCApIHtcclxuXHRcdFx0XHRcdFx0ZWxlbS5hdHRhY2hFdmVudCggXCJvblwiICsgdHlwZSwgZXZlbnRIYW5kbGUgKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGlmICggc3BlY2lhbC5hZGQgKSB7XHJcblx0XHRcdFx0c3BlY2lhbC5hZGQuY2FsbCggZWxlbSwgaGFuZGxlT2JqICk7XHJcblxyXG5cdFx0XHRcdGlmICggIWhhbmRsZU9iai5oYW5kbGVyLmd1aWQgKSB7XHJcblx0XHRcdFx0XHRoYW5kbGVPYmouaGFuZGxlci5ndWlkID0gaGFuZGxlci5ndWlkO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Ly8gQWRkIHRvIHRoZSBlbGVtZW50J3MgaGFuZGxlciBsaXN0LCBkZWxlZ2F0ZXMgaW4gZnJvbnRcclxuXHRcdFx0aWYgKCBzZWxlY3RvciApIHtcclxuXHRcdFx0XHRoYW5kbGVycy5zcGxpY2UoIGhhbmRsZXJzLmRlbGVnYXRlQ291bnQrKywgMCwgaGFuZGxlT2JqICk7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0aGFuZGxlcnMucHVzaCggaGFuZGxlT2JqICk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8vIEtlZXAgdHJhY2sgb2Ygd2hpY2ggZXZlbnRzIGhhdmUgZXZlciBiZWVuIHVzZWQsIGZvciBldmVudCBvcHRpbWl6YXRpb25cclxuXHRcdFx0alF1ZXJ5LmV2ZW50Lmdsb2JhbFsgdHlwZSBdID0gdHJ1ZTtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBOdWxsaWZ5IGVsZW0gdG8gcHJldmVudCBtZW1vcnkgbGVha3MgaW4gSUVcclxuXHRcdGVsZW0gPSBudWxsO1xyXG5cdH0sXHJcblxyXG5cdGdsb2JhbDoge30sXHJcblxyXG5cdC8vIERldGFjaCBhbiBldmVudCBvciBzZXQgb2YgZXZlbnRzIGZyb20gYW4gZWxlbWVudFxyXG5cdHJlbW92ZTogZnVuY3Rpb24oIGVsZW0sIHR5cGVzLCBoYW5kbGVyLCBzZWxlY3RvciwgbWFwcGVkVHlwZXMgKSB7XHJcblxyXG5cdFx0dmFyIHQsIHRucywgdHlwZSwgb3JpZ1R5cGUsIG5hbWVzcGFjZXMsIG9yaWdDb3VudCxcclxuXHRcdFx0aiwgZXZlbnRzLCBzcGVjaWFsLCBldmVudFR5cGUsIGhhbmRsZU9iaixcclxuXHRcdFx0ZWxlbURhdGEgPSBqUXVlcnkuaGFzRGF0YSggZWxlbSApICYmIGpRdWVyeS5fZGF0YSggZWxlbSApO1xyXG5cclxuXHRcdGlmICggIWVsZW1EYXRhIHx8ICEoZXZlbnRzID0gZWxlbURhdGEuZXZlbnRzKSApIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIE9uY2UgZm9yIGVhY2ggdHlwZS5uYW1lc3BhY2UgaW4gdHlwZXM7IHR5cGUgbWF5IGJlIG9taXR0ZWRcclxuXHRcdHR5cGVzID0galF1ZXJ5LnRyaW0oIGhvdmVySGFjayggdHlwZXMgfHwgXCJcIiApICkuc3BsaXQoXCIgXCIpO1xyXG5cdFx0Zm9yICggdCA9IDA7IHQgPCB0eXBlcy5sZW5ndGg7IHQrKyApIHtcclxuXHRcdFx0dG5zID0gcnR5cGVuYW1lc3BhY2UuZXhlYyggdHlwZXNbdF0gKSB8fCBbXTtcclxuXHRcdFx0dHlwZSA9IG9yaWdUeXBlID0gdG5zWzFdO1xyXG5cdFx0XHRuYW1lc3BhY2VzID0gdG5zWzJdO1xyXG5cclxuXHRcdFx0Ly8gVW5iaW5kIGFsbCBldmVudHMgKG9uIHRoaXMgbmFtZXNwYWNlLCBpZiBwcm92aWRlZCkgZm9yIHRoZSBlbGVtZW50XHJcblx0XHRcdGlmICggIXR5cGUgKSB7XHJcblx0XHRcdFx0Zm9yICggdHlwZSBpbiBldmVudHMgKSB7XHJcblx0XHRcdFx0XHRqUXVlcnkuZXZlbnQucmVtb3ZlKCBlbGVtLCB0eXBlICsgdHlwZXNbIHQgXSwgaGFuZGxlciwgc2VsZWN0b3IsIHRydWUgKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Y29udGludWU7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgdHlwZSBdIHx8IHt9O1xyXG5cdFx0XHR0eXBlID0gKCBzZWxlY3Rvcj8gc3BlY2lhbC5kZWxlZ2F0ZVR5cGUgOiBzcGVjaWFsLmJpbmRUeXBlICkgfHwgdHlwZTtcclxuXHRcdFx0ZXZlbnRUeXBlID0gZXZlbnRzWyB0eXBlIF0gfHwgW107XHJcblx0XHRcdG9yaWdDb3VudCA9IGV2ZW50VHlwZS5sZW5ndGg7XHJcblx0XHRcdG5hbWVzcGFjZXMgPSBuYW1lc3BhY2VzID8gbmV3IFJlZ0V4cChcIihefFxcXFwuKVwiICsgbmFtZXNwYWNlcy5zcGxpdChcIi5cIikuc29ydCgpLmpvaW4oXCJcXFxcLig/Oi4qXFxcXC58KVwiKSArIFwiKFxcXFwufCQpXCIpIDogbnVsbDtcclxuXHJcblx0XHRcdC8vIFJlbW92ZSBtYXRjaGluZyBldmVudHNcclxuXHRcdFx0Zm9yICggaiA9IDA7IGogPCBldmVudFR5cGUubGVuZ3RoOyBqKysgKSB7XHJcblx0XHRcdFx0aGFuZGxlT2JqID0gZXZlbnRUeXBlWyBqIF07XHJcblxyXG5cdFx0XHRcdGlmICggKCBtYXBwZWRUeXBlcyB8fCBvcmlnVHlwZSA9PT0gaGFuZGxlT2JqLm9yaWdUeXBlICkgJiZcclxuXHRcdFx0XHRcdCAoICFoYW5kbGVyIHx8IGhhbmRsZXIuZ3VpZCA9PT0gaGFuZGxlT2JqLmd1aWQgKSAmJlxyXG5cdFx0XHRcdFx0ICggIW5hbWVzcGFjZXMgfHwgbmFtZXNwYWNlcy50ZXN0KCBoYW5kbGVPYmoubmFtZXNwYWNlICkgKSAmJlxyXG5cdFx0XHRcdFx0ICggIXNlbGVjdG9yIHx8IHNlbGVjdG9yID09PSBoYW5kbGVPYmouc2VsZWN0b3IgfHwgc2VsZWN0b3IgPT09IFwiKipcIiAmJiBoYW5kbGVPYmouc2VsZWN0b3IgKSApIHtcclxuXHRcdFx0XHRcdGV2ZW50VHlwZS5zcGxpY2UoIGotLSwgMSApO1xyXG5cclxuXHRcdFx0XHRcdGlmICggaGFuZGxlT2JqLnNlbGVjdG9yICkge1xyXG5cdFx0XHRcdFx0XHRldmVudFR5cGUuZGVsZWdhdGVDb3VudC0tO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0aWYgKCBzcGVjaWFsLnJlbW92ZSApIHtcclxuXHRcdFx0XHRcdFx0c3BlY2lhbC5yZW1vdmUuY2FsbCggZWxlbSwgaGFuZGxlT2JqICk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvLyBSZW1vdmUgZ2VuZXJpYyBldmVudCBoYW5kbGVyIGlmIHdlIHJlbW92ZWQgc29tZXRoaW5nIGFuZCBubyBtb3JlIGhhbmRsZXJzIGV4aXN0XHJcblx0XHRcdC8vIChhdm9pZHMgcG90ZW50aWFsIGZvciBlbmRsZXNzIHJlY3Vyc2lvbiBkdXJpbmcgcmVtb3ZhbCBvZiBzcGVjaWFsIGV2ZW50IGhhbmRsZXJzKVxyXG5cdFx0XHRpZiAoIGV2ZW50VHlwZS5sZW5ndGggPT09IDAgJiYgb3JpZ0NvdW50ICE9PSBldmVudFR5cGUubGVuZ3RoICkge1xyXG5cdFx0XHRcdGlmICggIXNwZWNpYWwudGVhcmRvd24gfHwgc3BlY2lhbC50ZWFyZG93bi5jYWxsKCBlbGVtLCBuYW1lc3BhY2VzLCBlbGVtRGF0YS5oYW5kbGUgKSA9PT0gZmFsc2UgKSB7XHJcblx0XHRcdFx0XHRqUXVlcnkucmVtb3ZlRXZlbnQoIGVsZW0sIHR5cGUsIGVsZW1EYXRhLmhhbmRsZSApO1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0ZGVsZXRlIGV2ZW50c1sgdHlwZSBdO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gUmVtb3ZlIHRoZSBleHBhbmRvIGlmIGl0J3Mgbm8gbG9uZ2VyIHVzZWRcclxuXHRcdGlmICggalF1ZXJ5LmlzRW1wdHlPYmplY3QoIGV2ZW50cyApICkge1xyXG5cdFx0XHRkZWxldGUgZWxlbURhdGEuaGFuZGxlO1xyXG5cclxuXHRcdFx0Ly8gcmVtb3ZlRGF0YSBhbHNvIGNoZWNrcyBmb3IgZW1wdGluZXNzIGFuZCBjbGVhcnMgdGhlIGV4cGFuZG8gaWYgZW1wdHlcclxuXHRcdFx0Ly8gc28gdXNlIGl0IGluc3RlYWQgb2YgZGVsZXRlXHJcblx0XHRcdGpRdWVyeS5yZW1vdmVEYXRhKCBlbGVtLCBcImV2ZW50c1wiLCB0cnVlICk7XHJcblx0XHR9XHJcblx0fSxcclxuXHJcblx0Ly8gRXZlbnRzIHRoYXQgYXJlIHNhZmUgdG8gc2hvcnQtY2lyY3VpdCBpZiBubyBoYW5kbGVycyBhcmUgYXR0YWNoZWQuXHJcblx0Ly8gTmF0aXZlIERPTSBldmVudHMgc2hvdWxkIG5vdCBiZSBhZGRlZCwgdGhleSBtYXkgaGF2ZSBpbmxpbmUgaGFuZGxlcnMuXHJcblx0Y3VzdG9tRXZlbnQ6IHtcclxuXHRcdFwiZ2V0RGF0YVwiOiB0cnVlLFxyXG5cdFx0XCJzZXREYXRhXCI6IHRydWUsXHJcblx0XHRcImNoYW5nZURhdGFcIjogdHJ1ZVxyXG5cdH0sXHJcblxyXG5cdHRyaWdnZXI6IGZ1bmN0aW9uKCBldmVudCwgZGF0YSwgZWxlbSwgb25seUhhbmRsZXJzICkge1xyXG5cdFx0Ly8gRG9uJ3QgZG8gZXZlbnRzIG9uIHRleHQgYW5kIGNvbW1lbnQgbm9kZXNcclxuXHRcdGlmICggZWxlbSAmJiAoZWxlbS5ub2RlVHlwZSA9PT0gMyB8fCBlbGVtLm5vZGVUeXBlID09PSA4KSApIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIEV2ZW50IG9iamVjdCBvciBldmVudCB0eXBlXHJcblx0XHR2YXIgY2FjaGUsIGV4Y2x1c2l2ZSwgaSwgY3VyLCBvbGQsIG9udHlwZSwgc3BlY2lhbCwgaGFuZGxlLCBldmVudFBhdGgsIGJ1YmJsZVR5cGUsXHJcblx0XHRcdHR5cGUgPSBldmVudC50eXBlIHx8IGV2ZW50LFxyXG5cdFx0XHRuYW1lc3BhY2VzID0gW107XHJcblxyXG5cdFx0Ly8gZm9jdXMvYmx1ciBtb3JwaHMgdG8gZm9jdXNpbi9vdXQ7IGVuc3VyZSB3ZSdyZSBub3QgZmlyaW5nIHRoZW0gcmlnaHQgbm93XHJcblx0XHRpZiAoIHJmb2N1c01vcnBoLnRlc3QoIHR5cGUgKyBqUXVlcnkuZXZlbnQudHJpZ2dlcmVkICkgKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAoIHR5cGUuaW5kZXhPZiggXCIhXCIgKSA+PSAwICkge1xyXG5cdFx0XHQvLyBFeGNsdXNpdmUgZXZlbnRzIHRyaWdnZXIgb25seSBmb3IgdGhlIGV4YWN0IGV2ZW50IChubyBuYW1lc3BhY2VzKVxyXG5cdFx0XHR0eXBlID0gdHlwZS5zbGljZSgwLCAtMSk7XHJcblx0XHRcdGV4Y2x1c2l2ZSA9IHRydWU7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKCB0eXBlLmluZGV4T2YoIFwiLlwiICkgPj0gMCApIHtcclxuXHRcdFx0Ly8gTmFtZXNwYWNlZCB0cmlnZ2VyOyBjcmVhdGUgYSByZWdleHAgdG8gbWF0Y2ggZXZlbnQgdHlwZSBpbiBoYW5kbGUoKVxyXG5cdFx0XHRuYW1lc3BhY2VzID0gdHlwZS5zcGxpdChcIi5cIik7XHJcblx0XHRcdHR5cGUgPSBuYW1lc3BhY2VzLnNoaWZ0KCk7XHJcblx0XHRcdG5hbWVzcGFjZXMuc29ydCgpO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICggKCFlbGVtIHx8IGpRdWVyeS5ldmVudC5jdXN0b21FdmVudFsgdHlwZSBdKSAmJiAhalF1ZXJ5LmV2ZW50Lmdsb2JhbFsgdHlwZSBdICkge1xyXG5cdFx0XHQvLyBObyBqUXVlcnkgaGFuZGxlcnMgZm9yIHRoaXMgZXZlbnQgdHlwZSwgYW5kIGl0IGNhbid0IGhhdmUgaW5saW5lIGhhbmRsZXJzXHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBDYWxsZXIgY2FuIHBhc3MgaW4gYW4gRXZlbnQsIE9iamVjdCwgb3IganVzdCBhbiBldmVudCB0eXBlIHN0cmluZ1xyXG5cdFx0ZXZlbnQgPSB0eXBlb2YgZXZlbnQgPT09IFwib2JqZWN0XCIgP1xyXG5cdFx0XHQvLyBqUXVlcnkuRXZlbnQgb2JqZWN0XHJcblx0XHRcdGV2ZW50WyBqUXVlcnkuZXhwYW5kbyBdID8gZXZlbnQgOlxyXG5cdFx0XHQvLyBPYmplY3QgbGl0ZXJhbFxyXG5cdFx0XHRuZXcgalF1ZXJ5LkV2ZW50KCB0eXBlLCBldmVudCApIDpcclxuXHRcdFx0Ly8gSnVzdCB0aGUgZXZlbnQgdHlwZSAoc3RyaW5nKVxyXG5cdFx0XHRuZXcgalF1ZXJ5LkV2ZW50KCB0eXBlICk7XHJcblxyXG5cdFx0ZXZlbnQudHlwZSA9IHR5cGU7XHJcblx0XHRldmVudC5pc1RyaWdnZXIgPSB0cnVlO1xyXG5cdFx0ZXZlbnQuZXhjbHVzaXZlID0gZXhjbHVzaXZlO1xyXG5cdFx0ZXZlbnQubmFtZXNwYWNlID0gbmFtZXNwYWNlcy5qb2luKCBcIi5cIiApO1xyXG5cdFx0ZXZlbnQubmFtZXNwYWNlX3JlID0gZXZlbnQubmFtZXNwYWNlPyBuZXcgUmVnRXhwKFwiKF58XFxcXC4pXCIgKyBuYW1lc3BhY2VzLmpvaW4oXCJcXFxcLig/Oi4qXFxcXC58KVwiKSArIFwiKFxcXFwufCQpXCIpIDogbnVsbDtcclxuXHRcdG9udHlwZSA9IHR5cGUuaW5kZXhPZiggXCI6XCIgKSA8IDAgPyBcIm9uXCIgKyB0eXBlIDogXCJcIjtcclxuXHJcblx0XHQvLyBIYW5kbGUgYSBnbG9iYWwgdHJpZ2dlclxyXG5cdFx0aWYgKCAhZWxlbSApIHtcclxuXHJcblx0XHRcdC8vIFRPRE86IFN0b3AgdGF1bnRpbmcgdGhlIGRhdGEgY2FjaGU7IHJlbW92ZSBnbG9iYWwgZXZlbnRzIGFuZCBhbHdheXMgYXR0YWNoIHRvIGRvY3VtZW50XHJcblx0XHRcdGNhY2hlID0galF1ZXJ5LmNhY2hlO1xyXG5cdFx0XHRmb3IgKCBpIGluIGNhY2hlICkge1xyXG5cdFx0XHRcdGlmICggY2FjaGVbIGkgXS5ldmVudHMgJiYgY2FjaGVbIGkgXS5ldmVudHNbIHR5cGUgXSApIHtcclxuXHRcdFx0XHRcdGpRdWVyeS5ldmVudC50cmlnZ2VyKCBldmVudCwgZGF0YSwgY2FjaGVbIGkgXS5oYW5kbGUuZWxlbSwgdHJ1ZSApO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gQ2xlYW4gdXAgdGhlIGV2ZW50IGluIGNhc2UgaXQgaXMgYmVpbmcgcmV1c2VkXHJcblx0XHRldmVudC5yZXN1bHQgPSB1bmRlZmluZWQ7XHJcblx0XHRpZiAoICFldmVudC50YXJnZXQgKSB7XHJcblx0XHRcdGV2ZW50LnRhcmdldCA9IGVsZW07XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gQ2xvbmUgYW55IGluY29taW5nIGRhdGEgYW5kIHByZXBlbmQgdGhlIGV2ZW50LCBjcmVhdGluZyB0aGUgaGFuZGxlciBhcmcgbGlzdFxyXG5cdFx0ZGF0YSA9IGRhdGEgIT0gbnVsbCA/IGpRdWVyeS5tYWtlQXJyYXkoIGRhdGEgKSA6IFtdO1xyXG5cdFx0ZGF0YS51bnNoaWZ0KCBldmVudCApO1xyXG5cclxuXHRcdC8vIEFsbG93IHNwZWNpYWwgZXZlbnRzIHRvIGRyYXcgb3V0c2lkZSB0aGUgbGluZXNcclxuXHRcdHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgdHlwZSBdIHx8IHt9O1xyXG5cdFx0aWYgKCBzcGVjaWFsLnRyaWdnZXIgJiYgc3BlY2lhbC50cmlnZ2VyLmFwcGx5KCBlbGVtLCBkYXRhICkgPT09IGZhbHNlICkge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gRGV0ZXJtaW5lIGV2ZW50IHByb3BhZ2F0aW9uIHBhdGggaW4gYWR2YW5jZSwgcGVyIFczQyBldmVudHMgc3BlYyAoIzk5NTEpXHJcblx0XHQvLyBCdWJibGUgdXAgdG8gZG9jdW1lbnQsIHRoZW4gdG8gd2luZG93OyB3YXRjaCBmb3IgYSBnbG9iYWwgb3duZXJEb2N1bWVudCB2YXIgKCM5NzI0KVxyXG5cdFx0ZXZlbnRQYXRoID0gW1sgZWxlbSwgc3BlY2lhbC5iaW5kVHlwZSB8fCB0eXBlIF1dO1xyXG5cdFx0aWYgKCAhb25seUhhbmRsZXJzICYmICFzcGVjaWFsLm5vQnViYmxlICYmICFqUXVlcnkuaXNXaW5kb3coIGVsZW0gKSApIHtcclxuXHJcblx0XHRcdGJ1YmJsZVR5cGUgPSBzcGVjaWFsLmRlbGVnYXRlVHlwZSB8fCB0eXBlO1xyXG5cdFx0XHRjdXIgPSByZm9jdXNNb3JwaC50ZXN0KCBidWJibGVUeXBlICsgdHlwZSApID8gZWxlbSA6IGVsZW0ucGFyZW50Tm9kZTtcclxuXHRcdFx0Zm9yICggb2xkID0gZWxlbTsgY3VyOyBjdXIgPSBjdXIucGFyZW50Tm9kZSApIHtcclxuXHRcdFx0XHRldmVudFBhdGgucHVzaChbIGN1ciwgYnViYmxlVHlwZSBdKTtcclxuXHRcdFx0XHRvbGQgPSBjdXI7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8vIE9ubHkgYWRkIHdpbmRvdyBpZiB3ZSBnb3QgdG8gZG9jdW1lbnQgKGUuZy4sIG5vdCBwbGFpbiBvYmogb3IgZGV0YWNoZWQgRE9NKVxyXG5cdFx0XHRpZiAoIG9sZCA9PT0gKGVsZW0ub3duZXJEb2N1bWVudCB8fCBkb2N1bWVudCkgKSB7XHJcblx0XHRcdFx0ZXZlbnRQYXRoLnB1c2goWyBvbGQuZGVmYXVsdFZpZXcgfHwgb2xkLnBhcmVudFdpbmRvdyB8fCB3aW5kb3csIGJ1YmJsZVR5cGUgXSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHQvLyBGaXJlIGhhbmRsZXJzIG9uIHRoZSBldmVudCBwYXRoXHJcblx0XHRmb3IgKCBpID0gMDsgaSA8IGV2ZW50UGF0aC5sZW5ndGggJiYgIWV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCk7IGkrKyApIHtcclxuXHJcblx0XHRcdGN1ciA9IGV2ZW50UGF0aFtpXVswXTtcclxuXHRcdFx0ZXZlbnQudHlwZSA9IGV2ZW50UGF0aFtpXVsxXTtcclxuXHJcblx0XHRcdGhhbmRsZSA9ICggalF1ZXJ5Ll9kYXRhKCBjdXIsIFwiZXZlbnRzXCIgKSB8fCB7fSApWyBldmVudC50eXBlIF0gJiYgalF1ZXJ5Ll9kYXRhKCBjdXIsIFwiaGFuZGxlXCIgKTtcclxuXHRcdFx0aWYgKCBoYW5kbGUgKSB7XHJcblx0XHRcdFx0aGFuZGxlLmFwcGx5KCBjdXIsIGRhdGEgKTtcclxuXHRcdFx0fVxyXG5cdFx0XHQvLyBOb3RlIHRoYXQgdGhpcyBpcyBhIGJhcmUgSlMgZnVuY3Rpb24gYW5kIG5vdCBhIGpRdWVyeSBoYW5kbGVyXHJcblx0XHRcdGhhbmRsZSA9IG9udHlwZSAmJiBjdXJbIG9udHlwZSBdO1xyXG5cdFx0XHRpZiAoIGhhbmRsZSAmJiBqUXVlcnkuYWNjZXB0RGF0YSggY3VyICkgJiYgaGFuZGxlLmFwcGx5KCBjdXIsIGRhdGEgKSA9PT0gZmFsc2UgKSB7XHJcblx0XHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0ZXZlbnQudHlwZSA9IHR5cGU7XHJcblxyXG5cdFx0Ly8gSWYgbm9ib2R5IHByZXZlbnRlZCB0aGUgZGVmYXVsdCBhY3Rpb24sIGRvIGl0IG5vd1xyXG5cdFx0aWYgKCAhb25seUhhbmRsZXJzICYmICFldmVudC5pc0RlZmF1bHRQcmV2ZW50ZWQoKSApIHtcclxuXHJcblx0XHRcdGlmICggKCFzcGVjaWFsLl9kZWZhdWx0IHx8IHNwZWNpYWwuX2RlZmF1bHQuYXBwbHkoIGVsZW0ub3duZXJEb2N1bWVudCwgZGF0YSApID09PSBmYWxzZSkgJiZcclxuXHRcdFx0XHQhKHR5cGUgPT09IFwiY2xpY2tcIiAmJiBqUXVlcnkubm9kZU5hbWUoIGVsZW0sIFwiYVwiICkpICYmIGpRdWVyeS5hY2NlcHREYXRhKCBlbGVtICkgKSB7XHJcblxyXG5cdFx0XHRcdC8vIENhbGwgYSBuYXRpdmUgRE9NIG1ldGhvZCBvbiB0aGUgdGFyZ2V0IHdpdGggdGhlIHNhbWUgbmFtZSBuYW1lIGFzIHRoZSBldmVudC5cclxuXHRcdFx0XHQvLyBDYW4ndCB1c2UgYW4gLmlzRnVuY3Rpb24oKSBjaGVjayBoZXJlIGJlY2F1c2UgSUU2LzcgZmFpbHMgdGhhdCB0ZXN0LlxyXG5cdFx0XHRcdC8vIERvbid0IGRvIGRlZmF1bHQgYWN0aW9ucyBvbiB3aW5kb3csIHRoYXQncyB3aGVyZSBnbG9iYWwgdmFyaWFibGVzIGJlICgjNjE3MClcclxuXHRcdFx0XHQvLyBJRTw5IGRpZXMgb24gZm9jdXMvYmx1ciB0byBoaWRkZW4gZWxlbWVudCAoIzE0ODYpXHJcblx0XHRcdFx0aWYgKCBvbnR5cGUgJiYgZWxlbVsgdHlwZSBdICYmICgodHlwZSAhPT0gXCJmb2N1c1wiICYmIHR5cGUgIT09IFwiYmx1clwiKSB8fCBldmVudC50YXJnZXQub2Zmc2V0V2lkdGggIT09IDApICYmICFqUXVlcnkuaXNXaW5kb3coIGVsZW0gKSApIHtcclxuXHJcblx0XHRcdFx0XHQvLyBEb24ndCByZS10cmlnZ2VyIGFuIG9uRk9PIGV2ZW50IHdoZW4gd2UgY2FsbCBpdHMgRk9PKCkgbWV0aG9kXHJcblx0XHRcdFx0XHRvbGQgPSBlbGVtWyBvbnR5cGUgXTtcclxuXHJcblx0XHRcdFx0XHRpZiAoIG9sZCApIHtcclxuXHRcdFx0XHRcdFx0ZWxlbVsgb250eXBlIF0gPSBudWxsO1xyXG5cdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdC8vIFByZXZlbnQgcmUtdHJpZ2dlcmluZyBvZiB0aGUgc2FtZSBldmVudCwgc2luY2Ugd2UgYWxyZWFkeSBidWJibGVkIGl0IGFib3ZlXHJcblx0XHRcdFx0XHRqUXVlcnkuZXZlbnQudHJpZ2dlcmVkID0gdHlwZTtcclxuXHRcdFx0XHRcdGVsZW1bIHR5cGUgXSgpO1xyXG5cdFx0XHRcdFx0alF1ZXJ5LmV2ZW50LnRyaWdnZXJlZCA9IHVuZGVmaW5lZDtcclxuXHJcblx0XHRcdFx0XHRpZiAoIG9sZCApIHtcclxuXHRcdFx0XHRcdFx0ZWxlbVsgb250eXBlIF0gPSBvbGQ7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIGV2ZW50LnJlc3VsdDtcclxuXHR9LFxyXG5cclxuXHRkaXNwYXRjaDogZnVuY3Rpb24oIGV2ZW50ICkge1xyXG5cclxuXHRcdC8vIE1ha2UgYSB3cml0YWJsZSBqUXVlcnkuRXZlbnQgZnJvbSB0aGUgbmF0aXZlIGV2ZW50IG9iamVjdFxyXG5cdFx0ZXZlbnQgPSBqUXVlcnkuZXZlbnQuZml4KCBldmVudCB8fCB3aW5kb3cuZXZlbnQgKTtcclxuXHJcblx0XHR2YXIgaSwgaiwgY3VyLCByZXQsIHNlbE1hdGNoLCBtYXRjaGVkLCBtYXRjaGVzLCBoYW5kbGVPYmosIHNlbCwgcmVsYXRlZCxcclxuXHRcdFx0aGFuZGxlcnMgPSAoIChqUXVlcnkuX2RhdGEoIHRoaXMsIFwiZXZlbnRzXCIgKSB8fCB7fSApWyBldmVudC50eXBlIF0gfHwgW10pLFxyXG5cdFx0XHRkZWxlZ2F0ZUNvdW50ID0gaGFuZGxlcnMuZGVsZWdhdGVDb3VudCxcclxuXHRcdFx0YXJncyA9IFtdLnNsaWNlLmNhbGwoIGFyZ3VtZW50cyApLFxyXG5cdFx0XHRydW5fYWxsID0gIWV2ZW50LmV4Y2x1c2l2ZSAmJiAhZXZlbnQubmFtZXNwYWNlLFxyXG5cdFx0XHRzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWxbIGV2ZW50LnR5cGUgXSB8fCB7fSxcclxuXHRcdFx0aGFuZGxlclF1ZXVlID0gW107XHJcblxyXG5cdFx0Ly8gVXNlIHRoZSBmaXgtZWQgalF1ZXJ5LkV2ZW50IHJhdGhlciB0aGFuIHRoZSAocmVhZC1vbmx5KSBuYXRpdmUgZXZlbnRcclxuXHRcdGFyZ3NbMF0gPSBldmVudDtcclxuXHRcdGV2ZW50LmRlbGVnYXRlVGFyZ2V0ID0gdGhpcztcclxuXHJcblx0XHQvLyBDYWxsIHRoZSBwcmVEaXNwYXRjaCBob29rIGZvciB0aGUgbWFwcGVkIHR5cGUsIGFuZCBsZXQgaXQgYmFpbCBpZiBkZXNpcmVkXHJcblx0XHRpZiAoIHNwZWNpYWwucHJlRGlzcGF0Y2ggJiYgc3BlY2lhbC5wcmVEaXNwYXRjaC5jYWxsKCB0aGlzLCBldmVudCApID09PSBmYWxzZSApIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIERldGVybWluZSBoYW5kbGVycyB0aGF0IHNob3VsZCBydW4gaWYgdGhlcmUgYXJlIGRlbGVnYXRlZCBldmVudHNcclxuXHRcdC8vIEF2b2lkIG5vbi1sZWZ0LWNsaWNrIGJ1YmJsaW5nIGluIEZpcmVmb3ggKCMzODYxKVxyXG5cdFx0aWYgKCBkZWxlZ2F0ZUNvdW50ICYmICEoZXZlbnQuYnV0dG9uICYmIGV2ZW50LnR5cGUgPT09IFwiY2xpY2tcIikgKSB7XHJcblxyXG5cdFx0XHRmb3IgKCBjdXIgPSBldmVudC50YXJnZXQ7IGN1ciAhPSB0aGlzOyBjdXIgPSBjdXIucGFyZW50Tm9kZSB8fCB0aGlzICkge1xyXG5cclxuXHRcdFx0XHQvLyBEb24ndCBwcm9jZXNzIGNsaWNrcyAoT05MWSkgb24gZGlzYWJsZWQgZWxlbWVudHMgKCM2OTExLCAjODE2NSwgIzExMzgyLCAjMTE3NjQpXHJcblx0XHRcdFx0aWYgKCBjdXIuZGlzYWJsZWQgIT09IHRydWUgfHwgZXZlbnQudHlwZSAhPT0gXCJjbGlja1wiICkge1xyXG5cdFx0XHRcdFx0c2VsTWF0Y2ggPSB7fTtcclxuXHRcdFx0XHRcdG1hdGNoZXMgPSBbXTtcclxuXHRcdFx0XHRcdGZvciAoIGkgPSAwOyBpIDwgZGVsZWdhdGVDb3VudDsgaSsrICkge1xyXG5cdFx0XHRcdFx0XHRoYW5kbGVPYmogPSBoYW5kbGVyc1sgaSBdO1xyXG5cdFx0XHRcdFx0XHRzZWwgPSBoYW5kbGVPYmouc2VsZWN0b3I7XHJcblxyXG5cdFx0XHRcdFx0XHRpZiAoIHNlbE1hdGNoWyBzZWwgXSA9PT0gdW5kZWZpbmVkICkge1xyXG5cdFx0XHRcdFx0XHRcdHNlbE1hdGNoWyBzZWwgXSA9IGpRdWVyeSggc2VsLCB0aGlzICkuaW5kZXgoIGN1ciApID49IDA7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0aWYgKCBzZWxNYXRjaFsgc2VsIF0gKSB7XHJcblx0XHRcdFx0XHRcdFx0bWF0Y2hlcy5wdXNoKCBoYW5kbGVPYmogKTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0aWYgKCBtYXRjaGVzLmxlbmd0aCApIHtcclxuXHRcdFx0XHRcdFx0aGFuZGxlclF1ZXVlLnB1c2goeyBlbGVtOiBjdXIsIG1hdGNoZXM6IG1hdGNoZXMgfSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gQWRkIHRoZSByZW1haW5pbmcgKGRpcmVjdGx5LWJvdW5kKSBoYW5kbGVyc1xyXG5cdFx0aWYgKCBoYW5kbGVycy5sZW5ndGggPiBkZWxlZ2F0ZUNvdW50ICkge1xyXG5cdFx0XHRoYW5kbGVyUXVldWUucHVzaCh7IGVsZW06IHRoaXMsIG1hdGNoZXM6IGhhbmRsZXJzLnNsaWNlKCBkZWxlZ2F0ZUNvdW50ICkgfSk7XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gUnVuIGRlbGVnYXRlcyBmaXJzdDsgdGhleSBtYXkgd2FudCB0byBzdG9wIHByb3BhZ2F0aW9uIGJlbmVhdGggdXNcclxuXHRcdGZvciAoIGkgPSAwOyBpIDwgaGFuZGxlclF1ZXVlLmxlbmd0aCAmJiAhZXZlbnQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKTsgaSsrICkge1xyXG5cdFx0XHRtYXRjaGVkID0gaGFuZGxlclF1ZXVlWyBpIF07XHJcblx0XHRcdGV2ZW50LmN1cnJlbnRUYXJnZXQgPSBtYXRjaGVkLmVsZW07XHJcblxyXG5cdFx0XHRmb3IgKCBqID0gMDsgaiA8IG1hdGNoZWQubWF0Y2hlcy5sZW5ndGggJiYgIWV2ZW50LmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKCk7IGorKyApIHtcclxuXHRcdFx0XHRoYW5kbGVPYmogPSBtYXRjaGVkLm1hdGNoZXNbIGogXTtcclxuXHJcblx0XHRcdFx0Ly8gVHJpZ2dlcmVkIGV2ZW50IG11c3QgZWl0aGVyIDEpIGJlIG5vbi1leGNsdXNpdmUgYW5kIGhhdmUgbm8gbmFtZXNwYWNlLCBvclxyXG5cdFx0XHRcdC8vIDIpIGhhdmUgbmFtZXNwYWNlKHMpIGEgc3Vic2V0IG9yIGVxdWFsIHRvIHRob3NlIGluIHRoZSBib3VuZCBldmVudCAoYm90aCBjYW4gaGF2ZSBubyBuYW1lc3BhY2UpLlxyXG5cdFx0XHRcdGlmICggcnVuX2FsbCB8fCAoIWV2ZW50Lm5hbWVzcGFjZSAmJiAhaGFuZGxlT2JqLm5hbWVzcGFjZSkgfHwgZXZlbnQubmFtZXNwYWNlX3JlICYmIGV2ZW50Lm5hbWVzcGFjZV9yZS50ZXN0KCBoYW5kbGVPYmoubmFtZXNwYWNlICkgKSB7XHJcblxyXG5cdFx0XHRcdFx0ZXZlbnQuZGF0YSA9IGhhbmRsZU9iai5kYXRhO1xyXG5cdFx0XHRcdFx0ZXZlbnQuaGFuZGxlT2JqID0gaGFuZGxlT2JqO1xyXG5cclxuXHRcdFx0XHRcdHJldCA9ICggKGpRdWVyeS5ldmVudC5zcGVjaWFsWyBoYW5kbGVPYmoub3JpZ1R5cGUgXSB8fCB7fSkuaGFuZGxlIHx8IGhhbmRsZU9iai5oYW5kbGVyIClcclxuXHRcdFx0XHRcdFx0XHQuYXBwbHkoIG1hdGNoZWQuZWxlbSwgYXJncyApO1xyXG5cclxuXHRcdFx0XHRcdGlmICggcmV0ICE9PSB1bmRlZmluZWQgKSB7XHJcblx0XHRcdFx0XHRcdGV2ZW50LnJlc3VsdCA9IHJldDtcclxuXHRcdFx0XHRcdFx0aWYgKCByZXQgPT09IGZhbHNlICkge1xyXG5cdFx0XHRcdFx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblx0XHRcdFx0XHRcdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHQvLyBDYWxsIHRoZSBwb3N0RGlzcGF0Y2ggaG9vayBmb3IgdGhlIG1hcHBlZCB0eXBlXHJcblx0XHRpZiAoIHNwZWNpYWwucG9zdERpc3BhdGNoICkge1xyXG5cdFx0XHRzcGVjaWFsLnBvc3REaXNwYXRjaC5jYWxsKCB0aGlzLCBldmVudCApO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiBldmVudC5yZXN1bHQ7XHJcblx0fSxcclxuXHJcblx0Ly8gSW5jbHVkZXMgc29tZSBldmVudCBwcm9wcyBzaGFyZWQgYnkgS2V5RXZlbnQgYW5kIE1vdXNlRXZlbnRcclxuXHQvLyAqKiogYXR0ckNoYW5nZSBhdHRyTmFtZSByZWxhdGVkTm9kZSBzcmNFbGVtZW50ICBhcmUgbm90IG5vcm1hbGl6ZWQsIG5vbi1XM0MsIGRlcHJlY2F0ZWQsIHdpbGwgYmUgcmVtb3ZlZCBpbiAxLjggKioqXHJcblx0cHJvcHM6IFwiYXR0ckNoYW5nZSBhdHRyTmFtZSByZWxhdGVkTm9kZSBzcmNFbGVtZW50IGFsdEtleSBidWJibGVzIGNhbmNlbGFibGUgY3RybEtleSBjdXJyZW50VGFyZ2V0IGV2ZW50UGhhc2UgbWV0YUtleSByZWxhdGVkVGFyZ2V0IHNoaWZ0S2V5IHRhcmdldCB0aW1lU3RhbXAgdmlldyB3aGljaFwiLnNwbGl0KFwiIFwiKSxcclxuXHJcblx0Zml4SG9va3M6IHt9LFxyXG5cclxuXHRrZXlIb29rczoge1xyXG5cdFx0cHJvcHM6IFwiY2hhciBjaGFyQ29kZSBrZXkga2V5Q29kZVwiLnNwbGl0KFwiIFwiKSxcclxuXHRcdGZpbHRlcjogZnVuY3Rpb24oIGV2ZW50LCBvcmlnaW5hbCApIHtcclxuXHJcblx0XHRcdC8vIEFkZCB3aGljaCBmb3Iga2V5IGV2ZW50c1xyXG5cdFx0XHRpZiAoIGV2ZW50LndoaWNoID09IG51bGwgKSB7XHJcblx0XHRcdFx0ZXZlbnQud2hpY2ggPSBvcmlnaW5hbC5jaGFyQ29kZSAhPSBudWxsID8gb3JpZ2luYWwuY2hhckNvZGUgOiBvcmlnaW5hbC5rZXlDb2RlO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRyZXR1cm4gZXZlbnQ7XHJcblx0XHR9XHJcblx0fSxcclxuXHJcblx0bW91c2VIb29rczoge1xyXG5cdFx0cHJvcHM6IFwiYnV0dG9uIGJ1dHRvbnMgY2xpZW50WCBjbGllbnRZIGZyb21FbGVtZW50IG9mZnNldFggb2Zmc2V0WSBwYWdlWCBwYWdlWSBzY3JlZW5YIHNjcmVlblkgdG9FbGVtZW50XCIuc3BsaXQoXCIgXCIpLFxyXG5cdFx0ZmlsdGVyOiBmdW5jdGlvbiggZXZlbnQsIG9yaWdpbmFsICkge1xyXG5cdFx0XHR2YXIgZXZlbnREb2MsIGRvYywgYm9keSxcclxuXHRcdFx0XHRidXR0b24gPSBvcmlnaW5hbC5idXR0b24sXHJcblx0XHRcdFx0ZnJvbUVsZW1lbnQgPSBvcmlnaW5hbC5mcm9tRWxlbWVudDtcclxuXHJcblx0XHRcdC8vIENhbGN1bGF0ZSBwYWdlWC9ZIGlmIG1pc3NpbmcgYW5kIGNsaWVudFgvWSBhdmFpbGFibGVcclxuXHRcdFx0aWYgKCBldmVudC5wYWdlWCA9PSBudWxsICYmIG9yaWdpbmFsLmNsaWVudFggIT0gbnVsbCApIHtcclxuXHRcdFx0XHRldmVudERvYyA9IGV2ZW50LnRhcmdldC5vd25lckRvY3VtZW50IHx8IGRvY3VtZW50O1xyXG5cdFx0XHRcdGRvYyA9IGV2ZW50RG9jLmRvY3VtZW50RWxlbWVudDtcclxuXHRcdFx0XHRib2R5ID0gZXZlbnREb2MuYm9keTtcclxuXHJcblx0XHRcdFx0ZXZlbnQucGFnZVggPSBvcmlnaW5hbC5jbGllbnRYICsgKCBkb2MgJiYgZG9jLnNjcm9sbExlZnQgfHwgYm9keSAmJiBib2R5LnNjcm9sbExlZnQgfHwgMCApIC0gKCBkb2MgJiYgZG9jLmNsaWVudExlZnQgfHwgYm9keSAmJiBib2R5LmNsaWVudExlZnQgfHwgMCApO1xyXG5cdFx0XHRcdGV2ZW50LnBhZ2VZID0gb3JpZ2luYWwuY2xpZW50WSArICggZG9jICYmIGRvYy5zY3JvbGxUb3AgIHx8IGJvZHkgJiYgYm9keS5zY3JvbGxUb3AgIHx8IDAgKSAtICggZG9jICYmIGRvYy5jbGllbnRUb3AgIHx8IGJvZHkgJiYgYm9keS5jbGllbnRUb3AgIHx8IDAgKTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Ly8gQWRkIHJlbGF0ZWRUYXJnZXQsIGlmIG5lY2Vzc2FyeVxyXG5cdFx0XHRpZiAoICFldmVudC5yZWxhdGVkVGFyZ2V0ICYmIGZyb21FbGVtZW50ICkge1xyXG5cdFx0XHRcdGV2ZW50LnJlbGF0ZWRUYXJnZXQgPSBmcm9tRWxlbWVudCA9PT0gZXZlbnQudGFyZ2V0ID8gb3JpZ2luYWwudG9FbGVtZW50IDogZnJvbUVsZW1lbnQ7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8vIEFkZCB3aGljaCBmb3IgY2xpY2s6IDEgPT09IGxlZnQ7IDIgPT09IG1pZGRsZTsgMyA9PT0gcmlnaHRcclxuXHRcdFx0Ly8gTm90ZTogYnV0dG9uIGlzIG5vdCBub3JtYWxpemVkLCBzbyBkb24ndCB1c2UgaXRcclxuXHRcdFx0aWYgKCAhZXZlbnQud2hpY2ggJiYgYnV0dG9uICE9PSB1bmRlZmluZWQgKSB7XHJcblx0XHRcdFx0ZXZlbnQud2hpY2ggPSAoIGJ1dHRvbiAmIDEgPyAxIDogKCBidXR0b24gJiAyID8gMyA6ICggYnV0dG9uICYgNCA/IDIgOiAwICkgKSApO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRyZXR1cm4gZXZlbnQ7XHJcblx0XHR9XHJcblx0fSxcclxuXHJcblx0Zml4OiBmdW5jdGlvbiggZXZlbnQgKSB7XHJcblx0XHRpZiAoIGV2ZW50WyBqUXVlcnkuZXhwYW5kbyBdICkge1xyXG5cdFx0XHRyZXR1cm4gZXZlbnQ7XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gQ3JlYXRlIGEgd3JpdGFibGUgY29weSBvZiB0aGUgZXZlbnQgb2JqZWN0IGFuZCBub3JtYWxpemUgc29tZSBwcm9wZXJ0aWVzXHJcblx0XHR2YXIgaSwgcHJvcCxcclxuXHRcdFx0b3JpZ2luYWxFdmVudCA9IGV2ZW50LFxyXG5cdFx0XHRmaXhIb29rID0galF1ZXJ5LmV2ZW50LmZpeEhvb2tzWyBldmVudC50eXBlIF0gfHwge30sXHJcblx0XHRcdGNvcHkgPSBmaXhIb29rLnByb3BzID8gdGhpcy5wcm9wcy5jb25jYXQoIGZpeEhvb2sucHJvcHMgKSA6IHRoaXMucHJvcHM7XHJcblxyXG5cdFx0ZXZlbnQgPSBqUXVlcnkuRXZlbnQoIG9yaWdpbmFsRXZlbnQgKTtcclxuXHJcblx0XHRmb3IgKCBpID0gY29weS5sZW5ndGg7IGk7ICkge1xyXG5cdFx0XHRwcm9wID0gY29weVsgLS1pIF07XHJcblx0XHRcdGV2ZW50WyBwcm9wIF0gPSBvcmlnaW5hbEV2ZW50WyBwcm9wIF07XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gRml4IHRhcmdldCBwcm9wZXJ0eSwgaWYgbmVjZXNzYXJ5ICgjMTkyNSwgSUUgNi83LzggJiBTYWZhcmkyKVxyXG5cdFx0aWYgKCAhZXZlbnQudGFyZ2V0ICkge1xyXG5cdFx0XHRldmVudC50YXJnZXQgPSBvcmlnaW5hbEV2ZW50LnNyY0VsZW1lbnQgfHwgZG9jdW1lbnQ7XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gVGFyZ2V0IHNob3VsZCBub3QgYmUgYSB0ZXh0IG5vZGUgKCM1MDQsIFNhZmFyaSlcclxuXHRcdGlmICggZXZlbnQudGFyZ2V0Lm5vZGVUeXBlID09PSAzICkge1xyXG5cdFx0XHRldmVudC50YXJnZXQgPSBldmVudC50YXJnZXQucGFyZW50Tm9kZTtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBGb3IgbW91c2Uva2V5IGV2ZW50cywgbWV0YUtleT09ZmFsc2UgaWYgaXQncyB1bmRlZmluZWQgKCMzMzY4LCAjMTEzMjg7IElFNi83LzgpXHJcblx0XHRldmVudC5tZXRhS2V5ID0gISFldmVudC5tZXRhS2V5O1xyXG5cclxuXHRcdHJldHVybiBmaXhIb29rLmZpbHRlcj8gZml4SG9vay5maWx0ZXIoIGV2ZW50LCBvcmlnaW5hbEV2ZW50ICkgOiBldmVudDtcclxuXHR9LFxyXG5cclxuXHRzcGVjaWFsOiB7XHJcblx0XHRsb2FkOiB7XHJcblx0XHRcdC8vIFByZXZlbnQgdHJpZ2dlcmVkIGltYWdlLmxvYWQgZXZlbnRzIGZyb20gYnViYmxpbmcgdG8gd2luZG93LmxvYWRcclxuXHRcdFx0bm9CdWJibGU6IHRydWVcclxuXHRcdH0sXHJcblxyXG5cdFx0Zm9jdXM6IHtcclxuXHRcdFx0ZGVsZWdhdGVUeXBlOiBcImZvY3VzaW5cIlxyXG5cdFx0fSxcclxuXHRcdGJsdXI6IHtcclxuXHRcdFx0ZGVsZWdhdGVUeXBlOiBcImZvY3Vzb3V0XCJcclxuXHRcdH0sXHJcblxyXG5cdFx0YmVmb3JldW5sb2FkOiB7XHJcblx0XHRcdHNldHVwOiBmdW5jdGlvbiggZGF0YSwgbmFtZXNwYWNlcywgZXZlbnRIYW5kbGUgKSB7XHJcblx0XHRcdFx0Ly8gV2Ugb25seSB3YW50IHRvIGRvIHRoaXMgc3BlY2lhbCBjYXNlIG9uIHdpbmRvd3NcclxuXHRcdFx0XHRpZiAoIGpRdWVyeS5pc1dpbmRvdyggdGhpcyApICkge1xyXG5cdFx0XHRcdFx0dGhpcy5vbmJlZm9yZXVubG9hZCA9IGV2ZW50SGFuZGxlO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHJcblx0XHRcdHRlYXJkb3duOiBmdW5jdGlvbiggbmFtZXNwYWNlcywgZXZlbnRIYW5kbGUgKSB7XHJcblx0XHRcdFx0aWYgKCB0aGlzLm9uYmVmb3JldW5sb2FkID09PSBldmVudEhhbmRsZSApIHtcclxuXHRcdFx0XHRcdHRoaXMub25iZWZvcmV1bmxvYWQgPSBudWxsO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH0sXHJcblxyXG5cdHNpbXVsYXRlOiBmdW5jdGlvbiggdHlwZSwgZWxlbSwgZXZlbnQsIGJ1YmJsZSApIHtcclxuXHRcdC8vIFBpZ2d5YmFjayBvbiBhIGRvbm9yIGV2ZW50IHRvIHNpbXVsYXRlIGEgZGlmZmVyZW50IG9uZS5cclxuXHRcdC8vIEZha2Ugb3JpZ2luYWxFdmVudCB0byBhdm9pZCBkb25vcidzIHN0b3BQcm9wYWdhdGlvbiwgYnV0IGlmIHRoZVxyXG5cdFx0Ly8gc2ltdWxhdGVkIGV2ZW50IHByZXZlbnRzIGRlZmF1bHQgdGhlbiB3ZSBkbyB0aGUgc2FtZSBvbiB0aGUgZG9ub3IuXHJcblx0XHR2YXIgZSA9IGpRdWVyeS5leHRlbmQoXHJcblx0XHRcdG5ldyBqUXVlcnkuRXZlbnQoKSxcclxuXHRcdFx0ZXZlbnQsXHJcblx0XHRcdHsgdHlwZTogdHlwZSxcclxuXHRcdFx0XHRpc1NpbXVsYXRlZDogdHJ1ZSxcclxuXHRcdFx0XHRvcmlnaW5hbEV2ZW50OiB7fVxyXG5cdFx0XHR9XHJcblx0XHQpO1xyXG5cdFx0aWYgKCBidWJibGUgKSB7XHJcblx0XHRcdGpRdWVyeS5ldmVudC50cmlnZ2VyKCBlLCBudWxsLCBlbGVtICk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRqUXVlcnkuZXZlbnQuZGlzcGF0Y2guY2FsbCggZWxlbSwgZSApO1xyXG5cdFx0fVxyXG5cdFx0aWYgKCBlLmlzRGVmYXVsdFByZXZlbnRlZCgpICkge1xyXG5cdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cdFx0fVxyXG5cdH1cclxufTtcclxuXHJcbi8vIFNvbWUgcGx1Z2lucyBhcmUgdXNpbmcsIGJ1dCBpdCdzIHVuZG9jdW1lbnRlZC9kZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQuXHJcbi8vIFRoZSAxLjcgc3BlY2lhbCBldmVudCBpbnRlcmZhY2Ugc2hvdWxkIHByb3ZpZGUgYWxsIHRoZSBob29rcyBuZWVkZWQgbm93LlxyXG5qUXVlcnkuZXZlbnQuaGFuZGxlID0galF1ZXJ5LmV2ZW50LmRpc3BhdGNoO1xyXG5cclxualF1ZXJ5LnJlbW92ZUV2ZW50ID0gZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lciA/XHJcblx0ZnVuY3Rpb24oIGVsZW0sIHR5cGUsIGhhbmRsZSApIHtcclxuXHRcdGlmICggZWxlbS5yZW1vdmVFdmVudExpc3RlbmVyICkge1xyXG5cdFx0XHRlbGVtLnJlbW92ZUV2ZW50TGlzdGVuZXIoIHR5cGUsIGhhbmRsZSwgZmFsc2UgKTtcclxuXHRcdH1cclxuXHR9IDpcclxuXHRmdW5jdGlvbiggZWxlbSwgdHlwZSwgaGFuZGxlICkge1xyXG5cdFx0dmFyIG5hbWUgPSBcIm9uXCIgKyB0eXBlO1xyXG5cclxuXHRcdGlmICggZWxlbS5kZXRhY2hFdmVudCApIHtcclxuXHJcblx0XHRcdC8vICM4NTQ1LCAjNzA1NCwgcHJldmVudGluZyBtZW1vcnkgbGVha3MgZm9yIGN1c3RvbSBldmVudHMgaW4gSUU2LTgg4oCTXHJcblx0XHRcdC8vIGRldGFjaEV2ZW50IG5lZWRlZCBwcm9wZXJ0eSBvbiBlbGVtZW50LCBieSBuYW1lIG9mIHRoYXQgZXZlbnQsIHRvIHByb3Blcmx5IGV4cG9zZSBpdCB0byBHQ1xyXG5cdFx0XHRpZiAoIHR5cGVvZiBlbGVtWyBuYW1lIF0gPT09IFwidW5kZWZpbmVkXCIgKSB7XHJcblx0XHRcdFx0ZWxlbVsgbmFtZSBdID0gbnVsbDtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0ZWxlbS5kZXRhY2hFdmVudCggbmFtZSwgaGFuZGxlICk7XHJcblx0XHR9XHJcblx0fTtcclxuXHJcbmpRdWVyeS5FdmVudCA9IGZ1bmN0aW9uKCBzcmMsIHByb3BzICkge1xyXG5cdC8vIEFsbG93IGluc3RhbnRpYXRpb24gd2l0aG91dCB0aGUgJ25ldycga2V5d29yZFxyXG5cdGlmICggISh0aGlzIGluc3RhbmNlb2YgalF1ZXJ5LkV2ZW50KSApIHtcclxuXHRcdHJldHVybiBuZXcgalF1ZXJ5LkV2ZW50KCBzcmMsIHByb3BzICk7XHJcblx0fVxyXG5cclxuXHQvLyBFdmVudCBvYmplY3RcclxuXHRpZiAoIHNyYyAmJiBzcmMudHlwZSApIHtcclxuXHRcdHRoaXMub3JpZ2luYWxFdmVudCA9IHNyYztcclxuXHRcdHRoaXMudHlwZSA9IHNyYy50eXBlO1xyXG5cclxuXHRcdC8vIEV2ZW50cyBidWJibGluZyB1cCB0aGUgZG9jdW1lbnQgbWF5IGhhdmUgYmVlbiBtYXJrZWQgYXMgcHJldmVudGVkXHJcblx0XHQvLyBieSBhIGhhbmRsZXIgbG93ZXIgZG93biB0aGUgdHJlZTsgcmVmbGVjdCB0aGUgY29ycmVjdCB2YWx1ZS5cclxuXHRcdHRoaXMuaXNEZWZhdWx0UHJldmVudGVkID0gKCBzcmMuZGVmYXVsdFByZXZlbnRlZCB8fCBzcmMucmV0dXJuVmFsdWUgPT09IGZhbHNlIHx8XHJcblx0XHRcdHNyYy5nZXRQcmV2ZW50RGVmYXVsdCAmJiBzcmMuZ2V0UHJldmVudERlZmF1bHQoKSApID8gcmV0dXJuVHJ1ZSA6IHJldHVybkZhbHNlO1xyXG5cclxuXHQvLyBFdmVudCB0eXBlXHJcblx0fSBlbHNlIHtcclxuXHRcdHRoaXMudHlwZSA9IHNyYztcclxuXHR9XHJcblxyXG5cdC8vIFB1dCBleHBsaWNpdGx5IHByb3ZpZGVkIHByb3BlcnRpZXMgb250byB0aGUgZXZlbnQgb2JqZWN0XHJcblx0aWYgKCBwcm9wcyApIHtcclxuXHRcdGpRdWVyeS5leHRlbmQoIHRoaXMsIHByb3BzICk7XHJcblx0fVxyXG5cclxuXHQvLyBDcmVhdGUgYSB0aW1lc3RhbXAgaWYgaW5jb21pbmcgZXZlbnQgZG9lc24ndCBoYXZlIG9uZVxyXG5cdHRoaXMudGltZVN0YW1wID0gc3JjICYmIHNyYy50aW1lU3RhbXAgfHwgalF1ZXJ5Lm5vdygpO1xyXG5cclxuXHQvLyBNYXJrIGl0IGFzIGZpeGVkXHJcblx0dGhpc1sgalF1ZXJ5LmV4cGFuZG8gXSA9IHRydWU7XHJcbn07XHJcblxyXG5mdW5jdGlvbiByZXR1cm5GYWxzZSgpIHtcclxuXHRyZXR1cm4gZmFsc2U7XHJcbn1cclxuZnVuY3Rpb24gcmV0dXJuVHJ1ZSgpIHtcclxuXHRyZXR1cm4gdHJ1ZTtcclxufVxyXG5cclxuLy8galF1ZXJ5LkV2ZW50IGlzIGJhc2VkIG9uIERPTTMgRXZlbnRzIGFzIHNwZWNpZmllZCBieSB0aGUgRUNNQVNjcmlwdCBMYW5ndWFnZSBCaW5kaW5nXHJcbi8vIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDMvV0QtRE9NLUxldmVsLTMtRXZlbnRzLTIwMDMwMzMxL2VjbWEtc2NyaXB0LWJpbmRpbmcuaHRtbFxyXG5qUXVlcnkuRXZlbnQucHJvdG90eXBlID0ge1xyXG5cdHByZXZlbnREZWZhdWx0OiBmdW5jdGlvbigpIHtcclxuXHRcdHRoaXMuaXNEZWZhdWx0UHJldmVudGVkID0gcmV0dXJuVHJ1ZTtcclxuXHJcblx0XHR2YXIgZSA9IHRoaXMub3JpZ2luYWxFdmVudDtcclxuXHRcdGlmICggIWUgKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBpZiBwcmV2ZW50RGVmYXVsdCBleGlzdHMgcnVuIGl0IG9uIHRoZSBvcmlnaW5hbCBldmVudFxyXG5cdFx0aWYgKCBlLnByZXZlbnREZWZhdWx0ICkge1xyXG5cdFx0XHRlLnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG5cdFx0Ly8gb3RoZXJ3aXNlIHNldCB0aGUgcmV0dXJuVmFsdWUgcHJvcGVydHkgb2YgdGhlIG9yaWdpbmFsIGV2ZW50IHRvIGZhbHNlIChJRSlcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGUucmV0dXJuVmFsdWUgPSBmYWxzZTtcclxuXHRcdH1cclxuXHR9LFxyXG5cdHN0b3BQcm9wYWdhdGlvbjogZnVuY3Rpb24oKSB7XHJcblx0XHR0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkID0gcmV0dXJuVHJ1ZTtcclxuXHJcblx0XHR2YXIgZSA9IHRoaXMub3JpZ2luYWxFdmVudDtcclxuXHRcdGlmICggIWUgKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdC8vIGlmIHN0b3BQcm9wYWdhdGlvbiBleGlzdHMgcnVuIGl0IG9uIHRoZSBvcmlnaW5hbCBldmVudFxyXG5cdFx0aWYgKCBlLnN0b3BQcm9wYWdhdGlvbiApIHtcclxuXHRcdFx0ZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHRcdH1cclxuXHRcdC8vIG90aGVyd2lzZSBzZXQgdGhlIGNhbmNlbEJ1YmJsZSBwcm9wZXJ0eSBvZiB0aGUgb3JpZ2luYWwgZXZlbnQgdG8gdHJ1ZSAoSUUpXHJcblx0XHRlLmNhbmNlbEJ1YmJsZSA9IHRydWU7XHJcblx0fSxcclxuXHRzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246IGZ1bmN0aW9uKCkge1xyXG5cdFx0dGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCA9IHJldHVyblRydWU7XHJcblx0XHR0aGlzLnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cdH0sXHJcblx0aXNEZWZhdWx0UHJldmVudGVkOiByZXR1cm5GYWxzZSxcclxuXHRpc1Byb3BhZ2F0aW9uU3RvcHBlZDogcmV0dXJuRmFsc2UsXHJcblx0aXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ6IHJldHVybkZhbHNlXHJcbn07XHJcblxyXG4vLyBDcmVhdGUgbW91c2VlbnRlci9sZWF2ZSBldmVudHMgdXNpbmcgbW91c2VvdmVyL291dCBhbmQgZXZlbnQtdGltZSBjaGVja3NcclxualF1ZXJ5LmVhY2goe1xyXG5cdG1vdXNlZW50ZXI6IFwibW91c2VvdmVyXCIsXHJcblx0bW91c2VsZWF2ZTogXCJtb3VzZW91dFwiXHJcbn0sIGZ1bmN0aW9uKCBvcmlnLCBmaXggKSB7XHJcblx0alF1ZXJ5LmV2ZW50LnNwZWNpYWxbIG9yaWcgXSA9IHtcclxuXHRcdGRlbGVnYXRlVHlwZTogZml4LFxyXG5cdFx0YmluZFR5cGU6IGZpeCxcclxuXHJcblx0XHRoYW5kbGU6IGZ1bmN0aW9uKCBldmVudCApIHtcclxuXHRcdFx0dmFyIHJldCxcclxuXHRcdFx0XHR0YXJnZXQgPSB0aGlzLFxyXG5cdFx0XHRcdHJlbGF0ZWQgPSBldmVudC5yZWxhdGVkVGFyZ2V0LFxyXG5cdFx0XHRcdGhhbmRsZU9iaiA9IGV2ZW50LmhhbmRsZU9iaixcclxuXHRcdFx0XHRzZWxlY3RvciA9IGhhbmRsZU9iai5zZWxlY3RvcjtcclxuXHJcblx0XHRcdC8vIEZvciBtb3VzZW50ZXIvbGVhdmUgY2FsbCB0aGUgaGFuZGxlciBpZiByZWxhdGVkIGlzIG91dHNpZGUgdGhlIHRhcmdldC5cclxuXHRcdFx0Ly8gTkI6IE5vIHJlbGF0ZWRUYXJnZXQgaWYgdGhlIG1vdXNlIGxlZnQvZW50ZXJlZCB0aGUgYnJvd3NlciB3aW5kb3dcclxuXHRcdFx0aWYgKCAhcmVsYXRlZCB8fCAocmVsYXRlZCAhPT0gdGFyZ2V0ICYmICFqUXVlcnkuY29udGFpbnMoIHRhcmdldCwgcmVsYXRlZCApKSApIHtcclxuXHRcdFx0XHRldmVudC50eXBlID0gaGFuZGxlT2JqLm9yaWdUeXBlO1xyXG5cdFx0XHRcdHJldCA9IGhhbmRsZU9iai5oYW5kbGVyLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTtcclxuXHRcdFx0XHRldmVudC50eXBlID0gZml4O1xyXG5cdFx0XHR9XHJcblx0XHRcdHJldHVybiByZXQ7XHJcblx0XHR9XHJcblx0fTtcclxufSk7XHJcblxyXG4vLyBJRSBzdWJtaXQgZGVsZWdhdGlvblxyXG5pZiAoICFqUXVlcnkuc3VwcG9ydC5zdWJtaXRCdWJibGVzICkge1xyXG5cclxuXHRqUXVlcnkuZXZlbnQuc3BlY2lhbC5zdWJtaXQgPSB7XHJcblx0XHRzZXR1cDogZnVuY3Rpb24oKSB7XHJcblx0XHRcdC8vIE9ubHkgbmVlZCB0aGlzIGZvciBkZWxlZ2F0ZWQgZm9ybSBzdWJtaXQgZXZlbnRzXHJcblx0XHRcdGlmICggalF1ZXJ5Lm5vZGVOYW1lKCB0aGlzLCBcImZvcm1cIiApICkge1xyXG5cdFx0XHRcdHJldHVybiBmYWxzZTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Ly8gTGF6eS1hZGQgYSBzdWJtaXQgaGFuZGxlciB3aGVuIGEgZGVzY2VuZGFudCBmb3JtIG1heSBwb3RlbnRpYWxseSBiZSBzdWJtaXR0ZWRcclxuXHRcdFx0alF1ZXJ5LmV2ZW50LmFkZCggdGhpcywgXCJjbGljay5fc3VibWl0IGtleXByZXNzLl9zdWJtaXRcIiwgZnVuY3Rpb24oIGUgKSB7XHJcblx0XHRcdFx0Ly8gTm9kZSBuYW1lIGNoZWNrIGF2b2lkcyBhIFZNTC1yZWxhdGVkIGNyYXNoIGluIElFICgjOTgwNylcclxuXHRcdFx0XHR2YXIgZWxlbSA9IGUudGFyZ2V0LFxyXG5cdFx0XHRcdFx0Zm9ybSA9IGpRdWVyeS5ub2RlTmFtZSggZWxlbSwgXCJpbnB1dFwiICkgfHwgalF1ZXJ5Lm5vZGVOYW1lKCBlbGVtLCBcImJ1dHRvblwiICkgPyBlbGVtLmZvcm0gOiB1bmRlZmluZWQ7XHJcblx0XHRcdFx0aWYgKCBmb3JtICYmICFqUXVlcnkuX2RhdGEoIGZvcm0sIFwiX3N1Ym1pdF9hdHRhY2hlZFwiICkgKSB7XHJcblx0XHRcdFx0XHRqUXVlcnkuZXZlbnQuYWRkKCBmb3JtLCBcInN1Ym1pdC5fc3VibWl0XCIsIGZ1bmN0aW9uKCBldmVudCApIHtcclxuXHRcdFx0XHRcdFx0ZXZlbnQuX3N1Ym1pdF9idWJibGUgPSB0cnVlO1xyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRqUXVlcnkuX2RhdGEoIGZvcm0sIFwiX3N1Ym1pdF9hdHRhY2hlZFwiLCB0cnVlICk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdFx0Ly8gcmV0dXJuIHVuZGVmaW5lZCBzaW5jZSB3ZSBkb24ndCBuZWVkIGFuIGV2ZW50IGxpc3RlbmVyXHJcblx0XHR9LFxyXG5cclxuXHRcdHBvc3REaXNwYXRjaDogZnVuY3Rpb24oIGV2ZW50ICkge1xyXG5cdFx0XHQvLyBJZiBmb3JtIHdhcyBzdWJtaXR0ZWQgYnkgdGhlIHVzZXIsIGJ1YmJsZSB0aGUgZXZlbnQgdXAgdGhlIHRyZWVcclxuXHRcdFx0aWYgKCBldmVudC5fc3VibWl0X2J1YmJsZSApIHtcclxuXHRcdFx0XHRkZWxldGUgZXZlbnQuX3N1Ym1pdF9idWJibGU7XHJcblx0XHRcdFx0aWYgKCB0aGlzLnBhcmVudE5vZGUgJiYgIWV2ZW50LmlzVHJpZ2dlciApIHtcclxuXHRcdFx0XHRcdGpRdWVyeS5ldmVudC5zaW11bGF0ZSggXCJzdWJtaXRcIiwgdGhpcy5wYXJlbnROb2RlLCBldmVudCwgdHJ1ZSApO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fSxcclxuXHJcblx0XHR0ZWFyZG93bjogZnVuY3Rpb24oKSB7XHJcblx0XHRcdC8vIE9ubHkgbmVlZCB0aGlzIGZvciBkZWxlZ2F0ZWQgZm9ybSBzdWJtaXQgZXZlbnRzXHJcblx0XHRcdGlmICggalF1ZXJ5Lm5vZGVOYW1lKCB0aGlzLCBcImZvcm1cIiApICkge1xyXG5cdFx0XHRcdHJldHVybiBmYWxzZTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Ly8gUmVtb3ZlIGRlbGVnYXRlZCBoYW5kbGVyczsgY2xlYW5EYXRhIGV2ZW50dWFsbHkgcmVhcHMgc3VibWl0IGhhbmRsZXJzIGF0dGFjaGVkIGFib3ZlXHJcblx0XHRcdGpRdWVyeS5ldmVudC5yZW1vdmUoIHRoaXMsIFwiLl9zdWJtaXRcIiApO1xyXG5cdFx0fVxyXG5cdH07XHJcbn1cclxuXHJcbi8vIElFIGNoYW5nZSBkZWxlZ2F0aW9uIGFuZCBjaGVja2JveC9yYWRpbyBmaXhcclxuaWYgKCAhalF1ZXJ5LnN1cHBvcnQuY2hhbmdlQnViYmxlcyApIHtcclxuXHJcblx0alF1ZXJ5LmV2ZW50LnNwZWNpYWwuY2hhbmdlID0ge1xyXG5cclxuXHRcdHNldHVwOiBmdW5jdGlvbigpIHtcclxuXHJcblx0XHRcdGlmICggcmZvcm1FbGVtcy50ZXN0KCB0aGlzLm5vZGVOYW1lICkgKSB7XHJcblx0XHRcdFx0Ly8gSUUgZG9lc24ndCBmaXJlIGNoYW5nZSBvbiBhIGNoZWNrL3JhZGlvIHVudGlsIGJsdXI7IHRyaWdnZXIgaXQgb24gY2xpY2tcclxuXHRcdFx0XHQvLyBhZnRlciBhIHByb3BlcnR5Y2hhbmdlLiBFYXQgdGhlIGJsdXItY2hhbmdlIGluIHNwZWNpYWwuY2hhbmdlLmhhbmRsZS5cclxuXHRcdFx0XHQvLyBUaGlzIHN0aWxsIGZpcmVzIG9uY2hhbmdlIGEgc2Vjb25kIHRpbWUgZm9yIGNoZWNrL3JhZGlvIGFmdGVyIGJsdXIuXHJcblx0XHRcdFx0aWYgKCB0aGlzLnR5cGUgPT09IFwiY2hlY2tib3hcIiB8fCB0aGlzLnR5cGUgPT09IFwicmFkaW9cIiApIHtcclxuXHRcdFx0XHRcdGpRdWVyeS5ldmVudC5hZGQoIHRoaXMsIFwicHJvcGVydHljaGFuZ2UuX2NoYW5nZVwiLCBmdW5jdGlvbiggZXZlbnQgKSB7XHJcblx0XHRcdFx0XHRcdGlmICggZXZlbnQub3JpZ2luYWxFdmVudC5wcm9wZXJ0eU5hbWUgPT09IFwiY2hlY2tlZFwiICkge1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMuX2p1c3RfY2hhbmdlZCA9IHRydWU7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0alF1ZXJ5LmV2ZW50LmFkZCggdGhpcywgXCJjbGljay5fY2hhbmdlXCIsIGZ1bmN0aW9uKCBldmVudCApIHtcclxuXHRcdFx0XHRcdFx0aWYgKCB0aGlzLl9qdXN0X2NoYW5nZWQgJiYgIWV2ZW50LmlzVHJpZ2dlciApIHtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLl9qdXN0X2NoYW5nZWQgPSBmYWxzZTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHQvLyBBbGxvdyB0cmlnZ2VyZWQsIHNpbXVsYXRlZCBjaGFuZ2UgZXZlbnRzICgjMTE1MDApXHJcblx0XHRcdFx0XHRcdGpRdWVyeS5ldmVudC5zaW11bGF0ZSggXCJjaGFuZ2VcIiwgdGhpcywgZXZlbnQsIHRydWUgKTtcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHRcdH1cclxuXHRcdFx0Ly8gRGVsZWdhdGVkIGV2ZW50OyBsYXp5LWFkZCBhIGNoYW5nZSBoYW5kbGVyIG9uIGRlc2NlbmRhbnQgaW5wdXRzXHJcblx0XHRcdGpRdWVyeS5ldmVudC5hZGQoIHRoaXMsIFwiYmVmb3JlYWN0aXZhdGUuX2NoYW5nZVwiLCBmdW5jdGlvbiggZSApIHtcclxuXHRcdFx0XHR2YXIgZWxlbSA9IGUudGFyZ2V0O1xyXG5cclxuXHRcdFx0XHRpZiAoIHJmb3JtRWxlbXMudGVzdCggZWxlbS5ub2RlTmFtZSApICYmICFqUXVlcnkuX2RhdGEoIGVsZW0sIFwiX2NoYW5nZV9hdHRhY2hlZFwiICkgKSB7XHJcblx0XHRcdFx0XHRqUXVlcnkuZXZlbnQuYWRkKCBlbGVtLCBcImNoYW5nZS5fY2hhbmdlXCIsIGZ1bmN0aW9uKCBldmVudCApIHtcclxuXHRcdFx0XHRcdFx0aWYgKCB0aGlzLnBhcmVudE5vZGUgJiYgIWV2ZW50LmlzU2ltdWxhdGVkICYmICFldmVudC5pc1RyaWdnZXIgKSB7XHJcblx0XHRcdFx0XHRcdFx0alF1ZXJ5LmV2ZW50LnNpbXVsYXRlKCBcImNoYW5nZVwiLCB0aGlzLnBhcmVudE5vZGUsIGV2ZW50LCB0cnVlICk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0alF1ZXJ5Ll9kYXRhKCBlbGVtLCBcIl9jaGFuZ2VfYXR0YWNoZWRcIiwgdHJ1ZSApO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0XHR9LFxyXG5cclxuXHRcdGhhbmRsZTogZnVuY3Rpb24oIGV2ZW50ICkge1xyXG5cdFx0XHR2YXIgZWxlbSA9IGV2ZW50LnRhcmdldDtcclxuXHJcblx0XHRcdC8vIFN3YWxsb3cgbmF0aXZlIGNoYW5nZSBldmVudHMgZnJvbSBjaGVja2JveC9yYWRpbywgd2UgYWxyZWFkeSB0cmlnZ2VyZWQgdGhlbSBhYm92ZVxyXG5cdFx0XHRpZiAoIHRoaXMgIT09IGVsZW0gfHwgZXZlbnQuaXNTaW11bGF0ZWQgfHwgZXZlbnQuaXNUcmlnZ2VyIHx8IChlbGVtLnR5cGUgIT09IFwicmFkaW9cIiAmJiBlbGVtLnR5cGUgIT09IFwiY2hlY2tib3hcIikgKSB7XHJcblx0XHRcdFx0cmV0dXJuIGV2ZW50LmhhbmRsZU9iai5oYW5kbGVyLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTtcclxuXHRcdFx0fVxyXG5cdFx0fSxcclxuXHJcblx0XHR0ZWFyZG93bjogZnVuY3Rpb24oKSB7XHJcblx0XHRcdGpRdWVyeS5ldmVudC5yZW1vdmUoIHRoaXMsIFwiLl9jaGFuZ2VcIiApO1xyXG5cclxuXHRcdFx0cmV0dXJuICFyZm9ybUVsZW1zLnRlc3QoIHRoaXMubm9kZU5hbWUgKTtcclxuXHRcdH1cclxuXHR9O1xyXG59XHJcblxyXG4vLyBDcmVhdGUgXCJidWJibGluZ1wiIGZvY3VzIGFuZCBibHVyIGV2ZW50c1xyXG5pZiAoICFqUXVlcnkuc3VwcG9ydC5mb2N1c2luQnViYmxlcyApIHtcclxuXHRqUXVlcnkuZWFjaCh7IGZvY3VzOiBcImZvY3VzaW5cIiwgYmx1cjogXCJmb2N1c291dFwiIH0sIGZ1bmN0aW9uKCBvcmlnLCBmaXggKSB7XHJcblxyXG5cdFx0Ly8gQXR0YWNoIGEgc2luZ2xlIGNhcHR1cmluZyBoYW5kbGVyIHdoaWxlIHNvbWVvbmUgd2FudHMgZm9jdXNpbi9mb2N1c291dFxyXG5cdFx0dmFyIGF0dGFjaGVzID0gMCxcclxuXHRcdFx0aGFuZGxlciA9IGZ1bmN0aW9uKCBldmVudCApIHtcclxuXHRcdFx0XHRqUXVlcnkuZXZlbnQuc2ltdWxhdGUoIGZpeCwgZXZlbnQudGFyZ2V0LCBqUXVlcnkuZXZlbnQuZml4KCBldmVudCApLCB0cnVlICk7XHJcblx0XHRcdH07XHJcblxyXG5cdFx0alF1ZXJ5LmV2ZW50LnNwZWNpYWxbIGZpeCBdID0ge1xyXG5cdFx0XHRzZXR1cDogZnVuY3Rpb24oKSB7XHJcblx0XHRcdFx0aWYgKCBhdHRhY2hlcysrID09PSAwICkge1xyXG5cdFx0XHRcdFx0ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lciggb3JpZywgaGFuZGxlciwgdHJ1ZSApO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0dGVhcmRvd246IGZ1bmN0aW9uKCkge1xyXG5cdFx0XHRcdGlmICggLS1hdHRhY2hlcyA9PT0gMCApIHtcclxuXHRcdFx0XHRcdGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIG9yaWcsIGhhbmRsZXIsIHRydWUgKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH07XHJcblx0fSk7XHJcbn1cclxuXHJcbmpRdWVyeS5mbi5leHRlbmQoe1xyXG5cclxuXHRvbjogZnVuY3Rpb24oIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4sIC8qSU5URVJOQUwqLyBvbmUgKSB7XHJcblx0XHR2YXIgb3JpZ0ZuLCB0eXBlO1xyXG5cclxuXHRcdC8vIFR5cGVzIGNhbiBiZSBhIG1hcCBvZiB0eXBlcy9oYW5kbGVyc1xyXG5cdFx0aWYgKCB0eXBlb2YgdHlwZXMgPT09IFwib2JqZWN0XCIgKSB7XHJcblx0XHRcdC8vICggdHlwZXMtT2JqZWN0LCBzZWxlY3RvciwgZGF0YSApXHJcblx0XHRcdGlmICggdHlwZW9mIHNlbGVjdG9yICE9PSBcInN0cmluZ1wiICkgeyAvLyAmJiBzZWxlY3RvciAhPSBudWxsXHJcblx0XHRcdFx0Ly8gKCB0eXBlcy1PYmplY3QsIGRhdGEgKVxyXG5cdFx0XHRcdGRhdGEgPSBkYXRhIHx8IHNlbGVjdG9yO1xyXG5cdFx0XHRcdHNlbGVjdG9yID0gdW5kZWZpbmVkO1xyXG5cdFx0XHR9XHJcblx0XHRcdGZvciAoIHR5cGUgaW4gdHlwZXMgKSB7XHJcblx0XHRcdFx0dGhpcy5vbiggdHlwZSwgc2VsZWN0b3IsIGRhdGEsIHR5cGVzWyB0eXBlIF0sIG9uZSApO1xyXG5cdFx0XHR9XHJcblx0XHRcdHJldHVybiB0aGlzO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICggZGF0YSA9PSBudWxsICYmIGZuID09IG51bGwgKSB7XHJcblx0XHRcdC8vICggdHlwZXMsIGZuIClcclxuXHRcdFx0Zm4gPSBzZWxlY3RvcjtcclxuXHRcdFx0ZGF0YSA9IHNlbGVjdG9yID0gdW5kZWZpbmVkO1xyXG5cdFx0fSBlbHNlIGlmICggZm4gPT0gbnVsbCApIHtcclxuXHRcdFx0aWYgKCB0eXBlb2Ygc2VsZWN0b3IgPT09IFwic3RyaW5nXCIgKSB7XHJcblx0XHRcdFx0Ly8gKCB0eXBlcywgc2VsZWN0b3IsIGZuIClcclxuXHRcdFx0XHRmbiA9IGRhdGE7XHJcblx0XHRcdFx0ZGF0YSA9IHVuZGVmaW5lZDtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHQvLyAoIHR5cGVzLCBkYXRhLCBmbiApXHJcblx0XHRcdFx0Zm4gPSBkYXRhO1xyXG5cdFx0XHRcdGRhdGEgPSBzZWxlY3RvcjtcclxuXHRcdFx0XHRzZWxlY3RvciA9IHVuZGVmaW5lZDtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0aWYgKCBmbiA9PT0gZmFsc2UgKSB7XHJcblx0XHRcdGZuID0gcmV0dXJuRmFsc2U7XHJcblx0XHR9IGVsc2UgaWYgKCAhZm4gKSB7XHJcblx0XHRcdHJldHVybiB0aGlzO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICggb25lID09PSAxICkge1xyXG5cdFx0XHRvcmlnRm4gPSBmbjtcclxuXHRcdFx0Zm4gPSBmdW5jdGlvbiggZXZlbnQgKSB7XHJcblx0XHRcdFx0Ly8gQ2FuIHVzZSBhbiBlbXB0eSBzZXQsIHNpbmNlIGV2ZW50IGNvbnRhaW5zIHRoZSBpbmZvXHJcblx0XHRcdFx0alF1ZXJ5KCkub2ZmKCBldmVudCApO1xyXG5cdFx0XHRcdHJldHVybiBvcmlnRm4uYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApO1xyXG5cdFx0XHR9O1xyXG5cdFx0XHQvLyBVc2Ugc2FtZSBndWlkIHNvIGNhbGxlciBjYW4gcmVtb3ZlIHVzaW5nIG9yaWdGblxyXG5cdFx0XHRmbi5ndWlkID0gb3JpZ0ZuLmd1aWQgfHwgKCBvcmlnRm4uZ3VpZCA9IGpRdWVyeS5ndWlkKysgKTtcclxuXHRcdH1cclxuXHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xyXG5cdFx0XHRqUXVlcnkuZXZlbnQuYWRkKCB0aGlzLCB0eXBlcywgZm4sIGRhdGEsIHNlbGVjdG9yICk7XHJcblx0XHR9KTtcclxuXHR9LFxyXG5cdG9uZTogZnVuY3Rpb24oIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4gKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5vbiggdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiwgMSApO1xyXG5cdH0sXHJcblx0b2ZmOiBmdW5jdGlvbiggdHlwZXMsIHNlbGVjdG9yLCBmbiApIHtcclxuXHRcdHZhciBoYW5kbGVPYmosIHR5cGU7XHJcblx0XHRpZiAoIHR5cGVzICYmIHR5cGVzLnByZXZlbnREZWZhdWx0ICYmIHR5cGVzLmhhbmRsZU9iaiApIHtcclxuXHRcdFx0Ly8gKCBldmVudCApICBkaXNwYXRjaGVkIGpRdWVyeS5FdmVudFxyXG5cdFx0XHRoYW5kbGVPYmogPSB0eXBlcy5oYW5kbGVPYmo7XHJcblx0XHRcdGpRdWVyeSggdHlwZXMuZGVsZWdhdGVUYXJnZXQgKS5vZmYoXHJcblx0XHRcdFx0aGFuZGxlT2JqLm5hbWVzcGFjZSA/IGhhbmRsZU9iai5vcmlnVHlwZSArIFwiLlwiICsgaGFuZGxlT2JqLm5hbWVzcGFjZSA6IGhhbmRsZU9iai5vcmlnVHlwZSxcclxuXHRcdFx0XHRoYW5kbGVPYmouc2VsZWN0b3IsXHJcblx0XHRcdFx0aGFuZGxlT2JqLmhhbmRsZXJcclxuXHRcdFx0KTtcclxuXHRcdFx0cmV0dXJuIHRoaXM7XHJcblx0XHR9XHJcblx0XHRpZiAoIHR5cGVvZiB0eXBlcyA9PT0gXCJvYmplY3RcIiApIHtcclxuXHRcdFx0Ly8gKCB0eXBlcy1vYmplY3QgWywgc2VsZWN0b3JdIClcclxuXHRcdFx0Zm9yICggdHlwZSBpbiB0eXBlcyApIHtcclxuXHRcdFx0XHR0aGlzLm9mZiggdHlwZSwgc2VsZWN0b3IsIHR5cGVzWyB0eXBlIF0gKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRyZXR1cm4gdGhpcztcclxuXHRcdH1cclxuXHRcdGlmICggc2VsZWN0b3IgPT09IGZhbHNlIHx8IHR5cGVvZiBzZWxlY3RvciA9PT0gXCJmdW5jdGlvblwiICkge1xyXG5cdFx0XHQvLyAoIHR5cGVzIFssIGZuXSApXHJcblx0XHRcdGZuID0gc2VsZWN0b3I7XHJcblx0XHRcdHNlbGVjdG9yID0gdW5kZWZpbmVkO1xyXG5cdFx0fVxyXG5cdFx0aWYgKCBmbiA9PT0gZmFsc2UgKSB7XHJcblx0XHRcdGZuID0gcmV0dXJuRmFsc2U7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkge1xyXG5cdFx0XHRqUXVlcnkuZXZlbnQucmVtb3ZlKCB0aGlzLCB0eXBlcywgZm4sIHNlbGVjdG9yICk7XHJcblx0XHR9KTtcclxuXHR9LFxyXG5cclxuXHRiaW5kOiBmdW5jdGlvbiggdHlwZXMsIGRhdGEsIGZuICkge1xyXG5cdFx0cmV0dXJuIHRoaXMub24oIHR5cGVzLCBudWxsLCBkYXRhLCBmbiApO1xyXG5cdH0sXHJcblx0dW5iaW5kOiBmdW5jdGlvbiggdHlwZXMsIGZuICkge1xyXG5cdFx0cmV0dXJuIHRoaXMub2ZmKCB0eXBlcywgbnVsbCwgZm4gKTtcclxuXHR9LFxyXG5cclxuXHRsaXZlOiBmdW5jdGlvbiggdHlwZXMsIGRhdGEsIGZuICkge1xyXG5cdFx0alF1ZXJ5KCB0aGlzLmNvbnRleHQgKS5vbiggdHlwZXMsIHRoaXMuc2VsZWN0b3IsIGRhdGEsIGZuICk7XHJcblx0XHRyZXR1cm4gdGhpcztcclxuXHR9LFxyXG5cdGRpZTogZnVuY3Rpb24oIHR5cGVzLCBmbiApIHtcclxuXHRcdGpRdWVyeSggdGhpcy5jb250ZXh0ICkub2ZmKCB0eXBlcywgdGhpcy5zZWxlY3RvciB8fCBcIioqXCIsIGZuICk7XHJcblx0XHRyZXR1cm4gdGhpcztcclxuXHR9LFxyXG5cclxuXHRkZWxlZ2F0ZTogZnVuY3Rpb24oIHNlbGVjdG9yLCB0eXBlcywgZGF0YSwgZm4gKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5vbiggdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiApO1xyXG5cdH0sXHJcblx0dW5kZWxlZ2F0ZTogZnVuY3Rpb24oIHNlbGVjdG9yLCB0eXBlcywgZm4gKSB7XHJcblx0XHQvLyAoIG5hbWVzcGFjZSApIG9yICggc2VsZWN0b3IsIHR5cGVzIFssIGZuXSApXHJcblx0XHRyZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA9PSAxPyB0aGlzLm9mZiggc2VsZWN0b3IsIFwiKipcIiApIDogdGhpcy5vZmYoIHR5cGVzLCBzZWxlY3RvciB8fCBcIioqXCIsIGZuICk7XHJcblx0fSxcclxuXHJcblx0dHJpZ2dlcjogZnVuY3Rpb24oIHR5cGUsIGRhdGEgKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkge1xyXG5cdFx0XHRqUXVlcnkuZXZlbnQudHJpZ2dlciggdHlwZSwgZGF0YSwgdGhpcyApO1xyXG5cdFx0fSk7XHJcblx0fSxcclxuXHR0cmlnZ2VySGFuZGxlcjogZnVuY3Rpb24oIHR5cGUsIGRhdGEgKSB7XHJcblx0XHRpZiAoIHRoaXNbMF0gKSB7XHJcblx0XHRcdHJldHVybiBqUXVlcnkuZXZlbnQudHJpZ2dlciggdHlwZSwgZGF0YSwgdGhpc1swXSwgdHJ1ZSApO1xyXG5cdFx0fVxyXG5cdH0sXHJcblxyXG5cdHRvZ2dsZTogZnVuY3Rpb24oIGZuICkge1xyXG5cdFx0Ly8gU2F2ZSByZWZlcmVuY2UgdG8gYXJndW1lbnRzIGZvciBhY2Nlc3MgaW4gY2xvc3VyZVxyXG5cdFx0dmFyIGFyZ3MgPSBhcmd1bWVudHMsXHJcblx0XHRcdGd1aWQgPSBmbi5ndWlkIHx8IGpRdWVyeS5ndWlkKyssXHJcblx0XHRcdGkgPSAwLFxyXG5cdFx0XHR0b2dnbGVyID0gZnVuY3Rpb24oIGV2ZW50ICkge1xyXG5cdFx0XHRcdC8vIEZpZ3VyZSBvdXQgd2hpY2ggZnVuY3Rpb24gdG8gZXhlY3V0ZVxyXG5cdFx0XHRcdHZhciBsYXN0VG9nZ2xlID0gKCBqUXVlcnkuX2RhdGEoIHRoaXMsIFwibGFzdFRvZ2dsZVwiICsgZm4uZ3VpZCApIHx8IDAgKSAlIGk7XHJcblx0XHRcdFx0alF1ZXJ5Ll9kYXRhKCB0aGlzLCBcImxhc3RUb2dnbGVcIiArIGZuLmd1aWQsIGxhc3RUb2dnbGUgKyAxICk7XHJcblxyXG5cdFx0XHRcdC8vIE1ha2Ugc3VyZSB0aGF0IGNsaWNrcyBzdG9wXHJcblx0XHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHJcblx0XHRcdFx0Ly8gYW5kIGV4ZWN1dGUgdGhlIGZ1bmN0aW9uXHJcblx0XHRcdFx0cmV0dXJuIGFyZ3NbIGxhc3RUb2dnbGUgXS5hcHBseSggdGhpcywgYXJndW1lbnRzICkgfHwgZmFsc2U7XHJcblx0XHRcdH07XHJcblxyXG5cdFx0Ly8gbGluayBhbGwgdGhlIGZ1bmN0aW9ucywgc28gYW55IG9mIHRoZW0gY2FuIHVuYmluZCB0aGlzIGNsaWNrIGhhbmRsZXJcclxuXHRcdHRvZ2dsZXIuZ3VpZCA9IGd1aWQ7XHJcblx0XHR3aGlsZSAoIGkgPCBhcmdzLmxlbmd0aCApIHtcclxuXHRcdFx0YXJnc1sgaSsrIF0uZ3VpZCA9IGd1aWQ7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIHRoaXMuY2xpY2soIHRvZ2dsZXIgKTtcclxuXHR9LFxyXG5cclxuXHRob3ZlcjogZnVuY3Rpb24oIGZuT3ZlciwgZm5PdXQgKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5tb3VzZWVudGVyKCBmbk92ZXIgKS5tb3VzZWxlYXZlKCBmbk91dCB8fCBmbk92ZXIgKTtcclxuXHR9XHJcbn0pO1xyXG5cclxualF1ZXJ5LmVhY2goIChcImJsdXIgZm9jdXMgZm9jdXNpbiBmb2N1c291dCBsb2FkIHJlc2l6ZSBzY3JvbGwgdW5sb2FkIGNsaWNrIGRibGNsaWNrIFwiICtcclxuXHRcIm1vdXNlZG93biBtb3VzZXVwIG1vdXNlbW92ZSBtb3VzZW92ZXIgbW91c2VvdXQgbW91c2VlbnRlciBtb3VzZWxlYXZlIFwiICtcclxuXHRcImNoYW5nZSBzZWxlY3Qgc3VibWl0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgZXJyb3IgY29udGV4dG1lbnVcIikuc3BsaXQoXCIgXCIpLCBmdW5jdGlvbiggaSwgbmFtZSApIHtcclxuXHJcblx0Ly8gSGFuZGxlIGV2ZW50IGJpbmRpbmdcclxuXHRqUXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCBkYXRhLCBmbiApIHtcclxuXHRcdGlmICggZm4gPT0gbnVsbCApIHtcclxuXHRcdFx0Zm4gPSBkYXRhO1xyXG5cdFx0XHRkYXRhID0gbnVsbDtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA+IDAgP1xyXG5cdFx0XHR0aGlzLm9uKCBuYW1lLCBudWxsLCBkYXRhLCBmbiApIDpcclxuXHRcdFx0dGhpcy50cmlnZ2VyKCBuYW1lICk7XHJcblx0fTtcclxuXHJcblx0aWYgKCBya2V5RXZlbnQudGVzdCggbmFtZSApICkge1xyXG5cdFx0alF1ZXJ5LmV2ZW50LmZpeEhvb2tzWyBuYW1lIF0gPSBqUXVlcnkuZXZlbnQua2V5SG9va3M7XHJcblx0fVxyXG5cclxuXHRpZiAoIHJtb3VzZUV2ZW50LnRlc3QoIG5hbWUgKSApIHtcclxuXHRcdGpRdWVyeS5ldmVudC5maXhIb29rc1sgbmFtZSBdID0galF1ZXJ5LmV2ZW50Lm1vdXNlSG9va3M7XHJcblx0fVxyXG59KTtcclxuLyohXHJcbiAqIFNpenpsZSBDU1MgU2VsZWN0b3IgRW5naW5lXHJcbiAqICBDb3B5cmlnaHQgMjAxMiBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzXHJcbiAqICBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2VcclxuICogIGh0dHA6Ly9zaXp6bGVqcy5jb20vXHJcbiAqL1xyXG4oZnVuY3Rpb24oIHdpbmRvdywgdW5kZWZpbmVkICkge1xyXG5cclxudmFyIGRpcnJ1bnMsXHJcblx0Y2FjaGVkcnVucyxcclxuXHRhc3NlcnRHZXRJZE5vdE5hbWUsXHJcblx0RXhwcixcclxuXHRnZXRUZXh0LFxyXG5cdGlzWE1MLFxyXG5cdGNvbnRhaW5zLFxyXG5cdGNvbXBpbGUsXHJcblx0c29ydE9yZGVyLFxyXG5cdGhhc0R1cGxpY2F0ZSxcclxuXHJcblx0YmFzZUhhc0R1cGxpY2F0ZSA9IHRydWUsXHJcblx0c3RydW5kZWZpbmVkID0gXCJ1bmRlZmluZWRcIixcclxuXHJcblx0ZXhwYW5kbyA9ICggXCJzaXpjYWNoZVwiICsgTWF0aC5yYW5kb20oKSApLnJlcGxhY2UoIFwiLlwiLCBcIlwiICksXHJcblxyXG5cdGRvY3VtZW50ID0gd2luZG93LmRvY3VtZW50LFxyXG5cdGRvY0VsZW0gPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsXHJcblx0ZG9uZSA9IDAsXHJcblx0c2xpY2UgPSBbXS5zbGljZSxcclxuXHRwdXNoID0gW10ucHVzaCxcclxuXHJcblx0Ly8gQXVnbWVudCBhIGZ1bmN0aW9uIGZvciBzcGVjaWFsIHVzZSBieSBTaXp6bGVcclxuXHRtYXJrRnVuY3Rpb24gPSBmdW5jdGlvbiggZm4sIHZhbHVlICkge1xyXG5cdFx0Zm5bIGV4cGFuZG8gXSA9IHZhbHVlIHx8IHRydWU7XHJcblx0XHRyZXR1cm4gZm47XHJcblx0fSxcclxuXHJcblx0Y3JlYXRlQ2FjaGUgPSBmdW5jdGlvbigpIHtcclxuXHRcdHZhciBjYWNoZSA9IHt9LFxyXG5cdFx0XHRrZXlzID0gW107XHJcblxyXG5cdFx0cmV0dXJuIG1hcmtGdW5jdGlvbihmdW5jdGlvbigga2V5LCB2YWx1ZSApIHtcclxuXHRcdFx0Ly8gT25seSBrZWVwIHRoZSBtb3N0IHJlY2VudCBlbnRyaWVzXHJcblx0XHRcdGlmICgga2V5cy5wdXNoKCBrZXkgKSA+IEV4cHIuY2FjaGVMZW5ndGggKSB7XHJcblx0XHRcdFx0ZGVsZXRlIGNhY2hlWyBrZXlzLnNoaWZ0KCkgXTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0cmV0dXJuIChjYWNoZVsga2V5IF0gPSB2YWx1ZSk7XHJcblx0XHR9LCBjYWNoZSApO1xyXG5cdH0sXHJcblxyXG5cdGNsYXNzQ2FjaGUgPSBjcmVhdGVDYWNoZSgpLFxyXG5cdHRva2VuQ2FjaGUgPSBjcmVhdGVDYWNoZSgpLFxyXG5cdGNvbXBpbGVyQ2FjaGUgPSBjcmVhdGVDYWNoZSgpLFxyXG5cclxuXHQvLyBSZWdleFxyXG5cclxuXHQvLyBXaGl0ZXNwYWNlIGNoYXJhY3RlcnMgaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1zZWxlY3RvcnMvI3doaXRlc3BhY2VcclxuXHR3aGl0ZXNwYWNlID0gXCJbXFxcXHgyMFxcXFx0XFxcXHJcXFxcblxcXFxmXVwiLFxyXG5cdC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtc3ludGF4LyNjaGFyYWN0ZXJzXHJcblx0Y2hhcmFjdGVyRW5jb2RpbmcgPSBcIig/OlxcXFxcXFxcLnxbLVxcXFx3XXxbXlxcXFx4MDAtXFxcXHhhMF0pK1wiLFxyXG5cclxuXHQvLyBMb29zZWx5IG1vZGVsZWQgb24gQ1NTIGlkZW50aWZpZXIgY2hhcmFjdGVyc1xyXG5cdC8vIEFuIHVucXVvdGVkIHZhbHVlIHNob3VsZCBiZSBhIENTUyBpZGVudGlmaWVyIChodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLXNlbGVjdG9ycy8jYXR0cmlidXRlLXNlbGVjdG9ycylcclxuXHQvLyBQcm9wZXIgc3ludGF4OiBodHRwOi8vd3d3LnczLm9yZy9UUi9DU1MyMS9zeW5kYXRhLmh0bWwjdmFsdWUtZGVmLWlkZW50aWZpZXJcclxuXHRpZGVudGlmaWVyID0gY2hhcmFjdGVyRW5jb2RpbmcucmVwbGFjZSggXCJ3XCIsIFwidyNcIiApLFxyXG5cclxuXHQvLyBBY2NlcHRhYmxlIG9wZXJhdG9ycyBodHRwOi8vd3d3LnczLm9yZy9UUi9zZWxlY3RvcnMvI2F0dHJpYnV0ZS1zZWxlY3RvcnNcclxuXHRvcGVyYXRvcnMgPSBcIihbKl4kfCF+XT89KVwiLFxyXG5cdGF0dHJpYnV0ZXMgPSBcIlxcXFxbXCIgKyB3aGl0ZXNwYWNlICsgXCIqKFwiICsgY2hhcmFjdGVyRW5jb2RpbmcgKyBcIilcIiArIHdoaXRlc3BhY2UgK1xyXG5cdFx0XCIqKD86XCIgKyBvcGVyYXRvcnMgKyB3aGl0ZXNwYWNlICsgXCIqKD86KFsnXFxcIl0pKCg/OlxcXFxcXFxcLnxbXlxcXFxcXFxcXSkqPylcXFxcM3woXCIgKyBpZGVudGlmaWVyICsgXCIpfCl8KVwiICsgd2hpdGVzcGFjZSArIFwiKlxcXFxdXCIsXHJcblxyXG5cdC8vIFByZWZlciBhcmd1bWVudHMgbm90IGluIHBhcmVucy9icmFja2V0cyxcclxuXHQvLyAgIHRoZW4gYXR0cmlidXRlIHNlbGVjdG9ycyBhbmQgbm9uLXBzZXVkb3MgKGRlbm90ZWQgYnkgOiksXHJcblx0Ly8gICB0aGVuIGFueXRoaW5nIGVsc2VcclxuXHQvLyBUaGVzZSBwcmVmZXJlbmNlcyBhcmUgaGVyZSB0byByZWR1Y2UgdGhlIG51bWJlciBvZiBzZWxlY3RvcnNcclxuXHQvLyAgIG5lZWRpbmcgdG9rZW5pemUgaW4gdGhlIFBTRVVETyBwcmVGaWx0ZXJcclxuXHRwc2V1ZG9zID0gXCI6KFwiICsgY2hhcmFjdGVyRW5jb2RpbmcgKyBcIikoPzpcXFxcKCg/OihbJ1xcXCJdKSgoPzpcXFxcXFxcXC58W15cXFxcXFxcXF0pKj8pXFxcXDJ8KFteKClbXFxcXF1dKnwoPzooPzpcIiArIGF0dHJpYnV0ZXMgKyBcIil8W146XXxcXFxcXFxcXC4pKnwuKikpXFxcXCl8KVwiLFxyXG5cclxuXHQvLyBGb3IgbWF0Y2hFeHByLlBPUyBhbmQgbWF0Y2hFeHByLm5lZWRzQ29udGV4dFxyXG5cdHBvcyA9IFwiOihudGh8ZXF8Z3R8bHR8Zmlyc3R8bGFzdHxldmVufG9kZCkoPzpcXFxcKCgoPzotXFxcXGQpP1xcXFxkKilcXFxcKXwpKD89W14tXXwkKVwiLFxyXG5cclxuXHQvLyBMZWFkaW5nIGFuZCBub24tZXNjYXBlZCB0cmFpbGluZyB3aGl0ZXNwYWNlLCBjYXB0dXJpbmcgc29tZSBub24td2hpdGVzcGFjZSBjaGFyYWN0ZXJzIHByZWNlZGluZyB0aGUgbGF0dGVyXHJcblx0cnRyaW0gPSBuZXcgUmVnRXhwKCBcIl5cIiArIHdoaXRlc3BhY2UgKyBcIit8KCg/Ol58W15cXFxcXFxcXF0pKD86XFxcXFxcXFwuKSopXCIgKyB3aGl0ZXNwYWNlICsgXCIrJFwiLCBcImdcIiApLFxyXG5cclxuXHRyY29tbWEgPSBuZXcgUmVnRXhwKCBcIl5cIiArIHdoaXRlc3BhY2UgKyBcIiosXCIgKyB3aGl0ZXNwYWNlICsgXCIqXCIgKSxcclxuXHRyY29tYmluYXRvcnMgPSBuZXcgUmVnRXhwKCBcIl5cIiArIHdoaXRlc3BhY2UgKyBcIiooW1xcXFx4MjBcXFxcdFxcXFxyXFxcXG5cXFxcZj4rfl0pXCIgKyB3aGl0ZXNwYWNlICsgXCIqXCIgKSxcclxuXHRycHNldWRvID0gbmV3IFJlZ0V4cCggcHNldWRvcyApLFxyXG5cclxuXHQvLyBFYXNpbHktcGFyc2VhYmxlL3JldHJpZXZhYmxlIElEIG9yIFRBRyBvciBDTEFTUyBzZWxlY3RvcnNcclxuXHRycXVpY2tFeHByID0gL14oPzojKFtcXHdcXC1dKyl8KFxcdyspfFxcLihbXFx3XFwtXSspKSQvLFxyXG5cclxuXHRybm90ID0gL146bm90LyxcclxuXHRyc2libGluZyA9IC9bXFx4MjBcXHRcXHJcXG5cXGZdKlsrfl0vLFxyXG5cdHJlbmRzV2l0aE5vdCA9IC86bm90XFwoJC8sXHJcblxyXG5cdHJoZWFkZXIgPSAvaFxcZC9pLFxyXG5cdHJpbnB1dHMgPSAvaW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbi9pLFxyXG5cclxuXHRyYmFja3NsYXNoID0gL1xcXFwoPyFcXFxcKS9nLFxyXG5cclxuXHRtYXRjaEV4cHIgPSB7XHJcblx0XHRcIklEXCI6IG5ldyBSZWdFeHAoIFwiXiMoXCIgKyBjaGFyYWN0ZXJFbmNvZGluZyArIFwiKVwiICksXHJcblx0XHRcIkNMQVNTXCI6IG5ldyBSZWdFeHAoIFwiXlxcXFwuKFwiICsgY2hhcmFjdGVyRW5jb2RpbmcgKyBcIilcIiApLFxyXG5cdFx0XCJOQU1FXCI6IG5ldyBSZWdFeHAoIFwiXlxcXFxbbmFtZT1bJ1xcXCJdPyhcIiArIGNoYXJhY3RlckVuY29kaW5nICsgXCIpWydcXFwiXT9cXFxcXVwiICksXHJcblx0XHRcIlRBR1wiOiBuZXcgUmVnRXhwKCBcIl4oXCIgKyBjaGFyYWN0ZXJFbmNvZGluZy5yZXBsYWNlKCBcIndcIiwgXCJ3KlwiICkgKyBcIilcIiApLFxyXG5cdFx0XCJBVFRSXCI6IG5ldyBSZWdFeHAoIFwiXlwiICsgYXR0cmlidXRlcyApLFxyXG5cdFx0XCJQU0VVRE9cIjogbmV3IFJlZ0V4cCggXCJeXCIgKyBwc2V1ZG9zICksXHJcblx0XHRcIkNISUxEXCI6IG5ldyBSZWdFeHAoIFwiXjoob25seXxudGh8bGFzdHxmaXJzdCktY2hpbGQoPzpcXFxcKFwiICsgd2hpdGVzcGFjZSArXHJcblx0XHRcdFwiKihldmVufG9kZHwoKFsrLV18KShcXFxcZCopbnwpXCIgKyB3aGl0ZXNwYWNlICsgXCIqKD86KFsrLV18KVwiICsgd2hpdGVzcGFjZSArXHJcblx0XHRcdFwiKihcXFxcZCspfCkpXCIgKyB3aGl0ZXNwYWNlICsgXCIqXFxcXCl8KVwiLCBcImlcIiApLFxyXG5cdFx0XCJQT1NcIjogbmV3IFJlZ0V4cCggcG9zLCBcImlnXCIgKSxcclxuXHRcdC8vIEZvciB1c2UgaW4gbGlicmFyaWVzIGltcGxlbWVudGluZyAuaXMoKVxyXG5cdFx0XCJuZWVkc0NvbnRleHRcIjogbmV3IFJlZ0V4cCggXCJeXCIgKyB3aGl0ZXNwYWNlICsgXCIqWz4rfl18XCIgKyBwb3MsIFwiaVwiIClcclxuXHR9LFxyXG5cclxuXHQvLyBTdXBwb3J0XHJcblxyXG5cdC8vIFVzZWQgZm9yIHRlc3Rpbmcgc29tZXRoaW5nIG9uIGFuIGVsZW1lbnRcclxuXHRhc3NlcnQgPSBmdW5jdGlvbiggZm4gKSB7XHJcblx0XHR2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcclxuXHJcblx0XHR0cnkge1xyXG5cdFx0XHRyZXR1cm4gZm4oIGRpdiApO1xyXG5cdFx0fSBjYXRjaCAoZSkge1xyXG5cdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHR9IGZpbmFsbHkge1xyXG5cdFx0XHQvLyByZWxlYXNlIG1lbW9yeSBpbiBJRVxyXG5cdFx0XHRkaXYgPSBudWxsO1xyXG5cdFx0fVxyXG5cdH0sXHJcblxyXG5cdC8vIENoZWNrIGlmIGdldEVsZW1lbnRzQnlUYWdOYW1lKFwiKlwiKSByZXR1cm5zIG9ubHkgZWxlbWVudHNcclxuXHRhc3NlcnRUYWdOYW1lTm9Db21tZW50cyA9IGFzc2VydChmdW5jdGlvbiggZGl2ICkge1xyXG5cdFx0ZGl2LmFwcGVuZENoaWxkKCBkb2N1bWVudC5jcmVhdGVDb21tZW50KFwiXCIpICk7XHJcblx0XHRyZXR1cm4gIWRpdi5nZXRFbGVtZW50c0J5VGFnTmFtZShcIipcIikubGVuZ3RoO1xyXG5cdH0pLFxyXG5cclxuXHQvLyBDaGVjayBpZiBnZXRBdHRyaWJ1dGUgcmV0dXJucyBub3JtYWxpemVkIGhyZWYgYXR0cmlidXRlc1xyXG5cdGFzc2VydEhyZWZOb3ROb3JtYWxpemVkID0gYXNzZXJ0KGZ1bmN0aW9uKCBkaXYgKSB7XHJcblx0XHRkaXYuaW5uZXJIVE1MID0gXCI8YSBocmVmPScjJz48L2E+XCI7XHJcblx0XHRyZXR1cm4gZGl2LmZpcnN0Q2hpbGQgJiYgdHlwZW9mIGRpdi5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSAhPT0gc3RydW5kZWZpbmVkICYmXHJcblx0XHRcdGRpdi5maXJzdENoaWxkLmdldEF0dHJpYnV0ZShcImhyZWZcIikgPT09IFwiI1wiO1xyXG5cdH0pLFxyXG5cclxuXHQvLyBDaGVjayBpZiBhdHRyaWJ1dGVzIHNob3VsZCBiZSByZXRyaWV2ZWQgYnkgYXR0cmlidXRlIG5vZGVzXHJcblx0YXNzZXJ0QXR0cmlidXRlcyA9IGFzc2VydChmdW5jdGlvbiggZGl2ICkge1xyXG5cdFx0ZGl2LmlubmVySFRNTCA9IFwiPHNlbGVjdD48L3NlbGVjdD5cIjtcclxuXHRcdHZhciB0eXBlID0gdHlwZW9mIGRpdi5sYXN0Q2hpbGQuZ2V0QXR0cmlidXRlKFwibXVsdGlwbGVcIik7XHJcblx0XHQvLyBJRTggcmV0dXJucyBhIHN0cmluZyBmb3Igc29tZSBhdHRyaWJ1dGVzIGV2ZW4gd2hlbiBub3QgcHJlc2VudFxyXG5cdFx0cmV0dXJuIHR5cGUgIT09IFwiYm9vbGVhblwiICYmIHR5cGUgIT09IFwic3RyaW5nXCI7XHJcblx0fSksXHJcblxyXG5cdC8vIENoZWNrIGlmIGdldEVsZW1lbnRzQnlDbGFzc05hbWUgY2FuIGJlIHRydXN0ZWRcclxuXHRhc3NlcnRVc2FibGVDbGFzc05hbWUgPSBhc3NlcnQoZnVuY3Rpb24oIGRpdiApIHtcclxuXHRcdC8vIE9wZXJhIGNhbid0IGZpbmQgYSBzZWNvbmQgY2xhc3NuYW1lIChpbiA5LjYpXHJcblx0XHRkaXYuaW5uZXJIVE1MID0gXCI8ZGl2IGNsYXNzPSdoaWRkZW4gZSc+PC9kaXY+PGRpdiBjbGFzcz0naGlkZGVuJz48L2Rpdj5cIjtcclxuXHRcdGlmICggIWRpdi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lIHx8ICFkaXYuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImVcIikubGVuZ3RoICkge1xyXG5cdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gU2FmYXJpIDMuMiBjYWNoZXMgY2xhc3MgYXR0cmlidXRlcyBhbmQgZG9lc24ndCBjYXRjaCBjaGFuZ2VzXHJcblx0XHRkaXYubGFzdENoaWxkLmNsYXNzTmFtZSA9IFwiZVwiO1xyXG5cdFx0cmV0dXJuIGRpdi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiZVwiKS5sZW5ndGggPT09IDI7XHJcblx0fSksXHJcblxyXG5cdC8vIENoZWNrIGlmIGdldEVsZW1lbnRCeUlkIHJldHVybnMgZWxlbWVudHMgYnkgbmFtZVxyXG5cdC8vIENoZWNrIGlmIGdldEVsZW1lbnRzQnlOYW1lIHByaXZpbGVnZXMgZm9ybSBjb250cm9scyBvciByZXR1cm5zIGVsZW1lbnRzIGJ5IElEXHJcblx0YXNzZXJ0VXNhYmxlTmFtZSA9IGFzc2VydChmdW5jdGlvbiggZGl2ICkge1xyXG5cdFx0Ly8gSW5qZWN0IGNvbnRlbnRcclxuXHRcdGRpdi5pZCA9IGV4cGFuZG8gKyAwO1xyXG5cdFx0ZGl2LmlubmVySFRNTCA9IFwiPGEgbmFtZT0nXCIgKyBleHBhbmRvICsgXCInPjwvYT48ZGl2IG5hbWU9J1wiICsgZXhwYW5kbyArIFwiJz48L2Rpdj5cIjtcclxuXHRcdGRvY0VsZW0uaW5zZXJ0QmVmb3JlKCBkaXYsIGRvY0VsZW0uZmlyc3RDaGlsZCApO1xyXG5cclxuXHRcdC8vIFRlc3RcclxuXHRcdHZhciBwYXNzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUgJiZcclxuXHRcdFx0Ly8gYnVnZ3kgYnJvd3NlcnMgd2lsbCByZXR1cm4gZmV3ZXIgdGhhbiB0aGUgY29ycmVjdCAyXHJcblx0XHRcdGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCBleHBhbmRvICkubGVuZ3RoID09PSAyICtcclxuXHRcdFx0Ly8gYnVnZ3kgYnJvd3NlcnMgd2lsbCByZXR1cm4gbW9yZSB0aGFuIHRoZSBjb3JyZWN0IDBcclxuXHRcdFx0ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoIGV4cGFuZG8gKyAwICkubGVuZ3RoO1xyXG5cdFx0YXNzZXJ0R2V0SWROb3ROYW1lID0gIWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCBleHBhbmRvICk7XHJcblxyXG5cdFx0Ly8gQ2xlYW51cFxyXG5cdFx0ZG9jRWxlbS5yZW1vdmVDaGlsZCggZGl2ICk7XHJcblxyXG5cdFx0cmV0dXJuIHBhc3M7XHJcblx0fSk7XHJcblxyXG4vLyBJZiBzbGljZSBpcyBub3QgYXZhaWxhYmxlLCBwcm92aWRlIGEgYmFja3VwXHJcbnRyeSB7XHJcblx0c2xpY2UuY2FsbCggZG9jRWxlbS5jaGlsZE5vZGVzLCAwIClbMF0ubm9kZVR5cGU7XHJcbn0gY2F0Y2ggKCBlICkge1xyXG5cdHNsaWNlID0gZnVuY3Rpb24oIGkgKSB7XHJcblx0XHR2YXIgZWxlbSwgcmVzdWx0cyA9IFtdO1xyXG5cdFx0Zm9yICggOyAoZWxlbSA9IHRoaXNbaV0pOyBpKysgKSB7XHJcblx0XHRcdHJlc3VsdHMucHVzaCggZWxlbSApO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHJlc3VsdHM7XHJcblx0fTtcclxufVxyXG5cclxuZnVuY3Rpb24gU2l6emxlKCBzZWxlY3RvciwgY29udGV4dCwgcmVzdWx0cywgc2VlZCApIHtcclxuXHRyZXN1bHRzID0gcmVzdWx0cyB8fCBbXTtcclxuXHRjb250ZXh0ID0gY29udGV4dCB8fCBkb2N1bWVudDtcclxuXHR2YXIgbWF0Y2gsIGVsZW0sIHhtbCwgbSxcclxuXHRcdG5vZGVUeXBlID0gY29udGV4dC5ub2RlVHlwZTtcclxuXHJcblx0aWYgKCBub2RlVHlwZSAhPT0gMSAmJiBub2RlVHlwZSAhPT0gOSApIHtcclxuXHRcdHJldHVybiBbXTtcclxuXHR9XHJcblxyXG5cdGlmICggIXNlbGVjdG9yIHx8IHR5cGVvZiBzZWxlY3RvciAhPT0gXCJzdHJpbmdcIiApIHtcclxuXHRcdHJldHVybiByZXN1bHRzO1xyXG5cdH1cclxuXHJcblx0eG1sID0gaXNYTUwoIGNvbnRleHQgKTtcclxuXHJcblx0aWYgKCAheG1sICYmICFzZWVkICkge1xyXG5cdFx0aWYgKCAobWF0Y2ggPSBycXVpY2tFeHByLmV4ZWMoIHNlbGVjdG9yICkpICkge1xyXG5cdFx0XHQvLyBTcGVlZC11cDogU2l6emxlKFwiI0lEXCIpXHJcblx0XHRcdGlmICggKG0gPSBtYXRjaFsxXSkgKSB7XHJcblx0XHRcdFx0aWYgKCBub2RlVHlwZSA9PT0gOSApIHtcclxuXHRcdFx0XHRcdGVsZW0gPSBjb250ZXh0LmdldEVsZW1lbnRCeUlkKCBtICk7XHJcblx0XHRcdFx0XHQvLyBDaGVjayBwYXJlbnROb2RlIHRvIGNhdGNoIHdoZW4gQmxhY2tiZXJyeSA0LjYgcmV0dXJuc1xyXG5cdFx0XHRcdFx0Ly8gbm9kZXMgdGhhdCBhcmUgbm8gbG9uZ2VyIGluIHRoZSBkb2N1bWVudCAjNjk2M1xyXG5cdFx0XHRcdFx0aWYgKCBlbGVtICYmIGVsZW0ucGFyZW50Tm9kZSApIHtcclxuXHRcdFx0XHRcdFx0Ly8gSGFuZGxlIHRoZSBjYXNlIHdoZXJlIElFLCBPcGVyYSwgYW5kIFdlYmtpdCByZXR1cm4gaXRlbXNcclxuXHRcdFx0XHRcdFx0Ly8gYnkgbmFtZSBpbnN0ZWFkIG9mIElEXHJcblx0XHRcdFx0XHRcdGlmICggZWxlbS5pZCA9PT0gbSApIHtcclxuXHRcdFx0XHRcdFx0XHRyZXN1bHRzLnB1c2goIGVsZW0gKTtcclxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0cztcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0cmV0dXJuIHJlc3VsdHM7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdC8vIENvbnRleHQgaXMgbm90IGEgZG9jdW1lbnRcclxuXHRcdFx0XHRcdGlmICggY29udGV4dC5vd25lckRvY3VtZW50ICYmIChlbGVtID0gY29udGV4dC5vd25lckRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCBtICkpICYmXHJcblx0XHRcdFx0XHRcdGNvbnRhaW5zKCBjb250ZXh0LCBlbGVtICkgJiYgZWxlbS5pZCA9PT0gbSApIHtcclxuXHRcdFx0XHRcdFx0cmVzdWx0cy5wdXNoKCBlbGVtICk7XHJcblx0XHRcdFx0XHRcdHJldHVybiByZXN1bHRzO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdC8vIFNwZWVkLXVwOiBTaXp6bGUoXCJUQUdcIilcclxuXHRcdFx0fSBlbHNlIGlmICggbWF0Y2hbMl0gKSB7XHJcblx0XHRcdFx0cHVzaC5hcHBseSggcmVzdWx0cywgc2xpY2UuY2FsbChjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCBzZWxlY3RvciApLCAwKSApO1xyXG5cdFx0XHRcdHJldHVybiByZXN1bHRzO1xyXG5cclxuXHRcdFx0Ly8gU3BlZWQtdXA6IFNpenpsZShcIi5DTEFTU1wiKVxyXG5cdFx0XHR9IGVsc2UgaWYgKCAobSA9IG1hdGNoWzNdKSAmJiBhc3NlcnRVc2FibGVDbGFzc05hbWUgJiYgY29udGV4dC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lICkge1xyXG5cdFx0XHRcdHB1c2guYXBwbHkoIHJlc3VsdHMsIHNsaWNlLmNhbGwoY29udGV4dC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCBtICksIDApICk7XHJcblx0XHRcdFx0cmV0dXJuIHJlc3VsdHM7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8vIEFsbCBvdGhlcnNcclxuXHRyZXR1cm4gc2VsZWN0KCBzZWxlY3RvciwgY29udGV4dCwgcmVzdWx0cywgc2VlZCwgeG1sICk7XHJcbn1cclxuXHJcblNpenpsZS5tYXRjaGVzID0gZnVuY3Rpb24oIGV4cHIsIGVsZW1lbnRzICkge1xyXG5cdHJldHVybiBTaXp6bGUoIGV4cHIsIG51bGwsIG51bGwsIGVsZW1lbnRzICk7XHJcbn07XHJcblxyXG5TaXp6bGUubWF0Y2hlc1NlbGVjdG9yID0gZnVuY3Rpb24oIGVsZW0sIGV4cHIgKSB7XHJcblx0cmV0dXJuIFNpenpsZSggZXhwciwgbnVsbCwgbnVsbCwgWyBlbGVtIF0gKS5sZW5ndGggPiAwO1xyXG59O1xyXG5cclxuLy8gUmV0dXJucyBhIGZ1bmN0aW9uIHRvIHVzZSBpbiBwc2V1ZG9zIGZvciBpbnB1dCB0eXBlc1xyXG5mdW5jdGlvbiBjcmVhdGVJbnB1dFBzZXVkbyggdHlwZSApIHtcclxuXHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XHJcblx0XHR2YXIgbmFtZSA9IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcclxuXHRcdHJldHVybiBuYW1lID09PSBcImlucHV0XCIgJiYgZWxlbS50eXBlID09PSB0eXBlO1xyXG5cdH07XHJcbn1cclxuXHJcbi8vIFJldHVybnMgYSBmdW5jdGlvbiB0byB1c2UgaW4gcHNldWRvcyBmb3IgYnV0dG9uc1xyXG5mdW5jdGlvbiBjcmVhdGVCdXR0b25Qc2V1ZG8oIHR5cGUgKSB7XHJcblx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xyXG5cdFx0dmFyIG5hbWUgPSBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XHJcblx0XHRyZXR1cm4gKG5hbWUgPT09IFwiaW5wdXRcIiB8fCBuYW1lID09PSBcImJ1dHRvblwiKSAmJiBlbGVtLnR5cGUgPT09IHR5cGU7XHJcblx0fTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFV0aWxpdHkgZnVuY3Rpb24gZm9yIHJldHJpZXZpbmcgdGhlIHRleHQgdmFsdWUgb2YgYW4gYXJyYXkgb2YgRE9NIG5vZGVzXHJcbiAqIEBwYXJhbSB7QXJyYXl8RWxlbWVudH0gZWxlbVxyXG4gKi9cclxuZ2V0VGV4dCA9IFNpenpsZS5nZXRUZXh0ID0gZnVuY3Rpb24oIGVsZW0gKSB7XHJcblx0dmFyIG5vZGUsXHJcblx0XHRyZXQgPSBcIlwiLFxyXG5cdFx0aSA9IDAsXHJcblx0XHRub2RlVHlwZSA9IGVsZW0ubm9kZVR5cGU7XHJcblxyXG5cdGlmICggbm9kZVR5cGUgKSB7XHJcblx0XHRpZiAoIG5vZGVUeXBlID09PSAxIHx8IG5vZGVUeXBlID09PSA5IHx8IG5vZGVUeXBlID09PSAxMSApIHtcclxuXHRcdFx0Ly8gVXNlIHRleHRDb250ZW50IGZvciBlbGVtZW50c1xyXG5cdFx0XHQvLyBpbm5lclRleHQgdXNhZ2UgcmVtb3ZlZCBmb3IgY29uc2lzdGVuY3kgb2YgbmV3IGxpbmVzIChzZWUgIzExMTUzKVxyXG5cdFx0XHRpZiAoIHR5cGVvZiBlbGVtLnRleHRDb250ZW50ID09PSBcInN0cmluZ1wiICkge1xyXG5cdFx0XHRcdHJldHVybiBlbGVtLnRleHRDb250ZW50O1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdC8vIFRyYXZlcnNlIGl0cyBjaGlsZHJlblxyXG5cdFx0XHRcdGZvciAoIGVsZW0gPSBlbGVtLmZpcnN0Q2hpbGQ7IGVsZW07IGVsZW0gPSBlbGVtLm5leHRTaWJsaW5nICkge1xyXG5cdFx0XHRcdFx0cmV0ICs9IGdldFRleHQoIGVsZW0gKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH0gZWxzZSBpZiAoIG5vZGVUeXBlID09PSAzIHx8IG5vZGVUeXBlID09PSA0ICkge1xyXG5cdFx0XHRyZXR1cm4gZWxlbS5ub2RlVmFsdWU7XHJcblx0XHR9XHJcblx0XHQvLyBEbyBub3QgaW5jbHVkZSBjb21tZW50IG9yIHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24gbm9kZXNcclxuXHR9IGVsc2Uge1xyXG5cclxuXHRcdC8vIElmIG5vIG5vZGVUeXBlLCB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIGFuIGFycmF5XHJcblx0XHRmb3IgKCA7IChub2RlID0gZWxlbVtpXSk7IGkrKyApIHtcclxuXHRcdFx0Ly8gRG8gbm90IHRyYXZlcnNlIGNvbW1lbnQgbm9kZXNcclxuXHRcdFx0cmV0ICs9IGdldFRleHQoIG5vZGUgKTtcclxuXHRcdH1cclxuXHR9XHJcblx0cmV0dXJuIHJldDtcclxufTtcclxuXHJcbmlzWE1MID0gU2l6emxlLmlzWE1MID0gZnVuY3Rpb24gaXNYTUwoIGVsZW0gKSB7XHJcblx0Ly8gZG9jdW1lbnRFbGVtZW50IGlzIHZlcmlmaWVkIGZvciBjYXNlcyB3aGVyZSBpdCBkb2Vzbid0IHlldCBleGlzdFxyXG5cdC8vIChzdWNoIGFzIGxvYWRpbmcgaWZyYW1lcyBpbiBJRSAtICM0ODMzKVxyXG5cdHZhciBkb2N1bWVudEVsZW1lbnQgPSBlbGVtICYmIChlbGVtLm93bmVyRG9jdW1lbnQgfHwgZWxlbSkuZG9jdW1lbnRFbGVtZW50O1xyXG5cdHJldHVybiBkb2N1bWVudEVsZW1lbnQgPyBkb2N1bWVudEVsZW1lbnQubm9kZU5hbWUgIT09IFwiSFRNTFwiIDogZmFsc2U7XHJcbn07XHJcblxyXG4vLyBFbGVtZW50IGNvbnRhaW5zIGFub3RoZXJcclxuY29udGFpbnMgPSBTaXp6bGUuY29udGFpbnMgPSBkb2NFbGVtLmNvbnRhaW5zID9cclxuXHRmdW5jdGlvbiggYSwgYiApIHtcclxuXHRcdHZhciBhZG93biA9IGEubm9kZVR5cGUgPT09IDkgPyBhLmRvY3VtZW50RWxlbWVudCA6IGEsXHJcblx0XHRcdGJ1cCA9IGIgJiYgYi5wYXJlbnROb2RlO1xyXG5cdFx0cmV0dXJuIGEgPT09IGJ1cCB8fCAhISggYnVwICYmIGJ1cC5ub2RlVHlwZSA9PT0gMSAmJiBhZG93bi5jb250YWlucyAmJiBhZG93bi5jb250YWlucyhidXApICk7XHJcblx0fSA6XHJcblx0ZG9jRWxlbS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiA/XHJcblx0ZnVuY3Rpb24oIGEsIGIgKSB7XHJcblx0XHRyZXR1cm4gYiAmJiAhISggYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiggYiApICYgMTYgKTtcclxuXHR9IDpcclxuXHRmdW5jdGlvbiggYSwgYiApIHtcclxuXHRcdHdoaWxlICggKGIgPSBiLnBhcmVudE5vZGUpICkge1xyXG5cdFx0XHRpZiAoIGIgPT09IGEgKSB7XHJcblx0XHRcdFx0cmV0dXJuIHRydWU7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiBmYWxzZTtcclxuXHR9O1xyXG5cclxuU2l6emxlLmF0dHIgPSBmdW5jdGlvbiggZWxlbSwgbmFtZSApIHtcclxuXHR2YXIgYXR0cixcclxuXHRcdHhtbCA9IGlzWE1MKCBlbGVtICk7XHJcblxyXG5cdGlmICggIXhtbCApIHtcclxuXHRcdG5hbWUgPSBuYW1lLnRvTG93ZXJDYXNlKCk7XHJcblx0fVxyXG5cdGlmICggRXhwci5hdHRySGFuZGxlWyBuYW1lIF0gKSB7XHJcblx0XHRyZXR1cm4gRXhwci5hdHRySGFuZGxlWyBuYW1lIF0oIGVsZW0gKTtcclxuXHR9XHJcblx0aWYgKCBhc3NlcnRBdHRyaWJ1dGVzIHx8IHhtbCApIHtcclxuXHRcdHJldHVybiBlbGVtLmdldEF0dHJpYnV0ZSggbmFtZSApO1xyXG5cdH1cclxuXHRhdHRyID0gZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKCBuYW1lICk7XHJcblx0cmV0dXJuIGF0dHIgP1xyXG5cdFx0dHlwZW9mIGVsZW1bIG5hbWUgXSA9PT0gXCJib29sZWFuXCIgP1xyXG5cdFx0XHRlbGVtWyBuYW1lIF0gPyBuYW1lIDogbnVsbCA6XHJcblx0XHRcdGF0dHIuc3BlY2lmaWVkID8gYXR0ci52YWx1ZSA6IG51bGwgOlxyXG5cdFx0bnVsbDtcclxufTtcclxuXHJcbkV4cHIgPSBTaXp6bGUuc2VsZWN0b3JzID0ge1xyXG5cclxuXHQvLyBDYW4gYmUgYWRqdXN0ZWQgYnkgdGhlIHVzZXJcclxuXHRjYWNoZUxlbmd0aDogNTAsXHJcblxyXG5cdGNyZWF0ZVBzZXVkbzogbWFya0Z1bmN0aW9uLFxyXG5cclxuXHRtYXRjaDogbWF0Y2hFeHByLFxyXG5cclxuXHRvcmRlcjogbmV3IFJlZ0V4cCggXCJJRHxUQUdcIiArXHJcblx0XHQoYXNzZXJ0VXNhYmxlTmFtZSA/IFwifE5BTUVcIiA6IFwiXCIpICtcclxuXHRcdChhc3NlcnRVc2FibGVDbGFzc05hbWUgPyBcInxDTEFTU1wiIDogXCJcIilcclxuXHQpLFxyXG5cclxuXHQvLyBJRTYvNyByZXR1cm4gYSBtb2RpZmllZCBocmVmXHJcblx0YXR0ckhhbmRsZTogYXNzZXJ0SHJlZk5vdE5vcm1hbGl6ZWQgP1xyXG5cdFx0e30gOlxyXG5cdFx0e1xyXG5cdFx0XHRcImhyZWZcIjogZnVuY3Rpb24oIGVsZW0gKSB7XHJcblx0XHRcdFx0cmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlKCBcImhyZWZcIiwgMiApO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRcInR5cGVcIjogZnVuY3Rpb24oIGVsZW0gKSB7XHJcblx0XHRcdFx0cmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlKFwidHlwZVwiKTtcclxuXHRcdFx0fVxyXG5cdFx0fSxcclxuXHJcblx0ZmluZDoge1xyXG5cdFx0XCJJRFwiOiBhc3NlcnRHZXRJZE5vdE5hbWUgP1xyXG5cdFx0XHRmdW5jdGlvbiggaWQsIGNvbnRleHQsIHhtbCApIHtcclxuXHRcdFx0XHRpZiAoIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRCeUlkICE9PSBzdHJ1bmRlZmluZWQgJiYgIXhtbCApIHtcclxuXHRcdFx0XHRcdHZhciBtID0gY29udGV4dC5nZXRFbGVtZW50QnlJZCggaWQgKTtcclxuXHRcdFx0XHRcdC8vIENoZWNrIHBhcmVudE5vZGUgdG8gY2F0Y2ggd2hlbiBCbGFja2JlcnJ5IDQuNiByZXR1cm5zXHJcblx0XHRcdFx0XHQvLyBub2RlcyB0aGF0IGFyZSBubyBsb25nZXIgaW4gdGhlIGRvY3VtZW50ICM2OTYzXHJcblx0XHRcdFx0XHRyZXR1cm4gbSAmJiBtLnBhcmVudE5vZGUgPyBbbV0gOiBbXTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0gOlxyXG5cdFx0XHRmdW5jdGlvbiggaWQsIGNvbnRleHQsIHhtbCApIHtcclxuXHRcdFx0XHRpZiAoIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRCeUlkICE9PSBzdHJ1bmRlZmluZWQgJiYgIXhtbCApIHtcclxuXHRcdFx0XHRcdHZhciBtID0gY29udGV4dC5nZXRFbGVtZW50QnlJZCggaWQgKTtcclxuXHJcblx0XHRcdFx0XHRyZXR1cm4gbSA/XHJcblx0XHRcdFx0XHRcdG0uaWQgPT09IGlkIHx8IHR5cGVvZiBtLmdldEF0dHJpYnV0ZU5vZGUgIT09IHN0cnVuZGVmaW5lZCAmJiBtLmdldEF0dHJpYnV0ZU5vZGUoXCJpZFwiKS52YWx1ZSA9PT0gaWQgP1xyXG5cdFx0XHRcdFx0XHRcdFttXSA6XHJcblx0XHRcdFx0XHRcdFx0dW5kZWZpbmVkIDpcclxuXHRcdFx0XHRcdFx0W107XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cclxuXHRcdFwiVEFHXCI6IGFzc2VydFRhZ05hbWVOb0NvbW1lbnRzID9cclxuXHRcdFx0ZnVuY3Rpb24oIHRhZywgY29udGV4dCApIHtcclxuXHRcdFx0XHRpZiAoIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lICE9PSBzdHJ1bmRlZmluZWQgKSB7XHJcblx0XHRcdFx0XHRyZXR1cm4gY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSggdGFnICk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9IDpcclxuXHRcdFx0ZnVuY3Rpb24oIHRhZywgY29udGV4dCApIHtcclxuXHRcdFx0XHR2YXIgcmVzdWx0cyA9IGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIHRhZyApO1xyXG5cclxuXHRcdFx0XHQvLyBGaWx0ZXIgb3V0IHBvc3NpYmxlIGNvbW1lbnRzXHJcblx0XHRcdFx0aWYgKCB0YWcgPT09IFwiKlwiICkge1xyXG5cdFx0XHRcdFx0dmFyIGVsZW0sXHJcblx0XHRcdFx0XHRcdHRtcCA9IFtdLFxyXG5cdFx0XHRcdFx0XHRpID0gMDtcclxuXHJcblx0XHRcdFx0XHRmb3IgKCA7IChlbGVtID0gcmVzdWx0c1tpXSk7IGkrKyApIHtcclxuXHRcdFx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICkge1xyXG5cdFx0XHRcdFx0XHRcdHRtcC5wdXNoKCBlbGVtICk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRyZXR1cm4gdG1wO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRyZXR1cm4gcmVzdWx0cztcclxuXHRcdFx0fSxcclxuXHJcblx0XHRcIk5BTUVcIjogZnVuY3Rpb24oIHRhZywgY29udGV4dCApIHtcclxuXHRcdFx0aWYgKCB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50c0J5TmFtZSAhPT0gc3RydW5kZWZpbmVkICkge1xyXG5cdFx0XHRcdHJldHVybiBjb250ZXh0LmdldEVsZW1lbnRzQnlOYW1lKCBuYW1lICk7XHJcblx0XHRcdH1cclxuXHRcdH0sXHJcblxyXG5cdFx0XCJDTEFTU1wiOiBmdW5jdGlvbiggY2xhc3NOYW1lLCBjb250ZXh0LCB4bWwgKSB7XHJcblx0XHRcdGlmICggdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSAhPT0gc3RydW5kZWZpbmVkICYmICF4bWwgKSB7XHJcblx0XHRcdFx0cmV0dXJuIGNvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSggY2xhc3NOYW1lICk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9LFxyXG5cclxuXHRyZWxhdGl2ZToge1xyXG5cdFx0XCI+XCI6IHsgZGlyOiBcInBhcmVudE5vZGVcIiwgZmlyc3Q6IHRydWUgfSxcclxuXHRcdFwiIFwiOiB7IGRpcjogXCJwYXJlbnROb2RlXCIgfSxcclxuXHRcdFwiK1wiOiB7IGRpcjogXCJwcmV2aW91c1NpYmxpbmdcIiwgZmlyc3Q6IHRydWUgfSxcclxuXHRcdFwiflwiOiB7IGRpcjogXCJwcmV2aW91c1NpYmxpbmdcIiB9XHJcblx0fSxcclxuXHJcblx0cHJlRmlsdGVyOiB7XHJcblx0XHRcIkFUVFJcIjogZnVuY3Rpb24oIG1hdGNoICkge1xyXG5cdFx0XHRtYXRjaFsxXSA9IG1hdGNoWzFdLnJlcGxhY2UoIHJiYWNrc2xhc2gsIFwiXCIgKTtcclxuXHJcblx0XHRcdC8vIE1vdmUgdGhlIGdpdmVuIHZhbHVlIHRvIG1hdGNoWzNdIHdoZXRoZXIgcXVvdGVkIG9yIHVucXVvdGVkXHJcblx0XHRcdG1hdGNoWzNdID0gKCBtYXRjaFs0XSB8fCBtYXRjaFs1XSB8fCBcIlwiICkucmVwbGFjZSggcmJhY2tzbGFzaCwgXCJcIiApO1xyXG5cclxuXHRcdFx0aWYgKCBtYXRjaFsyXSA9PT0gXCJ+PVwiICkge1xyXG5cdFx0XHRcdG1hdGNoWzNdID0gXCIgXCIgKyBtYXRjaFszXSArIFwiIFwiO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRyZXR1cm4gbWF0Y2guc2xpY2UoIDAsIDQgKTtcclxuXHRcdH0sXHJcblxyXG5cdFx0XCJDSElMRFwiOiBmdW5jdGlvbiggbWF0Y2ggKSB7XHJcblx0XHRcdC8qIG1hdGNoZXMgZnJvbSBtYXRjaEV4cHIuQ0hJTERcclxuXHRcdFx0XHQxIHR5cGUgKG9ubHl8bnRofC4uLilcclxuXHRcdFx0XHQyIGFyZ3VtZW50IChldmVufG9kZHxcXGQqfFxcZCpuKFsrLV1cXGQrKT98Li4uKVxyXG5cdFx0XHRcdDMgeG4tY29tcG9uZW50IG9mIHhuK3kgYXJndW1lbnQgKFsrLV0/XFxkKm58KVxyXG5cdFx0XHRcdDQgc2lnbiBvZiB4bi1jb21wb25lbnRcclxuXHRcdFx0XHQ1IHggb2YgeG4tY29tcG9uZW50XHJcblx0XHRcdFx0NiBzaWduIG9mIHktY29tcG9uZW50XHJcblx0XHRcdFx0NyB5IG9mIHktY29tcG9uZW50XHJcblx0XHRcdCovXHJcblx0XHRcdG1hdGNoWzFdID0gbWF0Y2hbMV0udG9Mb3dlckNhc2UoKTtcclxuXHJcblx0XHRcdGlmICggbWF0Y2hbMV0gPT09IFwibnRoXCIgKSB7XHJcblx0XHRcdFx0Ly8gbnRoLWNoaWxkIHJlcXVpcmVzIGFyZ3VtZW50XHJcblx0XHRcdFx0aWYgKCAhbWF0Y2hbMl0gKSB7XHJcblx0XHRcdFx0XHRTaXp6bGUuZXJyb3IoIG1hdGNoWzBdICk7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHQvLyBudW1lcmljIHggYW5kIHkgcGFyYW1ldGVycyBmb3IgRXhwci5maWx0ZXIuQ0hJTERcclxuXHRcdFx0XHQvLyByZW1lbWJlciB0aGF0IGZhbHNlL3RydWUgY2FzdCByZXNwZWN0aXZlbHkgdG8gMC8xXHJcblx0XHRcdFx0bWF0Y2hbM10gPSArKCBtYXRjaFszXSA/IG1hdGNoWzRdICsgKG1hdGNoWzVdIHx8IDEpIDogMiAqICggbWF0Y2hbMl0gPT09IFwiZXZlblwiIHx8IG1hdGNoWzJdID09PSBcIm9kZFwiICkgKTtcclxuXHRcdFx0XHRtYXRjaFs0XSA9ICsoICggbWF0Y2hbNl0gKyBtYXRjaFs3XSApIHx8IG1hdGNoWzJdID09PSBcIm9kZFwiICk7XHJcblxyXG5cdFx0XHQvLyBvdGhlciB0eXBlcyBwcm9oaWJpdCBhcmd1bWVudHNcclxuXHRcdFx0fSBlbHNlIGlmICggbWF0Y2hbMl0gKSB7XHJcblx0XHRcdFx0U2l6emxlLmVycm9yKCBtYXRjaFswXSApO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRyZXR1cm4gbWF0Y2g7XHJcblx0XHR9LFxyXG5cclxuXHRcdFwiUFNFVURPXCI6IGZ1bmN0aW9uKCBtYXRjaCwgY29udGV4dCwgeG1sICkge1xyXG5cdFx0XHR2YXIgdW5xdW90ZWQsIGV4Y2VzcztcclxuXHRcdFx0aWYgKCBtYXRjaEV4cHJbXCJDSElMRFwiXS50ZXN0KCBtYXRjaFswXSApICkge1xyXG5cdFx0XHRcdHJldHVybiBudWxsO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRpZiAoIG1hdGNoWzNdICkge1xyXG5cdFx0XHRcdG1hdGNoWzJdID0gbWF0Y2hbM107XHJcblx0XHRcdH0gZWxzZSBpZiAoICh1bnF1b3RlZCA9IG1hdGNoWzRdKSApIHtcclxuXHRcdFx0XHQvLyBPbmx5IGNoZWNrIGFyZ3VtZW50cyB0aGF0IGNvbnRhaW4gYSBwc2V1ZG9cclxuXHRcdFx0XHRpZiAoIHJwc2V1ZG8udGVzdCh1bnF1b3RlZCkgJiZcclxuXHRcdFx0XHRcdC8vIEdldCBleGNlc3MgZnJvbSB0b2tlbml6ZSAocmVjdXJzaXZlbHkpXHJcblx0XHRcdFx0XHQoZXhjZXNzID0gdG9rZW5pemUoIHVucXVvdGVkLCBjb250ZXh0LCB4bWwsIHRydWUgKSkgJiZcclxuXHRcdFx0XHRcdC8vIGFkdmFuY2UgdG8gdGhlIG5leHQgY2xvc2luZyBwYXJlbnRoZXNpc1xyXG5cdFx0XHRcdFx0KGV4Y2VzcyA9IHVucXVvdGVkLmluZGV4T2YoIFwiKVwiLCB1bnF1b3RlZC5sZW5ndGggLSBleGNlc3MgKSAtIHVucXVvdGVkLmxlbmd0aCkgKSB7XHJcblxyXG5cdFx0XHRcdFx0Ly8gZXhjZXNzIGlzIGEgbmVnYXRpdmUgaW5kZXhcclxuXHRcdFx0XHRcdHVucXVvdGVkID0gdW5xdW90ZWQuc2xpY2UoIDAsIGV4Y2VzcyApO1xyXG5cdFx0XHRcdFx0bWF0Y2hbMF0gPSBtYXRjaFswXS5zbGljZSggMCwgZXhjZXNzICk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdG1hdGNoWzJdID0gdW5xdW90ZWQ7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8vIFJldHVybiBvbmx5IGNhcHR1cmVzIG5lZWRlZCBieSB0aGUgcHNldWRvIGZpbHRlciBtZXRob2QgKHR5cGUgYW5kIGFyZ3VtZW50KVxyXG5cdFx0XHRyZXR1cm4gbWF0Y2guc2xpY2UoIDAsIDMgKTtcclxuXHRcdH1cclxuXHR9LFxyXG5cclxuXHRmaWx0ZXI6IHtcclxuXHRcdFwiSURcIjogYXNzZXJ0R2V0SWROb3ROYW1lID9cclxuXHRcdFx0ZnVuY3Rpb24oIGlkICkge1xyXG5cdFx0XHRcdGlkID0gaWQucmVwbGFjZSggcmJhY2tzbGFzaCwgXCJcIiApO1xyXG5cdFx0XHRcdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcclxuXHRcdFx0XHRcdHJldHVybiBlbGVtLmdldEF0dHJpYnV0ZShcImlkXCIpID09PSBpZDtcclxuXHRcdFx0XHR9O1xyXG5cdFx0XHR9IDpcclxuXHRcdFx0ZnVuY3Rpb24oIGlkICkge1xyXG5cdFx0XHRcdGlkID0gaWQucmVwbGFjZSggcmJhY2tzbGFzaCwgXCJcIiApO1xyXG5cdFx0XHRcdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcclxuXHRcdFx0XHRcdHZhciBub2RlID0gdHlwZW9mIGVsZW0uZ2V0QXR0cmlidXRlTm9kZSAhPT0gc3RydW5kZWZpbmVkICYmIGVsZW0uZ2V0QXR0cmlidXRlTm9kZShcImlkXCIpO1xyXG5cdFx0XHRcdFx0cmV0dXJuIG5vZGUgJiYgbm9kZS52YWx1ZSA9PT0gaWQ7XHJcblx0XHRcdFx0fTtcclxuXHRcdFx0fSxcclxuXHJcblx0XHRcIlRBR1wiOiBmdW5jdGlvbiggbm9kZU5hbWUgKSB7XHJcblx0XHRcdGlmICggbm9kZU5hbWUgPT09IFwiKlwiICkge1xyXG5cdFx0XHRcdHJldHVybiBmdW5jdGlvbigpIHsgcmV0dXJuIHRydWU7IH07XHJcblx0XHRcdH1cclxuXHRcdFx0bm9kZU5hbWUgPSBub2RlTmFtZS5yZXBsYWNlKCByYmFja3NsYXNoLCBcIlwiICkudG9Mb3dlckNhc2UoKTtcclxuXHJcblx0XHRcdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcclxuXHRcdFx0XHRyZXR1cm4gZWxlbS5ub2RlTmFtZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IG5vZGVOYW1lO1xyXG5cdFx0XHR9O1xyXG5cdFx0fSxcclxuXHJcblx0XHRcIkNMQVNTXCI6IGZ1bmN0aW9uKCBjbGFzc05hbWUgKSB7XHJcblx0XHRcdHZhciBwYXR0ZXJuID0gY2xhc3NDYWNoZVsgZXhwYW5kbyBdWyBjbGFzc05hbWUgXTtcclxuXHRcdFx0aWYgKCAhcGF0dGVybiApIHtcclxuXHRcdFx0XHRwYXR0ZXJuID0gY2xhc3NDYWNoZSggY2xhc3NOYW1lLCBuZXcgUmVnRXhwKFwiKF58XCIgKyB3aGl0ZXNwYWNlICsgXCIpXCIgKyBjbGFzc05hbWUgKyBcIihcIiArIHdoaXRlc3BhY2UgKyBcInwkKVwiKSApO1xyXG5cdFx0XHR9XHJcblx0XHRcdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcclxuXHRcdFx0XHRyZXR1cm4gcGF0dGVybi50ZXN0KCBlbGVtLmNsYXNzTmFtZSB8fCAodHlwZW9mIGVsZW0uZ2V0QXR0cmlidXRlICE9PSBzdHJ1bmRlZmluZWQgJiYgZWxlbS5nZXRBdHRyaWJ1dGUoXCJjbGFzc1wiKSkgfHwgXCJcIiApO1xyXG5cdFx0XHR9O1xyXG5cdFx0fSxcclxuXHJcblx0XHRcIkFUVFJcIjogZnVuY3Rpb24oIG5hbWUsIG9wZXJhdG9yLCBjaGVjayApIHtcclxuXHRcdFx0aWYgKCAhb3BlcmF0b3IgKSB7XHJcblx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xyXG5cdFx0XHRcdFx0cmV0dXJuIFNpenpsZS5hdHRyKCBlbGVtLCBuYW1lICkgIT0gbnVsbDtcclxuXHRcdFx0XHR9O1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XHJcblx0XHRcdFx0dmFyIHJlc3VsdCA9IFNpenpsZS5hdHRyKCBlbGVtLCBuYW1lICksXHJcblx0XHRcdFx0XHR2YWx1ZSA9IHJlc3VsdCArIFwiXCI7XHJcblxyXG5cdFx0XHRcdGlmICggcmVzdWx0ID09IG51bGwgKSB7XHJcblx0XHRcdFx0XHRyZXR1cm4gb3BlcmF0b3IgPT09IFwiIT1cIjtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdHN3aXRjaCAoIG9wZXJhdG9yICkge1xyXG5cdFx0XHRcdFx0Y2FzZSBcIj1cIjpcclxuXHRcdFx0XHRcdFx0cmV0dXJuIHZhbHVlID09PSBjaGVjaztcclxuXHRcdFx0XHRcdGNhc2UgXCIhPVwiOlxyXG5cdFx0XHRcdFx0XHRyZXR1cm4gdmFsdWUgIT09IGNoZWNrO1xyXG5cdFx0XHRcdFx0Y2FzZSBcIl49XCI6XHJcblx0XHRcdFx0XHRcdHJldHVybiBjaGVjayAmJiB2YWx1ZS5pbmRleE9mKCBjaGVjayApID09PSAwO1xyXG5cdFx0XHRcdFx0Y2FzZSBcIio9XCI6XHJcblx0XHRcdFx0XHRcdHJldHVybiBjaGVjayAmJiB2YWx1ZS5pbmRleE9mKCBjaGVjayApID4gLTE7XHJcblx0XHRcdFx0XHRjYXNlIFwiJD1cIjpcclxuXHRcdFx0XHRcdFx0cmV0dXJuIGNoZWNrICYmIHZhbHVlLnN1YnN0ciggdmFsdWUubGVuZ3RoIC0gY2hlY2subGVuZ3RoICkgPT09IGNoZWNrO1xyXG5cdFx0XHRcdFx0Y2FzZSBcIn49XCI6XHJcblx0XHRcdFx0XHRcdHJldHVybiAoIFwiIFwiICsgdmFsdWUgKyBcIiBcIiApLmluZGV4T2YoIGNoZWNrICkgPiAtMTtcclxuXHRcdFx0XHRcdGNhc2UgXCJ8PVwiOlxyXG5cdFx0XHRcdFx0XHRyZXR1cm4gdmFsdWUgPT09IGNoZWNrIHx8IHZhbHVlLnN1YnN0ciggMCwgY2hlY2subGVuZ3RoICsgMSApID09PSBjaGVjayArIFwiLVwiO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fTtcclxuXHRcdH0sXHJcblxyXG5cdFx0XCJDSElMRFwiOiBmdW5jdGlvbiggdHlwZSwgYXJndW1lbnQsIGZpcnN0LCBsYXN0ICkge1xyXG5cclxuXHRcdFx0aWYgKCB0eXBlID09PSBcIm50aFwiICkge1xyXG5cdFx0XHRcdHZhciBkb25lTmFtZSA9IGRvbmUrKztcclxuXHJcblx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xyXG5cdFx0XHRcdFx0dmFyIHBhcmVudCwgZGlmZixcclxuXHRcdFx0XHRcdFx0Y291bnQgPSAwLFxyXG5cdFx0XHRcdFx0XHRub2RlID0gZWxlbTtcclxuXHJcblx0XHRcdFx0XHRpZiAoIGZpcnN0ID09PSAxICYmIGxhc3QgPT09IDAgKSB7XHJcblx0XHRcdFx0XHRcdHJldHVybiB0cnVlO1xyXG5cdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdHBhcmVudCA9IGVsZW0ucGFyZW50Tm9kZTtcclxuXHJcblx0XHRcdFx0XHRpZiAoIHBhcmVudCAmJiAocGFyZW50WyBleHBhbmRvIF0gIT09IGRvbmVOYW1lIHx8ICFlbGVtLnNpenNldCkgKSB7XHJcblx0XHRcdFx0XHRcdGZvciAoIG5vZGUgPSBwYXJlbnQuZmlyc3RDaGlsZDsgbm9kZTsgbm9kZSA9IG5vZGUubmV4dFNpYmxpbmcgKSB7XHJcblx0XHRcdFx0XHRcdFx0aWYgKCBub2RlLm5vZGVUeXBlID09PSAxICkge1xyXG5cdFx0XHRcdFx0XHRcdFx0bm9kZS5zaXpzZXQgPSArK2NvdW50O1xyXG5cdFx0XHRcdFx0XHRcdFx0aWYgKCBub2RlID09PSBlbGVtICkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRcdHBhcmVudFsgZXhwYW5kbyBdID0gZG9uZU5hbWU7XHJcblx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0ZGlmZiA9IGVsZW0uc2l6c2V0IC0gbGFzdDtcclxuXHJcblx0XHRcdFx0XHRpZiAoIGZpcnN0ID09PSAwICkge1xyXG5cdFx0XHRcdFx0XHRyZXR1cm4gZGlmZiA9PT0gMDtcclxuXHJcblx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRyZXR1cm4gKCBkaWZmICUgZmlyc3QgPT09IDAgJiYgZGlmZiAvIGZpcnN0ID49IDAgKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9O1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XHJcblx0XHRcdFx0dmFyIG5vZGUgPSBlbGVtO1xyXG5cclxuXHRcdFx0XHRzd2l0Y2ggKCB0eXBlICkge1xyXG5cdFx0XHRcdFx0Y2FzZSBcIm9ubHlcIjpcclxuXHRcdFx0XHRcdGNhc2UgXCJmaXJzdFwiOlxyXG5cdFx0XHRcdFx0XHR3aGlsZSAoIChub2RlID0gbm9kZS5wcmV2aW91c1NpYmxpbmcpICkge1xyXG5cdFx0XHRcdFx0XHRcdGlmICggbm9kZS5ub2RlVHlwZSA9PT0gMSApIHtcclxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBmYWxzZTtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRcdGlmICggdHlwZSA9PT0gXCJmaXJzdFwiICkge1xyXG5cdFx0XHRcdFx0XHRcdHJldHVybiB0cnVlO1xyXG5cdFx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0XHRub2RlID0gZWxlbTtcclxuXHJcblx0XHRcdFx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cclxuXHRcdFx0XHRcdGNhc2UgXCJsYXN0XCI6XHJcblx0XHRcdFx0XHRcdHdoaWxlICggKG5vZGUgPSBub2RlLm5leHRTaWJsaW5nKSApIHtcclxuXHRcdFx0XHRcdFx0XHRpZiAoIG5vZGUubm9kZVR5cGUgPT09IDEgKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH07XHJcblx0XHR9LFxyXG5cclxuXHRcdFwiUFNFVURPXCI6IGZ1bmN0aW9uKCBwc2V1ZG8sIGFyZ3VtZW50LCBjb250ZXh0LCB4bWwgKSB7XHJcblx0XHRcdC8vIHBzZXVkby1jbGFzcyBuYW1lcyBhcmUgY2FzZS1pbnNlbnNpdGl2ZVxyXG5cdFx0XHQvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9zZWxlY3RvcnMvI3BzZXVkby1jbGFzc2VzXHJcblx0XHRcdC8vIFByaW9yaXRpemUgYnkgY2FzZSBzZW5zaXRpdml0eSBpbiBjYXNlIGN1c3RvbSBwc2V1ZG9zIGFyZSBhZGRlZCB3aXRoIHVwcGVyY2FzZSBsZXR0ZXJzXHJcblx0XHRcdHZhciBhcmdzLFxyXG5cdFx0XHRcdGZuID0gRXhwci5wc2V1ZG9zWyBwc2V1ZG8gXSB8fCBFeHByLnBzZXVkb3NbIHBzZXVkby50b0xvd2VyQ2FzZSgpIF07XHJcblxyXG5cdFx0XHRpZiAoICFmbiApIHtcclxuXHRcdFx0XHRTaXp6bGUuZXJyb3IoIFwidW5zdXBwb3J0ZWQgcHNldWRvOiBcIiArIHBzZXVkbyApO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvLyBUaGUgdXNlciBtYXkgdXNlIGNyZWF0ZVBzZXVkbyB0byBpbmRpY2F0ZSB0aGF0XHJcblx0XHRcdC8vIGFyZ3VtZW50cyBhcmUgbmVlZGVkIHRvIGNyZWF0ZSB0aGUgZmlsdGVyIGZ1bmN0aW9uXHJcblx0XHRcdC8vIGp1c3QgYXMgU2l6emxlIGRvZXNcclxuXHRcdFx0aWYgKCAhZm5bIGV4cGFuZG8gXSApIHtcclxuXHRcdFx0XHRpZiAoIGZuLmxlbmd0aCA+IDEgKSB7XHJcblx0XHRcdFx0XHRhcmdzID0gWyBwc2V1ZG8sIHBzZXVkbywgXCJcIiwgYXJndW1lbnQgXTtcclxuXHRcdFx0XHRcdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcclxuXHRcdFx0XHRcdFx0cmV0dXJuIGZuKCBlbGVtLCAwLCBhcmdzICk7XHJcblx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRyZXR1cm4gZm47XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdHJldHVybiBmbiggYXJndW1lbnQsIGNvbnRleHQsIHhtbCApO1xyXG5cdFx0fVxyXG5cdH0sXHJcblxyXG5cdHBzZXVkb3M6IHtcclxuXHRcdFwibm90XCI6IG1hcmtGdW5jdGlvbihmdW5jdGlvbiggc2VsZWN0b3IsIGNvbnRleHQsIHhtbCApIHtcclxuXHRcdFx0Ly8gVHJpbSB0aGUgc2VsZWN0b3IgcGFzc2VkIHRvIGNvbXBpbGVcclxuXHRcdFx0Ly8gdG8gYXZvaWQgdHJlYXRpbmcgbGVhZGluZyBhbmQgdHJhaWxpbmdcclxuXHRcdFx0Ly8gc3BhY2VzIGFzIGNvbWJpbmF0b3JzXHJcblx0XHRcdHZhciBtYXRjaGVyID0gY29tcGlsZSggc2VsZWN0b3IucmVwbGFjZSggcnRyaW0sIFwiJDFcIiApLCBjb250ZXh0LCB4bWwgKTtcclxuXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xyXG5cdFx0XHRcdHJldHVybiAhbWF0Y2hlciggZWxlbSApO1xyXG5cdFx0XHR9O1xyXG5cdFx0fSksXHJcblxyXG5cdFx0XCJlbmFibGVkXCI6IGZ1bmN0aW9uKCBlbGVtICkge1xyXG5cdFx0XHRyZXR1cm4gZWxlbS5kaXNhYmxlZCA9PT0gZmFsc2U7XHJcblx0XHR9LFxyXG5cclxuXHRcdFwiZGlzYWJsZWRcIjogZnVuY3Rpb24oIGVsZW0gKSB7XHJcblx0XHRcdHJldHVybiBlbGVtLmRpc2FibGVkID09PSB0cnVlO1xyXG5cdFx0fSxcclxuXHJcblx0XHRcImNoZWNrZWRcIjogZnVuY3Rpb24oIGVsZW0gKSB7XHJcblx0XHRcdC8vIEluIENTUzMsIDpjaGVja2VkIHNob3VsZCByZXR1cm4gYm90aCBjaGVja2VkIGFuZCBzZWxlY3RlZCBlbGVtZW50c1xyXG5cdFx0XHQvLyBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDExL1JFQy1jc3MzLXNlbGVjdG9ycy0yMDExMDkyOS8jY2hlY2tlZFxyXG5cdFx0XHR2YXIgbm9kZU5hbWUgPSBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XHJcblx0XHRcdHJldHVybiAobm9kZU5hbWUgPT09IFwiaW5wdXRcIiAmJiAhIWVsZW0uY2hlY2tlZCkgfHwgKG5vZGVOYW1lID09PSBcIm9wdGlvblwiICYmICEhZWxlbS5zZWxlY3RlZCk7XHJcblx0XHR9LFxyXG5cclxuXHRcdFwic2VsZWN0ZWRcIjogZnVuY3Rpb24oIGVsZW0gKSB7XHJcblx0XHRcdC8vIEFjY2Vzc2luZyB0aGlzIHByb3BlcnR5IG1ha2VzIHNlbGVjdGVkLWJ5LWRlZmF1bHRcclxuXHRcdFx0Ly8gb3B0aW9ucyBpbiBTYWZhcmkgd29yayBwcm9wZXJseVxyXG5cdFx0XHRpZiAoIGVsZW0ucGFyZW50Tm9kZSApIHtcclxuXHRcdFx0XHRlbGVtLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleDtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0cmV0dXJuIGVsZW0uc2VsZWN0ZWQgPT09IHRydWU7XHJcblx0XHR9LFxyXG5cclxuXHRcdFwicGFyZW50XCI6IGZ1bmN0aW9uKCBlbGVtICkge1xyXG5cdFx0XHRyZXR1cm4gIUV4cHIucHNldWRvc1tcImVtcHR5XCJdKCBlbGVtICk7XHJcblx0XHR9LFxyXG5cclxuXHRcdFwiZW1wdHlcIjogZnVuY3Rpb24oIGVsZW0gKSB7XHJcblx0XHRcdC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL3NlbGVjdG9ycy8jZW1wdHktcHNldWRvXHJcblx0XHRcdC8vIDplbXB0eSBpcyBvbmx5IGFmZmVjdGVkIGJ5IGVsZW1lbnQgbm9kZXMgYW5kIGNvbnRlbnQgbm9kZXMoaW5jbHVkaW5nIHRleHQoMyksIGNkYXRhKDQpKSxcclxuXHRcdFx0Ly8gICBub3QgY29tbWVudCwgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbnMsIG9yIG90aGVyc1xyXG5cdFx0XHQvLyBUaGFua3MgdG8gRGllZ28gUGVyaW5pIGZvciB0aGUgbm9kZU5hbWUgc2hvcnRjdXRcclxuXHRcdFx0Ly8gICBHcmVhdGVyIHRoYW4gXCJAXCIgbWVhbnMgYWxwaGEgY2hhcmFjdGVycyAoc3BlY2lmaWNhbGx5IG5vdCBzdGFydGluZyB3aXRoIFwiI1wiIG9yIFwiP1wiKVxyXG5cdFx0XHR2YXIgbm9kZVR5cGU7XHJcblx0XHRcdGVsZW0gPSBlbGVtLmZpcnN0Q2hpbGQ7XHJcblx0XHRcdHdoaWxlICggZWxlbSApIHtcclxuXHRcdFx0XHRpZiAoIGVsZW0ubm9kZU5hbWUgPiBcIkBcIiB8fCAobm9kZVR5cGUgPSBlbGVtLm5vZGVUeXBlKSA9PT0gMyB8fCBub2RlVHlwZSA9PT0gNCApIHtcclxuXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0ZWxlbSA9IGVsZW0ubmV4dFNpYmxpbmc7XHJcblx0XHRcdH1cclxuXHRcdFx0cmV0dXJuIHRydWU7XHJcblx0XHR9LFxyXG5cclxuXHRcdFwiY29udGFpbnNcIjogbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCB0ZXh0ICkge1xyXG5cdFx0XHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XHJcblx0XHRcdFx0cmV0dXJuICggZWxlbS50ZXh0Q29udGVudCB8fCBlbGVtLmlubmVyVGV4dCB8fCBnZXRUZXh0KCBlbGVtICkgKS5pbmRleE9mKCB0ZXh0ICkgPiAtMTtcclxuXHRcdFx0fTtcclxuXHRcdH0pLFxyXG5cclxuXHRcdFwiaGFzXCI6IG1hcmtGdW5jdGlvbihmdW5jdGlvbiggc2VsZWN0b3IgKSB7XHJcblx0XHRcdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcclxuXHRcdFx0XHRyZXR1cm4gU2l6emxlKCBzZWxlY3RvciwgZWxlbSApLmxlbmd0aCA+IDA7XHJcblx0XHRcdH07XHJcblx0XHR9KSxcclxuXHJcblx0XHRcImhlYWRlclwiOiBmdW5jdGlvbiggZWxlbSApIHtcclxuXHRcdFx0cmV0dXJuIHJoZWFkZXIudGVzdCggZWxlbS5ub2RlTmFtZSApO1xyXG5cdFx0fSxcclxuXHJcblx0XHRcInRleHRcIjogZnVuY3Rpb24oIGVsZW0gKSB7XHJcblx0XHRcdHZhciB0eXBlLCBhdHRyO1xyXG5cdFx0XHQvLyBJRTYgYW5kIDcgd2lsbCBtYXAgZWxlbS50eXBlIHRvICd0ZXh0JyBmb3IgbmV3IEhUTUw1IHR5cGVzIChzZWFyY2gsIGV0YylcclxuXHRcdFx0Ly8gdXNlIGdldEF0dHJpYnV0ZSBpbnN0ZWFkIHRvIHRlc3QgdGhpcyBjYXNlXHJcblx0XHRcdHJldHVybiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwiaW5wdXRcIiAmJlxyXG5cdFx0XHRcdCh0eXBlID0gZWxlbS50eXBlKSA9PT0gXCJ0ZXh0XCIgJiZcclxuXHRcdFx0XHQoIChhdHRyID0gZWxlbS5nZXRBdHRyaWJ1dGUoXCJ0eXBlXCIpKSA9PSBudWxsIHx8IGF0dHIudG9Mb3dlckNhc2UoKSA9PT0gdHlwZSApO1xyXG5cdFx0fSxcclxuXHJcblx0XHQvLyBJbnB1dCB0eXBlc1xyXG5cdFx0XCJyYWRpb1wiOiBjcmVhdGVJbnB1dFBzZXVkbyhcInJhZGlvXCIpLFxyXG5cdFx0XCJjaGVja2JveFwiOiBjcmVhdGVJbnB1dFBzZXVkbyhcImNoZWNrYm94XCIpLFxyXG5cdFx0XCJmaWxlXCI6IGNyZWF0ZUlucHV0UHNldWRvKFwiZmlsZVwiKSxcclxuXHRcdFwicGFzc3dvcmRcIjogY3JlYXRlSW5wdXRQc2V1ZG8oXCJwYXNzd29yZFwiKSxcclxuXHRcdFwiaW1hZ2VcIjogY3JlYXRlSW5wdXRQc2V1ZG8oXCJpbWFnZVwiKSxcclxuXHJcblx0XHRcInN1Ym1pdFwiOiBjcmVhdGVCdXR0b25Qc2V1ZG8oXCJzdWJtaXRcIiksXHJcblx0XHRcInJlc2V0XCI6IGNyZWF0ZUJ1dHRvblBzZXVkbyhcInJlc2V0XCIpLFxyXG5cclxuXHRcdFwiYnV0dG9uXCI6IGZ1bmN0aW9uKCBlbGVtICkge1xyXG5cdFx0XHR2YXIgbmFtZSA9IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcclxuXHRcdFx0cmV0dXJuIG5hbWUgPT09IFwiaW5wdXRcIiAmJiBlbGVtLnR5cGUgPT09IFwiYnV0dG9uXCIgfHwgbmFtZSA9PT0gXCJidXR0b25cIjtcclxuXHRcdH0sXHJcblxyXG5cdFx0XCJpbnB1dFwiOiBmdW5jdGlvbiggZWxlbSApIHtcclxuXHRcdFx0cmV0dXJuIHJpbnB1dHMudGVzdCggZWxlbS5ub2RlTmFtZSApO1xyXG5cdFx0fSxcclxuXHJcblx0XHRcImZvY3VzXCI6IGZ1bmN0aW9uKCBlbGVtICkge1xyXG5cdFx0XHR2YXIgZG9jID0gZWxlbS5vd25lckRvY3VtZW50O1xyXG5cdFx0XHRyZXR1cm4gZWxlbSA9PT0gZG9jLmFjdGl2ZUVsZW1lbnQgJiYgKCFkb2MuaGFzRm9jdXMgfHwgZG9jLmhhc0ZvY3VzKCkpICYmICEhKGVsZW0udHlwZSB8fCBlbGVtLmhyZWYpO1xyXG5cdFx0fSxcclxuXHJcblx0XHRcImFjdGl2ZVwiOiBmdW5jdGlvbiggZWxlbSApIHtcclxuXHRcdFx0cmV0dXJuIGVsZW0gPT09IGVsZW0ub3duZXJEb2N1bWVudC5hY3RpdmVFbGVtZW50O1xyXG5cdFx0fVxyXG5cdH0sXHJcblxyXG5cdHNldEZpbHRlcnM6IHtcclxuXHRcdFwiZmlyc3RcIjogZnVuY3Rpb24oIGVsZW1lbnRzLCBhcmd1bWVudCwgbm90ICkge1xyXG5cdFx0XHRyZXR1cm4gbm90ID8gZWxlbWVudHMuc2xpY2UoIDEgKSA6IFsgZWxlbWVudHNbMF0gXTtcclxuXHRcdH0sXHJcblxyXG5cdFx0XCJsYXN0XCI6IGZ1bmN0aW9uKCBlbGVtZW50cywgYXJndW1lbnQsIG5vdCApIHtcclxuXHRcdFx0dmFyIGVsZW0gPSBlbGVtZW50cy5wb3AoKTtcclxuXHRcdFx0cmV0dXJuIG5vdCA/IGVsZW1lbnRzIDogWyBlbGVtIF07XHJcblx0XHR9LFxyXG5cclxuXHRcdFwiZXZlblwiOiBmdW5jdGlvbiggZWxlbWVudHMsIGFyZ3VtZW50LCBub3QgKSB7XHJcblx0XHRcdHZhciByZXN1bHRzID0gW10sXHJcblx0XHRcdFx0aSA9IG5vdCA/IDEgOiAwLFxyXG5cdFx0XHRcdGxlbiA9IGVsZW1lbnRzLmxlbmd0aDtcclxuXHRcdFx0Zm9yICggOyBpIDwgbGVuOyBpID0gaSArIDIgKSB7XHJcblx0XHRcdFx0cmVzdWx0cy5wdXNoKCBlbGVtZW50c1tpXSApO1xyXG5cdFx0XHR9XHJcblx0XHRcdHJldHVybiByZXN1bHRzO1xyXG5cdFx0fSxcclxuXHJcblx0XHRcIm9kZFwiOiBmdW5jdGlvbiggZWxlbWVudHMsIGFyZ3VtZW50LCBub3QgKSB7XHJcblx0XHRcdHZhciByZXN1bHRzID0gW10sXHJcblx0XHRcdFx0aSA9IG5vdCA/IDAgOiAxLFxyXG5cdFx0XHRcdGxlbiA9IGVsZW1lbnRzLmxlbmd0aDtcclxuXHRcdFx0Zm9yICggOyBpIDwgbGVuOyBpID0gaSArIDIgKSB7XHJcblx0XHRcdFx0cmVzdWx0cy5wdXNoKCBlbGVtZW50c1tpXSApO1xyXG5cdFx0XHR9XHJcblx0XHRcdHJldHVybiByZXN1bHRzO1xyXG5cdFx0fSxcclxuXHJcblx0XHRcImx0XCI6IGZ1bmN0aW9uKCBlbGVtZW50cywgYXJndW1lbnQsIG5vdCApIHtcclxuXHRcdFx0cmV0dXJuIG5vdCA/IGVsZW1lbnRzLnNsaWNlKCArYXJndW1lbnQgKSA6IGVsZW1lbnRzLnNsaWNlKCAwLCArYXJndW1lbnQgKTtcclxuXHRcdH0sXHJcblxyXG5cdFx0XCJndFwiOiBmdW5jdGlvbiggZWxlbWVudHMsIGFyZ3VtZW50LCBub3QgKSB7XHJcblx0XHRcdHJldHVybiBub3QgPyBlbGVtZW50cy5zbGljZSggMCwgK2FyZ3VtZW50ICsgMSApIDogZWxlbWVudHMuc2xpY2UoICthcmd1bWVudCArIDEgKTtcclxuXHRcdH0sXHJcblxyXG5cdFx0XCJlcVwiOiBmdW5jdGlvbiggZWxlbWVudHMsIGFyZ3VtZW50LCBub3QgKSB7XHJcblx0XHRcdHZhciBlbGVtID0gZWxlbWVudHMuc3BsaWNlKCArYXJndW1lbnQsIDEgKTtcclxuXHRcdFx0cmV0dXJuIG5vdCA/IGVsZW1lbnRzIDogZWxlbTtcclxuXHRcdH1cclxuXHR9XHJcbn07XHJcblxyXG5mdW5jdGlvbiBzaWJsaW5nQ2hlY2soIGEsIGIsIHJldCApIHtcclxuXHRpZiAoIGEgPT09IGIgKSB7XHJcblx0XHRyZXR1cm4gcmV0O1xyXG5cdH1cclxuXHJcblx0dmFyIGN1ciA9IGEubmV4dFNpYmxpbmc7XHJcblxyXG5cdHdoaWxlICggY3VyICkge1xyXG5cdFx0aWYgKCBjdXIgPT09IGIgKSB7XHJcblx0XHRcdHJldHVybiAtMTtcclxuXHRcdH1cclxuXHJcblx0XHRjdXIgPSBjdXIubmV4dFNpYmxpbmc7XHJcblx0fVxyXG5cclxuXHRyZXR1cm4gMTtcclxufVxyXG5cclxuc29ydE9yZGVyID0gZG9jRWxlbS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiA/XHJcblx0ZnVuY3Rpb24oIGEsIGIgKSB7XHJcblx0XHRpZiAoIGEgPT09IGIgKSB7XHJcblx0XHRcdGhhc0R1cGxpY2F0ZSA9IHRydWU7XHJcblx0XHRcdHJldHVybiAwO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiAoICFhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uIHx8ICFiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uID9cclxuXHRcdFx0YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiA6XHJcblx0XHRcdGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYikgJiA0XHJcblx0XHQpID8gLTEgOiAxO1xyXG5cdH0gOlxyXG5cdGZ1bmN0aW9uKCBhLCBiICkge1xyXG5cdFx0Ly8gVGhlIG5vZGVzIGFyZSBpZGVudGljYWwsIHdlIGNhbiBleGl0IGVhcmx5XHJcblx0XHRpZiAoIGEgPT09IGIgKSB7XHJcblx0XHRcdGhhc0R1cGxpY2F0ZSA9IHRydWU7XHJcblx0XHRcdHJldHVybiAwO1xyXG5cclxuXHRcdC8vIEZhbGxiYWNrIHRvIHVzaW5nIHNvdXJjZUluZGV4IChpbiBJRSkgaWYgaXQncyBhdmFpbGFibGUgb24gYm90aCBub2Rlc1xyXG5cdFx0fSBlbHNlIGlmICggYS5zb3VyY2VJbmRleCAmJiBiLnNvdXJjZUluZGV4ICkge1xyXG5cdFx0XHRyZXR1cm4gYS5zb3VyY2VJbmRleCAtIGIuc291cmNlSW5kZXg7XHJcblx0XHR9XHJcblxyXG5cdFx0dmFyIGFsLCBibCxcclxuXHRcdFx0YXAgPSBbXSxcclxuXHRcdFx0YnAgPSBbXSxcclxuXHRcdFx0YXVwID0gYS5wYXJlbnROb2RlLFxyXG5cdFx0XHRidXAgPSBiLnBhcmVudE5vZGUsXHJcblx0XHRcdGN1ciA9IGF1cDtcclxuXHJcblx0XHQvLyBJZiB0aGUgbm9kZXMgYXJlIHNpYmxpbmdzIChvciBpZGVudGljYWwpIHdlIGNhbiBkbyBhIHF1aWNrIGNoZWNrXHJcblx0XHRpZiAoIGF1cCA9PT0gYnVwICkge1xyXG5cdFx0XHRyZXR1cm4gc2libGluZ0NoZWNrKCBhLCBiICk7XHJcblxyXG5cdFx0Ly8gSWYgbm8gcGFyZW50cyB3ZXJlIGZvdW5kIHRoZW4gdGhlIG5vZGVzIGFyZSBkaXNjb25uZWN0ZWRcclxuXHRcdH0gZWxzZSBpZiAoICFhdXAgKSB7XHJcblx0XHRcdHJldHVybiAtMTtcclxuXHJcblx0XHR9IGVsc2UgaWYgKCAhYnVwICkge1xyXG5cdFx0XHRyZXR1cm4gMTtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBPdGhlcndpc2UgdGhleSdyZSBzb21ld2hlcmUgZWxzZSBpbiB0aGUgdHJlZSBzbyB3ZSBuZWVkXHJcblx0XHQvLyB0byBidWlsZCB1cCBhIGZ1bGwgbGlzdCBvZiB0aGUgcGFyZW50Tm9kZXMgZm9yIGNvbXBhcmlzb25cclxuXHRcdHdoaWxlICggY3VyICkge1xyXG5cdFx0XHRhcC51bnNoaWZ0KCBjdXIgKTtcclxuXHRcdFx0Y3VyID0gY3VyLnBhcmVudE5vZGU7XHJcblx0XHR9XHJcblxyXG5cdFx0Y3VyID0gYnVwO1xyXG5cclxuXHRcdHdoaWxlICggY3VyICkge1xyXG5cdFx0XHRicC51bnNoaWZ0KCBjdXIgKTtcclxuXHRcdFx0Y3VyID0gY3VyLnBhcmVudE5vZGU7XHJcblx0XHR9XHJcblxyXG5cdFx0YWwgPSBhcC5sZW5ndGg7XHJcblx0XHRibCA9IGJwLmxlbmd0aDtcclxuXHJcblx0XHQvLyBTdGFydCB3YWxraW5nIGRvd24gdGhlIHRyZWUgbG9va2luZyBmb3IgYSBkaXNjcmVwYW5jeVxyXG5cdFx0Zm9yICggdmFyIGkgPSAwOyBpIDwgYWwgJiYgaSA8IGJsOyBpKysgKSB7XHJcblx0XHRcdGlmICggYXBbaV0gIT09IGJwW2ldICkge1xyXG5cdFx0XHRcdHJldHVybiBzaWJsaW5nQ2hlY2soIGFwW2ldLCBicFtpXSApO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gV2UgZW5kZWQgc29tZXBsYWNlIHVwIHRoZSB0cmVlIHNvIGRvIGEgc2libGluZyBjaGVja1xyXG5cdFx0cmV0dXJuIGkgPT09IGFsID9cclxuXHRcdFx0c2libGluZ0NoZWNrKCBhLCBicFtpXSwgLTEgKSA6XHJcblx0XHRcdHNpYmxpbmdDaGVjayggYXBbaV0sIGIsIDEgKTtcclxuXHR9O1xyXG5cclxuLy8gQWx3YXlzIGFzc3VtZSB0aGUgcHJlc2VuY2Ugb2YgZHVwbGljYXRlcyBpZiBzb3J0IGRvZXNuJ3RcclxuLy8gcGFzcyB0aGVtIHRvIG91ciBjb21wYXJpc29uIGZ1bmN0aW9uIChhcyBpbiBHb29nbGUgQ2hyb21lKS5cclxuWzAsIDBdLnNvcnQoIHNvcnRPcmRlciApO1xyXG5iYXNlSGFzRHVwbGljYXRlID0gIWhhc0R1cGxpY2F0ZTtcclxuXHJcbi8vIERvY3VtZW50IHNvcnRpbmcgYW5kIHJlbW92aW5nIGR1cGxpY2F0ZXNcclxuU2l6emxlLnVuaXF1ZVNvcnQgPSBmdW5jdGlvbiggcmVzdWx0cyApIHtcclxuXHR2YXIgZWxlbSxcclxuXHRcdGkgPSAxO1xyXG5cclxuXHRoYXNEdXBsaWNhdGUgPSBiYXNlSGFzRHVwbGljYXRlO1xyXG5cdHJlc3VsdHMuc29ydCggc29ydE9yZGVyICk7XHJcblxyXG5cdGlmICggaGFzRHVwbGljYXRlICkge1xyXG5cdFx0Zm9yICggOyAoZWxlbSA9IHJlc3VsdHNbaV0pOyBpKysgKSB7XHJcblx0XHRcdGlmICggZWxlbSA9PT0gcmVzdWx0c1sgaSAtIDEgXSApIHtcclxuXHRcdFx0XHRyZXN1bHRzLnNwbGljZSggaS0tLCAxICk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHJldHVybiByZXN1bHRzO1xyXG59O1xyXG5cclxuU2l6emxlLmVycm9yID0gZnVuY3Rpb24oIG1zZyApIHtcclxuXHR0aHJvdyBuZXcgRXJyb3IoIFwiU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogXCIgKyBtc2cgKTtcclxufTtcclxuXHJcbmZ1bmN0aW9uIHRva2VuaXplKCBzZWxlY3RvciwgY29udGV4dCwgeG1sLCBwYXJzZU9ubHkgKSB7XHJcblx0dmFyIG1hdGNoZWQsIG1hdGNoLCB0b2tlbnMsIHR5cGUsXHJcblx0XHRzb0ZhciwgZ3JvdXBzLCBncm91cCwgaSxcclxuXHRcdHByZUZpbHRlcnMsIGZpbHRlcnMsXHJcblx0XHRjaGVja0NvbnRleHQgPSAheG1sICYmIGNvbnRleHQgIT09IGRvY3VtZW50LFxyXG5cdFx0Ly8gVG9rZW4gY2FjaGUgc2hvdWxkIG1haW50YWluIHNwYWNlc1xyXG5cdFx0a2V5ID0gKCBjaGVja0NvbnRleHQgPyBcIjxzPlwiIDogXCJcIiApICsgc2VsZWN0b3IucmVwbGFjZSggcnRyaW0sIFwiJDE8cz5cIiApLFxyXG5cdFx0Y2FjaGVkID0gdG9rZW5DYWNoZVsgZXhwYW5kbyBdWyBrZXkgXTtcclxuXHJcblx0aWYgKCBjYWNoZWQgKSB7XHJcblx0XHRyZXR1cm4gcGFyc2VPbmx5ID8gMCA6IHNsaWNlLmNhbGwoIGNhY2hlZCwgMCApO1xyXG5cdH1cclxuXHJcblx0c29GYXIgPSBzZWxlY3RvcjtcclxuXHRncm91cHMgPSBbXTtcclxuXHRpID0gMDtcclxuXHRwcmVGaWx0ZXJzID0gRXhwci5wcmVGaWx0ZXI7XHJcblx0ZmlsdGVycyA9IEV4cHIuZmlsdGVyO1xyXG5cclxuXHR3aGlsZSAoIHNvRmFyICkge1xyXG5cclxuXHRcdC8vIENvbW1hIGFuZCBmaXJzdCBydW5cclxuXHRcdGlmICggIW1hdGNoZWQgfHwgKG1hdGNoID0gcmNvbW1hLmV4ZWMoIHNvRmFyICkpICkge1xyXG5cdFx0XHRpZiAoIG1hdGNoICkge1xyXG5cdFx0XHRcdHNvRmFyID0gc29GYXIuc2xpY2UoIG1hdGNoWzBdLmxlbmd0aCApO1xyXG5cdFx0XHRcdHRva2Vucy5zZWxlY3RvciA9IGdyb3VwO1xyXG5cdFx0XHR9XHJcblx0XHRcdGdyb3Vwcy5wdXNoKCB0b2tlbnMgPSBbXSApO1xyXG5cdFx0XHRncm91cCA9IFwiXCI7XHJcblxyXG5cdFx0XHQvLyBOZWVkIHRvIG1ha2Ugc3VyZSB3ZSdyZSB3aXRoaW4gYSBuYXJyb3dlciBjb250ZXh0IGlmIG5lY2Vzc2FyeVxyXG5cdFx0XHQvLyBBZGRpbmcgYSBkZXNjZW5kYW50IGNvbWJpbmF0b3Igd2lsbCBnZW5lcmF0ZSB3aGF0IGlzIG5lZWRlZFxyXG5cdFx0XHRpZiAoIGNoZWNrQ29udGV4dCApIHtcclxuXHRcdFx0XHRzb0ZhciA9IFwiIFwiICsgc29GYXI7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRtYXRjaGVkID0gZmFsc2U7XHJcblxyXG5cdFx0Ly8gQ29tYmluYXRvcnNcclxuXHRcdGlmICggKG1hdGNoID0gcmNvbWJpbmF0b3JzLmV4ZWMoIHNvRmFyICkpICkge1xyXG5cdFx0XHRncm91cCArPSBtYXRjaFswXTtcclxuXHRcdFx0c29GYXIgPSBzb0Zhci5zbGljZSggbWF0Y2hbMF0ubGVuZ3RoICk7XHJcblxyXG5cdFx0XHQvLyBDYXN0IGRlc2NlbmRhbnQgY29tYmluYXRvcnMgdG8gc3BhY2VcclxuXHRcdFx0bWF0Y2hlZCA9IHRva2Vucy5wdXNoKHtcclxuXHRcdFx0XHRwYXJ0OiBtYXRjaC5wb3AoKS5yZXBsYWNlKCBydHJpbSwgXCIgXCIgKSxcclxuXHRcdFx0XHRzdHJpbmc6IG1hdGNoWzBdLFxyXG5cdFx0XHRcdGNhcHR1cmVzOiBtYXRjaFxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBGaWx0ZXJzXHJcblx0XHRmb3IgKCB0eXBlIGluIGZpbHRlcnMgKSB7XHJcblx0XHRcdGlmICggKG1hdGNoID0gbWF0Y2hFeHByWyB0eXBlIF0uZXhlYyggc29GYXIgKSkgJiYgKCFwcmVGaWx0ZXJzWyB0eXBlIF0gfHxcclxuXHRcdFx0XHQoIG1hdGNoID0gcHJlRmlsdGVyc1sgdHlwZSBdKG1hdGNoLCBjb250ZXh0LCB4bWwpICkpICkge1xyXG5cclxuXHRcdFx0XHRncm91cCArPSBtYXRjaFswXTtcclxuXHRcdFx0XHRzb0ZhciA9IHNvRmFyLnNsaWNlKCBtYXRjaFswXS5sZW5ndGggKTtcclxuXHRcdFx0XHRtYXRjaGVkID0gdG9rZW5zLnB1c2goe1xyXG5cdFx0XHRcdFx0cGFydDogdHlwZSxcclxuXHRcdFx0XHRcdHN0cmluZzogbWF0Y2guc2hpZnQoKSxcclxuXHRcdFx0XHRcdGNhcHR1cmVzOiBtYXRjaFxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKCAhbWF0Y2hlZCApIHtcclxuXHRcdFx0YnJlYWs7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvLyBBdHRhY2ggdGhlIGZ1bGwgZ3JvdXAgYXMgYSBzZWxlY3RvclxyXG5cdGlmICggZ3JvdXAgKSB7XHJcblx0XHR0b2tlbnMuc2VsZWN0b3IgPSBncm91cDtcclxuXHR9XHJcblxyXG5cdC8vIFJldHVybiB0aGUgbGVuZ3RoIG9mIHRoZSBpbnZhbGlkIGV4Y2Vzc1xyXG5cdC8vIGlmIHdlJ3JlIGp1c3QgcGFyc2luZ1xyXG5cdC8vIE90aGVyd2lzZSwgdGhyb3cgYW4gZXJyb3Igb3IgcmV0dXJuIHRva2Vuc1xyXG5cdHJldHVybiBwYXJzZU9ubHkgP1xyXG5cdFx0c29GYXIubGVuZ3RoIDpcclxuXHRcdHNvRmFyID9cclxuXHRcdFx0U2l6emxlLmVycm9yKCBzZWxlY3RvciApIDpcclxuXHRcdFx0Ly8gQ2FjaGUgdGhlIHRva2Vuc1xyXG5cdFx0XHRzbGljZS5jYWxsKCB0b2tlbkNhY2hlKGtleSwgZ3JvdXBzKSwgMCApO1xyXG59XHJcblxyXG5mdW5jdGlvbiBhZGRDb21iaW5hdG9yKCBtYXRjaGVyLCBjb21iaW5hdG9yLCBjb250ZXh0LCB4bWwgKSB7XHJcblx0dmFyIGRpciA9IGNvbWJpbmF0b3IuZGlyLFxyXG5cdFx0ZG9uZU5hbWUgPSBkb25lKys7XHJcblxyXG5cdGlmICggIW1hdGNoZXIgKSB7XHJcblx0XHQvLyBJZiB0aGVyZSBpcyBubyBtYXRjaGVyIHRvIGNoZWNrLCBjaGVjayBhZ2FpbnN0IHRoZSBjb250ZXh0XHJcblx0XHRtYXRjaGVyID0gZnVuY3Rpb24oIGVsZW0gKSB7XHJcblx0XHRcdHJldHVybiBlbGVtID09PSBjb250ZXh0O1xyXG5cdFx0fTtcclxuXHR9XHJcblx0cmV0dXJuIGNvbWJpbmF0b3IuZmlyc3QgP1xyXG5cdFx0ZnVuY3Rpb24oIGVsZW0gKSB7XHJcblx0XHRcdHdoaWxlICggKGVsZW0gPSBlbGVtWyBkaXIgXSkgKSB7XHJcblx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICkge1xyXG5cdFx0XHRcdFx0cmV0dXJuIG1hdGNoZXIoIGVsZW0gKSAmJiBlbGVtO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fSA6XHJcblx0XHR4bWwgP1xyXG5cdFx0XHRmdW5jdGlvbiggZWxlbSApIHtcclxuXHRcdFx0XHR3aGlsZSAoIChlbGVtID0gZWxlbVsgZGlyIF0pICkge1xyXG5cdFx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICkge1xyXG5cdFx0XHRcdFx0XHRpZiAoIG1hdGNoZXIoIGVsZW0gKSApIHtcclxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gZWxlbTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSA6XHJcblx0XHRcdGZ1bmN0aW9uKCBlbGVtICkge1xyXG5cdFx0XHRcdHZhciBjYWNoZSxcclxuXHRcdFx0XHRcdGRpcmtleSA9IGRvbmVOYW1lICsgXCIuXCIgKyBkaXJydW5zLFxyXG5cdFx0XHRcdFx0Y2FjaGVka2V5ID0gZGlya2V5ICsgXCIuXCIgKyBjYWNoZWRydW5zO1xyXG5cdFx0XHRcdHdoaWxlICggKGVsZW0gPSBlbGVtWyBkaXIgXSkgKSB7XHJcblx0XHRcdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7XHJcblx0XHRcdFx0XHRcdGlmICggKGNhY2hlID0gZWxlbVsgZXhwYW5kbyBdKSA9PT0gY2FjaGVka2V5ICkge1xyXG5cdFx0XHRcdFx0XHRcdHJldHVybiBlbGVtLnNpenNldDtcclxuXHRcdFx0XHRcdFx0fSBlbHNlIGlmICggdHlwZW9mIGNhY2hlID09PSBcInN0cmluZ1wiICYmIGNhY2hlLmluZGV4T2YoZGlya2V5KSA9PT0gMCApIHtcclxuXHRcdFx0XHRcdFx0XHRpZiAoIGVsZW0uc2l6c2V0ICkge1xyXG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGVsZW07XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdGVsZW1bIGV4cGFuZG8gXSA9IGNhY2hlZGtleTtcclxuXHRcdFx0XHRcdFx0XHRpZiAoIG1hdGNoZXIoIGVsZW0gKSApIHtcclxuXHRcdFx0XHRcdFx0XHRcdGVsZW0uc2l6c2V0ID0gdHJ1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBlbGVtO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRlbGVtLnNpenNldCA9IGZhbHNlO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBhZGRNYXRjaGVyKCBoaWdoZXIsIGRlZXBlciApIHtcclxuXHRyZXR1cm4gaGlnaGVyID9cclxuXHRcdGZ1bmN0aW9uKCBlbGVtICkge1xyXG5cdFx0XHR2YXIgcmVzdWx0ID0gZGVlcGVyKCBlbGVtICk7XHJcblx0XHRcdHJldHVybiByZXN1bHQgJiYgaGlnaGVyKCByZXN1bHQgPT09IHRydWUgPyBlbGVtIDogcmVzdWx0ICk7XHJcblx0XHR9IDpcclxuXHRcdGRlZXBlcjtcclxufVxyXG5cclxuLy8gW1wiVEFHXCIsIFwiPlwiLCBcIklEXCIsIFwiIFwiLCBcIkNMQVNTXCJdXHJcbmZ1bmN0aW9uIG1hdGNoZXJGcm9tVG9rZW5zKCB0b2tlbnMsIGNvbnRleHQsIHhtbCApIHtcclxuXHR2YXIgdG9rZW4sIG1hdGNoZXIsXHJcblx0XHRpID0gMDtcclxuXHJcblx0Zm9yICggOyAodG9rZW4gPSB0b2tlbnNbaV0pOyBpKysgKSB7XHJcblx0XHRpZiAoIEV4cHIucmVsYXRpdmVbIHRva2VuLnBhcnQgXSApIHtcclxuXHRcdFx0bWF0Y2hlciA9IGFkZENvbWJpbmF0b3IoIG1hdGNoZXIsIEV4cHIucmVsYXRpdmVbIHRva2VuLnBhcnQgXSwgY29udGV4dCwgeG1sICk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRtYXRjaGVyID0gYWRkTWF0Y2hlciggbWF0Y2hlciwgRXhwci5maWx0ZXJbIHRva2VuLnBhcnQgXS5hcHBseShudWxsLCB0b2tlbi5jYXB0dXJlcy5jb25jYXQoIGNvbnRleHQsIHhtbCApKSApO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cmV0dXJuIG1hdGNoZXI7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIG1hdGNoZXJGcm9tR3JvdXBNYXRjaGVycyggbWF0Y2hlcnMgKSB7XHJcblx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xyXG5cdFx0dmFyIG1hdGNoZXIsXHJcblx0XHRcdGogPSAwO1xyXG5cdFx0Zm9yICggOyAobWF0Y2hlciA9IG1hdGNoZXJzW2pdKTsgaisrICkge1xyXG5cdFx0XHRpZiAoIG1hdGNoZXIoZWxlbSkgKSB7XHJcblx0XHRcdFx0cmV0dXJuIHRydWU7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiBmYWxzZTtcclxuXHR9O1xyXG59XHJcblxyXG5jb21waWxlID0gU2l6emxlLmNvbXBpbGUgPSBmdW5jdGlvbiggc2VsZWN0b3IsIGNvbnRleHQsIHhtbCApIHtcclxuXHR2YXIgZ3JvdXAsIGksIGxlbixcclxuXHRcdGNhY2hlZCA9IGNvbXBpbGVyQ2FjaGVbIGV4cGFuZG8gXVsgc2VsZWN0b3IgXTtcclxuXHJcblx0Ly8gUmV0dXJuIGEgY2FjaGVkIGdyb3VwIGZ1bmN0aW9uIGlmIGFscmVhZHkgZ2VuZXJhdGVkIChjb250ZXh0IGRlcGVuZGVudClcclxuXHRpZiAoIGNhY2hlZCAmJiBjYWNoZWQuY29udGV4dCA9PT0gY29udGV4dCApIHtcclxuXHRcdHJldHVybiBjYWNoZWQ7XHJcblx0fVxyXG5cclxuXHQvLyBHZW5lcmF0ZSBhIGZ1bmN0aW9uIG9mIHJlY3Vyc2l2ZSBmdW5jdGlvbnMgdGhhdCBjYW4gYmUgdXNlZCB0byBjaGVjayBlYWNoIGVsZW1lbnRcclxuXHRncm91cCA9IHRva2VuaXplKCBzZWxlY3RvciwgY29udGV4dCwgeG1sICk7XHJcblx0Zm9yICggaSA9IDAsIGxlbiA9IGdyb3VwLmxlbmd0aDsgaSA8IGxlbjsgaSsrICkge1xyXG5cdFx0Z3JvdXBbaV0gPSBtYXRjaGVyRnJvbVRva2Vucyhncm91cFtpXSwgY29udGV4dCwgeG1sKTtcclxuXHR9XHJcblxyXG5cdC8vIENhY2hlIHRoZSBjb21waWxlZCBmdW5jdGlvblxyXG5cdGNhY2hlZCA9IGNvbXBpbGVyQ2FjaGUoIHNlbGVjdG9yLCBtYXRjaGVyRnJvbUdyb3VwTWF0Y2hlcnMoZ3JvdXApICk7XHJcblx0Y2FjaGVkLmNvbnRleHQgPSBjb250ZXh0O1xyXG5cdGNhY2hlZC5ydW5zID0gY2FjaGVkLmRpcnJ1bnMgPSAwO1xyXG5cdHJldHVybiBjYWNoZWQ7XHJcbn07XHJcblxyXG5mdW5jdGlvbiBtdWx0aXBsZUNvbnRleHRzKCBzZWxlY3RvciwgY29udGV4dHMsIHJlc3VsdHMsIHNlZWQgKSB7XHJcblx0dmFyIGkgPSAwLFxyXG5cdFx0bGVuID0gY29udGV4dHMubGVuZ3RoO1xyXG5cdGZvciAoIDsgaSA8IGxlbjsgaSsrICkge1xyXG5cdFx0U2l6emxlKCBzZWxlY3RvciwgY29udGV4dHNbaV0sIHJlc3VsdHMsIHNlZWQgKTtcclxuXHR9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGhhbmRsZVBPU0dyb3VwKCBzZWxlY3RvciwgcG9zZmlsdGVyLCBhcmd1bWVudCwgY29udGV4dHMsIHNlZWQsIG5vdCApIHtcclxuXHR2YXIgcmVzdWx0cyxcclxuXHRcdGZuID0gRXhwci5zZXRGaWx0ZXJzWyBwb3NmaWx0ZXIudG9Mb3dlckNhc2UoKSBdO1xyXG5cclxuXHRpZiAoICFmbiApIHtcclxuXHRcdFNpenpsZS5lcnJvciggcG9zZmlsdGVyICk7XHJcblx0fVxyXG5cclxuXHRpZiAoIHNlbGVjdG9yIHx8ICEocmVzdWx0cyA9IHNlZWQpICkge1xyXG5cdFx0bXVsdGlwbGVDb250ZXh0cyggc2VsZWN0b3IgfHwgXCIqXCIsIGNvbnRleHRzLCAocmVzdWx0cyA9IFtdKSwgc2VlZCApO1xyXG5cdH1cclxuXHJcblx0cmV0dXJuIHJlc3VsdHMubGVuZ3RoID4gMCA/IGZuKCByZXN1bHRzLCBhcmd1bWVudCwgbm90ICkgOiBbXTtcclxufVxyXG5cclxuZnVuY3Rpb24gaGFuZGxlUE9TKCBncm91cHMsIGNvbnRleHQsIHJlc3VsdHMsIHNlZWQgKSB7XHJcblx0dmFyIGdyb3VwLCBwYXJ0LCBqLCBncm91cExlbiwgdG9rZW4sIHNlbGVjdG9yLFxyXG5cdFx0YW5jaG9yLCBlbGVtZW50cywgbWF0Y2gsIG1hdGNoZWQsXHJcblx0XHRsYXN0SW5kZXgsIGN1cnJlbnRDb250ZXh0cywgbm90LFxyXG5cdFx0aSA9IDAsXHJcblx0XHRsZW4gPSBncm91cHMubGVuZ3RoLFxyXG5cdFx0cnBvcyA9IG1hdGNoRXhwcltcIlBPU1wiXSxcclxuXHRcdC8vIFRoaXMgaXMgZ2VuZXJhdGVkIGhlcmUgaW4gY2FzZSBtYXRjaEV4cHJbXCJQT1NcIl0gaXMgZXh0ZW5kZWRcclxuXHRcdHJwb3Nncm91cHMgPSBuZXcgUmVnRXhwKCBcIl5cIiArIHJwb3Muc291cmNlICsgXCIoPyFcIiArIHdoaXRlc3BhY2UgKyBcIilcIiwgXCJpXCIgKSxcclxuXHRcdC8vIFRoaXMgaXMgZm9yIG1ha2luZyBzdXJlIG5vbi1wYXJ0aWNpcGF0aW5nXHJcblx0XHQvLyBtYXRjaGluZyBncm91cHMgYXJlIHJlcHJlc2VudGVkIGNyb3NzLWJyb3dzZXIgKElFNi04KVxyXG5cdFx0c2V0VW5kZWZpbmVkID0gZnVuY3Rpb24oKSB7XHJcblx0XHRcdHZhciBpID0gMSxcclxuXHRcdFx0XHRsZW4gPSBhcmd1bWVudHMubGVuZ3RoIC0gMjtcclxuXHRcdFx0Zm9yICggOyBpIDwgbGVuOyBpKysgKSB7XHJcblx0XHRcdFx0aWYgKCBhcmd1bWVudHNbaV0gPT09IHVuZGVmaW5lZCApIHtcclxuXHRcdFx0XHRcdG1hdGNoW2ldID0gdW5kZWZpbmVkO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fTtcclxuXHJcblx0Zm9yICggOyBpIDwgbGVuOyBpKysgKSB7XHJcblx0XHRncm91cCA9IGdyb3Vwc1tpXTtcclxuXHRcdHBhcnQgPSBcIlwiO1xyXG5cdFx0ZWxlbWVudHMgPSBzZWVkO1xyXG5cdFx0Zm9yICggaiA9IDAsIGdyb3VwTGVuID0gZ3JvdXAubGVuZ3RoOyBqIDwgZ3JvdXBMZW47IGorKyApIHtcclxuXHRcdFx0dG9rZW4gPSBncm91cFtqXTtcclxuXHRcdFx0c2VsZWN0b3IgPSB0b2tlbi5zdHJpbmc7XHJcblx0XHRcdGlmICggdG9rZW4ucGFydCA9PT0gXCJQU0VVRE9cIiApIHtcclxuXHRcdFx0XHQvLyBSZXNldCByZWdleCBpbmRleCB0byAwXHJcblx0XHRcdFx0cnBvcy5leGVjKFwiXCIpO1xyXG5cdFx0XHRcdGFuY2hvciA9IDA7XHJcblx0XHRcdFx0d2hpbGUgKCAobWF0Y2ggPSBycG9zLmV4ZWMoIHNlbGVjdG9yICkpICkge1xyXG5cdFx0XHRcdFx0bWF0Y2hlZCA9IHRydWU7XHJcblx0XHRcdFx0XHRsYXN0SW5kZXggPSBycG9zLmxhc3RJbmRleCA9IG1hdGNoLmluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RoO1xyXG5cdFx0XHRcdFx0aWYgKCBsYXN0SW5kZXggPiBhbmNob3IgKSB7XHJcblx0XHRcdFx0XHRcdHBhcnQgKz0gc2VsZWN0b3Iuc2xpY2UoIGFuY2hvciwgbWF0Y2guaW5kZXggKTtcclxuXHRcdFx0XHRcdFx0YW5jaG9yID0gbGFzdEluZGV4O1xyXG5cdFx0XHRcdFx0XHRjdXJyZW50Q29udGV4dHMgPSBbIGNvbnRleHQgXTtcclxuXHJcblx0XHRcdFx0XHRcdGlmICggcmNvbWJpbmF0b3JzLnRlc3QocGFydCkgKSB7XHJcblx0XHRcdFx0XHRcdFx0aWYgKCBlbGVtZW50cyApIHtcclxuXHRcdFx0XHRcdFx0XHRcdGN1cnJlbnRDb250ZXh0cyA9IGVsZW1lbnRzO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRlbGVtZW50cyA9IHNlZWQ7XHJcblx0XHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRcdGlmICggKG5vdCA9IHJlbmRzV2l0aE5vdC50ZXN0KCBwYXJ0ICkpICkge1xyXG5cdFx0XHRcdFx0XHRcdHBhcnQgPSBwYXJ0LnNsaWNlKCAwLCAtNSApLnJlcGxhY2UoIHJjb21iaW5hdG9ycywgXCIkJipcIiApO1xyXG5cdFx0XHRcdFx0XHRcdGFuY2hvcisrO1xyXG5cdFx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0XHRpZiAoIG1hdGNoLmxlbmd0aCA+IDEgKSB7XHJcblx0XHRcdFx0XHRcdFx0bWF0Y2hbMF0ucmVwbGFjZSggcnBvc2dyb3Vwcywgc2V0VW5kZWZpbmVkICk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0ZWxlbWVudHMgPSBoYW5kbGVQT1NHcm91cCggcGFydCwgbWF0Y2hbMV0sIG1hdGNoWzJdLCBjdXJyZW50Q29udGV4dHMsIGVsZW1lbnRzLCBub3QgKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdHBhcnQgPSBcIlwiO1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGlmICggIW1hdGNoZWQgKSB7XHJcblx0XHRcdFx0cGFydCArPSBzZWxlY3RvcjtcclxuXHRcdFx0fVxyXG5cdFx0XHRtYXRjaGVkID0gZmFsc2U7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKCBwYXJ0ICkge1xyXG5cdFx0XHRpZiAoIHJjb21iaW5hdG9ycy50ZXN0KHBhcnQpICkge1xyXG5cdFx0XHRcdG11bHRpcGxlQ29udGV4dHMoIHBhcnQsIGVsZW1lbnRzIHx8IFsgY29udGV4dCBdLCByZXN1bHRzLCBzZWVkICk7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0U2l6emxlKCBwYXJ0LCBjb250ZXh0LCByZXN1bHRzLCBzZWVkID8gc2VlZC5jb25jYXQoZWxlbWVudHMpIDogZWxlbWVudHMgKTtcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0cHVzaC5hcHBseSggcmVzdWx0cywgZWxlbWVudHMgKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8vIERvIG5vdCBzb3J0IGlmIHRoaXMgaXMgYSBzaW5nbGUgZmlsdGVyXHJcblx0cmV0dXJuIGxlbiA9PT0gMSA/IHJlc3VsdHMgOiBTaXp6bGUudW5pcXVlU29ydCggcmVzdWx0cyApO1xyXG59XHJcblxyXG5mdW5jdGlvbiBzZWxlY3QoIHNlbGVjdG9yLCBjb250ZXh0LCByZXN1bHRzLCBzZWVkLCB4bWwgKSB7XHJcblx0Ly8gUmVtb3ZlIGV4Y2Vzc2l2ZSB3aGl0ZXNwYWNlXHJcblx0c2VsZWN0b3IgPSBzZWxlY3Rvci5yZXBsYWNlKCBydHJpbSwgXCIkMVwiICk7XHJcblx0dmFyIGVsZW1lbnRzLCBtYXRjaGVyLCBjYWNoZWQsIGVsZW0sXHJcblx0XHRpLCB0b2tlbnMsIHRva2VuLCBsYXN0VG9rZW4sIGZpbmRDb250ZXh0LCB0eXBlLFxyXG5cdFx0bWF0Y2ggPSB0b2tlbml6ZSggc2VsZWN0b3IsIGNvbnRleHQsIHhtbCApLFxyXG5cdFx0Y29udGV4dE5vZGVUeXBlID0gY29udGV4dC5ub2RlVHlwZTtcclxuXHJcblx0Ly8gUE9TIGhhbmRsaW5nXHJcblx0aWYgKCBtYXRjaEV4cHJbXCJQT1NcIl0udGVzdChzZWxlY3RvcikgKSB7XHJcblx0XHRyZXR1cm4gaGFuZGxlUE9TKCBtYXRjaCwgY29udGV4dCwgcmVzdWx0cywgc2VlZCApO1xyXG5cdH1cclxuXHJcblx0aWYgKCBzZWVkICkge1xyXG5cdFx0ZWxlbWVudHMgPSBzbGljZS5jYWxsKCBzZWVkLCAwICk7XHJcblxyXG5cdC8vIFRvIG1haW50YWluIGRvY3VtZW50IG9yZGVyLCBvbmx5IG5hcnJvdyB0aGVcclxuXHQvLyBzZXQgaWYgdGhlcmUgaXMgb25lIGdyb3VwXHJcblx0fSBlbHNlIGlmICggbWF0Y2gubGVuZ3RoID09PSAxICkge1xyXG5cclxuXHRcdC8vIFRha2UgYSBzaG9ydGN1dCBhbmQgc2V0IHRoZSBjb250ZXh0IGlmIHRoZSByb290IHNlbGVjdG9yIGlzIGFuIElEXHJcblx0XHRpZiAoICh0b2tlbnMgPSBzbGljZS5jYWxsKCBtYXRjaFswXSwgMCApKS5sZW5ndGggPiAyICYmXHJcblx0XHRcdFx0KHRva2VuID0gdG9rZW5zWzBdKS5wYXJ0ID09PSBcIklEXCIgJiZcclxuXHRcdFx0XHRjb250ZXh0Tm9kZVR5cGUgPT09IDkgJiYgIXhtbCAmJlxyXG5cdFx0XHRcdEV4cHIucmVsYXRpdmVbIHRva2Vuc1sxXS5wYXJ0IF0gKSB7XHJcblxyXG5cdFx0XHRjb250ZXh0ID0gRXhwci5maW5kW1wiSURcIl0oIHRva2VuLmNhcHR1cmVzWzBdLnJlcGxhY2UoIHJiYWNrc2xhc2gsIFwiXCIgKSwgY29udGV4dCwgeG1sIClbMF07XHJcblx0XHRcdGlmICggIWNvbnRleHQgKSB7XHJcblx0XHRcdFx0cmV0dXJuIHJlc3VsdHM7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdHNlbGVjdG9yID0gc2VsZWN0b3Iuc2xpY2UoIHRva2Vucy5zaGlmdCgpLnN0cmluZy5sZW5ndGggKTtcclxuXHRcdH1cclxuXHJcblx0XHRmaW5kQ29udGV4dCA9ICggKG1hdGNoID0gcnNpYmxpbmcuZXhlYyggdG9rZW5zWzBdLnN0cmluZyApKSAmJiAhbWF0Y2guaW5kZXggJiYgY29udGV4dC5wYXJlbnROb2RlICkgfHwgY29udGV4dDtcclxuXHJcblx0XHQvLyBSZWR1Y2UgdGhlIHNldCBpZiBwb3NzaWJsZVxyXG5cdFx0bGFzdFRva2VuID0gXCJcIjtcclxuXHRcdGZvciAoIGkgPSB0b2tlbnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0gKSB7XHJcblx0XHRcdHRva2VuID0gdG9rZW5zW2ldO1xyXG5cdFx0XHR0eXBlID0gdG9rZW4ucGFydDtcclxuXHRcdFx0bGFzdFRva2VuID0gdG9rZW4uc3RyaW5nICsgbGFzdFRva2VuO1xyXG5cdFx0XHRpZiAoIEV4cHIucmVsYXRpdmVbIHR5cGUgXSApIHtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAoIEV4cHIub3JkZXIudGVzdCh0eXBlKSApIHtcclxuXHRcdFx0XHRlbGVtZW50cyA9IEV4cHIuZmluZFsgdHlwZSBdKCB0b2tlbi5jYXB0dXJlc1swXS5yZXBsYWNlKCByYmFja3NsYXNoLCBcIlwiICksIGZpbmRDb250ZXh0LCB4bWwgKTtcclxuXHRcdFx0XHRpZiAoIGVsZW1lbnRzID09IG51bGwgKSB7XHJcblx0XHRcdFx0XHRjb250aW51ZTtcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0c2VsZWN0b3IgPSBzZWxlY3Rvci5zbGljZSggMCwgc2VsZWN0b3IubGVuZ3RoIC0gbGFzdFRva2VuLmxlbmd0aCApICtcclxuXHRcdFx0XHRcdFx0bGFzdFRva2VuLnJlcGxhY2UoIG1hdGNoRXhwclsgdHlwZSBdLCBcIlwiICk7XHJcblxyXG5cdFx0XHRcdFx0aWYgKCAhc2VsZWN0b3IgKSB7XHJcblx0XHRcdFx0XHRcdHB1c2guYXBwbHkoIHJlc3VsdHMsIHNsaWNlLmNhbGwoZWxlbWVudHMsIDApICk7XHJcblx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvLyBPbmx5IGxvb3Agb3ZlciB0aGUgZ2l2ZW4gZWxlbWVudHMgb25jZVxyXG5cdGlmICggc2VsZWN0b3IgKSB7XHJcblx0XHRtYXRjaGVyID0gY29tcGlsZSggc2VsZWN0b3IsIGNvbnRleHQsIHhtbCApO1xyXG5cdFx0ZGlycnVucyA9IG1hdGNoZXIuZGlycnVucysrO1xyXG5cdFx0aWYgKCBlbGVtZW50cyA9PSBudWxsICkge1xyXG5cdFx0XHRlbGVtZW50cyA9IEV4cHIuZmluZFtcIlRBR1wiXSggXCIqXCIsIChyc2libGluZy50ZXN0KCBzZWxlY3RvciApICYmIGNvbnRleHQucGFyZW50Tm9kZSkgfHwgY29udGV4dCApO1xyXG5cdFx0fVxyXG5cclxuXHRcdGZvciAoIGkgPSAwOyAoZWxlbSA9IGVsZW1lbnRzW2ldKTsgaSsrICkge1xyXG5cdFx0XHRjYWNoZWRydW5zID0gbWF0Y2hlci5ydW5zKys7XHJcblx0XHRcdGlmICggbWF0Y2hlcihlbGVtKSApIHtcclxuXHRcdFx0XHRyZXN1bHRzLnB1c2goIGVsZW0gKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cmV0dXJuIHJlc3VsdHM7XHJcbn1cclxuXHJcbmlmICggZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCApIHtcclxuXHQoZnVuY3Rpb24oKSB7XHJcblx0XHR2YXIgZGlzY29ubmVjdGVkTWF0Y2gsXHJcblx0XHRcdG9sZFNlbGVjdCA9IHNlbGVjdCxcclxuXHRcdFx0cmVzY2FwZSA9IC8nfFxcXFwvZyxcclxuXHRcdFx0cmF0dHJpYnV0ZVF1b3RlcyA9IC9cXD1bXFx4MjBcXHRcXHJcXG5cXGZdKihbXidcIlxcXV0qKVtcXHgyMFxcdFxcclxcblxcZl0qXFxdL2csXHJcblx0XHRcdHJidWdneVFTQSA9IFtdLFxyXG5cdFx0XHQvLyBtYXRjaGVzU2VsZWN0b3IoOmFjdGl2ZSkgcmVwb3J0cyBmYWxzZSB3aGVuIHRydWUgKElFOS9PcGVyYSAxMS41KVxyXG5cdFx0XHQvLyBBIHN1cHBvcnQgdGVzdCB3b3VsZCByZXF1aXJlIHRvbyBtdWNoIGNvZGUgKHdvdWxkIGluY2x1ZGUgZG9jdW1lbnQgcmVhZHkpXHJcblx0XHRcdC8vIGp1c3Qgc2tpcCBtYXRjaGVzU2VsZWN0b3IgZm9yIDphY3RpdmVcclxuXHRcdFx0cmJ1Z2d5TWF0Y2hlcyA9IFtcIjphY3RpdmVcIl0sXHJcblx0XHRcdG1hdGNoZXMgPSBkb2NFbGVtLm1hdGNoZXNTZWxlY3RvciB8fFxyXG5cdFx0XHRcdGRvY0VsZW0ubW96TWF0Y2hlc1NlbGVjdG9yIHx8XHJcblx0XHRcdFx0ZG9jRWxlbS53ZWJraXRNYXRjaGVzU2VsZWN0b3IgfHxcclxuXHRcdFx0XHRkb2NFbGVtLm9NYXRjaGVzU2VsZWN0b3IgfHxcclxuXHRcdFx0XHRkb2NFbGVtLm1zTWF0Y2hlc1NlbGVjdG9yO1xyXG5cclxuXHRcdC8vIEJ1aWxkIFFTQSByZWdleFxyXG5cdFx0Ly8gUmVnZXggc3RyYXRlZ3kgYWRvcHRlZCBmcm9tIERpZWdvIFBlcmluaVxyXG5cdFx0YXNzZXJ0KGZ1bmN0aW9uKCBkaXYgKSB7XHJcblx0XHRcdC8vIFNlbGVjdCBpcyBzZXQgdG8gZW1wdHkgc3RyaW5nIG9uIHB1cnBvc2VcclxuXHRcdFx0Ly8gVGhpcyBpcyB0byB0ZXN0IElFJ3MgdHJlYXRtZW50IG9mIG5vdCBleHBsaWN0bHlcclxuXHRcdFx0Ly8gc2V0dGluZyBhIGJvb2xlYW4gY29udGVudCBhdHRyaWJ1dGUsXHJcblx0XHRcdC8vIHNpbmNlIGl0cyBwcmVzZW5jZSBzaG91bGQgYmUgZW5vdWdoXHJcblx0XHRcdC8vIGh0dHA6Ly9idWdzLmpxdWVyeS5jb20vdGlja2V0LzEyMzU5XHJcblx0XHRcdGRpdi5pbm5lckhUTUwgPSBcIjxzZWxlY3Q+PG9wdGlvbiBzZWxlY3RlZD0nJz48L29wdGlvbj48L3NlbGVjdD5cIjtcclxuXHJcblx0XHRcdC8vIElFOCAtIFNvbWUgYm9vbGVhbiBhdHRyaWJ1dGVzIGFyZSBub3QgdHJlYXRlZCBjb3JyZWN0bHlcclxuXHRcdFx0aWYgKCAhZGl2LnF1ZXJ5U2VsZWN0b3JBbGwoXCJbc2VsZWN0ZWRdXCIpLmxlbmd0aCApIHtcclxuXHRcdFx0XHRyYnVnZ3lRU0EucHVzaCggXCJcXFxcW1wiICsgd2hpdGVzcGFjZSArIFwiKig/OmNoZWNrZWR8ZGlzYWJsZWR8aXNtYXB8bXVsdGlwbGV8cmVhZG9ubHl8c2VsZWN0ZWR8dmFsdWUpXCIgKTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Ly8gV2Via2l0L09wZXJhIC0gOmNoZWNrZWQgc2hvdWxkIHJldHVybiBzZWxlY3RlZCBvcHRpb24gZWxlbWVudHNcclxuXHRcdFx0Ly8gaHR0cDovL3d3dy53My5vcmcvVFIvMjAxMS9SRUMtY3NzMy1zZWxlY3RvcnMtMjAxMTA5MjkvI2NoZWNrZWRcclxuXHRcdFx0Ly8gSUU4IHRocm93cyBlcnJvciBoZXJlIChkbyBub3QgcHV0IHRlc3RzIGFmdGVyIHRoaXMgb25lKVxyXG5cdFx0XHRpZiAoICFkaXYucXVlcnlTZWxlY3RvckFsbChcIjpjaGVja2VkXCIpLmxlbmd0aCApIHtcclxuXHRcdFx0XHRyYnVnZ3lRU0EucHVzaChcIjpjaGVja2VkXCIpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHJcblx0XHRhc3NlcnQoZnVuY3Rpb24oIGRpdiApIHtcclxuXHJcblx0XHRcdC8vIE9wZXJhIDEwLTEyL0lFOSAtIF49ICQ9ICo9IGFuZCBlbXB0eSB2YWx1ZXNcclxuXHRcdFx0Ly8gU2hvdWxkIG5vdCBzZWxlY3QgYW55dGhpbmdcclxuXHRcdFx0ZGl2LmlubmVySFRNTCA9IFwiPHAgdGVzdD0nJz48L3A+XCI7XHJcblx0XHRcdGlmICggZGl2LnF1ZXJ5U2VsZWN0b3JBbGwoXCJbdGVzdF49JyddXCIpLmxlbmd0aCApIHtcclxuXHRcdFx0XHRyYnVnZ3lRU0EucHVzaCggXCJbKl4kXT1cIiArIHdoaXRlc3BhY2UgKyBcIiooPzpcXFwiXFxcInwnJylcIiApO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvLyBGRiAzLjUgLSA6ZW5hYmxlZC86ZGlzYWJsZWQgYW5kIGhpZGRlbiBlbGVtZW50cyAoaGlkZGVuIGVsZW1lbnRzIGFyZSBzdGlsbCBlbmFibGVkKVxyXG5cdFx0XHQvLyBJRTggdGhyb3dzIGVycm9yIGhlcmUgKGRvIG5vdCBwdXQgdGVzdHMgYWZ0ZXIgdGhpcyBvbmUpXHJcblx0XHRcdGRpdi5pbm5lckhUTUwgPSBcIjxpbnB1dCB0eXBlPSdoaWRkZW4nLz5cIjtcclxuXHRcdFx0aWYgKCAhZGl2LnF1ZXJ5U2VsZWN0b3JBbGwoXCI6ZW5hYmxlZFwiKS5sZW5ndGggKSB7XHJcblx0XHRcdFx0cmJ1Z2d5UVNBLnB1c2goXCI6ZW5hYmxlZFwiLCBcIjpkaXNhYmxlZFwiKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblxyXG5cdFx0cmJ1Z2d5UVNBID0gcmJ1Z2d5UVNBLmxlbmd0aCAmJiBuZXcgUmVnRXhwKCByYnVnZ3lRU0Euam9pbihcInxcIikgKTtcclxuXHJcblx0XHRzZWxlY3QgPSBmdW5jdGlvbiggc2VsZWN0b3IsIGNvbnRleHQsIHJlc3VsdHMsIHNlZWQsIHhtbCApIHtcclxuXHRcdFx0Ly8gT25seSB1c2UgcXVlcnlTZWxlY3RvckFsbCB3aGVuIG5vdCBmaWx0ZXJpbmcsXHJcblx0XHRcdC8vIHdoZW4gdGhpcyBpcyBub3QgeG1sLFxyXG5cdFx0XHQvLyBhbmQgd2hlbiBubyBRU0EgYnVncyBhcHBseVxyXG5cdFx0XHRpZiAoICFzZWVkICYmICF4bWwgJiYgKCFyYnVnZ3lRU0EgfHwgIXJidWdneVFTQS50ZXN0KCBzZWxlY3RvciApKSApIHtcclxuXHRcdFx0XHRpZiAoIGNvbnRleHQubm9kZVR5cGUgPT09IDkgKSB7XHJcblx0XHRcdFx0XHR0cnkge1xyXG5cdFx0XHRcdFx0XHRwdXNoLmFwcGx5KCByZXN1bHRzLCBzbGljZS5jYWxsKGNvbnRleHQucXVlcnlTZWxlY3RvckFsbCggc2VsZWN0b3IgKSwgMCkgKTtcclxuXHRcdFx0XHRcdFx0cmV0dXJuIHJlc3VsdHM7XHJcblx0XHRcdFx0XHR9IGNhdGNoKHFzYUVycm9yKSB7fVxyXG5cdFx0XHRcdC8vIHFTQSB3b3JrcyBzdHJhbmdlbHkgb24gRWxlbWVudC1yb290ZWQgcXVlcmllc1xyXG5cdFx0XHRcdC8vIFdlIGNhbiB3b3JrIGFyb3VuZCB0aGlzIGJ5IHNwZWNpZnlpbmcgYW4gZXh0cmEgSUQgb24gdGhlIHJvb3RcclxuXHRcdFx0XHQvLyBhbmQgd29ya2luZyB1cCBmcm9tIHRoZXJlIChUaGFua3MgdG8gQW5kcmV3IER1cG9udCBmb3IgdGhlIHRlY2huaXF1ZSlcclxuXHRcdFx0XHQvLyBJRSA4IGRvZXNuJ3Qgd29yayBvbiBvYmplY3QgZWxlbWVudHNcclxuXHRcdFx0XHR9IGVsc2UgaWYgKCBjb250ZXh0Lm5vZGVUeXBlID09PSAxICYmIGNvbnRleHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSAhPT0gXCJvYmplY3RcIiApIHtcclxuXHRcdFx0XHRcdHZhciBncm91cHMsIGksIGxlbixcclxuXHRcdFx0XHRcdFx0b2xkID0gY29udGV4dC5nZXRBdHRyaWJ1dGUoXCJpZFwiKSxcclxuXHRcdFx0XHRcdFx0bmlkID0gb2xkIHx8IGV4cGFuZG8sXHJcblx0XHRcdFx0XHRcdG5ld0NvbnRleHQgPSByc2libGluZy50ZXN0KCBzZWxlY3RvciApICYmIGNvbnRleHQucGFyZW50Tm9kZSB8fCBjb250ZXh0O1xyXG5cclxuXHRcdFx0XHRcdGlmICggb2xkICkge1xyXG5cdFx0XHRcdFx0XHRuaWQgPSBuaWQucmVwbGFjZSggcmVzY2FwZSwgXCJcXFxcJCZcIiApO1xyXG5cdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0Y29udGV4dC5zZXRBdHRyaWJ1dGUoIFwiaWRcIiwgbmlkICk7XHJcblx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0Z3JvdXBzID0gdG9rZW5pemUoc2VsZWN0b3IsIGNvbnRleHQsIHhtbCk7XHJcblx0XHRcdFx0XHQvLyBUcmFpbGluZyBzcGFjZSBpcyB1bm5lY2Vzc2FyeVxyXG5cdFx0XHRcdFx0Ly8gVGhlcmUgaXMgYWx3YXlzIGEgY29udGV4dCBjaGVja1xyXG5cdFx0XHRcdFx0bmlkID0gXCJbaWQ9J1wiICsgbmlkICsgXCInXVwiO1xyXG5cdFx0XHRcdFx0Zm9yICggaSA9IDAsIGxlbiA9IGdyb3Vwcy5sZW5ndGg7IGkgPCBsZW47IGkrKyApIHtcclxuXHRcdFx0XHRcdFx0Z3JvdXBzW2ldID0gbmlkICsgZ3JvdXBzW2ldLnNlbGVjdG9yO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0dHJ5IHtcclxuXHRcdFx0XHRcdFx0cHVzaC5hcHBseSggcmVzdWx0cywgc2xpY2UuY2FsbCggbmV3Q29udGV4dC5xdWVyeVNlbGVjdG9yQWxsKFxyXG5cdFx0XHRcdFx0XHRcdGdyb3Vwcy5qb2luKFwiLFwiKVxyXG5cdFx0XHRcdFx0XHQpLCAwICkgKTtcclxuXHRcdFx0XHRcdFx0cmV0dXJuIHJlc3VsdHM7XHJcblx0XHRcdFx0XHR9IGNhdGNoKHFzYUVycm9yKSB7XHJcblx0XHRcdFx0XHR9IGZpbmFsbHkge1xyXG5cdFx0XHRcdFx0XHRpZiAoICFvbGQgKSB7XHJcblx0XHRcdFx0XHRcdFx0Y29udGV4dC5yZW1vdmVBdHRyaWJ1dGUoXCJpZFwiKTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0cmV0dXJuIG9sZFNlbGVjdCggc2VsZWN0b3IsIGNvbnRleHQsIHJlc3VsdHMsIHNlZWQsIHhtbCApO1xyXG5cdFx0fTtcclxuXHJcblx0XHRpZiAoIG1hdGNoZXMgKSB7XHJcblx0XHRcdGFzc2VydChmdW5jdGlvbiggZGl2ICkge1xyXG5cdFx0XHRcdC8vIENoZWNrIHRvIHNlZSBpZiBpdCdzIHBvc3NpYmxlIHRvIGRvIG1hdGNoZXNTZWxlY3RvclxyXG5cdFx0XHRcdC8vIG9uIGEgZGlzY29ubmVjdGVkIG5vZGUgKElFIDkpXHJcblx0XHRcdFx0ZGlzY29ubmVjdGVkTWF0Y2ggPSBtYXRjaGVzLmNhbGwoIGRpdiwgXCJkaXZcIiApO1xyXG5cclxuXHRcdFx0XHQvLyBUaGlzIHNob3VsZCBmYWlsIHdpdGggYW4gZXhjZXB0aW9uXHJcblx0XHRcdFx0Ly8gR2Vja28gZG9lcyBub3QgZXJyb3IsIHJldHVybnMgZmFsc2UgaW5zdGVhZFxyXG5cdFx0XHRcdHRyeSB7XHJcblx0XHRcdFx0XHRtYXRjaGVzLmNhbGwoIGRpdiwgXCJbdGVzdCE9JyddOnNpenpsZVwiICk7XHJcblx0XHRcdFx0XHRyYnVnZ3lNYXRjaGVzLnB1c2goIG1hdGNoRXhwcltcIlBTRVVET1wiXS5zb3VyY2UsIG1hdGNoRXhwcltcIlBPU1wiXS5zb3VyY2UsIFwiIT1cIiApO1xyXG5cdFx0XHRcdH0gY2F0Y2ggKCBlICkge31cclxuXHRcdFx0fSk7XHJcblxyXG5cdFx0XHQvLyByYnVnZ3lNYXRjaGVzIGFsd2F5cyBjb250YWlucyA6YWN0aXZlLCBzbyBubyBuZWVkIGZvciBhIGxlbmd0aCBjaGVja1xyXG5cdFx0XHRyYnVnZ3lNYXRjaGVzID0gLyogcmJ1Z2d5TWF0Y2hlcy5sZW5ndGggJiYgKi8gbmV3IFJlZ0V4cCggcmJ1Z2d5TWF0Y2hlcy5qb2luKFwifFwiKSApO1xyXG5cclxuXHRcdFx0U2l6emxlLm1hdGNoZXNTZWxlY3RvciA9IGZ1bmN0aW9uKCBlbGVtLCBleHByICkge1xyXG5cdFx0XHRcdC8vIE1ha2Ugc3VyZSB0aGF0IGF0dHJpYnV0ZSBzZWxlY3RvcnMgYXJlIHF1b3RlZFxyXG5cdFx0XHRcdGV4cHIgPSBleHByLnJlcGxhY2UoIHJhdHRyaWJ1dGVRdW90ZXMsIFwiPSckMSddXCIgKTtcclxuXHJcblx0XHRcdFx0Ly8gcmJ1Z2d5TWF0Y2hlcyBhbHdheXMgY29udGFpbnMgOmFjdGl2ZSwgc28gbm8gbmVlZCBmb3IgYW4gZXhpc3RlbmNlIGNoZWNrXHJcblx0XHRcdFx0aWYgKCAhaXNYTUwoIGVsZW0gKSAmJiAhcmJ1Z2d5TWF0Y2hlcy50ZXN0KCBleHByICkgJiYgKCFyYnVnZ3lRU0EgfHwgIXJidWdneVFTQS50ZXN0KCBleHByICkpICkge1xyXG5cdFx0XHRcdFx0dHJ5IHtcclxuXHRcdFx0XHRcdFx0dmFyIHJldCA9IG1hdGNoZXMuY2FsbCggZWxlbSwgZXhwciApO1xyXG5cclxuXHRcdFx0XHRcdFx0Ly8gSUUgOSdzIG1hdGNoZXNTZWxlY3RvciByZXR1cm5zIGZhbHNlIG9uIGRpc2Nvbm5lY3RlZCBub2Rlc1xyXG5cdFx0XHRcdFx0XHRpZiAoIHJldCB8fCBkaXNjb25uZWN0ZWRNYXRjaCB8fFxyXG5cdFx0XHRcdFx0XHRcdFx0Ly8gQXMgd2VsbCwgZGlzY29ubmVjdGVkIG5vZGVzIGFyZSBzYWlkIHRvIGJlIGluIGEgZG9jdW1lbnRcclxuXHRcdFx0XHRcdFx0XHRcdC8vIGZyYWdtZW50IGluIElFIDlcclxuXHRcdFx0XHRcdFx0XHRcdGVsZW0uZG9jdW1lbnQgJiYgZWxlbS5kb2N1bWVudC5ub2RlVHlwZSAhPT0gMTEgKSB7XHJcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHJldDtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSBjYXRjaChlKSB7fVxyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0cmV0dXJuIFNpenpsZSggZXhwciwgbnVsbCwgbnVsbCwgWyBlbGVtIF0gKS5sZW5ndGggPiAwO1xyXG5cdFx0XHR9O1xyXG5cdFx0fVxyXG5cdH0pKCk7XHJcbn1cclxuXHJcbi8vIERlcHJlY2F0ZWRcclxuRXhwci5zZXRGaWx0ZXJzW1wibnRoXCJdID0gRXhwci5zZXRGaWx0ZXJzW1wiZXFcIl07XHJcblxyXG4vLyBCYWNrLWNvbXBhdFxyXG5FeHByLmZpbHRlcnMgPSBFeHByLnBzZXVkb3M7XHJcblxyXG4vLyBPdmVycmlkZSBzaXp6bGUgYXR0cmlidXRlIHJldHJpZXZhbFxyXG5TaXp6bGUuYXR0ciA9IGpRdWVyeS5hdHRyO1xyXG5qUXVlcnkuZmluZCA9IFNpenpsZTtcclxualF1ZXJ5LmV4cHIgPSBTaXp6bGUuc2VsZWN0b3JzO1xyXG5qUXVlcnkuZXhwcltcIjpcIl0gPSBqUXVlcnkuZXhwci5wc2V1ZG9zO1xyXG5qUXVlcnkudW5pcXVlID0gU2l6emxlLnVuaXF1ZVNvcnQ7XHJcbmpRdWVyeS50ZXh0ID0gU2l6emxlLmdldFRleHQ7XHJcbmpRdWVyeS5pc1hNTERvYyA9IFNpenpsZS5pc1hNTDtcclxualF1ZXJ5LmNvbnRhaW5zID0gU2l6emxlLmNvbnRhaW5zO1xyXG5cclxuXHJcbn0pKCB3aW5kb3cgKTtcclxudmFyIHJ1bnRpbCA9IC9VbnRpbCQvLFxyXG5cdHJwYXJlbnRzcHJldiA9IC9eKD86cGFyZW50c3xwcmV2KD86VW50aWx8QWxsKSkvLFxyXG5cdGlzU2ltcGxlID0gL14uW146I1xcW1xcLixdKiQvLFxyXG5cdHJuZWVkc0NvbnRleHQgPSBqUXVlcnkuZXhwci5tYXRjaC5uZWVkc0NvbnRleHQsXHJcblx0Ly8gbWV0aG9kcyBndWFyYW50ZWVkIHRvIHByb2R1Y2UgYSB1bmlxdWUgc2V0IHdoZW4gc3RhcnRpbmcgZnJvbSBhIHVuaXF1ZSBzZXRcclxuXHRndWFyYW50ZWVkVW5pcXVlID0ge1xyXG5cdFx0Y2hpbGRyZW46IHRydWUsXHJcblx0XHRjb250ZW50czogdHJ1ZSxcclxuXHRcdG5leHQ6IHRydWUsXHJcblx0XHRwcmV2OiB0cnVlXHJcblx0fTtcclxuXHJcbmpRdWVyeS5mbi5leHRlbmQoe1xyXG5cdGZpbmQ6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcclxuXHRcdHZhciBpLCBsLCBsZW5ndGgsIG4sIHIsIHJldCxcclxuXHRcdFx0c2VsZiA9IHRoaXM7XHJcblxyXG5cdFx0aWYgKCB0eXBlb2Ygc2VsZWN0b3IgIT09IFwic3RyaW5nXCIgKSB7XHJcblx0XHRcdHJldHVybiBqUXVlcnkoIHNlbGVjdG9yICkuZmlsdGVyKGZ1bmN0aW9uKCkge1xyXG5cdFx0XHRcdGZvciAoIGkgPSAwLCBsID0gc2VsZi5sZW5ndGg7IGkgPCBsOyBpKysgKSB7XHJcblx0XHRcdFx0XHRpZiAoIGpRdWVyeS5jb250YWlucyggc2VsZlsgaSBdLCB0aGlzICkgKSB7XHJcblx0XHRcdFx0XHRcdHJldHVybiB0cnVlO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0ID0gdGhpcy5wdXNoU3RhY2soIFwiXCIsIFwiZmluZFwiLCBzZWxlY3RvciApO1xyXG5cclxuXHRcdGZvciAoIGkgPSAwLCBsID0gdGhpcy5sZW5ndGg7IGkgPCBsOyBpKysgKSB7XHJcblx0XHRcdGxlbmd0aCA9IHJldC5sZW5ndGg7XHJcblx0XHRcdGpRdWVyeS5maW5kKCBzZWxlY3RvciwgdGhpc1tpXSwgcmV0ICk7XHJcblxyXG5cdFx0XHRpZiAoIGkgPiAwICkge1xyXG5cdFx0XHRcdC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSByZXN1bHRzIGFyZSB1bmlxdWVcclxuXHRcdFx0XHRmb3IgKCBuID0gbGVuZ3RoOyBuIDwgcmV0Lmxlbmd0aDsgbisrICkge1xyXG5cdFx0XHRcdFx0Zm9yICggciA9IDA7IHIgPCBsZW5ndGg7IHIrKyApIHtcclxuXHRcdFx0XHRcdFx0aWYgKCByZXRbcl0gPT09IHJldFtuXSApIHtcclxuXHRcdFx0XHRcdFx0XHRyZXQuc3BsaWNlKG4tLSwgMSk7XHJcblx0XHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gcmV0O1xyXG5cdH0sXHJcblxyXG5cdGhhczogZnVuY3Rpb24oIHRhcmdldCApIHtcclxuXHRcdHZhciBpLFxyXG5cdFx0XHR0YXJnZXRzID0galF1ZXJ5KCB0YXJnZXQsIHRoaXMgKSxcclxuXHRcdFx0bGVuID0gdGFyZ2V0cy5sZW5ndGg7XHJcblxyXG5cdFx0cmV0dXJuIHRoaXMuZmlsdGVyKGZ1bmN0aW9uKCkge1xyXG5cdFx0XHRmb3IgKCBpID0gMDsgaSA8IGxlbjsgaSsrICkge1xyXG5cdFx0XHRcdGlmICggalF1ZXJ5LmNvbnRhaW5zKCB0aGlzLCB0YXJnZXRzW2ldICkgKSB7XHJcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH0sXHJcblxyXG5cdG5vdDogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xyXG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCB3aW5ub3codGhpcywgc2VsZWN0b3IsIGZhbHNlKSwgXCJub3RcIiwgc2VsZWN0b3IpO1xyXG5cdH0sXHJcblxyXG5cdGZpbHRlcjogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xyXG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCB3aW5ub3codGhpcywgc2VsZWN0b3IsIHRydWUpLCBcImZpbHRlclwiLCBzZWxlY3RvciApO1xyXG5cdH0sXHJcblxyXG5cdGlzOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XHJcblx0XHRyZXR1cm4gISFzZWxlY3RvciAmJiAoXHJcblx0XHRcdHR5cGVvZiBzZWxlY3RvciA9PT0gXCJzdHJpbmdcIiA/XHJcblx0XHRcdFx0Ly8gSWYgdGhpcyBpcyBhIHBvc2l0aW9uYWwvcmVsYXRpdmUgc2VsZWN0b3IsIGNoZWNrIG1lbWJlcnNoaXAgaW4gdGhlIHJldHVybmVkIHNldFxyXG5cdFx0XHRcdC8vIHNvICQoXCJwOmZpcnN0XCIpLmlzKFwicDpsYXN0XCIpIHdvbid0IHJldHVybiB0cnVlIGZvciBhIGRvYyB3aXRoIHR3byBcInBcIi5cclxuXHRcdFx0XHRybmVlZHNDb250ZXh0LnRlc3QoIHNlbGVjdG9yICkgP1xyXG5cdFx0XHRcdFx0alF1ZXJ5KCBzZWxlY3RvciwgdGhpcy5jb250ZXh0ICkuaW5kZXgoIHRoaXNbMF0gKSA+PSAwIDpcclxuXHRcdFx0XHRcdGpRdWVyeS5maWx0ZXIoIHNlbGVjdG9yLCB0aGlzICkubGVuZ3RoID4gMCA6XHJcblx0XHRcdFx0dGhpcy5maWx0ZXIoIHNlbGVjdG9yICkubGVuZ3RoID4gMCApO1xyXG5cdH0sXHJcblxyXG5cdGNsb3Nlc3Q6IGZ1bmN0aW9uKCBzZWxlY3RvcnMsIGNvbnRleHQgKSB7XHJcblx0XHR2YXIgY3VyLFxyXG5cdFx0XHRpID0gMCxcclxuXHRcdFx0bCA9IHRoaXMubGVuZ3RoLFxyXG5cdFx0XHRyZXQgPSBbXSxcclxuXHRcdFx0cG9zID0gcm5lZWRzQ29udGV4dC50ZXN0KCBzZWxlY3RvcnMgKSB8fCB0eXBlb2Ygc2VsZWN0b3JzICE9PSBcInN0cmluZ1wiID9cclxuXHRcdFx0XHRqUXVlcnkoIHNlbGVjdG9ycywgY29udGV4dCB8fCB0aGlzLmNvbnRleHQgKSA6XHJcblx0XHRcdFx0MDtcclxuXHJcblx0XHRmb3IgKCA7IGkgPCBsOyBpKysgKSB7XHJcblx0XHRcdGN1ciA9IHRoaXNbaV07XHJcblxyXG5cdFx0XHR3aGlsZSAoIGN1ciAmJiBjdXIub3duZXJEb2N1bWVudCAmJiBjdXIgIT09IGNvbnRleHQgJiYgY3VyLm5vZGVUeXBlICE9PSAxMSApIHtcclxuXHRcdFx0XHRpZiAoIHBvcyA/IHBvcy5pbmRleChjdXIpID4gLTEgOiBqUXVlcnkuZmluZC5tYXRjaGVzU2VsZWN0b3IoY3VyLCBzZWxlY3RvcnMpICkge1xyXG5cdFx0XHRcdFx0cmV0LnB1c2goIGN1ciApO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGN1ciA9IGN1ci5wYXJlbnROb2RlO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0ID0gcmV0Lmxlbmd0aCA+IDEgPyBqUXVlcnkudW5pcXVlKCByZXQgKSA6IHJldDtcclxuXHJcblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIHJldCwgXCJjbG9zZXN0XCIsIHNlbGVjdG9ycyApO1xyXG5cdH0sXHJcblxyXG5cdC8vIERldGVybWluZSB0aGUgcG9zaXRpb24gb2YgYW4gZWxlbWVudCB3aXRoaW5cclxuXHQvLyB0aGUgbWF0Y2hlZCBzZXQgb2YgZWxlbWVudHNcclxuXHRpbmRleDogZnVuY3Rpb24oIGVsZW0gKSB7XHJcblxyXG5cdFx0Ly8gTm8gYXJndW1lbnQsIHJldHVybiBpbmRleCBpbiBwYXJlbnRcclxuXHRcdGlmICggIWVsZW0gKSB7XHJcblx0XHRcdHJldHVybiAoIHRoaXNbMF0gJiYgdGhpc1swXS5wYXJlbnROb2RlICkgPyB0aGlzLnByZXZBbGwoKS5sZW5ndGggOiAtMTtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBpbmRleCBpbiBzZWxlY3RvclxyXG5cdFx0aWYgKCB0eXBlb2YgZWxlbSA9PT0gXCJzdHJpbmdcIiApIHtcclxuXHRcdFx0cmV0dXJuIGpRdWVyeS5pbkFycmF5KCB0aGlzWzBdLCBqUXVlcnkoIGVsZW0gKSApO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIExvY2F0ZSB0aGUgcG9zaXRpb24gb2YgdGhlIGRlc2lyZWQgZWxlbWVudFxyXG5cdFx0cmV0dXJuIGpRdWVyeS5pbkFycmF5KFxyXG5cdFx0XHQvLyBJZiBpdCByZWNlaXZlcyBhIGpRdWVyeSBvYmplY3QsIHRoZSBmaXJzdCBlbGVtZW50IGlzIHVzZWRcclxuXHRcdFx0ZWxlbS5qcXVlcnkgPyBlbGVtWzBdIDogZWxlbSwgdGhpcyApO1xyXG5cdH0sXHJcblxyXG5cdGFkZDogZnVuY3Rpb24oIHNlbGVjdG9yLCBjb250ZXh0ICkge1xyXG5cdFx0dmFyIHNldCA9IHR5cGVvZiBzZWxlY3RvciA9PT0gXCJzdHJpbmdcIiA/XHJcblx0XHRcdFx0alF1ZXJ5KCBzZWxlY3RvciwgY29udGV4dCApIDpcclxuXHRcdFx0XHRqUXVlcnkubWFrZUFycmF5KCBzZWxlY3RvciAmJiBzZWxlY3Rvci5ub2RlVHlwZSA/IFsgc2VsZWN0b3IgXSA6IHNlbGVjdG9yICksXHJcblx0XHRcdGFsbCA9IGpRdWVyeS5tZXJnZSggdGhpcy5nZXQoKSwgc2V0ICk7XHJcblxyXG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCBpc0Rpc2Nvbm5lY3RlZCggc2V0WzBdICkgfHwgaXNEaXNjb25uZWN0ZWQoIGFsbFswXSApID9cclxuXHRcdFx0YWxsIDpcclxuXHRcdFx0alF1ZXJ5LnVuaXF1ZSggYWxsICkgKTtcclxuXHR9LFxyXG5cclxuXHRhZGRCYWNrOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5hZGQoIHNlbGVjdG9yID09IG51bGwgP1xyXG5cdFx0XHR0aGlzLnByZXZPYmplY3QgOiB0aGlzLnByZXZPYmplY3QuZmlsdGVyKHNlbGVjdG9yKVxyXG5cdFx0KTtcclxuXHR9XHJcbn0pO1xyXG5cclxualF1ZXJ5LmZuLmFuZFNlbGYgPSBqUXVlcnkuZm4uYWRkQmFjaztcclxuXHJcbi8vIEEgcGFpbmZ1bGx5IHNpbXBsZSBjaGVjayB0byBzZWUgaWYgYW4gZWxlbWVudCBpcyBkaXNjb25uZWN0ZWRcclxuLy8gZnJvbSBhIGRvY3VtZW50IChzaG91bGQgYmUgaW1wcm92ZWQsIHdoZXJlIGZlYXNpYmxlKS5cclxuZnVuY3Rpb24gaXNEaXNjb25uZWN0ZWQoIG5vZGUgKSB7XHJcblx0cmV0dXJuICFub2RlIHx8ICFub2RlLnBhcmVudE5vZGUgfHwgbm9kZS5wYXJlbnROb2RlLm5vZGVUeXBlID09PSAxMTtcclxufVxyXG5cclxuZnVuY3Rpb24gc2libGluZyggY3VyLCBkaXIgKSB7XHJcblx0ZG8ge1xyXG5cdFx0Y3VyID0gY3VyWyBkaXIgXTtcclxuXHR9IHdoaWxlICggY3VyICYmIGN1ci5ub2RlVHlwZSAhPT0gMSApO1xyXG5cclxuXHRyZXR1cm4gY3VyO1xyXG59XHJcblxyXG5qUXVlcnkuZWFjaCh7XHJcblx0cGFyZW50OiBmdW5jdGlvbiggZWxlbSApIHtcclxuXHRcdHZhciBwYXJlbnQgPSBlbGVtLnBhcmVudE5vZGU7XHJcblx0XHRyZXR1cm4gcGFyZW50ICYmIHBhcmVudC5ub2RlVHlwZSAhPT0gMTEgPyBwYXJlbnQgOiBudWxsO1xyXG5cdH0sXHJcblx0cGFyZW50czogZnVuY3Rpb24oIGVsZW0gKSB7XHJcblx0XHRyZXR1cm4galF1ZXJ5LmRpciggZWxlbSwgXCJwYXJlbnROb2RlXCIgKTtcclxuXHR9LFxyXG5cdHBhcmVudHNVbnRpbDogZnVuY3Rpb24oIGVsZW0sIGksIHVudGlsICkge1xyXG5cdFx0cmV0dXJuIGpRdWVyeS5kaXIoIGVsZW0sIFwicGFyZW50Tm9kZVwiLCB1bnRpbCApO1xyXG5cdH0sXHJcblx0bmV4dDogZnVuY3Rpb24oIGVsZW0gKSB7XHJcblx0XHRyZXR1cm4gc2libGluZyggZWxlbSwgXCJuZXh0U2libGluZ1wiICk7XHJcblx0fSxcclxuXHRwcmV2OiBmdW5jdGlvbiggZWxlbSApIHtcclxuXHRcdHJldHVybiBzaWJsaW5nKCBlbGVtLCBcInByZXZpb3VzU2libGluZ1wiICk7XHJcblx0fSxcclxuXHRuZXh0QWxsOiBmdW5jdGlvbiggZWxlbSApIHtcclxuXHRcdHJldHVybiBqUXVlcnkuZGlyKCBlbGVtLCBcIm5leHRTaWJsaW5nXCIgKTtcclxuXHR9LFxyXG5cdHByZXZBbGw6IGZ1bmN0aW9uKCBlbGVtICkge1xyXG5cdFx0cmV0dXJuIGpRdWVyeS5kaXIoIGVsZW0sIFwicHJldmlvdXNTaWJsaW5nXCIgKTtcclxuXHR9LFxyXG5cdG5leHRVbnRpbDogZnVuY3Rpb24oIGVsZW0sIGksIHVudGlsICkge1xyXG5cdFx0cmV0dXJuIGpRdWVyeS5kaXIoIGVsZW0sIFwibmV4dFNpYmxpbmdcIiwgdW50aWwgKTtcclxuXHR9LFxyXG5cdHByZXZVbnRpbDogZnVuY3Rpb24oIGVsZW0sIGksIHVudGlsICkge1xyXG5cdFx0cmV0dXJuIGpRdWVyeS5kaXIoIGVsZW0sIFwicHJldmlvdXNTaWJsaW5nXCIsIHVudGlsICk7XHJcblx0fSxcclxuXHRzaWJsaW5nczogZnVuY3Rpb24oIGVsZW0gKSB7XHJcblx0XHRyZXR1cm4galF1ZXJ5LnNpYmxpbmcoICggZWxlbS5wYXJlbnROb2RlIHx8IHt9ICkuZmlyc3RDaGlsZCwgZWxlbSApO1xyXG5cdH0sXHJcblx0Y2hpbGRyZW46IGZ1bmN0aW9uKCBlbGVtICkge1xyXG5cdFx0cmV0dXJuIGpRdWVyeS5zaWJsaW5nKCBlbGVtLmZpcnN0Q2hpbGQgKTtcclxuXHR9LFxyXG5cdGNvbnRlbnRzOiBmdW5jdGlvbiggZWxlbSApIHtcclxuXHRcdHJldHVybiBqUXVlcnkubm9kZU5hbWUoIGVsZW0sIFwiaWZyYW1lXCIgKSA/XHJcblx0XHRcdGVsZW0uY29udGVudERvY3VtZW50IHx8IGVsZW0uY29udGVudFdpbmRvdy5kb2N1bWVudCA6XHJcblx0XHRcdGpRdWVyeS5tZXJnZSggW10sIGVsZW0uY2hpbGROb2RlcyApO1xyXG5cdH1cclxufSwgZnVuY3Rpb24oIG5hbWUsIGZuICkge1xyXG5cdGpRdWVyeS5mblsgbmFtZSBdID0gZnVuY3Rpb24oIHVudGlsLCBzZWxlY3RvciApIHtcclxuXHRcdHZhciByZXQgPSBqUXVlcnkubWFwKCB0aGlzLCBmbiwgdW50aWwgKTtcclxuXHJcblx0XHRpZiAoICFydW50aWwudGVzdCggbmFtZSApICkge1xyXG5cdFx0XHRzZWxlY3RvciA9IHVudGlsO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICggc2VsZWN0b3IgJiYgdHlwZW9mIHNlbGVjdG9yID09PSBcInN0cmluZ1wiICkge1xyXG5cdFx0XHRyZXQgPSBqUXVlcnkuZmlsdGVyKCBzZWxlY3RvciwgcmV0ICk7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0ID0gdGhpcy5sZW5ndGggPiAxICYmICFndWFyYW50ZWVkVW5pcXVlWyBuYW1lIF0gPyBqUXVlcnkudW5pcXVlKCByZXQgKSA6IHJldDtcclxuXHJcblx0XHRpZiAoIHRoaXMubGVuZ3RoID4gMSAmJiBycGFyZW50c3ByZXYudGVzdCggbmFtZSApICkge1xyXG5cdFx0XHRyZXQgPSByZXQucmV2ZXJzZSgpO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayggcmV0LCBuYW1lLCBjb3JlX3NsaWNlLmNhbGwoIGFyZ3VtZW50cyApLmpvaW4oXCIsXCIpICk7XHJcblx0fTtcclxufSk7XHJcblxyXG5qUXVlcnkuZXh0ZW5kKHtcclxuXHRmaWx0ZXI6IGZ1bmN0aW9uKCBleHByLCBlbGVtcywgbm90ICkge1xyXG5cdFx0aWYgKCBub3QgKSB7XHJcblx0XHRcdGV4cHIgPSBcIjpub3QoXCIgKyBleHByICsgXCIpXCI7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIGVsZW1zLmxlbmd0aCA9PT0gMSA/XHJcblx0XHRcdGpRdWVyeS5maW5kLm1hdGNoZXNTZWxlY3RvcihlbGVtc1swXSwgZXhwcikgPyBbIGVsZW1zWzBdIF0gOiBbXSA6XHJcblx0XHRcdGpRdWVyeS5maW5kLm1hdGNoZXMoZXhwciwgZWxlbXMpO1xyXG5cdH0sXHJcblxyXG5cdGRpcjogZnVuY3Rpb24oIGVsZW0sIGRpciwgdW50aWwgKSB7XHJcblx0XHR2YXIgbWF0Y2hlZCA9IFtdLFxyXG5cdFx0XHRjdXIgPSBlbGVtWyBkaXIgXTtcclxuXHJcblx0XHR3aGlsZSAoIGN1ciAmJiBjdXIubm9kZVR5cGUgIT09IDkgJiYgKHVudGlsID09PSB1bmRlZmluZWQgfHwgY3VyLm5vZGVUeXBlICE9PSAxIHx8ICFqUXVlcnkoIGN1ciApLmlzKCB1bnRpbCApKSApIHtcclxuXHRcdFx0aWYgKCBjdXIubm9kZVR5cGUgPT09IDEgKSB7XHJcblx0XHRcdFx0bWF0Y2hlZC5wdXNoKCBjdXIgKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRjdXIgPSBjdXJbZGlyXTtcclxuXHRcdH1cclxuXHRcdHJldHVybiBtYXRjaGVkO1xyXG5cdH0sXHJcblxyXG5cdHNpYmxpbmc6IGZ1bmN0aW9uKCBuLCBlbGVtICkge1xyXG5cdFx0dmFyIHIgPSBbXTtcclxuXHJcblx0XHRmb3IgKCA7IG47IG4gPSBuLm5leHRTaWJsaW5nICkge1xyXG5cdFx0XHRpZiAoIG4ubm9kZVR5cGUgPT09IDEgJiYgbiAhPT0gZWxlbSApIHtcclxuXHRcdFx0XHRyLnB1c2goIG4gKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiByO1xyXG5cdH1cclxufSk7XHJcblxyXG4vLyBJbXBsZW1lbnQgdGhlIGlkZW50aWNhbCBmdW5jdGlvbmFsaXR5IGZvciBmaWx0ZXIgYW5kIG5vdFxyXG5mdW5jdGlvbiB3aW5ub3coIGVsZW1lbnRzLCBxdWFsaWZpZXIsIGtlZXAgKSB7XHJcblxyXG5cdC8vIENhbid0IHBhc3MgbnVsbCBvciB1bmRlZmluZWQgdG8gaW5kZXhPZiBpbiBGaXJlZm94IDRcclxuXHQvLyBTZXQgdG8gMCB0byBza2lwIHN0cmluZyBjaGVja1xyXG5cdHF1YWxpZmllciA9IHF1YWxpZmllciB8fCAwO1xyXG5cclxuXHRpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBxdWFsaWZpZXIgKSApIHtcclxuXHRcdHJldHVybiBqUXVlcnkuZ3JlcChlbGVtZW50cywgZnVuY3Rpb24oIGVsZW0sIGkgKSB7XHJcblx0XHRcdHZhciByZXRWYWwgPSAhIXF1YWxpZmllci5jYWxsKCBlbGVtLCBpLCBlbGVtICk7XHJcblx0XHRcdHJldHVybiByZXRWYWwgPT09IGtlZXA7XHJcblx0XHR9KTtcclxuXHJcblx0fSBlbHNlIGlmICggcXVhbGlmaWVyLm5vZGVUeXBlICkge1xyXG5cdFx0cmV0dXJuIGpRdWVyeS5ncmVwKGVsZW1lbnRzLCBmdW5jdGlvbiggZWxlbSwgaSApIHtcclxuXHRcdFx0cmV0dXJuICggZWxlbSA9PT0gcXVhbGlmaWVyICkgPT09IGtlZXA7XHJcblx0XHR9KTtcclxuXHJcblx0fSBlbHNlIGlmICggdHlwZW9mIHF1YWxpZmllciA9PT0gXCJzdHJpbmdcIiApIHtcclxuXHRcdHZhciBmaWx0ZXJlZCA9IGpRdWVyeS5ncmVwKGVsZW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHtcclxuXHRcdFx0cmV0dXJuIGVsZW0ubm9kZVR5cGUgPT09IDE7XHJcblx0XHR9KTtcclxuXHJcblx0XHRpZiAoIGlzU2ltcGxlLnRlc3QoIHF1YWxpZmllciApICkge1xyXG5cdFx0XHRyZXR1cm4galF1ZXJ5LmZpbHRlcihxdWFsaWZpZXIsIGZpbHRlcmVkLCAha2VlcCk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRxdWFsaWZpZXIgPSBqUXVlcnkuZmlsdGVyKCBxdWFsaWZpZXIsIGZpbHRlcmVkICk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRyZXR1cm4galF1ZXJ5LmdyZXAoZWxlbWVudHMsIGZ1bmN0aW9uKCBlbGVtLCBpICkge1xyXG5cdFx0cmV0dXJuICggalF1ZXJ5LmluQXJyYXkoIGVsZW0sIHF1YWxpZmllciApID49IDAgKSA9PT0ga2VlcDtcclxuXHR9KTtcclxufVxyXG5mdW5jdGlvbiBjcmVhdGVTYWZlRnJhZ21lbnQoIGRvY3VtZW50ICkge1xyXG5cdHZhciBsaXN0ID0gbm9kZU5hbWVzLnNwbGl0KCBcInxcIiApLFxyXG5cdHNhZmVGcmFnID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO1xyXG5cclxuXHRpZiAoIHNhZmVGcmFnLmNyZWF0ZUVsZW1lbnQgKSB7XHJcblx0XHR3aGlsZSAoIGxpc3QubGVuZ3RoICkge1xyXG5cdFx0XHRzYWZlRnJhZy5jcmVhdGVFbGVtZW50KFxyXG5cdFx0XHRcdGxpc3QucG9wKClcclxuXHRcdFx0KTtcclxuXHRcdH1cclxuXHR9XHJcblx0cmV0dXJuIHNhZmVGcmFnO1xyXG59XHJcblxyXG52YXIgbm9kZU5hbWVzID0gXCJhYmJyfGFydGljbGV8YXNpZGV8YXVkaW98YmRpfGNhbnZhc3xkYXRhfGRhdGFsaXN0fGRldGFpbHN8ZmlnY2FwdGlvbnxmaWd1cmV8Zm9vdGVyfFwiICtcclxuXHRcdFwiaGVhZGVyfGhncm91cHxtYXJrfG1ldGVyfG5hdnxvdXRwdXR8cHJvZ3Jlc3N8c2VjdGlvbnxzdW1tYXJ5fHRpbWV8dmlkZW9cIixcclxuXHRyaW5saW5lalF1ZXJ5ID0gLyBqUXVlcnlcXGQrPVwiKD86bnVsbHxcXGQrKVwiL2csXHJcblx0cmxlYWRpbmdXaGl0ZXNwYWNlID0gL15cXHMrLyxcclxuXHRyeGh0bWxUYWcgPSAvPCg/IWFyZWF8YnJ8Y29sfGVtYmVkfGhyfGltZ3xpbnB1dHxsaW5rfG1ldGF8cGFyYW0pKChbXFx3Ol0rKVtePl0qKVxcLz4vZ2ksXHJcblx0cnRhZ05hbWUgPSAvPChbXFx3Ol0rKS8sXHJcblx0cnRib2R5ID0gLzx0Ym9keS9pLFxyXG5cdHJodG1sID0gLzx8JiM/XFx3KzsvLFxyXG5cdHJub0lubmVyaHRtbCA9IC88KD86c2NyaXB0fHN0eWxlfGxpbmspL2ksXHJcblx0cm5vY2FjaGUgPSAvPCg/OnNjcmlwdHxvYmplY3R8ZW1iZWR8b3B0aW9ufHN0eWxlKS9pLFxyXG5cdHJub3NoaW1jYWNoZSA9IG5ldyBSZWdFeHAoXCI8KD86XCIgKyBub2RlTmFtZXMgKyBcIilbXFxcXHMvPl1cIiwgXCJpXCIpLFxyXG5cdHJjaGVja2FibGVUeXBlID0gL14oPzpjaGVja2JveHxyYWRpbykkLyxcclxuXHQvLyBjaGVja2VkPVwiY2hlY2tlZFwiIG9yIGNoZWNrZWRcclxuXHRyY2hlY2tlZCA9IC9jaGVja2VkXFxzKig/OltePV18PVxccyouY2hlY2tlZC4pL2ksXHJcblx0cnNjcmlwdFR5cGUgPSAvXFwvKGphdmF8ZWNtYSlzY3JpcHQvaSxcclxuXHRyY2xlYW5TY3JpcHQgPSAvXlxccyo8ISg/OlxcW0NEQVRBXFxbfFxcLVxcLSl8W1xcXVxcLV17Mn0+XFxzKiQvZyxcclxuXHR3cmFwTWFwID0ge1xyXG5cdFx0b3B0aW9uOiBbIDEsIFwiPHNlbGVjdCBtdWx0aXBsZT0nbXVsdGlwbGUnPlwiLCBcIjwvc2VsZWN0PlwiIF0sXHJcblx0XHRsZWdlbmQ6IFsgMSwgXCI8ZmllbGRzZXQ+XCIsIFwiPC9maWVsZHNldD5cIiBdLFxyXG5cdFx0dGhlYWQ6IFsgMSwgXCI8dGFibGU+XCIsIFwiPC90YWJsZT5cIiBdLFxyXG5cdFx0dHI6IFsgMiwgXCI8dGFibGU+PHRib2R5PlwiLCBcIjwvdGJvZHk+PC90YWJsZT5cIiBdLFxyXG5cdFx0dGQ6IFsgMywgXCI8dGFibGU+PHRib2R5Pjx0cj5cIiwgXCI8L3RyPjwvdGJvZHk+PC90YWJsZT5cIiBdLFxyXG5cdFx0Y29sOiBbIDIsIFwiPHRhYmxlPjx0Ym9keT48L3Rib2R5Pjxjb2xncm91cD5cIiwgXCI8L2NvbGdyb3VwPjwvdGFibGU+XCIgXSxcclxuXHRcdGFyZWE6IFsgMSwgXCI8bWFwPlwiLCBcIjwvbWFwPlwiIF0sXHJcblx0XHRfZGVmYXVsdDogWyAwLCBcIlwiLCBcIlwiIF1cclxuXHR9LFxyXG5cdHNhZmVGcmFnbWVudCA9IGNyZWF0ZVNhZmVGcmFnbWVudCggZG9jdW1lbnQgKSxcclxuXHRmcmFnbWVudERpdiA9IHNhZmVGcmFnbWVudC5hcHBlbmRDaGlsZCggZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSApO1xyXG5cclxud3JhcE1hcC5vcHRncm91cCA9IHdyYXBNYXAub3B0aW9uO1xyXG53cmFwTWFwLnRib2R5ID0gd3JhcE1hcC50Zm9vdCA9IHdyYXBNYXAuY29sZ3JvdXAgPSB3cmFwTWFwLmNhcHRpb24gPSB3cmFwTWFwLnRoZWFkO1xyXG53cmFwTWFwLnRoID0gd3JhcE1hcC50ZDtcclxuXHJcbi8vIElFNi04IGNhbid0IHNlcmlhbGl6ZSBsaW5rLCBzY3JpcHQsIHN0eWxlLCBvciBhbnkgaHRtbDUgKE5vU2NvcGUpIHRhZ3MsXHJcbi8vIHVubGVzcyB3cmFwcGVkIGluIGEgZGl2IHdpdGggbm9uLWJyZWFraW5nIGNoYXJhY3RlcnMgaW4gZnJvbnQgb2YgaXQuXHJcbmlmICggIWpRdWVyeS5zdXBwb3J0Lmh0bWxTZXJpYWxpemUgKSB7XHJcblx0d3JhcE1hcC5fZGVmYXVsdCA9IFsgMSwgXCJYPGRpdj5cIiwgXCI8L2Rpdj5cIiBdO1xyXG59XHJcblxyXG5qUXVlcnkuZm4uZXh0ZW5kKHtcclxuXHR0ZXh0OiBmdW5jdGlvbiggdmFsdWUgKSB7XHJcblx0XHRyZXR1cm4galF1ZXJ5LmFjY2VzcyggdGhpcywgZnVuY3Rpb24oIHZhbHVlICkge1xyXG5cdFx0XHRyZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCA/XHJcblx0XHRcdFx0alF1ZXJ5LnRleHQoIHRoaXMgKSA6XHJcblx0XHRcdFx0dGhpcy5lbXB0eSgpLmFwcGVuZCggKCB0aGlzWzBdICYmIHRoaXNbMF0ub3duZXJEb2N1bWVudCB8fCBkb2N1bWVudCApLmNyZWF0ZVRleHROb2RlKCB2YWx1ZSApICk7XHJcblx0XHR9LCBudWxsLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCApO1xyXG5cdH0sXHJcblxyXG5cdHdyYXBBbGw6IGZ1bmN0aW9uKCBodG1sICkge1xyXG5cdFx0aWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggaHRtbCApICkge1xyXG5cdFx0XHRyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGkpIHtcclxuXHRcdFx0XHRqUXVlcnkodGhpcykud3JhcEFsbCggaHRtbC5jYWxsKHRoaXMsIGkpICk7XHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICggdGhpc1swXSApIHtcclxuXHRcdFx0Ly8gVGhlIGVsZW1lbnRzIHRvIHdyYXAgdGhlIHRhcmdldCBhcm91bmRcclxuXHRcdFx0dmFyIHdyYXAgPSBqUXVlcnkoIGh0bWwsIHRoaXNbMF0ub3duZXJEb2N1bWVudCApLmVxKDApLmNsb25lKHRydWUpO1xyXG5cclxuXHRcdFx0aWYgKCB0aGlzWzBdLnBhcmVudE5vZGUgKSB7XHJcblx0XHRcdFx0d3JhcC5pbnNlcnRCZWZvcmUoIHRoaXNbMF0gKTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0d3JhcC5tYXAoZnVuY3Rpb24oKSB7XHJcblx0XHRcdFx0dmFyIGVsZW0gPSB0aGlzO1xyXG5cclxuXHRcdFx0XHR3aGlsZSAoIGVsZW0uZmlyc3RDaGlsZCAmJiBlbGVtLmZpcnN0Q2hpbGQubm9kZVR5cGUgPT09IDEgKSB7XHJcblx0XHRcdFx0XHRlbGVtID0gZWxlbS5maXJzdENoaWxkO1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0cmV0dXJuIGVsZW07XHJcblx0XHRcdH0pLmFwcGVuZCggdGhpcyApO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiB0aGlzO1xyXG5cdH0sXHJcblxyXG5cdHdyYXBJbm5lcjogZnVuY3Rpb24oIGh0bWwgKSB7XHJcblx0XHRpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBodG1sICkgKSB7XHJcblx0XHRcdHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oaSkge1xyXG5cdFx0XHRcdGpRdWVyeSh0aGlzKS53cmFwSW5uZXIoIGh0bWwuY2FsbCh0aGlzLCBpKSApO1xyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkge1xyXG5cdFx0XHR2YXIgc2VsZiA9IGpRdWVyeSggdGhpcyApLFxyXG5cdFx0XHRcdGNvbnRlbnRzID0gc2VsZi5jb250ZW50cygpO1xyXG5cclxuXHRcdFx0aWYgKCBjb250ZW50cy5sZW5ndGggKSB7XHJcblx0XHRcdFx0Y29udGVudHMud3JhcEFsbCggaHRtbCApO1xyXG5cclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRzZWxmLmFwcGVuZCggaHRtbCApO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9LFxyXG5cclxuXHR3cmFwOiBmdW5jdGlvbiggaHRtbCApIHtcclxuXHRcdHZhciBpc0Z1bmN0aW9uID0galF1ZXJ5LmlzRnVuY3Rpb24oIGh0bWwgKTtcclxuXHJcblx0XHRyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGkpIHtcclxuXHRcdFx0alF1ZXJ5KCB0aGlzICkud3JhcEFsbCggaXNGdW5jdGlvbiA/IGh0bWwuY2FsbCh0aGlzLCBpKSA6IGh0bWwgKTtcclxuXHRcdH0pO1xyXG5cdH0sXHJcblxyXG5cdHVud3JhcDogZnVuY3Rpb24oKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5wYXJlbnQoKS5lYWNoKGZ1bmN0aW9uKCkge1xyXG5cdFx0XHRpZiAoICFqUXVlcnkubm9kZU5hbWUoIHRoaXMsIFwiYm9keVwiICkgKSB7XHJcblx0XHRcdFx0alF1ZXJ5KCB0aGlzICkucmVwbGFjZVdpdGgoIHRoaXMuY2hpbGROb2RlcyApO1xyXG5cdFx0XHR9XHJcblx0XHR9KS5lbmQoKTtcclxuXHR9LFxyXG5cclxuXHRhcHBlbmQ6IGZ1bmN0aW9uKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLCB0cnVlLCBmdW5jdGlvbiggZWxlbSApIHtcclxuXHRcdFx0aWYgKCB0aGlzLm5vZGVUeXBlID09PSAxIHx8IHRoaXMubm9kZVR5cGUgPT09IDExICkge1xyXG5cdFx0XHRcdHRoaXMuYXBwZW5kQ2hpbGQoIGVsZW0gKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fSxcclxuXHJcblx0cHJlcGVuZDogZnVuY3Rpb24oKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsIHRydWUsIGZ1bmN0aW9uKCBlbGVtICkge1xyXG5cdFx0XHRpZiAoIHRoaXMubm9kZVR5cGUgPT09IDEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gMTEgKSB7XHJcblx0XHRcdFx0dGhpcy5pbnNlcnRCZWZvcmUoIGVsZW0sIHRoaXMuZmlyc3RDaGlsZCApO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9LFxyXG5cclxuXHRiZWZvcmU6IGZ1bmN0aW9uKCkge1xyXG5cdFx0aWYgKCAhaXNEaXNjb25uZWN0ZWQoIHRoaXNbMF0gKSApIHtcclxuXHRcdFx0cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLCBmYWxzZSwgZnVuY3Rpb24oIGVsZW0gKSB7XHJcblx0XHRcdFx0dGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSggZWxlbSwgdGhpcyApO1xyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAoIGFyZ3VtZW50cy5sZW5ndGggKSB7XHJcblx0XHRcdHZhciBzZXQgPSBqUXVlcnkuY2xlYW4oIGFyZ3VtZW50cyApO1xyXG5cdFx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIGpRdWVyeS5tZXJnZSggc2V0LCB0aGlzICksIFwiYmVmb3JlXCIsIHRoaXMuc2VsZWN0b3IgKTtcclxuXHRcdH1cclxuXHR9LFxyXG5cclxuXHRhZnRlcjogZnVuY3Rpb24oKSB7XHJcblx0XHRpZiAoICFpc0Rpc2Nvbm5lY3RlZCggdGhpc1swXSApICkge1xyXG5cdFx0XHRyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsIGZhbHNlLCBmdW5jdGlvbiggZWxlbSApIHtcclxuXHRcdFx0XHR0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKCBlbGVtLCB0aGlzLm5leHRTaWJsaW5nICk7XHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICggYXJndW1lbnRzLmxlbmd0aCApIHtcclxuXHRcdFx0dmFyIHNldCA9IGpRdWVyeS5jbGVhbiggYXJndW1lbnRzICk7XHJcblx0XHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayggalF1ZXJ5Lm1lcmdlKCB0aGlzLCBzZXQgKSwgXCJhZnRlclwiLCB0aGlzLnNlbGVjdG9yICk7XHJcblx0XHR9XHJcblx0fSxcclxuXHJcblx0Ly8ga2VlcERhdGEgaXMgZm9yIGludGVybmFsIHVzZSBvbmx5LS1kbyBub3QgZG9jdW1lbnRcclxuXHRyZW1vdmU6IGZ1bmN0aW9uKCBzZWxlY3Rvciwga2VlcERhdGEgKSB7XHJcblx0XHR2YXIgZWxlbSxcclxuXHRcdFx0aSA9IDA7XHJcblxyXG5cdFx0Zm9yICggOyAoZWxlbSA9IHRoaXNbaV0pICE9IG51bGw7IGkrKyApIHtcclxuXHRcdFx0aWYgKCAhc2VsZWN0b3IgfHwgalF1ZXJ5LmZpbHRlciggc2VsZWN0b3IsIFsgZWxlbSBdICkubGVuZ3RoICkge1xyXG5cdFx0XHRcdGlmICggIWtlZXBEYXRhICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7XHJcblx0XHRcdFx0XHRqUXVlcnkuY2xlYW5EYXRhKCBlbGVtLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiKlwiKSApO1xyXG5cdFx0XHRcdFx0alF1ZXJ5LmNsZWFuRGF0YSggWyBlbGVtIF0gKTtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdGlmICggZWxlbS5wYXJlbnROb2RlICkge1xyXG5cdFx0XHRcdFx0ZWxlbS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKCBlbGVtICk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIHRoaXM7XHJcblx0fSxcclxuXHJcblx0ZW1wdHk6IGZ1bmN0aW9uKCkge1xyXG5cdFx0dmFyIGVsZW0sXHJcblx0XHRcdGkgPSAwO1xyXG5cclxuXHRcdGZvciAoIDsgKGVsZW0gPSB0aGlzW2ldKSAhPSBudWxsOyBpKysgKSB7XHJcblx0XHRcdC8vIFJlbW92ZSBlbGVtZW50IG5vZGVzIGFuZCBwcmV2ZW50IG1lbW9yeSBsZWFrc1xyXG5cdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7XHJcblx0XHRcdFx0alF1ZXJ5LmNsZWFuRGF0YSggZWxlbS5nZXRFbGVtZW50c0J5VGFnTmFtZShcIipcIikgKTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Ly8gUmVtb3ZlIGFueSByZW1haW5pbmcgbm9kZXNcclxuXHRcdFx0d2hpbGUgKCBlbGVtLmZpcnN0Q2hpbGQgKSB7XHJcblx0XHRcdFx0ZWxlbS5yZW1vdmVDaGlsZCggZWxlbS5maXJzdENoaWxkICk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gdGhpcztcclxuXHR9LFxyXG5cclxuXHRjbG9uZTogZnVuY3Rpb24oIGRhdGFBbmRFdmVudHMsIGRlZXBEYXRhQW5kRXZlbnRzICkge1xyXG5cdFx0ZGF0YUFuZEV2ZW50cyA9IGRhdGFBbmRFdmVudHMgPT0gbnVsbCA/IGZhbHNlIDogZGF0YUFuZEV2ZW50cztcclxuXHRcdGRlZXBEYXRhQW5kRXZlbnRzID0gZGVlcERhdGFBbmRFdmVudHMgPT0gbnVsbCA/IGRhdGFBbmRFdmVudHMgOiBkZWVwRGF0YUFuZEV2ZW50cztcclxuXHJcblx0XHRyZXR1cm4gdGhpcy5tYXAoIGZ1bmN0aW9uICgpIHtcclxuXHRcdFx0cmV0dXJuIGpRdWVyeS5jbG9uZSggdGhpcywgZGF0YUFuZEV2ZW50cywgZGVlcERhdGFBbmRFdmVudHMgKTtcclxuXHRcdH0pO1xyXG5cdH0sXHJcblxyXG5cdGh0bWw6IGZ1bmN0aW9uKCB2YWx1ZSApIHtcclxuXHRcdHJldHVybiBqUXVlcnkuYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggdmFsdWUgKSB7XHJcblx0XHRcdHZhciBlbGVtID0gdGhpc1swXSB8fCB7fSxcclxuXHRcdFx0XHRpID0gMCxcclxuXHRcdFx0XHRsID0gdGhpcy5sZW5ndGg7XHJcblxyXG5cdFx0XHRpZiAoIHZhbHVlID09PSB1bmRlZmluZWQgKSB7XHJcblx0XHRcdFx0cmV0dXJuIGVsZW0ubm9kZVR5cGUgPT09IDEgP1xyXG5cdFx0XHRcdFx0ZWxlbS5pbm5lckhUTUwucmVwbGFjZSggcmlubGluZWpRdWVyeSwgXCJcIiApIDpcclxuXHRcdFx0XHRcdHVuZGVmaW5lZDtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Ly8gU2VlIGlmIHdlIGNhbiB0YWtlIGEgc2hvcnRjdXQgYW5kIGp1c3QgdXNlIGlubmVySFRNTFxyXG5cdFx0XHRpZiAoIHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiAhcm5vSW5uZXJodG1sLnRlc3QoIHZhbHVlICkgJiZcclxuXHRcdFx0XHQoIGpRdWVyeS5zdXBwb3J0Lmh0bWxTZXJpYWxpemUgfHwgIXJub3NoaW1jYWNoZS50ZXN0KCB2YWx1ZSApICApICYmXHJcblx0XHRcdFx0KCBqUXVlcnkuc3VwcG9ydC5sZWFkaW5nV2hpdGVzcGFjZSB8fCAhcmxlYWRpbmdXaGl0ZXNwYWNlLnRlc3QoIHZhbHVlICkgKSAmJlxyXG5cdFx0XHRcdCF3cmFwTWFwWyAoIHJ0YWdOYW1lLmV4ZWMoIHZhbHVlICkgfHwgW1wiXCIsIFwiXCJdIClbMV0udG9Mb3dlckNhc2UoKSBdICkge1xyXG5cclxuXHRcdFx0XHR2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoIHJ4aHRtbFRhZywgXCI8JDE+PC8kMj5cIiApO1xyXG5cclxuXHRcdFx0XHR0cnkge1xyXG5cdFx0XHRcdFx0Zm9yICg7IGkgPCBsOyBpKysgKSB7XHJcblx0XHRcdFx0XHRcdC8vIFJlbW92ZSBlbGVtZW50IG5vZGVzIGFuZCBwcmV2ZW50IG1lbW9yeSBsZWFrc1xyXG5cdFx0XHRcdFx0XHRlbGVtID0gdGhpc1tpXSB8fCB7fTtcclxuXHRcdFx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICkge1xyXG5cdFx0XHRcdFx0XHRcdGpRdWVyeS5jbGVhbkRhdGEoIGVsZW0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoIFwiKlwiICkgKTtcclxuXHRcdFx0XHRcdFx0XHRlbGVtLmlubmVySFRNTCA9IHZhbHVlO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0ZWxlbSA9IDA7XHJcblxyXG5cdFx0XHRcdC8vIElmIHVzaW5nIGlubmVySFRNTCB0aHJvd3MgYW4gZXhjZXB0aW9uLCB1c2UgdGhlIGZhbGxiYWNrIG1ldGhvZFxyXG5cdFx0XHRcdH0gY2F0Y2goZSkge31cclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0aWYgKCBlbGVtICkge1xyXG5cdFx0XHRcdHRoaXMuZW1wdHkoKS5hcHBlbmQoIHZhbHVlICk7XHJcblx0XHRcdH1cclxuXHRcdH0sIG51bGwsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoICk7XHJcblx0fSxcclxuXHJcblx0cmVwbGFjZVdpdGg6IGZ1bmN0aW9uKCB2YWx1ZSApIHtcclxuXHRcdGlmICggIWlzRGlzY29ubmVjdGVkKCB0aGlzWzBdICkgKSB7XHJcblx0XHRcdC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBlbGVtZW50cyBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBET00gYmVmb3JlIHRoZXkgYXJlIGluc2VydGVkXHJcblx0XHRcdC8vIHRoaXMgY2FuIGhlbHAgZml4IHJlcGxhY2luZyBhIHBhcmVudCB3aXRoIGNoaWxkIGVsZW1lbnRzXHJcblx0XHRcdGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHZhbHVlICkgKSB7XHJcblx0XHRcdFx0cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihpKSB7XHJcblx0XHRcdFx0XHR2YXIgc2VsZiA9IGpRdWVyeSh0aGlzKSwgb2xkID0gc2VsZi5odG1sKCk7XHJcblx0XHRcdFx0XHRzZWxmLnJlcGxhY2VXaXRoKCB2YWx1ZS5jYWxsKCB0aGlzLCBpLCBvbGQgKSApO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRpZiAoIHR5cGVvZiB2YWx1ZSAhPT0gXCJzdHJpbmdcIiApIHtcclxuXHRcdFx0XHR2YWx1ZSA9IGpRdWVyeSggdmFsdWUgKS5kZXRhY2goKTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHtcclxuXHRcdFx0XHR2YXIgbmV4dCA9IHRoaXMubmV4dFNpYmxpbmcsXHJcblx0XHRcdFx0XHRwYXJlbnQgPSB0aGlzLnBhcmVudE5vZGU7XHJcblxyXG5cdFx0XHRcdGpRdWVyeSggdGhpcyApLnJlbW92ZSgpO1xyXG5cclxuXHRcdFx0XHRpZiAoIG5leHQgKSB7XHJcblx0XHRcdFx0XHRqUXVlcnkobmV4dCkuYmVmb3JlKCB2YWx1ZSApO1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRqUXVlcnkocGFyZW50KS5hcHBlbmQoIHZhbHVlICk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gdGhpcy5sZW5ndGggP1xyXG5cdFx0XHR0aGlzLnB1c2hTdGFjayggalF1ZXJ5KGpRdWVyeS5pc0Z1bmN0aW9uKHZhbHVlKSA/IHZhbHVlKCkgOiB2YWx1ZSksIFwicmVwbGFjZVdpdGhcIiwgdmFsdWUgKSA6XHJcblx0XHRcdHRoaXM7XHJcblx0fSxcclxuXHJcblx0ZGV0YWNoOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5yZW1vdmUoIHNlbGVjdG9yLCB0cnVlICk7XHJcblx0fSxcclxuXHJcblx0ZG9tTWFuaXA6IGZ1bmN0aW9uKCBhcmdzLCB0YWJsZSwgY2FsbGJhY2sgKSB7XHJcblxyXG5cdFx0Ly8gRmxhdHRlbiBhbnkgbmVzdGVkIGFycmF5c1xyXG5cdFx0YXJncyA9IFtdLmNvbmNhdC5hcHBseSggW10sIGFyZ3MgKTtcclxuXHJcblx0XHR2YXIgcmVzdWx0cywgZmlyc3QsIGZyYWdtZW50LCBpTm9DbG9uZSxcclxuXHRcdFx0aSA9IDAsXHJcblx0XHRcdHZhbHVlID0gYXJnc1swXSxcclxuXHRcdFx0c2NyaXB0cyA9IFtdLFxyXG5cdFx0XHRsID0gdGhpcy5sZW5ndGg7XHJcblxyXG5cdFx0Ly8gV2UgY2FuJ3QgY2xvbmVOb2RlIGZyYWdtZW50cyB0aGF0IGNvbnRhaW4gY2hlY2tlZCwgaW4gV2ViS2l0XHJcblx0XHRpZiAoICFqUXVlcnkuc3VwcG9ydC5jaGVja0Nsb25lICYmIGwgPiAxICYmIHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiByY2hlY2tlZC50ZXN0KCB2YWx1ZSApICkge1xyXG5cdFx0XHRyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkge1xyXG5cdFx0XHRcdGpRdWVyeSh0aGlzKS5kb21NYW5pcCggYXJncywgdGFibGUsIGNhbGxiYWNrICk7XHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICggalF1ZXJ5LmlzRnVuY3Rpb24odmFsdWUpICkge1xyXG5cdFx0XHRyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGkpIHtcclxuXHRcdFx0XHR2YXIgc2VsZiA9IGpRdWVyeSh0aGlzKTtcclxuXHRcdFx0XHRhcmdzWzBdID0gdmFsdWUuY2FsbCggdGhpcywgaSwgdGFibGUgPyBzZWxmLmh0bWwoKSA6IHVuZGVmaW5lZCApO1xyXG5cdFx0XHRcdHNlbGYuZG9tTWFuaXAoIGFyZ3MsIHRhYmxlLCBjYWxsYmFjayApO1xyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAoIHRoaXNbMF0gKSB7XHJcblx0XHRcdHJlc3VsdHMgPSBqUXVlcnkuYnVpbGRGcmFnbWVudCggYXJncywgdGhpcywgc2NyaXB0cyApO1xyXG5cdFx0XHRmcmFnbWVudCA9IHJlc3VsdHMuZnJhZ21lbnQ7XHJcblx0XHRcdGZpcnN0ID0gZnJhZ21lbnQuZmlyc3RDaGlsZDtcclxuXHJcblx0XHRcdGlmICggZnJhZ21lbnQuY2hpbGROb2Rlcy5sZW5ndGggPT09IDEgKSB7XHJcblx0XHRcdFx0ZnJhZ21lbnQgPSBmaXJzdDtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0aWYgKCBmaXJzdCApIHtcclxuXHRcdFx0XHR0YWJsZSA9IHRhYmxlICYmIGpRdWVyeS5ub2RlTmFtZSggZmlyc3QsIFwidHJcIiApO1xyXG5cclxuXHRcdFx0XHQvLyBVc2UgdGhlIG9yaWdpbmFsIGZyYWdtZW50IGZvciB0aGUgbGFzdCBpdGVtIGluc3RlYWQgb2YgdGhlIGZpcnN0IGJlY2F1c2UgaXQgY2FuIGVuZCB1cFxyXG5cdFx0XHRcdC8vIGJlaW5nIGVtcHRpZWQgaW5jb3JyZWN0bHkgaW4gY2VydGFpbiBzaXR1YXRpb25zICgjODA3MCkuXHJcblx0XHRcdFx0Ly8gRnJhZ21lbnRzIGZyb20gdGhlIGZyYWdtZW50IGNhY2hlIG11c3QgYWx3YXlzIGJlIGNsb25lZCBhbmQgbmV2ZXIgdXNlZCBpbiBwbGFjZS5cclxuXHRcdFx0XHRmb3IgKCBpTm9DbG9uZSA9IHJlc3VsdHMuY2FjaGVhYmxlIHx8IGwgLSAxOyBpIDwgbDsgaSsrICkge1xyXG5cdFx0XHRcdFx0Y2FsbGJhY2suY2FsbChcclxuXHRcdFx0XHRcdFx0dGFibGUgJiYgalF1ZXJ5Lm5vZGVOYW1lKCB0aGlzW2ldLCBcInRhYmxlXCIgKSA/XHJcblx0XHRcdFx0XHRcdFx0ZmluZE9yQXBwZW5kKCB0aGlzW2ldLCBcInRib2R5XCIgKSA6XHJcblx0XHRcdFx0XHRcdFx0dGhpc1tpXSxcclxuXHRcdFx0XHRcdFx0aSA9PT0gaU5vQ2xvbmUgP1xyXG5cdFx0XHRcdFx0XHRcdGZyYWdtZW50IDpcclxuXHRcdFx0XHRcdFx0XHRqUXVlcnkuY2xvbmUoIGZyYWdtZW50LCB0cnVlLCB0cnVlIClcclxuXHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvLyBGaXggIzExODA5OiBBdm9pZCBsZWFraW5nIG1lbW9yeVxyXG5cdFx0XHRmcmFnbWVudCA9IGZpcnN0ID0gbnVsbDtcclxuXHJcblx0XHRcdGlmICggc2NyaXB0cy5sZW5ndGggKSB7XHJcblx0XHRcdFx0alF1ZXJ5LmVhY2goIHNjcmlwdHMsIGZ1bmN0aW9uKCBpLCBlbGVtICkge1xyXG5cdFx0XHRcdFx0aWYgKCBlbGVtLnNyYyApIHtcclxuXHRcdFx0XHRcdFx0aWYgKCBqUXVlcnkuYWpheCApIHtcclxuXHRcdFx0XHRcdFx0XHRqUXVlcnkuYWpheCh7XHJcblx0XHRcdFx0XHRcdFx0XHR1cmw6IGVsZW0uc3JjLFxyXG5cdFx0XHRcdFx0XHRcdFx0dHlwZTogXCJHRVRcIixcclxuXHRcdFx0XHRcdFx0XHRcdGRhdGFUeXBlOiBcInNjcmlwdFwiLFxyXG5cdFx0XHRcdFx0XHRcdFx0YXN5bmM6IGZhbHNlLFxyXG5cdFx0XHRcdFx0XHRcdFx0Z2xvYmFsOiBmYWxzZSxcclxuXHRcdFx0XHRcdFx0XHRcdFwidGhyb3dzXCI6IHRydWVcclxuXHRcdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRqUXVlcnkuZXJyb3IoXCJubyBhamF4XCIpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRqUXVlcnkuZ2xvYmFsRXZhbCggKCBlbGVtLnRleHQgfHwgZWxlbS50ZXh0Q29udGVudCB8fCBlbGVtLmlubmVySFRNTCB8fCBcIlwiICkucmVwbGFjZSggcmNsZWFuU2NyaXB0LCBcIlwiICkgKTtcclxuXHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRpZiAoIGVsZW0ucGFyZW50Tm9kZSApIHtcclxuXHRcdFx0XHRcdFx0ZWxlbS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKCBlbGVtICk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gdGhpcztcclxuXHR9XHJcbn0pO1xyXG5cclxuZnVuY3Rpb24gZmluZE9yQXBwZW5kKCBlbGVtLCB0YWcgKSB7XHJcblx0cmV0dXJuIGVsZW0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoIHRhZyApWzBdIHx8IGVsZW0uYXBwZW5kQ2hpbGQoIGVsZW0ub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KCB0YWcgKSApO1xyXG59XHJcblxyXG5mdW5jdGlvbiBjbG9uZUNvcHlFdmVudCggc3JjLCBkZXN0ICkge1xyXG5cclxuXHRpZiAoIGRlc3Qubm9kZVR5cGUgIT09IDEgfHwgIWpRdWVyeS5oYXNEYXRhKCBzcmMgKSApIHtcclxuXHRcdHJldHVybjtcclxuXHR9XHJcblxyXG5cdHZhciB0eXBlLCBpLCBsLFxyXG5cdFx0b2xkRGF0YSA9IGpRdWVyeS5fZGF0YSggc3JjICksXHJcblx0XHRjdXJEYXRhID0galF1ZXJ5Ll9kYXRhKCBkZXN0LCBvbGREYXRhICksXHJcblx0XHRldmVudHMgPSBvbGREYXRhLmV2ZW50cztcclxuXHJcblx0aWYgKCBldmVudHMgKSB7XHJcblx0XHRkZWxldGUgY3VyRGF0YS5oYW5kbGU7XHJcblx0XHRjdXJEYXRhLmV2ZW50cyA9IHt9O1xyXG5cclxuXHRcdGZvciAoIHR5cGUgaW4gZXZlbnRzICkge1xyXG5cdFx0XHRmb3IgKCBpID0gMCwgbCA9IGV2ZW50c1sgdHlwZSBdLmxlbmd0aDsgaSA8IGw7IGkrKyApIHtcclxuXHRcdFx0XHRqUXVlcnkuZXZlbnQuYWRkKCBkZXN0LCB0eXBlLCBldmVudHNbIHR5cGUgXVsgaSBdICk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8vIG1ha2UgdGhlIGNsb25lZCBwdWJsaWMgZGF0YSBvYmplY3QgYSBjb3B5IGZyb20gdGhlIG9yaWdpbmFsXHJcblx0aWYgKCBjdXJEYXRhLmRhdGEgKSB7XHJcblx0XHRjdXJEYXRhLmRhdGEgPSBqUXVlcnkuZXh0ZW5kKCB7fSwgY3VyRGF0YS5kYXRhICk7XHJcblx0fVxyXG59XHJcblxyXG5mdW5jdGlvbiBjbG9uZUZpeEF0dHJpYnV0ZXMoIHNyYywgZGVzdCApIHtcclxuXHR2YXIgbm9kZU5hbWU7XHJcblxyXG5cdC8vIFdlIGRvIG5vdCBuZWVkIHRvIGRvIGFueXRoaW5nIGZvciBub24tRWxlbWVudHNcclxuXHRpZiAoIGRlc3Qubm9kZVR5cGUgIT09IDEgKSB7XHJcblx0XHRyZXR1cm47XHJcblx0fVxyXG5cclxuXHQvLyBjbGVhckF0dHJpYnV0ZXMgcmVtb3ZlcyB0aGUgYXR0cmlidXRlcywgd2hpY2ggd2UgZG9uJ3Qgd2FudCxcclxuXHQvLyBidXQgYWxzbyByZW1vdmVzIHRoZSBhdHRhY2hFdmVudCBldmVudHMsIHdoaWNoIHdlICpkbyogd2FudFxyXG5cdGlmICggZGVzdC5jbGVhckF0dHJpYnV0ZXMgKSB7XHJcblx0XHRkZXN0LmNsZWFyQXR0cmlidXRlcygpO1xyXG5cdH1cclxuXHJcblx0Ly8gbWVyZ2VBdHRyaWJ1dGVzLCBpbiBjb250cmFzdCwgb25seSBtZXJnZXMgYmFjayBvbiB0aGVcclxuXHQvLyBvcmlnaW5hbCBhdHRyaWJ1dGVzLCBub3QgdGhlIGV2ZW50c1xyXG5cdGlmICggZGVzdC5tZXJnZUF0dHJpYnV0ZXMgKSB7XHJcblx0XHRkZXN0Lm1lcmdlQXR0cmlidXRlcyggc3JjICk7XHJcblx0fVxyXG5cclxuXHRub2RlTmFtZSA9IGRlc3Qubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcclxuXHJcblx0aWYgKCBub2RlTmFtZSA9PT0gXCJvYmplY3RcIiApIHtcclxuXHRcdC8vIElFNi0xMCBpbXByb3Blcmx5IGNsb25lcyBjaGlsZHJlbiBvZiBvYmplY3QgZWxlbWVudHMgdXNpbmcgY2xhc3NpZC5cclxuXHRcdC8vIElFMTAgdGhyb3dzIE5vTW9kaWZpY2F0aW9uQWxsb3dlZEVycm9yIGlmIHBhcmVudCBpcyBudWxsLCAjMTIxMzIuXHJcblx0XHRpZiAoIGRlc3QucGFyZW50Tm9kZSApIHtcclxuXHRcdFx0ZGVzdC5vdXRlckhUTUwgPSBzcmMub3V0ZXJIVE1MO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIFRoaXMgcGF0aCBhcHBlYXJzIHVuYXZvaWRhYmxlIGZvciBJRTkuIFdoZW4gY2xvbmluZyBhbiBvYmplY3RcclxuXHRcdC8vIGVsZW1lbnQgaW4gSUU5LCB0aGUgb3V0ZXJIVE1MIHN0cmF0ZWd5IGFib3ZlIGlzIG5vdCBzdWZmaWNpZW50LlxyXG5cdFx0Ly8gSWYgdGhlIHNyYyBoYXMgaW5uZXJIVE1MIGFuZCB0aGUgZGVzdGluYXRpb24gZG9lcyBub3QsXHJcblx0XHQvLyBjb3B5IHRoZSBzcmMuaW5uZXJIVE1MIGludG8gdGhlIGRlc3QuaW5uZXJIVE1MLiAjMTAzMjRcclxuXHRcdGlmICggalF1ZXJ5LnN1cHBvcnQuaHRtbDVDbG9uZSAmJiAoc3JjLmlubmVySFRNTCAmJiAhalF1ZXJ5LnRyaW0oZGVzdC5pbm5lckhUTUwpKSApIHtcclxuXHRcdFx0ZGVzdC5pbm5lckhUTUwgPSBzcmMuaW5uZXJIVE1MO1xyXG5cdFx0fVxyXG5cclxuXHR9IGVsc2UgaWYgKCBub2RlTmFtZSA9PT0gXCJpbnB1dFwiICYmIHJjaGVja2FibGVUeXBlLnRlc3QoIHNyYy50eXBlICkgKSB7XHJcblx0XHQvLyBJRTYtOCBmYWlscyB0byBwZXJzaXN0IHRoZSBjaGVja2VkIHN0YXRlIG9mIGEgY2xvbmVkIGNoZWNrYm94XHJcblx0XHQvLyBvciByYWRpbyBidXR0b24uIFdvcnNlLCBJRTYtNyBmYWlsIHRvIGdpdmUgdGhlIGNsb25lZCBlbGVtZW50XHJcblx0XHQvLyBhIGNoZWNrZWQgYXBwZWFyYW5jZSBpZiB0aGUgZGVmYXVsdENoZWNrZWQgdmFsdWUgaXNuJ3QgYWxzbyBzZXRcclxuXHJcblx0XHRkZXN0LmRlZmF1bHRDaGVja2VkID0gZGVzdC5jaGVja2VkID0gc3JjLmNoZWNrZWQ7XHJcblxyXG5cdFx0Ly8gSUU2LTcgZ2V0IGNvbmZ1c2VkIGFuZCBlbmQgdXAgc2V0dGluZyB0aGUgdmFsdWUgb2YgYSBjbG9uZWRcclxuXHRcdC8vIGNoZWNrYm94L3JhZGlvIGJ1dHRvbiB0byBhbiBlbXB0eSBzdHJpbmcgaW5zdGVhZCBvZiBcIm9uXCJcclxuXHRcdGlmICggZGVzdC52YWx1ZSAhPT0gc3JjLnZhbHVlICkge1xyXG5cdFx0XHRkZXN0LnZhbHVlID0gc3JjLnZhbHVlO1xyXG5cdFx0fVxyXG5cclxuXHQvLyBJRTYtOCBmYWlscyB0byByZXR1cm4gdGhlIHNlbGVjdGVkIG9wdGlvbiB0byB0aGUgZGVmYXVsdCBzZWxlY3RlZFxyXG5cdC8vIHN0YXRlIHdoZW4gY2xvbmluZyBvcHRpb25zXHJcblx0fSBlbHNlIGlmICggbm9kZU5hbWUgPT09IFwib3B0aW9uXCIgKSB7XHJcblx0XHRkZXN0LnNlbGVjdGVkID0gc3JjLmRlZmF1bHRTZWxlY3RlZDtcclxuXHJcblx0Ly8gSUU2LTggZmFpbHMgdG8gc2V0IHRoZSBkZWZhdWx0VmFsdWUgdG8gdGhlIGNvcnJlY3QgdmFsdWUgd2hlblxyXG5cdC8vIGNsb25pbmcgb3RoZXIgdHlwZXMgb2YgaW5wdXQgZmllbGRzXHJcblx0fSBlbHNlIGlmICggbm9kZU5hbWUgPT09IFwiaW5wdXRcIiB8fCBub2RlTmFtZSA9PT0gXCJ0ZXh0YXJlYVwiICkge1xyXG5cdFx0ZGVzdC5kZWZhdWx0VmFsdWUgPSBzcmMuZGVmYXVsdFZhbHVlO1xyXG5cclxuXHQvLyBJRSBibGFua3MgY29udGVudHMgd2hlbiBjbG9uaW5nIHNjcmlwdHNcclxuXHR9IGVsc2UgaWYgKCBub2RlTmFtZSA9PT0gXCJzY3JpcHRcIiAmJiBkZXN0LnRleHQgIT09IHNyYy50ZXh0ICkge1xyXG5cdFx0ZGVzdC50ZXh0ID0gc3JjLnRleHQ7XHJcblx0fVxyXG5cclxuXHQvLyBFdmVudCBkYXRhIGdldHMgcmVmZXJlbmNlZCBpbnN0ZWFkIG9mIGNvcGllZCBpZiB0aGUgZXhwYW5kb1xyXG5cdC8vIGdldHMgY29waWVkIHRvb1xyXG5cdGRlc3QucmVtb3ZlQXR0cmlidXRlKCBqUXVlcnkuZXhwYW5kbyApO1xyXG59XHJcblxyXG5qUXVlcnkuYnVpbGRGcmFnbWVudCA9IGZ1bmN0aW9uKCBhcmdzLCBjb250ZXh0LCBzY3JpcHRzICkge1xyXG5cdHZhciBmcmFnbWVudCwgY2FjaGVhYmxlLCBjYWNoZWhpdCxcclxuXHRcdGZpcnN0ID0gYXJnc1sgMCBdO1xyXG5cclxuXHQvLyBTZXQgY29udGV4dCBmcm9tIHdoYXQgbWF5IGNvbWUgaW4gYXMgdW5kZWZpbmVkIG9yIGEgalF1ZXJ5IGNvbGxlY3Rpb24gb3IgYSBub2RlXHJcblx0Ly8gVXBkYXRlZCB0byBmaXggIzEyMjY2IHdoZXJlIGFjY2Vzc2luZyBjb250ZXh0WzBdIGNvdWxkIHRocm93IGFuIGV4Y2VwdGlvbiBpbiBJRTkvMTAgJlxyXG5cdC8vIGFsc28gZG91YmxlcyBhcyBmaXggZm9yICM4OTUwIHdoZXJlIHBsYWluIG9iamVjdHMgY2F1c2VkIGNyZWF0ZURvY3VtZW50RnJhZ21lbnQgZXhjZXB0aW9uXHJcblx0Y29udGV4dCA9IGNvbnRleHQgfHwgZG9jdW1lbnQ7XHJcblx0Y29udGV4dCA9ICFjb250ZXh0Lm5vZGVUeXBlICYmIGNvbnRleHRbMF0gfHwgY29udGV4dDtcclxuXHRjb250ZXh0ID0gY29udGV4dC5vd25lckRvY3VtZW50IHx8IGNvbnRleHQ7XHJcblxyXG5cdC8vIE9ubHkgY2FjaGUgXCJzbWFsbFwiICgxLzIgS0IpIEhUTUwgc3RyaW5ncyB0aGF0IGFyZSBhc3NvY2lhdGVkIHdpdGggdGhlIG1haW4gZG9jdW1lbnRcclxuXHQvLyBDbG9uaW5nIG9wdGlvbnMgbG9zZXMgdGhlIHNlbGVjdGVkIHN0YXRlLCBzbyBkb24ndCBjYWNoZSB0aGVtXHJcblx0Ly8gSUUgNiBkb2Vzbid0IGxpa2UgaXQgd2hlbiB5b3UgcHV0IDxvYmplY3Q+IG9yIDxlbWJlZD4gZWxlbWVudHMgaW4gYSBmcmFnbWVudFxyXG5cdC8vIEFsc28sIFdlYktpdCBkb2VzIG5vdCBjbG9uZSAnY2hlY2tlZCcgYXR0cmlidXRlcyBvbiBjbG9uZU5vZGUsIHNvIGRvbid0IGNhY2hlXHJcblx0Ly8gTGFzdGx5LCBJRTYsNyw4IHdpbGwgbm90IGNvcnJlY3RseSByZXVzZSBjYWNoZWQgZnJhZ21lbnRzIHRoYXQgd2VyZSBjcmVhdGVkIGZyb20gdW5rbm93biBlbGVtcyAjMTA1MDFcclxuXHRpZiAoIGFyZ3MubGVuZ3RoID09PSAxICYmIHR5cGVvZiBmaXJzdCA9PT0gXCJzdHJpbmdcIiAmJiBmaXJzdC5sZW5ndGggPCA1MTIgJiYgY29udGV4dCA9PT0gZG9jdW1lbnQgJiZcclxuXHRcdGZpcnN0LmNoYXJBdCgwKSA9PT0gXCI8XCIgJiYgIXJub2NhY2hlLnRlc3QoIGZpcnN0ICkgJiZcclxuXHRcdChqUXVlcnkuc3VwcG9ydC5jaGVja0Nsb25lIHx8ICFyY2hlY2tlZC50ZXN0KCBmaXJzdCApKSAmJlxyXG5cdFx0KGpRdWVyeS5zdXBwb3J0Lmh0bWw1Q2xvbmUgfHwgIXJub3NoaW1jYWNoZS50ZXN0KCBmaXJzdCApKSApIHtcclxuXHJcblx0XHQvLyBNYXJrIGNhY2hlYWJsZSBhbmQgbG9vayBmb3IgYSBoaXRcclxuXHRcdGNhY2hlYWJsZSA9IHRydWU7XHJcblx0XHRmcmFnbWVudCA9IGpRdWVyeS5mcmFnbWVudHNbIGZpcnN0IF07XHJcblx0XHRjYWNoZWhpdCA9IGZyYWdtZW50ICE9PSB1bmRlZmluZWQ7XHJcblx0fVxyXG5cclxuXHRpZiAoICFmcmFnbWVudCApIHtcclxuXHRcdGZyYWdtZW50ID0gY29udGV4dC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7XHJcblx0XHRqUXVlcnkuY2xlYW4oIGFyZ3MsIGNvbnRleHQsIGZyYWdtZW50LCBzY3JpcHRzICk7XHJcblxyXG5cdFx0Ly8gVXBkYXRlIHRoZSBjYWNoZSwgYnV0IG9ubHkgc3RvcmUgZmFsc2VcclxuXHRcdC8vIHVubGVzcyB0aGlzIGlzIGEgc2Vjb25kIHBhcnNpbmcgb2YgdGhlIHNhbWUgY29udGVudFxyXG5cdFx0aWYgKCBjYWNoZWFibGUgKSB7XHJcblx0XHRcdGpRdWVyeS5mcmFnbWVudHNbIGZpcnN0IF0gPSBjYWNoZWhpdCAmJiBmcmFnbWVudDtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHJldHVybiB7IGZyYWdtZW50OiBmcmFnbWVudCwgY2FjaGVhYmxlOiBjYWNoZWFibGUgfTtcclxufTtcclxuXHJcbmpRdWVyeS5mcmFnbWVudHMgPSB7fTtcclxuXHJcbmpRdWVyeS5lYWNoKHtcclxuXHRhcHBlbmRUbzogXCJhcHBlbmRcIixcclxuXHRwcmVwZW5kVG86IFwicHJlcGVuZFwiLFxyXG5cdGluc2VydEJlZm9yZTogXCJiZWZvcmVcIixcclxuXHRpbnNlcnRBZnRlcjogXCJhZnRlclwiLFxyXG5cdHJlcGxhY2VBbGw6IFwicmVwbGFjZVdpdGhcIlxyXG59LCBmdW5jdGlvbiggbmFtZSwgb3JpZ2luYWwgKSB7XHJcblx0alF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XHJcblx0XHR2YXIgZWxlbXMsXHJcblx0XHRcdGkgPSAwLFxyXG5cdFx0XHRyZXQgPSBbXSxcclxuXHRcdFx0aW5zZXJ0ID0galF1ZXJ5KCBzZWxlY3RvciApLFxyXG5cdFx0XHRsID0gaW5zZXJ0Lmxlbmd0aCxcclxuXHRcdFx0cGFyZW50ID0gdGhpcy5sZW5ndGggPT09IDEgJiYgdGhpc1swXS5wYXJlbnROb2RlO1xyXG5cclxuXHRcdGlmICggKHBhcmVudCA9PSBudWxsIHx8IHBhcmVudCAmJiBwYXJlbnQubm9kZVR5cGUgPT09IDExICYmIHBhcmVudC5jaGlsZE5vZGVzLmxlbmd0aCA9PT0gMSkgJiYgbCA9PT0gMSApIHtcclxuXHRcdFx0aW5zZXJ0WyBvcmlnaW5hbCBdKCB0aGlzWzBdICk7XHJcblx0XHRcdHJldHVybiB0aGlzO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0Zm9yICggOyBpIDwgbDsgaSsrICkge1xyXG5cdFx0XHRcdGVsZW1zID0gKCBpID4gMCA/IHRoaXMuY2xvbmUodHJ1ZSkgOiB0aGlzICkuZ2V0KCk7XHJcblx0XHRcdFx0alF1ZXJ5KCBpbnNlcnRbaV0gKVsgb3JpZ2luYWwgXSggZWxlbXMgKTtcclxuXHRcdFx0XHRyZXQgPSByZXQuY29uY2F0KCBlbGVtcyApO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIHJldCwgbmFtZSwgaW5zZXJ0LnNlbGVjdG9yICk7XHJcblx0XHR9XHJcblx0fTtcclxufSk7XHJcblxyXG5mdW5jdGlvbiBnZXRBbGwoIGVsZW0gKSB7XHJcblx0aWYgKCB0eXBlb2YgZWxlbS5nZXRFbGVtZW50c0J5VGFnTmFtZSAhPT0gXCJ1bmRlZmluZWRcIiApIHtcclxuXHRcdHJldHVybiBlbGVtLmdldEVsZW1lbnRzQnlUYWdOYW1lKCBcIipcIiApO1xyXG5cclxuXHR9IGVsc2UgaWYgKCB0eXBlb2YgZWxlbS5xdWVyeVNlbGVjdG9yQWxsICE9PSBcInVuZGVmaW5lZFwiICkge1xyXG5cdFx0cmV0dXJuIGVsZW0ucXVlcnlTZWxlY3RvckFsbCggXCIqXCIgKTtcclxuXHJcblx0fSBlbHNlIHtcclxuXHRcdHJldHVybiBbXTtcclxuXHR9XHJcbn1cclxuXHJcbi8vIFVzZWQgaW4gY2xlYW4sIGZpeGVzIHRoZSBkZWZhdWx0Q2hlY2tlZCBwcm9wZXJ0eVxyXG5mdW5jdGlvbiBmaXhEZWZhdWx0Q2hlY2tlZCggZWxlbSApIHtcclxuXHRpZiAoIHJjaGVja2FibGVUeXBlLnRlc3QoIGVsZW0udHlwZSApICkge1xyXG5cdFx0ZWxlbS5kZWZhdWx0Q2hlY2tlZCA9IGVsZW0uY2hlY2tlZDtcclxuXHR9XHJcbn1cclxuXHJcbmpRdWVyeS5leHRlbmQoe1xyXG5cdGNsb25lOiBmdW5jdGlvbiggZWxlbSwgZGF0YUFuZEV2ZW50cywgZGVlcERhdGFBbmRFdmVudHMgKSB7XHJcblx0XHR2YXIgc3JjRWxlbWVudHMsXHJcblx0XHRcdGRlc3RFbGVtZW50cyxcclxuXHRcdFx0aSxcclxuXHRcdFx0Y2xvbmU7XHJcblxyXG5cdFx0aWYgKCBqUXVlcnkuc3VwcG9ydC5odG1sNUNsb25lIHx8IGpRdWVyeS5pc1hNTERvYyhlbGVtKSB8fCAhcm5vc2hpbWNhY2hlLnRlc3QoIFwiPFwiICsgZWxlbS5ub2RlTmFtZSArIFwiPlwiICkgKSB7XHJcblx0XHRcdGNsb25lID0gZWxlbS5jbG9uZU5vZGUoIHRydWUgKTtcclxuXHJcblx0XHQvLyBJRTw9OCBkb2VzIG5vdCBwcm9wZXJseSBjbG9uZSBkZXRhY2hlZCwgdW5rbm93biBlbGVtZW50IG5vZGVzXHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRmcmFnbWVudERpdi5pbm5lckhUTUwgPSBlbGVtLm91dGVySFRNTDtcclxuXHRcdFx0ZnJhZ21lbnREaXYucmVtb3ZlQ2hpbGQoIGNsb25lID0gZnJhZ21lbnREaXYuZmlyc3RDaGlsZCApO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICggKCFqUXVlcnkuc3VwcG9ydC5ub0Nsb25lRXZlbnQgfHwgIWpRdWVyeS5zdXBwb3J0Lm5vQ2xvbmVDaGVja2VkKSAmJlxyXG5cdFx0XHRcdChlbGVtLm5vZGVUeXBlID09PSAxIHx8IGVsZW0ubm9kZVR5cGUgPT09IDExKSAmJiAhalF1ZXJ5LmlzWE1MRG9jKGVsZW0pICkge1xyXG5cdFx0XHQvLyBJRSBjb3BpZXMgZXZlbnRzIGJvdW5kIHZpYSBhdHRhY2hFdmVudCB3aGVuIHVzaW5nIGNsb25lTm9kZS5cclxuXHRcdFx0Ly8gQ2FsbGluZyBkZXRhY2hFdmVudCBvbiB0aGUgY2xvbmUgd2lsbCBhbHNvIHJlbW92ZSB0aGUgZXZlbnRzXHJcblx0XHRcdC8vIGZyb20gdGhlIG9yaWdpbmFsLiBJbiBvcmRlciB0byBnZXQgYXJvdW5kIHRoaXMsIHdlIHVzZSBzb21lXHJcblx0XHRcdC8vIHByb3ByaWV0YXJ5IG1ldGhvZHMgdG8gY2xlYXIgdGhlIGV2ZW50cy4gVGhhbmtzIHRvIE1vb1Rvb2xzXHJcblx0XHRcdC8vIGd1eXMgZm9yIHRoaXMgaG90bmVzcy5cclxuXHJcblx0XHRcdGNsb25lRml4QXR0cmlidXRlcyggZWxlbSwgY2xvbmUgKTtcclxuXHJcblx0XHRcdC8vIFVzaW5nIFNpenpsZSBoZXJlIGlzIGNyYXp5IHNsb3csIHNvIHdlIHVzZSBnZXRFbGVtZW50c0J5VGFnTmFtZSBpbnN0ZWFkXHJcblx0XHRcdHNyY0VsZW1lbnRzID0gZ2V0QWxsKCBlbGVtICk7XHJcblx0XHRcdGRlc3RFbGVtZW50cyA9IGdldEFsbCggY2xvbmUgKTtcclxuXHJcblx0XHRcdC8vIFdlaXJkIGl0ZXJhdGlvbiBiZWNhdXNlIElFIHdpbGwgcmVwbGFjZSB0aGUgbGVuZ3RoIHByb3BlcnR5XHJcblx0XHRcdC8vIHdpdGggYW4gZWxlbWVudCBpZiB5b3UgYXJlIGNsb25pbmcgdGhlIGJvZHkgYW5kIG9uZSBvZiB0aGVcclxuXHRcdFx0Ly8gZWxlbWVudHMgb24gdGhlIHBhZ2UgaGFzIGEgbmFtZSBvciBpZCBvZiBcImxlbmd0aFwiXHJcblx0XHRcdGZvciAoIGkgPSAwOyBzcmNFbGVtZW50c1tpXTsgKytpICkge1xyXG5cdFx0XHRcdC8vIEVuc3VyZSB0aGF0IHRoZSBkZXN0aW5hdGlvbiBub2RlIGlzIG5vdCBudWxsOyBGaXhlcyAjOTU4N1xyXG5cdFx0XHRcdGlmICggZGVzdEVsZW1lbnRzW2ldICkge1xyXG5cdFx0XHRcdFx0Y2xvbmVGaXhBdHRyaWJ1dGVzKCBzcmNFbGVtZW50c1tpXSwgZGVzdEVsZW1lbnRzW2ldICk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gQ29weSB0aGUgZXZlbnRzIGZyb20gdGhlIG9yaWdpbmFsIHRvIHRoZSBjbG9uZVxyXG5cdFx0aWYgKCBkYXRhQW5kRXZlbnRzICkge1xyXG5cdFx0XHRjbG9uZUNvcHlFdmVudCggZWxlbSwgY2xvbmUgKTtcclxuXHJcblx0XHRcdGlmICggZGVlcERhdGFBbmRFdmVudHMgKSB7XHJcblx0XHRcdFx0c3JjRWxlbWVudHMgPSBnZXRBbGwoIGVsZW0gKTtcclxuXHRcdFx0XHRkZXN0RWxlbWVudHMgPSBnZXRBbGwoIGNsb25lICk7XHJcblxyXG5cdFx0XHRcdGZvciAoIGkgPSAwOyBzcmNFbGVtZW50c1tpXTsgKytpICkge1xyXG5cdFx0XHRcdFx0Y2xvbmVDb3B5RXZlbnQoIHNyY0VsZW1lbnRzW2ldLCBkZXN0RWxlbWVudHNbaV0gKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRzcmNFbGVtZW50cyA9IGRlc3RFbGVtZW50cyA9IG51bGw7XHJcblxyXG5cdFx0Ly8gUmV0dXJuIHRoZSBjbG9uZWQgc2V0XHJcblx0XHRyZXR1cm4gY2xvbmU7XHJcblx0fSxcclxuXHJcblx0Y2xlYW46IGZ1bmN0aW9uKCBlbGVtcywgY29udGV4dCwgZnJhZ21lbnQsIHNjcmlwdHMgKSB7XHJcblx0XHR2YXIgaSwgaiwgZWxlbSwgdGFnLCB3cmFwLCBkZXB0aCwgZGl2LCBoYXNCb2R5LCB0Ym9keSwgbGVuLCBoYW5kbGVTY3JpcHQsIGpzVGFncyxcclxuXHRcdFx0c2FmZSA9IGNvbnRleHQgPT09IGRvY3VtZW50ICYmIHNhZmVGcmFnbWVudCxcclxuXHRcdFx0cmV0ID0gW107XHJcblxyXG5cdFx0Ly8gRW5zdXJlIHRoYXQgY29udGV4dCBpcyBhIGRvY3VtZW50XHJcblx0XHRpZiAoICFjb250ZXh0IHx8IHR5cGVvZiBjb250ZXh0LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQgPT09IFwidW5kZWZpbmVkXCIgKSB7XHJcblx0XHRcdGNvbnRleHQgPSBkb2N1bWVudDtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBVc2UgdGhlIGFscmVhZHktY3JlYXRlZCBzYWZlIGZyYWdtZW50IGlmIGNvbnRleHQgcGVybWl0c1xyXG5cdFx0Zm9yICggaSA9IDA7IChlbGVtID0gZWxlbXNbaV0pICE9IG51bGw7IGkrKyApIHtcclxuXHRcdFx0aWYgKCB0eXBlb2YgZWxlbSA9PT0gXCJudW1iZXJcIiApIHtcclxuXHRcdFx0XHRlbGVtICs9IFwiXCI7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGlmICggIWVsZW0gKSB7XHJcblx0XHRcdFx0Y29udGludWU7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8vIENvbnZlcnQgaHRtbCBzdHJpbmcgaW50byBET00gbm9kZXNcclxuXHRcdFx0aWYgKCB0eXBlb2YgZWxlbSA9PT0gXCJzdHJpbmdcIiApIHtcclxuXHRcdFx0XHRpZiAoICFyaHRtbC50ZXN0KCBlbGVtICkgKSB7XHJcblx0XHRcdFx0XHRlbGVtID0gY29udGV4dC5jcmVhdGVUZXh0Tm9kZSggZWxlbSApO1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHQvLyBFbnN1cmUgYSBzYWZlIGNvbnRhaW5lciBpbiB3aGljaCB0byByZW5kZXIgdGhlIGh0bWxcclxuXHRcdFx0XHRcdHNhZmUgPSBzYWZlIHx8IGNyZWF0ZVNhZmVGcmFnbWVudCggY29udGV4dCApO1xyXG5cdFx0XHRcdFx0ZGl2ID0gY29udGV4dC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xyXG5cdFx0XHRcdFx0c2FmZS5hcHBlbmRDaGlsZCggZGl2ICk7XHJcblxyXG5cdFx0XHRcdFx0Ly8gRml4IFwiWEhUTUxcIi1zdHlsZSB0YWdzIGluIGFsbCBicm93c2Vyc1xyXG5cdFx0XHRcdFx0ZWxlbSA9IGVsZW0ucmVwbGFjZShyeGh0bWxUYWcsIFwiPCQxPjwvJDI+XCIpO1xyXG5cclxuXHRcdFx0XHRcdC8vIEdvIHRvIGh0bWwgYW5kIGJhY2ssIHRoZW4gcGVlbCBvZmYgZXh0cmEgd3JhcHBlcnNcclxuXHRcdFx0XHRcdHRhZyA9ICggcnRhZ05hbWUuZXhlYyggZWxlbSApIHx8IFtcIlwiLCBcIlwiXSApWzFdLnRvTG93ZXJDYXNlKCk7XHJcblx0XHRcdFx0XHR3cmFwID0gd3JhcE1hcFsgdGFnIF0gfHwgd3JhcE1hcC5fZGVmYXVsdDtcclxuXHRcdFx0XHRcdGRlcHRoID0gd3JhcFswXTtcclxuXHRcdFx0XHRcdGRpdi5pbm5lckhUTUwgPSB3cmFwWzFdICsgZWxlbSArIHdyYXBbMl07XHJcblxyXG5cdFx0XHRcdFx0Ly8gTW92ZSB0byB0aGUgcmlnaHQgZGVwdGhcclxuXHRcdFx0XHRcdHdoaWxlICggZGVwdGgtLSApIHtcclxuXHRcdFx0XHRcdFx0ZGl2ID0gZGl2Lmxhc3RDaGlsZDtcclxuXHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHQvLyBSZW1vdmUgSUUncyBhdXRvaW5zZXJ0ZWQgPHRib2R5PiBmcm9tIHRhYmxlIGZyYWdtZW50c1xyXG5cdFx0XHRcdFx0aWYgKCAhalF1ZXJ5LnN1cHBvcnQudGJvZHkgKSB7XHJcblxyXG5cdFx0XHRcdFx0XHQvLyBTdHJpbmcgd2FzIGEgPHRhYmxlPiwgKm1heSogaGF2ZSBzcHVyaW91cyA8dGJvZHk+XHJcblx0XHRcdFx0XHRcdGhhc0JvZHkgPSBydGJvZHkudGVzdChlbGVtKTtcclxuXHRcdFx0XHRcdFx0XHR0Ym9keSA9IHRhZyA9PT0gXCJ0YWJsZVwiICYmICFoYXNCb2R5ID9cclxuXHRcdFx0XHRcdFx0XHRcdGRpdi5maXJzdENoaWxkICYmIGRpdi5maXJzdENoaWxkLmNoaWxkTm9kZXMgOlxyXG5cclxuXHRcdFx0XHRcdFx0XHRcdC8vIFN0cmluZyB3YXMgYSBiYXJlIDx0aGVhZD4gb3IgPHRmb290PlxyXG5cdFx0XHRcdFx0XHRcdFx0d3JhcFsxXSA9PT0gXCI8dGFibGU+XCIgJiYgIWhhc0JvZHkgP1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRkaXYuY2hpbGROb2RlcyA6XHJcblx0XHRcdFx0XHRcdFx0XHRcdFtdO1xyXG5cclxuXHRcdFx0XHRcdFx0Zm9yICggaiA9IHRib2R5Lmxlbmd0aCAtIDE7IGogPj0gMCA7IC0taiApIHtcclxuXHRcdFx0XHRcdFx0XHRpZiAoIGpRdWVyeS5ub2RlTmFtZSggdGJvZHlbIGogXSwgXCJ0Ym9keVwiICkgJiYgIXRib2R5WyBqIF0uY2hpbGROb2Rlcy5sZW5ndGggKSB7XHJcblx0XHRcdFx0XHRcdFx0XHR0Ym9keVsgaiBdLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIHRib2R5WyBqIF0gKTtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHQvLyBJRSBjb21wbGV0ZWx5IGtpbGxzIGxlYWRpbmcgd2hpdGVzcGFjZSB3aGVuIGlubmVySFRNTCBpcyB1c2VkXHJcblx0XHRcdFx0XHRpZiAoICFqUXVlcnkuc3VwcG9ydC5sZWFkaW5nV2hpdGVzcGFjZSAmJiBybGVhZGluZ1doaXRlc3BhY2UudGVzdCggZWxlbSApICkge1xyXG5cdFx0XHRcdFx0XHRkaXYuaW5zZXJ0QmVmb3JlKCBjb250ZXh0LmNyZWF0ZVRleHROb2RlKCBybGVhZGluZ1doaXRlc3BhY2UuZXhlYyhlbGVtKVswXSApLCBkaXYuZmlyc3RDaGlsZCApO1xyXG5cdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdGVsZW0gPSBkaXYuY2hpbGROb2RlcztcclxuXHJcblx0XHRcdFx0XHQvLyBUYWtlIG91dCBvZiBmcmFnbWVudCBjb250YWluZXIgKHdlIG5lZWQgYSBmcmVzaCBkaXYgZWFjaCB0aW1lKVxyXG5cdFx0XHRcdFx0ZGl2LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIGRpdiApO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlICkge1xyXG5cdFx0XHRcdHJldC5wdXNoKCBlbGVtICk7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0alF1ZXJ5Lm1lcmdlKCByZXQsIGVsZW0gKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdC8vIEZpeCAjMTEzNTY6IENsZWFyIGVsZW1lbnRzIGZyb20gc2FmZUZyYWdtZW50XHJcblx0XHRpZiAoIGRpdiApIHtcclxuXHRcdFx0ZWxlbSA9IGRpdiA9IHNhZmUgPSBudWxsO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIFJlc2V0IGRlZmF1bHRDaGVja2VkIGZvciBhbnkgcmFkaW9zIGFuZCBjaGVja2JveGVzXHJcblx0XHQvLyBhYm91dCB0byBiZSBhcHBlbmRlZCB0byB0aGUgRE9NIGluIElFIDYvNyAoIzgwNjApXHJcblx0XHRpZiAoICFqUXVlcnkuc3VwcG9ydC5hcHBlbmRDaGVja2VkICkge1xyXG5cdFx0XHRmb3IgKCBpID0gMDsgKGVsZW0gPSByZXRbaV0pICE9IG51bGw7IGkrKyApIHtcclxuXHRcdFx0XHRpZiAoIGpRdWVyeS5ub2RlTmFtZSggZWxlbSwgXCJpbnB1dFwiICkgKSB7XHJcblx0XHRcdFx0XHRmaXhEZWZhdWx0Q2hlY2tlZCggZWxlbSApO1xyXG5cdFx0XHRcdH0gZWxzZSBpZiAoIHR5cGVvZiBlbGVtLmdldEVsZW1lbnRzQnlUYWdOYW1lICE9PSBcInVuZGVmaW5lZFwiICkge1xyXG5cdFx0XHRcdFx0alF1ZXJ5LmdyZXAoIGVsZW0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJpbnB1dFwiKSwgZml4RGVmYXVsdENoZWNrZWQgKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHQvLyBBcHBlbmQgZWxlbWVudHMgdG8gYSBwcm92aWRlZCBkb2N1bWVudCBmcmFnbWVudFxyXG5cdFx0aWYgKCBmcmFnbWVudCApIHtcclxuXHRcdFx0Ly8gU3BlY2lhbCBoYW5kbGluZyBvZiBlYWNoIHNjcmlwdCBlbGVtZW50XHJcblx0XHRcdGhhbmRsZVNjcmlwdCA9IGZ1bmN0aW9uKCBlbGVtICkge1xyXG5cdFx0XHRcdC8vIENoZWNrIGlmIHdlIGNvbnNpZGVyIGl0IGV4ZWN1dGFibGVcclxuXHRcdFx0XHRpZiAoICFlbGVtLnR5cGUgfHwgcnNjcmlwdFR5cGUudGVzdCggZWxlbS50eXBlICkgKSB7XHJcblx0XHRcdFx0XHQvLyBEZXRhY2ggdGhlIHNjcmlwdCBhbmQgc3RvcmUgaXQgaW4gdGhlIHNjcmlwdHMgYXJyYXkgKGlmIHByb3ZpZGVkKSBvciB0aGUgZnJhZ21lbnRcclxuXHRcdFx0XHRcdC8vIFJldHVybiB0cnV0aHkgdG8gaW5kaWNhdGUgdGhhdCBpdCBoYXMgYmVlbiBoYW5kbGVkXHJcblx0XHRcdFx0XHRyZXR1cm4gc2NyaXB0cyA/XHJcblx0XHRcdFx0XHRcdHNjcmlwdHMucHVzaCggZWxlbS5wYXJlbnROb2RlID8gZWxlbS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKCBlbGVtICkgOiBlbGVtICkgOlxyXG5cdFx0XHRcdFx0XHRmcmFnbWVudC5hcHBlbmRDaGlsZCggZWxlbSApO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fTtcclxuXHJcblx0XHRcdGZvciAoIGkgPSAwOyAoZWxlbSA9IHJldFtpXSkgIT0gbnVsbDsgaSsrICkge1xyXG5cdFx0XHRcdC8vIENoZWNrIGlmIHdlJ3JlIGRvbmUgYWZ0ZXIgaGFuZGxpbmcgYW4gZXhlY3V0YWJsZSBzY3JpcHRcclxuXHRcdFx0XHRpZiAoICEoIGpRdWVyeS5ub2RlTmFtZSggZWxlbSwgXCJzY3JpcHRcIiApICYmIGhhbmRsZVNjcmlwdCggZWxlbSApICkgKSB7XHJcblx0XHRcdFx0XHQvLyBBcHBlbmQgdG8gZnJhZ21lbnQgYW5kIGhhbmRsZSBlbWJlZGRlZCBzY3JpcHRzXHJcblx0XHRcdFx0XHRmcmFnbWVudC5hcHBlbmRDaGlsZCggZWxlbSApO1xyXG5cdFx0XHRcdFx0aWYgKCB0eXBlb2YgZWxlbS5nZXRFbGVtZW50c0J5VGFnTmFtZSAhPT0gXCJ1bmRlZmluZWRcIiApIHtcclxuXHRcdFx0XHRcdFx0Ly8gaGFuZGxlU2NyaXB0IGFsdGVycyB0aGUgRE9NLCBzbyB1c2UgalF1ZXJ5Lm1lcmdlIHRvIGVuc3VyZSBzbmFwc2hvdCBpdGVyYXRpb25cclxuXHRcdFx0XHRcdFx0anNUYWdzID0galF1ZXJ5LmdyZXAoIGpRdWVyeS5tZXJnZSggW10sIGVsZW0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJzY3JpcHRcIikgKSwgaGFuZGxlU2NyaXB0ICk7XHJcblxyXG5cdFx0XHRcdFx0XHQvLyBTcGxpY2UgdGhlIHNjcmlwdHMgaW50byByZXQgYWZ0ZXIgdGhlaXIgZm9ybWVyIGFuY2VzdG9yIGFuZCBhZHZhbmNlIG91ciBpbmRleCBiZXlvbmQgdGhlbVxyXG5cdFx0XHRcdFx0XHRyZXQuc3BsaWNlLmFwcGx5KCByZXQsIFtpICsgMSwgMF0uY29uY2F0KCBqc1RhZ3MgKSApO1xyXG5cdFx0XHRcdFx0XHRpICs9IGpzVGFncy5sZW5ndGg7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIHJldDtcclxuXHR9LFxyXG5cclxuXHRjbGVhbkRhdGE6IGZ1bmN0aW9uKCBlbGVtcywgLyogaW50ZXJuYWwgKi8gYWNjZXB0RGF0YSApIHtcclxuXHRcdHZhciBkYXRhLCBpZCwgZWxlbSwgdHlwZSxcclxuXHRcdFx0aSA9IDAsXHJcblx0XHRcdGludGVybmFsS2V5ID0galF1ZXJ5LmV4cGFuZG8sXHJcblx0XHRcdGNhY2hlID0galF1ZXJ5LmNhY2hlLFxyXG5cdFx0XHRkZWxldGVFeHBhbmRvID0galF1ZXJ5LnN1cHBvcnQuZGVsZXRlRXhwYW5kbyxcclxuXHRcdFx0c3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsO1xyXG5cclxuXHRcdGZvciAoIDsgKGVsZW0gPSBlbGVtc1tpXSkgIT0gbnVsbDsgaSsrICkge1xyXG5cclxuXHRcdFx0aWYgKCBhY2NlcHREYXRhIHx8IGpRdWVyeS5hY2NlcHREYXRhKCBlbGVtICkgKSB7XHJcblxyXG5cdFx0XHRcdGlkID0gZWxlbVsgaW50ZXJuYWxLZXkgXTtcclxuXHRcdFx0XHRkYXRhID0gaWQgJiYgY2FjaGVbIGlkIF07XHJcblxyXG5cdFx0XHRcdGlmICggZGF0YSApIHtcclxuXHRcdFx0XHRcdGlmICggZGF0YS5ldmVudHMgKSB7XHJcblx0XHRcdFx0XHRcdGZvciAoIHR5cGUgaW4gZGF0YS5ldmVudHMgKSB7XHJcblx0XHRcdFx0XHRcdFx0aWYgKCBzcGVjaWFsWyB0eXBlIF0gKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRqUXVlcnkuZXZlbnQucmVtb3ZlKCBlbGVtLCB0eXBlICk7XHJcblxyXG5cdFx0XHRcdFx0XHRcdC8vIFRoaXMgaXMgYSBzaG9ydGN1dCB0byBhdm9pZCBqUXVlcnkuZXZlbnQucmVtb3ZlJ3Mgb3ZlcmhlYWRcclxuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdFx0alF1ZXJ5LnJlbW92ZUV2ZW50KCBlbGVtLCB0eXBlLCBkYXRhLmhhbmRsZSApO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdC8vIFJlbW92ZSBjYWNoZSBvbmx5IGlmIGl0IHdhcyBub3QgYWxyZWFkeSByZW1vdmVkIGJ5IGpRdWVyeS5ldmVudC5yZW1vdmVcclxuXHRcdFx0XHRcdGlmICggY2FjaGVbIGlkIF0gKSB7XHJcblxyXG5cdFx0XHRcdFx0XHRkZWxldGUgY2FjaGVbIGlkIF07XHJcblxyXG5cdFx0XHRcdFx0XHQvLyBJRSBkb2VzIG5vdCBhbGxvdyB1cyB0byBkZWxldGUgZXhwYW5kbyBwcm9wZXJ0aWVzIGZyb20gbm9kZXMsXHJcblx0XHRcdFx0XHRcdC8vIG5vciBkb2VzIGl0IGhhdmUgYSByZW1vdmVBdHRyaWJ1dGUgZnVuY3Rpb24gb24gRG9jdW1lbnQgbm9kZXM7XHJcblx0XHRcdFx0XHRcdC8vIHdlIG11c3QgaGFuZGxlIGFsbCBvZiB0aGVzZSBjYXNlc1xyXG5cdFx0XHRcdFx0XHRpZiAoIGRlbGV0ZUV4cGFuZG8gKSB7XHJcblx0XHRcdFx0XHRcdFx0ZGVsZXRlIGVsZW1bIGludGVybmFsS2V5IF07XHJcblxyXG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKCBlbGVtLnJlbW92ZUF0dHJpYnV0ZSApIHtcclxuXHRcdFx0XHRcdFx0XHRlbGVtLnJlbW92ZUF0dHJpYnV0ZSggaW50ZXJuYWxLZXkgKTtcclxuXHJcblx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0ZWxlbVsgaW50ZXJuYWxLZXkgXSA9IG51bGw7XHJcblx0XHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRcdGpRdWVyeS5kZWxldGVkSWRzLnB1c2goIGlkICk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG59KTtcclxuLy8gTGltaXQgc2NvcGUgcG9sbHV0aW9uIGZyb20gYW55IGRlcHJlY2F0ZWQgQVBJXHJcbihmdW5jdGlvbigpIHtcclxuXHJcbnZhciBtYXRjaGVkLCBicm93c2VyO1xyXG5cclxuLy8gVXNlIG9mIGpRdWVyeS5icm93c2VyIGlzIGZyb3duZWQgdXBvbi5cclxuLy8gTW9yZSBkZXRhaWxzOiBodHRwOi8vYXBpLmpxdWVyeS5jb20valF1ZXJ5LmJyb3dzZXJcclxuLy8galF1ZXJ5LnVhTWF0Y2ggbWFpbnRhaW5lZCBmb3IgYmFjay1jb21wYXRcclxualF1ZXJ5LnVhTWF0Y2ggPSBmdW5jdGlvbiggdWEgKSB7XHJcblx0dWEgPSB1YS50b0xvd2VyQ2FzZSgpO1xyXG5cclxuXHR2YXIgbWF0Y2ggPSAvKGNocm9tZSlbIFxcL10oW1xcdy5dKykvLmV4ZWMoIHVhICkgfHxcclxuXHRcdC8od2Via2l0KVsgXFwvXShbXFx3Ll0rKS8uZXhlYyggdWEgKSB8fFxyXG5cdFx0LyhvcGVyYSkoPzouKnZlcnNpb258KVsgXFwvXShbXFx3Ll0rKS8uZXhlYyggdWEgKSB8fFxyXG5cdFx0Lyhtc2llKSAoW1xcdy5dKykvLmV4ZWMoIHVhICkgfHxcclxuXHRcdHVhLmluZGV4T2YoXCJjb21wYXRpYmxlXCIpIDwgMCAmJiAvKG1vemlsbGEpKD86Lio/IHJ2OihbXFx3Ll0rKXwpLy5leGVjKCB1YSApIHx8XHJcblx0XHRbXTtcclxuXHJcblx0cmV0dXJuIHtcclxuXHRcdGJyb3dzZXI6IG1hdGNoWyAxIF0gfHwgXCJcIixcclxuXHRcdHZlcnNpb246IG1hdGNoWyAyIF0gfHwgXCIwXCJcclxuXHR9O1xyXG59O1xyXG5cclxubWF0Y2hlZCA9IGpRdWVyeS51YU1hdGNoKCBuYXZpZ2F0b3IudXNlckFnZW50ICk7XHJcbmJyb3dzZXIgPSB7fTtcclxuXHJcbmlmICggbWF0Y2hlZC5icm93c2VyICkge1xyXG5cdGJyb3dzZXJbIG1hdGNoZWQuYnJvd3NlciBdID0gdHJ1ZTtcclxuXHRicm93c2VyLnZlcnNpb24gPSBtYXRjaGVkLnZlcnNpb247XHJcbn1cclxuXHJcbi8vIENocm9tZSBpcyBXZWJraXQsIGJ1dCBXZWJraXQgaXMgYWxzbyBTYWZhcmkuXHJcbmlmICggYnJvd3Nlci5jaHJvbWUgKSB7XHJcblx0YnJvd3Nlci53ZWJraXQgPSB0cnVlO1xyXG59IGVsc2UgaWYgKCBicm93c2VyLndlYmtpdCApIHtcclxuXHRicm93c2VyLnNhZmFyaSA9IHRydWU7XHJcbn1cclxuXHJcbmpRdWVyeS5icm93c2VyID0gYnJvd3NlcjtcclxuXHJcbmpRdWVyeS5zdWIgPSBmdW5jdGlvbigpIHtcclxuXHRmdW5jdGlvbiBqUXVlcnlTdWIoIHNlbGVjdG9yLCBjb250ZXh0ICkge1xyXG5cdFx0cmV0dXJuIG5ldyBqUXVlcnlTdWIuZm4uaW5pdCggc2VsZWN0b3IsIGNvbnRleHQgKTtcclxuXHR9XHJcblx0alF1ZXJ5LmV4dGVuZCggdHJ1ZSwgalF1ZXJ5U3ViLCB0aGlzICk7XHJcblx0alF1ZXJ5U3ViLnN1cGVyY2xhc3MgPSB0aGlzO1xyXG5cdGpRdWVyeVN1Yi5mbiA9IGpRdWVyeVN1Yi5wcm90b3R5cGUgPSB0aGlzKCk7XHJcblx0alF1ZXJ5U3ViLmZuLmNvbnN0cnVjdG9yID0galF1ZXJ5U3ViO1xyXG5cdGpRdWVyeVN1Yi5zdWIgPSB0aGlzLnN1YjtcclxuXHRqUXVlcnlTdWIuZm4uaW5pdCA9IGZ1bmN0aW9uIGluaXQoIHNlbGVjdG9yLCBjb250ZXh0ICkge1xyXG5cdFx0aWYgKCBjb250ZXh0ICYmIGNvbnRleHQgaW5zdGFuY2VvZiBqUXVlcnkgJiYgIShjb250ZXh0IGluc3RhbmNlb2YgalF1ZXJ5U3ViKSApIHtcclxuXHRcdFx0Y29udGV4dCA9IGpRdWVyeVN1YiggY29udGV4dCApO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiBqUXVlcnkuZm4uaW5pdC5jYWxsKCB0aGlzLCBzZWxlY3RvciwgY29udGV4dCwgcm9vdGpRdWVyeVN1YiApO1xyXG5cdH07XHJcblx0alF1ZXJ5U3ViLmZuLmluaXQucHJvdG90eXBlID0galF1ZXJ5U3ViLmZuO1xyXG5cdHZhciByb290alF1ZXJ5U3ViID0galF1ZXJ5U3ViKGRvY3VtZW50KTtcclxuXHRyZXR1cm4galF1ZXJ5U3ViO1xyXG59O1xyXG5cclxufSkoKTtcclxudmFyIGN1ckNTUywgaWZyYW1lLCBpZnJhbWVEb2MsXHJcblx0cmFscGhhID0gL2FscGhhXFwoW14pXSpcXCkvaSxcclxuXHRyb3BhY2l0eSA9IC9vcGFjaXR5PShbXildKikvLFxyXG5cdHJwb3NpdGlvbiA9IC9eKHRvcHxyaWdodHxib3R0b218bGVmdCkkLyxcclxuXHQvLyBzd2FwcGFibGUgaWYgZGlzcGxheSBpcyBub25lIG9yIHN0YXJ0cyB3aXRoIHRhYmxlIGV4Y2VwdCBcInRhYmxlXCIsIFwidGFibGUtY2VsbFwiLCBvciBcInRhYmxlLWNhcHRpb25cIlxyXG5cdC8vIHNlZSBoZXJlIGZvciBkaXNwbGF5IHZhbHVlczogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9DU1MvZGlzcGxheVxyXG5cdHJkaXNwbGF5c3dhcCA9IC9eKG5vbmV8dGFibGUoPyEtY1tlYV0pLispLyxcclxuXHRybWFyZ2luID0gL15tYXJnaW4vLFxyXG5cdHJudW1zcGxpdCA9IG5ldyBSZWdFeHAoIFwiXihcIiArIGNvcmVfcG51bSArIFwiKSguKikkXCIsIFwiaVwiICksXHJcblx0cm51bW5vbnB4ID0gbmV3IFJlZ0V4cCggXCJeKFwiICsgY29yZV9wbnVtICsgXCIpKD8hcHgpW2EteiVdKyRcIiwgXCJpXCIgKSxcclxuXHRycmVsTnVtID0gbmV3IFJlZ0V4cCggXCJeKFstK10pPShcIiArIGNvcmVfcG51bSArIFwiKVwiLCBcImlcIiApLFxyXG5cdGVsZW1kaXNwbGF5ID0ge30sXHJcblxyXG5cdGNzc1Nob3cgPSB7IHBvc2l0aW9uOiBcImFic29sdXRlXCIsIHZpc2liaWxpdHk6IFwiaGlkZGVuXCIsIGRpc3BsYXk6IFwiYmxvY2tcIiB9LFxyXG5cdGNzc05vcm1hbFRyYW5zZm9ybSA9IHtcclxuXHRcdGxldHRlclNwYWNpbmc6IDAsXHJcblx0XHRmb250V2VpZ2h0OiA0MDBcclxuXHR9LFxyXG5cclxuXHRjc3NFeHBhbmQgPSBbIFwiVG9wXCIsIFwiUmlnaHRcIiwgXCJCb3R0b21cIiwgXCJMZWZ0XCIgXSxcclxuXHRjc3NQcmVmaXhlcyA9IFsgXCJXZWJraXRcIiwgXCJPXCIsIFwiTW96XCIsIFwibXNcIiBdLFxyXG5cclxuXHRldmVudHNUb2dnbGUgPSBqUXVlcnkuZm4udG9nZ2xlO1xyXG5cclxuLy8gcmV0dXJuIGEgY3NzIHByb3BlcnR5IG1hcHBlZCB0byBhIHBvdGVudGlhbGx5IHZlbmRvciBwcmVmaXhlZCBwcm9wZXJ0eVxyXG5mdW5jdGlvbiB2ZW5kb3JQcm9wTmFtZSggc3R5bGUsIG5hbWUgKSB7XHJcblxyXG5cdC8vIHNob3J0Y3V0IGZvciBuYW1lcyB0aGF0IGFyZSBub3QgdmVuZG9yIHByZWZpeGVkXHJcblx0aWYgKCBuYW1lIGluIHN0eWxlICkge1xyXG5cdFx0cmV0dXJuIG5hbWU7XHJcblx0fVxyXG5cclxuXHQvLyBjaGVjayBmb3IgdmVuZG9yIHByZWZpeGVkIG5hbWVzXHJcblx0dmFyIGNhcE5hbWUgPSBuYW1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgbmFtZS5zbGljZSgxKSxcclxuXHRcdG9yaWdOYW1lID0gbmFtZSxcclxuXHRcdGkgPSBjc3NQcmVmaXhlcy5sZW5ndGg7XHJcblxyXG5cdHdoaWxlICggaS0tICkge1xyXG5cdFx0bmFtZSA9IGNzc1ByZWZpeGVzWyBpIF0gKyBjYXBOYW1lO1xyXG5cdFx0aWYgKCBuYW1lIGluIHN0eWxlICkge1xyXG5cdFx0XHRyZXR1cm4gbmFtZTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHJldHVybiBvcmlnTmFtZTtcclxufVxyXG5cclxuZnVuY3Rpb24gaXNIaWRkZW4oIGVsZW0sIGVsICkge1xyXG5cdGVsZW0gPSBlbCB8fCBlbGVtO1xyXG5cdHJldHVybiBqUXVlcnkuY3NzKCBlbGVtLCBcImRpc3BsYXlcIiApID09PSBcIm5vbmVcIiB8fCAhalF1ZXJ5LmNvbnRhaW5zKCBlbGVtLm93bmVyRG9jdW1lbnQsIGVsZW0gKTtcclxufVxyXG5cclxuZnVuY3Rpb24gc2hvd0hpZGUoIGVsZW1lbnRzLCBzaG93ICkge1xyXG5cdHZhciBlbGVtLCBkaXNwbGF5LFxyXG5cdFx0dmFsdWVzID0gW10sXHJcblx0XHRpbmRleCA9IDAsXHJcblx0XHRsZW5ndGggPSBlbGVtZW50cy5sZW5ndGg7XHJcblxyXG5cdGZvciAoIDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7XHJcblx0XHRlbGVtID0gZWxlbWVudHNbIGluZGV4IF07XHJcblx0XHRpZiAoICFlbGVtLnN0eWxlICkge1xyXG5cdFx0XHRjb250aW51ZTtcclxuXHRcdH1cclxuXHRcdHZhbHVlc1sgaW5kZXggXSA9IGpRdWVyeS5fZGF0YSggZWxlbSwgXCJvbGRkaXNwbGF5XCIgKTtcclxuXHRcdGlmICggc2hvdyApIHtcclxuXHRcdFx0Ly8gUmVzZXQgdGhlIGlubGluZSBkaXNwbGF5IG9mIHRoaXMgZWxlbWVudCB0byBsZWFybiBpZiBpdCBpc1xyXG5cdFx0XHQvLyBiZWluZyBoaWRkZW4gYnkgY2FzY2FkZWQgcnVsZXMgb3Igbm90XHJcblx0XHRcdGlmICggIXZhbHVlc1sgaW5kZXggXSAmJiBlbGVtLnN0eWxlLmRpc3BsYXkgPT09IFwibm9uZVwiICkge1xyXG5cdFx0XHRcdGVsZW0uc3R5bGUuZGlzcGxheSA9IFwiXCI7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8vIFNldCBlbGVtZW50cyB3aGljaCBoYXZlIGJlZW4gb3ZlcnJpZGRlbiB3aXRoIGRpc3BsYXk6IG5vbmVcclxuXHRcdFx0Ly8gaW4gYSBzdHlsZXNoZWV0IHRvIHdoYXRldmVyIHRoZSBkZWZhdWx0IGJyb3dzZXIgc3R5bGUgaXNcclxuXHRcdFx0Ly8gZm9yIHN1Y2ggYW4gZWxlbWVudFxyXG5cdFx0XHRpZiAoIGVsZW0uc3R5bGUuZGlzcGxheSA9PT0gXCJcIiAmJiBpc0hpZGRlbiggZWxlbSApICkge1xyXG5cdFx0XHRcdHZhbHVlc1sgaW5kZXggXSA9IGpRdWVyeS5fZGF0YSggZWxlbSwgXCJvbGRkaXNwbGF5XCIsIGNzc19kZWZhdWx0RGlzcGxheShlbGVtLm5vZGVOYW1lKSApO1xyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRkaXNwbGF5ID0gY3VyQ1NTKCBlbGVtLCBcImRpc3BsYXlcIiApO1xyXG5cclxuXHRcdFx0aWYgKCAhdmFsdWVzWyBpbmRleCBdICYmIGRpc3BsYXkgIT09IFwibm9uZVwiICkge1xyXG5cdFx0XHRcdGpRdWVyeS5fZGF0YSggZWxlbSwgXCJvbGRkaXNwbGF5XCIsIGRpc3BsYXkgKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Ly8gU2V0IHRoZSBkaXNwbGF5IG9mIG1vc3Qgb2YgdGhlIGVsZW1lbnRzIGluIGEgc2Vjb25kIGxvb3BcclxuXHQvLyB0byBhdm9pZCB0aGUgY29uc3RhbnQgcmVmbG93XHJcblx0Zm9yICggaW5kZXggPSAwOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHtcclxuXHRcdGVsZW0gPSBlbGVtZW50c1sgaW5kZXggXTtcclxuXHRcdGlmICggIWVsZW0uc3R5bGUgKSB7XHJcblx0XHRcdGNvbnRpbnVlO1xyXG5cdFx0fVxyXG5cdFx0aWYgKCAhc2hvdyB8fCBlbGVtLnN0eWxlLmRpc3BsYXkgPT09IFwibm9uZVwiIHx8IGVsZW0uc3R5bGUuZGlzcGxheSA9PT0gXCJcIiApIHtcclxuXHRcdFx0ZWxlbS5zdHlsZS5kaXNwbGF5ID0gc2hvdyA/IHZhbHVlc1sgaW5kZXggXSB8fCBcIlwiIDogXCJub25lXCI7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRyZXR1cm4gZWxlbWVudHM7XHJcbn1cclxuXHJcbmpRdWVyeS5mbi5leHRlbmQoe1xyXG5cdGNzczogZnVuY3Rpb24oIG5hbWUsIHZhbHVlICkge1xyXG5cdFx0cmV0dXJuIGpRdWVyeS5hY2Nlc3MoIHRoaXMsIGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCB2YWx1ZSApIHtcclxuXHRcdFx0cmV0dXJuIHZhbHVlICE9PSB1bmRlZmluZWQgP1xyXG5cdFx0XHRcdGpRdWVyeS5zdHlsZSggZWxlbSwgbmFtZSwgdmFsdWUgKSA6XHJcblx0XHRcdFx0alF1ZXJ5LmNzcyggZWxlbSwgbmFtZSApO1xyXG5cdFx0fSwgbmFtZSwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggPiAxICk7XHJcblx0fSxcclxuXHRzaG93OiBmdW5jdGlvbigpIHtcclxuXHRcdHJldHVybiBzaG93SGlkZSggdGhpcywgdHJ1ZSApO1xyXG5cdH0sXHJcblx0aGlkZTogZnVuY3Rpb24oKSB7XHJcblx0XHRyZXR1cm4gc2hvd0hpZGUoIHRoaXMgKTtcclxuXHR9LFxyXG5cdHRvZ2dsZTogZnVuY3Rpb24oIHN0YXRlLCBmbjIgKSB7XHJcblx0XHR2YXIgYm9vbCA9IHR5cGVvZiBzdGF0ZSA9PT0gXCJib29sZWFuXCI7XHJcblxyXG5cdFx0aWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggc3RhdGUgKSAmJiBqUXVlcnkuaXNGdW5jdGlvbiggZm4yICkgKSB7XHJcblx0XHRcdHJldHVybiBldmVudHNUb2dnbGUuYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7XHJcblx0XHRcdGlmICggYm9vbCA/IHN0YXRlIDogaXNIaWRkZW4oIHRoaXMgKSApIHtcclxuXHRcdFx0XHRqUXVlcnkoIHRoaXMgKS5zaG93KCk7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0alF1ZXJ5KCB0aGlzICkuaGlkZSgpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcbn0pO1xyXG5cclxualF1ZXJ5LmV4dGVuZCh7XHJcblx0Ly8gQWRkIGluIHN0eWxlIHByb3BlcnR5IGhvb2tzIGZvciBvdmVycmlkaW5nIHRoZSBkZWZhdWx0XHJcblx0Ly8gYmVoYXZpb3Igb2YgZ2V0dGluZyBhbmQgc2V0dGluZyBhIHN0eWxlIHByb3BlcnR5XHJcblx0Y3NzSG9va3M6IHtcclxuXHRcdG9wYWNpdHk6IHtcclxuXHRcdFx0Z2V0OiBmdW5jdGlvbiggZWxlbSwgY29tcHV0ZWQgKSB7XHJcblx0XHRcdFx0aWYgKCBjb21wdXRlZCApIHtcclxuXHRcdFx0XHRcdC8vIFdlIHNob3VsZCBhbHdheXMgZ2V0IGEgbnVtYmVyIGJhY2sgZnJvbSBvcGFjaXR5XHJcblx0XHRcdFx0XHR2YXIgcmV0ID0gY3VyQ1NTKCBlbGVtLCBcIm9wYWNpdHlcIiApO1xyXG5cdFx0XHRcdFx0cmV0dXJuIHJldCA9PT0gXCJcIiA/IFwiMVwiIDogcmV0O1xyXG5cclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9LFxyXG5cclxuXHQvLyBFeGNsdWRlIHRoZSBmb2xsb3dpbmcgY3NzIHByb3BlcnRpZXMgdG8gYWRkIHB4XHJcblx0Y3NzTnVtYmVyOiB7XHJcblx0XHRcImZpbGxPcGFjaXR5XCI6IHRydWUsXHJcblx0XHRcImZvbnRXZWlnaHRcIjogdHJ1ZSxcclxuXHRcdFwibGluZUhlaWdodFwiOiB0cnVlLFxyXG5cdFx0XCJvcGFjaXR5XCI6IHRydWUsXHJcblx0XHRcIm9ycGhhbnNcIjogdHJ1ZSxcclxuXHRcdFwid2lkb3dzXCI6IHRydWUsXHJcblx0XHRcInpJbmRleFwiOiB0cnVlLFxyXG5cdFx0XCJ6b29tXCI6IHRydWVcclxuXHR9LFxyXG5cclxuXHQvLyBBZGQgaW4gcHJvcGVydGllcyB3aG9zZSBuYW1lcyB5b3Ugd2lzaCB0byBmaXggYmVmb3JlXHJcblx0Ly8gc2V0dGluZyBvciBnZXR0aW5nIHRoZSB2YWx1ZVxyXG5cdGNzc1Byb3BzOiB7XHJcblx0XHQvLyBub3JtYWxpemUgZmxvYXQgY3NzIHByb3BlcnR5XHJcblx0XHRcImZsb2F0XCI6IGpRdWVyeS5zdXBwb3J0LmNzc0Zsb2F0ID8gXCJjc3NGbG9hdFwiIDogXCJzdHlsZUZsb2F0XCJcclxuXHR9LFxyXG5cclxuXHQvLyBHZXQgYW5kIHNldCB0aGUgc3R5bGUgcHJvcGVydHkgb24gYSBET00gTm9kZVxyXG5cdHN0eWxlOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgdmFsdWUsIGV4dHJhICkge1xyXG5cdFx0Ly8gRG9uJ3Qgc2V0IHN0eWxlcyBvbiB0ZXh0IGFuZCBjb21tZW50IG5vZGVzXHJcblx0XHRpZiAoICFlbGVtIHx8IGVsZW0ubm9kZVR5cGUgPT09IDMgfHwgZWxlbS5ub2RlVHlwZSA9PT0gOCB8fCAhZWxlbS5zdHlsZSApIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIE1ha2Ugc3VyZSB0aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aCB0aGUgcmlnaHQgbmFtZVxyXG5cdFx0dmFyIHJldCwgdHlwZSwgaG9va3MsXHJcblx0XHRcdG9yaWdOYW1lID0galF1ZXJ5LmNhbWVsQ2FzZSggbmFtZSApLFxyXG5cdFx0XHRzdHlsZSA9IGVsZW0uc3R5bGU7XHJcblxyXG5cdFx0bmFtZSA9IGpRdWVyeS5jc3NQcm9wc1sgb3JpZ05hbWUgXSB8fCAoIGpRdWVyeS5jc3NQcm9wc1sgb3JpZ05hbWUgXSA9IHZlbmRvclByb3BOYW1lKCBzdHlsZSwgb3JpZ05hbWUgKSApO1xyXG5cclxuXHRcdC8vIGdldHMgaG9vayBmb3IgdGhlIHByZWZpeGVkIHZlcnNpb25cclxuXHRcdC8vIGZvbGxvd2VkIGJ5IHRoZSB1bnByZWZpeGVkIHZlcnNpb25cclxuXHRcdGhvb2tzID0galF1ZXJ5LmNzc0hvb2tzWyBuYW1lIF0gfHwgalF1ZXJ5LmNzc0hvb2tzWyBvcmlnTmFtZSBdO1xyXG5cclxuXHRcdC8vIENoZWNrIGlmIHdlJ3JlIHNldHRpbmcgYSB2YWx1ZVxyXG5cdFx0aWYgKCB2YWx1ZSAhPT0gdW5kZWZpbmVkICkge1xyXG5cdFx0XHR0eXBlID0gdHlwZW9mIHZhbHVlO1xyXG5cclxuXHRcdFx0Ly8gY29udmVydCByZWxhdGl2ZSBudW1iZXIgc3RyaW5ncyAoKz0gb3IgLT0pIHRvIHJlbGF0aXZlIG51bWJlcnMuICM3MzQ1XHJcblx0XHRcdGlmICggdHlwZSA9PT0gXCJzdHJpbmdcIiAmJiAocmV0ID0gcnJlbE51bS5leGVjKCB2YWx1ZSApKSApIHtcclxuXHRcdFx0XHR2YWx1ZSA9ICggcmV0WzFdICsgMSApICogcmV0WzJdICsgcGFyc2VGbG9hdCggalF1ZXJ5LmNzcyggZWxlbSwgbmFtZSApICk7XHJcblx0XHRcdFx0Ly8gRml4ZXMgYnVnICM5MjM3XHJcblx0XHRcdFx0dHlwZSA9IFwibnVtYmVyXCI7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8vIE1ha2Ugc3VyZSB0aGF0IE5hTiBhbmQgbnVsbCB2YWx1ZXMgYXJlbid0IHNldC4gU2VlOiAjNzExNlxyXG5cdFx0XHRpZiAoIHZhbHVlID09IG51bGwgfHwgdHlwZSA9PT0gXCJudW1iZXJcIiAmJiBpc05hTiggdmFsdWUgKSApIHtcclxuXHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8vIElmIGEgbnVtYmVyIHdhcyBwYXNzZWQgaW4sIGFkZCAncHgnIHRvIHRoZSAoZXhjZXB0IGZvciBjZXJ0YWluIENTUyBwcm9wZXJ0aWVzKVxyXG5cdFx0XHRpZiAoIHR5cGUgPT09IFwibnVtYmVyXCIgJiYgIWpRdWVyeS5jc3NOdW1iZXJbIG9yaWdOYW1lIF0gKSB7XHJcblx0XHRcdFx0dmFsdWUgKz0gXCJweFwiO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvLyBJZiBhIGhvb2sgd2FzIHByb3ZpZGVkLCB1c2UgdGhhdCB2YWx1ZSwgb3RoZXJ3aXNlIGp1c3Qgc2V0IHRoZSBzcGVjaWZpZWQgdmFsdWVcclxuXHRcdFx0aWYgKCAhaG9va3MgfHwgIShcInNldFwiIGluIGhvb2tzKSB8fCAodmFsdWUgPSBob29rcy5zZXQoIGVsZW0sIHZhbHVlLCBleHRyYSApKSAhPT0gdW5kZWZpbmVkICkge1xyXG5cdFx0XHRcdC8vIFdyYXBwZWQgdG8gcHJldmVudCBJRSBmcm9tIHRocm93aW5nIGVycm9ycyB3aGVuICdpbnZhbGlkJyB2YWx1ZXMgYXJlIHByb3ZpZGVkXHJcblx0XHRcdFx0Ly8gRml4ZXMgYnVnICM1NTA5XHJcblx0XHRcdFx0dHJ5IHtcclxuXHRcdFx0XHRcdHN0eWxlWyBuYW1lIF0gPSB2YWx1ZTtcclxuXHRcdFx0XHR9IGNhdGNoKGUpIHt9XHJcblx0XHRcdH1cclxuXHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHQvLyBJZiBhIGhvb2sgd2FzIHByb3ZpZGVkIGdldCB0aGUgbm9uLWNvbXB1dGVkIHZhbHVlIGZyb20gdGhlcmVcclxuXHRcdFx0aWYgKCBob29rcyAmJiBcImdldFwiIGluIGhvb2tzICYmIChyZXQgPSBob29rcy5nZXQoIGVsZW0sIGZhbHNlLCBleHRyYSApKSAhPT0gdW5kZWZpbmVkICkge1xyXG5cdFx0XHRcdHJldHVybiByZXQ7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8vIE90aGVyd2lzZSBqdXN0IGdldCB0aGUgdmFsdWUgZnJvbSB0aGUgc3R5bGUgb2JqZWN0XHJcblx0XHRcdHJldHVybiBzdHlsZVsgbmFtZSBdO1xyXG5cdFx0fVxyXG5cdH0sXHJcblxyXG5cdGNzczogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIG51bWVyaWMsIGV4dHJhICkge1xyXG5cdFx0dmFyIHZhbCwgbnVtLCBob29rcyxcclxuXHRcdFx0b3JpZ05hbWUgPSBqUXVlcnkuY2FtZWxDYXNlKCBuYW1lICk7XHJcblxyXG5cdFx0Ly8gTWFrZSBzdXJlIHRoYXQgd2UncmUgd29ya2luZyB3aXRoIHRoZSByaWdodCBuYW1lXHJcblx0XHRuYW1lID0galF1ZXJ5LmNzc1Byb3BzWyBvcmlnTmFtZSBdIHx8ICggalF1ZXJ5LmNzc1Byb3BzWyBvcmlnTmFtZSBdID0gdmVuZG9yUHJvcE5hbWUoIGVsZW0uc3R5bGUsIG9yaWdOYW1lICkgKTtcclxuXHJcblx0XHQvLyBnZXRzIGhvb2sgZm9yIHRoZSBwcmVmaXhlZCB2ZXJzaW9uXHJcblx0XHQvLyBmb2xsb3dlZCBieSB0aGUgdW5wcmVmaXhlZCB2ZXJzaW9uXHJcblx0XHRob29rcyA9IGpRdWVyeS5jc3NIb29rc1sgbmFtZSBdIHx8IGpRdWVyeS5jc3NIb29rc1sgb3JpZ05hbWUgXTtcclxuXHJcblx0XHQvLyBJZiBhIGhvb2sgd2FzIHByb3ZpZGVkIGdldCB0aGUgY29tcHV0ZWQgdmFsdWUgZnJvbSB0aGVyZVxyXG5cdFx0aWYgKCBob29rcyAmJiBcImdldFwiIGluIGhvb2tzICkge1xyXG5cdFx0XHR2YWwgPSBob29rcy5nZXQoIGVsZW0sIHRydWUsIGV4dHJhICk7XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gT3RoZXJ3aXNlLCBpZiBhIHdheSB0byBnZXQgdGhlIGNvbXB1dGVkIHZhbHVlIGV4aXN0cywgdXNlIHRoYXRcclxuXHRcdGlmICggdmFsID09PSB1bmRlZmluZWQgKSB7XHJcblx0XHRcdHZhbCA9IGN1ckNTUyggZWxlbSwgbmFtZSApO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vY29udmVydCBcIm5vcm1hbFwiIHRvIGNvbXB1dGVkIHZhbHVlXHJcblx0XHRpZiAoIHZhbCA9PT0gXCJub3JtYWxcIiAmJiBuYW1lIGluIGNzc05vcm1hbFRyYW5zZm9ybSApIHtcclxuXHRcdFx0dmFsID0gY3NzTm9ybWFsVHJhbnNmb3JtWyBuYW1lIF07XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gUmV0dXJuLCBjb252ZXJ0aW5nIHRvIG51bWJlciBpZiBmb3JjZWQgb3IgYSBxdWFsaWZpZXIgd2FzIHByb3ZpZGVkIGFuZCB2YWwgbG9va3MgbnVtZXJpY1xyXG5cdFx0aWYgKCBudW1lcmljIHx8IGV4dHJhICE9PSB1bmRlZmluZWQgKSB7XHJcblx0XHRcdG51bSA9IHBhcnNlRmxvYXQoIHZhbCApO1xyXG5cdFx0XHRyZXR1cm4gbnVtZXJpYyB8fCBqUXVlcnkuaXNOdW1lcmljKCBudW0gKSA/IG51bSB8fCAwIDogdmFsO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHZhbDtcclxuXHR9LFxyXG5cclxuXHQvLyBBIG1ldGhvZCBmb3IgcXVpY2tseSBzd2FwcGluZyBpbi9vdXQgQ1NTIHByb3BlcnRpZXMgdG8gZ2V0IGNvcnJlY3QgY2FsY3VsYXRpb25zXHJcblx0c3dhcDogZnVuY3Rpb24oIGVsZW0sIG9wdGlvbnMsIGNhbGxiYWNrICkge1xyXG5cdFx0dmFyIHJldCwgbmFtZSxcclxuXHRcdFx0b2xkID0ge307XHJcblxyXG5cdFx0Ly8gUmVtZW1iZXIgdGhlIG9sZCB2YWx1ZXMsIGFuZCBpbnNlcnQgdGhlIG5ldyBvbmVzXHJcblx0XHRmb3IgKCBuYW1lIGluIG9wdGlvbnMgKSB7XHJcblx0XHRcdG9sZFsgbmFtZSBdID0gZWxlbS5zdHlsZVsgbmFtZSBdO1xyXG5cdFx0XHRlbGVtLnN0eWxlWyBuYW1lIF0gPSBvcHRpb25zWyBuYW1lIF07XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0ID0gY2FsbGJhY2suY2FsbCggZWxlbSApO1xyXG5cclxuXHRcdC8vIFJldmVydCB0aGUgb2xkIHZhbHVlc1xyXG5cdFx0Zm9yICggbmFtZSBpbiBvcHRpb25zICkge1xyXG5cdFx0XHRlbGVtLnN0eWxlWyBuYW1lIF0gPSBvbGRbIG5hbWUgXTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gcmV0O1xyXG5cdH1cclxufSk7XHJcblxyXG4vLyBOT1RFOiBUbyBhbnkgZnV0dXJlIG1haW50YWluZXIsIHdlJ3ZlIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlXHJcbi8vIGJlY2F1c2UganNkb20gb24gbm9kZS5qcyB3aWxsIGJyZWFrIHdpdGhvdXQgaXQuXHJcbmlmICggd2luZG93LmdldENvbXB1dGVkU3R5bGUgKSB7XHJcblx0Y3VyQ1NTID0gZnVuY3Rpb24oIGVsZW0sIG5hbWUgKSB7XHJcblx0XHR2YXIgcmV0LCB3aWR0aCwgbWluV2lkdGgsIG1heFdpZHRoLFxyXG5cdFx0XHRjb21wdXRlZCA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKCBlbGVtLCBudWxsICksXHJcblx0XHRcdHN0eWxlID0gZWxlbS5zdHlsZTtcclxuXHJcblx0XHRpZiAoIGNvbXB1dGVkICkge1xyXG5cclxuXHRcdFx0cmV0ID0gY29tcHV0ZWRbIG5hbWUgXTtcclxuXHRcdFx0aWYgKCByZXQgPT09IFwiXCIgJiYgIWpRdWVyeS5jb250YWlucyggZWxlbS5vd25lckRvY3VtZW50LCBlbGVtICkgKSB7XHJcblx0XHRcdFx0cmV0ID0galF1ZXJ5LnN0eWxlKCBlbGVtLCBuYW1lICk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8vIEEgdHJpYnV0ZSB0byB0aGUgXCJhd2Vzb21lIGhhY2sgYnkgRGVhbiBFZHdhcmRzXCJcclxuXHRcdFx0Ly8gQ2hyb21lIDwgMTcgYW5kIFNhZmFyaSA1LjAgdXNlcyBcImNvbXB1dGVkIHZhbHVlXCIgaW5zdGVhZCBvZiBcInVzZWQgdmFsdWVcIiBmb3IgbWFyZ2luLXJpZ2h0XHJcblx0XHRcdC8vIFNhZmFyaSA1LjEuNyAoYXQgbGVhc3QpIHJldHVybnMgcGVyY2VudGFnZSBmb3IgYSBsYXJnZXIgc2V0IG9mIHZhbHVlcywgYnV0IHdpZHRoIHNlZW1zIHRvIGJlIHJlbGlhYmx5IHBpeGVsc1xyXG5cdFx0XHQvLyB0aGlzIGlzIGFnYWluc3QgdGhlIENTU09NIGRyYWZ0IHNwZWM6IGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzc29tLyNyZXNvbHZlZC12YWx1ZXNcclxuXHRcdFx0aWYgKCBybnVtbm9ucHgudGVzdCggcmV0ICkgJiYgcm1hcmdpbi50ZXN0KCBuYW1lICkgKSB7XHJcblx0XHRcdFx0d2lkdGggPSBzdHlsZS53aWR0aDtcclxuXHRcdFx0XHRtaW5XaWR0aCA9IHN0eWxlLm1pbldpZHRoO1xyXG5cdFx0XHRcdG1heFdpZHRoID0gc3R5bGUubWF4V2lkdGg7XHJcblxyXG5cdFx0XHRcdHN0eWxlLm1pbldpZHRoID0gc3R5bGUubWF4V2lkdGggPSBzdHlsZS53aWR0aCA9IHJldDtcclxuXHRcdFx0XHRyZXQgPSBjb21wdXRlZC53aWR0aDtcclxuXHJcblx0XHRcdFx0c3R5bGUud2lkdGggPSB3aWR0aDtcclxuXHRcdFx0XHRzdHlsZS5taW5XaWR0aCA9IG1pbldpZHRoO1xyXG5cdFx0XHRcdHN0eWxlLm1heFdpZHRoID0gbWF4V2lkdGg7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gcmV0O1xyXG5cdH07XHJcbn0gZWxzZSBpZiAoIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jdXJyZW50U3R5bGUgKSB7XHJcblx0Y3VyQ1NTID0gZnVuY3Rpb24oIGVsZW0sIG5hbWUgKSB7XHJcblx0XHR2YXIgbGVmdCwgcnNMZWZ0LFxyXG5cdFx0XHRyZXQgPSBlbGVtLmN1cnJlbnRTdHlsZSAmJiBlbGVtLmN1cnJlbnRTdHlsZVsgbmFtZSBdLFxyXG5cdFx0XHRzdHlsZSA9IGVsZW0uc3R5bGU7XHJcblxyXG5cdFx0Ly8gQXZvaWQgc2V0dGluZyByZXQgdG8gZW1wdHkgc3RyaW5nIGhlcmVcclxuXHRcdC8vIHNvIHdlIGRvbid0IGRlZmF1bHQgdG8gYXV0b1xyXG5cdFx0aWYgKCByZXQgPT0gbnVsbCAmJiBzdHlsZSAmJiBzdHlsZVsgbmFtZSBdICkge1xyXG5cdFx0XHRyZXQgPSBzdHlsZVsgbmFtZSBdO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIEZyb20gdGhlIGF3ZXNvbWUgaGFjayBieSBEZWFuIEVkd2FyZHNcclxuXHRcdC8vIGh0dHA6Ly9lcmlrLmVhZS5uZXQvYXJjaGl2ZXMvMjAwNy8wNy8yNy8xOC41NC4xNS8jY29tbWVudC0xMDIyOTFcclxuXHJcblx0XHQvLyBJZiB3ZSdyZSBub3QgZGVhbGluZyB3aXRoIGEgcmVndWxhciBwaXhlbCBudW1iZXJcclxuXHRcdC8vIGJ1dCBhIG51bWJlciB0aGF0IGhhcyBhIHdlaXJkIGVuZGluZywgd2UgbmVlZCB0byBjb252ZXJ0IGl0IHRvIHBpeGVsc1xyXG5cdFx0Ly8gYnV0IG5vdCBwb3NpdGlvbiBjc3MgYXR0cmlidXRlcywgYXMgdGhvc2UgYXJlIHByb3BvcnRpb25hbCB0byB0aGUgcGFyZW50IGVsZW1lbnQgaW5zdGVhZFxyXG5cdFx0Ly8gYW5kIHdlIGNhbid0IG1lYXN1cmUgdGhlIHBhcmVudCBpbnN0ZWFkIGJlY2F1c2UgaXQgbWlnaHQgdHJpZ2dlciBhIFwic3RhY2tpbmcgZG9sbHNcIiBwcm9ibGVtXHJcblx0XHRpZiAoIHJudW1ub25weC50ZXN0KCByZXQgKSAmJiAhcnBvc2l0aW9uLnRlc3QoIG5hbWUgKSApIHtcclxuXHJcblx0XHRcdC8vIFJlbWVtYmVyIHRoZSBvcmlnaW5hbCB2YWx1ZXNcclxuXHRcdFx0bGVmdCA9IHN0eWxlLmxlZnQ7XHJcblx0XHRcdHJzTGVmdCA9IGVsZW0ucnVudGltZVN0eWxlICYmIGVsZW0ucnVudGltZVN0eWxlLmxlZnQ7XHJcblxyXG5cdFx0XHQvLyBQdXQgaW4gdGhlIG5ldyB2YWx1ZXMgdG8gZ2V0IGEgY29tcHV0ZWQgdmFsdWUgb3V0XHJcblx0XHRcdGlmICggcnNMZWZ0ICkge1xyXG5cdFx0XHRcdGVsZW0ucnVudGltZVN0eWxlLmxlZnQgPSBlbGVtLmN1cnJlbnRTdHlsZS5sZWZ0O1xyXG5cdFx0XHR9XHJcblx0XHRcdHN0eWxlLmxlZnQgPSBuYW1lID09PSBcImZvbnRTaXplXCIgPyBcIjFlbVwiIDogcmV0O1xyXG5cdFx0XHRyZXQgPSBzdHlsZS5waXhlbExlZnQgKyBcInB4XCI7XHJcblxyXG5cdFx0XHQvLyBSZXZlcnQgdGhlIGNoYW5nZWQgdmFsdWVzXHJcblx0XHRcdHN0eWxlLmxlZnQgPSBsZWZ0O1xyXG5cdFx0XHRpZiAoIHJzTGVmdCApIHtcclxuXHRcdFx0XHRlbGVtLnJ1bnRpbWVTdHlsZS5sZWZ0ID0gcnNMZWZ0O1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIHJldCA9PT0gXCJcIiA/IFwiYXV0b1wiIDogcmV0O1xyXG5cdH07XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHNldFBvc2l0aXZlTnVtYmVyKCBlbGVtLCB2YWx1ZSwgc3VidHJhY3QgKSB7XHJcblx0dmFyIG1hdGNoZXMgPSBybnVtc3BsaXQuZXhlYyggdmFsdWUgKTtcclxuXHRyZXR1cm4gbWF0Y2hlcyA/XHJcblx0XHRcdE1hdGgubWF4KCAwLCBtYXRjaGVzWyAxIF0gLSAoIHN1YnRyYWN0IHx8IDAgKSApICsgKCBtYXRjaGVzWyAyIF0gfHwgXCJweFwiICkgOlxyXG5cdFx0XHR2YWx1ZTtcclxufVxyXG5cclxuZnVuY3Rpb24gYXVnbWVudFdpZHRoT3JIZWlnaHQoIGVsZW0sIG5hbWUsIGV4dHJhLCBpc0JvcmRlckJveCApIHtcclxuXHR2YXIgaSA9IGV4dHJhID09PSAoIGlzQm9yZGVyQm94ID8gXCJib3JkZXJcIiA6IFwiY29udGVudFwiICkgP1xyXG5cdFx0Ly8gSWYgd2UgYWxyZWFkeSBoYXZlIHRoZSByaWdodCBtZWFzdXJlbWVudCwgYXZvaWQgYXVnbWVudGF0aW9uXHJcblx0XHQ0IDpcclxuXHRcdC8vIE90aGVyd2lzZSBpbml0aWFsaXplIGZvciBob3Jpem9udGFsIG9yIHZlcnRpY2FsIHByb3BlcnRpZXNcclxuXHRcdG5hbWUgPT09IFwid2lkdGhcIiA/IDEgOiAwLFxyXG5cclxuXHRcdHZhbCA9IDA7XHJcblxyXG5cdGZvciAoIDsgaSA8IDQ7IGkgKz0gMiApIHtcclxuXHRcdC8vIGJvdGggYm94IG1vZGVscyBleGNsdWRlIG1hcmdpbiwgc28gYWRkIGl0IGlmIHdlIHdhbnQgaXRcclxuXHRcdGlmICggZXh0cmEgPT09IFwibWFyZ2luXCIgKSB7XHJcblx0XHRcdC8vIHdlIHVzZSBqUXVlcnkuY3NzIGluc3RlYWQgb2YgY3VyQ1NTIGhlcmVcclxuXHRcdFx0Ly8gYmVjYXVzZSBvZiB0aGUgcmVsaWFibGVNYXJnaW5SaWdodCBDU1MgaG9vayFcclxuXHRcdFx0dmFsICs9IGpRdWVyeS5jc3MoIGVsZW0sIGV4dHJhICsgY3NzRXhwYW5kWyBpIF0sIHRydWUgKTtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBGcm9tIHRoaXMgcG9pbnQgb24gd2UgdXNlIGN1ckNTUyBmb3IgbWF4aW11bSBwZXJmb3JtYW5jZSAocmVsZXZhbnQgaW4gYW5pbWF0aW9ucylcclxuXHRcdGlmICggaXNCb3JkZXJCb3ggKSB7XHJcblx0XHRcdC8vIGJvcmRlci1ib3ggaW5jbHVkZXMgcGFkZGluZywgc28gcmVtb3ZlIGl0IGlmIHdlIHdhbnQgY29udGVudFxyXG5cdFx0XHRpZiAoIGV4dHJhID09PSBcImNvbnRlbnRcIiApIHtcclxuXHRcdFx0XHR2YWwgLT0gcGFyc2VGbG9hdCggY3VyQ1NTKCBlbGVtLCBcInBhZGRpbmdcIiArIGNzc0V4cGFuZFsgaSBdICkgKSB8fCAwO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvLyBhdCB0aGlzIHBvaW50LCBleHRyYSBpc24ndCBib3JkZXIgbm9yIG1hcmdpbiwgc28gcmVtb3ZlIGJvcmRlclxyXG5cdFx0XHRpZiAoIGV4dHJhICE9PSBcIm1hcmdpblwiICkge1xyXG5cdFx0XHRcdHZhbCAtPSBwYXJzZUZsb2F0KCBjdXJDU1MoIGVsZW0sIFwiYm9yZGVyXCIgKyBjc3NFeHBhbmRbIGkgXSArIFwiV2lkdGhcIiApICkgfHwgMDtcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0Ly8gYXQgdGhpcyBwb2ludCwgZXh0cmEgaXNuJ3QgY29udGVudCwgc28gYWRkIHBhZGRpbmdcclxuXHRcdFx0dmFsICs9IHBhcnNlRmxvYXQoIGN1ckNTUyggZWxlbSwgXCJwYWRkaW5nXCIgKyBjc3NFeHBhbmRbIGkgXSApICkgfHwgMDtcclxuXHJcblx0XHRcdC8vIGF0IHRoaXMgcG9pbnQsIGV4dHJhIGlzbid0IGNvbnRlbnQgbm9yIHBhZGRpbmcsIHNvIGFkZCBib3JkZXJcclxuXHRcdFx0aWYgKCBleHRyYSAhPT0gXCJwYWRkaW5nXCIgKSB7XHJcblx0XHRcdFx0dmFsICs9IHBhcnNlRmxvYXQoIGN1ckNTUyggZWxlbSwgXCJib3JkZXJcIiArIGNzc0V4cGFuZFsgaSBdICsgXCJXaWR0aFwiICkgKSB8fCAwO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRyZXR1cm4gdmFsO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRXaWR0aE9ySGVpZ2h0KCBlbGVtLCBuYW1lLCBleHRyYSApIHtcclxuXHJcblx0Ly8gU3RhcnQgd2l0aCBvZmZzZXQgcHJvcGVydHksIHdoaWNoIGlzIGVxdWl2YWxlbnQgdG8gdGhlIGJvcmRlci1ib3ggdmFsdWVcclxuXHR2YXIgdmFsID0gbmFtZSA9PT0gXCJ3aWR0aFwiID8gZWxlbS5vZmZzZXRXaWR0aCA6IGVsZW0ub2Zmc2V0SGVpZ2h0LFxyXG5cdFx0dmFsdWVJc0JvcmRlckJveCA9IHRydWUsXHJcblx0XHRpc0JvcmRlckJveCA9IGpRdWVyeS5zdXBwb3J0LmJveFNpemluZyAmJiBqUXVlcnkuY3NzKCBlbGVtLCBcImJveFNpemluZ1wiICkgPT09IFwiYm9yZGVyLWJveFwiO1xyXG5cclxuXHQvLyBzb21lIG5vbi1odG1sIGVsZW1lbnRzIHJldHVybiB1bmRlZmluZWQgZm9yIG9mZnNldFdpZHRoLCBzbyBjaGVjayBmb3IgbnVsbC91bmRlZmluZWRcclxuXHQvLyBzdmcgLSBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD02NDkyODVcclxuXHQvLyBNYXRoTUwgLSBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD00OTE2NjhcclxuXHRpZiAoIHZhbCA8PSAwIHx8IHZhbCA9PSBudWxsICkge1xyXG5cdFx0Ly8gRmFsbCBiYWNrIHRvIGNvbXB1dGVkIHRoZW4gdW5jb21wdXRlZCBjc3MgaWYgbmVjZXNzYXJ5XHJcblx0XHR2YWwgPSBjdXJDU1MoIGVsZW0sIG5hbWUgKTtcclxuXHRcdGlmICggdmFsIDwgMCB8fCB2YWwgPT0gbnVsbCApIHtcclxuXHRcdFx0dmFsID0gZWxlbS5zdHlsZVsgbmFtZSBdO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIENvbXB1dGVkIHVuaXQgaXMgbm90IHBpeGVscy4gU3RvcCBoZXJlIGFuZCByZXR1cm4uXHJcblx0XHRpZiAoIHJudW1ub25weC50ZXN0KHZhbCkgKSB7XHJcblx0XHRcdHJldHVybiB2YWw7XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gd2UgbmVlZCB0aGUgY2hlY2sgZm9yIHN0eWxlIGluIGNhc2UgYSBicm93c2VyIHdoaWNoIHJldHVybnMgdW5yZWxpYWJsZSB2YWx1ZXNcclxuXHRcdC8vIGZvciBnZXRDb21wdXRlZFN0eWxlIHNpbGVudGx5IGZhbGxzIGJhY2sgdG8gdGhlIHJlbGlhYmxlIGVsZW0uc3R5bGVcclxuXHRcdHZhbHVlSXNCb3JkZXJCb3ggPSBpc0JvcmRlckJveCAmJiAoIGpRdWVyeS5zdXBwb3J0LmJveFNpemluZ1JlbGlhYmxlIHx8IHZhbCA9PT0gZWxlbS5zdHlsZVsgbmFtZSBdICk7XHJcblxyXG5cdFx0Ly8gTm9ybWFsaXplIFwiXCIsIGF1dG8sIGFuZCBwcmVwYXJlIGZvciBleHRyYVxyXG5cdFx0dmFsID0gcGFyc2VGbG9hdCggdmFsICkgfHwgMDtcclxuXHR9XHJcblxyXG5cdC8vIHVzZSB0aGUgYWN0aXZlIGJveC1zaXppbmcgbW9kZWwgdG8gYWRkL3N1YnRyYWN0IGlycmVsZXZhbnQgc3R5bGVzXHJcblx0cmV0dXJuICggdmFsICtcclxuXHRcdGF1Z21lbnRXaWR0aE9ySGVpZ2h0KFxyXG5cdFx0XHRlbGVtLFxyXG5cdFx0XHRuYW1lLFxyXG5cdFx0XHRleHRyYSB8fCAoIGlzQm9yZGVyQm94ID8gXCJib3JkZXJcIiA6IFwiY29udGVudFwiICksXHJcblx0XHRcdHZhbHVlSXNCb3JkZXJCb3hcclxuXHRcdClcclxuXHQpICsgXCJweFwiO1xyXG59XHJcblxyXG5cclxuLy8gVHJ5IHRvIGRldGVybWluZSB0aGUgZGVmYXVsdCBkaXNwbGF5IHZhbHVlIG9mIGFuIGVsZW1lbnRcclxuZnVuY3Rpb24gY3NzX2RlZmF1bHREaXNwbGF5KCBub2RlTmFtZSApIHtcclxuXHRpZiAoIGVsZW1kaXNwbGF5WyBub2RlTmFtZSBdICkge1xyXG5cdFx0cmV0dXJuIGVsZW1kaXNwbGF5WyBub2RlTmFtZSBdO1xyXG5cdH1cclxuXHJcblx0dmFyIGVsZW0gPSBqUXVlcnkoIFwiPFwiICsgbm9kZU5hbWUgKyBcIj5cIiApLmFwcGVuZFRvKCBkb2N1bWVudC5ib2R5ICksXHJcblx0XHRkaXNwbGF5ID0gZWxlbS5jc3MoXCJkaXNwbGF5XCIpO1xyXG5cdGVsZW0ucmVtb3ZlKCk7XHJcblxyXG5cdC8vIElmIHRoZSBzaW1wbGUgd2F5IGZhaWxzLFxyXG5cdC8vIGdldCBlbGVtZW50J3MgcmVhbCBkZWZhdWx0IGRpc3BsYXkgYnkgYXR0YWNoaW5nIGl0IHRvIGEgdGVtcCBpZnJhbWVcclxuXHRpZiAoIGRpc3BsYXkgPT09IFwibm9uZVwiIHx8IGRpc3BsYXkgPT09IFwiXCIgKSB7XHJcblx0XHQvLyBVc2UgdGhlIGFscmVhZHktY3JlYXRlZCBpZnJhbWUgaWYgcG9zc2libGVcclxuXHRcdGlmcmFtZSA9IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoXHJcblx0XHRcdGlmcmFtZSB8fCBqUXVlcnkuZXh0ZW5kKCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaWZyYW1lXCIpLCB7XHJcblx0XHRcdFx0ZnJhbWVCb3JkZXI6IDAsXHJcblx0XHRcdFx0d2lkdGg6IDAsXHJcblx0XHRcdFx0aGVpZ2h0OiAwXHJcblx0XHRcdH0pXHJcblx0XHQpO1xyXG5cclxuXHRcdC8vIENyZWF0ZSBhIGNhY2hlYWJsZSBjb3B5IG9mIHRoZSBpZnJhbWUgZG9jdW1lbnQgb24gZmlyc3QgY2FsbC5cclxuXHRcdC8vIElFIGFuZCBPcGVyYSB3aWxsIGFsbG93IHVzIHRvIHJldXNlIHRoZSBpZnJhbWVEb2Mgd2l0aG91dCByZS13cml0aW5nIHRoZSBmYWtlIEhUTUxcclxuXHRcdC8vIGRvY3VtZW50IHRvIGl0OyBXZWJLaXQgJiBGaXJlZm94IHdvbid0IGFsbG93IHJldXNpbmcgdGhlIGlmcmFtZSBkb2N1bWVudC5cclxuXHRcdGlmICggIWlmcmFtZURvYyB8fCAhaWZyYW1lLmNyZWF0ZUVsZW1lbnQgKSB7XHJcblx0XHRcdGlmcmFtZURvYyA9ICggaWZyYW1lLmNvbnRlbnRXaW5kb3cgfHwgaWZyYW1lLmNvbnRlbnREb2N1bWVudCApLmRvY3VtZW50O1xyXG5cdFx0XHRpZnJhbWVEb2Mud3JpdGUoXCI8IWRvY3R5cGUgaHRtbD48aHRtbD48Ym9keT5cIik7XHJcblx0XHRcdGlmcmFtZURvYy5jbG9zZSgpO1xyXG5cdFx0fVxyXG5cclxuXHRcdGVsZW0gPSBpZnJhbWVEb2MuYm9keS5hcHBlbmRDaGlsZCggaWZyYW1lRG9jLmNyZWF0ZUVsZW1lbnQobm9kZU5hbWUpICk7XHJcblxyXG5cdFx0ZGlzcGxheSA9IGN1ckNTUyggZWxlbSwgXCJkaXNwbGF5XCIgKTtcclxuXHRcdGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoIGlmcmFtZSApO1xyXG5cdH1cclxuXHJcblx0Ly8gU3RvcmUgdGhlIGNvcnJlY3QgZGVmYXVsdCBkaXNwbGF5XHJcblx0ZWxlbWRpc3BsYXlbIG5vZGVOYW1lIF0gPSBkaXNwbGF5O1xyXG5cclxuXHRyZXR1cm4gZGlzcGxheTtcclxufVxyXG5cclxualF1ZXJ5LmVhY2goWyBcImhlaWdodFwiLCBcIndpZHRoXCIgXSwgZnVuY3Rpb24oIGksIG5hbWUgKSB7XHJcblx0alF1ZXJ5LmNzc0hvb2tzWyBuYW1lIF0gPSB7XHJcblx0XHRnZXQ6IGZ1bmN0aW9uKCBlbGVtLCBjb21wdXRlZCwgZXh0cmEgKSB7XHJcblx0XHRcdGlmICggY29tcHV0ZWQgKSB7XHJcblx0XHRcdFx0Ly8gY2VydGFpbiBlbGVtZW50cyBjYW4gaGF2ZSBkaW1lbnNpb24gaW5mbyBpZiB3ZSBpbnZpc2libHkgc2hvdyB0aGVtXHJcblx0XHRcdFx0Ly8gaG93ZXZlciwgaXQgbXVzdCBoYXZlIGEgY3VycmVudCBkaXNwbGF5IHN0eWxlIHRoYXQgd291bGQgYmVuZWZpdCBmcm9tIHRoaXNcclxuXHRcdFx0XHRpZiAoIGVsZW0ub2Zmc2V0V2lkdGggPT09IDAgJiYgcmRpc3BsYXlzd2FwLnRlc3QoIGN1ckNTUyggZWxlbSwgXCJkaXNwbGF5XCIgKSApICkge1xyXG5cdFx0XHRcdFx0cmV0dXJuIGpRdWVyeS5zd2FwKCBlbGVtLCBjc3NTaG93LCBmdW5jdGlvbigpIHtcclxuXHRcdFx0XHRcdFx0cmV0dXJuIGdldFdpZHRoT3JIZWlnaHQoIGVsZW0sIG5hbWUsIGV4dHJhICk7XHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0cmV0dXJuIGdldFdpZHRoT3JIZWlnaHQoIGVsZW0sIG5hbWUsIGV4dHJhICk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cclxuXHRcdHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlLCBleHRyYSApIHtcclxuXHRcdFx0cmV0dXJuIHNldFBvc2l0aXZlTnVtYmVyKCBlbGVtLCB2YWx1ZSwgZXh0cmEgP1xyXG5cdFx0XHRcdGF1Z21lbnRXaWR0aE9ySGVpZ2h0KFxyXG5cdFx0XHRcdFx0ZWxlbSxcclxuXHRcdFx0XHRcdG5hbWUsXHJcblx0XHRcdFx0XHRleHRyYSxcclxuXHRcdFx0XHRcdGpRdWVyeS5zdXBwb3J0LmJveFNpemluZyAmJiBqUXVlcnkuY3NzKCBlbGVtLCBcImJveFNpemluZ1wiICkgPT09IFwiYm9yZGVyLWJveFwiXHJcblx0XHRcdFx0KSA6IDBcclxuXHRcdFx0KTtcclxuXHRcdH1cclxuXHR9O1xyXG59KTtcclxuXHJcbmlmICggIWpRdWVyeS5zdXBwb3J0Lm9wYWNpdHkgKSB7XHJcblx0alF1ZXJ5LmNzc0hvb2tzLm9wYWNpdHkgPSB7XHJcblx0XHRnZXQ6IGZ1bmN0aW9uKCBlbGVtLCBjb21wdXRlZCApIHtcclxuXHRcdFx0Ly8gSUUgdXNlcyBmaWx0ZXJzIGZvciBvcGFjaXR5XHJcblx0XHRcdHJldHVybiByb3BhY2l0eS50ZXN0KCAoY29tcHV0ZWQgJiYgZWxlbS5jdXJyZW50U3R5bGUgPyBlbGVtLmN1cnJlbnRTdHlsZS5maWx0ZXIgOiBlbGVtLnN0eWxlLmZpbHRlcikgfHwgXCJcIiApID9cclxuXHRcdFx0XHQoIDAuMDEgKiBwYXJzZUZsb2F0KCBSZWdFeHAuJDEgKSApICsgXCJcIiA6XHJcblx0XHRcdFx0Y29tcHV0ZWQgPyBcIjFcIiA6IFwiXCI7XHJcblx0XHR9LFxyXG5cclxuXHRcdHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlICkge1xyXG5cdFx0XHR2YXIgc3R5bGUgPSBlbGVtLnN0eWxlLFxyXG5cdFx0XHRcdGN1cnJlbnRTdHlsZSA9IGVsZW0uY3VycmVudFN0eWxlLFxyXG5cdFx0XHRcdG9wYWNpdHkgPSBqUXVlcnkuaXNOdW1lcmljKCB2YWx1ZSApID8gXCJhbHBoYShvcGFjaXR5PVwiICsgdmFsdWUgKiAxMDAgKyBcIilcIiA6IFwiXCIsXHJcblx0XHRcdFx0ZmlsdGVyID0gY3VycmVudFN0eWxlICYmIGN1cnJlbnRTdHlsZS5maWx0ZXIgfHwgc3R5bGUuZmlsdGVyIHx8IFwiXCI7XHJcblxyXG5cdFx0XHQvLyBJRSBoYXMgdHJvdWJsZSB3aXRoIG9wYWNpdHkgaWYgaXQgZG9lcyBub3QgaGF2ZSBsYXlvdXRcclxuXHRcdFx0Ly8gRm9yY2UgaXQgYnkgc2V0dGluZyB0aGUgem9vbSBsZXZlbFxyXG5cdFx0XHRzdHlsZS56b29tID0gMTtcclxuXHJcblx0XHRcdC8vIGlmIHNldHRpbmcgb3BhY2l0eSB0byAxLCBhbmQgbm8gb3RoZXIgZmlsdGVycyBleGlzdCAtIGF0dGVtcHQgdG8gcmVtb3ZlIGZpbHRlciBhdHRyaWJ1dGUgIzY2NTJcclxuXHRcdFx0aWYgKCB2YWx1ZSA+PSAxICYmIGpRdWVyeS50cmltKCBmaWx0ZXIucmVwbGFjZSggcmFscGhhLCBcIlwiICkgKSA9PT0gXCJcIiAmJlxyXG5cdFx0XHRcdHN0eWxlLnJlbW92ZUF0dHJpYnV0ZSApIHtcclxuXHJcblx0XHRcdFx0Ly8gU2V0dGluZyBzdHlsZS5maWx0ZXIgdG8gbnVsbCwgXCJcIiAmIFwiIFwiIHN0aWxsIGxlYXZlIFwiZmlsdGVyOlwiIGluIHRoZSBjc3NUZXh0XHJcblx0XHRcdFx0Ly8gaWYgXCJmaWx0ZXI6XCIgaXMgcHJlc2VudCBhdCBhbGwsIGNsZWFyVHlwZSBpcyBkaXNhYmxlZCwgd2Ugd2FudCB0byBhdm9pZCB0aGlzXHJcblx0XHRcdFx0Ly8gc3R5bGUucmVtb3ZlQXR0cmlidXRlIGlzIElFIE9ubHksIGJ1dCBzbyBhcHBhcmVudGx5IGlzIHRoaXMgY29kZSBwYXRoLi4uXHJcblx0XHRcdFx0c3R5bGUucmVtb3ZlQXR0cmlidXRlKCBcImZpbHRlclwiICk7XHJcblxyXG5cdFx0XHRcdC8vIGlmIHRoZXJlIHRoZXJlIGlzIG5vIGZpbHRlciBzdHlsZSBhcHBsaWVkIGluIGEgY3NzIHJ1bGUsIHdlIGFyZSBkb25lXHJcblx0XHRcdFx0aWYgKCBjdXJyZW50U3R5bGUgJiYgIWN1cnJlbnRTdHlsZS5maWx0ZXIgKSB7XHJcblx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvLyBvdGhlcndpc2UsIHNldCBuZXcgZmlsdGVyIHZhbHVlc1xyXG5cdFx0XHRzdHlsZS5maWx0ZXIgPSByYWxwaGEudGVzdCggZmlsdGVyICkgP1xyXG5cdFx0XHRcdGZpbHRlci5yZXBsYWNlKCByYWxwaGEsIG9wYWNpdHkgKSA6XHJcblx0XHRcdFx0ZmlsdGVyICsgXCIgXCIgKyBvcGFjaXR5O1xyXG5cdFx0fVxyXG5cdH07XHJcbn1cclxuXHJcbi8vIFRoZXNlIGhvb2tzIGNhbm5vdCBiZSBhZGRlZCB1bnRpbCBET00gcmVhZHkgYmVjYXVzZSB0aGUgc3VwcG9ydCB0ZXN0XHJcbi8vIGZvciBpdCBpcyBub3QgcnVuIHVudGlsIGFmdGVyIERPTSByZWFkeVxyXG5qUXVlcnkoZnVuY3Rpb24oKSB7XHJcblx0aWYgKCAhalF1ZXJ5LnN1cHBvcnQucmVsaWFibGVNYXJnaW5SaWdodCApIHtcclxuXHRcdGpRdWVyeS5jc3NIb29rcy5tYXJnaW5SaWdodCA9IHtcclxuXHRcdFx0Z2V0OiBmdW5jdGlvbiggZWxlbSwgY29tcHV0ZWQgKSB7XHJcblx0XHRcdFx0Ly8gV2ViS2l0IEJ1ZyAxMzM0MyAtIGdldENvbXB1dGVkU3R5bGUgcmV0dXJucyB3cm9uZyB2YWx1ZSBmb3IgbWFyZ2luLXJpZ2h0XHJcblx0XHRcdFx0Ly8gV29yayBhcm91bmQgYnkgdGVtcG9yYXJpbHkgc2V0dGluZyBlbGVtZW50IGRpc3BsYXkgdG8gaW5saW5lLWJsb2NrXHJcblx0XHRcdFx0cmV0dXJuIGpRdWVyeS5zd2FwKCBlbGVtLCB7IFwiZGlzcGxheVwiOiBcImlubGluZS1ibG9ja1wiIH0sIGZ1bmN0aW9uKCkge1xyXG5cdFx0XHRcdFx0aWYgKCBjb21wdXRlZCApIHtcclxuXHRcdFx0XHRcdFx0cmV0dXJuIGN1ckNTUyggZWxlbSwgXCJtYXJnaW5SaWdodFwiICk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH1cclxuXHRcdH07XHJcblx0fVxyXG5cclxuXHQvLyBXZWJraXQgYnVnOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjkwODRcclxuXHQvLyBnZXRDb21wdXRlZFN0eWxlIHJldHVybnMgcGVyY2VudCB3aGVuIHNwZWNpZmllZCBmb3IgdG9wL2xlZnQvYm90dG9tL3JpZ2h0XHJcblx0Ly8gcmF0aGVyIHRoYW4gbWFrZSB0aGUgY3NzIG1vZHVsZSBkZXBlbmQgb24gdGhlIG9mZnNldCBtb2R1bGUsIHdlIGp1c3QgY2hlY2sgZm9yIGl0IGhlcmVcclxuXHRpZiAoICFqUXVlcnkuc3VwcG9ydC5waXhlbFBvc2l0aW9uICYmIGpRdWVyeS5mbi5wb3NpdGlvbiApIHtcclxuXHRcdGpRdWVyeS5lYWNoKCBbIFwidG9wXCIsIFwibGVmdFwiIF0sIGZ1bmN0aW9uKCBpLCBwcm9wICkge1xyXG5cdFx0XHRqUXVlcnkuY3NzSG9va3NbIHByb3AgXSA9IHtcclxuXHRcdFx0XHRnZXQ6IGZ1bmN0aW9uKCBlbGVtLCBjb21wdXRlZCApIHtcclxuXHRcdFx0XHRcdGlmICggY29tcHV0ZWQgKSB7XHJcblx0XHRcdFx0XHRcdHZhciByZXQgPSBjdXJDU1MoIGVsZW0sIHByb3AgKTtcclxuXHRcdFx0XHRcdFx0Ly8gaWYgY3VyQ1NTIHJldHVybnMgcGVyY2VudGFnZSwgZmFsbGJhY2sgdG8gb2Zmc2V0XHJcblx0XHRcdFx0XHRcdHJldHVybiBybnVtbm9ucHgudGVzdCggcmV0ICkgPyBqUXVlcnkoIGVsZW0gKS5wb3NpdGlvbigpWyBwcm9wIF0gKyBcInB4XCIgOiByZXQ7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9O1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxufSk7XHJcblxyXG5pZiAoIGpRdWVyeS5leHByICYmIGpRdWVyeS5leHByLmZpbHRlcnMgKSB7XHJcblx0alF1ZXJ5LmV4cHIuZmlsdGVycy5oaWRkZW4gPSBmdW5jdGlvbiggZWxlbSApIHtcclxuXHRcdHJldHVybiAoIGVsZW0ub2Zmc2V0V2lkdGggPT09IDAgJiYgZWxlbS5vZmZzZXRIZWlnaHQgPT09IDAgKSB8fCAoIWpRdWVyeS5zdXBwb3J0LnJlbGlhYmxlSGlkZGVuT2Zmc2V0cyAmJiAoKGVsZW0uc3R5bGUgJiYgZWxlbS5zdHlsZS5kaXNwbGF5KSB8fCBjdXJDU1MoIGVsZW0sIFwiZGlzcGxheVwiICkpID09PSBcIm5vbmVcIik7XHJcblx0fTtcclxuXHJcblx0alF1ZXJ5LmV4cHIuZmlsdGVycy52aXNpYmxlID0gZnVuY3Rpb24oIGVsZW0gKSB7XHJcblx0XHRyZXR1cm4gIWpRdWVyeS5leHByLmZpbHRlcnMuaGlkZGVuKCBlbGVtICk7XHJcblx0fTtcclxufVxyXG5cclxuLy8gVGhlc2UgaG9va3MgYXJlIHVzZWQgYnkgYW5pbWF0ZSB0byBleHBhbmQgcHJvcGVydGllc1xyXG5qUXVlcnkuZWFjaCh7XHJcblx0bWFyZ2luOiBcIlwiLFxyXG5cdHBhZGRpbmc6IFwiXCIsXHJcblx0Ym9yZGVyOiBcIldpZHRoXCJcclxufSwgZnVuY3Rpb24oIHByZWZpeCwgc3VmZml4ICkge1xyXG5cdGpRdWVyeS5jc3NIb29rc1sgcHJlZml4ICsgc3VmZml4IF0gPSB7XHJcblx0XHRleHBhbmQ6IGZ1bmN0aW9uKCB2YWx1ZSApIHtcclxuXHRcdFx0dmFyIGksXHJcblxyXG5cdFx0XHRcdC8vIGFzc3VtZXMgYSBzaW5nbGUgbnVtYmVyIGlmIG5vdCBhIHN0cmluZ1xyXG5cdFx0XHRcdHBhcnRzID0gdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiID8gdmFsdWUuc3BsaXQoXCIgXCIpIDogWyB2YWx1ZSBdLFxyXG5cdFx0XHRcdGV4cGFuZGVkID0ge307XHJcblxyXG5cdFx0XHRmb3IgKCBpID0gMDsgaSA8IDQ7IGkrKyApIHtcclxuXHRcdFx0XHRleHBhbmRlZFsgcHJlZml4ICsgY3NzRXhwYW5kWyBpIF0gKyBzdWZmaXggXSA9XHJcblx0XHRcdFx0XHRwYXJ0c1sgaSBdIHx8IHBhcnRzWyBpIC0gMiBdIHx8IHBhcnRzWyAwIF07XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdHJldHVybiBleHBhbmRlZDtcclxuXHRcdH1cclxuXHR9O1xyXG5cclxuXHRpZiAoICFybWFyZ2luLnRlc3QoIHByZWZpeCApICkge1xyXG5cdFx0alF1ZXJ5LmNzc0hvb2tzWyBwcmVmaXggKyBzdWZmaXggXS5zZXQgPSBzZXRQb3NpdGl2ZU51bWJlcjtcclxuXHR9XHJcbn0pO1xyXG52YXIgcjIwID0gLyUyMC9nLFxyXG5cdHJicmFja2V0ID0gL1xcW1xcXSQvLFxyXG5cdHJDUkxGID0gL1xccj9cXG4vZyxcclxuXHRyaW5wdXQgPSAvXig/OmNvbG9yfGRhdGV8ZGF0ZXRpbWV8ZGF0ZXRpbWUtbG9jYWx8ZW1haWx8aGlkZGVufG1vbnRofG51bWJlcnxwYXNzd29yZHxyYW5nZXxzZWFyY2h8dGVsfHRleHR8dGltZXx1cmx8d2VlaykkL2ksXHJcblx0cnNlbGVjdFRleHRhcmVhID0gL14oPzpzZWxlY3R8dGV4dGFyZWEpL2k7XHJcblxyXG5qUXVlcnkuZm4uZXh0ZW5kKHtcclxuXHRzZXJpYWxpemU6IGZ1bmN0aW9uKCkge1xyXG5cdFx0cmV0dXJuIGpRdWVyeS5wYXJhbSggdGhpcy5zZXJpYWxpemVBcnJheSgpICk7XHJcblx0fSxcclxuXHRzZXJpYWxpemVBcnJheTogZnVuY3Rpb24oKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXtcclxuXHRcdFx0cmV0dXJuIHRoaXMuZWxlbWVudHMgPyBqUXVlcnkubWFrZUFycmF5KCB0aGlzLmVsZW1lbnRzICkgOiB0aGlzO1xyXG5cdFx0fSlcclxuXHRcdC5maWx0ZXIoZnVuY3Rpb24oKXtcclxuXHRcdFx0cmV0dXJuIHRoaXMubmFtZSAmJiAhdGhpcy5kaXNhYmxlZCAmJlxyXG5cdFx0XHRcdCggdGhpcy5jaGVja2VkIHx8IHJzZWxlY3RUZXh0YXJlYS50ZXN0KCB0aGlzLm5vZGVOYW1lICkgfHxcclxuXHRcdFx0XHRcdHJpbnB1dC50ZXN0KCB0aGlzLnR5cGUgKSApO1xyXG5cdFx0fSlcclxuXHRcdC5tYXAoZnVuY3Rpb24oIGksIGVsZW0gKXtcclxuXHRcdFx0dmFyIHZhbCA9IGpRdWVyeSggdGhpcyApLnZhbCgpO1xyXG5cclxuXHRcdFx0cmV0dXJuIHZhbCA9PSBudWxsID9cclxuXHRcdFx0XHRudWxsIDpcclxuXHRcdFx0XHRqUXVlcnkuaXNBcnJheSggdmFsICkgP1xyXG5cdFx0XHRcdFx0alF1ZXJ5Lm1hcCggdmFsLCBmdW5jdGlvbiggdmFsLCBpICl7XHJcblx0XHRcdFx0XHRcdHJldHVybiB7IG5hbWU6IGVsZW0ubmFtZSwgdmFsdWU6IHZhbC5yZXBsYWNlKCByQ1JMRiwgXCJcXHJcXG5cIiApIH07XHJcblx0XHRcdFx0XHR9KSA6XHJcblx0XHRcdFx0XHR7IG5hbWU6IGVsZW0ubmFtZSwgdmFsdWU6IHZhbC5yZXBsYWNlKCByQ1JMRiwgXCJcXHJcXG5cIiApIH07XHJcblx0XHR9KS5nZXQoKTtcclxuXHR9XHJcbn0pO1xyXG5cclxuLy9TZXJpYWxpemUgYW4gYXJyYXkgb2YgZm9ybSBlbGVtZW50cyBvciBhIHNldCBvZlxyXG4vL2tleS92YWx1ZXMgaW50byBhIHF1ZXJ5IHN0cmluZ1xyXG5qUXVlcnkucGFyYW0gPSBmdW5jdGlvbiggYSwgdHJhZGl0aW9uYWwgKSB7XHJcblx0dmFyIHByZWZpeCxcclxuXHRcdHMgPSBbXSxcclxuXHRcdGFkZCA9IGZ1bmN0aW9uKCBrZXksIHZhbHVlICkge1xyXG5cdFx0XHQvLyBJZiB2YWx1ZSBpcyBhIGZ1bmN0aW9uLCBpbnZva2UgaXQgYW5kIHJldHVybiBpdHMgdmFsdWVcclxuXHRcdFx0dmFsdWUgPSBqUXVlcnkuaXNGdW5jdGlvbiggdmFsdWUgKSA/IHZhbHVlKCkgOiAoIHZhbHVlID09IG51bGwgPyBcIlwiIDogdmFsdWUgKTtcclxuXHRcdFx0c1sgcy5sZW5ndGggXSA9IGVuY29kZVVSSUNvbXBvbmVudCgga2V5ICkgKyBcIj1cIiArIGVuY29kZVVSSUNvbXBvbmVudCggdmFsdWUgKTtcclxuXHRcdH07XHJcblxyXG5cdC8vIFNldCB0cmFkaXRpb25hbCB0byB0cnVlIGZvciBqUXVlcnkgPD0gMS4zLjIgYmVoYXZpb3IuXHJcblx0aWYgKCB0cmFkaXRpb25hbCA9PT0gdW5kZWZpbmVkICkge1xyXG5cdFx0dHJhZGl0aW9uYWwgPSBqUXVlcnkuYWpheFNldHRpbmdzICYmIGpRdWVyeS5hamF4U2V0dGluZ3MudHJhZGl0aW9uYWw7XHJcblx0fVxyXG5cclxuXHQvLyBJZiBhbiBhcnJheSB3YXMgcGFzc2VkIGluLCBhc3N1bWUgdGhhdCBpdCBpcyBhbiBhcnJheSBvZiBmb3JtIGVsZW1lbnRzLlxyXG5cdGlmICggalF1ZXJ5LmlzQXJyYXkoIGEgKSB8fCAoIGEuanF1ZXJ5ICYmICFqUXVlcnkuaXNQbGFpbk9iamVjdCggYSApICkgKSB7XHJcblx0XHQvLyBTZXJpYWxpemUgdGhlIGZvcm0gZWxlbWVudHNcclxuXHRcdGpRdWVyeS5lYWNoKCBhLCBmdW5jdGlvbigpIHtcclxuXHRcdFx0YWRkKCB0aGlzLm5hbWUsIHRoaXMudmFsdWUgKTtcclxuXHRcdH0pO1xyXG5cclxuXHR9IGVsc2Uge1xyXG5cdFx0Ly8gSWYgdHJhZGl0aW9uYWwsIGVuY29kZSB0aGUgXCJvbGRcIiB3YXkgKHRoZSB3YXkgMS4zLjIgb3Igb2xkZXJcclxuXHRcdC8vIGRpZCBpdCksIG90aGVyd2lzZSBlbmNvZGUgcGFyYW1zIHJlY3Vyc2l2ZWx5LlxyXG5cdFx0Zm9yICggcHJlZml4IGluIGEgKSB7XHJcblx0XHRcdGJ1aWxkUGFyYW1zKCBwcmVmaXgsIGFbIHByZWZpeCBdLCB0cmFkaXRpb25hbCwgYWRkICk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvLyBSZXR1cm4gdGhlIHJlc3VsdGluZyBzZXJpYWxpemF0aW9uXHJcblx0cmV0dXJuIHMuam9pbiggXCImXCIgKS5yZXBsYWNlKCByMjAsIFwiK1wiICk7XHJcbn07XHJcblxyXG5mdW5jdGlvbiBidWlsZFBhcmFtcyggcHJlZml4LCBvYmosIHRyYWRpdGlvbmFsLCBhZGQgKSB7XHJcblx0dmFyIG5hbWU7XHJcblxyXG5cdGlmICggalF1ZXJ5LmlzQXJyYXkoIG9iaiApICkge1xyXG5cdFx0Ly8gU2VyaWFsaXplIGFycmF5IGl0ZW0uXHJcblx0XHRqUXVlcnkuZWFjaCggb2JqLCBmdW5jdGlvbiggaSwgdiApIHtcclxuXHRcdFx0aWYgKCB0cmFkaXRpb25hbCB8fCByYnJhY2tldC50ZXN0KCBwcmVmaXggKSApIHtcclxuXHRcdFx0XHQvLyBUcmVhdCBlYWNoIGFycmF5IGl0ZW0gYXMgYSBzY2FsYXIuXHJcblx0XHRcdFx0YWRkKCBwcmVmaXgsIHYgKTtcclxuXHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0Ly8gSWYgYXJyYXkgaXRlbSBpcyBub24tc2NhbGFyIChhcnJheSBvciBvYmplY3QpLCBlbmNvZGUgaXRzXHJcblx0XHRcdFx0Ly8gbnVtZXJpYyBpbmRleCB0byByZXNvbHZlIGRlc2VyaWFsaXphdGlvbiBhbWJpZ3VpdHkgaXNzdWVzLlxyXG5cdFx0XHRcdC8vIE5vdGUgdGhhdCByYWNrIChhcyBvZiAxLjAuMCkgY2FuJ3QgY3VycmVudGx5IGRlc2VyaWFsaXplXHJcblx0XHRcdFx0Ly8gbmVzdGVkIGFycmF5cyBwcm9wZXJseSwgYW5kIGF0dGVtcHRpbmcgdG8gZG8gc28gbWF5IGNhdXNlXHJcblx0XHRcdFx0Ly8gYSBzZXJ2ZXIgZXJyb3IuIFBvc3NpYmxlIGZpeGVzIGFyZSB0byBtb2RpZnkgcmFjaydzXHJcblx0XHRcdFx0Ly8gZGVzZXJpYWxpemF0aW9uIGFsZ29yaXRobSBvciB0byBwcm92aWRlIGFuIG9wdGlvbiBvciBmbGFnXHJcblx0XHRcdFx0Ly8gdG8gZm9yY2UgYXJyYXkgc2VyaWFsaXphdGlvbiB0byBiZSBzaGFsbG93LlxyXG5cdFx0XHRcdGJ1aWxkUGFyYW1zKCBwcmVmaXggKyBcIltcIiArICggdHlwZW9mIHYgPT09IFwib2JqZWN0XCIgPyBpIDogXCJcIiApICsgXCJdXCIsIHYsIHRyYWRpdGlvbmFsLCBhZGQgKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblxyXG5cdH0gZWxzZSBpZiAoICF0cmFkaXRpb25hbCAmJiBqUXVlcnkudHlwZSggb2JqICkgPT09IFwib2JqZWN0XCIgKSB7XHJcblx0XHQvLyBTZXJpYWxpemUgb2JqZWN0IGl0ZW0uXHJcblx0XHRmb3IgKCBuYW1lIGluIG9iaiApIHtcclxuXHRcdFx0YnVpbGRQYXJhbXMoIHByZWZpeCArIFwiW1wiICsgbmFtZSArIFwiXVwiLCBvYmpbIG5hbWUgXSwgdHJhZGl0aW9uYWwsIGFkZCApO1xyXG5cdFx0fVxyXG5cclxuXHR9IGVsc2Uge1xyXG5cdFx0Ly8gU2VyaWFsaXplIHNjYWxhciBpdGVtLlxyXG5cdFx0YWRkKCBwcmVmaXgsIG9iaiApO1xyXG5cdH1cclxufVxyXG52YXIgLy8gRG9jdW1lbnQgbG9jYXRpb25cclxuXHRhamF4TG9jYXRpb24sXHJcblx0Ly8gRG9jdW1lbnQgbG9jYXRpb24gc2VnbWVudHNcclxuXHRhamF4TG9jUGFydHMsXHJcblxyXG5cdHJoYXNoID0gLyMuKiQvLFxyXG5cdHJoZWFkZXJzID0gL14oLio/KTpbIFxcdF0qKFteXFxyXFxuXSopXFxyPyQvbWcsIC8vIElFIGxlYXZlcyBhbiBcXHIgY2hhcmFjdGVyIGF0IEVPTFxyXG5cdC8vICM3NjUzLCAjODEyNSwgIzgxNTI6IGxvY2FsIHByb3RvY29sIGRldGVjdGlvblxyXG5cdHJsb2NhbFByb3RvY29sID0gL14oPzphYm91dHxhcHB8YXBwXFwtc3RvcmFnZXwuK1xcLWV4dGVuc2lvbnxmaWxlfHJlc3x3aWRnZXQpOiQvLFxyXG5cdHJub0NvbnRlbnQgPSAvXig/OkdFVHxIRUFEKSQvLFxyXG5cdHJwcm90b2NvbCA9IC9eXFwvXFwvLyxcclxuXHRycXVlcnkgPSAvXFw/LyxcclxuXHRyc2NyaXB0ID0gLzxzY3JpcHRcXGJbXjxdKig/Oig/ITxcXC9zY3JpcHQ+KTxbXjxdKikqPFxcL3NjcmlwdD4vZ2ksXHJcblx0cnRzID0gLyhbPyZdKV89W14mXSovLFxyXG5cdHJ1cmwgPSAvXihbXFx3XFwrXFwuXFwtXSs6KSg/OlxcL1xcLyhbXlxcLz8jOl0qKSg/OjooXFxkKyl8KXwpLyxcclxuXHJcblx0Ly8gS2VlcCBhIGNvcHkgb2YgdGhlIG9sZCBsb2FkIG1ldGhvZFxyXG5cdF9sb2FkID0galF1ZXJ5LmZuLmxvYWQsXHJcblxyXG5cdC8qIFByZWZpbHRlcnNcclxuXHQgKiAxKSBUaGV5IGFyZSB1c2VmdWwgdG8gaW50cm9kdWNlIGN1c3RvbSBkYXRhVHlwZXMgKHNlZSBhamF4L2pzb25wLmpzIGZvciBhbiBleGFtcGxlKVxyXG5cdCAqIDIpIFRoZXNlIGFyZSBjYWxsZWQ6XHJcblx0ICogICAgLSBCRUZPUkUgYXNraW5nIGZvciBhIHRyYW5zcG9ydFxyXG5cdCAqICAgIC0gQUZURVIgcGFyYW0gc2VyaWFsaXphdGlvbiAocy5kYXRhIGlzIGEgc3RyaW5nIGlmIHMucHJvY2Vzc0RhdGEgaXMgdHJ1ZSlcclxuXHQgKiAzKSBrZXkgaXMgdGhlIGRhdGFUeXBlXHJcblx0ICogNCkgdGhlIGNhdGNoYWxsIHN5bWJvbCBcIipcIiBjYW4gYmUgdXNlZFxyXG5cdCAqIDUpIGV4ZWN1dGlvbiB3aWxsIHN0YXJ0IHdpdGggdHJhbnNwb3J0IGRhdGFUeXBlIGFuZCBUSEVOIGNvbnRpbnVlIGRvd24gdG8gXCIqXCIgaWYgbmVlZGVkXHJcblx0ICovXHJcblx0cHJlZmlsdGVycyA9IHt9LFxyXG5cclxuXHQvKiBUcmFuc3BvcnRzIGJpbmRpbmdzXHJcblx0ICogMSkga2V5IGlzIHRoZSBkYXRhVHlwZVxyXG5cdCAqIDIpIHRoZSBjYXRjaGFsbCBzeW1ib2wgXCIqXCIgY2FuIGJlIHVzZWRcclxuXHQgKiAzKSBzZWxlY3Rpb24gd2lsbCBzdGFydCB3aXRoIHRyYW5zcG9ydCBkYXRhVHlwZSBhbmQgVEhFTiBnbyB0byBcIipcIiBpZiBuZWVkZWRcclxuXHQgKi9cclxuXHR0cmFuc3BvcnRzID0ge30sXHJcblxyXG5cdC8vIEF2b2lkIGNvbW1lbnQtcHJvbG9nIGNoYXIgc2VxdWVuY2UgKCMxMDA5OCk7IG11c3QgYXBwZWFzZSBsaW50IGFuZCBldmFkZSBjb21wcmVzc2lvblxyXG5cdGFsbFR5cGVzID0gW1wiKi9cIl0gKyBbXCIqXCJdO1xyXG5cclxuLy8gIzgxMzgsIElFIG1heSB0aHJvdyBhbiBleGNlcHRpb24gd2hlbiBhY2Nlc3NpbmdcclxuLy8gYSBmaWVsZCBmcm9tIHdpbmRvdy5sb2NhdGlvbiBpZiBkb2N1bWVudC5kb21haW4gaGFzIGJlZW4gc2V0XHJcbnRyeSB7XHJcblx0YWpheExvY2F0aW9uID0gbG9jYXRpb24uaHJlZjtcclxufSBjYXRjaCggZSApIHtcclxuXHQvLyBVc2UgdGhlIGhyZWYgYXR0cmlidXRlIG9mIGFuIEEgZWxlbWVudFxyXG5cdC8vIHNpbmNlIElFIHdpbGwgbW9kaWZ5IGl0IGdpdmVuIGRvY3VtZW50LmxvY2F0aW9uXHJcblx0YWpheExvY2F0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJhXCIgKTtcclxuXHRhamF4TG9jYXRpb24uaHJlZiA9IFwiXCI7XHJcblx0YWpheExvY2F0aW9uID0gYWpheExvY2F0aW9uLmhyZWY7XHJcbn1cclxuXHJcbi8vIFNlZ21lbnQgbG9jYXRpb24gaW50byBwYXJ0c1xyXG5hamF4TG9jUGFydHMgPSBydXJsLmV4ZWMoIGFqYXhMb2NhdGlvbi50b0xvd2VyQ2FzZSgpICkgfHwgW107XHJcblxyXG4vLyBCYXNlIFwiY29uc3RydWN0b3JcIiBmb3IgalF1ZXJ5LmFqYXhQcmVmaWx0ZXIgYW5kIGpRdWVyeS5hamF4VHJhbnNwb3J0XHJcbmZ1bmN0aW9uIGFkZFRvUHJlZmlsdGVyc09yVHJhbnNwb3J0cyggc3RydWN0dXJlICkge1xyXG5cclxuXHQvLyBkYXRhVHlwZUV4cHJlc3Npb24gaXMgb3B0aW9uYWwgYW5kIGRlZmF1bHRzIHRvIFwiKlwiXHJcblx0cmV0dXJuIGZ1bmN0aW9uKCBkYXRhVHlwZUV4cHJlc3Npb24sIGZ1bmMgKSB7XHJcblxyXG5cdFx0aWYgKCB0eXBlb2YgZGF0YVR5cGVFeHByZXNzaW9uICE9PSBcInN0cmluZ1wiICkge1xyXG5cdFx0XHRmdW5jID0gZGF0YVR5cGVFeHByZXNzaW9uO1xyXG5cdFx0XHRkYXRhVHlwZUV4cHJlc3Npb24gPSBcIipcIjtcclxuXHRcdH1cclxuXHJcblx0XHR2YXIgZGF0YVR5cGUsIGxpc3QsIHBsYWNlQmVmb3JlLFxyXG5cdFx0XHRkYXRhVHlwZXMgPSBkYXRhVHlwZUV4cHJlc3Npb24udG9Mb3dlckNhc2UoKS5zcGxpdCggY29yZV9yc3BhY2UgKSxcclxuXHRcdFx0aSA9IDAsXHJcblx0XHRcdGxlbmd0aCA9IGRhdGFUeXBlcy5sZW5ndGg7XHJcblxyXG5cdFx0aWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggZnVuYyApICkge1xyXG5cdFx0XHQvLyBGb3IgZWFjaCBkYXRhVHlwZSBpbiB0aGUgZGF0YVR5cGVFeHByZXNzaW9uXHJcblx0XHRcdGZvciAoIDsgaSA8IGxlbmd0aDsgaSsrICkge1xyXG5cdFx0XHRcdGRhdGFUeXBlID0gZGF0YVR5cGVzWyBpIF07XHJcblx0XHRcdFx0Ly8gV2UgY29udHJvbCBpZiB3ZSdyZSBhc2tlZCB0byBhZGQgYmVmb3JlXHJcblx0XHRcdFx0Ly8gYW55IGV4aXN0aW5nIGVsZW1lbnRcclxuXHRcdFx0XHRwbGFjZUJlZm9yZSA9IC9eXFwrLy50ZXN0KCBkYXRhVHlwZSApO1xyXG5cdFx0XHRcdGlmICggcGxhY2VCZWZvcmUgKSB7XHJcblx0XHRcdFx0XHRkYXRhVHlwZSA9IGRhdGFUeXBlLnN1YnN0ciggMSApIHx8IFwiKlwiO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRsaXN0ID0gc3RydWN0dXJlWyBkYXRhVHlwZSBdID0gc3RydWN0dXJlWyBkYXRhVHlwZSBdIHx8IFtdO1xyXG5cdFx0XHRcdC8vIHRoZW4gd2UgYWRkIHRvIHRoZSBzdHJ1Y3R1cmUgYWNjb3JkaW5nbHlcclxuXHRcdFx0XHRsaXN0WyBwbGFjZUJlZm9yZSA/IFwidW5zaGlmdFwiIDogXCJwdXNoXCIgXSggZnVuYyApO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fTtcclxufVxyXG5cclxuLy8gQmFzZSBpbnNwZWN0aW9uIGZ1bmN0aW9uIGZvciBwcmVmaWx0ZXJzIGFuZCB0cmFuc3BvcnRzXHJcbmZ1bmN0aW9uIGluc3BlY3RQcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCBzdHJ1Y3R1cmUsIG9wdGlvbnMsIG9yaWdpbmFsT3B0aW9ucywganFYSFIsXHJcblx0XHRkYXRhVHlwZSAvKiBpbnRlcm5hbCAqLywgaW5zcGVjdGVkIC8qIGludGVybmFsICovICkge1xyXG5cclxuXHRkYXRhVHlwZSA9IGRhdGFUeXBlIHx8IG9wdGlvbnMuZGF0YVR5cGVzWyAwIF07XHJcblx0aW5zcGVjdGVkID0gaW5zcGVjdGVkIHx8IHt9O1xyXG5cclxuXHRpbnNwZWN0ZWRbIGRhdGFUeXBlIF0gPSB0cnVlO1xyXG5cclxuXHR2YXIgc2VsZWN0aW9uLFxyXG5cdFx0bGlzdCA9IHN0cnVjdHVyZVsgZGF0YVR5cGUgXSxcclxuXHRcdGkgPSAwLFxyXG5cdFx0bGVuZ3RoID0gbGlzdCA/IGxpc3QubGVuZ3RoIDogMCxcclxuXHRcdGV4ZWN1dGVPbmx5ID0gKCBzdHJ1Y3R1cmUgPT09IHByZWZpbHRlcnMgKTtcclxuXHJcblx0Zm9yICggOyBpIDwgbGVuZ3RoICYmICggZXhlY3V0ZU9ubHkgfHwgIXNlbGVjdGlvbiApOyBpKysgKSB7XHJcblx0XHRzZWxlY3Rpb24gPSBsaXN0WyBpIF0oIG9wdGlvbnMsIG9yaWdpbmFsT3B0aW9ucywganFYSFIgKTtcclxuXHRcdC8vIElmIHdlIGdvdCByZWRpcmVjdGVkIHRvIGFub3RoZXIgZGF0YVR5cGVcclxuXHRcdC8vIHdlIHRyeSB0aGVyZSBpZiBleGVjdXRpbmcgb25seSBhbmQgbm90IGRvbmUgYWxyZWFkeVxyXG5cdFx0aWYgKCB0eXBlb2Ygc2VsZWN0aW9uID09PSBcInN0cmluZ1wiICkge1xyXG5cdFx0XHRpZiAoICFleGVjdXRlT25seSB8fCBpbnNwZWN0ZWRbIHNlbGVjdGlvbiBdICkge1xyXG5cdFx0XHRcdHNlbGVjdGlvbiA9IHVuZGVmaW5lZDtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRvcHRpb25zLmRhdGFUeXBlcy51bnNoaWZ0KCBzZWxlY3Rpb24gKTtcclxuXHRcdFx0XHRzZWxlY3Rpb24gPSBpbnNwZWN0UHJlZmlsdGVyc09yVHJhbnNwb3J0cyhcclxuXHRcdFx0XHRcdFx0c3RydWN0dXJlLCBvcHRpb25zLCBvcmlnaW5hbE9wdGlvbnMsIGpxWEhSLCBzZWxlY3Rpb24sIGluc3BlY3RlZCApO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cdC8vIElmIHdlJ3JlIG9ubHkgZXhlY3V0aW5nIG9yIG5vdGhpbmcgd2FzIHNlbGVjdGVkXHJcblx0Ly8gd2UgdHJ5IHRoZSBjYXRjaGFsbCBkYXRhVHlwZSBpZiBub3QgZG9uZSBhbHJlYWR5XHJcblx0aWYgKCAoIGV4ZWN1dGVPbmx5IHx8ICFzZWxlY3Rpb24gKSAmJiAhaW5zcGVjdGVkWyBcIipcIiBdICkge1xyXG5cdFx0c2VsZWN0aW9uID0gaW5zcGVjdFByZWZpbHRlcnNPclRyYW5zcG9ydHMoXHJcblx0XHRcdFx0c3RydWN0dXJlLCBvcHRpb25zLCBvcmlnaW5hbE9wdGlvbnMsIGpxWEhSLCBcIipcIiwgaW5zcGVjdGVkICk7XHJcblx0fVxyXG5cdC8vIHVubmVjZXNzYXJ5IHdoZW4gb25seSBleGVjdXRpbmcgKHByZWZpbHRlcnMpXHJcblx0Ly8gYnV0IGl0J2xsIGJlIGlnbm9yZWQgYnkgdGhlIGNhbGxlciBpbiB0aGF0IGNhc2VcclxuXHRyZXR1cm4gc2VsZWN0aW9uO1xyXG59XHJcblxyXG4vLyBBIHNwZWNpYWwgZXh0ZW5kIGZvciBhamF4IG9wdGlvbnNcclxuLy8gdGhhdCB0YWtlcyBcImZsYXRcIiBvcHRpb25zIChub3QgdG8gYmUgZGVlcCBleHRlbmRlZClcclxuLy8gRml4ZXMgIzk4ODdcclxuZnVuY3Rpb24gYWpheEV4dGVuZCggdGFyZ2V0LCBzcmMgKSB7XHJcblx0dmFyIGtleSwgZGVlcCxcclxuXHRcdGZsYXRPcHRpb25zID0galF1ZXJ5LmFqYXhTZXR0aW5ncy5mbGF0T3B0aW9ucyB8fCB7fTtcclxuXHRmb3IgKCBrZXkgaW4gc3JjICkge1xyXG5cdFx0aWYgKCBzcmNbIGtleSBdICE9PSB1bmRlZmluZWQgKSB7XHJcblx0XHRcdCggZmxhdE9wdGlvbnNbIGtleSBdID8gdGFyZ2V0IDogKCBkZWVwIHx8ICggZGVlcCA9IHt9ICkgKSApWyBrZXkgXSA9IHNyY1sga2V5IF07XHJcblx0XHR9XHJcblx0fVxyXG5cdGlmICggZGVlcCApIHtcclxuXHRcdGpRdWVyeS5leHRlbmQoIHRydWUsIHRhcmdldCwgZGVlcCApO1xyXG5cdH1cclxufVxyXG5cclxualF1ZXJ5LmZuLmxvYWQgPSBmdW5jdGlvbiggdXJsLCBwYXJhbXMsIGNhbGxiYWNrICkge1xyXG5cdGlmICggdHlwZW9mIHVybCAhPT0gXCJzdHJpbmdcIiAmJiBfbG9hZCApIHtcclxuXHRcdHJldHVybiBfbG9hZC5hcHBseSggdGhpcywgYXJndW1lbnRzICk7XHJcblx0fVxyXG5cclxuXHQvLyBEb24ndCBkbyBhIHJlcXVlc3QgaWYgbm8gZWxlbWVudHMgYXJlIGJlaW5nIHJlcXVlc3RlZFxyXG5cdGlmICggIXRoaXMubGVuZ3RoICkge1xyXG5cdFx0cmV0dXJuIHRoaXM7XHJcblx0fVxyXG5cclxuXHR2YXIgc2VsZWN0b3IsIHR5cGUsIHJlc3BvbnNlLFxyXG5cdFx0c2VsZiA9IHRoaXMsXHJcblx0XHRvZmYgPSB1cmwuaW5kZXhPZihcIiBcIik7XHJcblxyXG5cdGlmICggb2ZmID49IDAgKSB7XHJcblx0XHRzZWxlY3RvciA9IHVybC5zbGljZSggb2ZmLCB1cmwubGVuZ3RoICk7XHJcblx0XHR1cmwgPSB1cmwuc2xpY2UoIDAsIG9mZiApO1xyXG5cdH1cclxuXHJcblx0Ly8gSWYgaXQncyBhIGZ1bmN0aW9uXHJcblx0aWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggcGFyYW1zICkgKSB7XHJcblxyXG5cdFx0Ly8gV2UgYXNzdW1lIHRoYXQgaXQncyB0aGUgY2FsbGJhY2tcclxuXHRcdGNhbGxiYWNrID0gcGFyYW1zO1xyXG5cdFx0cGFyYW1zID0gdW5kZWZpbmVkO1xyXG5cclxuXHQvLyBPdGhlcndpc2UsIGJ1aWxkIGEgcGFyYW0gc3RyaW5nXHJcblx0fSBlbHNlIGlmICggcGFyYW1zICYmIHR5cGVvZiBwYXJhbXMgPT09IFwib2JqZWN0XCIgKSB7XHJcblx0XHR0eXBlID0gXCJQT1NUXCI7XHJcblx0fVxyXG5cclxuXHQvLyBSZXF1ZXN0IHRoZSByZW1vdGUgZG9jdW1lbnRcclxuXHRqUXVlcnkuYWpheCh7XHJcblx0XHR1cmw6IHVybCxcclxuXHJcblx0XHQvLyBpZiBcInR5cGVcIiB2YXJpYWJsZSBpcyB1bmRlZmluZWQsIHRoZW4gXCJHRVRcIiBtZXRob2Qgd2lsbCBiZSB1c2VkXHJcblx0XHR0eXBlOiB0eXBlLFxyXG5cdFx0ZGF0YVR5cGU6IFwiaHRtbFwiLFxyXG5cdFx0ZGF0YTogcGFyYW1zLFxyXG5cdFx0Y29tcGxldGU6IGZ1bmN0aW9uKCBqcVhIUiwgc3RhdHVzICkge1xyXG5cdFx0XHRpZiAoIGNhbGxiYWNrICkge1xyXG5cdFx0XHRcdHNlbGYuZWFjaCggY2FsbGJhY2ssIHJlc3BvbnNlIHx8IFsganFYSFIucmVzcG9uc2VUZXh0LCBzdGF0dXMsIGpxWEhSIF0gKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH0pLmRvbmUoZnVuY3Rpb24oIHJlc3BvbnNlVGV4dCApIHtcclxuXHJcblx0XHQvLyBTYXZlIHJlc3BvbnNlIGZvciB1c2UgaW4gY29tcGxldGUgY2FsbGJhY2tcclxuXHRcdHJlc3BvbnNlID0gYXJndW1lbnRzO1xyXG5cclxuXHRcdC8vIFNlZSBpZiBhIHNlbGVjdG9yIHdhcyBzcGVjaWZpZWRcclxuXHRcdHNlbGYuaHRtbCggc2VsZWN0b3IgP1xyXG5cclxuXHRcdFx0Ly8gQ3JlYXRlIGEgZHVtbXkgZGl2IHRvIGhvbGQgdGhlIHJlc3VsdHNcclxuXHRcdFx0alF1ZXJ5KFwiPGRpdj5cIilcclxuXHJcblx0XHRcdFx0Ly8gaW5qZWN0IHRoZSBjb250ZW50cyBvZiB0aGUgZG9jdW1lbnQgaW4sIHJlbW92aW5nIHRoZSBzY3JpcHRzXHJcblx0XHRcdFx0Ly8gdG8gYXZvaWQgYW55ICdQZXJtaXNzaW9uIERlbmllZCcgZXJyb3JzIGluIElFXHJcblx0XHRcdFx0LmFwcGVuZCggcmVzcG9uc2VUZXh0LnJlcGxhY2UoIHJzY3JpcHQsIFwiXCIgKSApXHJcblxyXG5cdFx0XHRcdC8vIExvY2F0ZSB0aGUgc3BlY2lmaWVkIGVsZW1lbnRzXHJcblx0XHRcdFx0LmZpbmQoIHNlbGVjdG9yICkgOlxyXG5cclxuXHRcdFx0Ly8gSWYgbm90LCBqdXN0IGluamVjdCB0aGUgZnVsbCByZXN1bHRcclxuXHRcdFx0cmVzcG9uc2VUZXh0ICk7XHJcblxyXG5cdH0pO1xyXG5cclxuXHRyZXR1cm4gdGhpcztcclxufTtcclxuXHJcbi8vIEF0dGFjaCBhIGJ1bmNoIG9mIGZ1bmN0aW9ucyBmb3IgaGFuZGxpbmcgY29tbW9uIEFKQVggZXZlbnRzXHJcbmpRdWVyeS5lYWNoKCBcImFqYXhTdGFydCBhamF4U3RvcCBhamF4Q29tcGxldGUgYWpheEVycm9yIGFqYXhTdWNjZXNzIGFqYXhTZW5kXCIuc3BsaXQoIFwiIFwiICksIGZ1bmN0aW9uKCBpLCBvICl7XHJcblx0alF1ZXJ5LmZuWyBvIF0gPSBmdW5jdGlvbiggZiApe1xyXG5cdFx0cmV0dXJuIHRoaXMub24oIG8sIGYgKTtcclxuXHR9O1xyXG59KTtcclxuXHJcbmpRdWVyeS5lYWNoKCBbIFwiZ2V0XCIsIFwicG9zdFwiIF0sIGZ1bmN0aW9uKCBpLCBtZXRob2QgKSB7XHJcblx0alF1ZXJ5WyBtZXRob2QgXSA9IGZ1bmN0aW9uKCB1cmwsIGRhdGEsIGNhbGxiYWNrLCB0eXBlICkge1xyXG5cdFx0Ly8gc2hpZnQgYXJndW1lbnRzIGlmIGRhdGEgYXJndW1lbnQgd2FzIG9taXR0ZWRcclxuXHRcdGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIGRhdGEgKSApIHtcclxuXHRcdFx0dHlwZSA9IHR5cGUgfHwgY2FsbGJhY2s7XHJcblx0XHRcdGNhbGxiYWNrID0gZGF0YTtcclxuXHRcdFx0ZGF0YSA9IHVuZGVmaW5lZDtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4galF1ZXJ5LmFqYXgoe1xyXG5cdFx0XHR0eXBlOiBtZXRob2QsXHJcblx0XHRcdHVybDogdXJsLFxyXG5cdFx0XHRkYXRhOiBkYXRhLFxyXG5cdFx0XHRzdWNjZXNzOiBjYWxsYmFjayxcclxuXHRcdFx0ZGF0YVR5cGU6IHR5cGVcclxuXHRcdH0pO1xyXG5cdH07XHJcbn0pO1xyXG5cclxualF1ZXJ5LmV4dGVuZCh7XHJcblxyXG5cdGdldFNjcmlwdDogZnVuY3Rpb24oIHVybCwgY2FsbGJhY2sgKSB7XHJcblx0XHRyZXR1cm4galF1ZXJ5LmdldCggdXJsLCB1bmRlZmluZWQsIGNhbGxiYWNrLCBcInNjcmlwdFwiICk7XHJcblx0fSxcclxuXHJcblx0Z2V0SlNPTjogZnVuY3Rpb24oIHVybCwgZGF0YSwgY2FsbGJhY2sgKSB7XHJcblx0XHRyZXR1cm4galF1ZXJ5LmdldCggdXJsLCBkYXRhLCBjYWxsYmFjaywgXCJqc29uXCIgKTtcclxuXHR9LFxyXG5cclxuXHQvLyBDcmVhdGVzIGEgZnVsbCBmbGVkZ2VkIHNldHRpbmdzIG9iamVjdCBpbnRvIHRhcmdldFxyXG5cdC8vIHdpdGggYm90aCBhamF4U2V0dGluZ3MgYW5kIHNldHRpbmdzIGZpZWxkcy5cclxuXHQvLyBJZiB0YXJnZXQgaXMgb21pdHRlZCwgd3JpdGVzIGludG8gYWpheFNldHRpbmdzLlxyXG5cdGFqYXhTZXR1cDogZnVuY3Rpb24oIHRhcmdldCwgc2V0dGluZ3MgKSB7XHJcblx0XHRpZiAoIHNldHRpbmdzICkge1xyXG5cdFx0XHQvLyBCdWlsZGluZyBhIHNldHRpbmdzIG9iamVjdFxyXG5cdFx0XHRhamF4RXh0ZW5kKCB0YXJnZXQsIGpRdWVyeS5hamF4U2V0dGluZ3MgKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdC8vIEV4dGVuZGluZyBhamF4U2V0dGluZ3NcclxuXHRcdFx0c2V0dGluZ3MgPSB0YXJnZXQ7XHJcblx0XHRcdHRhcmdldCA9IGpRdWVyeS5hamF4U2V0dGluZ3M7XHJcblx0XHR9XHJcblx0XHRhamF4RXh0ZW5kKCB0YXJnZXQsIHNldHRpbmdzICk7XHJcblx0XHRyZXR1cm4gdGFyZ2V0O1xyXG5cdH0sXHJcblxyXG5cdGFqYXhTZXR0aW5nczoge1xyXG5cdFx0dXJsOiBhamF4TG9jYXRpb24sXHJcblx0XHRpc0xvY2FsOiBybG9jYWxQcm90b2NvbC50ZXN0KCBhamF4TG9jUGFydHNbIDEgXSApLFxyXG5cdFx0Z2xvYmFsOiB0cnVlLFxyXG5cdFx0dHlwZTogXCJHRVRcIixcclxuXHRcdGNvbnRlbnRUeXBlOiBcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD1VVEYtOFwiLFxyXG5cdFx0cHJvY2Vzc0RhdGE6IHRydWUsXHJcblx0XHRhc3luYzogdHJ1ZSxcclxuXHRcdC8qXHJcblx0XHR0aW1lb3V0OiAwLFxyXG5cdFx0ZGF0YTogbnVsbCxcclxuXHRcdGRhdGFUeXBlOiBudWxsLFxyXG5cdFx0dXNlcm5hbWU6IG51bGwsXHJcblx0XHRwYXNzd29yZDogbnVsbCxcclxuXHRcdGNhY2hlOiBudWxsLFxyXG5cdFx0dGhyb3dzOiBmYWxzZSxcclxuXHRcdHRyYWRpdGlvbmFsOiBmYWxzZSxcclxuXHRcdGhlYWRlcnM6IHt9LFxyXG5cdFx0Ki9cclxuXHJcblx0XHRhY2NlcHRzOiB7XHJcblx0XHRcdHhtbDogXCJhcHBsaWNhdGlvbi94bWwsIHRleHQveG1sXCIsXHJcblx0XHRcdGh0bWw6IFwidGV4dC9odG1sXCIsXHJcblx0XHRcdHRleHQ6IFwidGV4dC9wbGFpblwiLFxyXG5cdFx0XHRqc29uOiBcImFwcGxpY2F0aW9uL2pzb24sIHRleHQvamF2YXNjcmlwdFwiLFxyXG5cdFx0XHRcIipcIjogYWxsVHlwZXNcclxuXHRcdH0sXHJcblxyXG5cdFx0Y29udGVudHM6IHtcclxuXHRcdFx0eG1sOiAveG1sLyxcclxuXHRcdFx0aHRtbDogL2h0bWwvLFxyXG5cdFx0XHRqc29uOiAvanNvbi9cclxuXHRcdH0sXHJcblxyXG5cdFx0cmVzcG9uc2VGaWVsZHM6IHtcclxuXHRcdFx0eG1sOiBcInJlc3BvbnNlWE1MXCIsXHJcblx0XHRcdHRleHQ6IFwicmVzcG9uc2VUZXh0XCJcclxuXHRcdH0sXHJcblxyXG5cdFx0Ly8gTGlzdCBvZiBkYXRhIGNvbnZlcnRlcnNcclxuXHRcdC8vIDEpIGtleSBmb3JtYXQgaXMgXCJzb3VyY2VfdHlwZSBkZXN0aW5hdGlvbl90eXBlXCIgKGEgc2luZ2xlIHNwYWNlIGluLWJldHdlZW4pXHJcblx0XHQvLyAyKSB0aGUgY2F0Y2hhbGwgc3ltYm9sIFwiKlwiIGNhbiBiZSB1c2VkIGZvciBzb3VyY2VfdHlwZVxyXG5cdFx0Y29udmVydGVyczoge1xyXG5cclxuXHRcdFx0Ly8gQ29udmVydCBhbnl0aGluZyB0byB0ZXh0XHJcblx0XHRcdFwiKiB0ZXh0XCI6IHdpbmRvdy5TdHJpbmcsXHJcblxyXG5cdFx0XHQvLyBUZXh0IHRvIGh0bWwgKHRydWUgPSBubyB0cmFuc2Zvcm1hdGlvbilcclxuXHRcdFx0XCJ0ZXh0IGh0bWxcIjogdHJ1ZSxcclxuXHJcblx0XHRcdC8vIEV2YWx1YXRlIHRleHQgYXMgYSBqc29uIGV4cHJlc3Npb25cclxuXHRcdFx0XCJ0ZXh0IGpzb25cIjogalF1ZXJ5LnBhcnNlSlNPTixcclxuXHJcblx0XHRcdC8vIFBhcnNlIHRleHQgYXMgeG1sXHJcblx0XHRcdFwidGV4dCB4bWxcIjogalF1ZXJ5LnBhcnNlWE1MXHJcblx0XHR9LFxyXG5cclxuXHRcdC8vIEZvciBvcHRpb25zIHRoYXQgc2hvdWxkbid0IGJlIGRlZXAgZXh0ZW5kZWQ6XHJcblx0XHQvLyB5b3UgY2FuIGFkZCB5b3VyIG93biBjdXN0b20gb3B0aW9ucyBoZXJlIGlmXHJcblx0XHQvLyBhbmQgd2hlbiB5b3UgY3JlYXRlIG9uZSB0aGF0IHNob3VsZG4ndCBiZVxyXG5cdFx0Ly8gZGVlcCBleHRlbmRlZCAoc2VlIGFqYXhFeHRlbmQpXHJcblx0XHRmbGF0T3B0aW9uczoge1xyXG5cdFx0XHRjb250ZXh0OiB0cnVlLFxyXG5cdFx0XHR1cmw6IHRydWVcclxuXHRcdH1cclxuXHR9LFxyXG5cclxuXHRhamF4UHJlZmlsdGVyOiBhZGRUb1ByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHByZWZpbHRlcnMgKSxcclxuXHRhamF4VHJhbnNwb3J0OiBhZGRUb1ByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHRyYW5zcG9ydHMgKSxcclxuXHJcblx0Ly8gTWFpbiBtZXRob2RcclxuXHRhamF4OiBmdW5jdGlvbiggdXJsLCBvcHRpb25zICkge1xyXG5cclxuXHRcdC8vIElmIHVybCBpcyBhbiBvYmplY3QsIHNpbXVsYXRlIHByZS0xLjUgc2lnbmF0dXJlXHJcblx0XHRpZiAoIHR5cGVvZiB1cmwgPT09IFwib2JqZWN0XCIgKSB7XHJcblx0XHRcdG9wdGlvbnMgPSB1cmw7XHJcblx0XHRcdHVybCA9IHVuZGVmaW5lZDtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBGb3JjZSBvcHRpb25zIHRvIGJlIGFuIG9iamVjdFxyXG5cdFx0b3B0aW9ucyA9IG9wdGlvbnMgfHwge307XHJcblxyXG5cdFx0dmFyIC8vIGlmTW9kaWZpZWQga2V5XHJcblx0XHRcdGlmTW9kaWZpZWRLZXksXHJcblx0XHRcdC8vIFJlc3BvbnNlIGhlYWRlcnNcclxuXHRcdFx0cmVzcG9uc2VIZWFkZXJzU3RyaW5nLFxyXG5cdFx0XHRyZXNwb25zZUhlYWRlcnMsXHJcblx0XHRcdC8vIHRyYW5zcG9ydFxyXG5cdFx0XHR0cmFuc3BvcnQsXHJcblx0XHRcdC8vIHRpbWVvdXQgaGFuZGxlXHJcblx0XHRcdHRpbWVvdXRUaW1lcixcclxuXHRcdFx0Ly8gQ3Jvc3MtZG9tYWluIGRldGVjdGlvbiB2YXJzXHJcblx0XHRcdHBhcnRzLFxyXG5cdFx0XHQvLyBUbyBrbm93IGlmIGdsb2JhbCBldmVudHMgYXJlIHRvIGJlIGRpc3BhdGNoZWRcclxuXHRcdFx0ZmlyZUdsb2JhbHMsXHJcblx0XHRcdC8vIExvb3AgdmFyaWFibGVcclxuXHRcdFx0aSxcclxuXHRcdFx0Ly8gQ3JlYXRlIHRoZSBmaW5hbCBvcHRpb25zIG9iamVjdFxyXG5cdFx0XHRzID0galF1ZXJ5LmFqYXhTZXR1cCgge30sIG9wdGlvbnMgKSxcclxuXHRcdFx0Ly8gQ2FsbGJhY2tzIGNvbnRleHRcclxuXHRcdFx0Y2FsbGJhY2tDb250ZXh0ID0gcy5jb250ZXh0IHx8IHMsXHJcblx0XHRcdC8vIENvbnRleHQgZm9yIGdsb2JhbCBldmVudHNcclxuXHRcdFx0Ly8gSXQncyB0aGUgY2FsbGJhY2tDb250ZXh0IGlmIG9uZSB3YXMgcHJvdmlkZWQgaW4gdGhlIG9wdGlvbnNcclxuXHRcdFx0Ly8gYW5kIGlmIGl0J3MgYSBET00gbm9kZSBvciBhIGpRdWVyeSBjb2xsZWN0aW9uXHJcblx0XHRcdGdsb2JhbEV2ZW50Q29udGV4dCA9IGNhbGxiYWNrQ29udGV4dCAhPT0gcyAmJlxyXG5cdFx0XHRcdCggY2FsbGJhY2tDb250ZXh0Lm5vZGVUeXBlIHx8IGNhbGxiYWNrQ29udGV4dCBpbnN0YW5jZW9mIGpRdWVyeSApID9cclxuXHRcdFx0XHRcdFx0alF1ZXJ5KCBjYWxsYmFja0NvbnRleHQgKSA6IGpRdWVyeS5ldmVudCxcclxuXHRcdFx0Ly8gRGVmZXJyZWRzXHJcblx0XHRcdGRlZmVycmVkID0galF1ZXJ5LkRlZmVycmVkKCksXHJcblx0XHRcdGNvbXBsZXRlRGVmZXJyZWQgPSBqUXVlcnkuQ2FsbGJhY2tzKCBcIm9uY2UgbWVtb3J5XCIgKSxcclxuXHRcdFx0Ly8gU3RhdHVzLWRlcGVuZGVudCBjYWxsYmFja3NcclxuXHRcdFx0c3RhdHVzQ29kZSA9IHMuc3RhdHVzQ29kZSB8fCB7fSxcclxuXHRcdFx0Ly8gSGVhZGVycyAodGhleSBhcmUgc2VudCBhbGwgYXQgb25jZSlcclxuXHRcdFx0cmVxdWVzdEhlYWRlcnMgPSB7fSxcclxuXHRcdFx0cmVxdWVzdEhlYWRlcnNOYW1lcyA9IHt9LFxyXG5cdFx0XHQvLyBUaGUganFYSFIgc3RhdGVcclxuXHRcdFx0c3RhdGUgPSAwLFxyXG5cdFx0XHQvLyBEZWZhdWx0IGFib3J0IG1lc3NhZ2VcclxuXHRcdFx0c3RyQWJvcnQgPSBcImNhbmNlbGVkXCIsXHJcblx0XHRcdC8vIEZha2UgeGhyXHJcblx0XHRcdGpxWEhSID0ge1xyXG5cclxuXHRcdFx0XHRyZWFkeVN0YXRlOiAwLFxyXG5cclxuXHRcdFx0XHQvLyBDYWNoZXMgdGhlIGhlYWRlclxyXG5cdFx0XHRcdHNldFJlcXVlc3RIZWFkZXI6IGZ1bmN0aW9uKCBuYW1lLCB2YWx1ZSApIHtcclxuXHRcdFx0XHRcdGlmICggIXN0YXRlICkge1xyXG5cdFx0XHRcdFx0XHR2YXIgbG5hbWUgPSBuYW1lLnRvTG93ZXJDYXNlKCk7XHJcblx0XHRcdFx0XHRcdG5hbWUgPSByZXF1ZXN0SGVhZGVyc05hbWVzWyBsbmFtZSBdID0gcmVxdWVzdEhlYWRlcnNOYW1lc1sgbG5hbWUgXSB8fCBuYW1lO1xyXG5cdFx0XHRcdFx0XHRyZXF1ZXN0SGVhZGVyc1sgbmFtZSBdID0gdmFsdWU7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRyZXR1cm4gdGhpcztcclxuXHRcdFx0XHR9LFxyXG5cclxuXHRcdFx0XHQvLyBSYXcgc3RyaW5nXHJcblx0XHRcdFx0Z2V0QWxsUmVzcG9uc2VIZWFkZXJzOiBmdW5jdGlvbigpIHtcclxuXHRcdFx0XHRcdHJldHVybiBzdGF0ZSA9PT0gMiA/IHJlc3BvbnNlSGVhZGVyc1N0cmluZyA6IG51bGw7XHJcblx0XHRcdFx0fSxcclxuXHJcblx0XHRcdFx0Ly8gQnVpbGRzIGhlYWRlcnMgaGFzaHRhYmxlIGlmIG5lZWRlZFxyXG5cdFx0XHRcdGdldFJlc3BvbnNlSGVhZGVyOiBmdW5jdGlvbigga2V5ICkge1xyXG5cdFx0XHRcdFx0dmFyIG1hdGNoO1xyXG5cdFx0XHRcdFx0aWYgKCBzdGF0ZSA9PT0gMiApIHtcclxuXHRcdFx0XHRcdFx0aWYgKCAhcmVzcG9uc2VIZWFkZXJzICkge1xyXG5cdFx0XHRcdFx0XHRcdHJlc3BvbnNlSGVhZGVycyA9IHt9O1xyXG5cdFx0XHRcdFx0XHRcdHdoaWxlKCAoIG1hdGNoID0gcmhlYWRlcnMuZXhlYyggcmVzcG9uc2VIZWFkZXJzU3RyaW5nICkgKSApIHtcclxuXHRcdFx0XHRcdFx0XHRcdHJlc3BvbnNlSGVhZGVyc1sgbWF0Y2hbMV0udG9Mb3dlckNhc2UoKSBdID0gbWF0Y2hbIDIgXTtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0bWF0Y2ggPSByZXNwb25zZUhlYWRlcnNbIGtleS50b0xvd2VyQ2FzZSgpIF07XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRyZXR1cm4gbWF0Y2ggPT09IHVuZGVmaW5lZCA/IG51bGwgOiBtYXRjaDtcclxuXHRcdFx0XHR9LFxyXG5cclxuXHRcdFx0XHQvLyBPdmVycmlkZXMgcmVzcG9uc2UgY29udGVudC10eXBlIGhlYWRlclxyXG5cdFx0XHRcdG92ZXJyaWRlTWltZVR5cGU6IGZ1bmN0aW9uKCB0eXBlICkge1xyXG5cdFx0XHRcdFx0aWYgKCAhc3RhdGUgKSB7XHJcblx0XHRcdFx0XHRcdHMubWltZVR5cGUgPSB0eXBlO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0cmV0dXJuIHRoaXM7XHJcblx0XHRcdFx0fSxcclxuXHJcblx0XHRcdFx0Ly8gQ2FuY2VsIHRoZSByZXF1ZXN0XHJcblx0XHRcdFx0YWJvcnQ6IGZ1bmN0aW9uKCBzdGF0dXNUZXh0ICkge1xyXG5cdFx0XHRcdFx0c3RhdHVzVGV4dCA9IHN0YXR1c1RleHQgfHwgc3RyQWJvcnQ7XHJcblx0XHRcdFx0XHRpZiAoIHRyYW5zcG9ydCApIHtcclxuXHRcdFx0XHRcdFx0dHJhbnNwb3J0LmFib3J0KCBzdGF0dXNUZXh0ICk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRkb25lKCAwLCBzdGF0dXNUZXh0ICk7XHJcblx0XHRcdFx0XHRyZXR1cm4gdGhpcztcclxuXHRcdFx0XHR9XHJcblx0XHRcdH07XHJcblxyXG5cdFx0Ly8gQ2FsbGJhY2sgZm9yIHdoZW4gZXZlcnl0aGluZyBpcyBkb25lXHJcblx0XHQvLyBJdCBpcyBkZWZpbmVkIGhlcmUgYmVjYXVzZSBqc2xpbnQgY29tcGxhaW5zIGlmIGl0IGlzIGRlY2xhcmVkXHJcblx0XHQvLyBhdCB0aGUgZW5kIG9mIHRoZSBmdW5jdGlvbiAod2hpY2ggd291bGQgYmUgbW9yZSBsb2dpY2FsIGFuZCByZWFkYWJsZSlcclxuXHRcdGZ1bmN0aW9uIGRvbmUoIHN0YXR1cywgbmF0aXZlU3RhdHVzVGV4dCwgcmVzcG9uc2VzLCBoZWFkZXJzICkge1xyXG5cdFx0XHR2YXIgaXNTdWNjZXNzLCBzdWNjZXNzLCBlcnJvciwgcmVzcG9uc2UsIG1vZGlmaWVkLFxyXG5cdFx0XHRcdHN0YXR1c1RleHQgPSBuYXRpdmVTdGF0dXNUZXh0O1xyXG5cclxuXHRcdFx0Ly8gQ2FsbGVkIG9uY2VcclxuXHRcdFx0aWYgKCBzdGF0ZSA9PT0gMiApIHtcclxuXHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8vIFN0YXRlIGlzIFwiZG9uZVwiIG5vd1xyXG5cdFx0XHRzdGF0ZSA9IDI7XHJcblxyXG5cdFx0XHQvLyBDbGVhciB0aW1lb3V0IGlmIGl0IGV4aXN0c1xyXG5cdFx0XHRpZiAoIHRpbWVvdXRUaW1lciApIHtcclxuXHRcdFx0XHRjbGVhclRpbWVvdXQoIHRpbWVvdXRUaW1lciApO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvLyBEZXJlZmVyZW5jZSB0cmFuc3BvcnQgZm9yIGVhcmx5IGdhcmJhZ2UgY29sbGVjdGlvblxyXG5cdFx0XHQvLyAobm8gbWF0dGVyIGhvdyBsb25nIHRoZSBqcVhIUiBvYmplY3Qgd2lsbCBiZSB1c2VkKVxyXG5cdFx0XHR0cmFuc3BvcnQgPSB1bmRlZmluZWQ7XHJcblxyXG5cdFx0XHQvLyBDYWNoZSByZXNwb25zZSBoZWFkZXJzXHJcblx0XHRcdHJlc3BvbnNlSGVhZGVyc1N0cmluZyA9IGhlYWRlcnMgfHwgXCJcIjtcclxuXHJcblx0XHRcdC8vIFNldCByZWFkeVN0YXRlXHJcblx0XHRcdGpxWEhSLnJlYWR5U3RhdGUgPSBzdGF0dXMgPiAwID8gNCA6IDA7XHJcblxyXG5cdFx0XHQvLyBHZXQgcmVzcG9uc2UgZGF0YVxyXG5cdFx0XHRpZiAoIHJlc3BvbnNlcyApIHtcclxuXHRcdFx0XHRyZXNwb25zZSA9IGFqYXhIYW5kbGVSZXNwb25zZXMoIHMsIGpxWEhSLCByZXNwb25zZXMgKTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Ly8gSWYgc3VjY2Vzc2Z1bCwgaGFuZGxlIHR5cGUgY2hhaW5pbmdcclxuXHRcdFx0aWYgKCBzdGF0dXMgPj0gMjAwICYmIHN0YXR1cyA8IDMwMCB8fCBzdGF0dXMgPT09IDMwNCApIHtcclxuXHJcblx0XHRcdFx0Ly8gU2V0IHRoZSBJZi1Nb2RpZmllZC1TaW5jZSBhbmQvb3IgSWYtTm9uZS1NYXRjaCBoZWFkZXIsIGlmIGluIGlmTW9kaWZpZWQgbW9kZS5cclxuXHRcdFx0XHRpZiAoIHMuaWZNb2RpZmllZCApIHtcclxuXHJcblx0XHRcdFx0XHRtb2RpZmllZCA9IGpxWEhSLmdldFJlc3BvbnNlSGVhZGVyKFwiTGFzdC1Nb2RpZmllZFwiKTtcclxuXHRcdFx0XHRcdGlmICggbW9kaWZpZWQgKSB7XHJcblx0XHRcdFx0XHRcdGpRdWVyeS5sYXN0TW9kaWZpZWRbIGlmTW9kaWZpZWRLZXkgXSA9IG1vZGlmaWVkO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0bW9kaWZpZWQgPSBqcVhIUi5nZXRSZXNwb25zZUhlYWRlcihcIkV0YWdcIik7XHJcblx0XHRcdFx0XHRpZiAoIG1vZGlmaWVkICkge1xyXG5cdFx0XHRcdFx0XHRqUXVlcnkuZXRhZ1sgaWZNb2RpZmllZEtleSBdID0gbW9kaWZpZWQ7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHQvLyBJZiBub3QgbW9kaWZpZWRcclxuXHRcdFx0XHRpZiAoIHN0YXR1cyA9PT0gMzA0ICkge1xyXG5cclxuXHRcdFx0XHRcdHN0YXR1c1RleHQgPSBcIm5vdG1vZGlmaWVkXCI7XHJcblx0XHRcdFx0XHRpc1N1Y2Nlc3MgPSB0cnVlO1xyXG5cclxuXHRcdFx0XHQvLyBJZiB3ZSBoYXZlIGRhdGFcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cclxuXHRcdFx0XHRcdGlzU3VjY2VzcyA9IGFqYXhDb252ZXJ0KCBzLCByZXNwb25zZSApO1xyXG5cdFx0XHRcdFx0c3RhdHVzVGV4dCA9IGlzU3VjY2Vzcy5zdGF0ZTtcclxuXHRcdFx0XHRcdHN1Y2Nlc3MgPSBpc1N1Y2Nlc3MuZGF0YTtcclxuXHRcdFx0XHRcdGVycm9yID0gaXNTdWNjZXNzLmVycm9yO1xyXG5cdFx0XHRcdFx0aXNTdWNjZXNzID0gIWVycm9yO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHQvLyBXZSBleHRyYWN0IGVycm9yIGZyb20gc3RhdHVzVGV4dFxyXG5cdFx0XHRcdC8vIHRoZW4gbm9ybWFsaXplIHN0YXR1c1RleHQgYW5kIHN0YXR1cyBmb3Igbm9uLWFib3J0c1xyXG5cdFx0XHRcdGVycm9yID0gc3RhdHVzVGV4dDtcclxuXHRcdFx0XHRpZiAoICFzdGF0dXNUZXh0IHx8IHN0YXR1cyApIHtcclxuXHRcdFx0XHRcdHN0YXR1c1RleHQgPSBcImVycm9yXCI7XHJcblx0XHRcdFx0XHRpZiAoIHN0YXR1cyA8IDAgKSB7XHJcblx0XHRcdFx0XHRcdHN0YXR1cyA9IDA7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvLyBTZXQgZGF0YSBmb3IgdGhlIGZha2UgeGhyIG9iamVjdFxyXG5cdFx0XHRqcVhIUi5zdGF0dXMgPSBzdGF0dXM7XHJcblx0XHRcdGpxWEhSLnN0YXR1c1RleHQgPSBcIlwiICsgKCBuYXRpdmVTdGF0dXNUZXh0IHx8IHN0YXR1c1RleHQgKTtcclxuXHJcblx0XHRcdC8vIFN1Y2Nlc3MvRXJyb3JcclxuXHRcdFx0aWYgKCBpc1N1Y2Nlc3MgKSB7XHJcblx0XHRcdFx0ZGVmZXJyZWQucmVzb2x2ZVdpdGgoIGNhbGxiYWNrQ29udGV4dCwgWyBzdWNjZXNzLCBzdGF0dXNUZXh0LCBqcVhIUiBdICk7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0ZGVmZXJyZWQucmVqZWN0V2l0aCggY2FsbGJhY2tDb250ZXh0LCBbIGpxWEhSLCBzdGF0dXNUZXh0LCBlcnJvciBdICk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8vIFN0YXR1cy1kZXBlbmRlbnQgY2FsbGJhY2tzXHJcblx0XHRcdGpxWEhSLnN0YXR1c0NvZGUoIHN0YXR1c0NvZGUgKTtcclxuXHRcdFx0c3RhdHVzQ29kZSA9IHVuZGVmaW5lZDtcclxuXHJcblx0XHRcdGlmICggZmlyZUdsb2JhbHMgKSB7XHJcblx0XHRcdFx0Z2xvYmFsRXZlbnRDb250ZXh0LnRyaWdnZXIoIFwiYWpheFwiICsgKCBpc1N1Y2Nlc3MgPyBcIlN1Y2Nlc3NcIiA6IFwiRXJyb3JcIiApLFxyXG5cdFx0XHRcdFx0XHRbIGpxWEhSLCBzLCBpc1N1Y2Nlc3MgPyBzdWNjZXNzIDogZXJyb3IgXSApO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvLyBDb21wbGV0ZVxyXG5cdFx0XHRjb21wbGV0ZURlZmVycmVkLmZpcmVXaXRoKCBjYWxsYmFja0NvbnRleHQsIFsganFYSFIsIHN0YXR1c1RleHQgXSApO1xyXG5cclxuXHRcdFx0aWYgKCBmaXJlR2xvYmFscyApIHtcclxuXHRcdFx0XHRnbG9iYWxFdmVudENvbnRleHQudHJpZ2dlciggXCJhamF4Q29tcGxldGVcIiwgWyBqcVhIUiwgcyBdICk7XHJcblx0XHRcdFx0Ly8gSGFuZGxlIHRoZSBnbG9iYWwgQUpBWCBjb3VudGVyXHJcblx0XHRcdFx0aWYgKCAhKCAtLWpRdWVyeS5hY3RpdmUgKSApIHtcclxuXHRcdFx0XHRcdGpRdWVyeS5ldmVudC50cmlnZ2VyKCBcImFqYXhTdG9wXCIgKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHQvLyBBdHRhY2ggZGVmZXJyZWRzXHJcblx0XHRkZWZlcnJlZC5wcm9taXNlKCBqcVhIUiApO1xyXG5cdFx0anFYSFIuc3VjY2VzcyA9IGpxWEhSLmRvbmU7XHJcblx0XHRqcVhIUi5lcnJvciA9IGpxWEhSLmZhaWw7XHJcblx0XHRqcVhIUi5jb21wbGV0ZSA9IGNvbXBsZXRlRGVmZXJyZWQuYWRkO1xyXG5cclxuXHRcdC8vIFN0YXR1cy1kZXBlbmRlbnQgY2FsbGJhY2tzXHJcblx0XHRqcVhIUi5zdGF0dXNDb2RlID0gZnVuY3Rpb24oIG1hcCApIHtcclxuXHRcdFx0aWYgKCBtYXAgKSB7XHJcblx0XHRcdFx0dmFyIHRtcDtcclxuXHRcdFx0XHRpZiAoIHN0YXRlIDwgMiApIHtcclxuXHRcdFx0XHRcdGZvciAoIHRtcCBpbiBtYXAgKSB7XHJcblx0XHRcdFx0XHRcdHN0YXR1c0NvZGVbIHRtcCBdID0gWyBzdGF0dXNDb2RlW3RtcF0sIG1hcFt0bXBdIF07XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdHRtcCA9IG1hcFsganFYSFIuc3RhdHVzIF07XHJcblx0XHRcdFx0XHRqcVhIUi5hbHdheXMoIHRtcCApO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0XHRyZXR1cm4gdGhpcztcclxuXHRcdH07XHJcblxyXG5cdFx0Ly8gUmVtb3ZlIGhhc2ggY2hhcmFjdGVyICgjNzUzMTogYW5kIHN0cmluZyBwcm9tb3Rpb24pXHJcblx0XHQvLyBBZGQgcHJvdG9jb2wgaWYgbm90IHByb3ZpZGVkICgjNTg2NjogSUU3IGlzc3VlIHdpdGggcHJvdG9jb2wtbGVzcyB1cmxzKVxyXG5cdFx0Ly8gV2UgYWxzbyB1c2UgdGhlIHVybCBwYXJhbWV0ZXIgaWYgYXZhaWxhYmxlXHJcblx0XHRzLnVybCA9ICggKCB1cmwgfHwgcy51cmwgKSArIFwiXCIgKS5yZXBsYWNlKCByaGFzaCwgXCJcIiApLnJlcGxhY2UoIHJwcm90b2NvbCwgYWpheExvY1BhcnRzWyAxIF0gKyBcIi8vXCIgKTtcclxuXHJcblx0XHQvLyBFeHRyYWN0IGRhdGFUeXBlcyBsaXN0XHJcblx0XHRzLmRhdGFUeXBlcyA9IGpRdWVyeS50cmltKCBzLmRhdGFUeXBlIHx8IFwiKlwiICkudG9Mb3dlckNhc2UoKS5zcGxpdCggY29yZV9yc3BhY2UgKTtcclxuXHJcblx0XHQvLyBEZXRlcm1pbmUgaWYgYSBjcm9zcy1kb21haW4gcmVxdWVzdCBpcyBpbiBvcmRlclxyXG5cdFx0aWYgKCBzLmNyb3NzRG9tYWluID09IG51bGwgKSB7XHJcblx0XHRcdHBhcnRzID0gcnVybC5leGVjKCBzLnVybC50b0xvd2VyQ2FzZSgpICk7XHJcblx0XHRcdHMuY3Jvc3NEb21haW4gPSAhISggcGFydHMgJiZcclxuXHRcdFx0XHQoIHBhcnRzWyAxIF0gIT0gYWpheExvY1BhcnRzWyAxIF0gfHwgcGFydHNbIDIgXSAhPSBhamF4TG9jUGFydHNbIDIgXSB8fFxyXG5cdFx0XHRcdFx0KCBwYXJ0c1sgMyBdIHx8ICggcGFydHNbIDEgXSA9PT0gXCJodHRwOlwiID8gODAgOiA0NDMgKSApICE9XHJcblx0XHRcdFx0XHRcdCggYWpheExvY1BhcnRzWyAzIF0gfHwgKCBhamF4TG9jUGFydHNbIDEgXSA9PT0gXCJodHRwOlwiID8gODAgOiA0NDMgKSApIClcclxuXHRcdFx0KTtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBDb252ZXJ0IGRhdGEgaWYgbm90IGFscmVhZHkgYSBzdHJpbmdcclxuXHRcdGlmICggcy5kYXRhICYmIHMucHJvY2Vzc0RhdGEgJiYgdHlwZW9mIHMuZGF0YSAhPT0gXCJzdHJpbmdcIiApIHtcclxuXHRcdFx0cy5kYXRhID0galF1ZXJ5LnBhcmFtKCBzLmRhdGEsIHMudHJhZGl0aW9uYWwgKTtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBBcHBseSBwcmVmaWx0ZXJzXHJcblx0XHRpbnNwZWN0UHJlZmlsdGVyc09yVHJhbnNwb3J0cyggcHJlZmlsdGVycywgcywgb3B0aW9ucywganFYSFIgKTtcclxuXHJcblx0XHQvLyBJZiByZXF1ZXN0IHdhcyBhYm9ydGVkIGluc2lkZSBhIHByZWZpbHRlciwgc3RvcCB0aGVyZVxyXG5cdFx0aWYgKCBzdGF0ZSA9PT0gMiApIHtcclxuXHRcdFx0cmV0dXJuIGpxWEhSO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIFdlIGNhbiBmaXJlIGdsb2JhbCBldmVudHMgYXMgb2Ygbm93IGlmIGFza2VkIHRvXHJcblx0XHRmaXJlR2xvYmFscyA9IHMuZ2xvYmFsO1xyXG5cclxuXHRcdC8vIFVwcGVyY2FzZSB0aGUgdHlwZVxyXG5cdFx0cy50eXBlID0gcy50eXBlLnRvVXBwZXJDYXNlKCk7XHJcblxyXG5cdFx0Ly8gRGV0ZXJtaW5lIGlmIHJlcXVlc3QgaGFzIGNvbnRlbnRcclxuXHRcdHMuaGFzQ29udGVudCA9ICFybm9Db250ZW50LnRlc3QoIHMudHlwZSApO1xyXG5cclxuXHRcdC8vIFdhdGNoIGZvciBhIG5ldyBzZXQgb2YgcmVxdWVzdHNcclxuXHRcdGlmICggZmlyZUdsb2JhbHMgJiYgalF1ZXJ5LmFjdGl2ZSsrID09PSAwICkge1xyXG5cdFx0XHRqUXVlcnkuZXZlbnQudHJpZ2dlciggXCJhamF4U3RhcnRcIiApO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIE1vcmUgb3B0aW9ucyBoYW5kbGluZyBmb3IgcmVxdWVzdHMgd2l0aCBubyBjb250ZW50XHJcblx0XHRpZiAoICFzLmhhc0NvbnRlbnQgKSB7XHJcblxyXG5cdFx0XHQvLyBJZiBkYXRhIGlzIGF2YWlsYWJsZSwgYXBwZW5kIGRhdGEgdG8gdXJsXHJcblx0XHRcdGlmICggcy5kYXRhICkge1xyXG5cdFx0XHRcdHMudXJsICs9ICggcnF1ZXJ5LnRlc3QoIHMudXJsICkgPyBcIiZcIiA6IFwiP1wiICkgKyBzLmRhdGE7XHJcblx0XHRcdFx0Ly8gIzk2ODI6IHJlbW92ZSBkYXRhIHNvIHRoYXQgaXQncyBub3QgdXNlZCBpbiBhbiBldmVudHVhbCByZXRyeVxyXG5cdFx0XHRcdGRlbGV0ZSBzLmRhdGE7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8vIEdldCBpZk1vZGlmaWVkS2V5IGJlZm9yZSBhZGRpbmcgdGhlIGFudGktY2FjaGUgcGFyYW1ldGVyXHJcblx0XHRcdGlmTW9kaWZpZWRLZXkgPSBzLnVybDtcclxuXHJcblx0XHRcdC8vIEFkZCBhbnRpLWNhY2hlIGluIHVybCBpZiBuZWVkZWRcclxuXHRcdFx0aWYgKCBzLmNhY2hlID09PSBmYWxzZSApIHtcclxuXHJcblx0XHRcdFx0dmFyIHRzID0galF1ZXJ5Lm5vdygpLFxyXG5cdFx0XHRcdFx0Ly8gdHJ5IHJlcGxhY2luZyBfPSBpZiBpdCBpcyB0aGVyZVxyXG5cdFx0XHRcdFx0cmV0ID0gcy51cmwucmVwbGFjZSggcnRzLCBcIiQxXz1cIiArIHRzICk7XHJcblxyXG5cdFx0XHRcdC8vIGlmIG5vdGhpbmcgd2FzIHJlcGxhY2VkLCBhZGQgdGltZXN0YW1wIHRvIHRoZSBlbmRcclxuXHRcdFx0XHRzLnVybCA9IHJldCArICggKCByZXQgPT09IHMudXJsICkgPyAoIHJxdWVyeS50ZXN0KCBzLnVybCApID8gXCImXCIgOiBcIj9cIiApICsgXCJfPVwiICsgdHMgOiBcIlwiICk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHQvLyBTZXQgdGhlIGNvcnJlY3QgaGVhZGVyLCBpZiBkYXRhIGlzIGJlaW5nIHNlbnRcclxuXHRcdGlmICggcy5kYXRhICYmIHMuaGFzQ29udGVudCAmJiBzLmNvbnRlbnRUeXBlICE9PSBmYWxzZSB8fCBvcHRpb25zLmNvbnRlbnRUeXBlICkge1xyXG5cdFx0XHRqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKCBcIkNvbnRlbnQtVHlwZVwiLCBzLmNvbnRlbnRUeXBlICk7XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gU2V0IHRoZSBJZi1Nb2RpZmllZC1TaW5jZSBhbmQvb3IgSWYtTm9uZS1NYXRjaCBoZWFkZXIsIGlmIGluIGlmTW9kaWZpZWQgbW9kZS5cclxuXHRcdGlmICggcy5pZk1vZGlmaWVkICkge1xyXG5cdFx0XHRpZk1vZGlmaWVkS2V5ID0gaWZNb2RpZmllZEtleSB8fCBzLnVybDtcclxuXHRcdFx0aWYgKCBqUXVlcnkubGFzdE1vZGlmaWVkWyBpZk1vZGlmaWVkS2V5IF0gKSB7XHJcblx0XHRcdFx0anFYSFIuc2V0UmVxdWVzdEhlYWRlciggXCJJZi1Nb2RpZmllZC1TaW5jZVwiLCBqUXVlcnkubGFzdE1vZGlmaWVkWyBpZk1vZGlmaWVkS2V5IF0gKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAoIGpRdWVyeS5ldGFnWyBpZk1vZGlmaWVkS2V5IF0gKSB7XHJcblx0XHRcdFx0anFYSFIuc2V0UmVxdWVzdEhlYWRlciggXCJJZi1Ob25lLU1hdGNoXCIsIGpRdWVyeS5ldGFnWyBpZk1vZGlmaWVkS2V5IF0gKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdC8vIFNldCB0aGUgQWNjZXB0cyBoZWFkZXIgZm9yIHRoZSBzZXJ2ZXIsIGRlcGVuZGluZyBvbiB0aGUgZGF0YVR5cGVcclxuXHRcdGpxWEhSLnNldFJlcXVlc3RIZWFkZXIoXHJcblx0XHRcdFwiQWNjZXB0XCIsXHJcblx0XHRcdHMuZGF0YVR5cGVzWyAwIF0gJiYgcy5hY2NlcHRzWyBzLmRhdGFUeXBlc1swXSBdID9cclxuXHRcdFx0XHRzLmFjY2VwdHNbIHMuZGF0YVR5cGVzWzBdIF0gKyAoIHMuZGF0YVR5cGVzWyAwIF0gIT09IFwiKlwiID8gXCIsIFwiICsgYWxsVHlwZXMgKyBcIjsgcT0wLjAxXCIgOiBcIlwiICkgOlxyXG5cdFx0XHRcdHMuYWNjZXB0c1sgXCIqXCIgXVxyXG5cdFx0KTtcclxuXHJcblx0XHQvLyBDaGVjayBmb3IgaGVhZGVycyBvcHRpb25cclxuXHRcdGZvciAoIGkgaW4gcy5oZWFkZXJzICkge1xyXG5cdFx0XHRqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKCBpLCBzLmhlYWRlcnNbIGkgXSApO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIEFsbG93IGN1c3RvbSBoZWFkZXJzL21pbWV0eXBlcyBhbmQgZWFybHkgYWJvcnRcclxuXHRcdGlmICggcy5iZWZvcmVTZW5kICYmICggcy5iZWZvcmVTZW5kLmNhbGwoIGNhbGxiYWNrQ29udGV4dCwganFYSFIsIHMgKSA9PT0gZmFsc2UgfHwgc3RhdGUgPT09IDIgKSApIHtcclxuXHRcdFx0XHQvLyBBYm9ydCBpZiBub3QgZG9uZSBhbHJlYWR5IGFuZCByZXR1cm5cclxuXHRcdFx0XHRyZXR1cm4ganFYSFIuYWJvcnQoKTtcclxuXHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gYWJvcnRpbmcgaXMgbm8gbG9uZ2VyIGEgY2FuY2VsbGF0aW9uXHJcblx0XHRzdHJBYm9ydCA9IFwiYWJvcnRcIjtcclxuXHJcblx0XHQvLyBJbnN0YWxsIGNhbGxiYWNrcyBvbiBkZWZlcnJlZHNcclxuXHRcdGZvciAoIGkgaW4geyBzdWNjZXNzOiAxLCBlcnJvcjogMSwgY29tcGxldGU6IDEgfSApIHtcclxuXHRcdFx0anFYSFJbIGkgXSggc1sgaSBdICk7XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gR2V0IHRyYW5zcG9ydFxyXG5cdFx0dHJhbnNwb3J0ID0gaW5zcGVjdFByZWZpbHRlcnNPclRyYW5zcG9ydHMoIHRyYW5zcG9ydHMsIHMsIG9wdGlvbnMsIGpxWEhSICk7XHJcblxyXG5cdFx0Ly8gSWYgbm8gdHJhbnNwb3J0LCB3ZSBhdXRvLWFib3J0XHJcblx0XHRpZiAoICF0cmFuc3BvcnQgKSB7XHJcblx0XHRcdGRvbmUoIC0xLCBcIk5vIFRyYW5zcG9ydFwiICk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRqcVhIUi5yZWFkeVN0YXRlID0gMTtcclxuXHRcdFx0Ly8gU2VuZCBnbG9iYWwgZXZlbnRcclxuXHRcdFx0aWYgKCBmaXJlR2xvYmFscyApIHtcclxuXHRcdFx0XHRnbG9iYWxFdmVudENvbnRleHQudHJpZ2dlciggXCJhamF4U2VuZFwiLCBbIGpxWEhSLCBzIF0gKTtcclxuXHRcdFx0fVxyXG5cdFx0XHQvLyBUaW1lb3V0XHJcblx0XHRcdGlmICggcy5hc3luYyAmJiBzLnRpbWVvdXQgPiAwICkge1xyXG5cdFx0XHRcdHRpbWVvdXRUaW1lciA9IHNldFRpbWVvdXQoIGZ1bmN0aW9uKCl7XHJcblx0XHRcdFx0XHRqcVhIUi5hYm9ydCggXCJ0aW1lb3V0XCIgKTtcclxuXHRcdFx0XHR9LCBzLnRpbWVvdXQgKTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0dHJ5IHtcclxuXHRcdFx0XHRzdGF0ZSA9IDE7XHJcblx0XHRcdFx0dHJhbnNwb3J0LnNlbmQoIHJlcXVlc3RIZWFkZXJzLCBkb25lICk7XHJcblx0XHRcdH0gY2F0Y2ggKGUpIHtcclxuXHRcdFx0XHQvLyBQcm9wYWdhdGUgZXhjZXB0aW9uIGFzIGVycm9yIGlmIG5vdCBkb25lXHJcblx0XHRcdFx0aWYgKCBzdGF0ZSA8IDIgKSB7XHJcblx0XHRcdFx0XHRkb25lKCAtMSwgZSApO1xyXG5cdFx0XHRcdC8vIFNpbXBseSByZXRocm93IG90aGVyd2lzZVxyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHR0aHJvdyBlO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiBqcVhIUjtcclxuXHR9LFxyXG5cclxuXHQvLyBDb3VudGVyIGZvciBob2xkaW5nIHRoZSBudW1iZXIgb2YgYWN0aXZlIHF1ZXJpZXNcclxuXHRhY3RpdmU6IDAsXHJcblxyXG5cdC8vIExhc3QtTW9kaWZpZWQgaGVhZGVyIGNhY2hlIGZvciBuZXh0IHJlcXVlc3RcclxuXHRsYXN0TW9kaWZpZWQ6IHt9LFxyXG5cdGV0YWc6IHt9XHJcblxyXG59KTtcclxuXHJcbi8qIEhhbmRsZXMgcmVzcG9uc2VzIHRvIGFuIGFqYXggcmVxdWVzdDpcclxuICogLSBzZXRzIGFsbCByZXNwb25zZVhYWCBmaWVsZHMgYWNjb3JkaW5nbHlcclxuICogLSBmaW5kcyB0aGUgcmlnaHQgZGF0YVR5cGUgKG1lZGlhdGVzIGJldHdlZW4gY29udGVudC10eXBlIGFuZCBleHBlY3RlZCBkYXRhVHlwZSlcclxuICogLSByZXR1cm5zIHRoZSBjb3JyZXNwb25kaW5nIHJlc3BvbnNlXHJcbiAqL1xyXG5mdW5jdGlvbiBhamF4SGFuZGxlUmVzcG9uc2VzKCBzLCBqcVhIUiwgcmVzcG9uc2VzICkge1xyXG5cclxuXHR2YXIgY3QsIHR5cGUsIGZpbmFsRGF0YVR5cGUsIGZpcnN0RGF0YVR5cGUsXHJcblx0XHRjb250ZW50cyA9IHMuY29udGVudHMsXHJcblx0XHRkYXRhVHlwZXMgPSBzLmRhdGFUeXBlcyxcclxuXHRcdHJlc3BvbnNlRmllbGRzID0gcy5yZXNwb25zZUZpZWxkcztcclxuXHJcblx0Ly8gRmlsbCByZXNwb25zZVhYWCBmaWVsZHNcclxuXHRmb3IgKCB0eXBlIGluIHJlc3BvbnNlRmllbGRzICkge1xyXG5cdFx0aWYgKCB0eXBlIGluIHJlc3BvbnNlcyApIHtcclxuXHRcdFx0anFYSFJbIHJlc3BvbnNlRmllbGRzW3R5cGVdIF0gPSByZXNwb25zZXNbIHR5cGUgXTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8vIFJlbW92ZSBhdXRvIGRhdGFUeXBlIGFuZCBnZXQgY29udGVudC10eXBlIGluIHRoZSBwcm9jZXNzXHJcblx0d2hpbGUoIGRhdGFUeXBlc1sgMCBdID09PSBcIipcIiApIHtcclxuXHRcdGRhdGFUeXBlcy5zaGlmdCgpO1xyXG5cdFx0aWYgKCBjdCA9PT0gdW5kZWZpbmVkICkge1xyXG5cdFx0XHRjdCA9IHMubWltZVR5cGUgfHwganFYSFIuZ2V0UmVzcG9uc2VIZWFkZXIoIFwiY29udGVudC10eXBlXCIgKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8vIENoZWNrIGlmIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIGtub3duIGNvbnRlbnQtdHlwZVxyXG5cdGlmICggY3QgKSB7XHJcblx0XHRmb3IgKCB0eXBlIGluIGNvbnRlbnRzICkge1xyXG5cdFx0XHRpZiAoIGNvbnRlbnRzWyB0eXBlIF0gJiYgY29udGVudHNbIHR5cGUgXS50ZXN0KCBjdCApICkge1xyXG5cdFx0XHRcdGRhdGFUeXBlcy51bnNoaWZ0KCB0eXBlICk7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8vIENoZWNrIHRvIHNlZSBpZiB3ZSBoYXZlIGEgcmVzcG9uc2UgZm9yIHRoZSBleHBlY3RlZCBkYXRhVHlwZVxyXG5cdGlmICggZGF0YVR5cGVzWyAwIF0gaW4gcmVzcG9uc2VzICkge1xyXG5cdFx0ZmluYWxEYXRhVHlwZSA9IGRhdGFUeXBlc1sgMCBdO1xyXG5cdH0gZWxzZSB7XHJcblx0XHQvLyBUcnkgY29udmVydGlibGUgZGF0YVR5cGVzXHJcblx0XHRmb3IgKCB0eXBlIGluIHJlc3BvbnNlcyApIHtcclxuXHRcdFx0aWYgKCAhZGF0YVR5cGVzWyAwIF0gfHwgcy5jb252ZXJ0ZXJzWyB0eXBlICsgXCIgXCIgKyBkYXRhVHlwZXNbMF0gXSApIHtcclxuXHRcdFx0XHRmaW5hbERhdGFUeXBlID0gdHlwZTtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAoICFmaXJzdERhdGFUeXBlICkge1xyXG5cdFx0XHRcdGZpcnN0RGF0YVR5cGUgPSB0eXBlO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHQvLyBPciBqdXN0IHVzZSBmaXJzdCBvbmVcclxuXHRcdGZpbmFsRGF0YVR5cGUgPSBmaW5hbERhdGFUeXBlIHx8IGZpcnN0RGF0YVR5cGU7XHJcblx0fVxyXG5cclxuXHQvLyBJZiB3ZSBmb3VuZCBhIGRhdGFUeXBlXHJcblx0Ly8gV2UgYWRkIHRoZSBkYXRhVHlwZSB0byB0aGUgbGlzdCBpZiBuZWVkZWRcclxuXHQvLyBhbmQgcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nIHJlc3BvbnNlXHJcblx0aWYgKCBmaW5hbERhdGFUeXBlICkge1xyXG5cdFx0aWYgKCBmaW5hbERhdGFUeXBlICE9PSBkYXRhVHlwZXNbIDAgXSApIHtcclxuXHRcdFx0ZGF0YVR5cGVzLnVuc2hpZnQoIGZpbmFsRGF0YVR5cGUgKTtcclxuXHRcdH1cclxuXHRcdHJldHVybiByZXNwb25zZXNbIGZpbmFsRGF0YVR5cGUgXTtcclxuXHR9XHJcbn1cclxuXHJcbi8vIENoYWluIGNvbnZlcnNpb25zIGdpdmVuIHRoZSByZXF1ZXN0IGFuZCB0aGUgb3JpZ2luYWwgcmVzcG9uc2VcclxuZnVuY3Rpb24gYWpheENvbnZlcnQoIHMsIHJlc3BvbnNlICkge1xyXG5cclxuXHR2YXIgY29udiwgY29udjIsIGN1cnJlbnQsIHRtcCxcclxuXHRcdC8vIFdvcmsgd2l0aCBhIGNvcHkgb2YgZGF0YVR5cGVzIGluIGNhc2Ugd2UgbmVlZCB0byBtb2RpZnkgaXQgZm9yIGNvbnZlcnNpb25cclxuXHRcdGRhdGFUeXBlcyA9IHMuZGF0YVR5cGVzLnNsaWNlKCksXHJcblx0XHRwcmV2ID0gZGF0YVR5cGVzWyAwIF0sXHJcblx0XHRjb252ZXJ0ZXJzID0ge30sXHJcblx0XHRpID0gMDtcclxuXHJcblx0Ly8gQXBwbHkgdGhlIGRhdGFGaWx0ZXIgaWYgcHJvdmlkZWRcclxuXHRpZiAoIHMuZGF0YUZpbHRlciApIHtcclxuXHRcdHJlc3BvbnNlID0gcy5kYXRhRmlsdGVyKCByZXNwb25zZSwgcy5kYXRhVHlwZSApO1xyXG5cdH1cclxuXHJcblx0Ly8gQ3JlYXRlIGNvbnZlcnRlcnMgbWFwIHdpdGggbG93ZXJjYXNlZCBrZXlzXHJcblx0aWYgKCBkYXRhVHlwZXNbIDEgXSApIHtcclxuXHRcdGZvciAoIGNvbnYgaW4gcy5jb252ZXJ0ZXJzICkge1xyXG5cdFx0XHRjb252ZXJ0ZXJzWyBjb252LnRvTG93ZXJDYXNlKCkgXSA9IHMuY29udmVydGVyc1sgY29udiBdO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Ly8gQ29udmVydCB0byBlYWNoIHNlcXVlbnRpYWwgZGF0YVR5cGUsIHRvbGVyYXRpbmcgbGlzdCBtb2RpZmljYXRpb25cclxuXHRmb3IgKCA7IChjdXJyZW50ID0gZGF0YVR5cGVzWysraV0pOyApIHtcclxuXHJcblx0XHQvLyBUaGVyZSdzIG9ubHkgd29yayB0byBkbyBpZiBjdXJyZW50IGRhdGFUeXBlIGlzIG5vbi1hdXRvXHJcblx0XHRpZiAoIGN1cnJlbnQgIT09IFwiKlwiICkge1xyXG5cclxuXHRcdFx0Ly8gQ29udmVydCByZXNwb25zZSBpZiBwcmV2IGRhdGFUeXBlIGlzIG5vbi1hdXRvIGFuZCBkaWZmZXJzIGZyb20gY3VycmVudFxyXG5cdFx0XHRpZiAoIHByZXYgIT09IFwiKlwiICYmIHByZXYgIT09IGN1cnJlbnQgKSB7XHJcblxyXG5cdFx0XHRcdC8vIFNlZWsgYSBkaXJlY3QgY29udmVydGVyXHJcblx0XHRcdFx0Y29udiA9IGNvbnZlcnRlcnNbIHByZXYgKyBcIiBcIiArIGN1cnJlbnQgXSB8fCBjb252ZXJ0ZXJzWyBcIiogXCIgKyBjdXJyZW50IF07XHJcblxyXG5cdFx0XHRcdC8vIElmIG5vbmUgZm91bmQsIHNlZWsgYSBwYWlyXHJcblx0XHRcdFx0aWYgKCAhY29udiApIHtcclxuXHRcdFx0XHRcdGZvciAoIGNvbnYyIGluIGNvbnZlcnRlcnMgKSB7XHJcblxyXG5cdFx0XHRcdFx0XHQvLyBJZiBjb252MiBvdXRwdXRzIGN1cnJlbnRcclxuXHRcdFx0XHRcdFx0dG1wID0gY29udjIuc3BsaXQoXCIgXCIpO1xyXG5cdFx0XHRcdFx0XHRpZiAoIHRtcFsgMSBdID09PSBjdXJyZW50ICkge1xyXG5cclxuXHRcdFx0XHRcdFx0XHQvLyBJZiBwcmV2IGNhbiBiZSBjb252ZXJ0ZWQgdG8gYWNjZXB0ZWQgaW5wdXRcclxuXHRcdFx0XHRcdFx0XHRjb252ID0gY29udmVydGVyc1sgcHJldiArIFwiIFwiICsgdG1wWyAwIF0gXSB8fFxyXG5cdFx0XHRcdFx0XHRcdFx0Y29udmVydGVyc1sgXCIqIFwiICsgdG1wWyAwIF0gXTtcclxuXHRcdFx0XHRcdFx0XHRpZiAoIGNvbnYgKSB7XHJcblx0XHRcdFx0XHRcdFx0XHQvLyBDb25kZW5zZSBlcXVpdmFsZW5jZSBjb252ZXJ0ZXJzXHJcblx0XHRcdFx0XHRcdFx0XHRpZiAoIGNvbnYgPT09IHRydWUgKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnYgPSBjb252ZXJ0ZXJzWyBjb252MiBdO1xyXG5cclxuXHRcdFx0XHRcdFx0XHRcdC8vIE90aGVyd2lzZSwgaW5zZXJ0IHRoZSBpbnRlcm1lZGlhdGUgZGF0YVR5cGVcclxuXHRcdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoIGNvbnZlcnRlcnNbIGNvbnYyIF0gIT09IHRydWUgKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGN1cnJlbnQgPSB0bXBbIDAgXTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YVR5cGVzLnNwbGljZSggaS0tLCAwLCBjdXJyZW50ICk7XHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHQvLyBBcHBseSBjb252ZXJ0ZXIgKGlmIG5vdCBhbiBlcXVpdmFsZW5jZSlcclxuXHRcdFx0XHRpZiAoIGNvbnYgIT09IHRydWUgKSB7XHJcblxyXG5cdFx0XHRcdFx0Ly8gVW5sZXNzIGVycm9ycyBhcmUgYWxsb3dlZCB0byBidWJibGUsIGNhdGNoIGFuZCByZXR1cm4gdGhlbVxyXG5cdFx0XHRcdFx0aWYgKCBjb252ICYmIHNbXCJ0aHJvd3NcIl0gKSB7XHJcblx0XHRcdFx0XHRcdHJlc3BvbnNlID0gY29udiggcmVzcG9uc2UgKTtcclxuXHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdHRyeSB7XHJcblx0XHRcdFx0XHRcdFx0cmVzcG9uc2UgPSBjb252KCByZXNwb25zZSApO1xyXG5cdFx0XHRcdFx0XHR9IGNhdGNoICggZSApIHtcclxuXHRcdFx0XHRcdFx0XHRyZXR1cm4geyBzdGF0ZTogXCJwYXJzZXJlcnJvclwiLCBlcnJvcjogY29udiA/IGUgOiBcIk5vIGNvbnZlcnNpb24gZnJvbSBcIiArIHByZXYgKyBcIiB0byBcIiArIGN1cnJlbnQgfTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Ly8gVXBkYXRlIHByZXYgZm9yIG5leHQgaXRlcmF0aW9uXHJcblx0XHRcdHByZXYgPSBjdXJyZW50O1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cmV0dXJuIHsgc3RhdGU6IFwic3VjY2Vzc1wiLCBkYXRhOiByZXNwb25zZSB9O1xyXG59XHJcbnZhciBvbGRDYWxsYmFja3MgPSBbXSxcclxuXHRycXVlc3Rpb24gPSAvXFw/LyxcclxuXHRyanNvbnAgPSAvKD0pXFw/KD89JnwkKXxcXD9cXD8vLFxyXG5cdG5vbmNlID0galF1ZXJ5Lm5vdygpO1xyXG5cclxuLy8gRGVmYXVsdCBqc29ucCBzZXR0aW5nc1xyXG5qUXVlcnkuYWpheFNldHVwKHtcclxuXHRqc29ucDogXCJjYWxsYmFja1wiLFxyXG5cdGpzb25wQ2FsbGJhY2s6IGZ1bmN0aW9uKCkge1xyXG5cdFx0dmFyIGNhbGxiYWNrID0gb2xkQ2FsbGJhY2tzLnBvcCgpIHx8ICggalF1ZXJ5LmV4cGFuZG8gKyBcIl9cIiArICggbm9uY2UrKyApICk7XHJcblx0XHR0aGlzWyBjYWxsYmFjayBdID0gdHJ1ZTtcclxuXHRcdHJldHVybiBjYWxsYmFjaztcclxuXHR9XHJcbn0pO1xyXG5cclxuLy8gRGV0ZWN0LCBub3JtYWxpemUgb3B0aW9ucyBhbmQgaW5zdGFsbCBjYWxsYmFja3MgZm9yIGpzb25wIHJlcXVlc3RzXHJcbmpRdWVyeS5hamF4UHJlZmlsdGVyKCBcImpzb24ganNvbnBcIiwgZnVuY3Rpb24oIHMsIG9yaWdpbmFsU2V0dGluZ3MsIGpxWEhSICkge1xyXG5cclxuXHR2YXIgY2FsbGJhY2tOYW1lLCBvdmVyd3JpdHRlbiwgcmVzcG9uc2VDb250YWluZXIsXHJcblx0XHRkYXRhID0gcy5kYXRhLFxyXG5cdFx0dXJsID0gcy51cmwsXHJcblx0XHRoYXNDYWxsYmFjayA9IHMuanNvbnAgIT09IGZhbHNlLFxyXG5cdFx0cmVwbGFjZUluVXJsID0gaGFzQ2FsbGJhY2sgJiYgcmpzb25wLnRlc3QoIHVybCApLFxyXG5cdFx0cmVwbGFjZUluRGF0YSA9IGhhc0NhbGxiYWNrICYmICFyZXBsYWNlSW5VcmwgJiYgdHlwZW9mIGRhdGEgPT09IFwic3RyaW5nXCIgJiZcclxuXHRcdFx0ISggcy5jb250ZW50VHlwZSB8fCBcIlwiICkuaW5kZXhPZihcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFwiKSAmJlxyXG5cdFx0XHRyanNvbnAudGVzdCggZGF0YSApO1xyXG5cclxuXHQvLyBIYW5kbGUgaWZmIHRoZSBleHBlY3RlZCBkYXRhIHR5cGUgaXMgXCJqc29ucFwiIG9yIHdlIGhhdmUgYSBwYXJhbWV0ZXIgdG8gc2V0XHJcblx0aWYgKCBzLmRhdGFUeXBlc1sgMCBdID09PSBcImpzb25wXCIgfHwgcmVwbGFjZUluVXJsIHx8IHJlcGxhY2VJbkRhdGEgKSB7XHJcblxyXG5cdFx0Ly8gR2V0IGNhbGxiYWNrIG5hbWUsIHJlbWVtYmVyaW5nIHByZWV4aXN0aW5nIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCBpdFxyXG5cdFx0Y2FsbGJhY2tOYW1lID0gcy5qc29ucENhbGxiYWNrID0galF1ZXJ5LmlzRnVuY3Rpb24oIHMuanNvbnBDYWxsYmFjayApID9cclxuXHRcdFx0cy5qc29ucENhbGxiYWNrKCkgOlxyXG5cdFx0XHRzLmpzb25wQ2FsbGJhY2s7XHJcblx0XHRvdmVyd3JpdHRlbiA9IHdpbmRvd1sgY2FsbGJhY2tOYW1lIF07XHJcblxyXG5cdFx0Ly8gSW5zZXJ0IGNhbGxiYWNrIGludG8gdXJsIG9yIGZvcm0gZGF0YVxyXG5cdFx0aWYgKCByZXBsYWNlSW5VcmwgKSB7XHJcblx0XHRcdHMudXJsID0gdXJsLnJlcGxhY2UoIHJqc29ucCwgXCIkMVwiICsgY2FsbGJhY2tOYW1lICk7XHJcblx0XHR9IGVsc2UgaWYgKCByZXBsYWNlSW5EYXRhICkge1xyXG5cdFx0XHRzLmRhdGEgPSBkYXRhLnJlcGxhY2UoIHJqc29ucCwgXCIkMVwiICsgY2FsbGJhY2tOYW1lICk7XHJcblx0XHR9IGVsc2UgaWYgKCBoYXNDYWxsYmFjayApIHtcclxuXHRcdFx0cy51cmwgKz0gKCBycXVlc3Rpb24udGVzdCggdXJsICkgPyBcIiZcIiA6IFwiP1wiICkgKyBzLmpzb25wICsgXCI9XCIgKyBjYWxsYmFja05hbWU7XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gVXNlIGRhdGEgY29udmVydGVyIHRvIHJldHJpZXZlIGpzb24gYWZ0ZXIgc2NyaXB0IGV4ZWN1dGlvblxyXG5cdFx0cy5jb252ZXJ0ZXJzW1wic2NyaXB0IGpzb25cIl0gPSBmdW5jdGlvbigpIHtcclxuXHRcdFx0aWYgKCAhcmVzcG9uc2VDb250YWluZXIgKSB7XHJcblx0XHRcdFx0alF1ZXJ5LmVycm9yKCBjYWxsYmFja05hbWUgKyBcIiB3YXMgbm90IGNhbGxlZFwiICk7XHJcblx0XHRcdH1cclxuXHRcdFx0cmV0dXJuIHJlc3BvbnNlQ29udGFpbmVyWyAwIF07XHJcblx0XHR9O1xyXG5cclxuXHRcdC8vIGZvcmNlIGpzb24gZGF0YVR5cGVcclxuXHRcdHMuZGF0YVR5cGVzWyAwIF0gPSBcImpzb25cIjtcclxuXHJcblx0XHQvLyBJbnN0YWxsIGNhbGxiYWNrXHJcblx0XHR3aW5kb3dbIGNhbGxiYWNrTmFtZSBdID0gZnVuY3Rpb24oKSB7XHJcblx0XHRcdHJlc3BvbnNlQ29udGFpbmVyID0gYXJndW1lbnRzO1xyXG5cdFx0fTtcclxuXHJcblx0XHQvLyBDbGVhbi11cCBmdW5jdGlvbiAoZmlyZXMgYWZ0ZXIgY29udmVydGVycylcclxuXHRcdGpxWEhSLmFsd2F5cyhmdW5jdGlvbigpIHtcclxuXHRcdFx0Ly8gUmVzdG9yZSBwcmVleGlzdGluZyB2YWx1ZVxyXG5cdFx0XHR3aW5kb3dbIGNhbGxiYWNrTmFtZSBdID0gb3ZlcndyaXR0ZW47XHJcblxyXG5cdFx0XHQvLyBTYXZlIGJhY2sgYXMgZnJlZVxyXG5cdFx0XHRpZiAoIHNbIGNhbGxiYWNrTmFtZSBdICkge1xyXG5cdFx0XHRcdC8vIG1ha2Ugc3VyZSB0aGF0IHJlLXVzaW5nIHRoZSBvcHRpb25zIGRvZXNuJ3Qgc2NyZXcgdGhpbmdzIGFyb3VuZFxyXG5cdFx0XHRcdHMuanNvbnBDYWxsYmFjayA9IG9yaWdpbmFsU2V0dGluZ3MuanNvbnBDYWxsYmFjaztcclxuXHJcblx0XHRcdFx0Ly8gc2F2ZSB0aGUgY2FsbGJhY2sgbmFtZSBmb3IgZnV0dXJlIHVzZVxyXG5cdFx0XHRcdG9sZENhbGxiYWNrcy5wdXNoKCBjYWxsYmFja05hbWUgKTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Ly8gQ2FsbCBpZiBpdCB3YXMgYSBmdW5jdGlvbiBhbmQgd2UgaGF2ZSBhIHJlc3BvbnNlXHJcblx0XHRcdGlmICggcmVzcG9uc2VDb250YWluZXIgJiYgalF1ZXJ5LmlzRnVuY3Rpb24oIG92ZXJ3cml0dGVuICkgKSB7XHJcblx0XHRcdFx0b3ZlcndyaXR0ZW4oIHJlc3BvbnNlQ29udGFpbmVyWyAwIF0gKTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0cmVzcG9uc2VDb250YWluZXIgPSBvdmVyd3JpdHRlbiA9IHVuZGVmaW5lZDtcclxuXHRcdH0pO1xyXG5cclxuXHRcdC8vIERlbGVnYXRlIHRvIHNjcmlwdFxyXG5cdFx0cmV0dXJuIFwic2NyaXB0XCI7XHJcblx0fVxyXG59KTtcclxuLy8gSW5zdGFsbCBzY3JpcHQgZGF0YVR5cGVcclxualF1ZXJ5LmFqYXhTZXR1cCh7XHJcblx0YWNjZXB0czoge1xyXG5cdFx0c2NyaXB0OiBcInRleHQvamF2YXNjcmlwdCwgYXBwbGljYXRpb24vamF2YXNjcmlwdCwgYXBwbGljYXRpb24vZWNtYXNjcmlwdCwgYXBwbGljYXRpb24veC1lY21hc2NyaXB0XCJcclxuXHR9LFxyXG5cdGNvbnRlbnRzOiB7XHJcblx0XHRzY3JpcHQ6IC9qYXZhc2NyaXB0fGVjbWFzY3JpcHQvXHJcblx0fSxcclxuXHRjb252ZXJ0ZXJzOiB7XHJcblx0XHRcInRleHQgc2NyaXB0XCI6IGZ1bmN0aW9uKCB0ZXh0ICkge1xyXG5cdFx0XHRqUXVlcnkuZ2xvYmFsRXZhbCggdGV4dCApO1xyXG5cdFx0XHRyZXR1cm4gdGV4dDtcclxuXHRcdH1cclxuXHR9XHJcbn0pO1xyXG5cclxuLy8gSGFuZGxlIGNhY2hlJ3Mgc3BlY2lhbCBjYXNlIGFuZCBnbG9iYWxcclxualF1ZXJ5LmFqYXhQcmVmaWx0ZXIoIFwic2NyaXB0XCIsIGZ1bmN0aW9uKCBzICkge1xyXG5cdGlmICggcy5jYWNoZSA9PT0gdW5kZWZpbmVkICkge1xyXG5cdFx0cy5jYWNoZSA9IGZhbHNlO1xyXG5cdH1cclxuXHRpZiAoIHMuY3Jvc3NEb21haW4gKSB7XHJcblx0XHRzLnR5cGUgPSBcIkdFVFwiO1xyXG5cdFx0cy5nbG9iYWwgPSBmYWxzZTtcclxuXHR9XHJcbn0pO1xyXG5cclxuLy8gQmluZCBzY3JpcHQgdGFnIGhhY2sgdHJhbnNwb3J0XHJcbmpRdWVyeS5hamF4VHJhbnNwb3J0KCBcInNjcmlwdFwiLCBmdW5jdGlvbihzKSB7XHJcblxyXG5cdC8vIFRoaXMgdHJhbnNwb3J0IG9ubHkgZGVhbHMgd2l0aCBjcm9zcyBkb21haW4gcmVxdWVzdHNcclxuXHRpZiAoIHMuY3Jvc3NEb21haW4gKSB7XHJcblxyXG5cdFx0dmFyIHNjcmlwdCxcclxuXHRcdFx0aGVhZCA9IGRvY3VtZW50LmhlYWQgfHwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIFwiaGVhZFwiIClbMF0gfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xyXG5cclxuXHRcdHJldHVybiB7XHJcblxyXG5cdFx0XHRzZW5kOiBmdW5jdGlvbiggXywgY2FsbGJhY2sgKSB7XHJcblxyXG5cdFx0XHRcdHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwic2NyaXB0XCIgKTtcclxuXHJcblx0XHRcdFx0c2NyaXB0LmFzeW5jID0gXCJhc3luY1wiO1xyXG5cclxuXHRcdFx0XHRpZiAoIHMuc2NyaXB0Q2hhcnNldCApIHtcclxuXHRcdFx0XHRcdHNjcmlwdC5jaGFyc2V0ID0gcy5zY3JpcHRDaGFyc2V0O1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0c2NyaXB0LnNyYyA9IHMudXJsO1xyXG5cclxuXHRcdFx0XHQvLyBBdHRhY2ggaGFuZGxlcnMgZm9yIGFsbCBicm93c2Vyc1xyXG5cdFx0XHRcdHNjcmlwdC5vbmxvYWQgPSBzY3JpcHQub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oIF8sIGlzQWJvcnQgKSB7XHJcblxyXG5cdFx0XHRcdFx0aWYgKCBpc0Fib3J0IHx8ICFzY3JpcHQucmVhZHlTdGF0ZSB8fCAvbG9hZGVkfGNvbXBsZXRlLy50ZXN0KCBzY3JpcHQucmVhZHlTdGF0ZSApICkge1xyXG5cclxuXHRcdFx0XHRcdFx0Ly8gSGFuZGxlIG1lbW9yeSBsZWFrIGluIElFXHJcblx0XHRcdFx0XHRcdHNjcmlwdC5vbmxvYWQgPSBzY3JpcHQub25yZWFkeXN0YXRlY2hhbmdlID0gbnVsbDtcclxuXHJcblx0XHRcdFx0XHRcdC8vIFJlbW92ZSB0aGUgc2NyaXB0XHJcblx0XHRcdFx0XHRcdGlmICggaGVhZCAmJiBzY3JpcHQucGFyZW50Tm9kZSApIHtcclxuXHRcdFx0XHRcdFx0XHRoZWFkLnJlbW92ZUNoaWxkKCBzY3JpcHQgKTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdFx0Ly8gRGVyZWZlcmVuY2UgdGhlIHNjcmlwdFxyXG5cdFx0XHRcdFx0XHRzY3JpcHQgPSB1bmRlZmluZWQ7XHJcblxyXG5cdFx0XHRcdFx0XHQvLyBDYWxsYmFjayBpZiBub3QgYWJvcnRcclxuXHRcdFx0XHRcdFx0aWYgKCAhaXNBYm9ydCApIHtcclxuXHRcdFx0XHRcdFx0XHRjYWxsYmFjayggMjAwLCBcInN1Y2Nlc3NcIiApO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fTtcclxuXHRcdFx0XHQvLyBVc2UgaW5zZXJ0QmVmb3JlIGluc3RlYWQgb2YgYXBwZW5kQ2hpbGQgIHRvIGNpcmN1bXZlbnQgYW4gSUU2IGJ1Zy5cclxuXHRcdFx0XHQvLyBUaGlzIGFyaXNlcyB3aGVuIGEgYmFzZSBub2RlIGlzIHVzZWQgKCMyNzA5IGFuZCAjNDM3OCkuXHJcblx0XHRcdFx0aGVhZC5pbnNlcnRCZWZvcmUoIHNjcmlwdCwgaGVhZC5maXJzdENoaWxkICk7XHJcblx0XHRcdH0sXHJcblxyXG5cdFx0XHRhYm9ydDogZnVuY3Rpb24oKSB7XHJcblx0XHRcdFx0aWYgKCBzY3JpcHQgKSB7XHJcblx0XHRcdFx0XHRzY3JpcHQub25sb2FkKCAwLCAxICk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9O1xyXG5cdH1cclxufSk7XHJcbnZhciB4aHJDYWxsYmFja3MsXHJcblx0Ly8gIzUyODA6IEludGVybmV0IEV4cGxvcmVyIHdpbGwga2VlcCBjb25uZWN0aW9ucyBhbGl2ZSBpZiB3ZSBkb24ndCBhYm9ydCBvbiB1bmxvYWRcclxuXHR4aHJPblVubG9hZEFib3J0ID0gd2luZG93LkFjdGl2ZVhPYmplY3QgPyBmdW5jdGlvbigpIHtcclxuXHRcdC8vIEFib3J0IGFsbCBwZW5kaW5nIHJlcXVlc3RzXHJcblx0XHRmb3IgKCB2YXIga2V5IGluIHhockNhbGxiYWNrcyApIHtcclxuXHRcdFx0eGhyQ2FsbGJhY2tzWyBrZXkgXSggMCwgMSApO1xyXG5cdFx0fVxyXG5cdH0gOiBmYWxzZSxcclxuXHR4aHJJZCA9IDA7XHJcblxyXG4vLyBGdW5jdGlvbnMgdG8gY3JlYXRlIHhocnNcclxuZnVuY3Rpb24gY3JlYXRlU3RhbmRhcmRYSFIoKSB7XHJcblx0dHJ5IHtcclxuXHRcdHJldHVybiBuZXcgd2luZG93LlhNTEh0dHBSZXF1ZXN0KCk7XHJcblx0fSBjYXRjaCggZSApIHt9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNyZWF0ZUFjdGl2ZVhIUigpIHtcclxuXHR0cnkge1xyXG5cdFx0cmV0dXJuIG5ldyB3aW5kb3cuQWN0aXZlWE9iamVjdCggXCJNaWNyb3NvZnQuWE1MSFRUUFwiICk7XHJcblx0fSBjYXRjaCggZSApIHt9XHJcbn1cclxuXHJcbi8vIENyZWF0ZSB0aGUgcmVxdWVzdCBvYmplY3RcclxuLy8gKFRoaXMgaXMgc3RpbGwgYXR0YWNoZWQgdG8gYWpheFNldHRpbmdzIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5KVxyXG5qUXVlcnkuYWpheFNldHRpbmdzLnhociA9IHdpbmRvdy5BY3RpdmVYT2JqZWN0ID9cclxuXHQvKiBNaWNyb3NvZnQgZmFpbGVkIHRvIHByb3Blcmx5XHJcblx0ICogaW1wbGVtZW50IHRoZSBYTUxIdHRwUmVxdWVzdCBpbiBJRTcgKGNhbid0IHJlcXVlc3QgbG9jYWwgZmlsZXMpLFxyXG5cdCAqIHNvIHdlIHVzZSB0aGUgQWN0aXZlWE9iamVjdCB3aGVuIGl0IGlzIGF2YWlsYWJsZVxyXG5cdCAqIEFkZGl0aW9uYWxseSBYTUxIdHRwUmVxdWVzdCBjYW4gYmUgZGlzYWJsZWQgaW4gSUU3L0lFOCBzb1xyXG5cdCAqIHdlIG5lZWQgYSBmYWxsYmFjay5cclxuXHQgKi9cclxuXHRmdW5jdGlvbigpIHtcclxuXHRcdHJldHVybiAhdGhpcy5pc0xvY2FsICYmIGNyZWF0ZVN0YW5kYXJkWEhSKCkgfHwgY3JlYXRlQWN0aXZlWEhSKCk7XHJcblx0fSA6XHJcblx0Ly8gRm9yIGFsbCBvdGhlciBicm93c2VycywgdXNlIHRoZSBzdGFuZGFyZCBYTUxIdHRwUmVxdWVzdCBvYmplY3RcclxuXHRjcmVhdGVTdGFuZGFyZFhIUjtcclxuXHJcbi8vIERldGVybWluZSBzdXBwb3J0IHByb3BlcnRpZXNcclxuKGZ1bmN0aW9uKCB4aHIgKSB7XHJcblx0alF1ZXJ5LmV4dGVuZCggalF1ZXJ5LnN1cHBvcnQsIHtcclxuXHRcdGFqYXg6ICEheGhyLFxyXG5cdFx0Y29yczogISF4aHIgJiYgKCBcIndpdGhDcmVkZW50aWFsc1wiIGluIHhociApXHJcblx0fSk7XHJcbn0pKCBqUXVlcnkuYWpheFNldHRpbmdzLnhocigpICk7XHJcblxyXG4vLyBDcmVhdGUgdHJhbnNwb3J0IGlmIHRoZSBicm93c2VyIGNhbiBwcm92aWRlIGFuIHhoclxyXG5pZiAoIGpRdWVyeS5zdXBwb3J0LmFqYXggKSB7XHJcblxyXG5cdGpRdWVyeS5hamF4VHJhbnNwb3J0KGZ1bmN0aW9uKCBzICkge1xyXG5cdFx0Ly8gQ3Jvc3MgZG9tYWluIG9ubHkgYWxsb3dlZCBpZiBzdXBwb3J0ZWQgdGhyb3VnaCBYTUxIdHRwUmVxdWVzdFxyXG5cdFx0aWYgKCAhcy5jcm9zc0RvbWFpbiB8fCBqUXVlcnkuc3VwcG9ydC5jb3JzICkge1xyXG5cclxuXHRcdFx0dmFyIGNhbGxiYWNrO1xyXG5cclxuXHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRzZW5kOiBmdW5jdGlvbiggaGVhZGVycywgY29tcGxldGUgKSB7XHJcblxyXG5cdFx0XHRcdFx0Ly8gR2V0IGEgbmV3IHhoclxyXG5cdFx0XHRcdFx0dmFyIGhhbmRsZSwgaSxcclxuXHRcdFx0XHRcdFx0eGhyID0gcy54aHIoKTtcclxuXHJcblx0XHRcdFx0XHQvLyBPcGVuIHRoZSBzb2NrZXRcclxuXHRcdFx0XHRcdC8vIFBhc3NpbmcgbnVsbCB1c2VybmFtZSwgZ2VuZXJhdGVzIGEgbG9naW4gcG9wdXAgb24gT3BlcmEgKCMyODY1KVxyXG5cdFx0XHRcdFx0aWYgKCBzLnVzZXJuYW1lICkge1xyXG5cdFx0XHRcdFx0XHR4aHIub3Blbiggcy50eXBlLCBzLnVybCwgcy5hc3luYywgcy51c2VybmFtZSwgcy5wYXNzd29yZCApO1xyXG5cdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0eGhyLm9wZW4oIHMudHlwZSwgcy51cmwsIHMuYXN5bmMgKTtcclxuXHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHQvLyBBcHBseSBjdXN0b20gZmllbGRzIGlmIHByb3ZpZGVkXHJcblx0XHRcdFx0XHRpZiAoIHMueGhyRmllbGRzICkge1xyXG5cdFx0XHRcdFx0XHRmb3IgKCBpIGluIHMueGhyRmllbGRzICkge1xyXG5cdFx0XHRcdFx0XHRcdHhoclsgaSBdID0gcy54aHJGaWVsZHNbIGkgXTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdC8vIE92ZXJyaWRlIG1pbWUgdHlwZSBpZiBuZWVkZWRcclxuXHRcdFx0XHRcdGlmICggcy5taW1lVHlwZSAmJiB4aHIub3ZlcnJpZGVNaW1lVHlwZSApIHtcclxuXHRcdFx0XHRcdFx0eGhyLm92ZXJyaWRlTWltZVR5cGUoIHMubWltZVR5cGUgKTtcclxuXHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHQvLyBYLVJlcXVlc3RlZC1XaXRoIGhlYWRlclxyXG5cdFx0XHRcdFx0Ly8gRm9yIGNyb3NzLWRvbWFpbiByZXF1ZXN0cywgc2VlaW5nIGFzIGNvbmRpdGlvbnMgZm9yIGEgcHJlZmxpZ2h0IGFyZVxyXG5cdFx0XHRcdFx0Ly8gYWtpbiB0byBhIGppZ3NhdyBwdXp6bGUsIHdlIHNpbXBseSBuZXZlciBzZXQgaXQgdG8gYmUgc3VyZS5cclxuXHRcdFx0XHRcdC8vIChpdCBjYW4gYWx3YXlzIGJlIHNldCBvbiBhIHBlci1yZXF1ZXN0IGJhc2lzIG9yIGV2ZW4gdXNpbmcgYWpheFNldHVwKVxyXG5cdFx0XHRcdFx0Ly8gRm9yIHNhbWUtZG9tYWluIHJlcXVlc3RzLCB3b24ndCBjaGFuZ2UgaGVhZGVyIGlmIGFscmVhZHkgcHJvdmlkZWQuXHJcblx0XHRcdFx0XHRpZiAoICFzLmNyb3NzRG9tYWluICYmICFoZWFkZXJzW1wiWC1SZXF1ZXN0ZWQtV2l0aFwiXSApIHtcclxuXHRcdFx0XHRcdFx0aGVhZGVyc1sgXCJYLVJlcXVlc3RlZC1XaXRoXCIgXSA9IFwiWE1MSHR0cFJlcXVlc3RcIjtcclxuXHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHQvLyBOZWVkIGFuIGV4dHJhIHRyeS9jYXRjaCBmb3IgY3Jvc3MgZG9tYWluIHJlcXVlc3RzIGluIEZpcmVmb3ggM1xyXG5cdFx0XHRcdFx0dHJ5IHtcclxuXHRcdFx0XHRcdFx0Zm9yICggaSBpbiBoZWFkZXJzICkge1xyXG5cdFx0XHRcdFx0XHRcdHhoci5zZXRSZXF1ZXN0SGVhZGVyKCBpLCBoZWFkZXJzWyBpIF0gKTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSBjYXRjaCggXyApIHt9XHJcblxyXG5cdFx0XHRcdFx0Ly8gRG8gc2VuZCB0aGUgcmVxdWVzdFxyXG5cdFx0XHRcdFx0Ly8gVGhpcyBtYXkgcmFpc2UgYW4gZXhjZXB0aW9uIHdoaWNoIGlzIGFjdHVhbGx5XHJcblx0XHRcdFx0XHQvLyBoYW5kbGVkIGluIGpRdWVyeS5hamF4IChzbyBubyB0cnkvY2F0Y2ggaGVyZSlcclxuXHRcdFx0XHRcdHhoci5zZW5kKCAoIHMuaGFzQ29udGVudCAmJiBzLmRhdGEgKSB8fCBudWxsICk7XHJcblxyXG5cdFx0XHRcdFx0Ly8gTGlzdGVuZXJcclxuXHRcdFx0XHRcdGNhbGxiYWNrID0gZnVuY3Rpb24oIF8sIGlzQWJvcnQgKSB7XHJcblxyXG5cdFx0XHRcdFx0XHR2YXIgc3RhdHVzLFxyXG5cdFx0XHRcdFx0XHRcdHN0YXR1c1RleHQsXHJcblx0XHRcdFx0XHRcdFx0cmVzcG9uc2VIZWFkZXJzLFxyXG5cdFx0XHRcdFx0XHRcdHJlc3BvbnNlcyxcclxuXHRcdFx0XHRcdFx0XHR4bWw7XHJcblxyXG5cdFx0XHRcdFx0XHQvLyBGaXJlZm94IHRocm93cyBleGNlcHRpb25zIHdoZW4gYWNjZXNzaW5nIHByb3BlcnRpZXNcclxuXHRcdFx0XHRcdFx0Ly8gb2YgYW4geGhyIHdoZW4gYSBuZXR3b3JrIGVycm9yIG9jY3VycmVkXHJcblx0XHRcdFx0XHRcdC8vIGh0dHA6Ly9oZWxwZnVsLmtub2JzLWRpYWxzLmNvbS9pbmRleC5waHAvQ29tcG9uZW50X3JldHVybmVkX2ZhaWx1cmVfY29kZTpfMHg4MDA0MDExMV8oTlNfRVJST1JfTk9UX0FWQUlMQUJMRSlcclxuXHRcdFx0XHRcdFx0dHJ5IHtcclxuXHJcblx0XHRcdFx0XHRcdFx0Ly8gV2FzIG5ldmVyIGNhbGxlZCBhbmQgaXMgYWJvcnRlZCBvciBjb21wbGV0ZVxyXG5cdFx0XHRcdFx0XHRcdGlmICggY2FsbGJhY2sgJiYgKCBpc0Fib3J0IHx8IHhoci5yZWFkeVN0YXRlID09PSA0ICkgKSB7XHJcblxyXG5cdFx0XHRcdFx0XHRcdFx0Ly8gT25seSBjYWxsZWQgb25jZVxyXG5cdFx0XHRcdFx0XHRcdFx0Y2FsbGJhY2sgPSB1bmRlZmluZWQ7XHJcblxyXG5cdFx0XHRcdFx0XHRcdFx0Ly8gRG8gbm90IGtlZXAgYXMgYWN0aXZlIGFueW1vcmVcclxuXHRcdFx0XHRcdFx0XHRcdGlmICggaGFuZGxlICkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR4aHIub25yZWFkeXN0YXRlY2hhbmdlID0galF1ZXJ5Lm5vb3A7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGlmICggeGhyT25VbmxvYWRBYm9ydCApIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRkZWxldGUgeGhyQ2FsbGJhY2tzWyBoYW5kbGUgXTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdFx0XHRcdC8vIElmIGl0J3MgYW4gYWJvcnRcclxuXHRcdFx0XHRcdFx0XHRcdGlmICggaXNBYm9ydCApIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gQWJvcnQgaXQgbWFudWFsbHkgaWYgbmVlZGVkXHJcblx0XHRcdFx0XHRcdFx0XHRcdGlmICggeGhyLnJlYWR5U3RhdGUgIT09IDQgKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0eGhyLmFib3J0KCk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdHN0YXR1cyA9IHhoci5zdGF0dXM7XHJcblx0XHRcdFx0XHRcdFx0XHRcdHJlc3BvbnNlSGVhZGVycyA9IHhoci5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0cmVzcG9uc2VzID0ge307XHJcblx0XHRcdFx0XHRcdFx0XHRcdHhtbCA9IHhoci5yZXNwb25zZVhNTDtcclxuXHJcblx0XHRcdFx0XHRcdFx0XHRcdC8vIENvbnN0cnVjdCByZXNwb25zZSBsaXN0XHJcblx0XHRcdFx0XHRcdFx0XHRcdGlmICggeG1sICYmIHhtbC5kb2N1bWVudEVsZW1lbnQgLyogIzQ5NTggKi8gKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmVzcG9uc2VzLnhtbCA9IHhtbDtcclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gV2hlbiByZXF1ZXN0aW5nIGJpbmFyeSBkYXRhLCBJRTYtOSB3aWxsIHRocm93IGFuIGV4Y2VwdGlvblxyXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBvbiBhbnkgYXR0ZW1wdCB0byBhY2Nlc3MgcmVzcG9uc2VUZXh0ICgjMTE0MjYpXHJcblx0XHRcdFx0XHRcdFx0XHRcdHRyeSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmVzcG9uc2VzLnRleHQgPSB4aHIucmVzcG9uc2VUZXh0O1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR9IGNhdGNoKCBfICkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBGaXJlZm94IHRocm93cyBhbiBleGNlcHRpb24gd2hlbiBhY2Nlc3NpbmdcclxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gc3RhdHVzVGV4dCBmb3IgZmF1bHR5IGNyb3NzLWRvbWFpbiByZXF1ZXN0c1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR0cnkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHN0YXR1c1RleHQgPSB4aHIuc3RhdHVzVGV4dDtcclxuXHRcdFx0XHRcdFx0XHRcdFx0fSBjYXRjaCggZSApIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBXZSBub3JtYWxpemUgd2l0aCBXZWJraXQgZ2l2aW5nIGFuIGVtcHR5IHN0YXR1c1RleHRcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRzdGF0dXNUZXh0ID0gXCJcIjtcclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gRmlsdGVyIHN0YXR1cyBmb3Igbm9uIHN0YW5kYXJkIGJlaGF2aW9yc1xyXG5cclxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gSWYgdGhlIHJlcXVlc3QgaXMgbG9jYWwgYW5kIHdlIGhhdmUgZGF0YTogYXNzdW1lIGEgc3VjY2Vzc1xyXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyAoc3VjY2VzcyB3aXRoIG5vIGRhdGEgd29uJ3QgZ2V0IG5vdGlmaWVkLCB0aGF0J3MgdGhlIGJlc3Qgd2VcclxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gY2FuIGRvIGdpdmVuIGN1cnJlbnQgaW1wbGVtZW50YXRpb25zKVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoICFzdGF0dXMgJiYgcy5pc0xvY2FsICYmICFzLmNyb3NzRG9tYWluICkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHN0YXR1cyA9IHJlc3BvbnNlcy50ZXh0ID8gMjAwIDogNDA0O1xyXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBJRSAtICMxNDUwOiBzb21ldGltZXMgcmV0dXJucyAxMjIzIHdoZW4gaXQgc2hvdWxkIGJlIDIwNFxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKCBzdGF0dXMgPT09IDEyMjMgKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0c3RhdHVzID0gMjA0O1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9IGNhdGNoKCBmaXJlZm94QWNjZXNzRXhjZXB0aW9uICkge1xyXG5cdFx0XHRcdFx0XHRcdGlmICggIWlzQWJvcnQgKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRjb21wbGV0ZSggLTEsIGZpcmVmb3hBY2Nlc3NFeGNlcHRpb24gKTtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRcdC8vIENhbGwgY29tcGxldGUgaWYgbmVlZGVkXHJcblx0XHRcdFx0XHRcdGlmICggcmVzcG9uc2VzICkge1xyXG5cdFx0XHRcdFx0XHRcdGNvbXBsZXRlKCBzdGF0dXMsIHN0YXR1c1RleHQsIHJlc3BvbnNlcywgcmVzcG9uc2VIZWFkZXJzICk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH07XHJcblxyXG5cdFx0XHRcdFx0aWYgKCAhcy5hc3luYyApIHtcclxuXHRcdFx0XHRcdFx0Ly8gaWYgd2UncmUgaW4gc3luYyBtb2RlIHdlIGZpcmUgdGhlIGNhbGxiYWNrXHJcblx0XHRcdFx0XHRcdGNhbGxiYWNrKCk7XHJcblx0XHRcdFx0XHR9IGVsc2UgaWYgKCB4aHIucmVhZHlTdGF0ZSA9PT0gNCApIHtcclxuXHRcdFx0XHRcdFx0Ly8gKElFNiAmIElFNykgaWYgaXQncyBpbiBjYWNoZSBhbmQgaGFzIGJlZW5cclxuXHRcdFx0XHRcdFx0Ly8gcmV0cmlldmVkIGRpcmVjdGx5IHdlIG5lZWQgdG8gZmlyZSB0aGUgY2FsbGJhY2tcclxuXHRcdFx0XHRcdFx0c2V0VGltZW91dCggY2FsbGJhY2ssIDAgKTtcclxuXHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdGhhbmRsZSA9ICsreGhySWQ7XHJcblx0XHRcdFx0XHRcdGlmICggeGhyT25VbmxvYWRBYm9ydCApIHtcclxuXHRcdFx0XHRcdFx0XHQvLyBDcmVhdGUgdGhlIGFjdGl2ZSB4aHJzIGNhbGxiYWNrcyBsaXN0IGlmIG5lZWRlZFxyXG5cdFx0XHRcdFx0XHRcdC8vIGFuZCBhdHRhY2ggdGhlIHVubG9hZCBoYW5kbGVyXHJcblx0XHRcdFx0XHRcdFx0aWYgKCAheGhyQ2FsbGJhY2tzICkge1xyXG5cdFx0XHRcdFx0XHRcdFx0eGhyQ2FsbGJhY2tzID0ge307XHJcblx0XHRcdFx0XHRcdFx0XHRqUXVlcnkoIHdpbmRvdyApLnVubG9hZCggeGhyT25VbmxvYWRBYm9ydCApO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHQvLyBBZGQgdG8gbGlzdCBvZiBhY3RpdmUgeGhycyBjYWxsYmFja3NcclxuXHRcdFx0XHRcdFx0XHR4aHJDYWxsYmFja3NbIGhhbmRsZSBdID0gY2FsbGJhY2s7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0eGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGNhbGxiYWNrO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0sXHJcblxyXG5cdFx0XHRcdGFib3J0OiBmdW5jdGlvbigpIHtcclxuXHRcdFx0XHRcdGlmICggY2FsbGJhY2sgKSB7XHJcblx0XHRcdFx0XHRcdGNhbGxiYWNrKDAsMSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9O1xyXG5cdFx0fVxyXG5cdH0pO1xyXG59XHJcbnZhciBmeE5vdywgdGltZXJJZCxcclxuXHRyZnh0eXBlcyA9IC9eKD86dG9nZ2xlfHNob3d8aGlkZSkkLyxcclxuXHRyZnhudW0gPSBuZXcgUmVnRXhwKCBcIl4oPzooWy0rXSk9fCkoXCIgKyBjb3JlX3BudW0gKyBcIikoW2EteiVdKikkXCIsIFwiaVwiICksXHJcblx0cnJ1biA9IC9xdWV1ZUhvb2tzJC8sXHJcblx0YW5pbWF0aW9uUHJlZmlsdGVycyA9IFsgZGVmYXVsdFByZWZpbHRlciBdLFxyXG5cdHR3ZWVuZXJzID0ge1xyXG5cdFx0XCIqXCI6IFtmdW5jdGlvbiggcHJvcCwgdmFsdWUgKSB7XHJcblx0XHRcdHZhciBlbmQsIHVuaXQsIHByZXZTY2FsZSxcclxuXHRcdFx0XHR0d2VlbiA9IHRoaXMuY3JlYXRlVHdlZW4oIHByb3AsIHZhbHVlICksXHJcblx0XHRcdFx0cGFydHMgPSByZnhudW0uZXhlYyggdmFsdWUgKSxcclxuXHRcdFx0XHR0YXJnZXQgPSB0d2Vlbi5jdXIoKSxcclxuXHRcdFx0XHRzdGFydCA9ICt0YXJnZXQgfHwgMCxcclxuXHRcdFx0XHRzY2FsZSA9IDE7XHJcblxyXG5cdFx0XHRpZiAoIHBhcnRzICkge1xyXG5cdFx0XHRcdGVuZCA9ICtwYXJ0c1syXTtcclxuXHRcdFx0XHR1bml0ID0gcGFydHNbM10gfHwgKCBqUXVlcnkuY3NzTnVtYmVyWyBwcm9wIF0gPyBcIlwiIDogXCJweFwiICk7XHJcblxyXG5cdFx0XHRcdC8vIFdlIG5lZWQgdG8gY29tcHV0ZSBzdGFydGluZyB2YWx1ZVxyXG5cdFx0XHRcdGlmICggdW5pdCAhPT0gXCJweFwiICYmIHN0YXJ0ICkge1xyXG5cdFx0XHRcdFx0Ly8gSXRlcmF0aXZlbHkgYXBwcm94aW1hdGUgZnJvbSBhIG5vbnplcm8gc3RhcnRpbmcgcG9pbnRcclxuXHRcdFx0XHRcdC8vIFByZWZlciB0aGUgY3VycmVudCBwcm9wZXJ0eSwgYmVjYXVzZSB0aGlzIHByb2Nlc3Mgd2lsbCBiZSB0cml2aWFsIGlmIGl0IHVzZXMgdGhlIHNhbWUgdW5pdHNcclxuXHRcdFx0XHRcdC8vIEZhbGxiYWNrIHRvIGVuZCBvciBhIHNpbXBsZSBjb25zdGFudFxyXG5cdFx0XHRcdFx0c3RhcnQgPSBqUXVlcnkuY3NzKCB0d2Vlbi5lbGVtLCBwcm9wLCB0cnVlICkgfHwgZW5kIHx8IDE7XHJcblxyXG5cdFx0XHRcdFx0ZG8ge1xyXG5cdFx0XHRcdFx0XHQvLyBJZiBwcmV2aW91cyBpdGVyYXRpb24gemVyb2VkIG91dCwgZG91YmxlIHVudGlsIHdlIGdldCAqc29tZXRoaW5nKlxyXG5cdFx0XHRcdFx0XHQvLyBVc2UgYSBzdHJpbmcgZm9yIGRvdWJsaW5nIGZhY3RvciBzbyB3ZSBkb24ndCBhY2NpZGVudGFsbHkgc2VlIHNjYWxlIGFzIHVuY2hhbmdlZCBiZWxvd1xyXG5cdFx0XHRcdFx0XHRwcmV2U2NhbGUgPSBzY2FsZSA9IHNjYWxlIHx8IFwiLjVcIjtcclxuXHJcblx0XHRcdFx0XHRcdC8vIEFkanVzdCBhbmQgYXBwbHlcclxuXHRcdFx0XHRcdFx0c3RhcnQgPSBzdGFydCAvIHNjYWxlO1xyXG5cdFx0XHRcdFx0XHRqUXVlcnkuc3R5bGUoIHR3ZWVuLmVsZW0sIHByb3AsIHN0YXJ0ICsgdW5pdCApO1xyXG5cclxuXHRcdFx0XHRcdFx0Ly8gVXBkYXRlIHNjYWxlLCB0b2xlcmF0aW5nIHplcm9lcyBmcm9tIHR3ZWVuLmN1cigpXHJcblx0XHRcdFx0XHRcdHNjYWxlID0gdHdlZW4uY3VyKCkgLyB0YXJnZXQ7XHJcblxyXG5cdFx0XHRcdFx0Ly8gU3RvcCBsb29waW5nIGlmIHdlJ3ZlIGhpdCB0aGUgbWFyayBvciBzY2FsZSBpcyB1bmNoYW5nZWRcclxuXHRcdFx0XHRcdH0gd2hpbGUgKCBzY2FsZSAhPT0gMSAmJiBzY2FsZSAhPT0gcHJldlNjYWxlICk7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHR0d2Vlbi51bml0ID0gdW5pdDtcclxuXHRcdFx0XHR0d2Vlbi5zdGFydCA9IHN0YXJ0O1xyXG5cdFx0XHRcdC8vIElmIGEgKz0vLT0gdG9rZW4gd2FzIHByb3ZpZGVkLCB3ZSdyZSBkb2luZyBhIHJlbGF0aXZlIGFuaW1hdGlvblxyXG5cdFx0XHRcdHR3ZWVuLmVuZCA9IHBhcnRzWzFdID8gc3RhcnQgKyAoIHBhcnRzWzFdICsgMSApICogZW5kIDogZW5kO1xyXG5cdFx0XHR9XHJcblx0XHRcdHJldHVybiB0d2VlbjtcclxuXHRcdH1dXHJcblx0fTtcclxuXHJcbi8vIEFuaW1hdGlvbnMgY3JlYXRlZCBzeW5jaHJvbm91c2x5IHdpbGwgcnVuIHN5bmNocm9ub3VzbHlcclxuZnVuY3Rpb24gY3JlYXRlRnhOb3coKSB7XHJcblx0c2V0VGltZW91dChmdW5jdGlvbigpIHtcclxuXHRcdGZ4Tm93ID0gdW5kZWZpbmVkO1xyXG5cdH0sIDAgKTtcclxuXHRyZXR1cm4gKCBmeE5vdyA9IGpRdWVyeS5ub3coKSApO1xyXG59XHJcblxyXG5mdW5jdGlvbiBjcmVhdGVUd2VlbnMoIGFuaW1hdGlvbiwgcHJvcHMgKSB7XHJcblx0alF1ZXJ5LmVhY2goIHByb3BzLCBmdW5jdGlvbiggcHJvcCwgdmFsdWUgKSB7XHJcblx0XHR2YXIgY29sbGVjdGlvbiA9ICggdHdlZW5lcnNbIHByb3AgXSB8fCBbXSApLmNvbmNhdCggdHdlZW5lcnNbIFwiKlwiIF0gKSxcclxuXHRcdFx0aW5kZXggPSAwLFxyXG5cdFx0XHRsZW5ndGggPSBjb2xsZWN0aW9uLmxlbmd0aDtcclxuXHRcdGZvciAoIDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7XHJcblx0XHRcdGlmICggY29sbGVjdGlvblsgaW5kZXggXS5jYWxsKCBhbmltYXRpb24sIHByb3AsIHZhbHVlICkgKSB7XHJcblxyXG5cdFx0XHRcdC8vIHdlJ3JlIGRvbmUgd2l0aCB0aGlzIHByb3BlcnR5XHJcblx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIEFuaW1hdGlvbiggZWxlbSwgcHJvcGVydGllcywgb3B0aW9ucyApIHtcclxuXHR2YXIgcmVzdWx0LFxyXG5cdFx0aW5kZXggPSAwLFxyXG5cdFx0dHdlZW5lckluZGV4ID0gMCxcclxuXHRcdGxlbmd0aCA9IGFuaW1hdGlvblByZWZpbHRlcnMubGVuZ3RoLFxyXG5cdFx0ZGVmZXJyZWQgPSBqUXVlcnkuRGVmZXJyZWQoKS5hbHdheXMoIGZ1bmN0aW9uKCkge1xyXG5cdFx0XHQvLyBkb24ndCBtYXRjaCBlbGVtIGluIHRoZSA6YW5pbWF0ZWQgc2VsZWN0b3JcclxuXHRcdFx0ZGVsZXRlIHRpY2suZWxlbTtcclxuXHRcdH0pLFxyXG5cdFx0dGljayA9IGZ1bmN0aW9uKCkge1xyXG5cdFx0XHR2YXIgY3VycmVudFRpbWUgPSBmeE5vdyB8fCBjcmVhdGVGeE5vdygpLFxyXG5cdFx0XHRcdHJlbWFpbmluZyA9IE1hdGgubWF4KCAwLCBhbmltYXRpb24uc3RhcnRUaW1lICsgYW5pbWF0aW9uLmR1cmF0aW9uIC0gY3VycmVudFRpbWUgKSxcclxuXHRcdFx0XHRwZXJjZW50ID0gMSAtICggcmVtYWluaW5nIC8gYW5pbWF0aW9uLmR1cmF0aW9uIHx8IDAgKSxcclxuXHRcdFx0XHRpbmRleCA9IDAsXHJcblx0XHRcdFx0bGVuZ3RoID0gYW5pbWF0aW9uLnR3ZWVucy5sZW5ndGg7XHJcblxyXG5cdFx0XHRmb3IgKCA7IGluZGV4IDwgbGVuZ3RoIDsgaW5kZXgrKyApIHtcclxuXHRcdFx0XHRhbmltYXRpb24udHdlZW5zWyBpbmRleCBdLnJ1biggcGVyY2VudCApO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRkZWZlcnJlZC5ub3RpZnlXaXRoKCBlbGVtLCBbIGFuaW1hdGlvbiwgcGVyY2VudCwgcmVtYWluaW5nIF0pO1xyXG5cclxuXHRcdFx0aWYgKCBwZXJjZW50IDwgMSAmJiBsZW5ndGggKSB7XHJcblx0XHRcdFx0cmV0dXJuIHJlbWFpbmluZztcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRkZWZlcnJlZC5yZXNvbHZlV2l0aCggZWxlbSwgWyBhbmltYXRpb24gXSApO1xyXG5cdFx0XHRcdHJldHVybiBmYWxzZTtcclxuXHRcdFx0fVxyXG5cdFx0fSxcclxuXHRcdGFuaW1hdGlvbiA9IGRlZmVycmVkLnByb21pc2Uoe1xyXG5cdFx0XHRlbGVtOiBlbGVtLFxyXG5cdFx0XHRwcm9wczogalF1ZXJ5LmV4dGVuZCgge30sIHByb3BlcnRpZXMgKSxcclxuXHRcdFx0b3B0czogalF1ZXJ5LmV4dGVuZCggdHJ1ZSwgeyBzcGVjaWFsRWFzaW5nOiB7fSB9LCBvcHRpb25zICksXHJcblx0XHRcdG9yaWdpbmFsUHJvcGVydGllczogcHJvcGVydGllcyxcclxuXHRcdFx0b3JpZ2luYWxPcHRpb25zOiBvcHRpb25zLFxyXG5cdFx0XHRzdGFydFRpbWU6IGZ4Tm93IHx8IGNyZWF0ZUZ4Tm93KCksXHJcblx0XHRcdGR1cmF0aW9uOiBvcHRpb25zLmR1cmF0aW9uLFxyXG5cdFx0XHR0d2VlbnM6IFtdLFxyXG5cdFx0XHRjcmVhdGVUd2VlbjogZnVuY3Rpb24oIHByb3AsIGVuZCwgZWFzaW5nICkge1xyXG5cdFx0XHRcdHZhciB0d2VlbiA9IGpRdWVyeS5Ud2VlbiggZWxlbSwgYW5pbWF0aW9uLm9wdHMsIHByb3AsIGVuZCxcclxuXHRcdFx0XHRcdFx0YW5pbWF0aW9uLm9wdHMuc3BlY2lhbEVhc2luZ1sgcHJvcCBdIHx8IGFuaW1hdGlvbi5vcHRzLmVhc2luZyApO1xyXG5cdFx0XHRcdGFuaW1hdGlvbi50d2VlbnMucHVzaCggdHdlZW4gKTtcclxuXHRcdFx0XHRyZXR1cm4gdHdlZW47XHJcblx0XHRcdH0sXHJcblx0XHRcdHN0b3A6IGZ1bmN0aW9uKCBnb3RvRW5kICkge1xyXG5cdFx0XHRcdHZhciBpbmRleCA9IDAsXHJcblx0XHRcdFx0XHQvLyBpZiB3ZSBhcmUgZ29pbmcgdG8gdGhlIGVuZCwgd2Ugd2FudCB0byBydW4gYWxsIHRoZSB0d2VlbnNcclxuXHRcdFx0XHRcdC8vIG90aGVyd2lzZSB3ZSBza2lwIHRoaXMgcGFydFxyXG5cdFx0XHRcdFx0bGVuZ3RoID0gZ290b0VuZCA/IGFuaW1hdGlvbi50d2VlbnMubGVuZ3RoIDogMDtcclxuXHJcblx0XHRcdFx0Zm9yICggOyBpbmRleCA8IGxlbmd0aCA7IGluZGV4KysgKSB7XHJcblx0XHRcdFx0XHRhbmltYXRpb24udHdlZW5zWyBpbmRleCBdLnJ1biggMSApO1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0Ly8gcmVzb2x2ZSB3aGVuIHdlIHBsYXllZCB0aGUgbGFzdCBmcmFtZVxyXG5cdFx0XHRcdC8vIG90aGVyd2lzZSwgcmVqZWN0XHJcblx0XHRcdFx0aWYgKCBnb3RvRW5kICkge1xyXG5cdFx0XHRcdFx0ZGVmZXJyZWQucmVzb2x2ZVdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uLCBnb3RvRW5kIF0gKTtcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0ZGVmZXJyZWQucmVqZWN0V2l0aCggZWxlbSwgWyBhbmltYXRpb24sIGdvdG9FbmQgXSApO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRyZXR1cm4gdGhpcztcclxuXHRcdFx0fVxyXG5cdFx0fSksXHJcblx0XHRwcm9wcyA9IGFuaW1hdGlvbi5wcm9wcztcclxuXHJcblx0cHJvcEZpbHRlciggcHJvcHMsIGFuaW1hdGlvbi5vcHRzLnNwZWNpYWxFYXNpbmcgKTtcclxuXHJcblx0Zm9yICggOyBpbmRleCA8IGxlbmd0aCA7IGluZGV4KysgKSB7XHJcblx0XHRyZXN1bHQgPSBhbmltYXRpb25QcmVmaWx0ZXJzWyBpbmRleCBdLmNhbGwoIGFuaW1hdGlvbiwgZWxlbSwgcHJvcHMsIGFuaW1hdGlvbi5vcHRzICk7XHJcblx0XHRpZiAoIHJlc3VsdCApIHtcclxuXHRcdFx0cmV0dXJuIHJlc3VsdDtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGNyZWF0ZVR3ZWVucyggYW5pbWF0aW9uLCBwcm9wcyApO1xyXG5cclxuXHRpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBhbmltYXRpb24ub3B0cy5zdGFydCApICkge1xyXG5cdFx0YW5pbWF0aW9uLm9wdHMuc3RhcnQuY2FsbCggZWxlbSwgYW5pbWF0aW9uICk7XHJcblx0fVxyXG5cclxuXHRqUXVlcnkuZngudGltZXIoXHJcblx0XHRqUXVlcnkuZXh0ZW5kKCB0aWNrLCB7XHJcblx0XHRcdGFuaW06IGFuaW1hdGlvbixcclxuXHRcdFx0cXVldWU6IGFuaW1hdGlvbi5vcHRzLnF1ZXVlLFxyXG5cdFx0XHRlbGVtOiBlbGVtXHJcblx0XHR9KVxyXG5cdCk7XHJcblxyXG5cdC8vIGF0dGFjaCBjYWxsYmFja3MgZnJvbSBvcHRpb25zXHJcblx0cmV0dXJuIGFuaW1hdGlvbi5wcm9ncmVzcyggYW5pbWF0aW9uLm9wdHMucHJvZ3Jlc3MgKVxyXG5cdFx0LmRvbmUoIGFuaW1hdGlvbi5vcHRzLmRvbmUsIGFuaW1hdGlvbi5vcHRzLmNvbXBsZXRlIClcclxuXHRcdC5mYWlsKCBhbmltYXRpb24ub3B0cy5mYWlsIClcclxuXHRcdC5hbHdheXMoIGFuaW1hdGlvbi5vcHRzLmFsd2F5cyApO1xyXG59XHJcblxyXG5mdW5jdGlvbiBwcm9wRmlsdGVyKCBwcm9wcywgc3BlY2lhbEVhc2luZyApIHtcclxuXHR2YXIgaW5kZXgsIG5hbWUsIGVhc2luZywgdmFsdWUsIGhvb2tzO1xyXG5cclxuXHQvLyBjYW1lbENhc2UsIHNwZWNpYWxFYXNpbmcgYW5kIGV4cGFuZCBjc3NIb29rIHBhc3NcclxuXHRmb3IgKCBpbmRleCBpbiBwcm9wcyApIHtcclxuXHRcdG5hbWUgPSBqUXVlcnkuY2FtZWxDYXNlKCBpbmRleCApO1xyXG5cdFx0ZWFzaW5nID0gc3BlY2lhbEVhc2luZ1sgbmFtZSBdO1xyXG5cdFx0dmFsdWUgPSBwcm9wc1sgaW5kZXggXTtcclxuXHRcdGlmICggalF1ZXJ5LmlzQXJyYXkoIHZhbHVlICkgKSB7XHJcblx0XHRcdGVhc2luZyA9IHZhbHVlWyAxIF07XHJcblx0XHRcdHZhbHVlID0gcHJvcHNbIGluZGV4IF0gPSB2YWx1ZVsgMCBdO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICggaW5kZXggIT09IG5hbWUgKSB7XHJcblx0XHRcdHByb3BzWyBuYW1lIF0gPSB2YWx1ZTtcclxuXHRcdFx0ZGVsZXRlIHByb3BzWyBpbmRleCBdO1xyXG5cdFx0fVxyXG5cclxuXHRcdGhvb2tzID0galF1ZXJ5LmNzc0hvb2tzWyBuYW1lIF07XHJcblx0XHRpZiAoIGhvb2tzICYmIFwiZXhwYW5kXCIgaW4gaG9va3MgKSB7XHJcblx0XHRcdHZhbHVlID0gaG9va3MuZXhwYW5kKCB2YWx1ZSApO1xyXG5cdFx0XHRkZWxldGUgcHJvcHNbIG5hbWUgXTtcclxuXHJcblx0XHRcdC8vIG5vdCBxdWl0ZSAkLmV4dGVuZCwgdGhpcyB3b250IG92ZXJ3cml0ZSBrZXlzIGFscmVhZHkgcHJlc2VudC5cclxuXHRcdFx0Ly8gYWxzbyAtIHJldXNpbmcgJ2luZGV4JyBmcm9tIGFib3ZlIGJlY2F1c2Ugd2UgaGF2ZSB0aGUgY29ycmVjdCBcIm5hbWVcIlxyXG5cdFx0XHRmb3IgKCBpbmRleCBpbiB2YWx1ZSApIHtcclxuXHRcdFx0XHRpZiAoICEoIGluZGV4IGluIHByb3BzICkgKSB7XHJcblx0XHRcdFx0XHRwcm9wc1sgaW5kZXggXSA9IHZhbHVlWyBpbmRleCBdO1xyXG5cdFx0XHRcdFx0c3BlY2lhbEVhc2luZ1sgaW5kZXggXSA9IGVhc2luZztcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHNwZWNpYWxFYXNpbmdbIG5hbWUgXSA9IGVhc2luZztcclxuXHRcdH1cclxuXHR9XHJcbn1cclxuXHJcbmpRdWVyeS5BbmltYXRpb24gPSBqUXVlcnkuZXh0ZW5kKCBBbmltYXRpb24sIHtcclxuXHJcblx0dHdlZW5lcjogZnVuY3Rpb24oIHByb3BzLCBjYWxsYmFjayApIHtcclxuXHRcdGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHByb3BzICkgKSB7XHJcblx0XHRcdGNhbGxiYWNrID0gcHJvcHM7XHJcblx0XHRcdHByb3BzID0gWyBcIipcIiBdO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0cHJvcHMgPSBwcm9wcy5zcGxpdChcIiBcIik7XHJcblx0XHR9XHJcblxyXG5cdFx0dmFyIHByb3AsXHJcblx0XHRcdGluZGV4ID0gMCxcclxuXHRcdFx0bGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xyXG5cclxuXHRcdGZvciAoIDsgaW5kZXggPCBsZW5ndGggOyBpbmRleCsrICkge1xyXG5cdFx0XHRwcm9wID0gcHJvcHNbIGluZGV4IF07XHJcblx0XHRcdHR3ZWVuZXJzWyBwcm9wIF0gPSB0d2VlbmVyc1sgcHJvcCBdIHx8IFtdO1xyXG5cdFx0XHR0d2VlbmVyc1sgcHJvcCBdLnVuc2hpZnQoIGNhbGxiYWNrICk7XHJcblx0XHR9XHJcblx0fSxcclxuXHJcblx0cHJlZmlsdGVyOiBmdW5jdGlvbiggY2FsbGJhY2ssIHByZXBlbmQgKSB7XHJcblx0XHRpZiAoIHByZXBlbmQgKSB7XHJcblx0XHRcdGFuaW1hdGlvblByZWZpbHRlcnMudW5zaGlmdCggY2FsbGJhY2sgKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGFuaW1hdGlvblByZWZpbHRlcnMucHVzaCggY2FsbGJhY2sgKTtcclxuXHRcdH1cclxuXHR9XHJcbn0pO1xyXG5cclxuZnVuY3Rpb24gZGVmYXVsdFByZWZpbHRlciggZWxlbSwgcHJvcHMsIG9wdHMgKSB7XHJcblx0dmFyIGluZGV4LCBwcm9wLCB2YWx1ZSwgbGVuZ3RoLCBkYXRhU2hvdywgdHdlZW4sIGhvb2tzLCBvbGRmaXJlLFxyXG5cdFx0YW5pbSA9IHRoaXMsXHJcblx0XHRzdHlsZSA9IGVsZW0uc3R5bGUsXHJcblx0XHRvcmlnID0ge30sXHJcblx0XHRoYW5kbGVkID0gW10sXHJcblx0XHRoaWRkZW4gPSBlbGVtLm5vZGVUeXBlICYmIGlzSGlkZGVuKCBlbGVtICk7XHJcblxyXG5cdC8vIGhhbmRsZSBxdWV1ZTogZmFsc2UgcHJvbWlzZXNcclxuXHRpZiAoICFvcHRzLnF1ZXVlICkge1xyXG5cdFx0aG9va3MgPSBqUXVlcnkuX3F1ZXVlSG9va3MoIGVsZW0sIFwiZnhcIiApO1xyXG5cdFx0aWYgKCBob29rcy51bnF1ZXVlZCA9PSBudWxsICkge1xyXG5cdFx0XHRob29rcy51bnF1ZXVlZCA9IDA7XHJcblx0XHRcdG9sZGZpcmUgPSBob29rcy5lbXB0eS5maXJlO1xyXG5cdFx0XHRob29rcy5lbXB0eS5maXJlID0gZnVuY3Rpb24oKSB7XHJcblx0XHRcdFx0aWYgKCAhaG9va3MudW5xdWV1ZWQgKSB7XHJcblx0XHRcdFx0XHRvbGRmaXJlKCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9O1xyXG5cdFx0fVxyXG5cdFx0aG9va3MudW5xdWV1ZWQrKztcclxuXHJcblx0XHRhbmltLmFsd2F5cyhmdW5jdGlvbigpIHtcclxuXHRcdFx0Ly8gZG9pbmcgdGhpcyBtYWtlcyBzdXJlIHRoYXQgdGhlIGNvbXBsZXRlIGhhbmRsZXIgd2lsbCBiZSBjYWxsZWRcclxuXHRcdFx0Ly8gYmVmb3JlIHRoaXMgY29tcGxldGVzXHJcblx0XHRcdGFuaW0uYWx3YXlzKGZ1bmN0aW9uKCkge1xyXG5cdFx0XHRcdGhvb2tzLnVucXVldWVkLS07XHJcblx0XHRcdFx0aWYgKCAhalF1ZXJ5LnF1ZXVlKCBlbGVtLCBcImZ4XCIgKS5sZW5ndGggKSB7XHJcblx0XHRcdFx0XHRob29rcy5lbXB0eS5maXJlKCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0Ly8gaGVpZ2h0L3dpZHRoIG92ZXJmbG93IHBhc3NcclxuXHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgJiYgKCBcImhlaWdodFwiIGluIHByb3BzIHx8IFwid2lkdGhcIiBpbiBwcm9wcyApICkge1xyXG5cdFx0Ly8gTWFrZSBzdXJlIHRoYXQgbm90aGluZyBzbmVha3Mgb3V0XHJcblx0XHQvLyBSZWNvcmQgYWxsIDMgb3ZlcmZsb3cgYXR0cmlidXRlcyBiZWNhdXNlIElFIGRvZXMgbm90XHJcblx0XHQvLyBjaGFuZ2UgdGhlIG92ZXJmbG93IGF0dHJpYnV0ZSB3aGVuIG92ZXJmbG93WCBhbmRcclxuXHRcdC8vIG92ZXJmbG93WSBhcmUgc2V0IHRvIHRoZSBzYW1lIHZhbHVlXHJcblx0XHRvcHRzLm92ZXJmbG93ID0gWyBzdHlsZS5vdmVyZmxvdywgc3R5bGUub3ZlcmZsb3dYLCBzdHlsZS5vdmVyZmxvd1kgXTtcclxuXHJcblx0XHQvLyBTZXQgZGlzcGxheSBwcm9wZXJ0eSB0byBpbmxpbmUtYmxvY2sgZm9yIGhlaWdodC93aWR0aFxyXG5cdFx0Ly8gYW5pbWF0aW9ucyBvbiBpbmxpbmUgZWxlbWVudHMgdGhhdCBhcmUgaGF2aW5nIHdpZHRoL2hlaWdodCBhbmltYXRlZFxyXG5cdFx0aWYgKCBqUXVlcnkuY3NzKCBlbGVtLCBcImRpc3BsYXlcIiApID09PSBcImlubGluZVwiICYmXHJcblx0XHRcdFx0alF1ZXJ5LmNzcyggZWxlbSwgXCJmbG9hdFwiICkgPT09IFwibm9uZVwiICkge1xyXG5cclxuXHRcdFx0Ly8gaW5saW5lLWxldmVsIGVsZW1lbnRzIGFjY2VwdCBpbmxpbmUtYmxvY2s7XHJcblx0XHRcdC8vIGJsb2NrLWxldmVsIGVsZW1lbnRzIG5lZWQgdG8gYmUgaW5saW5lIHdpdGggbGF5b3V0XHJcblx0XHRcdGlmICggIWpRdWVyeS5zdXBwb3J0LmlubGluZUJsb2NrTmVlZHNMYXlvdXQgfHwgY3NzX2RlZmF1bHREaXNwbGF5KCBlbGVtLm5vZGVOYW1lICkgPT09IFwiaW5saW5lXCIgKSB7XHJcblx0XHRcdFx0c3R5bGUuZGlzcGxheSA9IFwiaW5saW5lLWJsb2NrXCI7XHJcblxyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHN0eWxlLnpvb20gPSAxO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRpZiAoIG9wdHMub3ZlcmZsb3cgKSB7XHJcblx0XHRzdHlsZS5vdmVyZmxvdyA9IFwiaGlkZGVuXCI7XHJcblx0XHRpZiAoICFqUXVlcnkuc3VwcG9ydC5zaHJpbmtXcmFwQmxvY2tzICkge1xyXG5cdFx0XHRhbmltLmRvbmUoZnVuY3Rpb24oKSB7XHJcblx0XHRcdFx0c3R5bGUub3ZlcmZsb3cgPSBvcHRzLm92ZXJmbG93WyAwIF07XHJcblx0XHRcdFx0c3R5bGUub3ZlcmZsb3dYID0gb3B0cy5vdmVyZmxvd1sgMSBdO1xyXG5cdFx0XHRcdHN0eWxlLm92ZXJmbG93WSA9IG9wdHMub3ZlcmZsb3dbIDIgXTtcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHJcblx0Ly8gc2hvdy9oaWRlIHBhc3NcclxuXHRmb3IgKCBpbmRleCBpbiBwcm9wcyApIHtcclxuXHRcdHZhbHVlID0gcHJvcHNbIGluZGV4IF07XHJcblx0XHRpZiAoIHJmeHR5cGVzLmV4ZWMoIHZhbHVlICkgKSB7XHJcblx0XHRcdGRlbGV0ZSBwcm9wc1sgaW5kZXggXTtcclxuXHRcdFx0aWYgKCB2YWx1ZSA9PT0gKCBoaWRkZW4gPyBcImhpZGVcIiA6IFwic2hvd1wiICkgKSB7XHJcblx0XHRcdFx0Y29udGludWU7XHJcblx0XHRcdH1cclxuXHRcdFx0aGFuZGxlZC5wdXNoKCBpbmRleCApO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0bGVuZ3RoID0gaGFuZGxlZC5sZW5ndGg7XHJcblx0aWYgKCBsZW5ndGggKSB7XHJcblx0XHRkYXRhU2hvdyA9IGpRdWVyeS5fZGF0YSggZWxlbSwgXCJmeHNob3dcIiApIHx8IGpRdWVyeS5fZGF0YSggZWxlbSwgXCJmeHNob3dcIiwge30gKTtcclxuXHRcdGlmICggaGlkZGVuICkge1xyXG5cdFx0XHRqUXVlcnkoIGVsZW0gKS5zaG93KCk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRhbmltLmRvbmUoZnVuY3Rpb24oKSB7XHJcblx0XHRcdFx0alF1ZXJ5KCBlbGVtICkuaGlkZSgpO1xyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHRcdGFuaW0uZG9uZShmdW5jdGlvbigpIHtcclxuXHRcdFx0dmFyIHByb3A7XHJcblx0XHRcdGpRdWVyeS5yZW1vdmVEYXRhKCBlbGVtLCBcImZ4c2hvd1wiLCB0cnVlICk7XHJcblx0XHRcdGZvciAoIHByb3AgaW4gb3JpZyApIHtcclxuXHRcdFx0XHRqUXVlcnkuc3R5bGUoIGVsZW0sIHByb3AsIG9yaWdbIHByb3AgXSApO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHRcdGZvciAoIGluZGV4ID0gMCA7IGluZGV4IDwgbGVuZ3RoIDsgaW5kZXgrKyApIHtcclxuXHRcdFx0cHJvcCA9IGhhbmRsZWRbIGluZGV4IF07XHJcblx0XHRcdHR3ZWVuID0gYW5pbS5jcmVhdGVUd2VlbiggcHJvcCwgaGlkZGVuID8gZGF0YVNob3dbIHByb3AgXSA6IDAgKTtcclxuXHRcdFx0b3JpZ1sgcHJvcCBdID0gZGF0YVNob3dbIHByb3AgXSB8fCBqUXVlcnkuc3R5bGUoIGVsZW0sIHByb3AgKTtcclxuXHJcblx0XHRcdGlmICggISggcHJvcCBpbiBkYXRhU2hvdyApICkge1xyXG5cdFx0XHRcdGRhdGFTaG93WyBwcm9wIF0gPSB0d2Vlbi5zdGFydDtcclxuXHRcdFx0XHRpZiAoIGhpZGRlbiApIHtcclxuXHRcdFx0XHRcdHR3ZWVuLmVuZCA9IHR3ZWVuLnN0YXJ0O1xyXG5cdFx0XHRcdFx0dHdlZW4uc3RhcnQgPSBwcm9wID09PSBcIndpZHRoXCIgfHwgcHJvcCA9PT0gXCJoZWlnaHRcIiA/IDEgOiAwO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxufVxyXG5cclxuZnVuY3Rpb24gVHdlZW4oIGVsZW0sIG9wdGlvbnMsIHByb3AsIGVuZCwgZWFzaW5nICkge1xyXG5cdHJldHVybiBuZXcgVHdlZW4ucHJvdG90eXBlLmluaXQoIGVsZW0sIG9wdGlvbnMsIHByb3AsIGVuZCwgZWFzaW5nICk7XHJcbn1cclxualF1ZXJ5LlR3ZWVuID0gVHdlZW47XHJcblxyXG5Ud2Vlbi5wcm90b3R5cGUgPSB7XHJcblx0Y29uc3RydWN0b3I6IFR3ZWVuLFxyXG5cdGluaXQ6IGZ1bmN0aW9uKCBlbGVtLCBvcHRpb25zLCBwcm9wLCBlbmQsIGVhc2luZywgdW5pdCApIHtcclxuXHRcdHRoaXMuZWxlbSA9IGVsZW07XHJcblx0XHR0aGlzLnByb3AgPSBwcm9wO1xyXG5cdFx0dGhpcy5lYXNpbmcgPSBlYXNpbmcgfHwgXCJzd2luZ1wiO1xyXG5cdFx0dGhpcy5vcHRpb25zID0gb3B0aW9ucztcclxuXHRcdHRoaXMuc3RhcnQgPSB0aGlzLm5vdyA9IHRoaXMuY3VyKCk7XHJcblx0XHR0aGlzLmVuZCA9IGVuZDtcclxuXHRcdHRoaXMudW5pdCA9IHVuaXQgfHwgKCBqUXVlcnkuY3NzTnVtYmVyWyBwcm9wIF0gPyBcIlwiIDogXCJweFwiICk7XHJcblx0fSxcclxuXHRjdXI6IGZ1bmN0aW9uKCkge1xyXG5cdFx0dmFyIGhvb2tzID0gVHdlZW4ucHJvcEhvb2tzWyB0aGlzLnByb3AgXTtcclxuXHJcblx0XHRyZXR1cm4gaG9va3MgJiYgaG9va3MuZ2V0ID9cclxuXHRcdFx0aG9va3MuZ2V0KCB0aGlzICkgOlxyXG5cdFx0XHRUd2Vlbi5wcm9wSG9va3MuX2RlZmF1bHQuZ2V0KCB0aGlzICk7XHJcblx0fSxcclxuXHRydW46IGZ1bmN0aW9uKCBwZXJjZW50ICkge1xyXG5cdFx0dmFyIGVhc2VkLFxyXG5cdFx0XHRob29rcyA9IFR3ZWVuLnByb3BIb29rc1sgdGhpcy5wcm9wIF07XHJcblxyXG5cdFx0aWYgKCB0aGlzLm9wdGlvbnMuZHVyYXRpb24gKSB7XHJcblx0XHRcdHRoaXMucG9zID0gZWFzZWQgPSBqUXVlcnkuZWFzaW5nWyB0aGlzLmVhc2luZyBdKFxyXG5cdFx0XHRcdHBlcmNlbnQsIHRoaXMub3B0aW9ucy5kdXJhdGlvbiAqIHBlcmNlbnQsIDAsIDEsIHRoaXMub3B0aW9ucy5kdXJhdGlvblxyXG5cdFx0XHQpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5wb3MgPSBlYXNlZCA9IHBlcmNlbnQ7XHJcblx0XHR9XHJcblx0XHR0aGlzLm5vdyA9ICggdGhpcy5lbmQgLSB0aGlzLnN0YXJ0ICkgKiBlYXNlZCArIHRoaXMuc3RhcnQ7XHJcblxyXG5cdFx0aWYgKCB0aGlzLm9wdGlvbnMuc3RlcCApIHtcclxuXHRcdFx0dGhpcy5vcHRpb25zLnN0ZXAuY2FsbCggdGhpcy5lbGVtLCB0aGlzLm5vdywgdGhpcyApO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICggaG9va3MgJiYgaG9va3Muc2V0ICkge1xyXG5cdFx0XHRob29rcy5zZXQoIHRoaXMgKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdFR3ZWVuLnByb3BIb29rcy5fZGVmYXVsdC5zZXQoIHRoaXMgKTtcclxuXHRcdH1cclxuXHRcdHJldHVybiB0aGlzO1xyXG5cdH1cclxufTtcclxuXHJcblR3ZWVuLnByb3RvdHlwZS5pbml0LnByb3RvdHlwZSA9IFR3ZWVuLnByb3RvdHlwZTtcclxuXHJcblR3ZWVuLnByb3BIb29rcyA9IHtcclxuXHRfZGVmYXVsdDoge1xyXG5cdFx0Z2V0OiBmdW5jdGlvbiggdHdlZW4gKSB7XHJcblx0XHRcdHZhciByZXN1bHQ7XHJcblxyXG5cdFx0XHRpZiAoIHR3ZWVuLmVsZW1bIHR3ZWVuLnByb3AgXSAhPSBudWxsICYmXHJcblx0XHRcdFx0KCF0d2Vlbi5lbGVtLnN0eWxlIHx8IHR3ZWVuLmVsZW0uc3R5bGVbIHR3ZWVuLnByb3AgXSA9PSBudWxsKSApIHtcclxuXHRcdFx0XHRyZXR1cm4gdHdlZW4uZWxlbVsgdHdlZW4ucHJvcCBdO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvLyBwYXNzaW5nIGFueSB2YWx1ZSBhcyBhIDR0aCBwYXJhbWV0ZXIgdG8gLmNzcyB3aWxsIGF1dG9tYXRpY2FsbHlcclxuXHRcdFx0Ly8gYXR0ZW1wdCBhIHBhcnNlRmxvYXQgYW5kIGZhbGxiYWNrIHRvIGEgc3RyaW5nIGlmIHRoZSBwYXJzZSBmYWlsc1xyXG5cdFx0XHQvLyBzbywgc2ltcGxlIHZhbHVlcyBzdWNoIGFzIFwiMTBweFwiIGFyZSBwYXJzZWQgdG8gRmxvYXQuXHJcblx0XHRcdC8vIGNvbXBsZXggdmFsdWVzIHN1Y2ggYXMgXCJyb3RhdGUoMXJhZClcIiBhcmUgcmV0dXJuZWQgYXMgaXMuXHJcblx0XHRcdHJlc3VsdCA9IGpRdWVyeS5jc3MoIHR3ZWVuLmVsZW0sIHR3ZWVuLnByb3AsIGZhbHNlLCBcIlwiICk7XHJcblx0XHRcdC8vIEVtcHR5IHN0cmluZ3MsIG51bGwsIHVuZGVmaW5lZCBhbmQgXCJhdXRvXCIgYXJlIGNvbnZlcnRlZCB0byAwLlxyXG5cdFx0XHRyZXR1cm4gIXJlc3VsdCB8fCByZXN1bHQgPT09IFwiYXV0b1wiID8gMCA6IHJlc3VsdDtcclxuXHRcdH0sXHJcblx0XHRzZXQ6IGZ1bmN0aW9uKCB0d2VlbiApIHtcclxuXHRcdFx0Ly8gdXNlIHN0ZXAgaG9vayBmb3IgYmFjayBjb21wYXQgLSB1c2UgY3NzSG9vayBpZiBpdHMgdGhlcmUgLSB1c2UgLnN0eWxlIGlmIGl0c1xyXG5cdFx0XHQvLyBhdmFpbGFibGUgYW5kIHVzZSBwbGFpbiBwcm9wZXJ0aWVzIHdoZXJlIGF2YWlsYWJsZVxyXG5cdFx0XHRpZiAoIGpRdWVyeS5meC5zdGVwWyB0d2Vlbi5wcm9wIF0gKSB7XHJcblx0XHRcdFx0alF1ZXJ5LmZ4LnN0ZXBbIHR3ZWVuLnByb3AgXSggdHdlZW4gKTtcclxuXHRcdFx0fSBlbHNlIGlmICggdHdlZW4uZWxlbS5zdHlsZSAmJiAoIHR3ZWVuLmVsZW0uc3R5bGVbIGpRdWVyeS5jc3NQcm9wc1sgdHdlZW4ucHJvcCBdIF0gIT0gbnVsbCB8fCBqUXVlcnkuY3NzSG9va3NbIHR3ZWVuLnByb3AgXSApICkge1xyXG5cdFx0XHRcdGpRdWVyeS5zdHlsZSggdHdlZW4uZWxlbSwgdHdlZW4ucHJvcCwgdHdlZW4ubm93ICsgdHdlZW4udW5pdCApO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHR3ZWVuLmVsZW1bIHR3ZWVuLnByb3AgXSA9IHR3ZWVuLm5vdztcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxufTtcclxuXHJcbi8vIFJlbW92ZSBpbiAyLjAgLSB0aGlzIHN1cHBvcnRzIElFOCdzIHBhbmljIGJhc2VkIGFwcHJvYWNoXHJcbi8vIHRvIHNldHRpbmcgdGhpbmdzIG9uIGRpc2Nvbm5lY3RlZCBub2Rlc1xyXG5cclxuVHdlZW4ucHJvcEhvb2tzLnNjcm9sbFRvcCA9IFR3ZWVuLnByb3BIb29rcy5zY3JvbGxMZWZ0ID0ge1xyXG5cdHNldDogZnVuY3Rpb24oIHR3ZWVuICkge1xyXG5cdFx0aWYgKCB0d2Vlbi5lbGVtLm5vZGVUeXBlICYmIHR3ZWVuLmVsZW0ucGFyZW50Tm9kZSApIHtcclxuXHRcdFx0dHdlZW4uZWxlbVsgdHdlZW4ucHJvcCBdID0gdHdlZW4ubm93O1xyXG5cdFx0fVxyXG5cdH1cclxufTtcclxuXHJcbmpRdWVyeS5lYWNoKFsgXCJ0b2dnbGVcIiwgXCJzaG93XCIsIFwiaGlkZVwiIF0sIGZ1bmN0aW9uKCBpLCBuYW1lICkge1xyXG5cdHZhciBjc3NGbiA9IGpRdWVyeS5mblsgbmFtZSBdO1xyXG5cdGpRdWVyeS5mblsgbmFtZSBdID0gZnVuY3Rpb24oIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICkge1xyXG5cdFx0cmV0dXJuIHNwZWVkID09IG51bGwgfHwgdHlwZW9mIHNwZWVkID09PSBcImJvb2xlYW5cIiB8fFxyXG5cdFx0XHQvLyBzcGVjaWFsIGNoZWNrIGZvciAudG9nZ2xlKCBoYW5kbGVyLCBoYW5kbGVyLCAuLi4gKVxyXG5cdFx0XHQoICFpICYmIGpRdWVyeS5pc0Z1bmN0aW9uKCBzcGVlZCApICYmIGpRdWVyeS5pc0Z1bmN0aW9uKCBlYXNpbmcgKSApID9cclxuXHRcdFx0Y3NzRm4uYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApIDpcclxuXHRcdFx0dGhpcy5hbmltYXRlKCBnZW5GeCggbmFtZSwgdHJ1ZSApLCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApO1xyXG5cdH07XHJcbn0pO1xyXG5cclxualF1ZXJ5LmZuLmV4dGVuZCh7XHJcblx0ZmFkZVRvOiBmdW5jdGlvbiggc3BlZWQsIHRvLCBlYXNpbmcsIGNhbGxiYWNrICkge1xyXG5cclxuXHRcdC8vIHNob3cgYW55IGhpZGRlbiBlbGVtZW50cyBhZnRlciBzZXR0aW5nIG9wYWNpdHkgdG8gMFxyXG5cdFx0cmV0dXJuIHRoaXMuZmlsdGVyKCBpc0hpZGRlbiApLmNzcyggXCJvcGFjaXR5XCIsIDAgKS5zaG93KClcclxuXHJcblx0XHRcdC8vIGFuaW1hdGUgdG8gdGhlIHZhbHVlIHNwZWNpZmllZFxyXG5cdFx0XHQuZW5kKCkuYW5pbWF0ZSh7IG9wYWNpdHk6IHRvIH0sIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICk7XHJcblx0fSxcclxuXHRhbmltYXRlOiBmdW5jdGlvbiggcHJvcCwgc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKSB7XHJcblx0XHR2YXIgZW1wdHkgPSBqUXVlcnkuaXNFbXB0eU9iamVjdCggcHJvcCApLFxyXG5cdFx0XHRvcHRhbGwgPSBqUXVlcnkuc3BlZWQoIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICksXHJcblx0XHRcdGRvQW5pbWF0aW9uID0gZnVuY3Rpb24oKSB7XHJcblx0XHRcdFx0Ly8gT3BlcmF0ZSBvbiBhIGNvcHkgb2YgcHJvcCBzbyBwZXItcHJvcGVydHkgZWFzaW5nIHdvbid0IGJlIGxvc3RcclxuXHRcdFx0XHR2YXIgYW5pbSA9IEFuaW1hdGlvbiggdGhpcywgalF1ZXJ5LmV4dGVuZCgge30sIHByb3AgKSwgb3B0YWxsICk7XHJcblxyXG5cdFx0XHRcdC8vIEVtcHR5IGFuaW1hdGlvbnMgcmVzb2x2ZSBpbW1lZGlhdGVseVxyXG5cdFx0XHRcdGlmICggZW1wdHkgKSB7XHJcblx0XHRcdFx0XHRhbmltLnN0b3AoIHRydWUgKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH07XHJcblxyXG5cdFx0cmV0dXJuIGVtcHR5IHx8IG9wdGFsbC5xdWV1ZSA9PT0gZmFsc2UgP1xyXG5cdFx0XHR0aGlzLmVhY2goIGRvQW5pbWF0aW9uICkgOlxyXG5cdFx0XHR0aGlzLnF1ZXVlKCBvcHRhbGwucXVldWUsIGRvQW5pbWF0aW9uICk7XHJcblx0fSxcclxuXHRzdG9wOiBmdW5jdGlvbiggdHlwZSwgY2xlYXJRdWV1ZSwgZ290b0VuZCApIHtcclxuXHRcdHZhciBzdG9wUXVldWUgPSBmdW5jdGlvbiggaG9va3MgKSB7XHJcblx0XHRcdHZhciBzdG9wID0gaG9va3Muc3RvcDtcclxuXHRcdFx0ZGVsZXRlIGhvb2tzLnN0b3A7XHJcblx0XHRcdHN0b3AoIGdvdG9FbmQgKTtcclxuXHRcdH07XHJcblxyXG5cdFx0aWYgKCB0eXBlb2YgdHlwZSAhPT0gXCJzdHJpbmdcIiApIHtcclxuXHRcdFx0Z290b0VuZCA9IGNsZWFyUXVldWU7XHJcblx0XHRcdGNsZWFyUXVldWUgPSB0eXBlO1xyXG5cdFx0XHR0eXBlID0gdW5kZWZpbmVkO1xyXG5cdFx0fVxyXG5cdFx0aWYgKCBjbGVhclF1ZXVlICYmIHR5cGUgIT09IGZhbHNlICkge1xyXG5cdFx0XHR0aGlzLnF1ZXVlKCB0eXBlIHx8IFwiZnhcIiwgW10gKTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkge1xyXG5cdFx0XHR2YXIgZGVxdWV1ZSA9IHRydWUsXHJcblx0XHRcdFx0aW5kZXggPSB0eXBlICE9IG51bGwgJiYgdHlwZSArIFwicXVldWVIb29rc1wiLFxyXG5cdFx0XHRcdHRpbWVycyA9IGpRdWVyeS50aW1lcnMsXHJcblx0XHRcdFx0ZGF0YSA9IGpRdWVyeS5fZGF0YSggdGhpcyApO1xyXG5cclxuXHRcdFx0aWYgKCBpbmRleCApIHtcclxuXHRcdFx0XHRpZiAoIGRhdGFbIGluZGV4IF0gJiYgZGF0YVsgaW5kZXggXS5zdG9wICkge1xyXG5cdFx0XHRcdFx0c3RvcFF1ZXVlKCBkYXRhWyBpbmRleCBdICk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdGZvciAoIGluZGV4IGluIGRhdGEgKSB7XHJcblx0XHRcdFx0XHRpZiAoIGRhdGFbIGluZGV4IF0gJiYgZGF0YVsgaW5kZXggXS5zdG9wICYmIHJydW4udGVzdCggaW5kZXggKSApIHtcclxuXHRcdFx0XHRcdFx0c3RvcFF1ZXVlKCBkYXRhWyBpbmRleCBdICk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRmb3IgKCBpbmRleCA9IHRpbWVycy5sZW5ndGg7IGluZGV4LS07ICkge1xyXG5cdFx0XHRcdGlmICggdGltZXJzWyBpbmRleCBdLmVsZW0gPT09IHRoaXMgJiYgKHR5cGUgPT0gbnVsbCB8fCB0aW1lcnNbIGluZGV4IF0ucXVldWUgPT09IHR5cGUpICkge1xyXG5cdFx0XHRcdFx0dGltZXJzWyBpbmRleCBdLmFuaW0uc3RvcCggZ290b0VuZCApO1xyXG5cdFx0XHRcdFx0ZGVxdWV1ZSA9IGZhbHNlO1xyXG5cdFx0XHRcdFx0dGltZXJzLnNwbGljZSggaW5kZXgsIDEgKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8vIHN0YXJ0IHRoZSBuZXh0IGluIHRoZSBxdWV1ZSBpZiB0aGUgbGFzdCBzdGVwIHdhc24ndCBmb3JjZWRcclxuXHRcdFx0Ly8gdGltZXJzIGN1cnJlbnRseSB3aWxsIGNhbGwgdGhlaXIgY29tcGxldGUgY2FsbGJhY2tzLCB3aGljaCB3aWxsIGRlcXVldWVcclxuXHRcdFx0Ly8gYnV0IG9ubHkgaWYgdGhleSB3ZXJlIGdvdG9FbmRcclxuXHRcdFx0aWYgKCBkZXF1ZXVlIHx8ICFnb3RvRW5kICkge1xyXG5cdFx0XHRcdGpRdWVyeS5kZXF1ZXVlKCB0aGlzLCB0eXBlICk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxufSk7XHJcblxyXG4vLyBHZW5lcmF0ZSBwYXJhbWV0ZXJzIHRvIGNyZWF0ZSBhIHN0YW5kYXJkIGFuaW1hdGlvblxyXG5mdW5jdGlvbiBnZW5GeCggdHlwZSwgaW5jbHVkZVdpZHRoICkge1xyXG5cdHZhciB3aGljaCxcclxuXHRcdGF0dHJzID0geyBoZWlnaHQ6IHR5cGUgfSxcclxuXHRcdGkgPSAwO1xyXG5cclxuXHQvLyBpZiB3ZSBpbmNsdWRlIHdpZHRoLCBzdGVwIHZhbHVlIGlzIDEgdG8gZG8gYWxsIGNzc0V4cGFuZCB2YWx1ZXMsXHJcblx0Ly8gaWYgd2UgZG9uJ3QgaW5jbHVkZSB3aWR0aCwgc3RlcCB2YWx1ZSBpcyAyIHRvIHNraXAgb3ZlciBMZWZ0IGFuZCBSaWdodFxyXG5cdGluY2x1ZGVXaWR0aCA9IGluY2x1ZGVXaWR0aD8gMSA6IDA7XHJcblx0Zm9yKCA7IGkgPCA0IDsgaSArPSAyIC0gaW5jbHVkZVdpZHRoICkge1xyXG5cdFx0d2hpY2ggPSBjc3NFeHBhbmRbIGkgXTtcclxuXHRcdGF0dHJzWyBcIm1hcmdpblwiICsgd2hpY2ggXSA9IGF0dHJzWyBcInBhZGRpbmdcIiArIHdoaWNoIF0gPSB0eXBlO1xyXG5cdH1cclxuXHJcblx0aWYgKCBpbmNsdWRlV2lkdGggKSB7XHJcblx0XHRhdHRycy5vcGFjaXR5ID0gYXR0cnMud2lkdGggPSB0eXBlO1xyXG5cdH1cclxuXHJcblx0cmV0dXJuIGF0dHJzO1xyXG59XHJcblxyXG4vLyBHZW5lcmF0ZSBzaG9ydGN1dHMgZm9yIGN1c3RvbSBhbmltYXRpb25zXHJcbmpRdWVyeS5lYWNoKHtcclxuXHRzbGlkZURvd246IGdlbkZ4KFwic2hvd1wiKSxcclxuXHRzbGlkZVVwOiBnZW5GeChcImhpZGVcIiksXHJcblx0c2xpZGVUb2dnbGU6IGdlbkZ4KFwidG9nZ2xlXCIpLFxyXG5cdGZhZGVJbjogeyBvcGFjaXR5OiBcInNob3dcIiB9LFxyXG5cdGZhZGVPdXQ6IHsgb3BhY2l0eTogXCJoaWRlXCIgfSxcclxuXHRmYWRlVG9nZ2xlOiB7IG9wYWNpdHk6IFwidG9nZ2xlXCIgfVxyXG59LCBmdW5jdGlvbiggbmFtZSwgcHJvcHMgKSB7XHJcblx0alF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbiggc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5hbmltYXRlKCBwcm9wcywgc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKTtcclxuXHR9O1xyXG59KTtcclxuXHJcbmpRdWVyeS5zcGVlZCA9IGZ1bmN0aW9uKCBzcGVlZCwgZWFzaW5nLCBmbiApIHtcclxuXHR2YXIgb3B0ID0gc3BlZWQgJiYgdHlwZW9mIHNwZWVkID09PSBcIm9iamVjdFwiID8galF1ZXJ5LmV4dGVuZCgge30sIHNwZWVkICkgOiB7XHJcblx0XHRjb21wbGV0ZTogZm4gfHwgIWZuICYmIGVhc2luZyB8fFxyXG5cdFx0XHRqUXVlcnkuaXNGdW5jdGlvbiggc3BlZWQgKSAmJiBzcGVlZCxcclxuXHRcdGR1cmF0aW9uOiBzcGVlZCxcclxuXHRcdGVhc2luZzogZm4gJiYgZWFzaW5nIHx8IGVhc2luZyAmJiAhalF1ZXJ5LmlzRnVuY3Rpb24oIGVhc2luZyApICYmIGVhc2luZ1xyXG5cdH07XHJcblxyXG5cdG9wdC5kdXJhdGlvbiA9IGpRdWVyeS5meC5vZmYgPyAwIDogdHlwZW9mIG9wdC5kdXJhdGlvbiA9PT0gXCJudW1iZXJcIiA/IG9wdC5kdXJhdGlvbiA6XHJcblx0XHRvcHQuZHVyYXRpb24gaW4galF1ZXJ5LmZ4LnNwZWVkcyA/IGpRdWVyeS5meC5zcGVlZHNbIG9wdC5kdXJhdGlvbiBdIDogalF1ZXJ5LmZ4LnNwZWVkcy5fZGVmYXVsdDtcclxuXHJcblx0Ly8gbm9ybWFsaXplIG9wdC5xdWV1ZSAtIHRydWUvdW5kZWZpbmVkL251bGwgLT4gXCJmeFwiXHJcblx0aWYgKCBvcHQucXVldWUgPT0gbnVsbCB8fCBvcHQucXVldWUgPT09IHRydWUgKSB7XHJcblx0XHRvcHQucXVldWUgPSBcImZ4XCI7XHJcblx0fVxyXG5cclxuXHQvLyBRdWV1ZWluZ1xyXG5cdG9wdC5vbGQgPSBvcHQuY29tcGxldGU7XHJcblxyXG5cdG9wdC5jb21wbGV0ZSA9IGZ1bmN0aW9uKCkge1xyXG5cdFx0aWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggb3B0Lm9sZCApICkge1xyXG5cdFx0XHRvcHQub2xkLmNhbGwoIHRoaXMgKTtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAoIG9wdC5xdWV1ZSApIHtcclxuXHRcdFx0alF1ZXJ5LmRlcXVldWUoIHRoaXMsIG9wdC5xdWV1ZSApO1xyXG5cdFx0fVxyXG5cdH07XHJcblxyXG5cdHJldHVybiBvcHQ7XHJcbn07XHJcblxyXG5qUXVlcnkuZWFzaW5nID0ge1xyXG5cdGxpbmVhcjogZnVuY3Rpb24oIHAgKSB7XHJcblx0XHRyZXR1cm4gcDtcclxuXHR9LFxyXG5cdHN3aW5nOiBmdW5jdGlvbiggcCApIHtcclxuXHRcdHJldHVybiAwLjUgLSBNYXRoLmNvcyggcCpNYXRoLlBJICkgLyAyO1xyXG5cdH1cclxufTtcclxuXHJcbmpRdWVyeS50aW1lcnMgPSBbXTtcclxualF1ZXJ5LmZ4ID0gVHdlZW4ucHJvdG90eXBlLmluaXQ7XHJcbmpRdWVyeS5meC50aWNrID0gZnVuY3Rpb24oKSB7XHJcblx0dmFyIHRpbWVyLFxyXG5cdFx0dGltZXJzID0galF1ZXJ5LnRpbWVycyxcclxuXHRcdGkgPSAwO1xyXG5cclxuXHRmb3IgKCA7IGkgPCB0aW1lcnMubGVuZ3RoOyBpKysgKSB7XHJcblx0XHR0aW1lciA9IHRpbWVyc1sgaSBdO1xyXG5cdFx0Ly8gQ2hlY2tzIHRoZSB0aW1lciBoYXMgbm90IGFscmVhZHkgYmVlbiByZW1vdmVkXHJcblx0XHRpZiAoICF0aW1lcigpICYmIHRpbWVyc1sgaSBdID09PSB0aW1lciApIHtcclxuXHRcdFx0dGltZXJzLnNwbGljZSggaS0tLCAxICk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRpZiAoICF0aW1lcnMubGVuZ3RoICkge1xyXG5cdFx0alF1ZXJ5LmZ4LnN0b3AoKTtcclxuXHR9XHJcbn07XHJcblxyXG5qUXVlcnkuZngudGltZXIgPSBmdW5jdGlvbiggdGltZXIgKSB7XHJcblx0aWYgKCB0aW1lcigpICYmIGpRdWVyeS50aW1lcnMucHVzaCggdGltZXIgKSAmJiAhdGltZXJJZCApIHtcclxuXHRcdHRpbWVySWQgPSBzZXRJbnRlcnZhbCggalF1ZXJ5LmZ4LnRpY2ssIGpRdWVyeS5meC5pbnRlcnZhbCApO1xyXG5cdH1cclxufTtcclxuXHJcbmpRdWVyeS5meC5pbnRlcnZhbCA9IDEzO1xyXG5cclxualF1ZXJ5LmZ4LnN0b3AgPSBmdW5jdGlvbigpIHtcclxuXHRjbGVhckludGVydmFsKCB0aW1lcklkICk7XHJcblx0dGltZXJJZCA9IG51bGw7XHJcbn07XHJcblxyXG5qUXVlcnkuZnguc3BlZWRzID0ge1xyXG5cdHNsb3c6IDYwMCxcclxuXHRmYXN0OiAyMDAsXHJcblx0Ly8gRGVmYXVsdCBzcGVlZFxyXG5cdF9kZWZhdWx0OiA0MDBcclxufTtcclxuXHJcbi8vIEJhY2sgQ29tcGF0IDwxLjggZXh0ZW5zaW9uIHBvaW50XHJcbmpRdWVyeS5meC5zdGVwID0ge307XHJcblxyXG5pZiAoIGpRdWVyeS5leHByICYmIGpRdWVyeS5leHByLmZpbHRlcnMgKSB7XHJcblx0alF1ZXJ5LmV4cHIuZmlsdGVycy5hbmltYXRlZCA9IGZ1bmN0aW9uKCBlbGVtICkge1xyXG5cdFx0cmV0dXJuIGpRdWVyeS5ncmVwKGpRdWVyeS50aW1lcnMsIGZ1bmN0aW9uKCBmbiApIHtcclxuXHRcdFx0cmV0dXJuIGVsZW0gPT09IGZuLmVsZW07XHJcblx0XHR9KS5sZW5ndGg7XHJcblx0fTtcclxufVxyXG52YXIgcnJvb3QgPSAvXig/OmJvZHl8aHRtbCkkL2k7XHJcblxyXG5qUXVlcnkuZm4ub2Zmc2V0ID0gZnVuY3Rpb24oIG9wdGlvbnMgKSB7XHJcblx0aWYgKCBhcmd1bWVudHMubGVuZ3RoICkge1xyXG5cdFx0cmV0dXJuIG9wdGlvbnMgPT09IHVuZGVmaW5lZCA/XHJcblx0XHRcdHRoaXMgOlxyXG5cdFx0XHR0aGlzLmVhY2goZnVuY3Rpb24oIGkgKSB7XHJcblx0XHRcdFx0alF1ZXJ5Lm9mZnNldC5zZXRPZmZzZXQoIHRoaXMsIG9wdGlvbnMsIGkgKTtcclxuXHRcdFx0fSk7XHJcblx0fVxyXG5cclxuXHR2YXIgYm94LCBkb2NFbGVtLCBib2R5LCB3aW4sIGNsaWVudFRvcCwgY2xpZW50TGVmdCwgc2Nyb2xsVG9wLCBzY3JvbGxMZWZ0LCB0b3AsIGxlZnQsXHJcblx0XHRlbGVtID0gdGhpc1sgMCBdLFxyXG5cdFx0ZG9jID0gZWxlbSAmJiBlbGVtLm93bmVyRG9jdW1lbnQ7XHJcblxyXG5cdGlmICggIWRvYyApIHtcclxuXHRcdHJldHVybjtcclxuXHR9XHJcblxyXG5cdGlmICggKGJvZHkgPSBkb2MuYm9keSkgPT09IGVsZW0gKSB7XHJcblx0XHRyZXR1cm4galF1ZXJ5Lm9mZnNldC5ib2R5T2Zmc2V0KCBlbGVtICk7XHJcblx0fVxyXG5cclxuXHRkb2NFbGVtID0gZG9jLmRvY3VtZW50RWxlbWVudDtcclxuXHJcblx0Ly8gTWFrZSBzdXJlIHdlJ3JlIG5vdCBkZWFsaW5nIHdpdGggYSBkaXNjb25uZWN0ZWQgRE9NIG5vZGVcclxuXHRpZiAoICFqUXVlcnkuY29udGFpbnMoIGRvY0VsZW0sIGVsZW0gKSApIHtcclxuXHRcdHJldHVybiB7IHRvcDogMCwgbGVmdDogMCB9O1xyXG5cdH1cclxuXHJcblx0Ym94ID0gZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuXHR3aW4gPSBnZXRXaW5kb3coIGRvYyApO1xyXG5cdGNsaWVudFRvcCAgPSBkb2NFbGVtLmNsaWVudFRvcCAgfHwgYm9keS5jbGllbnRUb3AgIHx8IDA7XHJcblx0Y2xpZW50TGVmdCA9IGRvY0VsZW0uY2xpZW50TGVmdCB8fCBib2R5LmNsaWVudExlZnQgfHwgMDtcclxuXHRzY3JvbGxUb3AgID0gd2luLnBhZ2VZT2Zmc2V0IHx8IGRvY0VsZW0uc2Nyb2xsVG9wO1xyXG5cdHNjcm9sbExlZnQgPSB3aW4ucGFnZVhPZmZzZXQgfHwgZG9jRWxlbS5zY3JvbGxMZWZ0O1xyXG5cdHRvcCAgPSBib3gudG9wICArIHNjcm9sbFRvcCAgLSBjbGllbnRUb3A7XHJcblx0bGVmdCA9IGJveC5sZWZ0ICsgc2Nyb2xsTGVmdCAtIGNsaWVudExlZnQ7XHJcblxyXG5cdHJldHVybiB7IHRvcDogdG9wLCBsZWZ0OiBsZWZ0IH07XHJcbn07XHJcblxyXG5qUXVlcnkub2Zmc2V0ID0ge1xyXG5cclxuXHRib2R5T2Zmc2V0OiBmdW5jdGlvbiggYm9keSApIHtcclxuXHRcdHZhciB0b3AgPSBib2R5Lm9mZnNldFRvcCxcclxuXHRcdFx0bGVmdCA9IGJvZHkub2Zmc2V0TGVmdDtcclxuXHJcblx0XHRpZiAoIGpRdWVyeS5zdXBwb3J0LmRvZXNOb3RJbmNsdWRlTWFyZ2luSW5Cb2R5T2Zmc2V0ICkge1xyXG5cdFx0XHR0b3AgICs9IHBhcnNlRmxvYXQoIGpRdWVyeS5jc3MoYm9keSwgXCJtYXJnaW5Ub3BcIikgKSB8fCAwO1xyXG5cdFx0XHRsZWZ0ICs9IHBhcnNlRmxvYXQoIGpRdWVyeS5jc3MoYm9keSwgXCJtYXJnaW5MZWZ0XCIpICkgfHwgMDtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4geyB0b3A6IHRvcCwgbGVmdDogbGVmdCB9O1xyXG5cdH0sXHJcblxyXG5cdHNldE9mZnNldDogZnVuY3Rpb24oIGVsZW0sIG9wdGlvbnMsIGkgKSB7XHJcblx0XHR2YXIgcG9zaXRpb24gPSBqUXVlcnkuY3NzKCBlbGVtLCBcInBvc2l0aW9uXCIgKTtcclxuXHJcblx0XHQvLyBzZXQgcG9zaXRpb24gZmlyc3QsIGluLWNhc2UgdG9wL2xlZnQgYXJlIHNldCBldmVuIG9uIHN0YXRpYyBlbGVtXHJcblx0XHRpZiAoIHBvc2l0aW9uID09PSBcInN0YXRpY1wiICkge1xyXG5cdFx0XHRlbGVtLnN0eWxlLnBvc2l0aW9uID0gXCJyZWxhdGl2ZVwiO1xyXG5cdFx0fVxyXG5cclxuXHRcdHZhciBjdXJFbGVtID0galF1ZXJ5KCBlbGVtICksXHJcblx0XHRcdGN1ck9mZnNldCA9IGN1ckVsZW0ub2Zmc2V0KCksXHJcblx0XHRcdGN1ckNTU1RvcCA9IGpRdWVyeS5jc3MoIGVsZW0sIFwidG9wXCIgKSxcclxuXHRcdFx0Y3VyQ1NTTGVmdCA9IGpRdWVyeS5jc3MoIGVsZW0sIFwibGVmdFwiICksXHJcblx0XHRcdGNhbGN1bGF0ZVBvc2l0aW9uID0gKCBwb3NpdGlvbiA9PT0gXCJhYnNvbHV0ZVwiIHx8IHBvc2l0aW9uID09PSBcImZpeGVkXCIgKSAmJiBqUXVlcnkuaW5BcnJheShcImF1dG9cIiwgW2N1ckNTU1RvcCwgY3VyQ1NTTGVmdF0pID4gLTEsXHJcblx0XHRcdHByb3BzID0ge30sIGN1clBvc2l0aW9uID0ge30sIGN1clRvcCwgY3VyTGVmdDtcclxuXHJcblx0XHQvLyBuZWVkIHRvIGJlIGFibGUgdG8gY2FsY3VsYXRlIHBvc2l0aW9uIGlmIGVpdGhlciB0b3Agb3IgbGVmdCBpcyBhdXRvIGFuZCBwb3NpdGlvbiBpcyBlaXRoZXIgYWJzb2x1dGUgb3IgZml4ZWRcclxuXHRcdGlmICggY2FsY3VsYXRlUG9zaXRpb24gKSB7XHJcblx0XHRcdGN1clBvc2l0aW9uID0gY3VyRWxlbS5wb3NpdGlvbigpO1xyXG5cdFx0XHRjdXJUb3AgPSBjdXJQb3NpdGlvbi50b3A7XHJcblx0XHRcdGN1ckxlZnQgPSBjdXJQb3NpdGlvbi5sZWZ0O1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0Y3VyVG9wID0gcGFyc2VGbG9hdCggY3VyQ1NTVG9wICkgfHwgMDtcclxuXHRcdFx0Y3VyTGVmdCA9IHBhcnNlRmxvYXQoIGN1ckNTU0xlZnQgKSB8fCAwO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIG9wdGlvbnMgKSApIHtcclxuXHRcdFx0b3B0aW9ucyA9IG9wdGlvbnMuY2FsbCggZWxlbSwgaSwgY3VyT2Zmc2V0ICk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKCBvcHRpb25zLnRvcCAhPSBudWxsICkge1xyXG5cdFx0XHRwcm9wcy50b3AgPSAoIG9wdGlvbnMudG9wIC0gY3VyT2Zmc2V0LnRvcCApICsgY3VyVG9wO1xyXG5cdFx0fVxyXG5cdFx0aWYgKCBvcHRpb25zLmxlZnQgIT0gbnVsbCApIHtcclxuXHRcdFx0cHJvcHMubGVmdCA9ICggb3B0aW9ucy5sZWZ0IC0gY3VyT2Zmc2V0LmxlZnQgKSArIGN1ckxlZnQ7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKCBcInVzaW5nXCIgaW4gb3B0aW9ucyApIHtcclxuXHRcdFx0b3B0aW9ucy51c2luZy5jYWxsKCBlbGVtLCBwcm9wcyApO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0Y3VyRWxlbS5jc3MoIHByb3BzICk7XHJcblx0XHR9XHJcblx0fVxyXG59O1xyXG5cclxuXHJcbmpRdWVyeS5mbi5leHRlbmQoe1xyXG5cclxuXHRwb3NpdGlvbjogZnVuY3Rpb24oKSB7XHJcblx0XHRpZiAoICF0aGlzWzBdICkge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0dmFyIGVsZW0gPSB0aGlzWzBdLFxyXG5cclxuXHRcdC8vIEdldCAqcmVhbCogb2Zmc2V0UGFyZW50XHJcblx0XHRvZmZzZXRQYXJlbnQgPSB0aGlzLm9mZnNldFBhcmVudCgpLFxyXG5cclxuXHRcdC8vIEdldCBjb3JyZWN0IG9mZnNldHNcclxuXHRcdG9mZnNldCAgICAgICA9IHRoaXMub2Zmc2V0KCksXHJcblx0XHRwYXJlbnRPZmZzZXQgPSBycm9vdC50ZXN0KG9mZnNldFBhcmVudFswXS5ub2RlTmFtZSkgPyB7IHRvcDogMCwgbGVmdDogMCB9IDogb2Zmc2V0UGFyZW50Lm9mZnNldCgpO1xyXG5cclxuXHRcdC8vIFN1YnRyYWN0IGVsZW1lbnQgbWFyZ2luc1xyXG5cdFx0Ly8gbm90ZTogd2hlbiBhbiBlbGVtZW50IGhhcyBtYXJnaW46IGF1dG8gdGhlIG9mZnNldExlZnQgYW5kIG1hcmdpbkxlZnRcclxuXHRcdC8vIGFyZSB0aGUgc2FtZSBpbiBTYWZhcmkgY2F1c2luZyBvZmZzZXQubGVmdCB0byBpbmNvcnJlY3RseSBiZSAwXHJcblx0XHRvZmZzZXQudG9wICAtPSBwYXJzZUZsb2F0KCBqUXVlcnkuY3NzKGVsZW0sIFwibWFyZ2luVG9wXCIpICkgfHwgMDtcclxuXHRcdG9mZnNldC5sZWZ0IC09IHBhcnNlRmxvYXQoIGpRdWVyeS5jc3MoZWxlbSwgXCJtYXJnaW5MZWZ0XCIpICkgfHwgMDtcclxuXHJcblx0XHQvLyBBZGQgb2Zmc2V0UGFyZW50IGJvcmRlcnNcclxuXHRcdHBhcmVudE9mZnNldC50b3AgICs9IHBhcnNlRmxvYXQoIGpRdWVyeS5jc3Mob2Zmc2V0UGFyZW50WzBdLCBcImJvcmRlclRvcFdpZHRoXCIpICkgfHwgMDtcclxuXHRcdHBhcmVudE9mZnNldC5sZWZ0ICs9IHBhcnNlRmxvYXQoIGpRdWVyeS5jc3Mob2Zmc2V0UGFyZW50WzBdLCBcImJvcmRlckxlZnRXaWR0aFwiKSApIHx8IDA7XHJcblxyXG5cdFx0Ly8gU3VidHJhY3QgdGhlIHR3byBvZmZzZXRzXHJcblx0XHRyZXR1cm4ge1xyXG5cdFx0XHR0b3A6ICBvZmZzZXQudG9wICAtIHBhcmVudE9mZnNldC50b3AsXHJcblx0XHRcdGxlZnQ6IG9mZnNldC5sZWZ0IC0gcGFyZW50T2Zmc2V0LmxlZnRcclxuXHRcdH07XHJcblx0fSxcclxuXHJcblx0b2Zmc2V0UGFyZW50OiBmdW5jdGlvbigpIHtcclxuXHRcdHJldHVybiB0aGlzLm1hcChmdW5jdGlvbigpIHtcclxuXHRcdFx0dmFyIG9mZnNldFBhcmVudCA9IHRoaXMub2Zmc2V0UGFyZW50IHx8IGRvY3VtZW50LmJvZHk7XHJcblx0XHRcdHdoaWxlICggb2Zmc2V0UGFyZW50ICYmICghcnJvb3QudGVzdChvZmZzZXRQYXJlbnQubm9kZU5hbWUpICYmIGpRdWVyeS5jc3Mob2Zmc2V0UGFyZW50LCBcInBvc2l0aW9uXCIpID09PSBcInN0YXRpY1wiKSApIHtcclxuXHRcdFx0XHRvZmZzZXRQYXJlbnQgPSBvZmZzZXRQYXJlbnQub2Zmc2V0UGFyZW50O1xyXG5cdFx0XHR9XHJcblx0XHRcdHJldHVybiBvZmZzZXRQYXJlbnQgfHwgZG9jdW1lbnQuYm9keTtcclxuXHRcdH0pO1xyXG5cdH1cclxufSk7XHJcblxyXG5cclxuLy8gQ3JlYXRlIHNjcm9sbExlZnQgYW5kIHNjcm9sbFRvcCBtZXRob2RzXHJcbmpRdWVyeS5lYWNoKCB7c2Nyb2xsTGVmdDogXCJwYWdlWE9mZnNldFwiLCBzY3JvbGxUb3A6IFwicGFnZVlPZmZzZXRcIn0sIGZ1bmN0aW9uKCBtZXRob2QsIHByb3AgKSB7XHJcblx0dmFyIHRvcCA9IC9ZLy50ZXN0KCBwcm9wICk7XHJcblxyXG5cdGpRdWVyeS5mblsgbWV0aG9kIF0gPSBmdW5jdGlvbiggdmFsICkge1xyXG5cdFx0cmV0dXJuIGpRdWVyeS5hY2Nlc3MoIHRoaXMsIGZ1bmN0aW9uKCBlbGVtLCBtZXRob2QsIHZhbCApIHtcclxuXHRcdFx0dmFyIHdpbiA9IGdldFdpbmRvdyggZWxlbSApO1xyXG5cclxuXHRcdFx0aWYgKCB2YWwgPT09IHVuZGVmaW5lZCApIHtcclxuXHRcdFx0XHRyZXR1cm4gd2luID8gKHByb3AgaW4gd2luKSA/IHdpblsgcHJvcCBdIDpcclxuXHRcdFx0XHRcdHdpbi5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbIG1ldGhvZCBdIDpcclxuXHRcdFx0XHRcdGVsZW1bIG1ldGhvZCBdO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRpZiAoIHdpbiApIHtcclxuXHRcdFx0XHR3aW4uc2Nyb2xsVG8oXHJcblx0XHRcdFx0XHQhdG9wID8gdmFsIDogalF1ZXJ5KCB3aW4gKS5zY3JvbGxMZWZ0KCksXHJcblx0XHRcdFx0XHQgdG9wID8gdmFsIDogalF1ZXJ5KCB3aW4gKS5zY3JvbGxUb3AoKVxyXG5cdFx0XHRcdCk7XHJcblxyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdGVsZW1bIG1ldGhvZCBdID0gdmFsO1xyXG5cdFx0XHR9XHJcblx0XHR9LCBtZXRob2QsIHZhbCwgYXJndW1lbnRzLmxlbmd0aCwgbnVsbCApO1xyXG5cdH07XHJcbn0pO1xyXG5cclxuZnVuY3Rpb24gZ2V0V2luZG93KCBlbGVtICkge1xyXG5cdHJldHVybiBqUXVlcnkuaXNXaW5kb3coIGVsZW0gKSA/XHJcblx0XHRlbGVtIDpcclxuXHRcdGVsZW0ubm9kZVR5cGUgPT09IDkgP1xyXG5cdFx0XHRlbGVtLmRlZmF1bHRWaWV3IHx8IGVsZW0ucGFyZW50V2luZG93IDpcclxuXHRcdFx0ZmFsc2U7XHJcbn1cclxuLy8gQ3JlYXRlIGlubmVySGVpZ2h0LCBpbm5lcldpZHRoLCBoZWlnaHQsIHdpZHRoLCBvdXRlckhlaWdodCBhbmQgb3V0ZXJXaWR0aCBtZXRob2RzXHJcbmpRdWVyeS5lYWNoKCB7IEhlaWdodDogXCJoZWlnaHRcIiwgV2lkdGg6IFwid2lkdGhcIiB9LCBmdW5jdGlvbiggbmFtZSwgdHlwZSApIHtcclxuXHRqUXVlcnkuZWFjaCggeyBwYWRkaW5nOiBcImlubmVyXCIgKyBuYW1lLCBjb250ZW50OiB0eXBlLCBcIlwiOiBcIm91dGVyXCIgKyBuYW1lIH0sIGZ1bmN0aW9uKCBkZWZhdWx0RXh0cmEsIGZ1bmNOYW1lICkge1xyXG5cdFx0Ly8gbWFyZ2luIGlzIG9ubHkgZm9yIG91dGVySGVpZ2h0LCBvdXRlcldpZHRoXHJcblx0XHRqUXVlcnkuZm5bIGZ1bmNOYW1lIF0gPSBmdW5jdGlvbiggbWFyZ2luLCB2YWx1ZSApIHtcclxuXHRcdFx0dmFyIGNoYWluYWJsZSA9IGFyZ3VtZW50cy5sZW5ndGggJiYgKCBkZWZhdWx0RXh0cmEgfHwgdHlwZW9mIG1hcmdpbiAhPT0gXCJib29sZWFuXCIgKSxcclxuXHRcdFx0XHRleHRyYSA9IGRlZmF1bHRFeHRyYSB8fCAoIG1hcmdpbiA9PT0gdHJ1ZSB8fCB2YWx1ZSA9PT0gdHJ1ZSA/IFwibWFyZ2luXCIgOiBcImJvcmRlclwiICk7XHJcblxyXG5cdFx0XHRyZXR1cm4galF1ZXJ5LmFjY2VzcyggdGhpcywgZnVuY3Rpb24oIGVsZW0sIHR5cGUsIHZhbHVlICkge1xyXG5cdFx0XHRcdHZhciBkb2M7XHJcblxyXG5cdFx0XHRcdGlmICggalF1ZXJ5LmlzV2luZG93KCBlbGVtICkgKSB7XHJcblx0XHRcdFx0XHQvLyBBcyBvZiA1LzgvMjAxMiB0aGlzIHdpbGwgeWllbGQgaW5jb3JyZWN0IHJlc3VsdHMgZm9yIE1vYmlsZSBTYWZhcmksIGJ1dCB0aGVyZVxyXG5cdFx0XHRcdFx0Ly8gaXNuJ3QgYSB3aG9sZSBsb3Qgd2UgY2FuIGRvLiBTZWUgcHVsbCByZXF1ZXN0IGF0IHRoaXMgVVJMIGZvciBkaXNjdXNzaW9uOlxyXG5cdFx0XHRcdFx0Ly8gaHR0cHM6Ly9naXRodWIuY29tL2pxdWVyeS9qcXVlcnkvcHVsbC83NjRcclxuXHRcdFx0XHRcdHJldHVybiBlbGVtLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFsgXCJjbGllbnRcIiArIG5hbWUgXTtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdC8vIEdldCBkb2N1bWVudCB3aWR0aCBvciBoZWlnaHRcclxuXHRcdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDkgKSB7XHJcblx0XHRcdFx0XHRkb2MgPSBlbGVtLmRvY3VtZW50RWxlbWVudDtcclxuXHJcblx0XHRcdFx0XHQvLyBFaXRoZXIgc2Nyb2xsW1dpZHRoL0hlaWdodF0gb3Igb2Zmc2V0W1dpZHRoL0hlaWdodF0gb3IgY2xpZW50W1dpZHRoL0hlaWdodF0sIHdoaWNoZXZlciBpcyBncmVhdGVzdFxyXG5cdFx0XHRcdFx0Ly8gdW5mb3J0dW5hdGVseSwgdGhpcyBjYXVzZXMgYnVnICMzODM4IGluIElFNi84IG9ubHksIGJ1dCB0aGVyZSBpcyBjdXJyZW50bHkgbm8gZ29vZCwgc21hbGwgd2F5IHRvIGZpeCBpdC5cclxuXHRcdFx0XHRcdHJldHVybiBNYXRoLm1heChcclxuXHRcdFx0XHRcdFx0ZWxlbS5ib2R5WyBcInNjcm9sbFwiICsgbmFtZSBdLCBkb2NbIFwic2Nyb2xsXCIgKyBuYW1lIF0sXHJcblx0XHRcdFx0XHRcdGVsZW0uYm9keVsgXCJvZmZzZXRcIiArIG5hbWUgXSwgZG9jWyBcIm9mZnNldFwiICsgbmFtZSBdLFxyXG5cdFx0XHRcdFx0XHRkb2NbIFwiY2xpZW50XCIgKyBuYW1lIF1cclxuXHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRyZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCA/XHJcblx0XHRcdFx0XHQvLyBHZXQgd2lkdGggb3IgaGVpZ2h0IG9uIHRoZSBlbGVtZW50LCByZXF1ZXN0aW5nIGJ1dCBub3QgZm9yY2luZyBwYXJzZUZsb2F0XHJcblx0XHRcdFx0XHRqUXVlcnkuY3NzKCBlbGVtLCB0eXBlLCB2YWx1ZSwgZXh0cmEgKSA6XHJcblxyXG5cdFx0XHRcdFx0Ly8gU2V0IHdpZHRoIG9yIGhlaWdodCBvbiB0aGUgZWxlbWVudFxyXG5cdFx0XHRcdFx0alF1ZXJ5LnN0eWxlKCBlbGVtLCB0eXBlLCB2YWx1ZSwgZXh0cmEgKTtcclxuXHRcdFx0fSwgdHlwZSwgY2hhaW5hYmxlID8gbWFyZ2luIDogdW5kZWZpbmVkLCBjaGFpbmFibGUsIG51bGwgKTtcclxuXHRcdH07XHJcblx0fSk7XHJcbn0pO1xyXG4vLyBFeHBvc2UgalF1ZXJ5IHRvIHRoZSBnbG9iYWwgb2JqZWN0XHJcbndpbmRvdy5qUXVlcnkgPSB3aW5kb3cuJCA9IGpRdWVyeTtcclxuXHJcbi8vIEV4cG9zZSBqUXVlcnkgYXMgYW4gQU1EIG1vZHVsZSwgYnV0IG9ubHkgZm9yIEFNRCBsb2FkZXJzIHRoYXRcclxuLy8gdW5kZXJzdGFuZCB0aGUgaXNzdWVzIHdpdGggbG9hZGluZyBtdWx0aXBsZSB2ZXJzaW9ucyBvZiBqUXVlcnlcclxuLy8gaW4gYSBwYWdlIHRoYXQgYWxsIG1pZ2h0IGNhbGwgZGVmaW5lKCkuIFRoZSBsb2FkZXIgd2lsbCBpbmRpY2F0ZVxyXG4vLyB0aGV5IGhhdmUgc3BlY2lhbCBhbGxvd2FuY2VzIGZvciBtdWx0aXBsZSBqUXVlcnkgdmVyc2lvbnMgYnlcclxuLy8gc3BlY2lmeWluZyBkZWZpbmUuYW1kLmpRdWVyeSA9IHRydWUuIFJlZ2lzdGVyIGFzIGEgbmFtZWQgbW9kdWxlLFxyXG4vLyBzaW5jZSBqUXVlcnkgY2FuIGJlIGNvbmNhdGVuYXRlZCB3aXRoIG90aGVyIGZpbGVzIHRoYXQgbWF5IHVzZSBkZWZpbmUsXHJcbi8vIGJ1dCBub3QgdXNlIGEgcHJvcGVyIGNvbmNhdGVuYXRpb24gc2NyaXB0IHRoYXQgdW5kZXJzdGFuZHMgYW5vbnltb3VzXHJcbi8vIEFNRCBtb2R1bGVzLiBBIG5hbWVkIEFNRCBpcyBzYWZlc3QgYW5kIG1vc3Qgcm9idXN0IHdheSB0byByZWdpc3Rlci5cclxuLy8gTG93ZXJjYXNlIGpxdWVyeSBpcyB1c2VkIGJlY2F1c2UgQU1EIG1vZHVsZSBuYW1lcyBhcmUgZGVyaXZlZCBmcm9tXHJcbi8vIGZpbGUgbmFtZXMsIGFuZCBqUXVlcnkgaXMgbm9ybWFsbHkgZGVsaXZlcmVkIGluIGEgbG93ZXJjYXNlIGZpbGUgbmFtZS5cclxuLy8gRG8gdGhpcyBhZnRlciBjcmVhdGluZyB0aGUgZ2xvYmFsIHNvIHRoYXQgaWYgYW4gQU1EIG1vZHVsZSB3YW50cyB0byBjYWxsXHJcbi8vIG5vQ29uZmxpY3QgdG8gaGlkZSB0aGlzIHZlcnNpb24gb2YgalF1ZXJ5LCBpdCB3aWxsIHdvcmsuXHJcbmlmICggdHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQgJiYgZGVmaW5lLmFtZC5qUXVlcnkgKSB7XHJcblx0ZGVmaW5lKCBcImpxdWVyeVwiLCBbXSwgZnVuY3Rpb24gKCkgeyByZXR1cm4galF1ZXJ5OyB9ICk7XHJcbn1cclxuXHJcbn0pKCB3aW5kb3cgKTtcclxuIl19 diff --git a/web/dist/modules-bundle.js b/web/dist/modules-bundle.js index 22bbad63..4a8a4084 100644 --- a/web/dist/modules-bundle.js +++ b/web/dist/modules-bundle.js @@ -1,15 +1,35070 @@ -var _0x3bf0=['handleFocus','_toSVG','#8e24aa','translate(-7px,\x20-1px)','random','backgroundColor','new','hex6','renderModelFromDom','#8d6e63','updatePassword','./reed-solomon-encoder','100','Native\x20or\x20Bilingual\x20Proficiency','./_cloneRegExp','.saveBtnTable','postRenderForm','confirmation_date','showCancel','#69f0ae','8px\x208px\x200px\x200px','Submitted','This\x20change\x20will\x20be\x20effective\x20only\x20when\x20you\x20save\x20the\x20form','pipe','AAsmall','EmployeeTimeSheetAdapter','./Swatch','setIsComponentVisible','innerHTML','expires','gender','#9B9B9B','[object\x20GeneratorFunction]','Passwords\x20don\x27t\x20match','addFailCallBack','hsv','updateDataSuccessCallBack','bit','../common','Error\x20Occured\x20while\x20Time\x20Punch','translate(20px,\x20-14px)\x20rotate(180deg)','__proto__','reduce','swatchWrap','currentElement','formOnlyFields','./_mapCacheHas','Color\x20Picker','fieldMasterDataKeys','applyMask','400','subarray','getPenaltyN3','checkPermission','Google','moment','Access\x20Forbidden',')[,|\x5cs]+(','legacyApiWrapper','getDoc','writable','handleHover','setUpdatedValue','#ce93d8','Cannot\x20call\x20a\x20class\x20as\x20a\x20function','../utils/buffer','(?:[-\x5c+]?\x5cd*\x5c.\x5cd+%?)|(?:[-\x5c+]?\x5cd+%?)','EmployeeOvertimeAdminAdapter','Skills','#B3B3B3','#ba68c8','isSet','readonly','currentDataGroupItemId','.timesheet_end','#00796b','./_listCacheGet','prgb','mark','7px','inset\x200\x200\x200\x201px\x20#F0F0F0','_arr','556b2f','5px\x200\x205px\x208px','#5d4037','#969696','date_start','#4D4D4D','setLocalDate','fdf5e6','fa\x20fa-file-pdf-o','getOwnPropertyNames','\x20.uploadInput','keyCode','extract_shortest_path_from_predecessor_list','admin=','getArrowOffset','fromArray','#EmployeeTimesheetBlock','#E27300','Upload','__text__','\x20bytes','Saturation','\x20Subordinates','modules=attendance','Divider','Social\x20Security\x20Number','getDataMapping','hsv(','employees/','Swatch','generateRandom','isProfiler','gradientType','confirmationState','modEmployeeGetSuccessCallBack1','Male','saveData','Travel\x20From','setPermissions','inspect','#e0f7fa','putBit','formRef','_checkClearOnResize','abc','#555555','_tc_id','#512da8','react.async_mode','#7986cb','colorpicker-container','copyRow','clearDeleteParams','updatePunchButton','disabled','Please\x20attach\x20a\x20photo\x20before\x20submitting','\x20=\x20','Next','log','#1b5e20','./_assignValue','#bdbdbd','./property','TabPane','modules','field_label','./_baseHasIn','picture','country','submit','tabQtsheet','SwatchesPicker','columnNumber','github-picker\x20','enableLocalStorage','Space','setModulePath','NoBtn','Logs','#64b5f6','\x22\x20width=\x22','data','#009688','appendChild','pay_grade','travel','#f44336','dijkstrajs','hidden.bs.modal','Inactive','_MENU_\x20records\x20per\x20page','__text__','reverse','Work\x20related\x20details','Parent','delete','currentReport','SubordinateEmployeeTravelRecordAdapter','penColor','./_stackSet','swap16','./Alpha','consoleLog','.dataTables_filter\x20label','top-right','getUpdatePasswordButtonJsx','note','toFixed','styles','initial','#_label_','getTableActionButtonJsx','tagName','copy','hand','./mergeConfig','#ff9100','#D9E3F0','./MasterDataReader','fixCyclicParent','key','[object\x20Uint8ClampedArray]','react-signature-canvas','1px\x20solid\x20#888888','getFullYear','#651fff','process','createCard','SwatchesGroup','#adminUsersChangePwd_error','deleteDataGroupItem','execute','[object\x20RegExp]','maskPattern','showMessage','./IceColorPick','genPoly','referer','./_arrayPush','Unknown\x20encoding:\x20','[object\x20Float32Array]','Date\x20of\x20Birth','overflow','isarray','008000','Password\x20must\x20include\x20at\x20least\x20one\x20uppercase\x20letter','getTemplate','getImageUrlFromName','types','getCurrentProfile','#bbdefb','scrollToBottom','return\x20this','#4fc3f7','custom-validate-function','fieldId','inset\x200\x200\x200\x201px\x20rgba(0,0,0,.15),\x200\x200\x204px\x20','f5f5f5','permissions','../../helpers/hue','lodash/merge','getStatusFieldPosition','./_WeakMap','fff5ee','fileList','qrToImageData','Invalid\x20hex\x20color:\x20','6a5acd','days','getFilterString','.timesheet_start','Step','isConcurrentMode','writeUInt16LE','Error\x20occurred\x20while\x20changing\x20','isLazy','_handleMouseUp','react.portal','c71585','city','0.00','./_nodeUtil','first-child','./_baseKeys','null','getEditButtonJsx','#ea80fc','fun','fuchsia','','Twitter','getAllData','Roboto,Arial,sans-serif','formObject','url','Component','fileGroup','#0288d1','Buffer\x20size\x20must\x20be\x20a\x20multiple\x20of\x2016-bits','charCodeAt','react.element','defaultView','_applyModification','setCurrentElement','SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED','showLoadError','1px\x20solid\x20#B1B1B1','fa\x20fa-edit','rgb(','_delete_','#dd2c00','parent','Punched\x20In','SketchPicker','0\x200\x202px\x20rgba(0,\x200,\x200,\x20.6)','isArrayBuffer','#_delete_##_edit_##_label_#:#_value_#
    ','./EditableInput','#81d4fa','closeMessage','_handleTouchMove','pink','./_getSymbolsIn','PATTERN011','pptx','user','Validation','#f48fb1','floor','val\x20must\x20be\x20string,\x20number\x20or\x20Buffer','writeUInt8','xsrfCookieName','svg:path','VerifiedOutlined','Middle\x20Name','\x20','employeeovertime','total','contains','Upload/Delete\x20Profile\x20Image','getSymbolSize','./_defineProperty','light-blue','ba55d3','needStartEndTime','7fffd4','setFilterData','Address\x20Line\x202','.signatureField','_handleTouchEnd','round','getFormSelectOptionsRemote','.cancelBtn','useState','#fff9c4','Edit\x20Job\x20Title','objectTypeName','#00bfa5','last_name','Error\x20:\x20','4px\x200\x200\x204px','Private\x20Email','tags','TwitterPicker','Company','getEditButtonJsxWithPassword','fieldset','showPasswordResetModal','Circle','','#f50057','16px','./IceUpload','#F44E3B','./Checkboard','#0693E3','`,\x20expected\x20a\x20single\x20ReactElement.','PATTERN111','search','`,\x20expected\x20`','/certifications','_children','fetchConfig','8px','relationship','arrayOf','StatusModel','\x0aValid\x20keys:\x20','_data','modalType','addMinutes','iceFormReference','circle-picker\x20','progid:DXImageTransform.Microsoft.gradient(','proxy-authorization','moveToStep','#64ffda','reading','#00bcd4','fff8dc','cancelFailCallBack','#FFF','fileupload-new.php?user=','debounce','Employee\x20Profile','#333','ModelBody','createFromField','sort-function','\x20#grid','symbol','ffe4b5','#757575','./isArrayLike','getImageWidth','ReactNative','MaterialPicker','isAsyncMode','getCustomSuccessCallBack','M12,18.17L8.83,15L7.42,16.41L12,21L16.59,16.41L15.17,15M12,5.83L15.17,9L16.58,7.59L12,3L7.41,7.59L8.83,9L12,5.83Z','fa\x20fa\x20fa-file-code-o','now','The\x20amount\x20of\x20data\x20is\x20too\x20big\x20to\x20be\x20stored\x20in\x20a\x20QR\x20Code','marital_status','./Hue','columnFieldName','','./_assignMergeValue','modules=','getContainerRenderWindow','./_initCloneByTag','./components/google/Google','setContainer','PriorityQueue','#b71c1c','prependListener','isFile','invalidateTable','./_getAllKeys','./_baseIsMatch','getHelpLink','setHeaders','getTableData','date','#9900EF','hasAccess','./_assocIndexOf','Title','create','margin','Date','0px\x200px\x200px\x200px','lastActiveTab','top-left','Children','borderRadius','#ff5252','getFormParameters','15px\x209px\x209px\x2015px','../../../api/ReactModalAdapterBase','document','#d84315','RGBlabel','getSymbolTotalCodewords','#ff6e40','refetchEvents','getCapacity','_filterBtn','dark','toSJISFunc','sqrt','./_baseUnary','.modal-backdrop','setShowPasswordUpdate','lime','find','mouseup','getLogs','select2','getOwnPropertySymbols','Id\x20Number','clearRect','1px\x20solid\x20rgba(0,0,0,0.2)','#_edit_#','`.\x0aBad\x20object:\x20','startPoint','Parameters','alloc','#303f9f','handlers','propTypes','#adminUsersChangePwd\x20#conpwd',')=([^;]*)','_redoBtn_','setPhotoAttendance','006400','select2Multi','scrollToTop','#ffc107','#525252','prop-types','clearOnResize','responseType','columnIDMap','[object\x20WeakMap]','employeeProjects','findIndex','GooglePointer','ff1493','toHex8','Elementary\x20Proficiency','setPrototypeOf','loop','start_time','Card','filterTemplate','./segments','./isFunction','border-box','scroll','#283593','request','./_setCacheHas','Checkboard','Full\x20Professional\x20Proficiency','Other','process.chdir\x20is\x20not\x20supported','_edit__delete__clone_','4b0082','validation','#cddc39','10px','green','moveTo','ew-resize','if-modified-since','#TimeSheetStatusModel','&file_group=','./_freeGlobal','msTouchAction','closeDialog','./_equalArrays','9{0,10}.99','Add\x20New','Contact\x20Information','NULL','/skills','','noJSONRequests','react.strict_mode','setData','ReportAdapter','isContextConsumer','currentTarget','./components/alpha/Alpha','valueTable','component','Item','#fffde7','checkbox','
    ','orderBy','isTypedArray','isMemo','.35','orderDataGroup','Calling\x20PropTypes\x20validators\x20directly\x20is\x20not\x20supported\x20by\x20the\x20`prop-types`\x20package.\x20Use\x20PropTypes.checkPropTypes()\x20to\x20call\x20them.\x20Read\x20more\x20at\x20http://fb.me/use-check-prop-types','_message','./_cloneDataView','lodash/throttle','Overtime','val','employee','requestCache','#f5f5f5','6px','dummy','2px\x202px\x200\x200','loadMore','setClientUrl','00f','&skip=1','first_name+last_name','Granted\x20On','onAccept','first_name','0\x204px\x204px\x200','\x22\x20is\x20invalid\x20for\x20option\x20\x22size\x22','./lib/axios','','svg:svg','getUser','emit','changePasswordConfirm','inline-block','travel_to','#aa00ff','#0091ea','action','#ffee58','_blank','off','container','fieldNameMap','Select','checkValues','Total\x20Time','Calling\x20PropTypes\x20validators\x20directly\x20is\x20not\x20supported\x20by\x20the\x20`prop-types`\x20package.\x20Use\x20`PropTypes.checkPropTypes()`\x20to\x20call\x20them.\x20Read\x20more\x20at\x20http://fb.me/use-check-prop-types','text','Admin','_initLocalFormFields','8b4513','style','CLIENT_BASE_URL','vertical','28px','./GoogleFields','../../helpers/color','`\x20supplied\x20to\x20`','content-box','LockOutlined','length','createPreviousAttendnaceSheet','ffa07a','createPreviousAttendnacesheetFailCallBack','tinycolor','#424242','M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z','b22222','validate','driving_license','#aed581','setApiUrl','#1a237e','hsla(','#ff0000','#b0bec5','[object\x20Array]','GooglePointerCircle',',100%,\x2050%)','Could\x20not\x20find\x20a\x20path\x20from\x20','Unknown\x20EC\x20Level:\x20','updateAllMasterData','func','SyncOutlined','getPenaltyN4','tableData','UserReportAdapter','EditOutlined','Text\x20Field','None','setCurrentTimeSheetId','fffacd','transparent\x20transparent\x20transparent\x20#fff','throwIfRequested','MMM\x20d,\x20yyyy\x20(dddd)','toggleViews','path=','48d1cc','handleMouseDown','radio','alpha-picker\x20','alert_before_expiry','Symbol(src)_1.','password','readInt32BE','fileupload','#e1f5fe','.dataTables_length','low','Personal','exec','cwd','#f3e5f5','true','Suspended','Error\x20saving','toHexString','gutter-row','
    ','Filter','#D0021B','passwordState','readIntBE','boolean','pageXOffset','rgba(255,\x20255,\x20255,\x200.5)','language_id','documentname','#00897b','./_nativeKeys','#222','#a1887f','textarea','#01579b','getKey','_applyCombination','00fa9a','StrictMode','formId','Address\x20Line\x201','#42a5f5','Draft','Roboto','showDelete','EPF/CPF/SS\x20No','getItem','application/json;charset=utf-8','','&type=sub','apiUrl','all','mousemove','form-control','plainMessage','#999999','-10px','react-dom','./_overRest','hideError','6495ed','MMM\x20d,\x20yyyy\x20[hh:mm\x20tt]','^[0-9]+$','footer','boxShadow','#submit_sheet','setModalType','1px\x20solid\x20#eee','./IceLabel','./regex','remoteTableSkipProfileRestriction','ChromePicker','NODE_ENV','rgb','Input','createImageData','showHighlight','fast',',\x20100%,\x2050%)','alert','#9e9e9e','configurable','Job\x20Details','87cefa','Update\x20Password','nationality','inset\x200\x200\x200\x201px\x20rgba(0,0,0,.1)','getTimeEntriesFailCallBack','8fbc8f','time_end','`\x20of\x20type\x20`','flush','./version','getAllResponseHeaders','navy','config','&cl=','#f8bbd0','Buffer.write(string,\x20encoding,\x20offset[,\x20length])\x20is\x20no\x20longer\x20supported','toGMTString','readUInt16LE','amber','toggleComment','40%','rgba','translate(-6px,\x20-6px)','\x20#id','stringify','90ee90','render','.select2Field','#ff9800','addCellDataUpdate','propertyIsEnumerable','../../helpers/interaction','ContextProvider','componentDidMount','getActionButtons','#yesnoModel','0\x200\x200\x201.5px\x20#fff,\x20inset\x200\x200\x201px\x201px\x20rgba(0,0,0,.3),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x200\x200\x201px\x202px\x20rgba(0,0,0,.4)','Multi\x20Select','#9fa8da','#ffccbc','single','currentFilterString','#employeeDeleteProfileImage','maxWidth',')\x20center\x20left','solid','Document','validatePassword','touchstart','isElement','isValidElementType','CompanyLoan','bottom-left','_filter','Loan\x20Type','readUInt16BE','label[for=\x27','Confirm\x20Deletion','updateDataFailCallBack','Limited\x20Working\x20Proficiency','MMM\x20d\x20\x20HH:mm','fa\x20fa-file-image-o','maxWait','AlphaPointer','datagroupTemplate','addActualFields','./alignment-pattern','`,\x20expected\x20`object`.','initForm','./_isPrototype','attendnaceVideo','prev','code','#fce4ec','service.php','MODULE_NOT_FOUND','Password','./_Map','unbind','once','./mergeClasses','_format','\x22\x20cannot\x20be\x20encoded\x20with\x20mode\x20','updateConfirmPasswordState','rows','formReference','stroke','hideLoader','EmployeeAdapter','colorpicker','decompress','34px','attendnaceCanvas','templates','Portal','Password\x20too\x20short','hsva','_date_  _status_
    _note_','image/png','resize','Start\x20Time','Attachment','','getFieldValues','#1de9b6','datepicker','uploadInput','setDataPipe','228b22','\x20#help_','regexp','#DBDF00','Employee','output','handleMouseOver','#ffd740','100px','raw','Select','add8e6','_submit\x20#id','Understanding','4px\x200\x204px\x206px','lightBlue','initTable','ucs-2','alphanumeric','pop','./_baseCreate','Item\x20removed.\x20This\x20change\x20will\x20be\x20effective\x20only\x20when\x20you\x20save\x20the\x20form','defineProperty','view','#_label_##_value_#','props','City','AAlarge','onChangeComplete','oldHue','center','overtime','category','°,\x20','createRef','getUserMedia','255','mousedown','canvas','_handleMouseMove','00bfff','PATTERN100','UploadOutlined','toCanvas','TravelRequest','colors','getPositions','CancelToken','link','Certification','5px\x205px\x205px\x205px','&method=get&url=/','#ff4081','#7c4dff','tooltip','join','slider-picker\x20','Super\x20expression\x20must\x20either\x20be\x20null\x20or\x20a\x20function,\x20not\x20','details','_resizeCanvas','initFieldMasterDataResponse','bdb76b','getLogsSuccessCallBack','#b2ebf2','AAAlarge','stroke-linecap','PropTypes','setShowCancel','Job\x20Title','numberOfJobs','beginPath','readOnly','./_MapCache','#90a4ae','clearTimeout\x20has\x20not\x20been\x20defined','tabEmployeeTimeEntry','iterator','updateProfileImage','Alpha','province','#004DCF','Sign','_point','isEmpty','#fff3e0','each','colorpicker-preview','66cdaa','Edit\x20Joined\x20Date','#d32f2f','','divider','binding','./core/Axios','scale(1.2)','require','active','getOrderBy','#b388ff','editcell','./_toSource','testing','renderFormByDate','species','email','lastIndexOf','getBitsLength','time','_strokeEnd','updateAllData','Other\x20Details','Basic\x20Information','csrfRequired','#ff8f00','__data__','No\x20Results\x20Found\x20!!!','008b8b','#9013FE','\x20#grid\x20tr:last','actions','H0z\x22/>','./renderer/svg-tag.js','\x22buffer\x22\x20argument\x20must\x20be\x20a\x20Buffer\x20instance','funding','#ad1457','2f4f4f','react.fundamental','button','[\x5cs|\x5c(]+(','onBegin','Purpose\x20of\x20Travel','#9F0500','#673ab7','items','pre-format-function','\x27]:checked','All\x20Employees','queue','[object\x20String]','\x22value\x22\x20argument\x20is\x20out\x20of\x20bounds','closeChangePassword','','#ffa000','./_mapToArray','addToLangTerms','control1','saveSuccessCallback','Company\x20Structure\x20is\x20having\x20a\x20cyclic\x20dependency','\x20tr\x20td:nth-child(','EmployeeCompanyLoanAdapter','TimeSheet\x20Start\x20Date','-6px','getBoundingClientRect','callBackFail','rgba(255,\x20255,\x20255,\x200.12)','Valid\x20Thru','./ModuleBase','base64-js','./_isIndex','processing','#e8eaf6','#f57c00','?t=','#7b1fa2','#FE9200','Personal\x20Information','hash','deleteSuccessCallBack','setAdminEmp','_trackEvent','putImageData','handleTableChange','_ctx','isFragment','0\x209px\x2010px\x209px','base64','[object\x20Object]','./_cloneTypedArray','valid','./components/circle/Circle','#4e342e','OrEmpty','supervisor','firstSort',',\x201)\x20100%)','Expected\x20a\x20function','-02-29','openTimeEntryDialog','-4px','onerror','Own\x20Vehicle','simplemde','getTableTopButtonHtml','onEnd','inset\x201px\x200\x200\x20#000,\x20inset\x20-1px\x200\x200\x20#000,\x20inset\x200\x201px\x200\x20#000','lastIndex','triangleBorder','YYYY-MM-DD','#607d8b','20px','getCustomUrl','#time_datetime','href','input','maxRedirects','instanceId','showEdit','#f0f4c3','_download','show','#B8E986','0000-00-00','modules=time_sheets','utf-16le','writeUIntLE','Email\x20required','clearConfirmFeedback','deepOrange','../api/CustomAction','00008b','#8bc34a','87ceeb','Edit\x20Department','undefined','ECONNABORTED','userAgent','description','708090','includes','EditableInput','currentColor','./_cloneArrayBuffer','_div','Currency','.logTime','','#e65100','colId','isValid','#dce775','createForm','translate(-10px,\x20-7px)','800080','fieldMasterDataCallbackData','Monthly\x20Installment','updateDataAllFailCallBack','callBack','3cb371','EmployeeSalaryAdapter','gaq','field_validation','currentTimesheet','itemNameLower','slider','#eceff1','

    #_section.name_#

    \x20\x20','medium','./ChromeFields','none','#50E3C2','[object\x20AsyncFunction]','Bearer\x20','tempOptions','483d8b','dotSize','\x20Active','./dispatchRequest','devicePixelRatio','DashboardAdapter','#9575cd','codemirror','Save','responseJSON','Parent\x20Structure','formInitialized','#tempReportTable','altKey','18px','getActionButtonsHtml','16px\x200\x206px\x2016px','#b9f6ca','setTableLoading','getSourceDataById','\x20#grid\x20.editcell','slow','./_baseProperty','./AlphaPointer','EmploymentStatus','setShowFormOnPopup','\x22\x20onclick=\x22modJs.cancelRequest(_id_);return\x20false;\x22>','stop','2px\x20solid\x20#F0F0F0','getElement','_strokeWidth','keydown','closeModal','#78909c','errorMap','resetFilters','6b8e23','#c5cae9','isV2','./_stackHas','#536dfe','getOwnPropertyDescriptor','Cancellation\x20Requested','changeTimeSheetStatusWithId','`,\x20expected\x20an\x20object.','#EB9694','prototype','purpose','./isArray','#ffecb3','Field\x20Options','readyState','File\x20not\x20found','httpAgent','./_baseMatches','offset\x20is\x20not\x20uint','0123456789','&objects=1','[object\x20ArrayBuffer]','Network\x20Error','shift','add','utf8','#009CE0','cyan','middle','callBackData','Regional\x20Office','Property\x20`','./IceApiClient','fillStyle','getTime','#8ED1FC','#timesheetTabs','YesBtn','40e0d0','_upload','field_type','Object','ref','[0-9]+','_isMounted','Map','sTitle','#numberOfCourses','663399','<>','#40c4ff','minDistance','Reason','getPrototypeOf','toHsvString','attr','dataPipe','responseURL','attachment3','renderFormField','File\x20Type\x20Error','#808080','PhotoshopPicker','emailTemplates','dataGroupGetNextAutoIncrementId','g.node','react-color','drawImage','ssn_num','initProfile','End\x20Time','0\x201px\x204px\x200\x20rgba(0,\x200,\x200,\x200.37)','time_entry_form.html','last','getFileName','Paid','nth-child','#ffa726','allocUnsafe','toggles','#999','./_copySymbolsIn','helper','#numberOfEmployees','All','image','Spouse','.tooltip','_excludeOurProps','Error\x20Occurred\x20while\x20Deleting\x20Item','Too\x20few\x20arguments\x20provided','#00838f','_handleMouseDown','Cancel','setShowAddNew','timesheet','#fff176','_fromData','Attachment\x203','808000','../utils','height','./components/hover','Supervisor','NativeScript','datetime','#653294','cost','valueOf','./bit-matrix','changeTimeSheetStatusSuccessCallBack','./_stackDelete','dda0dd','updateData','./_baseGet','#adminUsersChangePwd\x20#newpwd','moduleRelativeURL','./mask-pattern','`\x20of\x20component\x20`','d3d3d3','EmployeeOvertimeAdapter','changeStatusFailCallBack','./IceForm','generateOptions','.reviewBlock.reviewBlockTable','openTimeSheetStatus','renderFormTimeEntryCalender','[object\x20Map]','../components/IceTable','toName','Item\x20Edited','send','skill_id','materialColors','photoAttendance','valid_until','modulePathName','../components/IceFormModal','data:text/plain;charset=utf-8,','getObjectDom','.svg','getScheduleJsonUrl','insert','#18ffff','./_baseIsMap','Password\x20must\x20include\x20at\x20least\x20one\x20symbol','4682b4','#7e57c2','mediaDevices','setShowSave','deleteProfileImage','./transformData','Edit\x20Work\x20Email','./_baseMap','Confirm\x20Password','closePath','showLoader','Password\x20too\x20long','TimePicker','Note','offset','quality','#1976d2','saveSuccessItemCallback','previousView','adff2f','PATTERN010','','charAt','trackEvent','\x22\x20target=\x22_blank\x22\x20style=\x22font-size:14px;font-weight:bold;\x22>Download\x20Report\x20\x20','maxBodyLength','getJSON','hideHighlight','department_Name','.submit_sheet','_drawPoint','toHex','2px\x20white\x20solid','lightsteelblue','#c51162','componentDidUpdate','setRequestHeader','Swatches','hex','.photoAttendance','degree','concat','Form\x20#','#4caf50','#pendingLeaveCount','#263238','The\x20ReactIs.isAsyncMode()\x20alias\x20has\x20been\x20deprecated,\x20and\x20will\x20be\x20removed\x20in\x20React\x2017+.\x20Update\x20your\x20code\x20to\x20use\x20ReactIs.isConcurrentMode()\x20instead.\x20It\x20has\x20the\x20exact\x20same\x20API.','Invalid\x20string.\x20Length\x20must\x20be\x20a\x20multiple\x20of\x204','#f9fbe7','transparent\x20transparent\x20#fff\x20transparent','4px','#bf360c','setColumnFieldName','Skill','exp','addActualFieldsForStepModal','map','rightInside','Request\x20aborted','editEmployee','#ec407a','12px','date_added','select2Field','./byte-data','dc143c','hasMoreData','patch','disableAlpha','string','./_mapCacheSet','getShowAddNew','0000-00-00\x2000:00:00','_edit__delete__status__logs_','removeAllByPrefix','PATTERN001','#795548','-opacity=\x22','_calculateCurveWidths','Label','quickEdit','blue','000000','showFilters','[^A-Z0-9\x20$%*+\x5c-./:]+','','./autoprefix','application/x-www-form-urlencoded','fa\x20fa-file-o','deleteParams','','rgb(248,\x20248,\x20248)','./_arrayEach','./_cloneBuffer','a9a9a9','hostname','\x22toSJISFunc\x22\x20is\x20not\x20a\x20valid\x20function.','_sigPad','rowFieldName','0px\x204.4px','setCustomTemplates','getFilter','react.fragment','#f1f8e9','#7B64FF','../core/createError','14px','./_isIterateeCall','getTableChildComponents','readUInt8','changeTimeSheetStatus','Invalid\x20attempt\x20to\x20spread\x20non-iterable\x20instance.\x0aIn\x20order\x20to\x20be\x20iterable,\x20non-array\x20objects\x20must\x20have\x20a\x20[Symbol.iterator]()\x20method.','#ef9a9a','#_label_#','fulfilled','.search-controls','writeUIntBE','Education','label','24px','inputmask','toPrimitive','apiClient','wrap','ccBits','#B80000','#68CCCA','AsyncMode','Material','SubordinateEmployeeOvertimeAdapter','SubEmployeeTimeSheetAll','readDoubleLE','odd','#cfd8dc','lineNumber','#33691e','work_phone','getFormOptions','#ff3d00','Loan\x20Amount','_gradientType','_val_','ChromeFields','_calculateCurveControlPoints','isKanjiModeEnabled','#37D67A','b0c4de','Error\x20Occurred\x20while\x20cancelling\x20','rgba(0,0,0,0.15)','zDepth','Buffer\x20size\x20must\x20be\x20a\x20multiple\x20of\x2064-bits','Nationality','#FB9E00','getEncodedBits','#FCDC00','Taxi','then','resolve','hex3','generateFieldMessage','getOptions','Empty\x20Report','Lazy','\x20.tinymce','15px\x2015px\x200','#616161','Invalid\x20attempt\x20to\x20destructure\x20non-iterable\x20instance.\x0aIn\x20order\x20to\x20be\x20iterable,\x20non-array\x20objects\x20must\x20have\x20a\x20[Symbol.iterator]()\x20method.','LabelErrorClass','setAttribute','#numberOfProjects','__val__','currentTimesheetId','[object\x20Proxy]','Row','./ColorWrap','triangle','_days_','file','viewElement','modulePath','Searchable\x20DropDown','inset\x201px\x200\x200\x20#000,\x20inset\x20-1px\x200\x200\x20#000,\x20inset\x200\x20-1px\x200\x20#000','./PhotoshopFields','httpsAgent','','moveToTop','isStrictMode','getElementSuccessCallBack','even','#808900','a52a2a','ffefd5','lodash/map','env','getFormFields','port','#f4ff81','split','f8f8ff','getLengthInBits','0\x20solid\x20rgba(0,0,0,0.25)','renderForm','fa\x20fa-times','#plainMessageModel\x20.modal-body','f0f8ff','Selected\x20file\x20type\x20is\x20not\x20supported','removeAllListeners','table','#666','country_Name','getInitDataSuccessCallBack','#ef6c00','#880e4f','showPunchDialogShowPunchSuccessCallBack','_formFileds','_originalInput','filtersAlreadySet','_renderForm','dataTable','auth','useEffect','writeIntBE','3px','./stubArray','dob','period_months','#3949ab','#c0ca33','Button','max','cancel','isAllLoaded','progress','filter','#311b92','createPreviousTimesheetSuccessCallBack','2px\x20solid\x20','#fdd835','tinycolor2','Amount','Cache','#bcaaa4','808080','','default_sorter','modules=employees','Certifications','SubEmployeeTimeSheetAdapter','#00b0ff','\x20#help_err_','isURLSearchParams','./PhotoshopPointerCircle','Gender','GooglePicker','isBlob','#00e676','util','lodash/isUndefined','789','.colorpick','PATTERN000','yyyy\x20MMM\x20d\x20\x20HH:mm','remote-source','INSPECT_MAX_BYTES','textMapped','Unit','#d81b60','./loop','#fafafa','terms','./LogViewAdapter','renderYesNoModel','./ChromePointer','0\x200\x202px\x20rgba(0,0,0,.3),\x200\x204px\x208px\x20rgba(0,0,0,.3)','confirmDelete','getTemplateName','dot','./isLength','#6a1b9a','byte','100ms\x20box-shadow\x20ease','','Axios','dashed','inArray','required','./isSet','/educations','16px\x2016px\x2012px','#e91e63','.dataTables_paginate\x20ul','./components/chrome/Chrome','Department','that','return_date','findParent','react','1px\x20solid\x20#F0F0F0','#0d47a1','work_email','ms\x20exceeded','RGBwrap','fill','./enhanceError','./BlockSwatches','grid','svg:g','Punch-in\x20','_logs_','./_baseGetTag','[object\x20Int8Array]','sketch-picker\x20','institute','Authorization','Number\x20required','./createError','signaturePad','_ok','ea7e5d','form','#e3f2fd','address1','Menlo','EmployeeDependentAdapter','#00e5ff','PhotoshopButton','preProcessRemoteTableData','Invalid\x20mode','warn','start_date','\x20','57px','writeDoubleBE','CompactPicker','Skeleton','validateAll','File\x20Upload','postal_code','`\x20is\x20marked\x20as\x20required\x20in\x20`','toUpperCase','inset\x200\x200\x200\x201px\x20#fff','large','slice','filtersContainer','Value','./components/EmployeeProfile','[object\x20Uint8Array]',',\x200)\x200%,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20rgba(','#84ffff','#ff6d00','#f4511e','hsla','\x20Delete','','#D4C4FB','./_stringToPath','./core/qrcode','capitalize','element.html','Divorced','#QtsheetDataButtons','./isPlainObject','sigCanvas','CurrencyType','#messageModel','blueGrey','reloadCurrentElement','9px','#b2ff59','Means\x20of\x20Transportation','./_castPath','../../../api/ApproveModuleAdapter','steps-content','nowrap','date_select','#8B572A','./_arraySome','right','changePasswordFailCallBack','production','use','getUri','signature_pad','#FEF3BD','csvData','First\x20argument\x20must\x20be\x20a\x20string,\x20Buffer,\x20ArrayBuffer,\x20Array,\x20or\x20array-like\x20object.','setFieldsValue','_redoBtn_','enter','object','Travel\x20Type','f0ffff','toISOString','Password\x20must\x20include\x20at\x20least\x20one\x20number','circle','\x20','#66bb6a','css','gotoDate','#ffd600','./_baseMergeDeep','./ChromePointerCircle','handleActive','react.scope','quartile','`,\x20expected\x20a\x20ReactNode.','\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20.hue-horizontal\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20linear-gradient(to\x20right,\x20#f00\x200%,\x20#ff0\x2017%,\x20#0f0\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x2033%,\x20#0ff\x2050%,\x20#00f\x2067%,\x20#f0f\x2083%,\x20#f00\x20100%);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20-webkit-linear-gradient(to\x20right,\x20#f00\x200%,\x20#ff0\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x2017%,\x20#0f0\x2033%,\x20#0ff\x2050%,\x20#00f\x2067%,\x20#f0f\x2083%,\x20#f00\x20100%);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20.hue-vertical\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20linear-gradient(to\x20top,\x20#f00\x200%,\x20#ff0\x2017%,\x20#0f0\x2033%,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#0ff\x2050%,\x20#00f\x2067%,\x20#f0f\x2083%,\x20#f00\x20100%);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20-webkit-linear-gradient(to\x20top,\x20#f00\x200%,\x20#ff0\x2017%,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#0f0\x2033%,\x20#0ff\x2050%,\x20#00f\x2067%,\x20#f0f\x2083%,\x20#f00\x20100%);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','click','defineProperties','Marital\x20Status','./now','./flattenNames','Project','user-agent','isvalidColorString','desaturate','current','Salary\x20Component','equals','[object\x20Boolean]','#ffc400','./helpers/bind','ffe4e1','Completed\x20On','./_SetCache','transparent\x20transparent\x20transparent\x20#555','getClientDate','dataToFormFields','circleSpacing','#c62828','popupTop','sourceMapping',')\x5cs*\x5c)?','[object\x20DataView]','setAccess','1px\x20solid\x20#878787','getColorByFileType','layout','#26c6da','\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20.saturation-white\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20-webkit-linear-gradient(to\x20right,\x20#fff,\x20rgba(255,255,255,0));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20linear-gradient(to\x20right,\x20#fff,\x20rgba(255,255,255,0));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20.saturation-black\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20-webkit-linear-gradient(to\x20top,\x20#000,\x20rgba(0,0,0,0));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20linear-gradient(to\x20top,\x20#000,\x20rgba(0,0,0,0));\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20','distanceTo','','inputTypes','isView','Profiler','#666666','touches','createPreviousTimesheetFailCallBack','2px\x20#fff\x20solid','Fragment','inset\x200\x200\x200\x201px\x20rgba(0,0,0,0.1)','Invalid\x20','./_mapCacheDelete','[object\x20Number]','\x20request\x20status','projection','mul','react.memo','./_overArg','','./_hashSet','class','purple','clearError','Active','The\x20\x22buf1\x22,\x20\x22buf2\x22\x20arguments\x20must\x20be\x20one\x20of\x20type\x20Buffer\x20or\x20Uint8Array','getDocumentTypesForUser','ethnicity','Descriptions','PayGrade','saveCallback','getTableName','float','GithubSwatch','renderModel','ee82ee','db7093','f5deb3','#ffab40','double','setEmployeeProjects','Document\x20Id','19px','BYTE_KANJI','From','hue','dataGroupToHtml','_strokeMoveUpdate','SliderSwatches','showActionButtons','ff0','#_renderFunction_#','writeDoubleLE','../../../api/AdapterBase','getLogsFailCallBack','Out\x20of\x20range\x20index','CompanyStructure','./SliderSwatch','hex4','f08080','FilterOutlined','#9ccc65','getHeaders','toStringTag','','controls','steps-action','_remove','Invalid\x20argument\x20supplied\x20to\x20oneOfType.\x20Expected\x20an\x20array\x20of\x20check\x20functions,\x20but\x20received\x20','316px','#_section.name_#','23px','.filterBtn','\x20#supervisor_Name','closeTimeEntryDialog','allocUnsafeSlow','rendererOpts','triangleShadow','__CANCEL__','Chrome','#ab47bc','access','Col','display_order','./_getMatchData','swap32','handleMouseOut','scrollToElementBottom','./_copySymbols','./adapters/http','View:\x20','#455a64','0\x200\x205px\x202px\x20rgba(0,0,0,0.25)','formContainer','sent','This\x20browser\x20lacks\x20typed\x20array\x20(Uint8Array)\x20support\x20which\x20is\x20required\x20by\x20`buffer`\x20v5.x.\x20Use\x20`buffer`\x20v4.x\x20if\x20you\x20require\x20old\x20browser\x20support.','editDataGroupItem','null-label','mergeClasses','Alert','numberOfCandidates','primary','addSuccessCallBack','Approved','./_apply','replaceWith','GradientType\x20=\x201,\x20','getValidationRules','hover','\x20to\x20','SliderPointer','targetTouches','Time-Out','Details','circleSize','./_copyArray','shape','renderToDataURL','Work\x20Email','#2196f3','#f57f17','&iDisplayLength=','#Qtsheet','#546e7a','#eee','clientBaseUrl','./components/photoshop/Photoshop','Table','getMetaFieldForRendering','deepPurple','gradient','#a5d6a7','trim','EmployeeImmigrationAdapter','current\x20password','EmployeeSkillAdapter','_edit__logs__delete_','Suspense','socketPath','Modal','validateFields','_isEmpty','protocol','./AdapterBase','scale(1)','paramsSerializer','cloneElement','Show','../../../../components/TagList','params','[object\x20Uint32Array]','../../../api/FormValidation','#76ff03','_edit_','9acd32','modEmployeeGetSuccessCallBack','attachment','Error:\x20','Sketch','./_Stack','tableType','View','0\x200\x200\x201px\x20rgba(0,0,0,.15),\x200\x208px\x2016px\x20rgba(0,0,0,.15)','./finder-pattern','`,\x20expected\x20one\x20of\x20','changeStatus','headers','./components/hue/Hue','\x20Candidates','fill-opacity','react.forward_ref','transparent','hide','validateCellValue','componentWillUnmount','reactcss','EmployeeAttendanceSheetAdapter','_submit','../../helpers/saturation','_status_','ImmigrationDocument','direction','#e53935','jpeg','touchend','visible','#5300EB','getThemeColors','-14px','education_id','#4A4A4A','[datetimemask]','showSave','isValidElement','QtsheetAdapter','`\x20key\x20`','Actions','setCustomFields','8a2be2','daa520','./_baseAssignValue','#_section_#','parameters','linear-gradient(-180deg,\x20#FFFFFF\x200%,\x20#E6E6E6\x20100%)','an\x20','./_baseFor','../../../api/ApproveAdminAdapter','origFilter','./_arrayMap','1px\x20solid\x20#dfe1e5','7cfc00','defaults','modEmployeeGetFailCallBack','Travel\x20Date','google-picker\x20','\x20:input','adapter','fieldMasterDataCallback','arrowOffset','fffff0','transparent\x20transparent\x20rgba(0,0,0,.1)\x20transparent','isSortable','rgba(0,0,0,0.4)','EmployeeCertificationAdapter','./eq','.select2Multi','readFloatBE','getDates','source','out\x20of\x20range\x20index','GoogleFields','lodash/isPlainObject','#ffcdd2','ant-advanced-search-form','isModuleInstalled','apply','Other\x20ID','fieldTemplates','256px','./debounce','assign','Employee\x20Number','offsetParent','Password\x20updated','pathname','getImageData','ffdead','fa\x20fa-file-excel-o','encode','uid','HH:mm','EmployeeTimeEntryAdapter','https://avatars.dicebear.com/api/initials/:','GithubPicker','forEach','select-multi','Download\x20Report','compareTo','./_isStrictComparable','isAxiosError','Multiline\x20Text','#eeeeee','hideLoadError','$$typeof','inset\x200\x201px\x201px\x20rgba(0,0,0,.1),\x200\x201px\x200\x200\x20#ECECEC','left','callFunction','toHsl','./cancel/Cancel','select','b8860b','bc8f8f','validateOnChange','bool','numberOrEmpty','ceil','getElementById','utf16le','CirclePicker','Head\x20Office','getCharCountIndicator','fromRatio','travel_from','ALPHANUMERIC','react.lazy','upload','currentPage','diagonal','employment_status','0\x200\x200\x201px\x20rgba(0,0,0,.25),\x200\x208px\x2016px\x20rgba(0,0,0,.15)','HEXwrap','#e040fb','y-1-2','./keys','#AB149E','\x22version\x22\x20should\x20be\x20in\x20range\x20from\x201\x20to\x2040','.20','\x22list\x22\x20argument\x20must\x20be\x20an\x20Array\x20of\x20Buffers','./_Symbol','element','.tableActionButton','setAlpha','inset\x200\x200\x200\x201px\x20rgba(0,0,0,.15)','attachment2','./../helpers/cookies','\x20at\x20index\x20','getDefaultButtons','remoteFieldsExists','#numberOfJobs','kanji','Buffer','html','setAllProjectsAllowed','\x22size\x22\x20argument\x20must\x20be\x20of\x20type\x20number','relative','timeoutErrorMessage','speaking','msgList','#e1bee7','1px\x20transparent\x20solid','#006064','Compulsory','getCSVData','./SwatchesGroup','filetypes','settings','ReactCSS','enumerable','twitter-picker\x20','-7px','saturation-white','deleteObj','.timesheet_entries_table_body','getRemoteSourceFields','HH:mm:ss','location','&mod=modules%3Dtime_sheets&e=','#B0BC00','browser','./_hashGet','column','EmployeeCompanyDocumentAdapter','b0e0e6','svg','Identification','mask','currency','Married','setDefaultValues','copyWithin','../helpers/buildURL','25px','generateECPolynomial','update','Hours\x20(','`,\x20expected\x20an\x20array.','resetWarningCache','38px','error','getPunchFailCallBack','indexOf','withCredentials','IE_PROTO','f5fffa','.simplemde','OvertimeRequest','filename','_isBuffer','#82b1ff','[object\x20Symbol]','./../helpers/buildURL','#efebe9','fieldSymbols','#ffe0b2','LN2','__esModule','00ff7f','from','0px','_options_','Processing','translate(-9px,\x20-1px)','#00b8d4','Arguments','onreadystatechange','PhoneTwoTone','https:','Please\x20select\x20a\x20status','#DB3E00','isDark','showPreviousView','__filterString__\x20','./cjs/react-is.production.min.js','1px','./polynomial','confirm','customAction','#ffd54f','rawSplit',')\x20-\x20Min\x20(','play','.65','*','keys','.datetimefield','isFormData','stopPropagation','sham','path','#448aff','./_baseKeysIn','#FDA1FF','ColorWrap','indigo','onChange','./_getTag','#fbe9e7','.add_time_sheet_entry','changedTouches','understanding','confirmationHasError','tab','currentUserId','3.6px/2px','getElementFailCallBack','loaded','profile_image_','other_id','_edit__delete_','codeMirror','editableTableWidget','react.responder','.timefield','absolute','exports','table-row-light','focusStyle','horizontal','Postal/Zip\x20Code','trimCanvas','000080','trailing','substr','.saveBtn','call','./_arrayFilter','RGBinput','unbindEventListeners','masterDataReader','emailOrEmpty','#cont_','PhotoshopPointerCircle','ffc0cb','setClientMessages','SwatchesColor','./_baseIsTypedArray','2e8b57','#006B76','Timesheet\x20status\x20changed\x20successfully','#c5e1a5','lodash/cloneDeep','Tag','Relationship','currentView','#FCCB00','fillForm','_process','Institute','getPunchSuccessCallBack','.select2-choices','./_DataView','onload','isStream','[object\x20Int16Array]','0\x201px\x204px\x20rgba(0,0,0,0.25)','callBackSuccess','translate(-3px,\x20-9px)','getSuccessCallBack','_Name','joined_date','rgba(','searchTerm','material','linear-gradient(to\x20right,\x20rgba(','currentDataGroupField','_createPoint','toDataURL','./components/active','createPreviousAttendnacesheetSuccessCallBack','./_hashHas','#29b6f6','../../helpers/checkboard','transition','swatch','Widowed','xor','getBestModeForData','writeUInt32BE','replace','#00c853','geekblue','./isMap','_lastWidth','getPunch','Copy','alpha','PhotoshopPreviews','New\x20Password','./_Hash','lightGreen','sort','Province','inputId','change','./_baseTimes','7b68ee','#1565c0','clientWidth','black','./_ListCache','Delete','[object\x20Date]','./GooglePointerCircle','initSourceMappings','isStandardBrowserEnv','authorization','removeClass','../defaults','state','job_title_Name','signature','0\x207px','#8c9eff','#e0f2f1','clearCachedResponse','birthday','0\x201px\x20rgba(0,0,0,.1)','getAddNewLabel','react.suspense_list','[object\x20File]','\x20#field_','

    ','ffebcd','.doc,.docx,.xml,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,image/*,.pdf','_id_','#2962ff','tinymce','./lib','\x20Add\x20New','JSON','closePlainMessage','amount','Sub\x20Unit','Hidden','tableContainer','#a7ffeb','fffaf0','Loan\x20Start\x20Date','isString','writeInt16LE','#f6f6f6','static','./_baseIsArguments','./_arrayLikeKeys','useServerTime','Signature','_handleTouchEvents','EmployeeTimeSheetAll',',\x200\x200\x205px\x20','[mask]','#689f38','changeStatusSuccessCallBack','#212121','Reading','CustomPicker','ApiAccessAdapter','validationRules','activeColor','Raised','Param\x20is\x20not\x20a\x20string',',\x201)','./_equalObjects','job_title','initAdapter','Country','isEncoding','value','tableFields','@@iterator','cancelRequest','./components/compact/Compact','Additional\x20details','confirm\x20password','waitForIt','0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ','fffafa','00ced1','abrupt','4px\x200','width','#ffff00','1e90ff','#ff80ab','getDataItemByKeyValues','cd853f','Edit\x20EPF/CPF\x20Number','fromByteArray','&ob=','2px','setTesting','editDataGroup','__wrapped__','rejected','ff6347','fromCharCode','Rejected','small','getRemoteSourceKey','product','#ccff90','ChromePointer','Attachment\x202','select2multi','sourceStart\x20out\x20of\x20bounds','#ffebee','parents','Form\x20.datefield','#697689','SalaryComponent','handleMouseUp','ffdab9','addNew','loan','_edit__download__delete_','Category','Employment\x20Status','10px\x200\x200\x2010px','forceInjectValuesBeforeSave','toState','./_getSymbols','isFunction','@icons/material/UnfoldMoreHorizontalIcon','fetch','f4a460','Required','promise','isArray','End\x20Date','make','fail','X-XSRF-TOKEN','response','antd','Single','teal','Typography','./can-promise','Attempt\x20to\x20write\x20outside\x20buffer\x20bounds','setTemplates','Date\x20Added','toRgb','edit','setNoJSONRequests','contents','beforeRenderFieldHook','match','time_start','setBaseUrl','Are\x20you\x20sure\x20you\x20want\x20to\x20delete\x20this\x20item\x20?','setSettings','fieldMasterData','#0062B1','object-assign','#fff8e1','_drawDot','immigration_status','onSwatchHover','removeChild','getCustomTemplate','control2','DeleteOutlined','transformRequest','responseText','url(','191970','activeProjects','./IceFormModal','cancelYesno','setPageSize','eject','Basic\x20','getBestVersionForData','./_baseIteratee','fullCalendar','clientHeight','_handleMouseEvents','open','hue-picker\x20','4px\x2010%\x203px','radius','showFormOnPopup','./adapters/xhr','content-type','#ffe57f','#ffd180','Edit','The\x20\x22string\x22\x20argument\x20must\x20be\x20of\x20type\x20string.\x20Received\x20type\x20number','./_getAllKeysIn','transformResponse','FilterForm','2px\x20solid\x20#fff','modJs','0ff','mostReadable','lodash/forOwn','handleSwatchHover','statusText','#16A5A5','getStatusOptionsData','`,\x20expected\x20instance\x20of\x20`','title','Mobile\x20Phone','numberOfCourses','showAddNew','SignaturePad','reservedBit','readDoubleBE','toLocaleLowerCase','getValueObjectWithLabel','getOwnPropertyDescriptors','ontimeout','Password\x20must\x20include\x20at\x20least\x20one\x20lowercase\x20letter','`,\x20expected\x20a\x20single\x20ReactElement\x20type.','showElement','Language','last-child','','./_isMasked','#4dd0e1','40px','mode','ChromePointerCircle','./PhotoshopPreviews','buffer','monthly_installment','icon','./format-info','closeDataMessage','updateFieldsSubForm','#9e9d24','./SwatchesColor','modules=dashboard','unshift','translate(-2px,\x20-2px)','#000000','readUInt32BE','/languages','Last\x20Name','#004d40','employee_id','unmountForm','picker','isPortal','./alphanumeric-data','#80cbc4','getRemoteTable','CircleSwatch','.dataTables_filter\x20input','StaffDirectoryObjectAdapter','First\x20Name','','Punch\x20Time-in','simpleCheckForValidColor','construct','nl2br','rgba(0,\x200,\x200,\x200.87)','velocityFilterWeight','doCustomValidation','HEXlabel','35px','lowercase','renderFormSelectOptions','customFields','getContext','showError','work_station_id','./_objectToString','isSubProfileTable','0\x206px\x206px\x200','xsrfHeaderName','read','stack','_val_','preProcessTableData','\x20.dataTables_paginate\x20.active\x20a','addClass','Professional\x20Working\x20Proficiency','Number','Status','Form','Item\x20Removed','#304ffe','#827717','modJsList[\x27tabEmployeeTimeEntry\x27]','placeholder','readInt8','fillRect','#00acc1','baseUrl','handleView','MODAL_TYPE_NORMAL','content-length','createTable','\x22\x20is\x20invalid\x20for\x20argument\x20\x22value\x22','TextArea','encoding\x20must\x20be\x20a\x20string','searchInput','0\x200\x202px\x202px','DataView','rgba(255,\x20255,\x20255,\x201)','#0097a7','react.provider','getData','Update','Add','getTotalCodewordsCount','#punchTimeText','modEmployeeDeleteProfileImageCallBack','cloneNode','handleDelete','getSubFormData','currentProfile','SUCCESS','30%','Invalid\x20mode:\x20','#employeeProfileEditInfo','writeInt16BE','#5e35b1','renderObject','setItem','private_email','changePasswordSuccessCallBack','The\x20first\x20argument\x20must\x20be\x20one\x20of\x20type\x20string,\x20Buffer,\x20ArrayBuffer,\x20Array,\x20or\x20Array-like\x20Object.\x20Received\x20type\x20','c0c0c0','red','fetchCompleted','target','timeout','test','json','setToSJISFunction','./_hasPath','#43a047','convertToTree','isMap','./_initCloneObject','save','Edit\x20Pay\x20Grade','addAdditionalRequestData','rotate(180deg)','hidden','\x20d=\x22','e9967a','calculateChange','a0522d','readFloatLE','onClick','find_path','hideLabel','80%','./cancel/isCancel','index','handleDrag','Cancelled','formTemplate','#ffab91','98fb98','./_toKey','./components/block/Block','y-2-1\x20h:s:00','Element','EmployeeTravelRecordAdapter','Type','5f9ea0','download','Plane','#F5A623','Text','setShowEdit','getBestMask','#d50000','696969','post','toJSON','throttle','isReady','./lib/ReactPropTypesSecret','reason','Pending','Display\x20Section','getTableColumns','setTranslationsSubModules','.attendnaceSnap','Notes_days_\x20','olive','leading','#lastPunchTime','.datefield','#2e7d32','handleOk','./_baseSetToString','toHsv','translations','EmployeeDocumentAdapter','Body','./IceSelect','rgba(0,\x200,\x200,\x200.54)','deleteRow','#ff7043','throw','./utils','./../helpers/isURLSameOrigin','isReadable','src','scaleY(1.8)','parse','application/json,\x20text/plain,\x20*/*','Driving\x20License\x20No','dcdcdc','_construct','../../../admin/src/reports/lib','#ff8a65','#timesheet_status','faebd7','changePassword','srcObject','maxContentLength','colorpick','','_roundA','mask=\x22','thirdPartyPopup','currentId','#ffab00','_div_inner','openStatus','Byte','splice','./_baseRest','inset\x200\x200\x200\x201px\x20#ddd','brown','showDomElement','f0fff0','#2979ff','MIXED','downloadPdf','isObject','light','setupApiClient','getActiveSubordinateEmployees','total_time','attachment1','EmployeeProjectAdapter','statusChangeId','dataMessage','\x27s\x20parent\x20structure\x20set\x20to\x20','fields','ellipsis','CompactColor','setValue','dataGroup','isArrayBufferView','.row','\x0aThe\x20chosen\x20QR\x20Code\x20version\x20cannot\x20contain\x20this\x20amount\x20of\x20data.\x0aMinimum\x20version\x20required\x20to\x20store\x20current\x20data\x20is:\x20','isNumber','./isBuffer','_img_','details_long','ConcurrentMode','getTimeEntriesSuccessCallBack','./components/twitter/Twitter','type','#26a69a','Enter','./_baseIsNative','Error\x20occured\x20while\x20getting\x20timesheet\x20entries','Date\x20Time','#03a9f4','auto','./_createAssigner','toPercentageRgbString','#f9a825','Time-In','field','_start__end__duration__project__details_','columns','translate(','0\x2040px\x2077px\x20rgba(0,0,0,.22),\x200\x2027px\x2024px\x20rgba(0,0,0,.2)','processFormFieldsWithObject','onDownloadProgress','react.concurrent_mode','loading','subordinates','saturation-black','Valid\x20Until','translateX(-2px)','twoColumnLayout','getObjectHTML','isForwardRef','this\x20hasn\x27t\x20been\x20initialised\x20-\x20super()\x20hasn\x27t\x20been\x20called','dragLabel','./_baseIsEqualDeep','[A-Z\x20$%*+\x5c-./:]+','filterQuery','SketchFields','.code','','childNodes','readability','block','./components/common/ColorWrap','beforeRenderField','orange','createRemoteTable','faf0e6','./_Promise','0\x201px\x200\x200\x20#EAEAEA','000','inset\x200\x201px\x200\x200\x20rgba(255,255,255,.2),\x20inset\x200\x20-1px\x200\x200\x20rgba(0,0,0,.02)','aqua','Avatar','set-cookie','getTableHTMLTemplate','./galois-field','60px','Edit\x20Employee\x20Details','errorMessages','#dcedc8','./isSymbol','_lastVelocity','#ff1744','_div_inner\x20[fieldid=\x27','writeInt32LE','setObjectTypeName','sorter','children','4169e1','The\x20value\x20\x22','configureEvents','\x22value\x22\x20argument\x20must\x20not\x20be\x20a\x20number','#c6ff00','f00','address','size','clone','StaffDirectoryAdapter','AttendanceAdapter','0\x200\x200\x201px\x20#878787','label2','false','#b39ddb','translate(-8px,\x20-5px)','SignatureCanvas','Edit\x20Country','e0ffff','yyyy\x20MMM\x20d','removeEventListener','formError','exit','1px\x20solid\x20#B3B3B3','[object\x20Function]','dragMax','#80d8ff','PureComponent','modal','material-colors','#98A1A4','constructor','100%','mix','_status__logs_'];(function(_0x59a279,_0x3bf048){var _0x3e44d2=function(_0x4cf1e5){while(--_0x4cf1e5){_0x59a279['push'](_0x59a279['shift']());}};_0x3e44d2(++_0x3bf048);}(_0x3bf0,0x1da));var _0x3e44=function(_0x59a279,_0x3bf048){_0x59a279=_0x59a279-0x0;var _0x3e44d2=_0x3bf0[_0x59a279];return _0x3e44d2;};var _0x322f0f=_0x3e44;!function e(_0x4cf1e5,_0x471f50,_0x578913){var _0x332b37=_0x3e44;function _0x3e1585(_0x22c887,_0x50d2d1){var _0xa805e0=_0x3e44;if(!_0x471f50[_0x22c887]){if(!_0x4cf1e5[_0x22c887]){var _0x413627=_0xa805e0('0x67')==typeof require&&require;if(!_0x50d2d1&&_0x413627)return _0x413627(_0x22c887,!0x0);if(_0x5aaeb3)return _0x5aaeb3(_0x22c887,!0x0);var _0x309e5f=new Error('Cannot\x20find\x20module\x20\x27'+_0x22c887+'\x27');throw _0x309e5f[_0xa805e0('0x293')]=_0xa805e0('0x296'),_0x309e5f;}var _0x1d68cc=_0x471f50[_0x22c887]={'exports':{}};_0x4cf1e5[_0x22c887][0x0]['call'](_0x1d68cc[_0xa805e0('0x91e')],function(_0x686bfd){return _0x3e1585(_0x4cf1e5[_0x22c887][0x1][_0x686bfd]||_0x686bfd);},_0x1d68cc,_0x1d68cc['exports'],e,_0x4cf1e5,_0x471f50,_0x578913);}return _0x471f50[_0x22c887][_0xa805e0('0x91e')];}for(var _0x5aaeb3=_0x332b37('0x67')==typeof require&&require,_0x3f270d=0x0;_0x3f270d<_0x578913['length'];_0x3f270d++)_0x3e1585(_0x578913[_0x3f270d]);return _0x3e1585;}({0x1:[function(_0xf5ed2f,_0x411bda,_0x4a02e9){var _0xc7a63c=_0x3e44;'use strict';_0x4a02e9[_0xc7a63c('0x738')]=function(_0x388397){var _0x239619=_0x28af18(_0x388397),_0x84bad9=_0x239619[0x0],_0x499c4a=_0x239619[0x1];return 0x3*(_0x84bad9+_0x499c4a)/0x4-_0x499c4a;},_0x4a02e9[_0xc7a63c('0x8e7')]=function(_0x1d6a53){var _0x5dc96d=_0xc7a63c,_0x9f1fc2,_0x3b1cfb,_0x51891b=_0x28af18(_0x1d6a53),_0x4b0c92=_0x51891b[0x0],_0x127dbc=_0x51891b[0x1],_0x1b40c5=new _0x17372b(function(_0x3dff3b,_0x1744d4,_0x8ac469){return 0x3*(_0x1744d4+_0x8ac469)/0x4-_0x8ac469;}(0x0,_0x4b0c92,_0x127dbc)),_0x376392=0x0,_0x546d84=_0x127dbc>0x0?_0x4b0c92-0x4:_0x4b0c92;for(_0x3b1cfb=0x0;_0x3b1cfb<_0x546d84;_0x3b1cfb+=0x4)_0x9f1fc2=_0x2db6d7[_0x1d6a53['charCodeAt'](_0x3b1cfb)]<<0x12|_0x2db6d7[_0x1d6a53[_0x5dc96d('0xd08')](_0x3b1cfb+0x1)]<<0xc|_0x2db6d7[_0x1d6a53[_0x5dc96d('0xd08')](_0x3b1cfb+0x2)]<<0x6|_0x2db6d7[_0x1d6a53[_0x5dc96d('0xd08')](_0x3b1cfb+0x3)],_0x1b40c5[_0x376392++]=_0x9f1fc2>>0x10&0xff,_0x1b40c5[_0x376392++]=_0x9f1fc2>>0x8&0xff,_0x1b40c5[_0x376392++]=0xff&_0x9f1fc2;return 0x2===_0x127dbc&&(_0x9f1fc2=_0x2db6d7[_0x1d6a53['charCodeAt'](_0x3b1cfb)]<<0x2|_0x2db6d7[_0x1d6a53[_0x5dc96d('0xd08')](_0x3b1cfb+0x1)]>>0x4,_0x1b40c5[_0x376392++]=0xff&_0x9f1fc2),0x1===_0x127dbc&&(_0x9f1fc2=_0x2db6d7[_0x1d6a53[_0x5dc96d('0xd08')](_0x3b1cfb)]<<0xa|_0x2db6d7[_0x1d6a53[_0x5dc96d('0xd08')](_0x3b1cfb+0x1)]<<0x4|_0x2db6d7[_0x1d6a53[_0x5dc96d('0xd08')](_0x3b1cfb+0x2)]>>0x2,_0x1b40c5[_0x376392++]=_0x9f1fc2>>0x8&0xff,_0x1b40c5[_0x376392++]=0xff&_0x9f1fc2),_0x1b40c5;},_0x4a02e9[_0xc7a63c('0x9ca')]=function(_0x49e3e2){var _0x5f5c98=_0xc7a63c;for(var _0x2e797e,_0x3a04ba=_0x49e3e2['length'],_0x4fe1f0=_0x3a04ba%0x3,_0x317faa=[],_0x55657a=0x0,_0x4a2ec7=_0x3a04ba-_0x4fe1f0;_0x55657a<_0x4a2ec7;_0x55657a+=0x3fff)_0x317faa[_0x5f5c98('0x8cd')](_0x3a16b1(_0x49e3e2,_0x55657a,_0x55657a+0x3fff>_0x4a2ec7?_0x4a2ec7:_0x55657a+0x3fff));return 0x1===_0x4fe1f0?(_0x2e797e=_0x49e3e2[_0x3a04ba-0x1],_0x317faa[_0x5f5c98('0x8cd')](_0x214a4a[_0x2e797e>>0x2]+_0x214a4a[_0x2e797e<<0x4&0x3f]+'==')):0x2===_0x4fe1f0&&(_0x2e797e=(_0x49e3e2[_0x3a04ba-0x2]<<0x8)+_0x49e3e2[_0x3a04ba-0x1],_0x317faa[_0x5f5c98('0x8cd')](_0x214a4a[_0x2e797e>>0xa]+_0x214a4a[_0x2e797e>>0x4&0x3f]+_0x214a4a[_0x2e797e<<0x2&0x3f]+'=')),_0x317faa[_0x5f5c98('0x2ee')]('');};for(var _0x214a4a=[],_0x2db6d7=[],_0x17372b=_0xc7a63c('0x396')!=typeof Uint8Array?Uint8Array:Array,_0x43b883=_0xc7a63c('0x89d'),_0x4a4761=0x0,_0x292c79=_0x43b883[_0xc7a63c('0x1d1')];_0x4a4761<_0x292c79;++_0x4a4761)_0x214a4a[_0x4a4761]=_0x43b883[_0x4a4761],_0x2db6d7[_0x43b883[_0xc7a63c('0xd08')](_0x4a4761)]=_0x4a4761;function _0x28af18(_0x2e8c5f){var _0x2d6acd=_0xc7a63c,_0x551102=_0x2e8c5f[_0x2d6acd('0x1d1')];if(_0x551102%0x4>0x0)throw new Error(_0x2d6acd('0x4a4'));var _0x2252cf=_0x2e8c5f[_0x2d6acd('0x857')]('=');return-0x1===_0x2252cf&&(_0x2252cf=_0x551102),[_0x2252cf,_0x2252cf===_0x551102?0x0:0x4-_0x2252cf%0x4];}function _0x3a16b1(_0x4ce999,_0x4792bb,_0x31e9d2){var _0x101913=_0xc7a63c;for(var _0x2bc68d,_0x11663c,_0x16f037=[],_0x1bbd49=_0x4792bb;_0x1bbd49<_0x31e9d2;_0x1bbd49+=0x3)_0x2bc68d=(_0x4ce999[_0x1bbd49]<<0x10&0xff0000)+(_0x4ce999[_0x1bbd49+0x1]<<0x8&0xff00)+(0xff&_0x4ce999[_0x1bbd49+0x2]),_0x16f037[_0x101913('0x8cd')](_0x214a4a[(_0x11663c=_0x2bc68d)>>0x12&0x3f]+_0x214a4a[_0x11663c>>0xc&0x3f]+_0x214a4a[_0x11663c>>0x6&0x3f]+_0x214a4a[0x3f&_0x11663c]);return _0x16f037['join']('');}_0x2db6d7['-'[_0xc7a63c('0xd08')](0x0)]=0x3e,_0x2db6d7['_'[_0xc7a63c('0xd08')](0x0)]=0x3f;},{}],0x2:[function(_0x3666fa,_0x3a0ac9,_0x507123){var _0x316651=_0x3e44;(function(_0x5d0c43){var _0x44600a=_0x3e44;/*! +(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i 0) { + throw new Error('Invalid string. Length must be a multiple of 4') + } + + // Trim off extra bytes after placeholder bytes are found + // See: https://github.com/beatgammit/base64-js/issues/42 + var validLen = b64.indexOf('=') + if (validLen === -1) validLen = len + + var placeHoldersLen = validLen === len + ? 0 + : 4 - (validLen % 4) + + return [validLen, placeHoldersLen] +} + +// base64 is 4/3 + up to two characters of the original data +function byteLength (b64) { + var lens = getLens(b64) + var validLen = lens[0] + var placeHoldersLen = lens[1] + return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen +} + +function _byteLength (b64, validLen, placeHoldersLen) { + return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen +} + +function toByteArray (b64) { + var tmp + var lens = getLens(b64) + var validLen = lens[0] + var placeHoldersLen = lens[1] + + var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen)) + + var curByte = 0 + + // if there are placeholders, only get up to the last complete 4 chars + var len = placeHoldersLen > 0 + ? validLen - 4 + : validLen + + var i + for (i = 0; i < len; i += 4) { + tmp = + (revLookup[b64.charCodeAt(i)] << 18) | + (revLookup[b64.charCodeAt(i + 1)] << 12) | + (revLookup[b64.charCodeAt(i + 2)] << 6) | + revLookup[b64.charCodeAt(i + 3)] + arr[curByte++] = (tmp >> 16) & 0xFF + arr[curByte++] = (tmp >> 8) & 0xFF + arr[curByte++] = tmp & 0xFF + } + + if (placeHoldersLen === 2) { + tmp = + (revLookup[b64.charCodeAt(i)] << 2) | + (revLookup[b64.charCodeAt(i + 1)] >> 4) + arr[curByte++] = tmp & 0xFF + } + + if (placeHoldersLen === 1) { + tmp = + (revLookup[b64.charCodeAt(i)] << 10) | + (revLookup[b64.charCodeAt(i + 1)] << 4) | + (revLookup[b64.charCodeAt(i + 2)] >> 2) + arr[curByte++] = (tmp >> 8) & 0xFF + arr[curByte++] = tmp & 0xFF + } + + return arr +} + +function tripletToBase64 (num) { + return lookup[num >> 18 & 0x3F] + + lookup[num >> 12 & 0x3F] + + lookup[num >> 6 & 0x3F] + + lookup[num & 0x3F] +} + +function encodeChunk (uint8, start, end) { + var tmp + var output = [] + for (var i = start; i < end; i += 3) { + tmp = + ((uint8[i] << 16) & 0xFF0000) + + ((uint8[i + 1] << 8) & 0xFF00) + + (uint8[i + 2] & 0xFF) + output.push(tripletToBase64(tmp)) + } + return output.join('') +} + +function fromByteArray (uint8) { + var tmp + var len = uint8.length + var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes + var parts = [] + var maxChunkLength = 16383 // must be multiple of 3 + + // go through the array every three bytes, we'll deal with trailing stuff later + for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { + parts.push(encodeChunk( + uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength) + )) + } + + // pad the end with zeros, but make sure to not forget the extra bytes + if (extraBytes === 1) { + tmp = uint8[len - 1] + parts.push( + lookup[tmp >> 2] + + lookup[(tmp << 4) & 0x3F] + + '==' + ) + } else if (extraBytes === 2) { + tmp = (uint8[len - 2] << 8) + uint8[len - 1] + parts.push( + lookup[tmp >> 10] + + lookup[(tmp >> 4) & 0x3F] + + lookup[(tmp << 2) & 0x3F] + + '=' + ) + } + + return parts.join('') +} + +},{}],2:[function(require,module,exports){ +(function (Buffer){ +/*! * The buffer module from node.js, for the browser. * * @author Feross Aboukhadijeh * @license MIT */ -'use strict';var _0x14fe94=_0x3666fa(_0x44600a('0x354')),_0x2d9879=_0x3666fa('ieee754');_0x507123[_0x44600a('0x825')]=_0x5d0c43,_0x507123['SlowBuffer']=function(_0x3ba1c4){return+_0x3ba1c4!=_0x3ba1c4&&(_0x3ba1c4=0x0),_0x5d0c43['alloc'](+_0x3ba1c4);},_0x507123[_0x44600a('0x5e2')]=0x32;function _0x78a356(_0x561a92){var _0x44f609=_0x44600a;if(_0x561a92>0x7fffffff)throw new RangeError(_0x44f609('0xbca')+_0x561a92+_0x44f609('0x1af'));var _0x3bee2f=new Uint8Array(_0x561a92);return _0x3bee2f['__proto__']=_0x5d0c43[_0x44f609('0x3ec')],_0x3bee2f;}function _0x5d0c43(_0x5d9ef4,_0x32965a,_0x3f2e21){var _0x2c849f=_0x44600a;if(_0x2c849f('0x913')==typeof _0x5d9ef4){if(_0x2c849f('0x4ba')==typeof _0x32965a)throw new TypeError(_0x2c849f('0xa2e'));return _0x39bdc2(_0x5d9ef4);}return _0x47d62c(_0x5d9ef4,_0x32965a,_0x3f2e21);}function _0x47d62c(_0xcc93e4,_0x3317f4,_0x549f8e){var _0x340841=_0x44600a;if(_0x340841('0x4ba')==typeof _0xcc93e4)return function(_0x1114cc,_0x508504){var _0x184ae7=_0x340841;_0x184ae7('0x4ba')==typeof _0x508504&&''!==_0x508504||(_0x508504=_0x184ae7('0x3fc'));if(!_0x5d0c43[_0x184ae7('0x9b5')](_0x508504))throw new TypeError('Unknown\x20encoding:\x20'+_0x508504);var _0x36129c=0x0|_0x44d288(_0x1114cc,_0x508504),_0x3c0c44=_0x78a356(_0x36129c),_0x3def79=_0x3c0c44['write'](_0x1114cc,_0x508504);return _0x3def79!==_0x36129c&&(_0x3c0c44=_0x3c0c44[_0x184ae7('0x63a')](0x0,_0x3def79)),_0x3c0c44;}(_0xcc93e4,_0x3317f4);if(ArrayBuffer[_0x340841('0x69f')](_0xcc93e4))return _0x1e1a23(_0xcc93e4);if(null==_0xcc93e4)throw TypeError(_0x340841('0xafd')+typeof _0xcc93e4);if(_0x374deb(_0xcc93e4,ArrayBuffer)||_0xcc93e4&&_0x374deb(_0xcc93e4[_0x340841('0xa53')],ArrayBuffer))return function(_0x2980db,_0x228c16,_0x1e7d1d){var _0x1ee44c=_0x340841;if(_0x228c16<0x0||_0x2980db['byteLength']<_0x228c16)throw new RangeError('\x22offset\x22\x20is\x20outside\x20of\x20buffer\x20bounds');if(_0x2980db[_0x1ee44c('0x738')]<_0x228c16+(_0x1e7d1d||0x0))throw new RangeError('\x22length\x22\x20is\x20outside\x20of\x20buffer\x20bounds');var _0x33637d;return _0x33637d=void 0x0===_0x228c16&&void 0x0===_0x1e7d1d?new Uint8Array(_0x2980db):void 0x0===_0x1e7d1d?new Uint8Array(_0x2980db,_0x228c16):new Uint8Array(_0x2980db,_0x228c16,_0x1e7d1d),(_0x33637d[_0x1ee44c('0xc15')]=_0x5d0c43['prototype'],_0x33637d);}(_0xcc93e4,_0x3317f4,_0x549f8e);if(_0x340841('0x913')==typeof _0xcc93e4)throw new TypeError(_0x340841('0x8a6'));var _0x5d56bd=_0xcc93e4[_0x340841('0x44f')]&&_0xcc93e4['valueOf']();if(null!=_0x5d56bd&&_0x5d56bd!==_0xcc93e4)return _0x5d0c43['from'](_0x5d56bd,_0x3317f4,_0x549f8e);var _0x28b6d1=function(_0x1ab387){var _0x5d9f33=_0x340841;if(_0x5d0c43[_0x5d9f33('0x628')](_0x1ab387)){var _0x55e788=0x0|_0x40a153(_0x1ab387[_0x5d9f33('0x1d1')]),_0x53498b=_0x78a356(_0x55e788);return 0x0===_0x53498b['length']||_0x1ab387['copy'](_0x53498b,0x0,0x0,_0x55e788),_0x53498b;}if(void 0x0!==_0x1ab387['length'])return _0x5d9f33('0x913')!=typeof _0x1ab387[_0x5d9f33('0x1d1')]||_0x18a959(_0x1ab387['length'])?_0x78a356(0x0):_0x1e1a23(_0x1ab387);if('Buffer'===_0x1ab387['type']&&Array[_0x5d9f33('0x9f2')](_0x1ab387[_0x5d9f33('0xc8f')]))return _0x1e1a23(_0x1ab387[_0x5d9f33('0xc8f')]);}(_0xcc93e4);if(_0x28b6d1)return _0x28b6d1;if('undefined'!=typeof Symbol&&null!=Symbol[_0x340841('0x554')]&&_0x340841('0x67')==typeof _0xcc93e4[Symbol[_0x340841('0x554')]])return _0x5d0c43[_0x340841('0x868')](_0xcc93e4[Symbol[_0x340841('0x554')]](_0x340841('0x4ba')),_0x3317f4,_0x549f8e);throw new TypeError(_0x340841('0xafd')+typeof _0xcc93e4);}function _0x4c218f(_0x185e73){var _0x236ffd=_0x44600a;if(_0x236ffd('0x913')!=typeof _0x185e73)throw new TypeError(_0x236ffd('0x828'));if(_0x185e73<0x0)throw new RangeError(_0x236ffd('0xbca')+_0x185e73+_0x236ffd('0x1af'));}function _0x39bdc2(_0x1b4849){return _0x4c218f(_0x1b4849),_0x78a356(_0x1b4849<0x0?0x0:0x0|_0x40a153(_0x1b4849));}function _0x1e1a23(_0x13dd45){var _0xe2c87e=_0x44600a;for(var _0x270db3=_0x13dd45[_0xe2c87e('0x1d1')]<0x0?0x0:0x0|_0x40a153(_0x13dd45[_0xe2c87e('0x1d1')]),_0x434f2c=_0x78a356(_0x270db3),_0x17edbf=0x0;_0x17edbf<_0x270db3;_0x17edbf+=0x1)_0x434f2c[_0x17edbf]=0xff&_0x13dd45[_0x17edbf];return _0x434f2c;}function _0x40a153(_0x455071){var _0x59dd57=_0x44600a;if(_0x455071>=0x7fffffff)throw new RangeError('Attempt\x20to\x20allocate\x20Buffer\x20larger\x20than\x20maximum\x20size:\x200x'+0x7fffffff[_0x59dd57('0x8dc')](0x10)+_0x59dd57('0xc52'));return 0x0|_0x455071;}function _0x44d288(_0x2af43e,_0x1df2da){var _0x4d9ec4=_0x44600a;if(_0x5d0c43[_0x4d9ec4('0x628')](_0x2af43e))return _0x2af43e['length'];if(ArrayBuffer['isView'](_0x2af43e)||_0x374deb(_0x2af43e,ArrayBuffer))return _0x2af43e[_0x4d9ec4('0x738')];if(_0x4d9ec4('0x4ba')!=typeof _0x2af43e)throw new TypeError('The\x20\x22string\x22\x20argument\x20must\x20be\x20one\x20of\x20type\x20string,\x20Buffer,\x20or\x20ArrayBuffer.\x20Received\x20type\x20'+typeof _0x2af43e);var _0x17e5ec=_0x2af43e[_0x4d9ec4('0x1d1')],_0x3a5248=arguments[_0x4d9ec4('0x1d1')]>0x2&&!0x0===arguments[0x2];if(!_0x3a5248&&0x0===_0x17e5ec)return 0x0;for(var _0x3844f2=!0x1;;)switch(_0x1df2da){case _0x4d9ec4('0xa96'):case _0x4d9ec4('0x524'):case _0x4d9ec4('0x8e'):return _0x17e5ec;case _0x4d9ec4('0x3fc'):case'utf-8':return _0x218d2f(_0x2af43e)[_0x4d9ec4('0x1d1')];case _0x4d9ec4('0x149'):case _0x4d9ec4('0x2c8'):case _0x4d9ec4('0x804'):case _0x4d9ec4('0x38c'):return 0x2*_0x17e5ec;case _0x4d9ec4('0x49b'):return _0x17e5ec>>>0x1;case _0x4d9ec4('0x366'):return _0x21b988(_0x2af43e)[_0x4d9ec4('0x1d1')];default:if(_0x3844f2)return _0x3a5248?-0x1:_0x218d2f(_0x2af43e)[_0x4d9ec4('0x1d1')];_0x1df2da=(''+_0x1df2da)['toLowerCase'](),_0x3844f2=!0x0;}}function _0x23063e(_0x22ad05,_0x1d6dff,_0x49bbf3){var _0x29e8b5=_0x44600a,_0x10482c=!0x1;if((void 0x0===_0x1d6dff||_0x1d6dff<0x0)&&(_0x1d6dff=0x0),_0x1d6dff>this[_0x29e8b5('0x1d1')])return'';if((void 0x0===_0x49bbf3||_0x49bbf3>this[_0x29e8b5('0x1d1')])&&(_0x49bbf3=this[_0x29e8b5('0x1d1')]),_0x49bbf3<=0x0)return'';if((_0x49bbf3>>>=0x0)<=(_0x1d6dff>>>=0x0))return'';for(_0x22ad05||(_0x22ad05=_0x29e8b5('0x3fc'));;)switch(_0x22ad05){case _0x29e8b5('0x49b'):return _0x56da0a(this,_0x1d6dff,_0x49bbf3);case _0x29e8b5('0x3fc'):case'utf-8':return _0x57acb4(this,_0x1d6dff,_0x49bbf3);case _0x29e8b5('0xa96'):return _0xb00dd6(this,_0x1d6dff,_0x49bbf3);case _0x29e8b5('0x524'):case'binary':return _0xce53e7(this,_0x1d6dff,_0x49bbf3);case'base64':return _0x19fafb(this,_0x1d6dff,_0x49bbf3);case _0x29e8b5('0x149'):case _0x29e8b5('0x2c8'):case'utf16le':case _0x29e8b5('0x38c'):return _0x31b51a(this,_0x1d6dff,_0x49bbf3);default:if(_0x10482c)throw new TypeError('Unknown\x20encoding:\x20'+_0x22ad05);_0x22ad05=(_0x22ad05+'')[_0x29e8b5('0x5d')](),_0x10482c=!0x0;}}function _0x34b22f(_0x2a1890,_0x3d97fc,_0x528384){var _0x202a91=_0x2a1890[_0x3d97fc];_0x2a1890[_0x3d97fc]=_0x2a1890[_0x528384],_0x2a1890[_0x528384]=_0x202a91;}function _0x28e67d(_0x5d09e5,_0x4d33eb,_0x30b791,_0x56c51e,_0x4cd5b4){var _0x5d055a=_0x44600a;if(0x0===_0x5d09e5[_0x5d055a('0x1d1')])return-0x1;if(_0x5d055a('0x4ba')==typeof _0x30b791?(_0x56c51e=_0x30b791,_0x30b791=0x0):_0x30b791>0x7fffffff?_0x30b791=0x7fffffff:_0x30b791<-0x80000000&&(_0x30b791=-0x80000000),_0x18a959(_0x30b791=+_0x30b791)&&(_0x30b791=_0x4cd5b4?0x0:_0x5d09e5['length']-0x1),_0x30b791<0x0&&(_0x30b791=_0x5d09e5['length']+_0x30b791),_0x30b791>=_0x5d09e5[_0x5d055a('0x1d1')]){if(_0x4cd5b4)return-0x1;_0x30b791=_0x5d09e5[_0x5d055a('0x1d1')]-0x1;}else{if(_0x30b791<0x0){if(!_0x4cd5b4)return-0x1;_0x30b791=0x0;}}if(_0x5d055a('0x4ba')==typeof _0x4d33eb&&(_0x4d33eb=_0x5d0c43[_0x5d055a('0x868')](_0x4d33eb,_0x56c51e)),_0x5d0c43[_0x5d055a('0x628')](_0x4d33eb))return 0x0===_0x4d33eb[_0x5d055a('0x1d1')]?-0x1:_0x4ca7f2(_0x5d09e5,_0x4d33eb,_0x30b791,_0x56c51e,_0x4cd5b4);if('number'==typeof _0x4d33eb)return _0x4d33eb&=0xff,'function'==typeof Uint8Array['prototype'][_0x5d055a('0x857')]?_0x4cd5b4?Uint8Array[_0x5d055a('0x3ec')][_0x5d055a('0x857')][_0x5d055a('0x928')](_0x5d09e5,_0x4d33eb,_0x30b791):Uint8Array[_0x5d055a('0x3ec')][_0x5d055a('0x320')][_0x5d055a('0x928')](_0x5d09e5,_0x4d33eb,_0x30b791):_0x4ca7f2(_0x5d09e5,[_0x4d33eb],_0x30b791,_0x56c51e,_0x4cd5b4);throw new TypeError(_0x5d055a('0xd26'));}function _0x4ca7f2(_0xb8a97b,_0x266860,_0x4112a9,_0x1a31d3,_0xc253fe){var _0x18b423=_0x44600a,_0x397d5f,_0x4b6d85=0x1,_0x21f6de=_0xb8a97b[_0x18b423('0x1d1')],_0x3a30c7=_0x266860['length'];if(void 0x0!==_0x1a31d3&&(_0x18b423('0x149')===(_0x1a31d3=String(_0x1a31d3)['toLowerCase']())||_0x18b423('0x2c8')===_0x1a31d3||_0x18b423('0x804')===_0x1a31d3||_0x18b423('0x38c')===_0x1a31d3)){if(_0xb8a97b[_0x18b423('0x1d1')]<0x2||_0x266860['length']<0x2)return-0x1;_0x4b6d85=0x2,_0x21f6de/=0x2,_0x3a30c7/=0x2,_0x4112a9/=0x2;}function _0x1f6d75(_0x28ea3a,_0x440588){var _0xa86153=_0x18b423;return 0x1===_0x4b6d85?_0x28ea3a[_0x440588]:_0x28ea3a[_0xa86153('0x282')](_0x440588*_0x4b6d85);}if(_0xc253fe){var _0x296970=-0x1;for(_0x397d5f=_0x4112a9;_0x397d5f<_0x21f6de;_0x397d5f++)if(_0x1f6d75(_0xb8a97b,_0x397d5f)===_0x1f6d75(_0x266860,-0x1===_0x296970?0x0:_0x397d5f-_0x296970)){if(-0x1===_0x296970&&(_0x296970=_0x397d5f),_0x397d5f-_0x296970+0x1===_0x3a30c7)return _0x296970*_0x4b6d85;}else-0x1!==_0x296970&&(_0x397d5f-=_0x397d5f-_0x296970),_0x296970=-0x1;}else for(_0x4112a9+_0x3a30c7>_0x21f6de&&(_0x4112a9=_0x21f6de-_0x3a30c7),_0x397d5f=_0x4112a9;_0x397d5f>=0x0;_0x397d5f--){for(var _0x19feba=!0x0,_0x5a563c=0x0;_0x5a563c<_0x3a30c7;_0x5a563c++)if(_0x1f6d75(_0xb8a97b,_0x397d5f+_0x5a563c)!==_0x1f6d75(_0x266860,_0x5a563c)){_0x19feba=!0x1;break;}if(_0x19feba)return _0x397d5f;}return-0x1;}function _0x4ea96c(_0x581465,_0x239b16,_0x4773a2,_0x29016f){var _0x1bb70c=_0x44600a;_0x4773a2=Number(_0x4773a2)||0x0;var _0x36609d=_0x581465[_0x1bb70c('0x1d1')]-_0x4773a2;_0x29016f?(_0x29016f=Number(_0x29016f))>_0x36609d&&(_0x29016f=_0x36609d):_0x29016f=_0x36609d;var _0x1c9b79=_0x239b16[_0x1bb70c('0x1d1')];_0x29016f>_0x1c9b79/0x2&&(_0x29016f=_0x1c9b79/0x2);for(var _0x4d138d=0x0;_0x4d138d<_0x29016f;++_0x4d138d){var _0x400f5c=parseInt(_0x239b16['substr'](0x2*_0x4d138d,0x2),0x10);if(_0x18a959(_0x400f5c))return _0x4d138d;_0x581465[_0x4773a2+_0x4d138d]=_0x400f5c;}return _0x4d138d;}function _0x1fc8d4(_0x465e89,_0x5ca354,_0x240dd5,_0x10f2fd){var _0x573e15=_0x44600a;return _0x4f07d9(_0x218d2f(_0x5ca354,_0x465e89[_0x573e15('0x1d1')]-_0x240dd5),_0x465e89,_0x240dd5,_0x10f2fd);}function _0xf32c6c(_0x409504,_0x22adcc,_0x1b7975,_0x219e33){return _0x4f07d9(function(_0x9f5730){var _0x560a4a=_0x3e44;for(var _0x2d1bee=[],_0x892337=0x0;_0x892337<_0x9f5730['length'];++_0x892337)_0x2d1bee[_0x560a4a('0x8cd')](0xff&_0x9f5730[_0x560a4a('0xd08')](_0x892337));return _0x2d1bee;}(_0x22adcc),_0x409504,_0x1b7975,_0x219e33);}function _0x1ee774(_0x3ef733,_0x42af20,_0x2fd831,_0x7eb3e8){return _0xf32c6c(_0x3ef733,_0x42af20,_0x2fd831,_0x7eb3e8);}function _0x1ce139(_0x1b3d6b,_0x2a0c27,_0x2aadbb,_0x182812){return _0x4f07d9(_0x21b988(_0x2a0c27),_0x1b3d6b,_0x2aadbb,_0x182812);}function _0x300fe9(_0x2a3cc5,_0x44ef42,_0x32d983,_0x3cdf12){var _0x5d5c19=_0x44600a;return _0x4f07d9(function(_0x46119d,_0x16c842){var _0x52b729=_0x3e44;for(var _0x1129d9,_0x47398d,_0x1cfa52,_0x232810=[],_0x37b52a=0x0;_0x37b52a<_0x46119d[_0x52b729('0x1d1')]&&!((_0x16c842-=0x2)<0x0);++_0x37b52a)_0x1129d9=_0x46119d[_0x52b729('0xd08')](_0x37b52a),_0x47398d=_0x1129d9>>0x8,_0x1cfa52=_0x1129d9%0x100,_0x232810['push'](_0x1cfa52),_0x232810[_0x52b729('0x8cd')](_0x47398d);return _0x232810;}(_0x44ef42,_0x2a3cc5[_0x5d5c19('0x1d1')]-_0x32d983),_0x2a3cc5,_0x32d983,_0x3cdf12);}function _0x19fafb(_0x385889,_0x4797aa,_0x4c59c9){var _0x2d1644=_0x44600a;return 0x0===_0x4797aa&&_0x4c59c9===_0x385889[_0x2d1644('0x1d1')]?_0x14fe94[_0x2d1644('0x9ca')](_0x385889):_0x14fe94['fromByteArray'](_0x385889[_0x2d1644('0x63a')](_0x4797aa,_0x4c59c9));}function _0x57acb4(_0x2b8300,_0x7ba26d,_0x1dd11b){var _0x4af6ee=_0x44600a;_0x1dd11b=Math[_0x4af6ee('0x4d7')](_0x2b8300['length'],_0x1dd11b);for(var _0x2ba0f6=[],_0x4cd83a=_0x7ba26d;_0x4cd83a<_0x1dd11b;){var _0x3d0c67,_0x2692aa,_0x4e271f,_0x98529c,_0x1b6f4e=_0x2b8300[_0x4cd83a],_0x51e3a7=null,_0x1655aa=_0x1b6f4e>0xef?0x4:_0x1b6f4e>0xdf?0x3:_0x1b6f4e>0xbf?0x2:0x1;if(_0x4cd83a+_0x1655aa<=_0x1dd11b)switch(_0x1655aa){case 0x1:_0x1b6f4e<0x80&&(_0x51e3a7=_0x1b6f4e);break;case 0x2:0x80==(0xc0&(_0x3d0c67=_0x2b8300[_0x4cd83a+0x1]))&&(_0x98529c=(0x1f&_0x1b6f4e)<<0x6|0x3f&_0x3d0c67)>0x7f&&(_0x51e3a7=_0x98529c);break;case 0x3:_0x3d0c67=_0x2b8300[_0x4cd83a+0x1],_0x2692aa=_0x2b8300[_0x4cd83a+0x2],0x80==(0xc0&_0x3d0c67)&&0x80==(0xc0&_0x2692aa)&&(_0x98529c=(0xf&_0x1b6f4e)<<0xc|(0x3f&_0x3d0c67)<<0x6|0x3f&_0x2692aa)>0x7ff&&(_0x98529c<0xd800||_0x98529c>0xdfff)&&(_0x51e3a7=_0x98529c);break;case 0x4:_0x3d0c67=_0x2b8300[_0x4cd83a+0x1],_0x2692aa=_0x2b8300[_0x4cd83a+0x2],_0x4e271f=_0x2b8300[_0x4cd83a+0x3],0x80==(0xc0&_0x3d0c67)&&0x80==(0xc0&_0x2692aa)&&0x80==(0xc0&_0x4e271f)&&(_0x98529c=(0xf&_0x1b6f4e)<<0x12|(0x3f&_0x3d0c67)<<0xc|(0x3f&_0x2692aa)<<0x6|0x3f&_0x4e271f)>0xffff&&_0x98529c<0x110000&&(_0x51e3a7=_0x98529c);}null===_0x51e3a7?(_0x51e3a7=0xfffd,_0x1655aa=0x1):_0x51e3a7>0xffff&&(_0x51e3a7-=0x10000,_0x2ba0f6['push'](_0x51e3a7>>>0xa&0x3ff|0xd800),_0x51e3a7=0xdc00|0x3ff&_0x51e3a7),_0x2ba0f6[_0x4af6ee('0x8cd')](_0x51e3a7),_0x4cd83a+=_0x1655aa;}return function(_0x237ffe){var _0x18fe37=_0x4af6ee,_0x1f8f7a=_0x237ffe[_0x18fe37('0x1d1')];if(_0x1f8f7a<=0x1000)return String[_0x18fe37('0x9d2')][_0x18fe37('0x7da')](String,_0x237ffe);var _0x474b9b='',_0x276607=0x0;for(;_0x276607<_0x1f8f7a;)_0x474b9b+=String['fromCharCode'][_0x18fe37('0x7da')](String,_0x237ffe[_0x18fe37('0x63a')](_0x276607,_0x276607+=0x1000));return _0x474b9b;}(_0x2ba0f6);}_0x507123[_0x44600a('0x90')]=0x7fffffff,_0x5d0c43[_0x44600a('0x130')]=function(){var _0x11ff22=_0x44600a;try{var _0x43a187=new Uint8Array(0x1);return _0x43a187[_0x11ff22('0xc15')]={'__proto__':Uint8Array['prototype'],'foo':function(){return 0x2a;}},0x2a===_0x43a187['foo']();}catch(_0x2fcd5b){return!0x1;}}(),_0x5d0c43[_0x44600a('0x130')]||_0x44600a('0x396')==typeof console||'function'!=typeof console[_0x44600a('0x855')]||console[_0x44600a('0x855')](_0x44600a('0x74e')),Object[_0x44600a('0x2cd')](_0x5d0c43['prototype'],_0x44600a('0xd14'),{'enumerable':!0x0,'get':function(){var _0x19b555=_0x44600a;if(_0x5d0c43[_0x19b555('0x628')](this))return this[_0x19b555('0xa53')];}}),Object[_0x44600a('0x2cd')](_0x5d0c43[_0x44600a('0x3ec')],'offset',{'enumerable':!0x0,'get':function(){var _0x470b46=_0x44600a;if(_0x5d0c43[_0x470b46('0x628')](this))return this[_0x470b46('0x6c8')];}}),_0x44600a('0x396')!=typeof Symbol&&null!=Symbol[_0x44600a('0x31e')]&&_0x5d0c43[Symbol[_0x44600a('0x31e')]]===_0x5d0c43&&Object[_0x44600a('0x2cd')](_0x5d0c43,Symbol[_0x44600a('0x31e')],{'value':null,'configurable':!0x0,'enumerable':!0x1,'writable':!0x1}),_0x5d0c43['poolSize']=0x2000,_0x5d0c43[_0x44600a('0x868')]=function(_0x2dbde3,_0x5d65e6,_0x4f1a83){return _0x47d62c(_0x2dbde3,_0x5d65e6,_0x4f1a83);},_0x5d0c43['prototype'][_0x44600a('0xc15')]=Uint8Array[_0x44600a('0x3ec')],_0x5d0c43[_0x44600a('0xc15')]=Uint8Array,_0x5d0c43[_0x44600a('0xdc4')]=function(_0x2528eb,_0x514d98,_0x455305){return function(_0x575717,_0x11f0a9,_0x4a0ecf){var _0x49a10f=_0x3e44;return _0x4c218f(_0x575717),_0x575717<=0x0?_0x78a356(_0x575717):void 0x0!==_0x11f0a9?_0x49a10f('0x4ba')==typeof _0x4a0ecf?_0x78a356(_0x575717)[_0x49a10f('0x609')](_0x11f0a9,_0x4a0ecf):_0x78a356(_0x575717)[_0x49a10f('0x609')](_0x11f0a9):_0x78a356(_0x575717);}(_0x2528eb,_0x514d98,_0x455305);},_0x5d0c43[_0x44600a('0x431')]=function(_0x483b0a){return _0x39bdc2(_0x483b0a);},_0x5d0c43[_0x44600a('0x704')]=function(_0x4527fe){return _0x39bdc2(_0x4527fe);},_0x5d0c43[_0x44600a('0x628')]=function(_0x1dd9ee){var _0x3f8506=_0x44600a;return null!=_0x1dd9ee&&!0x0===_0x1dd9ee['_isBuffer']&&_0x1dd9ee!==_0x5d0c43[_0x3f8506('0x3ec')];},_0x5d0c43[_0x44600a('0x9a')]=function(_0x3af38d,_0x242e71){var _0x114937=_0x44600a;if(_0x374deb(_0x3af38d,Uint8Array)&&(_0x3af38d=_0x5d0c43[_0x114937('0x868')](_0x3af38d,_0x3af38d[_0x114937('0x483')],_0x3af38d['byteLength'])),_0x374deb(_0x242e71,Uint8Array)&&(_0x242e71=_0x5d0c43[_0x114937('0x868')](_0x242e71,_0x242e71[_0x114937('0x483')],_0x242e71[_0x114937('0x738')])),!_0x5d0c43[_0x114937('0x628')](_0x3af38d)||!_0x5d0c43[_0x114937('0x628')](_0x242e71))throw new TypeError(_0x114937('0x6d2'));if(_0x3af38d===_0x242e71)return 0x0;for(var _0x35ede9=_0x3af38d['length'],_0x5d318d=_0x242e71['length'],_0x59f979=0x0,_0x11d12e=Math[_0x114937('0x4d7')](_0x35ede9,_0x5d318d);_0x59f979<_0x11d12e;++_0x59f979)if(_0x3af38d[_0x59f979]!==_0x242e71[_0x59f979]){_0x35ede9=_0x3af38d[_0x59f979],_0x5d318d=_0x242e71[_0x59f979];break;}return _0x35ede9<_0x5d318d?-0x1:_0x5d318d<_0x35ede9?0x1:0x0;},_0x5d0c43[_0x44600a('0x9b5')]=function(_0x33bad4){var _0x48df3b=_0x44600a;switch(String(_0x33bad4)[_0x48df3b('0x5d')]()){case'hex':case'utf8':case'utf-8':case _0x48df3b('0xa96'):case _0x48df3b('0x524'):case _0x48df3b('0x8e'):case'base64':case _0x48df3b('0x149'):case _0x48df3b('0x2c8'):case _0x48df3b('0x804'):case _0x48df3b('0x38c'):return!0x0;default:return!0x1;}},_0x5d0c43[_0x44600a('0x49e')]=function(_0x212e6f,_0x3be475){var _0x1f65e7=_0x44600a;if(!Array['isArray'](_0x212e6f))throw new TypeError(_0x1f65e7('0x818'));if(0x0===_0x212e6f[_0x1f65e7('0x1d1')])return _0x5d0c43[_0x1f65e7('0xdc4')](0x0);var _0x27bb6f;if(void 0x0===_0x3be475)for(_0x3be475=0x0,_0x27bb6f=0x0;_0x27bb6f<_0x212e6f['length'];++_0x27bb6f)_0x3be475+=_0x212e6f[_0x27bb6f][_0x1f65e7('0x1d1')];var _0x17f57c=_0x5d0c43[_0x1f65e7('0x431')](_0x3be475),_0x1b8aae=0x0;for(_0x27bb6f=0x0;_0x27bb6f<_0x212e6f[_0x1f65e7('0x1d1')];++_0x27bb6f){var _0x3e2cdd=_0x212e6f[_0x27bb6f];if(_0x374deb(_0x3e2cdd,Uint8Array)&&(_0x3e2cdd=_0x5d0c43[_0x1f65e7('0x868')](_0x3e2cdd)),!_0x5d0c43[_0x1f65e7('0x628')](_0x3e2cdd))throw new TypeError(_0x1f65e7('0x818'));_0x3e2cdd[_0x1f65e7('0xcaf')](_0x17f57c,_0x1b8aae),_0x1b8aae+=_0x3e2cdd[_0x1f65e7('0x1d1')];}return _0x17f57c;},_0x5d0c43[_0x44600a('0x738')]=_0x44d288,_0x5d0c43[_0x44600a('0x3ec')][_0x44600a('0x85e')]=!0x0,_0x5d0c43['prototype'][_0x44600a('0xca2')]=function(){var _0x3ae232=_0x44600a,_0x5aa547=this[_0x3ae232('0x1d1')];if(_0x5aa547%0x2!=0x0)throw new RangeError(_0x3ae232('0xd07'));for(var _0x9b7e17=0x0;_0x9b7e17<_0x5aa547;_0x9b7e17+=0x2)_0x34b22f(this,_0x9b7e17,_0x9b7e17+0x1);return this;},_0x5d0c43['prototype'][_0x44600a('0x70e')]=function(){var _0x2a9223=this['length'];if(_0x2a9223%0x4!=0x0)throw new RangeError('Buffer\x20size\x20must\x20be\x20a\x20multiple\x20of\x2032-bits');for(var _0x4ac1f5=0x0;_0x4ac1f5<_0x2a9223;_0x4ac1f5+=0x4)_0x34b22f(this,_0x4ac1f5,_0x4ac1f5+0x3),_0x34b22f(this,_0x4ac1f5+0x1,_0x4ac1f5+0x2);return this;},_0x5d0c43[_0x44600a('0x3ec')][_0x44600a('0xfe')]=function(){var _0x6e41f6=_0x44600a,_0x3ba029=this[_0x6e41f6('0x1d1')];if(_0x3ba029%0x8!=0x0)throw new RangeError(_0x6e41f6('0x571'));for(var _0x48c2b0=0x0;_0x48c2b0<_0x3ba029;_0x48c2b0+=0x8)_0x34b22f(this,_0x48c2b0,_0x48c2b0+0x7),_0x34b22f(this,_0x48c2b0+0x1,_0x48c2b0+0x6),_0x34b22f(this,_0x48c2b0+0x2,_0x48c2b0+0x5),_0x34b22f(this,_0x48c2b0+0x3,_0x48c2b0+0x4);return this;},_0x5d0c43[_0x44600a('0x3ec')][_0x44600a('0x8dc')]=function(){var _0x1c8056=_0x44600a,_0x2d256c=this[_0x1c8056('0x1d1')];return 0x0===_0x2d256c?'':0x0===arguments[_0x1c8056('0x1d1')]?_0x57acb4(this,0x0,_0x2d256c):_0x23063e[_0x1c8056('0x7da')](this,arguments);},_0x5d0c43[_0x44600a('0x3ec')]['toLocaleString']=_0x5d0c43['prototype'][_0x44600a('0x8dc')],_0x5d0c43[_0x44600a('0x3ec')]['equals']=function(_0x1ff4b1){var _0x5e7913=_0x44600a;if(!_0x5d0c43[_0x5e7913('0x628')](_0x1ff4b1))throw new TypeError('Argument\x20must\x20be\x20a\x20Buffer');return this===_0x1ff4b1||0x0===_0x5d0c43[_0x5e7913('0x9a')](this,_0x1ff4b1);},_0x5d0c43[_0x44600a('0x3ec')][_0x44600a('0xc65')]=function(){var _0x59ede2=_0x44600a,_0x38aa22='',_0x4d8757=_0x507123[_0x59ede2('0x5e2')];return _0x38aa22=this['toString']('hex',0x0,_0x4d8757)[_0x59ede2('0x95e')](/(.{2})/g,'$1\x20')[_0x59ede2('0x773')](),this[_0x59ede2('0x1d1')]>_0x4d8757&&(_0x38aa22+='\x20...\x20'),_0x59ede2('0x6af')+_0x38aa22+'>';},_0x5d0c43[_0x44600a('0x3ec')][_0x44600a('0x9a')]=function(_0x525043,_0xf94346,_0x2c8548,_0x34351d,_0x4f99e8){var _0x14cd18=_0x44600a;if(_0x374deb(_0x525043,Uint8Array)&&(_0x525043=_0x5d0c43[_0x14cd18('0x868')](_0x525043,_0x525043[_0x14cd18('0x483')],_0x525043[_0x14cd18('0x738')])),!_0x5d0c43[_0x14cd18('0x628')](_0x525043))throw new TypeError(_0x14cd18('0x529')+typeof _0x525043);if(void 0x0===_0xf94346&&(_0xf94346=0x0),void 0x0===_0x2c8548&&(_0x2c8548=_0x525043?_0x525043[_0x14cd18('0x1d1')]:0x0),void 0x0===_0x34351d&&(_0x34351d=0x0),void 0x0===_0x4f99e8&&(_0x4f99e8=this[_0x14cd18('0x1d1')]),_0xf94346<0x0||_0x2c8548>_0x525043[_0x14cd18('0x1d1')]||_0x34351d<0x0||_0x4f99e8>this[_0x14cd18('0x1d1')])throw new RangeError(_0x14cd18('0x7d4'));if(_0x34351d>=_0x4f99e8&&_0xf94346>=_0x2c8548)return 0x0;if(_0x34351d>=_0x4f99e8)return-0x1;if(_0xf94346>=_0x2c8548)return 0x1;if(this===_0x525043)return 0x0;for(var _0x287478=(_0x4f99e8>>>=0x0)-(_0x34351d>>>=0x0),_0x160ee6=(_0x2c8548>>>=0x0)-(_0xf94346>>>=0x0),_0x4e1485=Math['min'](_0x287478,_0x160ee6),_0x20912e=this['slice'](_0x34351d,_0x4f99e8),_0x5a65a9=_0x525043[_0x14cd18('0x63a')](_0xf94346,_0x2c8548),_0x56d081=0x0;_0x56d081<_0x4e1485;++_0x56d081)if(_0x20912e[_0x56d081]!==_0x5a65a9[_0x56d081]){_0x287478=_0x20912e[_0x56d081],_0x160ee6=_0x5a65a9[_0x56d081];break;}return _0x287478<_0x160ee6?-0x1:_0x160ee6<_0x287478?0x1:0x0;},_0x5d0c43[_0x44600a('0x3ec')]['includes']=function(_0x3af748,_0x19a0c7,_0x442dbc){var _0x380385=_0x44600a;return-0x1!==this[_0x380385('0x857')](_0x3af748,_0x19a0c7,_0x442dbc);},_0x5d0c43[_0x44600a('0x3ec')][_0x44600a('0x857')]=function(_0x42c6cf,_0x535362,_0x326573){return _0x28e67d(this,_0x42c6cf,_0x535362,_0x326573,!0x0);},_0x5d0c43['prototype'][_0x44600a('0x320')]=function(_0x50454c,_0x3ccb3c,_0x5c151c){return _0x28e67d(this,_0x50454c,_0x3ccb3c,_0x5c151c,!0x1);},_0x5d0c43[_0x44600a('0x3ec')][_0x44600a('0x72')]=function(_0x3663aa,_0x1474b0,_0x5c7f46,_0x36ab8f){var _0x4a0502=_0x44600a;if(void 0x0===_0x1474b0)_0x36ab8f=_0x4a0502('0x3fc'),_0x5c7f46=this[_0x4a0502('0x1d1')],_0x1474b0=0x0;else{if(void 0x0===_0x5c7f46&&_0x4a0502('0x4ba')==typeof _0x1474b0)_0x36ab8f=_0x1474b0,_0x5c7f46=this[_0x4a0502('0x1d1')],_0x1474b0=0x0;else{if(!isFinite(_0x1474b0))throw new Error(_0x4a0502('0x25a'));_0x1474b0>>>=0x0,isFinite(_0x5c7f46)?(_0x5c7f46>>>=0x0,void 0x0===_0x36ab8f&&(_0x36ab8f=_0x4a0502('0x3fc'))):(_0x36ab8f=_0x5c7f46,_0x5c7f46=void 0x0);}}var _0x59f060=this['length']-_0x1474b0;if((void 0x0===_0x5c7f46||_0x5c7f46>_0x59f060)&&(_0x5c7f46=_0x59f060),_0x3663aa[_0x4a0502('0x1d1')]>0x0&&(_0x5c7f46<0x0||_0x1474b0<0x0)||_0x1474b0>this[_0x4a0502('0x1d1')])throw new RangeError(_0x4a0502('0x9fd'));_0x36ab8f||(_0x36ab8f='utf8');for(var _0x24c3e1=!0x1;;)switch(_0x36ab8f){case'hex':return _0x4ea96c(this,_0x3663aa,_0x1474b0,_0x5c7f46);case'utf8':case'utf-8':return _0x1fc8d4(this,_0x3663aa,_0x1474b0,_0x5c7f46);case'ascii':return _0xf32c6c(this,_0x3663aa,_0x1474b0,_0x5c7f46);case'latin1':case _0x4a0502('0x8e'):return _0x1ee774(this,_0x3663aa,_0x1474b0,_0x5c7f46);case _0x4a0502('0x366'):return _0x1ce139(this,_0x3663aa,_0x1474b0,_0x5c7f46);case _0x4a0502('0x149'):case _0x4a0502('0x2c8'):case'utf16le':case _0x4a0502('0x38c'):return _0x300fe9(this,_0x3663aa,_0x1474b0,_0x5c7f46);default:if(_0x24c3e1)throw new TypeError(_0x4a0502('0xcc9')+_0x36ab8f);_0x36ab8f=(''+_0x36ab8f)[_0x4a0502('0x5d')](),_0x24c3e1=!0x0;}},_0x5d0c43[_0x44600a('0x3ec')][_0x44600a('0xb30')]=function(){var _0x4ba13d=_0x44600a;return{'type':_0x4ba13d('0x825'),'data':Array['prototype'][_0x4ba13d('0x63a')][_0x4ba13d('0x928')](this[_0x4ba13d('0xc3d')]||this,0x0)};};function _0xb00dd6(_0x1ca229,_0x20249b,_0x48bceb){var _0x122428=_0x44600a,_0x48b747='';_0x48bceb=Math[_0x122428('0x4d7')](_0x1ca229[_0x122428('0x1d1')],_0x48bceb);for(var _0x1374c3=_0x20249b;_0x1374c3<_0x48bceb;++_0x1374c3)_0x48b747+=String[_0x122428('0x9d2')](0x7f&_0x1ca229[_0x1374c3]);return _0x48b747;}function _0xce53e7(_0x185f92,_0x41a843,_0x5ef6d9){var _0x10f25a=_0x44600a,_0x4f75e8='';_0x5ef6d9=Math['min'](_0x185f92[_0x10f25a('0x1d1')],_0x5ef6d9);for(var _0x3b8f51=_0x41a843;_0x3b8f51<_0x5ef6d9;++_0x3b8f51)_0x4f75e8+=String[_0x10f25a('0x9d2')](_0x185f92[_0x3b8f51]);return _0x4f75e8;}function _0x56da0a(_0x17d854,_0x365cd5,_0x413a22){var _0x35168e=_0x44600a,_0x4be0e8=_0x17d854[_0x35168e('0x1d1')];(!_0x365cd5||_0x365cd5<0x0)&&(_0x365cd5=0x0),(!_0x413a22||_0x413a22<0x0||_0x413a22>_0x4be0e8)&&(_0x413a22=_0x4be0e8);for(var _0x9811a1='',_0x4ded8f=_0x365cd5;_0x4ded8f<_0x413a22;++_0x4ded8f)_0x9811a1+=_0x285e2b(_0x17d854[_0x4ded8f]);return _0x9811a1;}function _0x31b51a(_0x4710ea,_0xdcb1e9,_0xa1b62e){var _0x173bff=_0x44600a;for(var _0x32e586=_0x4710ea[_0x173bff('0x63a')](_0xdcb1e9,_0xa1b62e),_0x4865f4='',_0x172463=0x0;_0x172463<_0x32e586['length'];_0x172463+=0x2)_0x4865f4+=String[_0x173bff('0x9d2')](_0x32e586[_0x172463]+0x100*_0x32e586[_0x172463+0x1]);return _0x4865f4;}function _0x4041d6(_0x109b7d,_0x21d319,_0xaa063b){var _0x23f4da=_0x44600a;if(_0x109b7d%0x1!=0x0||_0x109b7d<0x0)throw new RangeError(_0x23f4da('0x3f5'));if(_0x109b7d+_0x21d319>_0xaa063b)throw new RangeError('Trying\x20to\x20access\x20beyond\x20buffer\x20length');}function _0x1e8255(_0x2544c2,_0x5045c7,_0x18da75,_0x4623f2,_0x2b37a8,_0x1a5f3b){var _0xe543d8=_0x44600a;if(!_0x5d0c43[_0xe543d8('0x628')](_0x2544c2))throw new TypeError(_0xe543d8('0x331'));if(_0x5045c7>_0x2b37a8||_0x5045c7<_0x1a5f3b)throw new RangeError(_0xe543d8('0x342'));if(_0x18da75+_0x4623f2>_0x2544c2[_0xe543d8('0x1d1')])throw new RangeError(_0xe543d8('0x7e'));}function _0x1285bc(_0xfbf4a1,_0xd41186,_0x386f83,_0x583e66,_0x36ab85,_0x571eea){var _0x3edaad=_0x44600a;if(_0x386f83+_0x583e66>_0xfbf4a1[_0x3edaad('0x1d1')])throw new RangeError(_0x3edaad('0x7e'));if(_0x386f83<0x0)throw new RangeError(_0x3edaad('0x7e'));}function _0x2a325b(_0x413e52,_0x47cb37,_0x66a90,_0x19156d,_0x3ee5cd){var _0xdecf23=_0x44600a;return _0x47cb37=+_0x47cb37,_0x66a90>>>=0x0,_0x3ee5cd||_0x1285bc(_0x413e52,0x0,_0x66a90,0x4),_0x2d9879[_0xdecf23('0x72')](_0x413e52,_0x47cb37,_0x66a90,_0x19156d,0x17,0x4),_0x66a90+0x4;}function _0x2425c1(_0x405dd5,_0x289bc0,_0x22a44a,_0x3b802b,_0x321076){var _0x2d7fba=_0x44600a;return _0x289bc0=+_0x289bc0,_0x22a44a>>>=0x0,_0x321076||_0x1285bc(_0x405dd5,0x0,_0x22a44a,0x8),_0x2d9879[_0x2d7fba('0x72')](_0x405dd5,_0x289bc0,_0x22a44a,_0x3b802b,0x34,0x8),_0x22a44a+0x8;}_0x5d0c43[_0x44600a('0x3ec')]['slice']=function(_0x4be456,_0x4a6f74){var _0x3cc474=_0x44600a,_0x478bb2=this[_0x3cc474('0x1d1')];(_0x4be456=~~_0x4be456)<0x0?(_0x4be456+=_0x478bb2)<0x0&&(_0x4be456=0x0):_0x4be456>_0x478bb2&&(_0x4be456=_0x478bb2),(_0x4a6f74=void 0x0===_0x4a6f74?_0x478bb2:~~_0x4a6f74)<0x0?(_0x4a6f74+=_0x478bb2)<0x0&&(_0x4a6f74=0x0):_0x4a6f74>_0x478bb2&&(_0x4a6f74=_0x478bb2),_0x4a6f74<_0x4be456&&(_0x4a6f74=_0x4be456);var _0x38724c=this[_0x3cc474('0xc1f')](_0x4be456,_0x4a6f74);return _0x38724c['__proto__']=_0x5d0c43[_0x3cc474('0x3ec')],_0x38724c;},_0x5d0c43[_0x44600a('0x3ec')]['readUIntLE']=function(_0x154f2d,_0x1413d0,_0x955f08){_0x154f2d>>>=0x0,_0x1413d0>>>=0x0,_0x955f08||_0x4041d6(_0x154f2d,_0x1413d0,this['length']);for(var _0x37a3e7=this[_0x154f2d],_0x49d757=0x1,_0x242bc0=0x0;++_0x242bc0<_0x1413d0&&(_0x49d757*=0x100);)_0x37a3e7+=this[_0x154f2d+_0x242bc0]*_0x49d757;return _0x37a3e7;},_0x5d0c43[_0x44600a('0x3ec')]['readUIntBE']=function(_0x2c0c85,_0x48d617,_0x4d9a40){var _0x599cc2=_0x44600a;_0x2c0c85>>>=0x0,_0x48d617>>>=0x0,_0x4d9a40||_0x4041d6(_0x2c0c85,_0x48d617,this[_0x599cc2('0x1d1')]);for(var _0x4e267c=this[_0x2c0c85+--_0x48d617],_0x554ac6=0x1;_0x48d617>0x0&&(_0x554ac6*=0x100);)_0x4e267c+=this[_0x2c0c85+--_0x48d617]*_0x554ac6;return _0x4e267c;},_0x5d0c43['prototype'][_0x44600a('0x548')]=function(_0x1b74e8,_0x242992){return _0x1b74e8>>>=0x0,_0x242992||_0x4041d6(_0x1b74e8,0x1,this['length']),this[_0x1b74e8];},_0x5d0c43[_0x44600a('0x3ec')][_0x44600a('0x25c')]=function(_0x3c9370,_0x27054f){var _0x1ad2d1=_0x44600a;return _0x3c9370>>>=0x0,_0x27054f||_0x4041d6(_0x3c9370,0x2,this[_0x1ad2d1('0x1d1')]),this[_0x3c9370]|this[_0x3c9370+0x1]<<0x8;},_0x5d0c43['prototype']['readUInt16BE']=function(_0x1ae02b,_0x19dbd2){var _0x5c5060=_0x44600a;return _0x1ae02b>>>=0x0,_0x19dbd2||_0x4041d6(_0x1ae02b,0x2,this[_0x5c5060('0x1d1')]),this[_0x1ae02b]<<0x8|this[_0x1ae02b+0x1];},_0x5d0c43[_0x44600a('0x3ec')][_0x44600a('0x43')]=function(_0x5684a7,_0x9c5003){var _0xce482=_0x44600a;return _0x5684a7>>>=0x0,_0x9c5003||_0x4041d6(_0x5684a7,0x4,this[_0xce482('0x1d1')]),(this[_0x5684a7]|this[_0x5684a7+0x1]<<0x8|this[_0x5684a7+0x2]<<0x10)+0x1000000*this[_0x5684a7+0x3];},_0x5d0c43[_0x44600a('0x3ec')][_0x44600a('0xa5f')]=function(_0x24a442,_0x25be5f){return _0x24a442>>>=0x0,_0x25be5f||_0x4041d6(_0x24a442,0x4,this['length']),0x1000000*this[_0x24a442]+(this[_0x24a442+0x1]<<0x10|this[_0x24a442+0x2]<<0x8|this[_0x24a442+0x3]);},_0x5d0c43[_0x44600a('0x3ec')][_0x44600a('0xeb')]=function(_0x567443,_0x3ae26e,_0x479e39){var _0x1ed0e2=_0x44600a;_0x567443>>>=0x0,_0x3ae26e>>>=0x0,_0x479e39||_0x4041d6(_0x567443,_0x3ae26e,this['length']);for(var _0x32921d=this[_0x567443],_0x175f1a=0x1,_0x1a524c=0x0;++_0x1a524c<_0x3ae26e&&(_0x175f1a*=0x100);)_0x32921d+=this[_0x567443+_0x1a524c]*_0x175f1a;return _0x32921d>=(_0x175f1a*=0x80)&&(_0x32921d-=Math[_0x1ed0e2('0xc1')](0x2,0x8*_0x3ae26e)),_0x32921d;},_0x5d0c43[_0x44600a('0x3ec')][_0x44600a('0x20f')]=function(_0x88ef64,_0x2f8a46,_0x260d04){var _0x3b1496=_0x44600a;_0x88ef64>>>=0x0,_0x2f8a46>>>=0x0,_0x260d04||_0x4041d6(_0x88ef64,_0x2f8a46,this[_0x3b1496('0x1d1')]);for(var _0x388e5e=_0x2f8a46,_0x4010d0=0x1,_0x233e2e=this[_0x88ef64+--_0x388e5e];_0x388e5e>0x0&&(_0x4010d0*=0x100);)_0x233e2e+=this[_0x88ef64+--_0x388e5e]*_0x4010d0;return _0x233e2e>=(_0x4010d0*=0x80)&&(_0x233e2e-=Math[_0x3b1496('0xc1')](0x2,0x8*_0x2f8a46)),_0x233e2e;},_0x5d0c43[_0x44600a('0x3ec')][_0x44600a('0xad8')]=function(_0x4d6103,_0x2d23bc){return _0x4d6103>>>=0x0,_0x2d23bc||_0x4041d6(_0x4d6103,0x1,this['length']),0x80&this[_0x4d6103]?-0x1*(0xff-this[_0x4d6103]+0x1):this[_0x4d6103];},_0x5d0c43[_0x44600a('0x3ec')][_0x44600a('0x718')]=function(_0x259ae7,_0x165855){var _0x1184a0=_0x44600a;_0x259ae7>>>=0x0,_0x165855||_0x4041d6(_0x259ae7,0x2,this[_0x1184a0('0x1d1')]);var _0x9fe3dc=this[_0x259ae7]|this[_0x259ae7+0x1]<<0x8;return 0x8000&_0x9fe3dc?0xffff0000|_0x9fe3dc:_0x9fe3dc;},_0x5d0c43[_0x44600a('0x3ec')]['readInt16BE']=function(_0xc3a9e1,_0x45d099){var _0x17ed69=_0x44600a;_0xc3a9e1>>>=0x0,_0x45d099||_0x4041d6(_0xc3a9e1,0x2,this[_0x17ed69('0x1d1')]);var _0x4ebd70=this[_0xc3a9e1+0x1]|this[_0xc3a9e1]<<0x8;return 0x8000&_0x4ebd70?0xffff0000|_0x4ebd70:_0x4ebd70;},_0x5d0c43[_0x44600a('0x3ec')]['readInt32LE']=function(_0x224ecf,_0x27f8f9){var _0x5e915f=_0x44600a;return _0x224ecf>>>=0x0,_0x27f8f9||_0x4041d6(_0x224ecf,0x4,this[_0x5e915f('0x1d1')]),this[_0x224ecf]|this[_0x224ecf+0x1]<<0x8|this[_0x224ecf+0x2]<<0x10|this[_0x224ecf+0x3]<<0x18;},_0x5d0c43['prototype'][_0x44600a('0x1fd')]=function(_0x176bb0,_0x308869){var _0x43e522=_0x44600a;return _0x176bb0>>>=0x0,_0x308869||_0x4041d6(_0x176bb0,0x4,this[_0x43e522('0x1d1')]),this[_0x176bb0]<<0x18|this[_0x176bb0+0x1]<<0x10|this[_0x176bb0+0x2]<<0x8|this[_0x176bb0+0x3];},_0x5d0c43[_0x44600a('0x3ec')][_0x44600a('0xb14')]=function(_0x229e18,_0x53bd4f){var _0x435336=_0x44600a;return _0x229e18>>>=0x0,_0x53bd4f||_0x4041d6(_0x229e18,0x4,this['length']),_0x2d9879[_0x435336('0xa82')](this,_0x229e18,!0x0,0x17,0x4);},_0x5d0c43[_0x44600a('0x3ec')][_0x44600a('0x7d1')]=function(_0x48a411,_0x4e98d5){var _0x999cca=_0x44600a;return _0x48a411>>>=0x0,_0x4e98d5||_0x4041d6(_0x48a411,0x4,this[_0x999cca('0x1d1')]),_0x2d9879[_0x999cca('0xa82')](this,_0x48a411,!0x1,0x17,0x4);},_0x5d0c43[_0x44600a('0x3ec')][_0x44600a('0x55e')]=function(_0x23c63c,_0x1be91c){return _0x23c63c>>>=0x0,_0x1be91c||_0x4041d6(_0x23c63c,0x8,this['length']),_0x2d9879['read'](this,_0x23c63c,!0x0,0x34,0x8);},_0x5d0c43[_0x44600a('0x3ec')][_0x44600a('0xa42')]=function(_0x3af78a,_0x2d32e3){var _0x4123f2=_0x44600a;return _0x3af78a>>>=0x0,_0x2d32e3||_0x4041d6(_0x3af78a,0x8,this[_0x4123f2('0x1d1')]),_0x2d9879[_0x4123f2('0xa82')](this,_0x3af78a,!0x1,0x34,0x8);},_0x5d0c43[_0x44600a('0x3ec')][_0x44600a('0x38d')]=function(_0x2df263,_0x46f4e9,_0x55367a,_0x195e15){var _0x31f466=_0x44600a;(_0x2df263=+_0x2df263,_0x46f4e9>>>=0x0,_0x55367a>>>=0x0,_0x195e15)||_0x1e8255(this,_0x2df263,_0x46f4e9,_0x55367a,Math[_0x31f466('0xc1')](0x2,0x8*_0x55367a)-0x1,0x0);var _0x20432f=0x1,_0x4d2be2=0x0;for(this[_0x46f4e9]=0xff&_0x2df263;++_0x4d2be2<_0x55367a&&(_0x20432f*=0x100);)this[_0x46f4e9+_0x4d2be2]=_0x2df263/_0x20432f&0xff;return _0x46f4e9+_0x55367a;},_0x5d0c43[_0x44600a('0x3ec')][_0x44600a('0x54f')]=function(_0x367214,_0x5f123d,_0x50743d,_0x4c3bb9){var _0x163163=_0x44600a;(_0x367214=+_0x367214,_0x5f123d>>>=0x0,_0x50743d>>>=0x0,_0x4c3bb9)||_0x1e8255(this,_0x367214,_0x5f123d,_0x50743d,Math[_0x163163('0xc1')](0x2,0x8*_0x50743d)-0x1,0x0);var _0x5c4241=_0x50743d-0x1,_0x5e6da7=0x1;for(this[_0x5f123d+_0x5c4241]=0xff&_0x367214;--_0x5c4241>=0x0&&(_0x5e6da7*=0x100);)this[_0x5f123d+_0x5c4241]=_0x367214/_0x5e6da7&0xff;return _0x5f123d+_0x50743d;},_0x5d0c43[_0x44600a('0x3ec')][_0x44600a('0xd27')]=function(_0x2cb493,_0xded491,_0x1ecb6d){return _0x2cb493=+_0x2cb493,_0xded491>>>=0x0,_0x1ecb6d||_0x1e8255(this,_0x2cb493,_0xded491,0x1,0xff,0x0),this[_0xded491]=0xff&_0x2cb493,_0xded491+0x1;},_0x5d0c43[_0x44600a('0x3ec')][_0x44600a('0xceb')]=function(_0x3e0f03,_0x5b5136,_0x201aa8){return _0x3e0f03=+_0x3e0f03,_0x5b5136>>>=0x0,_0x201aa8||_0x1e8255(this,_0x3e0f03,_0x5b5136,0x2,0xffff,0x0),this[_0x5b5136]=0xff&_0x3e0f03,this[_0x5b5136+0x1]=_0x3e0f03>>>0x8,_0x5b5136+0x2;},_0x5d0c43['prototype']['writeUInt16BE']=function(_0x2ca932,_0x278a8e,_0x151828){return _0x2ca932=+_0x2ca932,_0x278a8e>>>=0x0,_0x151828||_0x1e8255(this,_0x2ca932,_0x278a8e,0x2,0xffff,0x0),this[_0x278a8e]=_0x2ca932>>>0x8,this[_0x278a8e+0x1]=0xff&_0x2ca932,_0x278a8e+0x2;},_0x5d0c43[_0x44600a('0x3ec')]['writeUInt32LE']=function(_0x24d8f4,_0x336245,_0x4de0bf){return _0x24d8f4=+_0x24d8f4,_0x336245>>>=0x0,_0x4de0bf||_0x1e8255(this,_0x24d8f4,_0x336245,0x4,0xffffffff,0x0),this[_0x336245+0x3]=_0x24d8f4>>>0x18,this[_0x336245+0x2]=_0x24d8f4>>>0x10,this[_0x336245+0x1]=_0x24d8f4>>>0x8,this[_0x336245]=0xff&_0x24d8f4,_0x336245+0x4;},_0x5d0c43['prototype'][_0x44600a('0x95d')]=function(_0x307600,_0x15b2fb,_0x42b7a2){return _0x307600=+_0x307600,_0x15b2fb>>>=0x0,_0x42b7a2||_0x1e8255(this,_0x307600,_0x15b2fb,0x4,0xffffffff,0x0),this[_0x15b2fb]=_0x307600>>>0x18,this[_0x15b2fb+0x1]=_0x307600>>>0x10,this[_0x15b2fb+0x2]=_0x307600>>>0x8,this[_0x15b2fb+0x3]=0xff&_0x307600,_0x15b2fb+0x4;},_0x5d0c43[_0x44600a('0x3ec')]['writeIntLE']=function(_0x398776,_0x5cd518,_0x1ed74c,_0x5bcae9){var _0x58b601=_0x44600a;if(_0x398776=+_0x398776,_0x5cd518>>>=0x0,!_0x5bcae9){var _0x14c11e=Math[_0x58b601('0xc1')](0x2,0x8*_0x1ed74c-0x1);_0x1e8255(this,_0x398776,_0x5cd518,_0x1ed74c,_0x14c11e-0x1,-_0x14c11e);}var _0x365960=0x0,_0x45a0be=0x1,_0x3b6f3a=0x0;for(this[_0x5cd518]=0xff&_0x398776;++_0x365960<_0x1ed74c&&(_0x45a0be*=0x100);)_0x398776<0x0&&0x0===_0x3b6f3a&&0x0!==this[_0x5cd518+_0x365960-0x1]&&(_0x3b6f3a=0x1),this[_0x5cd518+_0x365960]=(_0x398776/_0x45a0be>>0x0)-_0x3b6f3a&0xff;return _0x5cd518+_0x1ed74c;},_0x5d0c43[_0x44600a('0x3ec')][_0x44600a('0x5b8')]=function(_0x91a4a1,_0x421b12,_0x3ab095,_0x231dfb){var _0xacb4bb=_0x44600a;if(_0x91a4a1=+_0x91a4a1,_0x421b12>>>=0x0,!_0x231dfb){var _0x5b0adf=Math[_0xacb4bb('0xc1')](0x2,0x8*_0x3ab095-0x1);_0x1e8255(this,_0x91a4a1,_0x421b12,_0x3ab095,_0x5b0adf-0x1,-_0x5b0adf);}var _0x3b4da9=_0x3ab095-0x1,_0x2abe1c=0x1,_0x200ea3=0x0;for(this[_0x421b12+_0x3b4da9]=0xff&_0x91a4a1;--_0x3b4da9>=0x0&&(_0x2abe1c*=0x100);)_0x91a4a1<0x0&&0x0===_0x200ea3&&0x0!==this[_0x421b12+_0x3b4da9+0x1]&&(_0x200ea3=0x1),this[_0x421b12+_0x3b4da9]=(_0x91a4a1/_0x2abe1c>>0x0)-_0x200ea3&0xff;return _0x421b12+_0x3ab095;},_0x5d0c43[_0x44600a('0x3ec')][_0x44600a('0x4a')]=function(_0x299d2f,_0x3c4e07,_0x368142){return _0x299d2f=+_0x299d2f,_0x3c4e07>>>=0x0,_0x368142||_0x1e8255(this,_0x299d2f,_0x3c4e07,0x1,0x7f,-0x80),_0x299d2f<0x0&&(_0x299d2f=0xff+_0x299d2f+0x1),this[_0x3c4e07]=0xff&_0x299d2f,_0x3c4e07+0x1;},_0x5d0c43[_0x44600a('0x3ec')][_0x44600a('0x99b')]=function(_0xcb8ad8,_0x222e00,_0x442061){return _0xcb8ad8=+_0xcb8ad8,_0x222e00>>>=0x0,_0x442061||_0x1e8255(this,_0xcb8ad8,_0x222e00,0x2,0x7fff,-0x8000),this[_0x222e00]=0xff&_0xcb8ad8,this[_0x222e00+0x1]=_0xcb8ad8>>>0x8,_0x222e00+0x2;},_0x5d0c43[_0x44600a('0x3ec')][_0x44600a('0xaf7')]=function(_0x18a7c6,_0x15c6ef,_0x22eaac){return _0x18a7c6=+_0x18a7c6,_0x15c6ef>>>=0x0,_0x22eaac||_0x1e8255(this,_0x18a7c6,_0x15c6ef,0x2,0x7fff,-0x8000),this[_0x15c6ef]=_0x18a7c6>>>0x8,this[_0x15c6ef+0x1]=0xff&_0x18a7c6,_0x15c6ef+0x2;},_0x5d0c43[_0x44600a('0x3ec')][_0x44600a('0xbc5')]=function(_0xd008e1,_0x336ed6,_0x4cb46c){return _0xd008e1=+_0xd008e1,_0x336ed6>>>=0x0,_0x4cb46c||_0x1e8255(this,_0xd008e1,_0x336ed6,0x4,0x7fffffff,-0x80000000),this[_0x336ed6]=0xff&_0xd008e1,this[_0x336ed6+0x1]=_0xd008e1>>>0x8,this[_0x336ed6+0x2]=_0xd008e1>>>0x10,this[_0x336ed6+0x3]=_0xd008e1>>>0x18,_0x336ed6+0x4;},_0x5d0c43[_0x44600a('0x3ec')]['writeInt32BE']=function(_0x287e0b,_0x564ed3,_0x15d863){return _0x287e0b=+_0x287e0b,_0x564ed3>>>=0x0,_0x15d863||_0x1e8255(this,_0x287e0b,_0x564ed3,0x4,0x7fffffff,-0x80000000),_0x287e0b<0x0&&(_0x287e0b=0xffffffff+_0x287e0b+0x1),this[_0x564ed3]=_0x287e0b>>>0x18,this[_0x564ed3+0x1]=_0x287e0b>>>0x10,this[_0x564ed3+0x2]=_0x287e0b>>>0x8,this[_0x564ed3+0x3]=0xff&_0x287e0b,_0x564ed3+0x4;},_0x5d0c43[_0x44600a('0x3ec')]['writeFloatLE']=function(_0x14f97b,_0x4205a6,_0x41381c){return _0x2a325b(this,_0x14f97b,_0x4205a6,!0x0,_0x41381c);},_0x5d0c43[_0x44600a('0x3ec')]['writeFloatBE']=function(_0x179239,_0x3a0d97,_0x223a9d){return _0x2a325b(this,_0x179239,_0x3a0d97,!0x1,_0x223a9d);},_0x5d0c43[_0x44600a('0x3ec')][_0x44600a('0x6ed')]=function(_0x334cdd,_0xd86be8,_0x15721f){return _0x2425c1(this,_0x334cdd,_0xd86be8,!0x0,_0x15721f);},_0x5d0c43[_0x44600a('0x3ec')][_0x44600a('0x630')]=function(_0x132ee5,_0x24ddd2,_0xbd50c8){return _0x2425c1(this,_0x132ee5,_0x24ddd2,!0x1,_0xbd50c8);},_0x5d0c43[_0x44600a('0x3ec')][_0x44600a('0xcaf')]=function(_0x174606,_0x3cdac9,_0x418c06,_0xff8059){var _0x119e4b=_0x44600a;if(!_0x5d0c43[_0x119e4b('0x628')](_0x174606))throw new TypeError(_0x119e4b('0x59'));if(_0x418c06||(_0x418c06=0x0),_0xff8059||0x0===_0xff8059||(_0xff8059=this[_0x119e4b('0x1d1')]),_0x3cdac9>=_0x174606[_0x119e4b('0x1d1')]&&(_0x3cdac9=_0x174606[_0x119e4b('0x1d1')]),_0x3cdac9||(_0x3cdac9=0x0),_0xff8059>0x0&&_0xff8059<_0x418c06&&(_0xff8059=_0x418c06),_0xff8059===_0x418c06)return 0x0;if(0x0===_0x174606['length']||0x0===this[_0x119e4b('0x1d1')])return 0x0;if(_0x3cdac9<0x0)throw new RangeError('targetStart\x20out\x20of\x20bounds');if(_0x418c06<0x0||_0x418c06>=this[_0x119e4b('0x1d1')])throw new RangeError(_0x119e4b('0x7e'));if(_0xff8059<0x0)throw new RangeError(_0x119e4b('0xa9a'));_0xff8059>this[_0x119e4b('0x1d1')]&&(_0xff8059=this[_0x119e4b('0x1d1')]),_0x174606[_0x119e4b('0x1d1')]-_0x3cdac9<_0xff8059-_0x418c06&&(_0xff8059=_0x174606[_0x119e4b('0x1d1')]-_0x3cdac9+_0x418c06);var _0x311617=_0xff8059-_0x418c06;if(this===_0x174606&&_0x119e4b('0x67')==typeof Uint8Array[_0x119e4b('0x3ec')][_0x119e4b('0x84c')])this['copyWithin'](_0x3cdac9,_0x418c06,_0xff8059);else{if(this===_0x174606&&_0x418c06<_0x3cdac9&&_0x3cdac9<_0xff8059)for(var _0x4609c7=_0x311617-0x1;_0x4609c7>=0x0;--_0x4609c7)_0x174606[_0x4609c7+_0x3cdac9]=this[_0x4609c7+_0x418c06];else Uint8Array[_0x119e4b('0x3ec')][_0x119e4b('0x8ab')][_0x119e4b('0x928')](_0x174606,this[_0x119e4b('0xc1f')](_0x418c06,_0xff8059),_0x3cdac9);}return _0x311617;},_0x5d0c43[_0x44600a('0x3ec')][_0x44600a('0x609')]=function(_0x8ea135,_0xde8f87,_0x3634db,_0x348dbc){var _0x173f90=_0x44600a;if('string'==typeof _0x8ea135){if(_0x173f90('0x4ba')==typeof _0xde8f87?(_0x348dbc=_0xde8f87,_0xde8f87=0x0,_0x3634db=this['length']):_0x173f90('0x4ba')==typeof _0x3634db&&(_0x348dbc=_0x3634db,_0x3634db=this[_0x173f90('0x1d1')]),void 0x0!==_0x348dbc&&'string'!=typeof _0x348dbc)throw new TypeError(_0x173f90('0xae2'));if(_0x173f90('0x4ba')==typeof _0x348dbc&&!_0x5d0c43[_0x173f90('0x9b5')](_0x348dbc))throw new TypeError('Unknown\x20encoding:\x20'+_0x348dbc);if(0x1===_0x8ea135[_0x173f90('0x1d1')]){var _0x2a11e9=_0x8ea135[_0x173f90('0xd08')](0x0);(_0x173f90('0x3fc')===_0x348dbc&&_0x2a11e9<0x80||'latin1'===_0x348dbc)&&(_0x8ea135=_0x2a11e9);}}else _0x173f90('0x913')==typeof _0x8ea135&&(_0x8ea135&=0xff);if(_0xde8f87<0x0||this[_0x173f90('0x1d1')]<_0xde8f87||this[_0x173f90('0x1d1')]<_0x3634db)throw new RangeError(_0x173f90('0x6f0'));if(_0x3634db<=_0xde8f87)return this;var _0x176d0a;if(_0xde8f87>>>=0x0,_0x3634db=void 0x0===_0x3634db?this[_0x173f90('0x1d1')]:_0x3634db>>>0x0,_0x8ea135||(_0x8ea135=0x0),_0x173f90('0x913')==typeof _0x8ea135)for(_0x176d0a=_0xde8f87;_0x176d0a<_0x3634db;++_0x176d0a)this[_0x176d0a]=_0x8ea135;else{var _0x109a3a=_0x5d0c43[_0x173f90('0x628')](_0x8ea135)?_0x8ea135:_0x5d0c43['from'](_0x8ea135,_0x348dbc),_0x361614=_0x109a3a[_0x173f90('0x1d1')];if(0x0===_0x361614)throw new TypeError('The\x20value\x20\x22'+_0x8ea135+_0x173f90('0xae0'));for(_0x176d0a=0x0;_0x176d0a<_0x3634db-_0xde8f87;++_0x176d0a)this[_0x176d0a+_0xde8f87]=_0x109a3a[_0x176d0a%_0x361614];}return this;};var _0x55c5eb=/[^+/0-9A-Za-z-_]/g;function _0x285e2b(_0x27c06e){var _0x143c2e=_0x44600a;return _0x27c06e<0x10?'0'+_0x27c06e['toString'](0x10):_0x27c06e[_0x143c2e('0x8dc')](0x10);}function _0x218d2f(_0x56d5da,_0x49279e){var _0x1d3b38=_0x44600a,_0x366840;_0x49279e=_0x49279e||0x1/0x0;for(var _0x1c7960=_0x56d5da[_0x1d3b38('0x1d1')],_0x199ce4=null,_0x468476=[],_0x332a90=0x0;_0x332a90<_0x1c7960;++_0x332a90){if((_0x366840=_0x56d5da[_0x1d3b38('0xd08')](_0x332a90))>0xd7ff&&_0x366840<0xe000){if(!_0x199ce4){if(_0x366840>0xdbff){(_0x49279e-=0x3)>-0x1&&_0x468476[_0x1d3b38('0x8cd')](0xef,0xbf,0xbd);continue;}if(_0x332a90+0x1===_0x1c7960){(_0x49279e-=0x3)>-0x1&&_0x468476[_0x1d3b38('0x8cd')](0xef,0xbf,0xbd);continue;}_0x199ce4=_0x366840;continue;}if(_0x366840<0xdc00){(_0x49279e-=0x3)>-0x1&&_0x468476[_0x1d3b38('0x8cd')](0xef,0xbf,0xbd),_0x199ce4=_0x366840;continue;}_0x366840=0x10000+(_0x199ce4-0xd800<<0xa|_0x366840-0xdc00);}else _0x199ce4&&(_0x49279e-=0x3)>-0x1&&_0x468476['push'](0xef,0xbf,0xbd);if(_0x199ce4=null,_0x366840<0x80){if((_0x49279e-=0x1)<0x0)break;_0x468476['push'](_0x366840);}else{if(_0x366840<0x800){if((_0x49279e-=0x2)<0x0)break;_0x468476[_0x1d3b38('0x8cd')](_0x366840>>0x6|0xc0,0x3f&_0x366840|0x80);}else{if(_0x366840<0x10000){if((_0x49279e-=0x3)<0x0)break;_0x468476[_0x1d3b38('0x8cd')](_0x366840>>0xc|0xe0,_0x366840>>0x6&0x3f|0x80,0x3f&_0x366840|0x80);}else{if(!(_0x366840<0x110000))throw new Error(_0x1d3b38('0xa8b'));if((_0x49279e-=0x4)<0x0)break;_0x468476['push'](_0x366840>>0x12|0xf0,_0x366840>>0xc&0x3f|0x80,_0x366840>>0x6&0x3f|0x80,0x3f&_0x366840|0x80);}}}}return _0x468476;}function _0x21b988(_0x4ff8d5){var _0x515c4d=_0x44600a;return _0x14fe94[_0x515c4d('0x8e7')](function(_0xdf6541){var _0x3e51ad=_0x515c4d;if((_0xdf6541=(_0xdf6541=_0xdf6541[_0x3e51ad('0x5a0')]('=')[0x0])[_0x3e51ad('0x773')]()[_0x3e51ad('0x95e')](_0x55c5eb,''))['length']<0x2)return'';for(;_0xdf6541[_0x3e51ad('0x1d1')]%0x4!=0x0;)_0xdf6541+='=';return _0xdf6541;}(_0x4ff8d5));}function _0x4f07d9(_0x93441,_0x1902e2,_0x1910ed,_0x134f8a){var _0x3c01cb=_0x44600a;for(var _0x564cfa=0x0;_0x564cfa<_0x134f8a&&!(_0x564cfa+_0x1910ed>=_0x1902e2[_0x3c01cb('0x1d1')]||_0x564cfa>=_0x93441[_0x3c01cb('0x1d1')]);++_0x564cfa)_0x1902e2[_0x564cfa+_0x1910ed]=_0x93441[_0x564cfa];return _0x564cfa;}function _0x374deb(_0x2c182f,_0x697a5f){var _0x1de2e6=_0x44600a;return _0x2c182f instanceof _0x697a5f||null!=_0x2c182f&&null!=_0x2c182f[_0x1de2e6('0xbe8')]&&null!=_0x2c182f['constructor'][_0x1de2e6('0x9e')]&&_0x2c182f[_0x1de2e6('0xbe8')][_0x1de2e6('0x9e')]===_0x697a5f[_0x1de2e6('0x9e')];}function _0x18a959(_0x54e0dd){return _0x54e0dd!=_0x54e0dd;}}[_0x316651('0x928')](this,_0x3666fa(_0x316651('0xa53'))[_0x316651('0x825')]));},{'base64-js':0x1,'buffer':0x2,'ieee754':0x4}],0x3:[function(_0x1c2533,_0x1692d7,_0xe9c25c){'use strict';var _0x17d28d={'single_source_shortest_paths':function(_0x4ae858,_0x3825af,_0x250ecb){var _0x20e475=_0x3e44,_0x260204={},_0xb5e891={};_0xb5e891[_0x3825af]=0x0;var _0x48d1f1,_0x12f8a8,_0x4bf298,_0x25d159,_0x28e762,_0x11133b,_0x5f4484,_0x36492b=_0x17d28d[_0x20e475('0xd8e')][_0x20e475('0x9f4')]();for(_0x36492b[_0x20e475('0x8cd')](_0x3825af,0x0);!_0x36492b['empty']();)for(_0x4bf298 in(_0x12f8a8=(_0x48d1f1=_0x36492b[_0x20e475('0x2ca')]())[_0x20e475('0x9b6')],_0x25d159=_0x48d1f1[_0x20e475('0x44e')],_0x28e762=_0x4ae858[_0x12f8a8]||{}))_0x28e762[_0x20e475('0x106')](_0x4bf298)&&(_0x11133b=_0x25d159+_0x28e762[_0x4bf298],_0x5f4484=_0xb5e891[_0x4bf298],(void 0x0===_0xb5e891[_0x4bf298]||_0x5f4484>_0x11133b)&&(_0xb5e891[_0x4bf298]=_0x11133b,_0x36492b[_0x20e475('0x8cd')](_0x4bf298,_0x11133b),_0x260204[_0x4bf298]=_0x12f8a8));if(void 0x0!==_0x250ecb&&void 0x0===_0xb5e891[_0x250ecb]){var _0x46ba82=[_0x20e475('0x1e4'),_0x3825af,_0x20e475('0x75c'),_0x250ecb,'.'][_0x20e475('0x2ee')]('');throw new Error(_0x46ba82);}return _0x260204;},'extract_shortest_path_from_predecessor_list':function(_0x2fffe8,_0x42cb66){var _0x1d16da=_0x3e44;for(var _0x3bb86b=[],_0x2db35f=_0x42cb66;_0x2db35f;)_0x3bb86b[_0x1d16da('0x8cd')](_0x2db35f),_0x2fffe8[_0x2db35f],_0x2db35f=_0x2fffe8[_0x2db35f];return _0x3bb86b[_0x1d16da('0xc9a')](),_0x3bb86b;},'find_path':function(_0x42e7d8,_0xc51aee,_0x3721f5){var _0x4ec599=_0x3e44,_0x21ed33=_0x17d28d[_0x4ec599('0x52b')](_0x42e7d8,_0xc51aee,_0x3721f5);return _0x17d28d[_0x4ec599('0xc4a')](_0x21ed33,_0x3721f5);},'PriorityQueue':{'make':function(_0x523b34){var _0x583dd8=_0x3e44,_0x21b403,_0x5b6f4a=_0x17d28d[_0x583dd8('0xd8e')],_0x112136={};for(_0x21b403 in(_0x523b34=_0x523b34||{},_0x5b6f4a))_0x5b6f4a[_0x583dd8('0x106')](_0x21b403)&&(_0x112136[_0x21b403]=_0x5b6f4a[_0x21b403]);return _0x112136['queue']=[],_0x112136['sorter']=_0x523b34[_0x583dd8('0xbc7')]||_0x5b6f4a[_0x583dd8('0x5cf')],_0x112136;},'default_sorter':function(_0x51fd28,_0xb76016){var _0x9796a0=_0x3e44;return _0x51fd28[_0x9796a0('0x44e')]-_0xb76016[_0x9796a0('0x44e')];},'push':function(_0x3ed788,_0x4f7997){var _0x562b3f=_0x3e44,_0x1b1c02={'value':_0x3ed788,'cost':_0x4f7997};this[_0x562b3f('0x340')][_0x562b3f('0x8cd')](_0x1b1c02),this[_0x562b3f('0x340')]['sort'](this[_0x562b3f('0xbc7')]);},'pop':function(){return this['queue']['shift']();},'empty':function(){var _0x464b25=_0x3e44;return 0x0===this[_0x464b25('0x340')][_0x464b25('0x1d1')];}}};void 0x0!==_0x1692d7&&(_0x1692d7['exports']=_0x17d28d);},{}],0x4:[function(_0x17176f,_0x35cac5,_0x364fcc){var _0x240cc0=_0x3e44;_0x364fcc['read']=function(_0x1d5ce2,_0x4cff0a,_0x441a02,_0x3ec180,_0x4f0ed5){var _0xd21def,_0xc016d1,_0x2a25f1=0x8*_0x4f0ed5-_0x3ec180-0x1,_0x876a7d=(0x1<<_0x2a25f1)-0x1,_0x5cb155=_0x876a7d>>0x1,_0x49a86f=-0x7,_0x23db78=_0x441a02?_0x4f0ed5-0x1:0x0,_0x4d93fe=_0x441a02?-0x1:0x1,_0x52a34b=_0x1d5ce2[_0x4cff0a+_0x23db78];for(_0x23db78+=_0x4d93fe,_0xd21def=_0x52a34b&(0x1<<-_0x49a86f)-0x1,_0x52a34b>>=-_0x49a86f,_0x49a86f+=_0x2a25f1;_0x49a86f>0x0;_0xd21def=0x100*_0xd21def+_0x1d5ce2[_0x4cff0a+_0x23db78],_0x23db78+=_0x4d93fe,_0x49a86f-=0x8);for(_0xc016d1=_0xd21def&(0x1<<-_0x49a86f)-0x1,_0xd21def>>=-_0x49a86f,_0x49a86f+=_0x3ec180;_0x49a86f>0x0;_0xc016d1=0x100*_0xc016d1+_0x1d5ce2[_0x4cff0a+_0x23db78],_0x23db78+=_0x4d93fe,_0x49a86f-=0x8);if(0x0===_0xd21def)_0xd21def=0x1-_0x5cb155;else{if(_0xd21def===_0x876a7d)return _0xc016d1?NaN:0x1/0x0*(_0x52a34b?-0x1:0x1);_0xc016d1+=Math['pow'](0x2,_0x3ec180),_0xd21def-=_0x5cb155;}return(_0x52a34b?-0x1:0x1)*_0xc016d1*Math['pow'](0x2,_0xd21def-_0x3ec180);},_0x364fcc[_0x240cc0('0x72')]=function(_0x1e9170,_0x58b6e7,_0x13bc16,_0x16356b,_0x5405fc,_0x655af9){var _0x488793=_0x240cc0,_0x1820e3,_0x4b980b,_0x3c3add,_0x4dfbc6=0x8*_0x655af9-_0x5405fc-0x1,_0x545025=(0x1<<_0x4dfbc6)-0x1,_0x54ac=_0x545025>>0x1,_0x4e21eb=0x17===_0x5405fc?Math[_0x488793('0xc1')](0x2,-0x18)-Math[_0x488793('0xc1')](0x2,-0x4d):0x0,_0x44ed06=_0x16356b?0x0:_0x655af9-0x1,_0x4109b6=_0x16356b?0x1:-0x1,_0x28cf46=_0x58b6e7<0x0||0x0===_0x58b6e7&&0x1/_0x58b6e7<0x0?0x1:0x0;for(_0x58b6e7=Math[_0x488793('0xabf')](_0x58b6e7),isNaN(_0x58b6e7)||_0x58b6e7===0x1/0x0?(_0x4b980b=isNaN(_0x58b6e7)?0x1:0x0,_0x1820e3=_0x545025):(_0x1820e3=Math[_0x488793('0xd25')](Math[_0x488793('0xc78')](_0x58b6e7)/Math[_0x488793('0x865')]),_0x58b6e7*(_0x3c3add=Math[_0x488793('0xc1')](0x2,-_0x1820e3))<0x1&&(_0x1820e3--,_0x3c3add*=0x2),(_0x58b6e7+=_0x1820e3+_0x54ac>=0x1?_0x4e21eb/_0x3c3add:_0x4e21eb*Math[_0x488793('0xc1')](0x2,0x1-_0x54ac))*_0x3c3add>=0x2&&(_0x1820e3++,_0x3c3add/=0x2),_0x1820e3+_0x54ac>=_0x545025?(_0x4b980b=0x0,_0x1820e3=_0x545025):_0x1820e3+_0x54ac>=0x1?(_0x4b980b=(_0x58b6e7*_0x3c3add-0x1)*Math[_0x488793('0xc1')](0x2,_0x5405fc),_0x1820e3+=_0x54ac):(_0x4b980b=_0x58b6e7*Math['pow'](0x2,_0x54ac-0x1)*Math[_0x488793('0xc1')](0x2,_0x5405fc),_0x1820e3=0x0));_0x5405fc>=0x8;_0x1e9170[_0x13bc16+_0x44ed06]=0xff&_0x4b980b,_0x44ed06+=_0x4109b6,_0x4b980b/=0x100,_0x5405fc-=0x8);for(_0x1820e3=_0x1820e3<<_0x5405fc|_0x4b980b,_0x4dfbc6+=_0x5405fc;_0x4dfbc6>0x0;_0x1e9170[_0x13bc16+_0x44ed06]=0xff&_0x1820e3,_0x44ed06+=_0x4109b6,_0x1820e3/=0x100,_0x4dfbc6-=0x8);_0x1e9170[_0x13bc16+_0x44ed06-_0x4109b6]|=0x80*_0x28cf46;};},{}],0x5:[function(_0x463855,_0x4c3b8e,_0x3a541f){var _0x26c828=_0x3e44,_0x1dd754={}[_0x26c828('0x8dc')];_0x4c3b8e[_0x26c828('0x91e')]=Array[_0x26c828('0x9f2')]||function(_0x356144){var _0x3c2249=_0x26c828;return _0x3c2249('0x1e1')==_0x1dd754[_0x3c2249('0x928')](_0x356144);};},{}],0x6:[function(_0x269887,_0x4bb344,_0x532c25){var _0x3037a8=_0x3e44,_0x4152de,_0x25cf18,_0x2ecb48=_0x4bb344[_0x3037a8('0x91e')]={};function _0x565797(){throw new Error('setTimeout\x20has\x20not\x20been\x20defined');}function _0x2309c4(){var _0x545f8e=_0x3037a8;throw new Error(_0x545f8e('0x301'));}function _0x4e2795(_0x37147b){var _0x5927b0=_0x3037a8;if(_0x4152de===setTimeout)return setTimeout(_0x37147b,0x0);if((_0x4152de===_0x565797||!_0x4152de)&&setTimeout)return _0x4152de=setTimeout,setTimeout(_0x37147b,0x0);try{return _0x4152de(_0x37147b,0x0);}catch(_0x1bad11){try{return _0x4152de[_0x5927b0('0x928')](null,_0x37147b,0x0);}catch(_0x52b8c2){return _0x4152de[_0x5927b0('0x928')](this,_0x37147b,0x0);}}}!function(){var _0x361f59=_0x3037a8;try{_0x4152de=_0x361f59('0x67')==typeof setTimeout?setTimeout:_0x565797;}catch(_0x1d30c6){_0x4152de=_0x565797;}try{_0x25cf18=_0x361f59('0x67')==typeof clearTimeout?clearTimeout:_0x2309c4;}catch(_0x3bce35){_0x25cf18=_0x2309c4;}}();var _0x5d6afa,_0x25edb9=[],_0x48647d=!0x1,_0x48b7d6=-0x1;function _0x361488(){var _0x36c063=_0x3037a8;_0x48647d&&_0x5d6afa&&(_0x48647d=!0x1,_0x5d6afa[_0x36c063('0x1d1')]?_0x25edb9=_0x5d6afa[_0x36c063('0x49e')](_0x25edb9):_0x48b7d6=-0x1,_0x25edb9[_0x36c063('0x1d1')]&&_0x421d03());}function _0x421d03(){var _0x415dd9=_0x3037a8;if(!_0x48647d){var _0x43179f=_0x4e2795(_0x361488);_0x48647d=!0x0;for(var _0x51b5ae=_0x25edb9['length'];_0x51b5ae;){for(_0x5d6afa=_0x25edb9,_0x25edb9=[];++_0x48b7d6<_0x51b5ae;)_0x5d6afa&&_0x5d6afa[_0x48b7d6]['run']();_0x48b7d6=-0x1,_0x51b5ae=_0x25edb9[_0x415dd9('0x1d1')];}_0x5d6afa=null,_0x48647d=!0x1,function(_0x7a1718){var _0x4ffa2d=_0x415dd9;if(_0x25cf18===clearTimeout)return clearTimeout(_0x7a1718);if((_0x25cf18===_0x2309c4||!_0x25cf18)&&clearTimeout)return _0x25cf18=clearTimeout,clearTimeout(_0x7a1718);try{_0x25cf18(_0x7a1718);}catch(_0x3a7faf){try{return _0x25cf18['call'](null,_0x7a1718);}catch(_0xfc654e){return _0x25cf18[_0x4ffa2d('0x928')](this,_0x7a1718);}}}(_0x43179f);}}function _0x33a134(_0x3ee916,_0x115d81){var _0x4fb2c8=_0x3037a8;this[_0x4fb2c8('0xcf9')]=_0x3ee916,this[_0x4fb2c8('0x4e0')]=_0x115d81;}function _0x579cc0(){}_0x2ecb48['nextTick']=function(_0x2261a1){var _0x5baf93=_0x3037a8,_0x7d5f06=new Array(arguments[_0x5baf93('0x1d1')]-0x1);if(arguments[_0x5baf93('0x1d1')]>0x1)for(var _0x3b0579=0x1;_0x3b0579>>0x7-_0x1f40ff%0x8&0x1);},'put':function(_0x6831d1,_0x369877){var _0x3ed964=_0x2917ea;for(var _0x3465d4=0x0;_0x3465d4<_0x369877;_0x3465d4++)this[_0x3ed964('0xc67')](0x1==(_0x6831d1>>>_0x369877-_0x3465d4-0x1&0x1));},'getLengthInBits':function(){var _0x3e8c1e=_0x2917ea;return this[_0x3e8c1e('0x1d1')];},'putBit':function(_0x433a6d){var _0x5f4e3b=_0x2917ea,_0x31d30b=Math[_0x5f4e3b('0xd25')](this['length']/0x8);this[_0x5f4e3b('0xa53')][_0x5f4e3b('0x1d1')]<=_0x31d30b&&this[_0x5f4e3b('0xa53')][_0x5f4e3b('0x8cd')](0x0),_0x433a6d&&(this['buffer'][_0x31d30b]|=0x80>>>this['length']%0x8),this[_0x5f4e3b('0x1d1')]++;}},_0x120e69[_0x2917ea('0x91e')]=_0x59b01d;},{}],0xc:[function(_0x1a4333,_0x2acbd6,_0x376a9b){var _0x30d91e=_0x3e44,_0x4c67c1=_0x1a4333(_0x30d91e('0xc2d'));function _0x54a865(_0x4e7577){var _0x24401d=_0x30d91e;if(!_0x4e7577||_0x4e7577<0x1)throw new Error('BitMatrix\x20size\x20must\x20be\x20defined\x20and\x20greater\x20than\x200');this['size']=_0x4e7577,this['data']=_0x4c67c1['alloc'](_0x4e7577*_0x4e7577),this['reservedBit']=_0x4c67c1[_0x24401d('0xdc4')](_0x4e7577*_0x4e7577);}_0x54a865[_0x30d91e('0x3ec')][_0x30d91e('0x8ab')]=function(_0xb0a5dd,_0x469798,_0x38ea49,_0x180399){var _0x1e4434=_0x30d91e,_0x22214c=_0xb0a5dd*this[_0x1e4434('0xbd0')]+_0x469798;this['data'][_0x22214c]=_0x38ea49,_0x180399&&(this['reservedBit'][_0x22214c]=!0x0);},_0x54a865[_0x30d91e('0x3ec')][_0x30d91e('0x715')]=function(_0x1705d2,_0x3230de){var _0x372e2a=_0x30d91e;return this[_0x372e2a('0xc8f')][_0x1705d2*this[_0x372e2a('0xbd0')]+_0x3230de];},_0x54a865[_0x30d91e('0x3ec')][_0x30d91e('0x95b')]=function(_0x39dd70,_0x34c080,_0x5bc47d){var _0x49cf7e=_0x30d91e;this[_0x49cf7e('0xc8f')][_0x39dd70*this['size']+_0x34c080]^=_0x5bc47d;},_0x54a865[_0x30d91e('0x3ec')][_0x30d91e('0x8e9')]=function(_0x99769e,_0x10b433){var _0x5a2ee0=_0x30d91e;return this[_0x5a2ee0('0xa41')][_0x99769e*this[_0x5a2ee0('0xbd0')]+_0x10b433];},_0x2acbd6[_0x30d91e('0x91e')]=_0x54a865;},{'../utils/buffer':0x22}],0xd:[function(_0xf8fc66,_0x3f6c1d,_0x32b5f0){var _0x53481d=_0x3e44,_0x33f123=_0xf8fc66(_0x53481d('0xc2d')),_0x2c3efd=_0xf8fc66(_0x53481d('0x3a'));function _0x1df6fd(_0x313d22){var _0x23b647=_0x53481d;this['mode']=_0x2c3efd[_0x23b647('0x81')],this[_0x23b647('0xc8f')]=_0x33f123['from'](_0x313d22);}_0x1df6fd[_0x53481d('0x321')]=function(_0x12ec28){return 0x8*_0x12ec28;},_0x1df6fd[_0x53481d('0x3ec')]['getLength']=function(){return this['data']['length'];},_0x1df6fd[_0x53481d('0x3ec')][_0x53481d('0x321')]=function(){var _0x5deeb1=_0x53481d;return _0x1df6fd['getBitsLength'](this[_0x5deeb1('0xc8f')][_0x5deeb1('0x1d1')]);},_0x1df6fd['prototype']['write']=function(_0x2db957){var _0x4a3710=_0x53481d;for(var _0x19e58b=0x0,_0x459613=this['data'][_0x4a3710('0x1d1')];_0x19e58b<_0x459613;_0x19e58b++)_0x2db957['put'](this['data'][_0x19e58b],0x8);},_0x3f6c1d[_0x53481d('0x91e')]=_0x1df6fd;},{'../utils/buffer':0x22,'./mode':0x15}],0xe:[function(_0x27c938,_0x5d6a89,_0x501ce9){var _0x2df737=_0x3e44,_0xe570ed=_0x27c938(_0x2df737('0xaac')),_0xf1768=[0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x2,0x2,0x1,0x2,0x2,0x4,0x1,0x2,0x4,0x4,0x2,0x4,0x4,0x4,0x2,0x4,0x6,0x5,0x2,0x4,0x6,0x6,0x2,0x5,0x8,0x8,0x4,0x5,0x8,0x8,0x4,0x5,0x8,0xb,0x4,0x8,0xa,0xb,0x4,0x9,0xc,0x10,0x4,0x9,0x10,0x10,0x6,0xa,0xc,0x12,0x6,0xa,0x11,0x10,0x6,0xb,0x10,0x13,0x6,0xd,0x12,0x15,0x7,0xe,0x15,0x19,0x8,0x10,0x14,0x19,0x8,0x11,0x17,0x19,0x9,0x11,0x17,0x22,0x9,0x12,0x19,0x1e,0xa,0x14,0x1b,0x20,0xc,0x15,0x1d,0x23,0xc,0x17,0x22,0x25,0xc,0x19,0x22,0x28,0xd,0x1a,0x23,0x2a,0xe,0x1c,0x26,0x2d,0xf,0x1d,0x28,0x30,0x10,0x1f,0x2b,0x33,0x11,0x21,0x2d,0x36,0x12,0x23,0x30,0x39,0x13,0x25,0x33,0x3c,0x13,0x26,0x35,0x3f,0x14,0x28,0x38,0x42,0x15,0x2b,0x3b,0x46,0x16,0x2d,0x3e,0x4a,0x18,0x2f,0x41,0x4d,0x19,0x31,0x44,0x51],_0xf9b30d=[0x7,0xa,0xd,0x11,0xa,0x10,0x16,0x1c,0xf,0x1a,0x24,0x2c,0x14,0x24,0x34,0x40,0x1a,0x30,0x48,0x58,0x24,0x40,0x60,0x70,0x28,0x48,0x6c,0x82,0x30,0x58,0x84,0x9c,0x3c,0x6e,0xa0,0xc0,0x48,0x82,0xc0,0xe0,0x50,0x96,0xe0,0x108,0x60,0xb0,0x104,0x134,0x68,0xc6,0x120,0x160,0x78,0xd8,0x140,0x180,0x84,0xf0,0x168,0x1b0,0x90,0x118,0x198,0x1e0,0xa8,0x134,0x1c0,0x214,0xb4,0x152,0x1f8,0x24c,0xc4,0x16c,0x222,0x28a,0xe0,0x1a0,0x258,0x2bc,0xe0,0x1ba,0x284,0x2ee,0xfc,0x1dc,0x2b2,0x330,0x10e,0x1f8,0x2ee,0x384,0x12c,0x230,0x32a,0x3c0,0x138,0x24c,0x366,0x41a,0x150,0x284,0x3b8,0x456,0x168,0x2bc,0x3fc,0x4b0,0x186,0x2d8,0x41a,0x4ec,0x1a4,0x310,0x474,0x546,0x1c2,0x32c,0x4b0,0x5a0,0x1e0,0x364,0x50a,0x5fa,0x1fe,0x39c,0x546,0x654,0x21c,0x3d4,0x5a0,0x6ae,0x23a,0x40c,0x5fa,0x708,0x23a,0x428,0x636,0x762,0x258,0x460,0x690,0x7bc,0x276,0x4b4,0x6ea,0x834,0x294,0x4ec,0x744,0x8ac,0x2d0,0x524,0x79e,0x906,0x2ee,0x55c,0x7f8,0x97e];_0x501ce9['getBlocksCount']=function(_0x254b73,_0x4cbd65){switch(_0x4cbd65){case _0xe570ed['L']:return _0xf1768[0x4*(_0x254b73-0x1)+0x0];case _0xe570ed['M']:return _0xf1768[0x4*(_0x254b73-0x1)+0x1];case _0xe570ed['Q']:return _0xf1768[0x4*(_0x254b73-0x1)+0x2];case _0xe570ed['H']:return _0xf1768[0x4*(_0x254b73-0x1)+0x3];default:return;}},_0x501ce9['getTotalCodewordsCount']=function(_0x49d660,_0x179ee4){switch(_0x179ee4){case _0xe570ed['L']:return _0xf9b30d[0x4*(_0x49d660-0x1)+0x0];case _0xe570ed['M']:return _0xf9b30d[0x4*(_0x49d660-0x1)+0x1];case _0xe570ed['Q']:return _0xf9b30d[0x4*(_0x49d660-0x1)+0x2];case _0xe570ed['H']:return _0xf9b30d[0x4*(_0x49d660-0x1)+0x3];default:return;}};},{'./error-correction-level':0xf}],0xf:[function(_0x4c5a0d,_0x79d010,_0x5e8d0a){_0x5e8d0a['L']={'bit':0x1},_0x5e8d0a['M']={'bit':0x0},_0x5e8d0a['Q']={'bit':0x3},_0x5e8d0a['H']={'bit':0x2},_0x5e8d0a['isValid']=function(_0x266dac){var _0x2ebbfd=_0x3e44;return _0x266dac&&void 0x0!==_0x266dac['bit']&&_0x266dac[_0x2ebbfd('0xc11')]>=0x0&&_0x266dac[_0x2ebbfd('0xc11')]<0x4;},_0x5e8d0a['from']=function(_0x49ae22,_0x2e1ca6){if(_0x5e8d0a['isValid'](_0x49ae22))return _0x49ae22;try{return function(_0x36ae09){var _0x20cf04=_0x3e44;if('string'!=typeof _0x36ae09)throw new Error(_0x20cf04('0x9af'));switch(_0x36ae09[_0x20cf04('0x5d')]()){case'l':case _0x20cf04('0x201'):return _0x5e8d0a['L'];case'm':case _0x20cf04('0x3b7'):return _0x5e8d0a['M'];case'q':case _0x20cf04('0x678'):return _0x5e8d0a['Q'];case'h':case'high':return _0x5e8d0a['H'];default:throw new Error(_0x20cf04('0x1e5')+_0x36ae09);}}(_0x49ae22);}catch(_0x1528f2){return _0x2e1ca6;}};},{}],0x10:[function(_0x360c3a,_0x30f0aa,_0x5e226f){var _0x22cb49=_0x3e44,_0x10c730=_0x360c3a(_0x22cb49('0xb4b'))['getSymbolSize'];_0x5e226f[_0x22cb49('0x2e5')]=function(_0xd88bf6){var _0x5f0c91=_0x10c730(_0xd88bf6);return[[0x0,0x0],[_0x5f0c91-0x7,0x0],[0x0,_0x5f0c91-0x7]];};},{'./utils':0x1c}],0x11:[function(_0x2149b2,_0x186304,_0x17e7ae){var _0x559dbc=_0x3e44,_0x5daebb=_0x2149b2(_0x559dbc('0xb4b')),_0x2c3adf=_0x5daebb['getBCHDigit'](0x537);_0x17e7ae[_0x559dbc('0x574')]=function(_0x5d552c,_0x39fcaa){var _0x21c83a=_0x559dbc;for(var _0x18559a=_0x5d552c['bit']<<0x3|_0x39fcaa,_0x377bff=_0x18559a<<0xa;_0x5daebb[_0x21c83a('0xa93')](_0x377bff)-_0x2c3adf>=0x0;)_0x377bff^=0x537<<_0x5daebb['getBCHDigit'](_0x377bff)-_0x2c3adf;return 0x5412^(_0x18559a<<0xa|_0x377bff);};},{'./utils':0x1c}],0x12:[function(_0x9abc9a,_0x2967a6,_0x1be4dd){var _0x9a28f2=_0x3e44,_0x2aad92=_0x9abc9a(_0x9a28f2('0xc2d')),_0x5dce1e=_0x2aad92[_0x9a28f2('0xdc4')](0x200),_0x1252d8=_0x2aad92['alloc'](0x100);!function(){for(var _0x239b50=0x1,_0x2ca7f6=0x0;_0x2ca7f6<0xff;_0x2ca7f6++)_0x5dce1e[_0x2ca7f6]=_0x239b50,_0x1252d8[_0x239b50]=_0x2ca7f6,0x100&(_0x239b50<<=0x1)&&(_0x239b50^=0x11d);for(_0x2ca7f6=0xff;_0x2ca7f6<0x200;_0x2ca7f6++)_0x5dce1e[_0x2ca7f6]=_0x5dce1e[_0x2ca7f6-0xff];}(),_0x1be4dd[_0x9a28f2('0xc78')]=function(_0x14636e){if(_0x14636e<0x1)throw new Error('log('+_0x14636e+')');return _0x1252d8[_0x14636e];},_0x1be4dd[_0x9a28f2('0x4ab')]=function(_0x29f56a){return _0x5dce1e[_0x29f56a];},_0x1be4dd['mul']=function(_0x5c6cd5,_0x143e45){return 0x0===_0x5c6cd5||0x0===_0x143e45?0x0:_0x5dce1e[_0x1252d8[_0x5c6cd5]+_0x1252d8[_0x143e45]];};},{'../utils/buffer':0x22}],0x13:[function(_0x23b69f,_0x199216,_0xec85c0){var _0x574bfb=_0x3e44,_0x207732=_0x23b69f('./mode'),_0xc81aeb=_0x23b69f(_0x574bfb('0xb4b'));function _0x55dbfb(_0x12f1ca){var _0x37ffe2=_0x574bfb;this[_0x37ffe2('0xa50')]=_0x207732[_0x37ffe2('0x88')],this[_0x37ffe2('0xc8f')]=_0x12f1ca;}_0x55dbfb[_0x574bfb('0x321')]=function(_0x52e66b){return 0xd*_0x52e66b;},_0x55dbfb['prototype'][_0x574bfb('0x172')]=function(){var _0x2eaa40=_0x574bfb;return this[_0x2eaa40('0xc8f')]['length'];},_0x55dbfb[_0x574bfb('0x3ec')][_0x574bfb('0x321')]=function(){var _0x42c276=_0x574bfb;return _0x55dbfb[_0x42c276('0x321')](this[_0x42c276('0xc8f')][_0x42c276('0x1d1')]);},_0x55dbfb[_0x574bfb('0x3ec')][_0x574bfb('0x72')]=function(_0x351774){var _0x5ba2c8=_0x574bfb,_0x5c9d64;for(_0x5c9d64=0x0;_0x5c9d64=0x8140&&_0x24601a<=0x9ffc)_0x24601a-=0x8140;else{if(!(_0x24601a>=0xe040&&_0x24601a<=0xebbf))throw new Error(_0x5ba2c8('0xabe')+this[_0x5ba2c8('0xc8f')][_0x5c9d64]+_0x5ba2c8('0x4de'));_0x24601a-=0xc140;}_0x24601a=0xc0*(_0x24601a>>>0x8&0xff)+(0xff&_0x24601a),_0x351774[_0x5ba2c8('0x72c')](_0x24601a,0xd);}},_0x199216[_0x574bfb('0x91e')]=_0x55dbfb;},{'./mode':0x15,'./utils':0x1c}],0x14:[function(_0x2fbfc2,_0x4b33e3,_0x1c9de5){var _0x474e06=_0x3e44;_0x1c9de5[_0x474e06('0xd9')]={'PATTERN000':0x0,'PATTERN001':0x1,'PATTERN010':0x2,'PATTERN011':0x3,'PATTERN100':0x4,'PATTERN101':0x5,'PATTERN110':0x6,'PATTERN111':0x7};var _0x4b607b=0x3,_0x1059d3=0x3,_0x492d91=0x28,_0x6c362e=0xa;function _0x50faec(_0x4c4046,_0x5334d8,_0x190510){var _0x21ca97=_0x474e06;switch(_0x4c4046){case _0x1c9de5[_0x21ca97('0xd9')][_0x21ca97('0x5df')]:return(_0x5334d8+_0x190510)%0x2==0x0;case _0x1c9de5[_0x21ca97('0xd9')][_0x21ca97('0x4c0')]:return _0x5334d8%0x2==0x0;case _0x1c9de5[_0x21ca97('0xd9')][_0x21ca97('0x489')]:return _0x190510%0x3==0x0;case _0x1c9de5['Patterns'][_0x21ca97('0xd20')]:return(_0x5334d8+_0x190510)%0x3==0x0;case _0x1c9de5['Patterns'][_0x21ca97('0x2e0')]:return(Math['floor'](_0x5334d8/0x2)+Math[_0x21ca97('0xd25')](_0x190510/0x3))%0x2==0x0;case _0x1c9de5[_0x21ca97('0xd9')]['PATTERN101']:return _0x5334d8*_0x190510%0x2+_0x5334d8*_0x190510%0x3==0x0;case _0x1c9de5[_0x21ca97('0xd9')]['PATTERN110']:return(_0x5334d8*_0x190510%0x2+_0x5334d8*_0x190510%0x3)%0x2==0x0;case _0x1c9de5[_0x21ca97('0xd9')][_0x21ca97('0xd56')]:return(_0x5334d8*_0x190510%0x3+(_0x5334d8+_0x190510)%0x2)%0x2==0x0;default:throw new Error('bad\x20maskPattern:'+_0x4c4046);}}_0x1c9de5[_0x474e06('0x3a5')]=function(_0x3644ce){return null!=_0x3644ce&&''!==_0x3644ce&&!isNaN(_0x3644ce)&&_0x3644ce>=0x0&&_0x3644ce<=0x7;},_0x1c9de5['from']=function(_0x50718a){var _0x26c7d3=_0x474e06;return _0x1c9de5[_0x26c7d3('0x3a5')](_0x50718a)?parseInt(_0x50718a,0xa):void 0x0;},_0x1c9de5['getPenaltyN1']=function(_0x5abad4){var _0x3fd91a=_0x474e06;for(var _0x1ff14f=_0x5abad4[_0x3fd91a('0xbd0')],_0x117158=0x0,_0x4226c6=0x0,_0x545d27=0x0,_0x1f1ad1=null,_0x5250b4=null,_0x346e64=0x0;_0x346e64<_0x1ff14f;_0x346e64++){_0x4226c6=_0x545d27=0x0,_0x1f1ad1=_0x5250b4=null;for(var _0x276468=0x0;_0x276468<_0x1ff14f;_0x276468++){var _0x3d5551=_0x5abad4[_0x3fd91a('0x715')](_0x346e64,_0x276468);_0x3d5551===_0x1f1ad1?_0x4226c6++:(_0x4226c6>=0x5&&(_0x117158+=_0x4b607b+(_0x4226c6-0x5)),_0x1f1ad1=_0x3d5551,_0x4226c6=0x1),(_0x3d5551=_0x5abad4['get'](_0x276468,_0x346e64))===_0x5250b4?_0x545d27++:(_0x545d27>=0x5&&(_0x117158+=_0x4b607b+(_0x545d27-0x5)),_0x5250b4=_0x3d5551,_0x545d27=0x1);}_0x4226c6>=0x5&&(_0x117158+=_0x4b607b+(_0x4226c6-0x5)),_0x545d27>=0x5&&(_0x117158+=_0x4b607b+(_0x545d27-0x5));}return _0x117158;},_0x1c9de5['getPenaltyN2']=function(_0x5d0489){var _0x21edad=_0x474e06;for(var _0x458e3d=_0x5d0489[_0x21edad('0xbd0')],_0x257f64=0x0,_0x270bab=0x0;_0x270bab<_0x458e3d-0x1;_0x270bab++)for(var _0x3bd773=0x0;_0x3bd773<_0x458e3d-0x1;_0x3bd773++){var _0x324ea0=_0x5d0489[_0x21edad('0x715')](_0x270bab,_0x3bd773)+_0x5d0489['get'](_0x270bab,_0x3bd773+0x1)+_0x5d0489['get'](_0x270bab+0x1,_0x3bd773)+_0x5d0489[_0x21edad('0x715')](_0x270bab+0x1,_0x3bd773+0x1);0x4!==_0x324ea0&&0x0!==_0x324ea0||_0x257f64++;}return _0x257f64*_0x1059d3;},_0x1c9de5[_0x474e06('0xc20')]=function(_0x5aeb38){var _0x17a31a=_0x474e06;for(var _0x1ec950=_0x5aeb38[_0x17a31a('0xbd0')],_0x1112e3=0x0,_0x192fd9=0x0,_0x3c8831=0x0,_0x1c8ccd=0x0;_0x1c8ccd<_0x1ec950;_0x1c8ccd++){_0x192fd9=_0x3c8831=0x0;for(var _0x5ad2b5=0x0;_0x5ad2b5<_0x1ec950;_0x5ad2b5++)_0x192fd9=_0x192fd9<<0x1&0x7ff|_0x5aeb38[_0x17a31a('0x715')](_0x1c8ccd,_0x5ad2b5),_0x5ad2b5>=0xa&&(0x5d0===_0x192fd9||0x5d===_0x192fd9)&&_0x1112e3++,_0x3c8831=_0x3c8831<<0x1&0x7ff|_0x5aeb38[_0x17a31a('0x715')](_0x5ad2b5,_0x1c8ccd),_0x5ad2b5>=0xa&&(0x5d0===_0x3c8831||0x5d===_0x3c8831)&&_0x1112e3++;}return _0x1112e3*_0x492d91;},_0x1c9de5[_0x474e06('0x1e9')]=function(_0x52cb4e){var _0x79e4a3=_0x474e06;for(var _0x3e409d=0x0,_0x216f49=_0x52cb4e['data'][_0x79e4a3('0x1d1')],_0x1bed95=0x0;_0x1bed95<_0x216f49;_0x1bed95++)_0x3e409d+=_0x52cb4e[_0x79e4a3('0xc8f')][_0x1bed95];return Math[_0x79e4a3('0xabf')](Math[_0x79e4a3('0x802')](0x64*_0x3e409d/_0x216f49/0x5)-0xa)*_0x6c362e;},_0x1c9de5[_0x474e06('0xc1d')]=function(_0x275bf1,_0x164666){var _0x18b0ce=_0x474e06;for(var _0x840c2e=_0x164666[_0x18b0ce('0xbd0')],_0x3243ca=0x0;_0x3243ca<_0x840c2e;_0x3243ca++)for(var _0x32aea7=0x0;_0x32aea7<_0x840c2e;_0x32aea7++)_0x164666[_0x18b0ce('0x8e9')](_0x32aea7,_0x3243ca)||_0x164666[_0x18b0ce('0x95b')](_0x32aea7,_0x3243ca,_0x50faec(_0x275bf1,_0x32aea7,_0x3243ca));},_0x1c9de5['getBestMask']=function(_0x230e7e,_0x517d69){var _0x3a958c=_0x474e06;for(var _0x421f3a=Object['keys'](_0x1c9de5[_0x3a958c('0xd9')])[_0x3a958c('0x1d1')],_0x379358=0x0,_0x80f19b=0x1/0x0,_0x64148b=0x0;_0x64148b<_0x421f3a;_0x64148b++){_0x517d69(_0x64148b),_0x1c9de5['applyMask'](_0x64148b,_0x230e7e);var _0x510467=_0x1c9de5['getPenaltyN1'](_0x230e7e)+_0x1c9de5[_0x3a958c('0xa85')](_0x230e7e)+_0x1c9de5[_0x3a958c('0xc20')](_0x230e7e)+_0x1c9de5[_0x3a958c('0x1e9')](_0x230e7e);_0x1c9de5['applyMask'](_0x64148b,_0x230e7e),_0x510467<_0x80f19b&&(_0x80f19b=_0x510467,_0x379358=_0x64148b);}return _0x379358;};},{}],0x15:[function(_0x2a7259,_0x139fe4,_0x40d697){var _0x5707c0=_0x3e44,_0x435b90=_0x2a7259(_0x5707c0('0x11d')),_0x50345d=_0x2a7259('./regex');_0x40d697[_0x5707c0('0x517')]={'id':_0x5707c0('0xcd'),'bit':0x1,'ccBits':[0xa,0xc,0xe]},_0x40d697['ALPHANUMERIC']={'id':'Alphanumeric','bit':0x2,'ccBits':[0x9,0xb,0xd]},_0x40d697['BYTE']={'id':_0x5707c0('0xb65'),'bit':0x4,'ccBits':[0x8,0x10,0x10]},_0x40d697['KANJI']={'id':'Kanji','bit':0x8,'ccBits':[0x8,0xa,0xc]},_0x40d697['MIXED']={'bit':-0x1},_0x40d697[_0x5707c0('0x807')]=function(_0x27cbe6,_0xfe4580){var _0x2947f3=_0x5707c0;if(!_0x27cbe6[_0x2947f3('0x557')])throw new Error(_0x2947f3('0xaf5')+_0x27cbe6);if(!_0x435b90[_0x2947f3('0x3a5')](_0xfe4580))throw new Error('Invalid\x20version:\x20'+_0xfe4580);return _0xfe4580>=0x1&&_0xfe4580<0xa?_0x27cbe6[_0x2947f3('0x557')][0x0]:_0xfe4580<0x1b?_0x27cbe6['ccBits'][0x1]:_0x27cbe6[_0x2947f3('0x557')][0x2];},_0x40d697[_0x5707c0('0x95c')]=function(_0x491ff7){var _0xcd2fc2=_0x5707c0;return _0x50345d[_0xcd2fc2('0x136')](_0x491ff7)?_0x40d697[_0xcd2fc2('0x517')]:_0x50345d['testAlphanumeric'](_0x491ff7)?_0x40d697[_0xcd2fc2('0x80a')]:_0x50345d[_0xcd2fc2('0x74')](_0x491ff7)?_0x40d697[_0xcd2fc2('0x88')]:_0x40d697['BYTE'];},_0x40d697[_0x5707c0('0x8dc')]=function(_0x443e57){var _0x14857b=_0x5707c0;if(_0x443e57&&_0x443e57['id'])return _0x443e57['id'];throw new Error(_0x14857b('0x622'));},_0x40d697[_0x5707c0('0x3a5')]=function(_0x3c81e9){var _0x4a575d=_0x5707c0;return _0x3c81e9&&_0x3c81e9[_0x4a575d('0xc11')]&&_0x3c81e9[_0x4a575d('0x557')];},_0x40d697[_0x5707c0('0x868')]=function(_0x4164ba,_0xa7fa57){if(_0x40d697['isValid'](_0x4164ba))return _0x4164ba;try{return function(_0x309fe9){var _0x5382c7=_0x3e44;if(_0x5382c7('0x4ba')!=typeof _0x309fe9)throw new Error('Param\x20is\x20not\x20a\x20string');switch(_0x309fe9[_0x5382c7('0x5d')]()){case'numeric':return _0x40d697[_0x5382c7('0x517')];case _0x5382c7('0x2c9'):return _0x40d697[_0x5382c7('0x80a')];case _0x5382c7('0x824'):return _0x40d697[_0x5382c7('0x88')];case _0x5382c7('0x5f2'):return _0x40d697[_0x5382c7('0x81')];default:throw new Error('Unknown\x20mode:\x20'+_0x309fe9);}}(_0x4164ba);}catch(_0x55bb5e){return _0xa7fa57;}};},{'./regex':0x1a,'./version-check':0x1d}],0x16:[function(_0x2cc23e,_0x52ccd0,_0x509707){var _0x1cc53d=_0x3e44,_0x1fd6e2=_0x2cc23e(_0x1cc53d('0x3a'));function _0x26da01(_0x244bd0){var _0x3976b0=_0x1cc53d;this[_0x3976b0('0xa50')]=_0x1fd6e2['NUMERIC'],this[_0x3976b0('0xc8f')]=_0x244bd0[_0x3976b0('0x8dc')]();}_0x26da01['getBitsLength']=function(_0x4383e4){var _0x5aadbb=_0x1cc53d;return 0xa*Math[_0x5aadbb('0xd25')](_0x4383e4/0x3)+(_0x4383e4%0x3?_0x4383e4%0x3*0x3+0x1:0x0);},_0x26da01[_0x1cc53d('0x3ec')][_0x1cc53d('0x172')]=function(){var _0x5d7944=_0x1cc53d;return this[_0x5d7944('0xc8f')][_0x5d7944('0x1d1')];},_0x26da01['prototype'][_0x1cc53d('0x321')]=function(){var _0x37b412=_0x1cc53d;return _0x26da01[_0x37b412('0x321')](this[_0x37b412('0xc8f')][_0x37b412('0x1d1')]);},_0x26da01[_0x1cc53d('0x3ec')][_0x1cc53d('0x72')]=function(_0x19ef3a){var _0x5c395f=_0x1cc53d,_0x288a4b,_0x16d35c,_0x426fdc;for(_0x288a4b=0x0;_0x288a4b+0x3<=this[_0x5c395f('0xc8f')]['length'];_0x288a4b+=0x3)_0x16d35c=this['data'][_0x5c395f('0x926')](_0x288a4b,0x3),_0x426fdc=parseInt(_0x16d35c,0xa),_0x19ef3a[_0x5c395f('0x72c')](_0x426fdc,0xa);var _0xe66034=this[_0x5c395f('0xc8f')]['length']-_0x288a4b;_0xe66034>0x0&&(_0x16d35c=this['data'][_0x5c395f('0x926')](_0x288a4b),_0x426fdc=parseInt(_0x16d35c,0xa),_0x19ef3a[_0x5c395f('0x72c')](_0x426fdc,0x3*_0xe66034+0x1));},_0x52ccd0[_0x1cc53d('0x91e')]=_0x26da01;},{'./mode':0x15}],0x17:[function(_0x26cb62,_0x16f603,_0xabc9a6){var _0x167af2=_0x3e44,_0x4a9738=_0x26cb62('../utils/buffer'),_0x35e591=_0x26cb62(_0x167af2('0xbbc'));_0xabc9a6[_0x167af2('0x6ac')]=function(_0x1b2395,_0xd9ba1c){var _0x429dab=_0x167af2;for(var _0x48c8bb=_0x4a9738[_0x429dab('0xdc4')](_0x1b2395[_0x429dab('0x1d1')]+_0xd9ba1c[_0x429dab('0x1d1')]-0x1),_0x124ae6=0x0;_0x124ae6<_0x1b2395[_0x429dab('0x1d1')];_0x124ae6++)for(var _0x49142a=0x0;_0x49142a<_0xd9ba1c[_0x429dab('0x1d1')];_0x49142a++)_0x48c8bb[_0x124ae6+_0x49142a]^=_0x35e591[_0x429dab('0x6ac')](_0x1b2395[_0x124ae6],_0xd9ba1c[_0x49142a]);return _0x48c8bb;},_0xabc9a6[_0x167af2('0x735')]=function(_0x5dbf98,_0x333fbc){var _0x49bd4c=_0x167af2;for(var _0x6e382d=_0x4a9738[_0x49bd4c('0x868')](_0x5dbf98);_0x6e382d[_0x49bd4c('0x1d1')]-_0x333fbc[_0x49bd4c('0x1d1')]>=0x0;){for(var _0x3cb9d0=_0x6e382d[0x0],_0x4b3bfc=0x0;_0x4b3bfc<_0x333fbc['length'];_0x4b3bfc++)_0x6e382d[_0x4b3bfc]^=_0x35e591[_0x49bd4c('0x6ac')](_0x333fbc[_0x4b3bfc],_0x3cb9d0);for(var _0x5e2fa6=0x0;_0x5e2fa6<_0x6e382d[_0x49bd4c('0x1d1')]&&0x0===_0x6e382d[_0x5e2fa6];)_0x5e2fa6++;_0x6e382d=_0x6e382d[_0x49bd4c('0x63a')](_0x5e2fa6);}return _0x6e382d;},_0xabc9a6[_0x167af2('0x84f')]=function(_0x2d1d6f){var _0x3579d5=_0x167af2;for(var _0x3528b0=_0x4a9738['from']([0x1]),_0x3c81e1=0x0;_0x3c81e1<_0x2d1d6f;_0x3c81e1++)_0x3528b0=_0xabc9a6['mul'](_0x3528b0,[0x1,_0x35e591[_0x3579d5('0x4ab')](_0x3c81e1)]);return _0x3528b0;};},{'../utils/buffer':0x22,'./galois-field':0x12}],0x18:[function(_0xc6b0c7,_0x1d990e,_0x3b355e){var _0x375e7a=_0x3e44,_0x46293f=_0xc6b0c7(_0x375e7a('0xc2d')),_0x565fbc=_0xc6b0c7('./utils'),_0xa6695b=_0xc6b0c7(_0x375e7a('0xaac')),_0x41458c=_0xc6b0c7('./bit-buffer'),_0xf33ff5=_0xc6b0c7(_0x375e7a('0x450')),_0x59bd24=_0xc6b0c7(_0x375e7a('0x28d')),_0xeb10e5=_0xc6b0c7(_0x375e7a('0x792')),_0x3a7a32=_0xc6b0c7(_0x375e7a('0x458')),_0x47088e=_0xc6b0c7('./error-correction-code'),_0x4cf5ac=_0xc6b0c7(_0x375e7a('0xbf7')),_0x525a21=_0xc6b0c7(_0x375e7a('0x254')),_0x1bd7b1=_0xc6b0c7(_0x375e7a('0xa56')),_0x4765f9=_0xc6b0c7(_0x375e7a('0x3a')),_0x297610=_0xc6b0c7(_0x375e7a('0x1b')),_0x47cafc=_0xc6b0c7(_0x375e7a('0xccd'));function _0x3f4d1e(_0x76862d,_0x558636,_0x1a42c6){var _0x5b92c1=_0x375e7a,_0x589416,_0x26ea0d,_0x3760ff=_0x76862d[_0x5b92c1('0xbd0')],_0x4682d6=_0x1bd7b1[_0x5b92c1('0x574')](_0x558636,_0x1a42c6);for(_0x589416=0x0;_0x589416<0xf;_0x589416++)_0x26ea0d=0x1==(_0x4682d6>>_0x589416&0x1),_0x589416<0x6?_0x76862d[_0x5b92c1('0x8ab')](_0x589416,0x8,_0x26ea0d,!0x0):_0x589416<0x8?_0x76862d[_0x5b92c1('0x8ab')](_0x589416+0x1,0x8,_0x26ea0d,!0x0):_0x76862d[_0x5b92c1('0x8ab')](_0x3760ff-0xf+_0x589416,0x8,_0x26ea0d,!0x0),_0x589416<0x8?_0x76862d[_0x5b92c1('0x8ab')](0x8,_0x3760ff-_0x589416-0x1,_0x26ea0d,!0x0):_0x589416<0x9?_0x76862d[_0x5b92c1('0x8ab')](0x8,0xf-_0x589416-0x1+0x1,_0x26ea0d,!0x0):_0x76862d[_0x5b92c1('0x8ab')](0x8,0xf-_0x589416-0x1,_0x26ea0d,!0x0);_0x76862d[_0x5b92c1('0x8ab')](_0x3760ff-0x8,0x8,0x1,!0x0);}function _0xccdc49(_0x344093,_0x3ddf91,_0x5c1fa9){var _0x17ab6e=_0x375e7a,_0x29dfa2=new _0x41458c();_0x5c1fa9[_0x17ab6e('0x7ed')](function(_0x2d1c82){var _0x3450e2=_0x17ab6e;_0x29dfa2[_0x3450e2('0x72c')](_0x2d1c82[_0x3450e2('0xa50')][_0x3450e2('0xc11')],0x4),_0x29dfa2[_0x3450e2('0x72c')](_0x2d1c82[_0x3450e2('0x172')](),_0x4765f9['getCharCountIndicator'](_0x2d1c82[_0x3450e2('0xa50')],_0x344093)),_0x2d1c82[_0x3450e2('0x72')](_0x29dfa2);});var _0x5552d3=0x8*(_0x565fbc[_0x17ab6e('0xdac')](_0x344093)-_0x47088e[_0x17ab6e('0xaec')](_0x344093,_0x3ddf91));for(_0x29dfa2['getLengthInBits']()+0x4<=_0x5552d3&&_0x29dfa2[_0x17ab6e('0x72c')](0x0,0x4);_0x29dfa2[_0x17ab6e('0x5a2')]()%0x8!=0x0;)_0x29dfa2[_0x17ab6e('0xc67')](0x0);for(var _0x356692=(_0x5552d3-_0x29dfa2['getLengthInBits']())/0x8,_0x1c9467=0x0;_0x1c9467<_0x356692;_0x1c9467++)_0x29dfa2[_0x17ab6e('0x72c')](_0x1c9467%0x2?0x11:0xec,0x8);return function(_0xa83ced,_0x3942d6,_0xfe592e){var _0x443c4=_0x17ab6e;for(var _0x449acc=_0x565fbc[_0x443c4('0xdac')](_0x3942d6),_0x742932=_0x47088e[_0x443c4('0xaec')](_0x3942d6,_0xfe592e),_0x47edc1=_0x449acc-_0x742932,_0xe66d24=_0x47088e['getBlocksCount'](_0x3942d6,_0xfe592e),_0x3fe3b3=_0xe66d24-_0x449acc%_0xe66d24,_0x3684d1=Math['floor'](_0x449acc/_0xe66d24),_0x397a97=Math[_0x443c4('0xd25')](_0x47edc1/_0xe66d24),_0x20370c=_0x397a97+0x1,_0x44f2e7=_0x3684d1-_0x397a97,_0x381e4e=new _0x4cf5ac(_0x44f2e7),_0x23fc0c=0x0,_0x267483=new Array(_0xe66d24),_0x434d4b=new Array(_0xe66d24),_0x44de92=0x0,_0x17ea08=_0x46293f[_0x443c4('0x868')](_0xa83ced[_0x443c4('0xa53')]),_0x4fdc7d=0x0;_0x4fdc7d<_0xe66d24;_0x4fdc7d++){var _0x39d864=_0x4fdc7d<_0x3fe3b3?_0x397a97:_0x20370c;_0x267483[_0x4fdc7d]=_0x17ea08[_0x443c4('0x63a')](_0x23fc0c,_0x23fc0c+_0x39d864),_0x434d4b[_0x4fdc7d]=_0x381e4e[_0x443c4('0x7e7')](_0x267483[_0x4fdc7d]),_0x23fc0c+=_0x39d864,_0x44de92=Math[_0x443c4('0x5c0')](_0x44de92,_0x39d864);}var _0x4c224b,_0xcc3df0,_0x30d6b2=_0x46293f[_0x443c4('0xdc4')](_0x449acc),_0x1c01f5=0x0;for(_0x4c224b=0x0;_0x4c224b<_0x44de92;_0x4c224b++)for(_0xcc3df0=0x0;_0xcc3df0<_0xe66d24;_0xcc3df0++)_0x4c224b<_0x267483[_0xcc3df0][_0x443c4('0x1d1')]&&(_0x30d6b2[_0x1c01f5++]=_0x267483[_0xcc3df0][_0x4c224b]);for(_0x4c224b=0x0;_0x4c224b<_0x44f2e7;_0x4c224b++)for(_0xcc3df0=0x0;_0xcc3df0<_0xe66d24;_0xcc3df0++)_0x30d6b2[_0x1c01f5++]=_0x434d4b[_0xcc3df0][_0x4c224b];return _0x30d6b2;}(_0x29dfa2,_0x344093,_0x3ddf91);}function _0x2bfe4a(_0x1728fa,_0x3dc860,_0x432742,_0x265b6e){var _0x12c699=_0x375e7a,_0x1cdc2f;if(_0x47cafc(_0x1728fa))_0x1cdc2f=_0x297610[_0x12c699('0xc4d')](_0x1728fa);else{if('string'!=typeof _0x1728fa)throw new Error('Invalid\x20data');var _0x50b9fb=_0x3dc860;if(!_0x50b9fb){var _0x1d57e6=_0x297610[_0x12c699('0x87d')](_0x1728fa);_0x50b9fb=_0x525a21[_0x12c699('0xa1f')](_0x1d57e6,_0x432742);}_0x1cdc2f=_0x297610[_0x12c699('0xaa9')](_0x1728fa,_0x50b9fb||0x28);}var _0x393517=_0x525a21[_0x12c699('0xa1f')](_0x1cdc2f,_0x432742);if(!_0x393517)throw new Error(_0x12c699('0xd83'));if(_0x3dc860){if(_0x3dc860<_0x393517)throw new Error(_0x12c699('0xb80')+_0x393517+'.\x0a');}else _0x3dc860=_0x393517;var _0x5a9d20=_0xccdc49(_0x3dc860,_0x432742,_0x1cdc2f),_0x216af4=_0x565fbc[_0x12c699('0xd31')](_0x3dc860),_0x1e401d=new _0xf33ff5(_0x216af4);return function(_0x1d908e,_0x4bb14a){var _0x52d0aa=_0x12c699;for(var _0x249a55=_0x1d908e['size'],_0x1360ea=_0xeb10e5[_0x52d0aa('0x2e5')](_0x4bb14a),_0x187605=0x0;_0x187605<_0x1360ea['length'];_0x187605++)for(var _0x1ea326=_0x1360ea[_0x187605][0x0],_0x33b154=_0x1360ea[_0x187605][0x1],_0x5ca45b=-0x1;_0x5ca45b<=0x7;_0x5ca45b++)if(!(_0x1ea326+_0x5ca45b<=-0x1||_0x249a55<=_0x1ea326+_0x5ca45b))for(var _0x128e32=-0x1;_0x128e32<=0x7;_0x128e32++)_0x33b154+_0x128e32<=-0x1||_0x249a55<=_0x33b154+_0x128e32||(_0x5ca45b>=0x0&&_0x5ca45b<=0x6&&(0x0===_0x128e32||0x6===_0x128e32)||_0x128e32>=0x0&&_0x128e32<=0x6&&(0x0===_0x5ca45b||0x6===_0x5ca45b)||_0x5ca45b>=0x2&&_0x5ca45b<=0x4&&_0x128e32>=0x2&&_0x128e32<=0x4?_0x1d908e[_0x52d0aa('0x8ab')](_0x1ea326+_0x5ca45b,_0x33b154+_0x128e32,!0x0,!0x0):_0x1d908e[_0x52d0aa('0x8ab')](_0x1ea326+_0x5ca45b,_0x33b154+_0x128e32,!0x1,!0x0));}(_0x1e401d,_0x3dc860),function(_0x59758f){var _0x1b9d43=_0x12c699;for(var _0x3d89eb=_0x59758f[_0x1b9d43('0xbd0')],_0x1677c7=0x8;_0x1677c7<_0x3d89eb-0x8;_0x1677c7++){var _0x214e54=_0x1677c7%0x2==0x0;_0x59758f['set'](_0x1677c7,0x6,_0x214e54,!0x0),_0x59758f[_0x1b9d43('0x8ab')](0x6,_0x1677c7,_0x214e54,!0x0);}}(_0x1e401d),function(_0x4aad52,_0x32227f){var _0x3a20c9=_0x12c699;for(var _0x548d12=_0x59bd24[_0x3a20c9('0x2e5')](_0x32227f),_0x28b8b8=0x0;_0x28b8b8<_0x548d12[_0x3a20c9('0x1d1')];_0x28b8b8++)for(var _0x275d12=_0x548d12[_0x28b8b8][0x0],_0x2b7a9c=_0x548d12[_0x28b8b8][0x1],_0x224eb4=-0x2;_0x224eb4<=0x2;_0x224eb4++)for(var _0x3288e2=-0x2;_0x3288e2<=0x2;_0x3288e2++)-0x2===_0x224eb4||0x2===_0x224eb4||-0x2===_0x3288e2||0x2===_0x3288e2||0x0===_0x224eb4&&0x0===_0x3288e2?_0x4aad52[_0x3a20c9('0x8ab')](_0x275d12+_0x224eb4,_0x2b7a9c+_0x3288e2,!0x0,!0x0):_0x4aad52[_0x3a20c9('0x8ab')](_0x275d12+_0x224eb4,_0x2b7a9c+_0x3288e2,!0x1,!0x0);}(_0x1e401d,_0x3dc860),_0x3f4d1e(_0x1e401d,_0x432742,0x0),_0x3dc860>=0x7&&function(_0x11fea3,_0x4f80e0){var _0x9def14=_0x12c699;for(var _0xee653a,_0x365eaf,_0xb715ea,_0x11e754=_0x11fea3[_0x9def14('0xbd0')],_0xba1c7d=_0x525a21[_0x9def14('0x574')](_0x4f80e0),_0x188f59=0x0;_0x188f59<0x12;_0x188f59++)_0xee653a=Math[_0x9def14('0xd25')](_0x188f59/0x3),_0x365eaf=_0x188f59%0x3+_0x11e754-0x8-0x3,_0xb715ea=0x1==(_0xba1c7d>>_0x188f59&0x1),_0x11fea3[_0x9def14('0x8ab')](_0xee653a,_0x365eaf,_0xb715ea,!0x0),_0x11fea3[_0x9def14('0x8ab')](_0x365eaf,_0xee653a,_0xb715ea,!0x0);}(_0x1e401d,_0x3dc860),function(_0xf52fe1,_0x20b5f0){var _0x2fb6fa=_0x12c699;for(var _0x41d19d=_0xf52fe1[_0x2fb6fa('0xbd0')],_0x2dc329=-0x1,_0x22e441=_0x41d19d-0x1,_0x4d9ad2=0x7,_0x1a2adc=0x0,_0x3ec948=_0x41d19d-0x1;_0x3ec948>0x0;_0x3ec948-=0x2)for(0x6===_0x3ec948&&_0x3ec948--;;){for(var _0x195db3=0x0;_0x195db3<0x2;_0x195db3++)if(!_0xf52fe1[_0x2fb6fa('0x8e9')](_0x22e441,_0x3ec948-_0x195db3)){var _0x5ae434=!0x1;_0x1a2adc<_0x20b5f0[_0x2fb6fa('0x1d1')]&&(_0x5ae434=0x1==(_0x20b5f0[_0x1a2adc]>>>_0x4d9ad2&0x1)),_0xf52fe1[_0x2fb6fa('0x8ab')](_0x22e441,_0x3ec948-_0x195db3,_0x5ae434),-0x1===--_0x4d9ad2&&(_0x1a2adc++,_0x4d9ad2=0x7);}if((_0x22e441+=_0x2dc329)<0x0||_0x41d19d<=_0x22e441){_0x22e441-=_0x2dc329,_0x2dc329=-_0x2dc329;break;}}}(_0x1e401d,_0x5a9d20),isNaN(_0x265b6e)&&(_0x265b6e=_0x3a7a32[_0x12c699('0xb2c')](_0x1e401d,_0x3f4d1e['bind'](null,_0x1e401d,_0x432742))),_0x3a7a32[_0x12c699('0xc1d')](_0x265b6e,_0x1e401d),_0x3f4d1e(_0x1e401d,_0x432742,_0x265b6e),{'modules':_0x1e401d,'version':_0x3dc860,'errorCorrectionLevel':_0x432742,'maskPattern':_0x265b6e,'segments':_0x1cdc2f};}_0x3b355e[_0x375e7a('0xd9d')]=function(_0x48872e,_0x477777){var _0x264272=_0x375e7a;if(void 0x0===_0x48872e||''===_0x48872e)throw new Error('No\x20input\x20text');var _0x511079,_0x226759,_0x19f2cf=_0xa6695b['M'];return void 0x0!==_0x477777&&(_0x19f2cf=_0xa6695b['from'](_0x477777['errorCorrectionLevel'],_0xa6695b['M']),_0x511079=_0x525a21[_0x264272('0x868')](_0x477777[_0x264272('0x83')]),_0x226759=_0x3a7a32[_0x264272('0x868')](_0x477777[_0x264272('0xcc3')]),_0x477777[_0x264272('0xdb2')]&&_0x565fbc[_0x264272('0xb05')](_0x477777[_0x264272('0xdb2')])),_0x2bfe4a(_0x48872e,_0x511079,_0x19f2cf,_0x226759);};},{'../utils/buffer':0x22,'./alignment-pattern':0x9,'./bit-buffer':0xb,'./bit-matrix':0xc,'./error-correction-code':0xe,'./error-correction-level':0xf,'./finder-pattern':0x10,'./format-info':0x11,'./mask-pattern':0x14,'./mode':0x15,'./reed-solomon-encoder':0x19,'./segments':0x1b,'./utils':0x1c,'./version':0x1e,'isarray':0x5}],0x19:[function(_0x15762e,_0x4fc80f,_0x1d52a8){var _0x38c642=_0x3e44,_0xb9d155=_0x15762e(_0x38c642('0xc2d')),_0x455baf=_0x15762e(_0x38c642('0x879')),_0x1e2043=_0x15762e(_0x38c642('0xa53'))[_0x38c642('0x825')];function _0x11fd1e(_0x7707aa){var _0xbd1d23=_0x38c642;this[_0xbd1d23('0xcc6')]=void 0x0,this[_0xbd1d23('0x49d')]=_0x7707aa,this['degree']&&this['initialize'](this[_0xbd1d23('0x49d')]);}_0x11fd1e[_0x38c642('0x3ec')]['initialize']=function(_0x1432a0){var _0x4d4e99=_0x38c642;this[_0x4d4e99('0x49d')]=_0x1432a0,this[_0x4d4e99('0xcc6')]=_0x455baf[_0x4d4e99('0x84f')](this['degree']);},_0x11fd1e[_0x38c642('0x3ec')][_0x38c642('0x7e7')]=function(_0xd5e44b){var _0x228b33=_0x38c642;if(!this[_0x228b33('0xcc6')])throw new Error(_0x228b33('0x12d'));var _0x379c89=_0xb9d155[_0x228b33('0xdc4')](this[_0x228b33('0x49d')]),_0x11191f=_0x1e2043[_0x228b33('0x49e')]([_0xd5e44b,_0x379c89],_0xd5e44b[_0x228b33('0x1d1')]+this[_0x228b33('0x49d')]),_0x29d2a5=_0x455baf[_0x228b33('0x735')](_0x11191f,this[_0x228b33('0xcc6')]),_0x50ed3d=this[_0x228b33('0x49d')]-_0x29d2a5[_0x228b33('0x1d1')];if(_0x50ed3d>0x0){var _0x4d4139=_0xb9d155['alloc'](this[_0x228b33('0x49d')]);return _0x29d2a5[_0x228b33('0xcaf')](_0x4d4139,_0x50ed3d),_0x4d4139;}return _0x29d2a5;},_0x4fc80f[_0x38c642('0x91e')]=_0x11fd1e;},{'../utils/buffer':0x22,'./polynomial':0x17,'buffer':0x2}],0x1a:[function(_0x45caf9,_0x458fe9,_0x1c4689){var _0x1c8663=_0x3e44,_0x14f453='(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+',_0x107799=_0x1c8663('0xd1')+(_0x14f453=_0x14f453[_0x1c8663('0x95e')](/u/g,'\x5cu'))+')(?:.|[\x0d\x0a]))+';_0x1c4689[_0x1c8663('0x88')]=new RegExp(_0x14f453,'g'),_0x1c4689['BYTE_KANJI']=new RegExp(_0x1c8663('0x4c9'),'g'),_0x1c4689[_0x1c8663('0x81')]=new RegExp(_0x107799,'g'),_0x1c4689[_0x1c8663('0x517')]=new RegExp(_0x1c8663('0x40e'),'g'),_0x1c4689[_0x1c8663('0x80a')]=new RegExp(_0x1c8663('0xba7'),'g');var _0x28548d=new RegExp('^'+_0x14f453+'$'),_0x58cdd3=new RegExp(_0x1c8663('0x236')),_0x137422=new RegExp('^[A-Z0-9\x20$%*+\x5c-./:]+$');_0x1c4689[_0x1c8663('0x74')]=function(_0x55f606){return _0x28548d['test'](_0x55f606);},_0x1c4689[_0x1c8663('0x136')]=function(_0x20732a){var _0x4807d9=_0x1c8663;return _0x58cdd3[_0x4807d9('0xb03')](_0x20732a);},_0x1c4689['testAlphanumeric']=function(_0x336d9b){var _0x2493e8=_0x1c8663;return _0x137422[_0x2493e8('0xb03')](_0x336d9b);};},{}],0x1b:[function(_0x794c41,_0xf366ae,_0x15aa13){var _0x4a6553=_0x3e44,_0x56a238=_0x794c41(_0x4a6553('0x3a')),_0x220f51=_0x794c41(_0x4a6553('0x90f')),_0x5372de=_0x794c41(_0x4a6553('0xa67')),_0x59c2c4=_0x794c41(_0x4a6553('0x4b5')),_0x8864c2=_0x794c41('./kanji-data'),_0x463cdf=_0x794c41(_0x4a6553('0x23d')),_0x45456f=_0x794c41(_0x4a6553('0xb4b')),_0x110366=_0x794c41(_0x4a6553('0xc95'));function _0x3307d6(_0x26ca14){var _0x10e87f=_0x4a6553;return unescape(encodeURIComponent(_0x26ca14))[_0x10e87f('0x1d1')];}function _0x573622(_0x4642df,_0x18d196,_0x3a1212){var _0x4390c3=_0x4a6553;for(var _0x19cdb6,_0x5656ed=[];null!==(_0x19cdb6=_0x4642df[_0x4390c3('0x203')](_0x3a1212));)_0x5656ed[_0x4390c3('0x8cd')]({'data':_0x19cdb6[0x0],'index':_0x19cdb6[_0x4390c3('0xb1a')],'mode':_0x18d196,'length':_0x19cdb6[0x0][_0x4390c3('0x1d1')]});return _0x5656ed;}function _0x3c47d9(_0x48c163){var _0x463dd7=_0x4a6553,_0x4606c7,_0x19c259,_0x45a599=_0x573622(_0x463cdf[_0x463dd7('0x517')],_0x56a238[_0x463dd7('0x517')],_0x48c163),_0x42a415=_0x573622(_0x463cdf['ALPHANUMERIC'],_0x56a238[_0x463dd7('0x80a')],_0x48c163);return _0x45456f[_0x463dd7('0x56b')]()?(_0x4606c7=_0x573622(_0x463cdf[_0x463dd7('0x81')],_0x56a238[_0x463dd7('0x81')],_0x48c163),_0x19c259=_0x573622(_0x463cdf[_0x463dd7('0x88')],_0x56a238['KANJI'],_0x48c163)):(_0x4606c7=_0x573622(_0x463cdf[_0x463dd7('0x6e4')],_0x56a238[_0x463dd7('0x81')],_0x48c163),_0x19c259=[]),_0x45a599[_0x463dd7('0x49e')](_0x42a415,_0x4606c7,_0x19c259)[_0x463dd7('0x96a')](function(_0xe77066,_0x555f93){var _0xd0b3ab=_0x463dd7;return _0xe77066[_0xd0b3ab('0xb1a')]-_0x555f93['index'];})[_0x463dd7('0x4ad')](function(_0x5d26cf){var _0x329679=_0x463dd7;return{'data':_0x5d26cf[_0x329679('0xc8f')],'mode':_0x5d26cf[_0x329679('0xa50')],'length':_0x5d26cf[_0x329679('0x1d1')]};});}function _0x8c0158(_0x558a66,_0x550481){var _0x46ffd9=_0x4a6553;switch(_0x550481){case _0x56a238['NUMERIC']:return _0x220f51[_0x46ffd9('0x321')](_0x558a66);case _0x56a238['ALPHANUMERIC']:return _0x5372de['getBitsLength'](_0x558a66);case _0x56a238[_0x46ffd9('0x88')]:return _0x8864c2[_0x46ffd9('0x321')](_0x558a66);case _0x56a238['BYTE']:return _0x59c2c4[_0x46ffd9('0x321')](_0x558a66);}}function _0x463654(_0x229dfc,_0x1b2e35){var _0x4e7aa3=_0x4a6553,_0x12995e,_0x3153f9=_0x56a238['getBestModeForData'](_0x229dfc);if((_0x12995e=_0x56a238[_0x4e7aa3('0x868')](_0x1b2e35,_0x3153f9))!==_0x56a238[_0x4e7aa3('0x81')]&&_0x12995e[_0x4e7aa3('0xc11')]<_0x3153f9['bit'])throw new Error('\x22'+_0x229dfc+_0x4e7aa3('0x29d')+_0x56a238[_0x4e7aa3('0x8dc')](_0x12995e)+_0x4e7aa3('0x6c0')+_0x56a238[_0x4e7aa3('0x8dc')](_0x3153f9));switch(_0x12995e!==_0x56a238[_0x4e7aa3('0x88')]||_0x45456f[_0x4e7aa3('0x56b')]()||(_0x12995e=_0x56a238['BYTE']),_0x12995e){case _0x56a238['NUMERIC']:return new _0x220f51(_0x229dfc);case _0x56a238[_0x4e7aa3('0x80a')]:return new _0x5372de(_0x229dfc);case _0x56a238[_0x4e7aa3('0x88')]:return new _0x8864c2(_0x229dfc);case _0x56a238[_0x4e7aa3('0x81')]:return new _0x59c2c4(_0x229dfc);}}_0x15aa13[_0x4a6553('0xc4d')]=function(_0x6a58be){var _0x2ecfa1=_0x4a6553;return _0x6a58be[_0x2ecfa1('0xc16')](function(_0x5b94b9,_0x2630d9){var _0xc186b2=_0x2ecfa1;return _0xc186b2('0x4ba')==typeof _0x2630d9?_0x5b94b9[_0xc186b2('0x8cd')](_0x463654(_0x2630d9,null)):_0x2630d9[_0xc186b2('0xc8f')]&&_0x5b94b9['push'](_0x463654(_0x2630d9[_0xc186b2('0xc8f')],_0x2630d9[_0xc186b2('0xa50')])),_0x5b94b9;},[]);},_0x15aa13[_0x4a6553('0xaa9')]=function(_0x3048b6,_0x3b7901){var _0x39da3a=_0x4a6553;for(var _0x3f31c6=function(_0x7b9816,_0x24432b){var _0x26129d=_0x3e44;for(var _0x437855={},_0x41982d={'start':{}},_0x1df82f=['start'],_0x719a3a=0x0;_0x719a3a<_0x7b9816[_0x26129d('0x1d1')];_0x719a3a++){for(var _0x22cccf=_0x7b9816[_0x719a3a],_0x17467b=[],_0x57f462=0x0;_0x57f462<_0x22cccf[_0x26129d('0x1d1')];_0x57f462++){var _0x3100c8=_0x22cccf[_0x57f462],_0x5292ee=''+_0x719a3a+_0x57f462;_0x17467b[_0x26129d('0x8cd')](_0x5292ee),_0x437855[_0x5292ee]={'node':_0x3100c8,'lastCount':0x0},_0x41982d[_0x5292ee]={};for(var _0x4d3359=0x0;_0x4d3359<_0x1df82f['length'];_0x4d3359++){var _0x3e4eba=_0x1df82f[_0x4d3359];_0x437855[_0x3e4eba]&&_0x437855[_0x3e4eba][_0x26129d('0x4cc')][_0x26129d('0xa50')]===_0x3100c8[_0x26129d('0xa50')]?(_0x41982d[_0x3e4eba][_0x5292ee]=_0x8c0158(_0x437855[_0x3e4eba][_0x26129d('0x62b')]+_0x3100c8[_0x26129d('0x1d1')],_0x3100c8[_0x26129d('0xa50')])-_0x8c0158(_0x437855[_0x3e4eba][_0x26129d('0x62b')],_0x3100c8[_0x26129d('0xa50')]),_0x437855[_0x3e4eba][_0x26129d('0x62b')]+=_0x3100c8[_0x26129d('0x1d1')]):(_0x437855[_0x3e4eba]&&(_0x437855[_0x3e4eba][_0x26129d('0x62b')]=_0x3100c8['length']),_0x41982d[_0x3e4eba][_0x5292ee]=_0x8c0158(_0x3100c8[_0x26129d('0x1d1')],_0x3100c8[_0x26129d('0xa50')])+0x4+_0x56a238[_0x26129d('0x807')](_0x3100c8[_0x26129d('0xa50')],_0x24432b));}}_0x1df82f=_0x17467b;}for(_0x4d3359=0x0;_0x4d3359<_0x1df82f[_0x26129d('0x1d1')];_0x4d3359++)_0x41982d[_0x1df82f[_0x4d3359]][_0x26129d('0x8e0')]=0x0;return{'map':_0x41982d,'table':_0x437855};}(function(_0x2cf424){var _0x26c79e=_0x3e44;for(var _0x1b21fa=[],_0x43be5b=0x0;_0x43be5b<_0x2cf424[_0x26c79e('0x1d1')];_0x43be5b++){var _0x20ed36=_0x2cf424[_0x43be5b];switch(_0x20ed36['mode']){case _0x56a238['NUMERIC']:_0x1b21fa[_0x26c79e('0x8cd')]([_0x20ed36,{'data':_0x20ed36['data'],'mode':_0x56a238['ALPHANUMERIC'],'length':_0x20ed36['length']},{'data':_0x20ed36[_0x26c79e('0xc8f')],'mode':_0x56a238['BYTE'],'length':_0x20ed36['length']}]);break;case _0x56a238[_0x26c79e('0x80a')]:_0x1b21fa['push']([_0x20ed36,{'data':_0x20ed36[_0x26c79e('0xc8f')],'mode':_0x56a238[_0x26c79e('0x81')],'length':_0x20ed36[_0x26c79e('0x1d1')]}]);break;case _0x56a238[_0x26c79e('0x88')]:_0x1b21fa['push']([_0x20ed36,{'data':_0x20ed36['data'],'mode':_0x56a238[_0x26c79e('0x81')],'length':_0x3307d6(_0x20ed36[_0x26c79e('0xc8f')])}]);break;case _0x56a238[_0x26c79e('0x81')]:_0x1b21fa['push']([{'data':_0x20ed36[_0x26c79e('0xc8f')],'mode':_0x56a238[_0x26c79e('0x81')],'length':_0x3307d6(_0x20ed36['data'])}]);}}return _0x1b21fa;}(_0x3c47d9(_0x3048b6,_0x45456f[_0x39da3a('0x56b')]())),_0x3b7901),_0x3150a7=_0x110366[_0x39da3a('0xb16')](_0x3f31c6[_0x39da3a('0x4ad')],'start',_0x39da3a('0x8e0')),_0x1d2b40=[],_0x4be0ab=0x1;_0x4be0ab<_0x3150a7['length']-0x1;_0x4be0ab++)_0x1d2b40[_0x39da3a('0x8cd')](_0x3f31c6['table'][_0x3150a7[_0x4be0ab]]['node']);return _0x15aa13[_0x39da3a('0xc4d')](function(_0x75a6c4){var _0x52c724=_0x39da3a;return _0x75a6c4[_0x52c724('0xc16')](function(_0x45dd2d,_0x3af3a9){var _0x1fc0f7=_0x52c724,_0x9dc51=_0x45dd2d[_0x1fc0f7('0x1d1')]-0x1>=0x0?_0x45dd2d[_0x45dd2d[_0x1fc0f7('0x1d1')]-0x1]:null;return _0x9dc51&&_0x9dc51['mode']===_0x3af3a9['mode']?(_0x45dd2d[_0x45dd2d[_0x1fc0f7('0x1d1')]-0x1]['data']+=_0x3af3a9['data'],_0x45dd2d):(_0x45dd2d['push'](_0x3af3a9),_0x45dd2d);},[]);}(_0x1d2b40));},_0x15aa13[_0x4a6553('0x87d')]=function(_0x5d952e){var _0x5b9492=_0x4a6553;return _0x15aa13[_0x5b9492('0xc4d')](_0x3c47d9(_0x5d952e,_0x45456f['isKanjiModeEnabled']()));};},{'./alphanumeric-data':0xa,'./byte-data':0xd,'./kanji-data':0x13,'./mode':0x15,'./numeric-data':0x16,'./regex':0x1a,'./utils':0x1c,'dijkstrajs':0x3}],0x1c:[function(_0x134c18,_0x5e163b,_0x395f46){var _0x19849f=_0x3e44,_0x365bdc,_0x6114d8=[0x0,0x1a,0x2c,0x46,0x64,0x86,0xac,0xc4,0xf2,0x124,0x15a,0x194,0x1d2,0x214,0x245,0x28f,0x2dd,0x32f,0x385,0x3df,0x43d,0x484,0x4ea,0x554,0x5c2,0x634,0x6aa,0x724,0x781,0x803,0x889,0x913,0x9a1,0xa33,0xac9,0xb3c,0xbda,0xc7c,0xd22,0xdcc,0xe7a];_0x395f46['getSymbolSize']=function(_0x1f5d52){var _0x11faf7=_0x3e44;if(!_0x1f5d52)throw new Error('\x22version\x22\x20cannot\x20be\x20null\x20or\x20undefined');if(_0x1f5d52<0x1||_0x1f5d52>0x28)throw new Error(_0x11faf7('0x816'));return 0x4*_0x1f5d52+0x11;},_0x395f46['getSymbolTotalCodewords']=function(_0x1f861d){return _0x6114d8[_0x1f861d];},_0x395f46['getBCHDigit']=function(_0x32c0e5){for(var _0x443dc5=0x0;0x0!==_0x32c0e5;)_0x443dc5++,_0x32c0e5>>>=0x1;return _0x443dc5;},_0x395f46[_0x19849f('0xb05')]=function(_0x3ecd97){var _0x2c7e18=_0x19849f;if(_0x2c7e18('0x67')!=typeof _0x3ecd97)throw new Error(_0x2c7e18('0x53b'));_0x365bdc=_0x3ecd97;},_0x395f46[_0x19849f('0x56b')]=function(){return void 0x0!==_0x365bdc;},_0x395f46[_0x19849f('0x8ec')]=function(_0x25a8d7){return _0x365bdc(_0x25a8d7);};},{}],0x1d:[function(_0x1af518,_0x493dca,_0x25f189){var _0x112c5b=_0x3e44;_0x25f189[_0x112c5b('0x3a5')]=function(_0x3ed858){return!isNaN(_0x3ed858)&&_0x3ed858>=0x1&&_0x3ed858<=0x28;};},{}],0x1e:[function(_0x4f3079,_0x9ad5bb,_0x5e6be4){var _0x22e180=_0x3e44,_0x5ea002=_0x4f3079('./utils'),_0x3dd40d=_0x4f3079('./error-correction-code'),_0x20d53c=_0x4f3079(_0x22e180('0xaac')),_0x1e2f21=_0x4f3079(_0x22e180('0x3a')),_0x38f839=_0x4f3079('./version-check'),_0x402c42=_0x4f3079(_0x22e180('0xccd')),_0x1a935c=_0x5ea002[_0x22e180('0xa93')](0x1f25);function _0x4f3137(_0x5afa08,_0x5e56ec){var _0x578105=_0x22e180;return _0x1e2f21[_0x578105('0x807')](_0x5afa08,_0x5e56ec)+0x4;}function _0x28eafc(_0x47710f,_0x788eee){var _0x384052=0x0;return _0x47710f['forEach'](function(_0x3c6568){var _0xc0ee17=_0x3e44,_0x22ef78=_0x4f3137(_0x3c6568['mode'],_0x788eee);_0x384052+=_0x22ef78+_0x3c6568[_0xc0ee17('0x321')]();}),_0x384052;}_0x5e6be4[_0x22e180('0x868')]=function(_0xcc9caa,_0x5078bb){var _0x1261d0=_0x22e180;return _0x38f839[_0x1261d0('0x3a5')](_0xcc9caa)?parseInt(_0xcc9caa,0xa):_0x5078bb;},_0x5e6be4['getCapacity']=function(_0x1bbefa,_0x275372,_0x272df7){var _0x24ba04=_0x22e180;if(!_0x38f839[_0x24ba04('0x3a5')](_0x1bbefa))throw new Error(_0x24ba04('0x8eb'));void 0x0===_0x272df7&&(_0x272df7=_0x1e2f21['BYTE']);var _0x5d751f=0x8*(_0x5ea002[_0x24ba04('0xdac')](_0x1bbefa)-_0x3dd40d[_0x24ba04('0xaec')](_0x1bbefa,_0x275372));if(_0x272df7===_0x1e2f21[_0x24ba04('0xb6d')])return _0x5d751f;var _0x13bef2=_0x5d751f-_0x4f3137(_0x272df7,_0x1bbefa);switch(_0x272df7){case _0x1e2f21[_0x24ba04('0x517')]:return Math['floor'](_0x13bef2/0xa*0x3);case _0x1e2f21[_0x24ba04('0x80a')]:return Math[_0x24ba04('0xd25')](_0x13bef2/0xb*0x2);case _0x1e2f21['KANJI']:return Math[_0x24ba04('0xd25')](_0x13bef2/0xd);case _0x1e2f21[_0x24ba04('0x81')]:default:return Math['floor'](_0x13bef2/0x8);}},_0x5e6be4[_0x22e180('0xa1f')]=function(_0x68e3a7,_0x2ef0a0){var _0x459983=_0x22e180,_0x2bdf89,_0x3d7033=_0x20d53c[_0x459983('0x868')](_0x2ef0a0,_0x20d53c['M']);if(_0x402c42(_0x68e3a7)){if(_0x68e3a7[_0x459983('0x1d1')]>0x1)return function(_0x21f23e,_0x280621){var _0x1dc57c=_0x459983;for(var _0x270c75=0x1;_0x270c75<=0x28;_0x270c75++){if(_0x28eafc(_0x21f23e,_0x270c75)<=_0x5e6be4[_0x1dc57c('0xdaf')](_0x270c75,_0x280621,_0x1e2f21[_0x1dc57c('0xb6d')]))return _0x270c75;}}(_0x68e3a7,_0x3d7033);if(0x0===_0x68e3a7[_0x459983('0x1d1')])return 0x1;_0x2bdf89=_0x68e3a7[0x0];}else _0x2bdf89=_0x68e3a7;return function(_0x2bc87f,_0x414678,_0x54d0cf){var _0x4673e7=_0x459983;for(var _0x274f2a=0x1;_0x274f2a<=0x28;_0x274f2a++)if(_0x414678<=_0x5e6be4[_0x4673e7('0xdaf')](_0x274f2a,_0x54d0cf,_0x2bc87f))return _0x274f2a;}(_0x2bdf89[_0x459983('0xa50')],_0x2bdf89[_0x459983('0x172')](),_0x3d7033);},_0x5e6be4[_0x22e180('0x574')]=function(_0x31cc1e){var _0x24ae3a=_0x22e180;if(!_0x38f839[_0x24ae3a('0x3a5')](_0x31cc1e)||_0x31cc1e<0x7)throw new Error(_0x24ae3a('0x8eb'));for(var _0x194b31=_0x31cc1e<<0xc;_0x5ea002[_0x24ae3a('0xa93')](_0x194b31)-_0x1a935c>=0x0;)_0x194b31^=0x1f25<<_0x5ea002[_0x24ae3a('0xa93')](_0x194b31)-_0x1a935c;return _0x31cc1e<<0xc|_0x194b31;};},{'./error-correction-code':0xe,'./error-correction-level':0xf,'./mode':0x15,'./utils':0x1c,'./version-check':0x1d,'isarray':0x5}],0x1f:[function(_0x357433,_0x330d3e,_0x2d057e){var _0x431f1e=_0x3e44,_0x30e55d=_0x357433(_0x431f1e('0xb4b'));_0x2d057e['render']=function(_0x38da2e,_0x5a7750,_0xd5e209){var _0x512c47=_0x431f1e,_0x188bb3=_0xd5e209,_0x2993a4=_0x5a7750;void 0x0!==_0x188bb3||_0x5a7750&&_0x5a7750[_0x512c47('0xa7b')]||(_0x188bb3=_0x5a7750,_0x5a7750=void 0x0),_0x5a7750||(_0x2993a4=function(){var _0xd1ea6c=_0x512c47;try{return document['createElement'](_0xd1ea6c('0x2dd'));}catch(_0x33d8ba){throw new Error(_0xd1ea6c('0xa0'));}}()),_0x188bb3=_0x30e55d[_0x512c47('0x57b')](_0x188bb3);var _0x29d1bb=_0x30e55d[_0x512c47('0xd7b')](_0x38da2e[_0x512c47('0xc7e')][_0x512c47('0xbd0')],_0x188bb3),_0xea2798=_0x2993a4[_0x512c47('0xa7b')]('2d'),_0x18751b=_0xea2798[_0x512c47('0x243')](_0x29d1bb,_0x29d1bb);return _0x30e55d[_0x512c47('0xce3')](_0x18751b[_0x512c47('0xc8f')],_0x38da2e,_0x188bb3),function(_0x283f6d,_0x12d2a0,_0x59dee0){var _0x2996b9=_0x512c47;_0x283f6d['clearRect'](0x0,0x0,_0x12d2a0[_0x2996b9('0x9c3')],_0x12d2a0['height']),_0x12d2a0[_0x2996b9('0x1c8')]||(_0x12d2a0[_0x2996b9('0x1c8')]={}),_0x12d2a0[_0x2996b9('0x448')]=_0x59dee0,_0x12d2a0['width']=_0x59dee0,_0x12d2a0[_0x2996b9('0x1c8')][_0x2996b9('0x448')]=_0x59dee0+'px',_0x12d2a0[_0x2996b9('0x1c8')][_0x2996b9('0x9c3')]=_0x59dee0+'px';}(_0xea2798,_0x2993a4,_0x29d1bb),_0xea2798[_0x512c47('0x361')](_0x18751b,0x0,0x0),_0x2993a4;},_0x2d057e[_0x431f1e('0x764')]=function(_0x2cd46d,_0x28bdd0,_0x10fcd4){var _0x520089=_0x431f1e,_0x3732a7=_0x10fcd4;void 0x0!==_0x3732a7||_0x28bdd0&&_0x28bdd0[_0x520089('0xa7b')]||(_0x3732a7=_0x28bdd0,_0x28bdd0=void 0x0),_0x3732a7||(_0x3732a7={});var _0x12bc5d=_0x2d057e['render'](_0x2cd46d,_0x28bdd0,_0x3732a7),_0x3d140a=_0x3732a7[_0x520089('0xb88')]||_0x520089('0x2ad'),_0x2e94ca=_0x3732a7['rendererOpts']||{};return _0x12bc5d['toDataURL'](_0x3d140a,_0x2e94ca[_0x520089('0x484')]);};},{'./utils':0x21}],0x20:[function(_0xc75e5a,_0x43457c,_0x36093c){var _0x4ad442=_0x3e44,_0xb0b526=_0xc75e5a(_0x4ad442('0xb4b'));function _0x1cbd18(_0x24a03d,_0x41b65f){var _0x581200=_0x4ad442,_0x3714e7=_0x24a03d['a']/0xff,_0x1f424f=_0x41b65f+'=\x22'+_0x24a03d[_0x581200('0x49b')]+'\x22';return _0x3714e7<0x1?_0x1f424f+'\x20'+_0x41b65f+_0x581200('0x4c2')+_0x3714e7[_0x581200('0xca9')](0x2)[_0x581200('0x63a')](0x1)+'\x22':_0x1f424f;}function _0x5e84d7(_0x5685e7,_0x24da59,_0xb9460f){var _0x249315=_0x5685e7+_0x24da59;return void 0x0!==_0xb9460f&&(_0x249315+='\x20'+_0xb9460f),_0x249315;}_0x36093c[_0x4ad442('0x265')]=function(_0x2a28b9,_0x5cc316,_0xab7f53){var _0x9588f0=_0x4ad442,_0xcaa7dc=_0xb0b526[_0x9588f0('0x57b')](_0x5cc316),_0xfd7a0d=_0x2a28b9[_0x9588f0('0xc7e')][_0x9588f0('0xbd0')],_0x1b5261=_0x2a28b9['modules'][_0x9588f0('0xc8f')],_0x58070a=_0xfd7a0d+0x2*_0xcaa7dc[_0x9588f0('0xd9e')],_0x76a92c=_0xcaa7dc[_0x9588f0('0x8da')]['light']['a']?_0x9588f0('0x26')+_0x1cbd18(_0xcaa7dc[_0x9588f0('0x8da')][_0x9588f0('0xb70')],_0x9588f0('0x609'))+'\x20d=\x22M0\x200h'+_0x58070a+'v'+_0x58070a+_0x9588f0('0x32f'):'',_0x47ba8c=_0x9588f0('0x26')+_0x1cbd18(_0xcaa7dc[_0x9588f0('0x8da')][_0x9588f0('0xdb1')],_0x9588f0('0x2a1'))+_0x9588f0('0xb10')+function(_0x7b4cb8,_0x1c1937,_0x11c9c2){var _0x1eb592=_0x9588f0;for(var _0x598948='',_0x536f7b=0x0,_0x2ca4a4=!0x1,_0x2f1e00=0x0,_0x1e5565=0x0;_0x1e5565<_0x7b4cb8[_0x1eb592('0x1d1')];_0x1e5565++){var _0x468696=Math[_0x1eb592('0xd25')](_0x1e5565%_0x1c1937),_0xa64e18=Math[_0x1eb592('0xd25')](_0x1e5565/_0x1c1937);_0x468696||_0x2ca4a4||(_0x2ca4a4=!0x0),_0x7b4cb8[_0x1e5565]?(_0x2f1e00++,_0x1e5565>0x0&&_0x468696>0x0&&_0x7b4cb8[_0x1e5565-0x1]||(_0x598948+=_0x2ca4a4?_0x5e84d7('M',_0x468696+_0x11c9c2,0.5+_0xa64e18+_0x11c9c2):_0x5e84d7('m',_0x536f7b,0x0),_0x536f7b=0x0,_0x2ca4a4=!0x1),_0x468696+0x1<_0x1c1937&&_0x7b4cb8[_0x1e5565+0x1]||(_0x598948+=_0x5e84d7('h',_0x2f1e00),_0x2f1e00=0x0)):_0x536f7b++;}return _0x598948;}(_0x1b5261,_0xfd7a0d,_0xcaa7dc[_0x9588f0('0xd9e')])+_0x9588f0('0xcfe'),_0x392ff3='viewBox=\x220\x200\x20'+_0x58070a+'\x20'+_0x58070a+'\x22',_0x45c093=_0x9588f0('0x713')+(_0xcaa7dc[_0x9588f0('0x9c3')]?_0x9588f0('0x8cf')+_0xcaa7dc[_0x9588f0('0x9c3')]+_0x9588f0('0x8e8')+_0xcaa7dc['width']+'\x22\x20':'')+_0x392ff3+'\x20shape-rendering=\x22crispEdges\x22>'+_0x76a92c+_0x47ba8c+'\x0a';return _0x9588f0('0x67')==typeof _0xab7f53&&_0xab7f53(null,_0x45c093),_0x45c093;};},{'./utils':0x21}],0x21:[function(_0x107c2d,_0xcbce,_0x4467e7){var _0x2ccff9=_0x3e44;function _0x49d582(_0x528deb){var _0x18eef8=_0x3e44;if('number'==typeof _0x528deb&&(_0x528deb=_0x528deb[_0x18eef8('0x8dc')]()),_0x18eef8('0x4ba')!=typeof _0x528deb)throw new Error('Color\x20should\x20be\x20defined\x20as\x20hex\x20string');var _0x4b6db1=_0x528deb[_0x18eef8('0x63a')]()[_0x18eef8('0x95e')]('#','')[_0x18eef8('0x5a0')]('');if(_0x4b6db1[_0x18eef8('0x1d1')]<0x3||0x5===_0x4b6db1[_0x18eef8('0x1d1')]||_0x4b6db1['length']>0x8)throw new Error(_0x18eef8('0xce4')+_0x528deb);0x3!==_0x4b6db1[_0x18eef8('0x1d1')]&&0x4!==_0x4b6db1['length']||(_0x4b6db1=Array['prototype']['concat'][_0x18eef8('0x7da')]([],_0x4b6db1[_0x18eef8('0x4ad')](function(_0x5555a0){return[_0x5555a0,_0x5555a0];}))),0x6===_0x4b6db1[_0x18eef8('0x1d1')]&&_0x4b6db1['push']('F','F');var _0x9c3ef7=parseInt(_0x4b6db1[_0x18eef8('0x2ee')](''),0x10);return{'r':_0x9c3ef7>>0x18&0xff,'g':_0x9c3ef7>>0x10&0xff,'b':_0x9c3ef7>>0x8&0xff,'a':0xff&_0x9c3ef7,'hex':'#'+_0x4b6db1[_0x18eef8('0x63a')](0x0,0x6)['join']('')};}_0x4467e7[_0x2ccff9('0x57b')]=function(_0x189dc2){var _0x5f2108=_0x2ccff9;_0x189dc2||(_0x189dc2={}),_0x189dc2[_0x5f2108('0x8da')]||(_0x189dc2[_0x5f2108('0x8da')]={});var _0x591214=void 0x0===_0x189dc2[_0x5f2108('0xd9e')]||null===_0x189dc2['margin']||_0x189dc2[_0x5f2108('0xd9e')]<0x0?0x4:_0x189dc2[_0x5f2108('0xd9e')],_0x5413af=_0x189dc2[_0x5f2108('0x9c3')]&&_0x189dc2[_0x5f2108('0x9c3')]>=0x15?_0x189dc2[_0x5f2108('0x9c3')]:void 0x0,_0x4c7585=_0x189dc2['scale']||0x4;return{'width':_0x5413af,'scale':_0x5413af?0x4:_0x4c7585,'margin':_0x591214,'color':{'dark':_0x49d582(_0x189dc2[_0x5f2108('0x8da')][_0x5f2108('0xdb1')]||'#000000ff'),'light':_0x49d582(_0x189dc2[_0x5f2108('0x8da')][_0x5f2108('0xb70')]||'#ffffffff')},'type':_0x189dc2[_0x5f2108('0xb88')],'rendererOpts':_0x189dc2[_0x5f2108('0x705')]||{}};},_0x4467e7['getScale']=function(_0x3a1744,_0x168e90){var _0x39a355=_0x2ccff9;return _0x168e90[_0x39a355('0x9c3')]&&_0x168e90[_0x39a355('0x9c3')]>=_0x3a1744+0x2*_0x168e90[_0x39a355('0xd9e')]?_0x168e90[_0x39a355('0x9c3')]/(_0x3a1744+0x2*_0x168e90[_0x39a355('0xd9e')]):_0x168e90['scale'];},_0x4467e7['getImageWidth']=function(_0x102162,_0x249c66){var _0x1fe392=_0x2ccff9,_0x2c7ab9=_0x4467e7['getScale'](_0x102162,_0x249c66);return Math[_0x1fe392('0xd25')]((_0x102162+0x2*_0x249c66[_0x1fe392('0xd9e')])*_0x2c7ab9);},_0x4467e7[_0x2ccff9('0xce3')]=function(_0xd77ecd,_0x33f9c9,_0x2a7449){var _0x4697b4=_0x2ccff9;for(var _0x5eedfb=_0x33f9c9[_0x4697b4('0xc7e')][_0x4697b4('0xbd0')],_0xdf750d=_0x33f9c9[_0x4697b4('0xc7e')]['data'],_0x239261=_0x4467e7[_0x4697b4('0xb7')](_0x5eedfb,_0x2a7449),_0x2d6595=Math[_0x4697b4('0xd25')]((_0x5eedfb+0x2*_0x2a7449[_0x4697b4('0xd9e')])*_0x239261),_0x46e8f1=_0x2a7449[_0x4697b4('0xd9e')]*_0x239261,_0x2e32b1=[_0x2a7449[_0x4697b4('0x8da')][_0x4697b4('0xb70')],_0x2a7449[_0x4697b4('0x8da')][_0x4697b4('0xdb1')]],_0x5012f4=0x0;_0x5012f4<_0x2d6595;_0x5012f4++)for(var _0x5b0d75=0x0;_0x5b0d75<_0x2d6595;_0x5b0d75++){var _0x19b64c=0x4*(_0x5012f4*_0x2d6595+_0x5b0d75),_0x51a96a=_0x2a7449[_0x4697b4('0x8da')][_0x4697b4('0xb70')];if(_0x5012f4>=_0x46e8f1&&_0x5b0d75>=_0x46e8f1&&_0x5012f4<_0x2d6595-_0x46e8f1&&_0x5b0d75<_0x2d6595-_0x46e8f1)_0x51a96a=_0x2e32b1[_0xdf750d[Math[_0x4697b4('0xd25')]((_0x5012f4-_0x46e8f1)/_0x239261)*_0x5eedfb+Math[_0x4697b4('0xd25')]((_0x5b0d75-_0x46e8f1)/_0x239261)]?0x1:0x0];_0xd77ecd[_0x19b64c++]=_0x51a96a['r'],_0xd77ecd[_0x19b64c++]=_0x51a96a['g'],_0xd77ecd[_0x19b64c++]=_0x51a96a['b'],_0xd77ecd[_0x19b64c]=_0x51a96a['a'];}};},{}],0x22:[function(_0x47ebc0,_0x572f71,_0x535cd4){var _0x958b9e=_0x3e44;(function(_0x3b20b2){var _0x1e15a0=_0x3e44;'use strict';var _0x50dc9b=_0x47ebc0(_0x1e15a0('0xccd'));_0x3b20b2[_0x1e15a0('0x130')]=function(){var _0x24b190=_0x1e15a0;try{var _0x54d014=new Uint8Array(0x1);return _0x54d014[_0x24b190('0xc15')]={'__proto__':Uint8Array['prototype'],'foo':function(){return 0x2a;}},0x2a===_0x54d014['foo']();}catch(_0x327238){return!0x1;}}();var _0x82bf35=_0x3b20b2[_0x1e15a0('0x130')]?0x7fffffff:0x3fffffff;function _0x3b20b2(_0x28ee2b,_0x4dcfbb,_0x36c25b){var _0xcf14=_0x1e15a0;return _0x3b20b2[_0xcf14('0x130')]||this instanceof _0x3b20b2?_0xcf14('0x913')==typeof _0x28ee2b?_0x74b255(this,_0x28ee2b):function(_0x6241b2,_0x1e118c,_0x481ad9,_0x1d386f){var _0x3abac4=_0xcf14;if(_0x3abac4('0x913')==typeof _0x1e118c)throw new TypeError(_0x3abac4('0xbcc'));if(_0x3abac4('0x396')!=typeof ArrayBuffer&&_0x1e118c instanceof ArrayBuffer)return function(_0x1fd6bb,_0x190bcd,_0x168405,_0x4ac7cf){var _0x397870=_0x3abac4;if(_0x168405<0x0||_0x190bcd['byteLength']<_0x168405)throw new RangeError(_0x397870('0x13e'));if(_0x190bcd[_0x397870('0x738')]<_0x168405+(_0x4ac7cf||0x0))throw new RangeError(_0x397870('0x8f0'));var _0x4f2b09;return _0x4f2b09=void 0x0===_0x168405&&void 0x0===_0x4ac7cf?new Uint8Array(_0x190bcd):void 0x0===_0x4ac7cf?new Uint8Array(_0x190bcd,_0x168405):new Uint8Array(_0x190bcd,_0x168405,_0x4ac7cf),_0x3b20b2[_0x397870('0x130')]?_0x4f2b09[_0x397870('0xc15')]=_0x3b20b2['prototype']:_0x4f2b09=_0x152b58(_0x1fd6bb,_0x4f2b09),_0x4f2b09;}(_0x6241b2,_0x1e118c,_0x481ad9,_0x1d386f);if(_0x3abac4('0x4ba')==typeof _0x1e118c)return function(_0x2216b1,_0xbd7bd0){var _0x5c76b2=_0x3abac4,_0x2c01a8=0x0|_0x369194(_0xbd7bd0),_0x508be9=_0x149dde(_0x2216b1,_0x2c01a8),_0x173b92=_0x508be9[_0x5c76b2('0x72')](_0xbd7bd0);return _0x173b92!==_0x2c01a8&&(_0x508be9=_0x508be9[_0x5c76b2('0x63a')](0x0,_0x173b92)),_0x508be9;}(_0x6241b2,_0x1e118c);return function(_0xad16d6,_0x13f15f){var _0x365a85=_0x3abac4;if(_0x3b20b2[_0x365a85('0x628')](_0x13f15f)){var _0x5fb627=0x0|_0x5bea9e(_0x13f15f[_0x365a85('0x1d1')]),_0x389b78=_0x149dde(_0xad16d6,_0x5fb627);return 0x0===_0x389b78[_0x365a85('0x1d1')]||_0x13f15f[_0x365a85('0xcaf')](_0x389b78,0x0,0x0,_0x5fb627),_0x389b78;}if(_0x13f15f){if('undefined'!=typeof ArrayBuffer&&_0x13f15f[_0x365a85('0xa53')]instanceof ArrayBuffer||_0x365a85('0x1d1')in _0x13f15f)return _0x365a85('0x913')!=typeof _0x13f15f[_0x365a85('0x1d1')]||(_0x516ce5=_0x13f15f[_0x365a85('0x1d1')])!=_0x516ce5?_0x149dde(_0xad16d6,0x0):_0x152b58(_0xad16d6,_0x13f15f);if(_0x365a85('0x825')===_0x13f15f[_0x365a85('0xb88')]&&Array[_0x365a85('0x9f2')](_0x13f15f[_0x365a85('0xc8f')]))return _0x152b58(_0xad16d6,_0x13f15f[_0x365a85('0xc8f')]);}var _0x516ce5;throw new TypeError(_0x365a85('0x665'));}(_0x6241b2,_0x1e118c);}(this,_0x28ee2b,_0x4dcfbb,_0x36c25b):new _0x3b20b2(_0x28ee2b,_0x4dcfbb,_0x36c25b);}function _0x5bea9e(_0x35a417){var _0x3b8e42=_0x1e15a0;if(_0x35a417>=_0x82bf35)throw new RangeError(_0x3b8e42('0x6c5')+_0x82bf35['toString'](0x10)+'\x20bytes');return 0x0|_0x35a417;}function _0x149dde(_0x5bf6b1,_0x1dc3d1){var _0x32ee6b=_0x1e15a0,_0x34b1ce;return _0x3b20b2[_0x32ee6b('0x130')]?(_0x34b1ce=new Uint8Array(_0x1dc3d1))[_0x32ee6b('0xc15')]=_0x3b20b2[_0x32ee6b('0x3ec')]:(null===(_0x34b1ce=_0x5bf6b1)&&(_0x34b1ce=new _0x3b20b2(_0x1dc3d1)),_0x34b1ce[_0x32ee6b('0x1d1')]=_0x1dc3d1),_0x34b1ce;}function _0x74b255(_0x11acfc,_0x1868f8){var _0xdf8151=_0x1e15a0,_0x2ecd60=_0x149dde(_0x11acfc,_0x1868f8<0x0?0x0:0x0|_0x5bea9e(_0x1868f8));if(!_0x3b20b2[_0xdf8151('0x130')])for(var _0x514cd5=0x0;_0x514cd5<_0x1868f8;++_0x514cd5)_0x2ecd60[_0x514cd5]=0x0;return _0x2ecd60;}function _0x152b58(_0x33674b,_0x201c5c){var _0x2f6a8f=_0x1e15a0;for(var _0x462f1e=_0x201c5c['length']<0x0?0x0:0x0|_0x5bea9e(_0x201c5c[_0x2f6a8f('0x1d1')]),_0x2a3173=_0x149dde(_0x33674b,_0x462f1e),_0x2fa738=0x0;_0x2fa738<_0x462f1e;_0x2fa738+=0x1)_0x2a3173[_0x2fa738]=0xff&_0x201c5c[_0x2fa738];return _0x2a3173;}function _0x3fa1cc(_0x3e35da,_0x4c7666){var _0x1932f9=_0x1e15a0,_0x4aafa1;_0x4c7666=_0x4c7666||0x1/0x0;for(var _0x424b40=_0x3e35da[_0x1932f9('0x1d1')],_0x562559=null,_0x1170f7=[],_0x15a657=0x0;_0x15a657<_0x424b40;++_0x15a657){if((_0x4aafa1=_0x3e35da[_0x1932f9('0xd08')](_0x15a657))>0xd7ff&&_0x4aafa1<0xe000){if(!_0x562559){if(_0x4aafa1>0xdbff){(_0x4c7666-=0x3)>-0x1&&_0x1170f7[_0x1932f9('0x8cd')](0xef,0xbf,0xbd);continue;}if(_0x15a657+0x1===_0x424b40){(_0x4c7666-=0x3)>-0x1&&_0x1170f7[_0x1932f9('0x8cd')](0xef,0xbf,0xbd);continue;}_0x562559=_0x4aafa1;continue;}if(_0x4aafa1<0xdc00){(_0x4c7666-=0x3)>-0x1&&_0x1170f7['push'](0xef,0xbf,0xbd),_0x562559=_0x4aafa1;continue;}_0x4aafa1=0x10000+(_0x562559-0xd800<<0xa|_0x4aafa1-0xdc00);}else _0x562559&&(_0x4c7666-=0x3)>-0x1&&_0x1170f7[_0x1932f9('0x8cd')](0xef,0xbf,0xbd);if(_0x562559=null,_0x4aafa1<0x80){if((_0x4c7666-=0x1)<0x0)break;_0x1170f7[_0x1932f9('0x8cd')](_0x4aafa1);}else{if(_0x4aafa1<0x800){if((_0x4c7666-=0x2)<0x0)break;_0x1170f7[_0x1932f9('0x8cd')](_0x4aafa1>>0x6|0xc0,0x3f&_0x4aafa1|0x80);}else{if(_0x4aafa1<0x10000){if((_0x4c7666-=0x3)<0x0)break;_0x1170f7[_0x1932f9('0x8cd')](_0x4aafa1>>0xc|0xe0,_0x4aafa1>>0x6&0x3f|0x80,0x3f&_0x4aafa1|0x80);}else{if(!(_0x4aafa1<0x110000))throw new Error(_0x1932f9('0xa8b'));if((_0x4c7666-=0x4)<0x0)break;_0x1170f7[_0x1932f9('0x8cd')](_0x4aafa1>>0x12|0xf0,_0x4aafa1>>0xc&0x3f|0x80,_0x4aafa1>>0x6&0x3f|0x80,0x3f&_0x4aafa1|0x80);}}}}return _0x1170f7;}function _0x369194(_0x1defa5){var _0x2a1d7f=_0x1e15a0;return _0x3b20b2[_0x2a1d7f('0x628')](_0x1defa5)?_0x1defa5[_0x2a1d7f('0x1d1')]:'undefined'!=typeof ArrayBuffer&&_0x2a1d7f('0x67')==typeof ArrayBuffer[_0x2a1d7f('0x69f')]&&(ArrayBuffer[_0x2a1d7f('0x69f')](_0x1defa5)||_0x1defa5 instanceof ArrayBuffer)?_0x1defa5[_0x2a1d7f('0x738')]:(_0x2a1d7f('0x4ba')!=typeof _0x1defa5&&(_0x1defa5=''+_0x1defa5),0x0===_0x1defa5[_0x2a1d7f('0x1d1')]?0x0:_0x3fa1cc(_0x1defa5)[_0x2a1d7f('0x1d1')]);}_0x3b20b2[_0x1e15a0('0x130')]&&(_0x3b20b2[_0x1e15a0('0x3ec')]['__proto__']=Uint8Array[_0x1e15a0('0x3ec')],_0x3b20b2[_0x1e15a0('0xc15')]=Uint8Array,_0x1e15a0('0x396')!=typeof Symbol&&Symbol[_0x1e15a0('0x31e')]&&_0x3b20b2[Symbol[_0x1e15a0('0x31e')]]===_0x3b20b2&&Object[_0x1e15a0('0x2cd')](_0x3b20b2,Symbol[_0x1e15a0('0x31e')],{'value':null,'configurable':!0x0,'enumerable':!0x1,'writable':!0x1})),_0x3b20b2[_0x1e15a0('0x3ec')][_0x1e15a0('0x72')]=function(_0x3c90d5,_0x527221,_0x31f251){var _0x18e6d6=_0x1e15a0;void 0x0===_0x527221||void 0x0===_0x31f251&&_0x18e6d6('0x4ba')==typeof _0x527221?(_0x31f251=this['length'],_0x527221=0x0):isFinite(_0x527221)&&(_0x527221|=0x0,isFinite(_0x31f251)?_0x31f251|=0x0:_0x31f251=void 0x0);var _0x4853a=this[_0x18e6d6('0x1d1')]-_0x527221;if((void 0x0===_0x31f251||_0x31f251>_0x4853a)&&(_0x31f251=_0x4853a),_0x3c90d5[_0x18e6d6('0x1d1')]>0x0&&(_0x31f251<0x0||_0x527221<0x0)||_0x527221>this['length'])throw new RangeError(_0x18e6d6('0x9fd'));return function(_0x4fb5f8,_0x5e5642,_0x29bf8c,_0x2313e1){var _0x441a14=_0x18e6d6;return function(_0x4ed524,_0x46e88f,_0x439729,_0x4345eb){for(var _0x57c204=0x0;_0x57c204<_0x4345eb&&!(_0x57c204+_0x439729>=_0x46e88f['length']||_0x57c204>=_0x4ed524['length']);++_0x57c204)_0x46e88f[_0x57c204+_0x439729]=_0x4ed524[_0x57c204];return _0x57c204;}(_0x3fa1cc(_0x5e5642,_0x4fb5f8[_0x441a14('0x1d1')]-_0x29bf8c),_0x4fb5f8,_0x29bf8c,_0x2313e1);}(this,_0x3c90d5,_0x527221,_0x31f251);},_0x3b20b2[_0x1e15a0('0x3ec')][_0x1e15a0('0x63a')]=function(_0x44d836,_0x57affd){var _0x53a478=_0x1e15a0,_0x3daedc,_0x173a1a=this[_0x53a478('0x1d1')];if((_0x44d836=~~_0x44d836)<0x0?(_0x44d836+=_0x173a1a)<0x0&&(_0x44d836=0x0):_0x44d836>_0x173a1a&&(_0x44d836=_0x173a1a),(_0x57affd=void 0x0===_0x57affd?_0x173a1a:~~_0x57affd)<0x0?(_0x57affd+=_0x173a1a)<0x0&&(_0x57affd=0x0):_0x57affd>_0x173a1a&&(_0x57affd=_0x173a1a),_0x57affd<_0x44d836&&(_0x57affd=_0x44d836),_0x3b20b2['TYPED_ARRAY_SUPPORT'])(_0x3daedc=this['subarray'](_0x44d836,_0x57affd))[_0x53a478('0xc15')]=_0x3b20b2[_0x53a478('0x3ec')];else{var _0x48b9e0=_0x57affd-_0x44d836;_0x3daedc=new _0x3b20b2(_0x48b9e0,void 0x0);for(var _0x22d00b=0x0;_0x22d00b<_0x48b9e0;++_0x22d00b)_0x3daedc[_0x22d00b]=this[_0x22d00b+_0x44d836];}return _0x3daedc;},_0x3b20b2[_0x1e15a0('0x3ec')][_0x1e15a0('0xcaf')]=function(_0x138173,_0x41b7f9,_0xf02a0b,_0x3c658c){var _0x878612=_0x1e15a0;if(_0xf02a0b||(_0xf02a0b=0x0),_0x3c658c||0x0===_0x3c658c||(_0x3c658c=this[_0x878612('0x1d1')]),_0x41b7f9>=_0x138173[_0x878612('0x1d1')]&&(_0x41b7f9=_0x138173['length']),_0x41b7f9||(_0x41b7f9=0x0),_0x3c658c>0x0&&_0x3c658c<_0xf02a0b&&(_0x3c658c=_0xf02a0b),_0x3c658c===_0xf02a0b)return 0x0;if(0x0===_0x138173[_0x878612('0x1d1')]||0x0===this['length'])return 0x0;if(_0x41b7f9<0x0)throw new RangeError(_0x878612('0x50b'));if(_0xf02a0b<0x0||_0xf02a0b>=this[_0x878612('0x1d1')])throw new RangeError(_0x878612('0x9db'));if(_0x3c658c<0x0)throw new RangeError(_0x878612('0xa9a'));_0x3c658c>this[_0x878612('0x1d1')]&&(_0x3c658c=this[_0x878612('0x1d1')]),_0x138173[_0x878612('0x1d1')]-_0x41b7f9<_0x3c658c-_0xf02a0b&&(_0x3c658c=_0x138173['length']-_0x41b7f9+_0xf02a0b);var _0x2efe44,_0x59496c=_0x3c658c-_0xf02a0b;if(this===_0x138173&&_0xf02a0b<_0x41b7f9&&_0x41b7f9<_0x3c658c)for(_0x2efe44=_0x59496c-0x1;_0x2efe44>=0x0;--_0x2efe44)_0x138173[_0x2efe44+_0x41b7f9]=this[_0x2efe44+_0xf02a0b];else{if(_0x59496c<0x3e8||!_0x3b20b2['TYPED_ARRAY_SUPPORT'])for(_0x2efe44=0x0;_0x2efe44<_0x59496c;++_0x2efe44)_0x138173[_0x2efe44+_0x41b7f9]=this[_0x2efe44+_0xf02a0b];else Uint8Array[_0x878612('0x3ec')][_0x878612('0x8ab')][_0x878612('0x928')](_0x138173,this['subarray'](_0xf02a0b,_0xf02a0b+_0x59496c),_0x41b7f9);}return _0x59496c;},_0x3b20b2[_0x1e15a0('0x3ec')][_0x1e15a0('0x609')]=function(_0x5300ec,_0x206db9,_0x37036c){var _0x25b32e=_0x1e15a0;if('string'==typeof _0x5300ec){if(_0x25b32e('0x4ba')==typeof _0x206db9?(_0x206db9=0x0,_0x37036c=this['length']):_0x25b32e('0x4ba')==typeof _0x37036c&&(_0x37036c=this[_0x25b32e('0x1d1')]),0x1===_0x5300ec[_0x25b32e('0x1d1')]){var _0x9328b0=_0x5300ec[_0x25b32e('0xd08')](0x0);_0x9328b0<0x100&&(_0x5300ec=_0x9328b0);}}else'number'==typeof _0x5300ec&&(_0x5300ec&=0xff);if(_0x206db9<0x0||this[_0x25b32e('0x1d1')]<_0x206db9||this['length']<_0x37036c)throw new RangeError(_0x25b32e('0x6f0'));if(_0x37036c<=_0x206db9)return this;var _0x4f91d8;if(_0x206db9>>>=0x0,_0x37036c=void 0x0===_0x37036c?this[_0x25b32e('0x1d1')]:_0x37036c>>>0x0,_0x5300ec||(_0x5300ec=0x0),_0x25b32e('0x913')==typeof _0x5300ec)for(_0x4f91d8=_0x206db9;_0x4f91d8<_0x37036c;++_0x4f91d8)this[_0x4f91d8]=_0x5300ec;else{var _0x3a94a0=_0x3b20b2[_0x25b32e('0x628')](_0x5300ec)?_0x5300ec:new _0x3b20b2(_0x5300ec),_0x295410=_0x3a94a0[_0x25b32e('0x1d1')];for(_0x4f91d8=0x0;_0x4f91d8<_0x37036c-_0x206db9;++_0x4f91d8)this[_0x4f91d8+_0x206db9]=_0x3a94a0[_0x4f91d8%_0x295410];}return this;},_0x3b20b2[_0x1e15a0('0x49e')]=function(_0x20b829,_0x334b80){var _0x52eb43=_0x1e15a0;if(!_0x50dc9b(_0x20b829))throw new TypeError(_0x52eb43('0x818'));if(0x0===_0x20b829[_0x52eb43('0x1d1')])return _0x149dde(null,0x0);var _0x474330;if(void 0x0===_0x334b80)for(_0x334b80=0x0,_0x474330=0x0;_0x474330<_0x20b829[_0x52eb43('0x1d1')];++_0x474330)_0x334b80+=_0x20b829[_0x474330]['length'];var _0x3e2aca=_0x74b255(null,_0x334b80),_0x861f2e=0x0;for(_0x474330=0x0;_0x474330<_0x20b829[_0x52eb43('0x1d1')];++_0x474330){var _0x1c69b8=_0x20b829[_0x474330];if(!_0x3b20b2[_0x52eb43('0x628')](_0x1c69b8))throw new TypeError(_0x52eb43('0x818'));_0x1c69b8['copy'](_0x3e2aca,_0x861f2e),_0x861f2e+=_0x1c69b8[_0x52eb43('0x1d1')];}return _0x3e2aca;},_0x3b20b2[_0x1e15a0('0x738')]=_0x369194,_0x3b20b2[_0x1e15a0('0x3ec')][_0x1e15a0('0x85e')]=!0x0,_0x3b20b2[_0x1e15a0('0x628')]=function(_0x49c9a3){var _0x4bb4fe=_0x1e15a0;return!(null==_0x49c9a3||!_0x49c9a3[_0x4bb4fe('0x85e')]);},_0x572f71[_0x1e15a0('0x91e')]['alloc']=function(_0x2e405c){var _0x525991=new _0x3b20b2(_0x2e405c);return _0x525991['fill'](0x0),_0x525991;},_0x572f71[_0x1e15a0('0x91e')][_0x1e15a0('0x868')]=function(_0x412d9d){return new _0x3b20b2(_0x412d9d);};}[_0x958b9e('0x928')](this,_0x47ebc0('buffer')[_0x958b9e('0x825')]));},{'buffer':0x2,'isarray':0x5}],0x23:[function(_0xe9d45e,_0x2bcc2f,_0x1ec4d0){var _0x18d8ec=_0x3e44;'use strict';var _0x56c8be=_0x228839(_0xe9d45e(_0x18d8ec('0x6ee'))),_0xa8e6cb=_0x228839(_0xe9d45e(_0x18d8ec('0x7bd')));function _0x228839(_0x4c1272){var _0x1a002b=_0x18d8ec;return _0x4c1272&&_0x4c1272[_0x1a002b('0x866')]?_0x4c1272:{'default':_0x4c1272};}function _0x3dcf87(_0x5e140b){var _0x120d1a=_0x18d8ec;return(_0x3dcf87=_0x120d1a('0x67')==typeof Symbol&&_0x120d1a('0xd77')==typeof Symbol[_0x120d1a('0x303')]?function(_0x590b8d){return typeof _0x590b8d;}:function(_0x75264f){var _0xce798f=_0x120d1a;return _0x75264f&&'function'==typeof Symbol&&_0x75264f[_0xce798f('0xbe8')]===Symbol&&_0x75264f!==Symbol['prototype']?_0xce798f('0xd77'):typeof _0x75264f;})(_0x5e140b);}function _0x2e1c8(_0x49bbf0,_0x547308){if(!(_0x49bbf0 instanceof _0x547308))throw new TypeError('Cannot\x20call\x20a\x20class\x20as\x20a\x20function');}function _0x18efc0(_0x59e814,_0xa9cf1a){var _0x55ea1=_0x18d8ec;for(var _0x15e36f=0x0;_0x15e36f<_0xa9cf1a['length'];_0x15e36f++){var _0x386d2b=_0xa9cf1a[_0x15e36f];_0x386d2b['enumerable']=_0x386d2b[_0x55ea1('0x836')]||!0x1,_0x386d2b[_0x55ea1('0x249')]=!0x0,_0x55ea1('0x9b6')in _0x386d2b&&(_0x386d2b[_0x55ea1('0xc28')]=!0x0),Object[_0x55ea1('0x2cd')](_0x59e814,_0x386d2b[_0x55ea1('0xcb6')],_0x386d2b);}}function _0x2f924a(_0x6d9531,_0x309c52,_0x4f205b){var _0x5e0663=_0x18d8ec;return _0x309c52&&_0x18efc0(_0x6d9531[_0x5e0663('0x3ec')],_0x309c52),_0x4f205b&&_0x18efc0(_0x6d9531,_0x4f205b),_0x6d9531;}function _0x3545c8(_0x11add5){return function(){var _0x29d43c=_0x3e44,_0x5b2117,_0x323cd6=_0x5e1a47(_0x11add5);if(_0xfb765c()){var _0x1930b5=_0x5e1a47(this)[_0x29d43c('0xbe8')];_0x5b2117=Reflect['construct'](_0x323cd6,arguments,_0x1930b5);}else _0x5b2117=_0x323cd6[_0x29d43c('0x7da')](this,arguments);return _0x540b1a(this,_0x5b2117);};}function _0x540b1a(_0x4a4a3d,_0x399dea){var _0x4d84b0=_0x18d8ec;return!_0x399dea||_0x4d84b0('0x669')!==_0x3dcf87(_0x399dea)&&_0x4d84b0('0x67')!=typeof _0x399dea?function(_0x49c2fa){var _0x16bfb4=_0x4d84b0;if(void 0x0===_0x49c2fa)throw new ReferenceError(_0x16bfb4('0xba4'));return _0x49c2fa;}(_0x4a4a3d):_0x399dea;}function _0xfb765c(){var _0x9c4170=_0x18d8ec;if(_0x9c4170('0x396')==typeof Reflect||!Reflect[_0x9c4170('0xa71')])return!0x1;if(Reflect[_0x9c4170('0xa71')][_0x9c4170('0x886')])return!0x1;if(_0x9c4170('0x67')==typeof Proxy)return!0x0;try{return Date[_0x9c4170('0x3ec')][_0x9c4170('0x8dc')][_0x9c4170('0x928')](Reflect['construct'](Date,[],function(){})),!0x0;}catch(_0x7ef69f){return!0x1;}}function _0x5e1a47(_0x457f9d){var _0x3d9d54=_0x18d8ec;return(_0x5e1a47=Object[_0x3d9d54('0x16')]?Object[_0x3d9d54('0x418')]:function(_0x16ad02){var _0x276d85=_0x3d9d54;return _0x16ad02[_0x276d85('0xc15')]||Object[_0x276d85('0x418')](_0x16ad02);})(_0x457f9d);}function _0x47d9b3(_0x50b5ec,_0x52130e){var _0xd16c37=_0x18d8ec;if('function'!=typeof _0x52130e&&null!==_0x52130e)throw new TypeError('Super\x20expression\x20must\x20either\x20be\x20null\x20or\x20a\x20function');_0x50b5ec[_0xd16c37('0x3ec')]=Object[_0xd16c37('0xd9d')](_0x52130e&&_0x52130e[_0xd16c37('0x3ec')],{'constructor':{'value':_0x50b5ec,'writable':!0x0,'configurable':!0x0}}),_0x52130e&&_0x494eb3(_0x50b5ec,_0x52130e);}function _0x494eb3(_0x38ef51,_0x55cbc7){var _0x2fbd88=_0x18d8ec;return(_0x494eb3=Object[_0x2fbd88('0x16')]||function(_0x2d1b26,_0x1ddfeb){var _0x5e6524=_0x2fbd88;return _0x2d1b26[_0x5e6524('0xc15')]=_0x1ddfeb,_0x2d1b26;})(_0x38ef51,_0x55cbc7);}var _0x5d652b=function(_0x2cef77){var _0x25c5f1=_0x18d8ec;_0x47d9b3(_0x33c1c3,_0x2cef77);var _0xd76225=_0x3545c8(_0x33c1c3);function _0x33c1c3(){var _0x3581ee=_0x3e44;return _0x2e1c8(this,_0x33c1c3),_0xd76225[_0x3581ee('0x7da')](this,arguments);}return _0x2f924a(_0x33c1c3,[{'key':_0x25c5f1('0xc58'),'value':function(){var _0x9e4713=_0x25c5f1;return['id',_0x9e4713('0x9e')];}},{'key':_0x25c5f1('0x6f7'),'value':function(){var _0x13d7e8=_0x25c5f1;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':_0x13d7e8('0x8bd')}];}},{'key':_0x25c5f1('0x59d'),'value':function(){var _0x202ea7=_0x25c5f1;return[['id',{'label':'ID','type':_0x202ea7('0xb0f')}],[_0x202ea7('0x9e'),{'label':_0x202ea7('0x8bd'),'type':'text','validation':''}]];}}]),_0x33c1c3;}(_0x56c8be[_0x18d8ec('0x53')]),_0x444dff=function(_0x2d6ada){var _0x450dd4=_0x18d8ec;_0x47d9b3(_0x5430f7,_0x2d6ada);var _0x55da53=_0x3545c8(_0x5430f7);function _0x5430f7(_0x13c0a1,_0x5ddf57,_0x1ff816,_0x5261c6){var _0x21d74c=_0x3e44,_0x655d28;return _0x2e1c8(this,_0x5430f7),(_0x655d28=_0x55da53[_0x21d74c('0x928')](this,_0x13c0a1,_0x5ddf57,_0x1ff816,_0x5261c6))[_0x21d74c('0x4db')]=_0x21d74c('0x85c'),_0x655d28[_0x21d74c('0x3b3')]=_0x21d74c('0x8fe'),_0x655d28[_0x21d74c('0x46b')]='overtime',_0x655d28;}return _0x2f924a(_0x5430f7,[{'key':_0x450dd4('0xc58'),'value':function(){var _0x4af242=_0x450dd4;return['id',_0x4af242('0x1a0'),_0x4af242('0x2d7'),'start_time',_0x4af242('0x15c'),_0x4af242('0xa86'),_0x4af242('0x90d')];}},{'key':'getHeaders','value':function(){var _0x49b1c6=_0x450dd4;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':_0x49b1c6('0x2bb')},{'sTitle':_0x49b1c6('0x9e6')},{'sTitle':_0x49b1c6('0x2af')},{'sTitle':'End\x20Time'},{'sTitle':_0x49b1c6('0x680')},{'sTitle':_0x49b1c6('0xad1')}];}},{'key':_0x450dd4('0x59d'),'value':function(){var _0x433fc2=_0x450dd4;return[['id',{'label':'ID','type':_0x433fc2('0xb0f')}],[_0x433fc2('0x1a0'),{'label':_0x433fc2('0x2bb'),'type':_0x433fc2('0xdbb'),'sort':_0x433fc2('0x3b9'),'allow-null':!0x1,'remote-source':[_0x433fc2('0x2bb'),'id',_0x433fc2('0x1aa'),_0x433fc2('0xb72')]}],[_0x433fc2('0x2d7'),{'label':'Category','type':'select2','allow-null':!0x1,'remote-source':['OvertimeCategory','id',_0x433fc2('0x9e')]}],[_0x433fc2('0x18'),{'label':'Start\x20Time','type':'datetime','validation':''}],[_0x433fc2('0x15c'),{'label':_0x433fc2('0x429'),'type':_0x433fc2('0x44c'),'validation':''}],[_0x433fc2('0xa86'),{'label':_0x433fc2('0x680'),'type':_0x433fc2('0xdbb'),'allow-null':!0x0,'null=label':'none','remote-source':[_0x433fc2('0x680'),'id','name']}],['notes',{'label':_0x433fc2('0x50a'),'type':_0x433fc2('0x219'),'validation':_0x433fc2('0x3b9')}]];}}]),_0x5430f7;}(_0xa8e6cb[_0x18d8ec('0x53')]);_0x2bcc2f[_0x18d8ec('0x91e')]={'OvertimeCategoryAdapter':_0x5d652b,'EmployeeOvertimeAdminAdapter':_0x444dff};},{'../../../api/AdapterBase':0x27,'../../../api/ApproveAdminAdapter':0x28}],0x24:[function(_0xc7562,_0x1f45a9,_0x4ab6c9){var _0x2a1873=_0x3e44;'use strict';var _0xe5e4e9,_0x2a7b17=(_0xe5e4e9=_0xc7562(_0x2a1873('0x6ee')))&&_0xe5e4e9['__esModule']?_0xe5e4e9:{'default':_0xe5e4e9};function _0x2e2993(_0x543e86){var _0x28cc2a=_0x2a1873;return(_0x2e2993=_0x28cc2a('0x67')==typeof Symbol&&_0x28cc2a('0xd77')==typeof Symbol[_0x28cc2a('0x303')]?function(_0x285493){return typeof _0x285493;}:function(_0x34627e){var _0x24d9e3=_0x28cc2a;return _0x34627e&&_0x24d9e3('0x67')==typeof Symbol&&_0x34627e[_0x24d9e3('0xbe8')]===Symbol&&_0x34627e!==Symbol[_0x24d9e3('0x3ec')]?_0x24d9e3('0xd77'):typeof _0x34627e;})(_0x543e86);}function _0x267e74(_0x5a722e,_0x467df2){var _0x5a4038=_0x2a1873;if(!(_0x5a722e instanceof _0x467df2))throw new TypeError(_0x5a4038('0xc2c'));}function _0x309974(_0x3ddc8d,_0x3db340){var _0x2865b8=_0x2a1873;for(var _0x53e80d=0x0;_0x53e80d<_0x3db340[_0x2865b8('0x1d1')];_0x53e80d++){var _0x941d41=_0x3db340[_0x53e80d];_0x941d41[_0x2865b8('0x836')]=_0x941d41[_0x2865b8('0x836')]||!0x1,_0x941d41[_0x2865b8('0x249')]=!0x0,_0x2865b8('0x9b6')in _0x941d41&&(_0x941d41[_0x2865b8('0xc28')]=!0x0),Object[_0x2865b8('0x2cd')](_0x3ddc8d,_0x941d41[_0x2865b8('0xcb6')],_0x941d41);}}function _0x47a90f(_0x2ac49e,_0x207856,_0x29af39){var _0xbb34d6=_0x2a1873;return _0x207856&&_0x309974(_0x2ac49e[_0xbb34d6('0x3ec')],_0x207856),_0x29af39&&_0x309974(_0x2ac49e,_0x29af39),_0x2ac49e;}function _0x51d783(_0x4511c1){return function(){var _0x2fb619=_0x3e44,_0x143746,_0x37c88a=_0x5344b8(_0x4511c1);if(_0x41a100()){var _0x3aa952=_0x5344b8(this)[_0x2fb619('0xbe8')];_0x143746=Reflect['construct'](_0x37c88a,arguments,_0x3aa952);}else _0x143746=_0x37c88a[_0x2fb619('0x7da')](this,arguments);return _0x107c9a(this,_0x143746);};}function _0x107c9a(_0x13f50e,_0x29cc87){var _0x321337=_0x2a1873;return!_0x29cc87||_0x321337('0x669')!==_0x2e2993(_0x29cc87)&&_0x321337('0x67')!=typeof _0x29cc87?function(_0x389016){var _0x4b369c=_0x321337;if(void 0x0===_0x389016)throw new ReferenceError(_0x4b369c('0xba4'));return _0x389016;}(_0x13f50e):_0x29cc87;}function _0x41a100(){var _0x34175f=_0x2a1873;if(_0x34175f('0x396')==typeof Reflect||!Reflect[_0x34175f('0xa71')])return!0x1;if(Reflect[_0x34175f('0xa71')][_0x34175f('0x886')])return!0x1;if(_0x34175f('0x67')==typeof Proxy)return!0x0;try{return Date[_0x34175f('0x3ec')][_0x34175f('0x8dc')]['call'](Reflect['construct'](Date,[],function(){})),!0x0;}catch(_0x5e38ce){return!0x1;}}function _0x5344b8(_0x255d4a){var _0x2537b9=_0x2a1873;return(_0x5344b8=Object[_0x2537b9('0x16')]?Object[_0x2537b9('0x418')]:function(_0x3e5c95){var _0x3a0c5c=_0x2537b9;return _0x3e5c95[_0x3a0c5c('0xc15')]||Object['getPrototypeOf'](_0x3e5c95);})(_0x255d4a);}function _0x1c01c0(_0x3ee2dd,_0x3bd27b){var _0xc81334=_0x2a1873;if(_0xc81334('0x67')!=typeof _0x3bd27b&&null!==_0x3bd27b)throw new TypeError(_0xc81334('0xc9'));_0x3ee2dd[_0xc81334('0x3ec')]=Object[_0xc81334('0xd9d')](_0x3bd27b&&_0x3bd27b['prototype'],{'constructor':{'value':_0x3ee2dd,'writable':!0x0,'configurable':!0x0}}),_0x3bd27b&&_0x5377b6(_0x3ee2dd,_0x3bd27b);}function _0x5377b6(_0x27020d,_0x1203e0){var _0x3720c5=_0x2a1873;return(_0x5377b6=Object[_0x3720c5('0x16')]||function(_0x1f4947,_0x279396){var _0x573b5e=_0x3720c5;return _0x1f4947[_0x573b5e('0xc15')]=_0x279396,_0x1f4947;})(_0x27020d,_0x1203e0);}var _0x5299bb=function(_0x111c6a){var _0x519078=_0x2a1873;_0x1c01c0(_0x5216a9,_0x111c6a);var _0x234c5c=_0x51d783(_0x5216a9);function _0x5216a9(_0x2813b3,_0x2ee03d,_0x2bd165,_0x5c590a){var _0x273fec=_0x3e44,_0x55298b;return _0x267e74(this,_0x5216a9),(_0x55298b=_0x234c5c[_0x273fec('0x928')](this,_0x2813b3,_0x2ee03d,_0x2bd165,_0x5c590a))[_0x273fec('0xb54')](),_0x55298b;}return _0x47a90f(_0x5216a9,[{'key':_0x519078('0xb54'),'value':function(){var _0x524298=_0x519078;this[_0x524298('0x5b1')]=[['id',{'label':'ID','type':'hidden'}],['name',{'label':_0x524298('0x8bd'),'type':'label','validation':''}],[_0x524298('0x7b9'),{'label':'Parameters','type':_0x524298('0xd4b'),'validation':_0x524298('0x3b9')}]],this[_0x524298('0x822')]=!0x1;}},{'key':_0x519078('0x1c6'),'value':function(){var _0x4f8fa0=_0x519078;this[_0x4f8fa0('0x5b1')]=[['id',{'label':'ID','type':_0x4f8fa0('0xb0f')}],['name',{'label':_0x4f8fa0('0x8bd'),'type':_0x4f8fa0('0x551'),'validation':''}],['parameters',{'label':_0x4f8fa0('0xdc3'),'type':_0x4f8fa0('0xd4b'),'validation':_0x4f8fa0('0x3b9')}]];}},{'key':_0x519078('0x45'),'value':function(_0x57d510){this['remoteFieldsExists']=_0x57d510;}},{'key':_0x519078('0xc58'),'value':function(){var _0x100ae2=_0x519078;return['id',_0x100ae2('0xa55'),_0x100ae2('0x9e'),_0x100ae2('0x2f1'),_0x100ae2('0x7b9')];}},{'key':'getHeaders','value':function(){var _0x26e0b7=_0x519078;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':'','bSortable':!0x1,'sWidth':_0x26e0b7('0x140')},{'sTitle':'Name','sWidth':_0x26e0b7('0xaf4')},{'sTitle':_0x26e0b7('0x760')},{'sTitle':_0x26e0b7('0xdc3'),'bVisible':!0x1}];}},{'key':_0x519078('0x59d'),'value':function(){var _0x3a8bea=_0x519078;return this[_0x3a8bea('0x5b1')];}},{'key':_0x519078('0xb99'),'value':function(_0x5f0522){var _0x5155c7=_0x519078,_0x154e7a=this;this[_0x5155c7('0x1c6')]();var _0x5b42d4=this[_0x5155c7('0x5b1')]['length'],_0x50f93f=[];this[_0x5155c7('0x822')]=!0x1;for(var _0x108f04=0x0;_0x108f04<_0x5b42d4;_0x108f04++)if(_0x5155c7('0xd4b')===this[_0x5155c7('0x5b1')][_0x108f04][0x1]['type']){var _0xe9592=JSON[_0x5155c7('0xb50')](_0x5f0522[this[_0x5155c7('0x5b1')][_0x108f04][0x0]]);_0x50f93f['push'](this[_0x5155c7('0x5b1')][_0x108f04][0x0]),_0xe9592[_0x5155c7('0x7ed')](function(_0x189ca8){var _0x2a58a5=_0x5155c7;_0x154e7a[_0x2a58a5('0x5b1')]['push'](_0x189ca8),void 0x0!==_0x189ca8[0x1]['remote-source']&&null!=_0x189ca8[0x1]['remote-source']&&(_0x154e7a[_0x2a58a5('0x822')]=!0x0);});}var _0x3122b2=[];_0x154e7a[_0x5155c7('0x5b1')][_0x5155c7('0x7ed')](function(_0x1c1eab){var _0x2600e0=_0x5155c7;jQuery[_0x2600e0('0x5f7')](_0x1c1eab[0x0],_0x50f93f)<0x0&&_0x3122b2[_0x2600e0('0x8cd')](_0x1c1eab);}),_0x154e7a[_0x5155c7('0x5b1')]=_0x3122b2;}},{'key':'renderForm','value':function(_0x1f10be){var _0x249ce7=_0x519078,_0x1e4a9b=this;if(this[_0x249ce7('0xb99')](_0x1f10be),this['remoteFieldsExists'])this[_0x249ce7('0x62d')](function(){_0x1e4a9b['renderFormNew'](_0x1f10be);});else this[_0x249ce7('0x62d')](),_0x1e4a9b[_0x249ce7('0x71f')](_0x1f10be);this[_0x249ce7('0xc9e')]=_0x1f10be;}},{'key':_0x519078('0x71f'),'value':function(_0x156bd7){var _0x10df34=_0x519078,_0x45e22e=[];null!=_0x156bd7&&void 0x0!==_0x156bd7||(this[_0x10df34('0xb61')]=null),this[_0x10df34('0xf5')](_0x156bd7);for(var _0x27ee56,_0x37865e=this['templates'][_0x10df34('0xb1d')],_0x1a1c94='',_0x4a7277=this[_0x10df34('0x59d')](),_0x2a8598=0x0;_0x2a8598<_0x4a7277[_0x10df34('0x1d1')];_0x2a8598++){var _0x529e69=this[_0x10df34('0x76f')](_0x4a7277[_0x2a8598][0x0]);if(''===_0x529e69||void 0x0===_0x529e69)_0x1a1c94+=this[_0x10df34('0x41e')](_0x4a7277[_0x2a8598]);else{var _0x5180d8=_0x156bd7[_0x529e69];''!==_0x5180d8&&null!=_0x5180d8&&void 0x0!==_0x5180d8&&''!==_0x5180d8[_0x10df34('0x773')]()?_0x1a1c94+=this[_0x10df34('0x41e')](JSON[_0x10df34('0xb50')](_0x5180d8)):_0x1a1c94+=this[_0x10df34('0x41e')](_0x4a7277[_0x2a8598]);}}_0x37865e=(_0x37865e=_0x37865e[_0x10df34('0x95e')](/_id_/g,''[_0x10df34('0x49e')](this['getTableName'](),_0x10df34('0x7a0'))))[_0x10df34('0x95e')](/_fields_/g,_0x1a1c94);var _0xdb6fbe=this[_0x10df34('0xc5c')](0xe);this[_0x10df34('0xa28')]?(_0x27ee56=$(_0x10df34('0x1b1')))[_0x10df34('0x41a')]('id',_0xdb6fbe):_0x27ee56=$('#'[_0x10df34('0x49e')](this[_0x10df34('0x6d8')](),'Form')),_0x27ee56[_0x10df34('0x826')](_0x37865e),_0x27ee56[_0x10df34('0xdb8')]('.datefield')[_0x10df34('0x2b4')]({'viewMode':0x2}),_0x27ee56['find'](_0x10df34('0x91c'))[_0x10df34('0x90b')]({'language':'en','pickDate':!0x1}),_0x27ee56[_0x10df34('0xdb8')](_0x10df34('0x883'))[_0x10df34('0x90b')]({'language':'en'}),_0x27ee56[_0x10df34('0xdb8')](_0x10df34('0x5de'))[_0x10df34('0x2a4')](),_0x27ee56['find'](_0x10df34('0x266'))[_0x10df34('0x30c')](function(){var _0x4bd46=_0x10df34;$(this)[_0x4bd46('0xdbb')]()['select2'](_0x4bd46('0x19f'),$(this)['find'](_0x4bd46('0x904'))[_0x4bd46('0x19f')]());}),_0x27ee56['find'](_0x10df34('0x7d0'))['each'](function(){var _0x520d2e=_0x10df34;$(this)[_0x520d2e('0xdbb')]()['on'](_0x520d2e('0x96d'),function(_0x2a83b3){var _0x325270=_0x520d2e,_0x4591b6=$(this)[_0x325270('0x9dd')](_0x325270('0xb7f')),_0x328030=_0x4591b6['find'](_0x325270('0x941'))[_0x325270('0x448')]();_0x4591b6[_0x325270('0x448')](parseInt(_0x328030,0xa));});}),_0x27ee56[_0x10df34('0xdb8')](_0x10df34('0xd39'))[_0x10df34('0x30c')](function(){var _0xb40013=_0x10df34;_0x45e22e[_0xb40013('0x8cd')]($(this)[_0xb40013('0x41a')]('id'));});for(var _0x901e60=0x0;_0x901e60<_0x4a7277[_0x10df34('0x1d1')];_0x901e60++)'datagroup'===_0x4a7277[_0x901e60][0x1][_0x10df34('0xb88')]&&_0x27ee56[_0x10df34('0xdb8')]('#'[_0x10df34('0x49e')](_0x4a7277[_0x901e60][0x0]))['data'](_0x10df34('0xb94'),_0x4a7277[_0x901e60]);if(!0x1===this[_0x10df34('0x7af')]?_0x27ee56[_0x10df34('0xdb8')](_0x10df34('0x927'))[_0x10df34('0x8b7')]():(_0x27ee56[_0x10df34('0xdb8')]('.saveBtn')[_0x10df34('0x1bd')](),_0x27ee56[_0x10df34('0xdb8')](_0x10df34('0x927'))[_0x10df34('0xc8f')](_0x10df34('0xa33'),this),_0x27ee56[_0x10df34('0xdb8')](_0x10df34('0x927'))['on'](_0x10df34('0x67b'),function(){var _0x34684b=_0x10df34;return null!=$(this)[_0x34684b('0xc8f')]('modJs')['saveSuccessItemCallback']&&void 0x0!==$(this)[_0x34684b('0xc8f')](_0x34684b('0xa33'))['saveSuccessItemCallback']?$(this)[_0x34684b('0xc8f')](_0x34684b('0xa33'))['save']($(this)['data'](_0x34684b('0xa33'))[_0x34684b('0x11b')](),$(this)[_0x34684b('0xc8f')](_0x34684b('0xa33'))[_0x34684b('0x486')]):$(this)[_0x34684b('0xc8f')](_0x34684b('0xa33'))[_0x34684b('0xb0b')](),!0x1;})),!0x1===this['showCancel']?_0x27ee56[_0x10df34('0xdb8')]('.cancelBtn')['remove']():(_0x27ee56[_0x10df34('0xdb8')](_0x10df34('0xd3d'))[_0x10df34('0x1bd')](),_0x27ee56['find'](_0x10df34('0xd3d'))[_0x10df34('0xc8f')](_0x10df34('0xa33'),this),_0x27ee56['find'](_0x10df34('0xd3d'))['on']('click',function(){var _0x475dba=_0x10df34;return $(this)['data'](_0x475dba('0xa33'))[_0x475dba('0x5c1')](),!0x1;})),this['showFormOnPopup']){this[_0x10df34('0xcc4')](_0x10df34('0xa2d'),'',null,null,!0x0),$(_0x10df34('0x5a6'))['html'](''),$(_0x10df34('0x5a6'))[_0x10df34('0x113')](_0x27ee56);for(var _0x414a74=0x0;_0x414a74<_0x45e22e['length'];_0x414a74++)$('#'[_0x10df34('0x49e')](_0x45e22e[_0x414a74]))[_0x10df34('0xc8f')](_0x10df34('0x617'),new SignaturePad(document['getElementById'](_0x45e22e[_0x414a74])));void 0x0!==_0x156bd7&&null!=_0x156bd7&&this['fillForm'](_0x156bd7,'#'[_0x10df34('0x49e')](_0xdb6fbe));}else{$('#'[_0x10df34('0x49e')](this[_0x10df34('0x6d8')](),'Form'))[_0x10df34('0x388')](),$('#'['concat'](this['getTableName']()))[_0x10df34('0x79b')]();for(var _0x173b8b=0x0;_0x173b8b<_0x45e22e[_0x10df34('0x1d1')];_0x173b8b++)$('#'[_0x10df34('0x49e')](_0x45e22e[_0x173b8b]))[_0x10df34('0xc8f')](_0x10df34('0x617'),new SignaturePad(document[_0x10df34('0x803')](_0x45e22e[_0x173b8b])));void 0x0!==_0x156bd7&&null!=_0x156bd7&&this['fillForm'](_0x156bd7);}this[_0x10df34('0xbfc')](_0x156bd7,_0x27ee56);}},{'key':_0x519078('0x3cd'),'value':function(_0x552fbd,_0x311d44){var _0xddcc7f=_0x519078,_0x5cb224='';return _0x5cb224=(_0x5cb224=_0x5cb224[_0xddcc7f('0x95e')](/_id_/g,_0x552fbd))['replace'](/_BASE_/g,this[_0xddcc7f('0xadb')]);}},{'key':_0x519078('0x755'),'value':function(_0x5e238e,_0x47c907){var _0x2431ef=_0x519078,_0x3897af,_0x58c775=_0x47c907[0x0];if(_0x3897af=(_0x3897af=0x0===_0x58c775['indexOf'](_0x2431ef('0x871'))?_0x2431ef('0x625')[_0x2431ef('0x49e')](_0x58c775,'\x22\x20target=\x22_blank\x22\x20style=\x22font-size:14px;font-weight:bold;\x22>Download\x20Report\x20\x20'):'0x0&&delete this[_0x18a40c('0xc8f')][_0x2587dd[_0x31f644]];}}]),_0x5ca9b7;}(),_0x190260=function(){var _0x1c8957=_0x16804c;function _0x2493eb(_0x184e16){_0x421499(this,_0x2493eb),this['storage']=_0x184e16||new _0xdf05ba();}return _0x4ea5a9(_0x2493eb,[{'key':_0x1c8957('0x21b'),'value':function(_0x5b07de,_0x579fd6){var _0x379cad=_0x1c8957,_0x4286cf=''[_0x379cad('0x49e')](_0x5b07de,'|');for(var _0x4f24e7 in _0x579fd6)_0x4286cf+=''['concat'](_0x4f24e7,'=')[_0x379cad('0x49e')](_0x579fd6[_0x4f24e7],'|');return _0x4286cf;}},{'key':_0x1c8957('0xd92'),'value':function(_0x2a5b64){var _0xcb4712=_0x1c8957;this[_0xcb4712('0xaa0')][_0xcb4712('0x4bf')]('t='['concat'](_0x2a5b64));}},{'key':_0x1c8957('0xae9'),'value':function(_0x43b041){var _0x5b25b1=_0x1c8957,_0x3d383a=this[_0x5b25b1('0xaa0')][_0x5b25b1('0x226')](_0x43b041);return _0x3d383a||null;}},{'key':_0x1c8957('0x18a'),'value':function(_0x3f38c2,_0x18e818){var _0xe55b50=_0x1c8957;return void 0x0!==_0x18e818[_0xe55b50('0x90d')]&&null!=_0x18e818[_0xe55b50('0x90d')]&&_0xe55b50('0xaf3')!==_0x18e818[_0xe55b50('0x90d')]?null:(this['storage'][_0xe55b50('0xafa')](_0x3f38c2,_0x18e818),_0x18e818);}}]),_0x2493eb;}();_0x45bc1c[_0x16804c('0x53')]=_0x190260;},{}],0x27:[function(_0x224200,_0x370bb0,_0x57d99d){var _0xaaf320=_0x3e44;'use strict';Object[_0xaaf320('0x2cd')](_0x57d99d,_0xaaf320('0x866'),{'value':!0x0}),_0x57d99d[_0xaaf320('0x53')]=void 0x0;var _0x1284a9=_0xea7e59(_0x224200(_0xaaf320('0x403'))),_0x266d8d=_0xea7e59(_0x224200(_0xaaf320('0x353'))),_0x4b6cc0=_0xea7e59(_0x224200('../api-common/RequestCache')),_0x50161d=_0xea7e59(_0x224200('./MasterDataReader'));function _0xea7e59(_0x3f48d2){var _0x19bee6=_0xaaf320;return _0x3f48d2&&_0x3f48d2[_0x19bee6('0x866')]?_0x3f48d2:{'default':_0x3f48d2};}function _0x10d488(_0x291f48){var _0x57878b=_0xaaf320;return(_0x10d488='function'==typeof Symbol&&_0x57878b('0xd77')==typeof Symbol[_0x57878b('0x303')]?function(_0x42f3c2){return typeof _0x42f3c2;}:function(_0x2aec4f){var _0x3008d5=_0x57878b;return _0x2aec4f&&_0x3008d5('0x67')==typeof Symbol&&_0x2aec4f[_0x3008d5('0xbe8')]===Symbol&&_0x2aec4f!==Symbol[_0x3008d5('0x3ec')]?_0x3008d5('0xd77'):typeof _0x2aec4f;})(_0x291f48);}function _0x3fc3df(_0x47a8a6,_0x1c7aa7){var _0x1b6cc9=_0xaaf320;for(var _0x40b4fb=0x0;_0x40b4fb<_0x1c7aa7[_0x1b6cc9('0x1d1')];_0x40b4fb++){var _0x4186e7=_0x1c7aa7[_0x40b4fb];_0x4186e7[_0x1b6cc9('0x836')]=_0x4186e7[_0x1b6cc9('0x836')]||!0x1,_0x4186e7[_0x1b6cc9('0x249')]=!0x0,'value'in _0x4186e7&&(_0x4186e7[_0x1b6cc9('0xc28')]=!0x0),Object[_0x1b6cc9('0x2cd')](_0x47a8a6,_0x4186e7['key'],_0x4186e7);}}function _0x3361c4(_0x40e72e,_0x375699){var _0x185a3f=_0xaaf320;return!_0x375699||_0x185a3f('0x669')!==_0x10d488(_0x375699)&&_0x185a3f('0x67')!=typeof _0x375699?function(_0x3c8a3a){var _0xc2d9fe=_0x185a3f;if(void 0x0===_0x3c8a3a)throw new ReferenceError(_0xc2d9fe('0xba4'));return _0x3c8a3a;}(_0x40e72e):_0x375699;}function _0x48967f(){var _0x3ef8cf=_0xaaf320;if(_0x3ef8cf('0x396')==typeof Reflect||!Reflect[_0x3ef8cf('0xa71')])return!0x1;if(Reflect['construct']['sham'])return!0x1;if('function'==typeof Proxy)return!0x0;try{return Date[_0x3ef8cf('0x3ec')]['toString'][_0x3ef8cf('0x928')](Reflect[_0x3ef8cf('0xa71')](Date,[],function(){})),!0x0;}catch(_0x2be71d){return!0x1;}}function _0xb30181(_0x3dc979){var _0x411aa0=_0xaaf320;return(_0xb30181=Object[_0x411aa0('0x16')]?Object['getPrototypeOf']:function(_0x1d3957){var _0x5ece99=_0x411aa0;return _0x1d3957[_0x5ece99('0xc15')]||Object[_0x5ece99('0x418')](_0x1d3957);})(_0x3dc979);}function _0x278a87(_0xbaa8ce,_0x10e753){var _0x58d095=_0xaaf320;return(_0x278a87=Object[_0x58d095('0x16')]||function(_0x915064,_0x4f30e6){var _0x23f8de=_0x58d095;return _0x915064[_0x23f8de('0xc15')]=_0x4f30e6,_0x915064;})(_0xbaa8ce,_0x10e753);}var _0x5c3e50=function(_0x3b9df5){var _0x3f3185=_0xaaf320;!function(_0x470bc1,_0x553119){var _0xa7a4d4=_0x3e44;if(_0xa7a4d4('0x67')!=typeof _0x553119&&null!==_0x553119)throw new TypeError(_0xa7a4d4('0xc9'));_0x470bc1[_0xa7a4d4('0x3ec')]=Object[_0xa7a4d4('0xd9d')](_0x553119&&_0x553119[_0xa7a4d4('0x3ec')],{'constructor':{'value':_0x470bc1,'writable':!0x0,'configurable':!0x0}}),_0x553119&&_0x278a87(_0x470bc1,_0x553119);}(_0xf06860,_0x3b9df5);var _0x58ab75,_0xcd4b33,_0xb9f1b5,_0x180e86,_0x3b66b2=(_0x58ab75=_0xf06860,function(){var _0x4f20cd=_0x3e44,_0x32f5a3,_0x1c759d=_0xb30181(_0x58ab75);if(_0x48967f()){var _0x53834b=_0xb30181(this)['constructor'];_0x32f5a3=Reflect['construct'](_0x1c759d,arguments,_0x53834b);}else _0x32f5a3=_0x1c759d[_0x4f20cd('0x7da')](this,arguments);return _0x3361c4(this,_0x32f5a3);});function _0xf06860(_0x4636cf,_0x2c3b30,_0x21caf5,_0xce6577){var _0x26c3a8=_0x3e44,_0x466689;return function(_0x44bcc4,_0x57ed48){if(!(_0x44bcc4 instanceof _0x57ed48))throw new TypeError('Cannot\x20call\x20a\x20class\x20as\x20a\x20function');}(this,_0xf06860),(_0x466689=_0x3b66b2[_0x26c3a8('0x928')](this))[_0x26c3a8('0x457')]=null,_0x466689[_0x26c3a8('0x1ea')]=[],_0x466689['sourceData']=[],_0x466689[_0x26c3a8('0x5c4')]=null,_0x466689[_0x26c3a8('0x7be')]=null,_0x466689[_0x26c3a8('0x195')]=null,_0x466689['currentElement']=null,_0x466689[_0x26c3a8('0x9b3')](_0x4636cf,_0x2c3b30,_0x21caf5,_0xce6577),_0x466689;}return _0xcd4b33=_0xf06860,(_0xb9f1b5=[{'key':_0x3f3185('0x9b3'),'value':function(_0x1035fd,_0x84768,_0x480df2,_0x476fe7){var _0x32d76a=_0x3f3185;this[_0x32d76a('0x457')]=baseUrl,this[_0x32d76a('0x5aa')]=_0x1035fd,this[_0x32d76a('0x894')]=null==_0x84768?_0x1035fd:_0x84768,this[_0x32d76a('0x5c4')]=null==_0x480df2?null:_0x480df2,this[_0x32d76a('0x7be')]=this[_0x32d76a('0x5c4')],this[_0x32d76a('0x195')]=null==_0x476fe7?null:_0x476fe7,this[_0x32d76a('0x48c')]('initAdapter',_0x84768),this[_0x32d76a('0x1a1')]=new _0x4b6cc0['default']();}},{'key':_0x3f3185('0xe6'),'value':function(){var _0x38dea2=_0x3f3185;this[_0x38dea2('0x92c')]=new _0x50161d[(_0x38dea2('0x53'))](this);}},{'key':_0x3f3185('0xb71'),'value':function(_0x12345a){var _0x528ddf=_0x3f3185;this['apiClient']=new _0x1284a9[(_0x528ddf('0x53'))](this['apiUrl'],_0x12345a,window[_0x528ddf('0x1c9')],!0x0);}},{'key':_0x3f3185('0x1dc'),'value':function(_0x29e462){var _0x21df65=_0x3f3185;this[_0x21df65('0x22a')]=_0x29e462;}},{'key':_0x3f3185('0xcf'),'value':function(_0x29cdc5){this['filter']=_0x29cdc5;}},{'key':'preSetFilterExternal','value':function(_0x42bc15){this['initialFilter']=_0x42bc15;}},{'key':_0x3f3185('0x4fa'),'value':function(_0x30afa7){var _0x3bd277=_0x3f3185,_0x329320=_0x30afa7;null==_0x329320&&(_0x329320=this[_0x3bd277('0x514')]),null!=_0x329320&&(this[_0x3bd277('0xcf')](_0x329320),this[_0x3bd277('0x5b3')]=!0x0,$('#'[_0x3bd277('0x49e')](this[_0x3bd277('0x6d8')](),'_resetFilters'))[_0x3bd277('0x388')](),this[_0x3bd277('0x274')]=this['getFilterString'](_0x329320));}},{'key':'getFilter','value':function(){var _0x487299=_0x3f3185;return this[_0x487299('0x5c4')];}},{'key':'setOrderBy','value':function(_0x2dd17b){this['orderBy']=_0x2dd17b;}},{'key':_0x3f3185('0x318'),'value':function(){var _0x31859a=_0x3f3185;return this[_0x31859a('0x195')];}},{'key':_0x3f3185('0x732'),'value':function(_0xf9da04){var _0x46ec45=_0x3f3185,_0x587848=this;return this[_0x46ec45('0x48c')](_0x46ec45('0x58c'),_0xf9da04),new Promise(function(_0x1a11a4,_0x5acb1d){var _0x35b167=_0x46ec45;$[_0x35b167('0x48f')](_0x587848[_0x35b167('0x457')],{'a':_0x35b167('0x58c'),'name':_0xf9da04},function(_0x38bd4e){var _0x1c3d55=_0x35b167;_0x1c3d55('0xaf3')===_0x38bd4e['status']?_0x1a11a4(_0x38bd4e['data']):_0x5acb1d();})['fail'](function(){return _0x5acb1d();});});}},{'key':_0x3f3185('0x3fb'),'value':function(_0x400f8b,_0x2ee872,_0x433da0,_0xf43588){var _0x1e970b=_0x3f3185,_0x1ef23a=this;null==_0x433da0&&(_0x433da0=!0x0),$(_0x400f8b)[_0x1e970b('0x41a')]('a','add'),$(_0x400f8b)[_0x1e970b('0x41a')]('t',this[_0x1e970b('0x5aa')]),_0x1ef23a['showLoader'](),this[_0x1e970b('0x1a1')][_0x1e970b('0xd92')](this[_0x1e970b('0x5aa')]),$[_0x1e970b('0xb2f')](this['moduleRelativeURL'],_0x400f8b,function(_0x343dce){var _0x24a08c=_0x1e970b;_0x24a08c('0xaf3')===_0x343dce[_0x24a08c('0x90d')]?_0x1ef23a[_0x24a08c('0x755')](_0x2ee872,_0x343dce['object'],_0x433da0,_0xf43588,_0x1ef23a):_0x1ef23a[_0x24a08c('0xc0e')](_0x2ee872,_0x343dce[_0x24a08c('0x669')]);},'json')[_0x1e970b('0x9f5')](function(_0xf235f1){var _0x39ac0a=_0x1e970b;0x193===_0xf235f1[_0x39ac0a('0x90d')]&&_0x1ef23a['showMessage'](_0x39ac0a('0xc24'),_0xf235f1[_0x39ac0a('0x3c7')]['message']);})['always'](function(){_0x1ef23a['hideLoader']();}),this[_0x1e970b('0x48c')](_0x1e970b('0x3fb'),this[_0x1e970b('0x894')],this['table']);}},{'key':_0x3f3185('0x755'),'value':function(_0x2ade89,_0x219c56,_0x4ad6b7,_0x5da17c,_0x7b5212){var _0xa09dad=_0x3f3185;_0x4ad6b7&&this[_0xa09dad('0x715')](_0x2ade89),this[_0xa09dad('0x62d')](),null!=_0x5da17c&&_0x5da17c[_0xa09dad('0x7da')](_0x7b5212,[_0x219c56]),this[_0xa09dad('0x48c')](_0xa09dad('0x79'),this[_0xa09dad('0x894')],this[_0xa09dad('0x5aa')]);}},{'key':_0x3f3185('0xc0e'),'value':function(_0x5d23f3,_0x5b65d5){var _0x1def8e=_0x3f3185;try{this[_0x1def8e('0x992')]();}catch(_0x429c87){}this[_0x1def8e('0xcc4')](_0x1def8e('0x208'),_0x5b65d5),this[_0x1def8e('0x48c')]('addFailed',this[_0x1def8e('0x894')],this[_0x1def8e('0x5aa')]);}},{'key':_0x3f3185('0x83a'),'value':function(_0x12e771,_0x20a603){var _0x655310=_0x3f3185,_0x3835ff=this;_0x3835ff[_0x655310('0x47f')](),this['requestCache'][_0x655310('0xd92')](this[_0x655310('0x5aa')]),$['post'](this[_0x655310('0x457')],{'t':this[_0x655310('0x5aa')],'a':'delete','id':_0x12e771},function(_0x2afe2a){var _0x2903ab=_0x655310;'SUCCESS'===_0x2afe2a[_0x2903ab('0x90d')]?_0x3835ff[_0x2903ab('0x35e')](_0x20a603,_0x2afe2a[_0x2903ab('0x669')]):_0x3835ff['deleteFailCallBack'](_0x20a603,_0x2afe2a['object']);},'json')[_0x655310('0x9f5')](function(_0x4cd571){var _0x15062c=_0x655310;0x193===_0x4cd571[_0x15062c('0x90d')]&&_0x3835ff['showMessage']('Access\x20Forbidden',_0x4cd571['responseJSON'][_0x15062c('0x64')]);})[_0x655310('0x3d')](function(){var _0x55f9cd=_0x655310;_0x3835ff[_0x55f9cd('0x2a2')]();}),this[_0x655310('0x48c')](_0x655310('0xc9d'),this[_0x655310('0x894')],this[_0x655310('0x5aa')]);}},{'key':'deleteSuccessCallBack','value':function(_0x41b5d9,_0x1ccad6){var _0xa4461b=_0x3f3185;this[_0xa4461b('0x715')](_0x41b5d9),this[_0xa4461b('0xc72')]();}},{'key':_0x3f3185('0x6c1'),'value':function(_0x17ad97,_0x58a634){var _0x153598=_0x3f3185;this['clearDeleteParams'](),this[_0x153598('0xcc4')](_0x153598('0x43c'),_0x58a634);}},{'key':_0x3f3185('0x715'),'value':function(_0x19aa0d){var _0x20e6b4=_0x3f3185,_0x493996=this;if(this[_0x20e6b4('0xa69')]())return this[_0x20e6b4('0xa8c')](this['getTableName']()),$('#'[_0x20e6b4('0x49e')](this['getTableName'](),_0x20e6b4('0xad2')))[_0x20e6b4('0x79b')](),void $('#'['concat'](this[_0x20e6b4('0x6d8')]()))[_0x20e6b4('0x388')]();var _0x2dec04=JSON[_0x20e6b4('0x263')](this['getSourceMapping']()),_0x405091='';null!==this[_0x20e6b4('0x540')]()&&(_0x405091=JSON[_0x20e6b4('0x263')](this[_0x20e6b4('0x540')]()));var _0x10214e='';null!==this['getOrderBy']()&&(_0x10214e=this[_0x20e6b4('0x318')]()),_0x2dec04=this[_0x20e6b4('0x4ec')](_0x2dec04),_0x405091=this[_0x20e6b4('0x4ec')](_0x405091),_0x493996['showLoader'](),$[_0x20e6b4('0xb2f')](this[_0x20e6b4('0x457')],{'t':this[_0x20e6b4('0x5aa')],'a':'get','sm':_0x2dec04,'ft':_0x405091,'ob':_0x10214e},function(_0xc07066){var _0x782bfd=_0x20e6b4;'SUCCESS'===_0xc07066[_0x782bfd('0x90d')]?_0x493996[_0x782bfd('0x949')](_0x19aa0d,_0xc07066[_0x782bfd('0x669')]):_0x493996[_0x782bfd('0xad')](_0x19aa0d,_0xc07066['object']);},_0x20e6b4('0xb04'))[_0x20e6b4('0x9f5')](function(_0x103e09){var _0x35247e=_0x20e6b4;0x193===_0x103e09['status']&&_0x493996['showMessage']('Access\x20Forbidden',_0x103e09['responseJSON'][_0x35247e('0x64')]);})[_0x20e6b4('0x3d')](function(){var _0x4ccc5b=_0x20e6b4;_0x493996[_0x4ccc5b('0x2a2')]();}),_0x493996['initFieldMasterData'](),this[_0x20e6b4('0x48c')](_0x20e6b4('0x715'),this[_0x20e6b4('0x894')],this[_0x20e6b4('0x5aa')]);}},{'key':_0x3f3185('0x139'),'value':function(_0x3f5f64){var _0xc1f893=_0x3f3185,_0x419caa=JSON['stringify'](this[_0xc1f893('0x49')]()),_0x14947a=JSON[_0xc1f893('0x263')](_0x3f5f64),_0x1d4785='';null!==this['getFilter']()&&(_0x1d4785=JSON[_0xc1f893('0x263')](this[_0xc1f893('0x540')]()));var _0x1b6147='';null!==this['getOrderBy']()&&(_0x1b6147=this['getOrderBy']());var _0x161e60=this[_0xc1f893('0x457')][_0xc1f893('0x95e')](_0xc1f893('0x295'),'data.php');return _0x161e60=''['concat'](_0x161e60,_0xc1f893('0x359'))['concat'](this[_0xc1f893('0x5aa')]),_0x161e60=''[_0xc1f893('0x49e')](_0x161e60,'&sm=')['concat'](this[_0xc1f893('0x4ec')](_0x419caa)),_0x161e60=''['concat'](_0x161e60,_0xc1f893('0x258'))[_0xc1f893('0x49e')](this[_0xc1f893('0x4ec')](_0x14947a)),_0x161e60=''[_0xc1f893('0x49e')](_0x161e60,'&ft=')['concat'](this[_0xc1f893('0x4ec')](_0x1d4785)),_0x161e60=''[_0xc1f893('0x49e')](_0x161e60,_0xc1f893('0x9cb'))[_0xc1f893('0x49e')](_0x1b6147),this[_0xc1f893('0xa7f')]()&&(_0x161e60=''[_0xc1f893('0x49e')](_0x161e60,_0xc1f893('0x229'))),this['remoteTableSkipProfileRestriction']()&&(_0x161e60=''[_0xc1f893('0x49e')](_0x161e60,_0xc1f893('0x1a9'))),_0x161e60;}},{'key':'isSubProfileTable','value':function(){return!0x1;}},{'key':_0x3f3185('0x23e'),'value':function(){return!0x1;}},{'key':'preProcessTableData','value':function(_0x4356ac){return _0x4356ac;}},{'key':_0x3f3185('0x949'),'value':function(_0x5c48ae,_0x283f60){var _0x2fbb05=_0x3f3185;for(var _0x38a621=[],_0x46c17b=this[_0x2fbb05('0xc58')](),_0x474c80=0x0;_0x474c80<_0x283f60['length'];_0x474c80++){for(var _0x5e1dec=[],_0x54e514=0x0;_0x54e514<_0x46c17b[_0x2fbb05('0x1d1')];_0x54e514++)_0x5e1dec[_0x54e514]=_0x283f60[_0x474c80][_0x46c17b[_0x54e514]];_0x38a621[_0x2fbb05('0x8cd')](this['preProcessTableData'](_0x5e1dec));}this[_0x2fbb05('0x116')]=_0x283f60,void 0x0!==_0x5c48ae[_0x2fbb05('0x3ad')]&&null!==_0x5c48ae['callBack']&&(void 0x0!==_0x5c48ae[_0x2fbb05('0x400')]&&null!==_0x5c48ae[_0x2fbb05('0x400')]||(_0x5c48ae[_0x2fbb05('0x400')]=[]),_0x5c48ae[_0x2fbb05('0x400')]['push'](_0x283f60),_0x5c48ae[_0x2fbb05('0x400')]['push'](_0x38a621),this[_0x2fbb05('0x7f9')](_0x5c48ae['callBack'],_0x5c48ae[_0x2fbb05('0x400')])),this[_0x2fbb05('0x1ea')]=_0x38a621,void 0x0!==_0x5c48ae[_0x2fbb05('0xa9c')]&&null!==_0x5c48ae[_0x2fbb05('0xa9c')]&&!0x0===_0x5c48ae[_0x2fbb05('0xa9c')]||(this[_0x2fbb05('0xadf')](this[_0x2fbb05('0x6d8')]()),$('#'[_0x2fbb05('0x49e')](this[_0x2fbb05('0x6d8')](),_0x2fbb05('0xad2')))[_0x2fbb05('0x79b')](),$('#'['concat'](this[_0x2fbb05('0x6d8')]()))[_0x2fbb05('0x388')]());}},{'key':_0x3f3185('0xad'),'value':function(_0x2408f5,_0xe8d1d8){}},{'key':'getElement','value':function(_0x35a465,_0x42952b,_0x50e34f){var _0x1fcca4=_0x3f3185,_0x3c965d=this,_0x28ed2c=JSON[_0x1fcca4('0x263')](this['getSourceMapping']());_0x28ed2c=this[_0x1fcca4('0x4ec')](_0x28ed2c),_0x3c965d[_0x1fcca4('0x47f')](),$[_0x1fcca4('0xb2f')](this[_0x1fcca4('0x457')],{'t':this[_0x1fcca4('0x5aa')],'a':_0x1fcca4('0x3db'),'id':_0x35a465,'sm':_0x28ed2c},function(_0x155387){var _0x1fe5eb=_0x1fcca4;'SUCCESS'===_0x155387[_0x1fe5eb('0x90d')]?(_0x50e34f&&delete _0x155387[_0x1fe5eb('0x669')]['id'],this[_0x1fe5eb('0xc18')]=_0x155387[_0x1fe5eb('0x669')],_0x3c965d[_0x1fe5eb('0x596')][_0x1fe5eb('0x7da')](_0x3c965d,[_0x42952b,_0x155387[_0x1fe5eb('0x669')]])):_0x3c965d[_0x1fe5eb('0x897')][_0x1fe5eb('0x7da')](_0x3c965d,[_0x42952b,_0x155387[_0x1fe5eb('0x669')]]);},_0x1fcca4('0xb04'))[_0x1fcca4('0x9f5')](function(_0x4da2c4){var _0x3c3850=_0x1fcca4;0x193===_0x4da2c4[_0x3c3850('0x90d')]&&_0x3c965d['showMessage'](_0x3c3850('0xc24'),_0x4da2c4[_0x3c3850('0x3c7')]['message']);})[_0x1fcca4('0x3d')](function(){_0x3c965d['hideLoader']();}),this[_0x1fcca4('0x48c')](_0x1fcca4('0x3db'),this[_0x1fcca4('0x894')],this['table']);}},{'key':_0x3f3185('0x596'),'value':function(_0x49cf7f,_0x2bbe17){var _0x3e447c=_0x3f3185;void 0x0!==_0x49cf7f[_0x3e447c('0x3ad')]&&null!==_0x49cf7f[_0x3e447c('0x3ad')]&&(void 0x0!==_0x49cf7f['callBackData']&&null!==_0x49cf7f[_0x3e447c('0x400')]||(_0x49cf7f[_0x3e447c('0x400')]=[]),_0x49cf7f[_0x3e447c('0x400')]['push'](_0x2bbe17),this[_0x3e447c('0x7f9')](_0x49cf7f[_0x3e447c('0x3ad')],_0x49cf7f[_0x3e447c('0x400')],this)),this[_0x3e447c('0xc18')]=_0x2bbe17,void 0x0!==_0x49cf7f[_0x3e447c('0xa9c')]&&null!==_0x49cf7f[_0x3e447c('0xa9c')]&&!0x0===_0x49cf7f[_0x3e447c('0xa9c')]||this[_0x3e447c('0x5a4')](_0x2bbe17);}},{'key':_0x3f3185('0x897'),'value':function(_0x10f05f,_0x5dfb04){}},{'key':_0x3f3185('0xd97'),'value':function(){return this['tableData'];}},{'key':'getTableName','value':function(){var _0x47db7b=_0x3f3185;return this[_0x47db7b('0x894')];}},{'key':'getFieldValues','value':function(_0x454c14,_0x4d49d4){var _0x17a1f8=_0x3f3185,_0x5db820=this,_0x4c1181='',_0xaf2af0='';void 0x0!==_0x454c14[0x3]&&null!==_0x454c14[0x3]&&(_0x4c1181=_0x454c14[0x3]),void 0x0!==_0x454c14[0x4]&&null!==_0x454c14[0x4]&&(_0xaf2af0=JSON['stringify'](_0x454c14[0x4]));var _0x18880d=this[_0x17a1f8('0x1a1')][_0x17a1f8('0x21b')](this[_0x17a1f8('0x457')],{'t':_0x454c14[0x0],'key':_0x454c14[0x1],'value':_0x454c14[0x2],'method':_0x4c1181,'methodParams':_0xaf2af0,'a':_0x17a1f8('0x2b2')}),_0x351c74=this[_0x17a1f8('0x1a1')]['getData'](_0x18880d);if(null!=_0x351c74)_0x17a1f8('0xaf3')===_0x351c74[_0x17a1f8('0x90d')]&&(_0x4d49d4['callBackData'][_0x17a1f8('0x8cd')](_0x351c74['data']),null!==_0x4d49d4[_0x17a1f8('0x947')]&&void 0x0!==_0x4d49d4['callBackSuccess']&&_0x4d49d4[_0x17a1f8('0x400')][_0x17a1f8('0x8cd')](_0x4d49d4[_0x17a1f8('0x947')]),_0x5db820[_0x17a1f8('0x7f9')](_0x4d49d4[_0x17a1f8('0x3ad')],_0x4d49d4['callBackData']));else{var _0xe01501=function _0x53a23e(_0x4d7fb8){var _0x45b01a=_0x17a1f8;if(_0x45b01a('0xaf3')===_0x4d7fb8['status']){_0x5db820[_0x45b01a('0x1a1')]['setData'](this[_0x45b01a('0x8f8')][_0x45b01a('0xcb6')],_0x4d7fb8);var _0x3be94a=_0x4d49d4;_0x3be94a[_0x45b01a('0x400')]=[_0x4d49d4[_0x45b01a('0x400')][0x0]],_0x3be94a[_0x45b01a('0x400')][_0x45b01a('0x8cd')](_0x4d7fb8[_0x45b01a('0xc8f')]),null!==_0x3be94a['callBackSuccess']&&void 0x0!==_0x3be94a[_0x45b01a('0x947')]&&_0x3be94a[_0x45b01a('0x400')]['push'](_0x4d49d4[_0x45b01a('0x947')]),_0x5db820[_0x45b01a('0x7f9')](_0x3be94a['callBack'],_0x3be94a[_0x45b01a('0x400')]);}else'Access\x20violation'===_0x4d7fb8[_0x45b01a('0x64')]&&alert(_0x45b01a('0xd44')[_0x45b01a('0x49e')](_0x53a23e['table'],'\x20')['concat'](_0x4d7fb8[_0x45b01a('0x64')]));};_0xe01501[_0x17a1f8('0xcb6')]=_0x18880d,_0xe01501[_0x17a1f8('0x5aa')]=_0x454c14[0x0],$[_0x17a1f8('0xb2f')](this[_0x17a1f8('0x457')],{'t':_0x454c14[0x0],'key':_0x454c14[0x1],'value':_0x454c14[0x2],'method':_0x4c1181,'methodParams':_0xaf2af0,'a':_0x17a1f8('0x2b2')},_0xe01501,_0x17a1f8('0xb04'));}}},{'key':'setAdminProfile','value':function(_0x468d86){var _0x183262=_0x3f3185;try{localStorage[_0x183262('0x4c')]();}catch(_0x333bf2){}$[_0x183262('0xb2f')](this['moduleRelativeURL'],{'a':_0x183262('0x35f'),'empid':_0x468d86},function(){var _0x346478=_0x183262;top[_0x346478('0x83e')][_0x346478('0x381')]=clientUrl;},'json');}},{'key':_0x3f3185('0x87b'),'value':function(_0x35df22,_0x48077a,_0x4f4065,_0x297533,_0x3bb4f1){var _0x35fdc2=_0x3f3185,_0x2e9077=this;_0x4f4065=this[_0x35fdc2('0x4ec')](_0x4f4065),_0x3bb4f1?$['post'](this[_0x35fdc2('0x457')],{'t':this[_0x35fdc2('0x5aa')],'a':'ca','sa':_0x35df22,'mod':_0x48077a,'req':_0x4f4065},function(_0x30d01e){var _0x2e1745=_0x35fdc2;'SUCCESS'===_0x30d01e[_0x2e1745('0x90d')]?(_0x297533['callBackData'][_0x2e1745('0x8cd')](_0x30d01e[_0x2e1745('0xc8f')]),_0x2e9077[_0x2e1745('0x7f9')](_0x297533[_0x2e1745('0x947')],_0x297533[_0x2e1745('0x400')])):(_0x297533[_0x2e1745('0x400')]['push'](_0x30d01e[_0x2e1745('0xc8f')]),_0x2e9077[_0x2e1745('0x7f9')](_0x297533[_0x2e1745('0x350')],_0x297533[_0x2e1745('0x400')]));},_0x35fdc2('0xb04')):$[_0x35fdc2('0x48f')](this[_0x35fdc2('0x457')],{'t':this[_0x35fdc2('0x5aa')],'a':'ca','sa':_0x35df22,'mod':_0x48077a,'req':_0x4f4065},function(_0x43bc45){var _0x1b9f1d=_0x35fdc2;_0x1b9f1d('0xaf3')===_0x43bc45[_0x1b9f1d('0x90d')]?(_0x297533[_0x1b9f1d('0x400')][_0x1b9f1d('0x8cd')](_0x43bc45[_0x1b9f1d('0xc8f')]),_0x2e9077[_0x1b9f1d('0x7f9')](_0x297533[_0x1b9f1d('0x947')],_0x297533['callBackData'])):(_0x297533[_0x1b9f1d('0x400')][_0x1b9f1d('0x8cd')](_0x43bc45[_0x1b9f1d('0xc8f')]),_0x2e9077[_0x1b9f1d('0x7f9')](_0x297533[_0x1b9f1d('0x350')],_0x297533[_0x1b9f1d('0x400')]));});}},{'key':_0x3f3185('0x8ac'),'value':function(_0x118491,_0x3fddcf,_0x36c7e9,_0x880cf6){var _0x1713e1=_0x3f3185;_0x3fddcf['a']=_0x118491,$['post'](this[_0x1713e1('0x457')],_0x3fddcf,function(_0x424dfb){var _0x222284=_0x1713e1;_0x222284('0xaf3')===_0x424dfb[_0x222284('0x90d')]?_0x36c7e9(_0x424dfb[_0x222284('0xc8f')]):_0x880cf6(_0x424dfb[_0x222284('0xc8f')]);},_0x1713e1('0xb04'));}},{'key':'getCustomActionUrl','value':function(_0x83816c,_0x567cd0){var _0x1d3108=_0x3f3185;_0x567cd0['a']=_0x83816c;var _0x50d1c1='';for(var _0x452193 in _0x567cd0)_0x567cd0[_0x1d3108('0x106')](_0x452193)&&(''!==_0x50d1c1&&(_0x50d1c1+='&'),_0x50d1c1+=''[_0x1d3108('0x49e')](_0x452193,'=')[_0x1d3108('0x49e')](_0x567cd0[_0x452193]));return''[_0x1d3108('0x49e')](this['moduleRelativeURL'],'?')[_0x1d3108('0x49e')](_0x50d1c1);}},{'key':_0x3f3185('0x80'),'value':function(){var _0x169316=_0x3f3185;return''['concat'](this[_0x169316('0x457')]['replace']('service.php',''),_0x169316('0xa91'));}},{'key':_0x3f3185('0x37f'),'value':function(_0x3cd4d6){var _0x5e4e84=_0x3f3185;return this[_0x5e4e84('0x457')][_0x5e4e84('0x95e')](_0x5e4e84('0x295'),_0x3cd4d6);}}])&&_0x3fc3df(_0xcd4b33[_0x3f3185('0x3ec')],_0xb9f1b5),_0x180e86&&_0x3fc3df(_0xcd4b33,_0x180e86),_0xf06860;}(_0x266d8d[_0xaaf320('0x53')]);_0x57d99d[_0xaaf320('0x53')]=_0x5c3e50;},{'../api-common/RequestCache':0x26,'./IceApiClient':0x2d,'./MasterDataReader':0x2f,'./ModuleBase':0x30}],0x28:[function(_0x3bb355,_0x3f486a,_0x2c0288){var _0x11dbdb=_0x3e44;'use strict';var _0x191394;function _0x1b8fd9(_0x3d9a43){var _0x1c121a=_0x3e44;return(_0x1b8fd9=_0x1c121a('0x67')==typeof Symbol&&'symbol'==typeof Symbol['iterator']?function(_0x18ff79){return typeof _0x18ff79;}:function(_0x40999f){var _0x5a7041=_0x1c121a;return _0x40999f&&_0x5a7041('0x67')==typeof Symbol&&_0x40999f[_0x5a7041('0xbe8')]===Symbol&&_0x40999f!==Symbol[_0x5a7041('0x3ec')]?_0x5a7041('0xd77'):typeof _0x40999f;})(_0x3d9a43);}function _0x3ffac9(_0x35c879,_0x46f4cb){var _0x579b5f=_0x3e44;for(var _0x14e5b6=0x0;_0x14e5b6<_0x46f4cb[_0x579b5f('0x1d1')];_0x14e5b6++){var _0x3f63e6=_0x46f4cb[_0x14e5b6];_0x3f63e6['enumerable']=_0x3f63e6['enumerable']||!0x1,_0x3f63e6[_0x579b5f('0x249')]=!0x0,_0x579b5f('0x9b6')in _0x3f63e6&&(_0x3f63e6[_0x579b5f('0xc28')]=!0x0),Object[_0x579b5f('0x2cd')](_0x35c879,_0x3f63e6[_0x579b5f('0xcb6')],_0x3f63e6);}}function _0x2a7f13(_0x4c3d41,_0x12996f){var _0x8d44c9=_0x3e44;return!_0x12996f||_0x8d44c9('0x669')!==_0x1b8fd9(_0x12996f)&&_0x8d44c9('0x67')!=typeof _0x12996f?function(_0x271e35){var _0x3f1e28=_0x8d44c9;if(void 0x0===_0x271e35)throw new ReferenceError(_0x3f1e28('0xba4'));return _0x271e35;}(_0x4c3d41):_0x12996f;}function _0x4aa302(){var _0x3c02ff=_0x3e44;if(_0x3c02ff('0x396')==typeof Reflect||!Reflect[_0x3c02ff('0xa71')])return!0x1;if(Reflect[_0x3c02ff('0xa71')][_0x3c02ff('0x886')])return!0x1;if(_0x3c02ff('0x67')==typeof Proxy)return!0x0;try{return Date['prototype'][_0x3c02ff('0x8dc')][_0x3c02ff('0x928')](Reflect['construct'](Date,[],function(){})),!0x0;}catch(_0x11c72a){return!0x1;}}function _0x18ec46(_0x4ab883){return(_0x18ec46=Object['setPrototypeOf']?Object['getPrototypeOf']:function(_0x15dc48){var _0x54f03c=_0x3e44;return _0x15dc48['__proto__']||Object[_0x54f03c('0x418')](_0x15dc48);})(_0x4ab883);}function _0x4fb602(_0x4bb901,_0x54e62e){var _0x5b5f2f=_0x3e44;return(_0x4fb602=Object[_0x5b5f2f('0x16')]||function(_0x1793e9,_0x55493f){var _0xa9d079=_0x5b5f2f;return _0x1793e9[_0xa9d079('0xc15')]=_0x55493f,_0x1793e9;})(_0x4bb901,_0x54e62e);}Object[_0x11dbdb('0x2cd')](_0x2c0288,_0x11dbdb('0x866'),{'value':!0x0}),_0x2c0288[_0x11dbdb('0x53')]=void 0x0;var _0x90ca55=function(_0x5c3a51){var _0x45195f=_0x11dbdb;!function(_0x5eec72,_0x2f5a79){var _0x544f57=_0x3e44;if(_0x544f57('0x67')!=typeof _0x2f5a79&&null!==_0x2f5a79)throw new TypeError(_0x544f57('0xc9'));_0x5eec72['prototype']=Object[_0x544f57('0xd9d')](_0x2f5a79&&_0x2f5a79[_0x544f57('0x3ec')],{'constructor':{'value':_0x5eec72,'writable':!0x0,'configurable':!0x0}}),_0x2f5a79&&_0x4fb602(_0x5eec72,_0x2f5a79);}(_0x4c3554,_0x5c3a51);var _0x58f2ab,_0x4aa27d,_0x179bd9,_0x10481d,_0x554d18=(_0x58f2ab=_0x4c3554,function(){var _0x1c128c=_0x3e44,_0x2c39f8,_0x5f34a8=_0x18ec46(_0x58f2ab);if(_0x4aa302()){var _0x2a3492=_0x18ec46(this)[_0x1c128c('0xbe8')];_0x2c39f8=Reflect[_0x1c128c('0xa71')](_0x5f34a8,arguments,_0x2a3492);}else _0x2c39f8=_0x5f34a8[_0x1c128c('0x7da')](this,arguments);return _0x2a7f13(this,_0x2c39f8);});function _0x4c3554(_0x2c618e,_0x2564cb,_0x480d93,_0x1f8fb4){var _0x5a38bc=_0x3e44;return function(_0x400a20,_0x3351cb){if(!(_0x400a20 instanceof _0x3351cb))throw new TypeError('Cannot\x20call\x20a\x20class\x20as\x20a\x20function');}(this,_0x4c3554),_0x554d18[_0x5a38bc('0x928')](this,_0x2c618e,_0x2564cb,_0x480d93,_0x1f8fb4);}return _0x4aa27d=_0x4c3554,(_0x179bd9=[{'key':_0x45195f('0xcdf'),'value':function(){var _0x4dd18a=_0x45195f;return this[_0x4dd18a('0xc58')]()[_0x4dd18a('0x1d1')]-0x1;}},{'key':_0x45195f('0xb64'),'value':function(_0x3bbdcd,_0x755baa){var _0x23af56=_0x45195f;$('#'[_0x23af56('0x49e')](this[_0x23af56('0x3b3')],_0x23af56('0xd5f')))[_0x23af56('0xbe5')]('show'),$('#'[_0x23af56('0x49e')](this[_0x23af56('0x3b3')],_0x23af56('0xca')))[_0x23af56('0x826')](this[_0x23af56('0x6b2')](_0x755baa)),$('#'[_0x23af56('0x49e')](this[_0x23af56('0x3b3')],_0x23af56('0xca')))['val'](_0x755baa),this[_0x23af56('0xb76')]=_0x3bbdcd;}},{'key':_0x45195f('0x180'),'value':function(){var _0x1b5929=_0x45195f;$('#'['concat'](this['itemNameLower'],'StatusModel'))[_0x1b5929('0xbe5')]('hide');}},{'key':_0x45195f('0x794'),'value':function(){var _0xc2b597=_0x45195f,_0x4b5303=$('#'[_0xc2b597('0x49e')](this[_0xc2b597('0x3b3')],_0xc2b597('0xca')))[_0xc2b597('0x19f')](),_0x1e2b50=$('#'[_0xc2b597('0x49e')](this['itemNameLower'],_0xc2b597('0xaf')))[_0xc2b597('0x19f')]();if(null!=_0x4b5303&&null!=_0x4b5303&&''!=_0x4b5303){var _0x2c443e={'id':this['statusChangeId'],'status':_0x4b5303,'reason':_0x1e2b50},_0x410062=JSON[_0xc2b597('0x263')](_0x2c443e),_0x56bc05=[];_0x56bc05[_0xc2b597('0x400')]=[],_0x56bc05['callBackSuccess']=_0xc2b597('0x9a7'),_0x56bc05[_0xc2b597('0x350')]=_0xc2b597('0x45c'),this[_0xc2b597('0x87b')](_0xc2b597('0x794'),_0xc2b597('0xc4b')[_0xc2b597('0x49e')](this[_0xc2b597('0x46b')]),_0x410062,_0x56bc05),this[_0xc2b597('0x180')](),this['statusChangeId']=null;}else this[_0xc2b597('0xcc4')](_0xc2b597('0x6b7'),'Please\x20select\x20'[_0xc2b597('0x49e')](this[_0xc2b597('0x3b3')],'\x20status'));}},{'key':_0x45195f('0x9a7'),'value':function(_0x1b4e22){var _0x33618f=_0x45195f;this[_0x33618f('0xcc4')](_0x33618f('0xa3'),''[_0x33618f('0x49e')](this[_0x33618f('0x4db')],'\x20Request\x20status\x20changed\x20successfully')),this[_0x33618f('0x715')]([]);}},{'key':_0x45195f('0x45c'),'value':function(_0x37150c){var _0x146cdc=_0x45195f;this['showMessage'](_0x146cdc('0x6b7'),_0x146cdc('0xcec')[_0x146cdc('0x49e')](this[_0x146cdc('0x4db')],_0x146cdc('0x6aa')));}},{'key':_0x45195f('0x3cd'),'value':function(_0x12492d,_0x2b028e){var _0x1924f5=_0x45195f,_0x46e118=_0x1924f5('0x4be'),_0x42377b=this[_0x1924f5('0xa3a')](_0x2b028e[this[_0x1924f5('0xcdf')]()]);return _0x46e118=(_0x46e118=Object['keys'](_0x42377b)[_0x1924f5('0x1d1')]>0x0?_0x46e118[_0x1924f5('0x95e')]('_status_',''):_0x46e118['replace'](_0x1924f5('0x7a2'),''))[_0x1924f5('0x95e')]('_logs_',_0x1924f5('0xb5d')),_0x46e118=this['showDelete']?_0x46e118[_0x1924f5('0x95e')](_0x1924f5('0xd12'),''):_0x46e118[_0x1924f5('0x95e')](_0x1924f5('0xd12'),''),_0x46e118=(_0x46e118=(_0x46e118=(_0x46e118=this[_0x1924f5('0x385')]?_0x46e118[_0x1924f5('0x95e')]('_edit_',_0x1924f5('0x6f9')):_0x46e118[_0x1924f5('0x95e')](_0x1924f5('0x788'),''))[_0x1924f5('0x95e')](/_id_/g,_0x12492d))[_0x1924f5('0x95e')](/_BASE_/g,this['baseUrl']))['replace'](/_cstatus_/g,_0x2b028e[this[_0x1924f5('0xcdf')]()]);}},{'key':_0x45195f('0xa7f'),'value':function(){var _0x36be0d=_0x45195f;return _0x36be0d('0x1c5')!==this[_0x36be0d('0xd22')]['user_level']&&_0x36be0d('0x720')!==this[_0x36be0d('0xd22')][_0x36be0d('0xd2')];}},{'key':'getStatusOptionsData','value':function(_0x45c7d0){var _0x19e7ba=_0x45195f,_0x161d36={};return'Approved'===_0x45c7d0||(_0x19e7ba('0xb35')===_0x45c7d0?(_0x161d36[_0x19e7ba('0x756')]=_0x19e7ba('0x756'),_0x161d36['Rejected']='Rejected'):'Rejected'===_0x45c7d0||_0x19e7ba('0xb1c')===_0x45c7d0||_0x19e7ba('0x86b')===_0x45c7d0||(_0x161d36[_0x19e7ba('0x3e8')]=_0x19e7ba('0x3e8'),_0x161d36[_0x19e7ba('0xb1c')]=_0x19e7ba('0xb1c'))),_0x161d36;}},{'key':_0x45195f('0x6b2'),'value':function(_0x1b6fb3){var _0x3ee013=_0x45195f;return this[_0x3ee013('0x45e')](this[_0x3ee013('0xa3a')](_0x1b6fb3));}}])&&_0x3ffac9(_0x4aa27d[_0x45195f('0x3ec')],_0x179bd9),_0x10481d&&_0x3ffac9(_0x4aa27d,_0x10481d),_0x4c3554;}(((_0x191394=_0x3bb355(_0x11dbdb('0x5e9')))&&_0x191394[_0x11dbdb('0x866')]?_0x191394:{'default':_0x191394})['default']);_0x2c0288[_0x11dbdb('0x53')]=_0x90ca55;},{'./LogViewAdapter':0x2e}],0x29:[function(_0x5146f0,_0x3c8d05,_0x277f51){var _0x44a300=_0x3e44;'use strict';var _0x560428;function _0x4b12d9(_0x2af7ea){var _0x2328ab=_0x3e44;return(_0x4b12d9=_0x2328ab('0x67')==typeof Symbol&&_0x2328ab('0xd77')==typeof Symbol[_0x2328ab('0x303')]?function(_0x11c7de){return typeof _0x11c7de;}:function(_0x398f17){var _0x5d073b=_0x2328ab;return _0x398f17&&_0x5d073b('0x67')==typeof Symbol&&_0x398f17['constructor']===Symbol&&_0x398f17!==Symbol[_0x5d073b('0x3ec')]?_0x5d073b('0xd77'):typeof _0x398f17;})(_0x2af7ea);}function _0x16423d(_0x28e364,_0x2828ef){if(!(_0x28e364 instanceof _0x2828ef))throw new TypeError('Cannot\x20call\x20a\x20class\x20as\x20a\x20function');}function _0x26444a(_0x33e0e2,_0x4761f3){var _0x290be2=_0x3e44;for(var _0x3c0bcf=0x0;_0x3c0bcf<_0x4761f3[_0x290be2('0x1d1')];_0x3c0bcf++){var _0x261d18=_0x4761f3[_0x3c0bcf];_0x261d18['enumerable']=_0x261d18[_0x290be2('0x836')]||!0x1,_0x261d18[_0x290be2('0x249')]=!0x0,'value'in _0x261d18&&(_0x261d18[_0x290be2('0xc28')]=!0x0),Object[_0x290be2('0x2cd')](_0x33e0e2,_0x261d18[_0x290be2('0xcb6')],_0x261d18);}}function _0x11b232(_0x5968a4,_0x4e7dee){var _0x8178cf=_0x3e44;return!_0x4e7dee||'object'!==_0x4b12d9(_0x4e7dee)&&_0x8178cf('0x67')!=typeof _0x4e7dee?function(_0x2d5b77){var _0xdd4550=_0x8178cf;if(void 0x0===_0x2d5b77)throw new ReferenceError(_0xdd4550('0xba4'));return _0x2d5b77;}(_0x5968a4):_0x4e7dee;}function _0x33ed81(){var _0x537469=_0x3e44;if('undefined'==typeof Reflect||!Reflect[_0x537469('0xa71')])return!0x1;if(Reflect[_0x537469('0xa71')][_0x537469('0x886')])return!0x1;if(_0x537469('0x67')==typeof Proxy)return!0x0;try{return Date[_0x537469('0x3ec')][_0x537469('0x8dc')][_0x537469('0x928')](Reflect['construct'](Date,[],function(){})),!0x0;}catch(_0x53e126){return!0x1;}}function _0x3595e6(_0x2a6b01){return(_0x3595e6=Object['setPrototypeOf']?Object['getPrototypeOf']:function(_0x15b8e0){var _0x1e9a02=_0x3e44;return _0x15b8e0[_0x1e9a02('0xc15')]||Object[_0x1e9a02('0x418')](_0x15b8e0);})(_0x2a6b01);}function _0xb9e703(_0xf97e99,_0x468934){var _0x417c39=_0x3e44;return(_0xb9e703=Object[_0x417c39('0x16')]||function(_0x139925,_0x5d4948){var _0x2e7e13=_0x417c39;return _0x139925[_0x2e7e13('0xc15')]=_0x5d4948,_0x139925;})(_0xf97e99,_0x468934);}Object[_0x44a300('0x2cd')](_0x277f51,_0x44a300('0x866'),{'value':!0x0}),_0x277f51[_0x44a300('0x53')]=void 0x0;var _0x3d7f08=function(_0x12e0b8){var _0x247caf=_0x44a300;!function(_0x24c9b8,_0x102b0c){var _0x588c70=_0x3e44;if('function'!=typeof _0x102b0c&&null!==_0x102b0c)throw new TypeError(_0x588c70('0xc9'));_0x24c9b8[_0x588c70('0x3ec')]=Object[_0x588c70('0xd9d')](_0x102b0c&&_0x102b0c[_0x588c70('0x3ec')],{'constructor':{'value':_0x24c9b8,'writable':!0x0,'configurable':!0x0}}),_0x102b0c&&_0xb9e703(_0x24c9b8,_0x102b0c);}(_0x5f9ef3,_0x12e0b8);var _0x69e814,_0x443fdd,_0x3b8873,_0x103bbd,_0x4c9deb=(_0x69e814=_0x5f9ef3,function(){var _0x5222e9=_0x3e44,_0x355206,_0x41e73a=_0x3595e6(_0x69e814);if(_0x33ed81()){var _0x4c10a9=_0x3595e6(this)[_0x5222e9('0xbe8')];_0x355206=Reflect[_0x5222e9('0xa71')](_0x41e73a,arguments,_0x4c10a9);}else _0x355206=_0x41e73a['apply'](this,arguments);return _0x11b232(this,_0x355206);});function _0x5f9ef3(){var _0x3cede8=_0x3e44;return _0x16423d(this,_0x5f9ef3),_0x4c9deb[_0x3cede8('0x7da')](this,arguments);}return _0x443fdd=_0x5f9ef3,(_0x3b8873=[{'key':_0x247caf('0x9b9'),'value':function(_0xbafc4b){var _0x23f146=_0x247caf,_0x5e5039={};_0x5e5039['id']=_0xbafc4b;var _0x24b37d=JSON[_0x23f146('0x263')](_0x5e5039),_0x4a0a7d=[];_0x4a0a7d[_0x23f146('0x400')]=[],_0x4a0a7d[_0x23f146('0x947')]=_0x23f146('0x11f'),_0x4a0a7d[_0x23f146('0x350')]='cancelFailCallBack',this['customAction'](_0x23f146('0x5c1'),_0x23f146('0xd89')[_0x23f146('0x49e')](this[_0x23f146('0x46b')]),_0x24b37d,_0x4a0a7d);}},{'key':_0x247caf('0x11f'),'value':function(_0x2a4632){var _0x2fd271=_0x247caf;this[_0x2fd271('0xcc4')](_0x2fd271('0xa3'),''[_0x2fd271('0x49e')](this['itemName'],_0x2fd271('0xe3'))),this['get']([]);}},{'key':_0x247caf('0xd6d'),'value':function(_0x38e507){var _0x39d18a=_0x247caf;this[_0x39d18a('0xcc4')](_0x39d18a('0x56e')[_0x39d18a('0x49e')](this[_0x39d18a('0x4db')]),_0x38e507);}},{'key':_0x247caf('0x3cd'),'value':function(_0x17fb5e,_0x10b828){var _0x467115=_0x247caf,_0x45e7e7=_0x467115('0xa84')['concat'](this['itemName'],_0x467115('0x3d8')),_0x53bc4a=_0x467115('0x777');return _0x53bc4a=_0x53bc4a[_0x467115('0x95e')](_0x467115('0x60f'),_0x467115('0xb5d')),_0x53bc4a=this[_0x467115('0x224')]?_0x467115('0x756')===_0x10b828[0x7]?_0x53bc4a['replace'](_0x467115('0xd12'),_0x45e7e7):_0x467115('0xb35')===_0x10b828[0x7]||_0x467115('0x1c5')===this[_0x467115('0xd22')][_0x467115('0xd2')]?_0x53bc4a['replace'](_0x467115('0xd12'),_0x467115('0xd4e')):_0x53bc4a[_0x467115('0x95e')]('_delete_',''):_0x53bc4a['replace']('_delete_',''),_0x53bc4a=(_0x53bc4a=(_0x53bc4a=this[_0x467115('0x385')]?_0x53bc4a[_0x467115('0x95e')](_0x467115('0x788'),''):_0x53bc4a['replace'](_0x467115('0x788'),''))[_0x467115('0x95e')](/_id_/g,_0x17fb5e))['replace'](/_BASE_/g,this[_0x467115('0xadb')]);}}])&&_0x26444a(_0x443fdd[_0x247caf('0x3ec')],_0x3b8873),_0x103bbd&&_0x26444a(_0x443fdd,_0x103bbd),_0x5f9ef3;}(((_0x560428=_0x5146f0(_0x44a300('0x5e9')))&&_0x560428[_0x44a300('0x866')]?_0x560428:{'default':_0x560428})[_0x44a300('0x53')]);_0x277f51[_0x44a300('0x53')]=_0x3d7f08;},{'./LogViewAdapter':0x2e}],0x2a:[function(_0x4c6897,_0x1c9576,_0x33f829){var _0x52869a=_0x3e44;'use strict';function _0x31144f(_0x2f7cb8,_0x19ff03){var _0x667145=_0x3e44;for(var _0x3f9432=0x0;_0x3f9432<_0x19ff03[_0x667145('0x1d1')];_0x3f9432++){var _0x22e882=_0x19ff03[_0x3f9432];_0x22e882[_0x667145('0x836')]=_0x22e882[_0x667145('0x836')]||!0x1,_0x22e882[_0x667145('0x249')]=!0x0,_0x667145('0x9b6')in _0x22e882&&(_0x22e882[_0x667145('0xc28')]=!0x0),Object['defineProperty'](_0x2f7cb8,_0x22e882[_0x667145('0xcb6')],_0x22e882);}}Object[_0x52869a('0x2cd')](_0x33f829,'__esModule',{'value':!0x0}),_0x33f829[_0x52869a('0x53')]=void 0x0;var _0x51e526=_0x4c6897('axios'),_0x323f11=function(){var _0xaff69c=_0x52869a;function _0x4f085a(_0x4ef228){!function(_0x22ffb2,_0x3991d1){var _0x1760ca=_0x3e44;if(!(_0x22ffb2 instanceof _0x3991d1))throw new TypeError(_0x1760ca('0xc2c'));}(this,_0x4f085a),this['adapter']=_0x4ef228;}var _0x202129,_0x260942,_0x338b6e;return _0x202129=_0x4f085a,(_0x260942=[{'key':_0xaff69c('0xcc1'),'value':function(_0x185ffb,_0x407eae,_0x45870a,_0x3d5b83){var _0x25cc35=_0xaff69c;return _0x3d5b83?_0x51e526[_0x25cc35('0xb2f')](this[_0x25cc35('0x457')],{'t':this[_0x25cc35('0x7c7')]['table'],'a':'ca','sa':_0x185ffb,'mod':_0x407eae,'req':_0x45870a}):_0x51e526[_0x25cc35('0x715')](this[_0x25cc35('0x7c7')][_0x25cc35('0x457')],{'params':{'t':this[_0x25cc35('0x7c7')][_0x25cc35('0x5aa')],'a':'ca','sa':_0x185ffb,'mod':_0x407eae,'req':_0x45870a}});}}])&&_0x31144f(_0x202129[_0xaff69c('0x3ec')],_0x260942),_0x338b6e&&_0x31144f(_0x202129,_0x338b6e),_0x4f085a;}();_0x33f829[_0x52869a('0x53')]=_0x323f11;},{'axios':0x62}],0x2b:[function(_0x30d414,_0x48f60a,_0x27772c){var _0x16fa23=_0x3e44;'use strict';var _0x4c2e2f;function _0x8d95ab(_0x21814c){var _0x37818b=_0x3e44;return(_0x8d95ab='function'==typeof Symbol&&_0x37818b('0xd77')==typeof Symbol[_0x37818b('0x303')]?function(_0x11eb9b){return typeof _0x11eb9b;}:function(_0x4fac33){var _0x25e972=_0x37818b;return _0x4fac33&&_0x25e972('0x67')==typeof Symbol&&_0x4fac33[_0x25e972('0xbe8')]===Symbol&&_0x4fac33!==Symbol[_0x25e972('0x3ec')]?_0x25e972('0xd77'):typeof _0x4fac33;})(_0x21814c);}function _0x461d59(_0x14f6c8,_0x1a991a){var _0x4ee2ad=_0x3e44;for(var _0x59721f=0x0;_0x59721f<_0x1a991a[_0x4ee2ad('0x1d1')];_0x59721f++){var _0x11ed54=_0x1a991a[_0x59721f];_0x11ed54[_0x4ee2ad('0x836')]=_0x11ed54[_0x4ee2ad('0x836')]||!0x1,_0x11ed54[_0x4ee2ad('0x249')]=!0x0,_0x4ee2ad('0x9b6')in _0x11ed54&&(_0x11ed54['writable']=!0x0),Object[_0x4ee2ad('0x2cd')](_0x14f6c8,_0x11ed54[_0x4ee2ad('0xcb6')],_0x11ed54);}}function _0x1b1262(_0x40780c,_0x5b49d8){var _0x432178=_0x3e44;return!_0x5b49d8||_0x432178('0x669')!==_0x8d95ab(_0x5b49d8)&&'function'!=typeof _0x5b49d8?function(_0x8f6127){if(void 0x0===_0x8f6127)throw new ReferenceError('this\x20hasn\x27t\x20been\x20initialised\x20-\x20super()\x20hasn\x27t\x20been\x20called');return _0x8f6127;}(_0x40780c):_0x5b49d8;}function _0x4d4b7b(){var _0x446f07=_0x3e44;if(_0x446f07('0x396')==typeof Reflect||!Reflect['construct'])return!0x1;if(Reflect[_0x446f07('0xa71')][_0x446f07('0x886')])return!0x1;if(_0x446f07('0x67')==typeof Proxy)return!0x0;try{return Date['prototype'][_0x446f07('0x8dc')]['call'](Reflect['construct'](Date,[],function(){})),!0x0;}catch(_0x33d89e){return!0x1;}}function _0x48d045(_0x2f4716){var _0x5ef297=_0x3e44;return(_0x48d045=Object['setPrototypeOf']?Object[_0x5ef297('0x418')]:function(_0x184185){var _0x52b7b8=_0x5ef297;return _0x184185['__proto__']||Object[_0x52b7b8('0x418')](_0x184185);})(_0x2f4716);}function _0x341e8e(_0x1b9722,_0xd8d4c6){var _0x84a6a3=_0x3e44;return(_0x341e8e=Object[_0x84a6a3('0x16')]||function(_0x3a0a61,_0x2c13ac){var _0x404fb9=_0x84a6a3;return _0x3a0a61[_0x404fb9('0xc15')]=_0x2c13ac,_0x3a0a61;})(_0x1b9722,_0xd8d4c6);}Object[_0x16fa23('0x2cd')](_0x27772c,'__esModule',{'value':!0x0}),_0x27772c[_0x16fa23('0x53')]=void 0x0;var _0x20ddd0=function(_0xf1abb3){var _0x6af48d=_0x16fa23;!function(_0x29cbeb,_0x29fc5c){var _0x32145d=_0x3e44;if('function'!=typeof _0x29fc5c&&null!==_0x29fc5c)throw new TypeError('Super\x20expression\x20must\x20either\x20be\x20null\x20or\x20a\x20function');_0x29cbeb[_0x32145d('0x3ec')]=Object[_0x32145d('0xd9d')](_0x29fc5c&&_0x29fc5c[_0x32145d('0x3ec')],{'constructor':{'value':_0x29cbeb,'writable':!0x0,'configurable':!0x0}}),_0x29fc5c&&_0x341e8e(_0x29cbeb,_0x29fc5c);}(_0x1f7bc9,_0xf1abb3);var _0x30392f,_0x311701,_0x4f40ae,_0x42de4b,_0x19f834=(_0x30392f=_0x1f7bc9,function(){var _0x1dcf1d=_0x3e44,_0x1b3dbc,_0x43c3cf=_0x48d045(_0x30392f);if(_0x4d4b7b()){var _0x317471=_0x48d045(this)[_0x1dcf1d('0xbe8')];_0x1b3dbc=Reflect['construct'](_0x43c3cf,arguments,_0x317471);}else _0x1b3dbc=_0x43c3cf[_0x1dcf1d('0x7da')](this,arguments);return _0x1b1262(this,_0x1b3dbc);});function _0x1f7bc9(_0xf1ccd8,_0x378564,_0x2b49de,_0x46cb6b){var _0x346485;return function(_0x1bc3b6,_0x2672dd){var _0x5b28a0=_0x3e44;if(!(_0x1bc3b6 instanceof _0x2672dd))throw new TypeError(_0x5b28a0('0xc2c'));}(this,_0x1f7bc9),(_0x346485=_0x19f834['call'](this,_0xf1ccd8,_0x378564,_0x2b49de,_0x46cb6b))['tableType']='',_0x346485;}return _0x311701=_0x1f7bc9,(_0x4f40ae=[{'key':'getDataMapping','value':function(){var _0x3f41b0=_0x3e44;return['id',_0x3f41b0('0x9e'),_0x3f41b0('0x725'),_0x3f41b0('0x70c')];}},{'key':'getHeaders','value':function(){var _0x5e07b0=_0x3e44;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':_0x5e07b0('0x8bd')},{'sTitle':_0x5e07b0('0x8f4')},{'sTitle':_0x5e07b0('0x6b0')}];}},{'key':_0x6af48d('0x59d'),'value':function(){var _0x5cc4a3=_0x6af48d;return[['id',{'label':'ID','type':_0x5cc4a3('0xb0f')}],[_0x5cc4a3('0x9e'),{'label':_0x5cc4a3('0x8bd'),'type':_0x5cc4a3('0x1c4'),'validation':''}],['display',{'label':_0x5cc4a3('0x8f4'),'type':'select','source':[[_0x5cc4a3('0xad2'),_0x5cc4a3('0x782')],['Hidden',_0x5cc4a3('0x995')]]}],['field_type',{'label':_0x5cc4a3('0x134'),'type':'select','source':[[_0x5cc4a3('0x1c4'),_0x5cc4a3('0x1ed')],[_0x5cc4a3('0x219'),_0x5cc4a3('0x7f3')],[_0x5cc4a3('0x7fc'),'Dropdown'],['select2',_0x5cc4a3('0x58f')],['select2multi',_0x5cc4a3('0x270')],[_0x5cc4a3('0x1fe'),_0x5cc4a3('0x634')],[_0x5cc4a3('0xd98'),_0x5cc4a3('0xd9f')],[_0x5cc4a3('0x44c'),_0x5cc4a3('0xb8d')],['time',_0x5cc4a3('0x6c2')],['signature',_0x5cc4a3('0x9a1')]]}],['field_label',{'label':'Field\x20Label','type':'text','validation':''}],['field_validation',{'label':_0x5cc4a3('0xd23'),'type':_0x5cc4a3('0xdbb'),'validation':_0x5cc4a3('0x3b9'),'sort':_0x5cc4a3('0x3b9'),'null-label':_0x5cc4a3('0x9f0'),'allow-null':!0x0,'source':[['none',_0x5cc4a3('0x1ee')],['number',_0x5cc4a3('0xad0')],['numberOrEmpty',_0x5cc4a3('0x89c')],[_0x5cc4a3('0x6d9'),_0x5cc4a3('0x527')],[_0x5cc4a3('0x31f'),_0x5cc4a3('0x170')],[_0x5cc4a3('0x92d'),'Email\x20or\x20Empty']]}],[_0x5cc4a3('0xe7'),{'label':_0x5cc4a3('0x3f0'),'type':_0x5cc4a3('0xdc'),'form':[['label',{'label':_0x5cc4a3('0x4c4'),'type':_0x5cc4a3('0x1c4'),'validation':''}],[_0x5cc4a3('0x9b6'),{'label':_0x5cc4a3('0x63c'),'type':_0x5cc4a3('0x1c4'),'validation':_0x5cc4a3('0x3b9')}]],'html':_0x5cc4a3('0xd19'),'validation':_0x5cc4a3('0x3b9')}],[_0x5cc4a3('0x70c'),{'label':_0x5cc4a3('0x6b0'),'type':'text','validation':_0x5cc4a3('0x913')}],['display_section',{'label':_0x5cc4a3('0xb36'),'type':'text','validation':_0x5cc4a3('0x3b9')}]];}},{'key':'setTableType','value':function(_0x22ba2e){var _0x383a63=_0x6af48d;this[_0x383a63('0x78f')]=_0x22ba2e;}},{'key':'doCustomValidation','value':function(_0x232e68){var _0x4d2aee=_0x6af48d,_0x2cba4a;return null!=(_0x2cba4a=_0x232e68[_0x4d2aee('0x9e')])&&/^[a-z][a-z0-9._]+$/[_0x4d2aee('0xb03')](_0x2cba4a)?null:'Invalid\x20name\x20for\x20custom\x20field';}},{'key':_0x6af48d('0x9e9'),'value':function(_0xf596d6){var _0x2357b9=_0x6af48d,_0x30c804,_0x187b27=[_0xf596d6['name']],_0x1b6e4c=[];if(_0x187b27['push']({}),_0x187b27[0x1][_0x2357b9('0x551')]=_0xf596d6[_0x2357b9('0xc7f')],_0x187b27[0x1][_0x2357b9('0xb88')]=_0xf596d6[_0x2357b9('0x40b')],_0x187b27[0x1][_0x2357b9('0x175')]=_0xf596d6[_0x2357b9('0x3b1')],['select',_0x2357b9('0xdbb'),_0x2357b9('0x9da')]['indexOf'](_0xf596d6[_0x2357b9('0x40b')])>=0x0){for(var _0x507010 in _0x30c804=''===_0xf596d6[_0x2357b9('0xe7')]||void 0x0===_0xf596d6[_0x2357b9('0xe7')]?[]:JSON[_0x2357b9('0xb50')](_0xf596d6['field_options']))_0x1b6e4c[_0x2357b9('0x8cd')]([_0x30c804[_0x507010]['value'],_0x30c804[_0x507010]['label']]);_0x187b27[0x1][_0x2357b9('0x7d3')]=_0x1b6e4c;}return null!=_0xf596d6[_0x2357b9('0x3b1')]&&void 0x0!==_0xf596d6['field_validation']||(_0xf596d6[_0x2357b9('0x3b1')]=''),_0xf596d6['data']=JSON[_0x2357b9('0x263')](_0x187b27),_0xf596d6[_0x2357b9('0xb88')]=this[_0x2357b9('0x78f')],_0xf596d6;}}])&&_0x461d59(_0x311701[_0x6af48d('0x3ec')],_0x4f40ae),_0x42de4b&&_0x461d59(_0x311701,_0x42de4b),_0x1f7bc9;}(((_0x4c2e2f=_0x30d414('./AdapterBase'))&&_0x4c2e2f[_0x16fa23('0x866')]?_0x4c2e2f:{'default':_0x4c2e2f})[_0x16fa23('0x53')]);_0x27772c[_0x16fa23('0x53')]=_0x20ddd0;},{'./AdapterBase':0x27}],0x2c:[function(_0xd750d6,_0x44e986,_0x33c7c1){var _0x40e1f8=_0x3e44;'use strict';function _0x21333f(_0x26f488,_0xa765e3){var _0x523936=_0x3e44;for(var _0x2b5168=0x0;_0x2b5168<_0xa765e3[_0x523936('0x1d1')];_0x2b5168++){var _0x29caf5=_0xa765e3[_0x2b5168];_0x29caf5['enumerable']=_0x29caf5[_0x523936('0x836')]||!0x1,_0x29caf5[_0x523936('0x249')]=!0x0,_0x523936('0x9b6')in _0x29caf5&&(_0x29caf5['writable']=!0x0),Object['defineProperty'](_0x26f488,_0x29caf5['key'],_0x29caf5);}}Object['defineProperty'](_0x33c7c1,_0x40e1f8('0x866'),{'value':!0x0}),_0x33c7c1[_0x40e1f8('0x53')]=void 0x0;var _0x256b1a={'float':function(_0x3c8426){return!(null==_0x3c8426||!_0x3c8426['match'](/^[-+]?[0-9]+(\.[0-9]+)?$/));},'number':function(_0x6fb6b5){var _0x7adcb4=_0x40e1f8;return!(null==_0x6fb6b5||!_0x6fb6b5[_0x7adcb4('0xa05')](/^[0-9]+$/));},'numberOrEmpty':function(_0x12874b){var _0x147125=_0x40e1f8;if(''===_0x12874b)return!0x0;return!(null==_0x12874b||!_0x12874b[_0x147125('0xa05')](/^[0-9]+$/));},'email':function(_0x18d36b){var _0x3e0446=_0x40e1f8;return null!=_0x18d36b&&/^\s*[\w\-+_]+(\.[\w\-+_]+)*@[\w\-+_]+\.[\w\-+_]+(\.[\w\-+_]+)*\s*$/[_0x3e0446('0xb03')](_0x18d36b);},'emailOrEmpty':function(_0x54b2ab){var _0x37285e=_0x40e1f8;if(''===_0x54b2ab)return!0x0;return null!=_0x54b2ab&&/^\s*[\w\-+_]+(\.[\w\-+_]+)*@[\w\-+_]+\.[\w\-+_]+(\.[\w\-+_]+)*\s*$/[_0x37285e('0xb03')](_0x54b2ab);},'username':function(_0x302b6c){var _0x40ca99=_0x40e1f8;return null!=_0x302b6c&&/^[a-zA-Z0-9.-]+$/[_0x40ca99('0xb03')](_0x302b6c);},'input':function(_0x4b1656){return null!=_0x4b1656&&_0x4b1656['length']>0x0;}},_0x295ae7=function(){var _0x4478ba=_0x40e1f8;function _0x26bfc5(_0x55e1a7,_0x3f2d16,_0x313b87){var _0x283ab6=_0x3e44;!function(_0x552fe5,_0x9c7ae7){var _0x49c05a=_0x3e44;if(!(_0x552fe5 instanceof _0x9c7ae7))throw new TypeError(_0x49c05a('0xc2c'));}(this,_0x26bfc5),this[_0x283ab6('0x3bd')]={},this[_0x283ab6('0x21f')]=_0x55e1a7,this[_0x283ab6('0xbde')]=!0x1,this[_0x283ab6('0xd02')]=null,this[_0x283ab6('0xbbf')]='',this[_0x283ab6('0x5c')]=null,this[_0x283ab6('0x633')]=_0x3f2d16,this[_0x283ab6('0x3e0')]=[],this['settings']={'thirdPartyPopup':null,'LabelErrorClass':!0x1,'ShowPopup':!0x0},this[_0x283ab6('0x834')]=jQuery[_0x283ab6('0x141')](this[_0x283ab6('0x834')],_0x313b87),this[_0x283ab6('0x69e')]=[_0x283ab6('0x1c4'),_0x283ab6('0x1f8'),_0x283ab6('0x193'),_0x283ab6('0x58c'),_0x283ab6('0x1fc'),_0x283ab6('0xabb'),_0x283ab6('0x7ee'),_0x283ab6('0x219'),_0x283ab6('0x1fe'),_0x283ab6('0x97e')],this['validator']=_0x256b1a;}var _0x81e131,_0x492d73,_0x341d69;return _0x81e131=_0x26bfc5,_0x492d73=[{'key':_0x4478ba('0x6d0'),'value':function(_0x4adeb3,_0x283630){var _0x1ba955=_0x4478ba,_0x13698c=_0x4adeb3[_0x1ba955('0x41a')]('id');$('#'['concat'](this[_0x1ba955('0x21f')],_0x1ba955('0x988'))[_0x1ba955('0x49e')](_0x13698c))[_0x1ba955('0x97a')](_0x1ba955('0x855')),$('#'[_0x1ba955('0x49e')](this['formId'],_0x1ba955('0x2b8'))[_0x1ba955('0x49e')](_0x13698c))[_0x1ba955('0x826')]('');}},{'key':_0x4478ba('0xd8'),'value':function(_0x42d46e,_0x48c61c){var _0xcf300=_0x4478ba;this['formError']=!0x0,null!=_0x42d46e[_0xcf300('0x41a')](_0xcf300('0x64'))?(this[_0xcf300('0xbbf')]+=''[_0xcf300('0x49e')](_0x42d46e[_0xcf300('0x41a')](_0xcf300('0x64')),'\x0a'),this['errorMap'][_0x42d46e[_0xcf300('0x41a')]('name')]=_0x42d46e[_0xcf300('0x41a')](_0xcf300('0x64'))):this[_0xcf300('0x3e0')][_0x42d46e['attr'](_0xcf300('0x9e'))]='';var _0x271815=_0x42d46e['attr']('id'),_0x3ded88=_0x42d46e[_0xcf300('0x41a')](_0xcf300('0x175')),_0x5d1aec=_0x42d46e['attr']('validation');$('#'[_0xcf300('0x49e')](this[_0xcf300('0x21f')],_0xcf300('0x988'))[_0xcf300('0x49e')](_0x271815))['addClass'](_0xcf300('0x855')),void 0x0===_0x5d1aec||null==_0x5d1aec||''===_0x5d1aec?$('#'[_0xcf300('0x49e')](this[_0xcf300('0x21f')],'\x20#help_err_')[_0xcf300('0x49e')](_0x271815))['html'](_0x5d1aec):void 0x0===_0x3ded88||null==_0x3ded88||''===_0x3ded88?$('#'[_0xcf300('0x49e')](this[_0xcf300('0x21f')],'\x20#help_err_')['concat'](_0x271815))[_0xcf300('0x826')](_0xcf300('0x9f0')):_0xcf300('0x6d9')===_0x3ded88||_0xcf300('0x913')===_0x3ded88?$('#'[_0xcf300('0x49e')](this[_0xcf300('0x21f')],_0xcf300('0x5d4'))[_0xcf300('0x49e')](_0x271815))['html'](_0xcf300('0x615')):_0xcf300('0x31f')===_0x3ded88?$('#'['concat'](this['formId'],'\x20#help_err_')[_0xcf300('0x49e')](_0x271815))[_0xcf300('0x826')](_0xcf300('0x38e')):$('#'[_0xcf300('0x49e')](this['formId'],'\x20#help_err_')[_0xcf300('0x49e')](_0x271815))[_0xcf300('0x826')](_0xcf300('0x9f0'));}},{'key':_0x4478ba('0x8c8'),'value':function(){var _0x20b2e1=_0x4478ba;this[_0x20b2e1('0xbde')]&&(void 0x0!==this[_0x20b2e1('0x834')][_0x20b2e1('0xb60')]&&null!=this[_0x20b2e1('0x834')][_0x20b2e1('0xb60')]?this[_0x20b2e1('0x834')]['thirdPartyPopup'][_0x20b2e1('0x247')]():!0x0===this[_0x20b2e1('0x834')][_0x20b2e1('0x57')]&&(void 0x0!==this[_0x20b2e1('0x3bd')]['popupTop']&&null!=this[_0x20b2e1('0x3bd')][_0x20b2e1('0x692')]?this[_0x20b2e1('0x247')](_0x20b2e1('0xf7'),this[_0x20b2e1('0xbbf')],this[_0x20b2e1('0x3bd')][_0x20b2e1('0x692')]):this['alert'](_0x20b2e1('0xf7'),this[_0x20b2e1('0xbbf')],-0x1)));}},{'key':_0x4478ba('0x1c1'),'value':function(_0x2baf96){var _0x3ebcfb=_0x4478ba;this['tempOptions']=_0x2baf96;var _0x318986=this;this[_0x3ebcfb('0xbde')]=!0x1,this[_0x3ebcfb('0xbbf')]='',this[_0x3ebcfb('0xd02')]={};var _0xfa8029=function(_0x233a26){var _0xc04807=_0x3ebcfb,_0x4d3bab=null,_0x246cbe=_0x233a26[_0xc04807('0x41a')]('name');!0x1!==_0x318986[_0xc04807('0x834')][_0xc04807('0x582')]&&$(_0xc04807('0x283')[_0xc04807('0x49e')](_0x246cbe,'\x27]'))[_0xc04807('0x97a')](_0x318986[_0xc04807('0x834')]['LabelErrorClass']);var _0x2d03cc=_0x233a26[_0xc04807('0x41a')]('id'),_0x1289d9=_0x233a26['attr'](_0xc04807('0xb88'));if(_0x233a26[_0xc04807('0x729')]('select2-focusser')||_0x233a26[_0xc04807('0x729')]('select2-input'))return!0x0;if(jQuery[_0xc04807('0x5f7')](_0x1289d9,_0x318986[_0xc04807('0x69e')])>=0x0){if(_0x233a26[_0xc04807('0x729')](_0xc04807('0x2b5')))_0x4d3bab=_0x233a26[_0xc04807('0x41a')](_0xc04807('0x19f'));else{if(_0xc04807('0x1f8')===_0x1289d9||_0xc04807('0x193')===_0x1289d9)_0x4d3bab=$('input[name=\x27'['concat'](_0x246cbe,_0xc04807('0x33e')))['val']();else{if(_0x233a26['hasClass'](_0xc04807('0x4b4')))_0x4d3bab=null!=$('#'[_0xc04807('0x49e')](_0x318986[_0xc04807('0x21f')],'\x20#')[_0xc04807('0x49e')](_0x2d03cc))[_0xc04807('0xdbb')](_0xc04807('0xc8f'))&&void 0x0!==$('#'[_0xc04807('0x49e')](_0x318986[_0xc04807('0x21f')],'\x20#')['concat'](_0x2d03cc))[_0xc04807('0xdbb')]('data')?$('#'[_0xc04807('0x49e')](_0x318986['formId'],'\x20#')[_0xc04807('0x49e')](_0x2d03cc))[_0xc04807('0xdbb')]('data')['id']:'';else{if(_0x233a26[_0xc04807('0x729')](_0xc04807('0x7'))){if(null!=$('#'['concat'](_0x318986[_0xc04807('0x21f')],'\x20#')[_0xc04807('0x49e')](_0x2d03cc))[_0xc04807('0xdbb')](_0xc04807('0xc8f'))&&void 0x0!==$('#'['concat'](_0x318986['formId'],'\x20#')[_0xc04807('0x49e')](_0x2d03cc))[_0xc04807('0xdbb')](_0xc04807('0xc8f'))){var _0x26fc26=$('#'[_0xc04807('0x49e')](_0x318986[_0xc04807('0x21f')],'\x20#')[_0xc04807('0x49e')](_0x2d03cc))['select2']('data');_0x4d3bab=[];for(var _0x409825=0x0;_0x409825<_0x26fc26[_0xc04807('0x1d1')];_0x409825++)_0x4d3bab[_0xc04807('0x8cd')](_0x26fc26[_0x409825]['id']);_0x4d3bab=JSON[_0xc04807('0x263')](_0x4d3bab);}else _0x4d3bab='';}else _0x4d3bab=_0x233a26[_0xc04807('0x729')]('signatureField')?$('#'[_0xc04807('0x49e')](_0x318986[_0xc04807('0x21f')],'\x20#')['concat'](_0x2d03cc))['data']('signaturePad')[_0xc04807('0x30a')]()?'':$('#'[_0xc04807('0x49e')](_0x2d03cc))[_0xc04807('0xc8f')]('signaturePad')[_0xc04807('0x952')]():_0x233a26['hasClass'](_0xc04807('0x376'))?$('#'[_0xc04807('0x49e')](_0x318986['formId'],'\x20#')[_0xc04807('0x49e')](_0x2d03cc))['data'](_0xc04807('0x376'))['value']():_0x233a26['hasClass'](_0xc04807('0x293'))?$('#'[_0xc04807('0x49e')](_0x318986[_0xc04807('0x21f')],'\x20#')['concat'](_0x2d03cc))[_0xc04807('0xc8f')]('codemirror')[_0xc04807('0x4d0')]():_0x233a26[_0xc04807('0x729')](_0xc04807('0x98e'))?tinyMCE[_0xc04807('0x715')](_0x2d03cc)['getContent']({'format':_0xc04807('0x2c0')}):_0x233a26['val']();}}}var _0x5b025e=_0x233a26[_0xc04807('0x41a')]('validation'),_0x31a7e9=!0x1;void 0x0!==_0x5b025e&&null!=_0x5b025e&&void 0x0!==_0x318986['validator'][_0x5b025e]&&null!=_0x318986[_0xc04807('0x72f')][_0x5b025e]?_0x31a7e9=_0x318986[_0xc04807('0x72f')][_0x5b025e](_0x4d3bab):(_0x31a7e9=!_0x318986[_0xc04807('0x633')]||void 0x0!==_0x5b025e&&null!=_0x5b025e&&_0xc04807('0x3b9')===_0x5b025e||_0x318986[_0xc04807('0x72f')][_0xc04807('0x382')](_0x4d3bab),_0x318986[_0xc04807('0xd02')][_0x2d03cc]=_0x4d3bab),_0x31a7e9?(_0x318986[_0xc04807('0x6d0')](_0x233a26,null),_0x318986[_0xc04807('0xd02')][_0x2d03cc]=_0x4d3bab):_0x318986[_0xc04807('0xd8')](_0x233a26,null);}},_0x5ede0d=$('#'[_0x3ebcfb('0x49e')](this['formId'],_0x3ebcfb('0x7c6')));return _0x5ede0d[_0x3ebcfb('0x30c')](function(){_0xfa8029($(this));}),(_0x5ede0d=$('#'[_0x3ebcfb('0x49e')](this[_0x3ebcfb('0x21f')],_0x3ebcfb('0xc48'))))[_0x3ebcfb('0x30c')](function(){_0xfa8029($(this));}),this[_0x3ebcfb('0x8c8')](),this['tempOptions']={},!this['formError'];}},{'key':_0x4478ba('0xda6'),'value':function(){return this['formObject'];}},{'key':_0x4478ba('0x247'),'value':function(_0x5f128c){var _0x26c39f=_0x4478ba;function _0x226f5e(_0x570bf1,_0x1f85ec){var _0x507a78=_0x3e44;return _0x5f128c[_0x507a78('0x7da')](this,arguments);}return _0x226f5e[_0x26c39f('0x8dc')]=function(){var _0x5c874a=_0x26c39f;return _0x5f128c[_0x5c874a('0x8dc')]();},_0x226f5e;}(function(_0x4de890,_0x244ce1){alert(_0x244ce1);})}],_0x341d69=[{'key':_0x4478ba('0x75a'),'value':function(){return _0x256b1a;}}],_0x492d73&&_0x21333f(_0x81e131[_0x4478ba('0x3ec')],_0x492d73),_0x341d69&&_0x21333f(_0x81e131,_0x341d69),_0x26bfc5;}();_0x33c7c1[_0x40e1f8('0x53')]=_0x295ae7;},{}],0x2d:[function(_0x656753,_0x24697d,_0xb9aa45){var _0x238d2d=_0x3e44;'use strict';function _0x29b72c(_0x82aeee,_0x35f3a6){var _0x1bbd8a=_0x3e44;if(!(_0x82aeee instanceof _0x35f3a6))throw new TypeError(_0x1bbd8a('0xc2c'));}function _0x37ff8c(_0x11fba4,_0x1a12e8){var _0xe49993=_0x3e44;for(var _0x2add38=0x0;_0x2add38<_0x1a12e8[_0xe49993('0x1d1')];_0x2add38++){var _0x47cff1=_0x1a12e8[_0x2add38];_0x47cff1[_0xe49993('0x836')]=_0x47cff1['enumerable']||!0x1,_0x47cff1[_0xe49993('0x249')]=!0x0,_0xe49993('0x9b6')in _0x47cff1&&(_0x47cff1[_0xe49993('0xc28')]=!0x0),Object[_0xe49993('0x2cd')](_0x11fba4,_0x47cff1[_0xe49993('0xcb6')],_0x47cff1);}}Object[_0x238d2d('0x2cd')](_0xb9aa45,_0x238d2d('0x866'),{'value':!0x0}),_0xb9aa45['default']=void 0x0;var _0x44ca45=_0x656753('axios'),_0x2db4ce=function(){var _0x1d03f8=_0x238d2d;function _0x3b20ee(_0x1de3d0,_0x502dd6,_0x1c5875){var _0x29fdf2=_0x3e44,_0x50e14e=!(arguments[_0x29fdf2('0x1d1')]>0x3&&void 0x0!==arguments[0x3])||arguments[0x3];_0x29b72c(this,_0x3b20ee),this[_0x29fdf2('0xadb')]=_0x1de3d0,this[_0x29fdf2('0x76')]=_0x502dd6,this[_0x29fdf2('0x76c')]=_0x1c5875,this[_0x29fdf2('0xc26')]=_0x50e14e;}var _0xba2db1,_0x4b2938,_0x2db6cb;return _0xba2db1=_0x3b20ee,(_0x4b2938=[{'key':_0x1d03f8('0x715'),'value':function(_0x2abe65){var _0x17531a=_0x1d03f8;if(this[_0x17531a('0xc26')]){var _0xc20f01=''[_0x17531a('0x49e')](this['clientBaseUrl'],_0x17531a('0x6c4'))[_0x17531a('0x49e')](this[_0x17531a('0x76')],_0x17531a('0x2ea'))[_0x17531a('0x49e')](_0x2abe65);return _0x44ca45[_0x17531a('0x715')](_0xc20f01);}return _0x44ca45[_0x17531a('0x715')](this['baseUrl']+_0x2abe65,{'headers':{'Authorization':_0x17531a('0x3bc')[_0x17531a('0x49e')](this[_0x17531a('0x76')])}});}}])&&_0x37ff8c(_0xba2db1[_0x1d03f8('0x3ec')],_0x4b2938),_0x2db6cb&&_0x37ff8c(_0xba2db1,_0x2db6cb),_0x3b20ee;}();_0xb9aa45['default']=_0x2db4ce;},{'axios':0x62}],0x2e:[function(_0x3ea120,_0x4fce23,_0x3afae7){var _0x2cd2a1=_0x3e44;'use strict';var _0x456a7c;function _0x2bfe55(_0xf3783){var _0x461fcc=_0x3e44;return(_0x2bfe55=_0x461fcc('0x67')==typeof Symbol&&'symbol'==typeof Symbol[_0x461fcc('0x303')]?function(_0x531541){return typeof _0x531541;}:function(_0x4e7377){var _0x37242d=_0x461fcc;return _0x4e7377&&_0x37242d('0x67')==typeof Symbol&&_0x4e7377[_0x37242d('0xbe8')]===Symbol&&_0x4e7377!==Symbol[_0x37242d('0x3ec')]?_0x37242d('0xd77'):typeof _0x4e7377;})(_0xf3783);}function _0x4353a6(_0x85f060,_0x28b795){if(!(_0x85f060 instanceof _0x28b795))throw new TypeError('Cannot\x20call\x20a\x20class\x20as\x20a\x20function');}function _0x10f794(_0x21810b,_0x1289ed){var _0x3bf045=_0x3e44;for(var _0x5a6732=0x0;_0x5a6732<_0x1289ed[_0x3bf045('0x1d1')];_0x5a6732++){var _0x3feca8=_0x1289ed[_0x5a6732];_0x3feca8[_0x3bf045('0x836')]=_0x3feca8['enumerable']||!0x1,_0x3feca8[_0x3bf045('0x249')]=!0x0,_0x3bf045('0x9b6')in _0x3feca8&&(_0x3feca8[_0x3bf045('0xc28')]=!0x0),Object[_0x3bf045('0x2cd')](_0x21810b,_0x3feca8[_0x3bf045('0xcb6')],_0x3feca8);}}function _0x2991d8(_0xa16931,_0x66fde){var _0x444132=_0x3e44;return!_0x66fde||_0x444132('0x669')!==_0x2bfe55(_0x66fde)&&_0x444132('0x67')!=typeof _0x66fde?function(_0x57f9d1){if(void 0x0===_0x57f9d1)throw new ReferenceError('this\x20hasn\x27t\x20been\x20initialised\x20-\x20super()\x20hasn\x27t\x20been\x20called');return _0x57f9d1;}(_0xa16931):_0x66fde;}function _0x32c70f(){var _0x2f2c5e=_0x3e44;if(_0x2f2c5e('0x396')==typeof Reflect||!Reflect['construct'])return!0x1;if(Reflect[_0x2f2c5e('0xa71')][_0x2f2c5e('0x886')])return!0x1;if('function'==typeof Proxy)return!0x0;try{return Date['prototype'][_0x2f2c5e('0x8dc')][_0x2f2c5e('0x928')](Reflect[_0x2f2c5e('0xa71')](Date,[],function(){})),!0x0;}catch(_0x8f316b){return!0x1;}}function _0xf2ff19(_0xf39272){var _0x5f53ac=_0x3e44;return(_0xf2ff19=Object[_0x5f53ac('0x16')]?Object[_0x5f53ac('0x418')]:function(_0x1cc8f6){var _0x5de7f5=_0x5f53ac;return _0x1cc8f6[_0x5de7f5('0xc15')]||Object[_0x5de7f5('0x418')](_0x1cc8f6);})(_0xf39272);}function _0xf39079(_0x585892,_0x1e9bfd){var _0x28bf39=_0x3e44;return(_0xf39079=Object[_0x28bf39('0x16')]||function(_0x5cef34,_0x5affe7){var _0x55987e=_0x28bf39;return _0x5cef34[_0x55987e('0xc15')]=_0x5affe7,_0x5cef34;})(_0x585892,_0x1e9bfd);}Object['defineProperty'](_0x3afae7,_0x2cd2a1('0x866'),{'value':!0x0}),_0x3afae7[_0x2cd2a1('0x53')]=void 0x0;var _0x26d286=function(_0x7ff3b7){var _0x251fd7=_0x2cd2a1;!function(_0x157bfa,_0x4d96c0){var _0x5d8270=_0x3e44;if(_0x5d8270('0x67')!=typeof _0x4d96c0&&null!==_0x4d96c0)throw new TypeError(_0x5d8270('0xc9'));_0x157bfa['prototype']=Object[_0x5d8270('0xd9d')](_0x4d96c0&&_0x4d96c0[_0x5d8270('0x3ec')],{'constructor':{'value':_0x157bfa,'writable':!0x0,'configurable':!0x0}}),_0x4d96c0&&_0xf39079(_0x157bfa,_0x4d96c0);}(_0x5c2b61,_0x7ff3b7);var _0x239817,_0x4f2f7f,_0x1414df,_0x169271,_0xdc53ee=(_0x239817=_0x5c2b61,function(){var _0x1b02dc,_0x567618=_0xf2ff19(_0x239817);if(_0x32c70f()){var _0xa6b6ed=_0xf2ff19(this)['constructor'];_0x1b02dc=Reflect['construct'](_0x567618,arguments,_0xa6b6ed);}else _0x1b02dc=_0x567618['apply'](this,arguments);return _0x2991d8(this,_0x1b02dc);});function _0x5c2b61(){var _0x4f60f7=_0x3e44;return _0x4353a6(this,_0x5c2b61),_0xdc53ee[_0x4f60f7('0x7da')](this,arguments);}return _0x4f2f7f=_0x5c2b61,(_0x1414df=[{'key':_0x251fd7('0xdba'),'value':function(_0x32d6f7){var _0x297d44=_0x251fd7,_0xd2a7e5={'id':_0x32d6f7},_0x383b95=JSON[_0x297d44('0x263')](_0xd2a7e5),_0x2e2d8e=[];_0x2e2d8e['callBackData']=[],_0x2e2d8e[_0x297d44('0x947')]=_0x297d44('0x2f5'),_0x2e2d8e[_0x297d44('0x350')]='getLogsFailCallBack',this['customAction'](_0x297d44('0xdba'),'admin='[_0x297d44('0x49e')](this['modulePathName']),_0x383b95,_0x2e2d8e);}},{'key':_0x251fd7('0x2f5'),'value':function(_0x5296ac){var _0x3350a3=_0x251fd7;for(var _0x4e504e=_0x3350a3('0xb3a'),_0xf8da70=_0x5296ac[_0x3350a3('0xc8f')],_0x5d6b92='',_0x293125='',_0x39047e=0x0;_0x39047e<_0xf8da70['length'];_0x39047e++){var _0x2a6b50=_0x3350a3('0x2ac');_0x293125+=_0x2a6b50=(_0x2a6b50=(_0x2a6b50=_0x2a6b50[_0x3350a3('0x95e')](/_date_/g,_0xf8da70[_0x39047e][_0x3350a3('0x322')]))[_0x3350a3('0x95e')](/_status_/g,''[_0x3350a3('0x49e')](_0xf8da70[_0x39047e]['status_from'],_0x3350a3('0x62e'))[_0x3350a3('0x49e')](_0xf8da70[_0x39047e]['status_to'])))[_0x3350a3('0x95e')](/_note_/g,_0xf8da70[_0x39047e][_0x3350a3('0xca8')]);}''!==_0x293125&&(_0x5d6b92+=_0x4e504e=_0x4e504e[_0x3350a3('0x95e')](_0x3350a3('0x58b'),_0x293125)),this[_0x3350a3('0xcc4')](_0x3350a3('0xc8c'),_0x5d6b92),timeUtils['convertToRelativeTime']($(_0x3350a3('0x3a1')));}},{'key':_0x251fd7('0x6ef'),'value':function(_0x277b92){var _0x2eabe0=_0x251fd7;this[_0x2eabe0('0xcc4')](_0x2eabe0('0x6b7'),_0x2eabe0('0xaa1'));}}])&&_0x10f794(_0x4f2f7f['prototype'],_0x1414df),_0x169271&&_0x10f794(_0x4f2f7f,_0x169271),_0x5c2b61;}(((_0x456a7c=_0x3ea120(_0x2cd2a1('0x77e')))&&_0x456a7c['__esModule']?_0x456a7c:{'default':_0x456a7c})['default']);_0x3afae7[_0x2cd2a1('0x53')]=_0x26d286;},{'./AdapterBase':0x27}],0x2f:[function(_0x1c7b6a,_0x3243d5,_0x4e27ec){var _0x2b1808=_0x3e44;'use strict';function _0x573c2e(_0xbaf4a8,_0x169836){var _0x423881=_0x3e44;for(var _0xeb8128=0x0;_0xeb8128<_0x169836[_0x423881('0x1d1')];_0xeb8128++){var _0x472cab=_0x169836[_0xeb8128];_0x472cab[_0x423881('0x836')]=_0x472cab[_0x423881('0x836')]||!0x1,_0x472cab['configurable']=!0x0,_0x423881('0x9b6')in _0x472cab&&(_0x472cab['writable']=!0x0),Object['defineProperty'](_0xbaf4a8,_0x472cab[_0x423881('0xcb6')],_0x472cab);}}Object[_0x2b1808('0x2cd')](_0x4e27ec,_0x2b1808('0x866'),{'value':!0x0}),_0x4e27ec[_0x2b1808('0x53')]=void 0x0;var _0x35d426=_0x1c7b6a('axios'),_0x3c13b4=function(){var _0x41d7be=_0x2b1808;function _0xae72c8(_0x3057db){var _0x383d8c=_0x3e44;!function(_0x4fe6d4,_0x411a66){var _0x2e77f8=_0x3e44;if(!(_0x4fe6d4 instanceof _0x411a66))throw new TypeError(_0x2e77f8('0xc2c'));}(this,_0xae72c8),this['adapter']=_0x3057db,this[_0x383d8c('0x1a1')]=this[_0x383d8c('0x7c7')]['requestCache'];}var _0x3df6ae,_0x4feb99,_0x2aeab1;return _0x3df6ae=_0xae72c8,(_0x4feb99=[{'key':_0x41d7be('0xa9'),'value':function(_0xfb4016){var _0x383b5a=_0x41d7be,_0x278683=this,_0x7509d0='',_0xa5edd3='';null!=_0xfb4016[0x3]&&(_0x7509d0=_0xfb4016[0x3]),null!=_0xfb4016[0x4]&&(_0xa5edd3=JSON[_0x383b5a('0x263')](_0xfb4016[0x4]));var _0x332e9a=this[_0x383b5a('0x1a1')]['getKey'](this['adapter'][_0x383b5a('0x457')],{'t':_0xfb4016[0x0],'key':_0xfb4016[0x1],'value':_0xfb4016[0x2],'method':_0x7509d0,'methodParams':_0xa5edd3,'a':_0x383b5a('0x2b2')}),_0x361c6b=this[_0x383b5a('0x1a1')][_0x383b5a('0xae9')](_0x332e9a);if(null!=_0x361c6b&&'SUCCESS'===_0x361c6b[_0x383b5a('0x90d')])return new Promise(function(_0x511156,_0x5af8e2){return _0x511156(_0x361c6b['data']);});var _0x3ca2d5={'t':_0xfb4016[0x0],'key':_0xfb4016[0x1],'value':_0xfb4016[0x2],'method':_0x7509d0,'methodParams':_0xa5edd3,'a':_0x383b5a('0x2b2')},_0x4d70ba=''[_0x383b5a('0x49e')](this['adapter'][_0x383b5a('0x457')],'?_url=1');for(var _0xa144a5 in _0x3ca2d5)_0x4d70ba=''[_0x383b5a('0x49e')](_0x4d70ba,'&')['concat'](_0xa144a5,'=')[_0x383b5a('0x49e')](encodeURIComponent(_0x3ca2d5[_0xa144a5]));return _0x35d426[_0x383b5a('0xb2f')](_0x4d70ba,{})[_0x383b5a('0x577')](function(_0x3f9309){var _0x15c9e1=_0x383b5a;if('SUCCESS'!==_0x3f9309[_0x15c9e1('0xc8f')][_0x15c9e1('0x90d')])throw Error('Response\x20for\x20'[_0x15c9e1('0x49e')](_0x332e9a,_0x15c9e1('0x48')));return _0x278683[_0x15c9e1('0x1a1')]['setData'](_0x332e9a,_0x3f9309['data']),_0x3f9309[_0x15c9e1('0xc8f')][_0x15c9e1('0xc8f')];});}},{'key':'updateAllMasterData','value':function(){var _0x551d18=_0x41d7be;for(var _0x156a19=this,_0x2c3c58=this[_0x551d18('0x7c7')][_0x551d18('0x83c')](),_0x1c12e7=[],_0x2cdfb6=0x0;_0x2cdfb6<_0x2c3c58[_0x551d18('0x1d1')];_0x2cdfb6++){var _0x3ab5b3=_0x2c3c58[_0x2cdfb6];void 0x0!==_0x3ab5b3[0x1]['remote-source']&&null!=_0x3ab5b3[0x1][_0x551d18('0x5e1')]&&function(){var _0x3c2088=_0x551d18,_0x2c6e6a=''['concat'](_0x3ab5b3[0x1][_0x3c2088('0x5e1')][0x0],'_')[_0x3c2088('0x49e')](_0x3ab5b3[0x1][_0x3c2088('0x5e1')][0x1],'_')[_0x3c2088('0x49e')](_0x3ab5b3[0x1][_0x3c2088('0x5e1')][0x2]);0x4===_0x3ab5b3[0x1]['remote-source'][_0x3c2088('0x1d1')]&&(_0x2c6e6a=''[_0x3c2088('0x49e')](_0x2c6e6a,'_')[_0x3c2088('0x49e')](_0x3ab5b3[0x1][_0x3c2088('0x5e1')][0x3]));var _0xf58d05=_0x156a19[_0x3c2088('0xa9')](_0x3ab5b3[0x1][_0x3c2088('0x5e1')])[_0x3c2088('0x577')](function(_0x4c753e){_0x156a19['adapter']['fieldMasterData'][_0x2c6e6a]=_0x4c753e;});_0x1c12e7['push'](_0xf58d05);}();}return Promise['all'](_0x1c12e7);}}])&&_0x573c2e(_0x3df6ae[_0x41d7be('0x3ec')],_0x4feb99),_0x2aeab1&&_0x573c2e(_0x3df6ae,_0x2aeab1),_0xae72c8;}();_0x4e27ec['default']=_0x3c13b4;},{'axios':0x62}],0x30:[function(_0x3a64b0,_0x4c5bb7,_0x1873c7){var _0xe9fe19=_0x3e44;'use strict';Object['defineProperty'](_0x1873c7,'__esModule',{'value':!0x0}),_0x1873c7[_0xe9fe19('0x53')]=void 0x0;var _0x1a494c,_0x29a7fe=(_0x1a494c=_0x3a64b0('./FormValidation'))&&_0x1a494c[_0xe9fe19('0x866')]?_0x1a494c:{'default':_0x1a494c};function _0x3198c6(_0xd53683,_0xd30f6c){var _0x2fdf5a=_0xe9fe19;for(var _0x453924=0x0;_0x453924<_0xd30f6c['length'];_0x453924++){var _0x2d46a2=_0xd30f6c[_0x453924];_0x2d46a2[_0x2fdf5a('0x836')]=_0x2d46a2[_0x2fdf5a('0x836')]||!0x1,_0x2d46a2['configurable']=!0x0,_0x2fdf5a('0x9b6')in _0x2d46a2&&(_0x2d46a2[_0x2fdf5a('0xc28')]=!0x0),Object[_0x2fdf5a('0x2cd')](_0xd53683,_0x2d46a2['key'],_0x2d46a2);}}var _0x10e625=function(){var _0x4eeae5=_0xe9fe19;function _0xbaf139(){var _0x11a43e=_0x3e44;!function(_0x143bd7,_0x59a42f){if(!(_0x143bd7 instanceof _0x59a42f))throw new TypeError('Cannot\x20call\x20a\x20class\x20as\x20a\x20function');}(this,_0xbaf139),this['deleteParams']={},this[_0x11a43e('0xbb2')]=!0x1,this['instanceId']=_0x11a43e('0x1ee'),this['ga']=[],this[_0x11a43e('0xa3f')]=!0x0,this[_0x11a43e('0x385')]=!0x0,this[_0x11a43e('0x224')]=!0x0,this[_0x11a43e('0x7af')]=!0x0,this['showCancel']=!0x0,this[_0x11a43e('0xa28')]=!0x1,this[_0x11a43e('0x5b3')]=!0x1,this[_0x11a43e('0x274')]='',this[_0x11a43e('0xac6')]=0x0,this[_0x11a43e('0x834')]={},this['translations']={},this[_0x11a43e('0xa7a')]=[],this[_0x11a43e('0x327')]=!0x1,this['fieldTemplates']=null,this['templates']=null,this[_0x11a43e('0x4e2')]=null,this[_0x11a43e('0x422')]=null,this[_0x11a43e('0xa0a')]={},this['fieldMasterDataKeys']={},this[_0x11a43e('0x7c8')]=null,this['sourceMapping']=null,this[_0x11a43e('0xb61')]=null,this[_0x11a43e('0xc18')]=null,this['user']=null,this[_0x11a43e('0xaf2')]=null,this[_0x11a43e('0xcdc')]={},this[_0x11a43e('0xadb')]=null,this[_0x11a43e('0x109')]=null,this[_0x11a43e('0x600')]=this;}var _0x3c843a,_0x4efc3d,_0x5f1336;return _0x3c843a=_0xbaf139,(_0x4efc3d=[{'key':'init','value':function(_0x23098f,_0x28ef5e,_0x2e3f5a,_0x3c8452){}},{'key':_0x4eeae5('0x28f'),'value':function(){}},{'key':_0x4eeae5('0xbc6'),'value':function(_0x320a23){var _0x2267ee=_0x4eeae5;this[_0x2267ee('0xd41')]=_0x320a23;}},{'key':_0x4eeae5('0xa02'),'value':function(_0x21d2bf){var _0x50984d=_0x4eeae5;this[_0x50984d('0x188')]=_0x21d2bf;}},{'key':_0x4eeae5('0xc64'),'value':function(_0x5dd3ed){var _0x11aa61=_0x4eeae5;this[_0x11aa61('0xcdc')]=_0x5dd3ed;}},{'key':'sortingStarted','value':function(_0x4a5c1e){this['sorting']=_0x4a5c1e;}},{'key':'checkPermission','value':function(_0x5e7185){var _0x58d661=_0x4eeae5;return void 0x0===this['permissions'][_0x5e7185]||null==this[_0x58d661('0xcdc')][_0x5e7185]||_0x58d661('0x6b9')===this['permissions'][_0x5e7185]?_0x58d661('0x6b9'):this[_0x58d661('0xcdc')][_0x5e7185];}},{'key':_0x4eeae5('0xa07'),'value':function(_0x36a62c){var _0x14804b=_0x4eeae5;this[_0x14804b('0xadb')]=_0x36a62c;}},{'key':_0x4eeae5('0x1a7'),'value':function(_0x4854a9){var _0x2969f5=_0x4eeae5;this[_0x2969f5('0x109')]=_0x4854a9;}},{'key':'setUser','value':function(_0xbfe2b3){var _0x55fa37=_0x4eeae5;this[_0x55fa37('0xd22')]=_0xbfe2b3;}},{'key':_0x4eeae5('0x1b3'),'value':function(){var _0x331830=_0x4eeae5;return this[_0x331830('0xd22')];}},{'key':'setInstanceId','value':function(_0x5875fb){var _0x479b3c=_0x4eeae5;this[_0x479b3c('0x384')]=_0x5875fb;}},{'key':_0x4eeae5('0x91'),'value':function(_0x57a20e){var _0x5aad4f=_0x4eeae5;this[_0x5aad4f('0x327')]=_0x57a20e;}},{'key':_0x4eeae5('0x8'),'value':function(){var _0x326b1e=_0x4eeae5;$(_0x326b1e('0x11a'))[_0x326b1e('0x6bc')]({'scrollTop':0x0},_0x326b1e('0x245'));}},{'key':_0x4eeae5('0xcd5'),'value':function(){var _0xa228ff=_0x4eeae5;$('html,\x20body')[_0xa228ff('0x6bc')]({'scrollTop':$(document)[_0xa228ff('0x448')]()},_0xa228ff('0x3d3'));}},{'key':'scrollToElement','value':function(_0x22076e){var _0x35b06f=_0x4eeae5;$(window)[_0x35b06f('0x448')]()<=_0x22076e['offset']()[_0x35b06f('0x68')]&&$(_0x35b06f('0x11a'))['animate']({'scrollTop':_0x22076e[_0x35b06f('0x483')]()['top']},'slow');}},{'key':_0x4eeae5('0x710'),'value':function(_0x7ed8a5){var _0x4dadab=_0x4eeae5;$(window)[_0x4dadab('0x448')]()<=_0x7ed8a5['offset']()[_0x4dadab('0x68')]+_0x7ed8a5['height']()&&$('html,\x20body')[_0x4dadab('0x6bc')]({'scrollTop':_0x7ed8a5[_0x4dadab('0x483')]()[_0x4dadab('0x68')]+_0x7ed8a5[_0x4dadab('0x448')]()},'slow');}},{'key':'setTranslations','value':function(_0x8b2db1){var _0x106193=_0x4eeae5;this[_0x106193('0xb43')]=_0x8b2db1['messages'][''];}},{'key':_0x4eeae5('0xb38'),'value':function(_0x2b3559){var _0x79fdb=_0x4eeae5;this[_0x79fdb('0xb43')]=_0x2b3559;}},{'key':'gt','value':function(_0x251f56){var _0x98960e=_0x4eeae5;return void 0x0===this[_0x98960e('0xb43')][_0x251f56]||null===this['translations'][_0x251f56]?(console[_0x98960e('0xc78')](_0x98960e('0xa8d')['concat'](_0x251f56)),_0x251f56):this[_0x98960e('0xb43')][_0x251f56][0x0];}},{'key':_0x4eeae5('0x347'),'value':function(_0x51c392){var _0x5b5d06=_0x4eeae5,_0x40f96a,_0x5446b7=localStorage[_0x5b5d06('0x226')](_0x5b5d06('0x5e8'));if(void 0x0===_0x5446b7)_0x40f96a={};else try{_0x40f96a=JSON['parse'](_0x5446b7);}catch(_0x587944){_0x40f96a={};}void 0x0===this['translations'][_0x51c392]&&(_0x40f96a[_0x51c392]=_0x51c392,localStorage[_0x5b5d06('0xafa')](_0x5b5d06('0x5e8'),JSON[_0x5b5d06('0x263')](_0x40f96a)));}},{'key':_0x4eeae5('0x6ea'),'value':function(){return!0x0;}},{'key':_0x4eeae5('0x48c'),'value':function(_0x247666,_0x299853,_0x1b3a8a){var _0x5afa1b=_0x4eeae5;try{void 0x0===_0x299853||null==_0x299853?this['ga']['push']([_0x5afa1b('0x360'),this[_0x5afa1b('0x384')],_0x247666]):void 0x0===_0x1b3a8a||null==_0x1b3a8a?this['ga'][_0x5afa1b('0x8cd')]([_0x5afa1b('0x360'),this[_0x5afa1b('0x384')],_0x247666,_0x299853]):this['ga'][_0x5afa1b('0x8cd')]([_0x5afa1b('0x360'),this['instanceId'],_0x247666,_0x299853,_0x1b3a8a]);}catch(_0x103e49){}}},{'key':'setCurrentProfile','value':function(_0xbb6f50){var _0x240c10=_0x4eeae5;this[_0x240c10('0xaf2')]=_0xbb6f50;}},{'key':'getCurrentProfile','value':function(){return this['currentProfile'];}},{'key':_0x4eeae5('0x62d'),'value':function(_0x4a93ff,_0x1c9f10,_0x5ae001){var _0x359e25=_0x4eeae5;this[_0x359e25('0xa0a')]={},this[_0x359e25('0xc1c')]={},this[_0x359e25('0x7c8')]=_0x1c9f10,this[_0x359e25('0x3aa')]=_0x5ae001;for(var _0x53f5dd=this[_0x359e25('0x83c')](),_0x10f78f=0x0;_0x10f78f<_0x53f5dd[_0x359e25('0x1d1')];_0x10f78f++){var _0x2c8e90=_0x53f5dd[_0x10f78f];if(void 0x0!==_0x2c8e90[0x1]['remote-source']&&null!=_0x2c8e90[0x1][_0x359e25('0x5e1')]){var _0x3ab4e9=this['getRemoteSourceKey'](_0x2c8e90);this[_0x359e25('0xc1c')][_0x3ab4e9]=!0x1;var _0x5cce8d={'callBack':_0x359e25('0x2f3')};_0x5cce8d['callBackData']=[_0x3ab4e9],null!=_0x4a93ff&&(_0x5cce8d[_0x359e25('0x947')]=_0x4a93ff),this[_0x359e25('0x2b2')](_0x2c8e90[0x1]['remote-source'],_0x5cce8d);}}}},{'key':_0x4eeae5('0x977'),'value':function(){var _0x204ebe=_0x4eeae5;this[_0x204ebe('0x693')]={};for(var _0x55dcb4=this['getRemoteSourceFields'](),_0x1a2a91=0x0;_0x1a2a91<_0x55dcb4[_0x204ebe('0x1d1')];_0x1a2a91++){var _0x4f93f8=_0x55dcb4[_0x1a2a91];void 0x0!==_0x4f93f8[0x1][_0x204ebe('0x5e1')]&&null!=_0x4f93f8[0x1][_0x204ebe('0x5e1')]&&(this[_0x204ebe('0x693')][_0x4f93f8[0x0]]=_0x4f93f8[0x1][_0x204ebe('0x5e1')]);}}},{'key':'getRemoteSourceKey','value':function(_0x5b8c38){var _0x2fa779=_0x4eeae5,_0x3a912a=''[_0x2fa779('0x49e')](_0x5b8c38[0x1][_0x2fa779('0x5e1')][0x0],'_')[_0x2fa779('0x49e')](_0x5b8c38[0x1][_0x2fa779('0x5e1')][0x1],'_')[_0x2fa779('0x49e')](_0x5b8c38[0x1][_0x2fa779('0x5e1')][0x2]);return _0x5b8c38[0x1][_0x2fa779('0x5e1')][_0x2fa779('0x1d1')]>0x3&&(_0x3a912a=''[_0x2fa779('0x49e')](_0x3a912a,'_')[_0x2fa779('0x49e')](_0x5b8c38[0x1][_0x2fa779('0x5e1')][0x3])),_0x3a912a;}},{'key':_0x4eeae5('0x83c'),'value':function(){var _0x229534=_0x4eeae5,_0x2afc91,_0x4d0b76=this[_0x229534('0x59d')](),_0x277f2f=this[_0x229534('0xc6')]();if(null!=_0x277f2f)for(var _0xb38de0=0x0;_0xb38de0<_0x277f2f['length'];_0xb38de0++)(null==(_0x2afc91=this[_0x229534('0x740')](_0x277f2f[_0xb38de0][0x0],_0x4d0b76))||_0x229534('0x7fc')!==_0x2afc91[_0x229534('0xb88')]&&'select2'!==_0x2afc91[_0x229534('0xb88')]&&_0x229534('0x9da')!==_0x2afc91[_0x229534('0xb88')])&&_0x4d0b76[_0x229534('0x8cd')](_0x277f2f[_0xb38de0]);for(var _0x472f8c=[],_0x52fa3c=[],_0xde30ef=null,_0x243e15=null,_0x5e3396=0x0;_0x5e3396<_0x4d0b76['length'];_0x5e3396++)if(void 0x0!==(_0xde30ef=_0x4d0b76[_0x5e3396])[0x1][_0x229534('0x5e1')]&&null!==_0xde30ef[0x1][_0x229534('0x5e1')]){var _0xa798ab=this[_0x229534('0x9d5')](_0xde30ef);_0x52fa3c[_0x229534('0x857')](_0xa798ab)<0x0&&(_0x472f8c[_0x229534('0x8cd')](_0xde30ef),_0x52fa3c[_0x229534('0x8cd')](_0xa798ab));}else{if(void 0x0!==_0xde30ef[0x1][_0x229534('0x61a')]&&null!==_0xde30ef[0x1]['form'])for(var _0x304892=0x0;_0x304892<_0xde30ef[0x1]['form'][_0x229534('0x1d1')];_0x304892++)if(void 0x0!==(_0x243e15=_0xde30ef[0x1]['form'][_0x304892])[0x1]['remote-source']&&null!==_0x243e15[0x1][_0x229534('0x5e1')]){var _0x359f7a=this[_0x229534('0x9d5')](_0x243e15);_0x52fa3c[_0x229534('0x857')](_0x359f7a)<0x0&&(_0x472f8c[_0x229534('0x8cd')](_0x243e15),_0x52fa3c[_0x229534('0x8cd')](_0x359f7a));}}return _0x472f8c;}},{'key':_0x4eeae5('0x3d7'),'value':function(_0x249095){var _0x1ebd74=_0x4eeae5;this[_0x1ebd74('0xa28')]=_0x249095;}},{'key':_0x4eeae5('0xbc'),'value':function(_0xcde4d5){this['createRemoteTable']=_0xcde4d5;}},{'key':_0x4eeae5('0xa09'),'value':function(_0xdf1b24){var _0x17426d=_0x4eeae5;this[_0x17426d('0x834')]=_0xdf1b24;}},{'key':_0x4eeae5('0xa69'),'value':function(){var _0x3fb4ef=_0x4eeae5;return this[_0x3fb4ef('0xbb2')];}},{'key':_0x4eeae5('0x5c2'),'value':function(_0x1eddd1){for(var _0x4b2053 in _0x1eddd1)if(!0x1===_0x1eddd1[_0x4b2053])return!0x1;return!0x0;}},{'key':_0x4eeae5('0x2f3'),'value':function(_0x59adea,_0x250463,_0x3cdc17,_0x3fa768){var _0x1a634e=_0x4eeae5;this[_0x1a634e('0xa0a')][_0x59adea]=_0x250463,this['fieldMasterDataKeys'][_0x59adea]=!0x0,null!=_0x3cdc17&&_0x3cdc17(),null!==this[_0x1a634e('0x7c8')]&&void 0x0!==this['fieldMasterDataCallback']&&this['isAllLoaded'](this['fieldMasterDataKeys'])&&null!==this[_0x1a634e('0x3aa')]&&void 0x0!==this[_0x1a634e('0x3aa')]?this[_0x1a634e('0x7c8')](this['fieldMasterDataCallbackData']):null!==this[_0x1a634e('0x7c8')]&&void 0x0!==this[_0x1a634e('0x7c8')]&&this[_0x1a634e('0x5c2')](this[_0x1a634e('0xc1c')])&&this['fieldMasterDataCallback']();}},{'key':_0x4eeae5('0x740'),'value':function(_0x4b2079,_0x3d469b){var _0x27bf9e=_0x4eeae5;for(var _0x1d136e=0x0;_0x1d136e<_0x3d469b[_0x27bf9e('0x1d1')];_0x1d136e++)if(_0x4b2079===_0x3d469b[_0x1d136e][0x0])return _0x3d469b[_0x1d136e][0x1];return null;}},{'key':_0x4eeae5('0x7aa'),'value':function(){var _0x2a4e13=_0x4eeae5;return[_0x2a4e13('0xaff'),'yellow',_0x2a4e13('0xbb8'),_0x2a4e13('0x4c6'),'light-blue','green',_0x2a4e13('0x256'),_0x2a4e13('0x9fa'),_0x2a4e13('0xb3b'),'orange',_0x2a4e13('0xcfa'),_0x2a4e13('0x6cf')];}},{'key':'getColorByRandomString','value':function(_0x555710){var _0x13944a=_0x4eeae5,_0x55f3a9=this[_0x13944a('0x7aa')]();return _0x55f3a9[_0x555710[_0x13944a('0xd08')](0x0)%_0x55f3a9[_0x13944a('0x1d1')]];}},{'key':_0x4eeae5('0x698'),'value':function(_0x2ffa13){var _0xabf74c=_0x4eeae5;_0x2ffa13=_0x2ffa13[_0xabf74c('0x5d')]();var _0x49c17c={'pdf':_0xabf74c('0xaff'),'csv':_0xabf74c('0xa6'),'xls':_0xabf74c('0x178'),'xlsx':_0xabf74c('0x178'),'doc':_0xabf74c('0xd33'),'docx':_0xabf74c('0xd33')};return _0x49c17c[_0xabf74c('0x4d6')]=_0xabf74c('0x4c6'),_0x49c17c['ppt']=_0xabf74c('0xbb1'),_0x49c17c[_0xabf74c('0xd21')]='orange',_0x49c17c['jpg']=_0xabf74c('0x9fa'),_0x49c17c[_0xabf74c('0x7a6')]=_0xabf74c('0x9fa'),_0x49c17c[_0xabf74c('0x131')]=_0xabf74c('0x178'),_0x49c17c['png']=_0xabf74c('0xa6'),_0x49c17c['bmp']='fuchsia',void 0x0!==_0x49c17c[_0x2ffa13]||null!=_0x49c17c[_0x2ffa13]?_0x49c17c[_0x2ffa13]:this[_0xabf74c('0x8b6')](_0x2ffa13);}},{'key':_0x4eeae5('0xe0'),'value':function(_0x3566ca){var _0x38c832=_0x4eeae5,_0x3f0cc1={'pdf':_0x38c832('0xc46'),'csv':_0x38c832('0xd81'),'xls':_0x38c832('0x7e6'),'xlsx':'fa\x20fa-file-excel-o','doc':_0x38c832('0x4fb'),'docx':_0x38c832('0x4fb'),'ppt':'fa\x20fa-file-powerpoint-o','pptx':'fa\x20fa-file-powerpoint-o','jpg':_0x38c832('0x288'),'jpeg':_0x38c832('0x288'),'gif':'fa\x20fa-file-image-o','png':'fa\x20fa-file-image-o','bmp':'fa\x20fa-file-image-o','txt':_0x38c832('0x9f'),'rtf':_0x38c832('0x9f')};return void 0x0!==_0x3f0cc1[_0x3566ca=_0x3566ca['toLowerCase']()]||null!=_0x3f0cc1[_0x3566ca]?_0x3f0cc1[_0x3566ca]:_0x38c832('0x533');}},{'key':_0x4eeae5('0x49'),'value':function(){return this['sourceMapping'];}},{'key':_0x4eeae5('0x9cd'),'value':function(_0x2b9821){var _0x19daa3=_0x4eeae5;this[_0x19daa3('0x31c')]=_0x2b9821;}},{'key':_0x4eeae5('0xca4'),'value':function(_0x597671){var _0x2f68b3=_0x4eeae5;this[_0x2f68b3('0x31c')]&&console[_0x2f68b3('0xc78')](_0x597671);}},{'key':_0x4eeae5('0x931'),'value':function(_0x1ddf85){var _0xcf7a32=_0x4eeae5;this[_0xcf7a32('0x82c')]=_0x1ddf85;}},{'key':_0x4eeae5('0x9fe'),'value':function(_0x49798b){var _0x33a7bf=_0x4eeae5;this[_0x33a7bf('0x2a8')]=_0x49798b;}},{'key':'getWSProperty','value':function(_0x1fb993,_0x2f7087){var _0x1b5c5e=_0x4eeae5;return _0x1fb993[_0x1b5c5e('0x106')](_0x2f7087)?_0x1fb993[_0x2f7087]:null;}},{'key':'getClientMessage','value':function(_0x459665){var _0x6d818c=_0x4eeae5;return this[_0x6d818c('0x8fb')](this['msgList'],_0x459665);}},{'key':_0x4eeae5('0xcd0'),'value':function(_0x701117){var _0xa7e487=_0x4eeae5;return this[_0xa7e487('0x8fb')](this[_0xa7e487('0x2a8')],_0x701117);}},{'key':_0x4eeae5('0xd3'),'value':function(_0x3541e4){var _0x4d4b5e=_0x4eeae5;this[_0x4d4b5e('0x3b0')]=_0x3541e4;}},{'key':_0x4eeae5('0xaca'),'value':function(_0x2f3ad6){var _0x2eec9a=_0x4eeae5;null!=this[_0x2eec9a('0x93b')]&&(this[_0x2eec9a('0x487')]=this[_0x2eec9a('0x93b')],$('#'[_0x2eec9a('0x49e')](this[_0x2eec9a('0x93b')]))[_0x2eec9a('0x79b')]()),$('#'['concat'](_0x2f3ad6))[_0x2eec9a('0x388')](),this[_0x2eec9a('0x93b')]=_0x2f3ad6,this[_0x2eec9a('0x594')]();}},{'key':_0x4eeae5('0x875'),'value':function(){var _0x2e8f29=_0x4eeae5;this[_0x2e8f29('0xaca')](this[_0x2e8f29('0x487')]);}},{'key':_0x4eeae5('0x594'),'value':function(){}},{'key':_0x4eeae5('0x7f9'),'value':function(_0x49f791,_0xf10a81,_0x14b735){var _0x4ae94a=_0x4eeae5;if($[_0x4ae94a('0x9ec')](_0x49f791))try{null==_0x14b735?_0x49f791[_0x4ae94a('0x7da')](document,_0xf10a81):_0x49f791[_0x4ae94a('0x7da')](_0x14b735,_0xf10a81);}catch(_0x5e1e75){console[_0x4ae94a('0xc78')](_0x5e1e75['message']);}else{var _0x4e6df7=this[_0x49f791];if($[_0x4ae94a('0x9ec')](_0x4e6df7))try{_0x4e6df7['apply'](this,_0xf10a81);}catch(_0x446727){console[_0x4ae94a('0xc78')](_0x446727[_0x4ae94a('0x64')]);}}}},{'key':_0x4eeae5('0x377'),'value':function(){var _0x5bcd17=_0x4eeae5,_0x127df5='';return this[_0x5bcd17('0x4bc')]()&&(_0x127df5=_0x5bcd17('0x2b1')[_0x5bcd17('0x49e')](this['gt'](this[_0x5bcd17('0x985')]()),_0x5bcd17('0xd2c'))),null!=this[_0x5bcd17('0xc6')]()&&(''!==_0x127df5&&(_0x127df5+=_0x5bcd17('0x8fc')),_0x127df5+=_0x5bcd17('0x48a')[_0x5bcd17('0x49e')](this['gt'](_0x5bcd17('0x20c')),_0x5bcd17('0x66f')),_0x127df5+=_0x5bcd17('0x8fc'),this['filtersAlreadySet']?_0x127df5+=_0x5bcd17('0x876'):_0x127df5+='__filterString__\x20'),_0x127df5=_0x127df5[_0x5bcd17('0x95e')](/__id__/g,this[_0x5bcd17('0x6d8')]()),''!==(_0x127df5=''!==this[_0x5bcd17('0x274')]&&null!=this[_0x5bcd17('0x274')]?_0x127df5[_0x5bcd17('0x95e')](/__filterString__/g,this[_0x5bcd17('0x274')]):_0x127df5['replace'](/__filterString__/g,_0x5bcd17('0x716')))&&(_0x127df5=_0x5bcd17('0x645')[_0x5bcd17('0x49e')](_0x127df5,_0x5bcd17('0xa4c'))),_0x127df5;}},{'key':_0x4eeae5('0xa8e'),'value':function(){return{'sTitle':'','sClass':'center'};}},{'key':_0x4eeae5('0xbbb'),'value':function(){var _0x2cbbfd=_0x4eeae5;return _0x2cbbfd('0x20b');}},{'key':_0x4eeae5('0x7cc'),'value':function(){return!0x0;}},{'key':_0x4eeae5('0xadf'),'value':function(_0x1bcf49){var _0x3e6790=_0x4eeae5;if(this[_0x3e6790('0xa69')]())this['createTableServer'](_0x1bcf49);else{var _0x399d1a=this[_0x3e6790('0x6f7')]();for(var _0x2963c7 in _0x399d1a)_0x399d1a[_0x2963c7][_0x3e6790('0x411')]=this['gt'](_0x399d1a[_0x2963c7]['sTitle']);var _0xdc15a3,_0x52396f=this['getTableData']();if(this[_0x3e6790('0x6ea')]()&&_0x399d1a['push'](this[_0x3e6790('0xa8e')]()),this[_0x3e6790('0x6ea')]())for(var _0x1f0f9c=0x0;_0x1f0f9c<_0x52396f['length'];_0x1f0f9c++)_0x52396f[_0x1f0f9c][_0x3e6790('0x8cd')](this[_0x3e6790('0x3cd')](_0x52396f[_0x1f0f9c][0x0],_0x52396f[_0x1f0f9c]));_0xdc15a3=this[_0x3e6790('0x377')]()+this[_0x3e6790('0xbbb')]();var _0x633c78=$('#'[_0x3e6790('0x49e')](_0x1bcf49,_0x3e6790('0xacd')))['html'](),_0x5f3436=0x0;void 0x0!==_0x633c78&&null!=_0x633c78&&(_0x5f3436=0xf*parseInt(_0x633c78,0xa)-0xf),$('#'[_0x3e6790('0x49e')](_0x1bcf49))[_0x3e6790('0x826')](_0xdc15a3);var _0x2401cb={'oLanguage':{'sLengthMenu':_0x3e6790('0xc98')},'aaData':_0x52396f,'aoColumns':_0x399d1a,'bSort':this[_0x3e6790('0x7cc')](),'iDisplayLength':0xf,'iDisplayStart':_0x5f3436},_0x5af5f5=this['getCustomTableParams']();$[_0x3e6790('0x141')](_0x2401cb,_0x5af5f5),$('#'[_0x3e6790('0x49e')](_0x1bcf49,_0x3e6790('0xd76')))[_0x3e6790('0x5b5')](_0x2401cb),$(_0x3e6790('0x5fd'))[_0x3e6790('0xace')](_0x3e6790('0x8ad')),$(_0x3e6790('0x200'))[_0x3e6790('0x79b')](),$(_0x3e6790('0xa6b'))[_0x3e6790('0xace')]('form-control'),$('.dataTables_filter\x20input')[_0x3e6790('0x41a')](_0x3e6790('0xad7'),'Search'),$(_0x3e6790('0xca5'))[_0x3e6790('0xa03')]()[_0x3e6790('0x5c4')](function(){var _0x136506=_0x3e6790;return 0x3===this[_0x136506('0xa7')];})[_0x3e6790('0x8b7')](),$(_0x3e6790('0x81b'))['tooltip']();}}},{'key':_0x4eeae5('0xa8c'),'value':function(_0x3b0385){var _0x4e7d9c=_0x4eeae5,_0x5ce5b4,_0x48a638=this['getHeaders']();for(var _0x68778f in(_0x48a638[_0x4e7d9c('0x8cd')]({'sTitle':'','sClass':'center'}),_0x48a638))_0x48a638[_0x68778f][_0x4e7d9c('0x411')]=this['gt'](_0x48a638[_0x68778f][_0x4e7d9c('0x411')]);_0x5ce5b4=this[_0x4e7d9c('0x377')]()+this['getTableHTMLTemplate']();var _0xd5e4e8=$('#'[_0x4e7d9c('0x49e')](_0x3b0385,_0x4e7d9c('0xacd')))[_0x4e7d9c('0x826')](),_0x6dec2a=0x0;void 0x0!==_0xd5e4e8&&null!=_0xd5e4e8&&(_0x6dec2a=0xf*parseInt(_0xd5e4e8,0xa)-0xf),$('#'[_0x4e7d9c('0x49e')](_0x3b0385))['html'](_0x5ce5b4);var _0x58c2e4={'oLanguage':{'sLengthMenu':_0x4e7d9c('0xc98')},'bProcessing':!0x0,'bServerSide':!0x0,'sAjaxSource':this[_0x4e7d9c('0x139')](this[_0x4e7d9c('0xc58')]()),'aoColumns':_0x48a638,'bSort':this[_0x4e7d9c('0x7cc')](),'parent':this,'iDisplayLength':0xf,'iDisplayStart':_0x6dec2a};this[_0x4e7d9c('0x6ea')]()&&(_0x58c2e4[_0x4e7d9c('0x73c')]=[{'fnRender':this['getActionButtons'],'aTargets':[this[_0x4e7d9c('0xc58')]()[_0x4e7d9c('0x1d1')]]}]);var _0x4219a8=this['getCustomTableParams']();$['extend'](_0x58c2e4,_0x4219a8),$('#'[_0x4e7d9c('0x49e')](_0x3b0385,'\x20#grid'))['dataTable'](_0x58c2e4),$('.dataTables_paginate\x20ul')[_0x4e7d9c('0xace')]('pagination'),$(_0x4e7d9c('0x200'))['hide'](),$(_0x4e7d9c('0xa6b'))['addClass'](_0x4e7d9c('0x22d')),$(_0x4e7d9c('0xa6b'))[_0x4e7d9c('0x41a')](_0x4e7d9c('0xad7'),_0x4e7d9c('0x16c')),$('.dataTables_filter\x20label')['contents']()['filter'](function(){var _0x243f50=_0x4e7d9c;return 0x3===this[_0x243f50('0xa7')];})[_0x4e7d9c('0x8b7')](),$(_0x4e7d9c('0x81b'))[_0x4e7d9c('0x2ed')]();}},{'key':'getHeaders','value':function(){}},{'key':_0x4eeae5('0xc58'),'value':function(){}},{'key':_0x4eeae5('0x59d'),'value':function(){}},{'key':_0x4eeae5('0xb37'),'value':function(){return[];}},{'key':_0x4eeae5('0xd97'),'value':function(){}},{'key':_0x4eeae5('0xc6'),'value':function(){return null;}},{'key':_0x4eeae5('0xa01'),'value':function(_0x58c003){var _0x186b1e=_0x4eeae5;this[_0x186b1e('0xb61')]=_0x58c003,this[_0x186b1e('0x3db')](_0x58c003,[]);}},{'key':_0x4eeae5('0xc71'),'value':function(_0x2cc9ed){var _0x1786ce=_0x4eeae5;this[_0x1786ce('0x3db')](_0x2cc9ed,[],!0x0);}},{'key':_0x4eeae5('0x6db'),'value':function(_0xa7066f,_0x17dc65,_0x14cf59){var _0x2a20f5=_0x4eeae5;$('#'[_0x2a20f5('0x49e')](_0xa7066f,_0x2a20f5('0xd73')))['html'](''),void 0x0!==_0x14cf59&&null!=_0x14cf59||(_0x14cf59=''),$('#'[_0x2a20f5('0x49e')](_0xa7066f,_0x2a20f5('0x6d')))[_0x2a20f5('0x826')](_0x17dc65),$('#'[_0x2a20f5('0x49e')](_0xa7066f,'ModelBody'))['html'](_0x14cf59);}},{'key':_0x4eeae5('0x5ea'),'value':function(_0x168615,_0x2dffd2,_0x127641,_0x210f62,_0x16028b,_0x5b6c5c){var _0x604473=_0x4eeae5,_0x29b90b=this,_0xf8051=_0x604473('0x26e');void 0x0!==_0x2dffd2&&null!=_0x2dffd2||(_0x2dffd2=''),$(''['concat'](_0xf8051,_0x604473('0x4c4')))[_0x604473('0x826')](_0x168615),$(''['concat'](_0xf8051,_0x604473('0xb45')))[_0x604473('0x826')](_0x2dffd2),null!=_0x127641&&$(''[_0x604473('0x49e')](_0xf8051,_0x604473('0x408')))[_0x604473('0x826')](_0x127641),null!=_0x210f62&&$(''[_0x604473('0x49e')](_0xf8051,_0x604473('0xc8b')))[_0x604473('0x826')](_0x210f62),$(''[_0x604473('0x49e')](_0xf8051,_0x604473('0x408')))[_0x604473('0x1bd')]()['on'](_0x604473('0x67b'),function(){var _0x5d09ea=_0x604473;void 0x0!==_0x16028b&&null!=_0x16028b&&(_0x16028b[_0x5d09ea('0x7da')](_0x29b90b,_0x5b6c5c),_0x29b90b[_0x5d09ea('0xa1b')]());}),$(_0xf8051)[_0x604473('0xbe5')]({'backdrop':_0x604473('0x99d')});}},{'key':'renderModelFromDom','value':function(_0x3d1028,_0x387fe0,_0x53357a){var _0x230d66=_0x4eeae5;$('#'[_0x230d66('0x49e')](_0x3d1028,_0x230d66('0xd73')))['html'](''),void 0x0!==_0x53357a&&null!=_0x53357a||(_0x53357a=$('
    ')),$('#'[_0x230d66('0x49e')](_0x3d1028,_0x230d66('0x6d')))['html'](_0x387fe0),$('#'['concat'](_0x3d1028,'ModelBody'))[_0x230d66('0x826')](''),$('#'[_0x230d66('0x49e')](_0x3d1028,_0x230d66('0xd73')))[_0x230d66('0x113')](_0x53357a);}},{'key':_0x4eeae5('0xb48'),'value':function(_0x26fce0){var _0x54a63e=_0x4eeae5;this['deleteParams']['id']=_0x26fce0,this[_0x54a63e('0x6db')]('delete',_0x54a63e('0x284'),_0x54a63e('0xa08')),$('#deleteModel')['modal'](_0x54a63e('0x388'));}},{'key':_0x4eeae5('0xcc4'),'value':function(_0x1aaf1f,_0xd754c2){var _0x5c779a=_0x4eeae5,_0x51e159=arguments['length']>0x2&&void 0x0!==arguments[0x2]?arguments[0x2]:null,_0xf44f15=arguments['length']>0x3&&void 0x0!==arguments[0x3]?arguments[0x3]:null,_0x198ade=arguments[_0x5c779a('0x1d1')]>0x4&&void 0x0!==arguments[0x4]&&arguments[0x4],_0x94d06e=this,_0x523a1b='';_0x523a1b=_0x198ade?_0x5c779a('0xf4'):_0x5c779a('0x650'),$(_0x523a1b)[_0x5c779a('0x1bd')](),_0x198ade?this[_0x5c779a('0x6db')](_0x5c779a('0x22e'),_0x1aaf1f,_0xd754c2):this[_0x5c779a('0x6db')](_0x5c779a('0x64'),_0x1aaf1f,_0xd754c2),null!=_0x51e159?($(_0x523a1b)[_0x5c779a('0xbe5')]({'show':!0x0}),$(_0x523a1b)['on'](_0x5c779a('0xc96'),function(){var _0x1f3e99=_0x5c779a;_0x51e159[_0x1f3e99('0x7da')](_0x94d06e,_0xf44f15),$(_0x1f3e99('0xdb5'))['remove']();})):$(_0x523a1b)[_0x5c779a('0xbe5')]({'backdrop':_0x5c779a('0x99d')});}},{'key':_0x4eeae5('0xb6a'),'value':function(_0x2fa525,_0x2aa961,_0x494556,_0xd2061f,_0x311649){var _0x12cafd=_0x4eeae5,_0x134e92=this,_0x3abca7='';_0x3abca7=_0x311649?'#dataMessageModel':_0x12cafd('0x650'),$(_0x3abca7)[_0x12cafd('0x299')](_0x12cafd('0x79b')),_0x311649?this[_0x12cafd('0xbf4')](_0x12cafd('0xb77'),_0x2fa525,_0x2aa961):this[_0x12cafd('0xbf4')](_0x12cafd('0x64'),_0x2fa525,_0x2aa961),null!=_0x494556?($(_0x3abca7)['modal']({'show':!0x0}),$(_0x3abca7)['on']('hidden.bs.modal',function(){var _0x5ab0e9=_0x12cafd;_0x494556[_0x5ab0e9('0x7da')](_0x134e92,_0xd2061f),$('.modal-backdrop')['remove']();})):$(_0x3abca7)[_0x12cafd('0xbe5')]({'backdrop':_0x12cafd('0x99d')});}},{'key':_0x4eeae5('0x5ed'),'value':function(){var _0x2361c3=_0x4eeae5;void 0x0===this[_0x2361c3('0x534')]['id']&&null==this['deleteParams']['id']||this[_0x2361c3('0x83a')](this['deleteParams']['id'],[]),$('#deleteModel')[_0x2361c3('0xbe5')](_0x2361c3('0x79b'));}},{'key':_0x4eeae5('0x94'),'value':function(){var _0x2f11a4=_0x4eeae5;$('#deleteModel')[_0x2f11a4('0xbe5')](_0x2f11a4('0x79b')),this[_0x2f11a4('0x534')]['id']=null;}},{'key':_0x4eeae5('0xd1c'),'value':function(){var _0x340764=_0x4eeae5;$('#messageModel')[_0x340764('0xbe5')]('hide');}},{'key':_0x4eeae5('0xa1b'),'value':function(){var _0x43f1e1=_0x4eeae5;$(_0x43f1e1('0x26e'))[_0x43f1e1('0xbe5')](_0x43f1e1('0x79b'));}},{'key':_0x4eeae5('0x992'),'value':function(){var _0x59f7c8=_0x4eeae5;$(_0x59f7c8('0xf4'))['modal'](_0x59f7c8('0x79b')),$(_0x59f7c8('0x8d8'))[_0x59f7c8('0xbe5')](_0x59f7c8('0x79b'));}},{'key':_0x4eeae5('0xa57'),'value':function(){var _0x10749e=_0x4eeae5;$(_0x10749e('0x8d8'))[_0x10749e('0xbe5')](_0x10749e('0x79b'));}},{'key':_0x4eeae5('0xb0b'),'value':function(_0x5ecdb4,_0x10b13f){var _0x502444=_0x4eeae5,_0x254676=new _0x29a7fe[(_0x502444('0x53'))](''['concat'](this[_0x502444('0x6d8')](),'_submit'),!0x0,{'ShowPopup':!0x1,'LabelErrorClass':'error'});if(_0x254676[_0x502444('0x1c1')]()){var _0x4cbe20=_0x254676[_0x502444('0xda6')]();_0x4cbe20=this[_0x502444('0x9e9')](_0x4cbe20);var _0xab86fc=this['doCustomValidation'](_0x4cbe20);if(null==_0xab86fc){this[_0x502444('0x327')]&&(_0x4cbe20[_0x502444('0x721')]=$('#'[_0x502444('0x49e')](this[_0x502444('0x6d8')](),_0x502444('0xad2')))[_0x502444('0xc8f')]('csrf'));var _0x13223e=$('#'[_0x502444('0x49e')](this[_0x502444('0x6d8')](),_0x502444('0x2c3')))[_0x502444('0x19f')]();null!=_0x13223e&&void 0x0!==_0x13223e&&''!==_0x13223e&&(_0x4cbe20['id']=_0x13223e),_0x4cbe20=this['makeEmptyDateFieldsNull'](_0x4cbe20),this[_0x502444('0x3fb')](_0x4cbe20,[],_0x5ecdb4,_0x10b13f);}else $('#'['concat'](this[_0x502444('0x6d8')](),_0x502444('0x73e')))[_0x502444('0x826')](_0xab86fc),$('#'['concat'](this['getTableName'](),'Form\x20.label'))[_0x502444('0x388')](),this[_0x502444('0x8')]();}}},{'key':_0x4eeae5('0x8b9'),'value':function(_0xfa35d2){var _0x2cd50d=_0x4eeae5;return this[_0x2cd50d('0x59d')]()['forEach'](function(_0x2db296){var _0x1e5db4=_0x2cd50d;_0x1e5db4('0xd98')!==_0x2db296[0x1][_0x1e5db4('0xb88')]&&'datetime'!==_0x2db296[0x1][_0x1e5db4('0xb88')]||''!==_0xfa35d2[_0x2db296[0x0]]&&'0000-00-00'!==_0xfa35d2[_0x2db296[0x0]]&&'0000-00-00\x2000:00:00'!==_0xfa35d2[_0x2db296[0x0]]||(_0x1e5db4('0x3b9')===_0x2db296[0x1][_0x1e5db4('0x175')]?_0xfa35d2[_0x2db296[0x0]]='NULL':delete _0xfa35d2[_0x2db296[0x0]]);}),_0xfa35d2;}},{'key':_0x4eeae5('0x27a'),'value':function(_0x14c9c8){var _0x58bbd9=_0x4eeae5;return _0x14c9c8[_0x58bbd9('0x1d1')]<0x8?this['gt'](_0x58bbd9('0x2aa')):_0x14c9c8[_0x58bbd9('0x1d1')]>0x1e?this['gt'](_0x58bbd9('0x480')):_0x14c9c8[_0x58bbd9('0xa05')](/.*[0-9]+.*$/)?_0x14c9c8[_0x58bbd9('0xa05')](/.*[a-z]+.*$/)?_0x14c9c8[_0x58bbd9('0xa05')](/.*[A-Z]+.*$/)?_0x14c9c8[_0x58bbd9('0xa05')](/.*[\W]+.*$/)?null:this['gt'](_0x58bbd9('0x474')):this['gt']('Password\x20must\x20include\x20at\x20least\x20one\x20uppercase\x20letter'):this['gt'](_0x58bbd9('0xa47')):this['gt'](_0x58bbd9('0x66d'));}},{'key':_0x4eeae5('0x9e9'),'value':function(_0x22f5ff){return _0x22f5ff;}},{'key':_0x4eeae5('0xa75'),'value':function(_0x4077ab){return null;}},{'key':_0x4eeae5('0xba8'),'value':function(){var _0x4b6c46=_0x4eeae5,_0xafb321=new _0x29a7fe[(_0x4b6c46('0x53'))](''[_0x4b6c46('0x49e')](this['getTableName'](),'_filter'),!0x0,{'ShowPopup':!0x1,'LabelErrorClass':'error'});if(_0xafb321['checkValues']()){var _0x26636c=_0xafb321[_0x4b6c46('0xda6')]();if(this['doCustomFilterValidation'](_0x26636c)){for(var _0x1d3ef6 in _0x26636c)_0x26636c[_0x4b6c46('0x106')](_0x1d3ef6)&&'NULL'===_0x26636c[_0x1d3ef6]&&delete _0x26636c[_0x1d3ef6];this['setFilter'](_0x26636c),this[_0x4b6c46('0x5b3')]=!0x0,$('#'[_0x4b6c46('0x49e')](this[_0x4b6c46('0x6d8')](),_0x4b6c46('0x51b')))[_0x4b6c46('0x388')](),this[_0x4b6c46('0x274')]=this[_0x4b6c46('0xce7')](_0x26636c),this['get']([]),this[_0x4b6c46('0x992')]();}}}},{'key':'getFilterString','value':function(_0x3d4a1e){var _0x1be7a7=_0x4eeae5,_0x5ec710,_0x53e0b3,_0x3510ba,_0x478d3a,_0x5af9be,_0x311577,_0x53a175='',_0x3309e0=this[_0x1be7a7('0xc6')]();for(var _0x30819f in(null==_0x3510ba&&(_0x3510ba=[]),_0x3d4a1e))if(_0x3d4a1e[_0x1be7a7('0x106')](_0x30819f)){if(!(_0x3510ba=this[_0x1be7a7('0x740')](_0x30819f,_0x3309e0)))continue;if(_0x5af9be='',_0x311577=null,'select'===_0x3510ba[_0x1be7a7('0xb88')]||'select2'===_0x3510ba['type']){if(void 0x0!==_0x3510ba[_0x1be7a7('0x5e1')]&&null!=_0x3510ba['remote-source']){if(_0x5ec710=_0x3510ba[_0x1be7a7('0x5e1')],_0x1be7a7('0x185')===_0x3d4a1e[_0x30819f])_0x5af9be=void 0x0!==_0x3510ba['null-label']&&null!=_0x3510ba[_0x1be7a7('0x750')]?_0x3510ba[_0x1be7a7('0x750')]:'Not\x20Selected';else{var _0x4d515c=''['concat'](_0x5ec710[0x0],'_')['concat'](_0x5ec710[0x1],'_')[_0x1be7a7('0x49e')](_0x5ec710[0x2]);_0x5ec710['length']>0x3&&(_0x4d515c=''[_0x1be7a7('0x49e')](_0x4d515c,'_')[_0x1be7a7('0x49e')](_0x5ec710[0x3])),_0x311577=_0x5af9be=this[_0x1be7a7('0xa0a')][_0x4d515c][_0x3d4a1e[_0x30819f]];}}else{if(_0x53e0b3=_0x3510ba[_0x1be7a7('0x7d3')][0x0],_0x1be7a7('0x185')===_0x3d4a1e[_0x30819f])_0x5af9be=void 0x0!==_0x3510ba[_0x1be7a7('0x750')]&&null!=_0x3510ba[_0x1be7a7('0x750')]?_0x3510ba[_0x1be7a7('0x750')]:'Not\x20Selected';else for(var _0x555edd=0x0;_0x555edd<_0x53e0b3[_0x1be7a7('0x1d1')];_0x555edd++)if(_0x3d4a1e[_0x30819f]===_0x3510ba[_0x1be7a7('0x7d3')][_0x555edd][0x0]){_0x311577=_0x5af9be=_0x3510ba[_0x1be7a7('0x7d3')][_0x555edd][0x1];break;}}}else{if(_0x1be7a7('0x9da')===_0x3510ba[_0x1be7a7('0xb88')]){_0x478d3a=[];try{_0x478d3a=JSON[_0x1be7a7('0xb50')](_0x3d4a1e[_0x30819f]);}catch(_0x6f30c5){}''!==(_0x5af9be=_0x478d3a[_0x1be7a7('0x2ee')](','))&&(_0x311577=_0x5af9be);}else''!==(_0x5af9be=_0x3d4a1e[_0x30819f])&&(_0x311577=_0x5af9be);}null!=_0x311577&&(''!==_0x53a175&&(_0x53a175+='\x20|\x20'),_0x53a175+=''['concat'](_0x3510ba['label'],_0x1be7a7('0xc76'))[_0x1be7a7('0x49e')](_0x5af9be));}return _0x53a175;}},{'key':_0x4eeae5('0xab9'),'value':function(_0x4e1899){return!0x0;}},{'key':'resetFilters','value':function(){var _0x4a13a5=_0x4eeae5;this[_0x4a13a5('0x5c4')]=this['origFilter'],this['filtersAlreadySet']=!0x1,$('#'[_0x4a13a5('0x49e')](this[_0x4a13a5('0x6d8')](),_0x4a13a5('0x51b')))[_0x4a13a5('0x79b')](),this[_0x4a13a5('0x274')]='',this[_0x4a13a5('0x715')]([]);}},{'key':'showFilters','value':function(_0xaa145f){var _0x23cd1d=_0x4eeae5;for(var _0x1e1818=this[_0x23cd1d('0x2a8')][_0x23cd1d('0x1a')],_0xca576c='',_0x5d918d=this['getFilters'](),_0x16b3cf=0x0;_0x16b3cf<_0x5d918d[_0x23cd1d('0x1d1')];_0x16b3cf++){var _0x937302=this[_0x23cd1d('0x76f')](_0x5d918d[_0x16b3cf][0x0]);if(''===_0x937302||void 0x0===_0x937302)_0xca576c+=this[_0x23cd1d('0x41e')](_0x5d918d[_0x16b3cf]);else{var _0x1b1d01=_0xaa145f[_0x937302];''!==_0x1b1d01&&null!=_0x1b1d01&&void 0x0!==_0x1b1d01&&''!==_0x1b1d01[_0x23cd1d('0x773')]()?_0xca576c+=this[_0x23cd1d('0x41e')](JSON[_0x23cd1d('0xb50')](_0x1b1d01)):_0xca576c+=this['renderFormField'](_0x5d918d[_0x16b3cf]);}}_0x1e1818=(_0x1e1818=_0x1e1818[_0x23cd1d('0x95e')](/_id_/g,''[_0x23cd1d('0x49e')](this[_0x23cd1d('0x6d8')](),_0x23cd1d('0x280'))))['replace'](/_fields_/g,_0xca576c);var _0x2a7e3f=this[_0x23cd1d('0xc5c')](0xe),_0x111376=$(_0x23cd1d('0x1b1'));_0x111376['attr']('id',_0x2a7e3f),_0x111376[_0x23cd1d('0x826')](_0x1e1818),_0x111376['find'](_0x23cd1d('0xb3e'))[_0x23cd1d('0x2b4')]({'viewMode':0x2}),_0x111376[_0x23cd1d('0xdb8')](_0x23cd1d('0x91c'))['datetimepicker']({'language':'en','pickDate':!0x1}),_0x111376['find'](_0x23cd1d('0x883'))['datetimepicker']({'language':'en'}),_0x111376[_0x23cd1d('0xdb8')]('.colorpick')['colorpicker'](),tinymce[_0x23cd1d('0x6a')]({'selector':'#'[_0x23cd1d('0x49e')](_0x111376[_0x23cd1d('0x41a')]('id'),_0x23cd1d('0x57e')),'height':_0x23cd1d('0xc1e')}),_0x111376[_0x23cd1d('0xdb8')](_0x23cd1d('0x85b'))['each'](function(){var _0x3b2330=_0x23cd1d,_0x5e3cbe=new SimpleMDE({'element':$(this)[0x0]});$(this)[_0x3b2330('0xc8f')]('simplemde',_0x5e3cbe);}),_0x111376[_0x23cd1d('0xdb8')](_0x23cd1d('0x266'))[_0x23cd1d('0x30c')](function(){var _0x58ebfe=_0x23cd1d;$(this)[_0x58ebfe('0xdbb')]()[_0x58ebfe('0xdbb')](_0x58ebfe('0x19f'),$(this)['find']('option:eq(0)')['val']());}),_0x111376[_0x23cd1d('0xdb8')](_0x23cd1d('0x7d0'))[_0x23cd1d('0x30c')](function(){$(this)['select2']()['on']('change',function(_0x497c3f){var _0x1764f8=_0x3e44,_0x101e70=$(this)['parents']('.row'),_0x8696f8=_0x101e70['find']('.select2-choices')[_0x1764f8('0x448')]();_0x101e70['height'](parseInt(_0x8696f8,0xa));});}),this[_0x23cd1d('0xb6a')](_0x23cd1d('0xa2d'),_0x111376,null,null,!0x0),$(_0x23cd1d('0x701'))[_0x23cd1d('0x1bd')](),$(_0x23cd1d('0x701'))['on'](_0x23cd1d('0x67b'),function(_0x222640){var _0x3cf8b5=_0x23cd1d;_0x222640[_0x3cf8b5('0x731')](),_0x222640[_0x3cf8b5('0x885')]();try{modJs['filterQuery']();}catch(_0x2e8723){console['log'](_0x2e8723),console[_0x3cf8b5('0xc78')](_0x2e8723['message']);}return!0x1;}),void 0x0!==this[_0x23cd1d('0x5c4')]&&null!=this[_0x23cd1d('0x5c4')]&&''!==this[_0x23cd1d('0x5c4')]&&this[_0x23cd1d('0x93d')](this[_0x23cd1d('0x5c4')],'#'[_0x23cd1d('0x49e')](this[_0x23cd1d('0x6d8')](),_0x23cd1d('0x280')),this[_0x23cd1d('0xc6')]());}},{'key':_0x4eeae5('0xf5'),'value':function(_0x545768){}},{'key':'renderForm','value':function(_0x3aa93e){var _0x5222e1=_0x4eeae5,_0x1418ed=[];null!=_0x3aa93e&&void 0x0!==_0x3aa93e||(this['currentId']=null),this[_0x5222e1('0xf5')](_0x3aa93e);for(var _0x1eb7a4,_0x2a0ac0=this['templates'][_0x5222e1('0xb1d')],_0x39c630='',_0x1139ca=this[_0x5222e1('0x59d')](),_0x1f9f1f=0x0;_0x1f9f1f<_0x1139ca[_0x5222e1('0x1d1')];_0x1f9f1f++){var _0x4cb0dc=this[_0x5222e1('0x76f')](_0x1139ca[_0x1f9f1f][0x0]);if(''===_0x4cb0dc||void 0x0===_0x4cb0dc)_0x39c630+=this[_0x5222e1('0x41e')](_0x1139ca[_0x1f9f1f]);else{var _0x1a1c4f=_0x3aa93e[_0x4cb0dc];''!==_0x1a1c4f&&null!=_0x1a1c4f&&void 0x0!==_0x1a1c4f&&''!==_0x1a1c4f[_0x5222e1('0x773')]()?_0x39c630+=this[_0x5222e1('0x41e')](JSON['parse'](_0x1a1c4f)):_0x39c630+=this[_0x5222e1('0x41e')](_0x1139ca[_0x1f9f1f]);}}_0x2a0ac0=(_0x2a0ac0=_0x2a0ac0['replace'](/_id_/g,''[_0x5222e1('0x49e')](this[_0x5222e1('0x6d8')](),_0x5222e1('0x7a0'))))[_0x5222e1('0x95e')](/_fields_/g,_0x39c630);var _0x313a1e=this[_0x5222e1('0xc5c')](0xe);this[_0x5222e1('0xa28')]?(_0x1eb7a4=$(_0x5222e1('0x1b1')))[_0x5222e1('0x41a')]('id',_0x313a1e):_0x1eb7a4=$('#'[_0x5222e1('0x49e')](this['getTableName'](),_0x5222e1('0xad2'))),_0x1eb7a4[_0x5222e1('0x826')](_0x2a0ac0),_0x1eb7a4[_0x5222e1('0xdb8')](_0x5222e1('0xb3e'))[_0x5222e1('0x2b4')]({'viewMode':0x2}),_0x1eb7a4[_0x5222e1('0xdb8')](_0x5222e1('0x91c'))[_0x5222e1('0x90b')]({'language':'en','pickDate':!0x1}),_0x1eb7a4['find'](_0x5222e1('0x883'))['datetimepicker']({'language':'en'}),_0x1eb7a4[_0x5222e1('0xdb8')](_0x5222e1('0x5de'))[_0x5222e1('0x2a4')](),tinymce['init']({'selector':'#'[_0x5222e1('0x49e')](_0x1eb7a4[_0x5222e1('0x41a')]('id'),_0x5222e1('0x57e')),'height':'400'}),_0x1eb7a4['find'](_0x5222e1('0x85b'))[_0x5222e1('0x30c')](function(){var _0x184ed7=_0x5222e1,_0x28eb35=new SimpleMDE({'element':$(this)[0x0]});$(this)[_0x184ed7('0xc8f')](_0x184ed7('0x376'),_0x28eb35);});var _0x3be59b=this[_0x5222e1('0x919')];_0x3be59b&&_0x1eb7a4[_0x5222e1('0xdb8')](_0x5222e1('0xbaa'))[_0x5222e1('0x30c')](function(){var _0x2d511e=_0x5222e1,_0x5e9722=_0x3be59b[_0x2d511e('0xaa')]($(this)[0x0],{'lineNumbers':!0x1,'matchBrackets':!0x0,'continueComments':_0x2d511e('0xb8a'),'extraKeys':{'Ctrl-Q':_0x2d511e('0x25e')}});$(this)['data']('codemirror',_0x5e9722);}),_0x1eb7a4['find'](_0x5222e1('0x266'))[_0x5222e1('0x30c')](function(){var _0x44d58a=_0x5222e1;$(this)[_0x44d58a('0xdbb')]()[_0x44d58a('0xdbb')]('val',$(this)[_0x44d58a('0xdb8')](_0x44d58a('0x904'))['val']());}),_0x1eb7a4[_0x5222e1('0xdb8')](_0x5222e1('0x7d0'))[_0x5222e1('0x30c')](function(){var _0x1810bb=_0x5222e1;$(this)[_0x1810bb('0xdbb')]()['on'](_0x1810bb('0x96d'),function(_0x48a642){var _0x14d7ff=_0x1810bb,_0x309275=$(this)[_0x14d7ff('0x9dd')](_0x14d7ff('0xb7f')),_0x228e4c=_0x309275[_0x14d7ff('0xdb8')]('.select2-choices')[_0x14d7ff('0x448')]();_0x309275['height'](parseInt(_0x228e4c,0xa));});}),_0x1eb7a4['find']('.signatureField')[_0x5222e1('0x30c')](function(){var _0x3291f3=_0x5222e1;_0x1418ed[_0x3291f3('0x8cd')]($(this)[_0x3291f3('0x41a')]('id'));});for(var _0x119ec4=0x0;_0x119ec4<_0x1139ca[_0x5222e1('0x1d1')];_0x119ec4++)_0x5222e1('0xdc')===_0x1139ca[_0x119ec4][0x1][_0x5222e1('0xb88')]&&_0x1eb7a4[_0x5222e1('0xdb8')]('#'[_0x5222e1('0x49e')](_0x1139ca[_0x119ec4][0x0]))[_0x5222e1('0xc8f')](_0x5222e1('0xb94'),_0x1139ca[_0x119ec4]);if(!0x1===this['showSave']?_0x1eb7a4[_0x5222e1('0xdb8')]('.saveBtn')[_0x5222e1('0x8b7')]():(_0x1eb7a4[_0x5222e1('0xdb8')](_0x5222e1('0x927'))[_0x5222e1('0x1bd')](),_0x1eb7a4['find'](_0x5222e1('0x927'))[_0x5222e1('0xc8f')](_0x5222e1('0xa33'),this),_0x1eb7a4[_0x5222e1('0xdb8')](_0x5222e1('0x927'))['on'](_0x5222e1('0x67b'),function(){var _0x3395f0=_0x5222e1;return null!=$(this)[_0x3395f0('0xc8f')]('modJs')['saveSuccessItemCallback']&&void 0x0!==$(this)[_0x3395f0('0xc8f')]('modJs')['saveSuccessItemCallback']?$(this)[_0x3395f0('0xc8f')](_0x3395f0('0xa33'))[_0x3395f0('0xb0b')]($(this)[_0x3395f0('0xc8f')](_0x3395f0('0xa33'))[_0x3395f0('0x11b')](),$(this)[_0x3395f0('0xc8f')](_0x3395f0('0xa33'))[_0x3395f0('0x486')]):$(this)['data']('modJs')[_0x3395f0('0xb0b')](),!0x1;})),!0x1===this['showCancel']?_0x1eb7a4[_0x5222e1('0xdb8')](_0x5222e1('0xd3d'))['remove']():(_0x1eb7a4[_0x5222e1('0xdb8')](_0x5222e1('0xd3d'))[_0x5222e1('0x1bd')](),_0x1eb7a4['find'](_0x5222e1('0xd3d'))[_0x5222e1('0xc8f')]('modJs',this),_0x1eb7a4[_0x5222e1('0xdb8')]('.cancelBtn')['on'](_0x5222e1('0x67b'),function(){var _0x7b0c1c=_0x5222e1;return $(this)[_0x7b0c1c('0xc8f')](_0x7b0c1c('0xa33'))['cancel'](),!0x1;})),_0x1eb7a4[_0x5222e1('0xdb8')](_0x5222e1('0x9a5'))['each'](function(){var _0x3c7bd5=_0x5222e1;$(this)[_0x3c7bd5('0x553')]($(this)[_0x3c7bd5('0x41a')](_0x3c7bd5('0x848')));}),_0x1eb7a4['find'](_0x5222e1('0x4cf'))['each'](function(){var _0x46557c=_0x5222e1;$(this)[_0x46557c('0x553')]({'mask':_0x46557c('0x813'),'placeholder':'YYYY-MM-DD','leapday':_0x46557c('0x371'),'separator':'-','alias':_0x46557c('0x5b')});}),_0x1eb7a4[_0x5222e1('0xdb8')](_0x5222e1('0x7ae'))[_0x5222e1('0x30c')](function(){var _0x2fa1a4=_0x5222e1;$(this)[_0x2fa1a4('0x553')]('datetime',{'mask':_0x2fa1a4('0xb22'),'placeholder':'YYYY-MM-DD\x20hh:mm:ss','leapday':'-02-29','separator':'-','alias':_0x2fa1a4('0x5b')});}),this[_0x5222e1('0xa28')]){this[_0x5222e1('0xcc4')](_0x5222e1('0xa2d'),'',null,null,!0x0),$(_0x5222e1('0x5a6'))[_0x5222e1('0x826')](''),$('#plainMessageModel\x20.modal-body')[_0x5222e1('0x113')](_0x1eb7a4);for(var _0x427723=0x0;_0x427723<_0x1418ed[_0x5222e1('0x1d1')];_0x427723++)$('#'[_0x5222e1('0x49e')](_0x1418ed[_0x427723]))[_0x5222e1('0xc8f')](_0x5222e1('0x617'),new SignaturePad(document[_0x5222e1('0x803')](_0x1418ed[_0x427723])));void 0x0!==_0x3aa93e&&null!=_0x3aa93e?this[_0x5222e1('0x93d')](_0x3aa93e,'#'[_0x5222e1('0x49e')](_0x313a1e)):this[_0x5222e1('0x84b')]('#'['concat'](_0x313a1e));}else{$('#'[_0x5222e1('0x49e')](this[_0x5222e1('0x6d8')](),_0x5222e1('0xad2')))[_0x5222e1('0x388')](),$('#'[_0x5222e1('0x49e')](this['getTableName']()))['hide']();for(var _0x189a22=0x0;_0x189a22<_0x1418ed['length'];_0x189a22++)$('#'[_0x5222e1('0x49e')](_0x1418ed[_0x189a22]))[_0x5222e1('0xc8f')](_0x5222e1('0x617'),new SignaturePad(document[_0x5222e1('0x803')](_0x1418ed[_0x189a22])));void 0x0!==_0x3aa93e&&null!=_0x3aa93e?this[_0x5222e1('0x93d')](_0x3aa93e):this[_0x5222e1('0x84b')](),this[_0x5222e1('0x8')]();}this[_0x5222e1('0xbfc')](_0x3aa93e,_0x1eb7a4);}},{'key':_0x4eeae5('0x84b'),'value':function(_0x3b0c71,_0x19552d){var _0x4860d4=_0x4eeae5;null!=_0x19552d&&void 0x0!==_0x19552d||(_0x19552d=this[_0x4860d4('0x59d')]()),null!=_0x3b0c71&&void 0x0!==_0x3b0c71&&''!==_0x3b0c71||(_0x3b0c71='#'[_0x4860d4('0x49e')](this[_0x4860d4('0x6d8')](),_0x4860d4('0xad2')));for(var _0x5c73ec=0x0;_0x5c73ec<_0x19552d[_0x4860d4('0x1d1')];_0x5c73ec++)_0x4860d4('0x1c4')!==_0x19552d[_0x5c73ec][0x1][_0x4860d4('0xb88')]&&'textarea'!==_0x19552d[_0x5c73ec][0x1][_0x4860d4('0xb88')]||void 0x0!==_0x19552d[_0x5c73ec][0x1]['default']&&null!==_0x19552d[_0x5c73ec][0x1]['default']&&$(''[_0x4860d4('0x49e')](_0x3b0c71,'\x20#')[_0x4860d4('0x49e')](_0x19552d[_0x5c73ec][0x0]))[_0x4860d4('0x19f')](_0x19552d[_0x5c73ec][0x1][_0x4860d4('0x53')]);}},{'key':_0x4eeae5('0x11b'),'value':function(){return!0x0;}},{'key':'postRenderForm','value':function(_0x5beb7f,_0x16815d){}},{'key':_0x4eeae5('0x6e7'),'value':function(_0x348b53,_0x514d62){var _0x32af5a=_0x4eeae5,_0x519295,_0x3d12de,_0x2c6840,_0x225b7f,_0x2c76bf=JSON[_0x32af5a('0xb50')](_0x348b53),_0x1c3477=_0x514d62[0x1]['html'];null!=_0x2c76bf&&void 0x0!==_0x2c76bf&&void 0x0!==_0x514d62[0x1][_0x32af5a('0xd75')]&&null!=_0x514d62[0x1]['sort-function']&&_0x2c76bf['sort'](_0x514d62[0x1]['sort-function']);for(var _0x55e207=$(_0x32af5a('0x89b')['concat'](_0x514d62[0x0],_0x32af5a('0x530'))),_0xf8bef3=0x0;_0xf8bef3<_0x2c76bf[_0x32af5a('0x1d1')];_0xf8bef3++){for(var _0x453916 in(_0x3d12de=_0x2c76bf[_0xf8bef3],void 0x0!==_0x514d62[0x1]['pre-format-function']&&null!=_0x514d62[0x1][_0x32af5a('0x33d')]&&(_0x3d12de=_0x514d62[0x1][_0x32af5a('0x33d')]['apply'](this,[_0x3d12de])),_0x519295=(_0x519295=(_0x519295=(_0x519295=_0x1c3477)[_0x32af5a('0x95e')](_0x32af5a('0x41'),''))[_0x32af5a('0x95e')](_0x32af5a('0xdc0'),_0x32af5a('0x5f4')))['replace'](/#_id_#/g,_0x3d12de['id']),_0x3d12de))void 0x0!==(_0x225b7f=_0x3d12de[_0x453916])&&null!=_0x225b7f&&'string'==typeof _0x225b7f&&(_0x225b7f=_0x225b7f[_0x32af5a('0x95e')](/(?:\r\n|\r|\n)/g,_0x32af5a('0xa6e'))),_0x519295=_0x519295[_0x32af5a('0x95e')]('#_'[_0x32af5a('0x49e')](_0x453916,'_#'),_0x225b7f);void 0x0!==_0x514d62[0x1][_0x32af5a('0x265')]&&null!=_0x514d62[0x1][_0x32af5a('0x265')]&&(_0x519295=_0x519295[_0x32af5a('0x95e')](_0x32af5a('0x6ec'),_0x514d62[0x1][_0x32af5a('0x265')](_0x3d12de))),(_0x2c6840=$(_0x519295))[_0x32af5a('0x41a')](_0x32af5a('0xcd9'),''[_0x32af5a('0x49e')](_0x514d62[0x0],_0x32af5a('0x39f'))),_0x55e207[_0x32af5a('0x113')](_0x2c6840);}return _0x55e207;}},{'key':_0x4eeae5('0xa94'),'value':function(_0x4b391c){var _0x5e4ace=_0x4eeae5;$('#'['concat'](_0x4b391c[0x0]))['val'](''),$('#'[_0x5e4ace('0x49e')](_0x4b391c[0x0],_0x5e4ace('0x39f')))[_0x5e4ace('0x826')]('');}},{'key':'showDataGroup','value':function(_0x46def4,_0x934668,_0xf51c66){var _0x39e342=_0x4eeae5,_0x13cfd7=this[_0x39e342('0x2a8')][_0x39e342('0x28b')],_0x22ee7e='',_0x3bff78=_0x46def4[0x1][_0x39e342('0x61a')];void 0x0!==_0x934668&&null!=_0x934668&&void 0x0!==_0x934668['id']?this[_0x39e342('0xc35')]=_0x934668['id']:this['currentDataGroupItemId']=null;for(var _0x5ebaa0=0x0;_0x5ebaa0<_0x3bff78['length'];_0x5ebaa0++)_0x22ee7e+=this['renderFormField'](_0x3bff78[_0x5ebaa0]);_0x13cfd7=(_0x13cfd7=_0x13cfd7[_0x39e342('0x95e')](/_id_/g,''[_0x39e342('0x49e')](this[_0x39e342('0x6d8')](),_0x39e342('0xa95'))[_0x39e342('0x49e')](_0x46def4[0x0])))['replace'](/_fields_/g,_0x22ee7e);var _0x403532=this[_0x39e342('0xc5c')](0xe),_0x3b3bd4=$('');_0x3b3bd4[_0x39e342('0x41a')]('id',_0x403532),_0x3b3bd4[_0x39e342('0x826')](_0x13cfd7),_0x3b3bd4[_0x39e342('0xdb8')](_0x39e342('0xb3e'))[_0x39e342('0x2b4')]({'viewMode':0x2}),_0x3b3bd4[_0x39e342('0xdb8')]('.timefield')[_0x39e342('0x90b')]({'language':'en','pickDate':!0x1}),_0x3b3bd4['find'](_0x39e342('0x883'))['datetimepicker']({'language':'en'}),_0x3b3bd4[_0x39e342('0xdb8')]('.colorpick')[_0x39e342('0x2a4')](),tinymce['init']({'selector':'#'[_0x39e342('0x49e')](_0x3b3bd4['attr']('id'),_0x39e342('0x57e')),'height':_0x39e342('0xc1e')}),_0x3b3bd4[_0x39e342('0xdb8')](_0x39e342('0x85b'))[_0x39e342('0x30c')](function(){var _0x5049e2=_0x39e342,_0x25eca8=new SimpleMDE({'element':$(this)[0x0]});$(this)['data'](_0x5049e2('0x376'),_0x25eca8);}),_0x3b3bd4['find']('.select2Field')['each'](function(){var _0x5f592b=_0x39e342;$(this)['select2']()[_0x5f592b('0xdbb')](_0x5f592b('0x19f'),$(this)['find']('option:eq(0)')[_0x5f592b('0x19f')]());}),_0x3b3bd4[_0x39e342('0xdb8')]('.select2Multi')[_0x39e342('0x30c')](function(){var _0x165b2d=_0x39e342;$(this)[_0x165b2d('0xdbb')]()['on'](_0x165b2d('0x96d'),function(_0x2872b0){var _0x2f2d9e=_0x165b2d,_0x53243e=$(this)[_0x2f2d9e('0x9dd')](_0x2f2d9e('0xb7f')),_0x3e8a7c=_0x53243e[_0x2f2d9e('0xdb8')](_0x2f2d9e('0x941'))['height']();_0x53243e[_0x2f2d9e('0x448')](parseInt(_0x3e8a7c,0xa));});}),this[_0x39e342('0x950')]=_0x46def4,this['showDomElement']('Add\x20'[_0x39e342('0x49e')](_0x46def4[0x1][_0x39e342('0x551')]),_0x3b3bd4,null,null,!0x0),void 0x0!==_0x934668&&null!=_0x934668?this['fillForm'](_0x934668,'#'[_0x39e342('0x49e')](this[_0x39e342('0x6d8')](),'_field_')['concat'](_0x46def4[0x0]),_0x46def4[0x1]['form']):this['setDefaultValues']('#'[_0x39e342('0x49e')](this['getTableName'](),_0x39e342('0xa95'))[_0x39e342('0x49e')](_0x46def4[0x0]),_0x46def4[0x1][_0x39e342('0x61a')]),$('.groupAddBtn')[_0x39e342('0x1bd')](),void 0x0!==_0x934668&&null!=_0x934668&&void 0x0!==_0x934668['id']?$('.groupAddBtn')['on'](_0x39e342('0x67b'),function(_0x437357){var _0x302dd6=_0x39e342;_0x437357[_0x302dd6('0x731')](),_0x437357[_0x302dd6('0x885')]();try{modJs[_0x302dd6('0x9ce')](_0xf51c66);}catch(_0x5c8f13){console[_0x302dd6('0xc78')](_0x302dd6('0xd5')['concat'](_0x5c8f13['message']));}return!0x1;}):$(_0x39e342('0x8d1'))['on'](_0x39e342('0x67b'),function(_0x441e39){var _0x3258f6=_0x39e342;_0x441e39[_0x3258f6('0x731')](),_0x441e39[_0x3258f6('0x885')]();try{modJs[_0x3258f6('0x743')](_0xf51c66);}catch(_0x1e3b47){console[_0x3258f6('0xc78')](_0x3258f6('0x150')[_0x3258f6('0x49e')](_0x1e3b47[_0x3258f6('0x64')]));}return!0x1;});}},{'key':'addDataGroup','value':function(_0x46b126,_0x47849d){var _0x455a61=_0x4eeae5,_0x248dab,_0x30a84e=this[_0x455a61('0x950')];$('#'[_0x455a61('0x49e')](this[_0x455a61('0x6d8')](),_0x455a61('0xa95'))[_0x455a61('0x49e')](_0x30a84e[0x0],_0x455a61('0x164')))[_0x455a61('0x826')](''),$('#'[_0x455a61('0x49e')](this[_0x455a61('0x6d8')](),_0x455a61('0xa95'))['concat'](_0x30a84e[0x0],'_error'))[_0x455a61('0x79b')]();var _0x40433b=new _0x29a7fe[(_0x455a61('0x53'))](''[_0x455a61('0x49e')](this[_0x455a61('0x6d8')](),_0x455a61('0xa95'))[_0x455a61('0x49e')](_0x30a84e[0x0]),!0x0,{'ShowPopup':!0x1,'LabelErrorClass':_0x455a61('0x855')});if(_0x40433b[_0x455a61('0x1c1')]()){var _0x2765f9=_0x40433b['getFormParameters']();if(void 0x0!==_0x30a84e[0x1][_0x455a61('0xcd8')]&&null!=_0x30a84e[0x1]['custom-validate-function']){if(!(_0x248dab=_0x30a84e[0x1][_0x455a61('0xcd8')][_0x455a61('0x7da')](this,[_0x2765f9]))[_0x455a61('0x369')])return $('#'['concat'](this['getTableName'](),_0x455a61('0xa95'))[_0x455a61('0x49e')](_0x30a84e[0x0],'_error'))[_0x455a61('0x826')](_0x248dab[_0x455a61('0x64')]),$('#'[_0x455a61('0x49e')](this[_0x455a61('0x6d8')](),_0x455a61('0xa95'))['concat'](_0x30a84e[0x0],_0x455a61('0x164')))[_0x455a61('0x388')](),!0x1;_0x2765f9=_0x248dab[_0x455a61('0x784')];}var _0x5142f9='[]';_0x47849d?_0x5142f9=_0x47849d:''!==(_0x5142f9=$('#'[_0x455a61('0x49e')](_0x30a84e[0x0]))['val']())&&null!=_0x5142f9||(_0x5142f9='[]');var _0x45f21d=JSON[_0x455a61('0xb50')](_0x5142f9);_0x2765f9['id']=''[_0x455a61('0x49e')](_0x30a84e[0x0],'_')['concat'](this['dataGroupGetNextAutoIncrementId'](_0x45f21d)),_0x45f21d[_0x455a61('0x8cd')](_0x2765f9),void 0x0!==_0x30a84e[0x1][_0x455a61('0xd75')]&&null!=_0x30a84e[0x1][_0x455a61('0xd75')]&&_0x45f21d['sort'](_0x30a84e[0x1]['sort-function']),_0x5142f9=JSON[_0x455a61('0x263')](_0x45f21d);var _0x10822b=this['dataGroupToHtml'](_0x5142f9,_0x30a84e);_0x46b126&&_0x46b126(_0x5142f9),$('#'[_0x455a61('0x49e')](_0x30a84e[0x0],_0x455a61('0x39f')))[_0x455a61('0x826')](''),$('#'['concat'](_0x30a84e[0x0],_0x455a61('0x39f')))['append'](_0x10822b),this[_0x455a61('0x29')](_0x30a84e,$('#'['concat'](_0x30a84e[0x0],_0x455a61('0xb63')))),$('#'[_0x455a61('0x49e')](_0x30a84e[0x0]))[_0x455a61('0x19f')](_0x5142f9),this['orderDataGroup'](_0x30a84e),this[_0x455a61('0xa57')](),this['showMessage']('Item\x20Added','This\x20change\x20will\x20be\x20effective\x20only\x20when\x20you\x20save\x20the\x20form');}return!0x0;}},{'key':_0x4eeae5('0xa72'),'value':function(_0x136f4b,_0x1e664d){var _0x7d149b=_0x4eeae5,_0x344384='';try{for(var _0x2cf7ae=_0x136f4b[_0x7d149b('0x5a0')]('\x20'),_0x5d94f2=0x0,_0x4cb2da=0x0;_0x4cb2da<_0x2cf7ae[_0x7d149b('0x1d1')];_0x4cb2da++)(_0x5d94f2+=_0x2cf7ae[_0x4cb2da][_0x7d149b('0x1d1')]+0x1)>_0x1e664d?(_0x344384+=''['concat'](_0x2cf7ae[_0x4cb2da],_0x7d149b('0x194')),_0x5d94f2=0x0):_0x344384+=''[_0x7d149b('0x49e')](_0x2cf7ae[_0x4cb2da],'\x20');}catch(_0x265261){}return _0x344384;}},{'key':_0x4eeae5('0x29'),'value':function(_0x5c2f56,_0x5d20a6){var _0x386737=_0x4eeae5;_0x5d20a6[_0x386737('0xc8f')](_0x386737('0xb94'),_0x5c2f56),_0x5d20a6[_0x386737('0xc8f')](_0x386737('0x36e'),!0x0),_0x5d20a6['sortable']({'create':function(){var _0x328fcd=_0x386737;$(this)[_0x328fcd('0x448')]($(this)['height']());},'ui-floating':!0x1,'start':function(_0x235ae9,_0x4e519b){$('#sortable-ul-selector-id')['sortable']({'sort':function(_0x1be2aa,_0x163efa){var _0x16bdbd=_0x3e44,_0x414666=$(_0x1be2aa['target']);if(!/html|body/i[_0x16bdbd('0xb03')](_0x414666[_0x16bdbd('0x7e1')]()[0x0][_0x16bdbd('0xcae')])){var _0x1a88a1=_0x1be2aa[_0x16bdbd('0x5e')]-_0x414666[_0x16bdbd('0x7e1')]()[_0x16bdbd('0x483')]()['top']-_0x163efa[_0x16bdbd('0x435')]['outerHeight'](!0x0)/0x2;_0x163efa['helper'][_0x16bdbd('0x671')]({'top':''[_0x16bdbd('0x49e')](_0x1a88a1,'px')});}}});},'revert':!0x0,'stop':function(){var _0x1fb946=_0x386737;modJs[_0x1fb946('0x199')]($(this)[_0x1fb946('0xc8f')](_0x1fb946('0xb94')));},'axis':'y','scroll':!0x1,'placeholder':'sortable-placeholder','cursor':_0x386737('0x71b')});}},{'key':_0x4eeae5('0x199'),'value':function(_0x525412,_0xbb04fd){var _0x120503=_0x4eeae5,_0x5104b6,_0x757cdf=[],_0x17c98f=$('#'[_0x120503('0x49e')](_0x525412[0x0],_0x120503('0xbc4'))[_0x120503('0x49e')](_0x525412[0x0],'_div\x27]')),_0x4f0ab4=$('#'[_0x120503('0x49e')](_0x525412[0x0]))['val']();''!==_0x4f0ab4&&null!=_0x4f0ab4||(_0x4f0ab4='[]');var _0x2e34a6=JSON[_0x120503('0xb50')](_0x4f0ab4);_0x17c98f[_0x120503('0x30c')](function(){var _0x3585b8=_0x120503;for(var _0x438016 in(_0x5104b6=$(this)['attr']('id'),_0x2e34a6))if(_0x2e34a6[_0x438016]['id']===_0x5104b6){_0x757cdf[_0x3585b8('0x8cd')](_0x2e34a6[_0x438016]);break;}}),$('#'['concat'](_0x525412[0x0]))[_0x120503('0x19f')](JSON[_0x120503('0x263')](_0x757cdf)),null!=_0xbb04fd&&_0xbb04fd(_0x757cdf);}},{'key':_0x4eeae5('0x9ce'),'value':function(_0x18d23d,_0x3021c8){var _0x33d7ff=_0x4eeae5,_0xbf5d82=this[_0x33d7ff('0x950')],_0x3f1ebf=this[_0x33d7ff('0xc35')],_0x5b56e3=new _0x29a7fe[(_0x33d7ff('0x53'))](''[_0x33d7ff('0x49e')](this[_0x33d7ff('0x6d8')](),_0x33d7ff('0xa95'))[_0x33d7ff('0x49e')](_0xbf5d82[0x0]),!0x0,{'ShowPopup':!0x1,'LabelErrorClass':_0x33d7ff('0x855')});if(_0x5b56e3[_0x33d7ff('0x1c1')]()){var _0x28294b=_0x5b56e3[_0x33d7ff('0xda6')]();if(void 0x0!==_0xbf5d82[0x1][_0x33d7ff('0xcd8')]&&null!=_0xbf5d82[0x1][_0x33d7ff('0xcd8')]){var _0x107f52=_0xbf5d82[0x1][_0x33d7ff('0xcd8')][_0x33d7ff('0x7da')](this,[_0x28294b]);if(!_0x107f52['valid'])return $('#'[_0x33d7ff('0x49e')](this[_0x33d7ff('0x6d8')](),'_field_')[_0x33d7ff('0x49e')](_0xbf5d82[0x0],_0x33d7ff('0x164')))[_0x33d7ff('0x826')](_0x107f52['message']),$('#'[_0x33d7ff('0x49e')](this[_0x33d7ff('0x6d8')](),_0x33d7ff('0xa95'))[_0x33d7ff('0x49e')](_0xbf5d82[0x0],'_error'))[_0x33d7ff('0x388')](),!0x1;_0x28294b=_0x107f52[_0x33d7ff('0x784')];}if(this[_0x33d7ff('0xab9')](_0x28294b)){var _0x189937='[]';_0x3021c8?_0x189937=_0x3021c8:''!==(_0x189937=$('#'[_0x33d7ff('0x49e')](_0xbf5d82[0x0]))['val']())&&null!=_0x189937||(_0x189937='[]');for(var _0x48f599=JSON[_0x33d7ff('0xb50')](_0x189937),_0x304b3b={},_0x1245b9=-0x1,_0x2daa0a=[],_0x1d4512=0x0;_0x1d4512<_0x48f599['length'];_0x1d4512++){var _0xbc6d85=_0x48f599[_0x1d4512];_0xbc6d85['id']===_0x3f1ebf&&(_0x304b3b=_0xbc6d85,_0x1245b9=_0x1d4512),_0x2daa0a[_0x33d7ff('0x8cd')](_0xbc6d85);}_0x28294b['id']=_0x304b3b['id'],_0x2daa0a[_0x1245b9]=_0x28294b,void 0x0!==_0xbf5d82[0x1][_0x33d7ff('0xd75')]&&null!=_0xbf5d82[0x1][_0x33d7ff('0xd75')]&&_0x2daa0a[_0x33d7ff('0x96a')](_0xbf5d82[0x1]['sort-function']),_0x189937=JSON[_0x33d7ff('0x263')](_0x2daa0a),$('#'[_0x33d7ff('0x49e')](_0xbf5d82[0x0]))[_0x33d7ff('0x19f')](_0x189937);var _0x3c3088=this[_0x33d7ff('0x6e7')](_0x189937,_0xbf5d82);_0x18d23d&&_0x18d23d(_0x2daa0a),this[_0x33d7ff('0x199')](_0xbf5d82),$('#'[_0x33d7ff('0x49e')](_0xbf5d82[0x0],_0x33d7ff('0x39f')))['html'](''),$('#'[_0x33d7ff('0x49e')](_0xbf5d82[0x0],_0x33d7ff('0x39f')))['append'](_0x3c3088),this['makeDataGroupSortable'](_0xbf5d82,$('#'['concat'](_0xbf5d82[0x0],'_div_inner'))),this[_0x33d7ff('0xa57')](),this[_0x33d7ff('0xcc4')](_0x33d7ff('0x465'),_0x33d7ff('0xc02'));}}return!0x0;}},{'key':_0x4eeae5('0x74f'),'value':function(_0x324451,_0x200eb2,_0x3c67df){var _0x4c4521=_0x4eeae5,_0x560aa8,_0x71c71d=_0x324451[_0x4c4521('0x627')](0x0,_0x324451[_0x4c4521('0x320')]('_'));_0x560aa8=_0x200eb2?decodeURI(_0x200eb2):$('#'['concat'](_0x71c71d))[_0x4c4521('0x19f')]();for(var _0x43c966=JSON[_0x4c4521('0xb50')](_0x560aa8),_0x3047d1={},_0x3d170e=0x0;_0x3d170e<_0x43c966[_0x4c4521('0x1d1')];_0x3d170e++){var _0x1f0851=_0x43c966[_0x3d170e];_0x1f0851['id']===_0x324451&&(_0x3047d1=_0x1f0851);}_0x3c67df=_0x3c67df?JSON[_0x4c4521('0xb50')](decodeURI(_0x3c67df)):$('#'[_0x4c4521('0x49e')](_0x71c71d))[_0x4c4521('0xc8f')](_0x4c4521('0xb94')),this['showDataGroup'](_0x3c67df,_0x3047d1);}},{'key':_0x4eeae5('0x423'),'value':function(_0x51a29f){var _0x4ad306=_0x4eeae5;for(var _0x9b95f7,_0x1a4253=0x1,_0x43c426=0x0;_0x43c426<_0x51a29f[_0x4ad306('0x1d1')];_0x43c426++){var _0x369527=_0x51a29f[_0x43c426];void 0x0!==_0x369527['id']&&null!=_0x369527['id']||(_0x369527['id']=0x1),(_0x9b95f7=_0x369527['id'][_0x4ad306('0x627')](_0x369527['id'][_0x4ad306('0x320')]('_')+0x1,_0x369527['id'][_0x4ad306('0x1d1')]))>=_0x1a4253&&(_0x1a4253=parseInt(_0x9b95f7,0xa)+0x1);}return _0x1a4253;}},{'key':_0x4eeae5('0xcc0'),'value':function(_0x5d0dfc,_0x7b74a){var _0x350676=_0x4eeae5,_0x3a46af,_0x41feda=_0x5d0dfc[_0x350676('0x627')](0x0,_0x5d0dfc[_0x350676('0x320')]('_'));_0x3a46af=_0x7b74a?decodeURI(_0x7b74a):$('#'['concat'](_0x41feda))[_0x350676('0x19f')]();for(var _0x241353=JSON['parse'](_0x3a46af),_0x3e5dcd=[],_0x4da7d9=0x0;_0x4da7d9<_0x241353[_0x350676('0x1d1')];_0x4da7d9++){var _0x1c43c0=_0x241353[_0x4da7d9];_0x1c43c0['id']!==_0x5d0dfc&&_0x3e5dcd['push'](_0x1c43c0);}$('#'['concat'](_0x41feda))[_0x350676('0x19f')](JSON[_0x350676('0x263')](_0x3e5dcd)),$('#'[_0x350676('0x49e')](_0x5d0dfc))[_0x350676('0x8b7')](),this[_0x350676('0xcc4')](_0x350676('0xad3'),_0x350676('0x2cc'));}},{'key':_0x4eeae5('0x93d'),'value':function(_0x58c49a,_0x38b857,_0x220f0d){var _0x2f7b6b=_0x4eeae5,_0x5a872f;null!=_0x220f0d&&void 0x0!==_0x220f0d||(_0x220f0d=this[_0x2f7b6b('0x59d')]()),null!=_0x38b857&&void 0x0!==_0x38b857&&''!==_0x38b857||(_0x38b857='#'[_0x2f7b6b('0x49e')](this['getTableName'](),_0x2f7b6b('0xad2')));for(var _0x2ea8bd=0x0;_0x2ea8bd<_0x220f0d[_0x2f7b6b('0x1d1')];_0x2ea8bd++)if('date'===_0x220f0d[_0x2ea8bd][0x1][_0x2f7b6b('0xb88')])_0x2f7b6b('0x38a')!==_0x58c49a[_0x220f0d[_0x2ea8bd][0x0]]&&''!==_0x58c49a[_0x220f0d[_0x2ea8bd][0x0]]&&null!=_0x58c49a[_0x220f0d[_0x2ea8bd][0x0]]&&void 0x0!==_0x58c49a[_0x220f0d[_0x2ea8bd][0x0]]&&$(''[_0x2f7b6b('0x49e')](_0x38b857,'\x20#')[_0x2f7b6b('0x49e')](_0x220f0d[_0x2ea8bd][0x0],'_date'))[_0x2f7b6b('0x2b4')](_0x2f7b6b('0xb7c'),_0x58c49a[_0x220f0d[_0x2ea8bd][0x0]]);else{if('colorpick'===_0x220f0d[_0x2ea8bd][0x1]['type'])null!=_0x58c49a[_0x220f0d[_0x2ea8bd][0x0]]&&void 0x0!==_0x58c49a[_0x220f0d[_0x2ea8bd][0x0]]&&($(''[_0x2f7b6b('0x49e')](_0x38b857,'\x20#')[_0x2f7b6b('0x49e')](_0x220f0d[_0x2ea8bd][0x0],_0x2f7b6b('0x6f')))[_0x2f7b6b('0x2a4')](_0x2f7b6b('0xb7c'),_0x58c49a[_0x220f0d[_0x2ea8bd][0x0]]),$(''[_0x2f7b6b('0x49e')](_0x38b857,'\x20#')[_0x2f7b6b('0x49e')](_0x220f0d[_0x2ea8bd][0x0]))['val'](_0x58c49a[_0x220f0d[_0x2ea8bd][0x0]]));else{if(_0x2f7b6b('0x44c')===_0x220f0d[_0x2ea8bd][0x1][_0x2f7b6b('0xb88')]||_0x2f7b6b('0x322')===_0x220f0d[_0x2ea8bd][0x1][_0x2f7b6b('0xb88')]){if('0000-00-00\x2000:00:00'!==_0x58c49a[_0x220f0d[_0x2ea8bd][0x0]]&&''!==_0x58c49a[_0x220f0d[_0x2ea8bd][0x0]]&&null!=_0x58c49a[_0x220f0d[_0x2ea8bd][0x0]]&&void 0x0!==_0x58c49a[_0x220f0d[_0x2ea8bd][0x0]]){var _0x2101cf=_0x58c49a[_0x220f0d[_0x2ea8bd][0x0]][_0x2f7b6b('0x5a0')]('\x20'),_0x1cd8ef=_0x2101cf[0x0][_0x2f7b6b('0x5a0')]('-'),_0x42d35c=_0x2101cf[0x1]['split'](':');$(''[_0x2f7b6b('0x49e')](_0x38b857,'\x20#')['concat'](_0x220f0d[_0x2ea8bd][0x0],'_datetime'))[_0x2f7b6b('0xc8f')](_0x2f7b6b('0x90b'))['setLocalDate'](new Date(_0x1cd8ef[0x0],parseInt(_0x1cd8ef[0x1],0xa)-0x1,_0x1cd8ef[0x2],_0x42d35c[0x0],_0x42d35c[0x1],_0x42d35c[0x2]));}}else{if(_0x2f7b6b('0x551')===_0x220f0d[_0x2ea8bd][0x1]['type'])$(''[_0x2f7b6b('0x49e')](_0x38b857,'\x20#')[_0x2f7b6b('0x49e')](_0x220f0d[_0x2ea8bd][0x0]))[_0x2f7b6b('0x826')](_0x58c49a[_0x220f0d[_0x2ea8bd][0x0]]);else{if(_0x2f7b6b('0xad7')===_0x220f0d[_0x2ea8bd][0x1][_0x2f7b6b('0xb88')]){if(void 0x0!==_0x220f0d[_0x2ea8bd][0x1]['remote-source']&&null!=_0x220f0d[_0x2ea8bd][0x1][_0x2f7b6b('0x5e1')]){var _0x47290=this[_0x2f7b6b('0x9d5')](_0x220f0d[_0x2ea8bd]);_0x5a872f=this[_0x2f7b6b('0xa0a')][_0x47290][_0x58c49a[_0x220f0d[_0x2ea8bd][0x0]]];}else _0x5a872f=_0x58c49a[_0x220f0d[_0x2ea8bd][0x0]];if(void 0x0===_0x5a872f||null==_0x5a872f)_0x5a872f='';else try{_0x5a872f=_0x5a872f[_0x2f7b6b('0x95e')](/(?:\r\n|\r|\n)/g,_0x2f7b6b('0xa6e'));}catch(_0x4870de){}if(void 0x0!==_0x220f0d[_0x2ea8bd][0x1]['formatter']&&_0x220f0d[_0x2ea8bd][0x1][_0x2f7b6b('0x10f')]&&$[_0x2f7b6b('0x9ec')](_0x220f0d[_0x2ea8bd][0x1][_0x2f7b6b('0x10f')]))try{_0x5a872f=_0x220f0d[_0x2ea8bd][0x1][_0x2f7b6b('0x10f')](_0x5a872f);}catch(_0x2d645a){}$(''[_0x2f7b6b('0x49e')](_0x38b857,'\x20#')['concat'](_0x220f0d[_0x2ea8bd][0x0]))[_0x2f7b6b('0x826')](_0x5a872f);}else{if(_0x2f7b6b('0x1fe')===_0x220f0d[_0x2ea8bd][0x1][_0x2f7b6b('0xb88')])null!=_0x58c49a[_0x220f0d[_0x2ea8bd][0x0]]&&void 0x0!==_0x58c49a[_0x220f0d[_0x2ea8bd][0x0]]&&''!==_0x58c49a[_0x220f0d[_0x2ea8bd][0x0]]&&($(''[_0x2f7b6b('0x49e')](_0x38b857,'\x20#')[_0x2f7b6b('0x49e')](_0x220f0d[_0x2ea8bd][0x0]))['html'](_0x58c49a[_0x220f0d[_0x2ea8bd][0x0]]),$(''[_0x2f7b6b('0x49e')](_0x38b857,'\x20#')['concat'](_0x220f0d[_0x2ea8bd][0x0]))[_0x2f7b6b('0x41a')](_0x2f7b6b('0x19f'),_0x58c49a[_0x220f0d[_0x2ea8bd][0x0]]),$(''['concat'](_0x38b857,'\x20#')[_0x2f7b6b('0x49e')](_0x220f0d[_0x2ea8bd][0x0]))['show'](),$(''['concat'](_0x38b857,'\x20#')[_0x2f7b6b('0x49e')](_0x220f0d[_0x2ea8bd][0x0],_0x2f7b6b('0x387')))['show'](),$(''[_0x2f7b6b('0x49e')](_0x38b857,'\x20#')['concat'](_0x220f0d[_0x2ea8bd][0x0],_0x2f7b6b('0x6fc')))['show']()),!0x0===_0x220f0d[_0x2ea8bd][0x1][_0x2f7b6b('0xc34')]&&$(''[_0x2f7b6b('0x49e')](_0x38b857,'\x20#')[_0x2f7b6b('0x49e')](_0x220f0d[_0x2ea8bd][0x0],_0x2f7b6b('0x40a')))['remove']();else{if(_0x2f7b6b('0x7fc')===_0x220f0d[_0x2ea8bd][0x1]['type'])void 0x0!==_0x58c49a[_0x220f0d[_0x2ea8bd][0x0]]&&null!=_0x58c49a[_0x220f0d[_0x2ea8bd][0x0]]&&''!==_0x58c49a[_0x220f0d[_0x2ea8bd][0x0]]||(_0x58c49a[_0x220f0d[_0x2ea8bd][0x0]]=_0x2f7b6b('0x185')),$(''[_0x2f7b6b('0x49e')](_0x38b857,'\x20#')[_0x2f7b6b('0x49e')](_0x220f0d[_0x2ea8bd][0x0]))['val'](_0x58c49a[_0x220f0d[_0x2ea8bd][0x0]]);else{if(_0x2f7b6b('0xdbb')===_0x220f0d[_0x2ea8bd][0x1][_0x2f7b6b('0xb88')])void 0x0!==_0x58c49a[_0x220f0d[_0x2ea8bd][0x0]]&&null!=_0x58c49a[_0x220f0d[_0x2ea8bd][0x0]]&&''!==_0x58c49a[_0x220f0d[_0x2ea8bd][0x0]]||(_0x58c49a[_0x220f0d[_0x2ea8bd][0x0]]='NULL'),$(''[_0x2f7b6b('0x49e')](_0x38b857,'\x20#')['concat'](_0x220f0d[_0x2ea8bd][0x0]))[_0x2f7b6b('0xdbb')](_0x2f7b6b('0x19f'),_0x58c49a[_0x220f0d[_0x2ea8bd][0x0]]);else{if('select2multi'===_0x220f0d[_0x2ea8bd][0x1]['type']){void 0x0!==_0x58c49a[_0x220f0d[_0x2ea8bd][0x0]]&&null!=_0x58c49a[_0x220f0d[_0x2ea8bd][0x0]]&&''!==_0x58c49a[_0x220f0d[_0x2ea8bd][0x0]]||(_0x58c49a[_0x220f0d[_0x2ea8bd][0x0]]='NULL');var _0x4d074c=[];if(void 0x0!==_0x58c49a[_0x220f0d[_0x2ea8bd][0x0]]&&null!=_0x58c49a[_0x220f0d[_0x2ea8bd][0x0]]&&''!==_0x58c49a[_0x220f0d[_0x2ea8bd][0x0]])try{_0x4d074c=JSON[_0x2f7b6b('0xb50')](_0x58c49a[_0x220f0d[_0x2ea8bd][0x0]]);}catch(_0x5d9e2c){}$(''['concat'](_0x38b857,'\x20#')['concat'](_0x220f0d[_0x2ea8bd][0x0]))[_0x2f7b6b('0xdbb')](_0x2f7b6b('0x19f'),_0x4d074c);var _0x86af2=$(''[_0x2f7b6b('0x49e')](_0x38b857,'\x20#')[_0x2f7b6b('0x49e')](_0x220f0d[_0x2ea8bd][0x0]))[_0x2f7b6b('0xdb8')](_0x2f7b6b('0x941'))[_0x2f7b6b('0x448')]();$(''[_0x2f7b6b('0x49e')](_0x38b857,'\x20#')['concat'](_0x220f0d[_0x2ea8bd][0x0]))[_0x2f7b6b('0xdb8')]('.controls')[_0x2f7b6b('0x671')](_0x2f7b6b('0x6c9'),''['concat'](_0x86af2,'px')),$(''[_0x2f7b6b('0x49e')](_0x38b857,'\x20#')['concat'](_0x220f0d[_0x2ea8bd][0x0]))[_0x2f7b6b('0x671')]('min-height',''[_0x2f7b6b('0x49e')](_0x86af2,'px'));}else{if(_0x2f7b6b('0xdc')===_0x220f0d[_0x2ea8bd][0x1][_0x2f7b6b('0xb88')])try{var _0x39800b=this[_0x2f7b6b('0x6e7')](_0x58c49a[_0x220f0d[_0x2ea8bd][0x0]],_0x220f0d[_0x2ea8bd]);$(''[_0x2f7b6b('0x49e')](_0x38b857,'\x20#')[_0x2f7b6b('0x49e')](_0x220f0d[_0x2ea8bd][0x0]))[_0x2f7b6b('0x19f')](_0x58c49a[_0x220f0d[_0x2ea8bd][0x0]]),$(''[_0x2f7b6b('0x49e')](_0x38b857,'\x20#')['concat'](_0x220f0d[_0x2ea8bd][0x0],_0x2f7b6b('0x39f')))['html'](''),$(''[_0x2f7b6b('0x49e')](_0x38b857,'\x20#')[_0x2f7b6b('0x49e')](_0x220f0d[_0x2ea8bd][0x0],_0x2f7b6b('0x39f')))[_0x2f7b6b('0x113')](_0x39800b),this[_0x2f7b6b('0x29')](_0x220f0d[_0x2ea8bd],$(''[_0x2f7b6b('0x49e')](_0x38b857,'\x20#')[_0x2f7b6b('0x49e')](_0x220f0d[_0x2ea8bd][0x0],_0x2f7b6b('0xb63'))));}catch(_0x125557){}else{if(_0x2f7b6b('0x97e')===_0x220f0d[_0x2ea8bd][0x1][_0x2f7b6b('0xb88')])''===_0x58c49a[_0x220f0d[_0x2ea8bd][0x0]]&&void 0x0===_0x58c49a[_0x220f0d[_0x2ea8bd][0x0]]&&null==_0x58c49a[_0x220f0d[_0x2ea8bd][0x0]]||$(''[_0x2f7b6b('0x49e')](_0x38b857,'\x20#')[_0x2f7b6b('0x49e')](_0x220f0d[_0x2ea8bd][0x0]))['data'](_0x2f7b6b('0x617'))[_0x2f7b6b('0xc2')](_0x58c49a[_0x220f0d[_0x2ea8bd][0x0]]);else{if(_0x2f7b6b('0x376')===_0x220f0d[_0x2ea8bd][0x1][_0x2f7b6b('0xb88')])$(''[_0x2f7b6b('0x49e')](_0x38b857,'\x20#')[_0x2f7b6b('0x49e')](_0x220f0d[_0x2ea8bd][0x0]))[_0x2f7b6b('0xc8f')]('simplemde')[_0x2f7b6b('0x9b6')](_0x58c49a[_0x220f0d[_0x2ea8bd][0x0]]);else{if(_0x2f7b6b('0x293')===_0x220f0d[_0x2ea8bd][0x1]['type']){var _0x20025c=$(''[_0x2f7b6b('0x49e')](_0x38b857,'\x20#')[_0x2f7b6b('0x49e')](_0x220f0d[_0x2ea8bd][0x0]))[_0x2f7b6b('0xc8f')](_0x2f7b6b('0x3c5'));_0x20025c&&_0x20025c[_0x2f7b6b('0xc27')]()['setValue'](_0x58c49a[_0x220f0d[_0x2ea8bd][0x0]]);}else $(''[_0x2f7b6b('0x49e')](_0x38b857,'\x20#')[_0x2f7b6b('0x49e')](_0x220f0d[_0x2ea8bd][0x0]))['val'](_0x58c49a[_0x220f0d[_0x2ea8bd][0x0]]);}}}}}}}}}}}}}},{'key':'cancel','value':function(){var _0x3ca0e4=_0x4eeae5;$('#'['concat'](this[_0x3ca0e4('0x6d8')](),_0x3ca0e4('0xad2')))['hide'](),$('#'[_0x3ca0e4('0x49e')](this['getTableName']()))[_0x3ca0e4('0x388')]();}},{'key':'renderFormField','value':function(_0x5b106c){var _0x4cf1ab=_0x4eeae5,_0x53f921=0x0;if(void 0x0===this[_0x4cf1ab('0x7dc')][_0x5b106c[0x1]['type']]||null==this[_0x4cf1ab('0x7dc')][_0x5b106c[0x1][_0x4cf1ab('0xb88')]])return'';var _0x1f9493=this[_0x4cf1ab('0x7dc')][_0x5b106c[0x1][_0x4cf1ab('0xb88')]];if(_0x5b106c[0x1]['label']=this['gt'](_0x5b106c[0x1]['label']),_0x4cf1ab('0x3b9')!==_0x5b106c[0x1][_0x4cf1ab('0x175')]&&_0x4cf1ab('0x92d')!==_0x5b106c[0x1][_0x4cf1ab('0x175')]&&_0x4cf1ab('0x801')!==_0x5b106c[0x1][_0x4cf1ab('0x175')]&&_0x4cf1ab('0xad7')!==_0x5b106c[0x1][_0x4cf1ab('0xb88')]&&_0x5b106c[0x1][_0x4cf1ab('0x551')]['indexOf']('*')<0x0&&([_0x4cf1ab('0x7fc'),'select2'][_0x4cf1ab('0x857')](_0x5b106c[0x1][_0x4cf1ab('0xb88')])>=0x0&&!0x0===_0x5b106c[0x1][_0x4cf1ab('0x516')]||(_0x5b106c[0x1][_0x4cf1ab('0x551')]=''[_0x4cf1ab('0x49e')](_0x5b106c[0x1][_0x4cf1ab('0x551')],_0x4cf1ab('0x881')))),_0x4cf1ab('0x7fc')===_0x5b106c[0x1]['type']||_0x4cf1ab('0xdbb')===_0x5b106c[0x1]['type']||_0x4cf1ab('0x9da')===_0x5b106c[0x1]['type']){if(_0x1f9493=(_0x1f9493=_0x1f9493[_0x4cf1ab('0x95e')](/_id_/g,_0x5b106c[0x0]))[_0x4cf1ab('0x95e')](/_label_/g,_0x5b106c[0x1][_0x4cf1ab('0x551')]),void 0x0!==_0x5b106c[0x1][_0x4cf1ab('0x7d3')]&&null!=_0x5b106c[0x1][_0x4cf1ab('0x7d3')])_0x1f9493=_0x1f9493[_0x4cf1ab('0x95e')](_0x4cf1ab('0x86a'),this[_0x4cf1ab('0xa79')](_0x5b106c[0x1]['source'],_0x5b106c));else{if(void 0x0!==_0x5b106c[0x1][_0x4cf1ab('0x5e1')]&&null!=_0x5b106c[0x1][_0x4cf1ab('0x5e1')]){var _0x1e1fb8=this[_0x4cf1ab('0x9d5')](_0x5b106c);_0x1f9493=_0x1f9493[_0x4cf1ab('0x95e')](_0x4cf1ab('0x86a'),this['renderFormSelectOptionsRemote'](this['fieldMasterData'][_0x1e1fb8],_0x5b106c));}}}else{if('colorpick'===_0x5b106c[0x1][_0x4cf1ab('0xb88')])_0x1f9493=(_0x1f9493=_0x1f9493[_0x4cf1ab('0x95e')](/_id_/g,_0x5b106c[0x0]))[_0x4cf1ab('0x95e')](/_label_/g,_0x5b106c[0x1][_0x4cf1ab('0x551')]);else{if(_0x4cf1ab('0xd98')===_0x5b106c[0x1][_0x4cf1ab('0xb88')])_0x1f9493=(_0x1f9493=_0x1f9493[_0x4cf1ab('0x95e')](/_id_/g,_0x5b106c[0x0]))[_0x4cf1ab('0x95e')](/_label_/g,_0x5b106c[0x1][_0x4cf1ab('0x551')]);else{if(_0x4cf1ab('0x44c')===_0x5b106c[0x1][_0x4cf1ab('0xb88')])_0x1f9493=(_0x1f9493=_0x1f9493['replace'](/_id_/g,_0x5b106c[0x0]))[_0x4cf1ab('0x95e')](/_label_/g,_0x5b106c[0x1][_0x4cf1ab('0x551')]);else{if('time'===_0x5b106c[0x1][_0x4cf1ab('0xb88')])_0x1f9493=(_0x1f9493=_0x1f9493[_0x4cf1ab('0x95e')](/_id_/g,_0x5b106c[0x0]))[_0x4cf1ab('0x95e')](/_label_/g,_0x5b106c[0x1][_0x4cf1ab('0x551')]);else{if(_0x4cf1ab('0x1fe')===_0x5b106c[0x1][_0x4cf1ab('0xb88')]){_0x1f9493=(_0x1f9493=_0x1f9493[_0x4cf1ab('0x95e')](/_id_/g,_0x5b106c[0x0]))[_0x4cf1ab('0x95e')](/_label_/g,_0x5b106c[0x1][_0x4cf1ab('0x551')]);var _0x2f423c=this[_0x4cf1ab('0xcd3')]();_0x53f921=null!=_0x2f423c&&void 0x0!==_0x2f423c?_0x2f423c['id']:-0x1*this['getUser']()['id'],_0x1f9493=(_0x1f9493=_0x1f9493[_0x4cf1ab('0x95e')](/_userId_/g,_0x53f921))[_0x4cf1ab('0x95e')](/_group_/g,this['tab']),_0x1f9493=(_0x1f9493=void 0x0!==_0x5b106c[0x1]['filetypes']&&null!=_0x5b106c[0x1][_0x4cf1ab('0x833')]?_0x1f9493[_0x4cf1ab('0x95e')](/_filetypes_/g,_0x5b106c[0x1][_0x4cf1ab('0x833')]):_0x1f9493[_0x4cf1ab('0x95e')](/_filetypes_/g,'all'))[_0x4cf1ab('0x95e')](/_rand_/g,this['generateRandom'](0xe));}else _0x4cf1ab('0xdc')===_0x5b106c[0x1][_0x4cf1ab('0xb88')]||_0x4cf1ab('0x97e')===_0x5b106c[0x1][_0x4cf1ab('0xb88')]||_0x4cf1ab('0x98e')===_0x5b106c[0x1][_0x4cf1ab('0xb88')]||_0x5b106c[0x1]['type'],_0x1f9493=(_0x1f9493=_0x1f9493[_0x4cf1ab('0x95e')](/_id_/g,_0x5b106c[0x0]))[_0x4cf1ab('0x95e')](/_label_/g,_0x5b106c[0x1]['label']);}}}}}return _0x1f9493=void 0x0!==_0x5b106c[0x1][_0x4cf1ab('0x175')]&&null!=_0x5b106c[0x1][_0x4cf1ab('0x175')]&&''!==_0x5b106c[0x1][_0x4cf1ab('0x175')]?_0x1f9493[_0x4cf1ab('0x95e')](/_validation_/g,'validation=\x22'[_0x4cf1ab('0x49e')](_0x5b106c[0x1][_0x4cf1ab('0x175')],'\x22')):_0x1f9493[_0x4cf1ab('0x95e')](/_validation_/g,''),_0x1f9493=void 0x0!==_0x5b106c[0x1]['help']&&null!==_0x5b106c[0x1][_0x4cf1ab('0xaaf')]?(_0x1f9493=_0x1f9493['replace'](/_helpline_/g,_0x5b106c[0x1][_0x4cf1ab('0xaaf')]))[_0x4cf1ab('0x95e')](/_hidden_class_help_/g,''):(_0x1f9493=_0x1f9493[_0x4cf1ab('0x95e')](/_helpline_/g,''))[_0x4cf1ab('0x95e')](/_hidden_class_help_/g,_0x4cf1ab('0x79b')),_0x1f9493=void 0x0!==_0x5b106c[0x1][_0x4cf1ab('0xad7')]&&null!==_0x5b106c[0x1][_0x4cf1ab('0xad7')]?_0x1f9493['replace'](/_placeholder_/g,_0x4cf1ab('0x626')[_0x4cf1ab('0x49e')](_0x5b106c[0x1][_0x4cf1ab('0xad7')],'\x22')):_0x1f9493[_0x4cf1ab('0x95e')](/_placeholder_/g,''),_0x1f9493=void 0x0!==_0x5b106c[0x1]['mask']&&null!==_0x5b106c[0x1]['mask']?_0x1f9493[_0x4cf1ab('0x95e')](/_mask_/g,_0x4cf1ab('0xb5f')[_0x4cf1ab('0x49e')](_0x5b106c[0x1]['mask'],'\x22')):_0x1f9493['replace'](/_mask_/g,'');}},{'key':_0x4eeae5('0xa79'),'value':function(_0x929671,_0x30f034){var _0x59ba95=_0x4eeae5,_0x3aed08='';null!=_0x30f034&&void 0x0!==_0x30f034&&!0x0===_0x30f034[0x1]['allow-null']&&(void 0x0!==_0x30f034[0x1][_0x59ba95('0x750')]&&null!=_0x30f034[0x1][_0x59ba95('0x750')]?_0x3aed08+=_0x59ba95('0x593')[_0x59ba95('0x49e')](this['gt'](_0x30f034[0x1]['null-label']),_0x59ba95('0x228')):_0x3aed08+=_0x59ba95('0x2c1'));var _0x191a67=[];for(var _0x5674c9 in _0x929671)_0x191a67[_0x59ba95('0x8cd')](_0x929671[_0x5674c9]);!0x0===_0x30f034[0x1][_0x59ba95('0x96a')]&&_0x191a67[_0x59ba95('0x96a')](function(_0x2a408e,_0x2235ac){return(_0x2a408e=_0x2a408e[0x1])<(_0x2235ac=_0x2235ac[0x1])?-0x1:_0x2a408e>_0x2235ac?0x1:0x0;});for(var _0x21a4fd=0x0;_0x21a4fd<_0x191a67[_0x59ba95('0x1d1')];_0x21a4fd++){var _0x3f5790=_0x191a67[_0x21a4fd][0x0],_0x2cc360=_0x191a67[_0x21a4fd][0x1],_0x44c8a8=_0x59ba95('0xacb');_0x3aed08+=_0x44c8a8=(_0x44c8a8=_0x44c8a8[_0x59ba95('0x95e')](_0x59ba95('0x98c'),_0x3f5790))[_0x59ba95('0x95e')](_0x59ba95('0x568'),this['gt'](_0x2cc360));}return _0x3aed08;}},{'key':'renderFormSelectOptionsRemote','value':function(_0x16c212,_0x5457ac){var _0x303639=_0x4eeae5,_0x191863='';!0x0===_0x5457ac[0x1][_0x303639('0x516')]&&(void 0x0!==_0x5457ac[0x1][_0x303639('0x750')]&&null!=_0x5457ac[0x1][_0x303639('0x750')]?_0x191863+=_0x303639('0x593')['concat'](this['gt'](_0x5457ac[0x1][_0x303639('0x750')]),''):_0x191863+='Select');var _0x52df75=[];for(var _0x200f6d in _0x16c212)_0x52df75[_0x303639('0x8cd')]([_0x200f6d,_0x16c212[_0x200f6d]]);'true'===_0x5457ac[0x1][_0x303639('0x96a')]&&_0x52df75[_0x303639('0x96a')](function(_0x54a121,_0xe04506){return(_0x54a121=_0x54a121[0x1])<(_0xe04506=_0xe04506[0x1])?-0x1:_0x54a121>_0xe04506?0x1:0x0;});for(var _0x4da8b2=0x0;_0x4da8b2<_0x52df75['length'];_0x4da8b2++){var _0x2b01ac=_0x52df75[_0x4da8b2][0x0],_0x5d740a=_0x52df75[_0x4da8b2][0x1],_0x383f64='_val_';_0x191863+=_0x383f64=(_0x383f64=_0x383f64[_0x303639('0x95e')]('_id_',_0x2b01ac))[_0x303639('0x95e')](_0x303639('0x568'),this['gt'](_0x5d740a));}return _0x191863;}},{'key':_0x4eeae5('0x53f'),'value':function(_0x1d2202){var _0x23d412=_0x4eeae5;this[_0x23d412('0x4e2')]=_0x1d2202;}},{'key':'setEmailTemplates','value':function(_0x456f75){this['emailTemplates']=_0x456f75;}},{'key':_0x4eeae5('0xa12'),'value':function(_0x4af639){var _0x38707b=_0x4eeae5;return this[_0x38707b('0x4e2')][_0x4af639];}},{'key':_0x4eeae5('0x906'),'value':function(_0x301a98){var _0x34f763=_0x4eeae5;this[_0x34f763('0x7dc')]=_0x301a98;}},{'key':_0x4eeae5('0x76f'),'value':function(_0x59ca53){return'';}},{'key':_0x4eeae5('0xc72'),'value':function(){this['deleteParams']={};}},{'key':_0x4eeae5('0x4bc'),'value':function(){return this['showAddNew'];}},{'key':'getAddNewLabel','value':function(){var _0x3a589c=_0x4eeae5;return _0x3a589c('0x183');}},{'key':_0x4eeae5('0x441'),'value':function(_0x5099ce){var _0x1835c0=_0x4eeae5;this[_0x1835c0('0xa3f')]=_0x5099ce;}},{'key':_0x4eeae5('0x8fa'),'value':function(_0x826000){this['showDelete']=_0x826000;}},{'key':_0x4eeae5('0xb2b'),'value':function(_0x50a1ff){this['showEdit']=_0x50a1ff;}},{'key':_0x4eeae5('0x478'),'value':function(_0x1f76c3){this['showSave']=_0x1f76c3;}},{'key':_0x4eeae5('0x2fa'),'value':function(_0x5f395a){var _0x4d527d=_0x4eeae5;this[_0x4d527d('0xbfe')]=_0x5f395a;}},{'key':'getCustomTableParams','value':function(){return{};}},{'key':'getActionButtons','value':function(_0x483a6f){return modJs['getActionButtonsHtml'](_0x483a6f['aData'][0x0],_0x483a6f['aData']);}},{'key':'getActionButtonsHtml','value':function(_0x4dbd72,_0x19e066){var _0x1f998a=_0x4eeae5,_0xf7f075=_0x1f998a('0x173');return _0xf7f075=this[_0x1f998a('0xa3f')]?_0xf7f075[_0x1f998a('0x95e')]('_clone_',''):_0xf7f075['replace'](_0x1f998a('0x154'),''),_0xf7f075=this[_0x1f998a('0x224')]?_0xf7f075['replace'](_0x1f998a('0xd12'),_0x1f998a('0xd4e')):_0xf7f075['replace'](_0x1f998a('0xd12'),''),_0xf7f075=(_0xf7f075=(_0xf7f075=this[_0x1f998a('0x385')]?_0xf7f075[_0x1f998a('0x95e')](_0x1f998a('0x788'),''):_0xf7f075[_0x1f998a('0x95e')]('_edit_',''))[_0x1f998a('0x95e')](/_id_/g,_0x4dbd72))[_0x1f998a('0x95e')](/_BASE_/g,this[_0x1f998a('0xadb')]);}},{'key':_0x4eeae5('0xc5c'),'value':function(_0x117cbb){var _0x15797c=_0x4eeae5;for(var _0x4dd790=new Date(),_0x4d1cb3=_0x15797c('0x9be'),_0x1669d0='',_0x5a7af8=_0x117cbb;_0x5a7af8>0x0;--_0x5a7af8)_0x1669d0+=_0x4d1cb3[Math[_0x15797c('0xd3b')](Math['random']()*(_0x4d1cb3['length']-0x1))];return _0x1669d0+_0x4dd790[_0x15797c('0x405')]();}},{'key':'checkFileType','value':function(_0x36ea41,_0x422bb4){var _0x3c7f2a=_0x4eeae5,_0x449760=document[_0x3c7f2a('0x803')](_0x36ea41),_0x203604='';return _0x449760[_0x3c7f2a('0x9b6')]['lastIndexOf']('.')>0x0&&(_0x203604=_0x449760[_0x3c7f2a('0x9b6')][_0x3c7f2a('0x627')](_0x449760['value'][_0x3c7f2a('0x320')]('.')+0x1,_0x449760[_0x3c7f2a('0x9b6')]['length'])),_0x203604=_0x203604[_0x3c7f2a('0x5d')](),!(_0x422bb4[_0x3c7f2a('0x5a0')](',')[_0x3c7f2a('0x857')](_0x203604)<0x0&&(_0x449760[_0x3c7f2a('0x9b6')]='',this[_0x3c7f2a('0xcc4')](_0x3c7f2a('0x41f'),_0x3c7f2a('0x5a8')),this['clearFileElement'](_0x36ea41),0x1));}},{'key':'clearFileElement','value':function(_0x49d2c1){var _0x3262eb=_0x4eeae5,_0x216a3f=$('#'['concat'](_0x49d2c1));_0x216a3f[_0x3262eb('0x758')](_0x216a3f=_0x216a3f['val']('')[_0x3262eb('0xbd1')](!0x0));}},{'key':'fixJSON','value':function(_0xbe5282){return'1'===this['noJSONRequests']&&(_0xbe5282=window['btoa'](_0xbe5282)),_0xbe5282;}},{'key':_0x4eeae5('0x68e'),'value':function(_0x26a967){var _0x1cbf42=_0x4eeae5,_0x3d4183=this[_0x1cbf42('0x915')]();return _0x26a967['addMinutes'](0x3c*_0x3d4183);}},{'key':_0x4eeae5('0x915'),'value':function(){var _0x49437e=_0x4eeae5,_0x365ac9=new Date(),_0x80287c=new Date(_0x365ac9[_0x49437e('0xcba')](),0x0,0x1,0x0,0x0,0x0,0x0),_0x5e47e8=_0x80287c['toGMTString']();return(_0x80287c-new Date(_0x5e47e8['substring'](0x0,_0x5e47e8[_0x49437e('0x320')]('\x20')-0x1)))/0x36ee80;}},{'key':_0x4eeae5('0xd95'),'value':function(){return null;}},{'key':_0x4eeae5('0x47f'),'value':function(){var _0x5cd68e=_0x4eeae5;$('#iceloader')[_0x5cd68e('0x388')]();}},{'key':_0x4eeae5('0x2a2'),'value':function(){var _0x1e65d0=_0x4eeae5;$(_0x1e65d0('0x4d3'))[_0x1e65d0('0x79b')]();}},{'key':'generateOptions','value':function(_0x17921b){var _0x3fbdd4=_0x4eeae5,_0x1c7488='';for(var _0x7d7eda in _0x17921b)_0x1c7488+=_0x3fbdd4('0xc99')['replace'](_0x3fbdd4('0x585'),_0x7d7eda)[_0x3fbdd4('0x95e')](_0x3fbdd4('0xc51'),_0x17921b[_0x7d7eda]);return _0x1c7488;}},{'key':_0x4eeae5('0x7d9'),'value':function(_0x5e4c2f,_0x3b49d1){var _0x5b30b5=_0x4eeae5;return void 0x0!==modulesInstalled&&null!==modulesInstalled&&0x1===modulesInstalled[''[_0x5b30b5('0x49e')](_0x5e4c2f,'_')[_0x5b30b5('0x49e')](_0x3b49d1)];}},{'key':_0x4eeae5('0x7b4'),'value':function(_0x2f458f){var _0x35fdc8=_0x4eeae5;for(var _0x444c1e,_0xa2486f,_0x4dd3e9=0x0;_0x4dd3e9<_0x2f458f[_0x35fdc8('0x1d1')];_0x4dd3e9++)if('Hidden'!==(_0x444c1e=_0x2f458f[_0x4dd3e9])[_0x35fdc8('0x725')]&&''!==_0x444c1e[_0x35fdc8('0xc8f')]&&void 0x0!==_0x444c1e[_0x35fdc8('0xc8f')])try{if(void 0x0===(_0xa2486f=JSON[_0x35fdc8('0xb50')](_0x444c1e[_0x35fdc8('0xc8f')]))||null==_0xa2486f)continue;if(0x2!==_0xa2486f[_0x35fdc8('0x1d1')])continue;if(void 0x0===_0xa2486f[0x1]['type']||null==_0xa2486f[0x1][_0x35fdc8('0xb88')])continue;this[_0x35fdc8('0xa7a')][_0x35fdc8('0x8cd')](_0xa2486f);}catch(_0x5658c6){}}},{'key':'addCustomFields','value':function(_0x38d921){var _0x228ced=_0x4eeae5;for(var _0x5a798f=0x0;_0x5a798f0x0?_0x339609+=_0x537e5e[_0x4e3882('0x627')](_0x537e5e[_0x4e3882('0x1d1')]-0x1,0x1):_0x339609+=_0x4f4800[_0x4e3882('0x627')](0x0,0x1),_0x339609+=''['concat'](_0x537e5e)[_0x4e3882('0x49e')](_0x4f4800)[_0x4e3882('0x5a0')]('')[_0x4e3882('0xc16')](function(_0xd21a06,_0x1458d0){var _0x261876=_0x4e3882;return parseInt(_0x1458d0[_0x261876('0xd08')](0x0),0xa)+_0xd21a06;},0x0),_0x4e3882('0x7eb')[_0x4e3882('0x49e')](_0x339609,_0x4e3882('0x46f'));}},{'key':_0x4eeae5('0xb6e'),'value':function(_0x1cb6b1,_0x54c0b6){var _0x235d16=_0x4eeae5,_0x154b7c=''[_0x235d16('0x49e')](this[_0x235d16('0x109')],_0x235d16('0xa9e'))[_0x235d16('0x49e')](_0x1cb6b1,_0x235d16('0x4ee'))['concat'](_0x54c0b6);window[_0x235d16('0xa24')](_0x154b7c,_0x235d16('0x1bc'));}}])&&_0x3198c6(_0x3c843a[_0x4eeae5('0x3ec')],_0x4efc3d),_0x5f1336&&_0x3198c6(_0x3c843a,_0x5f1336),_0xbaf139;}();_0x1873c7[_0xe9fe19('0x53')]=_0x10e625;},{'./FormValidation':0x2c}],0x31:[function(_0x2d39bb,_0x44027f,_0x45e988){var _0x3cfa85=_0x3e44;'use strict';var _0x1f4026;function _0xf1b24e(_0x40ce30){var _0x11506a=_0x3e44;return(_0xf1b24e='function'==typeof Symbol&&_0x11506a('0xd77')==typeof Symbol['iterator']?function(_0x3805e2){return typeof _0x3805e2;}:function(_0x6b2ed){var _0x1ac8e6=_0x11506a;return _0x6b2ed&&_0x1ac8e6('0x67')==typeof Symbol&&_0x6b2ed['constructor']===Symbol&&_0x6b2ed!==Symbol[_0x1ac8e6('0x3ec')]?_0x1ac8e6('0xd77'):typeof _0x6b2ed;})(_0x40ce30);}function _0x6510f6(_0x11567f,_0x4f1996){var _0x324eb9=_0x3e44;for(var _0xd709ae=0x0;_0xd709ae<_0x4f1996[_0x324eb9('0x1d1')];_0xd709ae++){var _0x7046ed=_0x4f1996[_0xd709ae];_0x7046ed[_0x324eb9('0x836')]=_0x7046ed[_0x324eb9('0x836')]||!0x1,_0x7046ed[_0x324eb9('0x249')]=!0x0,_0x324eb9('0x9b6')in _0x7046ed&&(_0x7046ed[_0x324eb9('0xc28')]=!0x0),Object[_0x324eb9('0x2cd')](_0x11567f,_0x7046ed['key'],_0x7046ed);}}function _0x5910f9(_0x39d4bd,_0x49dc96){var _0x52b454=_0x3e44;return!_0x49dc96||_0x52b454('0x669')!==_0xf1b24e(_0x49dc96)&&_0x52b454('0x67')!=typeof _0x49dc96?function(_0x5e28e4){var _0x5c9898=_0x52b454;if(void 0x0===_0x5e28e4)throw new ReferenceError(_0x5c9898('0xba4'));return _0x5e28e4;}(_0x39d4bd):_0x49dc96;}function _0x37290d(){var _0x343a91=_0x3e44;if(_0x343a91('0x396')==typeof Reflect||!Reflect[_0x343a91('0xa71')])return!0x1;if(Reflect[_0x343a91('0xa71')]['sham'])return!0x1;if('function'==typeof Proxy)return!0x0;try{return Date[_0x343a91('0x3ec')][_0x343a91('0x8dc')][_0x343a91('0x928')](Reflect['construct'](Date,[],function(){})),!0x0;}catch(_0x5a9913){return!0x1;}}function _0x27da5f(_0x5b2d6d){var _0x21d31f=_0x3e44;return(_0x27da5f=Object[_0x21d31f('0x16')]?Object[_0x21d31f('0x418')]:function(_0x5c13bf){var _0x1c32a6=_0x21d31f;return _0x5c13bf[_0x1c32a6('0xc15')]||Object[_0x1c32a6('0x418')](_0x5c13bf);})(_0x5b2d6d);}function _0x1bbd94(_0x284fc3,_0x16eee8){var _0x27c0a8=_0x3e44;return(_0x1bbd94=Object[_0x27c0a8('0x16')]||function(_0x48d1c8,_0x501ce0){var _0x38e4e6=_0x27c0a8;return _0x48d1c8[_0x38e4e6('0xc15')]=_0x501ce0,_0x48d1c8;})(_0x284fc3,_0x16eee8);}Object['defineProperty'](_0x45e988,_0x3cfa85('0x866'),{'value':!0x0}),_0x45e988['default']=void 0x0;var _0x559248=function(_0x2eadac){var _0x492b8c=_0x3cfa85;!function(_0x24dd19,_0x5046f0){var _0x24f498=_0x3e44;if(_0x24f498('0x67')!=typeof _0x5046f0&&null!==_0x5046f0)throw new TypeError('Super\x20expression\x20must\x20either\x20be\x20null\x20or\x20a\x20function');_0x24dd19['prototype']=Object['create'](_0x5046f0&&_0x5046f0[_0x24f498('0x3ec')],{'constructor':{'value':_0x24dd19,'writable':!0x0,'configurable':!0x0}}),_0x5046f0&&_0x1bbd94(_0x24dd19,_0x5046f0);}(_0x3f1c31,_0x2eadac);var _0x2a0800,_0x15a500,_0x57e8d3,_0x5bd3bc,_0x5b8a2b=(_0x2a0800=_0x3f1c31,function(){var _0x5c8eaf=_0x3e44,_0xcb92f3,_0x2080d9=_0x27da5f(_0x2a0800);if(_0x37290d()){var _0x4af33d=_0x27da5f(this)[_0x5c8eaf('0xbe8')];_0xcb92f3=Reflect['construct'](_0x2080d9,arguments,_0x4af33d);}else _0xcb92f3=_0x2080d9[_0x5c8eaf('0x7da')](this,arguments);return _0x5910f9(this,_0xcb92f3);});function _0x3f1c31(_0x2243d5,_0x58f567,_0x487b6e,_0x5e1f3f){var _0x158e11=_0x3e44,_0x4736a9;return function(_0x1427a3,_0x5baad0){if(!(_0x1427a3 instanceof _0x5baad0))throw new TypeError('Cannot\x20call\x20a\x20class\x20as\x20a\x20function');}(this,_0x3f1c31),(_0x4736a9=_0x5b8a2b[_0x158e11('0x928')](this,_0x2243d5,_0x58f567,_0x487b6e,_0x5e1f3f))[_0x158e11('0x1be')]=null,_0x4736a9[_0x158e11('0xabc')]=null,_0x4736a9[_0x158e11('0xb9')]=0x0,_0x4736a9[_0x158e11('0xaa8')]=0x6,_0x4736a9[_0x158e11('0x80d')]=0x1,_0x4736a9[_0x158e11('0x4b7')]=!0x0,_0x4736a9[_0x158e11('0x94d')]='',_0x4736a9[_0x158e11('0xae3')]=null,_0x4736a9;}return _0x15a500=_0x3f1c31,(_0x57e8d3=[{'key':_0x492b8c('0xba2'),'value':function(_0x2aea11){var _0x36ce05=_0x492b8c,_0x361712=this[_0x36ce05('0xa12')](this[_0x36ce05('0x5ee')]());for(var _0x5899f0 in _0x2aea11)_0x361712=_0x361712[_0x36ce05('0x95e')](new RegExp('#_'[_0x36ce05('0x49e')](_0x5899f0,'_#'),'g'),_0x2aea11[_0x5899f0]);return _0x361712;}},{'key':_0x492b8c('0xa1c'),'value':function(_0x3a612c){var _0x56b361=_0x492b8c;this[_0x56b361('0xaa8')]=_0x3a612c;}},{'key':'addDomEvents','value':function(_0xce4e95){}},{'key':_0x492b8c('0x5ee'),'value':function(){return'';}},{'key':_0x492b8c('0xaf9'),'value':function(_0x19a048){var _0xe2a3b4=_0x492b8c,_0x283c01=this[_0xe2a3b4('0x46e')](_0x19a048['id']),_0x5714e9=this['getObjectHTML'](_0x19a048),_0x3f32fa=$(_0x5714e9);void 0x0!==_0x283c01&&null!=_0x283c01?_0x283c01['replace'](_0x3f32fa):this['container']['append'](_0x3f32fa),this[_0xe2a3b4('0xaa2')](_0x3f32fa);}},{'key':_0x492b8c('0xd8d'),'value':function(_0x26f93c){var _0x5c43a8=_0x492b8c;this[_0x5c43a8('0x1be')]=_0x26f93c;}},{'key':'setLoadMoreButton','value':function(_0x521025){var _0x295e29=_0x492b8c,_0xaed904=this;this['loadMoreButton']=_0x521025,this['loadMoreButton']['off']()['on'](_0x295e29('0x67b'),function(){var _0x15fec7=_0x295e29;_0xaed904[_0x15fec7('0xabc')][_0x15fec7('0x41a')](_0x15fec7('0xc74'),_0x15fec7('0xc74')),_0xaed904[_0x15fec7('0x1a6')]([]);});}},{'key':_0x492b8c('0xd0e'),'value':function(_0x7469d8){var _0x573e24=_0x492b8c;$('#'[_0x573e24('0x49e')](this['getTableName'](),_0x573e24('0x164')))[_0x573e24('0x826')](_0x7469d8),$('#'[_0x573e24('0x49e')](this['getTableName'](),_0x573e24('0x164')))[_0x573e24('0x388')]();}},{'key':_0x492b8c('0x7f5'),'value':function(){var _0x305ff6=_0x492b8c;$('#'[_0x305ff6('0x49e')](this[_0x305ff6('0x6d8')](),'_error'))[_0x305ff6('0x79b')]();}},{'key':_0x492b8c('0xbd'),'value':function(_0x3df532){var _0x286c8f=_0x492b8c,_0x4dda09=this;this[_0x286c8f('0xae3')]=_0x3df532,this[_0x286c8f('0xae3')]['off'](),this[_0x286c8f('0xae3')][_0x286c8f('0x3dd')](function(_0x197551){var _0x5126c3=_0x286c8f,_0x3b0ce3=$(this)['val']();0xd===_0x197551['which']?(_0x197551[_0x5126c3('0x731')](),_0x4dda09[_0x5126c3('0xd57')]([])):0x8!==_0x197551[_0x5126c3('0x4d5')]&&0x2e!==_0x197551['which']||0x1!==_0x3b0ce3[_0x5126c3('0x1d1')]||''===_0x4dda09[_0x5126c3('0x94d')]||_0x4dda09['search']([]);});}},{'key':_0x492b8c('0x46e'),'value':function(_0x4fa973){var _0x34bc92=_0x492b8c,_0xd52ed=this[_0x34bc92('0x1be')]['find'](_0x34bc92('0x8a3')[_0x34bc92('0x49e')](_0x4fa973));return _0xd52ed[_0x34bc92('0x1d1')]?_0xd52ed:null;}},{'key':'loadMore','value':function(_0xf1e88){var _0x4ad1e5=_0x492b8c;this['hasMoreData']&&(this[_0x4ad1e5('0x80d')]++,this[_0x4ad1e5('0x715')](_0xf1e88,!0x0));}},{'key':_0x492b8c('0x715'),'value':function(_0x53d81d,_0x24e07b){var _0x4b7cad=_0x492b8c,_0x37eab6=this;this[_0x4b7cad('0x7f5')](),_0x24e07b||(this[_0x4b7cad('0x80d')]=0x1,null!=this[_0x4b7cad('0x1be')]&&this['container'][_0x4b7cad('0x826')](''),this[_0x4b7cad('0x4b7')]=!0x0,this['tableData']=[]),this[_0x4b7cad('0xb9')]=(this['currentPage']-0x1)*this[_0x4b7cad('0xaa8')],this[_0x4b7cad('0x1be')]=$('#'['concat'](this[_0x4b7cad('0x6d8')]()))[_0x4b7cad('0xdb8')](_0x4b7cad('0x62c')),_0x37eab6[_0x4b7cad('0x47f')]();var _0x30887f=''[_0x4b7cad('0x49e')](this[_0x4b7cad('0x139')](_0x37eab6['getDataMapping']()),'&iDisplayStart=')[_0x4b7cad('0x49e')](this[_0x4b7cad('0xb9')],_0x4b7cad('0x768'))[_0x4b7cad('0x49e')](this[_0x4b7cad('0xaa8')],_0x4b7cad('0x3f7'));''!==this[_0x4b7cad('0x94d')]&&void 0x0!==this['searchTerm']&&null!=this[_0x4b7cad('0x94d')]&&(_0x30887f+='&sSearch='[_0x4b7cad('0x49e')](this['searchTerm'])),$[_0x4b7cad('0xb2f')](_0x30887f,function(_0xa240c){var _0x2a3a6b=_0x4b7cad;_0x37eab6[_0x2a3a6b('0x949')](_0x53d81d,_0xa240c);},_0x4b7cad('0xb04'))[_0x4b7cad('0x3d')](function(){var _0x1f0900=_0x4b7cad;_0x37eab6[_0x1f0900('0x2a2')]();}),_0x37eab6[_0x4b7cad('0x62d')](),this[_0x4b7cad('0x48c')](_0x4b7cad('0x715'),this['tab'],this[_0x4b7cad('0x5aa')]);}},{'key':'search','value':function(_0x2c88b1){var _0x188dea=_0x492b8c;this[_0x188dea('0x94d')]=$('#'[_0x188dea('0x49e')](this[_0x188dea('0x6d8')](),'_search'))['val'](),this[_0x188dea('0x715')](_0x2c88b1);}},{'key':_0x492b8c('0x949'),'value':function(_0x4701b7,_0x3a4aad){var _0x14fbd6=_0x492b8c,_0x3e2855=[];if(0x0!==_0x3a4aad[_0x14fbd6('0x1d1')]||''!==this[_0x14fbd6('0x1be')]['html']()){try{null==this[_0x14fbd6('0xc6')]()?($('#'['concat'](this[_0x14fbd6('0x6d8')](),_0x14fbd6('0xdb0')))[_0x14fbd6('0x79b')](),$('#'[_0x14fbd6('0x49e')](this['getTableName'](),'_resetFilters'))[_0x14fbd6('0x79b')]()):($('#'['concat'](this[_0x14fbd6('0x6d8')](),_0x14fbd6('0xdb0')))['show'](),$('#'['concat'](this[_0x14fbd6('0x6d8')](),_0x14fbd6('0x51b')))[_0x14fbd6('0x388')](),''!==this[_0x14fbd6('0x274')]&&null!=this[_0x14fbd6('0x274')]?$('#'[_0x14fbd6('0x49e')](this['getTableName'](),_0x14fbd6('0x51b')))[_0x14fbd6('0x826')](''[_0x14fbd6('0x49e')](this[_0x14fbd6('0x274')],_0x14fbd6('0x5ce'))):($('#'['concat'](this['getTableName'](),'_resetFilters'))[_0x14fbd6('0x826')]('Reset\x20Filters'),$('#'[_0x14fbd6('0x49e')](this[_0x14fbd6('0x6d8')](),_0x14fbd6('0x51b')))[_0x14fbd6('0x79b')]()));}catch(_0xef330c){}$('#'[_0x14fbd6('0x49e')](this[_0x14fbd6('0x6d8')]()))['find'](_0x14fbd6('0x54e'))[_0x14fbd6('0x388')](),_0x3a4aad[_0x14fbd6('0x1d1')]>this[_0x14fbd6('0xaa8')]?(this[_0x14fbd6('0x4b7')]=!0x0,_0x3a4aad['pop'](),null!==this['loadMoreButton']&&(this[_0x14fbd6('0xabc')]['removeAttr'](_0x14fbd6('0xc74')),this[_0x14fbd6('0xabc')][_0x14fbd6('0x388')]())):(this[_0x14fbd6('0x4b7')]=!0x1,null!==this['loadMoreButton']&&this['loadMoreButton'][_0x14fbd6('0x79b')]()),this['scrollToElementBottom'](this['container']);for(var _0x1391d5=0x0;_0x1391d5<_0x3a4aad['length'];_0x1391d5++)_0x3e2855[_0x14fbd6('0x8cd')](this['preProcessTableData'](_0x3a4aad[_0x1391d5]));if(this[_0x14fbd6('0x116')]=_0x3a4aad,void 0x0!==_0x4701b7[_0x14fbd6('0x3ad')]&&null!=_0x4701b7[_0x14fbd6('0x3ad')]&&(void 0x0!==_0x4701b7['callBackData']&&null!=_0x4701b7[_0x14fbd6('0x400')]||(_0x4701b7[_0x14fbd6('0x400')]=[]),_0x4701b7[_0x14fbd6('0x400')][_0x14fbd6('0x8cd')](_0x3a4aad),_0x4701b7['callBackData'][_0x14fbd6('0x8cd')](_0x3e2855),this[_0x14fbd6('0x7f9')](_0x4701b7[_0x14fbd6('0x3ad')],_0x4701b7[_0x14fbd6('0x400')])),this[_0x14fbd6('0x1ea')]=_0x3e2855,void 0x0===_0x4701b7['noRender']||null==_0x4701b7[_0x14fbd6('0xa9c')]||!0x0!==_0x4701b7[_0x14fbd6('0xa9c')])for(var _0x1fbe3b=0x0;_0x1fbe3b<_0x3e2855[_0x14fbd6('0x1d1')];_0x1fbe3b++)this['renderObject'](_0x3e2855[_0x1fbe3b]);}else this[_0x14fbd6('0xd0e')](_0x14fbd6('0x32a'));}}])&&_0x6510f6(_0x15a500[_0x492b8c('0x3ec')],_0x57e8d3),_0x5bd3bc&&_0x6510f6(_0x15a500,_0x5bd3bc),_0x3f1c31;}(((_0x1f4026=_0x2d39bb(_0x3cfa85('0x77e')))&&_0x1f4026[_0x3cfa85('0x866')]?_0x1f4026:{'default':_0x1f4026})[_0x3cfa85('0x53')]);_0x45e988[_0x3cfa85('0x53')]=_0x559248;},{'./AdapterBase':0x27}],0x32:[function(_0x558029,_0x52c88e,_0x4dec30){var _0x1f907e=_0x3e44;'use strict';Object[_0x1f907e('0x2cd')](_0x4dec30,'__esModule',{'value':!0x0}),_0x4dec30['default']=void 0x0;var _0x289258=_0x4aaa56(_0x558029('react')),_0xb3e311=_0x4aaa56(_0x558029(_0x1f907e('0x231'))),_0x1c292f=_0x558029(_0x1f907e('0x9f8')),_0x3c0614=_0x558029(_0x1f907e('0x8c3')),_0x5e8976=_0x4aaa56(_0x558029(_0x1f907e('0x77e'))),_0x52fd89=_0x4aaa56(_0x558029(_0x1f907e('0x46c'))),_0x3b9228=_0x4aaa56(_0x558029('../components/IceStepFromModal')),_0x48f406=_0x4aaa56(_0x558029(_0x1f907e('0x463'))),_0x27796e=_0x4aaa56(_0x558029(_0x1f907e('0xcb4')));function _0x4aaa56(_0x5dcb62){return _0x5dcb62&&_0x5dcb62['__esModule']?_0x5dcb62:{'default':_0x5dcb62};}function _0x1b583f(_0x177203){var _0x53d245=_0x1f907e;return(_0x1b583f='function'==typeof Symbol&&'symbol'==typeof Symbol[_0x53d245('0x303')]?function(_0x37a37){return typeof _0x37a37;}:function(_0x2ff362){var _0x221b38=_0x53d245;return _0x2ff362&&'function'==typeof Symbol&&_0x2ff362[_0x221b38('0xbe8')]===Symbol&&_0x2ff362!==Symbol[_0x221b38('0x3ec')]?_0x221b38('0xd77'):typeof _0x2ff362;})(_0x177203);}function _0x5753db(_0x36086c,_0x4481cf){return function(_0x392602){var _0x5d6fdc=_0x3e44;if(Array[_0x5d6fdc('0x9f2')](_0x392602))return _0x392602;}(_0x36086c)||function(_0x40d48b,_0x40cc7b){var _0x32689b=_0x3e44;if(_0x32689b('0x396')==typeof Symbol||!(Symbol['iterator']in Object(_0x40d48b)))return;var _0x4544ca=[],_0x5e5833=!0x0,_0x3c880a=!0x1,_0x43b0b1=void 0x0;try{for(var _0x326c57,_0x4f7b70=_0x40d48b[Symbol[_0x32689b('0x303')]]();!(_0x5e5833=(_0x326c57=_0x4f7b70['next']())['done'])&&(_0x4544ca[_0x32689b('0x8cd')](_0x326c57[_0x32689b('0x9b6')]),!_0x40cc7b||_0x4544ca[_0x32689b('0x1d1')]!==_0x40cc7b);_0x5e5833=!0x0);}catch(_0x324f6f){_0x3c880a=!0x0,_0x43b0b1=_0x324f6f;}finally{try{_0x5e5833||null==_0x4f7b70['return']||_0x4f7b70[_0x32689b('0x107')]();}finally{if(_0x3c880a)throw _0x43b0b1;}}return _0x4544ca;}(_0x36086c,_0x4481cf)||function(_0x1208a6,_0x47d464){var _0x52cf56=_0x3e44;if(!_0x1208a6)return;if(_0x52cf56('0x4ba')==typeof _0x1208a6)return _0xa12ed5(_0x1208a6,_0x47d464);var _0x3c8919=Object[_0x52cf56('0x3ec')][_0x52cf56('0x8dc')][_0x52cf56('0x928')](_0x1208a6)[_0x52cf56('0x63a')](0x8,-0x1);_0x52cf56('0x40c')===_0x3c8919&&_0x1208a6['constructor']&&(_0x3c8919=_0x1208a6['constructor']['name']);if(_0x52cf56('0x410')===_0x3c8919||_0x52cf56('0x2d')===_0x3c8919)return Array[_0x52cf56('0x868')](_0x3c8919);if(_0x52cf56('0x86e')===_0x3c8919||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/[_0x52cf56('0xb03')](_0x3c8919))return _0xa12ed5(_0x1208a6,_0x47d464);}(_0x36086c,_0x4481cf)||function(){var _0x147bbd=_0x3e44;throw new TypeError(_0x147bbd('0x581'));}();}function _0xa12ed5(_0x459f74,_0x1523dd){var _0x547408=_0x1f907e;(null==_0x1523dd||_0x1523dd>_0x459f74['length'])&&(_0x1523dd=_0x459f74[_0x547408('0x1d1')]);for(var _0x2244b9=0x0,_0x3f5077=new Array(_0x1523dd);_0x2244b9<_0x1523dd;_0x2244b9++)_0x3f5077[_0x2244b9]=_0x459f74[_0x2244b9];return _0x3f5077;}function _0x77b410(_0x1f2dcc,_0x199fa1){var _0x2615ab=_0x1f907e;for(var _0xff24be=0x0;_0xff24be<_0x199fa1[_0x2615ab('0x1d1')];_0xff24be++){var _0x4acfee=_0x199fa1[_0xff24be];_0x4acfee[_0x2615ab('0x836')]=_0x4acfee[_0x2615ab('0x836')]||!0x1,_0x4acfee['configurable']=!0x0,_0x2615ab('0x9b6')in _0x4acfee&&(_0x4acfee[_0x2615ab('0xc28')]=!0x0),Object[_0x2615ab('0x2cd')](_0x1f2dcc,_0x4acfee[_0x2615ab('0xcb6')],_0x4acfee);}}function _0x5cd36c(_0xd7725d,_0x1fb7bb,_0x2be5af){return _0x1fb7bb&&_0x77b410(_0xd7725d['prototype'],_0x1fb7bb),_0x2be5af&&_0x77b410(_0xd7725d,_0x2be5af),_0xd7725d;}function _0x31624f(_0x5b28ec,_0x398c40){var _0x23a909=_0x1f907e;return!_0x398c40||_0x23a909('0x669')!==_0x1b583f(_0x398c40)&&_0x23a909('0x67')!=typeof _0x398c40?_0x1ee072(_0x5b28ec):_0x398c40;}function _0x1ee072(_0x1d6887){var _0x43259d=_0x1f907e;if(void 0x0===_0x1d6887)throw new ReferenceError(_0x43259d('0xba4'));return _0x1d6887;}function _0xf83ef2(){var _0x16e9ac=_0x1f907e;if('undefined'==typeof Reflect||!Reflect[_0x16e9ac('0xa71')])return!0x1;if(Reflect['construct'][_0x16e9ac('0x886')])return!0x1;if('function'==typeof Proxy)return!0x0;try{return Date[_0x16e9ac('0x3ec')][_0x16e9ac('0x8dc')][_0x16e9ac('0x928')](Reflect['construct'](Date,[],function(){})),!0x0;}catch(_0x4582e6){return!0x1;}}function _0x5a8d25(_0x44653b){var _0x531744=_0x1f907e;return(_0x5a8d25=Object['setPrototypeOf']?Object[_0x531744('0x418')]:function(_0x4d774a){return _0x4d774a['__proto__']||Object['getPrototypeOf'](_0x4d774a);})(_0x44653b);}function _0x9f2bb2(_0x4e5986,_0x4cc592){var _0x2f4171=_0x1f907e;return(_0x9f2bb2=Object[_0x2f4171('0x16')]||function(_0x1ac49c,_0x5b9cbc){return _0x1ac49c['__proto__']=_0x5b9cbc,_0x1ac49c;})(_0x4e5986,_0x4cc592);}var _0x318450=function(_0x3a31b7){var _0x18b127=_0x1f907e;!function(_0x57b2d9,_0x460e17){var _0x4e3ce6=_0x3e44;if(_0x4e3ce6('0x67')!=typeof _0x460e17&&null!==_0x460e17)throw new TypeError(_0x4e3ce6('0xc9'));_0x57b2d9[_0x4e3ce6('0x3ec')]=Object[_0x4e3ce6('0xd9d')](_0x460e17&&_0x460e17['prototype'],{'constructor':{'value':_0x57b2d9,'writable':!0x0,'configurable':!0x0}}),_0x460e17&&_0x9f2bb2(_0x57b2d9,_0x460e17);}(_0x3e3ba7,_0x3a31b7);var _0x1f5be3,_0x5c331e=(_0x1f5be3=_0x3e3ba7,function(){var _0xb43fbe=_0x3e44,_0x45ff90,_0x579970=_0x5a8d25(_0x1f5be3);if(_0xf83ef2()){var _0x4fd392=_0x5a8d25(this)[_0xb43fbe('0xbe8')];_0x45ff90=Reflect['construct'](_0x579970,arguments,_0x4fd392);}else _0x45ff90=_0x579970[_0xb43fbe('0x7da')](this,arguments);return _0x31624f(this,_0x45ff90);});function _0x3e3ba7(_0x45e3d8,_0x186b3b,_0x325a5b,_0x4a7475){var _0x796b1d=_0x3e44,_0x445c11;return function(_0x42011d,_0x52ba29){var _0x3211d7=_0x3e44;if(!(_0x42011d instanceof _0x52ba29))throw new TypeError(_0x3211d7('0xc2c'));}(this,_0x3e3ba7),(_0x445c11=_0x5c331e[_0x796b1d('0x928')](this,_0x45e3d8,_0x186b3b,_0x325a5b,_0x4a7475))[_0x796b1d('0xd62')]=_0x445c11[_0x796b1d('0xadd')],_0x445c11[_0x796b1d('0x41b')]=null,_0x445c11[_0x796b1d('0x3c9')]=!0x1,_0x445c11[_0x796b1d('0x15f')]=!0x1,_0x445c11[_0x796b1d('0x70a')]=[],_0x445c11[_0x796b1d('0x126')]=!0x1,_0x445c11[_0x796b1d('0x3e4')]=!0x0,_0x445c11[_0x796b1d('0x92c')]=new _0x27796e[(_0x796b1d('0x53'))](_0x1ee072(_0x445c11)),_0x445c11;}return _0x5cd36c(_0x3e3ba7,null,[{'key':_0x18b127('0xadd'),'get':function(){return'Normal';}},{'key':_0x18b127('0x8e1'),'get':function(){return'Steps';}}]),_0x5cd36c(_0x3e3ba7,[{'key':_0x18b127('0xc88'),'value':function(){this['localStorageEnabled']=!0x0;}},{'key':_0x18b127('0x23a'),'value':function(_0x8464f){var _0x1384b2=_0x18b127;this[_0x1384b2('0xd62')]=_0x8464f;}},{'key':_0x18b127('0x2b6'),'value':function(_0x33b06f){var _0x5e0815=_0x18b127;this[_0x5e0815('0x41b')]=_0x33b06f;}},{'key':_0x18b127('0x696'),'value':function(_0x38d695){this['access']=_0x38d695;}},{'key':'hasAccess','value':function(_0x29ff1c){var _0x10727d=_0x18b127;return this['access'][_0x10727d('0x857')](_0x29ff1c)>0x0;}},{'key':'hasCustomButtons','value':function(){return!0x1;}},{'key':_0x18b127('0x2c7'),'value':function(){var _0x5beeb7=_0x18b127,_0x1fd732=this;if(this[_0x5beeb7('0x15f')])return!0x1;var _0x515b44=document[_0x5beeb7('0x803')](''['concat'](this[_0x5beeb7('0x894')],'Table'));if(_0x515b44){this['tableContainer']=_0x289258['default'][_0x5beeb7('0x2d9')]();var _0x5dfaca=this[_0x5beeb7('0xb37')]();(this['hasAccess'](_0x5beeb7('0xb0b'))||this['hasAccess'](_0x5beeb7('0xc9d'))||this[_0x5beeb7('0xd9a')](_0x5beeb7('0x81a'))||this['hasCustomButtons']())&&_0x5dfaca[_0x5beeb7('0x8cd')]({'title':_0x5beeb7('0x7b3'),'key':_0x5beeb7('0x32e'),'render':this[_0x5beeb7('0xcad')](this)}),_0x5dfaca=_0x5dfaca[_0x5beeb7('0x4ad')](function(_0x33f62a){var _0x27829e=_0x5beeb7;return _0x33f62a[_0x27829e('0xa3c')]=_0x1fd732['gt'](_0x33f62a[_0x27829e('0xa3c')]),_0x33f62a;}),_0xb3e311[_0x5beeb7('0x53')]['render'](_0x289258[_0x5beeb7('0x53')]['createElement'](_0x48f406['default'],{'ref':this[_0x5beeb7('0x996')],'reader':this[_0x5beeb7('0x41b')],'columns':_0x5dfaca,'adapter':this},this[_0x5beeb7('0x547')]()),_0x515b44);}return this[_0x5beeb7('0x15f')]=!0x0,!0x0;}},{'key':_0x18b127('0x28f'),'value':function(){var _0x351d87=_0x18b127,_0x4a01fe=this;if(this['formInitialized'])return!0x1;this[_0x351d87('0x74c')]=_0x289258['default'][_0x351d87('0x2d9')](),this[_0x351d87('0xd62')]===this[_0x351d87('0xadd')]?_0xb3e311[_0x351d87('0x53')][_0x351d87('0x265')](_0x289258['default'][_0x351d87('0x914')](_0x52fd89['default'],{'ref':this['formContainer'],'fields':this['getFormFields'](),'adapter':this,'formReference':this[_0x351d87('0x2a0')]}),document[_0x351d87('0x803')](''[_0x351d87('0x49e')](this[_0x351d87('0x894')],_0x351d87('0xad2')))):_0xb3e311['default'][_0x351d87('0x265')](_0x289258[_0x351d87('0x53')]['createElement'](_0x3b9228['default'],{'ref':this[_0x351d87('0x74c')],'fields':this[_0x351d87('0x741')](),'adapter':this,'formReference':this[_0x351d87('0x2a0')]}),document[_0x351d87('0x803')](''[_0x351d87('0x49e')](this[_0x351d87('0x894')],'Form')));var _0xc1b135=document['getElementById'](''[_0x351d87('0x49e')](this[_0x351d87('0x894')],_0x351d87('0xa31')));return _0xc1b135&&this[_0x351d87('0xc6')]()&&(this[_0x351d87('0x63b')]=_0x289258[_0x351d87('0x53')]['createRef'](),_0xb3e311[_0x351d87('0x53')]['render'](_0x289258[_0x351d87('0x53')]['createElement'](_0x52fd89['default'],{'ref':this[_0x351d87('0x63b')],'fields':this['getFilters'](),'adapter':this,'saveCallback':function(_0xe00853,_0x1e75e6,_0x1444b8){var _0x4dce34=_0x351d87;_0x4a01fe[_0x4dce34('0xcf')](_0xe00853),_0x4a01fe[_0x4dce34('0x5b3')]=!0x0,_0x4a01fe['get']([]),_0x4a01fe[_0x4dce34('0x996')][_0x4dce34('0x684')]['setFilterData'](_0xe00853),_0x1444b8();}}),_0xc1b135)),this[_0x351d87('0x3c9')]=!0x0,!0x0;}},{'key':_0x18b127('0x547'),'value':function(){return!0x1;}},{'key':_0x18b127('0x652'),'value':function(){var _0x5633e5=_0x18b127;this[_0x5633e5('0x58d')](this[_0x5633e5('0xb61')]);}},{'key':_0x18b127('0xcad'),'value':function(_0x2915eb){return function(_0x489bf2,_0x1d44c1){var _0x109472=_0x3e44;return _0x289258[_0x109472('0x53')][_0x109472('0x914')](_0x1c292f[_0x109472('0xc89')],{'size':'middle'},_0x2915eb[_0x109472('0xd9a')](_0x109472('0xb0b'))&&_0x2915eb[_0x109472('0x385')]&&_0x289258[_0x109472('0x53')][_0x109472('0x914')](_0x1c292f[_0x109472('0x939')],{'color':_0x109472('0x178'),'onClick':function(){return modJs['edit'](_0x1d44c1['id']);},'style':{'cursor':_0x109472('0x38')}},_0x289258[_0x109472('0x53')]['createElement'](_0x3c0614[_0x109472('0x1ec')],null),'\x20'[_0x109472('0x49e')](_0x2915eb['gt']('Edit'))),_0x2915eb['hasAccess'](_0x109472('0x81a'))&&_0x289258['default']['createElement'](_0x1c292f['Tag'],{'color':_0x109472('0x4c6'),'onClick':function(){var _0x1c4bab=_0x109472;return modJs[_0x1c4bab('0x58d')](_0x1d44c1['id']);},'style':{'cursor':_0x109472('0x38')}},_0x289258[_0x109472('0x53')]['createElement'](_0x3c0614['MonitorOutlined'],null),'\x20'[_0x109472('0x49e')](_0x2915eb['gt'](_0x109472('0x790')))),_0x2915eb['hasAccess'](_0x109472('0xc9d'))&&_0x2915eb[_0x109472('0x224')]&&_0x289258['default'][_0x109472('0x914')](_0x1c292f['Tag'],{'color':_0x109472('0x135'),'onClick':function(){var _0x202663=_0x109472;return modJs[_0x202663('0xb48')](_0x1d44c1['id']);},'style':{'cursor':'pointer'}},_0x289258[_0x109472('0x53')][_0x109472('0x914')](_0x3c0614[_0x109472('0xa14')],null),'\x20'[_0x109472('0x49e')](_0x2915eb['gt'](_0x109472('0x974')))),_0x2915eb[_0x109472('0xd9a')]('save')&&_0x289258['default'][_0x109472('0x914')](_0x1c292f['Tag'],{'color':_0x109472('0x3fe'),'onClick':function(){var _0x26153e=_0x109472;return modJs[_0x26153e('0xc71')](_0x1d44c1['id']);},'style':{'cursor':_0x109472('0x38')}},_0x289258[_0x109472('0x53')]['createElement'](_0x3c0614['CopyOutlined'],null),'\x20'['concat'](_0x2915eb['gt'](_0x109472('0x964')))));};}},{'key':_0x18b127('0x3d0'),'value':function(_0x59fb15){var _0x11c31b=_0x18b127;this['tableContainer'][_0x11c31b('0x684')][_0x11c31b('0x51f')](_0x59fb15);}},{'key':_0x18b127('0x58d'),'value':function(_0x3fb360){var _0x40d830=_0x18b127,_0x3a5670=this;this['setTableLoading'](!0x0),this[_0x40d830('0xb61')]=_0x3fb360,this[_0x40d830('0x3db')](_0x3fb360,{'noRender':!0x0,'callBack':function(_0x5e15cf){var _0x1c01e8=_0x40d830;_0x3a5670[_0x1c01e8('0xa49')](_0x5e15cf),_0x3a5670['setTableLoading'](!0x1);}});}},{'key':'showElement','value':function(_0x313e90){var _0x36ed91=_0x18b127;this[_0x36ed91('0x5a4')](_0x313e90,!0x0);}},{'key':_0x18b127('0xa01'),'value':function(_0x3ea8d2){var _0x1e6a44=_0x18b127;this[_0x1e6a44('0x3d0')](!0x0),this['currentId']=_0x3ea8d2,this[_0x1e6a44('0x3db')](_0x3ea8d2,[]);}},{'key':_0x18b127('0x5a4'),'value':function(){var _0x675563=_0x18b127,_0x5b6c09=arguments[_0x675563('0x1d1')]>0x0&&void 0x0!==arguments[0x0]?arguments[0x0]:null,_0x2c42a9=arguments['length']>0x1&&void 0x0!==arguments[0x1]&&arguments[0x1];null==_0x5b6c09&&(this[_0x675563('0xb61')]=null,this[_0x675563('0xc18')]=null),this[_0x675563('0x3d0')](!0x1),this[_0x675563('0x28f')](),this[_0x675563('0x74c')]['current']['setViewOnly'](_0x2c42a9),this[_0x675563('0x74c')]['current'][_0x675563('0x388')](_0x5b6c09);}},{'key':_0x18b127('0x4c8'),'value':function(){var _0x678e76=_0x18b127;this[_0x678e76('0x28f')](),this[_0x678e76('0x63b')]['current'][_0x678e76('0x388')](this[_0x678e76('0x5c4')]);}},{'key':_0x18b127('0x3e1'),'value':function(){var _0x38052b=_0x18b127;this[_0x38052b('0x5c4')]=this['origFilter'],this['filtersAlreadySet']=!0x1,this[_0x38052b('0x274')]='',this[_0x38052b('0x715')]([]),this[_0x38052b('0x996')]['current'][_0x38052b('0xd37')](this['filter']);}},{'key':_0x18b127('0x715'),'value':function(){var _0x5d17d6=_0x18b127,_0x486ba5=this;this[_0x5d17d6('0x996')]&&this[_0x5d17d6('0x996')][_0x5d17d6('0x684')]&&this[_0x5d17d6('0x996')][_0x5d17d6('0x684')][_0x5d17d6('0xd0c')](null),this[_0x5d17d6('0x2c7')](),this['masterDataReader'][_0x5d17d6('0x1e6')]()[_0x5d17d6('0x577')](function(){var _0xb93164=_0x5d17d6;_0x486ba5['tableContainer'][_0xb93164('0x684')][_0xb93164('0x6b4')]();}),this[_0x5d17d6('0x48c')](_0x5d17d6('0x715'),this[_0x5d17d6('0x894')],this[_0x5d17d6('0x5aa')]);}},{'key':_0x18b127('0x47f'),'value':function(){}},{'key':_0x18b127('0x4ac'),'value':function(_0x41257a,_0x329e94){var _0x589db0=_0x18b127;return _0x41257a[_0x589db0('0x4ad')](function(_0xeb7a81){var _0x406162=_0x589db0;return _0xeb7a81[_0x406162('0xb79')]=_0xeb7a81[_0x406162('0xb79')]['reduce'](function(_0x29a048,_0x831c33){var _0x1af559=_0x406162,_0x127e8e=_0x329e94[_0x1af559('0xdb8')](function(_0x26d7b2){return _0x5753db(_0x26d7b2,0x1)[0x0]===_0x831c33;});return _0x127e8e&&_0x29a048['push'](_0x127e8e),_0x29a048;},[]),_0xeb7a81;});}},{'key':_0x18b127('0x564'),'value':function(){return{'width':0x400,'twoColumnLayout':!0x1};}}]),_0x3e3ba7;}(_0x5e8976['default']);_0x4dec30[_0x1f907e('0x53')]=_0x318450;},{'../components/IceFormModal':0x37,'../components/IceStepFromModal':0x3c,'../components/IceTable':0x3d,'./AdapterBase':0x27,'./MasterDataReader':0x2f,'@ant-design/icons':'@ant-design/icons','antd':_0x322f0f('0x9f8'),'react':_0x322f0f('0x603'),'react-dom':_0x322f0f('0x231')}],0x33:[function(_0x37d0d4,_0x959b2e,_0x22280a){var _0x382ea7=_0x322f0f;'use strict';var _0x3834ab;function _0x28d2b8(_0x7c47b6){var _0x3c03bc=_0x3e44;return(_0x28d2b8=_0x3c03bc('0x67')==typeof Symbol&&_0x3c03bc('0xd77')==typeof Symbol[_0x3c03bc('0x303')]?function(_0x444695){return typeof _0x444695;}:function(_0x455a90){var _0x547da5=_0x3c03bc;return _0x455a90&&'function'==typeof Symbol&&_0x455a90[_0x547da5('0xbe8')]===Symbol&&_0x455a90!==Symbol[_0x547da5('0x3ec')]?'symbol':typeof _0x455a90;})(_0x7c47b6);}function _0x85bfa4(_0x43e7ce,_0x319a09){var _0xb4cfef=_0x3e44;for(var _0x204afe=0x0;_0x204afe<_0x319a09['length'];_0x204afe++){var _0x35d542=_0x319a09[_0x204afe];_0x35d542[_0xb4cfef('0x836')]=_0x35d542[_0xb4cfef('0x836')]||!0x1,_0x35d542[_0xb4cfef('0x249')]=!0x0,_0xb4cfef('0x9b6')in _0x35d542&&(_0x35d542['writable']=!0x0),Object[_0xb4cfef('0x2cd')](_0x43e7ce,_0x35d542['key'],_0x35d542);}}function _0x31634a(_0x35ab80,_0x5d24cc){var _0x213e69=_0x3e44;return!_0x5d24cc||_0x213e69('0x669')!==_0x28d2b8(_0x5d24cc)&&_0x213e69('0x67')!=typeof _0x5d24cc?function(_0xf1d17e){var _0x59c66c=_0x213e69;if(void 0x0===_0xf1d17e)throw new ReferenceError(_0x59c66c('0xba4'));return _0xf1d17e;}(_0x35ab80):_0x5d24cc;}function _0x4705a9(){var _0xa32512=_0x3e44;if(_0xa32512('0x396')==typeof Reflect||!Reflect['construct'])return!0x1;if(Reflect[_0xa32512('0xa71')][_0xa32512('0x886')])return!0x1;if(_0xa32512('0x67')==typeof Proxy)return!0x0;try{return Date['prototype'][_0xa32512('0x8dc')][_0xa32512('0x928')](Reflect[_0xa32512('0xa71')](Date,[],function(){})),!0x0;}catch(_0x26b11b){return!0x1;}}function _0x55ef03(_0x189315){var _0x3198fa=_0x3e44;return(_0x55ef03=Object[_0x3198fa('0x16')]?Object['getPrototypeOf']:function(_0x5bdb4e){var _0x57f2ea=_0x3198fa;return _0x5bdb4e[_0x57f2ea('0xc15')]||Object[_0x57f2ea('0x418')](_0x5bdb4e);})(_0x189315);}function _0x1d2d4f(_0x17dcfb,_0x27c9f5){var _0x3db435=_0x3e44;return(_0x1d2d4f=Object[_0x3db435('0x16')]||function(_0x5f158f,_0x13870f){return _0x5f158f['__proto__']=_0x13870f,_0x5f158f;})(_0x17dcfb,_0x27c9f5);}Object[_0x382ea7('0x2cd')](_0x22280a,_0x382ea7('0x866'),{'value':!0x0}),_0x22280a['default']=void 0x0;var _0x305ffc=function(_0x413f2b){var _0x5981f2=_0x382ea7;!function(_0x1b526e,_0x46e9c0){var _0x47a92c=_0x3e44;if(_0x47a92c('0x67')!=typeof _0x46e9c0&&null!==_0x46e9c0)throw new TypeError('Super\x20expression\x20must\x20either\x20be\x20null\x20or\x20a\x20function');_0x1b526e[_0x47a92c('0x3ec')]=Object['create'](_0x46e9c0&&_0x46e9c0[_0x47a92c('0x3ec')],{'constructor':{'value':_0x1b526e,'writable':!0x0,'configurable':!0x0}}),_0x46e9c0&&_0x1d2d4f(_0x1b526e,_0x46e9c0);}(_0x59b7b4,_0x413f2b);var _0x19f0cf,_0x3c2e59,_0x293d1d,_0xb38724,_0x1428c3=(_0x19f0cf=_0x59b7b4,function(){var _0x177fa9=_0x3e44,_0x2e49c3,_0x534805=_0x55ef03(_0x19f0cf);if(_0x4705a9()){var _0x5a8ab4=_0x55ef03(this)[_0x177fa9('0xbe8')];_0x2e49c3=Reflect[_0x177fa9('0xa71')](_0x534805,arguments,_0x5a8ab4);}else _0x2e49c3=_0x534805[_0x177fa9('0x7da')](this,arguments);return _0x31634a(this,_0x2e49c3);});function _0x59b7b4(_0x4c39ff,_0x421e37,_0x1cf23f,_0x11e97f){var _0x11f727=_0x3e44,_0x1f99d1;return function(_0x363ae8,_0x30c80d){var _0x362af4=_0x3e44;if(!(_0x363ae8 instanceof _0x30c80d))throw new TypeError(_0x362af4('0xc2c'));}(this,_0x59b7b4),(_0x1f99d1=_0x1428c3[_0x11f727('0x928')](this,_0x4c39ff,_0x421e37,_0x1cf23f,_0x11e97f))[_0x11f727('0x8d5')]={},_0x1f99d1[_0x11f727('0x58e')]='',_0x1f99d1[_0x11f727('0x53d')]='',_0x1f99d1[_0x11f727('0xd86')]='',_0x1f99d1[_0x11f727('0x153')]='',_0x1f99d1[_0x11f727('0x511')]='',_0x1f99d1[_0x11f727('0x18f')]='',_0x1f99d1['csvData']=[],_0x1f99d1[_0x11f727('0xe')]={},_0x1f99d1;}return _0x3c2e59=_0x59b7b4,(_0x293d1d=[{'key':_0x5981f2('0xc8a'),'value':function(_0x44d1fc){var _0x443b1f=_0x5981f2;this[_0x443b1f('0x58e')]=_0x44d1fc;}},{'key':_0x5981f2('0x92'),'value':function(_0xa11239){var _0x5c0eb3=_0x5981f2;this[_0x5c0eb3('0x53d')]=_0xa11239;}},{'key':'setTables','value':function(_0x5981b5,_0x25c1cb,_0x58f32e){var _0x10d0f8=_0x5981f2;this['rowTable']=_0x5981b5,this[_0x10d0f8('0x511')]=_0x25c1cb,this['valueTable']=_0x58f32e;}},{'key':_0x5981f2('0x4a9'),'value':function(_0x3975f3){var _0x2badd3=_0x5981f2;this[_0x2badd3('0xd86')]=_0x3975f3;}},{'key':_0x5981f2('0xc58'),'value':function(){return[];}},{'key':_0x5981f2('0x59d'),'value':function(){return[];}},{'key':'get','value':function(){this['getAllData']();}},{'key':_0x5981f2('0xd00'),'value':function(_0x46fcb6){var _0x32a1c3=_0x5981f2,_0x50aa07={};_0x50aa07[_0x32a1c3('0x153')]=this[_0x32a1c3('0x153')],_0x50aa07[_0x32a1c3('0x511')]=this['columnTable'],_0x50aa07['valueTable']=this[_0x32a1c3('0x18f')],(_0x50aa07=this[_0x32a1c3('0xb0d')]('getAllData',_0x50aa07))['save']=void 0x0===_0x46fcb6||null==_0x46fcb6||!0x1===_0x46fcb6?0x0:0x1;var _0x1fe035=JSON[_0x32a1c3('0x263')](_0x50aa07),_0x11b046=[];_0x11b046[_0x32a1c3('0x400')]=[],_0x11b046[_0x32a1c3('0x947')]='getAllDataSuccessCallBack',_0x11b046[_0x32a1c3('0x350')]=_0x32a1c3('0x100'),this[_0x32a1c3('0x87b')](_0x32a1c3('0xd00'),this[_0x32a1c3('0x58e')],_0x1fe035,_0x11b046);}},{'key':_0x5981f2('0x14c'),'value':function(_0xb22503,_0x1ec2f6,_0x425301){var _0x23d5c2=_0x5981f2,_0x3f0b23=_0x425301[0x1],_0x55519e=_0x425301[0x0],_0x7b0393=_0x425301[0x2];return-0x1===_0x1ec2f6?_0x55519e[_0xb22503][_0x23d5c2('0x9e')]:this[_0x23d5c2('0x9c7')](this[_0x23d5c2('0x53d')],_0x55519e[_0xb22503]['id'],this[_0x23d5c2('0xd86')],_0x3f0b23[_0x1ec2f6]['id'],_0x7b0393);}},{'key':_0x5981f2('0x9c7'),'value':function(_0x5e7778,_0x28dd3c,_0x3535ba,_0x54a639,_0x46ac1a){var _0x401f25=_0x5981f2;for(var _0x34ec7f=0x0;_0x34ec7f<_0x46ac1a['length'];_0x34ec7f++)if(_0x46ac1a[_0x34ec7f][_0x5e7778]===_0x28dd3c&&_0x46ac1a[_0x34ec7f][_0x3535ba]===_0x54a639)return void 0x0!==_0x46ac1a[_0x34ec7f][_0x401f25('0x993')]&&null!=_0x46ac1a[_0x34ec7f][_0x401f25('0x993')]?_0x46ac1a[_0x34ec7f][_0x401f25('0x993')]:'';return'';}},{'key':_0x5981f2('0xb6'),'value':function(_0x3da7e1){var _0x434b68=_0x5981f2;for(var _0x53272f=_0x3da7e1[0x2],_0xdb35f1=_0x3da7e1[0x1],_0x4ca356=_0x3da7e1[0x0],_0x2feeeb=[],_0x167012=0x0;_0x167012<_0x4ca356[_0x434b68('0x1d1')];_0x167012++){for(var _0x51672b=[],_0x4bc55b=-0x1;_0x4bc55b<_0xdb35f1[_0x434b68('0x1d1')];_0x4bc55b++)_0x51672b[_0x4bc55b+0x1]=this['getDataItem'](_0x167012,_0x4bc55b,_0x3da7e1);_0x2feeeb[_0x434b68('0x8cd')](this['preProcessTableData'](_0x51672b));}this[_0x434b68('0x116')]=_0x53272f,this[_0x434b68('0x1ea')]=_0x2feeeb,this[_0x434b68('0xd96')](_0xdb35f1,_0x4ca356),this[_0x434b68('0xadf')](this[_0x434b68('0x6d8')]()),$('#'[_0x434b68('0x49e')](this[_0x434b68('0x6d8')](),_0x434b68('0xad2')))['hide'](),$('#'[_0x434b68('0x49e')](this[_0x434b68('0x6d8')]()))['show'](),this['csvData']=[];for(var _0x2d2dbf=[],_0x3dd0d5=0x0;_0x3dd0d5<_0xdb35f1[_0x434b68('0x1d1')];_0x3dd0d5++)_0x2d2dbf[_0x434b68('0x8cd')](_0xdb35f1[_0x3dd0d5][_0x434b68('0x9e')]);_0x2d2dbf=this[_0x434b68('0xac4')](_0x2d2dbf),this['csvData'][_0x434b68('0x8cd')](_0x2d2dbf);for(var _0x3ce63e=0x0;_0x3ce63e<_0x2feeeb[_0x434b68('0x1d1')];_0x3ce63e++)this[_0x434b68('0x664')]['push'](_0x2feeeb[_0x3ce63e]);}},{'key':'modifyCSVHeader','value':function(_0x20ff9f){return _0x20ff9f;}},{'key':_0x5981f2('0x100'),'value':function(_0x1996c8,_0xb022d9){}},{'key':_0x5981f2('0xd96'),'value':function(_0x2e2af4,_0x14d423){var _0x1a889e=_0x5981f2,_0x5db8ca=[];_0x5db8ca['push']({'sTitle':'','sWidth':'180px;'});var _0x14b446='';this[_0x1a889e('0xe')]={};for(var _0x3b802f=0x0;_0x3b802f<_0x2e2af4[_0x1a889e('0x1d1')];_0x3b802f++)this[_0x1a889e('0xe')][_0x2e2af4[_0x3b802f]['id']]=_0x3b802f,_0x14b446=void 0x0===_0x2e2af4[_0x3b802f][_0x1a889e('0xa90')]||null==_0x2e2af4[_0x3b802f][_0x1a889e('0xa90')]||_0x1a889e('0x6b9')===_0x2e2af4[_0x3b802f][_0x1a889e('0xa90')]?_0x1a889e('0x31a'):'',_0x5db8ca['push']({'sTitle':_0x2e2af4[_0x3b802f][_0x1a889e('0x9e')],'sClass':_0x14b446,'fnCreatedCell':function(_0x206bdd,_0x54bc88,_0x5d48ea,_0x4352c6,_0x10f39c){var _0x4a0356=_0x1a889e;$(_0x206bdd)[_0x4a0356('0xc8f')](_0x4a0356('0x3a4'),_0x2e2af4[_0x10f39c-0x1]['id']),$(_0x206bdd)[_0x4a0356('0xc8f')](_0x4a0356('0xe9'),_0x14d423[_0x4352c6]['id']);}});this[_0x1a889e('0x795')]=_0x5db8ca;}},{'key':_0x5981f2('0x6f7'),'value':function(){return this['headers'];}},{'key':_0x5981f2('0xadf'),'value':function(_0x565433){var _0x5ae401=_0x5981f2,_0x6be117,_0xb5fe56=this[_0x5ae401('0xd97')](),_0x4e01cd=this['getHeaders']();if(this[_0x5ae401('0x6ea')]()&&_0x4e01cd[_0x5ae401('0x8cd')]({'sTitle':'','sClass':_0x5ae401('0x2d5')}),this['showActionButtons']())for(var _0x441bce=0x0;_0x441bce<_0xb5fe56['length'];_0x441bce++)_0xb5fe56[_0x441bce]['push'](this['getActionButtonsHtml'](_0xb5fe56[_0x441bce][0x0],_0xb5fe56[_0x441bce]));_0x6be117=''[_0x5ae401('0x49e')](this['getTableTopButtonHtml'](),_0x5ae401('0x20b'));var _0x5ca181=$('#'[_0x5ae401('0x49e')](_0x565433,'\x20.dataTables_paginate\x20.active\x20a'))[_0x5ae401('0x826')](),_0x7d14d2=0x0;void 0x0!==_0x5ca181&&null!=_0x5ca181&&(_0x7d14d2=0xf*parseInt(_0x5ca181,0xa)-0xf),$('#'[_0x5ae401('0x49e')](_0x565433))[_0x5ae401('0x826')](_0x6be117);var _0x5097ab={'oLanguage':{'sLengthMenu':_0x5ae401('0xc98')},'aaData':_0xb5fe56,'aoColumns':_0x4e01cd,'bSort':!0x1,'iDisplayLength':0xf,'iDisplayStart':_0x7d14d2},_0x520cc1=this[_0x5ae401('0x6b5')]();$[_0x5ae401('0x141')](_0x5097ab,_0x520cc1),$('#'[_0x5ae401('0x49e')](_0x565433,_0x5ae401('0xd76')))['dataTable'](_0x5097ab),$(_0x5ae401('0x5fd'))[_0x5ae401('0xace')](_0x5ae401('0x8ad')),$(_0x5ae401('0x200'))[_0x5ae401('0x79b')](),$(_0x5ae401('0xa6b'))[_0x5ae401('0xace')](_0x5ae401('0x22d')),$(_0x5ae401('0xa6b'))[_0x5ae401('0x41a')](_0x5ae401('0xad7'),'Search'),$(_0x5ae401('0xca5'))[_0x5ae401('0xa03')]()[_0x5ae401('0x5c4')](function(){var _0x18d5c4=_0x5ae401;return 0x3===this[_0x18d5c4('0xa7')];})['remove'](),$('#'[_0x5ae401('0x49e')](_0x565433,'\x20#grid'))['editableTableWidget'](),$('#'['concat'](_0x565433,'\x20#grid\x20.editcell'))['on'](_0x5ae401('0x1d9'),function(_0x5d884f,_0xc4d1c){return modJs['validateCellValue']($(this),_0x5d884f,_0xc4d1c);}),this[_0x5ae401('0x8d6')](_0x565433);}},{'key':_0x5981f2('0x8d6'),'value':function(_0x38a92b){}},{'key':'addCellDataUpdate','value':function(_0x2db06b,_0x31bfee,_0x2ae574){var _0x5e468e=_0x5981f2;this['cellDataUpdates'][''[_0x5e468e('0x49e')](_0x2db06b,'=')[_0x5e468e('0x49e')](_0x31bfee)]=[_0x2db06b,_0x31bfee,_0x2ae574];}},{'key':_0x5981f2('0xb0d'),'value':function(_0x1a0720,_0x37e0a3){return _0x37e0a3;}},{'key':'sendCellDataUpdates','value':function(){var _0x2d8d99=_0x5981f2,_0x3373b8=this[_0x2d8d99('0x8d5')];_0x3373b8[_0x2d8d99('0x153')]=this[_0x2d8d99('0x153')],_0x3373b8[_0x2d8d99('0x511')]=this[_0x2d8d99('0x511')],_0x3373b8[_0x2d8d99('0x18f')]=this['valueTable'],_0x3373b8=this[_0x2d8d99('0xb0d')]('updateData',_0x3373b8);var _0x36262b=JSON[_0x2d8d99('0x263')](_0x3373b8),_0x2cb646=[];_0x2cb646[_0x2d8d99('0x400')]=[],_0x2cb646[_0x2d8d99('0x947')]=_0x2d8d99('0xc10'),_0x2cb646['callBackFail']='updateDataFailCallBack',this['showLoader'](),this['customAction'](_0x2d8d99('0x454'),this[_0x2d8d99('0x58e')],_0x36262b,_0x2cb646);}},{'key':_0x5981f2('0xc10'),'value':function(_0x1bda6a,_0x3bc818){var _0x482308=_0x5981f2;this['hideLoader'](),modJs[_0x482308('0x8d5')]={},modJs[_0x482308('0x715')]();}},{'key':_0x5981f2('0x285'),'value':function(_0x5bc77,_0x5c53bf){var _0x1e553d=_0x5981f2;this[_0x1e553d('0x2a2')]();}},{'key':_0x5981f2('0x8f2'),'value':function(){var _0x46f5e3=_0x5981f2,_0x5c5118=this[_0x46f5e3('0x8d5')];_0x5c5118[_0x46f5e3('0x153')]=this[_0x46f5e3('0x153')],_0x5c5118['columnTable']=this[_0x46f5e3('0x511')],_0x5c5118[_0x46f5e3('0x18f')]=this[_0x46f5e3('0x18f')],_0x5c5118=this[_0x46f5e3('0xb0d')](_0x46f5e3('0x324'),_0x5c5118);var _0xd8236d=JSON[_0x46f5e3('0x263')](_0x5c5118),_0x5614a5=[];_0x5614a5[_0x46f5e3('0x400')]=[],_0x5614a5[_0x46f5e3('0x947')]=_0x46f5e3('0x110'),_0x5614a5['callBackFail']=_0x46f5e3('0x3ac'),this[_0x46f5e3('0x47f')](),this[_0x46f5e3('0x87b')](_0x46f5e3('0x324'),this[_0x46f5e3('0x58e')],_0xd8236d,_0x5614a5);}},{'key':'updateDataAllSuccessCallBack','value':function(_0x421977,_0x3135cd){var _0x5da5b6=_0x5981f2;this[_0x5da5b6('0x2a2')](),modJs[_0x5da5b6('0x8d5')]={},modJs['getAllData'](!0x0);}},{'key':_0x5981f2('0x3ac'),'value':function(_0x56378b,_0xdb6cf){var _0x480a5c=_0x5981f2;this[_0x480a5c('0x2a2')]();}},{'key':_0x5981f2('0x6ea'),'value':function(){return!0x1;}}])&&_0x85bfa4(_0x3c2e59[_0x5981f2('0x3ec')],_0x293d1d),_0xb38724&&_0x85bfa4(_0x3c2e59,_0xb38724),_0x59b7b4;}(((_0x3834ab=_0x37d0d4(_0x382ea7('0x77e')))&&_0x3834ab[_0x382ea7('0x866')]?_0x3834ab:{'default':_0x3834ab})[_0x382ea7('0x53')]);_0x22280a['default']=_0x305ffc;},{'./AdapterBase':0x27}],0x34:[function(_0x49056a,_0x5215f2,_0xfe0759){var _0x4a53c7=_0x322f0f;'use strict';function _0x545bc4(_0x4eaa43){var _0x2943d6=_0x3e44;return(_0x545bc4=_0x2943d6('0x67')==typeof Symbol&&_0x2943d6('0xd77')==typeof Symbol[_0x2943d6('0x303')]?function(_0x2235e3){return typeof _0x2235e3;}:function(_0x2f322e){var _0x8a7870=_0x2943d6;return _0x2f322e&&'function'==typeof Symbol&&_0x2f322e['constructor']===Symbol&&_0x2f322e!==Symbol[_0x8a7870('0x3ec')]?'symbol':typeof _0x2f322e;})(_0x4eaa43);}Object[_0x4a53c7('0x2cd')](_0xfe0759,_0x4a53c7('0x866'),{'value':!0x0}),_0xfe0759[_0x4a53c7('0x53')]=void 0x0;var _0x3ae1a4=function(_0x403675){var _0x3b5e3b=_0x4a53c7;if(_0x403675&&_0x403675[_0x3b5e3b('0x866')])return _0x403675;if(null===_0x403675||'object'!==_0x545bc4(_0x403675)&&_0x3b5e3b('0x67')!=typeof _0x403675)return{'default':_0x403675};var _0x5931e4=_0xbdf857();if(_0x5931e4&&_0x5931e4[_0x3b5e3b('0x16d')](_0x403675))return _0x5931e4['get'](_0x403675);var _0x2690f4={},_0x59df4c=Object[_0x3b5e3b('0x2cd')]&&Object[_0x3b5e3b('0x3e7')];for(var _0xac421e in _0x403675)if(Object['prototype'][_0x3b5e3b('0x106')]['call'](_0x403675,_0xac421e)){var _0x5decf1=_0x59df4c?Object[_0x3b5e3b('0x3e7')](_0x403675,_0xac421e):null;_0x5decf1&&(_0x5decf1[_0x3b5e3b('0x715')]||_0x5decf1[_0x3b5e3b('0x8ab')])?Object[_0x3b5e3b('0x2cd')](_0x2690f4,_0xac421e,_0x5decf1):_0x2690f4[_0xac421e]=_0x403675[_0xac421e];}return _0x2690f4[_0x3b5e3b('0x53')]=_0x403675,_0x5931e4&&_0x5931e4[_0x3b5e3b('0x8ab')](_0x403675,_0x2690f4),_0x2690f4;}(_0x49056a(_0x4a53c7('0x603'))),_0x35aec0=_0x49056a(_0x4a53c7('0x425'));function _0xbdf857(){var _0x8a45b1=_0x4a53c7;if(_0x8a45b1('0x67')!=typeof WeakMap)return null;var _0x4a9b26=new WeakMap();return _0xbdf857=function(){return _0x4a9b26;},_0x4a9b26;}function _0x4d2761(_0x10d91d,_0x481d9d){return function(_0x2a22de){if(Array['isArray'](_0x2a22de))return _0x2a22de;}(_0x10d91d)||function(_0xa4b62,_0x4db8cd){var _0x2c4b58=_0x3e44;if(_0x2c4b58('0x396')==typeof Symbol||!(Symbol[_0x2c4b58('0x303')]in Object(_0xa4b62)))return;var _0x1d259c=[],_0x38eea1=!0x0,_0x10afcf=!0x1,_0x2708e0=void 0x0;try{for(var _0x2421c2,_0x3d68d1=_0xa4b62[Symbol[_0x2c4b58('0x303')]]();!(_0x38eea1=(_0x2421c2=_0x3d68d1[_0x2c4b58('0x71e')]())[_0x2c4b58('0x6c')])&&(_0x1d259c[_0x2c4b58('0x8cd')](_0x2421c2[_0x2c4b58('0x9b6')]),!_0x4db8cd||_0x1d259c[_0x2c4b58('0x1d1')]!==_0x4db8cd);_0x38eea1=!0x0);}catch(_0x5da914){_0x10afcf=!0x0,_0x2708e0=_0x5da914;}finally{try{_0x38eea1||null==_0x3d68d1[_0x2c4b58('0x107')]||_0x3d68d1[_0x2c4b58('0x107')]();}finally{if(_0x10afcf)throw _0x2708e0;}}return _0x1d259c;}(_0x10d91d,_0x481d9d)||function(_0x109393,_0x532ce2){var _0x141887=_0x3e44;if(!_0x109393)return;if(_0x141887('0x4ba')==typeof _0x109393)return _0x51e4a0(_0x109393,_0x532ce2);var _0x5256bf=Object[_0x141887('0x3ec')][_0x141887('0x8dc')][_0x141887('0x928')](_0x109393)['slice'](0x8,-0x1);_0x141887('0x40c')===_0x5256bf&&_0x109393['constructor']&&(_0x5256bf=_0x109393[_0x141887('0xbe8')][_0x141887('0x9e')]);if(_0x141887('0x410')===_0x5256bf||_0x141887('0x2d')===_0x5256bf)return Array['from'](_0x5256bf);if(_0x141887('0x86e')===_0x5256bf||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/[_0x141887('0xb03')](_0x5256bf))return _0x51e4a0(_0x109393,_0x532ce2);}(_0x10d91d,_0x481d9d)||function(){var _0x555a31=_0x3e44;throw new TypeError(_0x555a31('0x581'));}();}function _0x51e4a0(_0x54c8ba,_0x2cc695){var _0x1adc60=_0x4a53c7;(null==_0x2cc695||_0x2cc695>_0x54c8ba[_0x1adc60('0x1d1')])&&(_0x2cc695=_0x54c8ba['length']);for(var _0x23bfb3=0x0,_0x367bb9=new Array(_0x2cc695);_0x23bfb3<_0x2cc695;_0x23bfb3++)_0x367bb9[_0x23bfb3]=_0x54c8ba[_0x23bfb3];return _0x367bb9;}var _0x135909=function(_0x581426){var _0x4aace2=_0x4a53c7,_0x21d3e3=_0x581426[_0x4aace2('0x9b6')],_0x441e50=_0x581426[_0x4aace2('0x88d')],_0x6a61a9=_0x581426[_0x4aace2('0x2fe')],_0x4777b1=function(_0x37ddf9){var _0x17b756=_0x4aace2,_0x23b5b5=_0x4d2761((0x0,_0x3ae1a4['useState'])(_0x37ddf9),0x2),_0x49d7fa=_0x23b5b5[0x0],_0x404699=_0x23b5b5[0x1],_0x12751d=(0x0,_0x3ae1a4['useRef'])(null),_0x195460=function(_0x9a311d){var _0x252a4e=_0x3e44;_0x12751d[_0x252a4e('0x684')]&&!_0x12751d[_0x252a4e('0x684')]['contains'](_0x9a311d[_0x252a4e('0xb01')])&&_0x404699(!0x1);};return(0x0,_0x3ae1a4[_0x17b756('0x5b7')])(function(){var _0x22bc07=_0x17b756;return document[_0x22bc07('0xe8')]('click',_0x195460,!0x0),function(){var _0x4f4208=_0x22bc07;document[_0x4f4208('0xbdd')](_0x4f4208('0x67b'),_0x195460,!0x0);};}),{'ref':_0x12751d,'isComponentVisible':_0x49d7fa,'setIsComponentVisible':_0x404699};}(!0x0),_0x557f2c=_0x4777b1[_0x4aace2('0x40d')],_0x10edc1=_0x4777b1['isComponentVisible'],_0x158034=_0x4777b1[_0x4aace2('0xc07')],_0xd0ea13=_0x4d2761((0x0,_0x3ae1a4['useState'])(_0x21d3e3||_0x4aace2('0xd6e')),0x2),_0x4faa55=_0xd0ea13[0x0],_0x4a0ffe=_0xd0ea13[0x1],_0xde743e=_0x4d2761((0x0,_0x3ae1a4[_0x4aace2('0xd3e')])(!0x1),0x2),_0x17edcc=_0xde743e[0x0],_0x50ba63=_0xde743e[0x1];return(0x0,_0x3ae1a4[_0x4aace2('0x5b7')])(function(){_0x10edc1||_0x50ba63(!0x1);},[_0x10edc1]),(0x0,_0x3ae1a4[_0x4aace2('0x5b7')])(function(){_0x21d3e3&&_0x4a0ffe(_0x21d3e3);},[_0x21d3e3]),_0x3ae1a4[_0x4aace2('0x53')][_0x4aace2('0x914')](_0x4aace2('0x128'),{'className':_0x4aace2('0xc70')},_0x3ae1a4[_0x4aace2('0x53')][_0x4aace2('0x914')](_0x4aace2('0x128'),{'className':_0x4aace2('0x30d'),'onClick':function(){_0x17edcc||_0x158034(!0x0),_0x50ba63(!_0x17edcc);},'style':{'backgroundColor':_0x4faa55}}),_0x3ae1a4[_0x4aace2('0x53')][_0x4aace2('0x914')](_0x4aace2('0x128'),{'ref':_0x557f2c,'className':_0x4aace2('0x4ea')[_0x4aace2('0x49e')](_0x6a61a9||!_0x17edcc?_0x4aace2('0xb0f'):'')},_0x3ae1a4[_0x4aace2('0x53')]['createElement'](_0x35aec0[_0x4aace2('0xd16')],{'color':_0x4faa55,'disableAlpha':!0x0,'presetColors':[],'onChangeComplete':function(_0x3b5e51){var _0x6a784e=_0x3b5e51['hex'];_0x441e50(_0x6a784e),_0x4a0ffe(_0x6a784e);}})));};_0xfe0759[_0x4a53c7('0x53')]=_0x135909;},{'react':_0x322f0f('0x603'),'react-color':0x16d}],0x35:[function(_0x53ceb9,_0x188be2,_0x20f271){var _0x116338=_0x322f0f;'use strict';Object[_0x116338('0x2cd')](_0x20f271,'__esModule',{'value':!0x0}),_0x20f271['default']=void 0x0;var _0x48aaf8=_0x5690a9(_0x53ceb9(_0x116338('0x603'))),_0x5256f6=_0x53ceb9('antd'),_0x224a75=_0x5690a9(_0x53ceb9('./IceFormModal')),_0x153ca1=_0x5690a9(_0x53ceb9(_0x116338('0x231')));function _0x5690a9(_0x427eff){return _0x427eff&&_0x427eff['__esModule']?_0x427eff:{'default':_0x427eff};}function _0x57740d(_0x4c9f6d){var _0x2e7e2a=_0x116338;return(_0x57740d='function'==typeof Symbol&&'symbol'==typeof Symbol[_0x2e7e2a('0x303')]?function(_0x23f6a5){return typeof _0x23f6a5;}:function(_0x290e6a){var _0x25dbd2=_0x2e7e2a;return _0x290e6a&&_0x25dbd2('0x67')==typeof Symbol&&_0x290e6a['constructor']===Symbol&&_0x290e6a!==Symbol[_0x25dbd2('0x3ec')]?_0x25dbd2('0xd77'):typeof _0x290e6a;})(_0x4c9f6d);}function _0x5b8ff5(_0xe33111,_0x3b5c67){var _0x3b4fd8=_0x116338,_0x3a5c46=Object[_0x3b4fd8('0x882')](_0xe33111);if(Object['getOwnPropertySymbols']){var _0x2813e8=Object['getOwnPropertySymbols'](_0xe33111);_0x3b5c67&&(_0x2813e8=_0x2813e8['filter'](function(_0x2c239c){var _0x176b10=_0x3b4fd8;return Object[_0x176b10('0x3e7')](_0xe33111,_0x2c239c)[_0x176b10('0x836')];})),_0x3a5c46[_0x3b4fd8('0x8cd')][_0x3b4fd8('0x7da')](_0x3a5c46,_0x2813e8);}return _0x3a5c46;}function _0x182a69(_0x8b9235,_0x2d9062,_0xb60277){var _0x23f5b9=_0x116338;return _0x2d9062 in _0x8b9235?Object[_0x23f5b9('0x2cd')](_0x8b9235,_0x2d9062,{'value':_0xb60277,'enumerable':!0x0,'configurable':!0x0,'writable':!0x0}):_0x8b9235[_0x2d9062]=_0xb60277,_0x8b9235;}function _0x3a3bc8(_0x4da41d,_0x2ae5c2){var _0x54915e=_0x116338;for(var _0xd56b1c=0x0;_0xd56b1c<_0x2ae5c2['length'];_0xd56b1c++){var _0x2e5151=_0x2ae5c2[_0xd56b1c];_0x2e5151[_0x54915e('0x836')]=_0x2e5151[_0x54915e('0x836')]||!0x1,_0x2e5151[_0x54915e('0x249')]=!0x0,'value'in _0x2e5151&&(_0x2e5151['writable']=!0x0),Object[_0x54915e('0x2cd')](_0x4da41d,_0x2e5151[_0x54915e('0xcb6')],_0x2e5151);}}function _0x11d480(_0x5eec2f,_0x5ed566){var _0xe5b625=_0x116338;return!_0x5ed566||_0xe5b625('0x669')!==_0x57740d(_0x5ed566)&&'function'!=typeof _0x5ed566?function(_0x169cf1){var _0x1ffe28=_0xe5b625;if(void 0x0===_0x169cf1)throw new ReferenceError(_0x1ffe28('0xba4'));return _0x169cf1;}(_0x5eec2f):_0x5ed566;}function _0x182250(){var _0x5ed898=_0x116338;if(_0x5ed898('0x396')==typeof Reflect||!Reflect[_0x5ed898('0xa71')])return!0x1;if(Reflect[_0x5ed898('0xa71')][_0x5ed898('0x886')])return!0x1;if(_0x5ed898('0x67')==typeof Proxy)return!0x0;try{return Date[_0x5ed898('0x3ec')][_0x5ed898('0x8dc')][_0x5ed898('0x928')](Reflect[_0x5ed898('0xa71')](Date,[],function(){})),!0x0;}catch(_0xb8b46a){return!0x1;}}function _0x482585(_0x28f660){var _0x16ba9a=_0x116338;return(_0x482585=Object['setPrototypeOf']?Object[_0x16ba9a('0x418')]:function(_0x574c53){var _0x2c8ee4=_0x16ba9a;return _0x574c53[_0x2c8ee4('0xc15')]||Object[_0x2c8ee4('0x418')](_0x574c53);})(_0x28f660);}function _0x313b5b(_0x529088,_0x5f021d){return(_0x313b5b=Object['setPrototypeOf']||function(_0x68dfc1,_0x32fed4){var _0x4a41f7=_0x3e44;return _0x68dfc1[_0x4a41f7('0xc15')]=_0x32fed4,_0x68dfc1;})(_0x529088,_0x5f021d);}_0x5256f6['Select'][_0x116338('0xaa5')];var _0x43cb55=function(_0x7b1ff8){var _0x26b9ec=_0x116338;!function(_0x270329,_0x84d90){var _0x264ec5=_0x3e44;if(_0x264ec5('0x67')!=typeof _0x84d90&&null!==_0x84d90)throw new TypeError(_0x264ec5('0xc9'));_0x270329[_0x264ec5('0x3ec')]=Object['create'](_0x84d90&&_0x84d90['prototype'],{'constructor':{'value':_0x270329,'writable':!0x0,'configurable':!0x0}}),_0x84d90&&_0x313b5b(_0x270329,_0x84d90);}(_0x5e9a46,_0x7b1ff8);var _0x427ca0,_0x295e64,_0x258fdb,_0x1d4786,_0x3edd22=(_0x427ca0=_0x5e9a46,function(){var _0x1b727f=_0x3e44,_0x337355,_0x402374=_0x482585(_0x427ca0);if(_0x182250()){var _0x32ddb2=_0x482585(this)['constructor'];_0x337355=Reflect[_0x1b727f('0xa71')](_0x402374,arguments,_0x32ddb2);}else _0x337355=_0x402374['apply'](this,arguments);return _0x11d480(this,_0x337355);});function _0x5e9a46(_0x1b8869){var _0xa73240=_0x3e44,_0x165d25;return function(_0xedc731,_0xa25581){var _0x283640=_0x3e44;if(!(_0xedc731 instanceof _0xa25581))throw new TypeError(_0x283640('0xc2c'));}(this,_0x5e9a46),(_0x165d25=_0x3edd22[_0xa73240('0x928')](this,_0x1b8869))[_0xa73240('0x97c')]={},_0x165d25[_0xa73240('0x88d')]=_0x1b8869[_0xa73240('0x88d')],_0x165d25[_0xa73240('0x2a0')]=_0x48aaf8['default'][_0xa73240('0x2d9')](),_0x165d25;}return _0x295e64=_0x5e9a46,(_0x258fdb=[{'key':_0x26b9ec('0x265'),'value':function(){var _0x5163a3=_0x26b9ec,_0x5714c1=this,_0x1cdf7e=this[_0x5163a3('0x2d0')],_0x2d290a=_0x1cdf7e[_0x5163a3('0xb94')],_0x78fa49=_0x1cdf7e[_0x5163a3('0x7c7')],_0x5fea18=this[_0x5163a3('0x2d0')][_0x5163a3('0x9b6')];_0x5fea18=(_0x5fea18=this['parseValue'](_0x5fea18))[_0x5163a3('0x4ad')](function(_0x198e1b){return function(_0x3bf0e4){var _0x12d0f1=_0x3e44;for(var _0x21d226=0x1;_0x21d226')),_0x12561c=_0x12561c[_0x562833('0x95e')]('#_'['concat'](_0x54aa96,'_#'),_0x1eb79e);}return void 0x0!==_0x6f2c97[0x1]['render']&&null!=_0x6f2c97[0x1][_0x562833('0x265')]&&(_0x12561c=_0x12561c[_0x562833('0x95e')](_0x562833('0x6ec'),_0x6f2c97[0x1][_0x562833('0x265')](_0x505adb))),_0x48aaf8['default'][_0x562833('0x914')](_0x5256f6[_0x562833('0x19')],{'key':_0x505adb['id'],'title':'','extra':this['getDefaultButtons'](_0x505adb['id'])},_0x48aaf8[_0x562833('0x53')][_0x562833('0x914')](_0x562833('0x128'),{'dangerouslySetInnerHTML':{'__html':_0x12561c}}));}},{'key':_0x26b9ec('0x821'),'value':function(_0x249192){var _0x19afee=_0x26b9ec,_0xce249a=this;return _0x48aaf8[_0x19afee('0x53')][_0x19afee('0x914')](_0x5256f6['Space'],null,_0x48aaf8[_0x19afee('0x53')][_0x19afee('0x914')]('a',{'href':'#','onClick':function(){var _0x452947=_0x19afee;_0xce249a[_0x452947('0x74f')](_0x249192);}},_0x48aaf8[_0x19afee('0x53')][_0x19afee('0x914')]('li',{'className':_0x19afee('0xd10')})),_0x48aaf8[_0x19afee('0x53')][_0x19afee('0x914')]('a',{'href':'#','onClick':function(){var _0x4677a6=_0x19afee;_0xce249a[_0x4677a6('0xcc0')](_0x249192);}},_0x48aaf8[_0x19afee('0x53')][_0x19afee('0x914')]('li',{'className':_0x19afee('0x5a5')})));}},{'key':_0x26b9ec('0xcc0'),'value':function(_0x5d69e5){var _0x54be43=_0x26b9ec;for(var _0x1a2ada=this[_0x54be43('0x2d0')][_0x54be43('0x9b6')],_0x30a54d=this[_0x54be43('0x8d2')](_0x1a2ada),_0x4cc56a=[],_0x38ddde=0x0;_0x38ddde<_0x30a54d[_0x54be43('0x1d1')];_0x38ddde++){var _0x354051=_0x30a54d[_0x38ddde];_0x354051['id']!==_0x5d69e5&&_0x4cc56a[_0x54be43('0x8cd')](_0x354051);}var _0x40128f=JSON[_0x54be43('0x263')](_0x4cc56a);this['onChange'](_0x40128f);}},{'key':'editDataGroupItem','value':function(_0x4d3578){var _0x3b9632=_0x26b9ec;for(var _0x2fda37=this[_0x3b9632('0x2d0')],_0x43b606=_0x2fda37[_0x3b9632('0xb94')],_0x1816e8=_0x2fda37[_0x3b9632('0x7c7')],_0x5dad29=_0x2fda37[_0x3b9632('0x9b6')],_0x5489dc=this[_0x3b9632('0x8d2')](_0x5dad29),_0x1f1843={},_0x42b560=0x0;_0x42b560<_0x5489dc[_0x3b9632('0x1d1')];_0x42b560++){var _0x3c394a=_0x5489dc[_0x42b560];_0x3c394a['id']===_0x4d3578&&(_0x1f1843=_0x3c394a);}this[_0x3b9632('0x3a7')](_0x43b606,_0x1816e8,_0x1f1843);}},{'key':_0x26b9ec('0xa94'),'value':function(){var _0x5844bf=_0x26b9ec;this[_0x5844bf('0x88d')]('[]');}},{'key':'dataGroupGetNextAutoIncrementId','value':function(_0xf66b04){var _0x1daade=_0x26b9ec;for(var _0x8f9aec,_0xcf77e2=0x1,_0x3d6fb2=0x0;_0x3d6fb2<_0xf66b04[_0x1daade('0x1d1')];_0x3d6fb2++){var _0x54032b=_0xf66b04[_0x3d6fb2];void 0x0!==_0x54032b['id']&&null!=_0x54032b['id']||(_0x54032b['id']=0x1),(_0x8f9aec=_0x54032b['id'][_0x1daade('0x627')](_0x54032b['id'][_0x1daade('0x320')]('_')+0x1,_0x54032b['id']['length']))>=_0xcf77e2&&(_0xcf77e2=parseInt(_0x8f9aec,0xa)+0x1);}return _0xcf77e2;}}])&&_0x3a3bc8(_0x295e64['prototype'],_0x258fdb),_0x1d4786&&_0x3a3bc8(_0x295e64,_0x1d4786),_0x5e9a46;}(_0x48aaf8['default'][_0x116338('0xd04')]);_0x20f271[_0x116338('0x53')]=_0x43cb55;},{'./IceFormModal':0x37,'antd':'antd','react':_0x322f0f('0x603'),'react-dom':_0x322f0f('0x231')}],0x36:[function(_0x183e47,_0x2db655,_0xe54dd2){var _0x5a402a=_0x322f0f;'use strict';Object[_0x5a402a('0x2cd')](_0xe54dd2,_0x5a402a('0x866'),{'value':!0x0}),_0xe54dd2['default']=void 0x0;var _0x3cfd43=_0x40bea8(_0x183e47(_0x5a402a('0x603'))),_0x4f9221=_0x183e47(_0x5a402a('0x9f8')),_0x361ae3=_0x40bea8(_0x183e47('moment')),_0xcc8315=_0x40bea8(_0x183e47(_0x5a402a('0xd51'))),_0x13fd60=_0x40bea8(_0x183e47('./IceDataGroup')),_0x146d32=_0x40bea8(_0x183e47(_0x5a402a('0xb46'))),_0x545f00=_0x40bea8(_0x183e47(_0x5a402a('0x23c'))),_0x39fa57=_0x40bea8(_0x183e47(_0x5a402a('0xcc5'))),_0x1e8d50=_0x40bea8(_0x183e47(_0x5a402a('0x168')));function _0x40bea8(_0xf53af5){return _0xf53af5&&_0xf53af5['__esModule']?_0xf53af5:{'default':_0xf53af5};}function _0x1e32fe(_0x51e6e5){var _0x570600=_0x5a402a;return(_0x1e32fe='function'==typeof Symbol&&_0x570600('0xd77')==typeof Symbol[_0x570600('0x303')]?function(_0x138f5b){return typeof _0x138f5b;}:function(_0x14b159){var _0x427d21=_0x570600;return _0x14b159&&_0x427d21('0x67')==typeof Symbol&&_0x14b159[_0x427d21('0xbe8')]===Symbol&&_0x14b159!==Symbol['prototype']?_0x427d21('0xd77'):typeof _0x14b159;})(_0x51e6e5);}function _0x6cc4be(_0x10f1d2,_0x51e05d){return function(_0xbc214e){var _0x115a51=_0x3e44;if(Array[_0x115a51('0x9f2')](_0xbc214e))return _0xbc214e;}(_0x10f1d2)||function(_0x4b537f,_0xbf8a65){var _0x47aecc=_0x3e44;if(_0x47aecc('0x396')==typeof Symbol||!(Symbol['iterator']in Object(_0x4b537f)))return;var _0x870206=[],_0x19b2f0=!0x0,_0x14f1ae=!0x1,_0x40b7ab=void 0x0;try{for(var _0x5e20a8,_0x1b7a4=_0x4b537f[Symbol[_0x47aecc('0x303')]]();!(_0x19b2f0=(_0x5e20a8=_0x1b7a4[_0x47aecc('0x71e')]())[_0x47aecc('0x6c')])&&(_0x870206[_0x47aecc('0x8cd')](_0x5e20a8['value']),!_0xbf8a65||_0x870206[_0x47aecc('0x1d1')]!==_0xbf8a65);_0x19b2f0=!0x0);}catch(_0xe1ef97){_0x14f1ae=!0x0,_0x40b7ab=_0xe1ef97;}finally{try{_0x19b2f0||null==_0x1b7a4[_0x47aecc('0x107')]||_0x1b7a4[_0x47aecc('0x107')]();}finally{if(_0x14f1ae)throw _0x40b7ab;}}return _0x870206;}(_0x10f1d2,_0x51e05d)||function(_0x546dba,_0xcf4b7){var _0x3860a6=_0x3e44;if(!_0x546dba)return;if(_0x3860a6('0x4ba')==typeof _0x546dba)return _0x31c004(_0x546dba,_0xcf4b7);var _0x15eca4=Object[_0x3860a6('0x3ec')][_0x3860a6('0x8dc')][_0x3860a6('0x928')](_0x546dba)[_0x3860a6('0x63a')](0x8,-0x1);_0x3860a6('0x40c')===_0x15eca4&&_0x546dba[_0x3860a6('0xbe8')]&&(_0x15eca4=_0x546dba[_0x3860a6('0xbe8')][_0x3860a6('0x9e')]);if(_0x3860a6('0x410')===_0x15eca4||'Set'===_0x15eca4)return Array[_0x3860a6('0x868')](_0x15eca4);if('Arguments'===_0x15eca4||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/[_0x3860a6('0xb03')](_0x15eca4))return _0x31c004(_0x546dba,_0xcf4b7);}(_0x10f1d2,_0x51e05d)||function(){var _0x5d8e2d=_0x3e44;throw new TypeError(_0x5d8e2d('0x581'));}();}function _0x31c004(_0x968098,_0x212b3d){var _0x7d7950=_0x5a402a;(null==_0x212b3d||_0x212b3d>_0x968098[_0x7d7950('0x1d1')])&&(_0x212b3d=_0x968098['length']);for(var _0xe84937=0x0,_0x40123a=new Array(_0x212b3d);_0xe84937<_0x212b3d;_0xe84937++)_0x40123a[_0xe84937]=_0x968098[_0xe84937];return _0x40123a;}function _0x583468(_0x425dae,_0x50741e){var _0x3641aa=_0x5a402a;for(var _0x4c76d4=0x0;_0x4c76d4<_0x50741e['length'];_0x4c76d4++){var _0x27ca62=_0x50741e[_0x4c76d4];_0x27ca62[_0x3641aa('0x836')]=_0x27ca62['enumerable']||!0x1,_0x27ca62[_0x3641aa('0x249')]=!0x0,_0x3641aa('0x9b6')in _0x27ca62&&(_0x27ca62['writable']=!0x0),Object[_0x3641aa('0x2cd')](_0x425dae,_0x27ca62['key'],_0x27ca62);}}function _0x1fdc56(_0x7b0ccc,_0x1349f8){var _0x2dba07=_0x5a402a;return!_0x1349f8||_0x2dba07('0x669')!==_0x1e32fe(_0x1349f8)&&_0x2dba07('0x67')!=typeof _0x1349f8?function(_0x4fd312){var _0x25d6eb=_0x2dba07;if(void 0x0===_0x4fd312)throw new ReferenceError(_0x25d6eb('0xba4'));return _0x4fd312;}(_0x7b0ccc):_0x1349f8;}function _0x287b44(){var _0x36ab7a=_0x5a402a;if(_0x36ab7a('0x396')==typeof Reflect||!Reflect['construct'])return!0x1;if(Reflect['construct'][_0x36ab7a('0x886')])return!0x1;if('function'==typeof Proxy)return!0x0;try{return Date[_0x36ab7a('0x3ec')][_0x36ab7a('0x8dc')][_0x36ab7a('0x928')](Reflect[_0x36ab7a('0xa71')](Date,[],function(){})),!0x0;}catch(_0x4c5df9){return!0x1;}}function _0x34b48e(_0x549ec1){var _0x4c99b8=_0x5a402a;return(_0x34b48e=Object[_0x4c99b8('0x16')]?Object['getPrototypeOf']:function(_0xaa847a){var _0x3b4b32=_0x4c99b8;return _0xaa847a[_0x3b4b32('0xc15')]||Object['getPrototypeOf'](_0xaa847a);})(_0x549ec1);}function _0x32f4a6(_0x191335,_0x509654){return(_0x32f4a6=Object['setPrototypeOf']||function(_0x1d264f,_0x35db47){var _0x7376dd=_0x3e44;return _0x1d264f[_0x7376dd('0xc15')]=_0x35db47,_0x1d264f;})(_0x191335,_0x509654);}var _0x5efcf7={'float':function(_0x4cf0d9){var _0x4dfa73=_0x5a402a;return!(null==_0x4cf0d9||!_0x4cf0d9[_0x4dfa73('0xa05')](/^[-+]?[0-9]+(\.[0-9]+)?$/));},'number':function(_0x289ab9){return!(null==_0x289ab9||!_0x289ab9['match'](/^[0-9]+$/));},'numberOrEmpty':function(_0x329bb0){var _0x563a21=_0x5a402a;if(''===_0x329bb0)return!0x0;return!(null==_0x329bb0||!_0x329bb0[_0x563a21('0xa05')](/^[0-9]+$/));},'email':function(_0xac6679){var _0x2e3aed=_0x5a402a;return null!=_0xac6679&&/^\s*[\w\-+_]+(\.[\w\-+_]+)*@[\w\-+_]+\.[\w\-+_]+(\.[\w\-+_]+)*\s*$/[_0x2e3aed('0xb03')](_0xac6679);},'emailOrEmpty':function(_0x3179d7){if(''===_0x3179d7)return!0x0;return null!=_0x3179d7&&/^\s*[\w\-+_]+(\.[\w\-+_]+)*@[\w\-+_]+\.[\w\-+_]+(\.[\w\-+_]+)*\s*$/['test'](_0x3179d7);},'username':function(_0x2d1a5f){var _0x183987=_0x5a402a;return null!=_0x2d1a5f&&/^[a-zA-Z0-9.-]+$/[_0x183987('0xb03')](_0x2d1a5f);}},_0x52ad74=function(_0x4a20c1){var _0xd367aa=_0x5a402a;!function(_0x20127a,_0x11d256){var _0x2853d4=_0x3e44;if('function'!=typeof _0x11d256&&null!==_0x11d256)throw new TypeError(_0x2853d4('0xc9'));_0x20127a['prototype']=Object[_0x2853d4('0xd9d')](_0x11d256&&_0x11d256['prototype'],{'constructor':{'value':_0x20127a,'writable':!0x0,'configurable':!0x0}}),_0x11d256&&_0x32f4a6(_0x20127a,_0x11d256);}(_0x5d577e,_0x4a20c1);var _0x562e61,_0x525c1f,_0xeaaac6,_0x478383,_0x4f2b3f=(_0x562e61=_0x5d577e,function(){var _0x448a99=_0x3e44,_0x2d108f,_0x23f784=_0x34b48e(_0x562e61);if(_0x287b44()){var _0x14b916=_0x34b48e(this)[_0x448a99('0xbe8')];_0x2d108f=Reflect['construct'](_0x23f784,arguments,_0x14b916);}else _0x2d108f=_0x23f784[_0x448a99('0x7da')](this,arguments);return _0x1fdc56(this,_0x2d108f);});function _0x5d577e(_0xa78f1b){var _0x592407=_0x3e44,_0x29f30f;return function(_0x36303e,_0x304344){var _0x285eff=_0x3e44;if(!(_0x36303e instanceof _0x304344))throw new TypeError(_0x285eff('0xc2c'));}(this,_0x5d577e),(_0x29f30f=_0x4f2b3f[_0x592407('0x928')](this,_0xa78f1b))[_0x592407('0x9ac')]={},_0x29f30f['state']={'validations':{},'errorMsg':!0x1},_0x29f30f[_0x592407('0x2a0')]=_0x3cfd43[_0x592407('0x53')][_0x592407('0x2d9')](),_0x29f30f;}return _0x525c1f=_0x5d577e,(_0xeaaac6=[{'key':_0xd367aa('0xa7c'),'value':function(_0x1d72f3){var _0x591abb=_0xd367aa;this[_0x591abb('0x4f8')]({'errorMsg':_0x1d72f3});}},{'key':'hideError','value':function(){this['setState']({'errorMsg':!0x1});}},{'key':_0xd367aa('0xb32'),'value':function(){var _0x5c39d4=_0xd367aa;return null!=this['formReference'][_0x5c39d4('0x684')];}},{'key':_0xd367aa('0x77b'),'value':function(){var _0x4aa2c4=_0xd367aa;return this[_0x4aa2c4('0x2a0')]['current'][_0x4aa2c4('0x77b')]();}},{'key':'render','value':function(){var _0x58f611=_0xd367aa;for(var _0x5d309e=this['props'],_0x52c9c6=_0x5d309e[_0x58f611('0xb79')],_0x4eac1c=_0x5d309e[_0x58f611('0xba1')],_0x1a1883=_0x5d309e[_0x58f611('0x7c7')],_0x4b3025=[],_0x20ae86=[],_0x5c495f=[],_0x1dc76d=_0x4eac1c?0x2:0x1,_0x5629f4=0x0;_0x5629f4<_0x52c9c6[_0x58f611('0x1d1')];_0x5629f4++)_0x4b3025[_0x58f611('0x8cd')](_0x1a1883['beforeRenderFieldHook'](_0x52c9c6[_0x5629f4][0x0],this[_0x58f611('0xd74')](_0x52c9c6[_0x5629f4],this['props'][_0x58f611('0xf1')]),_0x52c9c6[_0x5629f4][0x1]));_0x4b3025=_0x4b3025[_0x58f611('0x5c4')](function(_0x2e8e13){return!!_0x2e8e13;});for(var _0xe0fa23=0x0;_0xe0fa23<_0x4b3025[_0x58f611('0x1d1')];_0xe0fa23++)null!=_0x4b3025[_0xe0fa23]&&(0x1===_0x1dc76d||_0xe0fa23%0x2==0x0?_0x20ae86[_0x58f611('0x8cd')](_0x4b3025[_0xe0fa23]):_0x5c495f[_0x58f611('0x8cd')](_0x4b3025[_0xe0fa23]));return _0x3cfd43[_0x58f611('0x53')][_0x58f611('0x914')](_0x4f9221[_0x58f611('0xad2')],{'ref':this[_0x58f611('0x2a0')],'labelCol':{'span':0x6},'wrapperCol':{'span':0x10},'layout':this[_0x58f611('0x2d0')][_0x58f611('0x699')]||_0x58f611('0x921'),'initialValues':{'size':_0x58f611('0x3ff')},'onValuesChange':function(){},'size':_0x58f611('0x3ff')},this['state'][_0x58f611('0xbb')]&&_0x3cfd43[_0x58f611('0x53')][_0x58f611('0x914')](_0x3cfd43['default']['Fragment'],null,_0x3cfd43['default']['createElement'](_0x4f9221[_0x58f611('0x752')],{'message':this['state'][_0x58f611('0xbb')],'type':'error','showIcon':!0x0}),_0x3cfd43[_0x58f611('0x53')][_0x58f611('0x914')]('br',null)),0x1===_0x1dc76d&&_0x20ae86,0x2===_0x1dc76d&&_0x3cfd43['default'][_0x58f611('0x914')](_0x4f9221[_0x58f611('0x588')],{'gutter':0x10},_0x3cfd43[_0x58f611('0x53')][_0x58f611('0x914')](_0x4f9221[_0x58f611('0x70b')],{'className':_0x58f611('0x20a'),'span':0xc},_0x20ae86),_0x3cfd43[_0x58f611('0x53')][_0x58f611('0x914')](_0x4f9221['Col'],{'className':_0x58f611('0x20a'),'span':0xc},_0x5c495f)));}},{'key':_0xd367aa('0x3a5'),'value':function(){var _0x53da2e=_0xd367aa,_0x56b0d9=this;return Object['keys'](this[_0x53da2e('0x9ac')])[_0x53da2e('0xc16')](function(_0x30aab3,_0x3190aa){var _0x62c485=_0x53da2e;return _0x30aab3&&(_0x62c485('0x8f8')===_0x56b0d9[_0x62c485('0x97c')][_0x3190aa]||null==_0x56b0d9['state'][_0x3190aa]);},!0x0);}},{'key':_0xd367aa('0x7ff'),'value':function(_0x5218c1){var _0x14be2e=_0xd367aa,_0x30feaa=this['validationRules'][_0x5218c1[_0x14be2e('0xb01')]['id']],_0x58bd76=this['state']['validations'];_0x30feaa&&(_0x30feaa['rule'](_0x5218c1['target'][_0x14be2e('0x9b6')])?(this[_0x14be2e('0x97c')][_0x5218c1[_0x14be2e('0xb01')]['id']]=_0x14be2e('0x8f8'),this['state'][''[_0x14be2e('0x49e')](_0x5218c1[_0x14be2e('0xb01')]['id'],'_message')]=null):(this['state'][_0x5218c1[_0x14be2e('0xb01')]['id']]=_0x14be2e('0x855'),this[_0x14be2e('0x97c')][''[_0x14be2e('0x49e')](_0x5218c1[_0x14be2e('0xb01')]['id'],'_message')]=_0x30feaa[_0x14be2e('0x64')])),this[_0x14be2e('0x4f8')]({'validations':_0x58bd76});}},{'key':_0xd367aa('0xd74'),'value':function(_0x242607){var _0x4e4c7d=_0xd367aa,_0x308916=arguments[_0x4e4c7d('0x1d1')]>0x1&&void 0x0!==arguments[0x1]&&arguments[0x1],_0x54697d=0x0,_0x2b621d=[],_0x3a730d={'required':!0x0},_0x54c8db=_0x6cc4be(_0x242607,0x2),_0x308435=_0x54c8db[0x0],_0x2b9336=_0x54c8db[0x1],_0x5ba51e=this[_0x4e4c7d('0x2d0')],_0x4b315c=_0x5ba51e[_0x4e4c7d('0x7c7')],_0x1e8894=_0x5ba51e[_0x4e4c7d('0x699')],_0x4dc48d=null;_0x2b9336[_0x4e4c7d('0x551')]=_0x4b315c['gt'](_0x2b9336[_0x4e4c7d('0x551')]);var _0x1bc21d=_0x4e4c7d('0x1ca')===_0x1e8894?{'span':0x18}:{'span':0x6},_0x177726=['select',_0x4e4c7d('0xdbb'),'select2multi'];if(_0x177726[_0x4e4c7d('0x857')](_0x2b9336[_0x4e4c7d('0xb88')])>=0x0&&!0x0===_0x2b9336[_0x4e4c7d('0x516')]||'none'===_0x2b9336[_0x4e4c7d('0x175')]||_0x4e4c7d('0x92d')===_0x2b9336[_0x4e4c7d('0x175')]||'numberOrEmpty'===_0x2b9336['validation']?_0x3a730d[_0x4e4c7d('0x5f8')]=!0x1:(_0x3a730d[_0x4e4c7d('0x5f8')]=!0x0,_0x3a730d[_0x4e4c7d('0x64')]=this[_0x4e4c7d('0x57a')](_0x2b9336[_0x4e4c7d('0x551')])),_0x2b621d[_0x4e4c7d('0x8cd')](_0x3a730d),_0x4e4c7d('0xb0f')===_0x2b9336[_0x4e4c7d('0xb88')])return _0x3a730d[_0x4e4c7d('0x5f8')]=!0x1,_0x3cfd43[_0x4e4c7d('0x53')][_0x4e4c7d('0x914')](_0x4f9221[_0x4e4c7d('0xad2')]['Item'],{'labelCol':_0x1bc21d,'style':{'display':'none'},'label':_0x2b9336['label'],'key':_0x308435,'name':_0x308435,'rules':_0x2b621d},_0x3cfd43[_0x4e4c7d('0x53')][_0x4e4c7d('0x914')](_0x4f9221[_0x4e4c7d('0x242')],null));if(_0x4e4c7d('0x1c4')===_0x2b9336[_0x4e4c7d('0xb88')])return _0x2b9336['validation']&&(_0x2b9336['validation']=_0x2b9336[_0x4e4c7d('0x175')][_0x4e4c7d('0x95e')](_0x4e4c7d('0x36c'),''),(_0x4dc48d=this[_0x4e4c7d('0x4ef')](_0x2b9336))&&(this[_0x4e4c7d('0x9ac')][_0x308435]={'rule':_0x4dc48d,'message':'Invalid\x20value\x20for\x20'[_0x4e4c7d('0x49e')](_0x2b9336[_0x4e4c7d('0x551')])})),null!=_0x4dc48d?_0x3cfd43[_0x4e4c7d('0x53')]['createElement'](_0x4f9221[_0x4e4c7d('0xad2')][_0x4e4c7d('0x191')],{'labelCol':_0x1bc21d,'label':_0x2b9336[_0x4e4c7d('0x551')],'key':_0x308435,'name':_0x308435,'rules':_0x2b621d,'validateStatus':this['state'][_0x308435],'help':this['state'][''['concat'](_0x308435,_0x4e4c7d('0x19b'))]},_0x308916?_0x3cfd43['default'][_0x4e4c7d('0x914')](_0x545f00[_0x4e4c7d('0x53')],null):_0x3cfd43[_0x4e4c7d('0x53')]['createElement'](_0x4f9221['Input'],{'onChange':this[_0x4e4c7d('0x7ff')][_0x4e4c7d('0x5f')](this)})):_0x3cfd43['default']['createElement'](_0x4f9221[_0x4e4c7d('0xad2')][_0x4e4c7d('0x191')],{'labelCol':_0x1bc21d,'label':_0x2b9336[_0x4e4c7d('0x551')],'key':_0x308435,'name':_0x308435,'rules':_0x2b621d},_0x308916?_0x3cfd43[_0x4e4c7d('0x53')][_0x4e4c7d('0x914')](_0x545f00[_0x4e4c7d('0x53')],null):_0x3cfd43[_0x4e4c7d('0x53')][_0x4e4c7d('0x914')](_0x4f9221['Input'],null));if(_0x4e4c7d('0x219')===_0x2b9336[_0x4e4c7d('0xb88')])return _0x2b9336['rows']||(_0x2b9336[_0x4e4c7d('0x29f')]=0x4),_0x3cfd43[_0x4e4c7d('0x53')]['createElement'](_0x4f9221['Form'][_0x4e4c7d('0x191')],{'labelCol':_0x1bc21d,'label':_0x2b9336['label'],'key':_0x308435,'name':_0x308435,'rules':_0x2b621d},_0x308916?_0x3cfd43['default'][_0x4e4c7d('0x914')](_0x545f00[_0x4e4c7d('0x53')],null):_0x3cfd43[_0x4e4c7d('0x53')][_0x4e4c7d('0x914')](_0x4f9221[_0x4e4c7d('0x242')][_0x4e4c7d('0xae1')],{'rows':_0x2b9336[_0x4e4c7d('0x29f')]}));if(_0x4e4c7d('0xd98')===_0x2b9336[_0x4e4c7d('0xb88')])return _0x3cfd43['default'][_0x4e4c7d('0x914')](_0x4f9221['Form'][_0x4e4c7d('0x191')],{'labelCol':_0x1bc21d,'label':_0x2b9336['label'],'key':_0x308435,'name':_0x308435,'rules':_0x2b621d},_0x3cfd43[_0x4e4c7d('0x53')][_0x4e4c7d('0x914')](_0x4f9221[_0x4e4c7d('0x4e4')],{'disabled':_0x308916}));if(_0x4e4c7d('0x44c')===_0x2b9336[_0x4e4c7d('0xb88')])return _0x3cfd43[_0x4e4c7d('0x53')][_0x4e4c7d('0x914')](_0x4f9221[_0x4e4c7d('0xad2')][_0x4e4c7d('0x191')],{'labelCol':_0x1bc21d,'label':_0x2b9336[_0x4e4c7d('0x551')],'key':_0x308435,'name':_0x308435,'rules':_0x2b621d},_0x3cfd43[_0x4e4c7d('0x53')][_0x4e4c7d('0x914')](_0x4f9221[_0x4e4c7d('0x4e4')],{'format':_0x4e4c7d('0x6c6'),'disabled':_0x308916}));if(_0x4e4c7d('0x322')===_0x2b9336[_0x4e4c7d('0xb88')])return _0x3cfd43[_0x4e4c7d('0x53')][_0x4e4c7d('0x914')](_0x4f9221[_0x4e4c7d('0xad2')][_0x4e4c7d('0x191')],{'labelCol':_0x1bc21d,'label':_0x2b9336['label'],'key':_0x308435,'name':_0x308435,'rules':_0x2b621d},_0x3cfd43[_0x4e4c7d('0x53')][_0x4e4c7d('0x914')](_0x4f9221[_0x4e4c7d('0x481')],{'format':_0x4e4c7d('0x7e9'),'disabled':_0x308916}));if(_0x4e4c7d('0x1fe')===_0x2b9336[_0x4e4c7d('0xb88')]){var _0x1872ac=_0x4b315c['getCurrentProfile']();return _0x54697d=null!=_0x1872ac?_0x1872ac['id']:-0x1*_0x4b315c[_0x4e4c7d('0x1b3')]()['id'],null==_0x2b9336[_0x4e4c7d('0x833')]&&(_0x2b9336[_0x4e4c7d('0x833')]=_0x4e4c7d('0x98b')),_0x3cfd43[_0x4e4c7d('0x53')][_0x4e4c7d('0x914')](_0x4f9221[_0x4e4c7d('0xad2')]['Item'],{'labelCol':_0x1bc21d,'name':_0x308435,'key':_0x308435,'label':_0x2b9336[_0x4e4c7d('0x551')]},_0x3cfd43[_0x4e4c7d('0x53')]['createElement'](_0xcc8315[_0x4e4c7d('0x53')],{'user':_0x54697d,'fileGroup':_0x4b315c[_0x4e4c7d('0x894')],'fileName':_0x308435,'adapter':_0x4b315c,'accept':_0x2b9336[_0x4e4c7d('0x833')],'readOnly':_0x308916}));}return _0x4e4c7d('0xdc')===_0x2b9336[_0x4e4c7d('0xb88')]?_0x3cfd43['default'][_0x4e4c7d('0x914')](_0x4f9221[_0x4e4c7d('0xad2')]['Item'],{'labelCol':_0x1bc21d,'name':_0x308435,'key':_0x308435,'label':_0x2b9336['label']},_0x3cfd43[_0x4e4c7d('0x53')]['createElement'](_0x13fd60[_0x4e4c7d('0x53')],{'adapter':_0x4b315c,'field':_0x242607,'title':_0x2b9336[_0x4e4c7d('0x551')],'readOnly':_0x308916})):_0x4e4c7d('0xdbb')===_0x2b9336[_0x4e4c7d('0xb88')]||_0x4e4c7d('0x7fc')===_0x2b9336['type']||_0x4e4c7d('0x9da')===_0x2b9336['type']?_0x3cfd43[_0x4e4c7d('0x53')][_0x4e4c7d('0x914')](_0x4f9221[_0x4e4c7d('0xad2')]['Item'],{'labelCol':_0x1bc21d,'label':_0x2b9336[_0x4e4c7d('0x551')],'key':_0x308435,'name':_0x308435,'rules':_0x2b621d},_0x3cfd43[_0x4e4c7d('0x53')][_0x4e4c7d('0x914')](_0x146d32[_0x4e4c7d('0x53')],{'adapter':_0x4b315c,'field':_0x242607,'readOnly':_0x308916})):_0x4e4c7d('0xb5c')===_0x2b9336['type']?_0x3cfd43[_0x4e4c7d('0x53')]['createElement'](_0x4f9221[_0x4e4c7d('0xad2')][_0x4e4c7d('0x191')],{'labelCol':_0x1bc21d,'name':_0x308435,'key':_0x308435,'label':_0x2b9336[_0x4e4c7d('0x551')]},_0x3cfd43['default'][_0x4e4c7d('0x914')](_0x39fa57[_0x4e4c7d('0x53')],{'adapter':_0x4b315c,'field':_0x242607,'title':_0x2b9336[_0x4e4c7d('0x551')],'readOnly':_0x308916})):_0x4e4c7d('0x97e')===_0x2b9336[_0x4e4c7d('0xb88')]?_0x3cfd43[_0x4e4c7d('0x53')][_0x4e4c7d('0x914')](_0x4f9221['Form'][_0x4e4c7d('0x191')],{'labelCol':_0x1bc21d,'label':_0x2b9336[_0x4e4c7d('0x551')],'key':_0x308435,'name':_0x308435,'rules':_0x2b621d},_0x3cfd43[_0x4e4c7d('0x53')][_0x4e4c7d('0x914')](_0x1e8d50[_0x4e4c7d('0x53')],{'readOnly':_0x308916})):null;}},{'key':_0xd367aa('0x57a'),'value':function(_0x4af737){var _0x195e30=_0xd367aa;return''[_0x195e30('0x49e')](_0x4af737,':\x20')[_0x195e30('0x49e')](this['props']['adapter']['gt'](_0x195e30('0x518')));}},{'key':_0xd367aa('0x4ef'),'value':function(_0x4d7b39){var _0x1fa9fb=_0xd367aa;return null==_0x5efcf7[_0x4d7b39[_0x1fa9fb('0x175')]]?null:_0x5efcf7[_0x4d7b39[_0x1fa9fb('0x175')]];}},{'key':_0xd367aa('0x68f'),'value':function(_0x30ccda,_0x59c4de){var _0xd365b4=_0xd367aa;for(var _0x3f41a8=0x0;_0x3f41a8<_0x59c4de[_0xd365b4('0x1d1')];_0x3f41a8++){var _0x2058ed=_0x6cc4be(_0x59c4de[_0x3f41a8],0x2),_0x3cb447=_0x2058ed[0x0],_0x1393fe=_0x2058ed[0x1];_0xd365b4('0xd98')===_0x1393fe[_0xd365b4('0xb88')]?_0x30ccda[_0x3cb447]=_0x30ccda[_0x3cb447]?(0x0,_0x361ae3[_0xd365b4('0x53')])(_0x30ccda[_0x3cb447],_0xd365b4('0x37c')):null:_0xd365b4('0x44c')===_0x1393fe[_0xd365b4('0xb88')]?_0x30ccda[_0x3cb447]=_0x30ccda[_0x3cb447]?(0x0,_0x361ae3[_0xd365b4('0x53')])(_0x30ccda[_0x3cb447],_0xd365b4('0x6c6')):null:_0xd365b4('0x322')===_0x1393fe[_0xd365b4('0xb88')]&&(_0x30ccda[_0x3cb447]=_0x30ccda[_0x3cb447]?(0x0,_0x361ae3[_0xd365b4('0x53')])(_0x30ccda[_0x3cb447],_0xd365b4('0x7e9')):null);}return _0x30ccda;}},{'key':'formFieldsToData','value':function(_0x41e5f6,_0x62e32c){var _0x19b322=_0xd367aa;for(var _0x3be50d=0x0;_0x3be50d<_0x62e32c[_0x19b322('0x1d1')];_0x3be50d++){var _0x8d101=_0x6cc4be(_0x62e32c[_0x3be50d],0x2),_0x3396ec=_0x8d101[0x0],_0x5e51be=_0x8d101[0x1];'date'===_0x5e51be[_0x19b322('0xb88')]?_0x41e5f6[_0x3396ec]=_0x41e5f6[_0x3396ec]?_0x41e5f6[_0x3396ec][_0x19b322('0x10a')](_0x19b322('0x37c')):_0x19b322('0x185'):'datetime'===_0x5e51be[_0x19b322('0xb88')]?_0x41e5f6[_0x3396ec]=_0x41e5f6[_0x3396ec]?_0x41e5f6[_0x3396ec][_0x19b322('0x10a')](_0x19b322('0x6c6')):_0x19b322('0x185'):'time'===_0x5e51be['type']?_0x41e5f6[_0x3396ec]=_0x41e5f6[_0x3396ec]?_0x41e5f6[_0x3396ec][_0x19b322('0x10a')](_0x19b322('0x7e9')):'NULL':_0x19b322('0x7fc')!==_0x5e51be[_0x19b322('0xb88')]&&_0x19b322('0xdbb')!==_0x5e51be['type']||null!=_0x41e5f6[_0x3396ec]||(_0x41e5f6[_0x3396ec]=_0x19b322('0x185'));}return _0x41e5f6;}},{'key':_0xd367aa('0xa89'),'value':function(_0x1f4bb9){var _0x48e9f4=_0xd367aa,_0x14e873=this[_0x48e9f4('0x2d0')][_0x48e9f4('0xb79')];if(_0x1f4bb9=this[_0x48e9f4('0x68f')](_0x1f4bb9,_0x14e873),this['formReference'][_0x48e9f4('0x684')][_0x48e9f4('0xac5')](),null!=_0x1f4bb9)try{this['formReference'][_0x48e9f4('0x684')][_0x48e9f4('0x666')](_0x1f4bb9);}catch(_0x1db7fb){console[_0x48e9f4('0xc78')](_0x1db7fb);}}},{'key':_0xd367aa('0xac5'),'value':function(){this['formReference']['current']['resetFields']();}},{'key':_0xd367aa('0x666'),'value':function(_0x450f36){var _0x58722d=_0xd367aa;this[_0x58722d('0x2a0')][_0x58722d('0x684')][_0x58722d('0x666')](_0x450f36);}},{'key':'save','value':function(_0x36083b,_0x2c2cc5){var _0x21e313=_0xd367aa,_0x39df50=this,_0x5bb976=this[_0x21e313('0x2d0')],_0x3e5913=_0x5bb976[_0x21e313('0x7c7')],_0x2df346=_0x5bb976[_0x21e313('0xb79')],_0x5cbee1=_0x36083b;_0x5cbee1=_0x3e5913['forceInjectValuesBeforeSave'](_0x5cbee1);var _0x1b41a3=_0x3e5913[_0x21e313('0xa75')](_0x5cbee1);if(null===_0x1b41a3){_0x3e5913[_0x21e313('0x327')]&&(_0x5cbee1[_0x21e313('0x721')]=$('#'[_0x21e313('0x49e')](_0x3e5913[_0x21e313('0x6d8')](),_0x21e313('0xad2')))[_0x21e313('0xc8f')](_0x21e313('0x721')));var _0x186df9=null!=_0x3e5913['currentElement']?_0x3e5913['currentElement']['id']:null;null!=_0x186df9&&''!==_0x186df9&&(_0x5cbee1['id']=_0x186df9),_0x5cbee1=this[_0x21e313('0xbf')](_0x5cbee1,_0x2df346),_0x3e5913['add'](_0x5cbee1,[],function(){var _0x2cd80f=_0x21e313;return _0x3e5913[_0x2cd80f('0x715')]([]);},function(){var _0x305ed0=_0x21e313;_0x39df50['formReference']['current'][_0x305ed0('0xac5')](),_0x39df50[_0x305ed0('0xa7c')](!0x1),_0x2c2cc5();});}else this[_0x21e313('0xa7c')](_0x1b41a3);}}])&&_0x583468(_0x525c1f['prototype'],_0xeaaac6),_0x478383&&_0x583468(_0x525c1f,_0x478383),_0x5d577e;}(_0x3cfd43[_0x5a402a('0x53')][_0x5a402a('0xd04')]);_0xe54dd2[_0x5a402a('0x53')]=_0x52ad74;},{'./IceColorPick':0x34,'./IceDataGroup':0x35,'./IceLabel':0x38,'./IceSelect':0x39,'./IceSignature':0x3a,'./IceUpload':0x3e,'antd':'antd','moment':_0x322f0f('0xc23'),'react':'react'}],0x37:[function(_0x1e6136,_0x149e85,_0x13e7fd){var _0x272132=_0x322f0f;'use strict';Object['defineProperty'](_0x13e7fd,'__esModule',{'value':!0x0}),_0x13e7fd[_0x272132('0x53')]=void 0x0;var _0x989634=_0x4c8614(_0x1e6136(_0x272132('0x603'))),_0x166938=_0x1e6136(_0x272132('0x9f8')),_0x57c834=_0x4c8614(_0x1e6136(_0x272132('0x45d')));function _0x4c8614(_0x54a59e){var _0x37663a=_0x272132;return _0x54a59e&&_0x54a59e[_0x37663a('0x866')]?_0x54a59e:{'default':_0x54a59e};}function _0x2b0b12(_0x3c3fa1){var _0x132c8d=_0x272132;return(_0x2b0b12=_0x132c8d('0x67')==typeof Symbol&&'symbol'==typeof Symbol[_0x132c8d('0x303')]?function(_0x33a0e8){return typeof _0x33a0e8;}:function(_0xe8bd31){var _0xe9ce63=_0x132c8d;return _0xe8bd31&&_0xe9ce63('0x67')==typeof Symbol&&_0xe8bd31[_0xe9ce63('0xbe8')]===Symbol&&_0xe8bd31!==Symbol[_0xe9ce63('0x3ec')]?'symbol':typeof _0xe8bd31;})(_0x3c3fa1);}function _0x1b4897(){return(_0x1b4897=Object['assign']||function(_0x5251fc){var _0x4ea178=_0x3e44;for(var _0x52740f=0x1;_0x52740f\r\n]?)(\r\n|\n\r|\r|\n)/g,'');}}])&&_0x3ffa9d(_0x1f7e46[_0x434018('0x3ec')],_0x29b5d0),_0x21121e&&_0x3ffa9d(_0x1f7e46,_0x21121e),_0x15fa8e;}(_0x5afcbd[_0xc494c('0x53')][_0xc494c('0xd04')]);_0x4f3581[_0xc494c('0x53')]=_0x2a0517;},{'antd':_0x322f0f('0x9f8'),'react':'react'}],0x39:[function(_0xbd775b,_0x2fdd5e,_0x5162c1){var _0x3aab6f=_0x322f0f;'use strict';Object[_0x3aab6f('0x2cd')](_0x5162c1,_0x3aab6f('0x866'),{'value':!0x0}),_0x5162c1[_0x3aab6f('0x53')]=void 0x0;var _0x934d0d,_0x3bc6bb=(_0x934d0d=_0xbd775b(_0x3aab6f('0x603')))&&_0x934d0d[_0x3aab6f('0x866')]?_0x934d0d:{'default':_0x934d0d},_0x15315f=_0xbd775b(_0x3aab6f('0x9f8'));function _0x171442(_0x366d39){var _0x500c24=_0x3aab6f;return(_0x171442=_0x500c24('0x67')==typeof Symbol&&_0x500c24('0xd77')==typeof Symbol[_0x500c24('0x303')]?function(_0x199d7f){return typeof _0x199d7f;}:function(_0x2ea5a0){var _0x4b347d=_0x500c24;return _0x2ea5a0&&_0x4b347d('0x67')==typeof Symbol&&_0x2ea5a0[_0x4b347d('0xbe8')]===Symbol&&_0x2ea5a0!==Symbol[_0x4b347d('0x3ec')]?'symbol':typeof _0x2ea5a0;})(_0x366d39);}function _0x846ded(_0xb1aed9,_0x3187cb){var _0x9a0371=_0x3aab6f;for(var _0x5d331f=0x0;_0x5d331f<_0x3187cb[_0x9a0371('0x1d1')];_0x5d331f++){var _0x4b6a9c=_0x3187cb[_0x5d331f];_0x4b6a9c['enumerable']=_0x4b6a9c[_0x9a0371('0x836')]||!0x1,_0x4b6a9c[_0x9a0371('0x249')]=!0x0,_0x9a0371('0x9b6')in _0x4b6a9c&&(_0x4b6a9c[_0x9a0371('0xc28')]=!0x0),Object[_0x9a0371('0x2cd')](_0xb1aed9,_0x4b6a9c[_0x9a0371('0xcb6')],_0x4b6a9c);}}function _0x261012(_0x23938f,_0x4a4076){var _0x19a4cc=_0x3aab6f;return!_0x4a4076||_0x19a4cc('0x669')!==_0x171442(_0x4a4076)&&'function'!=typeof _0x4a4076?function(_0x2f7359){var _0x421a7f=_0x19a4cc;if(void 0x0===_0x2f7359)throw new ReferenceError(_0x421a7f('0xba4'));return _0x2f7359;}(_0x23938f):_0x4a4076;}function _0x4b3c6d(){var _0x4a3f83=_0x3aab6f;if('undefined'==typeof Reflect||!Reflect[_0x4a3f83('0xa71')])return!0x1;if(Reflect[_0x4a3f83('0xa71')]['sham'])return!0x1;if('function'==typeof Proxy)return!0x0;try{return Date[_0x4a3f83('0x3ec')][_0x4a3f83('0x8dc')][_0x4a3f83('0x928')](Reflect[_0x4a3f83('0xa71')](Date,[],function(){})),!0x0;}catch(_0x43d5ce){return!0x1;}}function _0x4bc424(_0x1f9084){var _0x17182b=_0x3aab6f;return(_0x4bc424=Object[_0x17182b('0x16')]?Object[_0x17182b('0x418')]:function(_0x32dc0b){var _0x49186e=_0x17182b;return _0x32dc0b[_0x49186e('0xc15')]||Object[_0x49186e('0x418')](_0x32dc0b);})(_0x1f9084);}function _0x3b06d3(_0x2d7a4e,_0xf8a874){var _0x7e53e8=_0x3aab6f;return(_0x3b06d3=Object[_0x7e53e8('0x16')]||function(_0x25daa3,_0x4494d1){var _0x1f653c=_0x7e53e8;return _0x25daa3[_0x1f653c('0xc15')]=_0x4494d1,_0x25daa3;})(_0x2d7a4e,_0xf8a874);}var _0x4fc677=_0x15315f[_0x3aab6f('0x1c0')][_0x3aab6f('0xaa5')],_0x35ff7e=function(_0x3b2516){var _0x1600b5=_0x3aab6f;!function(_0x362fb0,_0x3cf3a5){var _0x5d3bd0=_0x3e44;if(_0x5d3bd0('0x67')!=typeof _0x3cf3a5&&null!==_0x3cf3a5)throw new TypeError(_0x5d3bd0('0xc9'));_0x362fb0[_0x5d3bd0('0x3ec')]=Object[_0x5d3bd0('0xd9d')](_0x3cf3a5&&_0x3cf3a5['prototype'],{'constructor':{'value':_0x362fb0,'writable':!0x0,'configurable':!0x0}}),_0x3cf3a5&&_0x3b06d3(_0x362fb0,_0x3cf3a5);}(_0x32b884,_0x3b2516);var _0x4f142e,_0x4d1ab5,_0x2b86ac,_0x34b6de,_0x59a626=(_0x4f142e=_0x32b884,function(){var _0x3f26b9=_0x3e44,_0x2c637e,_0x2db798=_0x4bc424(_0x4f142e);if(_0x4b3c6d()){var _0x5651da=_0x4bc424(this)['constructor'];_0x2c637e=Reflect['construct'](_0x2db798,arguments,_0x5651da);}else _0x2c637e=_0x2db798[_0x3f26b9('0x7da')](this,arguments);return _0x261012(this,_0x2c637e);});function _0x32b884(_0x1176b6){var _0xf70d6a=_0x3e44,_0xd574ad;return function(_0x45311e,_0xdbd0c8){if(!(_0x45311e instanceof _0xdbd0c8))throw new TypeError('Cannot\x20call\x20a\x20class\x20as\x20a\x20function');}(this,_0x32b884),(_0xd574ad=_0x59a626[_0xf70d6a('0x928')](this,_0x1176b6))[_0xf70d6a('0x88d')]=_0x1176b6[_0xf70d6a('0x88d')],_0xd574ad;}return _0x4d1ab5=_0x32b884,(_0x2b86ac=[{'key':_0x1600b5('0x265'),'value':function(){var _0x269e9e=_0x1600b5,_0x4137fd,_0x5a5588=this[_0x269e9e('0x2d0')],_0x4ef0e3=_0x5a5588[_0x269e9e('0xb94')],_0x27cb91=_0x5a5588[_0x269e9e('0x7c7')],_0x50b97a=this[_0x269e9e('0x2d0')][_0x269e9e('0x9b6')],_0x44efbf=_0x4ef0e3[0x1];if(null!=_0x44efbf[_0x269e9e('0x5e1')]){var _0x41b7c3=''[_0x269e9e('0x49e')](_0x44efbf[_0x269e9e('0x5e1')][0x0],'_')['concat'](_0x44efbf[_0x269e9e('0x5e1')][0x1],'_')['concat'](_0x44efbf[_0x269e9e('0x5e1')][0x2]);0x4===_0x44efbf[_0x269e9e('0x5e1')][_0x269e9e('0x1d1')]&&(_0x41b7c3=''['concat'](_0x41b7c3,'_')[_0x269e9e('0x49e')](_0x44efbf[_0x269e9e('0x5e1')][0x3])),_0x4137fd=_0x27cb91[_0x269e9e('0xa0a')][_0x41b7c3];}else _0x4137fd=_0x44efbf[_0x269e9e('0x7d3')];var _0x4ee6ef=this[_0x269e9e('0xd3c')](_0x4137fd,_0x4ef0e3,_0x27cb91);if(_0x269e9e('0x9da')===_0x44efbf['type'])try{null==(_0x50b97a=JSON['parse'](_0x50b97a))&&(_0x50b97a=[]),_0x50b97a=_0x50b97a[_0x269e9e('0x4ad')](function(_0x553ad7){var _0x4f8107=_0x269e9e;return''[_0x4f8107('0x49e')](_0x553ad7);});}catch(_0x141d9c){_0x50b97a=[];}return _0x3bc6bb[_0x269e9e('0x53')]['createElement'](_0x15315f[_0x269e9e('0x1c0')],{'mode':_0x269e9e('0x9da')===_0x44efbf[_0x269e9e('0xb88')]?_0x269e9e('0x120'):void 0x0,'showSearch':!0x0,'placeholder':'Select\x20'['concat'](_0x44efbf[_0x269e9e('0x551')]),'optionFilterProp':'children','filterOption':function(_0x20ea2b,_0x31e004){var _0x132997=_0x269e9e;return null!=_0x20ea2b&&_0x31e004[_0x132997('0x551')][_0x132997('0x5d')]()[_0x132997('0x857')](_0x20ea2b[_0x132997('0x5d')]())>=0x0;},'value':_0x50b97a,'options':_0x4ee6ef,'allowClear':!0x0,'onChange':this[_0x269e9e('0x521')][_0x269e9e('0x5f')](this),'disabled':this[_0x269e9e('0x2d0')][_0x269e9e('0x2fe')]});}},{'key':'handleChange','value':function(_0x169139){var _0x192e28=_0x1600b5;_0x192e28('0x9da')===this[_0x192e28('0x2d0')]['field'][0x1]['type']?this[_0x192e28('0x88d')](JSON[_0x192e28('0x263')](_0x169139)):this[_0x192e28('0x88d')](_0x169139);}},{'key':_0x1600b5('0x917'),'value':function(_0x1ec08d){var _0x30bea2=_0x1600b5;return _0x3bc6bb[_0x30bea2('0x53')][_0x30bea2('0x914')](_0x4fc677,{'key':''['concat'](_0x1ec08d[0x0]),'value':''[_0x30bea2('0x49e')](_0x1ec08d[0x0])},_0x1ec08d[0x1]);}},{'key':'getFormSelectOptionsRemote','value':function(_0x2ca5af,_0x25ea65,_0xee6088){var _0x44ba45=_0x1600b5,_0x10cac2=[];if(Array[_0x44ba45('0x9f2')](_0x2ca5af))for(var _0x43b506=0x0;_0x43b506<_0x2ca5af['length'];_0x43b506++)_0x10cac2[_0x44ba45('0x8cd')]({'label':_0x2ca5af[_0x43b506][0x1],'value':_0x2ca5af[_0x43b506][0x0]});else for(var _0x31122e in _0x2ca5af)_0x10cac2[_0x44ba45('0x8cd')]({'label':_0x2ca5af[_0x31122e],'value':_0x31122e});return _0x10cac2;}}])&&_0x846ded(_0x4d1ab5[_0x1600b5('0x3ec')],_0x2b86ac),_0x34b6de&&_0x846ded(_0x4d1ab5,_0x34b6de),_0x32b884;}(_0x3bc6bb[_0x3aab6f('0x53')]['Component']);_0x5162c1[_0x3aab6f('0x53')]=_0x35ff7e;},{'antd':'antd','react':_0x322f0f('0x603')}],0x3a:[function(_0x3c587d,_0x553354,_0x5a5641){var _0x5470f8=_0x322f0f;'use strict';Object[_0x5470f8('0x2cd')](_0x5a5641,_0x5470f8('0x866'),{'value':!0x0}),_0x5a5641[_0x5470f8('0x53')]=void 0x0;var _0x22587b=_0x1f876d(_0x3c587d(_0x5470f8('0x603'))),_0x3009ec=_0x1f876d(_0x3c587d(_0x5470f8('0xcb8'))),_0x4bd9e3=_0x3c587d(_0x5470f8('0x9f8')),_0x4167d2=_0x3c587d(_0x5470f8('0x8c3'));function _0x1f876d(_0x35fc55){return _0x35fc55&&_0x35fc55['__esModule']?_0x35fc55:{'default':_0x35fc55};}function _0x5d4660(_0x33da9f){var _0xfc2283=_0x5470f8;return(_0x5d4660=_0xfc2283('0x67')==typeof Symbol&&'symbol'==typeof Symbol[_0xfc2283('0x303')]?function(_0x40cc1a){return typeof _0x40cc1a;}:function(_0x42dd70){var _0x84f8e3=_0xfc2283;return _0x42dd70&&'function'==typeof Symbol&&_0x42dd70['constructor']===Symbol&&_0x42dd70!==Symbol[_0x84f8e3('0x3ec')]?'symbol':typeof _0x42dd70;})(_0x33da9f);}function _0x570027(_0x26a10b,_0x3f2650){var _0x26e40b=_0x5470f8,_0x14269=Object['keys'](_0x26a10b);if(Object['getOwnPropertySymbols']){var _0x392c30=Object[_0x26e40b('0xdbc')](_0x26a10b);_0x3f2650&&(_0x392c30=_0x392c30['filter'](function(_0x3ae724){var _0x3d2fbb=_0x26e40b;return Object[_0x3d2fbb('0x3e7')](_0x26a10b,_0x3ae724)['enumerable'];})),_0x14269[_0x26e40b('0x8cd')]['apply'](_0x14269,_0x392c30);}return _0x14269;}function _0x488df8(_0x34bf5f){var _0x2f2916=_0x5470f8;for(var _0x3a1915=0x1;_0x3a19150xa&&_0x462d7e[_0x2b6dd9('0xc2')](_0x53bf0d);}}},{'key':'hide','value':function(){var _0x2a8c5b=_0x7b6b5f;this[_0x2a8c5b('0x4f8')]({'visible':!0x1});}},{'key':'clear','value':function(){var _0x1e6ddc=_0x7b6b5f;this['signature'][_0x1e6ddc('0x4c')]();}},{'key':_0x7b6b5f('0xb0b'),'value':function(){var _0x9f6229=_0x7b6b5f,_0x2d0964=this[_0x9f6229('0x97e')][_0x9f6229('0x952')]('image/png');this[_0x9f6229('0x88d')](_0x2d0964),this[_0x9f6229('0x4f8')]({'visible':!0x1});}},{'key':'render','value':function(){var _0x44e8fd=_0x7b6b5f,_0x54042a=this,_0x4063b5=this['props']['readOnly'];return _0x22587b[_0x44e8fd('0x53')][_0x44e8fd('0x914')](_0x22587b['default'][_0x44e8fd('0x6a5')],null,_0x22587b[_0x44e8fd('0x53')][_0x44e8fd('0x914')](_0x4bd9e3['Modal'],{'visible':this[_0x44e8fd('0x97c')][_0x44e8fd('0x7a8')],'title':_0x44e8fd('0x9a1'),'maskClosable':!0x1,'centered':!0x0,'width':0x12c,'onCancel':function(){_0x54042a['hide']();},'footer':[_0x22587b[_0x44e8fd('0x53')][_0x44e8fd('0x914')](_0x4bd9e3[_0x44e8fd('0x5bf')],{'key':_0x44e8fd('0x5c1'),'onClick':function(){var _0x3bd3fa=_0x44e8fd;_0x54042a[_0x3bd3fa('0x79b')]();}},'Cancel'),_0x22587b[_0x44e8fd('0x53')]['createElement'](_0x4bd9e3[_0x44e8fd('0x5bf')],{'key':_0x44e8fd('0x4c'),'disabled':_0x4063b5,'type':_0x44e8fd('0x5f6'),'onClick':function(){var _0x30f11c=_0x44e8fd;_0x4063b5||_0x54042a[_0x30f11c('0x4c')]();}},_0x44e8fd('0x2b')),_0x22587b[_0x44e8fd('0x53')][_0x44e8fd('0x914')](_0x4bd9e3['Button'],{'key':'ok','disabled':_0x4063b5,'type':_0x44e8fd('0x754'),'onClick':function(){var _0x57788a=_0x44e8fd;_0x4063b5||_0x54042a[_0x57788a('0xb0b')]();}},'Submit')]},_0x22587b[_0x44e8fd('0x53')][_0x44e8fd('0x914')](_0x3009ec[_0x44e8fd('0x53')],{'ref':function(_0xe1024b){var _0x4df8e8=_0x44e8fd;_0x54042a[_0x4df8e8('0x97e')]=_0xe1024b,_0x54042a[_0x4df8e8('0x8ae')](_0xe1024b);},'canvasProps':_0x488df8({'width':0xfa,'height':0xc8,'className':_0x44e8fd('0x64e')},_0x4063b5?{'readOnly':_0x4063b5}:{})})),_0x22587b[_0x44e8fd('0x53')][_0x44e8fd('0x914')](_0x4bd9e3['Tag'],{'color':_0x44e8fd('0x4c6'),'style':{'cursor':_0x44e8fd('0x38')},'onClick':function(){var _0x21ffc6=_0x44e8fd;_0x54042a[_0x21ffc6('0x388')]();}},_0x22587b[_0x44e8fd('0x53')][_0x44e8fd('0x914')](_0x4167d2[_0x44e8fd('0xd2a')],null),'\x20',_0x44e8fd('0x308')));}}])&&_0x3f84bd(_0x5c75de[_0x7b6b5f('0x3ec')],_0x15e62b),_0x1032ae&&_0x3f84bd(_0x5c75de,_0x1032ae),_0x15c376;}(_0x22587b[_0x5470f8('0x53')][_0x5470f8('0xd04')]);_0x5a5641[_0x5470f8('0x53')]=_0x463322;},{'@ant-design/icons':_0x322f0f('0x8c3'),'antd':'antd','react':'react','react-signature-canvas':0x171}],0x3b:[function(_0x2f325e,_0x261a1d,_0x36134f){var _0x2b4f5c=_0x322f0f;'use strict';Object[_0x2b4f5c('0x2cd')](_0x36134f,_0x2b4f5c('0x866'),{'value':!0x0}),_0x36134f['default']=void 0x0;var _0x4acaca=_0x1d4ad9(_0x2f325e(_0x2b4f5c('0x603'))),_0x9b330e=_0x2f325e(_0x2b4f5c('0x9f8')),_0x4781df=_0x1d4ad9(_0x2f325e(_0x2b4f5c('0x45d')));function _0x1d4ad9(_0x11a00b){var _0x2de8e9=_0x2b4f5c;return _0x11a00b&&_0x11a00b[_0x2de8e9('0x866')]?_0x11a00b:{'default':_0x11a00b};}function _0x5c811c(_0x35ca6e){var _0xcdf06e=_0x2b4f5c;return(_0x5c811c='function'==typeof Symbol&&_0xcdf06e('0xd77')==typeof Symbol[_0xcdf06e('0x303')]?function(_0x2b5a09){return typeof _0x2b5a09;}:function(_0xfd741){var _0x28c903=_0xcdf06e;return _0xfd741&&_0x28c903('0x67')==typeof Symbol&&_0xfd741[_0x28c903('0xbe8')]===Symbol&&_0xfd741!==Symbol[_0x28c903('0x3ec')]?_0x28c903('0xd77'):typeof _0xfd741;})(_0x35ca6e);}function _0x4eb632(_0x2e13b8){return function(_0x5a2f21){var _0xd5e689=_0x3e44;if(Array[_0xd5e689('0x9f2')](_0x5a2f21))return _0x238237(_0x5a2f21);}(_0x2e13b8)||function(_0x184088){var _0x49bb7f=_0x3e44;if('undefined'!=typeof Symbol&&Symbol[_0x49bb7f('0x303')]in Object(_0x184088))return Array[_0x49bb7f('0x868')](_0x184088);}(_0x2e13b8)||_0x7c3395(_0x2e13b8)||function(){var _0x2cb0f5=_0x3e44;throw new TypeError(_0x2cb0f5('0x54a'));}();}function _0x13e2d6(_0x6b3f3e,_0x425162){return function(_0x4ca770){if(Array['isArray'](_0x4ca770))return _0x4ca770;}(_0x6b3f3e)||function(_0x519efc,_0x4f7eed){var _0x3f38e4=_0x3e44;if(_0x3f38e4('0x396')==typeof Symbol||!(Symbol[_0x3f38e4('0x303')]in Object(_0x519efc)))return;var _0x4741be=[],_0xd7dd5=!0x0,_0x26ccf6=!0x1,_0x3c3f33=void 0x0;try{for(var _0x2a4016,_0x34a490=_0x519efc[Symbol[_0x3f38e4('0x303')]]();!(_0xd7dd5=(_0x2a4016=_0x34a490[_0x3f38e4('0x71e')]())['done'])&&(_0x4741be['push'](_0x2a4016['value']),!_0x4f7eed||_0x4741be[_0x3f38e4('0x1d1')]!==_0x4f7eed);_0xd7dd5=!0x0);}catch(_0x5ea22b){_0x26ccf6=!0x0,_0x3c3f33=_0x5ea22b;}finally{try{_0xd7dd5||null==_0x34a490[_0x3f38e4('0x107')]||_0x34a490['return']();}finally{if(_0x26ccf6)throw _0x3c3f33;}}return _0x4741be;}(_0x6b3f3e,_0x425162)||_0x7c3395(_0x6b3f3e,_0x425162)||function(){var _0x13b3cd=_0x3e44;throw new TypeError(_0x13b3cd('0x581'));}();}function _0x7c3395(_0x4a24c8,_0xd95246){var _0x5e48bd=_0x2b4f5c;if(_0x4a24c8){if('string'==typeof _0x4a24c8)return _0x238237(_0x4a24c8,_0xd95246);var _0x81f61d=Object[_0x5e48bd('0x3ec')][_0x5e48bd('0x8dc')][_0x5e48bd('0x928')](_0x4a24c8)[_0x5e48bd('0x63a')](0x8,-0x1);return'Object'===_0x81f61d&&_0x4a24c8[_0x5e48bd('0xbe8')]&&(_0x81f61d=_0x4a24c8[_0x5e48bd('0xbe8')][_0x5e48bd('0x9e')]),_0x5e48bd('0x410')===_0x81f61d||_0x5e48bd('0x2d')===_0x81f61d?Array[_0x5e48bd('0x868')](_0x81f61d):_0x5e48bd('0x86e')===_0x81f61d||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/['test'](_0x81f61d)?_0x238237(_0x4a24c8,_0xd95246):void 0x0;}}function _0x238237(_0x580a3f,_0x4431c7){var _0x54e037=_0x2b4f5c;(null==_0x4431c7||_0x4431c7>_0x580a3f[_0x54e037('0x1d1')])&&(_0x4431c7=_0x580a3f['length']);for(var _0x119158=0x0,_0x14a533=new Array(_0x4431c7);_0x119158<_0x4431c7;_0x119158++)_0x14a533[_0x119158]=_0x580a3f[_0x119158];return _0x14a533;}function _0x1f6769(_0x24b847,_0x57466c,_0x26b3ef,_0x3bb550,_0x49909b,_0x46b214,_0x503e72){var _0x15b6f0=_0x2b4f5c;try{var _0x33faef=_0x24b847[_0x46b214](_0x503e72),_0x190cb8=_0x33faef[_0x15b6f0('0x9b6')];}catch(_0x571edf){return void _0x26b3ef(_0x571edf);}_0x33faef[_0x15b6f0('0x6c')]?_0x57466c(_0x190cb8):Promise[_0x15b6f0('0x578')](_0x190cb8)['then'](_0x3bb550,_0x49909b);}function _0x30ba4a(_0x3e7884){return function(){var _0x1a72c3=this,_0x1dbc26=arguments;return new Promise(function(_0x5bae38,_0x49a86c){var _0x306c5a=_0x3e44,_0x319114=_0x3e7884[_0x306c5a('0x7da')](_0x1a72c3,_0x1dbc26);function _0x583a95(_0x31601e){var _0x4b9d68=_0x306c5a;_0x1f6769(_0x319114,_0x5bae38,_0x49a86c,_0x583a95,_0x30359f,_0x4b9d68('0x71e'),_0x31601e);}function _0x30359f(_0x389a50){var _0x4841b8=_0x306c5a;_0x1f6769(_0x319114,_0x5bae38,_0x49a86c,_0x583a95,_0x30359f,_0x4841b8('0xb4a'),_0x389a50);}_0x583a95(void 0x0);});};}function _0x291f6b(_0xff2d1d,_0x151d65){var _0x119177=_0x2b4f5c,_0x32deb6=Object[_0x119177('0x882')](_0xff2d1d);if(Object[_0x119177('0xdbc')]){var _0x34a443=Object[_0x119177('0xdbc')](_0xff2d1d);_0x151d65&&(_0x34a443=_0x34a443[_0x119177('0x5c4')](function(_0x35deca){var _0x25971d=_0x119177;return Object[_0x25971d('0x3e7')](_0xff2d1d,_0x35deca)[_0x25971d('0x836')];})),_0x32deb6[_0x119177('0x8cd')][_0x119177('0x7da')](_0x32deb6,_0x34a443);}return _0x32deb6;}function _0x411f94(_0x1f3c42,_0x43b55f,_0x4e1009){var _0x3ceca1=_0x2b4f5c;return _0x43b55f in _0x1f3c42?Object[_0x3ceca1('0x2cd')](_0x1f3c42,_0x43b55f,{'value':_0x4e1009,'enumerable':!0x0,'configurable':!0x0,'writable':!0x0}):_0x1f3c42[_0x43b55f]=_0x4e1009,_0x1f3c42;}function _0x456f06(_0x49f6ca,_0x25ec21){var _0x2faec1=_0x2b4f5c;for(var _0x302e64=0x0;_0x302e64<_0x25ec21['length'];_0x302e64++){var _0x46e035=_0x25ec21[_0x302e64];_0x46e035[_0x2faec1('0x836')]=_0x46e035[_0x2faec1('0x836')]||!0x1,_0x46e035[_0x2faec1('0x249')]=!0x0,_0x2faec1('0x9b6')in _0x46e035&&(_0x46e035[_0x2faec1('0xc28')]=!0x0),Object[_0x2faec1('0x2cd')](_0x49f6ca,_0x46e035[_0x2faec1('0xcb6')],_0x46e035);}}function _0x1da195(_0x42d835,_0x3dc68a){var _0x1ab9e3=_0x2b4f5c;return!_0x3dc68a||_0x1ab9e3('0x669')!==_0x5c811c(_0x3dc68a)&&_0x1ab9e3('0x67')!=typeof _0x3dc68a?function(_0x49cdaf){var _0x12bd98=_0x1ab9e3;if(void 0x0===_0x49cdaf)throw new ReferenceError(_0x12bd98('0xba4'));return _0x49cdaf;}(_0x42d835):_0x3dc68a;}function _0x4a1d39(){var _0x5e7146=_0x2b4f5c;if('undefined'==typeof Reflect||!Reflect[_0x5e7146('0xa71')])return!0x1;if(Reflect[_0x5e7146('0xa71')][_0x5e7146('0x886')])return!0x1;if(_0x5e7146('0x67')==typeof Proxy)return!0x0;try{return Date[_0x5e7146('0x3ec')][_0x5e7146('0x8dc')][_0x5e7146('0x928')](Reflect['construct'](Date,[],function(){})),!0x0;}catch(_0x12e994){return!0x1;}}function _0x2d0a18(_0x442842){var _0x4b7e4f=_0x2b4f5c;return(_0x2d0a18=Object[_0x4b7e4f('0x16')]?Object[_0x4b7e4f('0x418')]:function(_0x1cd278){var _0x3e8cb3=_0x4b7e4f;return _0x1cd278['__proto__']||Object[_0x3e8cb3('0x418')](_0x1cd278);})(_0x442842);}function _0x587a2b(_0x143fba,_0x2aa217){var _0x4fb357=_0x2b4f5c;return(_0x587a2b=Object[_0x4fb357('0x16')]||function(_0xd477f,_0x3e8ff6){return _0xd477f['__proto__']=_0x3e8ff6,_0xd477f;})(_0x143fba,_0x2aa217);}var _0x542bf1=_0x9b330e[_0x2b4f5c('0x8cb')][_0x2b4f5c('0xce9')],_0xe431b3=function(_0xd44344){var _0x19d8b7=_0x2b4f5c;!function(_0x533000,_0x2759ee){var _0xf3e13f=_0x3e44;if('function'!=typeof _0x2759ee&&null!==_0x2759ee)throw new TypeError(_0xf3e13f('0xc9'));_0x533000[_0xf3e13f('0x3ec')]=Object[_0xf3e13f('0xd9d')](_0x2759ee&&_0x2759ee[_0xf3e13f('0x3ec')],{'constructor':{'value':_0x533000,'writable':!0x0,'configurable':!0x0}}),_0x2759ee&&_0x587a2b(_0x533000,_0x2759ee);}(_0x22a939,_0xd44344);var _0x34c51b,_0x56e24a,_0x39e063,_0x4b2da9,_0x515a86,_0x500d73,_0x5598c5=(_0x34c51b=_0x22a939,function(){var _0x397275=_0x3e44,_0x29774c,_0x30b415=_0x2d0a18(_0x34c51b);if(_0x4a1d39()){var _0x4fbf75=_0x2d0a18(this)['constructor'];_0x29774c=Reflect[_0x397275('0xa71')](_0x30b415,arguments,_0x4fbf75);}else _0x29774c=_0x30b415['apply'](this,arguments);return _0x1da195(this,_0x29774c);});function _0x22a939(_0x34b6dd){var _0x398128=_0x3e44,_0x11dd84;!function(_0x56ec1e,_0x596d0d){if(!(_0x56ec1e instanceof _0x596d0d))throw new TypeError('Cannot\x20call\x20a\x20class\x20as\x20a\x20function');}(this,_0x22a939),(_0x11dd84=_0x5598c5[_0x398128('0x928')](this,_0x34b6dd))[_0x398128('0x88d')]=_0x34b6dd[_0x398128('0x88d')];var _0x4d6b62=_0x11dd84['props'][_0x398128('0xb79')][_0x398128('0x4ad')](function(_0x4d4f0f){var _0x389ca2=_0x398128;return function(_0x5c5b0e){var _0x2cc10c=_0x3e44;for(var _0x40adae=0x1;_0x40adae0x0&&_0x4acaca['default'][_0x2ed28c('0x914')](_0x9b330e[_0x2ed28c('0x5bf')],{'onClick':function(){var _0x14675a=_0x2ed28c;return _0x314a56[_0x14675a('0x292')]();}},_0x1006c0['gt'](_0x2ed28c('0xb4'))))),_0x4acaca[_0x2ed28c('0x53')][_0x2ed28c('0x914')](_0x9b330e[_0x2ed28c('0x70b')],{'className':_0x2ed28c('0x20a'),'span':0xc,'style':{'textAlign':'right'}},_0x4acaca['default'][_0x2ed28c('0x914')](_0x9b330e[_0x2ed28c('0xc89')],null,_0x4acaca['default'][_0x2ed28c('0x914')](_0x9b330e[_0x2ed28c('0x5bf')],{'onClick':function(){var _0x59e08c=_0x2ed28c;return _0x314a56['props'][_0x59e08c('0x3de')]();}},_0x1006c0['gt'](_0x2ed28c('0x440'))),_0x4acaca[_0x2ed28c('0x53')][_0x2ed28c('0x914')](_0x9b330e[_0x2ed28c('0x5bf')],{'type':'primary','loading':this[_0x2ed28c('0x97c')][_0x2ed28c('0xb9c')],'onClick':function(){var _0x41e816=_0x2ed28c;return _0x314a56[_0x41e816('0xc62')]();}},_0x1006c0['gt']('Save')))))));}},{'key':_0x19d8b7('0xc62'),'value':(_0x500d73=_0x30ba4a(regeneratorRuntime['mark'](function _0x260d14(){var _0x1afb02=_0x19d8b7,_0x67f52d,_0x179dee=this;return regeneratorRuntime[_0x1afb02('0x556')](function(_0x2acc1f){var _0x17eea1=_0x1afb02;for(;;)switch(_0x2acc1f[_0x17eea1('0x292')]=_0x2acc1f[_0x17eea1('0x71e')]){case 0x0:return this['setState']({'loading':!0x0}),_0x2acc1f[_0x17eea1('0x71e')]=0x3,this['validateFields'](!0x0);case 0x3:(_0x67f52d=_0x2acc1f[_0x17eea1('0x74d')])&&this[_0x17eea1('0xb0b')](_0x67f52d,function(){var _0x12b9db=_0x17eea1;return _0x179dee[_0x12b9db('0x2d0')][_0x12b9db('0x3de')]();}),this['setState']({'loading':!0x1});case 0x6:case _0x17eea1('0x8e0'):return _0x2acc1f[_0x17eea1('0x3d9')]();}},_0x260d14,this);})),function(){return _0x500d73['apply'](this,arguments);})},{'key':_0x19d8b7('0xb0b'),'value':function(_0x32559f,_0x23fd2b){var _0x2a3a3d=_0x19d8b7,_0x585439=this,_0x534278=this['props'][_0x2a3a3d('0x7c7')];_0x534278[_0x2a3a3d('0x3fb')](_0x32559f,[],function(){return _0x534278['get']([]);},function(){_0x585439['resetFields'](),_0x585439['showError'](!0x1),_0x23fd2b();});}},{'key':_0x19d8b7('0xa89'),'value':function(_0x42e5aa){var _0x2f31e0=_0x19d8b7,_0x16b274=this;this[_0x2f31e0('0x97c')][_0x2f31e0('0x4d8')][_0x2f31e0('0x7ed')](function(_0x5f3dc7){var _0x370871=_0x2f31e0,_0x5ae272={};_0x5f3dc7[_0x370871('0xb79')][_0x370871('0x7ed')](function(_0x32fa8d){var _0xe921ea=_0x13e2d6(_0x32fa8d,0x1)[0x0];_0x5ae272[_0xe921ea]=_0x42e5aa[_0xe921ea];}),_0x16b274[_0x370871('0xa58')](_0x5f3dc7['ref'],_0x5f3dc7[_0x370871('0xb79')],_0x5ae272);});}},{'key':_0x19d8b7('0xa58'),'value':function(_0x26bbc3,_0x5e2e5d,_0x1683bf){var _0x91a769=_0x19d8b7;if(_0x1683bf=this[_0x91a769('0x68f')](_0x1683bf,_0x5e2e5d),_0x26bbc3[_0x91a769('0x684')][_0x91a769('0xac5')](),null!=_0x1683bf)try{_0x26bbc3[_0x91a769('0x684')][_0x91a769('0x666')](_0x1683bf);}catch(_0x27c254){console['log'](_0x27c254);}}},{'key':_0x19d8b7('0x77b'),'value':(_0x515a86=_0x30ba4a(regeneratorRuntime[_0x19d8b7('0xc3a')](function _0x43d22e(_0x3076f7){var _0x396d74=_0x19d8b7,_0x275b8d,_0x1ca681,_0x49f770,_0x5f1e65,_0xcfefd0,_0x253bac,_0x4ed7a8,_0x2ef5fb,_0x250a94;return regeneratorRuntime[_0x396d74('0x556')](function(_0x510adf){var _0x54a1f0=_0x396d74;for(;;)switch(_0x510adf[_0x54a1f0('0x292')]=_0x510adf[_0x54a1f0('0x71e')]){case 0x0:return _0x275b8d=this[_0x54a1f0('0x2d0')]['adapter'],_0x1ca681=_0x3076f7?this[_0x54a1f0('0x97c')]['steps']:this['state'][_0x54a1f0('0x4d8')]['slice'](0x0,this[_0x54a1f0('0x97c')][_0x54a1f0('0x684')]+0x1),_0x49f770=_0x1ca681[_0x54a1f0('0x4ad')](function(_0x2336bd){var _0x22e224=_0x54a1f0;return _0x2336bd[_0x22e224('0x40d')][_0x22e224('0x684')][_0x22e224('0x77b')]()[_0x22e224('0x577')](function(_0x2abb97){var _0x23c3e2=_0x22e224;return!!_0x2336bd[_0x23c3e2('0x40d')][_0x23c3e2('0x684')][_0x23c3e2('0x3a5')]()&&_0x2abb97;})['catch'](function(){return!0x1;});}),_0x510adf[_0x54a1f0('0x71e')]=0x5,Promise[_0x54a1f0('0x22b')](_0x49f770);case 0x5:if(_0x5f1e65=_0x510adf['sent'],!((_0xcfefd0=_0x5f1e65[_0x54a1f0('0x11')](function(_0x7fc3a7){return!0x1===_0x7fc3a7;}))>=0x0)){_0x510adf['next']=0xa;break;}return this[_0x54a1f0('0x4f8')]({'current':_0xcfefd0}),_0x510adf[_0x54a1f0('0x9c1')](_0x54a1f0('0x107'),!0x1);case 0xa:if(_0x253bac=Object[_0x54a1f0('0x7df')][_0x54a1f0('0x7da')](Object,[{}][_0x54a1f0('0x49e')](_0x4eb632(_0x5f1e65))),_0x253bac=_0x275b8d[_0x54a1f0('0x9e9')](_0x253bac),null===(_0x4ed7a8=_0x275b8d[_0x54a1f0('0xa75')](_0x253bac))){_0x510adf[_0x54a1f0('0x71e')]=0x10;break;}return this[_0x54a1f0('0xa7c')](_0x4ed7a8),_0x510adf[_0x54a1f0('0x9c1')](_0x54a1f0('0x107'),!0x1);case 0x10:return _0x275b8d[_0x54a1f0('0x327')]&&(_0x253bac['csrf']=$('#'['concat'](_0x275b8d[_0x54a1f0('0x6d8')](),_0x54a1f0('0xad2')))[_0x54a1f0('0xc8f')](_0x54a1f0('0x721'))),null!=(_0x2ef5fb=null!=_0x275b8d[_0x54a1f0('0xc18')]?_0x275b8d[_0x54a1f0('0xc18')]['id']:null)&&''!==_0x2ef5fb&&(_0x253bac['id']=_0x2ef5fb),_0x250a94=[][_0x54a1f0('0x49e')][_0x54a1f0('0x7da')]([],this[_0x54a1f0('0x97c')]['steps'][_0x54a1f0('0x4ad')](function(_0x5580db){var _0x4ff491=_0x54a1f0;return _0x5580db[_0x4ff491('0xb79')];})),_0x510adf[_0x54a1f0('0x9c1')](_0x54a1f0('0x107'),this['formFieldsToData'](_0x253bac,_0x250a94));case 0x15:case'end':return _0x510adf[_0x54a1f0('0x3d9')]();}},_0x43d22e,this);})),function(_0x5a3c65){var _0x5d5d07=_0x19d8b7;return _0x515a86[_0x5d5d07('0x7da')](this,arguments);})},{'key':_0x19d8b7('0xaf1'),'value':function(_0x4aa3f4,_0x4d88ce,_0x7a8bc9){var _0x2ebae4=_0x19d8b7,_0x22095e=this[_0x2ebae4('0x2d0')][_0x2ebae4('0x7c7')],_0xa008ee=_0x7a8bc9;_0xa008ee=_0x22095e[_0x2ebae4('0x9e9')](_0xa008ee);var _0x49de45=_0x22095e[_0x2ebae4('0xa75')](_0xa008ee);if(null===_0x49de45){_0x22095e[_0x2ebae4('0x327')]&&(_0xa008ee[_0x2ebae4('0x721')]=$('#'[_0x2ebae4('0x49e')](_0x22095e[_0x2ebae4('0x6d8')](),_0x2ebae4('0xad2')))['data'](_0x2ebae4('0x721')));var _0x337eca=null!=_0x22095e[_0x2ebae4('0xc18')]?_0x22095e[_0x2ebae4('0xc18')]['id']:null;return null!=_0x337eca&&''!==_0x337eca&&(_0xa008ee['id']=_0x337eca),this[_0x2ebae4('0xbf')](_0xa008ee,_0x4d88ce);}_0x4aa3f4[_0x2ebae4('0x684')]['showError'](_0x49de45);}},{'key':_0x19d8b7('0xa7c'),'value':function(_0x12f089){var _0x591346=_0x19d8b7;this['state'][_0x591346('0x4d8')]['forEach'](function(_0x128483){var _0x47c768=_0x591346;return _0x128483['ref'][_0x47c768('0x684')][_0x47c768('0xa7c')](_0x12f089);});}},{'key':_0x19d8b7('0xac5'),'value':function(){var _0x76be5d=_0x19d8b7;this['state'][_0x76be5d('0x4d8')][_0x76be5d('0x7ed')](function(_0x2bd075){var _0x220ce5=_0x76be5d;return _0x2bd075['ref']['current'][_0x220ce5('0xac5')]();});}},{'key':_0x19d8b7('0x233'),'value':function(){var _0x507add=_0x19d8b7;this['state'][_0x507add('0x4d8')][_0x507add('0x7ed')](function(_0x486247){var _0x3d5fe6=_0x507add;return _0x486247['ref'][_0x3d5fe6('0x684')]['hideError']();});}},{'key':_0x19d8b7('0xb32'),'value':function(){var _0x367443=_0x19d8b7;return this[_0x367443('0x97c')][_0x367443('0x4d8')][_0x367443('0xc16')](function(_0x48cd1f,_0x1a124d){var _0x5dcc6c=_0x367443;return _0x48cd1f&&null!=_0x1a124d[_0x5dcc6c('0x40d')][_0x5dcc6c('0x684')];},!0x0);}}])&&_0x456f06(_0x56e24a[_0x19d8b7('0x3ec')],_0x39e063),_0x4b2da9&&_0x456f06(_0x56e24a,_0x4b2da9),_0x22a939;}(_0x4781df[_0x2b4f5c('0x53')]);_0x36134f['default']=_0xe431b3;},{'./IceForm':0x36,'antd':_0x322f0f('0x9f8'),'react':'react'}],0x3c:[function(_0xa0cd8b,_0x5196fe,_0x524a10){var _0x22f191=_0x322f0f;'use strict';Object[_0x22f191('0x2cd')](_0x524a10,_0x22f191('0x866'),{'value':!0x0}),_0x524a10[_0x22f191('0x53')]=void 0x0;var _0x4d9700=_0x456b70(_0xa0cd8b('react')),_0x52550c=_0xa0cd8b(_0x22f191('0x9f8')),_0x233421=_0x456b70(_0xa0cd8b(_0x22f191('0xa1a'))),_0x18e476=_0x456b70(_0xa0cd8b('./IceStepForm'));function _0x456b70(_0x28b979){var _0x3ab34b=_0x22f191;return _0x28b979&&_0x28b979[_0x3ab34b('0x866')]?_0x28b979:{'default':_0x28b979};}function _0x5f3d95(_0x553c04){var _0x5e5d19=_0x22f191;return(_0x5f3d95='function'==typeof Symbol&&'symbol'==typeof Symbol[_0x5e5d19('0x303')]?function(_0xe193da){return typeof _0xe193da;}:function(_0x594958){var _0x3c9004=_0x5e5d19;return _0x594958&&_0x3c9004('0x67')==typeof Symbol&&_0x594958[_0x3c9004('0xbe8')]===Symbol&&_0x594958!==Symbol[_0x3c9004('0x3ec')]?_0x3c9004('0xd77'):typeof _0x594958;})(_0x553c04);}function _0x4e6dbb(_0x3e4bc6,_0x49995b){var _0x3f201e=_0x22f191;for(var _0x536051=0x0;_0x536051<_0x49995b['length'];_0x536051++){var _0x20d779=_0x49995b[_0x536051];_0x20d779[_0x3f201e('0x836')]=_0x20d779[_0x3f201e('0x836')]||!0x1,_0x20d779['configurable']=!0x0,_0x3f201e('0x9b6')in _0x20d779&&(_0x20d779[_0x3f201e('0xc28')]=!0x0),Object[_0x3f201e('0x2cd')](_0x3e4bc6,_0x20d779[_0x3f201e('0xcb6')],_0x20d779);}}function _0x19d3ac(_0x4b52e1,_0x32c238){var _0x25a6fc=_0x22f191;return!_0x32c238||'object'!==_0x5f3d95(_0x32c238)&&_0x25a6fc('0x67')!=typeof _0x32c238?function(_0xf05f84){var _0x16adb9=_0x25a6fc;if(void 0x0===_0xf05f84)throw new ReferenceError(_0x16adb9('0xba4'));return _0xf05f84;}(_0x4b52e1):_0x32c238;}function _0x117f83(){var _0x5a3f63=_0x22f191;if(_0x5a3f63('0x396')==typeof Reflect||!Reflect['construct'])return!0x1;if(Reflect[_0x5a3f63('0xa71')]['sham'])return!0x1;if(_0x5a3f63('0x67')==typeof Proxy)return!0x0;try{return Date[_0x5a3f63('0x3ec')][_0x5a3f63('0x8dc')][_0x5a3f63('0x928')](Reflect['construct'](Date,[],function(){})),!0x0;}catch(_0x56ab5a){return!0x1;}}function _0x2ef1e0(_0x3fbecc){var _0x48a76f=_0x22f191;return(_0x2ef1e0=Object[_0x48a76f('0x16')]?Object['getPrototypeOf']:function(_0x5449c5){var _0x35cdb=_0x48a76f;return _0x5449c5[_0x35cdb('0xc15')]||Object[_0x35cdb('0x418')](_0x5449c5);})(_0x3fbecc);}function _0x12f6de(_0x3fbb39,_0x1c0ff3){var _0x6bfce7=_0x22f191;return(_0x12f6de=Object[_0x6bfce7('0x16')]||function(_0x4be2fe,_0x1da0c2){return _0x4be2fe['__proto__']=_0x1da0c2,_0x4be2fe;})(_0x3fbb39,_0x1c0ff3);}var _0x3e12f8=function(_0x550640){!function(_0x38c337,_0x40bc10){var _0x407f83=_0x3e44;if('function'!=typeof _0x40bc10&&null!==_0x40bc10)throw new TypeError(_0x407f83('0xc9'));_0x38c337['prototype']=Object[_0x407f83('0xd9d')](_0x40bc10&&_0x40bc10['prototype'],{'constructor':{'value':_0x38c337,'writable':!0x0,'configurable':!0x0}}),_0x40bc10&&_0x12f6de(_0x38c337,_0x40bc10);}(_0x102dea,_0x550640);var _0x50b567,_0x6e1d6,_0x7a56e,_0x4b1715,_0xcec7d=(_0x50b567=_0x102dea,function(){var _0xdd796d=_0x3e44,_0x36b11d,_0xbff461=_0x2ef1e0(_0x50b567);if(_0x117f83()){var _0x1b8a29=_0x2ef1e0(this)[_0xdd796d('0xbe8')];_0x36b11d=Reflect['construct'](_0xbff461,arguments,_0x1b8a29);}else _0x36b11d=_0xbff461['apply'](this,arguments);return _0x19d3ac(this,_0x36b11d);});function _0x102dea(_0x309313){var _0x171ebb=_0x3e44,_0x12d2e8;return function(_0x4f3c1a,_0x297c42){var _0x22cb76=_0x3e44;if(!(_0x4f3c1a instanceof _0x297c42))throw new TypeError(_0x22cb76('0xc2c'));}(this,_0x102dea),(_0x12d2e8=_0xcec7d[_0x171ebb('0x928')](this,_0x309313))[_0x171ebb('0x9c3')]=0x352,_0x12d2e8;}return _0x6e1d6=_0x102dea,(_0x7a56e=[{'key':'show','value':function(_0x4f7035){var _0x4f3359=_0x3e44,_0x29d839=this;this[_0x4f3359('0x2d0')][_0x4f3359('0x7c7')][_0x4f3359('0xa04')]=this[_0x4f3359('0x2d0')][_0x4f3359('0x7c7')][_0x4f3359('0xbb0')]?this['props']['adapter'][_0x4f3359('0xbb0')](_0x4f7035):function(_0x2168ff,_0x374fe8){return _0x374fe8;},_0x4f7035?(this[_0x4f3359('0x4f8')]({'visible':!0x0}),this['iceFormReference'][_0x4f3359('0x684')]&&this['iceFormReference']['current'][_0x4f3359('0xb32')]()?(this['iceFormReference']['current'][_0x4f3359('0xd68')](0x0),this[_0x4f3359('0xd64')][_0x4f3359('0x684')][_0x4f3359('0xa89')](_0x4f7035)):this['waitForIt'](function(){var _0x28e161=_0x4f3359;return _0x29d839[_0x28e161('0xd64')]['current']&&_0x29d839[_0x28e161('0xd64')][_0x28e161('0x684')][_0x28e161('0xb32')]();},function(){var _0x278a01=_0x4f3359;_0x29d839[_0x278a01('0xd64')][_0x278a01('0x684')]['updateFields'](_0x4f7035),_0x29d839['iceFormReference'][_0x278a01('0x684')]['moveToStep'](0x0);},0x3e8)):(this[_0x4f3359('0x4f8')]({'visible':!0x0}),this[_0x4f3359('0xd64')][_0x4f3359('0x684')]&&this[_0x4f3359('0xd64')][_0x4f3359('0x684')][_0x4f3359('0xac5')]());}},{'key':'hide','value':function(){var _0x21d1a8=_0x3e44;this[_0x21d1a8('0xd64')][_0x21d1a8('0x684')][_0x21d1a8('0xd68')](0x0),this[_0x21d1a8('0x4f8')]({'visible':!0x1});}},{'key':'render','value':function(){var _0x9e4ffa=_0x3e44,_0x54e906=this,_0x111c11=this[_0x9e4ffa('0x2d0')],_0x1e7d9d=_0x111c11[_0x9e4ffa('0xb79')],_0x352c4b=_0x111c11[_0x9e4ffa('0x7c7')],_0x2cc744=this[_0x9e4ffa('0x2d0')][_0x9e4ffa('0x7c7')][_0x9e4ffa('0x564')](),_0x362445=_0x2cc744[_0x9e4ffa('0x9c3')],_0x4d9ce3=_0x2cc744[_0x9e4ffa('0xba1')],_0x57d592=_0x2cc744[_0x9e4ffa('0x699')];return _0x4d9700[_0x9e4ffa('0x53')][_0x9e4ffa('0x914')](_0x52550c[_0x9e4ffa('0x77a')],{'visible':this[_0x9e4ffa('0x97c')][_0x9e4ffa('0x7a8')],'title':this[_0x9e4ffa('0x2d0')][_0x9e4ffa('0x7c7')]['gt'](this[_0x9e4ffa('0x2d0')]['title']||_0x352c4b[_0x9e4ffa('0xd41')]),'maskClosable':!0x1,'width':_0x362445||this[_0x9e4ffa('0x9c3')],'footer':[],'onCancel':function(){_0x54e906['closeModal']();}},_0x4d9700[_0x9e4ffa('0x53')][_0x9e4ffa('0x914')](_0x18e476['default'],{'ref':this[_0x9e4ffa('0xd64')],'adapter':_0x352c4b,'fields':_0x1e7d9d,'closeModal':function(){var _0x4695cd=_0x9e4ffa;_0x54e906[_0x4695cd('0x3de')]();},'twoColumnLayout':_0x4d9ce3||!0x1,'layout':_0x57d592}));}}])&&_0x4e6dbb(_0x6e1d6['prototype'],_0x7a56e),_0x4b1715&&_0x4e6dbb(_0x6e1d6,_0x4b1715),_0x102dea;}(_0x233421[_0x22f191('0x53')]);_0x524a10[_0x22f191('0x53')]=_0x3e12f8;},{'./IceFormModal':0x37,'./IceStepForm':0x3b,'antd':_0x322f0f('0x9f8'),'react':_0x322f0f('0x603')}],0x3d:[function(_0x2bb2a9,_0x361067,_0x41bfb7){var _0x33c11b=_0x322f0f;'use strict';Object[_0x33c11b('0x2cd')](_0x41bfb7,_0x33c11b('0x866'),{'value':!0x0}),_0x41bfb7[_0x33c11b('0x53')]=void 0x0;var _0xb33daa=function(_0x3b4501){var _0xb665bd=_0x33c11b;if(_0x3b4501&&_0x3b4501[_0xb665bd('0x866')])return _0x3b4501;if(null===_0x3b4501||_0xb665bd('0x669')!==_0x359358(_0x3b4501)&&'function'!=typeof _0x3b4501)return{'default':_0x3b4501};var _0x25261e=_0x1e6b26();if(_0x25261e&&_0x25261e['has'](_0x3b4501))return _0x25261e['get'](_0x3b4501);var _0x23a22f={},_0x483c54=Object[_0xb665bd('0x2cd')]&&Object['getOwnPropertyDescriptor'];for(var _0x2eaf66 in _0x3b4501)if(Object[_0xb665bd('0x3ec')][_0xb665bd('0x106')]['call'](_0x3b4501,_0x2eaf66)){var _0x333faf=_0x483c54?Object[_0xb665bd('0x3e7')](_0x3b4501,_0x2eaf66):null;_0x333faf&&(_0x333faf[_0xb665bd('0x715')]||_0x333faf['set'])?Object[_0xb665bd('0x2cd')](_0x23a22f,_0x2eaf66,_0x333faf):_0x23a22f[_0x2eaf66]=_0x3b4501[_0x2eaf66];}return _0x23a22f[_0xb665bd('0x53')]=_0x3b4501,_0x25261e&&_0x25261e[_0xb665bd('0x8ab')](_0x3b4501,_0x23a22f),_0x23a22f;}(_0x2bb2a9(_0x33c11b('0x603'))),_0x5d48b2=_0x2bb2a9(_0x33c11b('0x9f8')),_0x4fd9e9=_0x2bb2a9(_0x33c11b('0x8c3'));function _0x1e6b26(){var _0x5a18c6=_0x33c11b;if(_0x5a18c6('0x67')!=typeof WeakMap)return null;var _0x3fd8ac=new WeakMap();return _0x1e6b26=function(){return _0x3fd8ac;},_0x3fd8ac;}function _0x359358(_0x1537be){var _0x35649d=_0x33c11b;return(_0x359358=_0x35649d('0x67')==typeof Symbol&&'symbol'==typeof Symbol[_0x35649d('0x303')]?function(_0xc43a36){return typeof _0xc43a36;}:function(_0x5d021f){var _0x13b97c=_0x35649d;return _0x5d021f&&_0x13b97c('0x67')==typeof Symbol&&_0x5d021f[_0x13b97c('0xbe8')]===Symbol&&_0x5d021f!==Symbol['prototype']?_0x13b97c('0xd77'):typeof _0x5d021f;})(_0x1537be);}function _0x4b5369(_0x47f731,_0x40a1dc){var _0x521e27=_0x33c11b,_0x35e5c5=Object['keys'](_0x47f731);if(Object[_0x521e27('0xdbc')]){var _0x4f56e9=Object[_0x521e27('0xdbc')](_0x47f731);_0x40a1dc&&(_0x4f56e9=_0x4f56e9[_0x521e27('0x5c4')](function(_0x4e7eee){var _0x48720c=_0x521e27;return Object['getOwnPropertyDescriptor'](_0x47f731,_0x4e7eee)[_0x48720c('0x836')];})),_0x35e5c5[_0x521e27('0x8cd')]['apply'](_0x35e5c5,_0x4f56e9);}return _0x35e5c5;}function _0xb127bc(_0x88464b){var _0x217d7e=_0x33c11b;for(var _0x31636f=0x1;_0x31636f0x0&&void 0x0!==arguments[0x0]?arguments[0x0]:{};_0x108640[_0x19f8bb('0x4f8')]({'loading':!0x0});var _0x4e20be=_0xb127bc({},_0x108640[_0x19f8bb('0x97c')][_0x19f8bb('0x8ad')]);if(_0x108640[_0x19f8bb('0x2d0')][_0x19f8bb('0x7c7')][_0x19f8bb('0x126')])try{var _0x5e70a1=_0x108640['props'][_0x19f8bb('0x14f')]['getCachedResponse'](_0x1640b6);_0x5e70a1[_0x19f8bb('0x33c')]?_0x108640['setState']({'loading':!0x1,'data':_0x5e70a1[_0x19f8bb('0x33c')],'pagination':_0x4e20be,'showLoading':!0x1}):_0x108640[_0x19f8bb('0x2d0')][_0x19f8bb('0x14f')][_0x19f8bb('0x982')](_0x1640b6);}catch(_0x111c67){_0x108640[_0x19f8bb('0x2d0')][_0x19f8bb('0x14f')][_0x19f8bb('0x982')](_0x1640b6);}_0x108640['props'][_0x19f8bb('0x14f')][_0x19f8bb('0x715')](_0x1640b6)[_0x19f8bb('0x577')](function(_0x3da334){var _0x55e675=_0x19f8bb;_0x4e20be[_0x55e675('0xd2e')]=_0x3da334[_0x55e675('0xd2e')],_0x108640[_0x55e675('0x4f8')]({'loading':!0x1,'data':_0x3da334['items'],'pagination':_0x4e20be,'showLoading':!0x1,'fetchCompleted':!0x0});});},_0x108640;}return _0x22d876=_0x1c596e,(_0x1253c4=[{'key':_0x1d152d('0x26c'),'value':function(){var _0x568d90=_0x1d152d;_0x5d48b2[_0x568d90('0x64')][_0x568d90('0x257')]({'top':0x28}),this[_0x568d90('0x4f8')]({'fetchConfig':{'page':0x1},'pagination':{'pageSize':this[_0x568d90('0x2d0')][_0x568d90('0x14f')][_0x568d90('0xaa8')]}});}},{'key':_0x1d152d('0x51f'),'value':function(_0x352dee){var _0x2a285b=_0x1d152d;this[_0x2a285b('0x4f8')]({'loading':_0x352dee});}},{'key':_0x1d152d('0x8de'),'value':function(_0x2c100c){var _0x326dfd=_0x1d152d,_0x4ee1dc=this;return _0xb33daa[_0x326dfd('0x53')][_0x326dfd('0xda3')][_0x326dfd('0x4ad')](this[_0x326dfd('0x2d0')][_0x326dfd('0xbc8')],function(_0x4b997b){var _0x561166=_0x326dfd,_0x27298a={'element':_0x2c100c,'adapter':_0x4ee1dc[_0x561166('0x2d0')][_0x561166('0x7c7')],'loading':_0x4ee1dc[_0x561166('0x97c')][_0x561166('0xb9c')]};return _0xb33daa[_0x561166('0x53')][_0x561166('0x7b0')](_0x4b997b)?_0xb33daa['default'][_0x561166('0x781')](_0x4b997b,_0x27298a):_0x4b997b;});}},{'key':_0x1d152d('0x265'),'value':function(){var _0x3a23f7=_0x1d152d,_0x380430=this;return _0xb33daa[_0x3a23f7('0x53')][_0x3a23f7('0x914')](_0x5d48b2[_0x3a23f7('0x588')],{'direction':'vertical','style':{'width':_0x3a23f7('0xbe9')}},!this[_0x3a23f7('0x97c')]['currentElement']&&_0xb33daa[_0x3a23f7('0x53')][_0x3a23f7('0x914')](_0x5d48b2[_0x3a23f7('0x70b')],{'span':0x18},_0xb33daa[_0x3a23f7('0x53')]['createElement'](_0x5d48b2[_0x3a23f7('0x588')],{'gutter':0x18},_0xb33daa['default']['createElement'](_0x5d48b2[_0x3a23f7('0x70b')],{'span':0x12},_0xb33daa[_0x3a23f7('0x53')][_0x3a23f7('0x914')](_0x5d48b2[_0x3a23f7('0xc89')],null,this[_0x3a23f7('0x2d0')][_0x3a23f7('0x7c7')][_0x3a23f7('0xd9a')]('save')&&this[_0x3a23f7('0x2d0')][_0x3a23f7('0x7c7')][_0x3a23f7('0x4bc')]()&&_0xb33daa[_0x3a23f7('0x53')][_0x3a23f7('0x914')](_0x5d48b2[_0x3a23f7('0x5bf')],{'type':_0x3a23f7('0x754'),'onClick':this[_0x3a23f7('0x9e3')]},_0xb33daa[_0x3a23f7('0x53')]['createElement'](_0x4fd9e9['PlusCircleOutlined'],null),_0x3a23f7('0x990')),this[_0x3a23f7('0x2d0')]['adapter'][_0x3a23f7('0xc6')]()&&_0xb33daa[_0x3a23f7('0x53')]['createElement'](_0x5d48b2[_0x3a23f7('0x5bf')],{'onClick':this[_0x3a23f7('0x4c8')]},_0xb33daa[_0x3a23f7('0x53')][_0x3a23f7('0x914')](_0x4fd9e9[_0x3a23f7('0x6f5')],null),'\x20Filters'),this[_0x3a23f7('0x97c')][_0x3a23f7('0xb00')]&&this[_0x3a23f7('0x2d0')]['adapter'][_0x3a23f7('0xc6')]()&&null!=this['props'][_0x3a23f7('0x7c7')][_0x3a23f7('0x5c4')]&&this[_0x3a23f7('0x2d0')]['adapter'][_0x3a23f7('0x5c4')]!==[]&&''!==this[_0x3a23f7('0x2d0')][_0x3a23f7('0x7c7')]['filter']&&''!==this[_0x3a23f7('0x2d0')]['adapter']['getFilterString'](this[_0x3a23f7('0x2d0')][_0x3a23f7('0x7c7')]['filter'])&&_0xb33daa['default'][_0x3a23f7('0x914')](_0x5d48b2[_0x3a23f7('0x939')],{'closable':!0x0,'style':{'lineHeight':_0x3a23f7('0x6b1')},'color':_0x3a23f7('0x4c6'),'onClose':function(){var _0x40a6ff=_0x3a23f7;return _0x380430['props'][_0x40a6ff('0x7c7')]['resetFilters']();},'visible':null!=this[_0x3a23f7('0x2d0')][_0x3a23f7('0x7c7')][_0x3a23f7('0x5c4')]&&this[_0x3a23f7('0x2d0')][_0x3a23f7('0x7c7')][_0x3a23f7('0x5c4')]!==[]&&''!==this[_0x3a23f7('0x2d0')][_0x3a23f7('0x7c7')][_0x3a23f7('0x5c4')]},this[_0x3a23f7('0x2d0')][_0x3a23f7('0x7c7')]['getFilterString'](this['props'][_0x3a23f7('0x7c7')][_0x3a23f7('0x5c4')])))),_0xb33daa[_0x3a23f7('0x53')]['createElement'](_0x5d48b2[_0x3a23f7('0x70b')],{'span':0x6},_0xb33daa[_0x3a23f7('0x53')]['createElement'](_0x5d48b2[_0x3a23f7('0xad2')],{'ref':function(_0x4dc1fc){return _0x380430['form']=_0x4dc1fc;},'name':'advanced_search','className':_0x3a23f7('0x7d8')},_0xb33daa[_0x3a23f7('0x53')][_0x3a23f7('0x914')](_0x5d48b2['Form']['Item'],{'name':_0x3a23f7('0x94d'),'label':'','rules':[{'required':!0x1}]},_0xb33daa[_0x3a23f7('0x53')]['createElement'](_0x1abfa9,{'placeholder':'input\x20search\x20text','enterButton':_0x3a23f7('0x16c'),'onSearch':function(_0x440b64){var _0x497d1b=_0x3a23f7;return _0x380430[_0x497d1b('0xd57')](_0x440b64);}}))))),_0xb33daa['default'][_0x3a23f7('0x914')](_0x5d48b2[_0x3a23f7('0x588')],{'gutter':0x18},_0xb33daa[_0x3a23f7('0x53')][_0x3a23f7('0x914')](_0x5d48b2[_0x3a23f7('0x70b')],{'span':0x18},_0xb33daa[_0x3a23f7('0x53')][_0x3a23f7('0x914')](_0x5d48b2[_0x3a23f7('0x76e')],{'rowClassName':function(_0x5e7b5f,_0x52eebc){var _0x59f988=_0x3a23f7;return _0x52eebc%0x2==0x0?_0x59f988('0x91f'):'table-row-dark';},'columns':this['props'][_0x3a23f7('0xb96')],'rowKey':function(_0x537ad2){return _0x537ad2['id'];},'dataSource':this['state']['data'],'pagination':this['state'][_0x3a23f7('0x8ad')],'loading':this['state'][_0x3a23f7('0xb9c')],'onChange':this['handleTableChange'],'reader':this['props'][_0x3a23f7('0x41b')]})))),this['state'][_0x3a23f7('0xc18')]&&this[_0x3a23f7('0x8de')](this[_0x3a23f7('0x97c')][_0x3a23f7('0xc18')]));}}])&&_0x576472(_0x22d876[_0x1d152d('0x3ec')],_0x1253c4),_0x254450&&_0x576472(_0x22d876,_0x254450),_0x1c596e;}(_0xb33daa[_0x33c11b('0x53')][_0x33c11b('0xd04')]);_0x41bfb7[_0x33c11b('0x53')]=_0x38e11f;},{'@ant-design/icons':_0x322f0f('0x8c3'),'antd':_0x322f0f('0x9f8'),'react':_0x322f0f('0x603')}],0x3e:[function(_0x54af9c,_0x4e7bf8,_0x38c983){var _0x53ae5f=_0x322f0f;'use strict';Object[_0x53ae5f('0x2cd')](_0x38c983,'__esModule',{'value':!0x0}),_0x38c983[_0x53ae5f('0x53')]=void 0x0;var _0x326689,_0x340172=(_0x326689=_0x54af9c(_0x53ae5f('0x603')))&&_0x326689['__esModule']?_0x326689:{'default':_0x326689},_0x544e79=_0x54af9c(_0x53ae5f('0x9f8')),_0x53b655=_0x54af9c(_0x53ae5f('0x8c3'));function _0x5681a2(_0xbb759e){var _0x453e69=_0x53ae5f;return(_0x5681a2=_0x453e69('0x67')==typeof Symbol&&'symbol'==typeof Symbol[_0x453e69('0x303')]?function(_0x5eb2c1){return typeof _0x5eb2c1;}:function(_0x487cf4){var _0x494570=_0x453e69;return _0x487cf4&&_0x494570('0x67')==typeof Symbol&&_0x487cf4[_0x494570('0xbe8')]===Symbol&&_0x487cf4!==Symbol[_0x494570('0x3ec')]?_0x494570('0xd77'):typeof _0x487cf4;})(_0xbb759e);}function _0x643ca9(){var _0x3d82f2=_0x53ae5f;return(_0x643ca9=Object[_0x3d82f2('0x7df')]||function(_0x4de50c){var _0xc34f4b=_0x3d82f2;for(var _0x327381=0x1;_0x327381_0x5bcb1d[_0x297ccb('0x1d1')])&&(_0x410eb8=_0x5bcb1d[_0x297ccb('0x1d1')]);for(var _0x23d819=0x0,_0x52c549=new Array(_0x410eb8);_0x23d819<_0x410eb8;_0x23d819++)_0x52c549[_0x23d819]=_0x5bcb1d[_0x23d819];return _0x52c549;}function _0x4c5921(_0xf4c239,_0x28eaf){var _0x2d7a4a=_0x53ae5f;for(var _0x448322=0x0;_0x448322<_0x28eaf[_0x2d7a4a('0x1d1')];_0x448322++){var _0x2666cd=_0x28eaf[_0x448322];_0x2666cd[_0x2d7a4a('0x836')]=_0x2666cd[_0x2d7a4a('0x836')]||!0x1,_0x2666cd[_0x2d7a4a('0x249')]=!0x0,'value'in _0x2666cd&&(_0x2666cd[_0x2d7a4a('0xc28')]=!0x0),Object[_0x2d7a4a('0x2cd')](_0xf4c239,_0x2666cd[_0x2d7a4a('0xcb6')],_0x2666cd);}}function _0x47c335(_0x262140,_0x561275){var _0x3820b9=_0x53ae5f;return!_0x561275||'object'!==_0x5681a2(_0x561275)&&_0x3820b9('0x67')!=typeof _0x561275?function(_0x325732){var _0xf5427d=_0x3820b9;if(void 0x0===_0x325732)throw new ReferenceError(_0xf5427d('0xba4'));return _0x325732;}(_0x262140):_0x561275;}function _0x4eeebb(){var _0x504bf4=_0x53ae5f;if(_0x504bf4('0x396')==typeof Reflect||!Reflect[_0x504bf4('0xa71')])return!0x1;if(Reflect[_0x504bf4('0xa71')][_0x504bf4('0x886')])return!0x1;if(_0x504bf4('0x67')==typeof Proxy)return!0x0;try{return Date[_0x504bf4('0x3ec')][_0x504bf4('0x8dc')][_0x504bf4('0x928')](Reflect['construct'](Date,[],function(){})),!0x0;}catch(_0x136f31){return!0x1;}}function _0x2dc61e(_0x370565){var _0x25203e=_0x53ae5f;return(_0x2dc61e=Object['setPrototypeOf']?Object[_0x25203e('0x418')]:function(_0x4525aa){var _0x268d8c=_0x25203e;return _0x4525aa[_0x268d8c('0xc15')]||Object[_0x268d8c('0x418')](_0x4525aa);})(_0x370565);}function _0x188278(_0xf569e9,_0x6a193c){var _0x25d3db=_0x53ae5f;return(_0x188278=Object[_0x25d3db('0x16')]||function(_0x5b501d,_0x5079cb){var _0x531957=_0x25d3db;return _0x5b501d[_0x531957('0xc15')]=_0x5079cb,_0x5b501d;})(_0xf569e9,_0x6a193c);}var _0x51650e=function(_0x1dfadf){var _0x469fb3=_0x53ae5f;!function(_0x2752a2,_0x29c4d6){var _0xa43cd5=_0x3e44;if(_0xa43cd5('0x67')!=typeof _0x29c4d6&&null!==_0x29c4d6)throw new TypeError(_0xa43cd5('0xc9'));_0x2752a2[_0xa43cd5('0x3ec')]=Object[_0xa43cd5('0xd9d')](_0x29c4d6&&_0x29c4d6[_0xa43cd5('0x3ec')],{'constructor':{'value':_0x2752a2,'writable':!0x0,'configurable':!0x0}}),_0x29c4d6&&_0x188278(_0x2752a2,_0x29c4d6);}(_0x489ada,_0x1dfadf);var _0x1fa0cc,_0x11a624,_0x295193,_0x53f9ba,_0x21da40=(_0x1fa0cc=_0x489ada,function(){var _0x13dab5=_0x3e44,_0xac7cb3,_0x36fe79=_0x2dc61e(_0x1fa0cc);if(_0x4eeebb()){var _0x589cdc=_0x2dc61e(this)[_0x13dab5('0xbe8')];_0xac7cb3=Reflect[_0x13dab5('0xa71')](_0x36fe79,arguments,_0x589cdc);}else _0xac7cb3=_0x36fe79['apply'](this,arguments);return _0x47c335(this,_0xac7cb3);});function _0x489ada(_0x190570){var _0x582505=_0x3e44,_0x3e4c4a;return function(_0x2be65e,_0x3b627d){var _0x211db1=_0x3e44;if(!(_0x2be65e instanceof _0x3b627d))throw new TypeError(_0x211db1('0xc2c'));}(this,_0x489ada),(_0x3e4c4a=_0x21da40[_0x582505('0x928')](this,_0x190570))['state']={'fileList':[],'uploaded':!0x1},_0x3e4c4a['_isMounted']=!0x1,_0x3e4c4a['handleDelete']=function(){var _0x349e1c=_0x582505;_0x3e4c4a[_0x349e1c('0x4f8')]({'fileList':[],'value':null,'uploaded':!0x1}),_0x3e4c4a[_0x349e1c('0x88d')](null);},_0x3e4c4a[_0x582505('0xadc')]=function(){var _0x51b6d7=_0x582505,_0x7fca9d=_0x3e4c4a[_0x51b6d7('0x2d0')][_0x51b6d7('0x9b6')];(null!=_0x3e4c4a[_0x51b6d7('0x97c')][_0x51b6d7('0x9b6')]&&''!==_0x3e4c4a[_0x51b6d7('0x97c')][_0x51b6d7('0x9b6')]&&(_0x7fca9d=_0x3e4c4a[_0x51b6d7('0x97c')][_0x51b6d7('0x9b6')]),null!=_0x7fca9d&&''!==_0x7fca9d)?_0x3e4c4a[_0x51b6d7('0x2d0')]['adapter'][_0x51b6d7('0x732')](_0x7fca9d)[_0x51b6d7('0x577')](function(_0x23c71c){var _0x2714e6=_0x51b6d7,_0x2094c9={'key':_0x23c71c['uid'],'uid':_0x23c71c[_0x2714e6('0x7e8')],'name':_0x23c71c[_0x2714e6('0x9e')],'status':_0x23c71c['status'],'url':_0x23c71c[_0x2714e6('0x85d')]};window['open'](_0x2094c9[_0x2714e6('0xd03')]);})[_0x51b6d7('0x502')](function(_0x1442cc){}):_0x544e79['message']['error'](_0x51b6d7('0x3f2'));},_0x3e4c4a[_0x582505('0x521')]=function(_0x57334c){var _0x1069bd=_0x582505,_0x3f3181=_0x4643f3(_0x57334c[_0x1069bd('0xce2')]);return 0x0===_0x3f3181[_0x1069bd('0x1d1')]?(_0x3e4c4a[_0x1069bd('0x4f8')]({'value':null}),_0x3e4c4a['onChange'](null),_0x3e4c4a['setState']({'fileList':[]}),void _0x3e4c4a[_0x1069bd('0x4f8')]({'uploaded':!0x1})):(_0x3f3181=_0x3f3181[_0x1069bd('0x63a')](-0x1))[0x0][_0x1069bd('0x9f7')]&&_0x1069bd('0x855')===_0x3f3181[0x0][_0x1069bd('0x9f7')][_0x1069bd('0x90d')]?(_0x3e4c4a['setState']({'value':null}),_0x3e4c4a[_0x1069bd('0x88d')](null),_0x3e4c4a[_0x1069bd('0x4f8')]({'fileList':[]}),_0x3e4c4a[_0x1069bd('0x4f8')]({'uploaded':!0x1}),void _0x544e79[_0x1069bd('0x64')][_0x1069bd('0x855')](_0x1069bd('0x78c')[_0x1069bd('0x49e')](_0x3f3181[0x0]['response'][_0x1069bd('0x64')]))):(_0x3f3181=_0x3f3181[_0x1069bd('0x4ad')](function(_0x1fea8b){var _0x165e0a=_0x1069bd;return _0x1fea8b[_0x165e0a('0x9f7')]&&(_0x1fea8b[_0x165e0a('0x9e')]=_0x1fea8b['response']['name'],_0x1fea8b['url']=_0x1fea8b[_0x165e0a('0x9f7')][_0x165e0a('0xd03')]),_0x1fea8b;}),_0x3e4c4a[_0x1069bd('0x4f8')]({'fileList':_0x3f3181}),_0x3e4c4a[_0x1069bd('0x4f8')]({'value':_0x3e4c4a[_0x1069bd('0x42d')](_0x3f3181),'uploaded':!0x0}),void _0x3e4c4a[_0x1069bd('0x88d')](_0x3e4c4a[_0x1069bd('0x42d')](_0x3f3181)));},_0x3e4c4a[_0x582505('0x88d')]=_0x190570[_0x582505('0x88d')],_0x3e4c4a;}return _0x11a624=_0x489ada,(_0x295193=[{'key':'componentDidMount','value':function(){var _0x2318a3=_0x3e44;this[_0x2318a3('0x40f')]=!0x0,_0x544e79[_0x2318a3('0x64')][_0x2318a3('0x257')]({'top':0x37,'duration':0x2});}},{'key':_0x469fb3('0x79d'),'value':function(){this['_isMounted']=!0x1;}},{'key':_0x469fb3('0x42d'),'value':function(_0xae4cb9){var _0xec0d25=_0x469fb3,_0x3490be=null;return _0xae4cb9&&(_0x3490be=_0xae4cb9[0x0]),_0x3490be?_0x3490be[_0xec0d25('0x9e')]:'';}},{'key':_0x469fb3('0xc5c'),'value':function(_0x3a0179){var _0x566f9d=_0x469fb3;for(var _0x1fccce=new Date(),_0x2f81c1=_0x566f9d('0x9be'),_0x551f4f='',_0x261697=_0x3a0179;_0x261697>0x0;--_0x261697)_0x551f4f+=_0x2f81c1[Math['round'](Math[_0x566f9d('0xbf0')]()*(_0x2f81c1[_0x566f9d('0x1d1')]-0x1))];return _0x551f4f+_0x1fccce[_0x566f9d('0x405')]();}},{'key':_0x469fb3('0x265'),'value':function(){var _0x804191=_0x469fb3,_0x396b68=this[_0x804191('0xc5c')](0xe),_0x210d7b={'action':''[_0x804191('0x49e')](window[_0x804191('0x1c9')],_0x804191('0xd6f'))[_0x804191('0x49e')](this[_0x804191('0x2d0')][_0x804191('0xd22')],_0x804191('0x17d'))[_0x804191('0x49e')](this['props'][_0x804191('0xd05')],'&file_name=')[_0x804191('0x49e')](_0x396b68),'onChange':this[_0x804191('0x521')],'onRemove':this['handleDelete'],'multiple':!0x1,'listType':_0x804191('0xc81')};return _0x340172['default'][_0x804191('0x914')](_0x544e79['Space'],{'direction':_0x804191('0x1ca')},!this[_0x804191('0x2d0')]['readOnly']&&_0x340172[_0x804191('0x53')]['createElement'](_0x544e79[_0x804191('0xc89')],null,_0x340172[_0x804191('0x53')][_0x804191('0x914')](_0x544e79[_0x804191('0xc50')],_0x643ca9({},_0x210d7b,{'fileList':this[_0x804191('0x97c')][_0x804191('0xce2')]}),_0x340172['default'][_0x804191('0x914')](_0x544e79[_0x804191('0x939')],{'color':_0x804191('0x4c6'),'style':{'cursor':_0x804191('0x38')}},_0x340172[_0x804191('0x53')]['createElement'](_0x53b655[_0x804191('0x2e1')],null),'\x20',_0x804191('0xc50')))),_0x340172[_0x804191('0x53')]['createElement'](_0x544e79[_0x804191('0xc89')],null,(null!=this['props'][_0x804191('0x9b6')]&&''!==this[_0x804191('0x2d0')][_0x804191('0x9b6')]||null!=this['state'][_0x804191('0x9b6')]&&''!==this['state'][_0x804191('0x9b6')])&&!this['state'][_0x804191('0xc4')]&&_0x340172[_0x804191('0x53')][_0x804191('0x914')](_0x544e79['Button'],{'type':'link','htmlType':_0x804191('0x336'),'onClick':this[_0x804191('0xadc')]},_0x340172[_0x804191('0x53')][_0x804191('0x914')](_0x53b655[_0x804191('0xde')],null),_0x804191('0xb5')),(null!=this[_0x804191('0x2d0')][_0x804191('0x9b6')]&&''!==this[_0x804191('0x2d0')][_0x804191('0x9b6')]||null!=this[_0x804191('0x97c')]['value']&&''!==this[_0x804191('0x97c')]['value'])&&!this[_0x804191('0x97c')][_0x804191('0xc4')]&&!this[_0x804191('0x2d0')][_0x804191('0x2fe')]&&_0x340172[_0x804191('0x53')][_0x804191('0x914')](_0x544e79[_0x804191('0x5bf')],{'type':_0x804191('0x2e7'),'htmlType':'button','danger':!0x0,'onClick':this[_0x804191('0xaf0')]},_0x340172['default']['createElement'](_0x53b655[_0x804191('0xa14')],null),_0x804191('0x644'))));}}])&&_0x4c5921(_0x11a624[_0x469fb3('0x3ec')],_0x295193),_0x53f9ba&&_0x4c5921(_0x11a624,_0x53f9ba),_0x489ada;}(_0x340172[_0x53ae5f('0x53')][_0x53ae5f('0xd04')]);_0x38c983[_0x53ae5f('0x53')]=_0x51650e;},{'@ant-design/icons':_0x322f0f('0x8c3'),'antd':_0x322f0f('0x9f8'),'react':_0x322f0f('0x603')}],0x3f:[function(_0x5f07d0,_0x3043b8,_0x39df0a){var _0x5384b5=_0x322f0f;'use strict';Object[_0x5384b5('0x2cd')](_0x39df0a,_0x5384b5('0x866'),{'value':!0x0}),_0x39df0a[_0x5384b5('0x53')]=void 0x0;var _0x215177,_0x7e75b=(_0x215177=_0x5f07d0(_0x5384b5('0x603')))&&_0x215177[_0x5384b5('0x866')]?_0x215177:{'default':_0x215177},_0x138259=_0x5f07d0(_0x5384b5('0x9f8'));function _0x15e90e(_0x323bce){var _0x36f12a=_0x5384b5;return(_0x15e90e=_0x36f12a('0x67')==typeof Symbol&&'symbol'==typeof Symbol[_0x36f12a('0x303')]?function(_0x2eddcf){return typeof _0x2eddcf;}:function(_0x2fce8b){var _0x3622d8=_0x36f12a;return _0x2fce8b&&_0x3622d8('0x67')==typeof Symbol&&_0x2fce8b[_0x3622d8('0xbe8')]===Symbol&&_0x2fce8b!==Symbol['prototype']?_0x3622d8('0xd77'):typeof _0x2fce8b;})(_0x323bce);}function _0x63bb08(_0x282e57,_0xa651e7){var _0x3a16c4=_0x5384b5;for(var _0x1ba02a=0x0;_0x1ba02a<_0xa651e7[_0x3a16c4('0x1d1')];_0x1ba02a++){var _0x3870d5=_0xa651e7[_0x1ba02a];_0x3870d5['enumerable']=_0x3870d5['enumerable']||!0x1,_0x3870d5[_0x3a16c4('0x249')]=!0x0,'value'in _0x3870d5&&(_0x3870d5[_0x3a16c4('0xc28')]=!0x0),Object['defineProperty'](_0x282e57,_0x3870d5[_0x3a16c4('0xcb6')],_0x3870d5);}}function _0x40e82d(_0x3f1c64,_0x50ba13){var _0x7ad89f=_0x5384b5;return!_0x50ba13||'object'!==_0x15e90e(_0x50ba13)&&_0x7ad89f('0x67')!=typeof _0x50ba13?function(_0x2a68fe){if(void 0x0===_0x2a68fe)throw new ReferenceError('this\x20hasn\x27t\x20been\x20initialised\x20-\x20super()\x20hasn\x27t\x20been\x20called');return _0x2a68fe;}(_0x3f1c64):_0x50ba13;}function _0x1827db(){var _0x35686d=_0x5384b5;if('undefined'==typeof Reflect||!Reflect[_0x35686d('0xa71')])return!0x1;if(Reflect[_0x35686d('0xa71')][_0x35686d('0x886')])return!0x1;if('function'==typeof Proxy)return!0x0;try{return Date[_0x35686d('0x3ec')][_0x35686d('0x8dc')][_0x35686d('0x928')](Reflect['construct'](Date,[],function(){})),!0x0;}catch(_0x2599bb){return!0x1;}}function _0x1d5f5f(_0x4bfbb7){var _0x313646=_0x5384b5;return(_0x1d5f5f=Object[_0x313646('0x16')]?Object[_0x313646('0x418')]:function(_0x64c8fb){var _0x3bf0d6=_0x313646;return _0x64c8fb[_0x3bf0d6('0xc15')]||Object['getPrototypeOf'](_0x64c8fb);})(_0x4bfbb7);}function _0x4fc26f(_0x5002c2,_0x390c47){var _0x18cd70=_0x5384b5;return(_0x4fc26f=Object[_0x18cd70('0x16')]||function(_0x1647f0,_0x2c9e77){return _0x1647f0['__proto__']=_0x2c9e77,_0x1647f0;})(_0x5002c2,_0x390c47);}var _0x4db4f4=function(_0x156891){var _0x31f390=_0x5384b5;!function(_0x37fa2c,_0x3aa455){var _0x593036=_0x3e44;if(_0x593036('0x67')!=typeof _0x3aa455&&null!==_0x3aa455)throw new TypeError(_0x593036('0xc9'));_0x37fa2c[_0x593036('0x3ec')]=Object[_0x593036('0xd9d')](_0x3aa455&&_0x3aa455[_0x593036('0x3ec')],{'constructor':{'value':_0x37fa2c,'writable':!0x0,'configurable':!0x0}}),_0x3aa455&&_0x4fc26f(_0x37fa2c,_0x3aa455);}(_0x3425f8,_0x156891);var _0x21ae83,_0x20d559,_0x1c732d,_0x2b99de,_0x15d121=(_0x21ae83=_0x3425f8,function(){var _0x2f8bad=_0x3e44,_0x2bd702,_0x213f0d=_0x1d5f5f(_0x21ae83);if(_0x1827db()){var _0x5ed0f1=_0x1d5f5f(this)[_0x2f8bad('0xbe8')];_0x2bd702=Reflect[_0x2f8bad('0xa71')](_0x213f0d,arguments,_0x5ed0f1);}else _0x2bd702=_0x213f0d[_0x2f8bad('0x7da')](this,arguments);return _0x40e82d(this,_0x2bd702);});function _0x3425f8(_0x39cdb0){var _0x2f87cc=_0x3e44,_0x22e425;return function(_0x5981d0,_0x88e4f0){var _0xa65168=_0x3e44;if(!(_0x5981d0 instanceof _0x88e4f0))throw new TypeError(_0xa65168('0xc2c'));}(this,_0x3425f8),(_0x22e425=_0x15d121[_0x2f87cc('0x928')](this,_0x39cdb0))[_0x2f87cc('0x97c')]={'tags':[],'loading':!0x0},_0x22e425;}return _0x20d559=_0x3425f8,(_0x1c732d=[{'key':_0x31f390('0x26c'),'value':function(){this['fetch']();}},{'key':_0x31f390('0x9ee'),'value':function(){var _0x363307=_0x31f390,_0x1c0d9a=this;this[_0x363307('0x4f8')]({'loading':!0x0}),this[_0x363307('0x2d0')]['apiClient'][_0x363307('0x715')](this[_0x363307('0x2d0')][_0x363307('0xd03')])['then'](function(_0x1d69ee){var _0x211399=_0x363307,_0x21d780=_0x1d69ee['data']['data'][_0x211399('0x4ad')](_0x1c0d9a['props'][_0x211399('0x71a')]);_0x1c0d9a[_0x211399('0x4f8')]({'tags':_0x21d780,'loading':!0x1});});}},{'key':'render','value':function(){var _0x451191=_0x31f390,_0x2745c8=this;return _0x7e75b['default'][_0x451191('0x914')](_0x451191('0x128'),{'style':{'display':_0x451191('0x1b6'),'textOverflow':_0x451191('0xb7a'),'whiteSpace':_0x451191('0x659'),'overflow':_0x451191('0xb0f'),'width':_0x451191('0xbe9')}},this[_0x451191('0x97c')][_0x451191('0xb9c')]&&_0x7e75b[_0x451191('0x53')][_0x451191('0x914')](_0x138259[_0x451191('0x632')],{'active':!0x0}),!this[_0x451191('0x97c')][_0x451191('0xb9c')]&&this[_0x451191('0x97c')][_0x451191('0xd47')][_0x451191('0x4ad')](function(_0x2f9ee3,_0x8d3b3a){var _0x549e48=_0x451191;return _0x2745c8['props'][_0x549e48('0x265')]?_0x2745c8[_0x549e48('0x2d0')][_0x549e48('0x265')](_0x2f9ee3):_0x7e75b[_0x549e48('0x53')]['createElement']('div',{'key':'p'['concat'](_0x8d3b3a)},_0x7e75b[_0x549e48('0x53')]['createElement'](_0x138259['Tag'],{'color':_0x2745c8[_0x549e48('0x2d0')][_0x549e48('0x8da')],'key':_0x8d3b3a,'style':{'margin':_0x549e48('0x177')}},_0x2f9ee3),_0x7e75b[_0x549e48('0x53')][_0x549e48('0x914')]('br',null));}));}}])&&_0x63bb08(_0x20d559['prototype'],_0x1c732d),_0x2b99de&&_0x63bb08(_0x20d559,_0x2b99de),_0x3425f8;}(_0x7e75b[_0x5384b5('0x53')][_0x5384b5('0xd04')]);_0x39df0a['default']=_0x4db4f4;},{'antd':_0x322f0f('0x9f8'),'react':_0x322f0f('0x603')}],0x40:[function(_0x490f6f,_0x2c2725,_0x517582){var _0x35b403=_0x322f0f;'use strict';Object[_0x35b403('0x2cd')](_0x517582,_0x35b403('0x866'),{'value':!0x0}),_0x517582['default']=void 0x0;var _0x990246,_0x1613ef=function(_0x4c1918){var _0x35cd0f=_0x35b403;if(_0x4c1918&&_0x4c1918['__esModule'])return _0x4c1918;if(null===_0x4c1918||_0x35cd0f('0x669')!==_0x36caf2(_0x4c1918)&&'function'!=typeof _0x4c1918)return{'default':_0x4c1918};var _0x5c29f4=_0x2745ed();if(_0x5c29f4&&_0x5c29f4['has'](_0x4c1918))return _0x5c29f4[_0x35cd0f('0x715')](_0x4c1918);var _0x16f889={},_0x1fd966=Object['defineProperty']&&Object[_0x35cd0f('0x3e7')];for(var _0x37eae3 in _0x4c1918)if(Object[_0x35cd0f('0x3ec')][_0x35cd0f('0x106')][_0x35cd0f('0x928')](_0x4c1918,_0x37eae3)){var _0x3066d8=_0x1fd966?Object[_0x35cd0f('0x3e7')](_0x4c1918,_0x37eae3):null;_0x3066d8&&(_0x3066d8[_0x35cd0f('0x715')]||_0x3066d8[_0x35cd0f('0x8ab')])?Object['defineProperty'](_0x16f889,_0x37eae3,_0x3066d8):_0x16f889[_0x37eae3]=_0x4c1918[_0x37eae3];}return _0x16f889[_0x35cd0f('0x53')]=_0x4c1918,_0x5c29f4&&_0x5c29f4[_0x35cd0f('0x8ab')](_0x4c1918,_0x16f889),_0x16f889;}(_0x490f6f(_0x35b403('0x603'))),_0x39fe6d=_0x490f6f(_0x35b403('0x9f8')),_0x4a7ca2=(_0x990246=_0x490f6f(_0x35b403('0x391')))&&_0x990246['__esModule']?_0x990246:{'default':_0x990246};function _0x2745ed(){var _0x2d4328=_0x35b403;if(_0x2d4328('0x67')!=typeof WeakMap)return null;var _0x3ca6e3=new WeakMap();return _0x2745ed=function(){return _0x3ca6e3;},_0x3ca6e3;}function _0x36caf2(_0x3e36de){var _0xbb21df=_0x35b403;return(_0x36caf2=_0xbb21df('0x67')==typeof Symbol&&_0xbb21df('0xd77')==typeof Symbol[_0xbb21df('0x303')]?function(_0x36df29){return typeof _0x36df29;}:function(_0x428a77){var _0x4bfcdd=_0xbb21df;return _0x428a77&&'function'==typeof Symbol&&_0x428a77[_0x4bfcdd('0xbe8')]===Symbol&&_0x428a77!==Symbol[_0x4bfcdd('0x3ec')]?'symbol':typeof _0x428a77;})(_0x3e36de);}function _0x1bc9cc(){var _0x507888=_0x35b403;return(_0x1bc9cc=Object[_0x507888('0x7df')]||function(_0x528508){var _0x20268c=_0x507888;for(var _0xe59473=0x1;_0xe594730x1e)return _0x4934bd['props'][_0xc81b4d('0x7c7')]['gt']('Password\x20too\x20long');if(!_0x2c7295['match'](/.*[0-9]+.*$/))return _0x4934bd[_0xc81b4d('0x2d0')]['adapter']['gt']('Password\x20must\x20include\x20at\x20least\x20one\x20number');if(!_0x2c7295[_0xc81b4d('0xa05')](/.*[a-z]+.*$/))return _0x4934bd[_0xc81b4d('0x2d0')][_0xc81b4d('0x7c7')]['gt']('Password\x20must\x20include\x20at\x20least\x20one\x20lowercase\x20letter');if(!_0x2c7295['match'](/.*[A-Z]+.*$/))return _0x4934bd['props'][_0xc81b4d('0x7c7')]['gt'](_0xc81b4d('0xccf'));return _0x2c7295['match'](/.*[\W]+.*$/)?null:_0x4934bd['props'][_0xc81b4d('0x7c7')]['gt'](_0xc81b4d('0x474'));},_0x4934bd[_0x223e62('0xc68')]=_0x1613ef[_0x223e62('0x53')]['createRef'](),_0x4934bd[_0x223e62('0x87b')]=new _0x4a7ca2[(_0x223e62('0x53'))](_0x4934bd[_0x223e62('0x2d0')][_0x223e62('0x7c7')]),_0x4934bd;}return _0x295c18=_0x16b95a,(_0x509723=[{'key':_0x49491f('0x26c'),'value':function(){var _0x53123b=_0x49491f;_0x39fe6d[_0x53123b('0x64')][_0x53123b('0x257')]({'top':0x28});}},{'key':_0x49491f('0x52'),'value':function(_0x2d4230){var _0x529201=_0x49491f,_0x412598=this[_0x529201('0x27a')](_0x2d4230);return null!==_0x412598?(this[_0x529201('0x4f8')]({'passwordHasError':!0x0}),this['setState']({'passwordState':{'hasFeedback':!0x0,'validateStatus':'error','help':_0x412598}}),!0x1):(this['setState']({'passwordHasError':!0x1}),this[_0x529201('0x4f8')]({'passwordState':{'hasFeedback':!0x0,'validateStatus':'success','help':''}}),!0x0);}},{'key':'updateConfirmPasswordState','value':function(_0x522722){var _0x1df70e=_0x49491f;return _0x522722[_0x1df70e('0x87a')]!==_0x522722['new']?(this[_0x1df70e('0x4f8')]({'confirmationHasError':!0x0}),this[_0x1df70e('0x4f8')]({'confirmationState':{'hasFeedback':!0x0,'validateStatus':_0x1df70e('0x855'),'help':_0x1df70e('0xc0d')}}),!0x1):(this['setState']({'confirmationHasError':!0x1}),this[_0x1df70e('0x4f8')]({'confirmationState':{'hasFeedback':!0x1,'validateStatus':'','help':''}}),!0x0);}},{'key':_0x49491f('0x265'),'value':function(){var _0x198c95=_0x49491f,_0x78094=this;return _0x1613ef[_0x198c95('0x53')]['createElement'](_0x39fe6d[_0x198c95('0x77a')],{'visible':this['props'][_0x198c95('0x7a8')],'title':_0x198c95('0x24c'),'onOk':this[_0x198c95('0xb40')],'onCancel':this[_0x198c95('0x4f3')],'footer':[_0x1613ef[_0x198c95('0x53')][_0x198c95('0x914')](_0x39fe6d[_0x198c95('0x5bf')],{'key':'back','onClick':this[_0x198c95('0x4f3')]},this['props'][_0x198c95('0x7c7')]['gt'](_0x198c95('0x440'))),_0x1613ef[_0x198c95('0x53')][_0x198c95('0x914')](_0x39fe6d[_0x198c95('0x5bf')],{'key':_0x198c95('0xc83'),'type':_0x198c95('0x754'),'loading':this[_0x198c95('0x97c')][_0x198c95('0xb9c')],'onClick':this[_0x198c95('0xb40')]},this[_0x198c95('0x2d0')][_0x198c95('0x7c7')]['gt'](_0x198c95('0xaea')))]},_0x1613ef[_0x198c95('0x53')][_0x198c95('0x914')](_0x39fe6d[_0x198c95('0xad2')],_0x1bc9cc({},{'labelCol':{'span':0x8},'wrapperCol':{'span':0x10}},{'ref':this[_0x198c95('0xc68')]}),_0x1613ef[_0x198c95('0x53')]['createElement'](_0x39fe6d[_0x198c95('0xad2')][_0x198c95('0x191')],{'label':_0x198c95('0xab4'),'key':_0x198c95('0x684'),'name':'current'},_0x1613ef['default'][_0x198c95('0x914')](_0x39fe6d[_0x198c95('0x242')][_0x198c95('0x297')],{'placeholder':_0x198c95('0x775')})),this[_0x198c95('0x97c')][_0x198c95('0x4d2')]&&_0x1613ef[_0x198c95('0x53')][_0x198c95('0x914')](_0x39fe6d[_0x198c95('0xad2')][_0x198c95('0x191')],_0x1bc9cc({'label':_0x198c95('0x967'),'key':_0x198c95('0xbf2'),'name':_0x198c95('0xbf2')},this[_0x198c95('0x97c')][_0x198c95('0x20e')]),_0x1613ef[_0x198c95('0x53')][_0x198c95('0x914')](_0x39fe6d[_0x198c95('0x242')][_0x198c95('0x297')],{'placeholder':_0x198c95('0xab1'),'onChange':function(_0x140b3d){var _0x1371d0=_0x198c95;return _0x78094[_0x1371d0('0x52')](_0x140b3d[_0x1371d0('0xb01')][_0x1371d0('0x9b6')]);}})),!this[_0x198c95('0x97c')][_0x198c95('0x4d2')]&&_0x1613ef[_0x198c95('0x53')]['createElement'](_0x39fe6d[_0x198c95('0xad2')][_0x198c95('0x191')],_0x1bc9cc({'label':'New\x20Password','key':_0x198c95('0xbf2'),'name':_0x198c95('0xbf2')},this[_0x198c95('0x97c')][_0x198c95('0x20e')]),_0x1613ef['default']['createElement'](_0x39fe6d[_0x198c95('0x242')]['Password'],{'placeholder':'new\x20password','onChange':function(_0x505188){var _0x5f2c47=_0x198c95;return _0x78094[_0x5f2c47('0x52')](_0x505188['target'][_0x5f2c47('0x9b6')]);}})),this[_0x198c95('0x97c')][_0x198c95('0x893')]&&_0x1613ef[_0x198c95('0x53')][_0x198c95('0x914')](_0x39fe6d[_0x198c95('0xad2')][_0x198c95('0x191')],_0x1bc9cc({'label':'Confirm\x20Password','key':'confirm','name':_0x198c95('0x87a')},this[_0x198c95('0x97c')][_0x198c95('0xc5f')]),_0x1613ef[_0x198c95('0x53')][_0x198c95('0x914')](_0x39fe6d[_0x198c95('0x242')][_0x198c95('0x297')],{'placeholder':_0x198c95('0x9bc'),'onChange':function(_0x411436){var _0x41186f=_0x198c95;return _0x78094[_0x41186f('0x38f')]();}})),!this['state'][_0x198c95('0x893')]&&_0x1613ef[_0x198c95('0x53')]['createElement'](_0x39fe6d[_0x198c95('0xad2')][_0x198c95('0x191')],{'label':_0x198c95('0x47d'),'key':_0x198c95('0x87a'),'name':_0x198c95('0x87a')},_0x1613ef[_0x198c95('0x53')][_0x198c95('0x914')](_0x39fe6d['Input']['Password'],{'placeholder':'confirm\x20password','onChange':function(_0x42503e){var _0x5d93e4=_0x198c95;return _0x78094[_0x5d93e4('0x38f')]();}}))));}}])&&_0xa790fe(_0x295c18[_0x49491f('0x3ec')],_0x509723),_0x4c189f&&_0xa790fe(_0x295c18,_0x4c189f),_0x16b95a;}(_0x1613ef['default']['Component']);_0x517582[_0x35b403('0x53')]=_0x28762d;},{'../api/CustomAction':0x2a,'antd':_0x322f0f('0x9f8'),'react':_0x322f0f('0x603')}],0x41:[function(_0x14249e,_0x221351,_0x8b68a5){var _0x23ae01=_0x322f0f;'use strict';var _0x84ccbf=_0x14249e(_0x23ae01('0x98f'));window[_0x23ae01('0xbd3')]=_0x84ccbf[_0x23ae01('0xbd3')],window[_0x23ae01('0x79f')]=_0x84ccbf[_0x23ae01('0x79f')];},{'./lib':0x42}],0x42:[function(_0x43ecb2,_0x5a4ab8,_0x186bd7){var _0x533563=_0x322f0f;'use strict';var _0x18eb8c=_0x14173e(_0x43ecb2('../../../api/AdapterBase')),_0xa23d55=_0x14173e(_0x43ecb2(_0x533563('0x786')));function _0x14173e(_0xc2cbb1){var _0x1d1b4e=_0x533563;return _0xc2cbb1&&_0xc2cbb1[_0x1d1b4e('0x866')]?_0xc2cbb1:{'default':_0xc2cbb1};}function _0x608c3b(_0x315003){var _0x4183c1=_0x533563;return(_0x608c3b=_0x4183c1('0x67')==typeof Symbol&&'symbol'==typeof Symbol[_0x4183c1('0x303')]?function(_0xdd0660){return typeof _0xdd0660;}:function(_0x4ebc0b){var _0x739ee2=_0x4183c1;return _0x4ebc0b&&_0x739ee2('0x67')==typeof Symbol&&_0x4ebc0b[_0x739ee2('0xbe8')]===Symbol&&_0x4ebc0b!==Symbol['prototype']?_0x739ee2('0xd77'):typeof _0x4ebc0b;})(_0x315003);}function _0x1b197f(_0x41f9b1,_0x7af940){var _0x4095ad=_0x533563;if(!(_0x41f9b1 instanceof _0x7af940))throw new TypeError(_0x4095ad('0xc2c'));}function _0x53de0f(_0x1bd7dd,_0x38e37f){var _0xe67579=_0x533563;for(var _0x2c9a21=0x0;_0x2c9a21<_0x38e37f[_0xe67579('0x1d1')];_0x2c9a21++){var _0x386e5c=_0x38e37f[_0x2c9a21];_0x386e5c['enumerable']=_0x386e5c[_0xe67579('0x836')]||!0x1,_0x386e5c[_0xe67579('0x249')]=!0x0,_0xe67579('0x9b6')in _0x386e5c&&(_0x386e5c[_0xe67579('0xc28')]=!0x0),Object['defineProperty'](_0x1bd7dd,_0x386e5c[_0xe67579('0xcb6')],_0x386e5c);}}function _0x485bdf(_0x2232ef,_0x476782,_0x30fe20){return _0x476782&&_0x53de0f(_0x2232ef['prototype'],_0x476782),_0x30fe20&&_0x53de0f(_0x2232ef,_0x30fe20),_0x2232ef;}function _0x1081fb(_0x28027f){return function(){var _0x349458=_0x3e44,_0x357240,_0x24f613=_0x4f3765(_0x28027f);if(_0x512e40()){var _0x1ee4bc=_0x4f3765(this)[_0x349458('0xbe8')];_0x357240=Reflect['construct'](_0x24f613,arguments,_0x1ee4bc);}else _0x357240=_0x24f613[_0x349458('0x7da')](this,arguments);return _0x9aeaf3(this,_0x357240);};}function _0x9aeaf3(_0x1e8509,_0x456689){var _0x233263=_0x533563;return!_0x456689||_0x233263('0x669')!==_0x608c3b(_0x456689)&&_0x233263('0x67')!=typeof _0x456689?function(_0x5bcc97){var _0x454d01=_0x233263;if(void 0x0===_0x5bcc97)throw new ReferenceError(_0x454d01('0xba4'));return _0x5bcc97;}(_0x1e8509):_0x456689;}function _0x512e40(){var _0x1e98b5=_0x533563;if(_0x1e98b5('0x396')==typeof Reflect||!Reflect[_0x1e98b5('0xa71')])return!0x1;if(Reflect[_0x1e98b5('0xa71')][_0x1e98b5('0x886')])return!0x1;if(_0x1e98b5('0x67')==typeof Proxy)return!0x0;try{return Date[_0x1e98b5('0x3ec')][_0x1e98b5('0x8dc')]['call'](Reflect[_0x1e98b5('0xa71')](Date,[],function(){})),!0x0;}catch(_0x4c2c75){return!0x1;}}function _0x4f3765(_0x1cd3ef){var _0x557779=_0x533563;return(_0x4f3765=Object[_0x557779('0x16')]?Object[_0x557779('0x418')]:function(_0x754497){var _0x47bfaa=_0x557779;return _0x754497[_0x47bfaa('0xc15')]||Object[_0x47bfaa('0x418')](_0x754497);})(_0x1cd3ef);}function _0x118376(_0x362377,_0x524c1e){var _0x211d6d=_0x533563;if(_0x211d6d('0x67')!=typeof _0x524c1e&&null!==_0x524c1e)throw new TypeError('Super\x20expression\x20must\x20either\x20be\x20null\x20or\x20a\x20function');_0x362377['prototype']=Object[_0x211d6d('0xd9d')](_0x524c1e&&_0x524c1e[_0x211d6d('0x3ec')],{'constructor':{'value':_0x362377,'writable':!0x0,'configurable':!0x0}}),_0x524c1e&&_0x5eb05c(_0x362377,_0x524c1e);}function _0x5eb05c(_0x4baae3,_0x2901b6){return(_0x5eb05c=Object['setPrototypeOf']||function(_0x36075f,_0x473768){return _0x36075f['__proto__']=_0x473768,_0x36075f;})(_0x4baae3,_0x2901b6);}var _0x5370c4=function(_0x4955eb){var _0x22f4cb=_0x533563;_0x118376(_0x2eb241,_0x4955eb);var _0x52d8b6=_0x1081fb(_0x2eb241);function _0x2eb241(_0x9184ca,_0x44c508,_0x1e4ec2,_0x170ad6){var _0x70e8d4=_0x3e44,_0x1a5f4;return _0x1b197f(this,_0x2eb241),(_0x1a5f4=_0x52d8b6[_0x70e8d4('0x928')](this,_0x9184ca,_0x44c508,_0x1e4ec2,_0x170ad6))[_0x70e8d4('0x8a1')]=null,_0x1a5f4[_0x70e8d4('0x9a0')]=0x0,_0x1a5f4[_0x70e8d4('0x3f')]=0x0,_0x1a5f4[_0x70e8d4('0x469')]=0x0,_0x1a5f4;}return _0x485bdf(_0x2eb241,[{'key':_0x22f4cb('0xc73'),'value':function(){var _0x3f963a=_0x22f4cb;this[_0x3f963a('0x963')](_0x3f963a('0x50c'));}},{'key':_0x22f4cb('0xa8f'),'value':function(_0x52e9ab){var _0x607762=_0x22f4cb;this[_0x607762('0x9a0')]=_0x52e9ab;}},{'key':_0x22f4cb('0x5'),'value':function(_0x28026f){var _0x5a1861=_0x22f4cb;this[_0x5a1861('0x469')]=parseInt(_0x28026f,0xa);}},{'key':'getDataMapping','value':function(){var _0x569295=_0x22f4cb;return['id',_0x569295('0xe2'),'out_time',_0x569295('0xca8')];}},{'key':_0x22f4cb('0x6f7'),'value':function(){var _0x477a95=_0x22f4cb;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':_0x477a95('0xb93')},{'sTitle':_0x477a95('0x75f')},{'sTitle':'Note'}];}},{'key':'getFormFields','value':function(){var _0x417987=_0x22f4cb;return 0x0===this[_0x417987('0x9a0')]?[['id',{'label':'ID','type':_0x417987('0xb0f')}],[_0x417987('0x322'),{'label':_0x417987('0x6c2'),'type':_0x417987('0x44c')}],[_0x417987('0xca8'),{'label':_0x417987('0x482'),'type':'textarea','validation':'none'}]]:[['id',{'label':'ID','type':'hidden'}],[_0x417987('0xca8'),{'label':_0x417987('0x482'),'type':_0x417987('0x219'),'validation':'none'}]];}},{'key':_0x22f4cb('0x6b5'),'value':function(){var _0x9832e6=_0x22f4cb,_0x39f53f=this;return{'aoColumnDefs':[{'fnRender':function(_0x5c8099,_0x5a4833){var _0x2fa3de=_0x3e44;return _0x39f53f[_0x2fa3de('0x621')](_0x5c8099,_0x5a4833,0x1);},'aTargets':[0x1]},{'fnRender':function(_0x2d72bc,_0x2fcd05){var _0x102784=_0x3e44;return _0x39f53f[_0x102784('0x621')](_0x2d72bc,_0x2fcd05,0x2);},'aTargets':[0x2]},{'fnRender':function(_0x1a9bde,_0x58507b){var _0x3c5368=_0x3e44;return _0x39f53f[_0x3c5368('0x621')](_0x1a9bde,_0x58507b,0x3);},'aTargets':[0x3]},{'fnRender':_0x39f53f[_0x9832e6('0x26d')],'aTargets':[_0x39f53f['getDataMapping']()[_0x9832e6('0x1d1')]]}]};}},{'key':_0x22f4cb('0x621'),'value':function(_0x17d53f,_0x71bedf,_0x3d9668){var _0x292fc1=_0x22f4cb;return 0x1===_0x3d9668?'0000-00-00\x2000:00:00'===_0x71bedf||''===_0x71bedf||null==_0x71bedf?'':Date[_0x292fc1('0xb50')](_0x71bedf)[_0x292fc1('0x8dc')](_0x292fc1('0x5e0')):0x2===_0x3d9668?'0000-00-00\x2000:00:00'===_0x71bedf||''===_0x71bedf||null==_0x71bedf?'':Date[_0x292fc1('0xb50')](_0x71bedf)[_0x292fc1('0x8dc')](_0x292fc1('0x287')):0x3===_0x3d9668&&null!=_0x71bedf&&_0x71bedf[_0x292fc1('0x1d1')]>0x14?''[_0x292fc1('0x49e')](_0x71bedf[_0x292fc1('0x627')](0x0,0x14),'..'):_0x71bedf;}},{'key':_0x22f4cb('0x3cd'),'value':function(_0x29f5b4,_0x244513){return'';}},{'key':_0x22f4cb('0x377'),'value':function(){var _0x5b16b9=_0x22f4cb;return null===this[_0x5b16b9('0x8a1')]||void 0x0===this['punch']?'Punch-in\x20':'Punch-out\x20';}},{'key':_0x22f4cb('0xb0b'),'value':function(){var _0x37f5d6=_0x22f4cb,_0x3a75fe=new _0xa23d55[(_0x37f5d6('0x53'))](''['concat'](this['getTableName'](),'_submit'),!0x0,{'ShowPopup':!0x1,'LabelErrorClass':'error'});if(_0x3a75fe[_0x37f5d6('0x1c1')]()){var _0x3b4999=this[_0x37f5d6('0xa75')]();if(null==_0x3b4999){var _0x458578=_0x3a75fe['getFormParameters']();(_0x458578=this[_0x37f5d6('0x9e9')](_0x458578))['cdate']=this[_0x37f5d6('0x68e')](new Date())['toISOString']()[_0x37f5d6('0x63a')](0x0,0x13)[_0x37f5d6('0x95e')]('T','\x20');var _0x32c233=JSON[_0x37f5d6('0x263')](_0x458578),_0x56b612=[];_0x56b612[_0x37f5d6('0x400')]=[],_0x56b612['callBackSuccess']='saveSuccessCallback',_0x56b612['callBackFail']=_0x37f5d6('0x856'),this[_0x37f5d6('0x87b')]('savePunch',_0x37f5d6('0xc55'),_0x32c233,_0x56b612,!0x0);}else $('#'[_0x37f5d6('0x49e')](this[_0x37f5d6('0x6d8')](),'Form\x20.label'))[_0x37f5d6('0x826')](_0x3b4999),$('#'['concat'](this['getTableName'](),'Form\x20.label'))['show']();}}},{'key':_0x22f4cb('0x349'),'value':function(_0x266c84){var _0x4ae02c=_0x22f4cb;this[_0x4ae02c('0x8a1')]=_0x266c84,this[_0x4ae02c('0x963')](_0x4ae02c('0x50c')),$(_0x4ae02c('0x63'))[_0x4ae02c('0xbe5')](_0x4ae02c('0x79b')),this[_0x4ae02c('0x715')]([]);}},{'key':'cancel','value':function(){var _0x4c4c2a=_0x22f4cb;$(_0x4c4c2a('0x63'))[_0x4c4c2a('0xbe5')]('hide');}},{'key':'showPunchDialog','value':function(){var _0x3880f9=_0x22f4cb;this[_0x3880f9('0x963')]('showPunchDialogShowPunchSuccessCallBack');}},{'key':'getPunch','value':function(_0x211688){var _0x425448=_0x22f4cb,_0x42bedb={};_0x42bedb[_0x425448('0xd98')]=this['getClientDate'](new Date())['toISOString']()[_0x425448('0x63a')](0x0,0x13)['replace']('T','\x20'),_0x42bedb[_0x425448('0x483')]=this[_0x425448('0x915')]();var _0x52da4a=JSON[_0x425448('0x263')](_0x42bedb),_0x434f3f=[];_0x434f3f[_0x425448('0x400')]=[],_0x434f3f[_0x425448('0x947')]=_0x211688,_0x434f3f[_0x425448('0x350')]=_0x425448('0x856'),this['customAction'](_0x425448('0x963'),'modules=attendance',_0x52da4a,_0x434f3f);}},{'key':_0x22f4cb('0x5b0'),'value':function(_0x559161){var _0x44ac31=_0x22f4cb;this['punch']=_0x559161,$(_0x44ac31('0x63'))[_0x44ac31('0xbe5')]('show'),null===this[_0x44ac31('0x8a1')]?($(_0x44ac31('0x63'))[_0x44ac31('0xdb8')]('h3')[_0x44ac31('0x826')](_0x44ac31('0xa6f')),modJs[_0x44ac31('0x5a4')]()):($(_0x44ac31('0x63'))[_0x44ac31('0xdb8')]('h3')[_0x44ac31('0x826')](_0x44ac31('0x4fe')),modJs['renderForm'](this[_0x44ac31('0x8a1')])),$(_0x44ac31('0xae'))[_0x44ac31('0x388')](),$(_0x44ac31('0x380'))[_0x44ac31('0xc8f')](_0x44ac31('0x90b'))[_0x44ac31('0xc44')](new Date());}},{'key':'changePunchButtonSuccessCallBack','value':function(_0x2209ad){var _0x44d1cf=_0x22f4cb;this[_0x44d1cf('0x8a1')]=_0x2209ad,null===this[_0x44d1cf('0x8a1')]?$('#punchButton')['html'](_0x44d1cf('0x60e')):$('#punchButton')[_0x44d1cf('0x826')]('Punch-out\x20');}},{'key':_0x22f4cb('0x856'),'value':function(_0x4e5bd3){var _0x8b087b=_0x22f4cb;this[_0x8b087b('0xcc4')](_0x8b087b('0xc13'),_0x4e5bd3);}},{'key':_0x22f4cb('0x68e'),'value':function(_0x2bed7d){var _0x435089=_0x22f4cb,_0x329545=this[_0x435089('0x915')]();return _0x2bed7d[_0x435089('0xd63')](0x3c*_0x329545);}},{'key':_0x22f4cb('0x915'),'value':function(){var _0x1ade3f=_0x22f4cb,_0x1ef730=new Date(),_0x4d3d6d=new Date(_0x1ef730[_0x1ade3f('0xcba')](),0x0,0x1,0x0,0x0,0x0,0x0),_0x296c7c=_0x4d3d6d[_0x1ade3f('0x25b')]();return(_0x4d3d6d-new Date(_0x296c7c[_0x1ade3f('0x627')](0x0,_0x296c7c['lastIndexOf']('\x20')-0x1)))/0x36ee80;}},{'key':_0x22f4cb('0xa75'),'value':function(_0x119ad6){var _0x10636e=_0x22f4cb;return 0x1!==this[_0x10636e('0x469')]||this['photoTaken']?null:_0x10636e('0xc75');}},{'key':_0x22f4cb('0x9e9'),'value':function(_0x53c7be){var _0x2ac87f=_0x22f4cb;if(0x1===this[_0x2ac87f('0x469')]){var _0x370e12=document[_0x2ac87f('0x803')](_0x2ac87f('0x2a7'));_0x53c7be['image']=_0x370e12[_0x2ac87f('0x952')]();}return _0x53c7be;}},{'key':_0x22f4cb('0xbfc'),'value':function(){var _0x56f98a=_0x22f4cb;if(0x1===this['photoAttendance']){$('.photoAttendance')['show']();var _0xf48051=document[_0x56f98a('0x803')](_0x56f98a('0x291'));navigator['mediaDevices']&&navigator[_0x56f98a('0x477')]['getUserMedia']&&navigator[_0x56f98a('0x477')][_0x56f98a('0x2da')]({'video':!0x0})[_0x56f98a('0x577')](function(_0x1f1a2d){var _0x2421d6=_0x56f98a;_0xf48051[_0x2421d6('0xb5a')]=_0x1f1a2d,_0xf48051[_0x2421d6('0x87f')]();}),this[_0x56f98a('0x3f')]=!0x1,this[_0x56f98a('0xbcb')]();}else $(_0x56f98a('0x49c'))[_0x56f98a('0x8b7')]();}},{'key':_0x22f4cb('0xbcb'),'value':function(){var _0x4ad4f3=_0x22f4cb,_0x54b42c=this,_0x23ec74=document[_0x4ad4f3('0x803')](_0x4ad4f3('0x2a7'))[_0x4ad4f3('0xa7b')]('2d'),_0x1e4cf2=document[_0x4ad4f3('0x803')](_0x4ad4f3('0x291'));$(_0x4ad4f3('0xb39'))[_0x4ad4f3('0x67b')](function(){var _0x178cb5=_0x4ad4f3;return _0x23ec74['drawImage'](_0x1e4cf2,0x0,0x0,0xd0,0x9c),_0x54b42c[_0x178cb5('0x3f')]=!0x0,!0x1;});}}]),_0x2eb241;}(_0x18eb8c['default']),_0x2134f1=function(_0x22db74){var _0x50b761=_0x533563;_0x118376(_0x240b4e,_0x22db74);var _0x205d5f=_0x1081fb(_0x240b4e);function _0x240b4e(_0x43583f,_0x252675,_0x2c8563,_0x10ce86){var _0x35f976=_0x3e44,_0x5a1f67;return _0x1b197f(this,_0x240b4e),(_0x5a1f67=_0x205d5f['call'](this,_0x43583f,_0x252675,_0x2c8563,_0x10ce86))[_0x35f976('0x586')]=null,_0x5a1f67['currentTimesheet']=null,_0x5a1f67;}return _0x485bdf(_0x240b4e,[{'key':'getDataMapping','value':function(){var _0x137f26=_0x3e44;return['id',_0x137f26('0xc42'),'date_end','total_time',_0x137f26('0x90d')];}},{'key':_0x50b761('0x6f7'),'value':function(){var _0x5232d9=_0x50b761;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':'Start\x20Date'},{'sTitle':_0x5232d9('0x9f3')},{'sTitle':_0x5232d9('0x1c2')},{'sTitle':'Status'}];}},{'key':_0x50b761('0x59d'),'value':function(){var _0x545248=_0x50b761;return[['id',{'label':'ID','type':_0x545248('0xb0f')}],[_0x545248('0xc42'),{'label':_0x545248('0x34d'),'type':'date','validation':''}],[_0x545248('0x13a'),{'label':'TimeSheet\x20End\x20Date','type':'date','validation':''}],[_0x545248('0x2f1'),{'label':'Reason','type':_0x545248('0x219'),'validation':'none'}]];}},{'key':_0x50b761('0xacc'),'value':function(_0x5b4a32){var _0x529680=_0x50b761;return _0x5b4a32[0x1]=Date[_0x529680('0xb50')](_0x5b4a32[0x1])[_0x529680('0x8dc')](_0x529680('0x1f3')),_0x5b4a32[0x2]=Date[_0x529680('0xb50')](_0x5b4a32[0x2])[_0x529680('0x8dc')](_0x529680('0x1f3')),_0x5b4a32;}},{'key':_0x50b761('0x5a4'),'value':function(_0x5647e4){var _0x1c113b=_0x50b761,_0x4b9635=this[_0x1c113b('0x2a8')]['formTemplate'];$('#'['concat'](this['getTableName'](),_0x1c113b('0xad2')))[_0x1c113b('0x826')](_0x4b9635),$('#'['concat'](this['getTableName'](),'Form'))[_0x1c113b('0x388')](),$('#'['concat'](this['getTableName']()))[_0x1c113b('0x79b')](),$('#attendnacesheet_start')[_0x1c113b('0x826')](Date[_0x1c113b('0xb50')](_0x5647e4['date_start'])[_0x1c113b('0x8dc')](_0x1c113b('0x1f3'))),$(_0x1c113b('0x726'))['html'](Date['parse'](_0x5647e4['date_end'])[_0x1c113b('0x8dc')](_0x1c113b('0x1f3'))),this[_0x1c113b('0x3b2')]=_0x5647e4,this['getTimeEntries']();}},{'key':'getTimeEntries','value':function(){var _0x221e1d=_0x50b761,_0x427fee=this[_0x221e1d('0xb61')],_0x124a81=JSON[_0x221e1d('0x263')](modJsList[_0x221e1d('0x302')][_0x221e1d('0x49')]()),_0x40cd97=JSON[_0x221e1d('0x263')]({'id':_0x427fee,'sm':_0x124a81}),_0x1fa44e=[];_0x1fa44e[_0x221e1d('0x400')]=[],_0x1fa44e[_0x221e1d('0x947')]=_0x221e1d('0xb86'),_0x1fa44e['callBackFail']='getTimeEntriesFailCallBack',this['customAction'](_0x221e1d('0x2c'),_0x221e1d('0x38b'),_0x40cd97,_0x1fa44e);}},{'key':_0x50b761('0xb86'),'value':function(_0x1a6e17){var _0xab5cb=_0x50b761;for(var _0x5c3246=_0x1a6e17,_0x45a1b9='',_0x12a9c8=0x0;_0x12a9c8<_0x5c3246[_0xab5cb('0x1d1')];_0x12a9c8++)try{var _0x9015c2=_0xab5cb('0xb95');_0x9015c2=(_0x9015c2=_0x9015c2[_0xab5cb('0x95e')](/_start_/g,Date['parse'](_0x5c3246[_0x12a9c8]['date_start'])[_0xab5cb('0x8dc')](_0xab5cb('0x235'))))[_0xab5cb('0x95e')](/_end_/g,Date[_0xab5cb('0xb50')](_0x5c3246[_0x12a9c8][_0xab5cb('0x13a')])[_0xab5cb('0x8dc')](_0xab5cb('0x235')));var _0x2bb2fb=Date[_0xab5cb('0xb50')](_0x5c3246[_0x12a9c8][_0xab5cb('0x13a')])-Date[_0xab5cb('0xb50')](_0x5c3246[_0x12a9c8][_0xab5cb('0xc42')]),_0x5590d8=Math[_0xab5cb('0xd3b')](_0x2bb2fb/0xea60),_0x3b6592=_0x5590d8%0x3c,_0x12447a=(_0x5590d8-_0x3b6592)/0x3c;_0x9015c2=_0x9015c2[_0xab5cb('0x95e')](/_duration_/g,_0xab5cb('0x851')[_0xab5cb('0x49e')](_0x12447a,_0xab5cb('0x87e'))[_0xab5cb('0x49e')](_0x3b6592,')')),_0x45a1b9+=_0x9015c2=(_0x9015c2=(_0x9015c2=(_0x9015c2=(_0x9015c2=_0xab5cb('0xcf6')===_0x5c3246[_0x12a9c8][_0xab5cb('0xa86')]||null===_0x5c3246[_0x12a9c8][_0xab5cb('0xa86')]||void 0x0===_0x5c3246[_0x12a9c8][_0xab5cb('0xa86')]?_0x9015c2[_0xab5cb('0x95e')](/_project_/g,_0xab5cb('0x1ee')):_0x9015c2[_0xab5cb('0x95e')](/_project_/g,_0x5c3246[_0x12a9c8][_0xab5cb('0xa86')]))['replace'](/_project_/g,_0x5c3246[_0x12a9c8][_0xab5cb('0xa86')]))[_0xab5cb('0x95e')](/_details_/g,_0x5c3246[_0x12a9c8][_0xab5cb('0x2f1')]))['replace'](/_id_/g,_0x5c3246[_0x12a9c8]['id']))[_0xab5cb('0x95e')](/_BASE_/g,this['baseUrl']);}catch(_0xe351bd){}$(_0xab5cb('0x83b'))[_0xab5cb('0x826')](_0x45a1b9),_0xab5cb('0x55d')===modJs[_0xab5cb('0x6d8')]()||_0xab5cb('0x756')===this[_0xab5cb('0xc18')][_0xab5cb('0x90d')]?($(_0xab5cb('0x239'))[_0xab5cb('0x79b')](),$('#add_time_sheet_entry')['hide']()):($(_0xab5cb('0x239'))[_0xab5cb('0x388')](),$(_0xab5cb('0x509'))['show']());}},{'key':_0x50b761('0x24f'),'value':function(_0x2dee4c){var _0x33a1ce=_0x50b761;this[_0x33a1ce('0xcc4')]('Error',_0x33a1ce('0xb8c'));}},{'key':'createPreviousAttendnacesheet','value':function(_0x137107){var _0x2f8e9c=_0x50b761,_0x235e0e=JSON[_0x2f8e9c('0x263')]({'id':_0x137107}),_0x1ffb0c=[];_0x1ffb0c['callBackData']=[],_0x1ffb0c[_0x2f8e9c('0x947')]=_0x2f8e9c('0x954'),_0x1ffb0c[_0x2f8e9c('0x350')]=_0x2f8e9c('0x1d4'),this[_0x2f8e9c('0x87b')](_0x2f8e9c('0x1d2'),'modules=attendnace',_0x235e0e,_0x1ffb0c);}},{'key':_0x50b761('0x954'),'value':function(_0x5e0b22){var _0x315222=_0x50b761;$(_0x315222('0x43a'))[_0x315222('0x671')]('display','none'),$(_0x315222('0x43a'))[_0x315222('0x8b7')](),this[_0x315222('0x715')]([]);}},{'key':_0x50b761('0x1d4'),'value':function(_0x130623){var _0x23a3b5=_0x50b761;this[_0x23a3b5('0xcc4')]('Error',_0x130623);}},{'key':_0x50b761('0x3cd'),'value':function(_0x53feef,_0x111137){var _0x356900=_0x50b761;return(_0x356900('0x9a3')===this[_0x356900('0x6d8')]()?_0x356900('0x535'):_0x356900('0x3a2'))[_0x356900('0x95e')](/_id_/g,_0x53feef)[_0x356900('0x95e')](/_BASE_/g,this[_0x356900('0xadb')]);}},{'key':_0x50b761('0x6b5'),'value':function(){var _0x4a13e3=_0x50b761,_0xd1ae29=this;return{'aoColumnDefs':[{'fnRender':function(_0x262e2a,_0xf2fd0e){return _0xd1ae29['preProcessRemoteTableData'](_0x262e2a,_0xf2fd0e,0x1);},'aTargets':[0x1]},{'fnRender':function(_0xa68d24,_0x4c04e4){var _0x25c91d=_0x3e44;return _0xd1ae29[_0x25c91d('0x621')](_0xa68d24,_0x4c04e4,0x2);},'aTargets':[0x2]},{'fnRender':_0xd1ae29['getActionButtons'],'aTargets':[_0xd1ae29['getDataMapping']()[_0x4a13e3('0x1d1')]]}]};}},{'key':'preProcessRemoteTableData','value':function(_0x4ebee4,_0x144c5e,_0x1f20ba){var _0x278cda=_0x50b761;return Date[_0x278cda('0xb50')](_0x144c5e)[_0x278cda('0x8dc')](_0x278cda('0x1f3'));}}]),_0x240b4e;}(_0x18eb8c['default']);_0x5a4ab8[_0x533563('0x91e')]={'AttendanceAdapter':_0x5370c4,'EmployeeAttendanceSheetAdapter':_0x2134f1};},{'../../../api/AdapterBase':0x27,'../../../api/FormValidation':0x2c}],0x43:[function(_0x43185b,_0x25eae4,_0x1ecad0){var _0x56dc5d=_0x322f0f;'use strict';var _0x365975=_0x43185b('./lib');window[_0x56dc5d('0x3c3')]=_0x365975[_0x56dc5d('0x3c3')];},{'./lib':0x44}],0x44:[function(_0x5a7f28,_0x5640ee,_0x3961e0){var _0x5d35b5=_0x322f0f;'use strict';var _0x49a4f2;function _0x5f2c0a(_0x80db8f){var _0x2fadd8=_0x3e44;return(_0x5f2c0a=_0x2fadd8('0x67')==typeof Symbol&&'symbol'==typeof Symbol['iterator']?function(_0x22e221){return typeof _0x22e221;}:function(_0x2eb915){var _0x5b661f=_0x2fadd8;return _0x2eb915&&_0x5b661f('0x67')==typeof Symbol&&_0x2eb915[_0x5b661f('0xbe8')]===Symbol&&_0x2eb915!==Symbol[_0x5b661f('0x3ec')]?_0x5b661f('0xd77'):typeof _0x2eb915;})(_0x80db8f);}function _0x9b4e3c(_0x24f5b3,_0xd965d9){if(!(_0x24f5b3 instanceof _0xd965d9))throw new TypeError('Cannot\x20call\x20a\x20class\x20as\x20a\x20function');}function _0x430bde(_0x3e8cfe,_0x569902){var _0x1faa41=_0x3e44;for(var _0x3f3b51=0x0;_0x3f3b51<_0x569902[_0x1faa41('0x1d1')];_0x3f3b51++){var _0xb7af38=_0x569902[_0x3f3b51];_0xb7af38[_0x1faa41('0x836')]=_0xb7af38[_0x1faa41('0x836')]||!0x1,_0xb7af38[_0x1faa41('0x249')]=!0x0,'value'in _0xb7af38&&(_0xb7af38[_0x1faa41('0xc28')]=!0x0),Object[_0x1faa41('0x2cd')](_0x3e8cfe,_0xb7af38[_0x1faa41('0xcb6')],_0xb7af38);}}function _0x438482(_0x42af52,_0x11bb55){var _0x20fc37=_0x3e44;return!_0x11bb55||_0x20fc37('0x669')!==_0x5f2c0a(_0x11bb55)&&'function'!=typeof _0x11bb55?function(_0x51ea8b){var _0x33384f=_0x20fc37;if(void 0x0===_0x51ea8b)throw new ReferenceError(_0x33384f('0xba4'));return _0x51ea8b;}(_0x42af52):_0x11bb55;}function _0x27147d(){var _0x1251ff=_0x3e44;if('undefined'==typeof Reflect||!Reflect[_0x1251ff('0xa71')])return!0x1;if(Reflect[_0x1251ff('0xa71')][_0x1251ff('0x886')])return!0x1;if('function'==typeof Proxy)return!0x0;try{return Date[_0x1251ff('0x3ec')][_0x1251ff('0x8dc')][_0x1251ff('0x928')](Reflect[_0x1251ff('0xa71')](Date,[],function(){})),!0x0;}catch(_0x9c21a9){return!0x1;}}function _0x54b059(_0x1b46a3){var _0x34b8c8=_0x3e44;return(_0x54b059=Object['setPrototypeOf']?Object[_0x34b8c8('0x418')]:function(_0x210d13){var _0x2bbb53=_0x34b8c8;return _0x210d13[_0x2bbb53('0xc15')]||Object['getPrototypeOf'](_0x210d13);})(_0x1b46a3);}function _0x3c633e(_0x21407f,_0x3437a1){var _0x58eaf1=_0x3e44;return(_0x3c633e=Object[_0x58eaf1('0x16')]||function(_0x9144f8,_0x1bc2c1){var _0x7d20aa=_0x58eaf1;return _0x9144f8[_0x7d20aa('0xc15')]=_0x1bc2c1,_0x9144f8;})(_0x21407f,_0x3437a1);}var _0x461682=function(_0x421581){var _0x26fcaa=_0x3e44;!function(_0x44e392,_0x425c35){var _0x47cb4b=_0x3e44;if('function'!=typeof _0x425c35&&null!==_0x425c35)throw new TypeError(_0x47cb4b('0xc9'));_0x44e392['prototype']=Object['create'](_0x425c35&&_0x425c35[_0x47cb4b('0x3ec')],{'constructor':{'value':_0x44e392,'writable':!0x0,'configurable':!0x0}}),_0x425c35&&_0x3c633e(_0x44e392,_0x425c35);}(_0x463233,_0x421581);var _0x467a2f,_0x1d1f69,_0x59ae59,_0x5bafc2,_0x348816=(_0x467a2f=_0x463233,function(){var _0x5ed3b4=_0x3e44,_0x5129c3,_0x132213=_0x54b059(_0x467a2f);if(_0x27147d()){var _0xa1a99a=_0x54b059(this)[_0x5ed3b4('0xbe8')];_0x5129c3=Reflect[_0x5ed3b4('0xa71')](_0x132213,arguments,_0xa1a99a);}else _0x5129c3=_0x132213[_0x5ed3b4('0x7da')](this,arguments);return _0x438482(this,_0x5129c3);});function _0x463233(){var _0x5972f7=_0x3e44;return _0x9b4e3c(this,_0x463233),_0x348816[_0x5972f7('0x7da')](this,arguments);}return _0x1d1f69=_0x463233,(_0x59ae59=[{'key':_0x26fcaa('0xc58'),'value':function(){return[];}},{'key':_0x26fcaa('0x6f7'),'value':function(){return[];}},{'key':_0x26fcaa('0x59d'),'value':function(){return[];}},{'key':'get','value':function(_0x133ca4){}},{'key':_0x26fcaa('0x963'),'value':function(){var _0x26597b=_0x26fcaa,_0x5f2e25={};_0x5f2e25[_0x26597b('0xd98')]=this[_0x26597b('0x68e')](new Date())[_0x26597b('0x66c')]()[_0x26597b('0x63a')](0x0,0x13)[_0x26597b('0x95e')]('T','\x20'),_0x5f2e25[_0x26597b('0x483')]=this[_0x26597b('0x915')]();var _0x26fe81=JSON[_0x26597b('0x263')](_0x5f2e25),_0x3db669=[];_0x3db669['callBackData']=[],_0x3db669[_0x26597b('0x947')]=_0x26597b('0x940'),_0x3db669[_0x26597b('0x350')]=_0x26597b('0x856'),this[_0x26597b('0x87b')](_0x26597b('0x963'),_0x26597b('0xc55'),_0x26fe81,_0x3db669);}},{'key':'getPunchSuccessCallBack','value':function(_0x389b79){var _0x237d23=_0x26fcaa,_0x19f587=_0x389b79;null==_0x19f587?($('#lastPunchTime')[_0x237d23('0x826')](_0x237d23('0xef')),$(_0x237d23('0xaed'))[_0x237d23('0x826')](_0x237d23('0xd15'))):($(_0x237d23('0xb3d'))[_0x237d23('0x826')](Date[_0x237d23('0xb50')](_0x19f587[_0x237d23('0xe2')])['toString']('h:mm\x20tt')),$(_0x237d23('0xaed'))['html'](_0x237d23('0xd15')));}},{'key':_0x26fcaa('0x856'),'value':function(_0x225d45){}},{'key':_0x26fcaa('0x129'),'value':function(){var _0x527e8d=_0x26fcaa,_0x20d125=JSON['stringify']({}),_0x5a7934=[];_0x5a7934[_0x527e8d('0x400')]=[],_0x5a7934[_0x527e8d('0x947')]='getInitDataSuccessCallBack',_0x5a7934[_0x527e8d('0x350')]=_0x527e8d('0xb1'),this[_0x527e8d('0x87b')](_0x527e8d('0x129'),_0x527e8d('0xa5b'),_0x20d125,_0x5a7934);}},{'key':_0x26fcaa('0x5ad'),'value':function(_0x10e628){var _0x2e948f=_0x26fcaa;$('#timeSheetHoursWorked')[_0x2e948f('0x826')](_0x10e628['lastTimeSheetHours']),$(_0x2e948f('0x584'))[_0x2e948f('0x826')](_0x10e628[_0x2e948f('0xa19')]),$(_0x2e948f('0x4a1'))[_0x2e948f('0x826')](_0x10e628['pendingLeaves']),$(_0x2e948f('0x436'))[_0x2e948f('0x826')](''[_0x2e948f('0x49e')](_0x10e628['numberOfEmployees'],_0x2e948f('0xc54'))),$(_0x2e948f('0xac7'))[_0x2e948f('0x826')](''['concat'](_0x10e628[_0x2e948f('0x753')],_0x2e948f('0x797'))),$(_0x2e948f('0x823'))[_0x2e948f('0x826')](''[_0x2e948f('0x49e')](_0x10e628[_0x2e948f('0x2fc')],'\x20Active')),$(_0x2e948f('0x412'))[_0x2e948f('0x826')](''[_0x2e948f('0x49e')](_0x10e628[_0x2e948f('0xa3e')],_0x2e948f('0x3c0')));}},{'key':_0x26fcaa('0xb1'),'value':function(_0x200f59){}},{'key':_0x26fcaa('0x68e'),'value':function(_0x24f70b){var _0x402623=_0x26fcaa,_0x19214c=this[_0x402623('0x915')]();return _0x24f70b[_0x402623('0xd63')](0x3c*_0x19214c);}},{'key':_0x26fcaa('0x915'),'value':function(){var _0x2d02a9=_0x26fcaa,_0x3094bd=new Date(),_0x4784b7=new Date(_0x3094bd[_0x2d02a9('0xcba')](),0x0,0x1,0x0,0x0,0x0,0x0),_0x5c898f=_0x4784b7[_0x2d02a9('0x25b')]();return(_0x4784b7-new Date(_0x5c898f[_0x2d02a9('0x627')](0x0,_0x5c898f[_0x2d02a9('0x320')]('\x20')-0x1)))/0x36ee80;}}])&&_0x430bde(_0x1d1f69[_0x26fcaa('0x3ec')],_0x59ae59),_0x5bafc2&&_0x430bde(_0x1d1f69,_0x5bafc2),_0x463233;}(((_0x49a4f2=_0x5a7f28(_0x5d35b5('0x6ee')))&&_0x49a4f2['__esModule']?_0x49a4f2:{'default':_0x49a4f2})[_0x5d35b5('0x53')]);_0x5640ee[_0x5d35b5('0x91e')]={'DashboardAdapter':_0x461682};},{'../../../api/AdapterBase':0x27}],0x45:[function(_0x49982c,_0x477330,_0x613b95){var _0x3ca58e=_0x322f0f;'use strict';var _0x82e7c5=_0x49982c('./lib');window[_0x3ca58e('0x61e')]=_0x82e7c5[_0x3ca58e('0x61e')];},{'./lib':0x46}],0x46:[function(_0x313ec5,_0x32ef3c,_0x10d55b){var _0x3e6592=_0x322f0f;'use strict';var _0x24c1ae;function _0x178954(_0x431581){var _0x44f7d5=_0x3e44;return(_0x178954='function'==typeof Symbol&&_0x44f7d5('0xd77')==typeof Symbol[_0x44f7d5('0x303')]?function(_0x49b21a){return typeof _0x49b21a;}:function(_0x3f7079){var _0x319f92=_0x44f7d5;return _0x3f7079&&_0x319f92('0x67')==typeof Symbol&&_0x3f7079[_0x319f92('0xbe8')]===Symbol&&_0x3f7079!==Symbol['prototype']?_0x319f92('0xd77'):typeof _0x3f7079;})(_0x431581);}function _0x376285(_0x440675,_0x56738f){if(!(_0x440675 instanceof _0x56738f))throw new TypeError('Cannot\x20call\x20a\x20class\x20as\x20a\x20function');}function _0x40e7b7(_0x3223e2,_0x4ebf43){var _0x71746c=_0x3e44;for(var _0x27af8c=0x0;_0x27af8c<_0x4ebf43[_0x71746c('0x1d1')];_0x27af8c++){var _0x5cd53f=_0x4ebf43[_0x27af8c];_0x5cd53f[_0x71746c('0x836')]=_0x5cd53f[_0x71746c('0x836')]||!0x1,_0x5cd53f[_0x71746c('0x249')]=!0x0,'value'in _0x5cd53f&&(_0x5cd53f[_0x71746c('0xc28')]=!0x0),Object['defineProperty'](_0x3223e2,_0x5cd53f['key'],_0x5cd53f);}}function _0x1fa8b0(_0x4539d6,_0x34cedf){var _0x2203c2=_0x3e44;return!_0x34cedf||_0x2203c2('0x669')!==_0x178954(_0x34cedf)&&_0x2203c2('0x67')!=typeof _0x34cedf?function(_0x3a2194){var _0x9707c7=_0x2203c2;if(void 0x0===_0x3a2194)throw new ReferenceError(_0x9707c7('0xba4'));return _0x3a2194;}(_0x4539d6):_0x34cedf;}function _0x280771(){var _0x142ffe=_0x3e44;if('undefined'==typeof Reflect||!Reflect[_0x142ffe('0xa71')])return!0x1;if(Reflect[_0x142ffe('0xa71')][_0x142ffe('0x886')])return!0x1;if(_0x142ffe('0x67')==typeof Proxy)return!0x0;try{return Date[_0x142ffe('0x3ec')][_0x142ffe('0x8dc')][_0x142ffe('0x928')](Reflect['construct'](Date,[],function(){})),!0x0;}catch(_0x33f57b){return!0x1;}}function _0x55a825(_0x2dd5ac){var _0x1d4aa9=_0x3e44;return(_0x55a825=Object[_0x1d4aa9('0x16')]?Object[_0x1d4aa9('0x418')]:function(_0x1484ed){var _0x2115ee=_0x1d4aa9;return _0x1484ed[_0x2115ee('0xc15')]||Object[_0x2115ee('0x418')](_0x1484ed);})(_0x2dd5ac);}function _0x3de602(_0x433ccd,_0x26237e){return(_0x3de602=Object['setPrototypeOf']||function(_0x1f4a8b,_0x33e2a5){var _0x352291=_0x3e44;return _0x1f4a8b[_0x352291('0xc15')]=_0x33e2a5,_0x1f4a8b;})(_0x433ccd,_0x26237e);}var _0x28cbc8=function(_0x37d072){var _0x571730=_0x3e44;!function(_0x2c9831,_0x465422){var _0x4a84e1=_0x3e44;if(_0x4a84e1('0x67')!=typeof _0x465422&&null!==_0x465422)throw new TypeError(_0x4a84e1('0xc9'));_0x2c9831['prototype']=Object[_0x4a84e1('0xd9d')](_0x465422&&_0x465422[_0x4a84e1('0x3ec')],{'constructor':{'value':_0x2c9831,'writable':!0x0,'configurable':!0x0}}),_0x465422&&_0x3de602(_0x2c9831,_0x465422);}(_0x3ae3b2,_0x37d072);var _0x3903d9,_0x522b7d,_0x18f65a,_0x496fcf,_0x17339e=(_0x3903d9=_0x3ae3b2,function(){var _0xac231e=_0x3e44,_0x97a042,_0x1163a3=_0x55a825(_0x3903d9);if(_0x280771()){var _0xa74d92=_0x55a825(this)[_0xac231e('0xbe8')];_0x97a042=Reflect[_0xac231e('0xa71')](_0x1163a3,arguments,_0xa74d92);}else _0x97a042=_0x1163a3[_0xac231e('0x7da')](this,arguments);return _0x1fa8b0(this,_0x97a042);});function _0x3ae3b2(){var _0x4c3a9d=_0x3e44;return _0x376285(this,_0x3ae3b2),_0x17339e[_0x4c3a9d('0x7da')](this,arguments);}return _0x522b7d=_0x3ae3b2,(_0x18f65a=[{'key':'getDataMapping','value':function(){var _0x27f27f=_0x3e44;return['id',_0x27f27f('0x9e'),_0x27f27f('0xd5d'),'dob','id_number'];}},{'key':'getHeaders','value':function(){var _0x8a21d5=_0x3e44;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':_0x8a21d5('0x8bd')},{'sTitle':_0x8a21d5('0x93a')},{'sTitle':_0x8a21d5('0xccb')},{'sTitle':_0x8a21d5('0xdbd')}];}},{'key':_0x571730('0x59d'),'value':function(){var _0x50d500=_0x571730;return[['id',{'label':'ID','type':'hidden'}],[_0x50d500('0x9e'),{'label':_0x50d500('0x8bd'),'type':'text','validation':''}],[_0x50d500('0xd5d'),{'label':_0x50d500('0x93a'),'type':'select','source':[[_0x50d500('0x8f1'),_0x50d500('0x8f1')],['Spouse',_0x50d500('0x439')],[_0x50d500('0xc9c'),_0x50d500('0xc9c')],[_0x50d500('0x24'),_0x50d500('0x24')]]}],[_0x50d500('0x5bb'),{'label':'Date\x20of\x20Birth','type':_0x50d500('0xd98'),'validation':''}],['id_number',{'label':_0x50d500('0xdbd'),'type':_0x50d500('0x1c4'),'validation':_0x50d500('0x3b9')}]];}}])&&_0x40e7b7(_0x522b7d['prototype'],_0x18f65a),_0x496fcf&&_0x40e7b7(_0x522b7d,_0x496fcf),_0x3ae3b2;}(((_0x24c1ae=_0x313ec5(_0x3e6592('0x6ee')))&&_0x24c1ae[_0x3e6592('0x866')]?_0x24c1ae:{'default':_0x24c1ae})[_0x3e6592('0x53')]);_0x32ef3c[_0x3e6592('0x91e')]={'EmployeeDependentAdapter':_0x28cbc8};},{'../../../api/AdapterBase':0x27}],0x47:[function(_0x49b39b,_0x59d905,_0x5452a6){var _0x34b8ab=_0x322f0f;'use strict';var _0x4405ea=_0x49b39b(_0x34b8ab('0x98f'));window[_0x34b8ab('0xb44')]=_0x4405ea[_0x34b8ab('0xb44')],window[_0x34b8ab('0x844')]=_0x4405ea[_0x34b8ab('0x844')];},{'./lib':0x48}],0x48:[function(_0xdd0de2,_0x351c8e,_0x127d9f){var _0x2530b7=_0x322f0f;'use strict';var _0x54ffb3=_0x51789d(_0xdd0de2(_0x2530b7('0x6ee'))),_0x14ebfb=_0x51789d(_0xdd0de2('../../../api/ObjectAdapter'));function _0x51789d(_0x13997f){return _0x13997f&&_0x13997f['__esModule']?_0x13997f:{'default':_0x13997f};}function _0x7958c9(_0x2bd107){var _0x1374d2=_0x2530b7;return(_0x7958c9=_0x1374d2('0x67')==typeof Symbol&&_0x1374d2('0xd77')==typeof Symbol[_0x1374d2('0x303')]?function(_0x29b798){return typeof _0x29b798;}:function(_0x18e3d0){var _0x156a69=_0x1374d2;return _0x18e3d0&&_0x156a69('0x67')==typeof Symbol&&_0x18e3d0[_0x156a69('0xbe8')]===Symbol&&_0x18e3d0!==Symbol[_0x156a69('0x3ec')]?_0x156a69('0xd77'):typeof _0x18e3d0;})(_0x2bd107);}function _0x59aa25(_0x1a1e8b,_0x2887f2){var _0x2f765a=_0x2530b7;if(!(_0x1a1e8b instanceof _0x2887f2))throw new TypeError(_0x2f765a('0xc2c'));}function _0x24b555(_0x5eefae,_0x3b8a64){var _0x2990fa=_0x2530b7;for(var _0x532cb=0x0;_0x532cb<_0x3b8a64[_0x2990fa('0x1d1')];_0x532cb++){var _0x48f8af=_0x3b8a64[_0x532cb];_0x48f8af[_0x2990fa('0x836')]=_0x48f8af[_0x2990fa('0x836')]||!0x1,_0x48f8af[_0x2990fa('0x249')]=!0x0,_0x2990fa('0x9b6')in _0x48f8af&&(_0x48f8af[_0x2990fa('0xc28')]=!0x0),Object[_0x2990fa('0x2cd')](_0x5eefae,_0x48f8af[_0x2990fa('0xcb6')],_0x48f8af);}}function _0x162507(_0x5d7d9a,_0x51a3ba,_0xd96bbf){var _0x48d7a3=_0x2530b7;return _0x51a3ba&&_0x24b555(_0x5d7d9a[_0x48d7a3('0x3ec')],_0x51a3ba),_0xd96bbf&&_0x24b555(_0x5d7d9a,_0xd96bbf),_0x5d7d9a;}function _0x2b4f3d(_0x1bbf77){return function(){var _0x2baec3=_0x3e44,_0x397ae5,_0x53dcd1=_0x319747(_0x1bbf77);if(_0x41943a()){var _0x6d05b6=_0x319747(this)['constructor'];_0x397ae5=Reflect[_0x2baec3('0xa71')](_0x53dcd1,arguments,_0x6d05b6);}else _0x397ae5=_0x53dcd1[_0x2baec3('0x7da')](this,arguments);return _0x107201(this,_0x397ae5);};}function _0x107201(_0x20b4d7,_0x3814b6){var _0xe80f01=_0x2530b7;return!_0x3814b6||_0xe80f01('0x669')!==_0x7958c9(_0x3814b6)&&'function'!=typeof _0x3814b6?function(_0x122dc5){var _0xba884b=_0xe80f01;if(void 0x0===_0x122dc5)throw new ReferenceError(_0xba884b('0xba4'));return _0x122dc5;}(_0x20b4d7):_0x3814b6;}function _0x41943a(){var _0x44f610=_0x2530b7;if(_0x44f610('0x396')==typeof Reflect||!Reflect[_0x44f610('0xa71')])return!0x1;if(Reflect[_0x44f610('0xa71')]['sham'])return!0x1;if(_0x44f610('0x67')==typeof Proxy)return!0x0;try{return Date[_0x44f610('0x3ec')]['toString'][_0x44f610('0x928')](Reflect[_0x44f610('0xa71')](Date,[],function(){})),!0x0;}catch(_0x22be2f){return!0x1;}}function _0x319747(_0x5bddf1){var _0x3c1a18=_0x2530b7;return(_0x319747=Object[_0x3c1a18('0x16')]?Object[_0x3c1a18('0x418')]:function(_0x17bf22){var _0xb9d494=_0x3c1a18;return _0x17bf22[_0xb9d494('0xc15')]||Object['getPrototypeOf'](_0x17bf22);})(_0x5bddf1);}function _0x33bfca(_0x74a4c,_0x5dac07){var _0x42bc25=_0x2530b7;if(_0x42bc25('0x67')!=typeof _0x5dac07&&null!==_0x5dac07)throw new TypeError(_0x42bc25('0xc9'));_0x74a4c[_0x42bc25('0x3ec')]=Object['create'](_0x5dac07&&_0x5dac07[_0x42bc25('0x3ec')],{'constructor':{'value':_0x74a4c,'writable':!0x0,'configurable':!0x0}}),_0x5dac07&&_0x4e1f63(_0x74a4c,_0x5dac07);}function _0x4e1f63(_0x4e4f47,_0x201c2a){return(_0x4e1f63=Object['setPrototypeOf']||function(_0x7229ca,_0x2d2619){var _0x3f0876=_0x3e44;return _0x7229ca[_0x3f0876('0xc15')]=_0x2d2619,_0x7229ca;})(_0x4e4f47,_0x201c2a);}var _0x1c1a00=function(_0x306b1f){var _0x33f5cd=_0x2530b7;_0x33bfca(_0xf26e95,_0x306b1f);var _0x40b2b1=_0x2b4f3d(_0xf26e95);function _0xf26e95(){var _0x2ea625=_0x3e44;return _0x59aa25(this,_0xf26e95),_0x40b2b1[_0x2ea625('0x7da')](this,arguments);}return _0x162507(_0xf26e95,[{'key':_0x33f5cd('0xc58'),'value':function(){var _0x3430f0=_0x33f5cd;return['id',_0x3430f0('0xda9'),_0x3430f0('0x2f1'),_0x3430f0('0x4b3'),_0x3430f0('0x90d'),'attachment'];}},{'key':_0x33f5cd('0x6f7'),'value':function(){var _0x472263=_0x33f5cd;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':_0x472263('0x279')},{'sTitle':_0x472263('0x760')},{'sTitle':_0x472263('0x9ff')},{'sTitle':_0x472263('0xad1')},{'sTitle':'Attachment','bVisible':!0x1}];}},{'key':_0x33f5cd('0x59d'),'value':function(){var _0x331df4=_0x33f5cd;return[['id',{'label':'ID','type':_0x331df4('0xb0f')}],['document',{'label':'Document','type':_0x331df4('0xdbb'),'remote-source':[_0x331df4('0x279'),'id',_0x331df4('0x9e'),_0x331df4('0x6d3')]}],[_0x331df4('0x46a'),{'label':_0x331df4('0xb9f'),'type':'date','validation':'none'}],['status',{'label':_0x331df4('0xad1'),'type':_0x331df4('0x7fc'),'source':[[_0x331df4('0x6d1'),_0x331df4('0x6d1')],[_0x331df4('0xc97'),_0x331df4('0xc97')],[_0x331df4('0x222'),_0x331df4('0x222')]]}],[_0x331df4('0x2f1'),{'label':'Details','type':_0x331df4('0x219'),'validation':_0x331df4('0x3b9')}],[_0x331df4('0x78b'),{'label':_0x331df4('0x2b0'),'type':_0x331df4('0x1fe'),'validation':''}]];}},{'key':_0x33f5cd('0x3cd'),'value':function(_0x5f431a,_0xa6b4ae){var _0x48ea5e=_0x33f5cd,_0x110463=_0x48ea5e('0x9e5');return _0x110463=_0x110463[_0x48ea5e('0x95e')](_0x48ea5e('0x82'),''),_0x110463=this[_0x48ea5e('0x224')]?_0x110463[_0x48ea5e('0x95e')](_0x48ea5e('0xd12'),_0x48ea5e('0xd4e')):_0x110463[_0x48ea5e('0x95e')](_0x48ea5e('0xd12'),''),_0x110463=(_0x110463=(_0x110463=(_0x110463=this[_0x48ea5e('0x385')]?_0x110463[_0x48ea5e('0x95e')]('_edit_',_0x48ea5e('0x6f9')):_0x110463['replace'](_0x48ea5e('0x788'),''))['replace'](/_id_/g,_0x5f431a))['replace'](/_attachment_/g,_0xa6b4ae[0x5]))[_0x48ea5e('0x95e')](/_BASE_/g,this['baseUrl']);}}]),_0xf26e95;}(_0x54ffb3[_0x2530b7('0x53')]),_0x5a971d=function(_0x155e20){var _0x403c1a=_0x2530b7;_0x33bfca(_0x399247,_0x155e20);var _0xde9f1b=_0x2b4f3d(_0x399247);function _0x399247(){var _0x45f98c=_0x3e44;return _0x59aa25(this,_0x399247),_0xde9f1b[_0x45f98c('0x7da')](this,arguments);}return _0x162507(_0x399247,[{'key':_0x403c1a('0xc58'),'value':function(){var _0x49d432=_0x403c1a;return['id','name',_0x49d432('0x2f1')];}},{'key':'getHeaders','value':function(){var _0x294e07=_0x403c1a;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':_0x294e07('0x8bd')},{'sTitle':_0x294e07('0x760')}];}},{'key':'getFormFields','value':function(){var _0x69780e=_0x403c1a;return[['id',{'label':'ID','type':_0x69780e('0xb0f')}],['name',{'label':'Name','type':_0x69780e('0xad7'),'validation':''}],[_0x69780e('0x2f1'),{'label':_0x69780e('0x760'),'type':_0x69780e('0xad7'),'validation':'none'}],[_0x69780e('0x78b'),{'label':_0x69780e('0x2b0'),'type':_0x69780e('0xad7'),'validation':'none'}]];}},{'key':_0x403c1a('0xaa2'),'value':function(_0x3111e6){}},{'key':'getTemplateName','value':function(){return'file.html';}},{'key':_0x403c1a('0xacc'),'value':function(_0x5ca773){var _0x366e59=_0x403c1a;return _0x5ca773[_0x366e59('0x8da')]=this['getColorByFileType'](_0x5ca773[_0x366e59('0xb88')]),_0x5ca773[_0x366e59('0xa55')]=this[_0x366e59('0xe0')](_0x5ca773[_0x366e59('0xb88')]),_0x5ca773[_0x366e59('0xb84')]=this[_0x366e59('0xa72')](_0x5ca773[_0x366e59('0x2f1')]),_0x5ca773[_0x366e59('0x2f1')][_0x366e59('0x1d1')]>0x1e&&(_0x5ca773['details']=_0x5ca773['details']['substring'](0x0,0x1e)),void 0x0!==_0x5ca773[_0x366e59('0xbd0')]&&null!=_0x5ca773[_0x366e59('0xbd0')]||(_0x5ca773['size']=''),_0x5ca773;}}]),_0x399247;}(_0x14ebfb['default']);_0x351c8e[_0x2530b7('0x91e')]={'EmployeeDocumentAdapter':_0x1c1a00,'EmployeeCompanyDocumentAdapter':_0x5a971d};},{'../../../api/AdapterBase':0x27,'../../../api/ObjectAdapter':0x31}],0x49:[function(_0x56adfb,_0x45cca2,_0x556667){var _0x82c857=_0x322f0f;'use strict';var _0x23640a=_0x56adfb(_0x82c857('0x98f'));window[_0x82c857('0xac0')]=_0x23640a[_0x82c857('0xac0')];},{'./lib':0x4a}],0x4a:[function(_0x340e89,_0x23573f,_0x30b15c){var _0x44302e=_0x322f0f;'use strict';var _0x59e0d4;function _0x2a43de(_0x20896b){var _0x32199b=_0x3e44;return(_0x2a43de='function'==typeof Symbol&&'symbol'==typeof Symbol[_0x32199b('0x303')]?function(_0x24a2fb){return typeof _0x24a2fb;}:function(_0x39e135){var _0x4361b1=_0x32199b;return _0x39e135&&_0x4361b1('0x67')==typeof Symbol&&_0x39e135[_0x4361b1('0xbe8')]===Symbol&&_0x39e135!==Symbol[_0x4361b1('0x3ec')]?_0x4361b1('0xd77'):typeof _0x39e135;})(_0x20896b);}function _0x2fa924(_0x4aa7a5,_0x4a3f43){var _0xe0ea86=_0x3e44;if(!(_0x4aa7a5 instanceof _0x4a3f43))throw new TypeError(_0xe0ea86('0xc2c'));}function _0x3ab96e(_0x3267b3,_0x349ea4){var _0x596386=_0x3e44;for(var _0x2aaa93=0x0;_0x2aaa93<_0x349ea4[_0x596386('0x1d1')];_0x2aaa93++){var _0xdb1e2f=_0x349ea4[_0x2aaa93];_0xdb1e2f[_0x596386('0x836')]=_0xdb1e2f[_0x596386('0x836')]||!0x1,_0xdb1e2f[_0x596386('0x249')]=!0x0,'value'in _0xdb1e2f&&(_0xdb1e2f[_0x596386('0xc28')]=!0x0),Object['defineProperty'](_0x3267b3,_0xdb1e2f['key'],_0xdb1e2f);}}function _0x18de73(_0xea586e,_0x3c19ee){var _0x3debdb=_0x3e44;return!_0x3c19ee||_0x3debdb('0x669')!==_0x2a43de(_0x3c19ee)&&'function'!=typeof _0x3c19ee?function(_0x17eaf1){var _0x18d335=_0x3debdb;if(void 0x0===_0x17eaf1)throw new ReferenceError(_0x18d335('0xba4'));return _0x17eaf1;}(_0xea586e):_0x3c19ee;}function _0x36c550(){var _0x55988b=_0x3e44;if('undefined'==typeof Reflect||!Reflect['construct'])return!0x1;if(Reflect['construct']['sham'])return!0x1;if(_0x55988b('0x67')==typeof Proxy)return!0x0;try{return Date['prototype'][_0x55988b('0x8dc')][_0x55988b('0x928')](Reflect[_0x55988b('0xa71')](Date,[],function(){})),!0x0;}catch(_0x45a492){return!0x1;}}function _0x52bbfd(_0x3d3587){var _0xa70c5e=_0x3e44;return(_0x52bbfd=Object['setPrototypeOf']?Object[_0xa70c5e('0x418')]:function(_0xcd65c8){var _0x21e8fa=_0xa70c5e;return _0xcd65c8['__proto__']||Object[_0x21e8fa('0x418')](_0xcd65c8);})(_0x3d3587);}function _0x4db7c9(_0x3c273a,_0x297060){var _0x323bfa=_0x3e44;return(_0x4db7c9=Object[_0x323bfa('0x16')]||function(_0x1508e5,_0x180e74){return _0x1508e5['__proto__']=_0x180e74,_0x1508e5;})(_0x3c273a,_0x297060);}var _0x5e37f3=function(_0x2b3517){var _0x456f57=_0x3e44;!function(_0x1d5b74,_0x55cba4){var _0x20f9ca=_0x3e44;if(_0x20f9ca('0x67')!=typeof _0x55cba4&&null!==_0x55cba4)throw new TypeError(_0x20f9ca('0xc9'));_0x1d5b74[_0x20f9ca('0x3ec')]=Object['create'](_0x55cba4&&_0x55cba4[_0x20f9ca('0x3ec')],{'constructor':{'value':_0x1d5b74,'writable':!0x0,'configurable':!0x0}}),_0x55cba4&&_0x4db7c9(_0x1d5b74,_0x55cba4);}(_0x51dc28,_0x2b3517);var _0x3c3073,_0x502709,_0x6e9a1d,_0x31ada8,_0xf9d90a=(_0x3c3073=_0x51dc28,function(){var _0x298926=_0x3e44,_0x35955b,_0x3c0d4f=_0x52bbfd(_0x3c3073);if(_0x36c550()){var _0x584efe=_0x52bbfd(this)[_0x298926('0xbe8')];_0x35955b=Reflect[_0x298926('0xa71')](_0x3c0d4f,arguments,_0x584efe);}else _0x35955b=_0x3c0d4f[_0x298926('0x7da')](this,arguments);return _0x18de73(this,_0x35955b);});function _0x51dc28(){return _0x2fa924(this,_0x51dc28),_0xf9d90a['apply'](this,arguments);}return _0x502709=_0x51dc28,(_0x6e9a1d=[{'key':'getDataMapping','value':function(){var _0x328950=_0x3e44;return['id',_0x328950('0x9e'),_0x328950('0xd5d'),'home_phone',_0x328950('0x563'),_0x328950('0xc7')];}},{'key':_0x456f57('0x6f7'),'value':function(){var _0x21d57f=_0x456f57;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':_0x21d57f('0x8bd')},{'sTitle':_0x21d57f('0x93a')},{'sTitle':_0x21d57f('0x8ba')},{'sTitle':_0x21d57f('0x6c3')},{'sTitle':_0x21d57f('0xa3d')}];}},{'key':_0x456f57('0x59d'),'value':function(){var _0x235d23=_0x456f57;return[['id',{'label':'ID','type':_0x235d23('0xb0f')}],[_0x235d23('0x9e'),{'label':_0x235d23('0x8bd'),'type':_0x235d23('0x1c4'),'validation':''}],['relationship',{'label':_0x235d23('0x93a'),'type':_0x235d23('0x1c4'),'validation':_0x235d23('0x3b9')}],[_0x235d23('0x8e4'),{'label':_0x235d23('0x8ba'),'type':_0x235d23('0x1c4'),'validation':_0x235d23('0x3b9')}],[_0x235d23('0x563'),{'label':_0x235d23('0x6c3'),'type':_0x235d23('0x1c4'),'validation':_0x235d23('0x3b9')}],[_0x235d23('0xc7'),{'label':_0x235d23('0xa3d'),'type':_0x235d23('0x1c4'),'validation':_0x235d23('0x3b9')}]];}}])&&_0x3ab96e(_0x502709[_0x456f57('0x3ec')],_0x6e9a1d),_0x31ada8&&_0x3ab96e(_0x502709,_0x31ada8),_0x51dc28;}(((_0x59e0d4=_0x340e89(_0x44302e('0x6ee')))&&_0x59e0d4[_0x44302e('0x866')]?_0x59e0d4:{'default':_0x59e0d4})[_0x44302e('0x53')]);_0x23573f[_0x44302e('0x91e')]={'EmergencyContactAdapter':_0x5e37f3};},{'../../../api/AdapterBase':0x27}],0x4b:[function(_0x3b73e8,_0x3e8144,_0x2f081c){var _0x2b8f43=_0x322f0f;'use strict';Object[_0x2b8f43('0x2cd')](_0x2f081c,_0x2b8f43('0x866'),{'value':!0x0}),_0x2f081c[_0x2b8f43('0x53')]=void 0x0;var _0x39f1e0=_0x16f318(_0x3b73e8(_0x2b8f43('0x603'))),_0x195568=_0x3b73e8('antd'),_0x2a90a9=_0x3b73e8(_0x2b8f43('0x8c3')),_0x2f7c80=_0x16f318(_0x3b73e8(_0x2b8f43('0x783'))),_0x3274d4=_0x16f318(_0x3b73e8('../../../../components/UpdatePasswordModal'));function _0x16f318(_0x2ef3ec){return _0x2ef3ec&&_0x2ef3ec['__esModule']?_0x2ef3ec:{'default':_0x2ef3ec};}function _0x2694b2(_0x5ca3e2){var _0x5a932a=_0x2b8f43;return(_0x2694b2=_0x5a932a('0x67')==typeof Symbol&&_0x5a932a('0xd77')==typeof Symbol[_0x5a932a('0x303')]?function(_0x47fa66){return typeof _0x47fa66;}:function(_0x2f3074){var _0x1df452=_0x5a932a;return _0x2f3074&&'function'==typeof Symbol&&_0x2f3074[_0x1df452('0xbe8')]===Symbol&&_0x2f3074!==Symbol[_0x1df452('0x3ec')]?_0x1df452('0xd77'):typeof _0x2f3074;})(_0x5ca3e2);}function _0x47b50e(_0x2f84d0,_0x22cce3){var _0x378404=_0x2b8f43;for(var _0x2e963a=0x0;_0x2e963a<_0x22cce3[_0x378404('0x1d1')];_0x2e963a++){var _0x371724=_0x22cce3[_0x2e963a];_0x371724[_0x378404('0x836')]=_0x371724['enumerable']||!0x1,_0x371724[_0x378404('0x249')]=!0x0,_0x378404('0x9b6')in _0x371724&&(_0x371724[_0x378404('0xc28')]=!0x0),Object[_0x378404('0x2cd')](_0x2f84d0,_0x371724[_0x378404('0xcb6')],_0x371724);}}function _0x51e1cc(_0x2ccf3d,_0xcbe8f5){var _0x4b373b=_0x2b8f43;return!_0xcbe8f5||_0x4b373b('0x669')!==_0x2694b2(_0xcbe8f5)&&_0x4b373b('0x67')!=typeof _0xcbe8f5?function(_0x45507a){if(void 0x0===_0x45507a)throw new ReferenceError('this\x20hasn\x27t\x20been\x20initialised\x20-\x20super()\x20hasn\x27t\x20been\x20called');return _0x45507a;}(_0x2ccf3d):_0xcbe8f5;}function _0x2d53e5(){var _0x880c62=_0x2b8f43;if(_0x880c62('0x396')==typeof Reflect||!Reflect[_0x880c62('0xa71')])return!0x1;if(Reflect[_0x880c62('0xa71')][_0x880c62('0x886')])return!0x1;if(_0x880c62('0x67')==typeof Proxy)return!0x0;try{return Date['prototype'][_0x880c62('0x8dc')][_0x880c62('0x928')](Reflect[_0x880c62('0xa71')](Date,[],function(){})),!0x0;}catch(_0x5a1500){return!0x1;}}function _0x54c61d(_0x1fb29c){var _0x44c8bb=_0x2b8f43;return(_0x54c61d=Object[_0x44c8bb('0x16')]?Object[_0x44c8bb('0x418')]:function(_0x57d50b){var _0x31d282=_0x44c8bb;return _0x57d50b['__proto__']||Object[_0x31d282('0x418')](_0x57d50b);})(_0x1fb29c);}function _0x772a2c(_0x4c172c,_0xddcae1){var _0x101263=_0x2b8f43;return(_0x772a2c=Object[_0x101263('0x16')]||function(_0xe41065,_0x28b177){var _0x435854=_0x101263;return _0xe41065[_0x435854('0xc15')]=_0x28b177,_0xe41065;})(_0x4c172c,_0xddcae1);}var _0x13253e=_0x195568[_0x2b8f43('0x9fb')][_0x2b8f43('0xd9c')],_0x461f31=_0x195568['Typography'][_0x2b8f43('0xb2a')],_0x2f8bd2=_0x195568['Tabs'][_0x2b8f43('0xc7d')],_0x1ee093=function(_0x19be19){var _0x22add0=_0x2b8f43;!function(_0x4e1d89,_0x55b92b){var _0x470a47=_0x3e44;if(_0x470a47('0x67')!=typeof _0x55b92b&&null!==_0x55b92b)throw new TypeError(_0x470a47('0xc9'));_0x4e1d89['prototype']=Object[_0x470a47('0xd9d')](_0x55b92b&&_0x55b92b[_0x470a47('0x3ec')],{'constructor':{'value':_0x4e1d89,'writable':!0x0,'configurable':!0x0}}),_0x55b92b&&_0x772a2c(_0x4e1d89,_0x55b92b);}(_0x5b6820,_0x19be19);var _0x212f4d,_0x4a1bf4,_0x4bd4e7,_0x63b0c5,_0xea6fa6=(_0x212f4d=_0x5b6820,function(){var _0x107ba2,_0x3dee5d=_0x54c61d(_0x212f4d);if(_0x2d53e5()){var _0x20754e=_0x54c61d(this)['constructor'];_0x107ba2=Reflect['construct'](_0x3dee5d,arguments,_0x20754e);}else _0x107ba2=_0x3dee5d['apply'](this,arguments);return _0x51e1cc(this,_0x107ba2);});function _0x5b6820(_0x2545dd){var _0x26f23d=_0x3e44,_0xefbd08;return function(_0x4de867,_0x2e81ee){var _0x1f019a=_0x3e44;if(!(_0x4de867 instanceof _0x2e81ee))throw new TypeError(_0x1f019a('0xc2c'));}(this,_0x5b6820),(_0xefbd08=_0xea6fa6[_0x26f23d('0x928')](this,_0x2545dd))['state']={'loading':!0x0,'showPasswordResetModal':!0x1},_0xefbd08;}return _0x4a1bf4=_0x5b6820,(_0x4bd4e7=[{'key':_0x22add0('0x51f'),'value':function(_0x40514c){this['setState']({'loading':_0x40514c});}},{'key':_0x22add0('0xdb6'),'value':function(_0xf5e1d8){var _0x3a8067=_0x22add0;this[_0x3a8067('0x4f8')]({'showPasswordResetModal':_0xf5e1d8});}},{'key':'updateProfileImage','value':function(){var _0x38a129=_0x22add0;showUploadDialog(_0x38a129('0x899')[_0x38a129('0x49e')](this[_0x38a129('0x2d0')][_0x38a129('0x81a')]['id'],'_')[_0x38a129('0x49e')](new Date()[_0x38a129('0x405')]()),'Upload\x20Profile\x20Image','profile_image',this[_0x38a129('0x2d0')][_0x38a129('0x81a')]['id'],_0x38a129('0x899')['concat'](this[_0x38a129('0x2d0')][_0x38a129('0x81a')]['id']),_0x38a129('0x67'),_0x38a129('0x652'),_0x38a129('0x438'));}},{'key':_0x22add0('0xcf7'),'value':function(){var _0x5c700a=_0x22add0,_0x387a50=this;return _0x39f1e0['default'][_0x5c700a('0x914')](_0x39f1e0[_0x5c700a('0x53')][_0x5c700a('0x6a5')],null,this[_0x5c700a('0x97c')]['loading']&&_0x39f1e0[_0x5c700a('0x53')][_0x5c700a('0x914')](_0x195568[_0x5c700a('0x939')],{'icon':_0x39f1e0[_0x5c700a('0x53')][_0x5c700a('0x914')](_0x2a90a9[_0x5c700a('0x1e8')],{'spin':!0x0}),'color':_0x5c700a('0x356')},this[_0x5c700a('0x2d0')]['adapter']['gt']('Edit')),!this['state'][_0x5c700a('0xb9c')]&&_0x39f1e0['default'][_0x5c700a('0x914')](_0x195568[_0x5c700a('0x939')],{'icon':_0x39f1e0['default'][_0x5c700a('0x914')](_0x2a90a9[_0x5c700a('0x1ec')],null),'color':_0x5c700a('0x356'),'onClick':function(){var _0x2b69a1=_0x5c700a;return modJs[_0x2b69a1('0xa01')](_0x387a50[_0x2b69a1('0x2d0')][_0x2b69a1('0x81a')]['id']);}},this['props'][_0x5c700a('0x7c7')]['gt']('Edit')));}},{'key':_0x22add0('0xd4a'),'value':function(){var _0x39aa2c=_0x22add0,_0x3484b2=this;return _0x39f1e0[_0x39aa2c('0x53')][_0x39aa2c('0x914')](_0x39f1e0[_0x39aa2c('0x53')]['Fragment'],null,this[_0x39aa2c('0x97c')][_0x39aa2c('0xb9c')]&&_0x39f1e0[_0x39aa2c('0x53')]['createElement'](_0x195568[_0x39aa2c('0x939')],{'icon':_0x39f1e0[_0x39aa2c('0x53')][_0x39aa2c('0x914')](_0x2a90a9['SyncOutlined'],{'spin':!0x0}),'color':_0x39aa2c('0x356')},this[_0x39aa2c('0x2d0')][_0x39aa2c('0x7c7')]['gt'](_0x39aa2c('0xa2d'))),!this['state']['loading']&&_0x39f1e0[_0x39aa2c('0x53')]['createElement'](_0x195568[_0x39aa2c('0x939')],{'icon':_0x39f1e0[_0x39aa2c('0x53')]['createElement'](_0x2a90a9[_0x39aa2c('0x1ec')],null),'color':'processing','onClick':function(){var _0x5e11d9=_0x39aa2c;return modJs[_0x5e11d9('0xa01')](_0x3484b2[_0x5e11d9('0x2d0')]['element']['id']);}},this[_0x39aa2c('0x2d0')]['adapter']['gt'](_0x39aa2c('0xa2d'))),_0x39f1e0[_0x39aa2c('0x53')]['createElement'](_0x195568[_0x39aa2c('0x939')],{'icon':_0x39f1e0[_0x39aa2c('0x53')]['createElement'](_0x2a90a9[_0x39aa2c('0x1d0')],null),'color':_0x39aa2c('0x135'),'onClick':function(){return _0x3484b2['setShowPasswordUpdate'](!0x0);}},this['props'][_0x39aa2c('0x7c7')]['gt'](_0x39aa2c('0x24c'))));}},{'key':_0x22add0('0xca7'),'value':function(){var _0x4a2945=_0x22add0;return _0x39f1e0[_0x4a2945('0x53')][_0x4a2945('0x914')](_0x39f1e0[_0x4a2945('0x53')][_0x4a2945('0x6a5')],null,_0x39f1e0[_0x4a2945('0x53')][_0x4a2945('0x914')](_0x195568[_0x4a2945('0x939')],{'icon':_0x39f1e0[_0x4a2945('0x53')][_0x4a2945('0x914')](_0x2a90a9[_0x4a2945('0x1e8')],{'spin':!0x0}),'color':_0x4a2945('0x356')},this[_0x4a2945('0x2d0')][_0x4a2945('0x7c7')]['gt'](_0x4a2945('0x24c'))));}},{'key':'getTabViewEmployeeFilterButtonJsx','value':function(_0x3b68ad){var _0x52aa25=_0x22add0,_0x3d0c72=this;return _0x39f1e0[_0x52aa25('0x53')][_0x52aa25('0x914')](_0x195568[_0x52aa25('0x939')],{'icon':_0x39f1e0[_0x52aa25('0x53')][_0x52aa25('0x914')](_0x2a90a9[_0x52aa25('0x1ec')],null),'color':_0x52aa25('0x356'),'onClick':function(){var _0x5e25d0=_0x52aa25;switchTab(_0x3b68ad,{'employee':_0x3d0c72[_0x5e25d0('0x2d0')][_0x5e25d0('0x81a')]['id']});}},this[_0x52aa25('0x2d0')][_0x52aa25('0x7c7')]['gt']('Edit'));}},{'key':_0x22add0('0x265'),'value':function(){var _0x1fb62d=_0x22add0,_0x80d0d=this;return this[_0x1fb62d('0x97c')][_0x1fb62d('0xb9c')]||!this[_0x1fb62d('0x2d0')][_0x1fb62d('0x81a')]?_0x39f1e0['default'][_0x1fb62d('0x914')](_0x1fb62d('0x128'),{'style':{'padding':_0x1fb62d('0x37e')}},_0x39f1e0[_0x1fb62d('0x53')][_0x1fb62d('0x914')](_0x195568[_0x1fb62d('0x632')],{'active':!0x0})):_0x39f1e0[_0x1fb62d('0x53')][_0x1fb62d('0x914')](_0x39f1e0['default'][_0x1fb62d('0x6a5')],null,_0x39f1e0[_0x1fb62d('0x53')][_0x1fb62d('0x914')](_0x3274d4[_0x1fb62d('0x53')],{'visible':this['state'][_0x1fb62d('0xd4c')],'closeModal':function(){var _0x12f178=_0x1fb62d;_0x80d0d[_0x12f178('0x4f8')]({'showPasswordResetModal':!0x1});},'adapter':this[_0x1fb62d('0x2d0')]['adapter']}),_0x39f1e0[_0x1fb62d('0x53')][_0x1fb62d('0x914')](_0x195568[_0x1fb62d('0x588')],{'direction':_0x1fb62d('0x1ca'),'style':{'width':_0x1fb62d('0xbe9'),'padding':_0x1fb62d('0x177')},'gutter':0x18},_0x39f1e0['default'][_0x1fb62d('0x914')](_0x195568[_0x1fb62d('0x70b')],{'span':0x18},_0x39f1e0[_0x1fb62d('0x53')][_0x1fb62d('0x914')](_0x195568[_0x1fb62d('0x19')],{'title':this[_0x1fb62d('0x2d0')][_0x1fb62d('0x7c7')]['gt'](_0x1fb62d('0xd71')),'extra':this[_0x1fb62d('0xd4a')](),'style':{'width':'100%'}},_0x39f1e0['default'][_0x1fb62d('0x914')](_0x195568['Space'],{'size':'large'},_0x39f1e0[_0x1fb62d('0x53')][_0x1fb62d('0x914')](_0x195568[_0x1fb62d('0xbb9')],{'size':0x8c,'src':this[_0x1fb62d('0x2d0')]['element']['image'],'onClick':function(){var _0x2afb1e=_0x1fb62d;return _0x80d0d[_0x2afb1e('0x304')]();}}),_0x39f1e0['default'][_0x1fb62d('0x914')](_0x195568['Space'],{'direction':'vertical'},_0x39f1e0[_0x1fb62d('0x53')][_0x1fb62d('0x914')](_0x13253e,{'level':0x4},''[_0x1fb62d('0x49e')](this[_0x1fb62d('0x2d0')][_0x1fb62d('0x81a')]['first_name'],'\x20')[_0x1fb62d('0x49e')](this[_0x1fb62d('0x2d0')][_0x1fb62d('0x81a')]['last_name'])),_0x39f1e0[_0x1fb62d('0x53')][_0x1fb62d('0x914')](_0x195568[_0x1fb62d('0xc89')],null,_0x39f1e0[_0x1fb62d('0x53')][_0x1fb62d('0x914')](_0x2a90a9[_0x1fb62d('0x870')],null),_0x39f1e0[_0x1fb62d('0x53')]['createElement'](_0x461f31,{'copyable':!0x0},'\x20'[_0x1fb62d('0x49e')](this['props'][_0x1fb62d('0x81a')][_0x1fb62d('0xc7')]||''))),_0x39f1e0['default'][_0x1fb62d('0x914')](_0x195568[_0x1fb62d('0xc89')],null,_0x39f1e0[_0x1fb62d('0x53')][_0x1fb62d('0x914')](_0x2a90a9['MailTwoTone'],null),_0x39f1e0['default'][_0x1fb62d('0x914')](_0x461f31,{'copyable':!0x0},'\x20'[_0x1fb62d('0x49e')](this[_0x1fb62d('0x2d0')]['element'][_0x1fb62d('0x606')]||'')))),_0x39f1e0[_0x1fb62d('0x53')][_0x1fb62d('0x914')](_0x195568[_0x1fb62d('0x6d5')],{'title':'','bordered':!0x0,'style':{'width':_0x1fb62d('0xbe9'),'padding':_0x1fb62d('0x177')}},_0x39f1e0[_0x1fb62d('0x53')][_0x1fb62d('0x914')](_0x195568[_0x1fb62d('0x6d5')]['Item'],{'label':this[_0x1fb62d('0x2d0')][_0x1fb62d('0x7c7')]['gt']('Employee\x20Number'),'span':0x3},this[_0x1fb62d('0x2d0')][_0x1fb62d('0x81a')][_0x1fb62d('0xa63')]),_0x39f1e0[_0x1fb62d('0x53')]['createElement'](_0x195568[_0x1fb62d('0x6d5')][_0x1fb62d('0x191')],{'label':this[_0x1fb62d('0x2d0')][_0x1fb62d('0x7c7')]['gt']('ID\x20Number'),'span':0x3},this[_0x1fb62d('0x2d0')][_0x1fb62d('0x81a')][_0x1fb62d('0x901')]),this[_0x1fb62d('0x2d0')][_0x1fb62d('0x81a')][_0x1fb62d('0x427')]&&''!==this[_0x1fb62d('0x2d0')][_0x1fb62d('0x81a')]['ssn_num']&&_0x39f1e0[_0x1fb62d('0x53')][_0x1fb62d('0x914')](_0x195568['Descriptions'][_0x1fb62d('0x191')],{'label':this[_0x1fb62d('0x2d0')][_0x1fb62d('0x7c7')]['gt'](_0x1fb62d('0xc57')),'span':0x3},this[_0x1fb62d('0x2d0')][_0x1fb62d('0x81a')][_0x1fb62d('0x427')])))))),_0x39f1e0['default'][_0x1fb62d('0x914')](_0x195568['Row'],{'direction':_0x1fb62d('0x1ca'),'style':{'width':_0x1fb62d('0xbe9'),'padding':_0x1fb62d('0x177')},'gutter':0x18},_0x39f1e0[_0x1fb62d('0x53')][_0x1fb62d('0x914')](_0x195568['Tabs'],{'type':_0x1fb62d('0x108'),'style':{'width':_0x1fb62d('0xbe9')}},_0x39f1e0['default'][_0x1fb62d('0x914')](_0x2f8bd2,{'tab':_0x1fb62d('0x326'),'key':'1','style':{'width':'100%'}},_0x39f1e0[_0x1fb62d('0x53')]['createElement'](_0x195568['Row'],{'direction':_0x1fb62d('0x1ca'),'style':{'width':_0x1fb62d('0xbe9'),'padding':'10px'},'gutter':0x18},_0x39f1e0[_0x1fb62d('0x53')][_0x1fb62d('0x914')](_0x195568[_0x1fb62d('0x70b')],{'span':0x18},_0x39f1e0[_0x1fb62d('0x53')][_0x1fb62d('0x914')](_0x195568[_0x1fb62d('0x19')],{'title':this['props'][_0x1fb62d('0x7c7')]['gt'](_0x1fb62d('0x35c')),'extra':this['getEditButtonJsx'](),'style':{'width':'100%'}},_0x39f1e0[_0x1fb62d('0x53')][_0x1fb62d('0x914')](_0x195568[_0x1fb62d('0x6d5')],{'title':'','bordered':!0x0},_0x39f1e0[_0x1fb62d('0x53')][_0x1fb62d('0x914')](_0x195568[_0x1fb62d('0x6d5')]['Item'],{'label':this[_0x1fb62d('0x2d0')]['adapter']['gt'](_0x1fb62d('0xccb'))},this[_0x1fb62d('0x2d0')][_0x1fb62d('0x81a')][_0x1fb62d('0x983')]||''),_0x39f1e0[_0x1fb62d('0x53')][_0x1fb62d('0x914')](_0x195568['Descriptions'][_0x1fb62d('0x191')],{'label':this[_0x1fb62d('0x2d0')][_0x1fb62d('0x7c7')]['gt'](_0x1fb62d('0x5d7'))},this[_0x1fb62d('0x2d0')][_0x1fb62d('0x81a')][_0x1fb62d('0xc0a')]),_0x39f1e0[_0x1fb62d('0x53')][_0x1fb62d('0x914')](_0x195568[_0x1fb62d('0x6d5')]['Item'],{'label':this[_0x1fb62d('0x2d0')][_0x1fb62d('0x7c7')]['gt']('Nationality')},this['props']['element'][_0x1fb62d('0x2e')]),_0x39f1e0['default'][_0x1fb62d('0x914')](_0x195568[_0x1fb62d('0x6d5')][_0x1fb62d('0x191')],{'label':this[_0x1fb62d('0x2d0')][_0x1fb62d('0x7c7')]['gt']('Marital\x20Status')},this[_0x1fb62d('0x2d0')]['element'][_0x1fb62d('0xd84')]),_0x39f1e0[_0x1fb62d('0x53')][_0x1fb62d('0x914')](_0x195568[_0x1fb62d('0x6d5')]['Item'],{'label':this['props'][_0x1fb62d('0x7c7')]['gt'](_0x1fb62d('0x8bf'))},this[_0x1fb62d('0x2d0')][_0x1fb62d('0x81a')][_0x1fb62d('0x94b')]),_0x39f1e0['default']['createElement'](_0x195568['Descriptions'][_0x1fb62d('0x191')],{'label':this[_0x1fb62d('0x2d0')][_0x1fb62d('0x7c7')]['gt'](_0x1fb62d('0xb52'))},this[_0x1fb62d('0x2d0')]['element'][_0x1fb62d('0x1da')]||''),_0x39f1e0[_0x1fb62d('0x53')][_0x1fb62d('0x914')](_0x195568[_0x1fb62d('0x6d5')][_0x1fb62d('0x191')],{'label':this[_0x1fb62d('0x2d0')][_0x1fb62d('0x7c7')]['gt'](_0x1fb62d('0x7db'))},this[_0x1fb62d('0x2d0')][_0x1fb62d('0x81a')][_0x1fb62d('0x89a')]||'')))),_0x39f1e0[_0x1fb62d('0x53')][_0x1fb62d('0x914')](_0x195568['Col'],{'span':0x18},_0x39f1e0['default'][_0x1fb62d('0x914')](_0x195568['Card'],{'title':this['props']['adapter']['gt'](_0x1fb62d('0x184')),'extra':this[_0x1fb62d('0xcf7')](),'style':{'width':'100%'}},_0x39f1e0['default'][_0x1fb62d('0x914')](_0x195568[_0x1fb62d('0x6d5')],{'title':'','bordered':!0x0},_0x39f1e0['default'][_0x1fb62d('0x914')](_0x195568[_0x1fb62d('0x6d5')][_0x1fb62d('0x191')],{'label':this[_0x1fb62d('0x2d0')][_0x1fb62d('0x7c7')]['gt'](_0x1fb62d('0x6bf')),'span':0x3},''[_0x1fb62d('0x49e')](this[_0x1fb62d('0x2d0')][_0x1fb62d('0x81a')][_0x1fb62d('0x61c')],',\x20')[_0x1fb62d('0x49e')](this['props'][_0x1fb62d('0x81a')][_0x1fb62d('0x93')]||'')),_0x39f1e0[_0x1fb62d('0x53')]['createElement'](_0x195568[_0x1fb62d('0x6d5')]['Item'],{'label':this[_0x1fb62d('0x2d0')][_0x1fb62d('0x7c7')]['gt'](_0x1fb62d('0x2d1'))},this[_0x1fb62d('0x2d0')][_0x1fb62d('0x81a')][_0x1fb62d('0xcf1')]),_0x39f1e0[_0x1fb62d('0x53')][_0x1fb62d('0x914')](_0x195568[_0x1fb62d('0x6d5')][_0x1fb62d('0x191')],{'label':this['props'][_0x1fb62d('0x7c7')]['gt']('Country')},this['props'][_0x1fb62d('0x81a')][_0x1fb62d('0x5ac')]),_0x39f1e0['default'][_0x1fb62d('0x914')](_0x195568[_0x1fb62d('0x6d5')][_0x1fb62d('0x191')],{'label':this[_0x1fb62d('0x2d0')][_0x1fb62d('0x7c7')]['gt'](_0x1fb62d('0x922'))},this[_0x1fb62d('0x2d0')]['element'][_0x1fb62d('0x635')]),_0x39f1e0[_0x1fb62d('0x53')][_0x1fb62d('0x914')](_0x195568[_0x1fb62d('0x6d5')]['Item'],{'label':this[_0x1fb62d('0x2d0')][_0x1fb62d('0x7c7')]['gt'](_0x1fb62d('0x8ba')),'span':0x2},_0x39f1e0[_0x1fb62d('0x53')]['createElement'](_0x195568['Space'],null,_0x39f1e0['default'][_0x1fb62d('0x914')](_0x2a90a9[_0x1fb62d('0x870')],null),_0x39f1e0[_0x1fb62d('0x53')]['createElement'](_0x461f31,{'copyable':!0x0},'\x20'['concat'](this[_0x1fb62d('0x2d0')][_0x1fb62d('0x81a')]['home_phone']||'')))),_0x39f1e0[_0x1fb62d('0x53')][_0x1fb62d('0x914')](_0x195568[_0x1fb62d('0x6d5')][_0x1fb62d('0x191')],{'label':this[_0x1fb62d('0x2d0')][_0x1fb62d('0x7c7')]['gt']('Work\x20Phone'),'span':0x2},_0x39f1e0['default'][_0x1fb62d('0x914')](_0x195568[_0x1fb62d('0xc89')],null,_0x39f1e0[_0x1fb62d('0x53')][_0x1fb62d('0x914')](_0x2a90a9['PhoneTwoTone'],null),_0x39f1e0[_0x1fb62d('0x53')][_0x1fb62d('0x914')](_0x461f31,{'copyable':!0x0},'\x20'['concat'](this['props'][_0x1fb62d('0x81a')][_0x1fb62d('0x563')]||'')))),_0x39f1e0[_0x1fb62d('0x53')][_0x1fb62d('0x914')](_0x195568[_0x1fb62d('0x6d5')]['Item'],{'label':this[_0x1fb62d('0x2d0')][_0x1fb62d('0x7c7')]['gt'](_0x1fb62d('0xd46')),'span':0x2},_0x39f1e0[_0x1fb62d('0x53')][_0x1fb62d('0x914')](_0x195568[_0x1fb62d('0xc89')],null,_0x39f1e0['default'][_0x1fb62d('0x914')](_0x2a90a9['MailTwoTone'],null),_0x39f1e0[_0x1fb62d('0x53')][_0x1fb62d('0x914')](_0x461f31,{'copyable':!0x0},'\x20'['concat'](this['props'][_0x1fb62d('0x81a')][_0x1fb62d('0xafb')]||''))))))),_0x39f1e0[_0x1fb62d('0x53')]['createElement'](_0x195568[_0x1fb62d('0x70b')],{'span':0x18},_0x39f1e0[_0x1fb62d('0x53')][_0x1fb62d('0x914')](_0x195568[_0x1fb62d('0x19')],{'title':this[_0x1fb62d('0x2d0')]['adapter']['gt'](_0x1fb62d('0x24a')),'extra':this[_0x1fb62d('0xcf7')](),'style':{'width':_0x1fb62d('0xbe9')}},_0x39f1e0[_0x1fb62d('0x53')][_0x1fb62d('0x914')](_0x195568[_0x1fb62d('0x6d5')],{'title':'','bordered':!0x0},_0x39f1e0['default'][_0x1fb62d('0x914')](_0x195568[_0x1fb62d('0x6d5')]['Item'],{'label':this[_0x1fb62d('0x2d0')][_0x1fb62d('0x7c7')]['gt'](_0x1fb62d('0x2fb')),'span':0x2},this['props'][_0x1fb62d('0x81a')][_0x1fb62d('0x97d')]),_0x39f1e0[_0x1fb62d('0x53')]['createElement'](_0x195568['Descriptions'][_0x1fb62d('0x191')],{'label':this[_0x1fb62d('0x2d0')]['adapter']['gt'](_0x1fb62d('0x9e7'))},this[_0x1fb62d('0x2d0')][_0x1fb62d('0x81a')]['employment_status_Name']),_0x39f1e0['default'][_0x1fb62d('0x914')](_0x195568['Descriptions'][_0x1fb62d('0x191')],{'label':this[_0x1fb62d('0x2d0')]['adapter']['gt'](_0x1fb62d('0x5ff'))},this[_0x1fb62d('0x2d0')][_0x1fb62d('0x81a')][_0x1fb62d('0x491')]),_0x39f1e0['default'][_0x1fb62d('0x914')](_0x195568[_0x1fb62d('0x6d5')][_0x1fb62d('0x191')],{'label':this['props'][_0x1fb62d('0x7c7')]['gt'](_0x1fb62d('0x44a'))},this[_0x1fb62d('0x2d0')][_0x1fb62d('0x81a')][_0x1fb62d('0x4dd')])))))),_0x39f1e0[_0x1fb62d('0x53')][_0x1fb62d('0x914')](_0x2f8bd2,{'tab':this[_0x1fb62d('0x2d0')][_0x1fb62d('0x7c7')]['gt']('Qualifications'),'key':'2','style':{'width':_0x1fb62d('0xbe9')}},_0x39f1e0[_0x1fb62d('0x53')][_0x1fb62d('0x914')](_0x195568['Row'],{'style':{'width':'100%','padding':_0x1fb62d('0x177')},'gutter':0x18},_0x39f1e0[_0x1fb62d('0x53')]['createElement'](_0x195568['Col'],{'span':0x6},_0x39f1e0['default']['createElement'](_0x195568[_0x1fb62d('0x19')],{'title':this[_0x1fb62d('0x2d0')][_0x1fb62d('0x7c7')]['gt'](_0x1fb62d('0xc30')),'style':{'width':_0x1fb62d('0xbe9')}},_0x39f1e0[_0x1fb62d('0x53')][_0x1fb62d('0x914')](_0x2f7c80[_0x1fb62d('0x53')],{'color':_0x1fb62d('0x960'),'apiClient':this[_0x1fb62d('0x2d0')][_0x1fb62d('0x7c7')][_0x1fb62d('0x555')],'url':'employees/'[_0x1fb62d('0x49e')](this[_0x1fb62d('0x2d0')][_0x1fb62d('0x81a')]['id'],_0x1fb62d('0x186')),'extractTag':function(_0x532370){var _0x12d47d=_0x1fb62d;return _0x532370[_0x12d47d('0x467')][_0x12d47d('0x725')];}}))),_0x39f1e0[_0x1fb62d('0x53')][_0x1fb62d('0x914')](_0x195568[_0x1fb62d('0x70b')],{'span':0x6},_0x39f1e0[_0x1fb62d('0x53')]['createElement'](_0x195568[_0x1fb62d('0x19')],{'title':this[_0x1fb62d('0x2d0')]['adapter']['gt'](_0x1fb62d('0x550')),'style':{'width':_0x1fb62d('0xbe9')}},_0x39f1e0[_0x1fb62d('0x53')][_0x1fb62d('0x914')](_0x2f7c80[_0x1fb62d('0x53')],{'color':_0x1fb62d('0x3fe'),'apiClient':this[_0x1fb62d('0x2d0')][_0x1fb62d('0x7c7')][_0x1fb62d('0x555')],'url':'employees/'[_0x1fb62d('0x49e')](this['props'][_0x1fb62d('0x81a')]['id'],_0x1fb62d('0x5fa')),'extractTag':function(_0x36e11a){var _0x5ece42=_0x1fb62d;return _0x36e11a[_0x5ece42('0x7ac')][_0x5ece42('0x725')];}}))),_0x39f1e0[_0x1fb62d('0x53')][_0x1fb62d('0x914')](_0x195568[_0x1fb62d('0x70b')],{'span':0x6},_0x39f1e0[_0x1fb62d('0x53')]['createElement'](_0x195568[_0x1fb62d('0x19')],{'title':this[_0x1fb62d('0x2d0')][_0x1fb62d('0x7c7')]['gt'](_0x1fb62d('0x5d1')),'style':{'width':'100%'}},_0x39f1e0[_0x1fb62d('0x53')][_0x1fb62d('0x914')](_0x2f7c80[_0x1fb62d('0x53')],{'color':_0x1fb62d('0x135'),'apiClient':this['props'][_0x1fb62d('0x7c7')][_0x1fb62d('0x555')],'url':'employees/'['concat'](this['props'][_0x1fb62d('0x81a')]['id'],_0x1fb62d('0xd59')),'extractTag':function(_0x404360){var _0x16231d=_0x1fb62d;return _0x404360[_0x16231d('0xd0')][_0x16231d('0x725')];}}))),_0x39f1e0[_0x1fb62d('0x53')][_0x1fb62d('0x914')](_0x195568[_0x1fb62d('0x70b')],{'span':0x6},_0x39f1e0[_0x1fb62d('0x53')][_0x1fb62d('0x914')](_0x195568[_0x1fb62d('0x19')],{'title':this[_0x1fb62d('0x2d0')][_0x1fb62d('0x7c7')]['gt']('Languages'),'style':{'width':_0x1fb62d('0xbe9')}},_0x39f1e0[_0x1fb62d('0x53')][_0x1fb62d('0x914')](_0x2f7c80[_0x1fb62d('0x53')],{'color':_0x1fb62d('0xbb1'),'apiClient':this[_0x1fb62d('0x2d0')][_0x1fb62d('0x7c7')][_0x1fb62d('0x555')],'url':_0x1fb62d('0xc5a')[_0x1fb62d('0x49e')](this[_0x1fb62d('0x2d0')][_0x1fb62d('0x81a')]['id'],_0x1fb62d('0xa60')),'extractTag':function(_0xabf80e){var _0x424d76=_0x1fb62d;return _0xabf80e[_0x424d76('0x213')][_0x424d76('0x725')];}}))))))));}}])&&_0x47b50e(_0x4a1bf4[_0x22add0('0x3ec')],_0x4bd4e7),_0x63b0c5&&_0x47b50e(_0x4a1bf4,_0x63b0c5),_0x5b6820;}(_0x39f1e0[_0x2b8f43('0x53')]['Component']);_0x2f081c[_0x2b8f43('0x53')]=_0x1ee093;},{'../../../../components/TagList':0x3f,'../../../../components/UpdatePasswordModal':0x40,'@ant-design/icons':'@ant-design/icons','antd':'antd','react':_0x322f0f('0x603')}],0x4c:[function(_0x578128,_0x1678e0,_0x246274){var _0x1cf42b=_0x322f0f;'use strict';var _0x49c71d=_0x578128('./lib');window['EmployeeAdapter']=_0x49c71d[_0x1cf42b('0x2a3')],window[_0x1cf42b('0x51e')]=_0x49c71d[_0x1cf42b('0x51e')],window[_0x1cf42b('0x9ab')]=_0x49c71d[_0x1cf42b('0x9ab')];},{'./lib':0x4d}],0x4d:[function(_0x466193,_0x275a82,_0x2bbc6b){var _0x3e2a46=_0x322f0f;'use strict';var _0xba1224=_0x3ca226(_0x466193(_0x3e2a46('0x603'))),_0xb391d4=_0x3ca226(_0x466193('react-dom')),_0x1b4f4b=_0x3ca226(_0x466193('qrcode')),_0x3077cd=_0x3ca226(_0x466193('../../../api/AdapterBase')),_0xcbb516=_0x3ca226(_0x466193(_0x3e2a46('0xda8'))),_0x9b7f5b=_0x3ca226(_0x466193(_0x3e2a46('0x63d')));function _0x3ca226(_0x102cf4){var _0x5256d1=_0x3e2a46;return _0x102cf4&&_0x102cf4[_0x5256d1('0x866')]?_0x102cf4:{'default':_0x102cf4};}function _0x3b5992(_0x129240){var _0x155da2=_0x3e2a46;return(_0x3b5992=_0x155da2('0x67')==typeof Symbol&&_0x155da2('0xd77')==typeof Symbol[_0x155da2('0x303')]?function(_0x1d352d){return typeof _0x1d352d;}:function(_0x4c2c71){var _0x5afc38=_0x155da2;return _0x4c2c71&&'function'==typeof Symbol&&_0x4c2c71[_0x5afc38('0xbe8')]===Symbol&&_0x4c2c71!==Symbol['prototype']?_0x5afc38('0xd77'):typeof _0x4c2c71;})(_0x129240);}function _0x2f8921(_0x4fe61,_0x2f100a){return function(_0x492e37){var _0x5c2caa=_0x3e44;if(Array[_0x5c2caa('0x9f2')](_0x492e37))return _0x492e37;}(_0x4fe61)||function(_0x55514e,_0x4475d1){var _0x48f58f=_0x3e44;if(_0x48f58f('0x396')==typeof Symbol||!(Symbol[_0x48f58f('0x303')]in Object(_0x55514e)))return;var _0x4ea884=[],_0x38c6d7=!0x0,_0x4cf981=!0x1,_0x2a8a54=void 0x0;try{for(var _0x10ffdb,_0x53bd93=_0x55514e[Symbol[_0x48f58f('0x303')]]();!(_0x38c6d7=(_0x10ffdb=_0x53bd93[_0x48f58f('0x71e')]())[_0x48f58f('0x6c')])&&(_0x4ea884['push'](_0x10ffdb[_0x48f58f('0x9b6')]),!_0x4475d1||_0x4ea884[_0x48f58f('0x1d1')]!==_0x4475d1);_0x38c6d7=!0x0);}catch(_0x418c62){_0x4cf981=!0x0,_0x2a8a54=_0x418c62;}finally{try{_0x38c6d7||null==_0x53bd93[_0x48f58f('0x107')]||_0x53bd93[_0x48f58f('0x107')]();}finally{if(_0x4cf981)throw _0x2a8a54;}}return _0x4ea884;}(_0x4fe61,_0x2f100a)||function(_0x50f993,_0x57a673){var _0x1636bd=_0x3e44;if(!_0x50f993)return;if(_0x1636bd('0x4ba')==typeof _0x50f993)return _0x3ad2c2(_0x50f993,_0x57a673);var _0x5d4e9c=Object[_0x1636bd('0x3ec')][_0x1636bd('0x8dc')][_0x1636bd('0x928')](_0x50f993)['slice'](0x8,-0x1);_0x1636bd('0x40c')===_0x5d4e9c&&_0x50f993['constructor']&&(_0x5d4e9c=_0x50f993[_0x1636bd('0xbe8')][_0x1636bd('0x9e')]);if(_0x1636bd('0x410')===_0x5d4e9c||'Set'===_0x5d4e9c)return Array[_0x1636bd('0x868')](_0x5d4e9c);if(_0x1636bd('0x86e')===_0x5d4e9c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/[_0x1636bd('0xb03')](_0x5d4e9c))return _0x3ad2c2(_0x50f993,_0x57a673);}(_0x4fe61,_0x2f100a)||function(){throw new TypeError('Invalid\x20attempt\x20to\x20destructure\x20non-iterable\x20instance.\x0aIn\x20order\x20to\x20be\x20iterable,\x20non-array\x20objects\x20must\x20have\x20a\x20[Symbol.iterator]()\x20method.');}();}function _0x3ad2c2(_0x136316,_0x30e900){var _0x4e22e3=_0x3e2a46;(null==_0x30e900||_0x30e900>_0x136316[_0x4e22e3('0x1d1')])&&(_0x30e900=_0x136316[_0x4e22e3('0x1d1')]);for(var _0x398b9a=0x0,_0x237ba7=new Array(_0x30e900);_0x398b9a<_0x30e900;_0x398b9a++)_0x237ba7[_0x398b9a]=_0x136316[_0x398b9a];return _0x237ba7;}function _0x10b426(_0x82f85d,_0x2e5e52){var _0x5e6ed9=_0x3e2a46;if(!(_0x82f85d instanceof _0x2e5e52))throw new TypeError(_0x5e6ed9('0xc2c'));}function _0x56807d(_0x4c0bfc,_0x18934f){var _0x4f6f38=_0x3e2a46;for(var _0x472f68=0x0;_0x472f68<_0x18934f[_0x4f6f38('0x1d1')];_0x472f68++){var _0x52628a=_0x18934f[_0x472f68];_0x52628a[_0x4f6f38('0x836')]=_0x52628a[_0x4f6f38('0x836')]||!0x1,_0x52628a[_0x4f6f38('0x249')]=!0x0,'value'in _0x52628a&&(_0x52628a[_0x4f6f38('0xc28')]=!0x0),Object[_0x4f6f38('0x2cd')](_0x4c0bfc,_0x52628a[_0x4f6f38('0xcb6')],_0x52628a);}}function _0x44db03(_0x2748de,_0x5752a2,_0xfad3b6){return _0x5752a2&&_0x56807d(_0x2748de['prototype'],_0x5752a2),_0xfad3b6&&_0x56807d(_0x2748de,_0xfad3b6),_0x2748de;}function _0x4492c5(_0x248dde){return function(){var _0xdaf5b0=_0x3e44,_0x42b8f1,_0x320772=_0x14091e(_0x248dde);if(_0x34155c()){var _0x5c5439=_0x14091e(this)[_0xdaf5b0('0xbe8')];_0x42b8f1=Reflect[_0xdaf5b0('0xa71')](_0x320772,arguments,_0x5c5439);}else _0x42b8f1=_0x320772[_0xdaf5b0('0x7da')](this,arguments);return _0x1bb9cf(this,_0x42b8f1);};}function _0x1bb9cf(_0x3ac372,_0xfddfe1){var _0x3a0a71=_0x3e2a46;return!_0xfddfe1||_0x3a0a71('0x669')!==_0x3b5992(_0xfddfe1)&&_0x3a0a71('0x67')!=typeof _0xfddfe1?function(_0x26728b){var _0x4b4d1d=_0x3a0a71;if(void 0x0===_0x26728b)throw new ReferenceError(_0x4b4d1d('0xba4'));return _0x26728b;}(_0x3ac372):_0xfddfe1;}function _0x34155c(){var _0x502868=_0x3e2a46;if(_0x502868('0x396')==typeof Reflect||!Reflect[_0x502868('0xa71')])return!0x1;if(Reflect[_0x502868('0xa71')]['sham'])return!0x1;if(_0x502868('0x67')==typeof Proxy)return!0x0;try{return Date[_0x502868('0x3ec')]['toString'][_0x502868('0x928')](Reflect[_0x502868('0xa71')](Date,[],function(){})),!0x0;}catch(_0x2b7c0e){return!0x1;}}function _0x14091e(_0x220b0e){var _0x24f3d0=_0x3e2a46;return(_0x14091e=Object[_0x24f3d0('0x16')]?Object[_0x24f3d0('0x418')]:function(_0x3a2989){var _0x500cf0=_0x24f3d0;return _0x3a2989[_0x500cf0('0xc15')]||Object['getPrototypeOf'](_0x3a2989);})(_0x220b0e);}function _0x279044(_0x3c7d7c,_0x2d84e2){var _0xd3fbe4=_0x3e2a46;if(_0xd3fbe4('0x67')!=typeof _0x2d84e2&&null!==_0x2d84e2)throw new TypeError(_0xd3fbe4('0xc9'));_0x3c7d7c[_0xd3fbe4('0x3ec')]=Object[_0xd3fbe4('0xd9d')](_0x2d84e2&&_0x2d84e2['prototype'],{'constructor':{'value':_0x3c7d7c,'writable':!0x0,'configurable':!0x0}}),_0x2d84e2&&_0x4c5538(_0x3c7d7c,_0x2d84e2);}function _0x4c5538(_0x1ad34c,_0x48cf02){var _0x187f87=_0x3e2a46;return(_0x4c5538=Object[_0x187f87('0x16')]||function(_0x595d2d,_0x488018){var _0x4a9f26=_0x187f87;return _0x595d2d[_0x4a9f26('0xc15')]=_0x488018,_0x595d2d;})(_0x1ad34c,_0x48cf02);}var _0x4a35b6=function(_0x4f21c8){var _0x20152c=_0x3e2a46;_0x279044(_0x34b5fe,_0x4f21c8);var _0x236d67=_0x4492c5(_0x34b5fe);function _0x34b5fe(_0x5d1bbe,_0x4ea12e,_0x5cb359,_0x48312e){var _0xddb47a=_0x3e44,_0x9ea6ad;return _0x10b426(this,_0x34b5fe),(_0x9ea6ad=_0x236d67[_0xddb47a('0x928')](this,_0x5d1bbe,_0x4ea12e,_0x5cb359,_0x48312e))[_0xddb47a('0x1bf')]={},_0x9ea6ad[_0xddb47a('0xcfc')]={},_0x9ea6ad['tableFields']={},_0x9ea6ad['formOnlyFields']={},_0x9ea6ad[_0xddb47a('0x895')]=null,_0x9ea6ad;}return _0x44db03(_0x34b5fe,[{'key':'setFieldNameMap','value':function(_0x349f29){var _0x2a77d7=_0x3e44;for(var _0x1a45f8,_0x2eb667=0x0;_0x2eb667<_0x349f29[_0x2a77d7('0x1d1')];_0x2eb667++)_0x1a45f8=_0x349f29[_0x2eb667],this[_0x2a77d7('0x1bf')][_0x1a45f8[_0x2a77d7('0x9e')]]=_0x1a45f8,_0x2a77d7('0x995')===_0x1a45f8['display']?this['hiddenFields'][_0x1a45f8['name']]=_0x1a45f8:_0x2a77d7('0x132')===_0x1a45f8[_0x2a77d7('0x725')]?this[_0x2a77d7('0x9b7')][_0x1a45f8[_0x2a77d7('0x9e')]]=_0x1a45f8:this[_0x2a77d7('0xc19')][_0x1a45f8['name']]=_0x1a45f8;}},{'key':_0x20152c('0xc58'),'value':function(){var _0x397252=_0x20152c;return['id',_0x397252('0xa63'),_0x397252('0x1ad'),_0x397252('0xd43'),_0x397252('0xc7'),_0x397252('0xaae'),_0x397252('0xc0a'),_0x397252('0x36d')];}},{'key':_0x20152c('0x6f7'),'value':function(){var _0x3ed157=_0x20152c;return[{'sTitle':'ID'},{'sTitle':_0x3ed157('0x7e0')},{'sTitle':'First\x20Name'},{'sTitle':_0x3ed157('0xa61')},{'sTitle':'Mobile'},{'sTitle':_0x3ed157('0x5ff')},{'sTitle':_0x3ed157('0x5d7')},{'sTitle':_0x3ed157('0x44a')}];}},{'key':_0x20152c('0x2c7'),'value':function(){var _0x27c76a=_0x20152c;this[_0x27c76a('0x428')]();}},{'key':'initProfile','value':function(_0x5a0dc7){var _0xb1896d=_0x20152c,_0x4fc01f=document[_0xb1896d('0x803')](''[_0xb1896d('0x49e')](this[_0xb1896d('0x894')]));this[_0xb1896d('0x996')]=_0xba1224[_0xb1896d('0x53')][_0xb1896d('0x2d9')](),_0xb391d4[_0xb1896d('0x53')][_0xb1896d('0x265')](_0xba1224[_0xb1896d('0x53')][_0xb1896d('0x914')](_0x9b7f5b[_0xb1896d('0x53')],{'ref':this[_0xb1896d('0x996')],'adapter':this,'element':_0x5a0dc7}),_0x4fc01f),this[_0xb1896d('0x996')][_0xb1896d('0x684')][_0xb1896d('0x51f')](!_0x5a0dc7);}},{'key':_0x20152c('0x715'),'value':function(){var _0x159f58=_0x20152c,_0x4c12b9=this;this['initTable'](),this['masterDataReader'][_0x159f58('0x1e6')]()[_0x159f58('0x577')](function(){var _0x5b3be7=_0x159f58;_0x4c12b9[_0x5b3be7('0x58d')]();}),this['trackEvent'](_0x159f58('0x715'),this[_0x159f58('0x894')],this[_0x159f58('0x5aa')]);}},{'key':_0x20152c('0xa01'),'value':function(_0x4b1409){var _0x7b68e3=_0x20152c;this[_0x7b68e3('0x3d0')](!0x0),this[_0x7b68e3('0xb61')]=_0x4b1409,this[_0x7b68e3('0x3db')](_0x4b1409,[]);}},{'key':_0x20152c('0x564'),'value':function(){return{'width':0x400,'twoColumnLayout':!0x1};}},{'key':_0x20152c('0x59d'),'value':function(){var _0x9e0f7a=_0x20152c,_0x2731d6,_0x5c1e80,_0x26b740,_0x1c11ae,_0x4172bd,_0x94450a,_0x2289fc,_0x2492a1,_0x25316c=[];_0x2731d6=_0x9e0f7a('0x6b9')===this[_0x9e0f7a('0xc21')]('Edit\x20Employee\x20Number')?['employee_id',{'label':_0x9e0f7a('0x7e0'),'type':_0x9e0f7a('0x1c4'),'validation':''}]:[_0x9e0f7a('0xa63'),{'label':'Employee\x20Number','type':_0x9e0f7a('0xad7'),'validation':''}],_0x5c1e80='Yes'===this[_0x9e0f7a('0xc21')](_0x9e0f7a('0x9c9'))?['ssn_num',{'label':'EPF/CPF/SS\x20No','type':'text','validation':'none'}]:['ssn_num',{'label':_0x9e0f7a('0x225'),'type':_0x9e0f7a('0xad7'),'validation':'none'}],_0x26b740=_0x9e0f7a('0x6b9')===this[_0x9e0f7a('0xc21')]('Edit\x20Employment\x20Status')?[_0x9e0f7a('0x80f'),{'label':'Employment\x20Status','type':_0x9e0f7a('0xdbb'),'remote-source':[_0x9e0f7a('0x3d6'),'id',_0x9e0f7a('0x9e')]}]:[_0x9e0f7a('0x80f'),{'label':_0x9e0f7a('0x9e7'),'type':_0x9e0f7a('0xad7'),'remote-source':[_0x9e0f7a('0x3d6'),'id',_0x9e0f7a('0x9e')]}],_0x1c11ae=_0x9e0f7a('0x6b9')===this[_0x9e0f7a('0xc21')](_0x9e0f7a('0xd40'))?[_0x9e0f7a('0x9b2'),{'label':'Job\x20Title','type':_0x9e0f7a('0xdbb'),'remote-source':['JobTitle','id','name']}]:[_0x9e0f7a('0x9b2'),{'label':_0x9e0f7a('0x2fb'),'type':'placeholder','remote-source':['JobTitle','id','name']}],_0x4172bd=_0x9e0f7a('0x6b9')===this[_0x9e0f7a('0xc21')](_0x9e0f7a('0xb0c'))?['pay_grade',{'label':_0x9e0f7a('0x71d'),'type':_0x9e0f7a('0xdbb'),'allow-null':!0x0,'remote-source':[_0x9e0f7a('0x6d6'),'id',_0x9e0f7a('0x9e')]}]:[_0x9e0f7a('0xc92'),{'label':_0x9e0f7a('0x71d'),'type':_0x9e0f7a('0xad7'),'allow-null':!0x0,'remote-source':[_0x9e0f7a('0x6d6'),'id','name']}],_0x94450a=_0x9e0f7a('0x6b9')===this[_0x9e0f7a('0xc21')](_0x9e0f7a('0x30f'))?[_0x9e0f7a('0x94b'),{'label':_0x9e0f7a('0x8bf'),'type':'date','validation':''}]:[_0x9e0f7a('0x94b'),{'label':_0x9e0f7a('0x8bf'),'type':'placeholder','validation':''}],_0x2289fc=_0x9e0f7a('0x6b9')===this['checkPermission'](_0x9e0f7a('0x395'))?[_0x9e0f7a('0xaae'),{'label':_0x9e0f7a('0x5ff'),'type':_0x9e0f7a('0xdbb'),'remote-source':[_0x9e0f7a('0x6f1'),'id',_0x9e0f7a('0xa3c')]}]:[_0x9e0f7a('0xaae'),{'label':_0x9e0f7a('0x5ff'),'type':_0x9e0f7a('0xad7'),'remote-source':['CompanyStructure','id','title']}],_0x2492a1=_0x9e0f7a('0x6b9')===this['checkPermission'](_0x9e0f7a('0x47b'))?[_0x9e0f7a('0x606'),{'label':_0x9e0f7a('0x765'),'type':_0x9e0f7a('0x1c4'),'validation':_0x9e0f7a('0x31f')}]:[_0x9e0f7a('0x606'),{'label':_0x9e0f7a('0x765'),'type':_0x9e0f7a('0xad7'),'validation':'emailOrEmpty'}];for(var _0x17cd4d=[['id',{'label':'ID','type':'hidden','validation':''}],_0x2731d6,[_0x9e0f7a('0x1ad'),{'label':_0x9e0f7a('0xa6d'),'type':'text','validation':''}],[_0x9e0f7a('0x159'),{'label':_0x9e0f7a('0xd2b'),'type':_0x9e0f7a('0x1c4'),'validation':_0x9e0f7a('0x3b9')}],[_0x9e0f7a('0xd43'),{'label':_0x9e0f7a('0xa61'),'type':_0x9e0f7a('0x1c4'),'validation':''}],[_0x9e0f7a('0x24d'),{'label':'Nationality','type':'select2','remote-source':[_0x9e0f7a('0x572'),'id',_0x9e0f7a('0x9e')]}],[_0x9e0f7a('0x983'),{'label':'Date\x20of\x20Birth','type':_0x9e0f7a('0xd98'),'validation':''}],['gender',{'label':_0x9e0f7a('0x5d7'),'type':'select','source':[[_0x9e0f7a('0xc61'),_0x9e0f7a('0xc61')],['Female','Female'],[_0x9e0f7a('0x24'),_0x9e0f7a('0x24')]]}],[_0x9e0f7a('0xd84'),{'label':_0x9e0f7a('0x67d'),'type':_0x9e0f7a('0x7fc'),'source':[[_0x9e0f7a('0x84a'),_0x9e0f7a('0x84a')],[_0x9e0f7a('0x9f9'),_0x9e0f7a('0x9f9')],[_0x9e0f7a('0x64b'),_0x9e0f7a('0x64b')],['Widowed',_0x9e0f7a('0x95a')],[_0x9e0f7a('0x24'),_0x9e0f7a('0x24')]]}],_0x5c1e80,[_0x9e0f7a('0x901'),{'label':'NIC','type':_0x9e0f7a('0x1c4'),'validation':_0x9e0f7a('0x3b9')}],['other_id',{'label':_0x9e0f7a('0x7db'),'type':_0x9e0f7a('0x1c4'),'validation':_0x9e0f7a('0x3b9')}],[_0x9e0f7a('0x1da'),{'label':'Driving\x20License\x20No','type':_0x9e0f7a('0x1c4'),'validation':'none'}],_0x26b740,_0x1c11ae,_0x4172bd,['work_station_id',{'label':'Work\x20Station\x20Id','type':_0x9e0f7a('0x1c4'),'validation':_0x9e0f7a('0x3b9')}],[_0x9e0f7a('0x61c'),{'label':_0x9e0f7a('0x220'),'type':_0x9e0f7a('0x1c4'),'validation':_0x9e0f7a('0x3b9')}],['address2',{'label':_0x9e0f7a('0xd38'),'type':_0x9e0f7a('0x1c4'),'validation':_0x9e0f7a('0x3b9')}],[_0x9e0f7a('0xcf1'),{'label':_0x9e0f7a('0x2d1'),'type':'text','validation':_0x9e0f7a('0x3b9')}],_0x9e0f7a('0x6b9')===this[_0x9e0f7a('0xc21')](_0x9e0f7a('0xbda'))?['country',{'label':_0x9e0f7a('0x9b4'),'type':'select2','remote-source':[_0x9e0f7a('0x9b4'),_0x9e0f7a('0x293'),'name']}]:[_0x9e0f7a('0xc82'),{'label':_0x9e0f7a('0x9b4'),'type':'placeholder','remote-source':[_0x9e0f7a('0x9b4'),_0x9e0f7a('0x293'),_0x9e0f7a('0x9e')]}],[_0x9e0f7a('0x306'),{'label':_0x9e0f7a('0x96b'),'type':_0x9e0f7a('0xdbb'),'allow-null':!0x0,'remote-source':[_0x9e0f7a('0x96b'),'id',_0x9e0f7a('0x9e')]}],[_0x9e0f7a('0x635'),{'label':'Postal/Zip\x20Code','type':_0x9e0f7a('0x1c4'),'validation':_0x9e0f7a('0x3b9')}],[_0x9e0f7a('0x8e4'),{'label':_0x9e0f7a('0x8ba'),'type':'text','validation':_0x9e0f7a('0x3b9')}],[_0x9e0f7a('0xc7'),{'label':_0x9e0f7a('0xa3d'),'type':_0x9e0f7a('0x1c4'),'validation':'none'}],[_0x9e0f7a('0x563'),{'label':_0x9e0f7a('0x6c3'),'type':_0x9e0f7a('0x1c4'),'validation':_0x9e0f7a('0x3b9')}],_0x2492a1,[_0x9e0f7a('0xafb'),{'label':_0x9e0f7a('0xd46'),'type':_0x9e0f7a('0x1c4'),'validation':_0x9e0f7a('0x92d')}],_0x94450a,_0x2289fc],_0x24763a=0x0;_0x24763a0x0&&_0x8a6ab1[_0x14d04f('0x8cd')]({'title':this['gt'](_0x14d04f('0x24')),'description':this['gt'](_0x14d04f('0x9bb')),'fields':this[_0x14d04f('0xa7a')][_0x14d04f('0x4ad')](function(_0x447314){return _0x447314[0x0];})}),this[_0x14d04f('0x28c')](_0x8a6ab1,_0x44970a);}},{'key':_0x20152c('0x28c'),'value':function(_0x12748b,_0x18898a){var _0x5f346f=_0x20152c;return _0x12748b[_0x5f346f('0x4ad')](function(_0x4e697e){var _0x3de710=_0x5f346f;return _0x4e697e[_0x3de710('0xb79')]=_0x4e697e[_0x3de710('0xb79')][_0x3de710('0xc16')](function(_0x449406,_0x482b2c){var _0x22213a=_0x3de710,_0x5d8343=_0x18898a[_0x22213a('0xdb8')](function(_0x3a9726){return _0x2f8921(_0x3a9726,0x1)[0x0]===_0x482b2c;});return _0x5d8343&&_0x449406['push'](_0x5d8343),_0x449406;},[]),_0x4e697e;});}},{'key':_0x20152c('0x49'),'value':function(){var _0x1a1e30=_0x20152c,_0x90e6ed=this[_0x1a1e30('0x693')];return _0x90e6ed[_0x1a1e30('0x36d')]=[_0x1a1e30('0x2bb'),'id',_0x1a1e30('0x1aa')],_0x90e6ed;}},{'key':'viewElement','value':function(_0x180f60){var _0x56bc36=_0x20152c,_0x5bf5e7={'map':JSON[_0x56bc36('0x263')](this[_0x56bc36('0x49')]())},_0x42e10e=JSON[_0x56bc36('0x263')](_0x5bf5e7),_0x3446e7=[];_0x3446e7[_0x56bc36('0x400')]=[],_0x3446e7[_0x56bc36('0x947')]=_0x56bc36('0x78a'),_0x3446e7['callBackFail']=_0x56bc36('0x7c3'),this[_0x56bc36('0x87b')]('get',_0x56bc36('0x5d0'),_0x42e10e,_0x3446e7);}},{'key':'deleteProfileImage','value':function(_0x38e8d0){var _0x150995=_0x20152c,_0x3db512={'id':_0x38e8d0},_0x5a5a23=JSON[_0x150995('0x263')](_0x3db512),_0x165086=[];_0x165086['callBackData']=[],_0x165086[_0x150995('0x947')]=_0x150995('0xaee'),_0x165086[_0x150995('0x350')]=_0x150995('0xaee'),this[_0x150995('0x87b')](_0x150995('0x479'),_0x150995('0x5d0'),_0x5a5a23,_0x165086);}},{'key':_0x20152c('0xaee'),'value':function(_0x379a09){var _0x173a38=_0x20152c;top[_0x173a38('0x83e')][_0x173a38('0x381')]=top[_0x173a38('0x83e')][_0x173a38('0x381')];}},{'key':_0x20152c('0x78a'),'value':function(_0x5652e0){var _0x1428e4=_0x20152c;_0x5652e0[0x1],_0x5652e0[0x2];var _0x189dd4=_0x2f8921(_0x5652e0,0x1)[0x0];this[_0x1428e4('0x428')](_0x189dd4);}},{'key':_0x20152c('0xc60'),'value':function(_0x33842d){var _0x55e59d=_0x20152c,_0xfecd70=this['getFormFields'](),_0x381554=_0x33842d[0x1],_0x287e76=_0x33842d[0x2];_0x33842d=_0x2f8921(_0x33842d,0x1)[0x0];for(var _0x3197b1=this[_0x55e59d('0xa12')](_0x55e59d('0x8c7')),_0x3fcfd1=0x0;_0x3fcfd1<_0xfecd70[_0x55e59d('0x1d1')];_0x3fcfd1++)if(void 0x0!==this[_0x55e59d('0x1bf')][_0xfecd70[_0x3fcfd1][0x0]]&&null!==this['fieldNameMap'][_0xfecd70[_0x3fcfd1][0x0]]){var _0x280f0e=this[_0x55e59d('0x1bf')][_0xfecd70[_0x3fcfd1][0x0]][_0x55e59d('0x5e3')];_0x3197b1=_0x3197b1[_0x55e59d('0x95e')](_0x55e59d('0xcac')[_0x55e59d('0x49e')](_0xfecd70[_0x3fcfd1][0x0],'_#'),this['gt'](_0x280f0e));}_0x3197b1=(_0x3197b1=_0x3197b1[_0x55e59d('0x95e')](/#_.+_#/gi,''))[_0x55e59d('0x95e')](/_id_/g,_0x33842d['id']),$('#'[_0x55e59d('0x49e')](this[_0x55e59d('0x6d8')]()))[_0x55e59d('0x826')](_0x3197b1);for(var _0x47ff26=0x0;_0x47ff26<_0xfecd70[_0x55e59d('0x1d1')];_0x47ff26++)$('#'[_0x55e59d('0x49e')](this[_0x55e59d('0x6d8')](),'\x20#')[_0x55e59d('0x49e')](_0xfecd70[_0x47ff26][0x0]))['html'](_0x33842d[_0xfecd70[_0x47ff26][0x0]]),$('#'[_0x55e59d('0x49e')](this[_0x55e59d('0x6d8')](),'\x20#')[_0x55e59d('0x49e')](_0xfecd70[_0x47ff26][0x0],_0x55e59d('0x94a')))['html'](_0x33842d[''[_0x55e59d('0x49e')](_0xfecd70[_0x47ff26][0x0],_0x55e59d('0x94a'))]);$('#'[_0x55e59d('0x49e')](this[_0x55e59d('0x6d8')](),_0x55e59d('0x702')))[_0x55e59d('0x826')](_0x33842d[_0x55e59d('0x4dd')]);for(var _0x4a46cf='',_0x55490c=0x0;_0x55490c<_0x33842d[_0x55e59d('0xb9d')][_0x55e59d('0x1d1')];_0x55490c++)void 0x0!==_0x33842d[_0x55e59d('0xb9d')][_0x55490c][_0x55e59d('0x1ad')]&&null!==_0x33842d[_0x55e59d('0xb9d')][_0x55490c][_0x55e59d('0x1ad')]&&(_0x4a46cf+=''[_0x55e59d('0x49e')](_0x33842d[_0x55e59d('0xb9d')][_0x55490c][_0x55e59d('0x1ad')],'\x20')),void 0x0!==_0x33842d[_0x55e59d('0xb9d')][_0x55490c][_0x55e59d('0x159')]&&null!==_0x33842d['subordinates'][_0x55490c][_0x55e59d('0x159')]&&''!==_0x33842d[_0x55e59d('0xb9d')][_0x55490c][_0x55e59d('0x159')]&&(_0x4a46cf+=''[_0x55e59d('0x49e')](_0x33842d[_0x55e59d('0xb9d')][_0x55490c][_0x55e59d('0x159')],'\x20')),void 0x0!==_0x33842d['subordinates'][_0x55490c]['last_name']&&null!==_0x33842d[_0x55e59d('0xb9d')][_0x55490c][_0x55e59d('0xd43')]&&''!==_0x33842d[_0x55e59d('0xb9d')][_0x55490c][_0x55e59d('0xd43')]&&(_0x4a46cf+=_0x33842d[_0x55e59d('0xb9d')][_0x55490c]['last_name']),_0x4a46cf+=_0x55e59d('0x194');if(void 0x0!==_0x33842d[_0x55e59d('0xa7a')]&&null!==_0x33842d[_0x55e59d('0xa7a')]&&Object['keys'](_0x33842d[_0x55e59d('0xa7a')])[_0x55e59d('0x1d1')]>0x0){var _0x2269bb;for(var _0x21eaa4 in _0x33842d[_0x55e59d('0xa7a')]){_0x33842d[_0x55e59d('0xa7a')][_0x21eaa4][0x1]||(_0x33842d[_0x55e59d('0xa7a')][_0x21eaa4][0x1]=this['gt'](_0x55e59d('0x325')));var _0x20026c=_0x33842d[_0x55e59d('0xa7a')][_0x21eaa4][0x1][_0x55e59d('0xa43')]();if(_0x20026c=_0x20026c[_0x55e59d('0x95e')]('\x20','_'),$(_0x55e59d('0x92e')[_0x55e59d('0x49e')](_0x20026c))[_0x55e59d('0x1d1')]<=0x0){var _0x29eec8=_0x55e59d('0x3b6');_0x29eec8=(_0x29eec8=_0x29eec8['replace'](_0x55e59d('0x7b8'),_0x20026c))[_0x55e59d('0x95e')](_0x55e59d('0x6ff'),_0x33842d['customFields'][_0x21eaa4][0x1]),$(_0x55e59d('0x745'))[_0x55e59d('0x113')]($(_0x29eec8));}_0x2269bb=(_0x2269bb=_0x55e59d('0x2cf'))[_0x55e59d('0x95e')](_0x55e59d('0x54c'),_0x21eaa4),_0x2269bb=_0x55e59d('0x1fe')===_0x33842d['customFields'][_0x21eaa4][0x2]?_0x2269bb[_0x55e59d('0x95e')](_0x55e59d('0x8ea'),_0x55e59d('0xcfb')[_0x55e59d('0x49e')](_0x33842d[_0x55e59d('0xa7a')][_0x21eaa4][0x0],_0x55e59d('0x749'))['concat'](_0x21eaa4,_0x55e59d('0xd87'))):_0x2269bb[_0x55e59d('0x95e')]('#_value_#',_0x33842d['customFields'][_0x21eaa4][0x0]),$(_0x55e59d('0x92e')[_0x55e59d('0x49e')](_0x20026c))['append']($(_0x2269bb));}}else $(_0x55e59d('0x745'))['remove']();$('#'[_0x55e59d('0x49e')](this['getTableName'](),_0x55e59d('0x907')))[_0x55e59d('0x826')](_0x4a46cf),$('#'['concat'](this[_0x55e59d('0x6d8')](),'\x20#name'))[_0x55e59d('0x826')](''[_0x55e59d('0x49e')](_0x33842d[_0x55e59d('0x1ad')],'\x20')['concat'](_0x33842d[_0x55e59d('0xd43')])),this[_0x55e59d('0x895')]=_0x33842d['id'],$('#'[_0x55e59d('0x49e')](this[_0x55e59d('0x6d8')](),'\x20#profile_image_')[_0x55e59d('0x49e')](_0x33842d['id']))[_0x55e59d('0x41a')](_0x55e59d('0xb4e'),_0x33842d[_0x55e59d('0x438')]),'No'===this[_0x55e59d('0xc21')](_0x55e59d('0xd30'))&&($('#employeeUploadProfileImage')[_0x55e59d('0x8b7')](),$(_0x55e59d('0x275'))[_0x55e59d('0x8b7')]()),'No'===this[_0x55e59d('0xc21')](_0x55e59d('0xbbe'))&&$(_0x55e59d('0xaf6'))['remove'](),_0x381554!==_0x287e76&&$(_0x55e59d('0x167'))[_0x55e59d('0x8b7')](),this[_0x55e59d('0x5c1')]();}},{'key':_0x20152c('0x7c3'),'value':function(_0x332ac2){}},{'key':_0x20152c('0x4b0'),'value':function(){var _0x42fe91=_0x20152c;this[_0x42fe91('0xa01')](this['currentUserId']);}},{'key':_0x20152c('0xb59'),'value':function(){var _0x63bef7=_0x20152c;$(_0x63bef7('0x14e'))[_0x63bef7('0xbe5')](_0x63bef7('0x388')),$('#adminUsersChangePwd\x20#newpwd')['val'](''),$('#adminUsersChangePwd\x20#conpwd')[_0x63bef7('0x19f')](''),$(_0x63bef7('0xcbf'))['hide']();}},{'key':_0x20152c('0x1b5'),'value':function(){var _0x1cacd8=_0x20152c;$('#adminUsersChangePwd_error')['hide']();var _0x2ab982=$(_0x1cacd8('0x456'))[_0x1cacd8('0x19f')](),_0x218937=$(_0x1cacd8('0x2'))[_0x1cacd8('0x19f')]();if(_0x218937!==_0x2ab982)return $('#adminUsersChangePwd_error')[_0x1cacd8('0x826')](_0x1cacd8('0xc0d')),void $(_0x1cacd8('0xcbf'))['show']();var _0x5158fb=this[_0x1cacd8('0x27a')](_0x2ab982);if(null!=_0x5158fb)return $(_0x1cacd8('0xcbf'))[_0x1cacd8('0x826')](_0x5158fb),void $('#adminUsersChangePwd_error')[_0x1cacd8('0x388')]();var _0x579aec={'pwd':_0x218937},_0x12c138=JSON[_0x1cacd8('0x263')](_0x579aec),_0x14403d=[];_0x14403d[_0x1cacd8('0x400')]=[],_0x14403d['callBackSuccess']=_0x1cacd8('0xafc'),_0x14403d[_0x1cacd8('0x350')]=_0x1cacd8('0x65e'),this['customAction']('changePassword','modules=employees',_0x12c138,_0x14403d);}},{'key':_0x20152c('0x343'),'value':function(){$('#adminUsersModel')['modal']('hide');}},{'key':_0x20152c('0xafc'),'value':function(_0xeb3653,_0x43e64b){var _0x1bba56=_0x20152c;this[_0x1bba56('0x343')](),this[_0x1bba56('0xcc4')]('Password\x20Change',_0x1bba56('0x3c'));}},{'key':_0x20152c('0x65e'),'value':function(_0x3fbe8a,_0x1e3bd8){var _0x4043cd=_0x20152c;this[_0x4043cd('0x343')](),this[_0x4043cd('0xcc4')](_0x4043cd('0x6b7'),_0x3fbe8a);}}]),_0x34b5fe;}(_0xcbb516['default']),_0x872304=function(_0x24bfc1){var _0x30349f=_0x3e2a46;_0x279044(_0x49eceb,_0x24bfc1);var _0x42dbcd=_0x4492c5(_0x49eceb);function _0x49eceb(_0x1cff06,_0x4736c9,_0xe57d52,_0x52d81c){var _0x285825=_0x3e44,_0x30b322;return _0x10b426(this,_0x49eceb),(_0x30b322=_0x42dbcd[_0x285825('0x928')](this,_0x1cff06,_0x4736c9,_0xe57d52,_0x52d81c))['nodeIdCounter']=0x0,_0x30b322;}return _0x44db03(_0x49eceb,[{'key':_0x30349f('0xb08'),'value':function(_0x2ebb35){var _0x5d9f8d=_0x30349f;for(var _0x5b6676={'id':-0x1,'title':'','name':'','children':[]},_0x4d297b=null,_0x2124e3=0x0;_0x2124e3<_0x2ebb35[_0x5d9f8d('0x1d1')];_0x2124e3++)_0x2ebb35[_0x2124e3][_0x5d9f8d('0x9e')]=_0x2ebb35[_0x2124e3][_0x5d9f8d('0xa3c')],null!==_0x2ebb35[_0x2124e3][_0x5d9f8d('0xd14')]&&void 0x0!==_0x2ebb35[_0x2124e3][_0x5d9f8d('0xd14')]&&null!==(_0x4d297b=this[_0x5d9f8d('0x602')](_0x2ebb35,_0x2ebb35[_0x2124e3]['parent']))&&(void 0x0!==_0x4d297b[_0x5d9f8d('0xbc8')]&&null!==_0x4d297b[_0x5d9f8d('0xbc8')]||(_0x4d297b[_0x5d9f8d('0xbc8')]=[]),_0x4d297b[_0x5d9f8d('0xbc8')]['push'](_0x2ebb35[_0x2124e3]));for(var _0x2d01dd=0x0;_0x2d01dd<_0x2ebb35[_0x5d9f8d('0x1d1')];_0x2d01dd++)null!==_0x2ebb35[_0x2d01dd]['parent']&&void 0x0!==_0x2ebb35[_0x2d01dd][_0x5d9f8d('0xd14')]||_0x5b6676[_0x5d9f8d('0xbc8')]['push'](_0x2ebb35[_0x2d01dd]);return _0x5b6676;}},{'key':_0x30349f('0x602'),'value':function(_0x10c1a7,_0x475004){var _0x3e7e24=_0x30349f;for(var _0x333664=0x0;_0x333664<_0x10c1a7[_0x3e7e24('0x1d1')];_0x333664++)if(_0x10c1a7[_0x333664]['title']===_0x475004||_0x10c1a7[_0x333664]['title']===_0x475004)return _0x10c1a7[_0x333664];return null;}},{'key':_0x30349f('0xadf'),'value':function(_0x15133c){var _0x2bcbdb=_0x30349f;$('#tabPageCompanyGraph')[_0x2bcbdb('0x826')]('');var _0x2c2dae=this['sourceData'],_0x16237d=this[_0x2bcbdb('0xb08')](_0x2c2dae),_0x3d86b2=[0x14,0x78,0x14,0x78],_0x2ab9ff=0x1388-_0x3d86b2[0x1]-_0x3d86b2[0x3],_0x4703e6=0x3e8-_0x3d86b2[0x0]-_0x3d86b2[0x2],_0x41a3a2=d3[_0x2bcbdb('0x699')][_0x2bcbdb('0x900')]()[_0x2bcbdb('0xbd0')]([_0x4703e6,_0x2ab9ff]);this['diagonal']=d3['svg']['diagonal']()[_0x2bcbdb('0x6ab')](function(_0x2e300d){return[_0x2e300d['y'],_0x2e300d['x']];}),this[_0x2bcbdb('0xd4')]=d3[_0x2bcbdb('0x7fc')](_0x2bcbdb('0x8e5'))[_0x2bcbdb('0x113')](_0x2bcbdb('0x1b2'))[_0x2bcbdb('0x41a')](_0x2bcbdb('0x9c3'),_0x2ab9ff+_0x3d86b2[0x1]+_0x3d86b2[0x3])[_0x2bcbdb('0x41a')]('height',_0x4703e6+_0x3d86b2[0x0]+_0x3d86b2[0x2])[_0x2bcbdb('0x113')](_0x2bcbdb('0x60d'))[_0x2bcbdb('0x41a')](_0x2bcbdb('0xcfd'),_0x2bcbdb('0xb97')[_0x2bcbdb('0x49e')](_0x3d86b2[0x3],',')[_0x2bcbdb('0x49e')](_0x3d86b2[0x0],')'));var _0x19d960=_0x16237d;_0x19d960['x0']=_0x4703e6/0x2,_0x19d960['y0']=0x0,this['update'](_0x19d960,_0x41a3a2,_0x19d960);}},{'key':'update','value':function(_0x363e39,_0x29b30c,_0x2dcdf7){var _0x2dae1e=_0x30349f,_0x2d87b0=this,_0x154900=d3[_0x2dae1e('0x4d4')]&&d3[_0x2dae1e('0x4d4')][_0x2dae1e('0x3cb')]?0x1388:0x1f4,_0x2705b3=_0x29b30c[_0x2dae1e('0x46')](_0x2dcdf7)['reverse']();_0x2705b3[_0x2dae1e('0x7ed')](function(_0x3efc9b){var _0x33cb6d=_0x2dae1e;_0x3efc9b['y']=0xb4*_0x3efc9b[_0x33cb6d('0x512')];});var _0x5d169e=_0x2d87b0[_0x2dae1e('0xd4')]['selectAll'](_0x2dae1e('0x424'))[_0x2dae1e('0xc8f')](_0x2705b3,function(_0x9fe79c){var _0x39165d=_0x2dae1e;return _0x9fe79c['id']||(_0x9fe79c['id']=++_0x2d87b0[_0x39165d('0x40')]);}),_0xb88a61=_0x5d169e['enter']()[_0x2dae1e('0x113')](_0x2dae1e('0x60d'))[_0x2dae1e('0x41a')](_0x2dae1e('0x6ce'),_0x2dae1e('0x4cc'))[_0x2dae1e('0x41a')]('transform',function(_0x39b024){var _0x1e8d3a=_0x2dae1e;return _0x1e8d3a('0xb97')[_0x1e8d3a('0x49e')](_0x363e39['y0'],',')[_0x1e8d3a('0x49e')](_0x363e39['x0'],')');})['on']('click',function(_0x3deb6d){var _0x546c36=_0x2dae1e;_0x2d87b0[_0x546c36('0x8c')](_0x3deb6d),_0x2d87b0[_0x546c36('0x850')](_0x3deb6d,_0x29b30c,_0x2dcdf7);});_0xb88a61[_0x2dae1e('0x113')]('svg:circle')['attr']('r',0.000001)[_0x2dae1e('0x1c8')]('fill',function(_0x3bc4fe){var _0x1b6d18=_0x2dae1e;return _0x3bc4fe[_0x1b6d18('0xd5a')]?_0x1b6d18('0x496'):_0x1b6d18('0x15a');}),_0xb88a61['append'](_0x2dae1e('0x6ca'))[_0x2dae1e('0x41a')]('x',function(_0x26637a){var _0x4c9a35=_0x2dae1e;return _0x26637a[_0x4c9a35('0xbc8')]||_0x26637a[_0x4c9a35('0xd5a')]?-0xa:0xa;})[_0x2dae1e('0x41a')]('dy','.35em')[_0x2dae1e('0x41a')]('text-anchor',function(_0x2cee41){var _0xea0cb7=_0x2dae1e;return _0x2cee41[_0xea0cb7('0xbc8')]||_0x2cee41[_0xea0cb7('0xd5a')]?_0xea0cb7('0x8e0'):_0xea0cb7('0xb9');})[_0x2dae1e('0x1c4')](function(_0x1c3a86){var _0x1e5c89=_0x2dae1e;return _0x1c3a86[_0x1e5c89('0x9e')];})[_0x2dae1e('0x1c8')](_0x2dae1e('0x798'),0.000001);var _0x489b67=_0x5d169e[_0x2dae1e('0x958')]()[_0x2dae1e('0x8db')](_0x154900)[_0x2dae1e('0x41a')]('transform',function(_0x1f5bda){var _0x43f15c=_0x2dae1e;return _0x43f15c('0xb97')['concat'](_0x1f5bda['y'],',')[_0x43f15c('0x49e')](_0x1f5bda['x'],')');});_0x489b67[_0x2dae1e('0x7fc')]('circle')['attr']('r',4.5)[_0x2dae1e('0x1c8')](_0x2dae1e('0x609'),function(_0x474650){var _0x3ab318=_0x2dae1e;return _0x474650[_0x3ab318('0xd5a')]?_0x3ab318('0x496'):_0x3ab318('0x15a');}),_0x489b67[_0x2dae1e('0x7fc')](_0x2dae1e('0x1c4'))[_0x2dae1e('0x1c8')](_0x2dae1e('0x798'),0x1);var _0x497c4c=_0x5d169e[_0x2dae1e('0xbdf')]()['transition']()['duration'](_0x154900)[_0x2dae1e('0x41a')]('transform',function(_0x46f716){var _0x1dfc07=_0x2dae1e;return'translate('[_0x1dfc07('0x49e')](_0x363e39['y'],',')[_0x1dfc07('0x49e')](_0x363e39['x'],')');})['remove']();_0x497c4c[_0x2dae1e('0x7fc')](_0x2dae1e('0x66e'))[_0x2dae1e('0x41a')]('r',0.000001),_0x497c4c[_0x2dae1e('0x7fc')](_0x2dae1e('0x1c4'))[_0x2dae1e('0x1c8')]('fill-opacity',0.000001);var _0x40cb3a=_0x2d87b0[_0x2dae1e('0xd4')]['selectAll']('path.link')['data'](_0x29b30c[_0x2dae1e('0x10c')](_0x2705b3),function(_0x4b1259){return _0x4b1259['target']['id'];});_0x40cb3a[_0x2dae1e('0x668')]()[_0x2dae1e('0x471')](_0x2dae1e('0xd29'),'g')['attr'](_0x2dae1e('0x6ce'),_0x2dae1e('0x2e7'))[_0x2dae1e('0x41a')]('d',function(_0x4c347a){var _0xaa35ff=_0x2dae1e,_0x2fb3ac={'x':_0x363e39['x0'],'y':_0x363e39['y0']};return _0x2d87b0[_0xaa35ff('0x80e')]({'source':_0x2fb3ac,'target':_0x2fb3ac});})['transition']()['duration'](_0x154900)[_0x2dae1e('0x41a')]('d',_0x2d87b0[_0x2dae1e('0x80e')]),_0x40cb3a[_0x2dae1e('0x958')]()['duration'](_0x154900)[_0x2dae1e('0x41a')]('d',_0x2d87b0[_0x2dae1e('0x80e')]),_0x40cb3a[_0x2dae1e('0xbdf')]()['transition']()[_0x2dae1e('0x8db')](_0x154900)['attr']('d',function(_0x1acd90){var _0x456825=_0x2dae1e,_0x272333={'x':_0x363e39['x'],'y':_0x363e39['y']};return _0x2d87b0[_0x456825('0x80e')]({'source':_0x272333,'target':_0x272333});})[_0x2dae1e('0x8b7')](),_0x2705b3[_0x2dae1e('0x7ed')](function(_0x39fa02){_0x39fa02['x0']=_0x39fa02['x'],_0x39fa02['y0']=_0x39fa02['y'];});}},{'key':_0x30349f('0x8c'),'value':function(_0x27b7bf){var _0x51c630=_0x30349f;_0x27b7bf['children']?(_0x27b7bf[_0x51c630('0xd5a')]=_0x27b7bf['children'],_0x27b7bf['children']=null):(_0x27b7bf[_0x51c630('0xbc8')]=_0x27b7bf[_0x51c630('0xd5a')],_0x27b7bf[_0x51c630('0xd5a')]=null);}},{'key':_0x30349f('0x3d1'),'value':function(_0x5211b6){var _0x994f02=_0x30349f;for(var _0x4f190e=0x0;_0x4f190e'),_0x553038['parent']=null;break;}_0x394565[_0x57efd3['id']]=0x1,_0x5ce859=_0x57efd3;}}return''===_0x54b177||(this[_0xfd304c('0xcc4')](_0xfd304c('0x34a'),_0xfd304c('0x6cc')['concat'](_0x54b177)),!0x1);}}]),_0x49eceb;}(function(_0x3f48db){var _0x1cc681=_0x3e2a46;_0x279044(_0x343826,_0x3f48db);var _0x122b55=_0x4492c5(_0x343826);function _0x343826(){var _0x35f0e0=_0x3e44;return _0x10b426(this,_0x343826),_0x122b55[_0x35f0e0('0x7da')](this,arguments);}return _0x44db03(_0x343826,[{'key':_0x1cc681('0xc58'),'value':function(){var _0x2fbd01=_0x1cc681;return['id','title',_0x2fbd01('0xbcf'),_0x2fbd01('0xb88'),_0x2fbd01('0xc82'),'parent'];}},{'key':'getHeaders','value':function(){var _0x296a78=_0x1cc681;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':'Name'},{'sTitle':_0x296a78('0x6bf')},{'sTitle':_0x296a78('0xb25')},{'sTitle':_0x296a78('0x9b4'),'sClass':_0x296a78('0x2d5')},{'sTitle':_0x296a78('0x3c8')}];}},{'key':'getFormFields','value':function(){var _0x3246c4=_0x1cc681;return[['id',{'label':'ID','type':_0x3246c4('0xb0f'),'validation':''}],['title',{'label':_0x3246c4('0x8bd'),'type':_0x3246c4('0x1c4'),'validation':''}],[_0x3246c4('0x399'),{'label':_0x3246c4('0x760'),'type':_0x3246c4('0x219'),'validation':''}],[_0x3246c4('0xbcf'),{'label':_0x3246c4('0x6bf'),'type':_0x3246c4('0x219'),'validation':'none'}],[_0x3246c4('0xb88'),{'label':'Type','type':_0x3246c4('0x7fc'),'source':[[_0x3246c4('0xd49'),_0x3246c4('0xd49')],[_0x3246c4('0x806'),_0x3246c4('0x806')],[_0x3246c4('0x401'),_0x3246c4('0x401')],[_0x3246c4('0x5ff'),_0x3246c4('0x5ff')],[_0x3246c4('0x5e4'),_0x3246c4('0x5e4')],[_0x3246c4('0x994'),_0x3246c4('0x994')],[_0x3246c4('0x24'),_0x3246c4('0x24')]]}],['country',{'label':'Country','type':_0x3246c4('0x7fc'),'remote-source':[_0x3246c4('0x9b4'),_0x3246c4('0x293'),_0x3246c4('0x9e')]}],[_0x3246c4('0xd14'),{'label':_0x3246c4('0x3c8'),'type':_0x3246c4('0x7fc'),'allow-null':!0x0,'remote-source':[_0x3246c4('0x6f1'),'id',_0x3246c4('0xa3c')]}]];}}]),_0x343826;}(_0x3077cd[_0x3e2a46('0x53')])),_0x3f1c2f=function(_0x4906f5){var _0x573a25=_0x3e2a46;_0x279044(_0x5c4c84,_0x4906f5);var _0x25a4bf=_0x4492c5(_0x5c4c84);function _0x5c4c84(){var _0x5bd384=_0x3e44;return _0x10b426(this,_0x5c4c84),_0x25a4bf[_0x5bd384('0x7da')](this,arguments);}return _0x44db03(_0x5c4c84,[{'key':_0x573a25('0xc58'),'value':function(){return[];}},{'key':_0x573a25('0x6f7'),'value':function(){return[];}},{'key':'getFormFields','value':function(){return[];}},{'key':_0x573a25('0xfa'),'value':function(_0x4cbdab){var _0x2c6ca6=_0x573a25;this[_0x2c6ca6('0x76')]=_0x4cbdab;}},{'key':_0x573a25('0x715'),'value':function(){var _0x420b6f=_0x573a25,_0x59786c=document[_0x420b6f('0x803')](_0x420b6f('0xac8'));_0x1b4f4b[_0x420b6f('0x53')]['toCanvas'](_0x59786c,JSON['stringify']({'key':'IceHrm','url':this['apiUrl'],'token':this['token']}),function(_0x32d084){var _0x5ea564=_0x420b6f;_0x32d084&&console[_0x5ea564('0xc78')](_0x32d084);});}}]),_0x5c4c84;}(_0x3077cd[_0x3e2a46('0x53')]);_0x275a82[_0x3e2a46('0x91e')]={'EmployeeAdapter':_0x4a35b6,'CompanyGraphAdapter':_0x872304,'ApiAccessAdapter':_0x3f1c2f};},{'../../../api/AdapterBase':0x27,'../../../api/ReactModalAdapterBase':0x32,'./components/EmployeeProfile':0x4b,'qrcode':0x7,'react':'react','react-dom':_0x322f0f('0x231')}],0x4e:[function(_0x2e46d2,_0x4c2bf2,_0x6c7e65){var _0x176cff=_0x322f0f;'use strict';var _0x583c6f=_0x2e46d2(_0x176cff('0x98f'));window[_0x176cff('0x34c')]=_0x583c6f[_0x176cff('0x34c')];},{'./lib':0x4f}],0x4f:[function(_0x50a058,_0x37ebe1,_0x48782b){var _0x50da51=_0x322f0f;'use strict';var _0x4d718a;function _0x366e8c(_0x264200){var _0xabce4d=_0x3e44;return(_0x366e8c=_0xabce4d('0x67')==typeof Symbol&&_0xabce4d('0xd77')==typeof Symbol[_0xabce4d('0x303')]?function(_0x269ffa){return typeof _0x269ffa;}:function(_0x4b26e3){var _0xafe3f=_0xabce4d;return _0x4b26e3&&_0xafe3f('0x67')==typeof Symbol&&_0x4b26e3[_0xafe3f('0xbe8')]===Symbol&&_0x4b26e3!==Symbol['prototype']?_0xafe3f('0xd77'):typeof _0x4b26e3;})(_0x264200);}function _0x1852f0(_0x419f08,_0x471845){var _0x170a78=_0x3e44;if(!(_0x419f08 instanceof _0x471845))throw new TypeError(_0x170a78('0xc2c'));}function _0xce082f(_0x55e13f,_0x2b03c6){var _0x567d4e=_0x3e44;for(var _0x4ec82a=0x0;_0x4ec82a<_0x2b03c6[_0x567d4e('0x1d1')];_0x4ec82a++){var _0xf9369d=_0x2b03c6[_0x4ec82a];_0xf9369d[_0x567d4e('0x836')]=_0xf9369d['enumerable']||!0x1,_0xf9369d['configurable']=!0x0,'value'in _0xf9369d&&(_0xf9369d[_0x567d4e('0xc28')]=!0x0),Object[_0x567d4e('0x2cd')](_0x55e13f,_0xf9369d[_0x567d4e('0xcb6')],_0xf9369d);}}function _0x3953fd(_0x47579a,_0x427372){var _0x1836c8=_0x3e44;return!_0x427372||_0x1836c8('0x669')!==_0x366e8c(_0x427372)&&_0x1836c8('0x67')!=typeof _0x427372?function(_0x50179b){var _0x299798=_0x1836c8;if(void 0x0===_0x50179b)throw new ReferenceError(_0x299798('0xba4'));return _0x50179b;}(_0x47579a):_0x427372;}function _0x2f02cd(){var _0x57c982=_0x3e44;if(_0x57c982('0x396')==typeof Reflect||!Reflect[_0x57c982('0xa71')])return!0x1;if(Reflect[_0x57c982('0xa71')][_0x57c982('0x886')])return!0x1;if(_0x57c982('0x67')==typeof Proxy)return!0x0;try{return Date[_0x57c982('0x3ec')][_0x57c982('0x8dc')][_0x57c982('0x928')](Reflect['construct'](Date,[],function(){})),!0x0;}catch(_0xae064f){return!0x1;}}function _0x2b4775(_0x83d7de){var _0x5b23d7=_0x3e44;return(_0x2b4775=Object['setPrototypeOf']?Object[_0x5b23d7('0x418')]:function(_0x2f146a){var _0x5f4770=_0x5b23d7;return _0x2f146a[_0x5f4770('0xc15')]||Object['getPrototypeOf'](_0x2f146a);})(_0x83d7de);}function _0x158350(_0x20762d,_0x307bb9){var _0x19a3f0=_0x3e44;return(_0x158350=Object[_0x19a3f0('0x16')]||function(_0x153495,_0x4d4e02){var _0x64b72=_0x19a3f0;return _0x153495[_0x64b72('0xc15')]=_0x4d4e02,_0x153495;})(_0x20762d,_0x307bb9);}var _0x3c1b02=function(_0x5a6a4a){var _0x200afe=_0x3e44;!function(_0x573117,_0x1f7ad2){var _0x3adad4=_0x3e44;if(_0x3adad4('0x67')!=typeof _0x1f7ad2&&null!==_0x1f7ad2)throw new TypeError(_0x3adad4('0xc9'));_0x573117[_0x3adad4('0x3ec')]=Object[_0x3adad4('0xd9d')](_0x1f7ad2&&_0x1f7ad2[_0x3adad4('0x3ec')],{'constructor':{'value':_0x573117,'writable':!0x0,'configurable':!0x0}}),_0x1f7ad2&&_0x158350(_0x573117,_0x1f7ad2);}(_0x42f1c5,_0x5a6a4a);var _0x1e9ff6,_0x2e41cf,_0xf91ce3,_0x116e61,_0x3f10ff=(_0x1e9ff6=_0x42f1c5,function(){var _0xa08b11=_0x3e44,_0x2f5a07,_0x1ec33f=_0x2b4775(_0x1e9ff6);if(_0x2f02cd()){var _0x111d61=_0x2b4775(this)[_0xa08b11('0xbe8')];_0x2f5a07=Reflect['construct'](_0x1ec33f,arguments,_0x111d61);}else _0x2f5a07=_0x1ec33f['apply'](this,arguments);return _0x3953fd(this,_0x2f5a07);});function _0x42f1c5(){var _0x25bdb4=_0x3e44;return _0x1852f0(this,_0x42f1c5),_0x3f10ff[_0x25bdb4('0x7da')](this,arguments);}return _0x2e41cf=_0x42f1c5,(_0xf91ce3=[{'key':_0x200afe('0xc58'),'value':function(){var _0x59466d=_0x200afe;return['id','loan',_0x59466d('0x624'),_0x59466d('0x5bc'),_0x59466d('0x849'),_0x59466d('0x993'),_0x59466d('0x90d')];}},{'key':_0x200afe('0x6f7'),'value':function(){var _0x170260=_0x200afe;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':_0x170260('0x281')},{'sTitle':_0x170260('0x999')},{'sTitle':_0x170260('0x500')},{'sTitle':_0x170260('0x3a0')},{'sTitle':_0x170260('0x5ca')},{'sTitle':_0x170260('0xad1')}];}},{'key':_0x200afe('0x59d'),'value':function(){var _0x8d8a7=_0x200afe;return[['id',{'label':'ID','type':_0x8d8a7('0xb0f')}],[_0x8d8a7('0x9e4'),{'label':_0x8d8a7('0x281'),'type':_0x8d8a7('0xad7'),'remote-source':[_0x8d8a7('0x27e'),'id',_0x8d8a7('0x9e')]}],[_0x8d8a7('0x624'),{'label':_0x8d8a7('0x999'),'type':_0x8d8a7('0xad7'),'validation':''}],[_0x8d8a7('0x142'),{'label':_0x8d8a7('0x10e'),'type':'placeholder','validation':_0x8d8a7('0x3b9')}],[_0x8d8a7('0x5bc'),{'label':_0x8d8a7('0x500'),'type':'placeholder','validation':_0x8d8a7('0x913')}],[_0x8d8a7('0x849'),{'label':_0x8d8a7('0x3a0'),'type':_0x8d8a7('0xad7'),'remote-source':[_0x8d8a7('0x64f'),'id',_0x8d8a7('0x9e')]}],[_0x8d8a7('0x993'),{'label':_0x8d8a7('0x566'),'type':_0x8d8a7('0xad7'),'validation':_0x8d8a7('0x6d9')}],[_0x8d8a7('0xa54'),{'label':_0x8d8a7('0x3ab'),'type':_0x8d8a7('0xad7'),'validation':_0x8d8a7('0x6d9')}],[_0x8d8a7('0x90d'),{'label':_0x8d8a7('0xad1'),'type':_0x8d8a7('0xad7'),'source':[[_0x8d8a7('0x756'),'Approved'],['Paid',_0x8d8a7('0x42e')],[_0x8d8a7('0x207'),'Suspended']]}],['details',{'label':_0x8d8a7('0x760'),'type':_0x8d8a7('0xad7'),'validation':_0x8d8a7('0x3b9')}]];}},{'key':_0x200afe('0x3cd'),'value':function(_0x310f78,_0x558bf7){var _0xe6d4b4=_0x200afe,_0x8995fd=_0xe6d4b4('0x918');return _0x8995fd=this['showDelete']?_0x8995fd[_0xe6d4b4('0x95e')](_0xe6d4b4('0xd12'),_0xe6d4b4('0xd4e')):_0x8995fd[_0xe6d4b4('0x95e')]('_delete_',''),_0x8995fd=(_0x8995fd=(_0x8995fd=this[_0xe6d4b4('0x385')]?_0x8995fd[_0xe6d4b4('0x95e')]('_edit_',''):_0x8995fd['replace'](_0xe6d4b4('0x788'),''))[_0xe6d4b4('0x95e')](/_id_/g,_0x310f78))[_0xe6d4b4('0x95e')](/_BASE_/g,this[_0xe6d4b4('0xadb')]);}}])&&_0xce082f(_0x2e41cf['prototype'],_0xf91ce3),_0x116e61&&_0xce082f(_0x2e41cf,_0x116e61),_0x42f1c5;}(((_0x4d718a=_0x50a058(_0x50da51('0x6ee')))&&_0x4d718a[_0x50da51('0x866')]?_0x4d718a:{'default':_0x4d718a})[_0x50da51('0x53')]);_0x37ebe1[_0x50da51('0x91e')]={'EmployeeCompanyLoanAdapter':_0x3c1b02};},{'../../../api/AdapterBase':0x27}],0x50:[function(_0x2f99b8,_0x1a052f,_0x1735c3){var _0x3357f9=_0x322f0f;'use strict';var _0x2b8af6=_0x2f99b8('./lib');window[_0x3357f9('0x45b')]=_0x2b8af6[_0x3357f9('0x45b')],window['EmployeeOvertimeApproverAdapter']=_0x2b8af6['EmployeeOvertimeApproverAdapter'],window['SubordinateEmployeeOvertimeAdapter']=_0x2b8af6[_0x3357f9('0x55c')];},{'./lib':0x51}],0x51:[function(_0x1ab0a6,_0xe2863,_0x13f2c8){var _0x435583=_0x322f0f;'use strict';var _0x5d8b8c,_0x3c1628=(_0x5d8b8c=_0x1ab0a6(_0x435583('0x657')))&&_0x5d8b8c[_0x435583('0x866')]?_0x5d8b8c:{'default':_0x5d8b8c},_0x3ffd5b=_0x1ab0a6('../../../admin/src/overtime/lib');function _0x1b870c(_0x94ba3a){var _0x2f1add=_0x435583;return(_0x1b870c='function'==typeof Symbol&&'symbol'==typeof Symbol[_0x2f1add('0x303')]?function(_0x136787){return typeof _0x136787;}:function(_0x5ac854){var _0x2d2831=_0x2f1add;return _0x5ac854&&_0x2d2831('0x67')==typeof Symbol&&_0x5ac854[_0x2d2831('0xbe8')]===Symbol&&_0x5ac854!==Symbol[_0x2d2831('0x3ec')]?_0x2d2831('0xd77'):typeof _0x5ac854;})(_0x94ba3a);}function _0x3c4ddb(_0x535973,_0x1a2480){var _0x3d0296=_0x435583;if(!(_0x535973 instanceof _0x1a2480))throw new TypeError(_0x3d0296('0xc2c'));}function _0x445a1a(_0x1b2870,_0x7751f9){var _0x260f1c=_0x435583;for(var _0x4308eb=0x0;_0x4308eb<_0x7751f9[_0x260f1c('0x1d1')];_0x4308eb++){var _0x58d834=_0x7751f9[_0x4308eb];_0x58d834['enumerable']=_0x58d834[_0x260f1c('0x836')]||!0x1,_0x58d834[_0x260f1c('0x249')]=!0x0,_0x260f1c('0x9b6')in _0x58d834&&(_0x58d834[_0x260f1c('0xc28')]=!0x0),Object[_0x260f1c('0x2cd')](_0x1b2870,_0x58d834[_0x260f1c('0xcb6')],_0x58d834);}}function _0x5428ec(_0x52ff8e,_0x3833fe,_0x1c037b){var _0x1930e7=_0x435583;return _0x3833fe&&_0x445a1a(_0x52ff8e[_0x1930e7('0x3ec')],_0x3833fe),_0x1c037b&&_0x445a1a(_0x52ff8e,_0x1c037b),_0x52ff8e;}function _0x2bb3c6(_0x3d4b80){return function(){var _0x1ca727=_0x3e44,_0x207806,_0x4ed2cc=_0x4ea678(_0x3d4b80);if(_0x344cf8()){var _0x4cf137=_0x4ea678(this)[_0x1ca727('0xbe8')];_0x207806=Reflect[_0x1ca727('0xa71')](_0x4ed2cc,arguments,_0x4cf137);}else _0x207806=_0x4ed2cc[_0x1ca727('0x7da')](this,arguments);return _0xcb0eea(this,_0x207806);};}function _0xcb0eea(_0xb5339e,_0x25cbcb){return!_0x25cbcb||'object'!==_0x1b870c(_0x25cbcb)&&'function'!=typeof _0x25cbcb?function(_0x12c8c3){if(void 0x0===_0x12c8c3)throw new ReferenceError('this\x20hasn\x27t\x20been\x20initialised\x20-\x20super()\x20hasn\x27t\x20been\x20called');return _0x12c8c3;}(_0xb5339e):_0x25cbcb;}function _0x344cf8(){var _0x5f1f71=_0x435583;if('undefined'==typeof Reflect||!Reflect['construct'])return!0x1;if(Reflect[_0x5f1f71('0xa71')][_0x5f1f71('0x886')])return!0x1;if(_0x5f1f71('0x67')==typeof Proxy)return!0x0;try{return Date[_0x5f1f71('0x3ec')][_0x5f1f71('0x8dc')][_0x5f1f71('0x928')](Reflect[_0x5f1f71('0xa71')](Date,[],function(){})),!0x0;}catch(_0x328a25){return!0x1;}}function _0x4ea678(_0x530908){var _0x539d59=_0x435583;return(_0x4ea678=Object[_0x539d59('0x16')]?Object['getPrototypeOf']:function(_0x41a9f6){var _0x520bc8=_0x539d59;return _0x41a9f6[_0x520bc8('0xc15')]||Object[_0x520bc8('0x418')](_0x41a9f6);})(_0x530908);}function _0x1e58d9(_0x531487,_0x12fc28){var _0x59c1f8=_0x435583;if(_0x59c1f8('0x67')!=typeof _0x12fc28&&null!==_0x12fc28)throw new TypeError(_0x59c1f8('0xc9'));_0x531487['prototype']=Object[_0x59c1f8('0xd9d')](_0x12fc28&&_0x12fc28[_0x59c1f8('0x3ec')],{'constructor':{'value':_0x531487,'writable':!0x0,'configurable':!0x0}}),_0x12fc28&&_0x2dadda(_0x531487,_0x12fc28);}function _0x2dadda(_0xaf4a05,_0x1a110d){var _0x452661=_0x435583;return(_0x2dadda=Object[_0x452661('0x16')]||function(_0x30adde,_0x1793a3){var _0x3d57f0=_0x452661;return _0x30adde[_0x3d57f0('0xc15')]=_0x1793a3,_0x30adde;})(_0xaf4a05,_0x1a110d);}var _0x36f5a0=function(_0x5733c4){var _0x3eeec0=_0x435583;_0x1e58d9(_0x320890,_0x5733c4);var _0x309355=_0x2bb3c6(_0x320890);function _0x320890(_0x133200,_0x183029,_0x5b1349,_0x2c140b){var _0x387736=_0x3e44,_0x1b6b69;return _0x3c4ddb(this,_0x320890),(_0x1b6b69=_0x309355[_0x387736('0x928')](this,_0x133200,_0x183029,_0x5b1349,_0x2c140b))[_0x387736('0x4db')]=_0x387736('0x19e'),_0x1b6b69[_0x387736('0x3b3')]=_0x387736('0xd2d'),_0x1b6b69['modulePathName']=_0x387736('0x2d6'),_0x1b6b69;}return _0x5428ec(_0x320890,[{'key':_0x3eeec0('0xc58'),'value':function(){var _0x5db747=_0x3eeec0;return['id',_0x5db747('0x2d7'),'start_time',_0x5db747('0x15c'),_0x5db747('0xa86'),_0x5db747('0x90d')];}},{'key':'getHeaders','value':function(){var _0x516672=_0x3eeec0;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':_0x516672('0x9e6')},{'sTitle':'Start\x20Time'},{'sTitle':_0x516672('0x429')},{'sTitle':'Project'},{'sTitle':'Status'}];}},{'key':_0x3eeec0('0x59d'),'value':function(){var _0x44eb96=_0x3eeec0;return[['id',{'label':'ID','type':_0x44eb96('0xb0f')}],[_0x44eb96('0x2d7'),{'label':_0x44eb96('0x9e6'),'type':_0x44eb96('0xdbb'),'allow-null':!0x1,'remote-source':['OvertimeCategory','id',_0x44eb96('0x9e')]}],[_0x44eb96('0x18'),{'label':_0x44eb96('0x2af'),'type':_0x44eb96('0x44c'),'validation':''}],[_0x44eb96('0x15c'),{'label':_0x44eb96('0x429'),'type':'datetime','validation':''}],[_0x44eb96('0xa86'),{'label':'Project','type':'select2','allow-null':!0x0,'null=label':_0x44eb96('0x3b9'),'remote-source':[_0x44eb96('0x680'),'id',_0x44eb96('0x9e')]}],['notes',{'label':_0x44eb96('0x50a'),'type':_0x44eb96('0x219'),'validation':_0x44eb96('0x3b9')}]];}}]),_0x320890;}(_0x3c1628[_0x435583('0x53')]),_0xfcf329=function(_0x58c49b){var _0x407c93=_0x435583;_0x1e58d9(_0x4e8a28,_0x58c49b);var _0x5ed7f6=_0x2bb3c6(_0x4e8a28);function _0x4e8a28(_0x2a6080,_0x355c61,_0x536679,_0x5f2ea8){var _0xe46a2e=_0x3e44,_0x51ae4b;return _0x3c4ddb(this,_0x4e8a28),(_0x51ae4b=_0x5ed7f6[_0xe46a2e('0x928')](this,_0x2a6080,_0x355c61,_0x536679,_0x5f2ea8))['itemName']='Overtime',_0x51ae4b[_0xe46a2e('0x3b3')]=_0xe46a2e('0xd2d'),_0x51ae4b[_0xe46a2e('0x46b')]=_0xe46a2e('0x2d6'),_0x51ae4b;}return _0x5428ec(_0x4e8a28,[{'key':_0x407c93('0x3cd'),'value':function(_0x122b3d,_0x158d30){var _0x50aa9c=_0x407c93,_0xe04905=_0x50aa9c('0xbeb');return _0xe04905=_0xe04905['replace']('_logs_',_0x50aa9c('0xb5d')),_0xe04905=(_0xe04905=(_0xe04905=(_0xe04905=_0x50aa9c('0x86b')===_0x158d30[this[_0x50aa9c('0xcdf')]()]?_0xe04905['replace'](_0x50aa9c('0x7a2'),_0x50aa9c('0x187')):_0xe04905[_0x50aa9c('0x95e')](_0x50aa9c('0x7a2'),''))['replace'](/_id_/g,_0x122b3d))['replace'](/_BASE_/g,this[_0x50aa9c('0xadb')]))[_0x50aa9c('0x95e')](/_cstatus_/g,_0x158d30[this[_0x50aa9c('0xcdf')]()]);}},{'key':'getStatusOptionsData','value':function(_0xf70486){var _0x757ea5=_0x407c93,_0x34db43={};return _0x757ea5('0x86b')===_0xf70486&&(_0x34db43[_0x757ea5('0x756')]=_0x757ea5('0x756'),_0x34db43[_0x757ea5('0x9d3')]=_0x757ea5('0x9d3')),_0x34db43;}},{'key':_0x407c93('0x6b2'),'value':function(_0x246eec){var _0x782889=_0x407c93;return this[_0x782889('0x45e')](this[_0x782889('0xa3a')](_0x246eec));}}]),_0x4e8a28;}(_0x3ffd5b[_0x435583('0xc2f')]),_0x4d9336=function(_0xa56129){_0x1e58d9(_0x37880c,_0xa56129);var _0x2265ab=_0x2bb3c6(_0x37880c);function _0x37880c(_0x1e1f86,_0x50d52e,_0x6303bf,_0x47038d){var _0x414e18=_0x3e44,_0x5b42db;return _0x3c4ddb(this,_0x37880c),(_0x5b42db=_0x2265ab['call'](this,_0x1e1f86,_0x50d52e,_0x6303bf,_0x47038d))[_0x414e18('0x4db')]=_0x414e18('0x19e'),_0x5b42db[_0x414e18('0x3b3')]=_0x414e18('0xd2d'),_0x5b42db[_0x414e18('0x46b')]=_0x414e18('0x2d6'),_0x5b42db;}return _0x37880c;}(_0x3ffd5b[_0x435583('0xc2f')]);_0xe2863[_0x435583('0x91e')]={'EmployeeOvertimeAdapter':_0x36f5a0,'EmployeeOvertimeApproverAdapter':_0xfcf329,'SubordinateEmployeeOvertimeAdapter':_0x4d9336};},{'../../../admin/src/overtime/lib':0x23,'../../../api/ApproveModuleAdapter':0x29}],0x52:[function(_0x46b427,_0x2f56a3,_0x11e817){var _0x29a80e=_0x322f0f;'use strict';var _0x54e6e1=_0x46b427(_0x29a80e('0x98f'));window[_0x29a80e('0xb75')]=_0x54e6e1[_0x29a80e('0xb75')];},{'./lib':0x53}],0x53:[function(_0x488185,_0x149eb3,_0x488f1d){var _0x1aee28=_0x322f0f;'use strict';var _0x1847fc;function _0x1dfd51(_0x16ef98){var _0x5e6766=_0x3e44;return(_0x1dfd51=_0x5e6766('0x67')==typeof Symbol&&_0x5e6766('0xd77')==typeof Symbol[_0x5e6766('0x303')]?function(_0x3a4713){return typeof _0x3a4713;}:function(_0x51a535){var _0x38f374=_0x5e6766;return _0x51a535&&_0x38f374('0x67')==typeof Symbol&&_0x51a535[_0x38f374('0xbe8')]===Symbol&&_0x51a535!==Symbol[_0x38f374('0x3ec')]?_0x38f374('0xd77'):typeof _0x51a535;})(_0x16ef98);}function _0x17ab70(_0x274470,_0x565c80){var _0x57c894=_0x3e44;if(!(_0x274470 instanceof _0x565c80))throw new TypeError(_0x57c894('0xc2c'));}function _0x3e15b6(_0x3310e6,_0x4c616a){var _0x818f60=_0x3e44;for(var _0x1f07f3=0x0;_0x1f07f3<_0x4c616a[_0x818f60('0x1d1')];_0x1f07f3++){var _0x289501=_0x4c616a[_0x1f07f3];_0x289501[_0x818f60('0x836')]=_0x289501[_0x818f60('0x836')]||!0x1,_0x289501['configurable']=!0x0,_0x818f60('0x9b6')in _0x289501&&(_0x289501[_0x818f60('0xc28')]=!0x0),Object[_0x818f60('0x2cd')](_0x3310e6,_0x289501[_0x818f60('0xcb6')],_0x289501);}}function _0xe85a49(_0x15b0cd,_0xe8f1f6){var _0x12f8d6=_0x3e44;return!_0xe8f1f6||_0x12f8d6('0x669')!==_0x1dfd51(_0xe8f1f6)&&'function'!=typeof _0xe8f1f6?function(_0x18bdff){if(void 0x0===_0x18bdff)throw new ReferenceError('this\x20hasn\x27t\x20been\x20initialised\x20-\x20super()\x20hasn\x27t\x20been\x20called');return _0x18bdff;}(_0x15b0cd):_0xe8f1f6;}function _0x16fce9(){var _0x57aefb=_0x3e44;if(_0x57aefb('0x396')==typeof Reflect||!Reflect[_0x57aefb('0xa71')])return!0x1;if(Reflect[_0x57aefb('0xa71')][_0x57aefb('0x886')])return!0x1;if(_0x57aefb('0x67')==typeof Proxy)return!0x0;try{return Date['prototype'][_0x57aefb('0x8dc')]['call'](Reflect[_0x57aefb('0xa71')](Date,[],function(){})),!0x0;}catch(_0x1c1cde){return!0x1;}}function _0x3f70e5(_0xb082af){return(_0x3f70e5=Object['setPrototypeOf']?Object['getPrototypeOf']:function(_0x416ec6){var _0x41f79f=_0x3e44;return _0x416ec6[_0x41f79f('0xc15')]||Object['getPrototypeOf'](_0x416ec6);})(_0xb082af);}function _0xcd2170(_0x7c3e5b,_0x57c20c){var _0x1f45f5=_0x3e44;return(_0xcd2170=Object[_0x1f45f5('0x16')]||function(_0x10415c,_0xa84ff0){var _0x510f69=_0x1f45f5;return _0x10415c[_0x510f69('0xc15')]=_0xa84ff0,_0x10415c;})(_0x7c3e5b,_0x57c20c);}var _0x393a0a=function(_0x599909){var _0x1d5820=_0x3e44;!function(_0x3f1bd4,_0xefa93e){var _0x3b8601=_0x3e44;if(_0x3b8601('0x67')!=typeof _0xefa93e&&null!==_0xefa93e)throw new TypeError(_0x3b8601('0xc9'));_0x3f1bd4[_0x3b8601('0x3ec')]=Object['create'](_0xefa93e&&_0xefa93e[_0x3b8601('0x3ec')],{'constructor':{'value':_0x3f1bd4,'writable':!0x0,'configurable':!0x0}}),_0xefa93e&&_0xcd2170(_0x3f1bd4,_0xefa93e);}(_0x53c0d4,_0x599909);var _0x39f44a,_0x4d08c6,_0x6dd9cb,_0x343705,_0x3eb505=(_0x39f44a=_0x53c0d4,function(){var _0x222e12=_0x3e44,_0x1692cf,_0x511b9c=_0x3f70e5(_0x39f44a);if(_0x16fce9()){var _0x4733e4=_0x3f70e5(this)[_0x222e12('0xbe8')];_0x1692cf=Reflect[_0x222e12('0xa71')](_0x511b9c,arguments,_0x4733e4);}else _0x1692cf=_0x511b9c[_0x222e12('0x7da')](this,arguments);return _0xe85a49(this,_0x1692cf);});function _0x53c0d4(){var _0x31fe07=_0x3e44;return _0x17ab70(this,_0x53c0d4),_0x3eb505[_0x31fe07('0x7da')](this,arguments);}return _0x4d08c6=_0x53c0d4,(_0x6dd9cb=[{'key':_0x1d5820('0xc58'),'value':function(){var _0x4abf52=_0x1d5820;return['id',_0x4abf52('0xa86')];}},{'key':'getHeaders','value':function(){var _0xcd3ab6=_0x1d5820;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':_0xcd3ab6('0x680')}];}},{'key':_0x1d5820('0x59d'),'value':function(){var _0x1444f8=_0x1d5820;return[['id',{'label':'ID','type':_0x1444f8('0xb0f')}],['project',{'label':_0x1444f8('0x680'),'type':_0x1444f8('0xdbb'),'remote-source':[_0x1444f8('0x680'),'id',_0x1444f8('0x9e')]}],[_0x1444f8('0x2f1'),{'label':_0x1444f8('0x760'),'type':'textarea','validation':_0x1444f8('0x3b9')}]];}}])&&_0x3e15b6(_0x4d08c6[_0x1d5820('0x3ec')],_0x6dd9cb),_0x343705&&_0x3e15b6(_0x4d08c6,_0x343705),_0x53c0d4;}(((_0x1847fc=_0x488185(_0x1aee28('0x6ee')))&&_0x1847fc[_0x1aee28('0x866')]?_0x1847fc:{'default':_0x1847fc})[_0x1aee28('0x53')]);_0x149eb3[_0x1aee28('0x91e')]={'EmployeeProjectAdapter':_0x393a0a};},{'../../../api/AdapterBase':0x27}],0x54:[function(_0x274b67,_0x23fa55,_0x2277f2){var _0x2929c1=_0x322f0f;'use strict';var _0x119e33=_0x274b67(_0x2929c1('0x98f'));window[_0x2929c1('0x776')]=_0x119e33[_0x2929c1('0x776')],window['EmployeeEducationAdapter']=_0x119e33['EmployeeEducationAdapter'],window[_0x2929c1('0x7ce')]=_0x119e33['EmployeeCertificationAdapter'],window['EmployeeLanguageAdapter']=_0x119e33[_0x2929c1('0x44')];},{'./lib':0x55}],0x55:[function(_0x43d6a2,_0x511a02,_0x18736d){var _0x16a9e9=_0x322f0f;'use strict';var _0x29c67c,_0x4b9240=(_0x29c67c=_0x43d6a2(_0x16a9e9('0x6ee')))&&_0x29c67c[_0x16a9e9('0x866')]?_0x29c67c:{'default':_0x29c67c};function _0x450ff0(_0x2b31f3){var _0x32b8d1=_0x16a9e9;return(_0x450ff0=_0x32b8d1('0x67')==typeof Symbol&&'symbol'==typeof Symbol[_0x32b8d1('0x303')]?function(_0x138c9a){return typeof _0x138c9a;}:function(_0x42f4e3){var _0x2768ef=_0x32b8d1;return _0x42f4e3&&'function'==typeof Symbol&&_0x42f4e3[_0x2768ef('0xbe8')]===Symbol&&_0x42f4e3!==Symbol[_0x2768ef('0x3ec')]?_0x2768ef('0xd77'):typeof _0x42f4e3;})(_0x2b31f3);}function _0x4ca14d(_0x77ea5,_0x107141){var _0x410f52=_0x16a9e9;if(!(_0x77ea5 instanceof _0x107141))throw new TypeError(_0x410f52('0xc2c'));}function _0x2c64e6(_0xa44029,_0x5dceb9){var _0x180d74=_0x16a9e9;for(var _0x2670f0=0x0;_0x2670f0<_0x5dceb9[_0x180d74('0x1d1')];_0x2670f0++){var _0xab21ed=_0x5dceb9[_0x2670f0];_0xab21ed[_0x180d74('0x836')]=_0xab21ed[_0x180d74('0x836')]||!0x1,_0xab21ed[_0x180d74('0x249')]=!0x0,_0x180d74('0x9b6')in _0xab21ed&&(_0xab21ed[_0x180d74('0xc28')]=!0x0),Object['defineProperty'](_0xa44029,_0xab21ed[_0x180d74('0xcb6')],_0xab21ed);}}function _0x4ede10(_0x2f2fea,_0x1aef4f,_0xa8d717){var _0x3fc257=_0x16a9e9;return _0x1aef4f&&_0x2c64e6(_0x2f2fea[_0x3fc257('0x3ec')],_0x1aef4f),_0xa8d717&&_0x2c64e6(_0x2f2fea,_0xa8d717),_0x2f2fea;}function _0x3374ed(_0x13ad75){return function(){var _0x386d22=_0x3e44,_0x673cef,_0x31c907=_0x5f2ac8(_0x13ad75);if(_0x25d200()){var _0x952093=_0x5f2ac8(this)[_0x386d22('0xbe8')];_0x673cef=Reflect[_0x386d22('0xa71')](_0x31c907,arguments,_0x952093);}else _0x673cef=_0x31c907[_0x386d22('0x7da')](this,arguments);return _0x5db392(this,_0x673cef);};}function _0x5db392(_0x3770a3,_0x42d234){var _0x228d54=_0x16a9e9;return!_0x42d234||_0x228d54('0x669')!==_0x450ff0(_0x42d234)&&_0x228d54('0x67')!=typeof _0x42d234?function(_0x371d32){if(void 0x0===_0x371d32)throw new ReferenceError('this\x20hasn\x27t\x20been\x20initialised\x20-\x20super()\x20hasn\x27t\x20been\x20called');return _0x371d32;}(_0x3770a3):_0x42d234;}function _0x25d200(){var _0x1440a0=_0x16a9e9;if(_0x1440a0('0x396')==typeof Reflect||!Reflect[_0x1440a0('0xa71')])return!0x1;if(Reflect[_0x1440a0('0xa71')][_0x1440a0('0x886')])return!0x1;if(_0x1440a0('0x67')==typeof Proxy)return!0x0;try{return Date[_0x1440a0('0x3ec')][_0x1440a0('0x8dc')][_0x1440a0('0x928')](Reflect[_0x1440a0('0xa71')](Date,[],function(){})),!0x0;}catch(_0x37f804){return!0x1;}}function _0x5f2ac8(_0x481a45){var _0x37188c=_0x16a9e9;return(_0x5f2ac8=Object[_0x37188c('0x16')]?Object[_0x37188c('0x418')]:function(_0x53e86a){var _0x22c2e8=_0x37188c;return _0x53e86a[_0x22c2e8('0xc15')]||Object[_0x22c2e8('0x418')](_0x53e86a);})(_0x481a45);}function _0x178694(_0x2a4261,_0x4072cf){var _0x567d98=_0x16a9e9;if('function'!=typeof _0x4072cf&&null!==_0x4072cf)throw new TypeError(_0x567d98('0xc9'));_0x2a4261[_0x567d98('0x3ec')]=Object[_0x567d98('0xd9d')](_0x4072cf&&_0x4072cf[_0x567d98('0x3ec')],{'constructor':{'value':_0x2a4261,'writable':!0x0,'configurable':!0x0}}),_0x4072cf&&_0x4ac9e8(_0x2a4261,_0x4072cf);}function _0x4ac9e8(_0x617f44,_0x258e14){var _0x3d1311=_0x16a9e9;return(_0x4ac9e8=Object[_0x3d1311('0x16')]||function(_0x7f9dd2,_0x53109d){return _0x7f9dd2['__proto__']=_0x53109d,_0x7f9dd2;})(_0x617f44,_0x258e14);}var _0x59d6b0=function(_0x270c41){var _0x3bdcde=_0x16a9e9;_0x178694(_0x368b71,_0x270c41);var _0x35d49b=_0x3374ed(_0x368b71);function _0x368b71(){return _0x4ca14d(this,_0x368b71),_0x35d49b['apply'](this,arguments);}return _0x4ede10(_0x368b71,[{'key':_0x3bdcde('0xc58'),'value':function(){var _0x52bc59=_0x3bdcde;return['id',_0x52bc59('0x467'),_0x52bc59('0x2f1')];}},{'key':_0x3bdcde('0x6f7'),'value':function(){var _0x4377fb=_0x3bdcde;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':'Skill'},{'sTitle':_0x4377fb('0x760')}];}},{'key':_0x3bdcde('0x59d'),'value':function(){var _0x23366f=_0x3bdcde;return[['id',{'label':'ID','type':_0x23366f('0xb0f')}],[_0x23366f('0x467'),{'label':'Skill','type':'select2','allow-null':!0x0,'remote-source':[_0x23366f('0x4aa'),'id','name']}],[_0x23366f('0x2f1'),{'label':'Details','type':_0x23366f('0x219'),'validation':''}]];}}]),_0x368b71;}(_0x4b9240[_0x16a9e9('0x53')]),_0x5b2aa4=function(_0xdb57b5){var _0x1a524e=_0x16a9e9;_0x178694(_0x4fad3d,_0xdb57b5);var _0x808c5=_0x3374ed(_0x4fad3d);function _0x4fad3d(){var _0x1361cb=_0x3e44;return _0x4ca14d(this,_0x4fad3d),_0x808c5[_0x1361cb('0x7da')](this,arguments);}return _0x4ede10(_0x4fad3d,[{'key':_0x1a524e('0xc58'),'value':function(){var _0x55c683=_0x1a524e;return['id','education_id','institute',_0x55c683('0xc42'),_0x55c683('0x13a')];}},{'key':_0x1a524e('0x6f7'),'value':function(){var _0x1e7263=_0x1a524e;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':_0x1e7263('0x8b5')},{'sTitle':'Institute'},{'sTitle':'Start\x20Date'},{'sTitle':'Completed\x20On'}];}},{'key':_0x1a524e('0x59d'),'value':function(){var _0x42e17b=_0x1a524e;return[['id',{'label':'ID','type':_0x42e17b('0xb0f')}],[_0x42e17b('0x7ac'),{'label':_0x42e17b('0x8b5'),'type':_0x42e17b('0xdbb'),'allow-null':!0x1,'remote-source':[_0x42e17b('0x550'),'id',_0x42e17b('0x9e')]}],[_0x42e17b('0x613'),{'label':'Institute','type':_0x42e17b('0x1c4'),'validation':''}],[_0x42e17b('0xc42'),{'label':_0x42e17b('0x86'),'type':_0x42e17b('0xd98'),'validation':_0x42e17b('0x3b9')}],[_0x42e17b('0x13a'),{'label':_0x42e17b('0x68b'),'type':_0x42e17b('0xd98'),'validation':_0x42e17b('0x3b9')}]];}}]),_0x4fad3d;}(_0x4b9240[_0x16a9e9('0x53')]),_0x5dfcb8=function(_0x198296){var _0x250799=_0x16a9e9;_0x178694(_0x19fe38,_0x198296);var _0x522496=_0x3374ed(_0x19fe38);function _0x19fe38(){return _0x4ca14d(this,_0x19fe38),_0x522496['apply'](this,arguments);}return _0x4ede10(_0x19fe38,[{'key':_0x250799('0xc58'),'value':function(){var _0x336b88=_0x250799;return['id',_0x336b88('0xd0'),_0x336b88('0x613'),_0x336b88('0xc42'),_0x336b88('0xc42')];}},{'key':_0x250799('0x6f7'),'value':function(){var _0x7f473b=_0x250799;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':_0x7f473b('0x2e8')},{'sTitle':_0x7f473b('0x93f')},{'sTitle':_0x7f473b('0x1ab')},{'sTitle':_0x7f473b('0x352')}];}},{'key':_0x250799('0x59d'),'value':function(){var _0x39620a=_0x250799;return[['id',{'label':'ID','type':_0x39620a('0xb0f')}],[_0x39620a('0xd0'),{'label':'Certification','type':'select2','allow-null':!0x1,'remote-source':[_0x39620a('0x2e8'),'id','name']}],[_0x39620a('0x613'),{'label':_0x39620a('0x93f'),'type':_0x39620a('0x1c4'),'validation':''}],[_0x39620a('0xc42'),{'label':_0x39620a('0x1ab'),'type':_0x39620a('0xd98'),'validation':_0x39620a('0x3b9')}],['date_end',{'label':'Valid\x20Thru','type':_0x39620a('0xd98'),'validation':_0x39620a('0x3b9')}]];}}]),_0x19fe38;}(_0x4b9240[_0x16a9e9('0x53')]),_0x2bd4d0=function(_0x4a802d){var _0x3c6eeb=_0x16a9e9;_0x178694(_0x22888f,_0x4a802d);var _0x790ffb=_0x3374ed(_0x22888f);function _0x22888f(){var _0x2afa0c=_0x3e44;return _0x4ca14d(this,_0x22888f),_0x790ffb[_0x2afa0c('0x7da')](this,arguments);}return _0x4ede10(_0x22888f,[{'key':_0x3c6eeb('0xc58'),'value':function(){var _0x2a2f23=_0x3c6eeb;return['id','language_id',_0x2a2f23('0xd6a'),_0x2a2f23('0x82b'),_0x2a2f23('0x8b3'),_0x2a2f23('0x892')];}},{'key':_0x3c6eeb('0x6f7'),'value':function(){var _0x223ec6=_0x3c6eeb;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':_0x223ec6('0xa4a')},{'sTitle':_0x223ec6('0x9a9')},{'sTitle':_0x223ec6('0x73f')},{'sTitle':'Writing'},{'sTitle':_0x223ec6('0x2c4')}];}},{'key':_0x3c6eeb('0x59d'),'value':function(){var _0x168fa7=_0x3c6eeb,_0x512019=[[_0x168fa7('0x15'),'Elementary\x20Proficiency'],[_0x168fa7('0x286'),_0x168fa7('0x286')],[_0x168fa7('0xacf'),_0x168fa7('0xacf')],[_0x168fa7('0x23'),_0x168fa7('0x23')],[_0x168fa7('0xbf9'),_0x168fa7('0xbf9')]];return[['id',{'label':'ID','type':_0x168fa7('0xb0f')}],['language_id',{'label':'Language','type':_0x168fa7('0xdbb'),'allow-null':!0x1,'remote-source':[_0x168fa7('0xa4a'),'id','description']}],[_0x168fa7('0xd6a'),{'label':_0x168fa7('0x9a9'),'type':'select','source':_0x512019}],[_0x168fa7('0x82b'),{'label':_0x168fa7('0x73f'),'type':_0x168fa7('0x7fc'),'source':_0x512019}],['writing',{'label':'Writing','type':_0x168fa7('0x7fc'),'source':_0x512019}],[_0x168fa7('0x892'),{'label':_0x168fa7('0x2c4'),'type':_0x168fa7('0x7fc'),'source':_0x512019}]];}}]),_0x22888f;}(_0x4b9240[_0x16a9e9('0x53')]);_0x511a02[_0x16a9e9('0x91e')]={'EmployeeSkillAdapter':_0x59d6b0,'EmployeeEducationAdapter':_0x5b2aa4,'EmployeeCertificationAdapter':_0x5dfcb8,'EmployeeLanguageAdapter':_0x2bd4d0};},{'../../../api/AdapterBase':0x27}],0x56:[function(_0x2fffd4,_0x25088b,_0x52c083){var _0x5b4299=_0x322f0f;'use strict';var _0x40c3c8=_0x2fffd4(_0x5b4299('0x98f'));window[_0x5b4299('0x1eb')]=_0x40c3c8[_0x5b4299('0x1eb')];},{'./lib':0x57}],0x57:[function(_0xfacdb4,_0xcc3329,_0x376e33){var _0x3df072=_0x322f0f;'use strict';function _0x2477d9(_0x4542bb){return(_0x2477d9='function'==typeof Symbol&&'symbol'==typeof Symbol['iterator']?function(_0x262e77){return typeof _0x262e77;}:function(_0x4601d7){var _0x12ad07=_0x3e44;return _0x4601d7&&'function'==typeof Symbol&&_0x4601d7[_0x12ad07('0xbe8')]===Symbol&&_0x4601d7!==Symbol[_0x12ad07('0x3ec')]?_0x12ad07('0xd77'):typeof _0x4601d7;})(_0x4542bb);}function _0x3855b6(_0x2888cc,_0x26fdcc){var _0x532512=_0x3e44;if(!(_0x2888cc instanceof _0x26fdcc))throw new TypeError(_0x532512('0xc2c'));}function _0x1b14bb(_0x24f0c1,_0xbeb177){var _0x586f45=_0x3e44;for(var _0x241390=0x0;_0x241390<_0xbeb177[_0x586f45('0x1d1')];_0x241390++){var _0x1dc8ba=_0xbeb177[_0x241390];_0x1dc8ba[_0x586f45('0x836')]=_0x1dc8ba[_0x586f45('0x836')]||!0x1,_0x1dc8ba[_0x586f45('0x249')]=!0x0,_0x586f45('0x9b6')in _0x1dc8ba&&(_0x1dc8ba[_0x586f45('0xc28')]=!0x0),Object['defineProperty'](_0x24f0c1,_0x1dc8ba[_0x586f45('0xcb6')],_0x1dc8ba);}}function _0x2cc028(_0x4a5676,_0x24c8e3){var _0x1141fb=_0x3e44;return!_0x24c8e3||'object'!==_0x2477d9(_0x24c8e3)&&_0x1141fb('0x67')!=typeof _0x24c8e3?function(_0x2586d0){var _0x3d56a6=_0x1141fb;if(void 0x0===_0x2586d0)throw new ReferenceError(_0x3d56a6('0xba4'));return _0x2586d0;}(_0x4a5676):_0x24c8e3;}function _0x5d699b(){var _0x3c54e1=_0x3e44;if(_0x3c54e1('0x396')==typeof Reflect||!Reflect[_0x3c54e1('0xa71')])return!0x1;if(Reflect[_0x3c54e1('0xa71')]['sham'])return!0x1;if(_0x3c54e1('0x67')==typeof Proxy)return!0x0;try{return Date['prototype'][_0x3c54e1('0x8dc')][_0x3c54e1('0x928')](Reflect['construct'](Date,[],function(){})),!0x0;}catch(_0x1b65bd){return!0x1;}}function _0x2fbc31(_0xf3af9){var _0x55ff13=_0x3e44;return(_0x2fbc31=Object[_0x55ff13('0x16')]?Object[_0x55ff13('0x418')]:function(_0x28057e){var _0x416abb=_0x55ff13;return _0x28057e['__proto__']||Object[_0x416abb('0x418')](_0x28057e);})(_0xf3af9);}function _0x22aade(_0x199720,_0xa176b4){return(_0x22aade=Object['setPrototypeOf']||function(_0xa6dd46,_0x2f5ec3){return _0xa6dd46['__proto__']=_0x2f5ec3,_0xa6dd46;})(_0x199720,_0xa176b4);}var _0x4b1f7f=function(_0x4de711){var _0x5bd422=_0x3e44;!function(_0x359271,_0xf311a2){var _0x999d11=_0x3e44;if(_0x999d11('0x67')!=typeof _0xf311a2&&null!==_0xf311a2)throw new TypeError(_0x999d11('0xc9'));_0x359271[_0x999d11('0x3ec')]=Object['create'](_0xf311a2&&_0xf311a2[_0x999d11('0x3ec')],{'constructor':{'value':_0x359271,'writable':!0x0,'configurable':!0x0}}),_0xf311a2&&_0x22aade(_0x359271,_0xf311a2);}(_0x2e1cd8,_0x4de711);var _0x4489e2,_0x147cc4,_0x4fb175,_0x37f04e,_0x498bb9=(_0x4489e2=_0x2e1cd8,function(){var _0x3ef2a6=_0x3e44,_0x99ff79,_0x1ed382=_0x2fbc31(_0x4489e2);if(_0x5d699b()){var _0x45cca4=_0x2fbc31(this)[_0x3ef2a6('0xbe8')];_0x99ff79=Reflect[_0x3ef2a6('0xa71')](_0x1ed382,arguments,_0x45cca4);}else _0x99ff79=_0x1ed382[_0x3ef2a6('0x7da')](this,arguments);return _0x2cc028(this,_0x99ff79);});function _0x2e1cd8(){return _0x3855b6(this,_0x2e1cd8),_0x498bb9['apply'](this,arguments);}return _0x147cc4=_0x2e1cd8,(_0x4fb175=[{'key':_0x5bd422('0x5a4'),'value':function(_0x1c3968){var _0x547791=_0x5bd422,_0x1a5d2e=this;this['processFormFieldsWithObject'](_0x1c3968),this['remoteFieldsExists']?this[_0x547791('0x62d')](function(){var _0x144c17=_0x547791;_0x1a5d2e[_0x144c17('0x71f')](_0x1c3968);}):(this['initFieldMasterData'](),_0x1a5d2e['renderFormNew'](_0x1c3968)),this['currentReport']=_0x1c3968;}}])&&_0x1b14bb(_0x147cc4['prototype'],_0x4fb175),_0x37f04e&&_0x1b14bb(_0x147cc4,_0x37f04e),_0x2e1cd8;}(_0xfacdb4(_0x3df072('0xb55'))[_0x3df072('0x18b')]);_0xcc3329['exports']={'UserReportAdapter':_0x4b1f7f};},{'../../../admin/src/reports/lib':0x24}],0x58:[function(_0x4f280b,_0x5419c9,_0x378ff2){var _0xe3ec1d=_0x322f0f;'use strict';var _0x562658=_0x4f280b(_0xe3ec1d('0x98f'));window[_0xe3ec1d('0x3af')]=_0x562658[_0xe3ec1d('0x3af')];},{'./lib':0x59}],0x59:[function(_0x521428,_0x5aa030,_0x2d2589){var _0x4a9551=_0x322f0f;'use strict';var _0x4cc08f;function _0x5538b0(_0x298763){var _0x305ad8=_0x3e44;return(_0x5538b0=_0x305ad8('0x67')==typeof Symbol&&_0x305ad8('0xd77')==typeof Symbol[_0x305ad8('0x303')]?function(_0x43b70f){return typeof _0x43b70f;}:function(_0x56ff26){var _0x5f0e86=_0x305ad8;return _0x56ff26&&_0x5f0e86('0x67')==typeof Symbol&&_0x56ff26['constructor']===Symbol&&_0x56ff26!==Symbol[_0x5f0e86('0x3ec')]?_0x5f0e86('0xd77'):typeof _0x56ff26;})(_0x298763);}function _0x4bc4bb(_0x32b9e2,_0x3079d9){if(!(_0x32b9e2 instanceof _0x3079d9))throw new TypeError('Cannot\x20call\x20a\x20class\x20as\x20a\x20function');}function _0x283784(_0x3a2008,_0x1802be){var _0x1371db=_0x3e44;for(var _0x526f83=0x0;_0x526f83<_0x1802be[_0x1371db('0x1d1')];_0x526f83++){var _0x296f15=_0x1802be[_0x526f83];_0x296f15['enumerable']=_0x296f15[_0x1371db('0x836')]||!0x1,_0x296f15['configurable']=!0x0,'value'in _0x296f15&&(_0x296f15[_0x1371db('0xc28')]=!0x0),Object[_0x1371db('0x2cd')](_0x3a2008,_0x296f15[_0x1371db('0xcb6')],_0x296f15);}}function _0x2398c8(_0x4567fc,_0x3ee5f5){var _0x3c0601=_0x3e44;return!_0x3ee5f5||_0x3c0601('0x669')!==_0x5538b0(_0x3ee5f5)&&_0x3c0601('0x67')!=typeof _0x3ee5f5?function(_0x1ac8e8){if(void 0x0===_0x1ac8e8)throw new ReferenceError('this\x20hasn\x27t\x20been\x20initialised\x20-\x20super()\x20hasn\x27t\x20been\x20called');return _0x1ac8e8;}(_0x4567fc):_0x3ee5f5;}function _0x19981b(){var _0x172cf=_0x3e44;if(_0x172cf('0x396')==typeof Reflect||!Reflect[_0x172cf('0xa71')])return!0x1;if(Reflect['construct'][_0x172cf('0x886')])return!0x1;if(_0x172cf('0x67')==typeof Proxy)return!0x0;try{return Date[_0x172cf('0x3ec')][_0x172cf('0x8dc')][_0x172cf('0x928')](Reflect[_0x172cf('0xa71')](Date,[],function(){})),!0x0;}catch(_0x217756){return!0x1;}}function _0x2e7411(_0x49b817){var _0x1ee982=_0x3e44;return(_0x2e7411=Object[_0x1ee982('0x16')]?Object[_0x1ee982('0x418')]:function(_0x174ecc){var _0x19aec2=_0x1ee982;return _0x174ecc[_0x19aec2('0xc15')]||Object[_0x19aec2('0x418')](_0x174ecc);})(_0x49b817);}function _0x1ce44a(_0x26fa7d,_0x1b7ac0){var _0x5e2d8a=_0x3e44;return(_0x1ce44a=Object[_0x5e2d8a('0x16')]||function(_0x523704,_0x403cb9){return _0x523704['__proto__']=_0x403cb9,_0x523704;})(_0x26fa7d,_0x1b7ac0);}var _0x4ffd77=function(_0x2253e2){var _0x412eb3=_0x3e44;!function(_0x316d11,_0x4c1030){var _0x1cf11b=_0x3e44;if('function'!=typeof _0x4c1030&&null!==_0x4c1030)throw new TypeError(_0x1cf11b('0xc9'));_0x316d11[_0x1cf11b('0x3ec')]=Object['create'](_0x4c1030&&_0x4c1030[_0x1cf11b('0x3ec')],{'constructor':{'value':_0x316d11,'writable':!0x0,'configurable':!0x0}}),_0x4c1030&&_0x1ce44a(_0x316d11,_0x4c1030);}(_0x11d04c,_0x2253e2);var _0x2b7db5,_0x184288,_0x283899,_0x14ed21,_0x2e060b=(_0x2b7db5=_0x11d04c,function(){var _0xd1623=_0x3e44,_0xf52d60,_0x4e28de=_0x2e7411(_0x2b7db5);if(_0x19981b()){var _0x556ffb=_0x2e7411(this)[_0xd1623('0xbe8')];_0xf52d60=Reflect[_0xd1623('0xa71')](_0x4e28de,arguments,_0x556ffb);}else _0xf52d60=_0x4e28de[_0xd1623('0x7da')](this,arguments);return _0x2398c8(this,_0xf52d60);});function _0x11d04c(){var _0x862835=_0x3e44;return _0x4bc4bb(this,_0x11d04c),_0x2e060b[_0x862835('0x7da')](this,arguments);}return _0x184288=_0x11d04c,(_0x283899=[{'key':_0x412eb3('0xc58'),'value':function(){var _0x186106=_0x412eb3;return['id',_0x186106('0x190'),_0x186106('0x993'),_0x186106('0x2f1')];}},{'key':_0x412eb3('0x6f7'),'value':function(){var _0x491bfc=_0x412eb3;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':_0x491bfc('0x685')},{'sTitle':_0x491bfc('0x5ca')},{'sTitle':_0x491bfc('0x760')}];}},{'key':'getFormFields','value':function(){var _0x2136ea=_0x412eb3;return[['id',{'label':'ID','type':'hidden'}],['component',{'label':_0x2136ea('0x685'),'type':_0x2136ea('0xdbb'),'remote-source':[_0x2136ea('0x9e0'),'id',_0x2136ea('0x9e')]}],[_0x2136ea('0x993'),{'label':'Amount','type':'text','validation':'float'}],[_0x2136ea('0x2f1'),{'label':_0x2136ea('0x760'),'type':_0x2136ea('0x219'),'validation':'none'}]];}}])&&_0x283784(_0x184288['prototype'],_0x283899),_0x14ed21&&_0x283784(_0x184288,_0x14ed21),_0x11d04c;}(((_0x4cc08f=_0x521428('../../../api/AdapterBase'))&&_0x4cc08f[_0x4a9551('0x866')]?_0x4cc08f:{'default':_0x4cc08f})[_0x4a9551('0x53')]);_0x5aa030[_0x4a9551('0x91e')]={'EmployeeSalaryAdapter':_0x4ffd77};},{'../../../api/AdapterBase':0x27}],0x5a:[function(_0x12e691,_0x263eec,_0x262d26){var _0x27d4e5=_0x322f0f;'use strict';var _0x180a5f=_0x12e691(_0x27d4e5('0x98f'));window[_0x27d4e5('0xbd2')]=_0x180a5f[_0x27d4e5('0xbd2')],window[_0x27d4e5('0xa6c')]=_0x180a5f[_0x27d4e5('0xa6c')];},{'./lib':0x5b}],0x5b:[function(_0xc996ff,_0x24ca3b,_0x217223){var _0xb3fb59=_0x322f0f;'use strict';var _0x593f01=_0x31747d(_0xc996ff('../../../api/AdapterBase')),_0x223278=_0x31747d(_0xc996ff(_0xb3fb59('0x7d')));function _0x31747d(_0x5c11a5){var _0x51c120=_0xb3fb59;return _0x5c11a5&&_0x5c11a5[_0x51c120('0x866')]?_0x5c11a5:{'default':_0x5c11a5};}function _0x123bc8(_0x16c6af){var _0x2ae907=_0xb3fb59;return(_0x123bc8=_0x2ae907('0x67')==typeof Symbol&&_0x2ae907('0xd77')==typeof Symbol[_0x2ae907('0x303')]?function(_0x3328d3){return typeof _0x3328d3;}:function(_0x582c28){var _0x27c1ff=_0x2ae907;return _0x582c28&&'function'==typeof Symbol&&_0x582c28[_0x27c1ff('0xbe8')]===Symbol&&_0x582c28!==Symbol[_0x27c1ff('0x3ec')]?_0x27c1ff('0xd77'):typeof _0x582c28;})(_0x16c6af);}function _0x53472f(_0x42d944,_0x28d478){var _0x488a98=_0xb3fb59;if(!(_0x42d944 instanceof _0x28d478))throw new TypeError(_0x488a98('0xc2c'));}function _0x3664e5(_0x533364,_0x351fcd){var _0x2c280f=_0xb3fb59;for(var _0x36f639=0x0;_0x36f639<_0x351fcd['length'];_0x36f639++){var _0x479d9e=_0x351fcd[_0x36f639];_0x479d9e[_0x2c280f('0x836')]=_0x479d9e['enumerable']||!0x1,_0x479d9e['configurable']=!0x0,_0x2c280f('0x9b6')in _0x479d9e&&(_0x479d9e[_0x2c280f('0xc28')]=!0x0),Object[_0x2c280f('0x2cd')](_0x533364,_0x479d9e['key'],_0x479d9e);}}function _0x20a9a5(_0x15d2e0,_0x3230c1,_0x2f009d){var _0xa0f0f9=_0xb3fb59;return _0x3230c1&&_0x3664e5(_0x15d2e0[_0xa0f0f9('0x3ec')],_0x3230c1),_0x2f009d&&_0x3664e5(_0x15d2e0,_0x2f009d),_0x15d2e0;}function _0x25473c(_0x35f236){return function(){var _0x1b88e6=_0x3e44,_0x30571e,_0x14a26f=_0x5da0c3(_0x35f236);if(_0x546b9()){var _0x182da7=_0x5da0c3(this)[_0x1b88e6('0xbe8')];_0x30571e=Reflect[_0x1b88e6('0xa71')](_0x14a26f,arguments,_0x182da7);}else _0x30571e=_0x14a26f[_0x1b88e6('0x7da')](this,arguments);return _0x4a6d50(this,_0x30571e);};}function _0x4a6d50(_0xb9af68,_0x56850d){var _0x138521=_0xb3fb59;return!_0x56850d||_0x138521('0x669')!==_0x123bc8(_0x56850d)&&_0x138521('0x67')!=typeof _0x56850d?function(_0x1165ec){if(void 0x0===_0x1165ec)throw new ReferenceError('this\x20hasn\x27t\x20been\x20initialised\x20-\x20super()\x20hasn\x27t\x20been\x20called');return _0x1165ec;}(_0xb9af68):_0x56850d;}function _0x546b9(){var _0x533196=_0xb3fb59;if(_0x533196('0x396')==typeof Reflect||!Reflect['construct'])return!0x1;if(Reflect[_0x533196('0xa71')][_0x533196('0x886')])return!0x1;if(_0x533196('0x67')==typeof Proxy)return!0x0;try{return Date[_0x533196('0x3ec')][_0x533196('0x8dc')]['call'](Reflect[_0x533196('0xa71')](Date,[],function(){})),!0x0;}catch(_0x588fc2){return!0x1;}}function _0x5da0c3(_0x462f74){var _0x209ec4=_0xb3fb59;return(_0x5da0c3=Object[_0x209ec4('0x16')]?Object['getPrototypeOf']:function(_0x658334){var _0x3e7e5f=_0x209ec4;return _0x658334[_0x3e7e5f('0xc15')]||Object['getPrototypeOf'](_0x658334);})(_0x462f74);}function _0x5db9c2(_0x1e8f64,_0x1399e4){var _0x24ab8b=_0xb3fb59;if(_0x24ab8b('0x67')!=typeof _0x1399e4&&null!==_0x1399e4)throw new TypeError(_0x24ab8b('0xc9'));_0x1e8f64[_0x24ab8b('0x3ec')]=Object[_0x24ab8b('0xd9d')](_0x1399e4&&_0x1399e4[_0x24ab8b('0x3ec')],{'constructor':{'value':_0x1e8f64,'writable':!0x0,'configurable':!0x0}}),_0x1399e4&&_0x2f12b6(_0x1e8f64,_0x1399e4);}function _0x2f12b6(_0x648799,_0x379e1f){var _0x2275b5=_0xb3fb59;return(_0x2f12b6=Object[_0x2275b5('0x16')]||function(_0x4e32eb,_0x3f9930){var _0x26c1b1=_0x2275b5;return _0x4e32eb[_0x26c1b1('0xc15')]=_0x3f9930,_0x4e32eb;})(_0x648799,_0x379e1f);}var _0x2815fc=function(_0x5b639f){var _0x1edf9a=_0xb3fb59;_0x5db9c2(_0x39702e,_0x5b639f);var _0x432657=_0x25473c(_0x39702e);function _0x39702e(){var _0x1b2f81=_0x3e44;return _0x53472f(this,_0x39702e),_0x432657[_0x1b2f81('0x7da')](this,arguments);}return _0x20a9a5(_0x39702e,[{'key':_0x1edf9a('0xc58'),'value':function(){var _0x351d36=_0x1edf9a;return['id','image',_0x351d36('0x1ad'),_0x351d36('0xd43'),_0x351d36('0x9b2'),_0x351d36('0xaae'),'work_phone',_0x351d36('0x606'),'joined_date'];}},{'key':_0x1edf9a('0x6f7'),'value':function(){var _0x3e0984=_0x1edf9a;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':''},{'sTitle':'First\x20Name'},{'sTitle':_0x3e0984('0xa61')},{'sTitle':_0x3e0984('0x2fb')},{'sTitle':'Department'},{'sTitle':'Work\x20Phone'},{'sTitle':_0x3e0984('0x765')},{'sTitle':_0x3e0984('0x8bf')}];}},{'key':_0x1edf9a('0x59d'),'value':function(){var _0x3d2b4b=_0x1edf9a;return[['id',{'label':'ID','type':_0x3d2b4b('0xb0f'),'validation':''}],['first_name',{'label':'First\x20Name','type':_0x3d2b4b('0x1c4'),'validation':''}],[_0x3d2b4b('0xd43'),{'label':'Last\x20Name','type':_0x3d2b4b('0x1c4'),'validation':''}],['job_title',{'label':_0x3d2b4b('0x2fb'),'type':_0x3d2b4b('0xdbb'),'remote-source':[_0x3d2b4b('0x112'),'id',_0x3d2b4b('0x9e')]}],[_0x3d2b4b('0xaae'),{'label':_0x3d2b4b('0x5ff'),'type':_0x3d2b4b('0xdbb'),'remote-source':[_0x3d2b4b('0x6f1'),'id',_0x3d2b4b('0xa3c')]}],[_0x3d2b4b('0x563'),{'label':'Work\x20Phone','type':'text','validation':'none'}],[_0x3d2b4b('0x606'),{'label':_0x3d2b4b('0x765'),'type':'placeholder','validation':_0x3d2b4b('0x92d')}],[_0x3d2b4b('0x94b'),{'label':_0x3d2b4b('0x8bf'),'type':_0x3d2b4b('0xd98'),'validation':''}]];}},{'key':_0x1edf9a('0x6ea'),'value':function(){return!0x1;}},{'key':_0x1edf9a('0x6b5'),'value':function(){var _0x2bf2a3=this;return{'aoColumnDefs':[{'fnRender':function(_0x550841,_0x4044e0){var _0x599916=_0x3e44;try{return _0x2bf2a3[_0x599916('0x621')](_0x550841,_0x4044e0,0x1);}catch(_0x636943){return _0x4044e0;}},'aTargets':[0x1]},{'fnRender':function(_0x172ccc,_0x2d9e6a){try{return _0x2bf2a3['preProcessRemoteTableData'](_0x172ccc,_0x2d9e6a,0x8);}catch(_0x45cd3f){return _0x2d9e6a;}},'aTargets':[0x8]}]};}},{'key':_0x1edf9a('0x621'),'value':function(_0x2c793c,_0x28ce75,_0x2c80ea){var _0x557beb=_0x1edf9a;if(0x8===_0x2c80ea)return _0x557beb('0x4bd')===_0x28ce75||''===_0x28ce75||null==_0x28ce75?'':Date[_0x557beb('0xb50')](_0x28ce75)['toString'](_0x557beb('0xbdc'));if(0x1===_0x2c80ea)return''[_0x557beb('0x95e')](_0x557beb('0xb83'),_0x28ce75);}}]),_0x39702e;}(_0x593f01[_0xb3fb59('0x53')]),_0x5b8c98=function(_0x789cf3){var _0x1dc7a7=_0xb3fb59;_0x5db9c2(_0x4e406c,_0x789cf3);var _0x1914c5=_0x25473c(_0x4e406c);function _0x4e406c(){return _0x53472f(this,_0x4e406c),_0x1914c5['apply'](this,arguments);}return _0x20a9a5(_0x4e406c,[{'key':'getDataMapping','value':function(){var _0x37c161=_0x3e44;return['id',_0x37c161('0x438'),_0x37c161('0x1ad'),'last_name',_0x37c161('0x9b2'),_0x37c161('0xaae'),_0x37c161('0x563'),_0x37c161('0x606'),_0x37c161('0x94b')];}},{'key':_0x1dc7a7('0x6f7'),'value':function(){var _0x45f317=_0x1dc7a7;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':''},{'sTitle':_0x45f317('0xa6d')},{'sTitle':_0x45f317('0xa61')},{'sTitle':_0x45f317('0x2fb')},{'sTitle':'Department'},{'sTitle':_0x45f317('0x6c3')},{'sTitle':_0x45f317('0x765')},{'sTitle':_0x45f317('0x8bf')}];}},{'key':'getFormFields','value':function(){var _0x1f62f6=_0x1dc7a7;return[['id',{'label':'ID','type':_0x1f62f6('0xb0f'),'validation':''}],['first_name',{'label':'First\x20Name','type':_0x1f62f6('0x1c4'),'validation':''}],[_0x1f62f6('0xd43'),{'label':_0x1f62f6('0xa61'),'type':'text','validation':''}],[_0x1f62f6('0x9b2'),{'label':_0x1f62f6('0x2fb'),'type':_0x1f62f6('0xdbb'),'remote-source':['JobTitle','id',_0x1f62f6('0x9e')]}],[_0x1f62f6('0xaae'),{'label':_0x1f62f6('0x5ff'),'type':'select2','remote-source':[_0x1f62f6('0x6f1'),'id',_0x1f62f6('0xa3c')]}],[_0x1f62f6('0x563'),{'label':_0x1f62f6('0x6c3'),'type':_0x1f62f6('0x1c4'),'validation':_0x1f62f6('0x3b9')}],[_0x1f62f6('0x606'),{'label':'Work\x20Email','type':_0x1f62f6('0xad7'),'validation':_0x1f62f6('0x92d')}],[_0x1f62f6('0x94b'),{'label':_0x1f62f6('0x8bf'),'type':_0x1f62f6('0xd98'),'validation':''}]];}},{'key':'addDomEvents','value':function(_0x239abf){}},{'key':_0x1dc7a7('0x5ee'),'value':function(){var _0x5e9af0=_0x1dc7a7;return _0x5e9af0('0x64a');}},{'key':'preProcessTableData','value':function(_0x1e3f94){var _0x58d831=_0x1dc7a7,_0x5ddbe8=_0x1e3f94;return _0x5ddbe8[_0x58d831('0x8da')]=this[_0x58d831('0x8b6')](_0x5ddbe8[_0x58d831('0x1ad')]),_0x5ddbe8;}},{'key':_0x1dc7a7('0xc6'),'value':function(){var _0x6b4ca0=_0x1dc7a7;return[[_0x6b4ca0('0x9b2'),{'label':'Job\x20Title','type':_0x6b4ca0('0xdbb'),'allow-null':!0x0,'null-label':_0x6b4ca0('0xab0'),'remote-source':[_0x6b4ca0('0x112'),'id',_0x6b4ca0('0x9e')]}],[_0x6b4ca0('0xaae'),{'label':_0x6b4ca0('0x5ff'),'type':_0x6b4ca0('0xdbb'),'allow-null':!0x0,'null-label':'All\x20Departments','remote-source':[_0x6b4ca0('0x6f1'),'id',_0x6b4ca0('0xa3c')]}]];}}]),_0x4e406c;}(_0x223278[_0xb3fb59('0x53')]);_0x24ca3b[_0xb3fb59('0x91e')]={'StaffDirectoryAdapter':_0x2815fc,'StaffDirectoryObjectAdapter':_0x5b8c98};},{'../../../api/AdapterBase':0x27,'../../../api/ObjectAdapter':0x31}],0x5c:[function(_0x41fac1,_0x58dbda,_0xafcf05){var _0x25898b=_0x322f0f;'use strict';var _0x33bda0=_0x41fac1(_0x25898b('0x98f'));window[_0x25898b('0xc05')]=_0x33bda0[_0x25898b('0xc05')],window[_0x25898b('0x5d2')]=_0x33bda0[_0x25898b('0x5d2')],window['EmployeeTimeEntryAdapter']=_0x33bda0[_0x25898b('0x7ea')],window[_0x25898b('0x7b1')]=_0x33bda0[_0x25898b('0x7b1')];},{'./lib':0x5d}],0x5d:[function(_0x1c63a7,_0x553abb,_0x2e648e){var _0x3ba1a5=_0x322f0f;'use strict';var _0x1cf309=_0x1fd3fc(_0x1c63a7(_0x3ba1a5('0x6ee'))),_0x256055=_0x1fd3fc(_0x1c63a7(_0x3ba1a5('0x786'))),_0x11a240=_0x1fd3fc(_0x1c63a7(_0x3ba1a5('0xf6')));function _0x1fd3fc(_0x249f78){var _0x2d923d=_0x3ba1a5;return _0x249f78&&_0x249f78[_0x2d923d('0x866')]?_0x249f78:{'default':_0x249f78};}function _0x129580(_0x436383){return(_0x129580='function'==typeof Symbol&&'symbol'==typeof Symbol['iterator']?function(_0x4665ee){return typeof _0x4665ee;}:function(_0x2b4232){var _0x554052=_0x3e44;return _0x2b4232&&_0x554052('0x67')==typeof Symbol&&_0x2b4232[_0x554052('0xbe8')]===Symbol&&_0x2b4232!==Symbol[_0x554052('0x3ec')]?_0x554052('0xd77'):typeof _0x2b4232;})(_0x436383);}function _0x28c974(_0x51aac2,_0xab97f4){var _0x1f96e8=_0x3ba1a5;if(!(_0x51aac2 instanceof _0xab97f4))throw new TypeError(_0x1f96e8('0xc2c'));}function _0x8fc8f1(_0x3eb770,_0x420df4){var _0xcafebc=_0x3ba1a5;for(var _0x58e4c3=0x0;_0x58e4c3<_0x420df4[_0xcafebc('0x1d1')];_0x58e4c3++){var _0x5eb008=_0x420df4[_0x58e4c3];_0x5eb008[_0xcafebc('0x836')]=_0x5eb008[_0xcafebc('0x836')]||!0x1,_0x5eb008['configurable']=!0x0,_0xcafebc('0x9b6')in _0x5eb008&&(_0x5eb008['writable']=!0x0),Object[_0xcafebc('0x2cd')](_0x3eb770,_0x5eb008[_0xcafebc('0xcb6')],_0x5eb008);}}function _0x51f067(_0xe549b1,_0x1857a4,_0x6e46c){var _0x138df4=_0x3ba1a5;return _0x1857a4&&_0x8fc8f1(_0xe549b1[_0x138df4('0x3ec')],_0x1857a4),_0x6e46c&&_0x8fc8f1(_0xe549b1,_0x6e46c),_0xe549b1;}function _0x5442a6(_0x1dbcca){return function(){var _0x2b7fd2=_0x3e44,_0x3d828f,_0x3d3b4f=_0xa5fbd8(_0x1dbcca);if(_0x7e9123()){var _0x53d10b=_0xa5fbd8(this)[_0x2b7fd2('0xbe8')];_0x3d828f=Reflect[_0x2b7fd2('0xa71')](_0x3d3b4f,arguments,_0x53d10b);}else _0x3d828f=_0x3d3b4f[_0x2b7fd2('0x7da')](this,arguments);return _0x42f13d(this,_0x3d828f);};}function _0x42f13d(_0x259885,_0xf081ff){var _0x40076a=_0x3ba1a5;return!_0xf081ff||_0x40076a('0x669')!==_0x129580(_0xf081ff)&&_0x40076a('0x67')!=typeof _0xf081ff?function(_0x33cce2){var _0x454d80=_0x40076a;if(void 0x0===_0x33cce2)throw new ReferenceError(_0x454d80('0xba4'));return _0x33cce2;}(_0x259885):_0xf081ff;}function _0x7e9123(){var _0x2a8094=_0x3ba1a5;if(_0x2a8094('0x396')==typeof Reflect||!Reflect[_0x2a8094('0xa71')])return!0x1;if(Reflect[_0x2a8094('0xa71')][_0x2a8094('0x886')])return!0x1;if(_0x2a8094('0x67')==typeof Proxy)return!0x0;try{return Date['prototype'][_0x2a8094('0x8dc')][_0x2a8094('0x928')](Reflect[_0x2a8094('0xa71')](Date,[],function(){})),!0x0;}catch(_0x5468e){return!0x1;}}function _0xa5fbd8(_0x572d9e){var _0x102e83=_0x3ba1a5;return(_0xa5fbd8=Object['setPrototypeOf']?Object[_0x102e83('0x418')]:function(_0xe79f92){var _0x173a72=_0x102e83;return _0xe79f92[_0x173a72('0xc15')]||Object['getPrototypeOf'](_0xe79f92);})(_0x572d9e);}function _0x1bf0ff(_0x55ae2d,_0x24021a){var _0x5a7164=_0x3ba1a5;if(_0x5a7164('0x67')!=typeof _0x24021a&&null!==_0x24021a)throw new TypeError(_0x5a7164('0xc9'));_0x55ae2d[_0x5a7164('0x3ec')]=Object[_0x5a7164('0xd9d')](_0x24021a&&_0x24021a['prototype'],{'constructor':{'value':_0x55ae2d,'writable':!0x0,'configurable':!0x0}}),_0x24021a&&_0x33943a(_0x55ae2d,_0x24021a);}function _0x33943a(_0x3a7ce8,_0x4a3a0a){var _0x2dbb62=_0x3ba1a5;return(_0x33943a=Object[_0x2dbb62('0x16')]||function(_0x3e4854,_0x15cfaa){var _0x34eb97=_0x2dbb62;return _0x3e4854[_0x34eb97('0xc15')]=_0x15cfaa,_0x3e4854;})(_0x3a7ce8,_0x4a3a0a);}var _0x59e849=_0x256055['default'][_0x3ba1a5('0x75a')](),_0x36c211=function(_0x3f1977){var _0x4a2b0=_0x3ba1a5;_0x1bf0ff(_0x4903e4,_0x3f1977);var _0x3f2847=_0x5442a6(_0x4903e4);function _0x4903e4(_0x5b975f,_0x1813a7,_0x3c6f2c,_0x23dc2b){var _0x89656a=_0x3e44,_0x2b92a4;return _0x28c974(this,_0x4903e4),(_0x2b92a4=_0x3f2847[_0x89656a('0x928')](this,_0x5b975f,_0x1813a7,_0x3c6f2c,_0x23dc2b))[_0x89656a('0x586')]=null,_0x2b92a4[_0x89656a('0x3b2')]=null,_0x2b92a4[_0x89656a('0xd35')]=!0x1,_0x2b92a4;}return _0x51f067(_0x4903e4,[{'key':_0x4a2b0('0xc58'),'value':function(){var _0x10f1a7=_0x4a2b0;return['id',_0x10f1a7('0xc42'),'date_end',_0x10f1a7('0xb73'),_0x10f1a7('0x90d')];}},{'key':_0x4a2b0('0x6f7'),'value':function(){var _0x3a8acf=_0x4a2b0;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':'Start\x20Date'},{'sTitle':_0x3a8acf('0x9f3')},{'sTitle':'Total\x20Time'},{'sTitle':_0x3a8acf('0xad1')}];}},{'key':'getFormFields','value':function(){var _0x3a3d07=_0x4a2b0;return[['id',{'label':'ID','type':_0x3a3d07('0xb0f')}],['date_start',{'label':'TimeSheet\x20Start\x20Date','type':_0x3a3d07('0xd98'),'validation':''}],[_0x3a3d07('0x13a'),{'label':'TimeSheet\x20End\x20Date','type':_0x3a3d07('0xd98'),'validation':''}],[_0x3a3d07('0x2f1'),{'label':_0x3a3d07('0x417'),'type':_0x3a3d07('0x219'),'validation':_0x3a3d07('0x3b9')}]];}},{'key':_0x4a2b0('0xacc'),'value':function(_0x44c3f9){var _0x2809e5=_0x4a2b0,_0x4d01bb=_0x44c3f9;return _0x4d01bb[0x1]=Date[_0x2809e5('0xb50')](_0x4d01bb[0x1])[_0x2809e5('0x8dc')](_0x2809e5('0x1f3')),_0x4d01bb[0x2]=Date[_0x2809e5('0xb50')](_0x4d01bb[0x2])[_0x2809e5('0x8dc')]('MMM\x20d,\x20yyyy\x20(dddd)'),_0x4d01bb;}},{'key':'setNeedStartEndTime','value':function(_0x215bbf){var _0x125118=_0x4a2b0;this[_0x125118('0xd35')]=_0x215bbf;}},{'key':'renderForm','value':function(_0x2e3393){var _0x3c5c73=_0x4a2b0,_0x2ccc16=this[_0x3c5c73('0x2a8')][_0x3c5c73('0xb1d')];$('#EmployeeTimesheetBlock')[_0x3c5c73('0x8b7')](),$('#'[_0x3c5c73('0x49e')](this[_0x3c5c73('0x6d8')](),_0x3c5c73('0xad2')))['html'](_0x2ccc16),$('#'[_0x3c5c73('0x49e')](this[_0x3c5c73('0x6d8')](),_0x3c5c73('0xad2')))[_0x3c5c73('0x388')](),$('#'['concat'](this[_0x3c5c73('0x6d8')]()))[_0x3c5c73('0x79b')](),$('.timesheet_start')['html'](Date[_0x3c5c73('0xb50')](_0x2e3393[_0x3c5c73('0xc42')])['toString'](_0x3c5c73('0x1f3'))),$(_0x3c5c73('0xc36'))[_0x3c5c73('0x826')](Date['parse'](_0x2e3393['date_end'])[_0x3c5c73('0x8dc')](_0x3c5c73('0x1f3'))),this[_0x3c5c73('0x3b2')]=_0x2e3393,this[_0x3c5c73('0x2c')]();var _0x256454=Date[_0x3c5c73('0xb50')](_0x2e3393['date_start']);$(_0x3c5c73('0xc4e'))[_0x3c5c73('0xa21')]({'header':{'left':!0x1,'center':!0x1,'right':!0x1},'year':_0x256454['toString']('yyyy'),'month':_0x256454[_0x3c5c73('0x8dc')]('M'),'date':_0x256454[_0x3c5c73('0x8dc')]('d'),'defaultView':'basicWeek','height':0xc8,'editable':!0x1,'events':modJs[_0x3c5c73('0x470')](this[_0x3c5c73('0x3b2')][_0x3c5c73('0x1a0')]),'loading':function(_0x491035){var _0x3585f1=_0x3c5c73;_0x491035?$(_0x3585f1('0x8ca'))['show']():$('#loadingBlock')[_0x3585f1('0x79b')]();},'dayClick':function(_0x5eb28c,_0x2819b8,_0x18502e,_0xc70e11){var _0x42c843=_0x3c5c73;modJs['renderFormByDate'](_0x5eb28c[_0x42c843('0x10a')]());},'eventClick':function(_0x202718,_0x45afb1,_0x33bbb9){var _0x132061=_0x3c5c73;modJs[_0x132061('0x461')](_0x202718['id']);},'eventRender':function(_0x3e7522,_0x205232){var _0x4aa495=_0x3c5c73;_0x205232['find']('.fc-time')[_0x4aa495('0x8b7')]();}}),$('#EmployeeTimesheetBlock')[_0x3c5c73('0xa21')](_0x3c5c73('0x672'),_0x256454),$(_0x3c5c73('0xdd'))[_0x3c5c73('0x79b')]();}},{'key':_0x4a2b0('0x4c5'),'value':function(_0x26d2aa,_0x2e0a61,_0x4ff1b4,_0x2661ad){var _0x3b82e3=_0x4a2b0;$('#Qtsheet')[_0x3b82e3('0xc8f')](_0x3b82e3('0xda1'),modJs[_0x3b82e3('0x894')]),modJs=modJsList[_0x3b82e3('0xc84')],modJs[_0x3b82e3('0x1ef')](_0x26d2aa),$(_0x3b82e3('0xce8'))[_0x3b82e3('0x826')](_0x4ff1b4),$('.timesheet_end')[_0x3b82e3('0x826')](_0x2661ad),$(_0x3b82e3('0x407'))[_0x3b82e3('0xdb8')]('.active')['find'](_0x3b82e3('0x45f'))[_0x3b82e3('0x79b')](),$(_0x3b82e3('0x161'))[_0x3b82e3('0x388')](),$(_0x3b82e3('0x769'))[_0x3b82e3('0x388')](),$(_0x3b82e3('0x64c'))[_0x3b82e3('0x388')](),_0x3b82e3('0xc01')===_0x2e0a61||_0x3b82e3('0x756')===_0x2e0a61?($(_0x3b82e3('0x8f9'))['hide'](),$(_0x3b82e3('0xbfb'))[_0x3b82e3('0x79b')]()):($(_0x3b82e3('0x8f9'))[_0x3b82e3('0x388')](),$(_0x3b82e3('0xbfb'))[_0x3b82e3('0x388')]()),modJs[_0x3b82e3('0x715')]([]);}},{'key':_0x4a2b0('0x470'),'value':function(_0x531c7d){var _0x9a2342=_0x4a2b0;return''[_0x9a2342('0x49e')](this['moduleRelativeURL'],'?a=ca&sa=getEmployeeTimeEntries&t=')[_0x9a2342('0x49e')](this[_0x9a2342('0x5aa')],_0x9a2342('0x83f'))['concat'](_0x531c7d);}},{'key':_0x4a2b0('0x31d'),'value':function(_0x2f8ab){var _0x41d53d=_0x4a2b0,_0x1eb0da=_0x2f8ab;if(_0x1eb0da[_0x41d53d('0x857')]('T')<0x0){var _0x3284a9=moment();_0x1eb0da=''['concat'](_0x1eb0da,'\x20')[_0x41d53d('0x49e')](_0x3284a9[_0x41d53d('0x10a')](_0x41d53d('0x83d')));}var _0x460332=_0x1eb0da['replace']('T','\x20'),_0x486bab=moment(_0x460332);_0x486bab[_0x41d53d('0x3fb')](0x1,'h');var _0x4a6689=_0x486bab[_0x41d53d('0x10a')]('YYYY-MM-DD\x20HH:mm:ss'),_0x5ae705={};_0x5ae705['date']=_0x2f8ab,_0x5ae705['date_start']=_0x460332,_0x5ae705[_0x41d53d('0x13a')]=_0x4a6689,this[_0x41d53d('0x461')](_0x5ae705);}},{'key':_0x4a2b0('0x461'),'value':function(_0x51bfe5){var _0x5209e9=_0x4a2b0;if('0'!==''[_0x5209e9('0x49e')](this[_0x5209e9('0xd35')])){if(this[_0x5209e9('0x372')](_0x51bfe5),void 0x0!==_0x51bfe5['id']&&null!=_0x51bfe5['id']){var _0x3f144b=_0x51bfe5['id'];$('.deleteBtnWorkSchedule')[_0x5209e9('0x388')](),$('.deleteBtnWorkSchedule')[_0x5209e9('0x1bd')]()['on'](_0x5209e9('0x67b'),function(){var _0x2c949e=_0x5209e9;return modJs[_0x2c949e('0xb48')](_0x3f144b),!0x1;});}else $('.deleteBtnWorkSchedule')[_0x5209e9('0x8b7')]();}}},{'key':_0x4a2b0('0x372'),'value':function(_0x45a8ba){var _0x4bea17=_0x4a2b0;this[_0x4bea17('0x586')]=this['currentId'];var _0x53a1a3=modJsList[_0x4bea17('0x302')];$(_0x4bea17('0x47'))[_0x4bea17('0xbe5')]({'backdrop':'static','keyboard':!0x1}),_0x53a1a3['currentTimesheet']=this[_0x4bea17('0x3b2')],_0x53a1a3[_0x4bea17('0x5a4')](_0x45a8ba),_0x53a1a3['timesheetId']=this[_0x4bea17('0xb61')];}},{'key':_0x4a2b0('0x703'),'value':function(){var _0x4c4823=_0x4a2b0;$(_0x4c4823('0x47'))[_0x4c4823('0xbe5')]('hide');}},{'key':_0x4a2b0('0x2c'),'value':function(){var _0x5c2584=_0x4a2b0,_0x2233b4={'id':this[_0x5c2584('0xb61')],'sm':JSON[_0x5c2584('0x263')](modJsList[_0x5c2584('0x302')]['getSourceMapping']())},_0x325d2b=JSON[_0x5c2584('0x263')](_0x2233b4),_0x1648e0=[];_0x1648e0[_0x5c2584('0x400')]=[],_0x1648e0['callBackSuccess']='getTimeEntriesSuccessCallBack',_0x1648e0[_0x5c2584('0x350')]=_0x5c2584('0x24f'),this['customAction'](_0x5c2584('0x2c'),_0x5c2584('0x38b'),_0x325d2b,_0x1648e0);}},{'key':_0x4a2b0('0xb86'),'value':function(_0x177a16){var _0x484696=_0x4a2b0;for(var _0x297536=_0x177a16,_0x38356e='',_0xc48892=0x0;_0xc48892<_0x297536[_0x484696('0x1d1')];_0xc48892++)try{var _0x1614bc=_0x484696('0xb95');_0x1614bc=(_0x1614bc=_0x1614bc['replace'](/_start_/g,Date[_0x484696('0xb50')](_0x297536[_0xc48892][_0x484696('0xc42')])[_0x484696('0x8dc')](_0x484696('0x235'))))[_0x484696('0x95e')](/_end_/g,Date['parse'](_0x297536[_0xc48892][_0x484696('0x13a')])[_0x484696('0x8dc')](_0x484696('0x235')));var _0x88cfe2=Date['parse'](_0x297536[_0xc48892][_0x484696('0x13a')])-Date[_0x484696('0xb50')](_0x297536[_0xc48892][_0x484696('0xc42')]),_0xa4cf8a=Math[_0x484696('0xd3b')](_0x88cfe2/0xea60),_0x263569=_0xa4cf8a%0x3c,_0x27a69c=(_0xa4cf8a-_0x263569)/0x3c;_0x1614bc=_0x1614bc['replace'](/_duration_/g,_0x484696('0x851')[_0x484696('0x49e')](_0x27a69c,_0x484696('0x87e'))[_0x484696('0x49e')](_0x263569,')')),_0x38356e+=_0x1614bc=(_0x1614bc=(_0x1614bc=(_0x1614bc=(_0x1614bc=_0x484696('0xcf6')===_0x297536[_0xc48892][_0x484696('0xa86')]||null==_0x297536[_0xc48892][_0x484696('0xa86')]||void 0x0===_0x297536[_0xc48892][_0x484696('0xa86')]?_0x1614bc[_0x484696('0x95e')](/_project_/g,'None'):_0x1614bc[_0x484696('0x95e')](/_project_/g,_0x297536[_0xc48892][_0x484696('0xa86')]))[_0x484696('0x95e')](/_project_/g,_0x297536[_0xc48892][_0x484696('0xa86')]))[_0x484696('0x95e')](/_details_/g,_0x297536[_0xc48892][_0x484696('0x2f1')]))[_0x484696('0x95e')](/_id_/g,_0x297536[_0xc48892]['id']))['replace'](/_BASE_/g,this[_0x484696('0xadb')]);}catch(_0x3fd1ac){}$(_0x484696('0x83b'))[_0x484696('0x826')](_0x38356e),_0x484696('0x55d')===modJs[_0x484696('0x6d8')]()||'0'===''[_0x484696('0x49e')](this[_0x484696('0xd35')])||_0x484696('0x756')===this[_0x484696('0xc18')][_0x484696('0x90d')]?($(_0x484696('0x492'))[_0x484696('0x79b')](),$(_0x484696('0x890'))[_0x484696('0x79b')]()):($(_0x484696('0x492'))[_0x484696('0x388')](),$(_0x484696('0x890'))['show']()),$('#EmployeeTimesheetBlock')[_0x484696('0xa21')](_0x484696('0xdae'));}},{'key':_0x4a2b0('0x24f'),'value':function(_0x5e87b0){var _0x59ba26=_0x4a2b0;this[_0x59ba26('0xcc4')](_0x59ba26('0x6b7'),_0x59ba26('0xb8c'));}},{'key':'createPreviousTimesheet','value':function(_0x42d40a){var _0x31662d=_0x4a2b0,_0x41c099={'id':_0x42d40a},_0xbe13e8=JSON[_0x31662d('0x263')](_0x41c099),_0xb64ec6=[];_0xb64ec6['callBackData']=[],_0xb64ec6['callBackSuccess']=_0x31662d('0x5c6'),_0xb64ec6[_0x31662d('0x350')]=_0x31662d('0x6a3'),this[_0x31662d('0x87b')](_0x31662d('0x90c'),_0x31662d('0x38b'),_0xbe13e8,_0xb64ec6);}},{'key':_0x4a2b0('0x5c6'),'value':function(_0x81e3bc){var _0x54b039=_0x4a2b0;$(_0x54b039('0x43a'))[_0x54b039('0x671')](_0x54b039('0x725'),'none'),$(_0x54b039('0x43a'))[_0x54b039('0x8b7')](),this[_0x54b039('0x715')]([]);}},{'key':_0x4a2b0('0x6a3'),'value':function(_0x4b81bb){var _0x598741=_0x4a2b0;this[_0x598741('0xcc4')](_0x598741('0x6b7'),_0x4b81bb);}},{'key':'changeTimeSheetStatusWithId','value':function(_0x4e1298,_0x129d5d){var _0x52c6f8=_0x4a2b0;if(''!==_0x129d5d&&null!=_0x129d5d&&void 0x0!==_0x129d5d){var _0x288cce={'id':_0x4e1298,'status':_0x129d5d},_0x28e479=JSON['stringify'](_0x288cce),_0x5968ae=[];_0x5968ae[_0x52c6f8('0x400')]=[],_0x5968ae[_0x52c6f8('0x947')]='changeTimeSheetStatusSuccessCallBack',_0x5968ae[_0x52c6f8('0x350')]=_0x52c6f8('0xab'),this[_0x52c6f8('0x87b')](_0x52c6f8('0x549'),'modules=time_sheets',_0x28e479,_0x5968ae);}else this[_0x52c6f8('0xcc4')]('Status\x20Error',_0x52c6f8('0x872'));}},{'key':_0x4a2b0('0x451'),'value':function(_0x35607e){var _0x3a8b8f=_0x4a2b0;this['showMessage'](_0x3a8b8f('0xa3'),_0x3a8b8f('0x936')),this[_0x3a8b8f('0x715')]([]);}},{'key':_0x4a2b0('0xab'),'value':function(_0x4d45da){var _0x9c3e43=_0x4a2b0;this[_0x9c3e43('0xcc4')]('Error','Error\x20occured\x20while\x20changing\x20Timesheet\x20status');}},{'key':_0x4a2b0('0x3cd'),'value':function(_0xaead5e,_0x1ecd55){var _0x103894=_0x4a2b0,_0x536fc4='';if(_0x536fc4='0'===''[_0x103894('0x49e')](this[_0x103894('0xd35')])?_0x103894('0x667'):_0x103894('0x4'),_0x103894('0x9a3')===this[_0x103894('0x6d8')]())_0x536fc4=_0x536fc4[_0x103894('0x95e')](/_redoBtn_/g,_0x103894('0x69d'));else _0x536fc4=_0x536fc4[_0x103894('0x95e')](/_redoBtn_/g,'');return _0x536fc4=(_0x536fc4=(_0x536fc4=(_0x536fc4=(_0x536fc4=_0x536fc4[_0x103894('0x95e')](/_id_/g,_0xaead5e))[_0x103894('0x95e')](/_sdate_/g,_0x1ecd55[0x1]))['replace'](/_edate_/g,_0x1ecd55[0x2]))['replace'](/_status_/g,_0x1ecd55[0x4]))[_0x103894('0x95e')](/_BASE_/g,this[_0x103894('0xadb')]);}},{'key':'getCustomTableParams','value':function(){var _0x312ae2=_0x4a2b0,_0x217505=this;return{'aoColumnDefs':[{'fnRender':function(_0x3fc380,_0x14e4fc){return _0x217505['preProcessRemoteTableData'](_0x3fc380,_0x14e4fc,0x1);},'aTargets':[0x1]},{'fnRender':function(_0x1a26bd,_0x3dcfae){return _0x217505['preProcessRemoteTableData'](_0x1a26bd,_0x3dcfae,0x2);},'aTargets':[0x2]},{'fnRender':_0x217505[_0x312ae2('0x26d')],'aTargets':[_0x217505[_0x312ae2('0xc58')]()[_0x312ae2('0x1d1')]]}]};}},{'key':_0x4a2b0('0x621'),'value':function(_0x22f45a,_0x18ac54,_0x5efa0f){var _0x2bbb77=_0x4a2b0;return Date['parse'](_0x18ac54)['toString'](_0x2bbb77('0x1f3'));}}]),_0x4903e4;}(_0x1cf309['default']),_0x2e19f6=function(_0x2c7e62){var _0x4f7600=_0x3ba1a5;_0x1bf0ff(_0x5bca3d,_0x2c7e62);var _0x1de732=_0x5442a6(_0x5bca3d);function _0x5bca3d(_0x3e3f9a,_0x3a298e,_0x346af3,_0x6e4d7b){var _0x21dd36=_0x3e44,_0x49d414;return _0x28c974(this,_0x5bca3d),(_0x49d414=_0x1de732[_0x21dd36('0x928')](this,_0x3e3f9a,_0x3a298e,_0x346af3,_0x6e4d7b))['timeSheetStatusChangeId']=null,_0x49d414;}return _0x51f067(_0x5bca3d,[{'key':'getDataMapping','value':function(){var _0x6ce09b=_0x3e44;return['id','employee',_0x6ce09b('0xc42'),_0x6ce09b('0x13a'),_0x6ce09b('0xb73'),_0x6ce09b('0x90d')];}},{'key':_0x4f7600('0x6f7'),'value':function(){var _0x29d5b7=_0x4f7600;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':_0x29d5b7('0x2bb'),'bSearchable':!0x0},{'sTitle':_0x29d5b7('0x86'),'bSearchable':!0x0},{'sTitle':_0x29d5b7('0x9f3'),'bSearchable':!0x0},{'sTitle':_0x29d5b7('0x1c2'),'bSearchable':!0x1},{'sTitle':_0x29d5b7('0xad1')}];}},{'key':_0x4f7600('0x59d'),'value':function(){var _0xfb4943=_0x4f7600;return[['id',{'label':'ID','type':_0xfb4943('0xb0f')}],[_0xfb4943('0x1a0'),{'label':_0xfb4943('0x2bb'),'type':_0xfb4943('0x7fc'),'allow-null':!0x1,'remote-source':[_0xfb4943('0x2bb'),'id',_0xfb4943('0x1aa')]}],[_0xfb4943('0xc42'),{'label':_0xfb4943('0x34d'),'type':_0xfb4943('0xd98'),'validation':''}],['date_end',{'label':_0xfb4943('0x34d'),'type':_0xfb4943('0xd98'),'validation':''}],['details',{'label':_0xfb4943('0x417'),'type':_0xfb4943('0x219'),'validation':_0xfb4943('0x3b9')}]];}},{'key':_0x4f7600('0xa7f'),'value':function(){return!0x0;}},{'key':_0x4f7600('0xd7f'),'value':function(_0x550dc9){var _0x183564=_0x4f7600;for(var _0x4c7c99=[],_0x3d92df=this[_0x183564('0xc58')](),_0x1e2c9a=0x0;_0x1e2c9a<_0x550dc9[_0x183564('0x1d1')];_0x1e2c9a++){for(var _0x117573=[],_0x2c55c4=0x0;_0x2c55c4<_0x3d92df[_0x183564('0x1d1')];_0x2c55c4++)_0x117573[_0x2c55c4]=_0x550dc9[_0x1e2c9a][_0x3d92df[_0x2c55c4]];_0x4c7c99['push'](this['preProcessTableData'](_0x117573));}this['tableData']=_0x4c7c99,this[_0x183564('0xadf')](this['getTableName']()),$('#'[_0x183564('0x49e')](this[_0x183564('0x6d8')](),'Form'))['hide'](),$('#'[_0x183564('0x49e')](this[_0x183564('0x6d8')]()))['show']();}},{'key':_0x4f7600('0xacc'),'value':function(_0x4380e7){var _0x54d438=_0x4f7600,_0xd04a76=_0x4380e7;return _0xd04a76[0x2]=Date[_0x54d438('0xb50')](_0xd04a76[0x2])[_0x54d438('0x8dc')](_0x54d438('0x1f3')),_0xd04a76[0x3]=Date[_0x54d438('0xb50')](_0xd04a76[0x3])['toString'](_0x54d438('0x1f3')),_0xd04a76;}},{'key':_0x4f7600('0x460'),'value':function(_0x19fa6b,_0x5eecea){var _0x14655c=_0x4f7600;this[_0x14655c('0x586')]=_0x19fa6b,$(_0x14655c('0x17c'))[_0x14655c('0xbe5')]('show'),$('#timesheet_status')['val'](_0x5eecea),this[_0x14655c('0x28')]=_0x19fa6b;}},{'key':'closeTimeSheetStatus','value':function(){var _0x336dd9=_0x4f7600;$(_0x336dd9('0x17c'))[_0x336dd9('0xbe5')](_0x336dd9('0x79b'));}},{'key':'changeTimeSheetStatus','value':function(){var _0x3b7c54=_0x4f7600,_0x142c4c=$(_0x3b7c54('0xb57'))['val']();this[_0x3b7c54('0x3e9')](this[_0x3b7c54('0x28')],_0x142c4c),this['closeTimeSheetStatus'](),this[_0x3b7c54('0x28')]=null;}},{'key':_0x4f7600('0x3cd'),'value':function(_0x350312,_0x1a6cc0){var _0x1d3a4b=_0x4f7600;return('0'===''[_0x1d3a4b('0x49e')](this[_0x1d3a4b('0xd35')])?_0x1d3a4b('0xbab'):_0x1d3a4b('0x344'))['replace'](/_id_/g,_0x350312)[_0x1d3a4b('0x95e')](/_BASE_/g,this['baseUrl'])[_0x1d3a4b('0x95e')](/_sdate_/g,_0x1a6cc0[0x1])['replace'](/_edate_/g,_0x1a6cc0[0x2])[_0x1d3a4b('0x95e')](/_status_/g,_0x1a6cc0[0x4]);}},{'key':_0x4f7600('0x6b5'),'value':function(){var _0x398cd2=_0x4f7600,_0x5c3024=this;return{'aoColumnDefs':[{'fnRender':function(_0x43481f,_0x52c25e){var _0x47beac=_0x3e44;return _0x5c3024[_0x47beac('0x621')](_0x43481f,_0x52c25e,0x2);},'aTargets':[0x2]},{'fnRender':function(_0x514086,_0x1679c2){var _0x4204a3=_0x3e44;return _0x5c3024[_0x4204a3('0x621')](_0x514086,_0x1679c2,0x3);},'aTargets':[0x3]},{'fnRender':_0x5c3024[_0x398cd2('0x26d')],'aTargets':[_0x5c3024[_0x398cd2('0xc58')]()[_0x398cd2('0x1d1')]]}]};}},{'key':_0x4f7600('0xc6'),'value':function(){var _0x94a72b=_0x4f7600;return[[_0x94a72b('0x1a0'),{'label':'Employee','type':_0x94a72b('0xdbb'),'allow-null':!0x0,'null-label':_0x94a72b('0x33f'),'remote-source':['Employee','id',_0x94a72b('0x1aa')]}],[_0x94a72b('0x90d'),{'label':_0x94a72b('0xad1'),'type':_0x94a72b('0x7fc'),'allow-null':!0x0,'null-label':_0x94a72b('0x437'),'source':[[_0x94a72b('0xc01'),_0x94a72b('0xc01')],[_0x94a72b('0xb35'),_0x94a72b('0xb35')],['Approved',_0x94a72b('0x756')],[_0x94a72b('0x9d3'),_0x94a72b('0x9d3')]]}]];}}]),_0x5bca3d;}(_0x36c211),_0x1960e6=function(_0x25fbd8){var _0x20f39c=_0x3ba1a5;_0x1bf0ff(_0x412a13,_0x25fbd8);var _0x38e817=_0x5442a6(_0x412a13);function _0x412a13(_0x70ef65,_0x54042e,_0x7af487,_0x3a6302){var _0xf04d84=_0x3e44,_0x5acbc9;return _0x28c974(this,_0x412a13),(_0x5acbc9=_0x38e817[_0xf04d84('0x928')](this,_0x70ef65,_0x54042e,_0x7af487,_0x3a6302))['timesheetId']=null,_0x5acbc9[_0xf04d84('0x3b2')]=null,_0x5acbc9[_0xf04d84('0x4e8')]=0x1,_0x5acbc9[_0xf04d84('0x10')]=[],_0x5acbc9;}return _0x51f067(_0x412a13,[{'key':_0x20f39c('0xc58'),'value':function(){var _0x4a98cf=_0x20f39c;return['id',_0x4a98cf('0xa86'),_0x4a98cf('0xc42'),_0x4a98cf('0xa06'),_0x4a98cf('0x13a'),_0x4a98cf('0x251'),_0x4a98cf('0x2f1')];}},{'key':_0x20f39c('0x6f7'),'value':function(){var _0x241d5e=_0x20f39c;return[{'sTitle':'ID','bVisible':!0x1},{'sTitle':_0x241d5e('0x680')},{'sTitle':'Start\x20Date'},{'sTitle':_0x241d5e('0x2af')},{'sTitle':_0x241d5e('0x9f3')},{'sTitle':_0x241d5e('0x429')},{'sTitle':'Details'}];}},{'key':'getFormFields','value':function(){var _0x575125=_0x20f39c;return[['id',{'label':'ID','type':_0x575125('0xb0f')}],[_0x575125('0xa86'),{'label':_0x575125('0x680'),'type':'select2','allow-null':!0x1,'remote-source':[_0x575125('0x680'),'id',_0x575125('0x9e'),_0x575125('0x71c')]}],['date_select',{'label':_0x575125('0xd9f'),'type':'select','source':[]}],[_0x575125('0xc42'),{'label':'Start\x20Time','type':'time','validation':''}],[_0x575125('0x13a'),{'label':'End\x20Time','type':'time','validation':''}],[_0x575125('0x2f1'),{'label':_0x575125('0x760'),'type':'textarea','validation':''}]];}},{'key':_0x20f39c('0x7d2'),'value':function(_0x33e669,_0x2c15fb){for(var _0x56df20=[],_0x1ab2d0=_0x33e669;_0x1ab2d0<=_0x2c15fb;)_0x56df20['push'](new Date(_0x1ab2d0)),_0x1ab2d0=_0x1ab2d0['add']({'days':0x1});return _0x56df20;}},{'key':_0x20f39c('0x5a4'),'value':function(_0x36de1c){var _0x5a7d44=_0x20f39c,_0x286527=this;this['initMasterDataReader'](),this[_0x5a7d44('0x92c')]['updateAllMasterData']()[_0x5a7d44('0x577')](function(){var _0x4c2e85=_0x5a7d44;_0x286527[_0x4c2e85('0x5b4')](_0x36de1c);});}},{'key':_0x20f39c('0x5b4'),'value':function(_0x3d1934){var _0x328fb5=_0x20f39c,_0x2ec0a6=this[_0x328fb5('0xa12')](_0x328fb5('0x42b'));_0x2ec0a6=_0x2ec0a6[_0x328fb5('0x95e')](/modJs/g,_0x328fb5('0xad6'));for(var _0x288acb='',_0x25b56a=this[_0x328fb5('0x59d')](),_0x1dafb1=0x0;_0x1dafb1<_0x25b56a[_0x328fb5('0x1d1')];_0x1dafb1++){var _0x2d1053=this[_0x328fb5('0x76f')](_0x25b56a[_0x1dafb1][0x0]);if(''===_0x2d1053||void 0x0===_0x2d1053)_0x288acb+=this[_0x328fb5('0x41e')](_0x25b56a[_0x1dafb1]);else{var _0x498d32=_0x3d1934[_0x2d1053];''!==_0x498d32&&null!=_0x498d32&&void 0x0!==_0x498d32&&''!==_0x498d32['trim']()?_0x288acb+=this[_0x328fb5('0x41e')](JSON['parse'](_0x498d32)):_0x288acb+=this[_0x328fb5('0x41e')](_0x25b56a[_0x1dafb1]);}}for(var _0x3d3eb0='',_0x2f012b=0x0;_0x2f012b')[_0x328fb5('0x49e')](_0x3d3e9c[0x1],_0x328fb5('0x228'));}_0x2ec0a6=(_0x2ec0a6=_0x2ec0a6[_0x328fb5('0x95e')](/_id_/g,''[_0x328fb5('0x49e')](this['getTableName'](),_0x328fb5('0x7a0'))))[_0x328fb5('0x95e')](/_fields_/g,_0x288acb),$('#'['concat'](this[_0x328fb5('0x6d8')](),_0x328fb5('0xad2')))[_0x328fb5('0x826')](_0x2ec0a6),$('#'[_0x328fb5('0x49e')](this['getTableName'](),_0x328fb5('0xad2')))['show'](),$('#'['concat'](this[_0x328fb5('0x6d8')]()))[_0x328fb5('0x79b')](),$('#'[_0x328fb5('0x49e')](this[_0x328fb5('0x6d8')](),_0x328fb5('0x9de')))[_0x328fb5('0x2b4')]({'viewMode':0x2}),$('#'['concat'](this['getTableName'](),'Form\x20.datetimefield'))[_0x328fb5('0x90b')]({'language':'en'}),$('#'[_0x328fb5('0x49e')](this[_0x328fb5('0x6d8')](),'Form\x20.timefield'))[_0x328fb5('0x90b')]({'language':'en','pickDate':!0x1}),$('#'[_0x328fb5('0x49e')](this[_0x328fb5('0x6d8')](),_0x328fb5('0x8fd')))['select2'](),$(_0x328fb5('0x717'))['html'](_0x3d3eb0),void 0x0!==_0x3d1934&&null!=_0x3d1934&&this['fillForm'](_0x3d1934);}},{'key':'fillForm','value':function(_0x478c64,_0x13a7b0,_0x4e6fea){var _0x4d9988=_0x20f39c,_0x374459=_0x13a7b0;null!=_0x374459&&void 0x0!==_0x374459&&''!==_0x374459||(_0x374459='#'[_0x4d9988('0x49e')](this[_0x4d9988('0x6d8')](),'Form')),null!=_0x478c64['id']&&void 0x0!==_0x478c64['id']&&$(''[_0x4d9988('0x49e')](_0x374459,_0x4d9988('0x262')))[_0x4d9988('0x19f')](_0x478c64['id']),null!=_0x478c64['project']&&void 0x0!==_0x478c64[_0x4d9988('0xa86')]&&$(''['concat'](_0x374459,'\x20#project'))[_0x4d9988('0xdbb')](_0x4d9988('0x19f'),_0x478c64['project']),null!=_0x478c64['date']&&void 0x0!==_0x478c64[_0x4d9988('0xd98')]&&$(''['concat'](_0x374459,'\x20#date_select'))['val'](_0x478c64[_0x4d9988('0xd98')]);}},{'key':'cancel','value':function(){var _0x261f49=_0x20f39c;$(_0x261f49('0x47'))[_0x261f49('0xbe5')](_0x261f49('0x79b'));}},{'key':_0x20f39c('0x827'),'value':function(_0x3837a4){this['allProjectsAllowed']=_0x3837a4;}},{'key':_0x20f39c('0x6e1'),'value':function(_0x1297fd){var _0x79c042=_0x20f39c;this[_0x79c042('0x10')]=_0x1297fd;}},{'key':_0x20f39c('0xb0b'),'value':function(){var _0x3a7728=_0x20f39c,_0x185712=new _0x256055[(_0x3a7728('0x53'))](''[_0x3a7728('0x49e')](this[_0x3a7728('0x6d8')](),_0x3a7728('0x7a0')),!0x0,{'ShowPopup':!0x1,'LabelErrorClass':_0x3a7728('0x855')});if(_0x185712[_0x3a7728('0x1c1')]()){var _0x45104a=_0x185712[_0x3a7728('0xda6')]();_0x45104a[_0x3a7728('0x442')]=this['timesheetId'],_0x45104a[_0x3a7728('0xa06')]=_0x45104a[_0x3a7728('0xc42')],_0x45104a[_0x3a7728('0x251')]=_0x45104a[_0x3a7728('0x13a')],_0x45104a['date_start']=''['concat'](_0x45104a[_0x3a7728('0x65a')],'\x20')['concat'](_0x45104a[_0x3a7728('0xc42')]),_0x45104a['date_end']=''['concat'](_0x45104a['date_select'],'\x20')[_0x3a7728('0x49e')](_0x45104a[_0x3a7728('0x13a')]);var _0x2b2c0e=this['doCustomValidation'](_0x45104a);if(null==_0x2b2c0e){var _0x48a594=$('#'[_0x3a7728('0x49e')](this[_0x3a7728('0x6d8')](),'_submit\x20#id'))[_0x3a7728('0x19f')]();null!=_0x48a594&&void 0x0!==_0x48a594&&''!==_0x48a594&&(_0x45104a['id']=_0x48a594),this['add'](_0x45104a,[]),this['cancel']();}else $('#'[_0x3a7728('0x49e')](this[_0x3a7728('0x6d8')](),_0x3a7728('0x73e')))[_0x3a7728('0x826')](_0x2b2c0e),$('#'['concat'](this[_0x3a7728('0x6d8')](),_0x3a7728('0x73e')))['show']();}}},{'key':_0x20f39c('0xa75'),'value':function(_0x596af3){var _0x3a6dcf=_0x20f39c,_0x1c7b46=Date[_0x3a6dcf('0xb50')](_0x596af3[_0x3a6dcf('0xc42')]),_0x44864d=Date[_0x3a6dcf('0xb50')](_0x596af3['date_end']);return-0x1!==_0x1c7b46[_0x3a6dcf('0x7f0')](_0x44864d)?_0x3a6dcf('0x736'):null;}},{'key':_0x20f39c('0x755'),'value':function(_0x1200cc,_0x39197b){var _0x3c1668=_0x20f39c;this[_0x3c1668('0x715')](_0x1200cc),modJs[_0x3c1668('0x2c')]();}},{'key':_0x20f39c('0xb48'),'value':function(_0x450f7f){var _0x12ed9d=_0x20f39c;this[_0x12ed9d('0x83a')](_0x450f7f,[]);}},{'key':'deleteSuccessCallBack','value':function(_0x269ddb,_0x50d593){modJs['getTimeEntries']();}}]),_0x412a13;}(_0x1cf309[_0x3ba1a5('0x53')]),_0x498bf6=function(_0x168f82){var _0x24d592=_0x3ba1a5;_0x1bf0ff(_0x566a09,_0x168f82);var _0x1c780a=_0x5442a6(_0x566a09);function _0x566a09(_0x1da77f,_0xfe7e9b,_0x277b74,_0x590429){var _0x3d9395=_0x3e44,_0x29dacd;return _0x28c974(this,_0x566a09),(_0x29dacd=_0x1c780a[_0x3d9395('0x928')](this,_0x1da77f,_0xfe7e9b,_0x277b74,_0x590429))[_0x3d9395('0x8d5')]={},_0x29dacd[_0x3d9395('0xb61')]=null,_0x29dacd;}return _0x51f067(_0x566a09,[{'key':'validateCellValue','value':function(_0x57f6c8,_0x21aed4,_0x14b341){var _0x607731=_0x3e44;if(!_0x59e849[_0x607731('0x6d9')](_0x14b341))return!0x1;var _0x22a4ea=parseFloat(_0x14b341);if(_0x22a4ea<0x0||_0x22a4ea>0x18)return!0x1;var _0x1ebad8=this[_0x607731('0xe')][_0x57f6c8[_0x607731('0xc8f')](_0x607731('0x3a4'))]+0x2,_0x1343e3=0x0,_0x410012=0x0;return $('#'[_0x607731('0x49e')](this[_0x607731('0x6d8')](),_0x607731('0x34b'))[_0x607731('0x49e')](_0x1ebad8,')'))[_0x607731('0x30c')](function(){var _0x54f924=_0x607731,_0x4522aa=$(this)[_0x54f924('0xc8f')](_0x54f924('0xe9')),_0x3221bd='';_0x3221bd=_0x57f6c8[_0x54f924('0xc8f')](_0x54f924('0xe9'))===_0x4522aa?_0x14b341:$(this)[_0x54f924('0x826')](),-0x1!==_0x4522aa?_0x59e849['float'](_0x3221bd)&&(_0x1343e3+=parseFloat(_0x3221bd),_0x57f6c8[_0x54f924('0xc8f')](_0x54f924('0xe9'))!==_0x4522aa&&(_0x410012+=parseFloat(_0x3221bd))):_0x1343e3>0x18?$(this)[_0x54f924('0x826')](_0x410012):$(this)[_0x54f924('0x826')](_0x1343e3);}),!(_0x1343e3>0x18)&&(modJs[_0x607731('0x268')](_0x57f6c8[_0x607731('0xc8f')](_0x607731('0x3a4')),_0x57f6c8[_0x607731('0xc8f')](_0x607731('0xe9')),_0x14b341),!0x0);}},{'key':_0x24d592('0x1ef'),'value':function(_0x4ac84a){var _0x5a6e9f=_0x24d592;this[_0x5a6e9f('0xb61')]=_0x4ac84a,this[_0x5a6e9f('0x8d5')]={};}},{'key':_0x24d592('0xb0d'),'value':function(_0x2fc728,_0x32e841){var _0x56f85f=_0x24d592;return(_0x56f85f('0x454')===_0x2fc728||_0x56f85f('0x324')===_0x2fc728||_0x56f85f('0xd00')===_0x2fc728)&&(_0x32e841[_0x56f85f('0xb61')]=this[_0x56f85f('0xb61')]),_0x32e841;}},{'key':'modifyCSVHeader','value':function(_0x1c1f59){var _0x257284=_0x24d592;return _0x1c1f59[_0x257284('0xa5c')](''),_0x1c1f59;}},{'key':'getCSVData','value':function(){var _0x1b20e6=_0x24d592;for(var _0x4c8bc7='',_0x513461=0x0;_0x513461=0x0||Object[_0x4a9d5c('0x3ec')][_0x4a9d5c('0x106')][_0x4a9d5c('0x928')](_0x56f893,_0x5f1ee8)&&(_0x98d815[_0x5f1ee8]=_0x56f893[_0x5f1ee8]);return _0x98d815;}(_0x3c9692,[_0x1608e4('0x609'),'width','height','style']);return _0x520985['default']['createElement']('svg',_0x56f7aa({'viewBox':_0x1608e4('0x12b'),'style':_0x56f7aa({'fill':_0x56b63d,'width':_0x44811c,'height':_0x4a98a6},_0xa721e2)},_0x2fb32a),_0x520985[_0x1608e4('0x53')][_0x1608e4('0x914')](_0x1608e4('0x887'),{'d':_0x1608e4('0x1d7')}));};},{'react':_0x322f0f('0x603')}],0x61:[function(_0x4dc171,_0x18a1a5,_0x3de461){var _0x321687=_0x322f0f;'use strict';Object[_0x321687('0x2cd')](_0x3de461,_0x321687('0x866'),{'value':!0x0});var _0x5a738f,_0x3b8a71=Object[_0x321687('0x7df')]||function(_0x27e9d1){var _0x17f14c=_0x321687;for(var _0x4967af=0x1;_0x4967af=0x0||Object[_0x292acf('0x3ec')][_0x292acf('0x106')][_0x292acf('0x928')](_0x4d593e,_0x11395a)&&(_0x3983a0[_0x11395a]=_0x4d593e[_0x11395a]);return _0x3983a0;}(_0x3a3cc6,[_0x5e155f('0x609'),'width',_0x5e155f('0x448'),'style']);return _0x582712[_0x5e155f('0x53')]['createElement'](_0x5e155f('0x846'),_0x3b8a71({'viewBox':_0x5e155f('0x12b'),'style':_0x3b8a71({'fill':_0x3609a7,'width':_0x1d3a92,'height':_0x150a14},_0x2361b2)},_0x55a7e1),_0x582712[_0x5e155f('0x53')][_0x5e155f('0x914')](_0x5e155f('0x887'),{'d':_0x5e155f('0xd80')}));};},{'react':_0x322f0f('0x603')}],0x62:[function(_0x1a8364,_0x2bd026,_0x228de6){var _0x79dac2=_0x322f0f;_0x2bd026[_0x79dac2('0x91e')]=_0x1a8364(_0x79dac2('0x1b0'));},{'./lib/axios':0x64}],0x63:[function(_0x327ebd,_0x1d442c,_0xeb0324){var _0x296952=_0x322f0f;'use strict';var _0x18913d=_0x327ebd(_0x296952('0x8b2')),_0x173254=_0x327ebd(_0x296952('0x722')),_0x281d43=_0x327ebd(_0x296952('0x81f')),_0x3a01b7=_0x327ebd(_0x296952('0x861')),_0x2e111f=_0x327ebd('../core/buildFullPath'),_0x156679=_0x327ebd('./../helpers/parseHeaders'),_0x5cfbdd=_0x327ebd(_0x296952('0xb4c')),_0x47f650=_0x327ebd(_0x296952('0x544'));_0x1d442c[_0x296952('0x91e')]=function(_0x46ed6f){return new Promise(function(_0x1e480a,_0x4430a5){var _0x3bafdd=_0x3e44,_0x5a262e=_0x46ed6f[_0x3bafdd('0xc8f')],_0xcbad3e=_0x46ed6f[_0x3bafdd('0x795')];_0x18913d[_0x3bafdd('0x884')](_0x5a262e)&&delete _0xcbad3e['Content-Type'],(_0x18913d[_0x3bafdd('0x5d9')](_0x5a262e)||_0x18913d[_0x3bafdd('0xd91')](_0x5a262e))&&_0x5a262e['type']&&delete _0xcbad3e[_0x3bafdd('0x52a')];var _0x422fd7=new XMLHttpRequest();if(_0x46ed6f[_0x3bafdd('0x5b6')]){var _0x1a1896=_0x46ed6f[_0x3bafdd('0x5b6')]['username']||'',_0x5a3f32=unescape(encodeURIComponent(_0x46ed6f['auth'][_0x3bafdd('0x1fc')]))||'';_0xcbad3e[_0x3bafdd('0x614')]=_0x3bafdd('0xa1e')+btoa(_0x1a1896+':'+_0x5a3f32);}var _0x582f55=_0x2e111f(_0x46ed6f[_0x3bafdd('0x90a')],_0x46ed6f[_0x3bafdd('0xd03')]);if(_0x422fd7[_0x3bafdd('0xa24')](_0x46ed6f['method'][_0x3bafdd('0x637')](),_0x3a01b7(_0x582f55,_0x46ed6f[_0x3bafdd('0x784')],_0x46ed6f[_0x3bafdd('0x780')]),!0x0),_0x422fd7[_0x3bafdd('0xb02')]=_0x46ed6f[_0x3bafdd('0xb02')],_0x422fd7[_0x3bafdd('0x86f')]=function(){var _0x4767a1=_0x3bafdd;if(_0x422fd7&&0x4===_0x422fd7[_0x4767a1('0x3f1')]&&(0x0!==_0x422fd7[_0x4767a1('0x90d')]||_0x422fd7[_0x4767a1('0x41c')]&&0x0===_0x422fd7[_0x4767a1('0x41c')]['indexOf']('file:'))){var _0x409c00=_0x4767a1('0x255')in _0x422fd7?_0x156679(_0x422fd7[_0x4767a1('0x255')]()):null,_0x23edff={'data':_0x46ed6f[_0x4767a1('0xd')]&&_0x4767a1('0x1c4')!==_0x46ed6f[_0x4767a1('0xd')]?_0x422fd7[_0x4767a1('0x9f7')]:_0x422fd7[_0x4767a1('0xa16')],'status':_0x422fd7['status'],'statusText':_0x422fd7[_0x4767a1('0xa38')],'headers':_0x409c00,'config':_0x46ed6f,'request':_0x422fd7};_0x173254(_0x1e480a,_0x4430a5,_0x23edff),_0x422fd7=null;}},_0x422fd7[_0x3bafdd('0x52d')]=function(){var _0x27fc6f=_0x3bafdd;_0x422fd7&&(_0x4430a5(_0x47f650(_0x27fc6f('0x4af'),_0x46ed6f,_0x27fc6f('0x397'),_0x422fd7)),_0x422fd7=null);},_0x422fd7[_0x3bafdd('0x374')]=function(){var _0x2e2212=_0x3bafdd;_0x4430a5(_0x47f650(_0x2e2212('0x3f9'),_0x46ed6f,null,_0x422fd7)),_0x422fd7=null;},_0x422fd7[_0x3bafdd('0xa46')]=function(){var _0xee6b90=_0x3bafdd,_0x31324a=_0xee6b90('0x8aa')+_0x46ed6f['timeout']+_0xee6b90('0x607');_0x46ed6f[_0xee6b90('0x82a')]&&(_0x31324a=_0x46ed6f[_0xee6b90('0x82a')]),_0x4430a5(_0x47f650(_0x31324a,_0x46ed6f,'ECONNABORTED',_0x422fd7)),_0x422fd7=null;},_0x18913d[_0x3bafdd('0x978')]()){var _0x42dd7c=(_0x46ed6f[_0x3bafdd('0x858')]||_0x5cfbdd(_0x582f55))&&_0x46ed6f[_0x3bafdd('0xd28')]?_0x281d43['read'](_0x46ed6f[_0x3bafdd('0xd28')]):void 0x0;_0x42dd7c&&(_0xcbad3e[_0x46ed6f['xsrfHeaderName']]=_0x42dd7c);}if(_0x3bafdd('0x499')in _0x422fd7&&_0x18913d[_0x3bafdd('0x7ed')](_0xcbad3e,function(_0x4e0d61,_0x232199){var _0x186ae0=_0x3bafdd;void 0x0===_0x5a262e&&_0x186ae0('0xa2a')===_0x232199['toLowerCase']()?delete _0xcbad3e[_0x232199]:_0x422fd7[_0x186ae0('0x499')](_0x232199,_0x4e0d61);}),_0x18913d[_0x3bafdd('0xfb')](_0x46ed6f[_0x3bafdd('0x858')])||(_0x422fd7[_0x3bafdd('0x858')]=!!_0x46ed6f[_0x3bafdd('0x858')]),_0x46ed6f[_0x3bafdd('0xd')])try{_0x422fd7[_0x3bafdd('0xd')]=_0x46ed6f[_0x3bafdd('0xd')];}catch(_0x561928){if('json'!==_0x46ed6f[_0x3bafdd('0xd')])throw _0x561928;}_0x3bafdd('0x67')==typeof _0x46ed6f[_0x3bafdd('0xb9a')]&&_0x422fd7[_0x3bafdd('0xe8')](_0x3bafdd('0x5c3'),_0x46ed6f[_0x3bafdd('0xb9a')]),'function'==typeof _0x46ed6f[_0x3bafdd('0x16e')]&&_0x422fd7[_0x3bafdd('0x80c')]&&_0x422fd7[_0x3bafdd('0x80c')]['addEventListener'](_0x3bafdd('0x5c3'),_0x46ed6f[_0x3bafdd('0x16e')]),_0x46ed6f[_0x3bafdd('0x4f2')]&&_0x46ed6f['cancelToken'][_0x3bafdd('0x9f1')]['then'](function(_0x11f4cc){var _0xd56129=_0x3bafdd;_0x422fd7&&(_0x422fd7[_0xd56129('0x4da')](),_0x4430a5(_0x11f4cc),_0x422fd7=null);}),_0x5a262e||(_0x5a262e=null),_0x422fd7[_0x3bafdd('0x466')](_0x5a262e);});};},{'../core/buildFullPath':0x6a,'../core/createError':0x6b,'./../core/settle':0x6f,'./../helpers/buildURL':0x73,'./../helpers/cookies':0x75,'./../helpers/isURLSameOrigin':0x77,'./../helpers/parseHeaders':0x79,'./../utils':0x7b}],0x64:[function(_0x264fc1,_0x60bb38,_0x41d566){var _0x1cd07e=_0x322f0f;'use strict';var _0x292124=_0x264fc1(_0x1cd07e('0xb4b')),_0x2dcc94=_0x264fc1(_0x1cd07e('0x689')),_0x574072=_0x264fc1(_0x1cd07e('0x314')),_0x2fc95f=_0x264fc1('./core/mergeConfig');function _0x585cae(_0x3f9522){var _0x47ad6f=_0x1cd07e,_0x30f109=new _0x574072(_0x3f9522),_0x6e4883=_0x2dcc94(_0x574072[_0x47ad6f('0x3ec')]['request'],_0x30f109);return _0x292124[_0x47ad6f('0x141')](_0x6e4883,_0x574072[_0x47ad6f('0x3ec')],_0x30f109),_0x292124['extend'](_0x6e4883,_0x30f109),_0x6e4883;}var _0x33ce70=_0x585cae(_0x264fc1('./defaults'));_0x33ce70[_0x1cd07e('0x5f5')]=_0x574072,_0x33ce70['create']=function(_0x44789c){return _0x585cae(_0x2fc95f(_0x33ce70['defaults'],_0x44789c));},_0x33ce70[_0x1cd07e('0x440')]=_0x264fc1(_0x1cd07e('0x7fb')),_0x33ce70[_0x1cd07e('0x2e6')]=_0x264fc1('./cancel/CancelToken'),_0x33ce70[_0x1cd07e('0x121')]=_0x264fc1(_0x1cd07e('0xb19')),_0x33ce70[_0x1cd07e('0x22b')]=function(_0x2a8732){var _0x4fcd19=_0x1cd07e;return Promise[_0x4fcd19('0x22b')](_0x2a8732);},_0x33ce70['spread']=_0x264fc1('./helpers/spread'),_0x60bb38[_0x1cd07e('0x91e')]=_0x33ce70,_0x60bb38[_0x1cd07e('0x91e')]['default']=_0x33ce70;},{'./cancel/Cancel':0x65,'./cancel/CancelToken':0x66,'./cancel/isCancel':0x67,'./core/Axios':0x68,'./core/mergeConfig':0x6e,'./defaults':0x71,'./helpers/bind':0x72,'./helpers/spread':0x7a,'./utils':0x7b}],0x65:[function(_0x5f13da,_0x328dce,_0xbac1a9){var _0x2d98ed=_0x322f0f;'use strict';function _0x184fe3(_0x226705){var _0x205b58=_0x3e44;this[_0x205b58('0x64')]=_0x226705;}_0x184fe3['prototype'][_0x2d98ed('0x8dc')]=function(){var _0x44e77c=_0x2d98ed;return _0x44e77c('0x440')+(this[_0x44e77c('0x64')]?':\x20'+this['message']:'');},_0x184fe3[_0x2d98ed('0x3ec')][_0x2d98ed('0x707')]=!0x0,_0x328dce[_0x2d98ed('0x91e')]=_0x184fe3;},{}],0x66:[function(_0x5c375f,_0x18b31c,_0x2d5da9){var _0x33fead=_0x322f0f;'use strict';var _0x130112=_0x5c375f('./Cancel');function _0x711519(_0x15604c){var _0x417011=_0x3e44;if(_0x417011('0x67')!=typeof _0x15604c)throw new TypeError('executor\x20must\x20be\x20a\x20function.');var _0x6eb14b;this[_0x417011('0x9f1')]=new Promise(function(_0x1a3615){_0x6eb14b=_0x1a3615;});var _0x3e9a80=this;_0x15604c(function(_0x159cbc){var _0x3e5d29=_0x417011;_0x3e9a80[_0x3e5d29('0xb34')]||(_0x3e9a80['reason']=new _0x130112(_0x159cbc),_0x6eb14b(_0x3e9a80[_0x3e5d29('0xb34')]));});}_0x711519[_0x33fead('0x3ec')][_0x33fead('0x1f2')]=function(){var _0x4dd25c=_0x33fead;if(this[_0x4dd25c('0xb34')])throw this[_0x4dd25c('0xb34')];},_0x711519['source']=function(){var _0x2966fd;return{'token':new _0x711519(function(_0x8405b){_0x2966fd=_0x8405b;}),'cancel':_0x2966fd};},_0x18b31c[_0x33fead('0x91e')]=_0x711519;},{'./Cancel':0x65}],0x67:[function(_0xadbe9f,_0x50e03a,_0x140af0){var _0x45712b=_0x322f0f;'use strict';_0x50e03a[_0x45712b('0x91e')]=function(_0x5563b4){var _0x4f9372=_0x45712b;return!(!_0x5563b4||!_0x5563b4[_0x4f9372('0x707')]);};},{}],0x68:[function(_0x5265b5,_0x59f483,_0x4d9e81){var _0x2c6e21=_0x322f0f;'use strict';var _0x5ded9b=_0x5265b5(_0x2c6e21('0x8b2')),_0x3d3c0a=_0x5265b5(_0x2c6e21('0x84d')),_0x39c4c5=_0x5265b5(_0x2c6e21('0xc0')),_0x5df685=_0x5265b5(_0x2c6e21('0x3c1')),_0x2e888b=_0x5265b5(_0x2c6e21('0xcb1'));function _0x257f7f(_0x4b0f2f){this['defaults']=_0x4b0f2f,this['interceptors']={'request':new _0x39c4c5(),'response':new _0x39c4c5()};}_0x257f7f[_0x2c6e21('0x3ec')][_0x2c6e21('0x20')]=function(_0x49cc35){var _0x2959c2=_0x2c6e21;_0x2959c2('0x4ba')==typeof _0x49cc35?(_0x49cc35=arguments[0x1]||{})[_0x2959c2('0xd03')]=arguments[0x0]:_0x49cc35=_0x49cc35||{},(_0x49cc35=_0x2e888b(this['defaults'],_0x49cc35))['method']?_0x49cc35[_0x2959c2('0x519')]=_0x49cc35[_0x2959c2('0x519')][_0x2959c2('0x5d')]():this[_0x2959c2('0x7c2')][_0x2959c2('0x519')]?_0x49cc35[_0x2959c2('0x519')]=this[_0x2959c2('0x7c2')][_0x2959c2('0x519')]['toLowerCase']():_0x49cc35[_0x2959c2('0x519')]=_0x2959c2('0x715');var _0x4af6a2=[_0x5df685,void 0x0],_0x1cd79e=Promise[_0x2959c2('0x578')](_0x49cc35);for(this['interceptors'][_0x2959c2('0x20')][_0x2959c2('0x7ed')](function(_0x186283){var _0x5a6ba0=_0x2959c2;_0x4af6a2[_0x5a6ba0('0xa5c')](_0x186283['fulfilled'],_0x186283[_0x5a6ba0('0x9d0')]);}),this[_0x2959c2('0x50d')][_0x2959c2('0x9f7')][_0x2959c2('0x7ed')](function(_0x29af1d){var _0x7ea356=_0x2959c2;_0x4af6a2[_0x7ea356('0x8cd')](_0x29af1d[_0x7ea356('0x54d')],_0x29af1d[_0x7ea356('0x9d0')]);});_0x4af6a2['length'];)_0x1cd79e=_0x1cd79e[_0x2959c2('0x577')](_0x4af6a2[_0x2959c2('0x3fa')](),_0x4af6a2[_0x2959c2('0x3fa')]());return _0x1cd79e;},_0x257f7f[_0x2c6e21('0x3ec')][_0x2c6e21('0x661')]=function(_0x401ce5){var _0x279883=_0x2c6e21;return _0x401ce5=_0x2e888b(this[_0x279883('0x7c2')],_0x401ce5),_0x3d3c0a(_0x401ce5[_0x279883('0xd03')],_0x401ce5['params'],_0x401ce5[_0x279883('0x780')])[_0x279883('0x95e')](/^\?/,'');},_0x5ded9b['forEach'](['delete',_0x2c6e21('0x715'),_0x2c6e21('0x2a'),_0x2c6e21('0xea')],function(_0x37901c){var _0x47db36=_0x2c6e21;_0x257f7f[_0x47db36('0x3ec')][_0x37901c]=function(_0x30990f,_0x1ff4ec){var _0x3251f7=_0x47db36;return this[_0x3251f7('0x20')](_0x2e888b(_0x1ff4ec||{},{'method':_0x37901c,'url':_0x30990f}));};}),_0x5ded9b['forEach']([_0x2c6e21('0xb2f'),_0x2c6e21('0x72c'),_0x2c6e21('0x4b8')],function(_0x4193ce){var _0xb47324=_0x2c6e21;_0x257f7f[_0xb47324('0x3ec')][_0x4193ce]=function(_0x467f5a,_0x5173b7,_0x340f6f){var _0x12737b=_0xb47324;return this[_0x12737b('0x20')](_0x2e888b(_0x340f6f||{},{'method':_0x4193ce,'url':_0x467f5a,'data':_0x5173b7}));};}),_0x59f483[_0x2c6e21('0x91e')]=_0x257f7f;},{'../helpers/buildURL':0x73,'./../utils':0x7b,'./InterceptorManager':0x69,'./dispatchRequest':0x6c,'./mergeConfig':0x6e}],0x69:[function(_0x488046,_0x19a840,_0xe7ba94){var _0x6acb24=_0x322f0f;'use strict';var _0x42f9e4=_0x488046('./../utils');function _0x7635e4(){this['handlers']=[];}_0x7635e4[_0x6acb24('0x3ec')][_0x6acb24('0x660')]=function(_0x21770f,_0x4c2457){var _0x4c1d45=_0x6acb24;return this['handlers'][_0x4c1d45('0x8cd')]({'fulfilled':_0x21770f,'rejected':_0x4c2457}),this[_0x4c1d45('0x0')]['length']-0x1;},_0x7635e4['prototype'][_0x6acb24('0xa1d')]=function(_0x22483f){this['handlers'][_0x22483f]&&(this['handlers'][_0x22483f]=null);},_0x7635e4[_0x6acb24('0x3ec')][_0x6acb24('0x7ed')]=function(_0x22243a){var _0x214149=_0x6acb24;_0x42f9e4[_0x214149('0x7ed')](this[_0x214149('0x0')],function(_0x10de6d){null!==_0x10de6d&&_0x22243a(_0x10de6d);});},_0x19a840[_0x6acb24('0x91e')]=_0x7635e4;},{'./../utils':0x7b}],0x6a:[function(_0x2cc0ca,_0xbd2c8,_0x541df7){var _0x17f0dc=_0x322f0f;'use strict';var _0x20f469=_0x2cc0ca('../helpers/isAbsoluteURL'),_0x2cb366=_0x2cc0ca(_0x17f0dc('0x8f7'));_0xbd2c8[_0x17f0dc('0x91e')]=function(_0x2f92a6,_0x1e31f7){return _0x2f92a6&&!_0x20f469(_0x1e31f7)?_0x2cb366(_0x2f92a6,_0x1e31f7):_0x1e31f7;};},{'../helpers/combineURLs':0x74,'../helpers/isAbsoluteURL':0x76}],0x6b:[function(_0x3fe1f2,_0x13e66a,_0x1da870){var _0x5424a0=_0x322f0f;'use strict';var _0xa2d798=_0x3fe1f2(_0x5424a0('0x60a'));_0x13e66a[_0x5424a0('0x91e')]=function(_0x41bf68,_0x441663,_0x2c1d1d,_0x577c7c,_0x200f35){var _0x50a4e4=new Error(_0x41bf68);return _0xa2d798(_0x50a4e4,_0x441663,_0x2c1d1d,_0x577c7c,_0x200f35);};},{'./enhanceError':0x6d}],0x6c:[function(_0x4a9caf,_0x5abcf1,_0x16e7b0){var _0x2749d6=_0x322f0f;'use strict';var _0x8624b=_0x4a9caf(_0x2749d6('0x8b2')),_0x16c650=_0x4a9caf(_0x2749d6('0x47a')),_0x1f69a7=_0x4a9caf(_0x2749d6('0x4ff')),_0x10e8b4=_0x4a9caf(_0x2749d6('0x97b'));function _0x3ee12f(_0x2ce51a){var _0x554bb4=_0x2749d6;_0x2ce51a[_0x554bb4('0x4f2')]&&_0x2ce51a[_0x554bb4('0x4f2')][_0x554bb4('0x1f2')]();}_0x5abcf1['exports']=function(_0x393d71){var _0xa143a9=_0x2749d6;return _0x3ee12f(_0x393d71),_0x393d71[_0xa143a9('0x795')]=_0x393d71[_0xa143a9('0x795')]||{},_0x393d71[_0xa143a9('0xc8f')]=_0x16c650(_0x393d71[_0xa143a9('0xc8f')],_0x393d71[_0xa143a9('0x795')],_0x393d71[_0xa143a9('0xa15')]),_0x393d71[_0xa143a9('0x795')]=_0x8624b[_0xa143a9('0x522')](_0x393d71[_0xa143a9('0x795')][_0xa143a9('0x16a')]||{},_0x393d71['headers'][_0x393d71[_0xa143a9('0x519')]]||{},_0x393d71[_0xa143a9('0x795')]),_0x8624b[_0xa143a9('0x7ed')]([_0xa143a9('0xc9d'),_0xa143a9('0x715'),_0xa143a9('0x2a'),_0xa143a9('0xb2f'),_0xa143a9('0x72c'),_0xa143a9('0x4b8'),'common'],function(_0x8dd7aa){var _0xfd9a90=_0xa143a9;delete _0x393d71[_0xfd9a90('0x795')][_0x8dd7aa];}),(_0x393d71[_0xa143a9('0x7c7')]||_0x10e8b4[_0xa143a9('0x7c7')])(_0x393d71)[_0xa143a9('0x577')](function(_0x1a8c83){var _0x2fd979=_0xa143a9;return _0x3ee12f(_0x393d71),_0x1a8c83['data']=_0x16c650(_0x1a8c83[_0x2fd979('0xc8f')],_0x1a8c83[_0x2fd979('0x795')],_0x393d71['transformResponse']),_0x1a8c83;},function(_0x1ee7be){var _0x34816b=_0xa143a9;return _0x1f69a7(_0x1ee7be)||(_0x3ee12f(_0x393d71),_0x1ee7be&&_0x1ee7be[_0x34816b('0x9f7')]&&(_0x1ee7be[_0x34816b('0x9f7')][_0x34816b('0xc8f')]=_0x16c650(_0x1ee7be[_0x34816b('0x9f7')][_0x34816b('0xc8f')],_0x1ee7be[_0x34816b('0x9f7')]['headers'],_0x393d71[_0x34816b('0xa30')]))),Promise['reject'](_0x1ee7be);});};},{'../cancel/isCancel':0x67,'../defaults':0x71,'./../utils':0x7b,'./transformData':0x70}],0x6d:[function(_0x4c51d1,_0x4307df,_0x209775){var _0x58d35e=_0x322f0f;'use strict';_0x4307df[_0x58d35e('0x91e')]=function(_0x236ac9,_0x40c069,_0x46ba61,_0x1d1615,_0x75f497){var _0x52181d=_0x58d35e;return _0x236ac9[_0x52181d('0x257')]=_0x40c069,_0x46ba61&&(_0x236ac9[_0x52181d('0x293')]=_0x46ba61),_0x236ac9['request']=_0x1d1615,_0x236ac9[_0x52181d('0x9f7')]=_0x75f497,_0x236ac9[_0x52181d('0x7f2')]=!0x0,_0x236ac9[_0x52181d('0xb30')]=function(){var _0x4a35d0=_0x52181d;return{'message':this['message'],'name':this[_0x4a35d0('0x9e')],'description':this[_0x4a35d0('0x399')],'number':this[_0x4a35d0('0x913')],'fileName':this[_0x4a35d0('0x171')],'lineNumber':this[_0x4a35d0('0x561')],'columnNumber':this[_0x4a35d0('0xc86')],'stack':this[_0x4a35d0('0xa83')],'config':this[_0x4a35d0('0x257')],'code':this[_0x4a35d0('0x293')]};},_0x236ac9;};},{}],0x6e:[function(_0xbf1321,_0x1d3ae0,_0x15d797){var _0x497ac7=_0x322f0f;'use strict';var _0x4f6d59=_0xbf1321('../utils');_0x1d3ae0[_0x497ac7('0x91e')]=function(_0x4f8857,_0x53a9da){var _0x3e4ee5=_0x497ac7;_0x53a9da=_0x53a9da||{};var _0xe79521={},_0xf748d7=[_0x3e4ee5('0xd03'),_0x3e4ee5('0x519'),_0x3e4ee5('0xc8f')],_0x4d3aaa=[_0x3e4ee5('0x795'),_0x3e4ee5('0x5b6'),_0x3e4ee5('0x58'),_0x3e4ee5('0x784')],_0x2ab32f=[_0x3e4ee5('0x90a'),_0x3e4ee5('0xa15'),_0x3e4ee5('0xa30'),'paramsSerializer',_0x3e4ee5('0xb02'),'timeoutMessage',_0x3e4ee5('0x858'),_0x3e4ee5('0x7c7'),_0x3e4ee5('0xd'),_0x3e4ee5('0xd28'),_0x3e4ee5('0xa81'),_0x3e4ee5('0x16e'),_0x3e4ee5('0xb9a'),_0x3e4ee5('0x2a5'),_0x3e4ee5('0xb5b'),_0x3e4ee5('0x48e'),_0x3e4ee5('0x383'),_0x3e4ee5('0x111'),_0x3e4ee5('0x3f3'),_0x3e4ee5('0x592'),_0x3e4ee5('0x4f2'),_0x3e4ee5('0x779'),'responseEncoding'],_0x10030e=[_0x3e4ee5('0x910')];function _0x6f4b3c(_0x29a413,_0x37f2d9){var _0x4c7056=_0x3e4ee5;return _0x4f6d59[_0x4c7056('0x7a')](_0x29a413)&&_0x4f6d59[_0x4c7056('0x7a')](_0x37f2d9)?_0x4f6d59['merge'](_0x29a413,_0x37f2d9):_0x4f6d59[_0x4c7056('0x7a')](_0x37f2d9)?_0x4f6d59[_0x4c7056('0x522')]({},_0x37f2d9):_0x4f6d59[_0x4c7056('0x9f2')](_0x37f2d9)?_0x37f2d9[_0x4c7056('0x63a')]():_0x37f2d9;}function _0x321a15(_0x4eb6ce){var _0x3796a4=_0x3e4ee5;_0x4f6d59[_0x3796a4('0xfb')](_0x53a9da[_0x4eb6ce])?_0x4f6d59[_0x3796a4('0xfb')](_0x4f8857[_0x4eb6ce])||(_0xe79521[_0x4eb6ce]=_0x6f4b3c(void 0x0,_0x4f8857[_0x4eb6ce])):_0xe79521[_0x4eb6ce]=_0x6f4b3c(_0x4f8857[_0x4eb6ce],_0x53a9da[_0x4eb6ce]);}_0x4f6d59[_0x3e4ee5('0x7ed')](_0xf748d7,function(_0x35e137){var _0x1ca1a3=_0x3e4ee5;_0x4f6d59[_0x1ca1a3('0xfb')](_0x53a9da[_0x35e137])||(_0xe79521[_0x35e137]=_0x6f4b3c(void 0x0,_0x53a9da[_0x35e137]));}),_0x4f6d59['forEach'](_0x4d3aaa,_0x321a15),_0x4f6d59[_0x3e4ee5('0x7ed')](_0x2ab32f,function(_0xb7df8d){var _0x3e6d29=_0x3e4ee5;_0x4f6d59['isUndefined'](_0x53a9da[_0xb7df8d])?_0x4f6d59[_0x3e6d29('0xfb')](_0x4f8857[_0xb7df8d])||(_0xe79521[_0xb7df8d]=_0x6f4b3c(void 0x0,_0x4f8857[_0xb7df8d])):_0xe79521[_0xb7df8d]=_0x6f4b3c(void 0x0,_0x53a9da[_0xb7df8d]);}),_0x4f6d59[_0x3e4ee5('0x7ed')](_0x10030e,function(_0x389641){_0x389641 in _0x53a9da?_0xe79521[_0x389641]=_0x6f4b3c(_0x4f8857[_0x389641],_0x53a9da[_0x389641]):_0x389641 in _0x4f8857&&(_0xe79521[_0x389641]=_0x6f4b3c(void 0x0,_0x4f8857[_0x389641]));});var _0x396d17=_0xf748d7[_0x3e4ee5('0x49e')](_0x4d3aaa)[_0x3e4ee5('0x49e')](_0x2ab32f)[_0x3e4ee5('0x49e')](_0x10030e),_0x5cb40b=Object[_0x3e4ee5('0x882')](_0x4f8857)['concat'](Object[_0x3e4ee5('0x882')](_0x53a9da))['filter'](function(_0x196c55){var _0x4588b7=_0x3e4ee5;return-0x1===_0x396d17[_0x4588b7('0x857')](_0x196c55);});return _0x4f6d59[_0x3e4ee5('0x7ed')](_0x5cb40b,_0x321a15),_0xe79521;};},{'../utils':0x7b}],0x6f:[function(_0x2b22c5,_0x244ec2,_0x2f1657){var _0x5537d2=_0x322f0f;'use strict';var _0x4b4094=_0x2b22c5(_0x5537d2('0x616'));_0x244ec2[_0x5537d2('0x91e')]=function(_0x32680b,_0x3c9883,_0x4ac5ad){var _0x24ed8c=_0x5537d2,_0x247bd6=_0x4ac5ad[_0x24ed8c('0x257')][_0x24ed8c('0x910')];_0x4ac5ad[_0x24ed8c('0x90d')]&&_0x247bd6&&!_0x247bd6(_0x4ac5ad['status'])?_0x3c9883(_0x4b4094(_0x24ed8c('0x97')+_0x4ac5ad[_0x24ed8c('0x90d')],_0x4ac5ad[_0x24ed8c('0x257')],null,_0x4ac5ad[_0x24ed8c('0x20')],_0x4ac5ad)):_0x32680b(_0x4ac5ad);};},{'./createError':0x6b}],0x70:[function(_0x2c99f8,_0x519bc3,_0x386a94){var _0x3749cb=_0x322f0f;'use strict';var _0x151764=_0x2c99f8(_0x3749cb('0x8b2'));_0x519bc3[_0x3749cb('0x91e')]=function(_0x29858f,_0x1d8632,_0x3cce99){var _0x4b9b44=_0x3749cb;return _0x151764[_0x4b9b44('0x7ed')](_0x3cce99,function(_0x47f918){_0x29858f=_0x47f918(_0x29858f,_0x1d8632);}),_0x29858f;};},{'./../utils':0x7b}],0x71:[function(_0x49b966,_0x440314,_0x38fa69){var _0x38ca74=_0x322f0f;(function(_0x21cb84){var _0x5bfb02=_0x3e44;'use strict';var _0x575933=_0x49b966(_0x5bfb02('0xb4b')),_0x225556=_0x49b966(_0x5bfb02('0xac9')),_0x4ac214={'Content-Type':_0x5bfb02('0x532')};function _0x58528e(_0x561aef,_0x14ed84){var _0x2d8893=_0x5bfb02;!_0x575933[_0x2d8893('0xfb')](_0x561aef)&&_0x575933[_0x2d8893('0xfb')](_0x561aef['Content-Type'])&&(_0x561aef['Content-Type']=_0x14ed84);}var _0x3bb7f5,_0x279e59={'adapter':(_0x5bfb02('0x396')!=typeof XMLHttpRequest?_0x3bb7f5=_0x49b966(_0x5bfb02('0xa29')):void 0x0!==_0x21cb84&&'[object\x20process]'===Object[_0x5bfb02('0x3ec')][_0x5bfb02('0x8dc')][_0x5bfb02('0x928')](_0x21cb84)&&(_0x3bb7f5=_0x49b966(_0x5bfb02('0x712'))),_0x3bb7f5),'transformRequest':[function(_0x267428,_0x1126f0){var _0x481984=_0x5bfb02;return _0x225556(_0x1126f0,'Accept'),_0x225556(_0x1126f0,'Content-Type'),_0x575933[_0x481984('0x884')](_0x267428)||_0x575933[_0x481984('0xd18')](_0x267428)||_0x575933[_0x481984('0x628')](_0x267428)||_0x575933[_0x481984('0x944')](_0x267428)||_0x575933[_0x481984('0xd91')](_0x267428)||_0x575933[_0x481984('0x5d9')](_0x267428)?_0x267428:_0x575933[_0x481984('0xb7e')](_0x267428)?_0x267428[_0x481984('0xa53')]:_0x575933[_0x481984('0x5d5')](_0x267428)?(_0x58528e(_0x1126f0,_0x481984('0x8dd')),_0x267428['toString']()):_0x575933['isObject'](_0x267428)?(_0x58528e(_0x1126f0,_0x481984('0x227')),JSON[_0x481984('0x263')](_0x267428)):_0x267428;}],'transformResponse':[function(_0x589d72){var _0x52652f=_0x5bfb02;if(_0x52652f('0x4ba')==typeof _0x589d72)try{_0x589d72=JSON[_0x52652f('0xb50')](_0x589d72);}catch(_0x3b5a15){}return _0x589d72;}],'timeout':0x0,'xsrfCookieName':'XSRF-TOKEN','xsrfHeaderName':_0x5bfb02('0x9f6'),'maxContentLength':-0x1,'maxBodyLength':-0x1,'validateStatus':function(_0x4ae9c4){return _0x4ae9c4>=0xc8&&_0x4ae9c4<0x12c;}};_0x279e59[_0x5bfb02('0x795')]={'common':{'Accept':_0x5bfb02('0xb51')}},_0x575933[_0x5bfb02('0x7ed')]([_0x5bfb02('0xc9d'),_0x5bfb02('0x715'),_0x5bfb02('0x2a')],function(_0xaabaab){var _0x5478da=_0x5bfb02;_0x279e59[_0x5478da('0x795')][_0xaabaab]={};}),_0x575933[_0x5bfb02('0x7ed')]([_0x5bfb02('0xb2f'),_0x5bfb02('0x72c'),_0x5bfb02('0x4b8')],function(_0x477bd6){var _0x252f6f=_0x5bfb02;_0x279e59[_0x252f6f('0x795')][_0x477bd6]=_0x575933[_0x252f6f('0x522')](_0x4ac214);}),_0x440314['exports']=_0x279e59;}[_0x38ca74('0x928')](this,_0x49b966(_0x38ca74('0x93e'))));},{'./adapters/http':0x63,'./adapters/xhr':0x63,'./helpers/normalizeHeaderName':0x78,'./utils':0x7b,'_process':0x6}],0x72:[function(_0x3202c1,_0x520484,_0xfd3d40){var _0x12ae9a=_0x322f0f;'use strict';_0x520484[_0x12ae9a('0x91e')]=function(_0x2e2d0f,_0x13b5b9){return function(){var _0x29fbff=_0x3e44;for(var _0x21917b=new Array(arguments[_0x29fbff('0x1d1')]),_0x2180f0=0x0;_0x2180f0<_0x21917b[_0x29fbff('0x1d1')];_0x2180f0++)_0x21917b[_0x2180f0]=arguments[_0x2180f0];return _0x2e2d0f['apply'](_0x13b5b9,_0x21917b);};};},{}],0x73:[function(_0xe11ef0,_0x360e9a,_0x40d76c){var _0x1b1458=_0x322f0f;'use strict';var _0x2a24e6=_0xe11ef0(_0x1b1458('0x8b2'));function _0x4360d6(_0x58685b){var _0x2cb373=_0x1b1458;return encodeURIComponent(_0x58685b)[_0x2cb373('0x95e')](/%3A/gi,':')[_0x2cb373('0x95e')](/%24/g,'$')[_0x2cb373('0x95e')](/%2C/gi,',')['replace'](/%20/g,'+')['replace'](/%5B/gi,'[')[_0x2cb373('0x95e')](/%5D/gi,']');}_0x360e9a[_0x1b1458('0x91e')]=function(_0x2f1fff,_0x3117c5,_0x58aee7){var _0x2cf32e=_0x1b1458;if(!_0x3117c5)return _0x2f1fff;var _0x54dab3;if(_0x58aee7)_0x54dab3=_0x58aee7(_0x3117c5);else{if(_0x2a24e6[_0x2cf32e('0x5d5')](_0x3117c5))_0x54dab3=_0x3117c5[_0x2cf32e('0x8dc')]();else{var _0x523393=[];_0x2a24e6[_0x2cf32e('0x7ed')](_0x3117c5,function(_0x5872d0,_0x4fc6c5){var _0x33b446=_0x2cf32e;null!=_0x5872d0&&(_0x2a24e6['isArray'](_0x5872d0)?_0x4fc6c5+='[]':_0x5872d0=[_0x5872d0],_0x2a24e6[_0x33b446('0x7ed')](_0x5872d0,function(_0x2aac4d){var _0x2d1205=_0x33b446;_0x2a24e6['isDate'](_0x2aac4d)?_0x2aac4d=_0x2aac4d[_0x2d1205('0x66c')]():_0x2a24e6[_0x2d1205('0xb6f')](_0x2aac4d)&&(_0x2aac4d=JSON[_0x2d1205('0x263')](_0x2aac4d)),_0x523393[_0x2d1205('0x8cd')](_0x4360d6(_0x4fc6c5)+'='+_0x4360d6(_0x2aac4d));}));}),_0x54dab3=_0x523393[_0x2cf32e('0x2ee')]('&');}}if(_0x54dab3){var _0x54dd98=_0x2f1fff[_0x2cf32e('0x857')]('#');-0x1!==_0x54dd98&&(_0x2f1fff=_0x2f1fff[_0x2cf32e('0x63a')](0x0,_0x54dd98)),_0x2f1fff+=(-0x1===_0x2f1fff[_0x2cf32e('0x857')]('?')?'?':'&')+_0x54dab3;}return _0x2f1fff;};},{'./../utils':0x7b}],0x74:[function(_0xf99263,_0x5bcf1f,_0x4f8662){var _0x40217a=_0x322f0f;'use strict';_0x5bcf1f[_0x40217a('0x91e')]=function(_0x4133f9,_0x59054d){var _0x19c2e6=_0x40217a;return _0x59054d?_0x4133f9[_0x19c2e6('0x95e')](/\/+$/,'')+'/'+_0x59054d[_0x19c2e6('0x95e')](/^\/+/,''):_0x4133f9;};},{}],0x75:[function(_0x197471,_0x4d931f,_0x51ccdf){var _0x117034=_0x322f0f;'use strict';var _0x411e84=_0x197471(_0x117034('0x8b2'));_0x4d931f[_0x117034('0x91e')]=_0x411e84[_0x117034('0x978')]()?{'write':function(_0x32bc10,_0x533216,_0x377850,_0x1de16c,_0x129d53,_0xc43447){var _0x18b1f0=_0x117034,_0x5c2616=[];_0x5c2616[_0x18b1f0('0x8cd')](_0x32bc10+'='+encodeURIComponent(_0x533216)),_0x411e84[_0x18b1f0('0xb81')](_0x377850)&&_0x5c2616['push']('expires='+new Date(_0x377850)[_0x18b1f0('0x25b')]()),_0x411e84[_0x18b1f0('0x99a')](_0x1de16c)&&_0x5c2616['push'](_0x18b1f0('0x1f5')+_0x1de16c),_0x411e84[_0x18b1f0('0x99a')](_0x129d53)&&_0x5c2616[_0x18b1f0('0x8cd')]('domain='+_0x129d53),!0x0===_0xc43447&&_0x5c2616['push']('secure'),document[_0x18b1f0('0x151')]=_0x5c2616[_0x18b1f0('0x2ee')](';\x20');},'read':function(_0x432cbd){var _0x38f185=_0x117034,_0x507dd9=document['cookie'][_0x38f185('0xa05')](new RegExp('(^|;\x5cs*)('+_0x432cbd+_0x38f185('0x3')));return _0x507dd9?decodeURIComponent(_0x507dd9[0x3]):null;},'remove':function(_0x58ebb2){var _0x207de1=_0x117034;this[_0x207de1('0x72')](_0x58ebb2,'',Date['now']()-0x5265c00);}}:{'write':function(){},'read':function(){return null;},'remove':function(){}};},{'./../utils':0x7b}],0x76:[function(_0xb94048,_0x36a6c9,_0x114da8){var _0x41d738=_0x322f0f;'use strict';_0x36a6c9[_0x41d738('0x91e')]=function(_0x2f728e){var _0x30a984=_0x41d738;return/^([a-z][a-z\d\+\-\.]*:)?\/\//i[_0x30a984('0xb03')](_0x2f728e);};},{}],0x77:[function(_0x57a6b1,_0x1b141c,_0x978775){var _0x3a8d8c=_0x322f0f;'use strict';var _0x3cbddb=_0x57a6b1(_0x3a8d8c('0x8b2'));_0x1b141c[_0x3a8d8c('0x91e')]=_0x3cbddb[_0x3a8d8c('0x978')]()?function(){var _0x40cb43=_0x3a8d8c,_0x4e1292,_0x2f700d=/(msie|trident)/i[_0x40cb43('0xb03')](navigator[_0x40cb43('0x398')]),_0x5e9c90=document[_0x40cb43('0x914')]('a');function _0x245d9f(_0x4bab19){var _0x22fbfd=_0x40cb43,_0x56b921=_0x4bab19;return _0x2f700d&&(_0x5e9c90[_0x22fbfd('0x583')]('href',_0x56b921),_0x56b921=_0x5e9c90['href']),_0x5e9c90['setAttribute'](_0x22fbfd('0x381'),_0x56b921),{'href':_0x5e9c90[_0x22fbfd('0x381')],'protocol':_0x5e9c90[_0x22fbfd('0x77d')]?_0x5e9c90[_0x22fbfd('0x77d')][_0x22fbfd('0x95e')](/:$/,''):'','host':_0x5e9c90[_0x22fbfd('0xa2')],'search':_0x5e9c90[_0x22fbfd('0xd57')]?_0x5e9c90[_0x22fbfd('0xd57')][_0x22fbfd('0x95e')](/^\?/,''):'','hash':_0x5e9c90[_0x22fbfd('0x35d')]?_0x5e9c90[_0x22fbfd('0x35d')][_0x22fbfd('0x95e')](/^#/,''):'','hostname':_0x5e9c90[_0x22fbfd('0x53a')],'port':_0x5e9c90[_0x22fbfd('0x59e')],'pathname':'/'===_0x5e9c90['pathname']['charAt'](0x0)?_0x5e9c90[_0x22fbfd('0x7e3')]:'/'+_0x5e9c90[_0x22fbfd('0x7e3')]};}return _0x4e1292=_0x245d9f(window[_0x40cb43('0x83e')][_0x40cb43('0x381')]),function(_0x4301ef){var _0x50bf37=_0x40cb43,_0x3fb20b=_0x3cbddb[_0x50bf37('0x99a')](_0x4301ef)?_0x245d9f(_0x4301ef):_0x4301ef;return _0x3fb20b[_0x50bf37('0x77d')]===_0x4e1292[_0x50bf37('0x77d')]&&_0x3fb20b[_0x50bf37('0xa2')]===_0x4e1292['host'];};}():function(){return!0x0;};},{'./../utils':0x7b}],0x78:[function(_0x2bfbcb,_0x289d0d,_0x29ce68){var _0x25ff49=_0x322f0f;'use strict';var _0x3e61ca=_0x2bfbcb(_0x25ff49('0x447'));_0x289d0d[_0x25ff49('0x91e')]=function(_0x3e4424,_0x509ef3){var _0xf99c39=_0x25ff49;_0x3e61ca[_0xf99c39('0x7ed')](_0x3e4424,function(_0xc4c130,_0x2fb423){var _0x188624=_0xf99c39;_0x2fb423!==_0x509ef3&&_0x2fb423['toUpperCase']()===_0x509ef3[_0x188624('0x637')]()&&(_0x3e4424[_0x509ef3]=_0xc4c130,delete _0x3e4424[_0x2fb423]);});};},{'../utils':0x7b}],0x79:[function(_0x3883d2,_0x31ffbb,_0x2036e0){var _0x2c6c04=_0x322f0f;'use strict';var _0x5541a8=_0x3883d2(_0x2c6c04('0x8b2')),_0x16d16e=[_0x2c6c04('0x4df'),_0x2c6c04('0x979'),_0x2c6c04('0xade'),_0x2c6c04('0xa2a'),'etag',_0x2c6c04('0xc09'),_0x2c6c04('0x868'),'host',_0x2c6c04('0x17b'),_0x2c6c04('0x8c1'),'last-modified',_0x2c6c04('0x83e'),'max-forwards',_0x2c6c04('0xd67'),_0x2c6c04('0xcc7'),_0x2c6c04('0xd6'),_0x2c6c04('0x681')];_0x31ffbb[_0x2c6c04('0x91e')]=function(_0x4a0a19){var _0x11f944=_0x2c6c04,_0x158ed2,_0x1ee258,_0x3c8879,_0x1c3866={};return _0x4a0a19?(_0x5541a8['forEach'](_0x4a0a19[_0x11f944('0x5a0')]('\x0a'),function(_0x5a6620){var _0x42dd08=_0x11f944;if(_0x3c8879=_0x5a6620[_0x42dd08('0x857')](':'),_0x158ed2=_0x5541a8['trim'](_0x5a6620[_0x42dd08('0x926')](0x0,_0x3c8879))[_0x42dd08('0x5d')](),_0x1ee258=_0x5541a8[_0x42dd08('0x773')](_0x5a6620[_0x42dd08('0x926')](_0x3c8879+0x1)),_0x158ed2){if(_0x1c3866[_0x158ed2]&&_0x16d16e[_0x42dd08('0x857')](_0x158ed2)>=0x0)return;_0x1c3866[_0x158ed2]=_0x42dd08('0xbba')===_0x158ed2?(_0x1c3866[_0x158ed2]?_0x1c3866[_0x158ed2]:[])[_0x42dd08('0x49e')]([_0x1ee258]):_0x1c3866[_0x158ed2]?_0x1c3866[_0x158ed2]+',\x20'+_0x1ee258:_0x1ee258;}}),_0x1c3866):_0x1c3866;};},{'./../utils':0x7b}],0x7a:[function(_0x352b54,_0x3b63a7,_0x32a4b8){var _0x55fab3=_0x322f0f;'use strict';_0x3b63a7[_0x55fab3('0x91e')]=function(_0x47ae7e){return function(_0x39eddc){return _0x47ae7e['apply'](null,_0x39eddc);};};},{}],0x7b:[function(_0x5eef0f,_0x6bae0a,_0x13d88d){var _0x2a3d91=_0x322f0f;'use strict';var _0x55d5bf=_0x5eef0f('./helpers/bind'),_0x42bad3=Object[_0x2a3d91('0x3ec')][_0x2a3d91('0x8dc')];function _0x2fec24(_0x2826c0){var _0x20062f=_0x2a3d91;return _0x20062f('0x1e1')===_0x42bad3[_0x20062f('0x928')](_0x2826c0);}function _0x733cec(_0x19006c){return void 0x0===_0x19006c;}function _0x3a8e52(_0x4f5f82){var _0x4c57bc=_0x2a3d91;return null!==_0x4f5f82&&_0x4c57bc('0x669')==typeof _0x4f5f82;}function _0x5a714a(_0x104cc1){var _0x53bbd6=_0x2a3d91;if(_0x53bbd6('0x367')!==_0x42bad3[_0x53bbd6('0x928')](_0x104cc1))return!0x1;var _0x32a13b=Object['getPrototypeOf'](_0x104cc1);return null===_0x32a13b||_0x32a13b===Object['prototype'];}function _0x19f4b6(_0x3408c4){var _0x27ac3d=_0x2a3d91;return _0x27ac3d('0xbe1')===_0x42bad3[_0x27ac3d('0x928')](_0x3408c4);}function _0x2ade8f(_0x480c85,_0x16a183){var _0x252968=_0x2a3d91;if(null!=_0x480c85){if(_0x252968('0x669')!=typeof _0x480c85&&(_0x480c85=[_0x480c85]),_0x2fec24(_0x480c85))for(var _0x758f0b=0x0,_0x8b8718=_0x480c85[_0x252968('0x1d1')];_0x758f0b<_0x8b8718;_0x758f0b++)_0x16a183['call'](null,_0x480c85[_0x758f0b],_0x758f0b,_0x480c85);else for(var _0x271cd2 in _0x480c85)Object[_0x252968('0x3ec')][_0x252968('0x106')][_0x252968('0x928')](_0x480c85,_0x271cd2)&&_0x16a183['call'](null,_0x480c85[_0x271cd2],_0x271cd2,_0x480c85);}}_0x6bae0a['exports']={'isArray':_0x2fec24,'isArrayBuffer':function(_0x799803){var _0x1ab935=_0x2a3d91;return _0x1ab935('0x3f8')===_0x42bad3[_0x1ab935('0x928')](_0x799803);},'isBuffer':function(_0xcb6dba){var _0x8708cb=_0x2a3d91;return null!==_0xcb6dba&&!_0x733cec(_0xcb6dba)&&null!==_0xcb6dba[_0x8708cb('0xbe8')]&&!_0x733cec(_0xcb6dba[_0x8708cb('0xbe8')])&&_0x8708cb('0x67')==typeof _0xcb6dba['constructor']['isBuffer']&&_0xcb6dba[_0x8708cb('0xbe8')]['isBuffer'](_0xcb6dba);},'isFormData':function(_0x182695){return'undefined'!=typeof FormData&&_0x182695 instanceof FormData;},'isArrayBufferView':function(_0x4238ba){var _0x2f955d=_0x2a3d91;return _0x2f955d('0x396')!=typeof ArrayBuffer&&ArrayBuffer[_0x2f955d('0x69f')]?ArrayBuffer['isView'](_0x4238ba):_0x4238ba&&_0x4238ba[_0x2f955d('0xa53')]&&_0x4238ba[_0x2f955d('0xa53')]instanceof ArrayBuffer;},'isString':function(_0xc28c5a){var _0x16ec15=_0x2a3d91;return _0x16ec15('0x4ba')==typeof _0xc28c5a;},'isNumber':function(_0x11db86){var _0x5c45af=_0x2a3d91;return _0x5c45af('0x913')==typeof _0x11db86;},'isObject':_0x3a8e52,'isPlainObject':_0x5a714a,'isUndefined':_0x733cec,'isDate':function(_0xe2c107){return'[object\x20Date]'===_0x42bad3['call'](_0xe2c107);},'isFile':function(_0x2e4cab){var _0x30f170=_0x2a3d91;return _0x30f170('0x987')===_0x42bad3[_0x30f170('0x928')](_0x2e4cab);},'isBlob':function(_0x14f4d0){var _0x3bb580=_0x2a3d91;return'[object\x20Blob]'===_0x42bad3[_0x3bb580('0x928')](_0x14f4d0);},'isFunction':_0x19f4b6,'isStream':function(_0x5c29b2){var _0x21a6fe=_0x2a3d91;return _0x3a8e52(_0x5c29b2)&&_0x19f4b6(_0x5c29b2[_0x21a6fe('0xc03')]);},'isURLSearchParams':function(_0x401042){return'undefined'!=typeof URLSearchParams&&_0x401042 instanceof URLSearchParams;},'isStandardBrowserEnv':function(){var _0x4c2277=_0x2a3d91;return(_0x4c2277('0x396')==typeof navigator||_0x4c2277('0xd7c')!==navigator[_0x4c2277('0x9d6')]&&_0x4c2277('0x44b')!==navigator['product']&&'NS'!==navigator[_0x4c2277('0x9d6')])&&(_0x4c2277('0x396')!=typeof window&&_0x4c2277('0x396')!=typeof document);},'forEach':_0x2ade8f,'merge':function _0x4b785b(){var _0x3405ea=_0x2a3d91,_0xd65e6c={};function _0x10b451(_0x35d700,_0x4c26de){var _0x1989fc=_0x3e44;_0x5a714a(_0xd65e6c[_0x4c26de])&&_0x5a714a(_0x35d700)?_0xd65e6c[_0x4c26de]=_0x4b785b(_0xd65e6c[_0x4c26de],_0x35d700):_0x5a714a(_0x35d700)?_0xd65e6c[_0x4c26de]=_0x4b785b({},_0x35d700):_0x2fec24(_0x35d700)?_0xd65e6c[_0x4c26de]=_0x35d700[_0x1989fc('0x63a')]():_0xd65e6c[_0x4c26de]=_0x35d700;}for(var _0x23071d=0x0,_0x37b4e3=arguments[_0x3405ea('0x1d1')];_0x23071d<_0x37b4e3;_0x23071d++)_0x2ade8f(arguments[_0x23071d],_0x10b451);return _0xd65e6c;},'extend':function(_0x3e2817,_0x34cd11,_0x9183d7){return _0x2ade8f(_0x34cd11,function(_0x149715,_0xfdd425){var _0x3e7da9=_0x3e44;_0x3e2817[_0xfdd425]=_0x9183d7&&_0x3e7da9('0x67')==typeof _0x149715?_0x55d5bf(_0x149715,_0x9183d7):_0x149715;}),_0x3e2817;},'trim':function(_0x458868){var _0x485bd5=_0x2a3d91;return _0x458868[_0x485bd5('0x95e')](/^\s*/,'')[_0x485bd5('0x95e')](/\s*$/,'');},'stripBOM':function(_0x5b6322){return 0xfeff===_0x5b6322['charCodeAt'](0x0)&&(_0x5b6322=_0x5b6322['slice'](0x1)),_0x5b6322;}};},{'./helpers/bind':0x72}],0x7c:[function(_0x42c874,_0xfe3ec5,_0x143057){var _0x5ede2c=_0x322f0f,_0x225916=_0x42c874(_0x5ede2c('0xec'))(_0x42c874(_0x5ede2c('0x90e')),_0x5ede2c('0xae5'));_0xfe3ec5['exports']=_0x225916;},{'./_getNative':0xcf,'./_root':0xfa}],0x7d:[function(_0x317619,_0xf957ab,_0x37f95e){var _0x5a73a8=_0x322f0f,_0xa7297a=_0x317619('./_hashClear'),_0x1f4b97=_0x317619('./_hashDelete'),_0x8abed=_0x317619(_0x5a73a8('0x842')),_0x2fd29f=_0x317619(_0x5a73a8('0x955')),_0x3aa5cc=_0x317619(_0x5a73a8('0x6cd'));function _0x976f1e(_0x537cdf){var _0x53ac98=_0x5a73a8,_0x1d086d=-0x1,_0x117a3f=null==_0x537cdf?0x0:_0x537cdf[_0x53ac98('0x1d1')];for(this['clear']();++_0x1d086d<_0x117a3f;){var _0x151a04=_0x537cdf[_0x1d086d];this[_0x53ac98('0x8ab')](_0x151a04[0x0],_0x151a04[0x1]);}}_0x976f1e['prototype']['clear']=_0xa7297a,_0x976f1e[_0x5a73a8('0x3ec')][_0x5a73a8('0xc9d')]=_0x1f4b97,_0x976f1e[_0x5a73a8('0x3ec')][_0x5a73a8('0x715')]=_0x8abed,_0x976f1e[_0x5a73a8('0x3ec')]['has']=_0x2fd29f,_0x976f1e['prototype']['set']=_0x3aa5cc,_0xf957ab[_0x5a73a8('0x91e')]=_0x976f1e;},{'./_hashClear':0xd7,'./_hashDelete':0xd8,'./_hashGet':0xd9,'./_hashHas':0xda,'./_hashSet':0xdb}],0x7e:[function(_0x3f0f11,_0x23477c,_0x32e650){var _0x494efe=_0x322f0f,_0x5f2911=_0x3f0f11('./_listCacheClear'),_0x28697f=_0x3f0f11('./_listCacheDelete'),_0x550c4e=_0x3f0f11(_0x494efe('0xc38')),_0x2b809a=_0x3f0f11('./_listCacheHas'),_0x19c460=_0x3f0f11('./_listCacheSet');function _0xfab764(_0x25d2a5){var _0x1f4e0e=_0x494efe,_0x562455=-0x1,_0x327e96=null==_0x25d2a5?0x0:_0x25d2a5['length'];for(this[_0x1f4e0e('0x4c')]();++_0x562455<_0x327e96;){var _0x2bfa26=_0x25d2a5[_0x562455];this[_0x1f4e0e('0x8ab')](_0x2bfa26[0x0],_0x2bfa26[0x1]);}}_0xfab764[_0x494efe('0x3ec')]['clear']=_0x5f2911,_0xfab764[_0x494efe('0x3ec')]['delete']=_0x28697f,_0xfab764[_0x494efe('0x3ec')]['get']=_0x550c4e,_0xfab764['prototype'][_0x494efe('0x16d')]=_0x2b809a,_0xfab764[_0x494efe('0x3ec')][_0x494efe('0x8ab')]=_0x19c460,_0x23477c['exports']=_0xfab764;},{'./_listCacheClear':0xe6,'./_listCacheDelete':0xe7,'./_listCacheGet':0xe8,'./_listCacheHas':0xe9,'./_listCacheSet':0xea}],0x7f:[function(_0x2263b3,_0x4ee14c,_0x4f3989){var _0x38cf70=_0x322f0f,_0x189c85=_0x2263b3(_0x38cf70('0xec'))(_0x2263b3(_0x38cf70('0x90e')),_0x38cf70('0x410'));_0x4ee14c[_0x38cf70('0x91e')]=_0x189c85;},{'./_getNative':0xcf,'./_root':0xfa}],0x80:[function(_0x4ef6a4,_0x456d3f,_0x23cb2a){var _0x2659d7=_0x322f0f,_0x3d3b3e=_0x4ef6a4('./_mapCacheClear'),_0xea7d80=_0x4ef6a4(_0x2659d7('0x6a8')),_0x5f3b3c=_0x4ef6a4('./_mapCacheGet'),_0x56cfe0=_0x4ef6a4(_0x2659d7('0xc1a')),_0x5f514c=_0x4ef6a4(_0x2659d7('0x4bb'));function _0x24e09a(_0x1ab300){var _0x42c8ef=_0x2659d7,_0x13d384=-0x1,_0x161cb0=null==_0x1ab300?0x0:_0x1ab300[_0x42c8ef('0x1d1')];for(this[_0x42c8ef('0x4c')]();++_0x13d384<_0x161cb0;){var _0x3d7984=_0x1ab300[_0x13d384];this[_0x42c8ef('0x8ab')](_0x3d7984[0x0],_0x3d7984[0x1]);}}_0x24e09a[_0x2659d7('0x3ec')]['clear']=_0x3d3b3e,_0x24e09a[_0x2659d7('0x3ec')][_0x2659d7('0xc9d')]=_0xea7d80,_0x24e09a[_0x2659d7('0x3ec')]['get']=_0x5f3b3c,_0x24e09a[_0x2659d7('0x3ec')][_0x2659d7('0x16d')]=_0x56cfe0,_0x24e09a['prototype'][_0x2659d7('0x8ab')]=_0x5f514c,_0x456d3f[_0x2659d7('0x91e')]=_0x24e09a;},{'./_mapCacheClear':0xeb,'./_mapCacheDelete':0xec,'./_mapCacheGet':0xed,'./_mapCacheHas':0xee,'./_mapCacheSet':0xef}],0x81:[function(_0x44e957,_0x47b8da,_0x582eb5){var _0x4cb5a9=_0x322f0f,_0x320ef7=_0x44e957('./_getNative')(_0x44e957(_0x4cb5a9('0x90e')),_0x4cb5a9('0x73d'));_0x47b8da[_0x4cb5a9('0x91e')]=_0x320ef7;},{'./_getNative':0xcf,'./_root':0xfa}],0x82:[function(_0x3e1cd9,_0xc7bdc,_0x11d9d3){var _0x55ecc5=_0x322f0f,_0x11859d=_0x3e1cd9(_0x55ecc5('0xec'))(_0x3e1cd9(_0x55ecc5('0x90e')),_0x55ecc5('0x2d'));_0xc7bdc[_0x55ecc5('0x91e')]=_0x11859d;},{'./_getNative':0xcf,'./_root':0xfa}],0x83:[function(_0x52a066,_0x4342e9,_0x178ba4){var _0x7c1e4=_0x322f0f,_0x4fd742=_0x52a066(_0x7c1e4('0x2ff')),_0x1055f2=_0x52a066(_0x7c1e4('0x163')),_0xa5449c=_0x52a066(_0x7c1e4('0x21'));function _0x307cd0(_0x333bd7){var _0x2661b0=_0x7c1e4,_0x1b50db=-0x1,_0x2802f9=null==_0x333bd7?0x0:_0x333bd7[_0x2661b0('0x1d1')];for(this['__data__']=new _0x4fd742();++_0x1b50db<_0x2802f9;)this[_0x2661b0('0x3fb')](_0x333bd7[_0x1b50db]);}_0x307cd0[_0x7c1e4('0x3ec')]['add']=_0x307cd0['prototype'][_0x7c1e4('0x8cd')]=_0x1055f2,_0x307cd0[_0x7c1e4('0x3ec')]['has']=_0xa5449c,_0x4342e9['exports']=_0x307cd0;},{'./_MapCache':0x80,'./_setCacheAdd':0xfc,'./_setCacheHas':0xfd}],0x84:[function(_0x20ff72,_0x21f7b5,_0x4de3dd){var _0x45eca0=_0x322f0f,_0x2f3fae=_0x20ff72('./_ListCache'),_0x5e2d17=_0x20ff72('./_stackClear'),_0x501355=_0x20ff72(_0x45eca0('0x452')),_0x3f151b=_0x20ff72('./_stackGet'),_0x1a0432=_0x20ff72(_0x45eca0('0x3e5')),_0x3b0015=_0x20ff72(_0x45eca0('0xca1'));function _0x3d4e79(_0x17123c){var _0x5924db=_0x45eca0,_0x551580=this[_0x5924db('0x329')]=new _0x2f3fae(_0x17123c);this[_0x5924db('0xbd0')]=_0x551580[_0x5924db('0xbd0')];}_0x3d4e79[_0x45eca0('0x3ec')][_0x45eca0('0x4c')]=_0x5e2d17,_0x3d4e79['prototype']['delete']=_0x501355,_0x3d4e79['prototype'][_0x45eca0('0x715')]=_0x3f151b,_0x3d4e79['prototype'][_0x45eca0('0x16d')]=_0x1a0432,_0x3d4e79[_0x45eca0('0x3ec')][_0x45eca0('0x8ab')]=_0x3b0015,_0x21f7b5[_0x45eca0('0x91e')]=_0x3d4e79;},{'./_ListCache':0x7e,'./_stackClear':0x101,'./_stackDelete':0x102,'./_stackGet':0x103,'./_stackHas':0x104,'./_stackSet':0x105}],0x85:[function(_0x2de53c,_0x5a49db,_0xa04424){var _0x4deea3=_0x322f0f,_0xccd4fc=_0x2de53c(_0x4deea3('0x90e'))[_0x4deea3('0xa97')];_0x5a49db[_0x4deea3('0x91e')]=_0xccd4fc;},{'./_root':0xfa}],0x86:[function(_0xbb069c,_0x52ef9f,_0xa8026e){var _0x484346=_0x322f0f,_0x16751c=_0xbb069c(_0x484346('0x90e'))['Uint8Array'];_0x52ef9f['exports']=_0x16751c;},{'./_root':0xfa}],0x87:[function(_0xf7e19,_0x5a1454,_0x3ed2b9){var _0x342452=_0x322f0f,_0x3559c6=_0xf7e19(_0x342452('0xec'))(_0xf7e19(_0x342452('0x90e')),'WeakMap');_0x5a1454[_0x342452('0x91e')]=_0x3559c6;},{'./_getNative':0xcf,'./_root':0xfa}],0x88:[function(_0x38701b,_0x5d8814,_0x52dfc4){var _0x187a56=_0x322f0f;_0x5d8814[_0x187a56('0x91e')]=function(_0x2fa499,_0x54ce90,_0x21b98f){var _0xc14b59=_0x187a56;switch(_0x21b98f['length']){case 0x0:return _0x2fa499[_0xc14b59('0x928')](_0x54ce90);case 0x1:return _0x2fa499['call'](_0x54ce90,_0x21b98f[0x0]);case 0x2:return _0x2fa499[_0xc14b59('0x928')](_0x54ce90,_0x21b98f[0x0],_0x21b98f[0x1]);case 0x3:return _0x2fa499[_0xc14b59('0x928')](_0x54ce90,_0x21b98f[0x0],_0x21b98f[0x1],_0x21b98f[0x2]);}return _0x2fa499[_0xc14b59('0x7da')](_0x54ce90,_0x21b98f);};},{}],0x89:[function(_0x4637e6,_0x1df40a,_0x4138f2){var _0x52236c=_0x322f0f;_0x1df40a[_0x52236c('0x91e')]=function(_0xdb25c5,_0xd1c158){for(var _0x1000ba=-0x1,_0x1fb286=null==_0xdb25c5?0x0:_0xdb25c5['length'];++_0x1000ba<_0x1fb286&&!0x1!==_0xd1c158(_0xdb25c5[_0x1000ba],_0x1000ba,_0xdb25c5););return _0xdb25c5;};},{}],0x8a:[function(_0x46e4b2,_0x2b1916,_0x1e8dec){_0x2b1916['exports']=function(_0x3c0795,_0xc2f16){var _0x1bdb3e=_0x3e44;for(var _0x436634=-0x1,_0x354fa7=null==_0x3c0795?0x0:_0x3c0795[_0x1bdb3e('0x1d1')],_0x4ca42c=0x0,_0x102ce9=[];++_0x436634<_0x354fa7;){var _0x98de14=_0x3c0795[_0x436634];_0xc2f16(_0x98de14,_0x436634,_0x3c0795)&&(_0x102ce9[_0x4ca42c++]=_0x98de14);}return _0x102ce9;};},{}],0x8b:[function(_0x1a3073,_0xa6be8e,_0x2077d2){var _0x1fd4e2=_0x322f0f,_0x4a6de9=_0x1a3073(_0x1fd4e2('0x96e')),_0x2d7b23=_0x1a3073(_0x1fd4e2('0x8cc')),_0x50e8af=_0x1a3073(_0x1fd4e2('0x3ee')),_0x40eed0=_0x1a3073(_0x1fd4e2('0xb82')),_0x461193=_0x1a3073(_0x1fd4e2('0x355')),_0x420feb=_0x1a3073(_0x1fd4e2('0x8ef')),_0x3ca71b=Object[_0x1fd4e2('0x3ec')][_0x1fd4e2('0x106')];_0xa6be8e[_0x1fd4e2('0x91e')]=function(_0x276a12,_0x4c2a99){var _0x1ee5ab=_0x1fd4e2,_0x388938=_0x50e8af(_0x276a12),_0xe6ab14=!_0x388938&&_0x2d7b23(_0x276a12),_0x553093=!_0x388938&&!_0xe6ab14&&_0x40eed0(_0x276a12),_0x21682d=!_0x388938&&!_0xe6ab14&&!_0x553093&&_0x420feb(_0x276a12),_0x5dae18=_0x388938||_0xe6ab14||_0x553093||_0x21682d,_0x31758d=_0x5dae18?_0x4a6de9(_0x276a12[_0x1ee5ab('0x1d1')],String):[],_0x559578=_0x31758d['length'];for(var _0x3e9613 in _0x276a12)!_0x4c2a99&&!_0x3ca71b[_0x1ee5ab('0x928')](_0x276a12,_0x3e9613)||_0x5dae18&&('length'==_0x3e9613||_0x553093&&('offset'==_0x3e9613||_0x1ee5ab('0xd14')==_0x3e9613)||_0x21682d&&('buffer'==_0x3e9613||_0x1ee5ab('0x738')==_0x3e9613||_0x1ee5ab('0x6c8')==_0x3e9613)||_0x461193(_0x3e9613,_0x559578))||_0x31758d[_0x1ee5ab('0x8cd')](_0x3e9613);return _0x31758d;};},{'./_baseTimes':0xb2,'./_isIndex':0xdf,'./isArguments':0x113,'./isArray':0x114,'./isBuffer':0x117,'./isTypedArray':0x121}],0x8c:[function(_0x243a49,_0x38a597,_0x1abae6){var _0x4b9f47=_0x322f0f;_0x38a597[_0x4b9f47('0x91e')]=function(_0x2bbe93,_0x282bcd){var _0x2c3866=_0x4b9f47;for(var _0x3fa636=-0x1,_0x420efe=null==_0x2bbe93?0x0:_0x2bbe93[_0x2c3866('0x1d1')],_0x53c8b8=Array(_0x420efe);++_0x3fa636<_0x420efe;)_0x53c8b8[_0x3fa636]=_0x282bcd(_0x2bbe93[_0x3fa636],_0x3fa636,_0x2bbe93);return _0x53c8b8;};},{}],0x8d:[function(_0x186a5a,_0x42e08b,_0x187f97){var _0x699ef4=_0x322f0f;_0x42e08b[_0x699ef4('0x91e')]=function(_0x599e97,_0x1365ff){var _0xf3ad96=_0x699ef4;for(var _0x2a77b1=-0x1,_0x134816=_0x1365ff[_0xf3ad96('0x1d1')],_0x8c7c6a=_0x599e97[_0xf3ad96('0x1d1')];++_0x2a77b1<_0x134816;)_0x599e97[_0x8c7c6a+_0x2a77b1]=_0x1365ff[_0x2a77b1];return _0x599e97;};},{}],0x8e:[function(_0x560b64,_0x13c640,_0x4096a4){var _0xb94bc3=_0x322f0f;_0x13c640[_0xb94bc3('0x91e')]=function(_0x592a39,_0xfe3100){var _0x3eda4c=_0xb94bc3;for(var _0xf8c7d=-0x1,_0x382b42=null==_0x592a39?0x0:_0x592a39[_0x3eda4c('0x1d1')];++_0xf8c7d<_0x382b42;)if(_0xfe3100(_0x592a39[_0xf8c7d],_0xf8c7d,_0x592a39))return!0x0;return!0x1;};},{}],0x8f:[function(_0x218f52,_0x4e2147,_0x47de38){var _0x5beabd=_0x322f0f,_0x26509f=_0x218f52(_0x5beabd('0x7b7')),_0x4d97d6=_0x218f52('./eq');_0x4e2147['exports']=function(_0xb51124,_0x269f0e,_0x2c1e7d){(void 0x0!==_0x2c1e7d&&!_0x4d97d6(_0xb51124[_0x269f0e],_0x2c1e7d)||void 0x0===_0x2c1e7d&&!(_0x269f0e in _0xb51124))&&_0x26509f(_0xb51124,_0x269f0e,_0x2c1e7d);};},{'./_baseAssignValue':0x94,'./eq':0x10d}],0x90:[function(_0x25a6e1,_0x145b8a,_0x3b9c27){var _0x410aa2=_0x322f0f,_0x156de7=_0x25a6e1(_0x410aa2('0x7b7')),_0x25fbbf=_0x25a6e1(_0x410aa2('0x7cf')),_0x36e5d8=Object[_0x410aa2('0x3ec')][_0x410aa2('0x106')];_0x145b8a[_0x410aa2('0x91e')]=function(_0x58abf6,_0x2d804f,_0x354784){var _0xb04c54=_0x410aa2,_0x175bff=_0x58abf6[_0x2d804f];_0x36e5d8[_0xb04c54('0x928')](_0x58abf6,_0x2d804f)&&_0x25fbbf(_0x175bff,_0x354784)&&(void 0x0!==_0x354784||_0x2d804f in _0x58abf6)||_0x156de7(_0x58abf6,_0x2d804f,_0x354784);};},{'./_baseAssignValue':0x94,'./eq':0x10d}],0x91:[function(_0x27f326,_0x4fa591,_0x366a06){var _0x46fd9d=_0x322f0f,_0x2c320b=_0x27f326(_0x46fd9d('0x7cf'));_0x4fa591[_0x46fd9d('0x91e')]=function(_0x329ce7,_0x11f2c0){var _0x441fca=_0x46fd9d;for(var _0x1ff27d=_0x329ce7[_0x441fca('0x1d1')];_0x1ff27d--;)if(_0x2c320b(_0x329ce7[_0x1ff27d][0x0],_0x11f2c0))return _0x1ff27d;return-0x1;};},{'./eq':0x10d}],0x92:[function(_0x5cf760,_0xb10eb0,_0xd5f32){var _0xbd3922=_0x322f0f,_0x32bcdc=_0x5cf760(_0xbd3922('0x4d1')),_0x19feab=_0x5cf760('./keys');_0xb10eb0[_0xbd3922('0x91e')]=function(_0x26d383,_0x45f1ad){return _0x26d383&&_0x32bcdc(_0x45f1ad,_0x19feab(_0x45f1ad),_0x26d383);};},{'./_copyObject':0xbf,'./keys':0x123}],0x93:[function(_0x2d0380,_0x42adfa,_0x101134){var _0x1215f9=_0x322f0f,_0xced822=_0x2d0380(_0x1215f9('0x4d1')),_0x2ef4fe=_0x2d0380(_0x1215f9('0x14b'));_0x42adfa[_0x1215f9('0x91e')]=function(_0x93d53a,_0x1656b8){return _0x93d53a&&_0xced822(_0x1656b8,_0x2ef4fe(_0x1656b8),_0x93d53a);};},{'./_copyObject':0xbf,'./keysIn':0x124}],0x94:[function(_0x3dc06b,_0x29596d,_0x22fc11){var _0x21db8c=_0x322f0f,_0xdc8aa1=_0x3dc06b(_0x21db8c('0xd32'));_0x29596d['exports']=function(_0x4af0cc,_0x5845c8,_0x4614d4){'__proto__'==_0x5845c8&&_0xdc8aa1?_0xdc8aa1(_0x4af0cc,_0x5845c8,{'configurable':!0x0,'enumerable':!0x0,'value':_0x4614d4,'writable':!0x0}):_0x4af0cc[_0x5845c8]=_0x4614d4;};},{'./_defineProperty':0xc6}],0x95:[function(_0x14240e,_0x5656b2,_0x1e3eb8){var _0x536da4=_0x322f0f,_0x4e4463=_0x14240e(_0x536da4('0x78e')),_0x49274d=_0x14240e(_0x536da4('0x537')),_0x36819c=_0x14240e(_0x536da4('0xc7a')),_0x34eb3f=_0x14240e('./_baseAssign'),_0x168507=_0x14240e(_0x536da4('0x8c4')),_0x201269=_0x14240e(_0x536da4('0x538')),_0x3e4019=_0x14240e('./_copyArray'),_0xfc630=_0x14240e(_0x536da4('0x711')),_0x592000=_0x14240e(_0x536da4('0x434')),_0x334240=_0x14240e(_0x536da4('0xd93')),_0x2da2cd=_0x14240e(_0x536da4('0xa2f')),_0x11ba6c=_0x14240e(_0x536da4('0x88e')),_0x2c183f=_0x14240e('./_initCloneArray'),_0x40d7e1=_0x14240e(_0x536da4('0xd8b')),_0x112219=_0x14240e('./_initCloneObject'),_0x9d847d=_0x14240e(_0x536da4('0x3ee')),_0x19d6fb=_0x14240e('./isBuffer'),_0x10f549=_0x14240e(_0x536da4('0x961')),_0x17050f=_0x14240e(_0x536da4('0x8a4')),_0x2ef2fa=_0x14240e(_0x536da4('0x5f9')),_0x6c583c=_0x14240e(_0x536da4('0x814')),_0x24f9e9=_0x14240e(_0x536da4('0x14b')),_0xd98b6a={};_0xd98b6a['[object\x20Arguments]']=_0xd98b6a[_0x536da4('0x1e1')]=_0xd98b6a[_0x536da4('0x3f8')]=_0xd98b6a['[object\x20DataView]']=_0xd98b6a[_0x536da4('0x687')]=_0xd98b6a[_0x536da4('0x975')]=_0xd98b6a[_0x536da4('0xcca')]=_0xd98b6a[_0x536da4('0xee')]=_0xd98b6a[_0x536da4('0x611')]=_0xd98b6a['[object\x20Int16Array]']=_0xd98b6a[_0x536da4('0x9b')]=_0xd98b6a[_0x536da4('0x462')]=_0xd98b6a[_0x536da4('0x6a9')]=_0xd98b6a[_0x536da4('0x367')]=_0xd98b6a[_0x536da4('0xcc2')]=_0xd98b6a[_0x536da4('0x724')]=_0xd98b6a[_0x536da4('0x341')]=_0xd98b6a[_0x536da4('0x860')]=_0xd98b6a[_0x536da4('0x63e')]=_0xd98b6a[_0x536da4('0xcb7')]=_0xd98b6a[_0x536da4('0x31')]=_0xd98b6a['[object\x20Uint32Array]']=!0x0,_0xd98b6a[_0x536da4('0x8bb')]=_0xd98b6a['[object\x20Function]']=_0xd98b6a['[object\x20WeakMap]']=!0x1,_0x5656b2[_0x536da4('0x91e')]=function _0x33f546(_0x3e93d3,_0x5e8fd5,_0x47b37a,_0x1fd2e2,_0x5e8d41,_0x12697d){var _0x39caf8=_0x536da4,_0xb9564,_0x2028f6=0x1&_0x5e8fd5,_0x3391e8=0x2&_0x5e8fd5,_0x4bc061=0x4&_0x5e8fd5;if(_0x47b37a&&(_0xb9564=_0x5e8d41?_0x47b37a(_0x3e93d3,_0x1fd2e2,_0x5e8d41,_0x12697d):_0x47b37a(_0x3e93d3)),void 0x0!==_0xb9564)return _0xb9564;if(!_0x17050f(_0x3e93d3))return _0x3e93d3;var _0x18f3b7=_0x9d847d(_0x3e93d3);if(_0x18f3b7){if(_0xb9564=_0x2c183f(_0x3e93d3),!_0x2028f6)return _0x3e4019(_0x3e93d3,_0xb9564);}else{var _0x172bb7=_0x11ba6c(_0x3e93d3),_0x2cd1d1=_0x39caf8('0xbe1')==_0x172bb7||'[object\x20GeneratorFunction]'==_0x172bb7;if(_0x19d6fb(_0x3e93d3))return _0x201269(_0x3e93d3,_0x2028f6);if(_0x39caf8('0x367')==_0x172bb7||_0x39caf8('0xfd')==_0x172bb7||_0x2cd1d1&&!_0x5e8d41){if(_0xb9564=_0x3391e8||_0x2cd1d1?{}:_0x112219(_0x3e93d3),!_0x2028f6)return _0x3391e8?_0x592000(_0x3e93d3,_0x168507(_0xb9564,_0x3e93d3)):_0xfc630(_0x3e93d3,_0x34eb3f(_0xb9564,_0x3e93d3));}else{if(!_0xd98b6a[_0x172bb7])return _0x5e8d41?_0x3e93d3:{};_0xb9564=_0x40d7e1(_0x3e93d3,_0x172bb7,_0x2028f6);}}_0x12697d||(_0x12697d=new _0x4e4463());var _0x27d259=_0x12697d[_0x39caf8('0x715')](_0x3e93d3);if(_0x27d259)return _0x27d259;_0x12697d[_0x39caf8('0x8ab')](_0x3e93d3,_0xb9564),_0x2ef2fa(_0x3e93d3)?_0x3e93d3[_0x39caf8('0x7ed')](function(_0xe66725){var _0x2887ed=_0x39caf8;_0xb9564[_0x2887ed('0x3fb')](_0x33f546(_0xe66725,_0x5e8fd5,_0x47b37a,_0xe66725,_0x3e93d3,_0x12697d));}):_0x10f549(_0x3e93d3)&&_0x3e93d3['forEach'](function(_0x3da38c,_0x498b6e){var _0x7b1a43=_0x39caf8;_0xb9564[_0x7b1a43('0x8ab')](_0x498b6e,_0x33f546(_0x3da38c,_0x5e8fd5,_0x47b37a,_0x498b6e,_0x3e93d3,_0x12697d));});var _0x7dfe34=_0x18f3b7?void 0x0:(_0x4bc061?_0x3391e8?_0x2da2cd:_0x334240:_0x3391e8?_0x24f9e9:_0x6c583c)(_0x3e93d3);return _0x49274d(_0x7dfe34||_0x3e93d3,function(_0x581821,_0x3877f5){_0x7dfe34&&(_0x581821=_0x3e93d3[_0x3877f5=_0x581821]),_0x36819c(_0xb9564,_0x3877f5,_0x33f546(_0x581821,_0x5e8fd5,_0x47b37a,_0x3877f5,_0x3e93d3,_0x12697d));}),_0xb9564;};},{'./_Stack':0x84,'./_arrayEach':0x89,'./_assignValue':0x90,'./_baseAssign':0x92,'./_baseAssignIn':0x93,'./_cloneBuffer':0xb9,'./_copyArray':0xbe,'./_copySymbols':0xc0,'./_copySymbolsIn':0xc1,'./_getAllKeys':0xcb,'./_getAllKeysIn':0xcc,'./_getTag':0xd4,'./_initCloneArray':0xdc,'./_initCloneByTag':0xdd,'./_initCloneObject':0xde,'./isArray':0x114,'./isBuffer':0x117,'./isMap':0x11a,'./isObject':0x11b,'./isSet':0x11e,'./keys':0x123,'./keysIn':0x124}],0x96:[function(_0x4078af,_0x2ac91e,_0xd6bd66){var _0x36e69e=_0x322f0f,_0x27544f=_0x4078af('./isObject'),_0x5b62fb=Object[_0x36e69e('0xd9d')],_0x5f0e9b=function(){function _0x352014(){}return function(_0x2f0f45){var _0x7959b=_0x3e44;if(!_0x27544f(_0x2f0f45))return{};if(_0x5b62fb)return _0x5b62fb(_0x2f0f45);_0x352014[_0x7959b('0x3ec')]=_0x2f0f45;var _0x57138f=new _0x352014();return _0x352014[_0x7959b('0x3ec')]=void 0x0,_0x57138f;};}();_0x2ac91e[_0x36e69e('0x91e')]=_0x5f0e9b;},{'./isObject':0x11b}],0x97:[function(_0x2eca93,_0x5230d4,_0x7f5808){var _0xd8c147=_0x322f0f,_0x18ab70=_0x2eca93('./_baseForOwn'),_0x4a98c0=_0x2eca93('./_createBaseEach')(_0x18ab70);_0x5230d4[_0xd8c147('0x91e')]=_0x4a98c0;},{'./_baseForOwn':0x99,'./_createBaseEach':0xc4}],0x98:[function(_0x279188,_0x545c65,_0x418a1e){var _0x2d30ee=_0x322f0f,_0x524112=_0x279188('./_createBaseFor')();_0x545c65[_0x2d30ee('0x91e')]=_0x524112;},{'./_createBaseFor':0xc5}],0x99:[function(_0x13ac21,_0x1d8421,_0x3dab1d){var _0x467777=_0x322f0f,_0x575664=_0x13ac21(_0x467777('0x7bc')),_0x735ffd=_0x13ac21(_0x467777('0x814'));_0x1d8421[_0x467777('0x91e')]=function(_0x480ecd,_0x4a57b5){return _0x480ecd&&_0x575664(_0x480ecd,_0x4a57b5,_0x735ffd);};},{'./_baseFor':0x98,'./keys':0x123}],0x9a:[function(_0x2a75a,_0x3ea635,_0x49f3b7){var _0x479715=_0x322f0f,_0x3f5c88=_0x2a75a('./_castPath'),_0x546eba=_0x2a75a(_0x479715('0xb20'));_0x3ea635['exports']=function(_0x2a4726,_0x547f74){var _0x10c18e=_0x479715;for(var _0x3360cd=0x0,_0x432802=(_0x547f74=_0x3f5c88(_0x547f74,_0x2a4726))[_0x10c18e('0x1d1')];null!=_0x2a4726&&_0x3360cd<_0x432802;)_0x2a4726=_0x2a4726[_0x546eba(_0x547f74[_0x3360cd++])];return _0x3360cd&&_0x3360cd==_0x432802?_0x2a4726:void 0x0;};},{'./_castPath':0xb7,'./_toKey':0x107}],0x9b:[function(_0x40d9f3,_0x5def56,_0x33559c){var _0x4a618d=_0x322f0f,_0x46daec=_0x40d9f3(_0x4a618d('0xcc8')),_0x4f915a=_0x40d9f3(_0x4a618d('0x3ee'));_0x5def56[_0x4a618d('0x91e')]=function(_0x963114,_0x2b6658,_0x3be9ce){var _0x180f29=_0x2b6658(_0x963114);return _0x4f915a(_0x963114)?_0x180f29:_0x46daec(_0x180f29,_0x3be9ce(_0x963114));};},{'./_arrayPush':0x8d,'./isArray':0x114}],0x9c:[function(_0x1595d8,_0x8ff1e2,_0x381a10){var _0x58d00c=_0x322f0f,_0x529a17=_0x1595d8(_0x58d00c('0x819')),_0x1217a2=_0x1595d8('./_getRawTag'),_0x1eef92=_0x1595d8(_0x58d00c('0xa7e')),_0x54e737=_0x529a17?_0x529a17[_0x58d00c('0x6f8')]:void 0x0;_0x8ff1e2['exports']=function(_0x44032b){return null==_0x44032b?void 0x0===_0x44032b?'[object\x20Undefined]':'[object\x20Null]':_0x54e737&&_0x54e737 in Object(_0x44032b)?_0x1217a2(_0x44032b):_0x1eef92(_0x44032b);};},{'./_Symbol':0x85,'./_getRawTag':0xd1,'./_objectToString':0xf7}],0x9d:[function(_0x1f3b00,_0x39d5c6,_0x221415){var _0x393d3d=_0x322f0f;_0x39d5c6[_0x393d3d('0x91e')]=function(_0x3e2f50,_0x5512c8){return null!=_0x3e2f50&&_0x5512c8 in Object(_0x3e2f50);};},{}],0x9e:[function(_0x15f17d,_0x43db8a,_0x23d8bd){var _0x3bbf62=_0x322f0f,_0x14bf91=_0x15f17d(_0x3bbf62('0x610')),_0x2ffb81=_0x15f17d(_0x3bbf62('0x6b6'));_0x43db8a[_0x3bbf62('0x91e')]=function(_0x31184d){var _0x369906=_0x3bbf62;return _0x2ffb81(_0x31184d)&&_0x369906('0xfd')==_0x14bf91(_0x31184d);};},{'./_baseGetTag':0x9c,'./isObjectLike':0x11c}],0x9f:[function(_0x89ec64,_0x4d077b,_0x3a65ae){var _0x5567fc=_0x322f0f,_0x4390db=_0x89ec64(_0x5567fc('0xba6')),_0x201763=_0x89ec64(_0x5567fc('0x6b6'));_0x4d077b['exports']=function _0x42620c(_0x4fa305,_0x2a1656,_0x2ab213,_0x2db1b5,_0x228af8){return _0x4fa305===_0x2a1656||(null==_0x4fa305||null==_0x2a1656||!_0x201763(_0x4fa305)&&!_0x201763(_0x2a1656)?_0x4fa305!=_0x4fa305&&_0x2a1656!=_0x2a1656:_0x4390db(_0x4fa305,_0x2a1656,_0x2ab213,_0x2db1b5,_0x42620c,_0x228af8));};},{'./_baseIsEqualDeep':0xa0,'./isObjectLike':0x11c}],0xa0:[function(_0x47850a,_0x358c95,_0x53b4da){var _0x5c514b=_0x322f0f,_0x3fa6dc=_0x47850a('./_Stack'),_0x40b122=_0x47850a(_0x5c514b('0x181')),_0x1fd0b2=_0x47850a('./_equalByTag'),_0x40e2d2=_0x47850a(_0x5c514b('0x9b1')),_0x508bb1=_0x47850a(_0x5c514b('0x88e')),_0xd815b0=_0x47850a(_0x5c514b('0x3ee')),_0x32afb5=_0x47850a(_0x5c514b('0xb82')),_0x7bf243=_0x47850a(_0x5c514b('0x8ef')),_0x25ab1f='[object\x20Object]',_0xf8543c=Object[_0x5c514b('0x3ec')][_0x5c514b('0x106')];_0x358c95['exports']=function(_0x1d7254,_0x5aa105,_0xdfa0c3,_0x569e25,_0x1b7807,_0x222271){var _0x1d5005=_0x5c514b,_0x526f92=_0xd815b0(_0x1d7254),_0x50e202=_0xd815b0(_0x5aa105),_0x28fcaf=_0x526f92?'[object\x20Array]':_0x508bb1(_0x1d7254),_0x533f8c=_0x50e202?_0x1d5005('0x1e1'):_0x508bb1(_0x5aa105),_0x1257d4=(_0x28fcaf='[object\x20Arguments]'==_0x28fcaf?_0x25ab1f:_0x28fcaf)==_0x25ab1f,_0x1ff118=(_0x533f8c='[object\x20Arguments]'==_0x533f8c?_0x25ab1f:_0x533f8c)==_0x25ab1f,_0x277dd2=_0x28fcaf==_0x533f8c;if(_0x277dd2&&_0x32afb5(_0x1d7254)){if(!_0x32afb5(_0x5aa105))return!0x1;_0x526f92=!0x0,_0x1257d4=!0x1;}if(_0x277dd2&&!_0x1257d4)return _0x222271||(_0x222271=new _0x3fa6dc()),_0x526f92||_0x7bf243(_0x1d7254)?_0x40b122(_0x1d7254,_0x5aa105,_0xdfa0c3,_0x569e25,_0x1b7807,_0x222271):_0x1fd0b2(_0x1d7254,_0x5aa105,_0x28fcaf,_0xdfa0c3,_0x569e25,_0x1b7807,_0x222271);if(!(0x1&_0xdfa0c3)){var _0x263441=_0x1257d4&&_0xf8543c[_0x1d5005('0x928')](_0x1d7254,_0x1d5005('0x9cf')),_0x5ebe90=_0x1ff118&&_0xf8543c[_0x1d5005('0x928')](_0x5aa105,_0x1d5005('0x9cf'));if(_0x263441||_0x5ebe90){var _0x395a6c=_0x263441?_0x1d7254[_0x1d5005('0x9b6')]():_0x1d7254,_0x5be120=_0x5ebe90?_0x5aa105[_0x1d5005('0x9b6')]():_0x5aa105;return _0x222271||(_0x222271=new _0x3fa6dc()),_0x1b7807(_0x395a6c,_0x5be120,_0xdfa0c3,_0x569e25,_0x222271);}}return!!_0x277dd2&&(_0x222271||(_0x222271=new _0x3fa6dc()),_0x40e2d2(_0x1d7254,_0x5aa105,_0xdfa0c3,_0x569e25,_0x1b7807,_0x222271));};},{'./_Stack':0x84,'./_equalArrays':0xc7,'./_equalByTag':0xc8,'./_equalObjects':0xc9,'./_getTag':0xd4,'./isArray':0x114,'./isBuffer':0x117,'./isTypedArray':0x121}],0xa1:[function(_0x4715f5,_0x1a008c,_0x55487e){var _0x224430=_0x322f0f,_0x679562=_0x4715f5(_0x224430('0x88e')),_0x2a9fe1=_0x4715f5(_0x224430('0x6b6'));_0x1a008c['exports']=function(_0x25b1b9){var _0x308a3=_0x224430;return _0x2a9fe1(_0x25b1b9)&&_0x308a3('0x462')==_0x679562(_0x25b1b9);};},{'./_getTag':0xd4,'./isObjectLike':0x11c}],0xa2:[function(_0x558cd9,_0x4f7151,_0x343846){var _0x392576=_0x322f0f,_0x444174=_0x558cd9('./_Stack'),_0x5cf265=_0x558cd9(_0x392576('0x60'));_0x4f7151[_0x392576('0x91e')]=function(_0x364b60,_0x1914b6,_0x2c011f,_0x41fe87){var _0x20f242=_0x392576,_0x330d1e=_0x2c011f[_0x20f242('0x1d1')],_0x4514a7=_0x330d1e,_0x417377=!_0x41fe87;if(null==_0x364b60)return!_0x4514a7;for(_0x364b60=Object(_0x364b60);_0x330d1e--;){var _0x5595f3=_0x2c011f[_0x330d1e];if(_0x417377&&_0x5595f3[0x2]?_0x5595f3[0x1]!==_0x364b60[_0x5595f3[0x0]]:!(_0x5595f3[0x0]in _0x364b60))return!0x1;}for(;++_0x330d1e<_0x4514a7;){var _0x35bb24=(_0x5595f3=_0x2c011f[_0x330d1e])[0x0],_0x31b40e=_0x364b60[_0x35bb24],_0x4fa53=_0x5595f3[0x1];if(_0x417377&&_0x5595f3[0x2]){if(void 0x0===_0x31b40e&&!(_0x35bb24 in _0x364b60))return!0x1;}else{var _0x2d82ca=new _0x444174();if(_0x41fe87)var _0x50090c=_0x41fe87(_0x31b40e,_0x4fa53,_0x35bb24,_0x364b60,_0x1914b6,_0x2d82ca);if(!(void 0x0===_0x50090c?_0x5cf265(_0x4fa53,_0x31b40e,0x3,_0x41fe87,_0x2d82ca):_0x50090c))return!0x1;}}return!0x0;};},{'./_Stack':0x84,'./_baseIsEqual':0x9f}],0xa3:[function(_0x799a59,_0x292cb7,_0x202534){var _0x3bd001=_0x322f0f,_0x221091=_0x799a59(_0x3bd001('0x1c')),_0x330ab8=_0x799a59(_0x3bd001('0xa4d')),_0x2fccc7=_0x799a59(_0x3bd001('0x8a4')),_0x1b457e=_0x799a59(_0x3bd001('0x31b')),_0x59acac=/^\[object .+?Constructor\]$/,_0x135f99=Function[_0x3bd001('0x3ec')],_0x270c86=Object[_0x3bd001('0x3ec')],_0x5cd0b2=_0x135f99[_0x3bd001('0x8dc')],_0xe304e5=_0x270c86[_0x3bd001('0x106')],_0x15afe7=RegExp('^'+_0x5cd0b2[_0x3bd001('0x928')](_0xe304e5)[_0x3bd001('0x95e')](/[\\^$.*+?()[\]{}|]/g,_0x3bd001('0x916'))[_0x3bd001('0x95e')](/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,'$1.*?')+'$');_0x292cb7[_0x3bd001('0x91e')]=function(_0x46fb40){var _0x41546b=_0x3bd001;return!(!_0x2fccc7(_0x46fb40)||_0x330ab8(_0x46fb40))&&(_0x221091(_0x46fb40)?_0x15afe7:_0x59acac)[_0x41546b('0xb03')](_0x1b457e(_0x46fb40));};},{'./_isMasked':0xe3,'./_toSource':0x108,'./isFunction':0x118,'./isObject':0x11b}],0xa4:[function(_0xcad8dd,_0x59ab20,_0x478949){var _0x3e16e1=_0x322f0f,_0x3190c1=_0xcad8dd(_0x3e16e1('0x88e')),_0x27cc17=_0xcad8dd('./isObjectLike');_0x59ab20['exports']=function(_0x23a00c){var _0x5c2763=_0x3e16e1;return _0x27cc17(_0x23a00c)&&_0x5c2763('0x724')==_0x3190c1(_0x23a00c);};},{'./_getTag':0xd4,'./isObjectLike':0x11c}],0xa5:[function(_0x176592,_0x48a5da,_0x290d71){var _0x260c5b=_0x322f0f,_0x4a7a71=_0x176592(_0x260c5b('0x610')),_0x2ad763=_0x176592(_0x260c5b('0x5f0')),_0x162ec3=_0x176592('./isObjectLike'),_0x40c072={};_0x40c072[_0x260c5b('0xcca')]=_0x40c072['[object\x20Float64Array]']=_0x40c072[_0x260c5b('0x611')]=_0x40c072[_0x260c5b('0x945')]=_0x40c072[_0x260c5b('0x9b')]=_0x40c072['[object\x20Uint8Array]']=_0x40c072['[object\x20Uint8ClampedArray]']=_0x40c072[_0x260c5b('0x31')]=_0x40c072[_0x260c5b('0x785')]=!0x0,_0x40c072['[object\x20Arguments]']=_0x40c072[_0x260c5b('0x1e1')]=_0x40c072['[object\x20ArrayBuffer]']=_0x40c072[_0x260c5b('0x687')]=_0x40c072[_0x260c5b('0x695')]=_0x40c072[_0x260c5b('0x975')]=_0x40c072[_0x260c5b('0x8bb')]=_0x40c072['[object\x20Function]']=_0x40c072[_0x260c5b('0x462')]=_0x40c072[_0x260c5b('0x6a9')]=_0x40c072['[object\x20Object]']=_0x40c072['[object\x20RegExp]']=_0x40c072[_0x260c5b('0x724')]=_0x40c072[_0x260c5b('0x341')]=_0x40c072['[object\x20WeakMap]']=!0x1,_0x48a5da[_0x260c5b('0x91e')]=function(_0xc0f645){return _0x162ec3(_0xc0f645)&&_0x2ad763(_0xc0f645['length'])&&!!_0x40c072[_0x4a7a71(_0xc0f645)];};},{'./_baseGetTag':0x9c,'./isLength':0x119,'./isObjectLike':0x11c}],0xa6:[function(_0xbf8255,_0x5744ae,_0xc2e347){var _0x1f4a87=_0x322f0f,_0x23fc43=_0xbf8255(_0x1f4a87('0x3f4')),_0x30400f=_0xbf8255('./_baseMatchesProperty'),_0x5dbadf=_0xbf8255(_0x1f4a87('0xf2')),_0xd0017e=_0xbf8255(_0x1f4a87('0x3ee')),_0x5ebc7f=_0xbf8255(_0x1f4a87('0xc7c'));_0x5744ae[_0x1f4a87('0x91e')]=function(_0x23d186){var _0x18df57=_0x1f4a87;return _0x18df57('0x67')==typeof _0x23d186?_0x23d186:null==_0x23d186?_0x5dbadf:'object'==typeof _0x23d186?_0xd0017e(_0x23d186)?_0x30400f(_0x23d186[0x0],_0x23d186[0x1]):_0x23fc43(_0x23d186):_0x5ebc7f(_0x23d186);};},{'./_baseMatches':0xaa,'./_baseMatchesProperty':0xab,'./identity':0x112,'./isArray':0x114,'./property':0x129}],0xa7:[function(_0x35bd50,_0x3eee38,_0x5ccbc4){var _0x2121cc=_0x322f0f,_0x1c8ec8=_0x35bd50(_0x2121cc('0x290')),_0x41889c=_0x35bd50(_0x2121cc('0x216')),_0x4f6982=Object[_0x2121cc('0x3ec')][_0x2121cc('0x106')];_0x3eee38[_0x2121cc('0x91e')]=function(_0x156782){var _0x230b60=_0x2121cc;if(!_0x1c8ec8(_0x156782))return _0x41889c(_0x156782);var _0xdb5fad=[];for(var _0x3647d3 in Object(_0x156782))_0x4f6982[_0x230b60('0x928')](_0x156782,_0x3647d3)&&_0x230b60('0xbe8')!=_0x3647d3&&_0xdb5fad[_0x230b60('0x8cd')](_0x3647d3);return _0xdb5fad;};},{'./_isPrototype':0xe4,'./_nativeKeys':0xf4}],0xa8:[function(_0x5ac867,_0x2543a3,_0x273d63){var _0x1735d8=_0x322f0f,_0x4cd896=_0x5ac867(_0x1735d8('0x8a4')),_0x4f616c=_0x5ac867(_0x1735d8('0x290')),_0x218e25=_0x5ac867(_0x1735d8('0xaa3')),_0x2ea9ad=Object[_0x1735d8('0x3ec')][_0x1735d8('0x106')];_0x2543a3[_0x1735d8('0x91e')]=function(_0x575603){var _0x3e31fc=_0x1735d8;if(!_0x4cd896(_0x575603))return _0x218e25(_0x575603);var _0x31f9e4=_0x4f616c(_0x575603),_0x2fb418=[];for(var _0x1708c1 in _0x575603)(_0x3e31fc('0xbe8')!=_0x1708c1||!_0x31f9e4&&_0x2ea9ad[_0x3e31fc('0x928')](_0x575603,_0x1708c1))&&_0x2fb418['push'](_0x1708c1);return _0x2fb418;};},{'./_isPrototype':0xe4,'./_nativeKeysIn':0xf5,'./isObject':0x11b}],0xa9:[function(_0x3e2a02,_0x4b639a,_0x7a571){var _0x435091=_0x322f0f,_0x125cac=_0x3e2a02(_0x435091('0x507')),_0x2b6113=_0x3e2a02(_0x435091('0xd7a'));_0x4b639a[_0x435091('0x91e')]=function(_0x48ddd3,_0x2b13d7){var _0x3348ee=_0x435091,_0x1629c9=-0x1,_0x334211=_0x2b6113(_0x48ddd3)?Array(_0x48ddd3[_0x3348ee('0x1d1')]):[];return _0x125cac(_0x48ddd3,function(_0x369992,_0x433e9e,_0x538034){_0x334211[++_0x1629c9]=_0x2b13d7(_0x369992,_0x433e9e,_0x538034);}),_0x334211;};},{'./_baseEach':0x97,'./isArrayLike':0x115}],0xaa:[function(_0x4d0cab,_0x4d4779,_0x4a3640){var _0x22d4ae=_0x322f0f,_0x35a320=_0x4d0cab(_0x22d4ae('0xd94')),_0x670e2c=_0x4d0cab(_0x22d4ae('0x70d')),_0x21c944=_0x4d0cab(_0x22d4ae('0xa8a'));_0x4d4779['exports']=function(_0x5c1b57){var _0x2d8d48=_0x22d4ae,_0x31e872=_0x670e2c(_0x5c1b57);return 0x1==_0x31e872[_0x2d8d48('0x1d1')]&&_0x31e872[0x0][0x2]?_0x21c944(_0x31e872[0x0][0x0],_0x31e872[0x0][0x1]):function(_0x14e4f7){return _0x14e4f7===_0x5c1b57||_0x35a320(_0x14e4f7,_0x5c1b57,_0x31e872);};};},{'./_baseIsMatch':0xa2,'./_getMatchData':0xce,'./_matchesStrictComparable':0xf1}],0xab:[function(_0x152450,_0x4b22eb,_0x59ff1e){var _0x195a4b=_0x322f0f,_0x4ad273=_0x152450(_0x195a4b('0x60')),_0x23a21e=_0x152450('./get'),_0x5082f0=_0x152450(_0x195a4b('0x34')),_0x4074f8=_0x152450(_0x195a4b('0x32')),_0x31f47d=_0x152450(_0x195a4b('0x7f1')),_0x349efc=_0x152450(_0x195a4b('0xa8a')),_0x9913dd=_0x152450('./_toKey');_0x4b22eb[_0x195a4b('0x91e')]=function(_0x2e20c1,_0x45a0fc){return _0x4074f8(_0x2e20c1)&&_0x31f47d(_0x45a0fc)?_0x349efc(_0x9913dd(_0x2e20c1),_0x45a0fc):function(_0x4f24f0){var _0x3f39bd=_0x23a21e(_0x4f24f0,_0x2e20c1);return void 0x0===_0x3f39bd&&_0x3f39bd===_0x45a0fc?_0x5082f0(_0x4f24f0,_0x2e20c1):_0x4ad273(_0x45a0fc,_0x3f39bd,0x3);};};},{'./_baseIsEqual':0x9f,'./_isKey':0xe1,'./_isStrictComparable':0xe5,'./_matchesStrictComparable':0xf1,'./_toKey':0x107,'./get':0x110,'./hasIn':0x111}],0xac:[function(_0x1e8cb6,_0x402697,_0x20798f){var _0x182b40=_0x322f0f,_0x1cd2da=_0x1e8cb6(_0x182b40('0x78e')),_0x1cd34f=_0x1e8cb6(_0x182b40('0xd88')),_0x51505e=_0x1e8cb6(_0x182b40('0x7bc')),_0x126f06=_0x1e8cb6(_0x182b40('0x674')),_0xa25f00=_0x1e8cb6(_0x182b40('0x8a4')),_0x21f2f3=_0x1e8cb6('./keysIn'),_0xf7ba9c=_0x1e8cb6('./_safeGet');_0x402697[_0x182b40('0x91e')]=function _0x471646(_0x53b135,_0xea22c2,_0x40b756,_0x55e49a,_0x5a9e75){_0x53b135!==_0xea22c2&&_0x51505e(_0xea22c2,function(_0x3835f4,_0x22f807){if(_0x5a9e75||(_0x5a9e75=new _0x1cd2da()),_0xa25f00(_0x3835f4))_0x126f06(_0x53b135,_0xea22c2,_0x22f807,_0x40b756,_0x471646,_0x55e49a,_0x5a9e75);else{var _0x7cdf8a=_0x55e49a?_0x55e49a(_0xf7ba9c(_0x53b135,_0x22f807),_0x3835f4,_0x22f807+'',_0x53b135,_0xea22c2,_0x5a9e75):void 0x0;void 0x0===_0x7cdf8a&&(_0x7cdf8a=_0x3835f4),_0x1cd34f(_0x53b135,_0x22f807,_0x7cdf8a);}},_0x21f2f3);};},{'./_Stack':0x84,'./_assignMergeValue':0x8f,'./_baseFor':0x98,'./_baseMergeDeep':0xad,'./_safeGet':0xfb,'./isObject':0x11b,'./keysIn':0x124}],0xad:[function(_0x1e084f,_0x23fcd3,_0x261190){var _0x3684b9=_0x322f0f,_0x218efb=_0x1e084f(_0x3684b9('0xd88')),_0x151c62=_0x1e084f('./_cloneBuffer'),_0x30869c=_0x1e084f(_0x3684b9('0x368')),_0x3905ea=_0x1e084f(_0x3684b9('0x762')),_0x5f3730=_0x1e084f(_0x3684b9('0xb0a')),_0x535924=_0x1e084f('./isArguments'),_0x5c4a31=_0x1e084f('./isArray'),_0x597d1f=_0x1e084f(_0x3684b9('0x36')),_0x3bb451=_0x1e084f(_0x3684b9('0xb82')),_0x4c8108=_0x1e084f(_0x3684b9('0x1c')),_0x3f92ae=_0x1e084f('./isObject'),_0x24d284=_0x1e084f(_0x3684b9('0x64d')),_0xde9a2f=_0x1e084f('./isTypedArray'),_0x4ea21d=_0x1e084f('./_safeGet'),_0xbcf977=_0x1e084f('./toPlainObject');_0x23fcd3['exports']=function(_0x4fd508,_0xa833d0,_0x5155c5,_0x4500ef,_0x110ee9,_0x5e8e26,_0x4e6af0){var _0x44655e=_0x3684b9,_0xe13849=_0x4ea21d(_0x4fd508,_0x5155c5),_0x42efa0=_0x4ea21d(_0xa833d0,_0x5155c5),_0x7feffc=_0x4e6af0['get'](_0x42efa0);if(_0x7feffc)_0x218efb(_0x4fd508,_0x5155c5,_0x7feffc);else{var _0x27f3e0=_0x5e8e26?_0x5e8e26(_0xe13849,_0x42efa0,_0x5155c5+'',_0x4fd508,_0xa833d0,_0x4e6af0):void 0x0,_0x5eb8ab=void 0x0===_0x27f3e0;if(_0x5eb8ab){var _0x2837a3=_0x5c4a31(_0x42efa0),_0x533103=!_0x2837a3&&_0x3bb451(_0x42efa0),_0x22ff14=!_0x2837a3&&!_0x533103&&_0xde9a2f(_0x42efa0);_0x27f3e0=_0x42efa0,_0x2837a3||_0x533103||_0x22ff14?_0x5c4a31(_0xe13849)?_0x27f3e0=_0xe13849:_0x597d1f(_0xe13849)?_0x27f3e0=_0x3905ea(_0xe13849):_0x533103?(_0x5eb8ab=!0x1,_0x27f3e0=_0x151c62(_0x42efa0,!0x0)):_0x22ff14?(_0x5eb8ab=!0x1,_0x27f3e0=_0x30869c(_0x42efa0,!0x0)):_0x27f3e0=[]:_0x24d284(_0x42efa0)||_0x535924(_0x42efa0)?(_0x27f3e0=_0xe13849,_0x535924(_0xe13849)?_0x27f3e0=_0xbcf977(_0xe13849):_0x3f92ae(_0xe13849)&&!_0x4c8108(_0xe13849)||(_0x27f3e0=_0x5f3730(_0x42efa0))):_0x5eb8ab=!0x1;}_0x5eb8ab&&(_0x4e6af0[_0x44655e('0x8ab')](_0x42efa0,_0x27f3e0),_0x110ee9(_0x27f3e0,_0x42efa0,_0x4500ef,_0x5e8e26,_0x4e6af0),_0x4e6af0['delete'](_0x42efa0)),_0x218efb(_0x4fd508,_0x5155c5,_0x27f3e0);}};},{'./_assignMergeValue':0x8f,'./_cloneBuffer':0xb9,'./_cloneTypedArray':0xbd,'./_copyArray':0xbe,'./_initCloneObject':0xde,'./_safeGet':0xfb,'./isArguments':0x113,'./isArray':0x114,'./isArrayLikeObject':0x116,'./isBuffer':0x117,'./isFunction':0x118,'./isObject':0x11b,'./isPlainObject':0x11d,'./isTypedArray':0x121,'./toPlainObject':0x12e}],0xae:[function(_0x40707f,_0x3289a4,_0x57b4ab){_0x3289a4['exports']=function(_0x1875f1){return function(_0x45d08e){return null==_0x45d08e?void 0x0:_0x45d08e[_0x1875f1];};};},{}],0xaf:[function(_0x4c1182,_0x45f897,_0x297e8a){var _0x56d129=_0x322f0f,_0x5080f4=_0x4c1182('./_baseGet');_0x45f897[_0x56d129('0x91e')]=function(_0x1e7c80){return function(_0x1feea1){return _0x5080f4(_0x1feea1,_0x1e7c80);};};},{'./_baseGet':0x9a}],0xb0:[function(_0xe1fd3d,_0x47db09,_0x38ab67){var _0x2f2628=_0x322f0f,_0xcddbe=_0xe1fd3d(_0x2f2628('0xf2')),_0x39e7b6=_0xe1fd3d(_0x2f2628('0x232')),_0x29722a=_0xe1fd3d(_0x2f2628('0x7b'));_0x47db09[_0x2f2628('0x91e')]=function(_0x3f6478,_0x46d216){return _0x29722a(_0x39e7b6(_0x3f6478,_0x46d216,_0xcddbe),_0x3f6478+'');};},{'./_overRest':0xf9,'./_setToString':0xff,'./identity':0x112}],0xb1:[function(_0x38c310,_0x47b2c4,_0x1280f7){var _0x21b367=_0x322f0f,_0x305e42=_0x38c310('./constant'),_0x46119e=_0x38c310(_0x21b367('0xd32')),_0x296352=_0x38c310(_0x21b367('0xf2')),_0x2bf91c=_0x46119e?function(_0x41cc9d,_0x4b777f){var _0x4ec727=_0x21b367;return _0x46119e(_0x41cc9d,_0x4ec727('0x8dc'),{'configurable':!0x0,'enumerable':!0x1,'value':_0x305e42(_0x4b777f),'writable':!0x0});}:_0x296352;_0x47b2c4[_0x21b367('0x91e')]=_0x2bf91c;},{'./_defineProperty':0xc6,'./constant':0x10a,'./identity':0x112}],0xb2:[function(_0x1194f3,_0x86f328,_0x192fcb){var _0x14d155=_0x322f0f;_0x86f328[_0x14d155('0x91e')]=function(_0x46dc26,_0x4a2e82){for(var _0x1c50b5=-0x1,_0x16c7c2=Array(_0x46dc26);++_0x1c50b5<_0x46dc26;)_0x16c7c2[_0x1c50b5]=_0x4a2e82(_0x1c50b5);return _0x16c7c2;};},{}],0xb3:[function(_0x587956,_0x3be737,_0xabe357){var _0x1a496c=_0x322f0f,_0x2f9939=_0x587956(_0x1a496c('0x819')),_0x34207f=_0x587956(_0x1a496c('0x7bf')),_0x4caf47=_0x587956(_0x1a496c('0x3ee')),_0x4f67d7=_0x587956(_0x1a496c('0xbc1')),_0x48a2b7=_0x2f9939?_0x2f9939['prototype']:void 0x0,_0x48b27b=_0x48a2b7?_0x48a2b7[_0x1a496c('0x8dc')]:void 0x0;_0x3be737[_0x1a496c('0x91e')]=function _0x308e76(_0x47ce46){var _0x44a094=_0x1a496c;if(_0x44a094('0x4ba')==typeof _0x47ce46)return _0x47ce46;if(_0x4caf47(_0x47ce46))return _0x34207f(_0x47ce46,_0x308e76)+'';if(_0x4f67d7(_0x47ce46))return _0x48b27b?_0x48b27b[_0x44a094('0x928')](_0x47ce46):'';var _0x366080=_0x47ce46+'';return'0'==_0x366080&&0x1/_0x47ce46==-0x1/0x0?'-0':_0x366080;};},{'./_Symbol':0x85,'./_arrayMap':0x8c,'./isArray':0x114,'./isSymbol':0x120}],0xb4:[function(_0x3bcf0c,_0x19f205,_0x7b495e){var _0x16ed29=_0x322f0f;_0x19f205[_0x16ed29('0x91e')]=function(_0x1f7c18){return function(_0x21d9f1){return _0x1f7c18(_0x21d9f1);};};},{}],0xb5:[function(_0x291449,_0x5f271f,_0x1d6fe6){var _0x208473=_0x322f0f;_0x5f271f[_0x208473('0x91e')]=function(_0x35e561,_0x438735){var _0x566dac=_0x208473;return _0x35e561[_0x566dac('0x16d')](_0x438735);};},{}],0xb6:[function(_0x297eff,_0xb8865a,_0x209552){var _0x8b131d=_0x322f0f,_0x3b3820=_0x297eff(_0x8b131d('0xf2'));_0xb8865a[_0x8b131d('0x91e')]=function(_0x5aa51a){return'function'==typeof _0x5aa51a?_0x5aa51a:_0x3b3820;};},{'./identity':0x112}],0xb7:[function(_0x113e62,_0x5a1b9e,_0x916460){var _0x44abf0=_0x322f0f,_0x9c692e=_0x113e62(_0x44abf0('0x3ee')),_0x4b78b7=_0x113e62('./_isKey'),_0x1e41bf=_0x113e62(_0x44abf0('0x647')),_0x74c7c2=_0x113e62('./toString');_0x5a1b9e[_0x44abf0('0x91e')]=function(_0x5f4cca,_0x5cb9c3){return _0x9c692e(_0x5f4cca)?_0x5f4cca:_0x4b78b7(_0x5f4cca,_0x5cb9c3)?[_0x5f4cca]:_0x1e41bf(_0x74c7c2(_0x5f4cca));};},{'./_isKey':0xe1,'./_stringToPath':0x106,'./isArray':0x114,'./toString':0x12f}],0xb8:[function(_0x1ccb1e,_0x355f46,_0x5923a1){var _0x19f531=_0x322f0f,_0x266baa=_0x1ccb1e(_0x19f531('0x7f'));_0x355f46[_0x19f531('0x91e')]=function(_0x3d1157){var _0x155d28=_0x19f531,_0x50b5da=new _0x3d1157[(_0x155d28('0xbe8'))](_0x3d1157[_0x155d28('0x738')]);return new _0x266baa(_0x50b5da)[_0x155d28('0x8ab')](new _0x266baa(_0x3d1157)),_0x50b5da;};},{'./_Uint8Array':0x86}],0xb9:[function(_0x5b8428,_0x1d376d,_0x980dde){var _0x479273=_0x322f0f,_0x4beda0=_0x5b8428(_0x479273('0x90e')),_0x47eaa9='object'==typeof _0x980dde&&_0x980dde&&!_0x980dde['nodeType']&&_0x980dde,_0x57ca20=_0x47eaa9&&_0x479273('0x669')==typeof _0x1d376d&&_0x1d376d&&!_0x1d376d[_0x479273('0xa7')]&&_0x1d376d,_0x38d587=_0x57ca20&&_0x57ca20[_0x479273('0x91e')]===_0x47eaa9?_0x4beda0[_0x479273('0x825')]:void 0x0,_0x53a03b=_0x38d587?_0x38d587[_0x479273('0x431')]:void 0x0;_0x1d376d[_0x479273('0x91e')]=function(_0x198f3c,_0x53b800){var _0x46e00e=_0x479273;if(_0x53b800)return _0x198f3c[_0x46e00e('0x63a')]();var _0x54c66=_0x198f3c[_0x46e00e('0x1d1')],_0x20fd19=_0x53a03b?_0x53a03b(_0x54c66):new _0x198f3c['constructor'](_0x54c66);return _0x198f3c[_0x46e00e('0xcaf')](_0x20fd19),_0x20fd19;};},{'./_root':0xfa}],0xba:[function(_0x3811f8,_0x3367ab,_0x1b10d4){var _0x2d37e3=_0x322f0f,_0x5f58f9=_0x3811f8('./_cloneArrayBuffer');_0x3367ab[_0x2d37e3('0x91e')]=function(_0x53e5f1,_0x30aec6){var _0x454559=_0x2d37e3,_0x183f19=_0x30aec6?_0x5f58f9(_0x53e5f1[_0x454559('0xa53')]):_0x53e5f1[_0x454559('0xa53')];return new _0x53e5f1[(_0x454559('0xbe8'))](_0x183f19,_0x53e5f1[_0x454559('0x6c8')],_0x53e5f1[_0x454559('0x738')]);};},{'./_cloneArrayBuffer':0xb8}],0xbb:[function(_0x5e7d94,_0x2cdd8b,_0xaa0438){var _0x2346a5=_0x322f0f,_0x16daaa=/\w*$/;_0x2cdd8b[_0x2346a5('0x91e')]=function(_0x44558c){var _0xd4cc34=_0x2346a5,_0x5d0a64=new _0x44558c[(_0xd4cc34('0xbe8'))](_0x44558c[_0xd4cc34('0x7d3')],_0x16daaa[_0xd4cc34('0x203')](_0x44558c));return _0x5d0a64[_0xd4cc34('0x37a')]=_0x44558c['lastIndex'],_0x5d0a64;};},{}],0xbc:[function(_0x142979,_0x8adf27,_0x5cb6f4){var _0x22817b=_0x322f0f,_0x5c68a6=_0x142979(_0x22817b('0x819')),_0x31af5c=_0x5c68a6?_0x5c68a6[_0x22817b('0x3ec')]:void 0x0,_0x53190e=_0x31af5c?_0x31af5c[_0x22817b('0x44f')]:void 0x0;_0x8adf27[_0x22817b('0x91e')]=function(_0x33cf8d){return _0x53190e?Object(_0x53190e['call'](_0x33cf8d)):{};};},{'./_Symbol':0x85}],0xbd:[function(_0x2b418b,_0x16c266,_0x514491){var _0x560530=_0x322f0f,_0x4a4748=_0x2b418b(_0x560530('0x39e'));_0x16c266[_0x560530('0x91e')]=function(_0x2db409,_0x5953dd){var _0x585c3e=_0x560530,_0x26f4a7=_0x5953dd?_0x4a4748(_0x2db409['buffer']):_0x2db409[_0x585c3e('0xa53')];return new _0x2db409[(_0x585c3e('0xbe8'))](_0x26f4a7,_0x2db409[_0x585c3e('0x6c8')],_0x2db409[_0x585c3e('0x1d1')]);};},{'./_cloneArrayBuffer':0xb8}],0xbe:[function(_0x42f320,_0x4c8827,_0x24610d){var _0x9ff0b0=_0x322f0f;_0x4c8827[_0x9ff0b0('0x91e')]=function(_0x326ff3,_0x207d3a){var _0x45656d=_0x9ff0b0,_0x507f36=-0x1,_0x592c7e=_0x326ff3[_0x45656d('0x1d1')];for(_0x207d3a||(_0x207d3a=Array(_0x592c7e));++_0x507f36<_0x592c7e;)_0x207d3a[_0x507f36]=_0x326ff3[_0x507f36];return _0x207d3a;};},{}],0xbf:[function(_0x5c587f,_0x3bbd0d,_0x259f15){var _0x5f2cc4=_0x322f0f,_0x3ed6b0=_0x5c587f(_0x5f2cc4('0xc7a')),_0x33db03=_0x5c587f(_0x5f2cc4('0x7b7'));_0x3bbd0d[_0x5f2cc4('0x91e')]=function(_0x1187d4,_0x3f35dd,_0x425dad,_0x267c48){var _0x184d18=_0x5f2cc4,_0x5b8e0f=!_0x425dad;_0x425dad||(_0x425dad={});for(var _0x930315=-0x1,_0x3df502=_0x3f35dd[_0x184d18('0x1d1')];++_0x930315<_0x3df502;){var _0x29930b=_0x3f35dd[_0x930315],_0x270066=_0x267c48?_0x267c48(_0x425dad[_0x29930b],_0x1187d4[_0x29930b],_0x29930b,_0x425dad,_0x1187d4):void 0x0;void 0x0===_0x270066&&(_0x270066=_0x1187d4[_0x29930b]),_0x5b8e0f?_0x33db03(_0x425dad,_0x29930b,_0x270066):_0x3ed6b0(_0x425dad,_0x29930b,_0x270066);}return _0x425dad;};},{'./_assignValue':0x90,'./_baseAssignValue':0x94}],0xc0:[function(_0x117179,_0x463a78,_0x3641e9){var _0x4c4ea8=_0x322f0f,_0x1c5a43=_0x117179(_0x4c4ea8('0x4d1')),_0x20621d=_0x117179(_0x4c4ea8('0x9eb'));_0x463a78[_0x4c4ea8('0x91e')]=function(_0x568653,_0x175855){return _0x1c5a43(_0x568653,_0x20621d(_0x568653),_0x175855);};},{'./_copyObject':0xbf,'./_getSymbols':0xd2}],0xc1:[function(_0x1d0e72,_0x2d4713,_0x49dd4d){var _0x4726cb=_0x322f0f,_0x14d079=_0x1d0e72(_0x4726cb('0x4d1')),_0xb941e0=_0x1d0e72(_0x4726cb('0xd1f'));_0x2d4713[_0x4726cb('0x91e')]=function(_0x39d8a1,_0x591eb1){return _0x14d079(_0x39d8a1,_0xb941e0(_0x39d8a1),_0x591eb1);};},{'./_copyObject':0xbf,'./_getSymbolsIn':0xd3}],0xc2:[function(_0x342b87,_0x344048,_0x1e3094){var _0x5089c7=_0x322f0f,_0x45b9c4=_0x342b87(_0x5089c7('0x90e'))[_0x5089c7('0x6bd')];_0x344048[_0x5089c7('0x91e')]=_0x45b9c4;},{'./_root':0xfa}],0xc3:[function(_0x5a52c4,_0x458143,_0x3ed21f){var _0x525dab=_0x322f0f,_0xc2924f=_0x5a52c4(_0x525dab('0xb67')),_0x7957c2=_0x5a52c4(_0x525dab('0x546'));_0x458143[_0x525dab('0x91e')]=function(_0x581dcf){return _0xc2924f(function(_0x4ab7a3,_0x1e10bf){var _0x4fba0e=_0x3e44,_0x382dca=-0x1,_0x4b6e26=_0x1e10bf[_0x4fba0e('0x1d1')],_0x3d05b9=_0x4b6e26>0x1?_0x1e10bf[_0x4b6e26-0x1]:void 0x0,_0x15277d=_0x4b6e26>0x2?_0x1e10bf[0x2]:void 0x0;for(_0x3d05b9=_0x581dcf[_0x4fba0e('0x1d1')]>0x3&&_0x4fba0e('0x67')==typeof _0x3d05b9?(_0x4b6e26--,_0x3d05b9):void 0x0,_0x15277d&&_0x7957c2(_0x1e10bf[0x0],_0x1e10bf[0x1],_0x15277d)&&(_0x3d05b9=_0x4b6e26<0x3?void 0x0:_0x3d05b9,_0x4b6e26=0x1),_0x4ab7a3=Object(_0x4ab7a3);++_0x382dca<_0x4b6e26;){var _0x59b16b=_0x1e10bf[_0x382dca];_0x59b16b&&_0x581dcf(_0x4ab7a3,_0x59b16b,_0x382dca,_0x3d05b9);}return _0x4ab7a3;});};},{'./_baseRest':0xb0,'./_isIterateeCall':0xe0}],0xc4:[function(_0x3cf878,_0x3a865a,_0x1ea699){var _0x488966=_0x322f0f,_0x176d44=_0x3cf878(_0x488966('0xd7a'));_0x3a865a[_0x488966('0x91e')]=function(_0x349e8d,_0x2176d2){return function(_0x53932b,_0x5d37f3){var _0x9a4b29=_0x3e44;if(null==_0x53932b)return _0x53932b;if(!_0x176d44(_0x53932b))return _0x349e8d(_0x53932b,_0x5d37f3);for(var _0x285ec2=_0x53932b[_0x9a4b29('0x1d1')],_0x242b08=_0x2176d2?_0x285ec2:-0x1,_0x437583=Object(_0x53932b);(_0x2176d2?_0x242b08--:++_0x242b08<_0x285ec2)&&!0x1!==_0x5d37f3(_0x437583[_0x242b08],_0x242b08,_0x437583););return _0x53932b;};};},{'./isArrayLike':0x115}],0xc5:[function(_0x4c55b5,_0x5b671f,_0x1bd8c4){var _0x3bd0f5=_0x322f0f;_0x5b671f[_0x3bd0f5('0x91e')]=function(_0x210861){return function(_0x2d90ad,_0x22277c,_0x3a37b2){var _0x45a2e0=_0x3e44;for(var _0x4043e6=-0x1,_0x454236=Object(_0x2d90ad),_0x2f1c20=_0x3a37b2(_0x2d90ad),_0x45da46=_0x2f1c20[_0x45a2e0('0x1d1')];_0x45da46--;){var _0x2eae86=_0x2f1c20[_0x210861?_0x45da46:++_0x4043e6];if(!0x1===_0x22277c(_0x454236[_0x2eae86],_0x2eae86,_0x454236))break;}return _0x2d90ad;};};},{}],0xc6:[function(_0x1a598f,_0x2e782f,_0x59be68){var _0x1e44ad=_0x322f0f,_0x556e43=_0x1a598f(_0x1e44ad('0xec')),_0x374f2d=function(){var _0x31e07d=_0x1e44ad;try{var _0x31d1f5=_0x556e43(Object,_0x31e07d('0x2cd'));return _0x31d1f5({},'',{}),_0x31d1f5;}catch(_0x5cbeee){}}();_0x2e782f[_0x1e44ad('0x91e')]=_0x374f2d;},{'./_getNative':0xcf}],0xc7:[function(_0x3036f6,_0x599052,_0x57d410){var _0x27e3e0=_0x322f0f,_0x2e39dc=_0x3036f6(_0x27e3e0('0x68c')),_0x2e963b=_0x3036f6(_0x27e3e0('0x65c')),_0x24a3c7=_0x3036f6('./_cacheHas');_0x599052['exports']=function(_0x3a7287,_0x2b8270,_0x581dd7,_0x13fee3,_0x58a302,_0x2be81c){var _0x2c04e9=_0x27e3e0,_0x4b43f2=0x1&_0x581dd7,_0x2b3287=_0x3a7287[_0x2c04e9('0x1d1')],_0x58ddab=_0x2b8270[_0x2c04e9('0x1d1')];if(_0x2b3287!=_0x58ddab&&!(_0x4b43f2&&_0x58ddab>_0x2b3287))return!0x1;var _0x1322e0=_0x2be81c['get'](_0x3a7287),_0x287f0d=_0x2be81c['get'](_0x2b8270);if(_0x1322e0&&_0x287f0d)return _0x1322e0==_0x2b8270&&_0x287f0d==_0x3a7287;var _0x4e0921=-0x1,_0x222b98=!0x0,_0xfd36b5=0x2&_0x581dd7?new _0x2e39dc():void 0x0;for(_0x2be81c['set'](_0x3a7287,_0x2b8270),_0x2be81c[_0x2c04e9('0x8ab')](_0x2b8270,_0x3a7287);++_0x4e0921<_0x2b3287;){var _0xe8a283=_0x3a7287[_0x4e0921],_0x32e3f4=_0x2b8270[_0x4e0921];if(_0x13fee3)var _0x220a5c=_0x4b43f2?_0x13fee3(_0x32e3f4,_0xe8a283,_0x4e0921,_0x2b8270,_0x3a7287,_0x2be81c):_0x13fee3(_0xe8a283,_0x32e3f4,_0x4e0921,_0x3a7287,_0x2b8270,_0x2be81c);if(void 0x0!==_0x220a5c){if(_0x220a5c)continue;_0x222b98=!0x1;break;}if(_0xfd36b5){if(!_0x2e963b(_0x2b8270,function(_0x196359,_0x9facd5){if(!_0x24a3c7(_0xfd36b5,_0x9facd5)&&(_0xe8a283===_0x196359||_0x58a302(_0xe8a283,_0x196359,_0x581dd7,_0x13fee3,_0x2be81c)))return _0xfd36b5['push'](_0x9facd5);})){_0x222b98=!0x1;break;}}else{if(_0xe8a283!==_0x32e3f4&&!_0x58a302(_0xe8a283,_0x32e3f4,_0x581dd7,_0x13fee3,_0x2be81c)){_0x222b98=!0x1;break;}}}return _0x2be81c['delete'](_0x3a7287),_0x2be81c[_0x2c04e9('0xc9d')](_0x2b8270),_0x222b98;};},{'./_SetCache':0x83,'./_arraySome':0x8e,'./_cacheHas':0xb5}],0xc8:[function(_0x15b515,_0x50e93e,_0x495bd3){var _0xd68446=_0x322f0f,_0x21778c=_0x15b515(_0xd68446('0x819')),_0x533a8c=_0x15b515(_0xd68446('0x7f')),_0x57e04e=_0x15b515(_0xd68446('0x7cf')),_0x37b02a=_0x15b515('./_equalArrays'),_0x5574bb=_0x15b515(_0xd68446('0x346')),_0x4a3434=_0x15b515(_0xd68446('0x123')),_0x486e4d=_0x21778c?_0x21778c['prototype']:void 0x0,_0x2e5ae0=_0x486e4d?_0x486e4d[_0xd68446('0x44f')]:void 0x0;_0x50e93e[_0xd68446('0x91e')]=function(_0x208137,_0x441323,_0x2369ac,_0x3dba40,_0x2d50a2,_0x59a70b,_0x198012){var _0x3cdf09=_0xd68446;switch(_0x2369ac){case'[object\x20DataView]':if(_0x208137[_0x3cdf09('0x738')]!=_0x441323[_0x3cdf09('0x738')]||_0x208137[_0x3cdf09('0x6c8')]!=_0x441323[_0x3cdf09('0x6c8')])return!0x1;_0x208137=_0x208137[_0x3cdf09('0xa53')],_0x441323=_0x441323[_0x3cdf09('0xa53')];case _0x3cdf09('0x3f8'):return!(_0x208137['byteLength']!=_0x441323[_0x3cdf09('0x738')]||!_0x59a70b(new _0x533a8c(_0x208137),new _0x533a8c(_0x441323)));case _0x3cdf09('0x687'):case _0x3cdf09('0x975'):case _0x3cdf09('0x6a9'):return _0x57e04e(+_0x208137,+_0x441323);case _0x3cdf09('0x8bb'):return _0x208137['name']==_0x441323[_0x3cdf09('0x9e')]&&_0x208137[_0x3cdf09('0x64')]==_0x441323[_0x3cdf09('0x64')];case _0x3cdf09('0xcc2'):case _0x3cdf09('0x341'):return _0x208137==_0x441323+'';case _0x3cdf09('0x462'):var _0x3dfe53=_0x5574bb;case _0x3cdf09('0x724'):var _0x1a0dc6=0x1&_0x3dba40;if(_0x3dfe53||(_0x3dfe53=_0x4a3434),_0x208137[_0x3cdf09('0xbd0')]!=_0x441323[_0x3cdf09('0xbd0')]&&!_0x1a0dc6)return!0x1;var _0x255881=_0x198012[_0x3cdf09('0x715')](_0x208137);if(_0x255881)return _0x255881==_0x441323;_0x3dba40|=0x2,_0x198012[_0x3cdf09('0x8ab')](_0x208137,_0x441323);var _0x32dee0=_0x37b02a(_0x3dfe53(_0x208137),_0x3dfe53(_0x441323),_0x3dba40,_0x2d50a2,_0x59a70b,_0x198012);return _0x198012[_0x3cdf09('0xc9d')](_0x208137),_0x32dee0;case _0x3cdf09('0x860'):if(_0x2e5ae0)return _0x2e5ae0[_0x3cdf09('0x928')](_0x208137)==_0x2e5ae0[_0x3cdf09('0x928')](_0x441323);}return!0x1;};},{'./_Symbol':0x85,'./_Uint8Array':0x86,'./_equalArrays':0xc7,'./_mapToArray':0xf0,'./_setToArray':0xfe,'./eq':0x10d}],0xc9:[function(_0x4f2c56,_0x5ec0eb,_0x416a78){var _0x5e005d=_0x322f0f,_0x3cfde0=_0x4f2c56(_0x5e005d('0xd93')),_0x3da716=Object[_0x5e005d('0x3ec')][_0x5e005d('0x106')];_0x5ec0eb[_0x5e005d('0x91e')]=function(_0x3961a0,_0x3e304b,_0x5be185,_0x32c55a,_0x58725e,_0x9d339){var _0x50e730=_0x5e005d,_0x70c118=0x1&_0x5be185,_0x80f338=_0x3cfde0(_0x3961a0),_0x13d383=_0x80f338[_0x50e730('0x1d1')];if(_0x13d383!=_0x3cfde0(_0x3e304b)[_0x50e730('0x1d1')]&&!_0x70c118)return!0x1;for(var _0x229895=_0x13d383;_0x229895--;){var _0x494d24=_0x80f338[_0x229895];if(!(_0x70c118?_0x494d24 in _0x3e304b:_0x3da716[_0x50e730('0x928')](_0x3e304b,_0x494d24)))return!0x1;}var _0x23f06d=_0x9d339['get'](_0x3961a0),_0x322a96=_0x9d339[_0x50e730('0x715')](_0x3e304b);if(_0x23f06d&&_0x322a96)return _0x23f06d==_0x3e304b&&_0x322a96==_0x3961a0;var _0xcb4649=!0x0;_0x9d339[_0x50e730('0x8ab')](_0x3961a0,_0x3e304b),_0x9d339[_0x50e730('0x8ab')](_0x3e304b,_0x3961a0);for(var _0x212be0=_0x70c118;++_0x229895<_0x13d383;){var _0x416e9b=_0x3961a0[_0x494d24=_0x80f338[_0x229895]],_0x426ead=_0x3e304b[_0x494d24];if(_0x32c55a)var _0x1f6ea6=_0x70c118?_0x32c55a(_0x426ead,_0x416e9b,_0x494d24,_0x3e304b,_0x3961a0,_0x9d339):_0x32c55a(_0x416e9b,_0x426ead,_0x494d24,_0x3961a0,_0x3e304b,_0x9d339);if(!(void 0x0===_0x1f6ea6?_0x416e9b===_0x426ead||_0x58725e(_0x416e9b,_0x426ead,_0x5be185,_0x32c55a,_0x9d339):_0x1f6ea6)){_0xcb4649=!0x1;break;}_0x212be0||(_0x212be0=_0x50e730('0xbe8')==_0x494d24);}if(_0xcb4649&&!_0x212be0){var _0x7d3e6a=_0x3961a0['constructor'],_0xfa88b9=_0x3e304b[_0x50e730('0xbe8')];_0x7d3e6a==_0xfa88b9||!('constructor'in _0x3961a0)||!(_0x50e730('0xbe8')in _0x3e304b)||_0x50e730('0x67')==typeof _0x7d3e6a&&_0x7d3e6a instanceof _0x7d3e6a&&_0x50e730('0x67')==typeof _0xfa88b9&&_0xfa88b9 instanceof _0xfa88b9||(_0xcb4649=!0x1);}return _0x9d339[_0x50e730('0xc9d')](_0x3961a0),_0x9d339[_0x50e730('0xc9d')](_0x3e304b),_0xcb4649;};},{'./_getAllKeys':0xcb}],0xca:[function(_0x425eec,_0x22bf76,_0x2145dc){var _0x57d00a=_0x322f0f;(function(_0x53dffd){var _0x83cc89=_0x3e44,_0x1043e0=_0x83cc89('0x669')==typeof _0x53dffd&&_0x53dffd&&_0x53dffd[_0x83cc89('0x40c')]===Object&&_0x53dffd;_0x22bf76[_0x83cc89('0x91e')]=_0x1043e0;}[_0x57d00a('0x928')](this,'undefined'!=typeof global?global:'undefined'!=typeof self?self:_0x57d00a('0x396')!=typeof window?window:{}));},{}],0xcb:[function(_0x202752,_0xc65e8,_0x448d1c){var _0x30be8d=_0x322f0f,_0xdb4bc6=_0x202752('./_baseGetAllKeys'),_0x25540e=_0x202752(_0x30be8d('0x9eb')),_0x1486ea=_0x202752(_0x30be8d('0x814'));_0xc65e8[_0x30be8d('0x91e')]=function(_0x20202b){return _0xdb4bc6(_0x20202b,_0x1486ea,_0x25540e);};},{'./_baseGetAllKeys':0x9b,'./_getSymbols':0xd2,'./keys':0x123}],0xcc:[function(_0x403daa,_0x337cf3,_0x431142){var _0x43a6c6=_0x322f0f,_0x26b7aa=_0x403daa(_0x43a6c6('0x13d')),_0x32a474=_0x403daa(_0x43a6c6('0xd1f')),_0x25620b=_0x403daa('./keysIn');_0x337cf3['exports']=function(_0x32e326){return _0x26b7aa(_0x32e326,_0x25620b,_0x32a474);};},{'./_baseGetAllKeys':0x9b,'./_getSymbolsIn':0xd3,'./keysIn':0x124}],0xcd:[function(_0x4d4ea6,_0x3ebae1,_0x4dff9a){var _0x3f3e1a=_0x4d4ea6('./_isKeyable');_0x3ebae1['exports']=function(_0x338f96,_0x3fd1cd){var _0x56c3dc=_0x3e44,_0x5b7c34=_0x338f96['__data__'];return _0x3f3e1a(_0x3fd1cd)?_0x5b7c34[_0x56c3dc('0x4ba')==typeof _0x3fd1cd?_0x56c3dc('0x4ba'):_0x56c3dc('0x35d')]:_0x5b7c34[_0x56c3dc('0x4ad')];};},{'./_isKeyable':0xe2}],0xce:[function(_0x379467,_0x20fb2d,_0xca940b){var _0x3f571e=_0x322f0f,_0x476575=_0x379467('./_isStrictComparable'),_0x37e1c8=_0x379467(_0x3f571e('0x814'));_0x20fb2d[_0x3f571e('0x91e')]=function(_0x357988){var _0x202f3b=_0x3f571e;for(var _0x4bb366=_0x37e1c8(_0x357988),_0x374386=_0x4bb366[_0x202f3b('0x1d1')];_0x374386--;){var _0x3f80d0=_0x4bb366[_0x374386],_0x356679=_0x357988[_0x3f80d0];_0x4bb366[_0x374386]=[_0x3f80d0,_0x356679,_0x476575(_0x356679)];}return _0x4bb366;};},{'./_isStrictComparable':0xe5,'./keys':0x123}],0xcf:[function(_0x27b9b0,_0x39151e,_0x4c3b49){var _0x1cee0e=_0x322f0f,_0x435eeb=_0x27b9b0(_0x1cee0e('0xb8b')),_0x5e3e6e=_0x27b9b0('./_getValue');_0x39151e['exports']=function(_0x312887,_0x429a08){var _0x38b7df=_0x5e3e6e(_0x312887,_0x429a08);return _0x435eeb(_0x38b7df)?_0x38b7df:void 0x0;};},{'./_baseIsNative':0xa3,'./_getValue':0xd5}],0xd0:[function(_0x3dce5e,_0x2fd57d,_0x54adf2){var _0x3f1649=_0x322f0f,_0x257988=_0x3dce5e(_0x3f1649('0x6ae'))(Object['getPrototypeOf'],Object);_0x2fd57d[_0x3f1649('0x91e')]=_0x257988;},{'./_overArg':0xf8}],0xd1:[function(_0x54f702,_0x5c1a7b,_0x22a1c7){var _0x17e936=_0x322f0f,_0x3615be=_0x54f702(_0x17e936('0x819')),_0x3f2e64=Object[_0x17e936('0x3ec')],_0x1c7c59=_0x3f2e64[_0x17e936('0x106')],_0x45ae82=_0x3f2e64['toString'],_0x5db6ba=_0x3615be?_0x3615be[_0x17e936('0x6f8')]:void 0x0;_0x5c1a7b[_0x17e936('0x91e')]=function(_0x2e054a){var _0x2984ec=_0x17e936,_0x3fd331=_0x1c7c59['call'](_0x2e054a,_0x5db6ba),_0x1a3293=_0x2e054a[_0x5db6ba];try{_0x2e054a[_0x5db6ba]=void 0x0;var _0x2eef29=!0x0;}catch(_0x81e2fe){}var _0x425336=_0x45ae82[_0x2984ec('0x928')](_0x2e054a);return _0x2eef29&&(_0x3fd331?_0x2e054a[_0x5db6ba]=_0x1a3293:delete _0x2e054a[_0x5db6ba]),_0x425336;};},{'./_Symbol':0x85}],0xd2:[function(_0x841105,_0x2c0ace,_0x275f07){var _0x14fd9d=_0x322f0f,_0x56573c=_0x841105(_0x14fd9d('0x929')),_0x2ddf2e=_0x841105(_0x14fd9d('0x5ba')),_0x2fdf85=Object[_0x14fd9d('0x3ec')][_0x14fd9d('0x269')],_0x58ae8b=Object[_0x14fd9d('0xdbc')],_0x3808dc=_0x58ae8b?function(_0x3f2a62){return null==_0x3f2a62?[]:(_0x3f2a62=Object(_0x3f2a62),_0x56573c(_0x58ae8b(_0x3f2a62),function(_0x12606f){var _0x1176ee=_0x3e44;return _0x2fdf85[_0x1176ee('0x928')](_0x3f2a62,_0x12606f);}));}:_0x2ddf2e;_0x2c0ace['exports']=_0x3808dc;},{'./_arrayFilter':0x8a,'./stubArray':0x12a}],0xd3:[function(_0x1ffe2e,_0x54d326,_0x28ca3c){var _0x41d8ce=_0x322f0f,_0x27e70d=_0x1ffe2e(_0x41d8ce('0xcc8')),_0x30a666=_0x1ffe2e(_0x41d8ce('0xab2')),_0x1d2bcd=_0x1ffe2e('./_getSymbols'),_0x4cf20e=_0x1ffe2e(_0x41d8ce('0x5ba')),_0x3d9cca=Object[_0x41d8ce('0xdbc')]?function(_0x220a6a){for(var _0x303319=[];_0x220a6a;)_0x27e70d(_0x303319,_0x1d2bcd(_0x220a6a)),_0x220a6a=_0x30a666(_0x220a6a);return _0x303319;}:_0x4cf20e;_0x54d326['exports']=_0x3d9cca;},{'./_arrayPush':0x8d,'./_getPrototype':0xd0,'./_getSymbols':0xd2,'./stubArray':0x12a}],0xd4:[function(_0x304f54,_0x48945e,_0x29adbc){var _0x4c3aef=_0x322f0f,_0x2698de=_0x304f54(_0x4c3aef('0x942')),_0x461959=_0x304f54('./_Map'),_0x352491=_0x304f54(_0x4c3aef('0xbb4')),_0xa33747=_0x304f54('./_Set'),_0x11cac7=_0x304f54(_0x4c3aef('0xce0')),_0x40298a=_0x304f54(_0x4c3aef('0x610')),_0x34470b=_0x304f54(_0x4c3aef('0x31b')),_0x366549=_0x34470b(_0x2698de),_0x296e79=_0x34470b(_0x461959),_0x376771=_0x34470b(_0x352491),_0x4382f1=_0x34470b(_0xa33747),_0x238eeb=_0x34470b(_0x11cac7),_0x524aab=_0x40298a;(_0x2698de&&'[object\x20DataView]'!=_0x524aab(new _0x2698de(new ArrayBuffer(0x1)))||_0x461959&&_0x4c3aef('0x462')!=_0x524aab(new _0x461959())||_0x352491&&_0x4c3aef('0x8b')!=_0x524aab(_0x352491[_0x4c3aef('0x578')]())||_0xa33747&&_0x4c3aef('0x724')!=_0x524aab(new _0xa33747())||_0x11cac7&&_0x4c3aef('0xf')!=_0x524aab(new _0x11cac7()))&&(_0x524aab=function(_0x545465){var _0x5bf0ab=_0x4c3aef,_0x79f4a4=_0x40298a(_0x545465),_0x5239c6=_0x5bf0ab('0x367')==_0x79f4a4?_0x545465[_0x5bf0ab('0xbe8')]:void 0x0,_0x4a151a=_0x5239c6?_0x34470b(_0x5239c6):'';if(_0x4a151a)switch(_0x4a151a){case _0x366549:return _0x5bf0ab('0x695');case _0x296e79:return'[object\x20Map]';case _0x376771:return _0x5bf0ab('0x8b');case _0x4382f1:return'[object\x20Set]';case _0x238eeb:return _0x5bf0ab('0xf');}return _0x79f4a4;}),_0x48945e[_0x4c3aef('0x91e')]=_0x524aab;},{'./_DataView':0x7c,'./_Map':0x7f,'./_Promise':0x81,'./_Set':0x82,'./_WeakMap':0x87,'./_baseGetTag':0x9c,'./_toSource':0x108}],0xd5:[function(_0x50db08,_0x5393db,_0x54f827){var _0x4307c9=_0x322f0f;_0x5393db[_0x4307c9('0x91e')]=function(_0x17cb90,_0x1ad1b){return null==_0x17cb90?void 0x0:_0x17cb90[_0x1ad1b];};},{}],0xd6:[function(_0x311f65,_0x180b6a,_0x1c66e3){var _0x596e3b=_0x322f0f,_0x5da1b4=_0x311f65(_0x596e3b('0x656')),_0x39dd1e=_0x311f65(_0x596e3b('0x8cc')),_0x3c6d76=_0x311f65(_0x596e3b('0x3ee')),_0xdf37f9=_0x311f65(_0x596e3b('0x355')),_0x6385ff=_0x311f65(_0x596e3b('0x5f0')),_0x34e6eb=_0x311f65(_0x596e3b('0xb20'));_0x180b6a['exports']=function(_0x1d710b,_0x488631,_0x474ae9){var _0x48bb38=_0x596e3b;for(var _0x3bdf71=-0x1,_0x7614b3=(_0x488631=_0x5da1b4(_0x488631,_0x1d710b))['length'],_0x34285d=!0x1;++_0x3bdf71<_0x7614b3;){var _0x472735=_0x34e6eb(_0x488631[_0x3bdf71]);if(!(_0x34285d=null!=_0x1d710b&&_0x474ae9(_0x1d710b,_0x472735)))break;_0x1d710b=_0x1d710b[_0x472735];}return _0x34285d||++_0x3bdf71!=_0x7614b3?_0x34285d:!!(_0x7614b3=null==_0x1d710b?0x0:_0x1d710b[_0x48bb38('0x1d1')])&&_0x6385ff(_0x7614b3)&&_0xdf37f9(_0x472735,_0x7614b3)&&(_0x3c6d76(_0x1d710b)||_0x39dd1e(_0x1d710b));};},{'./_castPath':0xb7,'./_isIndex':0xdf,'./_toKey':0x107,'./isArguments':0x113,'./isArray':0x114,'./isLength':0x119}],0xd7:[function(_0x522289,_0x4df61c,_0x2a95a6){var _0x5b6e0a=_0x322f0f,_0x4173e3=_0x522289(_0x5b6e0a('0x911'));_0x4df61c[_0x5b6e0a('0x91e')]=function(){var _0x405cfd=_0x5b6e0a;this[_0x405cfd('0x329')]=_0x4173e3?_0x4173e3(null):{},this[_0x405cfd('0xbd0')]=0x0;};},{'./_nativeCreate':0xf3}],0xd8:[function(_0x3d99cf,_0x10fa37,_0xa811fb){var _0x5549e7=_0x322f0f;_0x10fa37[_0x5549e7('0x91e')]=function(_0x4d9f67){var _0x2c96af=_0x5549e7,_0x5a1dcd=this[_0x2c96af('0x16d')](_0x4d9f67)&&delete this[_0x2c96af('0x329')][_0x4d9f67];return this[_0x2c96af('0xbd0')]-=_0x5a1dcd?0x1:0x0,_0x5a1dcd;};},{}],0xd9:[function(_0x4dafbd,_0x31e42a,_0x1b4ecd){var _0x28059b=_0x322f0f,_0x2602cb=_0x4dafbd('./_nativeCreate'),_0x2d887d=Object['prototype'][_0x28059b('0x106')];_0x31e42a[_0x28059b('0x91e')]=function(_0x3801e8){var _0x5a8b1a=_0x28059b,_0x64c434=this[_0x5a8b1a('0x329')];if(_0x2602cb){var _0x4dd35c=_0x64c434[_0x3801e8];return _0x5a8b1a('0x520')===_0x4dd35c?void 0x0:_0x4dd35c;}return _0x2d887d[_0x5a8b1a('0x928')](_0x64c434,_0x3801e8)?_0x64c434[_0x3801e8]:void 0x0;};},{'./_nativeCreate':0xf3}],0xda:[function(_0x4e6f81,_0xe9945c,_0x4e9d8a){var _0x386d36=_0x322f0f,_0x102287=_0x4e6f81('./_nativeCreate'),_0xf4b532=Object[_0x386d36('0x3ec')][_0x386d36('0x106')];_0xe9945c[_0x386d36('0x91e')]=function(_0xc3568b){var _0x4a5b6f=_0x386d36,_0x556e0e=this['__data__'];return _0x102287?void 0x0!==_0x556e0e[_0xc3568b]:_0xf4b532[_0x4a5b6f('0x928')](_0x556e0e,_0xc3568b);};},{'./_nativeCreate':0xf3}],0xdb:[function(_0x4d2d01,_0x2843a1,_0x28558c){var _0x50526a=_0x322f0f,_0x32bc39=_0x4d2d01(_0x50526a('0x911'));_0x2843a1[_0x50526a('0x91e')]=function(_0xc50915,_0x51e55f){var _0x54b3af=_0x50526a,_0x249d9a=this[_0x54b3af('0x329')];return this[_0x54b3af('0xbd0')]+=this[_0x54b3af('0x16d')](_0xc50915)?0x0:0x1,_0x249d9a[_0xc50915]=_0x32bc39&&void 0x0===_0x51e55f?_0x54b3af('0x520'):_0x51e55f,this;};},{'./_nativeCreate':0xf3}],0xdc:[function(_0x46768d,_0xed4097,_0x15e529){var _0x5b6384=_0x322f0f,_0x2f63c6=Object[_0x5b6384('0x3ec')]['hasOwnProperty'];_0xed4097[_0x5b6384('0x91e')]=function(_0x389f5c){var _0x4457e1=_0x5b6384,_0x4db905=_0x389f5c[_0x4457e1('0x1d1')],_0x2effb7=new _0x389f5c[(_0x4457e1('0xbe8'))](_0x4db905);return _0x4db905&&_0x4457e1('0x4ba')==typeof _0x389f5c[0x0]&&_0x2f63c6[_0x4457e1('0x928')](_0x389f5c,'index')&&(_0x2effb7['index']=_0x389f5c[_0x4457e1('0xb1a')],_0x2effb7[_0x4457e1('0x382')]=_0x389f5c[_0x4457e1('0x382')]),_0x2effb7;};},{}],0xdd:[function(_0x6c1232,_0x45e85b,_0x258ced){var _0xa58dc=_0x322f0f,_0x92a734=_0x6c1232(_0xa58dc('0x39e')),_0x1f47db=_0x6c1232(_0xa58dc('0x19c')),_0x226357=_0x6c1232(_0xa58dc('0xbfa')),_0x966272=_0x6c1232('./_cloneSymbol'),_0x5ea639=_0x6c1232(_0xa58dc('0x368'));_0x45e85b[_0xa58dc('0x91e')]=function(_0x43ab75,_0x20581b,_0x501375){var _0x566514=_0xa58dc,_0x1d702e=_0x43ab75[_0x566514('0xbe8')];switch(_0x20581b){case _0x566514('0x3f8'):return _0x92a734(_0x43ab75);case'[object\x20Boolean]':case _0x566514('0x975'):return new _0x1d702e(+_0x43ab75);case _0x566514('0x695'):return _0x1f47db(_0x43ab75,_0x501375);case _0x566514('0xcca'):case'[object\x20Float64Array]':case _0x566514('0x611'):case'[object\x20Int16Array]':case _0x566514('0x9b'):case _0x566514('0x63e'):case _0x566514('0xcb7'):case _0x566514('0x31'):case _0x566514('0x785'):return _0x5ea639(_0x43ab75,_0x501375);case'[object\x20Map]':return new _0x1d702e();case _0x566514('0x6a9'):case _0x566514('0x341'):return new _0x1d702e(_0x43ab75);case _0x566514('0xcc2'):return _0x226357(_0x43ab75);case _0x566514('0x724'):return new _0x1d702e();case _0x566514('0x860'):return _0x966272(_0x43ab75);}};},{'./_cloneArrayBuffer':0xb8,'./_cloneDataView':0xba,'./_cloneRegExp':0xbb,'./_cloneSymbol':0xbc,'./_cloneTypedArray':0xbd}],0xde:[function(_0x422ffb,_0x24ab86,_0x43e3bb){var _0x456fa6=_0x322f0f,_0x56155a=_0x422ffb(_0x456fa6('0x2cb')),_0x31b6d1=_0x422ffb(_0x456fa6('0xab2')),_0x189bdf=_0x422ffb(_0x456fa6('0x290'));_0x24ab86[_0x456fa6('0x91e')]=function(_0x2f743c){var _0x108cad=_0x456fa6;return _0x108cad('0x67')!=typeof _0x2f743c[_0x108cad('0xbe8')]||_0x189bdf(_0x2f743c)?{}:_0x56155a(_0x31b6d1(_0x2f743c));};},{'./_baseCreate':0x96,'./_getPrototype':0xd0,'./_isPrototype':0xe4}],0xdf:[function(_0x3da423,_0x206b9e,_0x355447){var _0x5ce824=_0x322f0f,_0x4e00f5=/^(?:0|[1-9]\d*)$/;_0x206b9e[_0x5ce824('0x91e')]=function(_0x8ba54f,_0x425681){var _0x49bb1d=_0x5ce824,_0x2273cb=typeof _0x8ba54f;return!!(_0x425681=null==_0x425681?0x1fffffffffffff:_0x425681)&&(_0x49bb1d('0x913')==_0x2273cb||_0x49bb1d('0xd77')!=_0x2273cb&&_0x4e00f5[_0x49bb1d('0xb03')](_0x8ba54f))&&_0x8ba54f>-0x1&&_0x8ba54f%0x1==0x0&&_0x8ba54f<_0x425681;};},{}],0xe0:[function(_0x13b6d3,_0x54649a,_0xc8e8bb){var _0x468ed0=_0x322f0f,_0x42e7ab=_0x13b6d3(_0x468ed0('0x7cf')),_0x2d06da=_0x13b6d3('./isArrayLike'),_0xf056d5=_0x13b6d3(_0x468ed0('0x355')),_0x12d3f3=_0x13b6d3(_0x468ed0('0x8a4'));_0x54649a[_0x468ed0('0x91e')]=function(_0x4f3c65,_0x41642f,_0x5a4b53){var _0x2572bb=_0x468ed0;if(!_0x12d3f3(_0x5a4b53))return!0x1;var _0x178e02=typeof _0x41642f;return!!(_0x2572bb('0x913')==_0x178e02?_0x2d06da(_0x5a4b53)&&_0xf056d5(_0x41642f,_0x5a4b53[_0x2572bb('0x1d1')]):_0x2572bb('0x4ba')==_0x178e02&&_0x41642f in _0x5a4b53)&&_0x42e7ab(_0x5a4b53[_0x41642f],_0x4f3c65);};},{'./_isIndex':0xdf,'./eq':0x10d,'./isArrayLike':0x115,'./isObject':0x11b}],0xe1:[function(_0x58a9a8,_0x14ce6e,_0x52cf80){var _0x209fbe=_0x322f0f,_0x5c2f11=_0x58a9a8(_0x209fbe('0x3ee')),_0x1cc8ec=_0x58a9a8(_0x209fbe('0xbc1')),_0x5667d4=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,_0x3e034f=/^\w*$/;_0x14ce6e[_0x209fbe('0x91e')]=function(_0x359e50,_0x107b11){var _0x2bbab7=_0x209fbe;if(_0x5c2f11(_0x359e50))return!0x1;var _0x2879d2=typeof _0x359e50;return!(_0x2bbab7('0x913')!=_0x2879d2&&_0x2bbab7('0xd77')!=_0x2879d2&&_0x2bbab7('0x210')!=_0x2879d2&&null!=_0x359e50&&!_0x1cc8ec(_0x359e50))||(_0x3e034f[_0x2bbab7('0xb03')](_0x359e50)||!_0x5667d4[_0x2bbab7('0xb03')](_0x359e50)||null!=_0x107b11&&_0x359e50 in Object(_0x107b11));};},{'./isArray':0x114,'./isSymbol':0x120}],0xe2:[function(_0x2bafff,_0x21e32a,_0x35af57){var _0x40c47a=_0x322f0f;_0x21e32a[_0x40c47a('0x91e')]=function(_0x197da1){var _0x188e37=_0x40c47a,_0x416eac=typeof _0x197da1;return'string'==_0x416eac||_0x188e37('0x913')==_0x416eac||_0x188e37('0xd77')==_0x416eac||'boolean'==_0x416eac?_0x188e37('0xc15')!==_0x197da1:null===_0x197da1;};},{}],0xe3:[function(_0x284ff2,_0x1eca92,_0x5941f8){var _0x176a37=_0x322f0f,_0x57f832,_0x559aad=_0x284ff2('./_coreJsData'),_0x55ce64=(_0x57f832=/[^.]+$/['exec'](_0x559aad&&_0x559aad[_0x176a37('0x882')]&&_0x559aad['keys'][_0x176a37('0x859')]||''))?_0x176a37('0x1fb')+_0x57f832:'';_0x1eca92[_0x176a37('0x91e')]=function(_0x2421d2){return!!_0x55ce64&&_0x55ce64 in _0x2421d2;};},{'./_coreJsData':0xc2}],0xe4:[function(_0x50d14a,_0x422fa4,_0x1aee62){var _0x4262f1=_0x322f0f,_0x4da773=Object[_0x4262f1('0x3ec')];_0x422fa4[_0x4262f1('0x91e')]=function(_0x48acff){var _0x57d5ef=_0x4262f1,_0x5df484=_0x48acff&&_0x48acff[_0x57d5ef('0xbe8')];return _0x48acff===(_0x57d5ef('0x67')==typeof _0x5df484&&_0x5df484[_0x57d5ef('0x3ec')]||_0x4da773);};},{}],0xe5:[function(_0x14d164,_0x73da5a,_0x8b4273){var _0x4bada9=_0x322f0f,_0x320d3e=_0x14d164(_0x4bada9('0x8a4'));_0x73da5a[_0x4bada9('0x91e')]=function(_0x4ec810){return _0x4ec810==_0x4ec810&&!_0x320d3e(_0x4ec810);};},{'./isObject':0x11b}],0xe6:[function(_0x29fca6,_0x1e422b,_0x30df0f){var _0xe92819=_0x322f0f;_0x1e422b[_0xe92819('0x91e')]=function(){var _0x5ee4cd=_0xe92819;this['__data__']=[],this[_0x5ee4cd('0xbd0')]=0x0;};},{}],0xe7:[function(_0x1762bf,_0x45d789,_0x125d74){var _0x4bfac4=_0x322f0f,_0x1e0478=_0x1762bf(_0x4bfac4('0xd9b')),_0x4ab334=Array[_0x4bfac4('0x3ec')][_0x4bfac4('0xb66')];_0x45d789[_0x4bfac4('0x91e')]=function(_0x51d5ff){var _0x371c36=_0x4bfac4,_0x24a400=this[_0x371c36('0x329')],_0x151c4f=_0x1e0478(_0x24a400,_0x51d5ff);return!(_0x151c4f<0x0)&&(_0x151c4f==_0x24a400[_0x371c36('0x1d1')]-0x1?_0x24a400[_0x371c36('0x2ca')]():_0x4ab334['call'](_0x24a400,_0x151c4f,0x1),--this[_0x371c36('0xbd0')],!0x0);};},{'./_assocIndexOf':0x91}],0xe8:[function(_0x3bbc28,_0x14d6cb,_0x48d80d){var _0x98d406=_0x322f0f,_0x65a2ba=_0x3bbc28(_0x98d406('0xd9b'));_0x14d6cb[_0x98d406('0x91e')]=function(_0x478c25){var _0x50f787=_0x98d406,_0x45f9fc=this[_0x50f787('0x329')],_0x45e2e3=_0x65a2ba(_0x45f9fc,_0x478c25);return _0x45e2e3<0x0?void 0x0:_0x45f9fc[_0x45e2e3][0x1];};},{'./_assocIndexOf':0x91}],0xe9:[function(_0x39211f,_0x101f4d,_0x5ee49a){var _0x3c5ae4=_0x322f0f,_0x28e9a0=_0x39211f(_0x3c5ae4('0xd9b'));_0x101f4d['exports']=function(_0x2ffaec){var _0x572688=_0x3c5ae4;return _0x28e9a0(this[_0x572688('0x329')],_0x2ffaec)>-0x1;};},{'./_assocIndexOf':0x91}],0xea:[function(_0x3c881b,_0x2b0bdc,_0x3ec233){var _0x19ed6f=_0x322f0f,_0x489e2a=_0x3c881b(_0x19ed6f('0xd9b'));_0x2b0bdc[_0x19ed6f('0x91e')]=function(_0x2acc67,_0x5230b2){var _0xf9537=_0x19ed6f,_0x1da031=this[_0xf9537('0x329')],_0x11df06=_0x489e2a(_0x1da031,_0x2acc67);return _0x11df06<0x0?(++this['size'],_0x1da031[_0xf9537('0x8cd')]([_0x2acc67,_0x5230b2])):_0x1da031[_0x11df06][0x1]=_0x5230b2,this;};},{'./_assocIndexOf':0x91}],0xeb:[function(_0x1ad7ec,_0x54c780,_0x126ca4){var _0x1f4dd7=_0x322f0f,_0x189a7f=_0x1ad7ec(_0x1f4dd7('0x968')),_0x384e4e=_0x1ad7ec('./_ListCache'),_0x46f27f=_0x1ad7ec(_0x1f4dd7('0x298'));_0x54c780[_0x1f4dd7('0x91e')]=function(){var _0x30bf14=_0x1f4dd7;this[_0x30bf14('0xbd0')]=0x0,this[_0x30bf14('0x329')]={'hash':new _0x189a7f(),'map':new(_0x46f27f||_0x384e4e)(),'string':new _0x189a7f()};};},{'./_Hash':0x7d,'./_ListCache':0x7e,'./_Map':0x7f}],0xec:[function(_0x4267f3,_0x4d3b6b,_0x1c9f56){var _0x5f1a6e=_0x322f0f,_0x1c0ac7=_0x4267f3(_0x5f1a6e('0x4fd'));_0x4d3b6b['exports']=function(_0x36f926){var _0x62d9da=_0x5f1a6e,_0x3a7be2=_0x1c0ac7(this,_0x36f926)[_0x62d9da('0xc9d')](_0x36f926);return this[_0x62d9da('0xbd0')]-=_0x3a7be2?0x1:0x0,_0x3a7be2;};},{'./_getMapData':0xcd}],0xed:[function(_0x3bac10,_0x1959d3,_0x507d35){var _0x130798=_0x322f0f,_0xb51811=_0x3bac10(_0x130798('0x4fd'));_0x1959d3[_0x130798('0x91e')]=function(_0x4d016){var _0x3066e8=_0x130798;return _0xb51811(this,_0x4d016)[_0x3066e8('0x715')](_0x4d016);};},{'./_getMapData':0xcd}],0xee:[function(_0x1ce483,_0x250bfb,_0x147b78){var _0xa1baf9=_0x322f0f,_0x5ac91b=_0x1ce483(_0xa1baf9('0x4fd'));_0x250bfb[_0xa1baf9('0x91e')]=function(_0x158443){return _0x5ac91b(this,_0x158443)['has'](_0x158443);};},{'./_getMapData':0xcd}],0xef:[function(_0xeda04f,_0x4d0057,_0x3b935a){var _0x5a088b=_0x322f0f,_0x3b1f97=_0xeda04f(_0x5a088b('0x4fd'));_0x4d0057[_0x5a088b('0x91e')]=function(_0x1daf21,_0x45d81d){var _0xd86f07=_0x5a088b,_0x38f9c9=_0x3b1f97(this,_0x1daf21),_0x3bd8dc=_0x38f9c9[_0xd86f07('0xbd0')];return _0x38f9c9[_0xd86f07('0x8ab')](_0x1daf21,_0x45d81d),this[_0xd86f07('0xbd0')]+=_0x38f9c9[_0xd86f07('0xbd0')]==_0x3bd8dc?0x0:0x1,this;};},{'./_getMapData':0xcd}],0xf0:[function(_0x3d7675,_0xee70f6,_0x44bcb5){_0xee70f6['exports']=function(_0x15b557){var _0x4d585a=_0x3e44,_0x28b99d=-0x1,_0xe99b88=Array(_0x15b557[_0x4d585a('0xbd0')]);return _0x15b557[_0x4d585a('0x7ed')](function(_0x5922d7,_0x2f20c6){_0xe99b88[++_0x28b99d]=[_0x2f20c6,_0x5922d7];}),_0xe99b88;};},{}],0xf1:[function(_0x543ea9,_0x5ee982,_0x4bca00){var _0x559734=_0x322f0f;_0x5ee982[_0x559734('0x91e')]=function(_0x11889e,_0x1f5d0){return function(_0x3dd8b5){return null!=_0x3dd8b5&&(_0x3dd8b5[_0x11889e]===_0x1f5d0&&(void 0x0!==_0x1f5d0||_0x11889e in Object(_0x3dd8b5)));};};},{}],0xf2:[function(_0x462f57,_0x16bb1f,_0x18f4b6){var _0x5453b8=_0x322f0f,_0x234115=_0x462f57('./memoize');_0x16bb1f[_0x5453b8('0x91e')]=function(_0x3e7029){var _0x1586c3=_0x234115(_0x3e7029,function(_0x4abdb6){var _0x8f07e7=_0x3e44;return 0x1f4===_0x4ec0b2[_0x8f07e7('0xbd0')]&&_0x4ec0b2[_0x8f07e7('0x4c')](),_0x4abdb6;}),_0x4ec0b2=_0x1586c3['cache'];return _0x1586c3;};},{'./memoize':0x126}],0xf3:[function(_0x47b008,_0x1b971e,_0x1d7bd8){var _0x49a8f6=_0x322f0f,_0xd40cdc=_0x47b008(_0x49a8f6('0xec'))(Object,_0x49a8f6('0xd9d'));_0x1b971e['exports']=_0xd40cdc;},{'./_getNative':0xcf}],0xf4:[function(_0x50bb6,_0xb334d,_0x489c2f){var _0x11f578=_0x322f0f,_0x5c50a6=_0x50bb6('./_overArg')(Object['keys'],Object);_0xb334d[_0x11f578('0x91e')]=_0x5c50a6;},{'./_overArg':0xf8}],0xf5:[function(_0x7a9280,_0x4ea76a,_0x474702){var _0x256e98=_0x322f0f;_0x4ea76a[_0x256e98('0x91e')]=function(_0x4d8dbe){var _0x4312ff=[];if(null!=_0x4d8dbe)for(var _0x452c65 in Object(_0x4d8dbe))_0x4312ff['push'](_0x452c65);return _0x4312ff;};},{}],0xf6:[function(_0x40758e,_0x430553,_0x38787b){var _0x598346=_0x322f0f,_0x5dfd11=_0x40758e('./_freeGlobal'),_0x4fa7e0=_0x598346('0x669')==typeof _0x38787b&&_0x38787b&&!_0x38787b[_0x598346('0xa7')]&&_0x38787b,_0x136ba6=_0x4fa7e0&&_0x598346('0x669')==typeof _0x430553&&_0x430553&&!_0x430553['nodeType']&&_0x430553,_0x168cf8=_0x136ba6&&_0x136ba6['exports']===_0x4fa7e0&&_0x5dfd11[_0x598346('0xcbc')],_0x423fa4=function(){var _0x194595=_0x598346;try{var _0x3767b1=_0x136ba6&&_0x136ba6[_0x194595('0x316')]&&_0x136ba6['require'](_0x194595('0x5db'))[_0x194595('0xcd2')];return _0x3767b1||_0x168cf8&&_0x168cf8[_0x194595('0x313')]&&_0x168cf8[_0x194595('0x313')](_0x194595('0x5db'));}catch(_0x31a337){}}();_0x430553[_0x598346('0x91e')]=_0x423fa4;},{'./_freeGlobal':0xca}],0xf7:[function(_0x56cad2,_0x173269,_0x417ad3){var _0x312e2d=_0x322f0f,_0x29bf30=Object['prototype'][_0x312e2d('0x8dc')];_0x173269[_0x312e2d('0x91e')]=function(_0x4e026b){var _0x4aba2a=_0x312e2d;return _0x29bf30[_0x4aba2a('0x928')](_0x4e026b);};},{}],0xf8:[function(_0x21c034,_0x22ac16,_0x31b1e5){_0x22ac16['exports']=function(_0x295af0,_0x14608a){return function(_0x18da7a){return _0x295af0(_0x14608a(_0x18da7a));};};},{}],0xf9:[function(_0x2abb5b,_0x1415d9,_0x101709){var _0x3bea23=_0x322f0f,_0x4c3f0e=_0x2abb5b(_0x3bea23('0x757')),_0x4d8ef2=Math[_0x3bea23('0x5c0')];_0x1415d9[_0x3bea23('0x91e')]=function(_0x5000c1,_0xfd43ba,_0xcee014){return _0xfd43ba=_0x4d8ef2(void 0x0===_0xfd43ba?_0x5000c1['length']-0x1:_0xfd43ba,0x0),function(){var _0x1aae79=_0x3e44;for(var _0x332ef5=arguments,_0x25c07a=-0x1,_0x3df011=_0x4d8ef2(_0x332ef5[_0x1aae79('0x1d1')]-_0xfd43ba,0x0),_0x4b0dd9=Array(_0x3df011);++_0x25c07a<_0x3df011;)_0x4b0dd9[_0x25c07a]=_0x332ef5[_0xfd43ba+_0x25c07a];_0x25c07a=-0x1;for(var _0x137fbc=Array(_0xfd43ba+0x1);++_0x25c07a<_0xfd43ba;)_0x137fbc[_0x25c07a]=_0x332ef5[_0x25c07a];return _0x137fbc[_0xfd43ba]=_0xcee014(_0x4b0dd9),_0x4c3f0e(_0x5000c1,this,_0x137fbc);};};},{'./_apply':0x88}],0xfa:[function(_0x1bd77c,_0x458391,_0x355f72){var _0x1d4c09=_0x322f0f,_0x4179b7=_0x1bd77c(_0x1d4c09('0x17e')),_0x21aee2=_0x1d4c09('0x669')==typeof self&&self&&self[_0x1d4c09('0x40c')]===Object&&self,_0x42389a=_0x4179b7||_0x21aee2||Function(_0x1d4c09('0xcd6'))();_0x458391[_0x1d4c09('0x91e')]=_0x42389a;},{'./_freeGlobal':0xca}],0xfb:[function(_0xbac303,_0x43e1ea,_0x3ff015){_0x43e1ea['exports']=function(_0x4793e4,_0x2a995b){var _0xaa605f=_0x3e44;if(('constructor'!==_0x2a995b||_0xaa605f('0x67')!=typeof _0x4793e4[_0x2a995b])&&'__proto__'!=_0x2a995b)return _0x4793e4[_0x2a995b];};},{}],0xfc:[function(_0x41a68f,_0x39012e,_0x17974d){var _0xf1b297=_0x322f0f;_0x39012e[_0xf1b297('0x91e')]=function(_0x58d6c3){var _0x495c7a=_0xf1b297;return this[_0x495c7a('0x329')][_0x495c7a('0x8ab')](_0x58d6c3,_0x495c7a('0x520')),this;};},{}],0xfd:[function(_0x3415b9,_0x315480,_0x3313b7){_0x315480['exports']=function(_0x595613){var _0x2601cc=_0x3e44;return this[_0x2601cc('0x329')][_0x2601cc('0x16d')](_0x595613);};},{}],0xfe:[function(_0x34c73c,_0x584e83,_0x530c5c){var _0x44fb83=_0x322f0f;_0x584e83[_0x44fb83('0x91e')]=function(_0x3f3f2d){var _0x2d1acb=_0x44fb83,_0x551f26=-0x1,_0x1a8285=Array(_0x3f3f2d[_0x2d1acb('0xbd0')]);return _0x3f3f2d[_0x2d1acb('0x7ed')](function(_0x3258dd){_0x1a8285[++_0x551f26]=_0x3258dd;}),_0x1a8285;};},{}],0xff:[function(_0x58188c,_0x3af2b4,_0x24fe3a){var _0x254b14=_0x322f0f,_0x481963=_0x58188c(_0x254b14('0xb41')),_0x4afb1b=_0x58188c('./_shortOut')(_0x481963);_0x3af2b4[_0x254b14('0x91e')]=_0x4afb1b;},{'./_baseSetToString':0xb1,'./_shortOut':0x100}],0x100:[function(_0x23caf5,_0x53e4e0,_0x2d3632){var _0x552442=_0x322f0f,_0x45fd0a=Date[_0x552442('0xd82')];_0x53e4e0[_0x552442('0x91e')]=function(_0x1cbd26){var _0x1528fd=0x0,_0x5a01d3=0x0;return function(){var _0x770081=_0x45fd0a(),_0x5a929e=0x10-(_0x770081-_0x5a01d3);if(_0x5a01d3=_0x770081,_0x5a929e>0x0){if(++_0x1528fd>=0x320)return arguments[0x0];}else _0x1528fd=0x0;return _0x1cbd26['apply'](void 0x0,arguments);};};},{}],0x101:[function(_0xed0a7b,_0x3dc877,_0x4c01e7){var _0x5de6ed=_0x322f0f,_0x4801ef=_0xed0a7b(_0x5de6ed('0x973'));_0x3dc877['exports']=function(){var _0x2b5899=_0x5de6ed;this[_0x2b5899('0x329')]=new _0x4801ef(),this[_0x2b5899('0xbd0')]=0x0;};},{'./_ListCache':0x7e}],0x102:[function(_0x14ed7f,_0x2c3a9b,_0x91cebb){var _0x34fda7=_0x322f0f;_0x2c3a9b[_0x34fda7('0x91e')]=function(_0x2cac13){var _0x3e81ac=_0x34fda7,_0x4a0885=this[_0x3e81ac('0x329')],_0x53b02a=_0x4a0885[_0x3e81ac('0xc9d')](_0x2cac13);return this[_0x3e81ac('0xbd0')]=_0x4a0885['size'],_0x53b02a;};},{}],0x103:[function(_0x3666ab,_0x57bee1,_0x97316b){var _0x362f87=_0x322f0f;_0x57bee1[_0x362f87('0x91e')]=function(_0x38c463){var _0x292700=_0x362f87;return this['__data__'][_0x292700('0x715')](_0x38c463);};},{}],0x104:[function(_0x18882f,_0x2c233e,_0x5c4329){var _0x2f9c62=_0x322f0f;_0x2c233e[_0x2f9c62('0x91e')]=function(_0x4c778b){var _0x3a2586=_0x2f9c62;return this[_0x3a2586('0x329')][_0x3a2586('0x16d')](_0x4c778b);};},{}],0x105:[function(_0x2c0d6d,_0x347321,_0x5ca5e3){var _0x23fa54=_0x322f0f,_0x538d15=_0x2c0d6d(_0x23fa54('0x973')),_0x85fc63=_0x2c0d6d(_0x23fa54('0x298')),_0x2335a9=_0x2c0d6d(_0x23fa54('0x2ff'));_0x347321['exports']=function(_0x2c9fe7,_0x5efaea){var _0x4050dd=_0x23fa54,_0x10397f=this['__data__'];if(_0x10397f instanceof _0x538d15){var _0x3e7357=_0x10397f[_0x4050dd('0x329')];if(!_0x85fc63||_0x3e7357[_0x4050dd('0x1d1')]<0xc7)return _0x3e7357[_0x4050dd('0x8cd')]([_0x2c9fe7,_0x5efaea]),this[_0x4050dd('0xbd0')]=++_0x10397f['size'],this;_0x10397f=this[_0x4050dd('0x329')]=new _0x2335a9(_0x3e7357);}return _0x10397f[_0x4050dd('0x8ab')](_0x2c9fe7,_0x5efaea),this[_0x4050dd('0xbd0')]=_0x10397f['size'],this;};},{'./_ListCache':0x7e,'./_Map':0x7f,'./_MapCache':0x80}],0x106:[function(_0x3b4888,_0x596b93,_0x531b1f){var _0x19947e=_0x322f0f,_0x2396b1=_0x3b4888('./_memoizeCapped'),_0x37aaff=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,_0x40f8f3=/\\(\\)?/g,_0x413308=_0x2396b1(function(_0x564ea5){var _0x3d7964=_0x3e44,_0x70cddd=[];return 0x2e===_0x564ea5['charCodeAt'](0x0)&&_0x70cddd[_0x3d7964('0x8cd')](''),_0x564ea5[_0x3d7964('0x95e')](_0x37aaff,function(_0x55823e,_0x262fe4,_0x5b1785,_0x983a7d){var _0x571b91=_0x3d7964;_0x70cddd[_0x571b91('0x8cd')](_0x5b1785?_0x983a7d[_0x571b91('0x95e')](_0x40f8f3,'$1'):_0x262fe4||_0x55823e);}),_0x70cddd;});_0x596b93[_0x19947e('0x91e')]=_0x413308;},{'./_memoizeCapped':0xf2}],0x107:[function(_0x159443,_0x29240c,_0x31946b){var _0x2c7c0b=_0x322f0f,_0x59e22a=_0x159443(_0x2c7c0b('0xbc1'));_0x29240c[_0x2c7c0b('0x91e')]=function(_0x49fec1){var _0x10d124=_0x2c7c0b;if(_0x10d124('0x4ba')==typeof _0x49fec1||_0x59e22a(_0x49fec1))return _0x49fec1;var _0x2f60dc=_0x49fec1+'';return'0'==_0x2f60dc&&0x1/_0x49fec1==-0x1/0x0?'-0':_0x2f60dc;};},{'./isSymbol':0x120}],0x108:[function(_0x371931,_0x2112e5,_0x1660f3){var _0x43c617=_0x322f0f,_0x48ed20=Function[_0x43c617('0x3ec')][_0x43c617('0x8dc')];_0x2112e5[_0x43c617('0x91e')]=function(_0x1ff93a){var _0x2e990a=_0x43c617;if(null!=_0x1ff93a){try{return _0x48ed20[_0x2e990a('0x928')](_0x1ff93a);}catch(_0x1d1444){}try{return _0x1ff93a+'';}catch(_0x3b5ac6){}}return'';};},{}],0x109:[function(_0x4a7ea4,_0x2027f5,_0x10372b){var _0x11bf4a=_0x322f0f,_0x5584f1=_0x4a7ea4('./_baseClone');_0x2027f5[_0x11bf4a('0x91e')]=function(_0x43bacc){return _0x5584f1(_0x43bacc,0x5);};},{'./_baseClone':0x95}],0x10a:[function(_0x1aa780,_0x4b241d,_0x5f07da){var _0x6c11c7=_0x322f0f;_0x4b241d[_0x6c11c7('0x91e')]=function(_0x6aa8b4){return function(){return _0x6aa8b4;};};},{}],0x10b:[function(_0x20f0f7,_0x577122,_0x59fcf2){var _0x3db3fa=_0x322f0f,_0x3e9048=_0x20f0f7(_0x3db3fa('0x8a4')),_0x331bfe=_0x20f0f7(_0x3db3fa('0x67e')),_0x4253db=_0x20f0f7(_0x3db3fa('0x8e3')),_0x4875c3=Math[_0x3db3fa('0x5c0')],_0x5c31c3=Math[_0x3db3fa('0x4d7')];_0x577122[_0x3db3fa('0x91e')]=function(_0x48aea1,_0x4cc1cf,_0x502e34){var _0x2f8d50=_0x3db3fa,_0x9ad4e0,_0x4f66bd,_0x27f4a9,_0x3466e8,_0x2d2818,_0x2b00c4,_0x3690da=0x0,_0xbfb50b=!0x1,_0x4379cb=!0x1,_0x5cbdb0=!0x0;if(_0x2f8d50('0x67')!=typeof _0x48aea1)throw new TypeError(_0x2f8d50('0x370'));function _0x68c68e(_0x2fe2af){var _0x499d27=_0x2f8d50,_0x1e901b=_0x9ad4e0,_0x488055=_0x4f66bd;return _0x9ad4e0=_0x4f66bd=void 0x0,_0x3690da=_0x2fe2af,_0x3466e8=_0x48aea1[_0x499d27('0x7da')](_0x488055,_0x1e901b);}function _0x3dbab9(_0xe027bb){return _0x3690da=_0xe027bb,_0x2d2818=setTimeout(_0x4430bd,_0x4cc1cf),_0xbfb50b?_0x68c68e(_0xe027bb):_0x3466e8;}function _0x1988e4(_0x359ad0){var _0x25e860=_0x359ad0-_0x2b00c4;return void 0x0===_0x2b00c4||_0x25e860>=_0x4cc1cf||_0x25e860<0x0||_0x4379cb&&_0x359ad0-_0x3690da>=_0x27f4a9;}function _0x4430bd(){var _0x4c2705=_0x331bfe();if(_0x1988e4(_0x4c2705))return _0x573e30(_0x4c2705);_0x2d2818=setTimeout(_0x4430bd,function(_0x3eff2e){var _0x40fbe0=_0x4cc1cf-(_0x3eff2e-_0x2b00c4);return _0x4379cb?_0x5c31c3(_0x40fbe0,_0x27f4a9-(_0x3eff2e-_0x3690da)):_0x40fbe0;}(_0x4c2705));}function _0x573e30(_0x30a21e){return _0x2d2818=void 0x0,_0x5cbdb0&&_0x9ad4e0?_0x68c68e(_0x30a21e):(_0x9ad4e0=_0x4f66bd=void 0x0,_0x3466e8);}function _0xe6c949(){var _0x229f9b=_0x331bfe(),_0x1f8b96=_0x1988e4(_0x229f9b);if(_0x9ad4e0=arguments,_0x4f66bd=this,_0x2b00c4=_0x229f9b,_0x1f8b96){if(void 0x0===_0x2d2818)return _0x3dbab9(_0x2b00c4);if(_0x4379cb)return clearTimeout(_0x2d2818),_0x2d2818=setTimeout(_0x4430bd,_0x4cc1cf),_0x68c68e(_0x2b00c4);}return void 0x0===_0x2d2818&&(_0x2d2818=setTimeout(_0x4430bd,_0x4cc1cf)),_0x3466e8;}return _0x4cc1cf=_0x4253db(_0x4cc1cf)||0x0,_0x3e9048(_0x502e34)&&(_0xbfb50b=!!_0x502e34['leading'],_0x27f4a9=(_0x4379cb=_0x2f8d50('0x289')in _0x502e34)?_0x4875c3(_0x4253db(_0x502e34['maxWait'])||0x0,_0x4cc1cf):_0x27f4a9,_0x5cbdb0=_0x2f8d50('0x925')in _0x502e34?!!_0x502e34['trailing']:_0x5cbdb0),_0xe6c949[_0x2f8d50('0x5c1')]=function(){void 0x0!==_0x2d2818&&clearTimeout(_0x2d2818),_0x3690da=0x0,_0x9ad4e0=_0x2b00c4=_0x4f66bd=_0x2d2818=void 0x0;},_0xe6c949[_0x2f8d50('0x253')]=function(){return void 0x0===_0x2d2818?_0x3466e8:_0x573e30(_0x331bfe());},_0xe6c949;};},{'./isObject':0x11b,'./now':0x128,'./toNumber':0x12d}],0x10c:[function(_0x59362e,_0x3a1516,_0x23546c){var _0x2042ce=_0x322f0f;_0x3a1516[_0x2042ce('0x91e')]=_0x59362e(_0x2042ce('0x8c2'));},{'./forEach':0x10e}],0x10d:[function(_0x215e76,_0x400b26,_0x38804c){_0x400b26['exports']=function(_0xff63b4,_0x549d58){return _0xff63b4===_0x549d58||_0xff63b4!=_0xff63b4&&_0x549d58!=_0x549d58;};},{}],0x10e:[function(_0x598716,_0x23a149,_0x1e3c54){var _0x3b1c55=_0x322f0f,_0xe54b17=_0x598716(_0x3b1c55('0x537')),_0xe960e2=_0x598716(_0x3b1c55('0x507')),_0x3fe45e=_0x598716('./_castFunction'),_0x2e7ac2=_0x598716('./isArray');_0x23a149[_0x3b1c55('0x91e')]=function(_0x158bfe,_0x2488b0){return(_0x2e7ac2(_0x158bfe)?_0xe54b17:_0xe960e2)(_0x158bfe,_0x3fe45e(_0x2488b0));};},{'./_arrayEach':0x89,'./_baseEach':0x97,'./_castFunction':0xb6,'./isArray':0x114}],0x10f:[function(_0x48b66c,_0x5e6562,_0x12d69b){var _0x51e12e=_0x322f0f,_0x1741c7=_0x48b66c('./_baseForOwn'),_0x1aadf4=_0x48b66c(_0x51e12e('0x8df'));_0x5e6562['exports']=function(_0x411faa,_0x4f89d4){return _0x411faa&&_0x1741c7(_0x411faa,_0x1aadf4(_0x4f89d4));};},{'./_baseForOwn':0x99,'./_castFunction':0xb6}],0x110:[function(_0x2d63d1,_0x14cc6e,_0x307400){var _0x5f7fc3=_0x322f0f,_0x5968d0=_0x2d63d1(_0x5f7fc3('0x455'));_0x14cc6e[_0x5f7fc3('0x91e')]=function(_0x26b767,_0x24eb80,_0x4baf0b){var _0x59b773=null==_0x26b767?void 0x0:_0x5968d0(_0x26b767,_0x24eb80);return void 0x0===_0x59b773?_0x4baf0b:_0x59b773;};},{'./_baseGet':0x9a}],0x111:[function(_0x8b2690,_0x4615a8,_0x146901){var _0x3e829e=_0x322f0f,_0x190006=_0x8b2690(_0x3e829e('0xc80')),_0x48d70f=_0x8b2690(_0x3e829e('0xb06'));_0x4615a8[_0x3e829e('0x91e')]=function(_0x2d38e8,_0x29d0b1){return null!=_0x2d38e8&&_0x48d70f(_0x2d38e8,_0x29d0b1,_0x190006);};},{'./_baseHasIn':0x9d,'./_hasPath':0xd6}],0x112:[function(_0x230314,_0x3666c7,_0xdf3f18){var _0x7e16a9=_0x322f0f;_0x3666c7[_0x7e16a9('0x91e')]=function(_0x4d08f8){return _0x4d08f8;};},{}],0x113:[function(_0x143c38,_0x2e3a22,_0x26f9c8){var _0x17038d=_0x322f0f,_0x4b6761=_0x143c38(_0x17038d('0x99e')),_0x39471e=_0x143c38('./isObjectLike'),_0xb243b9=Object['prototype'],_0x1a64ca=_0xb243b9[_0x17038d('0x106')],_0x306251=_0xb243b9[_0x17038d('0x269')],_0x2e7604=_0x4b6761(function(){return arguments;}())?_0x4b6761:function(_0x1c7ef2){var _0x4c319d=_0x17038d;return _0x39471e(_0x1c7ef2)&&_0x1a64ca[_0x4c319d('0x928')](_0x1c7ef2,'callee')&&!_0x306251[_0x4c319d('0x928')](_0x1c7ef2,'callee');};_0x2e3a22[_0x17038d('0x91e')]=_0x2e7604;},{'./_baseIsArguments':0x9e,'./isObjectLike':0x11c}],0x114:[function(_0x5b424d,_0x8b8304,_0x562cb4){var _0x109d67=_0x322f0f,_0x14476=Array['isArray'];_0x8b8304[_0x109d67('0x91e')]=_0x14476;},{}],0x115:[function(_0x59d3be,_0x580cad,_0x9fc584){var _0x27dc42=_0x322f0f,_0x112578=_0x59d3be(_0x27dc42('0x1c')),_0x1d8401=_0x59d3be('./isLength');_0x580cad[_0x27dc42('0x91e')]=function(_0x264717){var _0x2197ba=_0x27dc42;return null!=_0x264717&&_0x1d8401(_0x264717[_0x2197ba('0x1d1')])&&!_0x112578(_0x264717);};},{'./isFunction':0x118,'./isLength':0x119}],0x116:[function(_0x25bd3b,_0x5aa0f0,_0x1914da){var _0x2a62d4=_0x322f0f,_0x1c3ddf=_0x25bd3b(_0x2a62d4('0xd7a')),_0x80549d=_0x25bd3b(_0x2a62d4('0x6b6'));_0x5aa0f0[_0x2a62d4('0x91e')]=function(_0x2a3c58){return _0x80549d(_0x2a3c58)&&_0x1c3ddf(_0x2a3c58);};},{'./isArrayLike':0x115,'./isObjectLike':0x11c}],0x117:[function(_0x13df66,_0x3494c9,_0x358433){var _0x3da6c4=_0x322f0f,_0x316228=_0x13df66('./_root'),_0x18b253=_0x13df66(_0x3da6c4('0xaab')),_0x2d3900=_0x3da6c4('0x669')==typeof _0x358433&&_0x358433&&!_0x358433[_0x3da6c4('0xa7')]&&_0x358433,_0x56750c=_0x2d3900&&'object'==typeof _0x3494c9&&_0x3494c9&&!_0x3494c9[_0x3da6c4('0xa7')]&&_0x3494c9,_0x5830e0=_0x56750c&&_0x56750c[_0x3da6c4('0x91e')]===_0x2d3900?_0x316228[_0x3da6c4('0x825')]:void 0x0,_0x5af434=(_0x5830e0?_0x5830e0[_0x3da6c4('0x628')]:void 0x0)||_0x18b253;_0x3494c9[_0x3da6c4('0x91e')]=_0x5af434;},{'./_root':0xfa,'./stubFalse':0x12b}],0x118:[function(_0x808393,_0x22ef61,_0x1abf34){var _0x1d6304=_0x322f0f,_0x4f1793=_0x808393('./_baseGetTag'),_0x38b989=_0x808393('./isObject');_0x22ef61[_0x1d6304('0x91e')]=function(_0x246626){var _0x5b76a4=_0x1d6304;if(!_0x38b989(_0x246626))return!0x1;var _0x11f19c=_0x4f1793(_0x246626);return _0x5b76a4('0xbe1')==_0x11f19c||_0x5b76a4('0xc0c')==_0x11f19c||_0x5b76a4('0x3bb')==_0x11f19c||_0x5b76a4('0x587')==_0x11f19c;};},{'./_baseGetTag':0x9c,'./isObject':0x11b}],0x119:[function(_0x10ff81,_0x36661a,_0x4ba6cd){_0x36661a['exports']=function(_0x1bbac6){var _0x342c8c=_0x3e44;return _0x342c8c('0x913')==typeof _0x1bbac6&&_0x1bbac6>-0x1&&_0x1bbac6%0x1==0x0&&_0x1bbac6<=0x1fffffffffffff;};},{}],0x11a:[function(_0x53692b,_0x1521da,_0x3137e3){var _0x8232e4=_0x322f0f,_0x3484b1=_0x53692b(_0x8232e4('0x473')),_0x48e25b=_0x53692b(_0x8232e4('0xdb4')),_0x476793=_0x53692b(_0x8232e4('0xcf3')),_0x1c7c53=_0x476793&&_0x476793[_0x8232e4('0xb09')],_0x243ccc=_0x1c7c53?_0x48e25b(_0x1c7c53):_0x3484b1;_0x1521da['exports']=_0x243ccc;},{'./_baseIsMap':0xa1,'./_baseUnary':0xb4,'./_nodeUtil':0xf6}],0x11b:[function(_0x4037a0,_0x5bf6a4,_0xfe5ced){var _0x346e32=_0x322f0f;_0x5bf6a4[_0x346e32('0x91e')]=function(_0x4c11d1){var _0x370e95=_0x346e32,_0x3435ac=typeof _0x4c11d1;return null!=_0x4c11d1&&(_0x370e95('0x669')==_0x3435ac||_0x370e95('0x67')==_0x3435ac);};},{}],0x11c:[function(_0x1e4548,_0x4a930c,_0x1823b7){var _0x5d4e1a=_0x322f0f;_0x4a930c[_0x5d4e1a('0x91e')]=function(_0x194471){var _0x274fe4=_0x5d4e1a;return null!=_0x194471&&_0x274fe4('0x669')==typeof _0x194471;};},{}],0x11d:[function(_0x1bfe75,_0x2124a9,_0x4984a6){var _0x2a48aa=_0x322f0f,_0x58cae1=_0x1bfe75(_0x2a48aa('0x610')),_0x2ceb18=_0x1bfe75(_0x2a48aa('0xab2')),_0x42e8d8=_0x1bfe75(_0x2a48aa('0x6b6')),_0x261711=Function[_0x2a48aa('0x3ec')],_0x5cf358=Object[_0x2a48aa('0x3ec')],_0x58b8e8=_0x261711[_0x2a48aa('0x8dc')],_0x40a290=_0x5cf358[_0x2a48aa('0x106')],_0x5e016f=_0x58b8e8['call'](Object);_0x2124a9[_0x2a48aa('0x91e')]=function(_0x40be98){var _0x3a6b26=_0x2a48aa;if(!_0x42e8d8(_0x40be98)||_0x3a6b26('0x367')!=_0x58cae1(_0x40be98))return!0x1;var _0x2e73f1=_0x2ceb18(_0x40be98);if(null===_0x2e73f1)return!0x0;var _0x3b586e=_0x40a290[_0x3a6b26('0x928')](_0x2e73f1,_0x3a6b26('0xbe8'))&&_0x2e73f1['constructor'];return _0x3a6b26('0x67')==typeof _0x3b586e&&_0x3b586e instanceof _0x3b586e&&_0x58b8e8[_0x3a6b26('0x928')](_0x3b586e)==_0x5e016f;};},{'./_baseGetTag':0x9c,'./_getPrototype':0xd0,'./isObjectLike':0x11c}],0x11e:[function(_0x1c952c,_0x5b9655,_0xba412a){var _0x4aa53d=_0x322f0f,_0x1971c4=_0x1c952c('./_baseIsSet'),_0x58e6b5=_0x1c952c('./_baseUnary'),_0x28994a=_0x1c952c(_0x4aa53d('0xcf3')),_0xa12f1e=_0x28994a&&_0x28994a[_0x4aa53d('0xc33')],_0x8b382d=_0xa12f1e?_0x58e6b5(_0xa12f1e):_0x1971c4;_0x5b9655[_0x4aa53d('0x91e')]=_0x8b382d;},{'./_baseIsSet':0xa4,'./_baseUnary':0xb4,'./_nodeUtil':0xf6}],0x11f:[function(_0x473762,_0x4e05ef,_0x525030){var _0x351c59=_0x322f0f,_0x2c2c4b=_0x473762('./_baseGetTag'),_0xd1d358=_0x473762(_0x351c59('0x3ee')),_0x3667a6=_0x473762(_0x351c59('0x6b6'));_0x4e05ef[_0x351c59('0x91e')]=function(_0x1c987c){var _0x54cebe=_0x351c59;return'string'==typeof _0x1c987c||!_0xd1d358(_0x1c987c)&&_0x3667a6(_0x1c987c)&&_0x54cebe('0x341')==_0x2c2c4b(_0x1c987c);};},{'./_baseGetTag':0x9c,'./isArray':0x114,'./isObjectLike':0x11c}],0x120:[function(_0x2fe757,_0x5e633c,_0x3e8790){var _0x5ea152=_0x322f0f,_0x1ca830=_0x2fe757('./_baseGetTag'),_0x44b63c=_0x2fe757(_0x5ea152('0x6b6'));_0x5e633c[_0x5ea152('0x91e')]=function(_0x17dc42){var _0xf95854=_0x5ea152;return _0xf95854('0xd77')==typeof _0x17dc42||_0x44b63c(_0x17dc42)&&_0xf95854('0x860')==_0x1ca830(_0x17dc42);};},{'./_baseGetTag':0x9c,'./isObjectLike':0x11c}],0x121:[function(_0x1b7a7d,_0x4a341c,_0x1a0fe6){var _0x156528=_0x322f0f,_0x151b25=_0x1b7a7d(_0x156528('0x933')),_0x247bee=_0x1b7a7d(_0x156528('0xdb4')),_0x1cef6e=_0x1b7a7d(_0x156528('0xcf3')),_0x9cc8ea=_0x1cef6e&&_0x1cef6e[_0x156528('0x196')],_0x1e4ad0=_0x9cc8ea?_0x247bee(_0x9cc8ea):_0x151b25;_0x4a341c[_0x156528('0x91e')]=_0x1e4ad0;},{'./_baseIsTypedArray':0xa5,'./_baseUnary':0xb4,'./_nodeUtil':0xf6}],0x122:[function(_0x15117b,_0x42c8ba,_0xbe3cc4){_0x42c8ba['exports']=function(_0x530dee){return void 0x0===_0x530dee;};},{}],0x123:[function(_0x1d9ada,_0x57c267,_0x2cd51a){var _0x2c33e8=_0x322f0f,_0x389996=_0x1d9ada(_0x2c33e8('0x99f')),_0x3d45f1=_0x1d9ada(_0x2c33e8('0xcf5')),_0x3be50b=_0x1d9ada('./isArrayLike');_0x57c267[_0x2c33e8('0x91e')]=function(_0x5603c){return _0x3be50b(_0x5603c)?_0x389996(_0x5603c):_0x3d45f1(_0x5603c);};},{'./_arrayLikeKeys':0x8b,'./_baseKeys':0xa7,'./isArrayLike':0x115}],0x124:[function(_0x5afc6b,_0x58aeb5,_0x16d7f4){var _0x305428=_0x322f0f,_0xd1f80b=_0x5afc6b(_0x305428('0x99f')),_0x387da7=_0x5afc6b(_0x305428('0x889')),_0x138c7d=_0x5afc6b(_0x305428('0xd7a'));_0x58aeb5['exports']=function(_0x35765c){return _0x138c7d(_0x35765c)?_0xd1f80b(_0x35765c,!0x0):_0x387da7(_0x35765c);};},{'./_arrayLikeKeys':0x8b,'./_baseKeysIn':0xa8,'./isArrayLike':0x115}],0x125:[function(_0x1dd24a,_0x478bc7,_0x25b0b8){var _0x269f5c=_0x322f0f,_0x4340ff=_0x1dd24a('./_arrayMap'),_0x30b261=_0x1dd24a(_0x269f5c('0xa20')),_0x25daae=_0x1dd24a(_0x269f5c('0x47c')),_0x292dd0=_0x1dd24a(_0x269f5c('0x3ee'));_0x478bc7[_0x269f5c('0x91e')]=function(_0x5cccff,_0x391f66){return(_0x292dd0(_0x5cccff)?_0x4340ff:_0x25daae)(_0x5cccff,_0x30b261(_0x391f66,0x3));};},{'./_arrayMap':0x8c,'./_baseIteratee':0xa6,'./_baseMap':0xa9,'./isArray':0x114}],0x126:[function(_0x19293b,_0x466641,_0x429d10){var _0x3e5859=_0x322f0f,_0x283943=_0x19293b(_0x3e5859('0x2ff'));function _0x58d9af(_0x544d34,_0x577f04){var _0x12f477=_0x3e5859;if(_0x12f477('0x67')!=typeof _0x544d34||null!=_0x577f04&&_0x12f477('0x67')!=typeof _0x577f04)throw new TypeError(_0x12f477('0x370'));var _0xbfc4fc=function(){var _0xb016d4=_0x12f477,_0x408e80=arguments,_0x3136c1=_0x577f04?_0x577f04[_0xb016d4('0x7da')](this,_0x408e80):_0x408e80[0x0],_0x10664c=_0xbfc4fc[_0xb016d4('0x528')];if(_0x10664c['has'](_0x3136c1))return _0x10664c[_0xb016d4('0x715')](_0x3136c1);var _0x2c36ad=_0x544d34[_0xb016d4('0x7da')](this,_0x408e80);return _0xbfc4fc['cache']=_0x10664c['set'](_0x3136c1,_0x2c36ad)||_0x10664c,_0x2c36ad;};return _0xbfc4fc[_0x12f477('0x528')]=new(_0x58d9af[(_0x12f477('0x5cb'))]||_0x283943)(),_0xbfc4fc;}_0x58d9af[_0x3e5859('0x5cb')]=_0x283943,_0x466641['exports']=_0x58d9af;},{'./_MapCache':0x80}],0x127:[function(_0x15a019,_0x5d0e87,_0x2f9e35){var _0x5c4e93=_0x322f0f,_0x35aeae=_0x15a019(_0x5c4e93('0x4fc')),_0x133d8c=_0x15a019(_0x5c4e93('0xb90'))(function(_0x209777,_0x19ca60,_0x17196f){_0x35aeae(_0x209777,_0x19ca60,_0x17196f);});_0x5d0e87[_0x5c4e93('0x91e')]=_0x133d8c;},{'./_baseMerge':0xac,'./_createAssigner':0xc3}],0x128:[function(_0x245369,_0x1162ea,_0x40ada3){var _0x30be97=_0x322f0f,_0x2cf252=_0x245369(_0x30be97('0x90e'));_0x1162ea['exports']=function(){var _0x439dc6=_0x30be97;return _0x2cf252[_0x439dc6('0xd9f')][_0x439dc6('0xd82')]();};},{'./_root':0xfa}],0x129:[function(_0x5701eb,_0xb4a7fc,_0x5b770){var _0x4eef9d=_0x322f0f,_0x1305c6=_0x5701eb(_0x4eef9d('0x3d4')),_0x4c3674=_0x5701eb('./_basePropertyDeep'),_0x9477ed=_0x5701eb(_0x4eef9d('0x32')),_0x240b32=_0x5701eb(_0x4eef9d('0xb20'));_0xb4a7fc[_0x4eef9d('0x91e')]=function(_0x21b4e5){return _0x9477ed(_0x21b4e5)?_0x1305c6(_0x240b32(_0x21b4e5)):_0x4c3674(_0x21b4e5);};},{'./_baseProperty':0xae,'./_basePropertyDeep':0xaf,'./_isKey':0xe1,'./_toKey':0x107}],0x12a:[function(_0x132a8c,_0x43d85c,_0x510d39){var _0x166f85=_0x322f0f;_0x43d85c[_0x166f85('0x91e')]=function(){return[];};},{}],0x12b:[function(_0x5111b1,_0x259c6d,_0x5e5991){_0x259c6d['exports']=function(){return!0x1;};},{}],0x12c:[function(_0x1cf530,_0x4bb9df,_0x40b4a5){var _0x48e30b=_0x322f0f,_0x3e643e=_0x1cf530(_0x48e30b('0x7de')),_0x4f8678=_0x1cf530('./isObject');_0x4bb9df[_0x48e30b('0x91e')]=function(_0x46a0fc,_0x34100e,_0x55a30a){var _0x4945d5=_0x48e30b,_0x577452=!0x0,_0x1faf5e=!0x0;if(_0x4945d5('0x67')!=typeof _0x46a0fc)throw new TypeError(_0x4945d5('0x370'));return _0x4f8678(_0x55a30a)&&(_0x577452='leading'in _0x55a30a?!!_0x55a30a[_0x4945d5('0xb3c')]:_0x577452,_0x1faf5e=_0x4945d5('0x925')in _0x55a30a?!!_0x55a30a[_0x4945d5('0x925')]:_0x1faf5e),_0x3e643e(_0x46a0fc,_0x34100e,{'leading':_0x577452,'maxWait':_0x34100e,'trailing':_0x1faf5e});};},{'./debounce':0x10b,'./isObject':0x11b}],0x12d:[function(_0x1208c9,_0x2be1fc,_0x31dccf){var _0x33361d=_0x322f0f,_0x24afa7=_0x1208c9(_0x33361d('0x8a4')),_0x70c042=_0x1208c9(_0x33361d('0xbc1')),_0x13413a=/^\s+|\s+$/g,_0x3c4a50=/^[-+]0x[0-9a-f]+$/i,_0x38b69f=/^0b[01]+$/i,_0x3e9f98=/^0o[0-7]+$/i,_0x4f8d1c=parseInt;_0x2be1fc[_0x33361d('0x91e')]=function(_0x240ffc){var _0x461c99=_0x33361d;if('number'==typeof _0x240ffc)return _0x240ffc;if(_0x70c042(_0x240ffc))return NaN;if(_0x24afa7(_0x240ffc)){var _0x12dca8=_0x461c99('0x67')==typeof _0x240ffc['valueOf']?_0x240ffc[_0x461c99('0x44f')]():_0x240ffc;_0x240ffc=_0x24afa7(_0x12dca8)?_0x12dca8+'':_0x12dca8;}if(_0x461c99('0x4ba')!=typeof _0x240ffc)return 0x0===_0x240ffc?_0x240ffc:+_0x240ffc;_0x240ffc=_0x240ffc[_0x461c99('0x95e')](_0x13413a,'');var _0x3cd5d0=_0x38b69f[_0x461c99('0xb03')](_0x240ffc);return _0x3cd5d0||_0x3e9f98['test'](_0x240ffc)?_0x4f8d1c(_0x240ffc[_0x461c99('0x63a')](0x2),_0x3cd5d0?0x2:0x8):_0x3c4a50[_0x461c99('0xb03')](_0x240ffc)?NaN:+_0x240ffc;};},{'./isObject':0x11b,'./isSymbol':0x120}],0x12e:[function(_0x5f39cc,_0xd51883,_0x20d19f){var _0x245c93=_0x322f0f,_0x3a2eba=_0x5f39cc(_0x245c93('0x4d1')),_0xa7aab5=_0x5f39cc(_0x245c93('0x14b'));_0xd51883[_0x245c93('0x91e')]=function(_0x435685){return _0x3a2eba(_0x435685,_0xa7aab5(_0x435685));};},{'./_copyObject':0xbf,'./keysIn':0x124}],0x12f:[function(_0x4bdc89,_0x3515c8,_0x119362){var _0x399d4=_0x4bdc89('./_baseToString');_0x3515c8['exports']=function(_0x3b1783){return null==_0x3b1783?'':_0x399d4(_0x3b1783);};},{'./_baseToString':0xb3}],0x130:[function(_0x5eeec9,_0x8c4d47,_0x586e1f){var _0x2f49e5=_0x322f0f,_0x5ca6c9,_0xa9381c;_0x5ca6c9=this,_0xa9381c=function(){var _0x4e1da8=_0x3e44;return{'red':{0x32:_0x4e1da8('0x9dc'),0x64:_0x4e1da8('0x7d7'),0xc8:_0x4e1da8('0x54b'),0x12c:_0x4e1da8('0xf9'),0x190:'#ef5350',0x1f4:'#f44336',0x258:_0x4e1da8('0x7a5'),0x2bc:_0x4e1da8('0x310'),0x320:_0x4e1da8('0x691'),0x384:_0x4e1da8('0xd8f'),'a100':_0x4e1da8('0x152'),'a200':_0x4e1da8('0xda5'),'a400':_0x4e1da8('0xbc3'),'a700':_0x4e1da8('0xb2d')},'pink':{0x32:_0x4e1da8('0x294'),0x64:_0x4e1da8('0x259'),0xc8:'#f48fb1',0x12c:'#f06292',0x190:_0x4e1da8('0x4b1'),0x1f4:_0x4e1da8('0x5fc'),0x258:'#d81b60',0x2bc:_0x4e1da8('0x728'),0x320:'#ad1457',0x384:_0x4e1da8('0x5af'),'a100':_0x4e1da8('0x9c6'),'a200':'#ff4081','a400':_0x4e1da8('0xd4f'),'a700':_0x4e1da8('0x497')},'purple':{0x32:_0x4e1da8('0x205'),0x64:'#e1bee7',0xc8:_0x4e1da8('0xc2b'),0x12c:_0x4e1da8('0xc32'),0x190:_0x4e1da8('0x709'),0x1f4:_0x4e1da8('0x8ee'),0x258:_0x4e1da8('0xbee'),0x2bc:_0x4e1da8('0x35a'),0x320:_0x4e1da8('0x5f1'),0x384:'#4a148c','a100':_0x4e1da8('0xcf8'),'a200':_0x4e1da8('0x812'),'a400':_0x4e1da8('0xaa7'),'a700':_0x4e1da8('0x1b8')},'deepPurple':{0x32:_0x4e1da8('0x51'),0x64:_0x4e1da8('0xb8'),0xc8:'#b39ddb',0x12c:'#9575cd',0x190:'#7e57c2',0x1f4:'#673ab7',0x258:_0x4e1da8('0xaf8'),0x2bc:_0x4e1da8('0xc6d'),0x320:_0x4e1da8('0x157'),0x384:_0x4e1da8('0x5c5'),'a100':_0x4e1da8('0x319'),'a200':_0x4e1da8('0x2ec'),'a400':_0x4e1da8('0xcbb'),'a700':_0x4e1da8('0x62a')},'indigo':{0x32:'#e8eaf6',0x64:_0x4e1da8('0x3e3'),0xc8:_0x4e1da8('0x271'),0x12c:'#7986cb',0x190:_0x4e1da8('0x6ba'),0x1f4:_0x4e1da8('0x37'),0x258:'#3949ab',0x2bc:_0x4e1da8('0xdc5'),0x320:_0x4e1da8('0x1f'),0x384:_0x4e1da8('0x1dd'),'a100':_0x4e1da8('0x980'),'a200':_0x4e1da8('0x3e6'),'a400':_0x4e1da8('0x4e9'),'a700':_0x4e1da8('0xad4')},'blue':{0x32:'#e3f2fd',0x64:'#bbdefb',0xc8:'#90caf9',0x12c:'#64b5f6',0x190:_0x4e1da8('0x221'),0x1f4:_0x4e1da8('0x766'),0x258:_0x4e1da8('0x903'),0x2bc:'#1976d2',0x320:_0x4e1da8('0x970'),0x384:_0x4e1da8('0x605'),'a100':_0x4e1da8('0x85f'),'a200':_0x4e1da8('0x888'),'a400':_0x4e1da8('0xb6c'),'a700':_0x4e1da8('0x98d')},'lightBlue':{0x32:_0x4e1da8('0x1ff'),0x64:_0x4e1da8('0xa92'),0xc8:_0x4e1da8('0xd1b'),0x12c:_0x4e1da8('0xcd7'),0x190:_0x4e1da8('0x956'),0x1f4:_0x4e1da8('0xb8e'),0x258:_0x4e1da8('0x144'),0x2bc:'#0288d1',0x320:_0x4e1da8('0x12e'),0x384:'#01579b','a100':_0x4e1da8('0xbe3'),'a200':_0x4e1da8('0x415'),'a400':_0x4e1da8('0x5d3'),'a700':_0x4e1da8('0x1b9')},'cyan':{0x32:'#e0f7fa',0x64:_0x4e1da8('0x2f6'),0xc8:_0x4e1da8('0x12f'),0x12c:'#4dd0e1',0x190:_0x4e1da8('0x69a'),0x1f4:_0x4e1da8('0xd6b'),0x258:'#00acc1',0x2bc:_0x4e1da8('0xae7'),0x320:_0x4e1da8('0x43e'),0x384:_0x4e1da8('0x82f'),'a100':_0x4e1da8('0x640'),'a200':'#18ffff','a400':_0x4e1da8('0x61f'),'a700':_0x4e1da8('0x86d')},'teal':{0x32:'#e0f2f1',0x64:_0x4e1da8('0x124'),0xc8:_0x4e1da8('0xa68'),0x12c:_0x4e1da8('0x714'),0x190:_0x4e1da8('0xb89'),0x1f4:'#009688',0x258:_0x4e1da8('0x215'),0x2bc:'#00796b',0x320:_0x4e1da8('0x165'),0x384:_0x4e1da8('0xa62'),'a100':'#a7ffeb','a200':'#64ffda','a400':_0x4e1da8('0x2b3'),'a700':_0x4e1da8('0xd42')},'green':{0x32:_0x4e1da8('0x6b8'),0x64:_0x4e1da8('0xa8'),0xc8:_0x4e1da8('0x772'),0x12c:'#81c784',0x190:'#66bb6a',0x1f4:_0x4e1da8('0x4a0'),0x258:_0x4e1da8('0xb07'),0x2bc:_0x4e1da8('0xa88'),0x320:_0x4e1da8('0xb3f'),0x384:_0x4e1da8('0xc79'),'a100':_0x4e1da8('0x3cf'),'a200':_0x4e1da8('0xbff'),'a400':'#00e676','a700':_0x4e1da8('0x95f')},'lightGreen':{0x32:_0x4e1da8('0x542'),0x64:'#dcedc8',0xc8:_0x4e1da8('0x937'),0x12c:_0x4e1da8('0x1db'),0x190:_0x4e1da8('0x6f6'),0x1f4:_0x4e1da8('0x393'),0x258:'#7cb342',0x2bc:_0x4e1da8('0x9a6'),0x320:'#558b2f',0x384:_0x4e1da8('0x562'),'a100':_0x4e1da8('0x9d7'),'a200':_0x4e1da8('0x654'),'a400':_0x4e1da8('0x787'),'a700':'#64dd17'},'lime':{0x32:_0x4e1da8('0x4a5'),0x64:'#f0f4c3',0xc8:_0x4e1da8('0x6b'),0x12c:_0x4e1da8('0x3a6'),0x190:'#d4e157',0x1f4:_0x4e1da8('0x176'),0x258:_0x4e1da8('0x5be'),0x2bc:_0x4e1da8('0x13c'),0x320:_0x4e1da8('0xa59'),0x384:_0x4e1da8('0xad5'),'a100':_0x4e1da8('0x59f'),'a200':_0x4e1da8('0x117'),'a400':_0x4e1da8('0xbcd'),'a700':'#aeea00'},'yellow':{0x32:_0x4e1da8('0x192'),0x64:_0x4e1da8('0xd3f'),0xc8:'#fff59d',0x12c:_0x4e1da8('0x443'),0x190:'#ffee58',0x1f4:'#ffeb3b',0x258:_0x4e1da8('0x5c8'),0x2bc:'#fbc02d',0x320:_0x4e1da8('0xb92'),0x384:'#f57f17','a100':_0x4e1da8('0xb2'),'a200':_0x4e1da8('0x9c4'),'a400':_0x4e1da8('0xa87'),'a700':_0x4e1da8('0x673')},'amber':{0x32:_0x4e1da8('0xa0d'),0x64:_0x4e1da8('0x3ef'),0xc8:'#ffe082',0x12c:'#ffd54f',0x190:_0x4e1da8('0xac2'),0x1f4:_0x4e1da8('0x9'),0x258:_0x4e1da8('0x118'),0x2bc:_0x4e1da8('0x345'),0x320:_0x4e1da8('0x328'),0x384:'#ff6f00','a100':_0x4e1da8('0xa2b'),'a200':_0x4e1da8('0x2be'),'a400':_0x4e1da8('0x688'),'a700':_0x4e1da8('0xb62')},'orange':{0x32:'#fff3e0',0x64:_0x4e1da8('0x864'),0xc8:_0x4e1da8('0x162'),0x12c:_0x4e1da8('0x52f'),0x190:_0x4e1da8('0x430'),0x1f4:_0x4e1da8('0x267'),0x258:'#fb8c00',0x2bc:'#f57c00',0x320:_0x4e1da8('0x5ae'),0x384:'#e65100','a100':_0x4e1da8('0xa2c'),'a200':_0x4e1da8('0x6df'),'a400':_0x4e1da8('0xcb2'),'a700':_0x4e1da8('0x641')},'deepOrange':{0x32:_0x4e1da8('0x88f'),0x64:_0x4e1da8('0x272'),0xc8:'#ffab91',0x12c:_0x4e1da8('0xb56'),0x190:'#ff7043',0x1f4:_0x4e1da8('0x8c6'),0x258:_0x4e1da8('0x642'),0x2bc:_0x4e1da8('0x526'),0x320:_0x4e1da8('0xdaa'),0x384:_0x4e1da8('0x4a8'),'a100':'#ff9e80','a200':_0x4e1da8('0xdad'),'a400':_0x4e1da8('0x565'),'a700':_0x4e1da8('0xd13')},'brown':{0x32:_0x4e1da8('0x862'),0x64:_0x4e1da8('0x12a'),0xc8:_0x4e1da8('0x5cc'),0x12c:_0x4e1da8('0x218'),0x190:_0x4e1da8('0xbf5'),0x1f4:_0x4e1da8('0x4c1'),0x258:_0x4e1da8('0x4cb'),0x2bc:_0x4e1da8('0xc40'),0x320:_0x4e1da8('0x36b'),0x384:_0x4e1da8('0x10d')},'grey':{0x32:_0x4e1da8('0x5e7'),0x64:_0x4e1da8('0x1a2'),0xc8:_0x4e1da8('0x7f4'),0x12c:'#e0e0e0',0x190:_0x4e1da8('0xc7b'),0x1f4:_0x4e1da8('0x248'),0x258:_0x4e1da8('0xd79'),0x2bc:_0x4e1da8('0x580'),0x320:_0x4e1da8('0x1d6'),0x384:_0x4e1da8('0x9a8')},'blueGrey':{0x32:_0x4e1da8('0x3b5'),0x64:_0x4e1da8('0x560'),0xc8:'#b0bec5',0x12c:_0x4e1da8('0x300'),0x190:_0x4e1da8('0x3df'),0x1f4:_0x4e1da8('0x37d'),0x258:_0x4e1da8('0x76a'),0x2bc:_0x4e1da8('0x74a'),0x320:_0x4e1da8('0x4f'),0x384:'#263238'},'darkText':{'primary':'rgba(0,\x200,\x200,\x200.87)','secondary':_0x4e1da8('0xb47'),'disabled':_0x4e1da8('0x8c9'),'dividers':_0x4e1da8('0x8af')},'lightText':{'primary':_0x4e1da8('0xae6'),'secondary':_0x4e1da8('0x8f'),'disabled':_0x4e1da8('0x212'),'dividers':_0x4e1da8('0x351')},'darkIcons':{'active':_0x4e1da8('0xb47'),'inactive':_0x4e1da8('0x8c9')},'lightIcons':{'active':_0x4e1da8('0xae6'),'inactive':_0x4e1da8('0x212')},'white':'#ffffff','black':_0x4e1da8('0xa5e')};},'function'==typeof define&&define[_0x2f49e5('0x105')]?define([],_0xa9381c):_0x2f49e5('0x669')==typeof _0x586e1f?_0x8c4d47[_0x2f49e5('0x91e')]={'red':{0x32:_0x2f49e5('0x9dc'),0x64:_0x2f49e5('0x7d7'),0xc8:_0x2f49e5('0x54b'),0x12c:_0x2f49e5('0xf9'),0x190:_0x2f49e5('0x15d'),0x1f4:_0x2f49e5('0xc94'),0x258:_0x2f49e5('0x7a5'),0x2bc:_0x2f49e5('0x310'),0x320:'#c62828',0x384:_0x2f49e5('0xd8f'),'a100':_0x2f49e5('0x152'),'a200':_0x2f49e5('0xda5'),'a400':_0x2f49e5('0xbc3'),'a700':'#d50000'},'pink':{0x32:_0x2f49e5('0x294'),0x64:_0x2f49e5('0x259'),0xc8:_0x2f49e5('0xd24'),0x12c:'#f06292',0x190:_0x2f49e5('0x4b1'),0x1f4:_0x2f49e5('0x5fc'),0x258:_0x2f49e5('0x5e5'),0x2bc:_0x2f49e5('0x728'),0x320:_0x2f49e5('0x333'),0x384:_0x2f49e5('0x5af'),'a100':'#ff80ab','a200':_0x2f49e5('0x2eb'),'a400':'#f50057','a700':_0x2f49e5('0x497')},'purple':{0x32:_0x2f49e5('0x205'),0x64:_0x2f49e5('0x82d'),0xc8:_0x2f49e5('0xc2b'),0x12c:_0x2f49e5('0xc32'),0x190:_0x2f49e5('0x709'),0x1f4:_0x2f49e5('0x8ee'),0x258:_0x2f49e5('0xbee'),0x2bc:_0x2f49e5('0x35a'),0x320:_0x2f49e5('0x5f1'),0x384:_0x2f49e5('0xa99'),'a100':'#ea80fc','a200':'#e040fb','a400':'#d500f9','a700':_0x2f49e5('0x1b8')},'deepPurple':{0x32:_0x2f49e5('0x51'),0x64:_0x2f49e5('0xb8'),0xc8:'#b39ddb',0x12c:_0x2f49e5('0x3c4'),0x190:'#7e57c2',0x1f4:'#673ab7',0x258:'#5e35b1',0x2bc:_0x2f49e5('0xc6d'),0x320:_0x2f49e5('0x157'),0x384:'#311b92','a100':_0x2f49e5('0x319'),'a200':_0x2f49e5('0x2ec'),'a400':_0x2f49e5('0xcbb'),'a700':_0x2f49e5('0x62a')},'indigo':{0x32:_0x2f49e5('0x357'),0x64:'#c5cae9',0xc8:_0x2f49e5('0x271'),0x12c:_0x2f49e5('0xc6f'),0x190:_0x2f49e5('0x6ba'),0x1f4:_0x2f49e5('0x37'),0x258:_0x2f49e5('0x5bd'),0x2bc:'#303f9f',0x320:_0x2f49e5('0x1f'),0x384:_0x2f49e5('0x1dd'),'a100':_0x2f49e5('0x980'),'a200':_0x2f49e5('0x3e6'),'a400':_0x2f49e5('0x4e9'),'a700':'#304ffe'},'blue':{0x32:_0x2f49e5('0x61b'),0x64:_0x2f49e5('0xcd4'),0xc8:_0x2f49e5('0x7c'),0x12c:'#64b5f6',0x190:_0x2f49e5('0x221'),0x1f4:_0x2f49e5('0x766'),0x258:_0x2f49e5('0x903'),0x2bc:_0x2f49e5('0x485'),0x320:_0x2f49e5('0x970'),0x384:'#0d47a1','a100':_0x2f49e5('0x85f'),'a200':'#448aff','a400':_0x2f49e5('0xb6c'),'a700':_0x2f49e5('0x98d')},'lightBlue':{0x32:_0x2f49e5('0x1ff'),0x64:_0x2f49e5('0xa92'),0xc8:_0x2f49e5('0xd1b'),0x12c:_0x2f49e5('0xcd7'),0x190:_0x2f49e5('0x956'),0x1f4:_0x2f49e5('0xb8e'),0x258:_0x2f49e5('0x144'),0x2bc:_0x2f49e5('0xd06'),0x320:_0x2f49e5('0x12e'),0x384:_0x2f49e5('0x21a'),'a100':_0x2f49e5('0xbe3'),'a200':_0x2f49e5('0x415'),'a400':_0x2f49e5('0x5d3'),'a700':_0x2f49e5('0x1b9')},'cyan':{0x32:_0x2f49e5('0xc66'),0x64:'#b2ebf2',0xc8:_0x2f49e5('0x12f'),0x12c:_0x2f49e5('0xa4e'),0x190:'#26c6da',0x1f4:_0x2f49e5('0xd6b'),0x258:_0x2f49e5('0xada'),0x2bc:_0x2f49e5('0xae7'),0x320:_0x2f49e5('0x43e'),0x384:_0x2f49e5('0x82f'),'a100':_0x2f49e5('0x640'),'a200':_0x2f49e5('0x472'),'a400':_0x2f49e5('0x61f'),'a700':_0x2f49e5('0x86d')},'teal':{0x32:_0x2f49e5('0x981'),0x64:_0x2f49e5('0x124'),0xc8:_0x2f49e5('0xa68'),0x12c:'#4db6ac',0x190:'#26a69a',0x1f4:_0x2f49e5('0xc90'),0x258:_0x2f49e5('0x215'),0x2bc:_0x2f49e5('0xc37'),0x320:_0x2f49e5('0x165'),0x384:_0x2f49e5('0xa62'),'a100':_0x2f49e5('0x997'),'a200':_0x2f49e5('0xd69'),'a400':_0x2f49e5('0x2b3'),'a700':'#00bfa5'},'green':{0x32:_0x2f49e5('0x6b8'),0x64:'#c8e6c9',0xc8:_0x2f49e5('0x772'),0x12c:_0x2f49e5('0x10b'),0x190:_0x2f49e5('0x670'),0x1f4:'#4caf50',0x258:_0x2f49e5('0xb07'),0x2bc:_0x2f49e5('0xa88'),0x320:_0x2f49e5('0xb3f'),0x384:'#1b5e20','a100':_0x2f49e5('0x3cf'),'a200':_0x2f49e5('0xbff'),'a400':_0x2f49e5('0x5da'),'a700':'#00c853'},'lightGreen':{0x32:_0x2f49e5('0x542'),0x64:'#dcedc8',0xc8:_0x2f49e5('0x937'),0x12c:_0x2f49e5('0x1db'),0x190:'#9ccc65',0x1f4:_0x2f49e5('0x393'),0x258:_0x2f49e5('0x2f'),0x2bc:_0x2f49e5('0x9a6'),0x320:_0x2f49e5('0xed'),0x384:_0x2f49e5('0x562'),'a100':_0x2f49e5('0x9d7'),'a200':_0x2f49e5('0x654'),'a400':_0x2f49e5('0x787'),'a700':'#64dd17'},'lime':{0x32:_0x2f49e5('0x4a5'),0x64:_0x2f49e5('0x386'),0xc8:_0x2f49e5('0x6b'),0x12c:_0x2f49e5('0x3a6'),0x190:'#d4e157',0x1f4:'#cddc39',0x258:'#c0ca33',0x2bc:'#afb42b',0x320:_0x2f49e5('0xa59'),0x384:_0x2f49e5('0xad5'),'a100':_0x2f49e5('0x59f'),'a200':_0x2f49e5('0x117'),'a400':_0x2f49e5('0xbcd'),'a700':'#aeea00'},'yellow':{0x32:_0x2f49e5('0x192'),0x64:_0x2f49e5('0xd3f'),0xc8:'#fff59d',0x12c:_0x2f49e5('0x443'),0x190:_0x2f49e5('0x1bb'),0x1f4:'#ffeb3b',0x258:_0x2f49e5('0x5c8'),0x2bc:'#fbc02d',0x320:'#f9a825',0x384:_0x2f49e5('0x767'),'a100':_0x2f49e5('0xb2'),'a200':_0x2f49e5('0x9c4'),'a400':_0x2f49e5('0xa87'),'a700':_0x2f49e5('0x673')},'amber':{0x32:_0x2f49e5('0xa0d'),0x64:_0x2f49e5('0x3ef'),0xc8:_0x2f49e5('0x158'),0x12c:_0x2f49e5('0x87c'),0x190:'#ffca28',0x1f4:_0x2f49e5('0x9'),0x258:_0x2f49e5('0x118'),0x2bc:'#ffa000',0x320:'#ff8f00',0x384:_0x2f49e5('0x902'),'a100':_0x2f49e5('0xa2b'),'a200':_0x2f49e5('0x2be'),'a400':_0x2f49e5('0x688'),'a700':_0x2f49e5('0xb62')},'orange':{0x32:_0x2f49e5('0x30b'),0x64:_0x2f49e5('0x864'),0xc8:_0x2f49e5('0x162'),0x12c:_0x2f49e5('0x52f'),0x190:_0x2f49e5('0x430'),0x1f4:_0x2f49e5('0x267'),0x258:_0x2f49e5('0x73'),0x2bc:_0x2f49e5('0x358'),0x320:_0x2f49e5('0x5ae'),0x384:_0x2f49e5('0x3a3'),'a100':_0x2f49e5('0xa2c'),'a200':_0x2f49e5('0x6df'),'a400':_0x2f49e5('0xcb2'),'a700':_0x2f49e5('0x641')},'deepOrange':{0x32:_0x2f49e5('0x88f'),0x64:_0x2f49e5('0x272'),0xc8:_0x2f49e5('0xb1e'),0x12c:_0x2f49e5('0xb56'),0x190:_0x2f49e5('0xb49'),0x1f4:_0x2f49e5('0x8c6'),0x258:_0x2f49e5('0x642'),0x2bc:_0x2f49e5('0x526'),0x320:_0x2f49e5('0xdaa'),0x384:_0x2f49e5('0x4a8'),'a100':_0x2f49e5('0x4e3'),'a200':_0x2f49e5('0xdad'),'a400':_0x2f49e5('0x565'),'a700':'#dd2c00'},'brown':{0x32:_0x2f49e5('0x862'),0x64:_0x2f49e5('0x12a'),0xc8:_0x2f49e5('0x5cc'),0x12c:_0x2f49e5('0x218'),0x190:_0x2f49e5('0xbf5'),0x1f4:'#795548',0x258:_0x2f49e5('0x4cb'),0x2bc:_0x2f49e5('0xc40'),0x320:_0x2f49e5('0x36b'),0x384:_0x2f49e5('0x10d')},'grey':{0x32:_0x2f49e5('0x5e7'),0x64:_0x2f49e5('0x1a2'),0xc8:'#eeeeee',0x12c:'#e0e0e0',0x190:_0x2f49e5('0xc7b'),0x1f4:_0x2f49e5('0x248'),0x258:_0x2f49e5('0xd79'),0x2bc:_0x2f49e5('0x580'),0x320:_0x2f49e5('0x1d6'),0x384:'#212121'},'blueGrey':{0x32:_0x2f49e5('0x3b5'),0x64:_0x2f49e5('0x560'),0xc8:_0x2f49e5('0x1e0'),0x12c:_0x2f49e5('0x300'),0x190:'#78909c',0x1f4:_0x2f49e5('0x37d'),0x258:_0x2f49e5('0x76a'),0x2bc:_0x2f49e5('0x74a'),0x320:_0x2f49e5('0x4f'),0x384:_0x2f49e5('0x4a2')},'darkText':{'primary':_0x2f49e5('0xa73'),'secondary':'rgba(0,\x200,\x200,\x200.54)','disabled':_0x2f49e5('0x8c9'),'dividers':_0x2f49e5('0x8af')},'lightText':{'primary':'rgba(255,\x20255,\x20255,\x201)','secondary':_0x2f49e5('0x8f'),'disabled':'rgba(255,\x20255,\x20255,\x200.5)','dividers':'rgba(255,\x20255,\x20255,\x200.12)'},'darkIcons':{'active':_0x2f49e5('0xb47'),'inactive':_0x2f49e5('0x8c9')},'lightIcons':{'active':_0x2f49e5('0xae6'),'inactive':_0x2f49e5('0x212')},'white':_0x2f49e5('0x146'),'black':_0x2f49e5('0xa5e')}:_0x5ca6c9[_0x2f49e5('0x468')]={'red':{0x32:_0x2f49e5('0x9dc'),0x64:_0x2f49e5('0x7d7'),0xc8:'#ef9a9a',0x12c:_0x2f49e5('0xf9'),0x190:'#ef5350',0x1f4:_0x2f49e5('0xc94'),0x258:_0x2f49e5('0x7a5'),0x2bc:_0x2f49e5('0x310'),0x320:_0x2f49e5('0x691'),0x384:_0x2f49e5('0xd8f'),'a100':'#ff8a80','a200':'#ff5252','a400':'#ff1744','a700':_0x2f49e5('0xb2d')},'pink':{0x32:_0x2f49e5('0x294'),0x64:_0x2f49e5('0x259'),0xc8:'#f48fb1',0x12c:_0x2f49e5('0x62'),0x190:'#ec407a',0x1f4:_0x2f49e5('0x5fc'),0x258:'#d81b60',0x2bc:'#c2185b',0x320:_0x2f49e5('0x333'),0x384:_0x2f49e5('0x5af'),'a100':_0x2f49e5('0x9c6'),'a200':'#ff4081','a400':'#f50057','a700':'#c51162'},'purple':{0x32:_0x2f49e5('0x205'),0x64:_0x2f49e5('0x82d'),0xc8:_0x2f49e5('0xc2b'),0x12c:_0x2f49e5('0xc32'),0x190:_0x2f49e5('0x709'),0x1f4:_0x2f49e5('0x8ee'),0x258:_0x2f49e5('0xbee'),0x2bc:_0x2f49e5('0x35a'),0x320:_0x2f49e5('0x5f1'),0x384:_0x2f49e5('0xa99'),'a100':_0x2f49e5('0xcf8'),'a200':_0x2f49e5('0x812'),'a400':_0x2f49e5('0xaa7'),'a700':_0x2f49e5('0x1b8')},'deepPurple':{0x32:_0x2f49e5('0x51'),0x64:_0x2f49e5('0xb8'),0xc8:_0x2f49e5('0xbd7'),0x12c:_0x2f49e5('0x3c4'),0x190:_0x2f49e5('0x476'),0x1f4:_0x2f49e5('0x33b'),0x258:_0x2f49e5('0xaf8'),0x2bc:_0x2f49e5('0xc6d'),0x320:_0x2f49e5('0x157'),0x384:_0x2f49e5('0x5c5'),'a100':_0x2f49e5('0x319'),'a200':_0x2f49e5('0x2ec'),'a400':_0x2f49e5('0xcbb'),'a700':_0x2f49e5('0x62a')},'indigo':{0x32:_0x2f49e5('0x357'),0x64:_0x2f49e5('0x3e3'),0xc8:_0x2f49e5('0x271'),0x12c:_0x2f49e5('0xc6f'),0x190:_0x2f49e5('0x6ba'),0x1f4:_0x2f49e5('0x37'),0x258:_0x2f49e5('0x5bd'),0x2bc:'#303f9f',0x320:_0x2f49e5('0x1f'),0x384:'#1a237e','a100':'#8c9eff','a200':_0x2f49e5('0x3e6'),'a400':_0x2f49e5('0x4e9'),'a700':_0x2f49e5('0xad4')},'blue':{0x32:_0x2f49e5('0x61b'),0x64:_0x2f49e5('0xcd4'),0xc8:_0x2f49e5('0x7c'),0x12c:_0x2f49e5('0xc8d'),0x190:'#42a5f5',0x1f4:_0x2f49e5('0x766'),0x258:_0x2f49e5('0x903'),0x2bc:_0x2f49e5('0x485'),0x320:_0x2f49e5('0x970'),0x384:'#0d47a1','a100':'#82b1ff','a200':_0x2f49e5('0x888'),'a400':_0x2f49e5('0xb6c'),'a700':_0x2f49e5('0x98d')},'lightBlue':{0x32:_0x2f49e5('0x1ff'),0x64:_0x2f49e5('0xa92'),0xc8:_0x2f49e5('0xd1b'),0x12c:_0x2f49e5('0xcd7'),0x190:_0x2f49e5('0x956'),0x1f4:_0x2f49e5('0xb8e'),0x258:_0x2f49e5('0x144'),0x2bc:'#0288d1',0x320:'#0277bd',0x384:_0x2f49e5('0x21a'),'a100':_0x2f49e5('0xbe3'),'a200':_0x2f49e5('0x415'),'a400':_0x2f49e5('0x5d3'),'a700':_0x2f49e5('0x1b9')},'cyan':{0x32:'#e0f7fa',0x64:'#b2ebf2',0xc8:'#80deea',0x12c:_0x2f49e5('0xa4e'),0x190:'#26c6da',0x1f4:_0x2f49e5('0xd6b'),0x258:_0x2f49e5('0xada'),0x2bc:'#0097a7',0x320:'#00838f',0x384:'#006064','a100':'#84ffff','a200':_0x2f49e5('0x472'),'a400':'#00e5ff','a700':_0x2f49e5('0x86d')},'teal':{0x32:_0x2f49e5('0x981'),0x64:'#b2dfdb',0xc8:_0x2f49e5('0xa68'),0x12c:_0x2f49e5('0x714'),0x190:'#26a69a',0x1f4:_0x2f49e5('0xc90'),0x258:'#00897b',0x2bc:_0x2f49e5('0xc37'),0x320:_0x2f49e5('0x165'),0x384:_0x2f49e5('0xa62'),'a100':_0x2f49e5('0x997'),'a200':_0x2f49e5('0xd69'),'a400':'#1de9b6','a700':_0x2f49e5('0xd42')},'green':{0x32:'#e8f5e9',0x64:_0x2f49e5('0xa8'),0xc8:'#a5d6a7',0x12c:_0x2f49e5('0x10b'),0x190:_0x2f49e5('0x670'),0x1f4:_0x2f49e5('0x4a0'),0x258:_0x2f49e5('0xb07'),0x2bc:_0x2f49e5('0xa88'),0x320:_0x2f49e5('0xb3f'),0x384:_0x2f49e5('0xc79'),'a100':_0x2f49e5('0x3cf'),'a200':_0x2f49e5('0xbff'),'a400':_0x2f49e5('0x5da'),'a700':_0x2f49e5('0x95f')},'lightGreen':{0x32:_0x2f49e5('0x542'),0x64:_0x2f49e5('0xbc0'),0xc8:_0x2f49e5('0x937'),0x12c:_0x2f49e5('0x1db'),0x190:_0x2f49e5('0x6f6'),0x1f4:'#8bc34a',0x258:'#7cb342',0x2bc:_0x2f49e5('0x9a6'),0x320:'#558b2f',0x384:_0x2f49e5('0x562'),'a100':'#ccff90','a200':_0x2f49e5('0x654'),'a400':_0x2f49e5('0x787'),'a700':'#64dd17'},'lime':{0x32:_0x2f49e5('0x4a5'),0x64:_0x2f49e5('0x386'),0xc8:_0x2f49e5('0x6b'),0x12c:_0x2f49e5('0x3a6'),0x190:'#d4e157',0x1f4:_0x2f49e5('0x176'),0x258:_0x2f49e5('0x5be'),0x2bc:_0x2f49e5('0x13c'),0x320:_0x2f49e5('0xa59'),0x384:_0x2f49e5('0xad5'),'a100':_0x2f49e5('0x59f'),'a200':_0x2f49e5('0x117'),'a400':_0x2f49e5('0xbcd'),'a700':_0x2f49e5('0xaa4')},'yellow':{0x32:_0x2f49e5('0x192'),0x64:_0x2f49e5('0xd3f'),0xc8:'#fff59d',0x12c:'#fff176',0x190:_0x2f49e5('0x1bb'),0x1f4:_0x2f49e5('0x4ce'),0x258:'#fdd835',0x2bc:'#fbc02d',0x320:'#f9a825',0x384:_0x2f49e5('0x767'),'a100':_0x2f49e5('0xb2'),'a200':'#ffff00','a400':'#ffea00','a700':_0x2f49e5('0x673')},'amber':{0x32:'#fff8e1',0x64:_0x2f49e5('0x3ef'),0xc8:_0x2f49e5('0x158'),0x12c:'#ffd54f',0x190:_0x2f49e5('0xac2'),0x1f4:_0x2f49e5('0x9'),0x258:'#ffb300',0x2bc:_0x2f49e5('0x345'),0x320:_0x2f49e5('0x328'),0x384:_0x2f49e5('0x902'),'a100':'#ffe57f','a200':_0x2f49e5('0x2be'),'a400':_0x2f49e5('0x688'),'a700':_0x2f49e5('0xb62')},'orange':{0x32:_0x2f49e5('0x30b'),0x64:'#ffe0b2',0xc8:'#ffcc80',0x12c:'#ffb74d',0x190:_0x2f49e5('0x430'),0x1f4:_0x2f49e5('0x267'),0x258:'#fb8c00',0x2bc:_0x2f49e5('0x358'),0x320:_0x2f49e5('0x5ae'),0x384:'#e65100','a100':_0x2f49e5('0xa2c'),'a200':_0x2f49e5('0x6df'),'a400':_0x2f49e5('0xcb2'),'a700':_0x2f49e5('0x641')},'deepOrange':{0x32:_0x2f49e5('0x88f'),0x64:_0x2f49e5('0x272'),0xc8:_0x2f49e5('0xb1e'),0x12c:'#ff8a65',0x190:_0x2f49e5('0xb49'),0x1f4:_0x2f49e5('0x8c6'),0x258:_0x2f49e5('0x642'),0x2bc:_0x2f49e5('0x526'),0x320:'#d84315',0x384:_0x2f49e5('0x4a8'),'a100':_0x2f49e5('0x4e3'),'a200':'#ff6e40','a400':_0x2f49e5('0x565'),'a700':_0x2f49e5('0xd13')},'brown':{0x32:'#efebe9',0x64:'#d7ccc8',0xc8:_0x2f49e5('0x5cc'),0x12c:_0x2f49e5('0x218'),0x190:_0x2f49e5('0xbf5'),0x1f4:_0x2f49e5('0x4c1'),0x258:'#6d4c41',0x2bc:_0x2f49e5('0xc40'),0x320:_0x2f49e5('0x36b'),0x384:_0x2f49e5('0x10d')},'grey':{0x32:_0x2f49e5('0x5e7'),0x64:'#f5f5f5',0xc8:_0x2f49e5('0x7f4'),0x12c:_0x2f49e5('0x8a'),0x190:_0x2f49e5('0xc7b'),0x1f4:_0x2f49e5('0x248'),0x258:_0x2f49e5('0xd79'),0x2bc:_0x2f49e5('0x580'),0x320:_0x2f49e5('0x1d6'),0x384:_0x2f49e5('0x9a8')},'blueGrey':{0x32:'#eceff1',0x64:_0x2f49e5('0x560'),0xc8:_0x2f49e5('0x1e0'),0x12c:'#90a4ae',0x190:_0x2f49e5('0x3df'),0x1f4:'#607d8b',0x258:_0x2f49e5('0x76a'),0x2bc:'#455a64',0x320:_0x2f49e5('0x4f'),0x384:_0x2f49e5('0x4a2')},'darkText':{'primary':'rgba(0,\x200,\x200,\x200.87)','secondary':_0x2f49e5('0xb47'),'disabled':'rgba(0,\x200,\x200,\x200.38)','dividers':'rgba(0,\x200,\x200,\x200.12)'},'lightText':{'primary':_0x2f49e5('0xae6'),'secondary':_0x2f49e5('0x8f'),'disabled':_0x2f49e5('0x212'),'dividers':_0x2f49e5('0x351')},'darkIcons':{'active':_0x2f49e5('0xb47'),'inactive':_0x2f49e5('0x8c9')},'lightIcons':{'active':'rgba(255,\x20255,\x20255,\x201)','inactive':'rgba(255,\x20255,\x20255,\x200.5)'},'white':_0x2f49e5('0x146'),'black':_0x2f49e5('0xa5e')};},{}],0x131:[function(_0x3effb2,_0x536ff0,_0x1eafe3){var _0x442e82=_0x322f0f;/* +/* eslint-disable no-proto */ + +'use strict' + +var base64 = require('base64-js') +var ieee754 = require('ieee754') + +exports.Buffer = Buffer +exports.SlowBuffer = SlowBuffer +exports.INSPECT_MAX_BYTES = 50 + +var K_MAX_LENGTH = 0x7fffffff +exports.kMaxLength = K_MAX_LENGTH + +/** + * If `Buffer.TYPED_ARRAY_SUPPORT`: + * === true Use Uint8Array implementation (fastest) + * === false Print warning and recommend using `buffer` v4.x which has an Object + * implementation (most compatible, even IE6) + * + * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, + * Opera 11.6+, iOS 4.2+. + * + * We report that the browser does not support typed arrays if the are not subclassable + * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array` + * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support + * for __proto__ and has a buggy typed array implementation. + */ +Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport() + +if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' && + typeof console.error === 'function') { + console.error( + 'This browser lacks typed array (Uint8Array) support which is required by ' + + '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.' + ) +} + +function typedArraySupport () { + // Can typed array instances can be augmented? + try { + var arr = new Uint8Array(1) + arr.__proto__ = { __proto__: Uint8Array.prototype, foo: function () { return 42 } } + return arr.foo() === 42 + } catch (e) { + return false + } +} + +Object.defineProperty(Buffer.prototype, 'parent', { + enumerable: true, + get: function () { + if (!Buffer.isBuffer(this)) return undefined + return this.buffer + } +}) + +Object.defineProperty(Buffer.prototype, 'offset', { + enumerable: true, + get: function () { + if (!Buffer.isBuffer(this)) return undefined + return this.byteOffset + } +}) + +function createBuffer (length) { + if (length > K_MAX_LENGTH) { + throw new RangeError('The value "' + length + '" is invalid for option "size"') + } + // Return an augmented `Uint8Array` instance + var buf = new Uint8Array(length) + buf.__proto__ = Buffer.prototype + return buf +} + +/** + * The Buffer constructor returns instances of `Uint8Array` that have their + * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of + * `Uint8Array`, so the returned instances will have all the node `Buffer` methods + * and the `Uint8Array` methods. Square bracket notation works as expected -- it + * returns a single octet. + * + * The `Uint8Array` prototype remains unmodified. + */ + +function Buffer (arg, encodingOrOffset, length) { + // Common case. + if (typeof arg === 'number') { + if (typeof encodingOrOffset === 'string') { + throw new TypeError( + 'The "string" argument must be of type string. Received type number' + ) + } + return allocUnsafe(arg) + } + return from(arg, encodingOrOffset, length) +} + +// Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97 +if (typeof Symbol !== 'undefined' && Symbol.species != null && + Buffer[Symbol.species] === Buffer) { + Object.defineProperty(Buffer, Symbol.species, { + value: null, + configurable: true, + enumerable: false, + writable: false + }) +} + +Buffer.poolSize = 8192 // not used by this implementation + +function from (value, encodingOrOffset, length) { + if (typeof value === 'string') { + return fromString(value, encodingOrOffset) + } + + if (ArrayBuffer.isView(value)) { + return fromArrayLike(value) + } + + if (value == null) { + throw TypeError( + 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + + 'or Array-like Object. Received type ' + (typeof value) + ) + } + + if (isInstance(value, ArrayBuffer) || + (value && isInstance(value.buffer, ArrayBuffer))) { + return fromArrayBuffer(value, encodingOrOffset, length) + } + + if (typeof value === 'number') { + throw new TypeError( + 'The "value" argument must not be of type number. Received type number' + ) + } + + var valueOf = value.valueOf && value.valueOf() + if (valueOf != null && valueOf !== value) { + return Buffer.from(valueOf, encodingOrOffset, length) + } + + var b = fromObject(value) + if (b) return b + + if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null && + typeof value[Symbol.toPrimitive] === 'function') { + return Buffer.from( + value[Symbol.toPrimitive]('string'), encodingOrOffset, length + ) + } + + throw new TypeError( + 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + + 'or Array-like Object. Received type ' + (typeof value) + ) +} + +/** + * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError + * if value is a number. + * Buffer.from(str[, encoding]) + * Buffer.from(array) + * Buffer.from(buffer) + * Buffer.from(arrayBuffer[, byteOffset[, length]]) + **/ +Buffer.from = function (value, encodingOrOffset, length) { + return from(value, encodingOrOffset, length) +} + +// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug: +// https://github.com/feross/buffer/pull/148 +Buffer.prototype.__proto__ = Uint8Array.prototype +Buffer.__proto__ = Uint8Array + +function assertSize (size) { + if (typeof size !== 'number') { + throw new TypeError('"size" argument must be of type number') + } else if (size < 0) { + throw new RangeError('The value "' + size + '" is invalid for option "size"') + } +} + +function alloc (size, fill, encoding) { + assertSize(size) + if (size <= 0) { + return createBuffer(size) + } + if (fill !== undefined) { + // Only pay attention to encoding if it's a string. This + // prevents accidentally sending in a number that would + // be interpretted as a start offset. + return typeof encoding === 'string' + ? createBuffer(size).fill(fill, encoding) + : createBuffer(size).fill(fill) + } + return createBuffer(size) +} + +/** + * Creates a new filled Buffer instance. + * alloc(size[, fill[, encoding]]) + **/ +Buffer.alloc = function (size, fill, encoding) { + return alloc(size, fill, encoding) +} + +function allocUnsafe (size) { + assertSize(size) + return createBuffer(size < 0 ? 0 : checked(size) | 0) +} + +/** + * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. + * */ +Buffer.allocUnsafe = function (size) { + return allocUnsafe(size) +} +/** + * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. + */ +Buffer.allocUnsafeSlow = function (size) { + return allocUnsafe(size) +} + +function fromString (string, encoding) { + if (typeof encoding !== 'string' || encoding === '') { + encoding = 'utf8' + } + + if (!Buffer.isEncoding(encoding)) { + throw new TypeError('Unknown encoding: ' + encoding) + } + + var length = byteLength(string, encoding) | 0 + var buf = createBuffer(length) + + var actual = buf.write(string, encoding) + + if (actual !== length) { + // Writing a hex string, for example, that contains invalid characters will + // cause everything after the first invalid character to be ignored. (e.g. + // 'abxxcd' will be treated as 'ab') + buf = buf.slice(0, actual) + } + + return buf +} + +function fromArrayLike (array) { + var length = array.length < 0 ? 0 : checked(array.length) | 0 + var buf = createBuffer(length) + for (var i = 0; i < length; i += 1) { + buf[i] = array[i] & 255 + } + return buf +} + +function fromArrayBuffer (array, byteOffset, length) { + if (byteOffset < 0 || array.byteLength < byteOffset) { + throw new RangeError('"offset" is outside of buffer bounds') + } + + if (array.byteLength < byteOffset + (length || 0)) { + throw new RangeError('"length" is outside of buffer bounds') + } + + var buf + if (byteOffset === undefined && length === undefined) { + buf = new Uint8Array(array) + } else if (length === undefined) { + buf = new Uint8Array(array, byteOffset) + } else { + buf = new Uint8Array(array, byteOffset, length) + } + + // Return an augmented `Uint8Array` instance + buf.__proto__ = Buffer.prototype + return buf +} + +function fromObject (obj) { + if (Buffer.isBuffer(obj)) { + var len = checked(obj.length) | 0 + var buf = createBuffer(len) + + if (buf.length === 0) { + return buf + } + + obj.copy(buf, 0, 0, len) + return buf + } + + if (obj.length !== undefined) { + if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) { + return createBuffer(0) + } + return fromArrayLike(obj) + } + + if (obj.type === 'Buffer' && Array.isArray(obj.data)) { + return fromArrayLike(obj.data) + } +} + +function checked (length) { + // Note: cannot use `length < K_MAX_LENGTH` here because that fails when + // length is NaN (which is otherwise coerced to zero.) + if (length >= K_MAX_LENGTH) { + throw new RangeError('Attempt to allocate Buffer larger than maximum ' + + 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes') + } + return length | 0 +} + +function SlowBuffer (length) { + if (+length != length) { // eslint-disable-line eqeqeq + length = 0 + } + return Buffer.alloc(+length) +} + +Buffer.isBuffer = function isBuffer (b) { + return b != null && b._isBuffer === true && + b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false +} + +Buffer.compare = function compare (a, b) { + if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength) + if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength) + if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { + throw new TypeError( + 'The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array' + ) + } + + if (a === b) return 0 + + var x = a.length + var y = b.length + + for (var i = 0, len = Math.min(x, y); i < len; ++i) { + if (a[i] !== b[i]) { + x = a[i] + y = b[i] + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +} + +Buffer.isEncoding = function isEncoding (encoding) { + switch (String(encoding).toLowerCase()) { + case 'hex': + case 'utf8': + case 'utf-8': + case 'ascii': + case 'latin1': + case 'binary': + case 'base64': + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return true + default: + return false + } +} + +Buffer.concat = function concat (list, length) { + if (!Array.isArray(list)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + + if (list.length === 0) { + return Buffer.alloc(0) + } + + var i + if (length === undefined) { + length = 0 + for (i = 0; i < list.length; ++i) { + length += list[i].length + } + } + + var buffer = Buffer.allocUnsafe(length) + var pos = 0 + for (i = 0; i < list.length; ++i) { + var buf = list[i] + if (isInstance(buf, Uint8Array)) { + buf = Buffer.from(buf) + } + if (!Buffer.isBuffer(buf)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + buf.copy(buffer, pos) + pos += buf.length + } + return buffer +} + +function byteLength (string, encoding) { + if (Buffer.isBuffer(string)) { + return string.length + } + if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) { + return string.byteLength + } + if (typeof string !== 'string') { + throw new TypeError( + 'The "string" argument must be one of type string, Buffer, or ArrayBuffer. ' + + 'Received type ' + typeof string + ) + } + + var len = string.length + var mustMatch = (arguments.length > 2 && arguments[2] === true) + if (!mustMatch && len === 0) return 0 + + // Use a for loop to avoid recursion + var loweredCase = false + for (;;) { + switch (encoding) { + case 'ascii': + case 'latin1': + case 'binary': + return len + case 'utf8': + case 'utf-8': + return utf8ToBytes(string).length + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return len * 2 + case 'hex': + return len >>> 1 + case 'base64': + return base64ToBytes(string).length + default: + if (loweredCase) { + return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8 + } + encoding = ('' + encoding).toLowerCase() + loweredCase = true + } + } +} +Buffer.byteLength = byteLength + +function slowToString (encoding, start, end) { + var loweredCase = false + + // No need to verify that "this.length <= MAX_UINT32" since it's a read-only + // property of a typed array. + + // This behaves neither like String nor Uint8Array in that we set start/end + // to their upper/lower bounds if the value passed is out of range. + // undefined is handled specially as per ECMA-262 6th Edition, + // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. + if (start === undefined || start < 0) { + start = 0 + } + // Return early if start > this.length. Done here to prevent potential uint32 + // coercion fail below. + if (start > this.length) { + return '' + } + + if (end === undefined || end > this.length) { + end = this.length + } + + if (end <= 0) { + return '' + } + + // Force coersion to uint32. This will also coerce falsey/NaN values to 0. + end >>>= 0 + start >>>= 0 + + if (end <= start) { + return '' + } + + if (!encoding) encoding = 'utf8' + + while (true) { + switch (encoding) { + case 'hex': + return hexSlice(this, start, end) + + case 'utf8': + case 'utf-8': + return utf8Slice(this, start, end) + + case 'ascii': + return asciiSlice(this, start, end) + + case 'latin1': + case 'binary': + return latin1Slice(this, start, end) + + case 'base64': + return base64Slice(this, start, end) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return utf16leSlice(this, start, end) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = (encoding + '').toLowerCase() + loweredCase = true + } + } +} + +// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package) +// to detect a Buffer instance. It's not possible to use `instanceof Buffer` +// reliably in a browserify context because there could be multiple different +// copies of the 'buffer' package in use. This method works even for Buffer +// instances that were created from another copy of the `buffer` package. +// See: https://github.com/feross/buffer/issues/154 +Buffer.prototype._isBuffer = true + +function swap (b, n, m) { + var i = b[n] + b[n] = b[m] + b[m] = i +} + +Buffer.prototype.swap16 = function swap16 () { + var len = this.length + if (len % 2 !== 0) { + throw new RangeError('Buffer size must be a multiple of 16-bits') + } + for (var i = 0; i < len; i += 2) { + swap(this, i, i + 1) + } + return this +} + +Buffer.prototype.swap32 = function swap32 () { + var len = this.length + if (len % 4 !== 0) { + throw new RangeError('Buffer size must be a multiple of 32-bits') + } + for (var i = 0; i < len; i += 4) { + swap(this, i, i + 3) + swap(this, i + 1, i + 2) + } + return this +} + +Buffer.prototype.swap64 = function swap64 () { + var len = this.length + if (len % 8 !== 0) { + throw new RangeError('Buffer size must be a multiple of 64-bits') + } + for (var i = 0; i < len; i += 8) { + swap(this, i, i + 7) + swap(this, i + 1, i + 6) + swap(this, i + 2, i + 5) + swap(this, i + 3, i + 4) + } + return this +} + +Buffer.prototype.toString = function toString () { + var length = this.length + if (length === 0) return '' + if (arguments.length === 0) return utf8Slice(this, 0, length) + return slowToString.apply(this, arguments) +} + +Buffer.prototype.toLocaleString = Buffer.prototype.toString + +Buffer.prototype.equals = function equals (b) { + if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') + if (this === b) return true + return Buffer.compare(this, b) === 0 +} + +Buffer.prototype.inspect = function inspect () { + var str = '' + var max = exports.INSPECT_MAX_BYTES + str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim() + if (this.length > max) str += ' ... ' + return '' +} + +Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { + if (isInstance(target, Uint8Array)) { + target = Buffer.from(target, target.offset, target.byteLength) + } + if (!Buffer.isBuffer(target)) { + throw new TypeError( + 'The "target" argument must be one of type Buffer or Uint8Array. ' + + 'Received type ' + (typeof target) + ) + } + + if (start === undefined) { + start = 0 + } + if (end === undefined) { + end = target ? target.length : 0 + } + if (thisStart === undefined) { + thisStart = 0 + } + if (thisEnd === undefined) { + thisEnd = this.length + } + + if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { + throw new RangeError('out of range index') + } + + if (thisStart >= thisEnd && start >= end) { + return 0 + } + if (thisStart >= thisEnd) { + return -1 + } + if (start >= end) { + return 1 + } + + start >>>= 0 + end >>>= 0 + thisStart >>>= 0 + thisEnd >>>= 0 + + if (this === target) return 0 + + var x = thisEnd - thisStart + var y = end - start + var len = Math.min(x, y) + + var thisCopy = this.slice(thisStart, thisEnd) + var targetCopy = target.slice(start, end) + + for (var i = 0; i < len; ++i) { + if (thisCopy[i] !== targetCopy[i]) { + x = thisCopy[i] + y = targetCopy[i] + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +} + +// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, +// OR the last index of `val` in `buffer` at offset <= `byteOffset`. +// +// Arguments: +// - buffer - a Buffer to search +// - val - a string, Buffer, or number +// - byteOffset - an index into `buffer`; will be clamped to an int32 +// - encoding - an optional encoding, relevant is val is a string +// - dir - true for indexOf, false for lastIndexOf +function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { + // Empty buffer means no match + if (buffer.length === 0) return -1 + + // Normalize byteOffset + if (typeof byteOffset === 'string') { + encoding = byteOffset + byteOffset = 0 + } else if (byteOffset > 0x7fffffff) { + byteOffset = 0x7fffffff + } else if (byteOffset < -0x80000000) { + byteOffset = -0x80000000 + } + byteOffset = +byteOffset // Coerce to Number. + if (numberIsNaN(byteOffset)) { + // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer + byteOffset = dir ? 0 : (buffer.length - 1) + } + + // Normalize byteOffset: negative offsets start from the end of the buffer + if (byteOffset < 0) byteOffset = buffer.length + byteOffset + if (byteOffset >= buffer.length) { + if (dir) return -1 + else byteOffset = buffer.length - 1 + } else if (byteOffset < 0) { + if (dir) byteOffset = 0 + else return -1 + } + + // Normalize val + if (typeof val === 'string') { + val = Buffer.from(val, encoding) + } + + // Finally, search either indexOf (if dir is true) or lastIndexOf + if (Buffer.isBuffer(val)) { + // Special case: looking for empty string/buffer always fails + if (val.length === 0) { + return -1 + } + return arrayIndexOf(buffer, val, byteOffset, encoding, dir) + } else if (typeof val === 'number') { + val = val & 0xFF // Search for a byte value [0-255] + if (typeof Uint8Array.prototype.indexOf === 'function') { + if (dir) { + return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset) + } else { + return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset) + } + } + return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir) + } + + throw new TypeError('val must be string, number or Buffer') +} + +function arrayIndexOf (arr, val, byteOffset, encoding, dir) { + var indexSize = 1 + var arrLength = arr.length + var valLength = val.length + + if (encoding !== undefined) { + encoding = String(encoding).toLowerCase() + if (encoding === 'ucs2' || encoding === 'ucs-2' || + encoding === 'utf16le' || encoding === 'utf-16le') { + if (arr.length < 2 || val.length < 2) { + return -1 + } + indexSize = 2 + arrLength /= 2 + valLength /= 2 + byteOffset /= 2 + } + } + + function read (buf, i) { + if (indexSize === 1) { + return buf[i] + } else { + return buf.readUInt16BE(i * indexSize) + } + } + + var i + if (dir) { + var foundIndex = -1 + for (i = byteOffset; i < arrLength; i++) { + if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { + if (foundIndex === -1) foundIndex = i + if (i - foundIndex + 1 === valLength) return foundIndex * indexSize + } else { + if (foundIndex !== -1) i -= i - foundIndex + foundIndex = -1 + } + } + } else { + if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength + for (i = byteOffset; i >= 0; i--) { + var found = true + for (var j = 0; j < valLength; j++) { + if (read(arr, i + j) !== read(val, j)) { + found = false + break + } + } + if (found) return i + } + } + + return -1 +} + +Buffer.prototype.includes = function includes (val, byteOffset, encoding) { + return this.indexOf(val, byteOffset, encoding) !== -1 +} + +Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, true) +} + +Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, false) +} + +function hexWrite (buf, string, offset, length) { + offset = Number(offset) || 0 + var remaining = buf.length - offset + if (!length) { + length = remaining + } else { + length = Number(length) + if (length > remaining) { + length = remaining + } + } + + var strLen = string.length + + if (length > strLen / 2) { + length = strLen / 2 + } + for (var i = 0; i < length; ++i) { + var parsed = parseInt(string.substr(i * 2, 2), 16) + if (numberIsNaN(parsed)) return i + buf[offset + i] = parsed + } + return i +} + +function utf8Write (buf, string, offset, length) { + return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) +} + +function asciiWrite (buf, string, offset, length) { + return blitBuffer(asciiToBytes(string), buf, offset, length) +} + +function latin1Write (buf, string, offset, length) { + return asciiWrite(buf, string, offset, length) +} + +function base64Write (buf, string, offset, length) { + return blitBuffer(base64ToBytes(string), buf, offset, length) +} + +function ucs2Write (buf, string, offset, length) { + return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) +} + +Buffer.prototype.write = function write (string, offset, length, encoding) { + // Buffer#write(string) + if (offset === undefined) { + encoding = 'utf8' + length = this.length + offset = 0 + // Buffer#write(string, encoding) + } else if (length === undefined && typeof offset === 'string') { + encoding = offset + length = this.length + offset = 0 + // Buffer#write(string, offset[, length][, encoding]) + } else if (isFinite(offset)) { + offset = offset >>> 0 + if (isFinite(length)) { + length = length >>> 0 + if (encoding === undefined) encoding = 'utf8' + } else { + encoding = length + length = undefined + } + } else { + throw new Error( + 'Buffer.write(string, encoding, offset[, length]) is no longer supported' + ) + } + + var remaining = this.length - offset + if (length === undefined || length > remaining) length = remaining + + if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { + throw new RangeError('Attempt to write outside buffer bounds') + } + + if (!encoding) encoding = 'utf8' + + var loweredCase = false + for (;;) { + switch (encoding) { + case 'hex': + return hexWrite(this, string, offset, length) + + case 'utf8': + case 'utf-8': + return utf8Write(this, string, offset, length) + + case 'ascii': + return asciiWrite(this, string, offset, length) + + case 'latin1': + case 'binary': + return latin1Write(this, string, offset, length) + + case 'base64': + // Warning: maxLength not taken into account in base64Write + return base64Write(this, string, offset, length) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return ucs2Write(this, string, offset, length) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = ('' + encoding).toLowerCase() + loweredCase = true + } + } +} + +Buffer.prototype.toJSON = function toJSON () { + return { + type: 'Buffer', + data: Array.prototype.slice.call(this._arr || this, 0) + } +} + +function base64Slice (buf, start, end) { + if (start === 0 && end === buf.length) { + return base64.fromByteArray(buf) + } else { + return base64.fromByteArray(buf.slice(start, end)) + } +} + +function utf8Slice (buf, start, end) { + end = Math.min(buf.length, end) + var res = [] + + var i = start + while (i < end) { + var firstByte = buf[i] + var codePoint = null + var bytesPerSequence = (firstByte > 0xEF) ? 4 + : (firstByte > 0xDF) ? 3 + : (firstByte > 0xBF) ? 2 + : 1 + + if (i + bytesPerSequence <= end) { + var secondByte, thirdByte, fourthByte, tempCodePoint + + switch (bytesPerSequence) { + case 1: + if (firstByte < 0x80) { + codePoint = firstByte + } + break + case 2: + secondByte = buf[i + 1] + if ((secondByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F) + if (tempCodePoint > 0x7F) { + codePoint = tempCodePoint + } + } + break + case 3: + secondByte = buf[i + 1] + thirdByte = buf[i + 2] + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F) + if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { + codePoint = tempCodePoint + } + } + break + case 4: + secondByte = buf[i + 1] + thirdByte = buf[i + 2] + fourthByte = buf[i + 3] + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F) + if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { + codePoint = tempCodePoint + } + } + } + } + + if (codePoint === null) { + // we did not generate a valid codePoint so insert a + // replacement char (U+FFFD) and advance only 1 byte + codePoint = 0xFFFD + bytesPerSequence = 1 + } else if (codePoint > 0xFFFF) { + // encode to utf16 (surrogate pair dance) + codePoint -= 0x10000 + res.push(codePoint >>> 10 & 0x3FF | 0xD800) + codePoint = 0xDC00 | codePoint & 0x3FF + } + + res.push(codePoint) + i += bytesPerSequence + } + + return decodeCodePointsArray(res) +} + +// Based on http://stackoverflow.com/a/22747272/680742, the browser with +// the lowest limit is Chrome, with 0x10000 args. +// We go 1 magnitude less, for safety +var MAX_ARGUMENTS_LENGTH = 0x1000 + +function decodeCodePointsArray (codePoints) { + var len = codePoints.length + if (len <= MAX_ARGUMENTS_LENGTH) { + return String.fromCharCode.apply(String, codePoints) // avoid extra slice() + } + + // Decode in chunks to avoid "call stack size exceeded". + var res = '' + var i = 0 + while (i < len) { + res += String.fromCharCode.apply( + String, + codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) + ) + } + return res +} + +function asciiSlice (buf, start, end) { + var ret = '' + end = Math.min(buf.length, end) + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i] & 0x7F) + } + return ret +} + +function latin1Slice (buf, start, end) { + var ret = '' + end = Math.min(buf.length, end) + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i]) + } + return ret +} + +function hexSlice (buf, start, end) { + var len = buf.length + + if (!start || start < 0) start = 0 + if (!end || end < 0 || end > len) end = len + + var out = '' + for (var i = start; i < end; ++i) { + out += toHex(buf[i]) + } + return out +} + +function utf16leSlice (buf, start, end) { + var bytes = buf.slice(start, end) + var res = '' + for (var i = 0; i < bytes.length; i += 2) { + res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256)) + } + return res +} + +Buffer.prototype.slice = function slice (start, end) { + var len = this.length + start = ~~start + end = end === undefined ? len : ~~end + + if (start < 0) { + start += len + if (start < 0) start = 0 + } else if (start > len) { + start = len + } + + if (end < 0) { + end += len + if (end < 0) end = 0 + } else if (end > len) { + end = len + } + + if (end < start) end = start + + var newBuf = this.subarray(start, end) + // Return an augmented `Uint8Array` instance + newBuf.__proto__ = Buffer.prototype + return newBuf +} + +/* + * Need to make sure that buffer isn't trying to write out of bounds. + */ +function checkOffset (offset, ext, length) { + if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') + if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') +} + +Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { + offset = offset >>> 0 + byteLength = byteLength >>> 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var val = this[offset] + var mul = 1 + var i = 0 + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul + } + + return val +} + +Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { + offset = offset >>> 0 + byteLength = byteLength >>> 0 + if (!noAssert) { + checkOffset(offset, byteLength, this.length) + } + + var val = this[offset + --byteLength] + var mul = 1 + while (byteLength > 0 && (mul *= 0x100)) { + val += this[offset + --byteLength] * mul + } + + return val +} + +Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 1, this.length) + return this[offset] +} + +Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 2, this.length) + return this[offset] | (this[offset + 1] << 8) +} + +Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 2, this.length) + return (this[offset] << 8) | this[offset + 1] +} + +Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 4, this.length) + + return ((this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16)) + + (this[offset + 3] * 0x1000000) +} + +Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset] * 0x1000000) + + ((this[offset + 1] << 16) | + (this[offset + 2] << 8) | + this[offset + 3]) +} + +Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { + offset = offset >>> 0 + byteLength = byteLength >>> 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var val = this[offset] + var mul = 1 + var i = 0 + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul + } + mul *= 0x80 + + if (val >= mul) val -= Math.pow(2, 8 * byteLength) + + return val +} + +Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { + offset = offset >>> 0 + byteLength = byteLength >>> 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var i = byteLength + var mul = 1 + var val = this[offset + --i] + while (i > 0 && (mul *= 0x100)) { + val += this[offset + --i] * mul + } + mul *= 0x80 + + if (val >= mul) val -= Math.pow(2, 8 * byteLength) + + return val +} + +Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 1, this.length) + if (!(this[offset] & 0x80)) return (this[offset]) + return ((0xff - this[offset] + 1) * -1) +} + +Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 2, this.length) + var val = this[offset] | (this[offset + 1] << 8) + return (val & 0x8000) ? val | 0xFFFF0000 : val +} + +Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 2, this.length) + var val = this[offset + 1] | (this[offset] << 8) + return (val & 0x8000) ? val | 0xFFFF0000 : val +} + +Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16) | + (this[offset + 3] << 24) +} + +Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset] << 24) | + (this[offset + 1] << 16) | + (this[offset + 2] << 8) | + (this[offset + 3]) +} + +Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 4, this.length) + return ieee754.read(this, offset, true, 23, 4) +} + +Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 4, this.length) + return ieee754.read(this, offset, false, 23, 4) +} + +Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 8, this.length) + return ieee754.read(this, offset, true, 52, 8) +} + +Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 8, this.length) + return ieee754.read(this, offset, false, 52, 8) +} + +function checkInt (buf, value, offset, ext, max, min) { + if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance') + if (value > max || value < min) throw new RangeError('"value" argument is out of bounds') + if (offset + ext > buf.length) throw new RangeError('Index out of range') +} + +Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { + value = +value + offset = offset >>> 0 + byteLength = byteLength >>> 0 + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1 + checkInt(this, value, offset, byteLength, maxBytes, 0) + } + + var mul = 1 + var i = 0 + this[offset] = value & 0xFF + while (++i < byteLength && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { + value = +value + offset = offset >>> 0 + byteLength = byteLength >>> 0 + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1 + checkInt(this, value, offset, byteLength, maxBytes, 0) + } + + var i = byteLength - 1 + var mul = 1 + this[offset + i] = value & 0xFF + while (--i >= 0 && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0) + this[offset] = (value & 0xff) + return offset + 1 +} + +Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + return offset + 2 +} + +Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) + this[offset] = (value >>> 8) + this[offset + 1] = (value & 0xff) + return offset + 2 +} + +Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) + this[offset + 3] = (value >>> 24) + this[offset + 2] = (value >>> 16) + this[offset + 1] = (value >>> 8) + this[offset] = (value & 0xff) + return offset + 4 +} + +Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) + this[offset] = (value >>> 24) + this[offset + 1] = (value >>> 16) + this[offset + 2] = (value >>> 8) + this[offset + 3] = (value & 0xff) + return offset + 4 +} + +Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) { + var limit = Math.pow(2, (8 * byteLength) - 1) + + checkInt(this, value, offset, byteLength, limit - 1, -limit) + } + + var i = 0 + var mul = 1 + var sub = 0 + this[offset] = value & 0xFF + while (++i < byteLength && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { + sub = 1 + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) { + var limit = Math.pow(2, (8 * byteLength) - 1) + + checkInt(this, value, offset, byteLength, limit - 1, -limit) + } + + var i = byteLength - 1 + var mul = 1 + var sub = 0 + this[offset + i] = value & 0xFF + while (--i >= 0 && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { + sub = 1 + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80) + if (value < 0) value = 0xff + value + 1 + this[offset] = (value & 0xff) + return offset + 1 +} + +Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + return offset + 2 +} + +Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) + this[offset] = (value >>> 8) + this[offset + 1] = (value & 0xff) + return offset + 2 +} + +Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + this[offset + 2] = (value >>> 16) + this[offset + 3] = (value >>> 24) + return offset + 4 +} + +Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) + if (value < 0) value = 0xffffffff + value + 1 + this[offset] = (value >>> 24) + this[offset + 1] = (value >>> 16) + this[offset + 2] = (value >>> 8) + this[offset + 3] = (value & 0xff) + return offset + 4 +} + +function checkIEEE754 (buf, value, offset, ext, max, min) { + if (offset + ext > buf.length) throw new RangeError('Index out of range') + if (offset < 0) throw new RangeError('Index out of range') +} + +function writeFloat (buf, value, offset, littleEndian, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) { + checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38) + } + ieee754.write(buf, value, offset, littleEndian, 23, 4) + return offset + 4 +} + +Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { + return writeFloat(this, value, offset, true, noAssert) +} + +Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { + return writeFloat(this, value, offset, false, noAssert) +} + +function writeDouble (buf, value, offset, littleEndian, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) { + checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308) + } + ieee754.write(buf, value, offset, littleEndian, 52, 8) + return offset + 8 +} + +Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { + return writeDouble(this, value, offset, true, noAssert) +} + +Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { + return writeDouble(this, value, offset, false, noAssert) +} + +// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) +Buffer.prototype.copy = function copy (target, targetStart, start, end) { + if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer') + if (!start) start = 0 + if (!end && end !== 0) end = this.length + if (targetStart >= target.length) targetStart = target.length + if (!targetStart) targetStart = 0 + if (end > 0 && end < start) end = start + + // Copy 0 bytes; we're done + if (end === start) return 0 + if (target.length === 0 || this.length === 0) return 0 + + // Fatal error conditions + if (targetStart < 0) { + throw new RangeError('targetStart out of bounds') + } + if (start < 0 || start >= this.length) throw new RangeError('Index out of range') + if (end < 0) throw new RangeError('sourceEnd out of bounds') + + // Are we oob? + if (end > this.length) end = this.length + if (target.length - targetStart < end - start) { + end = target.length - targetStart + start + } + + var len = end - start + + if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') { + // Use built-in when available, missing from IE11 + this.copyWithin(targetStart, start, end) + } else if (this === target && start < targetStart && targetStart < end) { + // descending copy from end + for (var i = len - 1; i >= 0; --i) { + target[i + targetStart] = this[i + start] + } + } else { + Uint8Array.prototype.set.call( + target, + this.subarray(start, end), + targetStart + ) + } + + return len +} + +// Usage: +// buffer.fill(number[, offset[, end]]) +// buffer.fill(buffer[, offset[, end]]) +// buffer.fill(string[, offset[, end]][, encoding]) +Buffer.prototype.fill = function fill (val, start, end, encoding) { + // Handle string cases: + if (typeof val === 'string') { + if (typeof start === 'string') { + encoding = start + start = 0 + end = this.length + } else if (typeof end === 'string') { + encoding = end + end = this.length + } + if (encoding !== undefined && typeof encoding !== 'string') { + throw new TypeError('encoding must be a string') + } + if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { + throw new TypeError('Unknown encoding: ' + encoding) + } + if (val.length === 1) { + var code = val.charCodeAt(0) + if ((encoding === 'utf8' && code < 128) || + encoding === 'latin1') { + // Fast path: If `val` fits into a single byte, use that numeric value. + val = code + } + } + } else if (typeof val === 'number') { + val = val & 255 + } + + // Invalid ranges are not set to a default, so can range check early. + if (start < 0 || this.length < start || this.length < end) { + throw new RangeError('Out of range index') + } + + if (end <= start) { + return this + } + + start = start >>> 0 + end = end === undefined ? this.length : end >>> 0 + + if (!val) val = 0 + + var i + if (typeof val === 'number') { + for (i = start; i < end; ++i) { + this[i] = val + } + } else { + var bytes = Buffer.isBuffer(val) + ? val + : Buffer.from(val, encoding) + var len = bytes.length + if (len === 0) { + throw new TypeError('The value "' + val + + '" is invalid for argument "value"') + } + for (i = 0; i < end - start; ++i) { + this[i + start] = bytes[i % len] + } + } + + return this +} + +// HELPER FUNCTIONS +// ================ + +var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g + +function base64clean (str) { + // Node takes equal signs as end of the Base64 encoding + str = str.split('=')[0] + // Node strips out invalid characters like \n and \t from the string, base64-js does not + str = str.trim().replace(INVALID_BASE64_RE, '') + // Node converts strings with length < 2 to '' + if (str.length < 2) return '' + // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not + while (str.length % 4 !== 0) { + str = str + '=' + } + return str +} + +function toHex (n) { + if (n < 16) return '0' + n.toString(16) + return n.toString(16) +} + +function utf8ToBytes (string, units) { + units = units || Infinity + var codePoint + var length = string.length + var leadSurrogate = null + var bytes = [] + + for (var i = 0; i < length; ++i) { + codePoint = string.charCodeAt(i) + + // is surrogate component + if (codePoint > 0xD7FF && codePoint < 0xE000) { + // last char was a lead + if (!leadSurrogate) { + // no lead yet + if (codePoint > 0xDBFF) { + // unexpected trail + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + continue + } else if (i + 1 === length) { + // unpaired lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + continue + } + + // valid lead + leadSurrogate = codePoint + + continue + } + + // 2 leads in a row + if (codePoint < 0xDC00) { + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + leadSurrogate = codePoint + continue + } + + // valid surrogate pair + codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000 + } else if (leadSurrogate) { + // valid bmp char, but last char was a lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + } + + leadSurrogate = null + + // encode utf8 + if (codePoint < 0x80) { + if ((units -= 1) < 0) break + bytes.push(codePoint) + } else if (codePoint < 0x800) { + if ((units -= 2) < 0) break + bytes.push( + codePoint >> 0x6 | 0xC0, + codePoint & 0x3F | 0x80 + ) + } else if (codePoint < 0x10000) { + if ((units -= 3) < 0) break + bytes.push( + codePoint >> 0xC | 0xE0, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ) + } else if (codePoint < 0x110000) { + if ((units -= 4) < 0) break + bytes.push( + codePoint >> 0x12 | 0xF0, + codePoint >> 0xC & 0x3F | 0x80, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ) + } else { + throw new Error('Invalid code point') + } + } + + return bytes +} + +function asciiToBytes (str) { + var byteArray = [] + for (var i = 0; i < str.length; ++i) { + // Node's code seems to be doing this and not & 0x7F.. + byteArray.push(str.charCodeAt(i) & 0xFF) + } + return byteArray +} + +function utf16leToBytes (str, units) { + var c, hi, lo + var byteArray = [] + for (var i = 0; i < str.length; ++i) { + if ((units -= 2) < 0) break + + c = str.charCodeAt(i) + hi = c >> 8 + lo = c % 256 + byteArray.push(lo) + byteArray.push(hi) + } + + return byteArray +} + +function base64ToBytes (str) { + return base64.toByteArray(base64clean(str)) +} + +function blitBuffer (src, dst, offset, length) { + for (var i = 0; i < length; ++i) { + if ((i + offset >= dst.length) || (i >= src.length)) break + dst[i + offset] = src[i] + } + return i +} + +// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass +// the `instanceof` check but they should be treated as of that type. +// See: https://github.com/feross/buffer/issues/166 +function isInstance (obj, type) { + return obj instanceof type || + (obj != null && obj.constructor != null && obj.constructor.name != null && + obj.constructor.name === type.name) +} +function numberIsNaN (obj) { + // For IE11 support + return obj !== obj // eslint-disable-line no-self-compare +} + +}).call(this,require("buffer").Buffer) + +},{"base64-js":1,"buffer":2,"ieee754":4}],3:[function(require,module,exports){ +'use strict'; + +/****************************************************************************** + * Created 2008-08-19. + * + * Dijkstra path-finding functions. Adapted from the Dijkstar Python project. + * + * Copyright (C) 2008 + * Wyatt Baldwin + * All rights reserved + * + * Licensed under the MIT license. + * + * http://www.opensource.org/licenses/mit-license.php + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + *****************************************************************************/ +var dijkstra = { + single_source_shortest_paths: function(graph, s, d) { + // Predecessor map for each node that has been encountered. + // node ID => predecessor node ID + var predecessors = {}; + + // Costs of shortest paths from s to all nodes encountered. + // node ID => cost + var costs = {}; + costs[s] = 0; + + // Costs of shortest paths from s to all nodes encountered; differs from + // `costs` in that it provides easy access to the node that currently has + // the known shortest path from s. + // XXX: Do we actually need both `costs` and `open`? + var open = dijkstra.PriorityQueue.make(); + open.push(s, 0); + + var closest, + u, v, + cost_of_s_to_u, + adjacent_nodes, + cost_of_e, + cost_of_s_to_u_plus_cost_of_e, + cost_of_s_to_v, + first_visit; + while (!open.empty()) { + // In the nodes remaining in graph that have a known cost from s, + // find the node, u, that currently has the shortest path from s. + closest = open.pop(); + u = closest.value; + cost_of_s_to_u = closest.cost; + + // Get nodes adjacent to u... + adjacent_nodes = graph[u] || {}; + + // ...and explore the edges that connect u to those nodes, updating + // the cost of the shortest paths to any or all of those nodes as + // necessary. v is the node across the current edge from u. + for (v in adjacent_nodes) { + if (adjacent_nodes.hasOwnProperty(v)) { + // Get the cost of the edge running from u to v. + cost_of_e = adjacent_nodes[v]; + + // Cost of s to u plus the cost of u to v across e--this is *a* + // cost from s to v that may or may not be less than the current + // known cost to v. + cost_of_s_to_u_plus_cost_of_e = cost_of_s_to_u + cost_of_e; + + // If we haven't visited v yet OR if the current known cost from s to + // v is greater than the new cost we just found (cost of s to u plus + // cost of u to v across e), update v's cost in the cost list and + // update v's predecessor in the predecessor list (it's now u). + cost_of_s_to_v = costs[v]; + first_visit = (typeof costs[v] === 'undefined'); + if (first_visit || cost_of_s_to_v > cost_of_s_to_u_plus_cost_of_e) { + costs[v] = cost_of_s_to_u_plus_cost_of_e; + open.push(v, cost_of_s_to_u_plus_cost_of_e); + predecessors[v] = u; + } + } + } + } + + if (typeof d !== 'undefined' && typeof costs[d] === 'undefined') { + var msg = ['Could not find a path from ', s, ' to ', d, '.'].join(''); + throw new Error(msg); + } + + return predecessors; + }, + + extract_shortest_path_from_predecessor_list: function(predecessors, d) { + var nodes = []; + var u = d; + var predecessor; + while (u) { + nodes.push(u); + predecessor = predecessors[u]; + u = predecessors[u]; + } + nodes.reverse(); + return nodes; + }, + + find_path: function(graph, s, d) { + var predecessors = dijkstra.single_source_shortest_paths(graph, s, d); + return dijkstra.extract_shortest_path_from_predecessor_list( + predecessors, d); + }, + + /** + * A very naive priority queue implementation. + */ + PriorityQueue: { + make: function (opts) { + var T = dijkstra.PriorityQueue, + t = {}, + key; + opts = opts || {}; + for (key in T) { + if (T.hasOwnProperty(key)) { + t[key] = T[key]; + } + } + t.queue = []; + t.sorter = opts.sorter || T.default_sorter; + return t; + }, + + default_sorter: function (a, b) { + return a.cost - b.cost; + }, + + /** + * Add a new item to the queue and ensure the highest priority element + * is at the front of the queue. + */ + push: function (value, cost) { + var item = {value: value, cost: cost}; + this.queue.push(item); + this.queue.sort(this.sorter); + }, + + /** + * Return the highest priority element in the queue. + */ + pop: function () { + return this.queue.shift(); + }, + + empty: function () { + return this.queue.length === 0; + } + } +}; + + +// node.js module exports +if (typeof module !== 'undefined') { + module.exports = dijkstra; +} + +},{}],4:[function(require,module,exports){ +exports.read = function (buffer, offset, isLE, mLen, nBytes) { + var e, m + var eLen = (nBytes * 8) - mLen - 1 + var eMax = (1 << eLen) - 1 + var eBias = eMax >> 1 + var nBits = -7 + var i = isLE ? (nBytes - 1) : 0 + var d = isLE ? -1 : 1 + var s = buffer[offset + i] + + i += d + + e = s & ((1 << (-nBits)) - 1) + s >>= (-nBits) + nBits += eLen + for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {} + + m = e & ((1 << (-nBits)) - 1) + e >>= (-nBits) + nBits += mLen + for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {} + + if (e === 0) { + e = 1 - eBias + } else if (e === eMax) { + return m ? NaN : ((s ? -1 : 1) * Infinity) + } else { + m = m + Math.pow(2, mLen) + e = e - eBias + } + return (s ? -1 : 1) * m * Math.pow(2, e - mLen) +} + +exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { + var e, m, c + var eLen = (nBytes * 8) - mLen - 1 + var eMax = (1 << eLen) - 1 + var eBias = eMax >> 1 + var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0) + var i = isLE ? 0 : (nBytes - 1) + var d = isLE ? 1 : -1 + var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0 + + value = Math.abs(value) + + if (isNaN(value) || value === Infinity) { + m = isNaN(value) ? 1 : 0 + e = eMax + } else { + e = Math.floor(Math.log(value) / Math.LN2) + if (value * (c = Math.pow(2, -e)) < 1) { + e-- + c *= 2 + } + if (e + eBias >= 1) { + value += rt / c + } else { + value += rt * Math.pow(2, 1 - eBias) + } + if (value * c >= 2) { + e++ + c /= 2 + } + + if (e + eBias >= eMax) { + m = 0 + e = eMax + } else if (e + eBias >= 1) { + m = ((value * c) - 1) * Math.pow(2, mLen) + e = e + eBias + } else { + m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen) + e = 0 + } + } + + for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} + + e = (e << mLen) | m + eLen += mLen + for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} + + buffer[offset + i - d] |= s * 128 +} + +},{}],5:[function(require,module,exports){ +var toString = {}.toString; + +module.exports = Array.isArray || function (arr) { + return toString.call(arr) == '[object Array]'; +}; + +},{}],6:[function(require,module,exports){ +// shim for using process in browser +var process = module.exports = {}; + +// cached from whatever global is present so that test runners that stub it +// don't break things. But we need to wrap it in a try catch in case it is +// wrapped in strict mode code which doesn't define any globals. It's inside a +// function because try/catches deoptimize in certain engines. + +var cachedSetTimeout; +var cachedClearTimeout; + +function defaultSetTimout() { + throw new Error('setTimeout has not been defined'); +} +function defaultClearTimeout () { + throw new Error('clearTimeout has not been defined'); +} +(function () { + try { + if (typeof setTimeout === 'function') { + cachedSetTimeout = setTimeout; + } else { + cachedSetTimeout = defaultSetTimout; + } + } catch (e) { + cachedSetTimeout = defaultSetTimout; + } + try { + if (typeof clearTimeout === 'function') { + cachedClearTimeout = clearTimeout; + } else { + cachedClearTimeout = defaultClearTimeout; + } + } catch (e) { + cachedClearTimeout = defaultClearTimeout; + } +} ()) +function runTimeout(fun) { + if (cachedSetTimeout === setTimeout) { + //normal enviroments in sane situations + return setTimeout(fun, 0); + } + // if setTimeout wasn't available but was latter defined + if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { + cachedSetTimeout = setTimeout; + return setTimeout(fun, 0); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedSetTimeout(fun, 0); + } catch(e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedSetTimeout.call(null, fun, 0); + } catch(e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error + return cachedSetTimeout.call(this, fun, 0); + } + } + + +} +function runClearTimeout(marker) { + if (cachedClearTimeout === clearTimeout) { + //normal enviroments in sane situations + return clearTimeout(marker); + } + // if clearTimeout wasn't available but was latter defined + if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { + cachedClearTimeout = clearTimeout; + return clearTimeout(marker); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedClearTimeout(marker); + } catch (e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedClearTimeout.call(null, marker); + } catch (e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. + // Some versions of I.E. have different rules for clearTimeout vs setTimeout + return cachedClearTimeout.call(this, marker); + } + } + + + +} +var queue = []; +var draining = false; +var currentQueue; +var queueIndex = -1; + +function cleanUpNextTick() { + if (!draining || !currentQueue) { + return; + } + draining = false; + if (currentQueue.length) { + queue = currentQueue.concat(queue); + } else { + queueIndex = -1; + } + if (queue.length) { + drainQueue(); + } +} + +function drainQueue() { + if (draining) { + return; + } + var timeout = runTimeout(cleanUpNextTick); + draining = true; + + var len = queue.length; + while(len) { + currentQueue = queue; + queue = []; + while (++queueIndex < len) { + if (currentQueue) { + currentQueue[queueIndex].run(); + } + } + queueIndex = -1; + len = queue.length; + } + currentQueue = null; + draining = false; + runClearTimeout(timeout); +} + +process.nextTick = function (fun) { + var args = new Array(arguments.length - 1); + if (arguments.length > 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + queue.push(new Item(fun, args)); + if (queue.length === 1 && !draining) { + runTimeout(drainQueue); + } +}; + +// v8 likes predictible objects +function Item(fun, array) { + this.fun = fun; + this.array = array; +} +Item.prototype.run = function () { + this.fun.apply(null, this.array); +}; +process.title = 'browser'; +process.browser = true; +process.env = {}; +process.argv = []; +process.version = ''; // empty string to avoid regexp issues +process.versions = {}; + +function noop() {} + +process.on = noop; +process.addListener = noop; +process.once = noop; +process.off = noop; +process.removeListener = noop; +process.removeAllListeners = noop; +process.emit = noop; +process.prependListener = noop; +process.prependOnceListener = noop; + +process.listeners = function (name) { return [] } + +process.binding = function (name) { + throw new Error('process.binding is not supported'); +}; + +process.cwd = function () { return '/' }; +process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); +}; +process.umask = function() { return 0; }; + +},{}],7:[function(require,module,exports){ + +var canPromise = require('./can-promise') + +var QRCode = require('./core/qrcode') +var CanvasRenderer = require('./renderer/canvas') +var SvgRenderer = require('./renderer/svg-tag.js') + +function renderCanvas (renderFunc, canvas, text, opts, cb) { + var args = [].slice.call(arguments, 1) + var argsNum = args.length + var isLastArgCb = typeof args[argsNum - 1] === 'function' + + if (!isLastArgCb && !canPromise()) { + throw new Error('Callback required as last argument') + } + + if (isLastArgCb) { + if (argsNum < 2) { + throw new Error('Too few arguments provided') + } + + if (argsNum === 2) { + cb = text + text = canvas + canvas = opts = undefined + } else if (argsNum === 3) { + if (canvas.getContext && typeof cb === 'undefined') { + cb = opts + opts = undefined + } else { + cb = opts + opts = text + text = canvas + canvas = undefined + } + } + } else { + if (argsNum < 1) { + throw new Error('Too few arguments provided') + } + + if (argsNum === 1) { + text = canvas + canvas = opts = undefined + } else if (argsNum === 2 && !canvas.getContext) { + opts = text + text = canvas + canvas = undefined + } + + return new Promise(function (resolve, reject) { + try { + var data = QRCode.create(text, opts) + resolve(renderFunc(data, canvas, opts)) + } catch (e) { + reject(e) + } + }) + } + + try { + var data = QRCode.create(text, opts) + cb(null, renderFunc(data, canvas, opts)) + } catch (e) { + cb(e) + } +} + +exports.create = QRCode.create +exports.toCanvas = renderCanvas.bind(null, CanvasRenderer.render) +exports.toDataURL = renderCanvas.bind(null, CanvasRenderer.renderToDataURL) + +// only svg for now. +exports.toString = renderCanvas.bind(null, function (data, _, opts) { + return SvgRenderer.render(data, opts) +}) + +},{"./can-promise":8,"./core/qrcode":24,"./renderer/canvas":31,"./renderer/svg-tag.js":32}],8:[function(require,module,exports){ +// can-promise has a crash in some versions of react native that dont have +// standard global objects +// https://github.com/soldair/node-qrcode/issues/157 + +module.exports = function () { + return typeof Promise === 'function' && Promise.prototype && Promise.prototype.then +} + +},{}],9:[function(require,module,exports){ +/** + * Alignment pattern are fixed reference pattern in defined positions + * in a matrix symbology, which enables the decode software to re-synchronise + * the coordinate mapping of the image modules in the event of moderate amounts + * of distortion of the image. + * + * Alignment patterns are present only in QR Code symbols of version 2 or larger + * and their number depends on the symbol version. + */ + +var getSymbolSize = require('./utils').getSymbolSize + +/** + * Calculate the row/column coordinates of the center module of each alignment pattern + * for the specified QR Code version. + * + * The alignment patterns are positioned symmetrically on either side of the diagonal + * running from the top left corner of the symbol to the bottom right corner. + * + * Since positions are simmetrical only half of the coordinates are returned. + * Each item of the array will represent in turn the x and y coordinate. + * @see {@link getPositions} + * + * @param {Number} version QR Code version + * @return {Array} Array of coordinate + */ +exports.getRowColCoords = function getRowColCoords (version) { + if (version === 1) return [] + + var posCount = Math.floor(version / 7) + 2 + var size = getSymbolSize(version) + var intervals = size === 145 ? 26 : Math.ceil((size - 13) / (2 * posCount - 2)) * 2 + var positions = [size - 7] // Last coord is always (size - 7) + + for (var i = 1; i < posCount - 1; i++) { + positions[i] = positions[i - 1] - intervals + } + + positions.push(6) // First coord is always 6 + + return positions.reverse() +} + +/** + * Returns an array containing the positions of each alignment pattern. + * Each array's element represent the center point of the pattern as (x, y) coordinates + * + * Coordinates are calculated expanding the row/column coordinates returned by {@link getRowColCoords} + * and filtering out the items that overlaps with finder pattern + * + * @example + * For a Version 7 symbol {@link getRowColCoords} returns values 6, 22 and 38. + * The alignment patterns, therefore, are to be centered on (row, column) + * positions (6,22), (22,6), (22,22), (22,38), (38,22), (38,38). + * Note that the coordinates (6,6), (6,38), (38,6) are occupied by finder patterns + * and are not therefore used for alignment patterns. + * + * var pos = getPositions(7) + * // [[6,22], [22,6], [22,22], [22,38], [38,22], [38,38]] + * + * @param {Number} version QR Code version + * @return {Array} Array of coordinates + */ +exports.getPositions = function getPositions (version) { + var coords = [] + var pos = exports.getRowColCoords(version) + var posLength = pos.length + + for (var i = 0; i < posLength; i++) { + for (var j = 0; j < posLength; j++) { + // Skip if position is occupied by finder patterns + if ((i === 0 && j === 0) || // top-left + (i === 0 && j === posLength - 1) || // bottom-left + (i === posLength - 1 && j === 0)) { // top-right + continue + } + + coords.push([pos[i], pos[j]]) + } + } + + return coords +} + +},{"./utils":28}],10:[function(require,module,exports){ +var Mode = require('./mode') + +/** + * Array of characters available in alphanumeric mode + * + * As per QR Code specification, to each character + * is assigned a value from 0 to 44 which in this case coincides + * with the array index + * + * @type {Array} + */ +var ALPHA_NUM_CHARS = [ + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', + 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', + ' ', '$', '%', '*', '+', '-', '.', '/', ':' +] + +function AlphanumericData (data) { + this.mode = Mode.ALPHANUMERIC + this.data = data +} + +AlphanumericData.getBitsLength = function getBitsLength (length) { + return 11 * Math.floor(length / 2) + 6 * (length % 2) +} + +AlphanumericData.prototype.getLength = function getLength () { + return this.data.length +} + +AlphanumericData.prototype.getBitsLength = function getBitsLength () { + return AlphanumericData.getBitsLength(this.data.length) +} + +AlphanumericData.prototype.write = function write (bitBuffer) { + var i + + // Input data characters are divided into groups of two characters + // and encoded as 11-bit binary codes. + for (i = 0; i + 2 <= this.data.length; i += 2) { + // The character value of the first character is multiplied by 45 + var value = ALPHA_NUM_CHARS.indexOf(this.data[i]) * 45 + + // The character value of the second digit is added to the product + value += ALPHA_NUM_CHARS.indexOf(this.data[i + 1]) + + // The sum is then stored as 11-bit binary number + bitBuffer.put(value, 11) + } + + // If the number of input data characters is not a multiple of two, + // the character value of the final character is encoded as a 6-bit binary number. + if (this.data.length % 2) { + bitBuffer.put(ALPHA_NUM_CHARS.indexOf(this.data[i]), 6) + } +} + +module.exports = AlphanumericData + +},{"./mode":21}],11:[function(require,module,exports){ +function BitBuffer () { + this.buffer = [] + this.length = 0 +} + +BitBuffer.prototype = { + + get: function (index) { + var bufIndex = Math.floor(index / 8) + return ((this.buffer[bufIndex] >>> (7 - index % 8)) & 1) === 1 + }, + + put: function (num, length) { + for (var i = 0; i < length; i++) { + this.putBit(((num >>> (length - i - 1)) & 1) === 1) + } + }, + + getLengthInBits: function () { + return this.length + }, + + putBit: function (bit) { + var bufIndex = Math.floor(this.length / 8) + if (this.buffer.length <= bufIndex) { + this.buffer.push(0) + } + + if (bit) { + this.buffer[bufIndex] |= (0x80 >>> (this.length % 8)) + } + + this.length++ + } +} + +module.exports = BitBuffer + +},{}],12:[function(require,module,exports){ +var BufferUtil = require('../utils/buffer') + +/** + * Helper class to handle QR Code symbol modules + * + * @param {Number} size Symbol size + */ +function BitMatrix (size) { + if (!size || size < 1) { + throw new Error('BitMatrix size must be defined and greater than 0') + } + + this.size = size + this.data = BufferUtil.alloc(size * size) + this.reservedBit = BufferUtil.alloc(size * size) +} + +/** + * Set bit value at specified location + * If reserved flag is set, this bit will be ignored during masking process + * + * @param {Number} row + * @param {Number} col + * @param {Boolean} value + * @param {Boolean} reserved + */ +BitMatrix.prototype.set = function (row, col, value, reserved) { + var index = row * this.size + col + this.data[index] = value + if (reserved) this.reservedBit[index] = true +} + +/** + * Returns bit value at specified location + * + * @param {Number} row + * @param {Number} col + * @return {Boolean} + */ +BitMatrix.prototype.get = function (row, col) { + return this.data[row * this.size + col] +} + +/** + * Applies xor operator at specified location + * (used during masking process) + * + * @param {Number} row + * @param {Number} col + * @param {Boolean} value + */ +BitMatrix.prototype.xor = function (row, col, value) { + this.data[row * this.size + col] ^= value +} + +/** + * Check if bit at specified location is reserved + * + * @param {Number} row + * @param {Number} col + * @return {Boolean} + */ +BitMatrix.prototype.isReserved = function (row, col) { + return this.reservedBit[row * this.size + col] +} + +module.exports = BitMatrix + +},{"../utils/buffer":34}],13:[function(require,module,exports){ +var BufferUtil = require('../utils/buffer') +var Mode = require('./mode') + +function ByteData (data) { + this.mode = Mode.BYTE + this.data = BufferUtil.from(data) +} + +ByteData.getBitsLength = function getBitsLength (length) { + return length * 8 +} + +ByteData.prototype.getLength = function getLength () { + return this.data.length +} + +ByteData.prototype.getBitsLength = function getBitsLength () { + return ByteData.getBitsLength(this.data.length) +} + +ByteData.prototype.write = function (bitBuffer) { + for (var i = 0, l = this.data.length; i < l; i++) { + bitBuffer.put(this.data[i], 8) + } +} + +module.exports = ByteData + +},{"../utils/buffer":34,"./mode":21}],14:[function(require,module,exports){ +var ECLevel = require('./error-correction-level') + +var EC_BLOCKS_TABLE = [ +// L M Q H + 1, 1, 1, 1, + 1, 1, 1, 1, + 1, 1, 2, 2, + 1, 2, 2, 4, + 1, 2, 4, 4, + 2, 4, 4, 4, + 2, 4, 6, 5, + 2, 4, 6, 6, + 2, 5, 8, 8, + 4, 5, 8, 8, + 4, 5, 8, 11, + 4, 8, 10, 11, + 4, 9, 12, 16, + 4, 9, 16, 16, + 6, 10, 12, 18, + 6, 10, 17, 16, + 6, 11, 16, 19, + 6, 13, 18, 21, + 7, 14, 21, 25, + 8, 16, 20, 25, + 8, 17, 23, 25, + 9, 17, 23, 34, + 9, 18, 25, 30, + 10, 20, 27, 32, + 12, 21, 29, 35, + 12, 23, 34, 37, + 12, 25, 34, 40, + 13, 26, 35, 42, + 14, 28, 38, 45, + 15, 29, 40, 48, + 16, 31, 43, 51, + 17, 33, 45, 54, + 18, 35, 48, 57, + 19, 37, 51, 60, + 19, 38, 53, 63, + 20, 40, 56, 66, + 21, 43, 59, 70, + 22, 45, 62, 74, + 24, 47, 65, 77, + 25, 49, 68, 81 +] + +var EC_CODEWORDS_TABLE = [ +// L M Q H + 7, 10, 13, 17, + 10, 16, 22, 28, + 15, 26, 36, 44, + 20, 36, 52, 64, + 26, 48, 72, 88, + 36, 64, 96, 112, + 40, 72, 108, 130, + 48, 88, 132, 156, + 60, 110, 160, 192, + 72, 130, 192, 224, + 80, 150, 224, 264, + 96, 176, 260, 308, + 104, 198, 288, 352, + 120, 216, 320, 384, + 132, 240, 360, 432, + 144, 280, 408, 480, + 168, 308, 448, 532, + 180, 338, 504, 588, + 196, 364, 546, 650, + 224, 416, 600, 700, + 224, 442, 644, 750, + 252, 476, 690, 816, + 270, 504, 750, 900, + 300, 560, 810, 960, + 312, 588, 870, 1050, + 336, 644, 952, 1110, + 360, 700, 1020, 1200, + 390, 728, 1050, 1260, + 420, 784, 1140, 1350, + 450, 812, 1200, 1440, + 480, 868, 1290, 1530, + 510, 924, 1350, 1620, + 540, 980, 1440, 1710, + 570, 1036, 1530, 1800, + 570, 1064, 1590, 1890, + 600, 1120, 1680, 1980, + 630, 1204, 1770, 2100, + 660, 1260, 1860, 2220, + 720, 1316, 1950, 2310, + 750, 1372, 2040, 2430 +] + +/** + * Returns the number of error correction block that the QR Code should contain + * for the specified version and error correction level. + * + * @param {Number} version QR Code version + * @param {Number} errorCorrectionLevel Error correction level + * @return {Number} Number of error correction blocks + */ +exports.getBlocksCount = function getBlocksCount (version, errorCorrectionLevel) { + switch (errorCorrectionLevel) { + case ECLevel.L: + return EC_BLOCKS_TABLE[(version - 1) * 4 + 0] + case ECLevel.M: + return EC_BLOCKS_TABLE[(version - 1) * 4 + 1] + case ECLevel.Q: + return EC_BLOCKS_TABLE[(version - 1) * 4 + 2] + case ECLevel.H: + return EC_BLOCKS_TABLE[(version - 1) * 4 + 3] + default: + return undefined + } +} + +/** + * Returns the number of error correction codewords to use for the specified + * version and error correction level. + * + * @param {Number} version QR Code version + * @param {Number} errorCorrectionLevel Error correction level + * @return {Number} Number of error correction codewords + */ +exports.getTotalCodewordsCount = function getTotalCodewordsCount (version, errorCorrectionLevel) { + switch (errorCorrectionLevel) { + case ECLevel.L: + return EC_CODEWORDS_TABLE[(version - 1) * 4 + 0] + case ECLevel.M: + return EC_CODEWORDS_TABLE[(version - 1) * 4 + 1] + case ECLevel.Q: + return EC_CODEWORDS_TABLE[(version - 1) * 4 + 2] + case ECLevel.H: + return EC_CODEWORDS_TABLE[(version - 1) * 4 + 3] + default: + return undefined + } +} + +},{"./error-correction-level":15}],15:[function(require,module,exports){ +exports.L = { bit: 1 } +exports.M = { bit: 0 } +exports.Q = { bit: 3 } +exports.H = { bit: 2 } + +function fromString (string) { + if (typeof string !== 'string') { + throw new Error('Param is not a string') + } + + var lcStr = string.toLowerCase() + + switch (lcStr) { + case 'l': + case 'low': + return exports.L + + case 'm': + case 'medium': + return exports.M + + case 'q': + case 'quartile': + return exports.Q + + case 'h': + case 'high': + return exports.H + + default: + throw new Error('Unknown EC Level: ' + string) + } +} + +exports.isValid = function isValid (level) { + return level && typeof level.bit !== 'undefined' && + level.bit >= 0 && level.bit < 4 +} + +exports.from = function from (value, defaultValue) { + if (exports.isValid(value)) { + return value + } + + try { + return fromString(value) + } catch (e) { + return defaultValue + } +} + +},{}],16:[function(require,module,exports){ +var getSymbolSize = require('./utils').getSymbolSize +var FINDER_PATTERN_SIZE = 7 + +/** + * Returns an array containing the positions of each finder pattern. + * Each array's element represent the top-left point of the pattern as (x, y) coordinates + * + * @param {Number} version QR Code version + * @return {Array} Array of coordinates + */ +exports.getPositions = function getPositions (version) { + var size = getSymbolSize(version) + + return [ + // top-left + [0, 0], + // top-right + [size - FINDER_PATTERN_SIZE, 0], + // bottom-left + [0, size - FINDER_PATTERN_SIZE] + ] +} + +},{"./utils":28}],17:[function(require,module,exports){ +var Utils = require('./utils') + +var G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0) +var G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1) +var G15_BCH = Utils.getBCHDigit(G15) + +/** + * Returns format information with relative error correction bits + * + * The format information is a 15-bit sequence containing 5 data bits, + * with 10 error correction bits calculated using the (15, 5) BCH code. + * + * @param {Number} errorCorrectionLevel Error correction level + * @param {Number} mask Mask pattern + * @return {Number} Encoded format information bits + */ +exports.getEncodedBits = function getEncodedBits (errorCorrectionLevel, mask) { + var data = ((errorCorrectionLevel.bit << 3) | mask) + var d = data << 10 + + while (Utils.getBCHDigit(d) - G15_BCH >= 0) { + d ^= (G15 << (Utils.getBCHDigit(d) - G15_BCH)) + } + + // xor final data with mask pattern in order to ensure that + // no combination of Error Correction Level and data mask pattern + // will result in an all-zero data string + return ((data << 10) | d) ^ G15_MASK +} + +},{"./utils":28}],18:[function(require,module,exports){ +var BufferUtil = require('../utils/buffer') + +var EXP_TABLE = BufferUtil.alloc(512) +var LOG_TABLE = BufferUtil.alloc(256) +/** + * Precompute the log and anti-log tables for faster computation later + * + * For each possible value in the galois field 2^8, we will pre-compute + * the logarithm and anti-logarithm (exponential) of this value + * + * ref {@link https://en.wikiversity.org/wiki/Reed%E2%80%93Solomon_codes_for_coders#Introduction_to_mathematical_fields} + */ +;(function initTables () { + var x = 1 + for (var i = 0; i < 255; i++) { + EXP_TABLE[i] = x + LOG_TABLE[x] = i + + x <<= 1 // multiply by 2 + + // The QR code specification says to use byte-wise modulo 100011101 arithmetic. + // This means that when a number is 256 or larger, it should be XORed with 0x11D. + if (x & 0x100) { // similar to x >= 256, but a lot faster (because 0x100 == 256) + x ^= 0x11D + } + } + + // Optimization: double the size of the anti-log table so that we don't need to mod 255 to + // stay inside the bounds (because we will mainly use this table for the multiplication of + // two GF numbers, no more). + // @see {@link mul} + for (i = 255; i < 512; i++) { + EXP_TABLE[i] = EXP_TABLE[i - 255] + } +}()) + +/** + * Returns log value of n inside Galois Field + * + * @param {Number} n + * @return {Number} + */ +exports.log = function log (n) { + if (n < 1) throw new Error('log(' + n + ')') + return LOG_TABLE[n] +} + +/** + * Returns anti-log value of n inside Galois Field + * + * @param {Number} n + * @return {Number} + */ +exports.exp = function exp (n) { + return EXP_TABLE[n] +} + +/** + * Multiplies two number inside Galois Field + * + * @param {Number} x + * @param {Number} y + * @return {Number} + */ +exports.mul = function mul (x, y) { + if (x === 0 || y === 0) return 0 + + // should be EXP_TABLE[(LOG_TABLE[x] + LOG_TABLE[y]) % 255] if EXP_TABLE wasn't oversized + // @see {@link initTables} + return EXP_TABLE[LOG_TABLE[x] + LOG_TABLE[y]] +} + +},{"../utils/buffer":34}],19:[function(require,module,exports){ +var Mode = require('./mode') +var Utils = require('./utils') + +function KanjiData (data) { + this.mode = Mode.KANJI + this.data = data +} + +KanjiData.getBitsLength = function getBitsLength (length) { + return length * 13 +} + +KanjiData.prototype.getLength = function getLength () { + return this.data.length +} + +KanjiData.prototype.getBitsLength = function getBitsLength () { + return KanjiData.getBitsLength(this.data.length) +} + +KanjiData.prototype.write = function (bitBuffer) { + var i + + // In the Shift JIS system, Kanji characters are represented by a two byte combination. + // These byte values are shifted from the JIS X 0208 values. + // JIS X 0208 gives details of the shift coded representation. + for (i = 0; i < this.data.length; i++) { + var value = Utils.toSJIS(this.data[i]) + + // For characters with Shift JIS values from 0x8140 to 0x9FFC: + if (value >= 0x8140 && value <= 0x9FFC) { + // Subtract 0x8140 from Shift JIS value + value -= 0x8140 + + // For characters with Shift JIS values from 0xE040 to 0xEBBF + } else if (value >= 0xE040 && value <= 0xEBBF) { + // Subtract 0xC140 from Shift JIS value + value -= 0xC140 + } else { + throw new Error( + 'Invalid SJIS character: ' + this.data[i] + '\n' + + 'Make sure your charset is UTF-8') + } + + // Multiply most significant byte of result by 0xC0 + // and add least significant byte to product + value = (((value >>> 8) & 0xff) * 0xC0) + (value & 0xff) + + // Convert result to a 13-bit binary string + bitBuffer.put(value, 13) + } +} + +module.exports = KanjiData + +},{"./mode":21,"./utils":28}],20:[function(require,module,exports){ +/** + * Data mask pattern reference + * @type {Object} + */ +exports.Patterns = { + PATTERN000: 0, + PATTERN001: 1, + PATTERN010: 2, + PATTERN011: 3, + PATTERN100: 4, + PATTERN101: 5, + PATTERN110: 6, + PATTERN111: 7 +} + +/** + * Weighted penalty scores for the undesirable features + * @type {Object} + */ +var PenaltyScores = { + N1: 3, + N2: 3, + N3: 40, + N4: 10 +} + +/** + * Check if mask pattern value is valid + * + * @param {Number} mask Mask pattern + * @return {Boolean} true if valid, false otherwise + */ +exports.isValid = function isValid (mask) { + return mask != null && mask !== '' && !isNaN(mask) && mask >= 0 && mask <= 7 +} + +/** + * Returns mask pattern from a value. + * If value is not valid, returns undefined + * + * @param {Number|String} value Mask pattern value + * @return {Number} Valid mask pattern or undefined + */ +exports.from = function from (value) { + return exports.isValid(value) ? parseInt(value, 10) : undefined +} + +/** +* Find adjacent modules in row/column with the same color +* and assign a penalty value. +* +* Points: N1 + i +* i is the amount by which the number of adjacent modules of the same color exceeds 5 +*/ +exports.getPenaltyN1 = function getPenaltyN1 (data) { + var size = data.size + var points = 0 + var sameCountCol = 0 + var sameCountRow = 0 + var lastCol = null + var lastRow = null + + for (var row = 0; row < size; row++) { + sameCountCol = sameCountRow = 0 + lastCol = lastRow = null + + for (var col = 0; col < size; col++) { + var module = data.get(row, col) + if (module === lastCol) { + sameCountCol++ + } else { + if (sameCountCol >= 5) points += PenaltyScores.N1 + (sameCountCol - 5) + lastCol = module + sameCountCol = 1 + } + + module = data.get(col, row) + if (module === lastRow) { + sameCountRow++ + } else { + if (sameCountRow >= 5) points += PenaltyScores.N1 + (sameCountRow - 5) + lastRow = module + sameCountRow = 1 + } + } + + if (sameCountCol >= 5) points += PenaltyScores.N1 + (sameCountCol - 5) + if (sameCountRow >= 5) points += PenaltyScores.N1 + (sameCountRow - 5) + } + + return points +} + +/** + * Find 2x2 blocks with the same color and assign a penalty value + * + * Points: N2 * (m - 1) * (n - 1) + */ +exports.getPenaltyN2 = function getPenaltyN2 (data) { + var size = data.size + var points = 0 + + for (var row = 0; row < size - 1; row++) { + for (var col = 0; col < size - 1; col++) { + var last = data.get(row, col) + + data.get(row, col + 1) + + data.get(row + 1, col) + + data.get(row + 1, col + 1) + + if (last === 4 || last === 0) points++ + } + } + + return points * PenaltyScores.N2 +} + +/** + * Find 1:1:3:1:1 ratio (dark:light:dark:light:dark) pattern in row/column, + * preceded or followed by light area 4 modules wide + * + * Points: N3 * number of pattern found + */ +exports.getPenaltyN3 = function getPenaltyN3 (data) { + var size = data.size + var points = 0 + var bitsCol = 0 + var bitsRow = 0 + + for (var row = 0; row < size; row++) { + bitsCol = bitsRow = 0 + for (var col = 0; col < size; col++) { + bitsCol = ((bitsCol << 1) & 0x7FF) | data.get(row, col) + if (col >= 10 && (bitsCol === 0x5D0 || bitsCol === 0x05D)) points++ + + bitsRow = ((bitsRow << 1) & 0x7FF) | data.get(col, row) + if (col >= 10 && (bitsRow === 0x5D0 || bitsRow === 0x05D)) points++ + } + } + + return points * PenaltyScores.N3 +} + +/** + * Calculate proportion of dark modules in entire symbol + * + * Points: N4 * k + * + * k is the rating of the deviation of the proportion of dark modules + * in the symbol from 50% in steps of 5% + */ +exports.getPenaltyN4 = function getPenaltyN4 (data) { + var darkCount = 0 + var modulesCount = data.data.length + + for (var i = 0; i < modulesCount; i++) darkCount += data.data[i] + + var k = Math.abs(Math.ceil((darkCount * 100 / modulesCount) / 5) - 10) + + return k * PenaltyScores.N4 +} + +/** + * Return mask value at given position + * + * @param {Number} maskPattern Pattern reference value + * @param {Number} i Row + * @param {Number} j Column + * @return {Boolean} Mask value + */ +function getMaskAt (maskPattern, i, j) { + switch (maskPattern) { + case exports.Patterns.PATTERN000: return (i + j) % 2 === 0 + case exports.Patterns.PATTERN001: return i % 2 === 0 + case exports.Patterns.PATTERN010: return j % 3 === 0 + case exports.Patterns.PATTERN011: return (i + j) % 3 === 0 + case exports.Patterns.PATTERN100: return (Math.floor(i / 2) + Math.floor(j / 3)) % 2 === 0 + case exports.Patterns.PATTERN101: return (i * j) % 2 + (i * j) % 3 === 0 + case exports.Patterns.PATTERN110: return ((i * j) % 2 + (i * j) % 3) % 2 === 0 + case exports.Patterns.PATTERN111: return ((i * j) % 3 + (i + j) % 2) % 2 === 0 + + default: throw new Error('bad maskPattern:' + maskPattern) + } +} + +/** + * Apply a mask pattern to a BitMatrix + * + * @param {Number} pattern Pattern reference number + * @param {BitMatrix} data BitMatrix data + */ +exports.applyMask = function applyMask (pattern, data) { + var size = data.size + + for (var col = 0; col < size; col++) { + for (var row = 0; row < size; row++) { + if (data.isReserved(row, col)) continue + data.xor(row, col, getMaskAt(pattern, row, col)) + } + } +} + +/** + * Returns the best mask pattern for data + * + * @param {BitMatrix} data + * @return {Number} Mask pattern reference number + */ +exports.getBestMask = function getBestMask (data, setupFormatFunc) { + var numPatterns = Object.keys(exports.Patterns).length + var bestPattern = 0 + var lowerPenalty = Infinity + + for (var p = 0; p < numPatterns; p++) { + setupFormatFunc(p) + exports.applyMask(p, data) + + // Calculate penalty + var penalty = + exports.getPenaltyN1(data) + + exports.getPenaltyN2(data) + + exports.getPenaltyN3(data) + + exports.getPenaltyN4(data) + + // Undo previously applied mask + exports.applyMask(p, data) + + if (penalty < lowerPenalty) { + lowerPenalty = penalty + bestPattern = p + } + } + + return bestPattern +} + +},{}],21:[function(require,module,exports){ +var VersionCheck = require('./version-check') +var Regex = require('./regex') + +/** + * Numeric mode encodes data from the decimal digit set (0 - 9) + * (byte values 30HEX to 39HEX). + * Normally, 3 data characters are represented by 10 bits. + * + * @type {Object} + */ +exports.NUMERIC = { + id: 'Numeric', + bit: 1 << 0, + ccBits: [10, 12, 14] +} + +/** + * Alphanumeric mode encodes data from a set of 45 characters, + * i.e. 10 numeric digits (0 - 9), + * 26 alphabetic characters (A - Z), + * and 9 symbols (SP, $, %, *, +, -, ., /, :). + * Normally, two input characters are represented by 11 bits. + * + * @type {Object} + */ +exports.ALPHANUMERIC = { + id: 'Alphanumeric', + bit: 1 << 1, + ccBits: [9, 11, 13] +} + +/** + * In byte mode, data is encoded at 8 bits per character. + * + * @type {Object} + */ +exports.BYTE = { + id: 'Byte', + bit: 1 << 2, + ccBits: [8, 16, 16] +} + +/** + * The Kanji mode efficiently encodes Kanji characters in accordance with + * the Shift JIS system based on JIS X 0208. + * The Shift JIS values are shifted from the JIS X 0208 values. + * JIS X 0208 gives details of the shift coded representation. + * Each two-byte character value is compacted to a 13-bit binary codeword. + * + * @type {Object} + */ +exports.KANJI = { + id: 'Kanji', + bit: 1 << 3, + ccBits: [8, 10, 12] +} + +/** + * Mixed mode will contain a sequences of data in a combination of any of + * the modes described above + * + * @type {Object} + */ +exports.MIXED = { + bit: -1 +} + +/** + * Returns the number of bits needed to store the data length + * according to QR Code specifications. + * + * @param {Mode} mode Data mode + * @param {Number} version QR Code version + * @return {Number} Number of bits + */ +exports.getCharCountIndicator = function getCharCountIndicator (mode, version) { + if (!mode.ccBits) throw new Error('Invalid mode: ' + mode) + + if (!VersionCheck.isValid(version)) { + throw new Error('Invalid version: ' + version) + } + + if (version >= 1 && version < 10) return mode.ccBits[0] + else if (version < 27) return mode.ccBits[1] + return mode.ccBits[2] +} + +/** + * Returns the most efficient mode to store the specified data + * + * @param {String} dataStr Input data string + * @return {Mode} Best mode + */ +exports.getBestModeForData = function getBestModeForData (dataStr) { + if (Regex.testNumeric(dataStr)) return exports.NUMERIC + else if (Regex.testAlphanumeric(dataStr)) return exports.ALPHANUMERIC + else if (Regex.testKanji(dataStr)) return exports.KANJI + else return exports.BYTE +} + +/** + * Return mode name as string + * + * @param {Mode} mode Mode object + * @returns {String} Mode name + */ +exports.toString = function toString (mode) { + if (mode && mode.id) return mode.id + throw new Error('Invalid mode') +} + +/** + * Check if input param is a valid mode object + * + * @param {Mode} mode Mode object + * @returns {Boolean} True if valid mode, false otherwise + */ +exports.isValid = function isValid (mode) { + return mode && mode.bit && mode.ccBits +} + +/** + * Get mode object from its name + * + * @param {String} string Mode name + * @returns {Mode} Mode object + */ +function fromString (string) { + if (typeof string !== 'string') { + throw new Error('Param is not a string') + } + + var lcStr = string.toLowerCase() + + switch (lcStr) { + case 'numeric': + return exports.NUMERIC + case 'alphanumeric': + return exports.ALPHANUMERIC + case 'kanji': + return exports.KANJI + case 'byte': + return exports.BYTE + default: + throw new Error('Unknown mode: ' + string) + } +} + +/** + * Returns mode from a value. + * If value is not a valid mode, returns defaultValue + * + * @param {Mode|String} value Encoding mode + * @param {Mode} defaultValue Fallback value + * @return {Mode} Encoding mode + */ +exports.from = function from (value, defaultValue) { + if (exports.isValid(value)) { + return value + } + + try { + return fromString(value) + } catch (e) { + return defaultValue + } +} + +},{"./regex":26,"./version-check":29}],22:[function(require,module,exports){ +var Mode = require('./mode') + +function NumericData (data) { + this.mode = Mode.NUMERIC + this.data = data.toString() +} + +NumericData.getBitsLength = function getBitsLength (length) { + return 10 * Math.floor(length / 3) + ((length % 3) ? ((length % 3) * 3 + 1) : 0) +} + +NumericData.prototype.getLength = function getLength () { + return this.data.length +} + +NumericData.prototype.getBitsLength = function getBitsLength () { + return NumericData.getBitsLength(this.data.length) +} + +NumericData.prototype.write = function write (bitBuffer) { + var i, group, value + + // The input data string is divided into groups of three digits, + // and each group is converted to its 10-bit binary equivalent. + for (i = 0; i + 3 <= this.data.length; i += 3) { + group = this.data.substr(i, 3) + value = parseInt(group, 10) + + bitBuffer.put(value, 10) + } + + // If the number of input digits is not an exact multiple of three, + // the final one or two digits are converted to 4 or 7 bits respectively. + var remainingNum = this.data.length - i + if (remainingNum > 0) { + group = this.data.substr(i) + value = parseInt(group, 10) + + bitBuffer.put(value, remainingNum * 3 + 1) + } +} + +module.exports = NumericData + +},{"./mode":21}],23:[function(require,module,exports){ +var BufferUtil = require('../utils/buffer') +var GF = require('./galois-field') + +/** + * Multiplies two polynomials inside Galois Field + * + * @param {Buffer} p1 Polynomial + * @param {Buffer} p2 Polynomial + * @return {Buffer} Product of p1 and p2 + */ +exports.mul = function mul (p1, p2) { + var coeff = BufferUtil.alloc(p1.length + p2.length - 1) + + for (var i = 0; i < p1.length; i++) { + for (var j = 0; j < p2.length; j++) { + coeff[i + j] ^= GF.mul(p1[i], p2[j]) + } + } + + return coeff +} + +/** + * Calculate the remainder of polynomials division + * + * @param {Buffer} divident Polynomial + * @param {Buffer} divisor Polynomial + * @return {Buffer} Remainder + */ +exports.mod = function mod (divident, divisor) { + var result = BufferUtil.from(divident) + + while ((result.length - divisor.length) >= 0) { + var coeff = result[0] + + for (var i = 0; i < divisor.length; i++) { + result[i] ^= GF.mul(divisor[i], coeff) + } + + // remove all zeros from buffer head + var offset = 0 + while (offset < result.length && result[offset] === 0) offset++ + result = result.slice(offset) + } + + return result +} + +/** + * Generate an irreducible generator polynomial of specified degree + * (used by Reed-Solomon encoder) + * + * @param {Number} degree Degree of the generator polynomial + * @return {Buffer} Buffer containing polynomial coefficients + */ +exports.generateECPolynomial = function generateECPolynomial (degree) { + var poly = BufferUtil.from([1]) + for (var i = 0; i < degree; i++) { + poly = exports.mul(poly, [1, GF.exp(i)]) + } + + return poly +} + +},{"../utils/buffer":34,"./galois-field":18}],24:[function(require,module,exports){ +var BufferUtil = require('../utils/buffer') +var Utils = require('./utils') +var ECLevel = require('./error-correction-level') +var BitBuffer = require('./bit-buffer') +var BitMatrix = require('./bit-matrix') +var AlignmentPattern = require('./alignment-pattern') +var FinderPattern = require('./finder-pattern') +var MaskPattern = require('./mask-pattern') +var ECCode = require('./error-correction-code') +var ReedSolomonEncoder = require('./reed-solomon-encoder') +var Version = require('./version') +var FormatInfo = require('./format-info') +var Mode = require('./mode') +var Segments = require('./segments') +var isArray = require('isarray') + +/** + * QRCode for JavaScript + * + * modified by Ryan Day for nodejs support + * Copyright (c) 2011 Ryan Day + * + * Licensed under the MIT license: + * http://www.opensource.org/licenses/mit-license.php + * +//--------------------------------------------------------------------- +// QRCode for JavaScript +// +// Copyright (c) 2009 Kazuhiko Arase +// +// URL: http://www.d-project.com/ +// +// Licensed under the MIT license: +// http://www.opensource.org/licenses/mit-license.php +// +// The word "QR Code" is registered trademark of +// DENSO WAVE INCORPORATED +// http://www.denso-wave.com/qrcode/faqpatent-e.html +// +//--------------------------------------------------------------------- +*/ + +/** + * Add finder patterns bits to matrix + * + * @param {BitMatrix} matrix Modules matrix + * @param {Number} version QR Code version + */ +function setupFinderPattern (matrix, version) { + var size = matrix.size + var pos = FinderPattern.getPositions(version) + + for (var i = 0; i < pos.length; i++) { + var row = pos[i][0] + var col = pos[i][1] + + for (var r = -1; r <= 7; r++) { + if (row + r <= -1 || size <= row + r) continue + + for (var c = -1; c <= 7; c++) { + if (col + c <= -1 || size <= col + c) continue + + if ((r >= 0 && r <= 6 && (c === 0 || c === 6)) || + (c >= 0 && c <= 6 && (r === 0 || r === 6)) || + (r >= 2 && r <= 4 && c >= 2 && c <= 4)) { + matrix.set(row + r, col + c, true, true) + } else { + matrix.set(row + r, col + c, false, true) + } + } + } + } +} + +/** + * Add timing pattern bits to matrix + * + * Note: this function must be called before {@link setupAlignmentPattern} + * + * @param {BitMatrix} matrix Modules matrix + */ +function setupTimingPattern (matrix) { + var size = matrix.size + + for (var r = 8; r < size - 8; r++) { + var value = r % 2 === 0 + matrix.set(r, 6, value, true) + matrix.set(6, r, value, true) + } +} + +/** + * Add alignment patterns bits to matrix + * + * Note: this function must be called after {@link setupTimingPattern} + * + * @param {BitMatrix} matrix Modules matrix + * @param {Number} version QR Code version + */ +function setupAlignmentPattern (matrix, version) { + var pos = AlignmentPattern.getPositions(version) + + for (var i = 0; i < pos.length; i++) { + var row = pos[i][0] + var col = pos[i][1] + + for (var r = -2; r <= 2; r++) { + for (var c = -2; c <= 2; c++) { + if (r === -2 || r === 2 || c === -2 || c === 2 || + (r === 0 && c === 0)) { + matrix.set(row + r, col + c, true, true) + } else { + matrix.set(row + r, col + c, false, true) + } + } + } + } +} + +/** + * Add version info bits to matrix + * + * @param {BitMatrix} matrix Modules matrix + * @param {Number} version QR Code version + */ +function setupVersionInfo (matrix, version) { + var size = matrix.size + var bits = Version.getEncodedBits(version) + var row, col, mod + + for (var i = 0; i < 18; i++) { + row = Math.floor(i / 3) + col = i % 3 + size - 8 - 3 + mod = ((bits >> i) & 1) === 1 + + matrix.set(row, col, mod, true) + matrix.set(col, row, mod, true) + } +} + +/** + * Add format info bits to matrix + * + * @param {BitMatrix} matrix Modules matrix + * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level + * @param {Number} maskPattern Mask pattern reference value + */ +function setupFormatInfo (matrix, errorCorrectionLevel, maskPattern) { + var size = matrix.size + var bits = FormatInfo.getEncodedBits(errorCorrectionLevel, maskPattern) + var i, mod + + for (i = 0; i < 15; i++) { + mod = ((bits >> i) & 1) === 1 + + // vertical + if (i < 6) { + matrix.set(i, 8, mod, true) + } else if (i < 8) { + matrix.set(i + 1, 8, mod, true) + } else { + matrix.set(size - 15 + i, 8, mod, true) + } + + // horizontal + if (i < 8) { + matrix.set(8, size - i - 1, mod, true) + } else if (i < 9) { + matrix.set(8, 15 - i - 1 + 1, mod, true) + } else { + matrix.set(8, 15 - i - 1, mod, true) + } + } + + // fixed module + matrix.set(size - 8, 8, 1, true) +} + +/** + * Add encoded data bits to matrix + * + * @param {BitMatrix} matrix Modules matrix + * @param {Buffer} data Data codewords + */ +function setupData (matrix, data) { + var size = matrix.size + var inc = -1 + var row = size - 1 + var bitIndex = 7 + var byteIndex = 0 + + for (var col = size - 1; col > 0; col -= 2) { + if (col === 6) col-- + + while (true) { + for (var c = 0; c < 2; c++) { + if (!matrix.isReserved(row, col - c)) { + var dark = false + + if (byteIndex < data.length) { + dark = (((data[byteIndex] >>> bitIndex) & 1) === 1) + } + + matrix.set(row, col - c, dark) + bitIndex-- + + if (bitIndex === -1) { + byteIndex++ + bitIndex = 7 + } + } + } + + row += inc + + if (row < 0 || size <= row) { + row -= inc + inc = -inc + break + } + } + } +} + +/** + * Create encoded codewords from data input + * + * @param {Number} version QR Code version + * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level + * @param {ByteData} data Data input + * @return {Buffer} Buffer containing encoded codewords + */ +function createData (version, errorCorrectionLevel, segments) { + // Prepare data buffer + var buffer = new BitBuffer() + + segments.forEach(function (data) { + // prefix data with mode indicator (4 bits) + buffer.put(data.mode.bit, 4) + + // Prefix data with character count indicator. + // The character count indicator is a string of bits that represents the + // number of characters that are being encoded. + // The character count indicator must be placed after the mode indicator + // and must be a certain number of bits long, depending on the QR version + // and data mode + // @see {@link Mode.getCharCountIndicator}. + buffer.put(data.getLength(), Mode.getCharCountIndicator(data.mode, version)) + + // add binary data sequence to buffer + data.write(buffer) + }) + + // Calculate required number of bits + var totalCodewords = Utils.getSymbolTotalCodewords(version) + var ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel) + var dataTotalCodewordsBits = (totalCodewords - ecTotalCodewords) * 8 + + // Add a terminator. + // If the bit string is shorter than the total number of required bits, + // a terminator of up to four 0s must be added to the right side of the string. + // If the bit string is more than four bits shorter than the required number of bits, + // add four 0s to the end. + if (buffer.getLengthInBits() + 4 <= dataTotalCodewordsBits) { + buffer.put(0, 4) + } + + // If the bit string is fewer than four bits shorter, add only the number of 0s that + // are needed to reach the required number of bits. + + // After adding the terminator, if the number of bits in the string is not a multiple of 8, + // pad the string on the right with 0s to make the string's length a multiple of 8. + while (buffer.getLengthInBits() % 8 !== 0) { + buffer.putBit(0) + } + + // Add pad bytes if the string is still shorter than the total number of required bits. + // Extend the buffer to fill the data capacity of the symbol corresponding to + // the Version and Error Correction Level by adding the Pad Codewords 11101100 (0xEC) + // and 00010001 (0x11) alternately. + var remainingByte = (dataTotalCodewordsBits - buffer.getLengthInBits()) / 8 + for (var i = 0; i < remainingByte; i++) { + buffer.put(i % 2 ? 0x11 : 0xEC, 8) + } + + return createCodewords(buffer, version, errorCorrectionLevel) +} + +/** + * Encode input data with Reed-Solomon and return codewords with + * relative error correction bits + * + * @param {BitBuffer} bitBuffer Data to encode + * @param {Number} version QR Code version + * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level + * @return {Buffer} Buffer containing encoded codewords + */ +function createCodewords (bitBuffer, version, errorCorrectionLevel) { + // Total codewords for this QR code version (Data + Error correction) + var totalCodewords = Utils.getSymbolTotalCodewords(version) + + // Total number of error correction codewords + var ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel) + + // Total number of data codewords + var dataTotalCodewords = totalCodewords - ecTotalCodewords + + // Total number of blocks + var ecTotalBlocks = ECCode.getBlocksCount(version, errorCorrectionLevel) + + // Calculate how many blocks each group should contain + var blocksInGroup2 = totalCodewords % ecTotalBlocks + var blocksInGroup1 = ecTotalBlocks - blocksInGroup2 + + var totalCodewordsInGroup1 = Math.floor(totalCodewords / ecTotalBlocks) + + var dataCodewordsInGroup1 = Math.floor(dataTotalCodewords / ecTotalBlocks) + var dataCodewordsInGroup2 = dataCodewordsInGroup1 + 1 + + // Number of EC codewords is the same for both groups + var ecCount = totalCodewordsInGroup1 - dataCodewordsInGroup1 + + // Initialize a Reed-Solomon encoder with a generator polynomial of degree ecCount + var rs = new ReedSolomonEncoder(ecCount) + + var offset = 0 + var dcData = new Array(ecTotalBlocks) + var ecData = new Array(ecTotalBlocks) + var maxDataSize = 0 + var buffer = BufferUtil.from(bitBuffer.buffer) + + // Divide the buffer into the required number of blocks + for (var b = 0; b < ecTotalBlocks; b++) { + var dataSize = b < blocksInGroup1 ? dataCodewordsInGroup1 : dataCodewordsInGroup2 + + // extract a block of data from buffer + dcData[b] = buffer.slice(offset, offset + dataSize) + + // Calculate EC codewords for this data block + ecData[b] = rs.encode(dcData[b]) + + offset += dataSize + maxDataSize = Math.max(maxDataSize, dataSize) + } + + // Create final data + // Interleave the data and error correction codewords from each block + var data = BufferUtil.alloc(totalCodewords) + var index = 0 + var i, r + + // Add data codewords + for (i = 0; i < maxDataSize; i++) { + for (r = 0; r < ecTotalBlocks; r++) { + if (i < dcData[r].length) { + data[index++] = dcData[r][i] + } + } + } + + // Apped EC codewords + for (i = 0; i < ecCount; i++) { + for (r = 0; r < ecTotalBlocks; r++) { + data[index++] = ecData[r][i] + } + } + + return data +} + +/** + * Build QR Code symbol + * + * @param {String} data Input string + * @param {Number} version QR Code version + * @param {ErrorCorretionLevel} errorCorrectionLevel Error level + * @param {MaskPattern} maskPattern Mask pattern + * @return {Object} Object containing symbol data + */ +function createSymbol (data, version, errorCorrectionLevel, maskPattern) { + var segments + + if (isArray(data)) { + segments = Segments.fromArray(data) + } else if (typeof data === 'string') { + var estimatedVersion = version + + if (!estimatedVersion) { + var rawSegments = Segments.rawSplit(data) + + // Estimate best version that can contain raw splitted segments + estimatedVersion = Version.getBestVersionForData(rawSegments, + errorCorrectionLevel) + } + + // Build optimized segments + // If estimated version is undefined, try with the highest version + segments = Segments.fromString(data, estimatedVersion || 40) + } else { + throw new Error('Invalid data') + } + + // Get the min version that can contain data + var bestVersion = Version.getBestVersionForData(segments, + errorCorrectionLevel) + + // If no version is found, data cannot be stored + if (!bestVersion) { + throw new Error('The amount of data is too big to be stored in a QR Code') + } + + // If not specified, use min version as default + if (!version) { + version = bestVersion + + // Check if the specified version can contain the data + } else if (version < bestVersion) { + throw new Error('\n' + + 'The chosen QR Code version cannot contain this amount of data.\n' + + 'Minimum version required to store current data is: ' + bestVersion + '.\n' + ) + } + + var dataBits = createData(version, errorCorrectionLevel, segments) + + // Allocate matrix buffer + var moduleCount = Utils.getSymbolSize(version) + var modules = new BitMatrix(moduleCount) + + // Add function modules + setupFinderPattern(modules, version) + setupTimingPattern(modules) + setupAlignmentPattern(modules, version) + + // Add temporary dummy bits for format info just to set them as reserved. + // This is needed to prevent these bits from being masked by {@link MaskPattern.applyMask} + // since the masking operation must be performed only on the encoding region. + // These blocks will be replaced with correct values later in code. + setupFormatInfo(modules, errorCorrectionLevel, 0) + + if (version >= 7) { + setupVersionInfo(modules, version) + } + + // Add data codewords + setupData(modules, dataBits) + + if (isNaN(maskPattern)) { + // Find best mask pattern + maskPattern = MaskPattern.getBestMask(modules, + setupFormatInfo.bind(null, modules, errorCorrectionLevel)) + } + + // Apply mask pattern + MaskPattern.applyMask(maskPattern, modules) + + // Replace format info bits with correct values + setupFormatInfo(modules, errorCorrectionLevel, maskPattern) + + return { + modules: modules, + version: version, + errorCorrectionLevel: errorCorrectionLevel, + maskPattern: maskPattern, + segments: segments + } +} + +/** + * QR Code + * + * @param {String | Array} data Input data + * @param {Object} options Optional configurations + * @param {Number} options.version QR Code version + * @param {String} options.errorCorrectionLevel Error correction level + * @param {Function} options.toSJISFunc Helper func to convert utf8 to sjis + */ +exports.create = function create (data, options) { + if (typeof data === 'undefined' || data === '') { + throw new Error('No input text') + } + + var errorCorrectionLevel = ECLevel.M + var version + var mask + + if (typeof options !== 'undefined') { + // Use higher error correction level as default + errorCorrectionLevel = ECLevel.from(options.errorCorrectionLevel, ECLevel.M) + version = Version.from(options.version) + mask = MaskPattern.from(options.maskPattern) + + if (options.toSJISFunc) { + Utils.setToSJISFunction(options.toSJISFunc) + } + } + + return createSymbol(data, version, errorCorrectionLevel, mask) +} + +},{"../utils/buffer":34,"./alignment-pattern":9,"./bit-buffer":11,"./bit-matrix":12,"./error-correction-code":14,"./error-correction-level":15,"./finder-pattern":16,"./format-info":17,"./mask-pattern":20,"./mode":21,"./reed-solomon-encoder":25,"./segments":27,"./utils":28,"./version":30,"isarray":5}],25:[function(require,module,exports){ +var BufferUtil = require('../utils/buffer') +var Polynomial = require('./polynomial') +var Buffer = require('buffer').Buffer + +function ReedSolomonEncoder (degree) { + this.genPoly = undefined + this.degree = degree + + if (this.degree) this.initialize(this.degree) +} + +/** + * Initialize the encoder. + * The input param should correspond to the number of error correction codewords. + * + * @param {Number} degree + */ +ReedSolomonEncoder.prototype.initialize = function initialize (degree) { + // create an irreducible generator polynomial + this.degree = degree + this.genPoly = Polynomial.generateECPolynomial(this.degree) +} + +/** + * Encodes a chunk of data + * + * @param {Buffer} data Buffer containing input data + * @return {Buffer} Buffer containing encoded data + */ +ReedSolomonEncoder.prototype.encode = function encode (data) { + if (!this.genPoly) { + throw new Error('Encoder not initialized') + } + + // Calculate EC for this data block + // extends data size to data+genPoly size + var pad = BufferUtil.alloc(this.degree) + var paddedData = Buffer.concat([data, pad], data.length + this.degree) + + // The error correction codewords are the remainder after dividing the data codewords + // by a generator polynomial + var remainder = Polynomial.mod(paddedData, this.genPoly) + + // return EC data blocks (last n byte, where n is the degree of genPoly) + // If coefficients number in remainder are less than genPoly degree, + // pad with 0s to the left to reach the needed number of coefficients + var start = this.degree - remainder.length + if (start > 0) { + var buff = BufferUtil.alloc(this.degree) + remainder.copy(buff, start) + + return buff + } + + return remainder +} + +module.exports = ReedSolomonEncoder + +},{"../utils/buffer":34,"./polynomial":23,"buffer":2}],26:[function(require,module,exports){ +var numeric = '[0-9]+' +var alphanumeric = '[A-Z $%*+\\-./:]+' +var kanji = '(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|' + + '[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|' + + '[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|' + + '[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+' +kanji = kanji.replace(/u/g, '\\u') + +var byte = '(?:(?![A-Z0-9 $%*+\\-./:]|' + kanji + ')(?:.|[\r\n]))+' + +exports.KANJI = new RegExp(kanji, 'g') +exports.BYTE_KANJI = new RegExp('[^A-Z0-9 $%*+\\-./:]+', 'g') +exports.BYTE = new RegExp(byte, 'g') +exports.NUMERIC = new RegExp(numeric, 'g') +exports.ALPHANUMERIC = new RegExp(alphanumeric, 'g') + +var TEST_KANJI = new RegExp('^' + kanji + '$') +var TEST_NUMERIC = new RegExp('^' + numeric + '$') +var TEST_ALPHANUMERIC = new RegExp('^[A-Z0-9 $%*+\\-./:]+$') + +exports.testKanji = function testKanji (str) { + return TEST_KANJI.test(str) +} + +exports.testNumeric = function testNumeric (str) { + return TEST_NUMERIC.test(str) +} + +exports.testAlphanumeric = function testAlphanumeric (str) { + return TEST_ALPHANUMERIC.test(str) +} + +},{}],27:[function(require,module,exports){ +var Mode = require('./mode') +var NumericData = require('./numeric-data') +var AlphanumericData = require('./alphanumeric-data') +var ByteData = require('./byte-data') +var KanjiData = require('./kanji-data') +var Regex = require('./regex') +var Utils = require('./utils') +var dijkstra = require('dijkstrajs') + +/** + * Returns UTF8 byte length + * + * @param {String} str Input string + * @return {Number} Number of byte + */ +function getStringByteLength (str) { + return unescape(encodeURIComponent(str)).length +} + +/** + * Get a list of segments of the specified mode + * from a string + * + * @param {Mode} mode Segment mode + * @param {String} str String to process + * @return {Array} Array of object with segments data + */ +function getSegments (regex, mode, str) { + var segments = [] + var result + + while ((result = regex.exec(str)) !== null) { + segments.push({ + data: result[0], + index: result.index, + mode: mode, + length: result[0].length + }) + } + + return segments +} + +/** + * Extracts a series of segments with the appropriate + * modes from a string + * + * @param {String} dataStr Input string + * @return {Array} Array of object with segments data + */ +function getSegmentsFromString (dataStr) { + var numSegs = getSegments(Regex.NUMERIC, Mode.NUMERIC, dataStr) + var alphaNumSegs = getSegments(Regex.ALPHANUMERIC, Mode.ALPHANUMERIC, dataStr) + var byteSegs + var kanjiSegs + + if (Utils.isKanjiModeEnabled()) { + byteSegs = getSegments(Regex.BYTE, Mode.BYTE, dataStr) + kanjiSegs = getSegments(Regex.KANJI, Mode.KANJI, dataStr) + } else { + byteSegs = getSegments(Regex.BYTE_KANJI, Mode.BYTE, dataStr) + kanjiSegs = [] + } + + var segs = numSegs.concat(alphaNumSegs, byteSegs, kanjiSegs) + + return segs + .sort(function (s1, s2) { + return s1.index - s2.index + }) + .map(function (obj) { + return { + data: obj.data, + mode: obj.mode, + length: obj.length + } + }) +} + +/** + * Returns how many bits are needed to encode a string of + * specified length with the specified mode + * + * @param {Number} length String length + * @param {Mode} mode Segment mode + * @return {Number} Bit length + */ +function getSegmentBitsLength (length, mode) { + switch (mode) { + case Mode.NUMERIC: + return NumericData.getBitsLength(length) + case Mode.ALPHANUMERIC: + return AlphanumericData.getBitsLength(length) + case Mode.KANJI: + return KanjiData.getBitsLength(length) + case Mode.BYTE: + return ByteData.getBitsLength(length) + } +} + +/** + * Merges adjacent segments which have the same mode + * + * @param {Array} segs Array of object with segments data + * @return {Array} Array of object with segments data + */ +function mergeSegments (segs) { + return segs.reduce(function (acc, curr) { + var prevSeg = acc.length - 1 >= 0 ? acc[acc.length - 1] : null + if (prevSeg && prevSeg.mode === curr.mode) { + acc[acc.length - 1].data += curr.data + return acc + } + + acc.push(curr) + return acc + }, []) +} + +/** + * Generates a list of all possible nodes combination which + * will be used to build a segments graph. + * + * Nodes are divided by groups. Each group will contain a list of all the modes + * in which is possible to encode the given text. + * + * For example the text '12345' can be encoded as Numeric, Alphanumeric or Byte. + * The group for '12345' will contain then 3 objects, one for each + * possible encoding mode. + * + * Each node represents a possible segment. + * + * @param {Array} segs Array of object with segments data + * @return {Array} Array of object with segments data + */ +function buildNodes (segs) { + var nodes = [] + for (var i = 0; i < segs.length; i++) { + var seg = segs[i] + + switch (seg.mode) { + case Mode.NUMERIC: + nodes.push([seg, + { data: seg.data, mode: Mode.ALPHANUMERIC, length: seg.length }, + { data: seg.data, mode: Mode.BYTE, length: seg.length } + ]) + break + case Mode.ALPHANUMERIC: + nodes.push([seg, + { data: seg.data, mode: Mode.BYTE, length: seg.length } + ]) + break + case Mode.KANJI: + nodes.push([seg, + { data: seg.data, mode: Mode.BYTE, length: getStringByteLength(seg.data) } + ]) + break + case Mode.BYTE: + nodes.push([ + { data: seg.data, mode: Mode.BYTE, length: getStringByteLength(seg.data) } + ]) + } + } + + return nodes +} + +/** + * Builds a graph from a list of nodes. + * All segments in each node group will be connected with all the segments of + * the next group and so on. + * + * At each connection will be assigned a weight depending on the + * segment's byte length. + * + * @param {Array} nodes Array of object with segments data + * @param {Number} version QR Code version + * @return {Object} Graph of all possible segments + */ +function buildGraph (nodes, version) { + var table = {} + var graph = {'start': {}} + var prevNodeIds = ['start'] + + for (var i = 0; i < nodes.length; i++) { + var nodeGroup = nodes[i] + var currentNodeIds = [] + + for (var j = 0; j < nodeGroup.length; j++) { + var node = nodeGroup[j] + var key = '' + i + j + + currentNodeIds.push(key) + table[key] = { node: node, lastCount: 0 } + graph[key] = {} + + for (var n = 0; n < prevNodeIds.length; n++) { + var prevNodeId = prevNodeIds[n] + + if (table[prevNodeId] && table[prevNodeId].node.mode === node.mode) { + graph[prevNodeId][key] = + getSegmentBitsLength(table[prevNodeId].lastCount + node.length, node.mode) - + getSegmentBitsLength(table[prevNodeId].lastCount, node.mode) + + table[prevNodeId].lastCount += node.length + } else { + if (table[prevNodeId]) table[prevNodeId].lastCount = node.length + + graph[prevNodeId][key] = getSegmentBitsLength(node.length, node.mode) + + 4 + Mode.getCharCountIndicator(node.mode, version) // switch cost + } + } + } + + prevNodeIds = currentNodeIds + } + + for (n = 0; n < prevNodeIds.length; n++) { + graph[prevNodeIds[n]]['end'] = 0 + } + + return { map: graph, table: table } +} + +/** + * Builds a segment from a specified data and mode. + * If a mode is not specified, the more suitable will be used. + * + * @param {String} data Input data + * @param {Mode | String} modesHint Data mode + * @return {Segment} Segment + */ +function buildSingleSegment (data, modesHint) { + var mode + var bestMode = Mode.getBestModeForData(data) + + mode = Mode.from(modesHint, bestMode) + + // Make sure data can be encoded + if (mode !== Mode.BYTE && mode.bit < bestMode.bit) { + throw new Error('"' + data + '"' + + ' cannot be encoded with mode ' + Mode.toString(mode) + + '.\n Suggested mode is: ' + Mode.toString(bestMode)) + } + + // Use Mode.BYTE if Kanji support is disabled + if (mode === Mode.KANJI && !Utils.isKanjiModeEnabled()) { + mode = Mode.BYTE + } + + switch (mode) { + case Mode.NUMERIC: + return new NumericData(data) + + case Mode.ALPHANUMERIC: + return new AlphanumericData(data) + + case Mode.KANJI: + return new KanjiData(data) + + case Mode.BYTE: + return new ByteData(data) + } +} + +/** + * Builds a list of segments from an array. + * Array can contain Strings or Objects with segment's info. + * + * For each item which is a string, will be generated a segment with the given + * string and the more appropriate encoding mode. + * + * For each item which is an object, will be generated a segment with the given + * data and mode. + * Objects must contain at least the property "data". + * If property "mode" is not present, the more suitable mode will be used. + * + * @param {Array} array Array of objects with segments data + * @return {Array} Array of Segments + */ +exports.fromArray = function fromArray (array) { + return array.reduce(function (acc, seg) { + if (typeof seg === 'string') { + acc.push(buildSingleSegment(seg, null)) + } else if (seg.data) { + acc.push(buildSingleSegment(seg.data, seg.mode)) + } + + return acc + }, []) +} + +/** + * Builds an optimized sequence of segments from a string, + * which will produce the shortest possible bitstream. + * + * @param {String} data Input string + * @param {Number} version QR Code version + * @return {Array} Array of segments + */ +exports.fromString = function fromString (data, version) { + var segs = getSegmentsFromString(data, Utils.isKanjiModeEnabled()) + + var nodes = buildNodes(segs) + var graph = buildGraph(nodes, version) + var path = dijkstra.find_path(graph.map, 'start', 'end') + + var optimizedSegs = [] + for (var i = 1; i < path.length - 1; i++) { + optimizedSegs.push(graph.table[path[i]].node) + } + + return exports.fromArray(mergeSegments(optimizedSegs)) +} + +/** + * Splits a string in various segments with the modes which + * best represent their content. + * The produced segments are far from being optimized. + * The output of this function is only used to estimate a QR Code version + * which may contain the data. + * + * @param {string} data Input string + * @return {Array} Array of segments + */ +exports.rawSplit = function rawSplit (data) { + return exports.fromArray( + getSegmentsFromString(data, Utils.isKanjiModeEnabled()) + ) +} + +},{"./alphanumeric-data":10,"./byte-data":13,"./kanji-data":19,"./mode":21,"./numeric-data":22,"./regex":26,"./utils":28,"dijkstrajs":3}],28:[function(require,module,exports){ +var toSJISFunction +var CODEWORDS_COUNT = [ + 0, // Not used + 26, 44, 70, 100, 134, 172, 196, 242, 292, 346, + 404, 466, 532, 581, 655, 733, 815, 901, 991, 1085, + 1156, 1258, 1364, 1474, 1588, 1706, 1828, 1921, 2051, 2185, + 2323, 2465, 2611, 2761, 2876, 3034, 3196, 3362, 3532, 3706 +] + +/** + * Returns the QR Code size for the specified version + * + * @param {Number} version QR Code version + * @return {Number} size of QR code + */ +exports.getSymbolSize = function getSymbolSize (version) { + if (!version) throw new Error('"version" cannot be null or undefined') + if (version < 1 || version > 40) throw new Error('"version" should be in range from 1 to 40') + return version * 4 + 17 +} + +/** + * Returns the total number of codewords used to store data and EC information. + * + * @param {Number} version QR Code version + * @return {Number} Data length in bits + */ +exports.getSymbolTotalCodewords = function getSymbolTotalCodewords (version) { + return CODEWORDS_COUNT[version] +} + +/** + * Encode data with Bose-Chaudhuri-Hocquenghem + * + * @param {Number} data Value to encode + * @return {Number} Encoded value + */ +exports.getBCHDigit = function (data) { + var digit = 0 + + while (data !== 0) { + digit++ + data >>>= 1 + } + + return digit +} + +exports.setToSJISFunction = function setToSJISFunction (f) { + if (typeof f !== 'function') { + throw new Error('"toSJISFunc" is not a valid function.') + } + + toSJISFunction = f +} + +exports.isKanjiModeEnabled = function () { + return typeof toSJISFunction !== 'undefined' +} + +exports.toSJIS = function toSJIS (kanji) { + return toSJISFunction(kanji) +} + +},{}],29:[function(require,module,exports){ +/** + * Check if QR Code version is valid + * + * @param {Number} version QR Code version + * @return {Boolean} true if valid version, false otherwise + */ +exports.isValid = function isValid (version) { + return !isNaN(version) && version >= 1 && version <= 40 +} + +},{}],30:[function(require,module,exports){ +var Utils = require('./utils') +var ECCode = require('./error-correction-code') +var ECLevel = require('./error-correction-level') +var Mode = require('./mode') +var VersionCheck = require('./version-check') +var isArray = require('isarray') + +// Generator polynomial used to encode version information +var G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0) +var G18_BCH = Utils.getBCHDigit(G18) + +function getBestVersionForDataLength (mode, length, errorCorrectionLevel) { + for (var currentVersion = 1; currentVersion <= 40; currentVersion++) { + if (length <= exports.getCapacity(currentVersion, errorCorrectionLevel, mode)) { + return currentVersion + } + } + + return undefined +} + +function getReservedBitsCount (mode, version) { + // Character count indicator + mode indicator bits + return Mode.getCharCountIndicator(mode, version) + 4 +} + +function getTotalBitsFromDataArray (segments, version) { + var totalBits = 0 + + segments.forEach(function (data) { + var reservedBits = getReservedBitsCount(data.mode, version) + totalBits += reservedBits + data.getBitsLength() + }) + + return totalBits +} + +function getBestVersionForMixedData (segments, errorCorrectionLevel) { + for (var currentVersion = 1; currentVersion <= 40; currentVersion++) { + var length = getTotalBitsFromDataArray(segments, currentVersion) + if (length <= exports.getCapacity(currentVersion, errorCorrectionLevel, Mode.MIXED)) { + return currentVersion + } + } + + return undefined +} + +/** + * Returns version number from a value. + * If value is not a valid version, returns defaultValue + * + * @param {Number|String} value QR Code version + * @param {Number} defaultValue Fallback value + * @return {Number} QR Code version number + */ +exports.from = function from (value, defaultValue) { + if (VersionCheck.isValid(value)) { + return parseInt(value, 10) + } + + return defaultValue +} + +/** + * Returns how much data can be stored with the specified QR code version + * and error correction level + * + * @param {Number} version QR Code version (1-40) + * @param {Number} errorCorrectionLevel Error correction level + * @param {Mode} mode Data mode + * @return {Number} Quantity of storable data + */ +exports.getCapacity = function getCapacity (version, errorCorrectionLevel, mode) { + if (!VersionCheck.isValid(version)) { + throw new Error('Invalid QR Code version') + } + + // Use Byte mode as default + if (typeof mode === 'undefined') mode = Mode.BYTE + + // Total codewords for this QR code version (Data + Error correction) + var totalCodewords = Utils.getSymbolTotalCodewords(version) + + // Total number of error correction codewords + var ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel) + + // Total number of data codewords + var dataTotalCodewordsBits = (totalCodewords - ecTotalCodewords) * 8 + + if (mode === Mode.MIXED) return dataTotalCodewordsBits + + var usableBits = dataTotalCodewordsBits - getReservedBitsCount(mode, version) + + // Return max number of storable codewords + switch (mode) { + case Mode.NUMERIC: + return Math.floor((usableBits / 10) * 3) + + case Mode.ALPHANUMERIC: + return Math.floor((usableBits / 11) * 2) + + case Mode.KANJI: + return Math.floor(usableBits / 13) + + case Mode.BYTE: + default: + return Math.floor(usableBits / 8) + } +} + +/** + * Returns the minimum version needed to contain the amount of data + * + * @param {Segment} data Segment of data + * @param {Number} [errorCorrectionLevel=H] Error correction level + * @param {Mode} mode Data mode + * @return {Number} QR Code version + */ +exports.getBestVersionForData = function getBestVersionForData (data, errorCorrectionLevel) { + var seg + + var ecl = ECLevel.from(errorCorrectionLevel, ECLevel.M) + + if (isArray(data)) { + if (data.length > 1) { + return getBestVersionForMixedData(data, ecl) + } + + if (data.length === 0) { + return 1 + } + + seg = data[0] + } else { + seg = data + } + + return getBestVersionForDataLength(seg.mode, seg.getLength(), ecl) +} + +/** + * Returns version information with relative error correction bits + * + * The version information is included in QR Code symbols of version 7 or larger. + * It consists of an 18-bit sequence containing 6 data bits, + * with 12 error correction bits calculated using the (18, 6) Golay code. + * + * @param {Number} version QR Code version + * @return {Number} Encoded version info bits + */ +exports.getEncodedBits = function getEncodedBits (version) { + if (!VersionCheck.isValid(version) || version < 7) { + throw new Error('Invalid QR Code version') + } + + var d = version << 12 + + while (Utils.getBCHDigit(d) - G18_BCH >= 0) { + d ^= (G18 << (Utils.getBCHDigit(d) - G18_BCH)) + } + + return (version << 12) | d +} + +},{"./error-correction-code":14,"./error-correction-level":15,"./mode":21,"./utils":28,"./version-check":29,"isarray":5}],31:[function(require,module,exports){ +var Utils = require('./utils') + +function clearCanvas (ctx, canvas, size) { + ctx.clearRect(0, 0, canvas.width, canvas.height) + + if (!canvas.style) canvas.style = {} + canvas.height = size + canvas.width = size + canvas.style.height = size + 'px' + canvas.style.width = size + 'px' +} + +function getCanvasElement () { + try { + return document.createElement('canvas') + } catch (e) { + throw new Error('You need to specify a canvas element') + } +} + +exports.render = function render (qrData, canvas, options) { + var opts = options + var canvasEl = canvas + + if (typeof opts === 'undefined' && (!canvas || !canvas.getContext)) { + opts = canvas + canvas = undefined + } + + if (!canvas) { + canvasEl = getCanvasElement() + } + + opts = Utils.getOptions(opts) + var size = Utils.getImageWidth(qrData.modules.size, opts) + + var ctx = canvasEl.getContext('2d') + var image = ctx.createImageData(size, size) + Utils.qrToImageData(image.data, qrData, opts) + + clearCanvas(ctx, canvasEl, size) + ctx.putImageData(image, 0, 0) + + return canvasEl +} + +exports.renderToDataURL = function renderToDataURL (qrData, canvas, options) { + var opts = options + + if (typeof opts === 'undefined' && (!canvas || !canvas.getContext)) { + opts = canvas + canvas = undefined + } + + if (!opts) opts = {} + + var canvasEl = exports.render(qrData, canvas, opts) + + var type = opts.type || 'image/png' + var rendererOpts = opts.rendererOpts || {} + + return canvasEl.toDataURL(type, rendererOpts.quality) +} + +},{"./utils":33}],32:[function(require,module,exports){ +var Utils = require('./utils') + +function getColorAttrib (color, attrib) { + var alpha = color.a / 255 + var str = attrib + '="' + color.hex + '"' + + return alpha < 1 + ? str + ' ' + attrib + '-opacity="' + alpha.toFixed(2).slice(1) + '"' + : str +} + +function svgCmd (cmd, x, y) { + var str = cmd + x + if (typeof y !== 'undefined') str += ' ' + y + + return str +} + +function qrToPath (data, size, margin) { + var path = '' + var moveBy = 0 + var newRow = false + var lineLength = 0 + + for (var i = 0; i < data.length; i++) { + var col = Math.floor(i % size) + var row = Math.floor(i / size) + + if (!col && !newRow) newRow = true + + if (data[i]) { + lineLength++ + + if (!(i > 0 && col > 0 && data[i - 1])) { + path += newRow + ? svgCmd('M', col + margin, 0.5 + row + margin) + : svgCmd('m', moveBy, 0) + + moveBy = 0 + newRow = false + } + + if (!(col + 1 < size && data[i + 1])) { + path += svgCmd('h', lineLength) + lineLength = 0 + } + } else { + moveBy++ + } + } + + return path +} + +exports.render = function render (qrData, options, cb) { + var opts = Utils.getOptions(options) + var size = qrData.modules.size + var data = qrData.modules.data + var qrcodesize = size + opts.margin * 2 + + var bg = !opts.color.light.a + ? '' + : '' + + var path = + '' + + var viewBox = 'viewBox="' + '0 0 ' + qrcodesize + ' ' + qrcodesize + '"' + + var width = !opts.width ? '' : 'width="' + opts.width + '" height="' + opts.width + '" ' + + var svgTag = '' + bg + path + '\n' + + if (typeof cb === 'function') { + cb(null, svgTag) + } + + return svgTag +} + +},{"./utils":33}],33:[function(require,module,exports){ +function hex2rgba (hex) { + if (typeof hex === 'number') { + hex = hex.toString() + } + + if (typeof hex !== 'string') { + throw new Error('Color should be defined as hex string') + } + + var hexCode = hex.slice().replace('#', '').split('') + if (hexCode.length < 3 || hexCode.length === 5 || hexCode.length > 8) { + throw new Error('Invalid hex color: ' + hex) + } + + // Convert from short to long form (fff -> ffffff) + if (hexCode.length === 3 || hexCode.length === 4) { + hexCode = Array.prototype.concat.apply([], hexCode.map(function (c) { + return [c, c] + })) + } + + // Add default alpha value + if (hexCode.length === 6) hexCode.push('F', 'F') + + var hexValue = parseInt(hexCode.join(''), 16) + + return { + r: (hexValue >> 24) & 255, + g: (hexValue >> 16) & 255, + b: (hexValue >> 8) & 255, + a: hexValue & 255, + hex: '#' + hexCode.slice(0, 6).join('') + } +} + +exports.getOptions = function getOptions (options) { + if (!options) options = {} + if (!options.color) options.color = {} + + var margin = typeof options.margin === 'undefined' || + options.margin === null || + options.margin < 0 ? 4 : options.margin + + var width = options.width && options.width >= 21 ? options.width : undefined + var scale = options.scale || 4 + + return { + width: width, + scale: width ? 4 : scale, + margin: margin, + color: { + dark: hex2rgba(options.color.dark || '#000000ff'), + light: hex2rgba(options.color.light || '#ffffffff') + }, + type: options.type, + rendererOpts: options.rendererOpts || {} + } +} + +exports.getScale = function getScale (qrSize, opts) { + return opts.width && opts.width >= qrSize + opts.margin * 2 + ? opts.width / (qrSize + opts.margin * 2) + : opts.scale +} + +exports.getImageWidth = function getImageWidth (qrSize, opts) { + var scale = exports.getScale(qrSize, opts) + return Math.floor((qrSize + opts.margin * 2) * scale) +} + +exports.qrToImageData = function qrToImageData (imgData, qr, opts) { + var size = qr.modules.size + var data = qr.modules.data + var scale = exports.getScale(size, opts) + var symbolSize = Math.floor((size + opts.margin * 2) * scale) + var scaledMargin = opts.margin * scale + var palette = [opts.color.light, opts.color.dark] + + for (var i = 0; i < symbolSize; i++) { + for (var j = 0; j < symbolSize; j++) { + var posDst = (i * symbolSize + j) * 4 + var pxColor = opts.color.light + + if (i >= scaledMargin && j >= scaledMargin && + i < symbolSize - scaledMargin && j < symbolSize - scaledMargin) { + var iSrc = Math.floor((i - scaledMargin) / scale) + var jSrc = Math.floor((j - scaledMargin) / scale) + pxColor = palette[data[iSrc * size + jSrc] ? 1 : 0] + } + + imgData[posDst++] = pxColor.r + imgData[posDst++] = pxColor.g + imgData[posDst++] = pxColor.b + imgData[posDst] = pxColor.a + } + } +} + +},{}],34:[function(require,module,exports){ +(function (Buffer){ +/** + * Implementation of a subset of node.js Buffer methods for the browser. + * Based on https://github.com/feross/buffer + */ + +/* eslint-disable no-proto */ + +'use strict' + +var isArray = require('isarray') + +function typedArraySupport () { + // Can typed array instances be augmented? + try { + var arr = new Uint8Array(1) + arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }} + return arr.foo() === 42 + } catch (e) { + return false + } +} + +Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport() + +var K_MAX_LENGTH = Buffer.TYPED_ARRAY_SUPPORT + ? 0x7fffffff + : 0x3fffffff + +function Buffer (arg, offset, length) { + if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) { + return new Buffer(arg, offset, length) + } + + if (typeof arg === 'number') { + return allocUnsafe(this, arg) + } + + return from(this, arg, offset, length) +} + +if (Buffer.TYPED_ARRAY_SUPPORT) { + Buffer.prototype.__proto__ = Uint8Array.prototype + Buffer.__proto__ = Uint8Array + + // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97 + if (typeof Symbol !== 'undefined' && Symbol.species && + Buffer[Symbol.species] === Buffer) { + Object.defineProperty(Buffer, Symbol.species, { + value: null, + configurable: true, + enumerable: false, + writable: false + }) + } +} + +function checked (length) { + // Note: cannot use `length < K_MAX_LENGTH` here because that fails when + // length is NaN (which is otherwise coerced to zero.) + if (length >= K_MAX_LENGTH) { + throw new RangeError('Attempt to allocate Buffer larger than maximum ' + + 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes') + } + return length | 0 +} + +function isnan (val) { + return val !== val // eslint-disable-line no-self-compare +} + +function createBuffer (that, length) { + var buf + if (Buffer.TYPED_ARRAY_SUPPORT) { + buf = new Uint8Array(length) + buf.__proto__ = Buffer.prototype + } else { + // Fallback: Return an object instance of the Buffer class + buf = that + if (buf === null) { + buf = new Buffer(length) + } + buf.length = length + } + + return buf +} + +function allocUnsafe (that, size) { + var buf = createBuffer(that, size < 0 ? 0 : checked(size) | 0) + + if (!Buffer.TYPED_ARRAY_SUPPORT) { + for (var i = 0; i < size; ++i) { + buf[i] = 0 + } + } + + return buf +} + +function fromString (that, string) { + var length = byteLength(string) | 0 + var buf = createBuffer(that, length) + + var actual = buf.write(string) + + if (actual !== length) { + // Writing a hex string, for example, that contains invalid characters will + // cause everything after the first invalid character to be ignored. (e.g. + // 'abxxcd' will be treated as 'ab') + buf = buf.slice(0, actual) + } + + return buf +} + +function fromArrayLike (that, array) { + var length = array.length < 0 ? 0 : checked(array.length) | 0 + var buf = createBuffer(that, length) + for (var i = 0; i < length; i += 1) { + buf[i] = array[i] & 255 + } + return buf +} + +function fromArrayBuffer (that, array, byteOffset, length) { + if (byteOffset < 0 || array.byteLength < byteOffset) { + throw new RangeError('\'offset\' is out of bounds') + } + + if (array.byteLength < byteOffset + (length || 0)) { + throw new RangeError('\'length\' is out of bounds') + } + + var buf + if (byteOffset === undefined && length === undefined) { + buf = new Uint8Array(array) + } else if (length === undefined) { + buf = new Uint8Array(array, byteOffset) + } else { + buf = new Uint8Array(array, byteOffset, length) + } + + if (Buffer.TYPED_ARRAY_SUPPORT) { + // Return an augmented `Uint8Array` instance, for best performance + buf.__proto__ = Buffer.prototype + } else { + // Fallback: Return an object instance of the Buffer class + buf = fromArrayLike(that, buf) + } + + return buf +} + +function fromObject (that, obj) { + if (Buffer.isBuffer(obj)) { + var len = checked(obj.length) | 0 + var buf = createBuffer(that, len) + + if (buf.length === 0) { + return buf + } + + obj.copy(buf, 0, 0, len) + return buf + } + + if (obj) { + if ((typeof ArrayBuffer !== 'undefined' && + obj.buffer instanceof ArrayBuffer) || 'length' in obj) { + if (typeof obj.length !== 'number' || isnan(obj.length)) { + return createBuffer(that, 0) + } + return fromArrayLike(that, obj) + } + + if (obj.type === 'Buffer' && Array.isArray(obj.data)) { + return fromArrayLike(that, obj.data) + } + } + + throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.') +} + +function utf8ToBytes (string, units) { + units = units || Infinity + var codePoint + var length = string.length + var leadSurrogate = null + var bytes = [] + + for (var i = 0; i < length; ++i) { + codePoint = string.charCodeAt(i) + + // is surrogate component + if (codePoint > 0xD7FF && codePoint < 0xE000) { + // last char was a lead + if (!leadSurrogate) { + // no lead yet + if (codePoint > 0xDBFF) { + // unexpected trail + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + continue + } else if (i + 1 === length) { + // unpaired lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + continue + } + + // valid lead + leadSurrogate = codePoint + + continue + } + + // 2 leads in a row + if (codePoint < 0xDC00) { + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + leadSurrogate = codePoint + continue + } + + // valid surrogate pair + codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000 + } else if (leadSurrogate) { + // valid bmp char, but last char was a lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + } + + leadSurrogate = null + + // encode utf8 + if (codePoint < 0x80) { + if ((units -= 1) < 0) break + bytes.push(codePoint) + } else if (codePoint < 0x800) { + if ((units -= 2) < 0) break + bytes.push( + codePoint >> 0x6 | 0xC0, + codePoint & 0x3F | 0x80 + ) + } else if (codePoint < 0x10000) { + if ((units -= 3) < 0) break + bytes.push( + codePoint >> 0xC | 0xE0, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ) + } else if (codePoint < 0x110000) { + if ((units -= 4) < 0) break + bytes.push( + codePoint >> 0x12 | 0xF0, + codePoint >> 0xC & 0x3F | 0x80, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ) + } else { + throw new Error('Invalid code point') + } + } + + return bytes +} + +function byteLength (string) { + if (Buffer.isBuffer(string)) { + return string.length + } + if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' && + (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) { + return string.byteLength + } + if (typeof string !== 'string') { + string = '' + string + } + + var len = string.length + if (len === 0) return 0 + + return utf8ToBytes(string).length +} + +function blitBuffer (src, dst, offset, length) { + for (var i = 0; i < length; ++i) { + if ((i + offset >= dst.length) || (i >= src.length)) break + dst[i + offset] = src[i] + } + return i +} + +function utf8Write (buf, string, offset, length) { + return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) +} + +function from (that, value, offset, length) { + if (typeof value === 'number') { + throw new TypeError('"value" argument must not be a number') + } + + if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) { + return fromArrayBuffer(that, value, offset, length) + } + + if (typeof value === 'string') { + return fromString(that, value, offset) + } + + return fromObject(that, value) +} + +Buffer.prototype.write = function write (string, offset, length) { + // Buffer#write(string) + if (offset === undefined) { + length = this.length + offset = 0 + // Buffer#write(string, encoding) + } else if (length === undefined && typeof offset === 'string') { + length = this.length + offset = 0 + // Buffer#write(string, offset[, length]) + } else if (isFinite(offset)) { + offset = offset | 0 + if (isFinite(length)) { + length = length | 0 + } else { + length = undefined + } + } + + var remaining = this.length - offset + if (length === undefined || length > remaining) length = remaining + + if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { + throw new RangeError('Attempt to write outside buffer bounds') + } + + return utf8Write(this, string, offset, length) +} + +Buffer.prototype.slice = function slice (start, end) { + var len = this.length + start = ~~start + end = end === undefined ? len : ~~end + + if (start < 0) { + start += len + if (start < 0) start = 0 + } else if (start > len) { + start = len + } + + if (end < 0) { + end += len + if (end < 0) end = 0 + } else if (end > len) { + end = len + } + + if (end < start) end = start + + var newBuf + if (Buffer.TYPED_ARRAY_SUPPORT) { + newBuf = this.subarray(start, end) + // Return an augmented `Uint8Array` instance + newBuf.__proto__ = Buffer.prototype + } else { + var sliceLen = end - start + newBuf = new Buffer(sliceLen, undefined) + for (var i = 0; i < sliceLen; ++i) { + newBuf[i] = this[i + start] + } + } + + return newBuf +} + +Buffer.prototype.copy = function copy (target, targetStart, start, end) { + if (!start) start = 0 + if (!end && end !== 0) end = this.length + if (targetStart >= target.length) targetStart = target.length + if (!targetStart) targetStart = 0 + if (end > 0 && end < start) end = start + + // Copy 0 bytes; we're done + if (end === start) return 0 + if (target.length === 0 || this.length === 0) return 0 + + // Fatal error conditions + if (targetStart < 0) { + throw new RangeError('targetStart out of bounds') + } + if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds') + if (end < 0) throw new RangeError('sourceEnd out of bounds') + + // Are we oob? + if (end > this.length) end = this.length + if (target.length - targetStart < end - start) { + end = target.length - targetStart + start + } + + var len = end - start + var i + + if (this === target && start < targetStart && targetStart < end) { + // descending copy from end + for (i = len - 1; i >= 0; --i) { + target[i + targetStart] = this[i + start] + } + } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) { + // ascending copy from start + for (i = 0; i < len; ++i) { + target[i + targetStart] = this[i + start] + } + } else { + Uint8Array.prototype.set.call( + target, + this.subarray(start, start + len), + targetStart + ) + } + + return len +} + +Buffer.prototype.fill = function fill (val, start, end) { + // Handle string cases: + if (typeof val === 'string') { + if (typeof start === 'string') { + start = 0 + end = this.length + } else if (typeof end === 'string') { + end = this.length + } + if (val.length === 1) { + var code = val.charCodeAt(0) + if (code < 256) { + val = code + } + } + } else if (typeof val === 'number') { + val = val & 255 + } + + // Invalid ranges are not set to a default, so can range check early. + if (start < 0 || this.length < start || this.length < end) { + throw new RangeError('Out of range index') + } + + if (end <= start) { + return this + } + + start = start >>> 0 + end = end === undefined ? this.length : end >>> 0 + + if (!val) val = 0 + + var i + if (typeof val === 'number') { + for (i = start; i < end; ++i) { + this[i] = val + } + } else { + var bytes = Buffer.isBuffer(val) + ? val + : new Buffer(val) + var len = bytes.length + for (i = 0; i < end - start; ++i) { + this[i + start] = bytes[i % len] + } + } + + return this +} + +Buffer.concat = function concat (list, length) { + if (!isArray(list)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + + if (list.length === 0) { + return createBuffer(null, 0) + } + + var i + if (length === undefined) { + length = 0 + for (i = 0; i < list.length; ++i) { + length += list[i].length + } + } + + var buffer = allocUnsafe(null, length) + var pos = 0 + for (i = 0; i < list.length; ++i) { + var buf = list[i] + if (!Buffer.isBuffer(buf)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + buf.copy(buffer, pos) + pos += buf.length + } + return buffer +} + +Buffer.byteLength = byteLength + +Buffer.prototype._isBuffer = true +Buffer.isBuffer = function isBuffer (b) { + return !!(b != null && b._isBuffer) +} + +module.exports.alloc = function (size) { + var buffer = new Buffer(size) + buffer.fill(0) + return buffer +} + +module.exports.from = function (data) { + return new Buffer(data) +} + +}).call(this,require("buffer").Buffer) + +},{"buffer":2,"isarray":5}],35:[function(require,module,exports){ +"use strict"; + +var _AdapterBase2 = _interopRequireDefault(require("../../../api/AdapterBase")); + +var _ApproveAdminAdapter2 = _interopRequireDefault(require("../../../api/ApproveAdminAdapter")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +/** + * OvertimeCategoryAdapter + */ +var OvertimeCategoryAdapter = /*#__PURE__*/function (_AdapterBase) { + _inherits(OvertimeCategoryAdapter, _AdapterBase); + + var _super = _createSuper(OvertimeCategoryAdapter); + + function OvertimeCategoryAdapter() { + _classCallCheck(this, OvertimeCategoryAdapter); + + return _super.apply(this, arguments); + } + + _createClass(OvertimeCategoryAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'name']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Name' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['name', { + label: 'Name', + type: 'text', + validation: '' + }]]; + } + }]); + + return OvertimeCategoryAdapter; +}(_AdapterBase2["default"]); +/** + * EmployeeOvertimeAdminAdapter + */ + + +var EmployeeOvertimeAdminAdapter = /*#__PURE__*/function (_ApproveAdminAdapter) { + _inherits(EmployeeOvertimeAdminAdapter, _ApproveAdminAdapter); + + var _super2 = _createSuper(EmployeeOvertimeAdminAdapter); + + function EmployeeOvertimeAdminAdapter(endPoint, tab, filter, orderBy) { + var _this; + + _classCallCheck(this, EmployeeOvertimeAdminAdapter); + + _this = _super2.call(this, endPoint, tab, filter, orderBy); + _this.itemName = 'OvertimeRequest'; + _this.itemNameLower = 'overtimerequest'; + _this.modulePathName = 'overtime'; + return _this; + } + + _createClass(EmployeeOvertimeAdminAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'employee', 'category', 'start_time', 'end_time', 'project', 'status']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Employee' + }, { + sTitle: 'Category' + }, { + sTitle: 'Start Time' + }, { + sTitle: 'End Time' + }, { + sTitle: 'Project' + }, { + sTitle: 'Status' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['employee', { + label: 'Employee', + type: 'select2', + sort: 'none', + 'allow-null': false, + 'remote-source': ['Employee', 'id', 'first_name+last_name', 'getActiveSubordinateEmployees'] + }], ['category', { + label: 'Category', + type: 'select2', + 'allow-null': false, + 'remote-source': ['OvertimeCategory', 'id', 'name'] + }], ['start_time', { + label: 'Start Time', + type: 'datetime', + validation: '' + }], ['end_time', { + label: 'End Time', + type: 'datetime', + validation: '' + }], ['project', { + label: 'Project', + type: 'select2', + 'allow-null': true, + 'null=label': 'none', + 'remote-source': ['Project', 'id', 'name'] + }], ['notes', { + label: 'Notes', + type: 'textarea', + validation: 'none' + }]]; + } + }]); + + return EmployeeOvertimeAdminAdapter; +}(_ApproveAdminAdapter2["default"]); + +module.exports = { + OvertimeCategoryAdapter: OvertimeCategoryAdapter, + EmployeeOvertimeAdminAdapter: EmployeeOvertimeAdminAdapter +}; + +},{"../../../api/AdapterBase":39,"../../../api/ApproveAdminAdapter":40}],36:[function(require,module,exports){ +"use strict"; + +var _AdapterBase3 = _interopRequireDefault(require("../../../api/AdapterBase")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +/** + * ReportAdapter + */ +var ReportAdapter = /*#__PURE__*/function (_AdapterBase) { + _inherits(ReportAdapter, _AdapterBase); + + var _super = _createSuper(ReportAdapter); + + function ReportAdapter(endPoint, tab, filter, orderBy) { + var _this; + + _classCallCheck(this, ReportAdapter); + + _this = _super.call(this, endPoint, tab, filter, orderBy); + + _this._construct(); + + return _this; + } + + _createClass(ReportAdapter, [{ + key: "_construct", + value: function _construct() { + this._formFileds = [['id', { + label: 'ID', + type: 'hidden' + }], ['name', { + label: 'Name', + type: 'label', + validation: '' + }], ['parameters', { + label: 'Parameters', + type: 'fieldset', + validation: 'none' + }]]; + this.remoteFieldsExists = false; + } + }, { + key: "_initLocalFormFields", + value: function _initLocalFormFields() { + this._formFileds = [['id', { + label: 'ID', + type: 'hidden' + }], ['name', { + label: 'Name', + type: 'label', + validation: '' + }], ['parameters', { + label: 'Parameters', + type: 'fieldset', + validation: 'none' + }]]; + } + }, { + key: "setRemoteFieldExists", + value: function setRemoteFieldExists(val) { + this.remoteFieldsExists = val; + } + }, { + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'icon', 'name', 'details', 'parameters']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: '', + bSortable: false, + sWidth: '22px' + }, { + sTitle: 'Name', + sWidth: '30%' + }, { + sTitle: 'Details' + }, { + sTitle: 'Parameters', + bVisible: false + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return this._formFileds; + } + }, { + key: "processFormFieldsWithObject", + value: function processFormFieldsWithObject(object) { + var that = this; + + this._initLocalFormFields(); + + var len = this._formFileds.length; + var fieldIDsToDelete = []; + var fieldsToDelete = []; + this.remoteFieldsExists = false; + + for (var i = 0; i < len; i++) { + if (this._formFileds[i][1].type === 'fieldset') { + var newFields = JSON.parse(object[this._formFileds[i][0]]); + fieldsToDelete.push(this._formFileds[i][0]); + newFields.forEach(function (entry) { + that._formFileds.push(entry); + + if (entry[1]['remote-source'] !== undefined && entry[1]['remote-source'] != null) { + that.remoteFieldsExists = true; + } + }); + } + } + + var tempArray = []; + + that._formFileds.forEach(function (entry) { + if (jQuery.inArray(entry[0], fieldsToDelete) < 0) { + tempArray.push(entry); + } + }); + + that._formFileds = tempArray; + } + }, { + key: "renderForm", + value: function renderForm(object) { + var that = this; + this.processFormFieldsWithObject(object); + + if (this.remoteFieldsExists) { + var cb = function cb() { + that.renderFormNew(object); + }; + + this.initFieldMasterData(cb); + } else { + this.initFieldMasterData(); + that.renderFormNew(object); + } + + this.currentReport = object; + } + }, { + key: "renderFormNew", + value: function renderFormNew(object) { + var that = this; + var signatureIds = []; + + if (object == null || object === undefined) { + this.currentId = null; + } + + this.preRenderForm(object); + var formHtml = this.templates.formTemplate; + var html = ''; + var fields = this.getFormFields(); + + for (var i = 0; i < fields.length; i++) { + var metaField = this.getMetaFieldForRendering(fields[i][0]); + + if (metaField === '' || metaField === undefined) { + html += this.renderFormField(fields[i]); + } else { + var metaVal = object[metaField]; + + if (metaVal !== '' && metaVal != null && metaVal !== undefined && metaVal.trim() !== '') { + html += this.renderFormField(JSON.parse(metaVal)); + } else { + html += this.renderFormField(fields[i]); + } + } + } + + formHtml = formHtml.replace(/_id_/g, "".concat(this.getTableName(), "_submit")); + formHtml = formHtml.replace(/_fields_/g, html); + var $tempDomObj; + var randomFormId = this.generateRandom(14); + + if (!this.showFormOnPopup) { + $tempDomObj = $("#".concat(this.getTableName(), "Form")); + } else { + $tempDomObj = $('
    '); + $tempDomObj.attr('id', randomFormId); + } + + $tempDomObj.html(formHtml); + $tempDomObj.find('.datefield').datepicker({ + viewMode: 2 + }); + $tempDomObj.find('.timefield').datetimepicker({ + language: 'en', + pickDate: false + }); + $tempDomObj.find('.datetimefield').datetimepicker({ + language: 'en' + }); + $tempDomObj.find('.colorpick').colorpicker(); // $tempDomObj.find('.select2Field').select2(); + + $tempDomObj.find('.select2Field').each(function () { + $(this).select2().select2('val', $(this).find('option:eq(0)').val()); + }); + $tempDomObj.find('.select2Multi').each(function () { + $(this).select2().on('change', function (e) { + var parentRow = $(this).parents('.row'); + var height = parentRow.find('.select2-choices').height(); + parentRow.height(parseInt(height, 10)); + }); + }); + $tempDomObj.find('.signatureField').each(function () { + // $(this).data('signaturePad',new SignaturePad($(this))); + signatureIds.push($(this).attr('id')); + }); + + for (var _i = 0; _i < fields.length; _i++) { + if (fields[_i][1].type === 'datagroup') { + $tempDomObj.find("#".concat(fields[_i][0])).data('field', fields[_i]); + } + } + + if (this.showSave === false) { + $tempDomObj.find('.saveBtn').remove(); + } else { + $tempDomObj.find('.saveBtn').off(); + $tempDomObj.find('.saveBtn').data('modJs', this); + $tempDomObj.find('.saveBtn').on('click', function () { + if ($(this).data('modJs').saveSuccessItemCallback != null && $(this).data('modJs').saveSuccessItemCallback !== undefined) { + $(this).data('modJs').save($(this).data('modJs').retriveItemsAfterSave(), $(this).data('modJs').saveSuccessItemCallback); + } else { + $(this).data('modJs').save(); + } + + return false; + }); + } + + if (this.showCancel === false) { + $tempDomObj.find('.cancelBtn').remove(); + } else { + $tempDomObj.find('.cancelBtn').off(); + $tempDomObj.find('.cancelBtn').data('modJs', this); + $tempDomObj.find('.cancelBtn').on('click', function () { + $(this).data('modJs').cancel(); + return false; + }); + } + + if (!this.showFormOnPopup) { + $("#".concat(this.getTableName(), "Form")).show(); + $("#".concat(this.getTableName())).hide(); + + for (var _i2 = 0; _i2 < signatureIds.length; _i2++) { + $("#".concat(signatureIds[_i2])).data('signaturePad', new SignaturePad(document.getElementById(signatureIds[_i2]))); + } + + if (object !== undefined && object != null) { + this.fillForm(object); + } + } else { + // var tHtml = $tempDomObj.wrap('
    ').parent().html(); + // this.showMessage("Edit",tHtml,null,null,true); + this.showMessage('Edit', '', null, null, true); + $('#plainMessageModel .modal-body').html(''); + $('#plainMessageModel .modal-body').append($tempDomObj); + + for (var _i3 = 0; _i3 < signatureIds.length; _i3++) { + $("#".concat(signatureIds[_i3])).data('signaturePad', new SignaturePad(document.getElementById(signatureIds[_i3]))); + } + + if (object !== undefined && object != null) { + this.fillForm(object, "#".concat(randomFormId)); + } + } + + this.postRenderForm(object, $tempDomObj); + } + }, { + key: "getActionButtonsHtml", + value: function getActionButtonsHtml(id, data) { + var html = '
    '; + html = html.replace(/_id_/g, id); + html = html.replace(/_BASE_/g, this.baseUrl); + return html; + } + }, { + key: "addSuccessCallBack", + value: function addSuccessCallBack(callBackData, serverData) { + var fileName = serverData[0]; + var link; + + if (fileName.indexOf('https:') === 0) { + link = "Download Report "); + } else { + link = "Download Report "); + } + + link = link.replace(/_BASE_/g, this.baseUrl); + + if (this.currentReport.output === 'PDF' || this.currentReport.output === 'JSON') { + this.showMessage('Download Report', link); + } else { + if (serverData[1].length === 0) { + this.showMessage('Empty Report', 'There were no data for selected filters'); + return; + } + + var tableHtml = "".concat(link, "

    "); // Delete existing temp report table + + $('#tempReportTable').remove(); // this.showMessage("Report",tableHtml); + + $("#".concat(this.table)).html(tableHtml); + $("#".concat(this.table)).show(); + $("#".concat(this.table, "Form")).hide(); // Prepare headers + + var headers = []; + + for (var index in serverData[1]) { + headers.push({ + sTitle: serverData[1][index] + }); + } + + var data = serverData[2]; + var dataTableParams = { + oLanguage: { + sLengthMenu: '_MENU_ records per page' + }, + aaData: data, + aoColumns: headers, + bSort: false, + iDisplayLength: 15, + iDisplayStart: 0 + }; + $('#tempReportTable').dataTable(dataTableParams); + $('.dataTables_paginate ul').addClass('pagination'); + $('.dataTables_length').hide(); + $('.dataTables_filter input').addClass('form-control'); + $('.dataTables_filter input').attr('placeholder', 'Search'); + $('.dataTables_filter label').contents().filter(function () { + return this.nodeType === 3; + }).remove(); + $('.tableActionButton').tooltip(); + } + } + }, { + key: "fillForm", + value: function fillForm(object) { + var fields = this.getFormFields(); + + for (var i = 0; i < fields.length; i++) { + if (fields[i][1].type === 'label') { + $("#".concat(this.getTableName(), "Form #").concat(fields[i][0])).html(object[fields[i][0]]); + } else { + $("#".concat(this.getTableName(), "Form #").concat(fields[i][0])).val(object[fields[i][0]]); + } + } + } + }]); + + return ReportAdapter; +}(_AdapterBase3["default"]); + +var ReportGenAdapter = /*#__PURE__*/function (_AdapterBase2) { + _inherits(ReportGenAdapter, _AdapterBase2); + + var _super2 = _createSuper(ReportGenAdapter); + + function ReportGenAdapter() { + _classCallCheck(this, ReportGenAdapter); + + return _super2.apply(this, arguments); + } + + _createClass(ReportGenAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'name']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Name' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return []; + } + }, { + key: "getActionButtonsHtml", + value: function getActionButtonsHtml(id, data) { + var html = '
    '; + html = html.replace(/_id_/g, id); + html = html.replace(/_name_/g, data[1]); + html = html.replace(/_BASE_/g, this.baseUrl); + return html; + } + }]); + + return ReportGenAdapter; +}(_AdapterBase3["default"]); + +module.exports = { + ReportAdapter: ReportAdapter, + ReportGenAdapter: ReportGenAdapter +}; + +},{"../../../api/AdapterBase":39}],37:[function(require,module,exports){ +"use strict"; + +var _AdapterBase3 = _interopRequireDefault(require("../../../api/AdapterBase")); + +var _CustomFieldAdapter = _interopRequireDefault(require("../../../api/CustomFieldAdapter")); + +var _ApproveAdminAdapter2 = _interopRequireDefault(require("../../../api/ApproveAdminAdapter")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +/** + * ImmigrationDocumentAdapter + */ +var ImmigrationDocumentAdapter = /*#__PURE__*/function (_AdapterBase) { + _inherits(ImmigrationDocumentAdapter, _AdapterBase); + + var _super = _createSuper(ImmigrationDocumentAdapter); + + function ImmigrationDocumentAdapter() { + _classCallCheck(this, ImmigrationDocumentAdapter); + + return _super.apply(this, arguments); + } + + _createClass(ImmigrationDocumentAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'name', 'details', 'required', 'alert_on_missing', 'alert_before_expiry']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Name' + }, { + sTitle: 'Details' + }, { + sTitle: 'Compulsory' + }, { + sTitle: 'Alert If Not Found' + }, { + sTitle: 'Alert Before Expiry' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + var fields = [['id', { + label: 'ID', + type: 'hidden' + }], ['name', { + label: 'Name', + type: 'text', + validation: '' + }], ['details', { + label: 'Details', + type: 'textarea', + validation: 'none' + }], ['required', { + label: 'Compulsory', + type: 'select', + source: [['No', 'No'], ['Yes', 'Yes']] + }], ['alert_on_missing', { + label: 'Alert If Not Found', + type: 'select', + source: [['No', 'No'], ['Yes', 'Yes']] + }], ['alert_before_expiry', { + label: 'Alert Before Expiry', + type: 'select', + source: [['No', 'No'], ['Yes', 'Yes']] + }], ['alert_before_day_number', { + label: 'Days for Expiry Alert', + type: 'text', + validation: '' + }]]; + + for (var i = 0; i < this.customFields.length; i++) { + fields.push(this.customFields[i]); + } + + return fields; + } + }]); + + return ImmigrationDocumentAdapter; +}(_AdapterBase3["default"]); +/** + * EmployeeImmigrationAdapter + */ + + +var EmployeeImmigrationAdapter = /*#__PURE__*/function (_AdapterBase2) { + _inherits(EmployeeImmigrationAdapter, _AdapterBase2); + + var _super2 = _createSuper(EmployeeImmigrationAdapter); + + function EmployeeImmigrationAdapter() { + _classCallCheck(this, EmployeeImmigrationAdapter); + + return _super2.apply(this, arguments); + } + + _createClass(EmployeeImmigrationAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'employee', 'document', 'documentname', 'valid_until', 'status']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Employee' + }, { + sTitle: 'Document' + }, { + sTitle: 'Document Id' + }, { + sTitle: 'Valid Until' + }, { + sTitle: 'Status' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['employee', { + label: 'Employee', + type: 'select2', + 'remote-source': ['Employee', 'id', 'first_name+last_name'] + }], ['document', { + label: 'Document', + type: 'select2', + 'remote-source': ['ImmigrationDocument', 'id', 'name'] + }], ['documentname', { + label: 'Document Id', + type: 'text', + validation: '' + }], ['valid_until', { + label: 'Valid Until', + type: 'date', + validation: 'none' + }], ['status', { + label: 'Status', + type: 'select', + source: [['Active', 'Active'], ['Inactive', 'Inactive'], ['Draft', 'Draft']] + }], ['details', { + label: 'Details', + type: 'textarea', + validation: 'none' + }], ['attachment1', { + label: 'Attachment 1', + type: 'fileupload', + validation: 'none' + }], ['attachment2', { + label: 'Attachment 2', + type: 'fileupload', + validation: 'none' + }], ['attachment3', { + label: 'Attachment 3', + type: 'fileupload', + validation: 'none' + }]]; + } + }, { + key: "getFilters", + value: function getFilters() { + return [['employee', { + label: 'Employee', + type: 'select2', + 'remote-source': ['Employee', 'id', 'first_name+last_name'] + }]]; + } + }]); + + return EmployeeImmigrationAdapter; +}(_AdapterBase3["default"]); +/** + * EmployeeTravelRecordAdminAdapter + */ + + +var EmployeeTravelRecordAdminAdapter = /*#__PURE__*/function (_ApproveAdminAdapter) { + _inherits(EmployeeTravelRecordAdminAdapter, _ApproveAdminAdapter); + + var _super3 = _createSuper(EmployeeTravelRecordAdminAdapter); + + function EmployeeTravelRecordAdminAdapter(endPoint, tab, filter, orderBy) { + var _this; + + _classCallCheck(this, EmployeeTravelRecordAdminAdapter); + + _this = _super3.call(this, endPoint, tab, filter, orderBy); + _this.itemName = 'TravelRequest'; + _this.itemNameLower = 'travelrequest'; + _this.modulePathName = 'travel'; + return _this; + } + + _createClass(EmployeeTravelRecordAdminAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'employee', 'type', 'purpose', 'travel_from', 'travel_to', 'travel_date', 'status']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Employee' + }, { + sTitle: 'Travel Type' + }, { + sTitle: 'Purpose' + }, { + sTitle: 'From' + }, { + sTitle: 'To' + }, { + sTitle: 'Travel Date' + }, { + sTitle: 'Status' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return this.addCustomFields([['id', { + label: 'ID', + type: 'hidden' + }], ['employee', { + label: 'Employee', + type: 'select2', + sort: 'none', + 'allow-null': false, + 'remote-source': ['Employee', 'id', 'first_name+last_name', 'getActiveSubordinateEmployees'] + }], ['type', { + label: 'Means of Transportation', + type: 'select', + source: [['Plane', 'Plane'], ['Rail', 'Rail'], ['Taxi', 'Taxi'], ['Own Vehicle', 'Own Vehicle'], ['Rented Vehicle', 'Rented Vehicle'], ['Other', 'Other']] + }], ['purpose', { + label: 'Purpose of Travel', + type: 'textarea', + validation: '' + }], ['travel_from', { + label: 'Travel From', + type: 'text', + validation: '' + }], ['travel_to', { + label: 'Travel To', + type: 'text', + validation: '' + }], ['travel_date', { + label: 'Travel Date', + type: 'datetime', + validation: '' + }], ['return_date', { + label: 'Return Date', + type: 'datetime', + validation: '' + }], ['details', { + label: 'Notes', + type: 'textarea', + validation: 'none' + }], ['currency', { + label: 'Currency', + type: 'select2', + 'allow-null': false, + 'remote-source': ['CurrencyType', 'id', 'code'] + }], ['funding', { + label: 'Total Funding Proposed', + type: 'text', + validation: 'float', + "default": '0.00', + mask: '9{0,10}.99' + }], ['attachment1', { + label: 'Attachment', + type: 'fileupload', + validation: 'none' + }], ['attachment2', { + label: 'Attachment', + type: 'fileupload', + validation: 'none' + }], ['attachment3', { + label: 'Attachment', + type: 'fileupload', + validation: 'none' + }]]); + } + }]); + + return EmployeeTravelRecordAdminAdapter; +}(_ApproveAdminAdapter2["default"]); + +module.exports = { + ImmigrationDocumentAdapter: ImmigrationDocumentAdapter, + EmployeeImmigrationAdapter: EmployeeImmigrationAdapter, + EmployeeTravelRecordAdminAdapter: EmployeeTravelRecordAdminAdapter, + CustomFieldAdapter: _CustomFieldAdapter["default"] +}; + +},{"../../../api/AdapterBase":39,"../../../api/ApproveAdminAdapter":40,"../../../api/CustomFieldAdapter":43}],38:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +/* + Copyright (c) 2018 [Glacies UG, Berlin, Germany] (http://glacies.de) + Developer: Thilina Hasantha (http://lk.linkedin.com/in/thilinah | https://github.com/thilinah) + */ + +/** + * RequestCache + */ +var MemoryStorage = /*#__PURE__*/function () { + function MemoryStorage() { + _classCallCheck(this, MemoryStorage); + + this.data = {}; + } + + _createClass(MemoryStorage, [{ + key: "getItem", + value: function getItem(key) { + return this.data[key]; + } + }, { + key: "setItem", + value: function setItem(key, data) { + this.data[key] = data; + } + }, { + key: "removeAllByPrefix", + value: function removeAllByPrefix(prefix) { + var keys = Object.keys(this.data); + + for (var i = 0; i < keys.length; i++) { + if (keys[i].indexOf(prefix) > 0) { + delete this.data[keys[i]]; + } + } + } + }]); + + return MemoryStorage; +}(); + +var RequestCache = /*#__PURE__*/function () { + function RequestCache(storage) { + _classCallCheck(this, RequestCache); + + if (!storage) { + this.storage = new MemoryStorage(); + } else { + this.storage = storage; + } + } + + _createClass(RequestCache, [{ + key: "getKey", + value: function getKey(url, params) { + var key = "".concat(url, "|"); + + for (var index in params) { + key += "".concat(index, "=").concat(params[index], "|"); + } + + return key; + } + /* + invalidateTable(table) { + let key; + for (let i = 0; i < this.storage.length; i++) { + key = this.storage.key(i); + if (key.indexOf(`t=${table}`) > 0) { + this.storage.removeItem(key); + } + } + } + */ + + }, { + key: "invalidateTable", + value: function invalidateTable(table) { + this.storage.removeAllByPrefix("t=".concat(table)); + } + }, { + key: "getData", + value: function getData(key) { + var data = this.storage.getItem(key); + + if (!data) { + return null; + } + + return data; + } + }, { + key: "setData", + value: function setData(key, data) { + if (data.status !== undefined && data.status != null && data.status !== 'SUCCESS') { + return null; + } + + this.storage.setItem(key, data); + return data; + } + }]); + + return RequestCache; +}(); + +var _default = RequestCache; +exports["default"] = _default; + +},{}],39:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _IceApiClient = _interopRequireDefault(require("./IceApiClient")); + +var _ModuleBase2 = _interopRequireDefault(require("./ModuleBase")); + +var _RequestCache = _interopRequireDefault(require("../api-common/RequestCache")); + +var _MasterDataReader = _interopRequireDefault(require("./MasterDataReader")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var AdapterBase = /*#__PURE__*/function (_ModuleBase) { + _inherits(AdapterBase, _ModuleBase); + + var _super = _createSuper(AdapterBase); + + function AdapterBase(endPoint, tab, filter, orderBy) { + var _this; + + _classCallCheck(this, AdapterBase); + + _this = _super.call(this); + _this.moduleRelativeURL = null; + _this.tableData = []; + _this.sourceData = []; + _this.filter = null; + _this.origFilter = null; + _this.orderBy = null; + _this.currentElement = null; + + _this.initAdapter(endPoint, tab, filter, orderBy); + + return _this; + } + + _createClass(AdapterBase, [{ + key: "initAdapter", + value: function initAdapter(endPoint, tab, filter, orderBy) { + this.moduleRelativeURL = baseUrl; + this.table = endPoint; + + if (tab === undefined || tab === null) { + this.tab = endPoint; + } else { + this.tab = tab; + } + + if (filter === undefined || filter === null) { + this.filter = null; + } else { + this.filter = filter; + } + + this.origFilter = this.filter; + + if (orderBy === undefined || orderBy === null) { + this.orderBy = null; + } else { + this.orderBy = orderBy; + } + + this.trackEvent('initAdapter', tab); + this.requestCache = new _RequestCache["default"](); + } + }, { + key: "initMasterDataReader", + value: function initMasterDataReader() { + this.masterDataReader = new _MasterDataReader["default"](this); + } + }, { + key: "setupApiClient", + value: function setupApiClient(token) { + this.apiClient = new _IceApiClient["default"](this.apiUrl, token, window.CLIENT_BASE_URL, true); + } + }, { + key: "setApiUrl", + value: function setApiUrl(apiUrl) { + this.apiUrl = apiUrl; + } + }, { + key: "setFilter", + value: function setFilter(filter) { + this.filter = filter; + } + }, { + key: "preSetFilterExternal", + value: function preSetFilterExternal(filter) { + this.initialFilter = filter; + } + }, { + key: "setFilterExternal", + value: function setFilterExternal(_filter) { + var filter = _filter; + + if (filter === undefined || filter === null) { + filter = this.initialFilter; + } + + if (filter === undefined || filter === null) { + return; + } + + this.setFilter(filter); + this.filtersAlreadySet = true; + $("#".concat(this.getTableName(), "_resetFilters")).show(); + this.currentFilterString = this.getFilterString(filter); + } + }, { + key: "getFilter", + value: function getFilter() { + return this.filter; + } + }, { + key: "setOrderBy", + value: function setOrderBy(orderBy) { + this.orderBy = orderBy; + } + }, { + key: "getOrderBy", + value: function getOrderBy() { + return this.orderBy; + } + }, { + key: "getFile", + value: function getFile(name) { + var _this2 = this; + + this.trackEvent('file', name); + return new Promise(function (resolve, reject) { + $.getJSON(_this2.moduleRelativeURL, { + a: 'file', + name: name + }, function (data) { + if (data.status === 'SUCCESS') { + resolve(data.data); + } else { + reject(); + } + }).fail(function () { + return reject(); + }); + }); + } + /** + * @method add + * @param object {Array} object data to be added to database + * @param getFunctionCallBackData {Array} once a success is returned call get() function for this module with these parameters + * @param _callGetFunction {Boolean} if false the get function of the module will not be called (default: true) + * @param successCallback {Function} this will get called after success response + */ + + }, { + key: "add", + value: function add(object, getFunctionCallBackData, callGetFunction, successCallback) { + var that = this; + + if (callGetFunction === undefined || callGetFunction === null) { + // eslint-disable-next-line no-param-reassign + callGetFunction = true; + } + + $(object).attr('a', 'add'); + $(object).attr('t', this.table); + that.showLoader(); + this.requestCache.invalidateTable(this.table); + $.post(this.moduleRelativeURL, object, function (data) { + if (data.status === 'SUCCESS') { + that.addSuccessCallBack(getFunctionCallBackData, data.object, callGetFunction, successCallback, that); + } else { + that.addFailCallBack(getFunctionCallBackData, data.object); + } + }, 'json').fail(function (e) { + if (e.status === 403) { + that.showMessage('Access Forbidden', e.responseJSON.message); + } + }).always(function () { + that.hideLoader(); + }); + this.trackEvent('add', this.tab, this.table); + } + }, { + key: "addSuccessCallBack", + value: function addSuccessCallBack(callBackData, serverData, callGetFunction, successCallback, thisObject) { + if (callGetFunction) { + this.get(callBackData); + } + + this.initFieldMasterData(); + + if (successCallback !== undefined && successCallback !== null) { + successCallback.apply(thisObject, [serverData]); + } + + this.trackEvent('addSuccess', this.tab, this.table); + } + }, { + key: "addFailCallBack", + value: function addFailCallBack(callBackData, serverData) { + try { + this.closePlainMessage(); + } catch (e) {// No need to report + } + + this.showMessage('Error saving', serverData); + this.trackEvent('addFailed', this.tab, this.table); + } + }, { + key: "deleteObj", + value: function deleteObj(id, callBackData) { + var that = this; + that.showLoader(); + this.requestCache.invalidateTable(this.table); + $.post(this.moduleRelativeURL, { + t: this.table, + a: 'delete', + id: id + }, function (data) { + if (data.status === 'SUCCESS') { + that.deleteSuccessCallBack(callBackData, data.object); + } else { + that.deleteFailCallBack(callBackData, data.object); + } + }, 'json').fail(function (e) { + if (e.status === 403) { + that.showMessage('Access Forbidden', e.responseJSON.message); + } + }).always(function () { + that.hideLoader(); + }); + this.trackEvent('delete', this.tab, this.table); + } // eslint-disable-next-line no-unused-vars + + }, { + key: "deleteSuccessCallBack", + value: function deleteSuccessCallBack(callBackData, serverData) { + this.get(callBackData); + this.clearDeleteParams(); + } + }, { + key: "deleteFailCallBack", + value: function deleteFailCallBack(callBackData, serverData) { + this.clearDeleteParams(); + this.showMessage('Error Occurred while Deleting Item', serverData); + } + }, { + key: "get", + value: function get(callBackData) { + var that = this; + + if (this.getRemoteTable()) { + this.createTableServer(this.getTableName()); + $("#".concat(this.getTableName(), "Form")).hide(); + $("#".concat(this.getTableName())).show(); + return; + } + + var sourceMappingJson = JSON.stringify(this.getSourceMapping()); + var filterJson = ''; + + if (this.getFilter() !== null) { + filterJson = JSON.stringify(this.getFilter()); + } + + var orderBy = ''; + + if (this.getOrderBy() !== null) { + orderBy = this.getOrderBy(); + } + + sourceMappingJson = this.fixJSON(sourceMappingJson); + filterJson = this.fixJSON(filterJson); + that.showLoader(); + $.post(this.moduleRelativeURL, { + t: this.table, + a: 'get', + sm: sourceMappingJson, + ft: filterJson, + ob: orderBy + }, function (data) { + if (data.status === 'SUCCESS') { + that.getSuccessCallBack(callBackData, data.object); + } else { + that.getFailCallBack(callBackData, data.object); + } + }, 'json').fail(function (e) { + if (e.status === 403) { + that.showMessage('Access Forbidden', e.responseJSON.message); + } + }).always(function () { + that.hideLoader(); + }); + that.initFieldMasterData(); + this.trackEvent('get', this.tab, this.table); // var url = this.getDataUrl(); + // console.log(url); + } + }, { + key: "getDataUrl", + value: function getDataUrl(_columns) { + var sourceMappingJson = JSON.stringify(this.getSourceMapping()); + var columns = JSON.stringify(_columns); + var filterJson = ''; + + if (this.getFilter() !== null) { + filterJson = JSON.stringify(this.getFilter()); + } + + var orderBy = ''; + + if (this.getOrderBy() !== null) { + orderBy = this.getOrderBy(); + } + + var url = this.moduleRelativeURL.replace('service.php', 'data.php'); + url = "".concat(url, "?t=").concat(this.table); + url = "".concat(url, "&sm=").concat(this.fixJSON(sourceMappingJson)); + url = "".concat(url, "&cl=").concat(this.fixJSON(columns)); + url = "".concat(url, "&ft=").concat(this.fixJSON(filterJson)); + url = "".concat(url, "&ob=").concat(orderBy); + + if (this.isSubProfileTable()) { + url = "".concat(url, "&type=sub"); + } + + if (this.remoteTableSkipProfileRestriction()) { + url = "".concat(url, "&skip=1"); + } + + return url; + } + }, { + key: "isSubProfileTable", + value: function isSubProfileTable() { + return false; + } + }, { + key: "remoteTableSkipProfileRestriction", + value: function remoteTableSkipProfileRestriction() { + return false; + } + }, { + key: "preProcessTableData", + value: function preProcessTableData(row) { + return row; + } + }, { + key: "getSuccessCallBack", + value: function getSuccessCallBack(callBackData, serverData) { + var data = []; + var mapping = this.getDataMapping(); + + for (var i = 0; i < serverData.length; i++) { + var row = []; + + for (var j = 0; j < mapping.length; j++) { + row[j] = serverData[i][mapping[j]]; + } + + data.push(this.preProcessTableData(row)); + } + + this.sourceData = serverData; + + if (callBackData.callBack !== undefined && callBackData.callBack !== null) { + if (callBackData.callBackData === undefined || callBackData.callBackData === null) { + callBackData.callBackData = []; + } + + callBackData.callBackData.push(serverData); + callBackData.callBackData.push(data); + this.callFunction(callBackData.callBack, callBackData.callBackData); + } + + this.tableData = data; + + if (!(callBackData.noRender !== undefined && callBackData.noRender !== null && callBackData.noRender === true)) { + this.createTable(this.getTableName()); + $("#".concat(this.getTableName(), "Form")).hide(); + $("#".concat(this.getTableName())).show(); + } + } // eslint-disable-next-line no-unused-vars + + }, { + key: "getFailCallBack", + value: function getFailCallBack(callBackData, serverData) {} + }, { + key: "getElement", + value: function getElement(id, callBackData, clone) { + var that = this; + var sourceMappingJson = JSON.stringify(this.getSourceMapping()); + sourceMappingJson = this.fixJSON(sourceMappingJson); + that.showLoader(); + $.post(this.moduleRelativeURL, { + t: this.table, + a: 'getElement', + id: id, + sm: sourceMappingJson + }, function (data) { + if (data.status === 'SUCCESS') { + if (clone) { + delete data.object.id; + } + + this.currentElement = data.object; + that.getElementSuccessCallBack.apply(that, [callBackData, data.object]); + } else { + that.getElementFailCallBack.apply(that, [callBackData, data.object]); + } + }, 'json').fail(function (e) { + if (e.status === 403) { + that.showMessage('Access Forbidden', e.responseJSON.message); + } + }).always(function () { + that.hideLoader(); + }); + this.trackEvent('getElement', this.tab, this.table); + } + }, { + key: "getElementSuccessCallBack", + value: function getElementSuccessCallBack(callBackData, serverData) { + if (callBackData.callBack !== undefined && callBackData.callBack !== null) { + if (callBackData.callBackData === undefined || callBackData.callBackData === null) { + callBackData.callBackData = []; + } + + callBackData.callBackData.push(serverData); + this.callFunction(callBackData.callBack, callBackData.callBackData, this); + } + + this.currentElement = serverData; + + if (!(callBackData.noRender !== undefined && callBackData.noRender !== null && callBackData.noRender === true)) { + this.renderForm(serverData); + } + } // eslint-disable-next-line no-unused-vars + + }, { + key: "getElementFailCallBack", + value: function getElementFailCallBack(callBackData, serverData) {} + }, { + key: "getTableData", + value: function getTableData() { + return this.tableData; + } + }, { + key: "getTableName", + value: function getTableName() { + return this.tab; + } + }, { + key: "getFieldValues", + value: function getFieldValues(fieldMaster, callBackData) { + var that = this; + var method = ''; + var methodParams = ''; + + if (fieldMaster[3] !== undefined && fieldMaster[3] !== null) { + // eslint-disable-next-line prefer-destructuring + method = fieldMaster[3]; + } + + if (fieldMaster[4] !== undefined && fieldMaster[4] !== null) { + methodParams = JSON.stringify(fieldMaster[4]); + } + + var key = this.requestCache.getKey(this.moduleRelativeURL, { + t: fieldMaster[0], + key: fieldMaster[1], + value: fieldMaster[2], + method: method, + methodParams: methodParams, + a: 'getFieldValues' + }); + var cacheData = this.requestCache.getData(key); + + if (cacheData !== null && cacheData !== undefined) { + if (cacheData.status === 'SUCCESS') { + callBackData.callBackData.push(cacheData.data); + + if (callBackData.callBackSuccess !== null && callBackData.callBackSuccess !== undefined) { + callBackData.callBackData.push(callBackData.callBackSuccess); + } + + that.callFunction(callBackData.callBack, callBackData.callBackData); + } + } else { + var callbackWraper = function callbackWraper(data) { + if (data.status === 'SUCCESS') { + that.requestCache.setData(this.success.key, data); + var localCallBackData = callBackData; + localCallBackData.callBackData = [callBackData.callBackData[0]]; + localCallBackData.callBackData.push(data.data); + + if (localCallBackData.callBackSuccess !== null && localCallBackData.callBackSuccess !== undefined) { + localCallBackData.callBackData.push(callBackData.callBackSuccess); + } + + that.callFunction(localCallBackData.callBack, localCallBackData.callBackData); + } else if (data.message === 'Access violation') { + alert("Error : ".concat(callbackWraper.table, " ").concat(data.message)); + } + }; + + callbackWraper.key = key; // eslint-disable-next-line prefer-destructuring + + callbackWraper.table = fieldMaster[0]; + $.post(this.moduleRelativeURL, { + t: fieldMaster[0], + key: fieldMaster[1], + value: fieldMaster[2], + method: method, + methodParams: methodParams, + a: 'getFieldValues' + }, callbackWraper, 'json'); + } + } + }, { + key: "setAdminProfile", + value: function setAdminProfile(empId) { + try { + localStorage.clear(); + } catch (e) {// No need to report + } + + $.post(this.moduleRelativeURL, { + a: 'setAdminEmp', + empid: empId + }, function () { + // eslint-disable-next-line no-restricted-globals + top.location.href = clientUrl; + }, 'json'); + } + }, { + key: "customAction", + value: function customAction(subAction, module, request, callBackData, isPost) { + var that = this; + request = this.fixJSON(request); + + if (!isPost) { + $.getJSON(this.moduleRelativeURL, { + t: this.table, + a: 'ca', + sa: subAction, + mod: module, + req: request + }, function (data) { + if (data.status === 'SUCCESS') { + callBackData.callBackData.push(data.data); + that.callFunction(callBackData.callBackSuccess, callBackData.callBackData); + } else { + callBackData.callBackData.push(data.data); + that.callFunction(callBackData.callBackFail, callBackData.callBackData); + } + }); + } else { + $.post(this.moduleRelativeURL, { + t: this.table, + a: 'ca', + sa: subAction, + mod: module, + req: request + }, function (data) { + if (data.status === 'SUCCESS') { + callBackData.callBackData.push(data.data); + that.callFunction(callBackData.callBackSuccess, callBackData.callBackData); + } else { + callBackData.callBackData.push(data.data); + that.callFunction(callBackData.callBackFail, callBackData.callBackData); + } + }, 'json'); + } + } + }, { + key: "sendCustomRequest", + value: function sendCustomRequest(action, params, successCallback, failCallback) { + params.a = action; + $.post(this.moduleRelativeURL, params, function (data) { + if (data.status === 'SUCCESS') { + successCallback(data.data); + } else { + failCallback(data.data); + } + }, 'json'); + } + }, { + key: "getCustomActionUrl", + value: function getCustomActionUrl(action, params) { + params.a = action; + var str = ''; + + for (var key in params) { + if (params.hasOwnProperty(key)) { + if (str !== '') { + str += '&'; + } + + str += "".concat(key, "=").concat(params[key]); + } + } + + return "".concat(this.moduleRelativeURL, "?").concat(str); + } + }, { + key: "getClientDataUrl", + value: function getClientDataUrl() { + return "".concat(this.moduleRelativeURL.replace('service.php', ''), "data/"); + } + }, { + key: "getCustomUrl", + value: function getCustomUrl(str) { + return this.moduleRelativeURL.replace('service.php', str); + } + }]); + + return AdapterBase; +}(_ModuleBase2["default"]); + +var _default = AdapterBase; +exports["default"] = _default; + +},{"../api-common/RequestCache":38,"./IceApiClient":45,"./MasterDataReader":47,"./ModuleBase":48}],40:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _LogViewAdapter2 = _interopRequireDefault(require("./LogViewAdapter")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var ApproveAdminAdapter = /*#__PURE__*/function (_LogViewAdapter) { + _inherits(ApproveAdminAdapter, _LogViewAdapter); + + var _super = _createSuper(ApproveAdminAdapter); + + function ApproveAdminAdapter(endPoint, tab, filter, orderBy) { + _classCallCheck(this, ApproveAdminAdapter); + + return _super.call(this, endPoint, tab, filter, orderBy); + } + + _createClass(ApproveAdminAdapter, [{ + key: "getStatusFieldPosition", + value: function getStatusFieldPosition() { + var dm = this.getDataMapping(); + return dm.length - 1; + } + }, { + key: "openStatus", + value: function openStatus(id, status) { + $("#".concat(this.itemNameLower, "StatusModel")).modal('show'); + $("#".concat(this.itemNameLower, "_status")).html(this.getStatusOptions(status)); + $("#".concat(this.itemNameLower, "_status")).val(status); + this.statusChangeId = id; + } + }, { + key: "closeDialog", + value: function closeDialog() { + $("#".concat(this.itemNameLower, "StatusModel")).modal('hide'); + } + }, { + key: "changeStatus", + value: function changeStatus() { + var status = $("#".concat(this.itemNameLower, "_status")).val(); + var reason = $("#".concat(this.itemNameLower, "_reason")).val(); + + if (status == undefined || status == null || status == '') { + this.showMessage('Error', "Please select ".concat(this.itemNameLower, " status")); + return; + } + + var object = { + id: this.statusChangeId, + status: status, + reason: reason + }; + var reqJson = JSON.stringify(object); + var callBackData = []; + callBackData.callBackData = []; + callBackData.callBackSuccess = 'changeStatusSuccessCallBack'; + callBackData.callBackFail = 'changeStatusFailCallBack'; + this.customAction('changeStatus', "admin=".concat(this.modulePathName), reqJson, callBackData); + this.closeDialog(); + this.statusChangeId = null; + } + }, { + key: "changeStatusSuccessCallBack", + value: function changeStatusSuccessCallBack(callBackData) { + this.showMessage('Successful', "".concat(this.itemName, " Request status changed successfully")); + this.get([]); + } + }, { + key: "changeStatusFailCallBack", + value: function changeStatusFailCallBack(callBackData) { + this.showMessage('Error', "Error occurred while changing ".concat(this.itemName, " request status")); + } + }, { + key: "getActionButtonsHtml", + value: function getActionButtonsHtml(id, data) { + var editButton = ''; + var deleteButton = ''; + var statusChangeButton = ''; + var viewLogsButton = ''; + var html = '
    _edit__delete__status__logs_
    '; + var optiondata = this.getStatusOptionsData(data[this.getStatusFieldPosition()]); + + if (Object.keys(optiondata).length > 0) { + html = html.replace('_status_', statusChangeButton); + } else { + html = html.replace('_status_', ''); + } + + html = html.replace('_logs_', viewLogsButton); + + if (this.showDelete) { + html = html.replace('_delete_', deleteButton); + } else { + html = html.replace('_delete_', ''); + } + + if (this.showEdit) { + html = html.replace('_edit_', editButton); + } else { + html = html.replace('_edit_', ''); + } + + html = html.replace(/_id_/g, id); + html = html.replace(/_BASE_/g, this.baseUrl); + html = html.replace(/_cstatus_/g, data[this.getStatusFieldPosition()]); + return html; + } + }, { + key: "isSubProfileTable", + value: function isSubProfileTable() { + return this.user.user_level !== 'Admin' && this.user.user_level !== 'Restricted Admin'; + } + }, { + key: "getStatusOptionsData", + value: function getStatusOptionsData(currentStatus) { + var data = {}; + + if (currentStatus === 'Approved') {} else if (currentStatus === 'Pending') { + data.Approved = 'Approved'; + data.Rejected = 'Rejected'; + } else if (currentStatus === 'Rejected') {} else if (currentStatus === 'Cancelled') {} else if (currentStatus === 'Processing') {} else { + data['Cancellation Requested'] = 'Cancellation Requested'; + data.Cancelled = 'Cancelled'; + } + + return data; + } + }, { + key: "getStatusOptions", + value: function getStatusOptions(currentStatus) { + return this.generateOptions(this.getStatusOptionsData(currentStatus)); + } + }]); + + return ApproveAdminAdapter; +}(_LogViewAdapter2["default"]); + +var _default = ApproveAdminAdapter; +exports["default"] = _default; + +},{"./LogViewAdapter":46}],41:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _LogViewAdapter2 = _interopRequireDefault(require("./LogViewAdapter")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var ApproveModuleAdapter = /*#__PURE__*/function (_LogViewAdapter) { + _inherits(ApproveModuleAdapter, _LogViewAdapter); + + var _super = _createSuper(ApproveModuleAdapter); + + function ApproveModuleAdapter() { + _classCallCheck(this, ApproveModuleAdapter); + + return _super.apply(this, arguments); + } + + _createClass(ApproveModuleAdapter, [{ + key: "cancelRequest", + value: function cancelRequest(id) { + var object = {}; + object.id = id; + var reqJson = JSON.stringify(object); + var callBackData = []; + callBackData.callBackData = []; + callBackData.callBackSuccess = 'cancelSuccessCallBack'; + callBackData.callBackFail = 'cancelFailCallBack'; + this.customAction('cancel', "modules=".concat(this.modulePathName), reqJson, callBackData); + } // eslint-disable-next-line no-unused-vars + + }, { + key: "cancelSuccessCallBack", + value: function cancelSuccessCallBack(callBackData) { + this.showMessage('Successful', "".concat(this.itemName, " cancellation request sent")); + this.get([]); + } + }, { + key: "cancelFailCallBack", + value: function cancelFailCallBack(callBackData) { + this.showMessage("Error Occurred while cancelling ".concat(this.itemName), callBackData); + } + }, { + key: "getActionButtonsHtml", + value: function getActionButtonsHtml(id, data) { + var editButton = ''; + var deleteButton = ''; + var requestCancellationButton = ""); + var viewLogsButton = ''; + var html = '
    _edit__logs__delete_
    '; + html = html.replace('_logs_', viewLogsButton); + + if (this.showDelete) { + if (data[7] === 'Approved') { + html = html.replace('_delete_', requestCancellationButton); + } else if (data[7] === 'Pending' || this.user.user_level === 'Admin') { + html = html.replace('_delete_', deleteButton); + } else { + html = html.replace('_delete_', ''); + } + } else { + html = html.replace('_delete_', ''); + } + + if (this.showEdit) { + html = html.replace('_edit_', editButton); + } else { + html = html.replace('_edit_', ''); + } + + html = html.replace(/_id_/g, id); + html = html.replace(/_BASE_/g, this.baseUrl); + return html; + } + }]); + + return ApproveModuleAdapter; +}(_LogViewAdapter2["default"]); + +var _default = ApproveModuleAdapter; +exports["default"] = _default; + +},{"./LogViewAdapter":46}],42:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var axios = require('axios'); + +var CustomAction = /*#__PURE__*/function () { + function CustomAction(adapter) { + _classCallCheck(this, CustomAction); + + this.adapter = adapter; + } + + _createClass(CustomAction, [{ + key: "execute", + value: function execute(subAction, module, request, isPost) { + if (!isPost) { + return axios.get(this.adapter.moduleRelativeURL, { + params: { + t: this.adapter.table, + a: 'ca', + sa: subAction, + mod: module, + req: request + } + }); + } + + return axios.post(this.moduleRelativeURL, { + t: this.adapter.table, + a: 'ca', + sa: subAction, + mod: module, + req: request + }); + } + }]); + + return CustomAction; +}(); + +var _default = CustomAction; +exports["default"] = _default; + +},{"axios":98}],43:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _AdapterBase2 = _interopRequireDefault(require("./AdapterBase")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +/* + * CustomFieldAdapter + */ +var CustomFieldAdapter = /*#__PURE__*/function (_AdapterBase) { + _inherits(CustomFieldAdapter, _AdapterBase); + + var _super = _createSuper(CustomFieldAdapter); + + function CustomFieldAdapter(endPoint, tab, filter, orderBy) { + var _this; + + _classCallCheck(this, CustomFieldAdapter); + + _this = _super.call(this, endPoint, tab, filter, orderBy); + _this.tableType = ''; + return _this; + } + + _createClass(CustomFieldAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'name', 'display', 'display_order']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Name' + }, { + sTitle: 'Display Status' + }, { + sTitle: 'Priority' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['name', { + label: 'Name', + type: 'text', + validation: '' + }], ['display', { + label: 'Display Status', + type: 'select', + source: [['Form', 'Show'], ['Hidden', 'Hidden']] + }], ['field_type', { + label: 'Field Type', + type: 'select', + source: [['text', 'Text Field'], ['textarea', 'Multiline Text'], ['select', 'Dropdown'], ['select2', 'Searchable DropDown'], ['select2multi', 'Multi Select'], ['fileupload', 'File Upload'], ['date', 'Date'], ['datetime', 'Date Time'], ['time', 'Time'], ['signature', 'Signature']] + }], ['field_label', { + label: 'Field Label', + type: 'text', + validation: '' + }], ['field_validation', { + label: 'Validation', + type: 'select2', + validation: 'none', + sort: 'none', + 'null-label': 'Required', + 'allow-null': true, + source: [['none', 'None'], ['number', 'Number'], ['numberOrEmpty', 'Number or Empty'], ['float', 'Decimal'], ['email', 'Email'], ['emailOrEmpty', 'Email or Empty']] + }], ['field_options', { + label: 'Field Options', + type: 'datagroup', + form: [['label', { + label: 'Label', + type: 'text', + validation: '' + }], ['value', { + label: 'Value', + type: 'text', + validation: 'none' + }]], + html: '
    #_delete_##_edit_##_label_#:#_value_#
    ', + validation: 'none' + }], ['display_order', { + label: 'Priority', + type: 'text', + validation: 'number' + }], ['display_section', { + label: 'Display Section', + type: 'text', + validation: 'none' + }]]; + } + }, { + key: "setTableType", + value: function setTableType(type) { + this.tableType = type; + } + }, { + key: "doCustomValidation", + value: function doCustomValidation(params) { + var validateName = function validateName(str) { + var name = /^[a-z][a-z0-9._]+$/; + return str != null && name.test(str); + }; + + if (!validateName(params.name)) { + return 'Invalid name for custom field'; + } + + return null; + } + }, { + key: "forceInjectValuesBeforeSave", + value: function forceInjectValuesBeforeSave(params) { + var data = [params.name]; + var options = []; + var optionsData; + data.push({}); + data[1].label = params.field_label; + data[1].type = params.field_type; + data[1].validation = params.field_validation; + + if (['select', 'select2', 'select2multi'].indexOf(params.field_type) >= 0) { + optionsData = params.field_options === '' || params.field_options === undefined ? [] : JSON.parse(params.field_options); + + for (var index in optionsData) { + options.push([optionsData[index].value, optionsData[index].label]); + } + + data[1].source = options; + } + + if (params.field_validation == null || params.field_validation === undefined) { + params.field_validation = ''; + } + + params.data = JSON.stringify(data); + params.type = this.tableType; + return params; + } + }]); + + return CustomFieldAdapter; +}(_AdapterBase2["default"]); + +var _default = CustomFieldAdapter; +exports["default"] = _default; + +},{"./AdapterBase":39}],44:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +/* + Copyright (c) 2018 [Glacies UG, Berlin, Germany] (http://glacies.de) + Developer: Thilina Hasantha (http://lk.linkedin.com/in/thilinah | https://github.com/thilinah) + */ + +/* global tinyMCE */ +var ValidationRules = { + "float": function float(str) { + var floatstr = /^[-+]?[0-9]+(\.[0-9]+)?$/; + + if (str != null && str.match(floatstr)) { + return true; + } + + return false; + }, + number: function number(str) { + var numstr = /^[0-9]+$/; + + if (str != null && str.match(numstr)) { + return true; + } + + return false; + }, + numberOrEmpty: function numberOrEmpty(str) { + if (str === '') { + return true; + } + + var numstr = /^[0-9]+$/; + + if (str != null && str.match(numstr)) { + return true; + } + + return false; + }, + email: function email(str) { + var emailPattern = /^\s*[\w\-+_]+(\.[\w\-+_]+)*@[\w\-+_]+\.[\w\-+_]+(\.[\w\-+_]+)*\s*$/; + return str != null && emailPattern.test(str); + }, + emailOrEmpty: function emailOrEmpty(str) { + if (str === '') { + return true; + } + + var emailPattern = /^\s*[\w\-+_]+(\.[\w\-+_]+)*@[\w\-+_]+\.[\w\-+_]+(\.[\w\-+_]+)*\s*$/; + return str != null && emailPattern.test(str); + }, + username: function username(str) { + var username = /^[a-zA-Z0-9.-]+$/; + return str != null && username.test(str); + }, + input: function input(str) { + if (str != null && str.length > 0) { + return true; + } + + return false; + } +}; + +var FormValidation = /*#__PURE__*/function () { + function FormValidation(formId, validateAll, options) { + _classCallCheck(this, FormValidation); + + this.tempOptions = {}; + this.formId = formId; + this.formError = false; + this.formObject = null; + this.errorMessages = ''; + this.popupDialog = null; + this.validateAll = validateAll; + this.errorMap = []; + this.settings = { + thirdPartyPopup: null, + LabelErrorClass: false, + ShowPopup: true + }; + this.settings = jQuery.extend(this.settings, options); + this.inputTypes = ['text', 'radio', 'checkbox', 'file', 'password', 'select-one', 'select-multi', 'textarea', 'fileupload', 'signature']; + this.validator = ValidationRules; + } // eslint-disable-next-line no-unused-vars + + + _createClass(FormValidation, [{ + key: "clearError", + value: function clearError(formInput, overrideMessage) { + var id = formInput.attr('id'); + $("#".concat(this.formId, " #field_").concat(id)).removeClass('error'); + $("#".concat(this.formId, " #help_").concat(id)).html(''); + } // eslint-disable-next-line no-unused-vars + + }, { + key: "addError", + value: function addError(formInput, overrideMessage) { + this.formError = true; + + if (formInput.attr('message') != null) { + this.errorMessages += "".concat(formInput.attr('message'), "\n"); + this.errorMap[formInput.attr('name')] = formInput.attr('message'); + } else { + this.errorMap[formInput.attr('name')] = ''; + } + + var id = formInput.attr('id'); + var validation = formInput.attr('validation'); + var message = formInput.attr('validation'); + $("#".concat(this.formId, " #field_").concat(id)).addClass('error'); + + if (message === undefined || message == null || message === '') { + $("#".concat(this.formId, " #help_err_").concat(id)).html(message); + } else if (validation === undefined || validation == null || validation === '') { + $("#".concat(this.formId, " #help_err_").concat(id)).html('Required'); + } else if (validation === 'float' || validation === 'number') { + $("#".concat(this.formId, " #help_err_").concat(id)).html('Number required'); + } else if (validation === 'email') { + $("#".concat(this.formId, " #help_err_").concat(id)).html('Email required'); + } else { + $("#".concat(this.formId, " #help_err_").concat(id)).html('Required'); + } + } + }, { + key: "showErrors", + value: function showErrors() { + if (this.formError) { + if (this.settings.thirdPartyPopup !== undefined && this.settings.thirdPartyPopup != null) { + this.settings.thirdPartyPopup.alert(); + } else if (this.settings.ShowPopup === true) { + if (this.tempOptions.popupTop !== undefined && this.tempOptions.popupTop != null) { + this.alert('Errors Found', this.errorMessages, this.tempOptions.popupTop); + } else { + this.alert('Errors Found', this.errorMessages, -1); + } + } + } + } + }, { + key: "checkValues", + value: function checkValues(options) { + this.tempOptions = options; + var that = this; + this.formError = false; + this.errorMessages = ''; + this.formObject = {}; // eslint-disable-next-line consistent-return + + var validate = function validate(inputObject) { + var inputValue = null; + var name = inputObject.attr('name'); + + if (that.settings.LabelErrorClass !== false) { + $("label[for='".concat(name, "']")).removeClass(that.settings.LabelErrorClass); + } + + var id = inputObject.attr('id'); + var type = inputObject.attr('type'); + + if (inputObject.hasClass('select2-focusser') || inputObject.hasClass('select2-input')) { + return true; + } + + if (jQuery.inArray(type, that.inputTypes) >= 0) { + if (inputObject.hasClass('uploadInput')) { + inputValue = inputObject.attr('val'); + } else if (type === 'radio' || type === 'checkbox') { + inputValue = $("input[name='".concat(name, "']:checked")).val(); + } else if (inputObject.hasClass('select2Field')) { + if ($("#".concat(that.formId, " #").concat(id)).select2('data') != null && $("#".concat(that.formId, " #").concat(id)).select2('data') !== undefined) { + inputValue = $("#".concat(that.formId, " #").concat(id)).select2('data').id; + } else { + inputValue = ''; + } + } else if (inputObject.hasClass('select2Multi')) { + if ($("#".concat(that.formId, " #").concat(id)).select2('data') != null && $("#".concat(that.formId, " #").concat(id)).select2('data') !== undefined) { + var inputValueObjects = $("#".concat(that.formId, " #").concat(id)).select2('data'); + inputValue = []; + + for (var i = 0; i < inputValueObjects.length; i++) { + inputValue.push(inputValueObjects[i].id); + } + + inputValue = JSON.stringify(inputValue); + } else { + inputValue = ''; + } + } else if (inputObject.hasClass('signatureField')) { + if ($("#".concat(that.formId, " #").concat(id)).data('signaturePad').isEmpty()) { + inputValue = ''; + } else { + inputValue = $("#".concat(id)).data('signaturePad').toDataURL(); + } + } else if (inputObject.hasClass('simplemde')) { + inputValue = $("#".concat(that.formId, " #").concat(id)).data('simplemde').value(); + } else if (inputObject.hasClass('code')) { + inputValue = $("#".concat(that.formId, " #").concat(id)).data('codemirror').getValue(); + } else if (inputObject.hasClass('tinymce')) { + inputValue = tinyMCE.get(id).getContent({ + format: 'raw' + }); + } else { + inputValue = inputObject.val(); + } + + var validation = inputObject.attr('validation'); + var valid = false; + + if (validation !== undefined && validation != null && that.validator[validation] !== undefined && that.validator[validation] != null) { + valid = that.validator[validation](inputValue); + } else { + if (that.validateAll) { + if (validation !== undefined && validation != null && validation === 'none') { + valid = true; + } else { + valid = that.validator.input(inputValue); + } + } else { + valid = true; + } + + that.formObject[id] = inputValue; + } + + if (!valid) { + that.addError(inputObject, null); + } else { + that.clearError(inputObject, null); + that.formObject[id] = inputValue; + } + } + }; + + var inputs = $("#".concat(this.formId, " :input")); + inputs.each(function () { + validate($(this)); + }); + inputs = $("#".concat(this.formId, " .uploadInput")); + inputs.each(function () { + validate($(this)); + }); + this.showErrors(); + this.tempOptions = {}; + return !this.formError; + } + }, { + key: "getFormParameters", + value: function getFormParameters() { + return this.formObject; + } + }, { + key: "alert", + value: function (_alert) { + function alert(_x, _x2) { + return _alert.apply(this, arguments); + } + + alert.toString = function () { + return _alert.toString(); + }; + + return alert; + }(function (title, text) { + alert(text); + }) + }], [{ + key: "getValidationRules", + value: function getValidationRules() { + return ValidationRules; + } + }]); + + return FormValidation; +}(); + +var _default = FormValidation; +exports["default"] = _default; + +},{}],45:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var axios = require('axios'); + +var IceApiClient = /*#__PURE__*/function () { + function IceApiClient(baseUrl, token, clientBaseUrl) { + var legacyApiWrapper = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true; + + _classCallCheck(this, IceApiClient); + + this.baseUrl = baseUrl; + this.token = token; + this.clientBaseUrl = clientBaseUrl; + this.legacyApiWrapper = legacyApiWrapper; + } + + _createClass(IceApiClient, [{ + key: "get", + value: function get(endpoint) { + if (this.legacyApiWrapper) { + var url = "".concat(this.clientBaseUrl, "api/index.php?token=").concat(this.token, "&method=get&url=/").concat(endpoint); + return axios.get(url); + } + + return axios.get(this.baseUrl + endpoint, { + headers: { + Authorization: "Bearer ".concat(this.token) + } + }); + } + }]); + + return IceApiClient; +}(); + +var _default = IceApiClient; +exports["default"] = _default; + +},{"axios":98}],46:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _AdapterBase2 = _interopRequireDefault(require("./AdapterBase")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var LogViewAdapter = /*#__PURE__*/function (_AdapterBase) { + _inherits(LogViewAdapter, _AdapterBase); + + var _super = _createSuper(LogViewAdapter); + + function LogViewAdapter() { + _classCallCheck(this, LogViewAdapter); + + return _super.apply(this, arguments); + } + + _createClass(LogViewAdapter, [{ + key: "getLogs", + value: function getLogs(id) { + var object = { + id: id + }; + var reqJson = JSON.stringify(object); + var callBackData = []; + callBackData.callBackData = []; + callBackData.callBackSuccess = 'getLogsSuccessCallBack'; + callBackData.callBackFail = 'getLogsFailCallBack'; + this.customAction('getLogs', "admin=".concat(this.modulePathName), reqJson, callBackData); + } + }, { + key: "getLogsSuccessCallBack", + value: function getLogsSuccessCallBack(callBackData) { + var tableLog = '_days_
    Notes
    '; + var rowLog = '_date_  _status_
    _note_'; + var logs = callBackData.data; + var html = ''; + var rowsLogs = ''; + + for (var i = 0; i < logs.length; i++) { + var trow = rowLog; + trow = trow.replace(/_date_/g, logs[i].time); + trow = trow.replace(/_status_/g, "".concat(logs[i].status_from, " -> ").concat(logs[i].status_to)); + trow = trow.replace(/_note_/g, logs[i].note); + rowsLogs += trow; + } + + if (rowsLogs !== '') { + tableLog = tableLog.replace('_days_', rowsLogs); + html += tableLog; + } + + this.showMessage('Logs', html); + timeUtils.convertToRelativeTime($('.logTime')); + } // eslint-disable-next-line no-unused-vars + + }, { + key: "getLogsFailCallBack", + value: function getLogsFailCallBack(callBackData) { + this.showMessage('Error', 'Error occured while getting data'); + } + }]); + + return LogViewAdapter; +}(_AdapterBase2["default"]); + +var _default = LogViewAdapter; +exports["default"] = _default; + +},{"./AdapterBase":39}],47:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var axios = require('axios'); + +var MasterDataReader = /*#__PURE__*/function () { + function MasterDataReader(adapter) { + _classCallCheck(this, MasterDataReader); + + this.adapter = adapter; + this.requestCache = this.adapter.requestCache; + } + + _createClass(MasterDataReader, [{ + key: "fetchMasterData", + value: function fetchMasterData(fieldMaster) { + var _this = this; + + var method = ''; + var methodParams = ''; + + if (fieldMaster[3] != null) { + method = fieldMaster[3]; + } + + if (fieldMaster[4] != null) { + methodParams = JSON.stringify(fieldMaster[4]); + } + + var key = this.requestCache.getKey(this.adapter.moduleRelativeURL, { + t: fieldMaster[0], + key: fieldMaster[1], + value: fieldMaster[2], + method: method, + methodParams: methodParams, + a: 'getFieldValues' + }); + var cacheData = this.requestCache.getData(key); + + if (cacheData != null && cacheData.status === 'SUCCESS') { + return new Promise(function (resolve, reject) { + return resolve(cacheData.data); + }); + } + + var urlData = { + t: fieldMaster[0], + key: fieldMaster[1], + value: fieldMaster[2], + method: method, + methodParams: methodParams, + a: 'getFieldValues' + }; + var url = "".concat(this.adapter.moduleRelativeURL, "?_url=1"); + + for (var index in urlData) { + url = "".concat(url, "&").concat(index, "=").concat(encodeURIComponent(urlData[index])); + } // TODO - Should be a get request + + + return axios.post(url, {}).then(function (response) { + if (response.data.status !== 'SUCCESS') { + throw Error("Response for ".concat(key, " failed")); + } + + _this.requestCache.setData(key, response.data); + + return response.data.data; + }); + } + }, { + key: "updateAllMasterData", + value: function updateAllMasterData() { + var _this2 = this; + + var remoteSourceFields = this.adapter.getRemoteSourceFields(); + var promiseList = []; + + for (var i = 0; i < remoteSourceFields.length; i++) { + var fieldRemote = remoteSourceFields[i]; + + if (fieldRemote[1]['remote-source'] !== undefined && fieldRemote[1]['remote-source'] != null) { + (function () { + var key = "".concat(fieldRemote[1]['remote-source'][0], "_").concat(fieldRemote[1]['remote-source'][1], "_").concat(fieldRemote[1]['remote-source'][2]); + + if (fieldRemote[1]['remote-source'].length === 4) { + key = "".concat(key, "_").concat(fieldRemote[1]['remote-source'][3]); + } + + var masterDataPromise = _this2.fetchMasterData(fieldRemote[1]['remote-source']).then(function (data) { + _this2.adapter.fieldMasterData[key] = data; + }); + + promiseList.push(masterDataPromise); + })(); + } + } + + return Promise.all(promiseList); + } + }]); + + return MasterDataReader; +}(); + +var _default = MasterDataReader; +exports["default"] = _default; + +},{"axios":98}],48:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _FormValidation = _interopRequireDefault(require("./FormValidation")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +/** + * The base class for providing core functions to all module classes. + * @class Base.js + */ +var ModuleBase = /*#__PURE__*/function () { + function ModuleBase() { + _classCallCheck(this, ModuleBase); + + this.deleteParams = {}; + this.createRemoteTable = false; + this.instanceId = 'None'; + this.ga = []; + this.showAddNew = true; + this.showEdit = true; + this.showDelete = true; + this.showSave = true; + this.showCancel = true; + this.showFormOnPopup = false; + this.filtersAlreadySet = false; + this.currentFilterString = ''; + this.sorting = 0; + this.settings = {}; + this.translations = {}; + this.customFields = []; + this.csrfRequired = false; + this.fieldTemplates = null; + this.templates = null; + this.customTemplates = null; + this.emailTemplates = null; + this.fieldMasterData = {}; + this.fieldMasterDataKeys = {}; + this.fieldMasterDataCallback = null; + this.sourceMapping = null; + this.currentId = null; + this.currentElement = null; + this.user = null; + this.currentProfile = null; + this.permissions = {}; + this.baseUrl = null; + this.clientUrl = null; + this.that = this; + } // eslint-disable-next-line no-unused-vars + + + _createClass(ModuleBase, [{ + key: "init", + value: function init(appName, currentView, dataUrl, permissions) {} + }, { + key: "initForm", + value: function initForm() {} + }, { + key: "setObjectTypeName", + value: function setObjectTypeName(objectTypeName) { + this.objectTypeName = objectTypeName; + } + /** + * Some browsers do not support sending JSON in get parameters. Set this to true to avoid sending JSON + * @method setNoJSONRequests + * @param val {Boolean} + */ + + }, { + key: "setNoJSONRequests", + value: function setNoJSONRequests(val) { + this.noJSONRequests = val; + } + }, { + key: "setPermissions", + value: function setPermissions(permissions) { + this.permissions = permissions; + } + }, { + key: "sortingStarted", + value: function sortingStarted(val) { + this.sorting = val; + } + /** + * Check if the current user has a permission + * @method checkPermission + * @param permission {String} + * @example + * this.checkPermission("Upload/Delete Profile Image") + */ + + }, { + key: "checkPermission", + value: function checkPermission(permission) { + if (this.permissions[permission] === undefined || this.permissions[permission] == null || this.permissions[permission] === 'Yes') { + return 'Yes'; + } + + return this.permissions[permission]; + } + }, { + key: "setBaseUrl", + value: function setBaseUrl(url) { + this.baseUrl = url; + } + }, { + key: "setClientUrl", + value: function setClientUrl(url) { + this.clientUrl = url; + } + }, { + key: "setUser", + value: function setUser(user) { + this.user = user; + } + }, { + key: "getUser", + value: function getUser() { + return this.user; + } + }, { + key: "setInstanceId", + value: function setInstanceId(id) { + this.instanceId = id; + } + }, { + key: "setCSRFRequired", + value: function setCSRFRequired(val) { + this.csrfRequired = val; + } + }, { + key: "scrollToTop", + value: function scrollToTop() { + $('html, body').animate({ + scrollTop: 0 + }, 'fast'); + } + }, { + key: "scrollToBottom", + value: function scrollToBottom() { + $('html, body').animate({ + scrollTop: $(document).height() + }, 'slow'); + } + }, { + key: "scrollToElement", + value: function scrollToElement(element) { + if ($(window).height() <= element.offset().top) { + $('html, body').animate({ + scrollTop: element.offset().top + }, 'slow'); + } + } + }, { + key: "scrollToElementBottom", + value: function scrollToElementBottom(element) { + if ($(window).height() <= element.offset().top + element.height()) { + $('html, body').animate({ + scrollTop: element.offset().top + element.height() + }, 'slow'); + } + } + }, { + key: "setTranslations", + value: function setTranslations(txt) { + this.translations = txt.messages['']; + } + }, { + key: "setTranslationsSubModules", + value: function setTranslationsSubModules(translations) { + this.translations = translations; + } + }, { + key: "gt", + value: function gt(key) { + if (this.translations[key] === undefined || this.translations[key] === null) { + console.log("Tr:".concat(key)); + return key; + } + + return this.translations[key][0]; + } + }, { + key: "addToLangTerms", + value: function addToLangTerms(key) { + var termsArr; + var terms = localStorage.getItem('terms'); + + if (terms === undefined) { + termsArr = {}; + } else { + try { + termsArr = JSON.parse(terms); + } catch (e) { + termsArr = {}; + } + } + + if (this.translations[key] === undefined) { + termsArr[key] = key; + localStorage.setItem('terms', JSON.stringify(termsArr)); + } + } + /** + * If this method returned false the action buttons in data table for modules will not be displayed. + * Override this method in module lib.js to hide action buttons + * @method showActionButtons + * @param permission {String} + * @example + * EmployeeLeaveEntitlementAdapter.method('showActionButtons() { + * return false; + * } + */ + + }, { + key: "showActionButtons", + value: function showActionButtons() { + return true; + } + }, { + key: "trackEvent", + value: function trackEvent(action, label, value) { + try { + if (label === undefined || label == null) { + this.ga.push(['_trackEvent', this.instanceId, action]); + } else if (value === undefined || value == null) { + this.ga.push(['_trackEvent', this.instanceId, action, label]); + } else { + this.ga.push(['_trackEvent', this.instanceId, action, label, value]); + } + } catch (e) {// Do nothing + } + } + }, { + key: "setCurrentProfile", + value: function setCurrentProfile(currentProfile) { + this.currentProfile = currentProfile; + } + /** + * Get the current profile + * @method getCurrentProfile + * @returns Profile of the current user if the profile is not switched if not switched profile + */ + + }, { + key: "getCurrentProfile", + value: function getCurrentProfile() { + return this.currentProfile; + } + /** + * Retrive data required to create select boxes for add new /edit forms for a given module. This is called when loading the module + * @method initFieldMasterData + * @param callback {Function} call this once loading completed + * @param callback {Function} call this once all field loading completed. This indicate that the form can be displayed saftly + * @example + * ReportAdapter.method('renderForm(object) { + * var that = this; + * this.processFormFieldsWithObject(object); + * var cb = function(){ + * that.super.renderForm(object); + * }; + * this.initFieldMasterData(cb); + * } + */ + + }, { + key: "initFieldMasterData", + value: function initFieldMasterData(callback, loadAllCallback, loadAllCallbackData) { + this.fieldMasterData = {}; + this.fieldMasterDataKeys = {}; + this.fieldMasterDataCallback = loadAllCallback; + this.fieldMasterDataCallbackData = loadAllCallbackData; + var remoteSourceFields = this.getRemoteSourceFields(); + + for (var i = 0; i < remoteSourceFields.length; i++) { + var fieldRemote = remoteSourceFields[i]; + + if (fieldRemote[1]['remote-source'] !== undefined && fieldRemote[1]['remote-source'] != null) { + // let key = `${fieldRemote[1]['remote-source'][0]}_${fieldRemote[1]['remote-source'][1]}_${fieldRemote[1]['remote-source'][2]}`; + // if (fieldRemote[1]['remote-source'].length === 4) { + // key = `${key}_${fieldRemote[1]['remote-source'][3]}`; + // } + var key = this.getRemoteSourceKey(fieldRemote); + this.fieldMasterDataKeys[key] = false; + var callBackData = {}; + callBackData.callBack = 'initFieldMasterDataResponse'; + callBackData.callBackData = [key]; + + if (callback !== null && callback !== undefined) { + callBackData.callBackSuccess = callback; + } + + this.getFieldValues(fieldRemote[1]['remote-source'], callBackData); + } + } + } + }, { + key: "initSourceMappings", + value: function initSourceMappings() { + this.sourceMapping = {}; + var remoteSourceFields = this.getRemoteSourceFields(); + + for (var i = 0; i < remoteSourceFields.length; i++) { + var fieldRemote = remoteSourceFields[i]; + + if (fieldRemote[1]['remote-source'] !== undefined && fieldRemote[1]['remote-source'] != null) { + this.sourceMapping[fieldRemote[0]] = fieldRemote[1]['remote-source']; + } + } + } + }, { + key: "getRemoteSourceKey", + value: function getRemoteSourceKey(field) { + var key = "".concat(field[1]['remote-source'][0], "_").concat(field[1]['remote-source'][1], "_").concat(field[1]['remote-source'][2]); + + if (field[1]['remote-source'].length > 3) { + key = "".concat(key, "_").concat(field[1]['remote-source'][3]); + } + + return key; + } + }, { + key: "getRemoteSourceFields", + value: function getRemoteSourceFields() { + var values; + var fields = this.getFormFields(); + var filterFields = this.getFilters(); + + if (filterFields != null) { + for (var j = 0; j < filterFields.length; j++) { + values = this.getMetaFieldValues(filterFields[j][0], fields); + + if (values == null || values.type !== 'select' && values.type !== 'select2' && values.type !== 'select2multi') { + fields.push(filterFields[j]); + } + } + } + + var remoteSourceFields = []; + var remoteSourceFieldKeys = []; + var field = null; + var fieldSub = null; + + for (var i = 0; i < fields.length; i++) { + field = fields[i]; + + if (field[1]['remote-source'] !== undefined && field[1]['remote-source'] !== null) { + var key = this.getRemoteSourceKey(field); + + if (remoteSourceFieldKeys.indexOf(key) < 0) { + remoteSourceFields.push(field); + remoteSourceFieldKeys.push(key); + } + } else if (field[1].form !== undefined && field[1].form !== null) { + for (var _j = 0; _j < field[1].form.length; _j++) { + fieldSub = field[1].form[_j]; + + if (fieldSub[1]['remote-source'] !== undefined && fieldSub[1]['remote-source'] !== null) { + var _key = this.getRemoteSourceKey(fieldSub); + + if (remoteSourceFieldKeys.indexOf(_key) < 0) { + remoteSourceFields.push(fieldSub); + remoteSourceFieldKeys.push(_key); + } + } + } + } + } + + return remoteSourceFields; + } + /** + * Pass true to this method after creating module JS object to open new/edit entry form for the module on a popup. + * @method setShowFormOnPopup + * @param val {Boolean} + * @example + * modJs.subModJsList['tabCandidateApplication'] = new CandidateApplicationAdapter('Application','CandidateApplication',{"candidate":data.id} + * modJs.subModJsList['tabCandidateApplication'].setShowFormOnPopup(true); + */ + + }, { + key: "setShowFormOnPopup", + value: function setShowFormOnPopup(val) { + this.showFormOnPopup = val; + } + /** + * Set this to true to if you need the datatable to load data page by page instead of loading all data at once. + * @method setRemoteTable + * @param val {Boolean} + * @example + * modJs.subModJsList['tabCandidateApplication'] = new CandidateApplicationAdapter('Application','CandidateApplication',{"candidate":data.id} + * modJs.subModJsList['tabCandidateApplication'].setRemoteTable(true); + */ + + }, { + key: "setRemoteTable", + value: function setRemoteTable(val) { + this.createRemoteTable = val; + } + }, { + key: "setSettings", + value: function setSettings(val) { + this.settings = val; + } + }, { + key: "getRemoteTable", + value: function getRemoteTable() { + return this.createRemoteTable; + } + }, { + key: "isAllLoaded", + value: function isAllLoaded(fieldMasterDataKeys) { + for (var key in fieldMasterDataKeys) { + if (fieldMasterDataKeys[key] === false) { + return false; + } + } + + return true; + } // eslint-disable-next-line no-unused-vars + + }, { + key: "initFieldMasterDataResponse", + value: function initFieldMasterDataResponse(key, data, callback, loadAllCallbackData) { + this.fieldMasterData[key] = data; + this.fieldMasterDataKeys[key] = true; + + if (callback !== undefined && callback !== null) { + callback(); + } + + if (this.fieldMasterDataCallback !== null && this.fieldMasterDataCallback !== undefined && this.isAllLoaded(this.fieldMasterDataKeys) && this.fieldMasterDataCallbackData !== null && this.fieldMasterDataCallbackData !== undefined) { + this.fieldMasterDataCallback(this.fieldMasterDataCallbackData); + } else if (this.fieldMasterDataCallback !== null && this.fieldMasterDataCallback !== undefined && this.isAllLoaded(this.fieldMasterDataKeys)) { + this.fieldMasterDataCallback(); + } + } + }, { + key: "getMetaFieldValues", + value: function getMetaFieldValues(key, fields) { + for (var i = 0; i < fields.length; i++) { + if (key === fields[i][0]) { + return fields[i][1]; + } + } + + return null; + } + }, { + key: "getThemeColors", + value: function getThemeColors() { + var colors = ['red', 'yellow', 'aqua', 'blue', 'light-blue', 'green', 'navy', 'teal', 'olive', 'orange', 'fuchsia', 'purple']; + return colors; + } + }, { + key: "getColorByRandomString", + value: function getColorByRandomString(string) { + var colors = this.getThemeColors(); + var k = string.charCodeAt(0); + return colors[k % colors.length]; + } + }, { + key: "getColorByFileType", + value: function getColorByFileType(type) { + type = type.toLowerCase(); + var colorMap = {}; + colorMap.pdf = 'red'; + colorMap.csv = 'yellow'; + colorMap.xls = 'green'; + colorMap.xlsx = 'green'; + colorMap.doc = 'light-blue'; + colorMap.docx = 'light-blue'; + colorMap.docx = 'blue'; + colorMap.ppt = 'orange'; + colorMap.pptx = 'orange'; + colorMap.jpg = 'teal'; + colorMap.jpeg = 'teal'; + colorMap.gif = 'green'; + colorMap.png = 'yellow'; + colorMap.bmp = 'fuchsia'; + + if (colorMap[type] !== undefined || colorMap[type] != null) { + return colorMap[type]; + } + + return this.getColorByRandomString(type); + } + }, { + key: "getIconByFileType", + value: function getIconByFileType(type) { + type = type.toLowerCase(); + var iconMap = {}; + iconMap.pdf = 'fa fa-file-pdf-o'; + iconMap.csv = 'fa fa fa-file-code-o'; + iconMap.xls = 'fa fa-file-excel-o'; + iconMap.xlsx = 'fa fa-file-excel-o'; + iconMap.doc = 'fa fa-file-word-o'; + iconMap.docx = 'fa fa-file-word-o'; + iconMap.ppt = 'fa fa-file-powerpoint-o'; + iconMap.pptx = 'fa fa-file-powerpoint-o'; + iconMap.jpg = 'fa fa-file-image-o'; + iconMap.jpeg = 'fa fa-file-image-o'; + iconMap.gif = 'fa fa-file-image-o'; + iconMap.png = 'fa fa-file-image-o'; + iconMap.bmp = 'fa fa-file-image-o'; + iconMap.txt = 'fa fa-file-text-o'; + iconMap.rtf = 'fa fa-file-text-o'; + + if (iconMap[type] !== undefined || iconMap[type] != null) { + return iconMap[type]; + } + + return 'fa fa-file-o'; + } + }, { + key: "getSourceMapping", + value: function getSourceMapping() { + return this.sourceMapping; + } + }, { + key: "setTesting", + value: function setTesting(testing) { + this.testing = testing; + } + }, { + key: "consoleLog", + value: function consoleLog(message) { + if (this.testing) { + console.log(message); + } + } + }, { + key: "setClientMessages", + value: function setClientMessages(msgList) { + this.msgList = msgList; + } + }, { + key: "setTemplates", + value: function setTemplates(templates) { + this.templates = templates; + } + }, { + key: "getWSProperty", + value: function getWSProperty(array, key) { + if (array.hasOwnProperty(key)) { + return array[key]; + } + + return null; + } + }, { + key: "getClientMessage", + value: function getClientMessage(key) { + return this.getWSProperty(this.msgList, key); + } + }, { + key: "getTemplate", + value: function getTemplate(key) { + return this.getWSProperty(this.templates, key); + } + }, { + key: "setGoogleAnalytics", + value: function setGoogleAnalytics(gaq) { + this.gaq = gaq; + } + }, { + key: "showView", + value: function showView(view) { + if (this.currentView != null) { + this.previousView = this.currentView; + $("#".concat(this.currentView)).hide(); + } + + $("#".concat(view)).show(); + this.currentView = view; + this.moveToTop(); + } + }, { + key: "showPreviousView", + value: function showPreviousView() { + this.showView(this.previousView); + } + }, { + key: "moveToTop", + value: function moveToTop() {} + }, { + key: "callFunction", + value: function callFunction(callback, cbParams, thisParam) { + if ($.isFunction(callback)) { + try { + if (thisParam === undefined || thisParam === null) { + callback.apply(document, cbParams); + } else { + callback.apply(thisParam, cbParams); + } + } catch (e) { + console.log(e.message); + } + } else { + var f = this[callback]; + + if ($.isFunction(f)) { + try { + f.apply(this, cbParams); + } catch (e) { + console.log(e.message); + } + } + } + } + }, { + key: "getTableTopButtonHtml", + value: function getTableTopButtonHtml() { + var html = ''; + + if (this.getShowAddNew()) { + html = ""); + } + + if (this.getFilters() != null) { + if (html !== '') { + html += '  '; + } + + html += ""); + html += '  '; + + if (this.filtersAlreadySet) { + html += ''; + } else { + html += ''; + } + } + + html = html.replace(/__id__/g, this.getTableName()); + + if (this.currentFilterString !== '' && this.currentFilterString != null) { + html = html.replace(/__filterString__/g, this.currentFilterString); + } else { + html = html.replace(/__filterString__/g, 'Reset Filters'); + } + + if (html !== '') { + html = "
    ".concat(html, "
    "); + } + + return html; + } + }, { + key: "getActionButtonHeader", + value: function getActionButtonHeader() { + return { + sTitle: '', + sClass: 'center' + }; + } + }, { + key: "getTableHTMLTemplate", + value: function getTableHTMLTemplate() { + return '
    '; + } + }, { + key: "isSortable", + value: function isSortable() { + return true; + } + /** + * Create the data table on provided element id + * @method createTable + * @param val {Boolean} + */ + + }, { + key: "createTable", + value: function createTable(elementId) { + var that = this; + + if (this.getRemoteTable()) { + this.createTableServer(elementId); + return; + } + + var headers = this.getHeaders(); // add translations + + for (var index in headers) { + headers[index].sTitle = this.gt(headers[index].sTitle); + } + + var data = this.getTableData(); + + if (this.showActionButtons()) { + headers.push(this.getActionButtonHeader()); + } + + if (this.showActionButtons()) { + for (var i = 0; i < data.length; i++) { + data[i].push(this.getActionButtonsHtml(data[i][0], data[i])); + } + } + + var html = ''; + html = this.getTableTopButtonHtml() + this.getTableHTMLTemplate(); + /* + if(this.getShowAddNew()){ + html = this.getTableTopButtonHtml()+'
    '; + }else{ + html = '
    '; + } + */ + // Find current page + + var activePage = $("#".concat(elementId, " .dataTables_paginate .active a")).html(); + var start = 0; + + if (activePage !== undefined && activePage != null) { + start = parseInt(activePage, 10) * 15 - 15; + } + + $("#".concat(elementId)).html(html); + var dataTableParams = { + oLanguage: { + sLengthMenu: '_MENU_ records per page' + }, + aaData: data, + aoColumns: headers, + bSort: that.isSortable(), + iDisplayLength: 15, + iDisplayStart: start + }; + var customTableParams = this.getCustomTableParams(); + $.extend(dataTableParams, customTableParams); + $("#".concat(elementId, " #grid")).dataTable(dataTableParams); + $('.dataTables_paginate ul').addClass('pagination'); + $('.dataTables_length').hide(); + $('.dataTables_filter input').addClass('form-control'); + $('.dataTables_filter input').attr('placeholder', 'Search'); + $('.dataTables_filter label').contents().filter(function () { + return this.nodeType === 3; + }).remove(); + $('.tableActionButton').tooltip(); + } + /** + * Create a data table on provided element id which loads data page by page + * @method createTableServer + * @param val {Boolean} + */ + + }, { + key: "createTableServer", + value: function createTableServer(elementId) { + var that = this; + var headers = this.getHeaders(); + headers.push({ + sTitle: '', + sClass: 'center' + }); // add translations + + for (var index in headers) { + headers[index].sTitle = this.gt(headers[index].sTitle); + } + + var html = ''; + html = this.getTableTopButtonHtml() + this.getTableHTMLTemplate(); // Find current page + + var activePage = $("#".concat(elementId, " .dataTables_paginate .active a")).html(); + var start = 0; + + if (activePage !== undefined && activePage != null) { + start = parseInt(activePage, 10) * 15 - 15; + } + + $("#".concat(elementId)).html(html); + var dataTableParams = { + oLanguage: { + sLengthMenu: '_MENU_ records per page' + }, + bProcessing: true, + bServerSide: true, + sAjaxSource: that.getDataUrl(that.getDataMapping()), + aoColumns: headers, + bSort: that.isSortable(), + parent: that, + iDisplayLength: 15, + iDisplayStart: start + }; + + if (this.showActionButtons()) { + dataTableParams.aoColumnDefs = [{ + fnRender: that.getActionButtons, + aTargets: [that.getDataMapping().length] + }]; + } + + var customTableParams = this.getCustomTableParams(); + $.extend(dataTableParams, customTableParams); + $("#".concat(elementId, " #grid")).dataTable(dataTableParams); + $('.dataTables_paginate ul').addClass('pagination'); + $('.dataTables_length').hide(); + $('.dataTables_filter input').addClass('form-control'); + $('.dataTables_filter input').attr('placeholder', 'Search'); + $('.dataTables_filter label').contents().filter(function () { + return this.nodeType === 3; + }).remove(); + $('.tableActionButton').tooltip(); + } + /** + * This should be overridden in module lib.js classes to return module headers which are used to create the data table. + * @method getHeaders + * @example + SettingAdapter.method('getHeaders() { + return [ + { "sTitle": "ID" ,"bVisible":false}, + { "sTitle": "Name" }, + { "sTitle": "Value"}, + { "sTitle": "Details"} + ]; + } + */ + + }, { + key: "getHeaders", + value: function getHeaders() {} + /** + * This should be overridden in module lib.js classes to return module field values which are used to create the data table. + * @method getDataMapping + * @example + SettingAdapter.method('getDataMapping() { + return [ + "id", + "name", + "value", + "description" + ]; + } + */ + + }, { + key: "getDataMapping", + value: function getDataMapping() {} + /** + * This should be overridden in module lib.js classes to return module from fields which are used to create the add/edit form and also used for initializing select box values in form. + * @method getFormFields + * @example + SettingAdapter.method('getFormFields() { + return [ + [ "id", {"label":"ID","type":"hidden"}], + [ "value", {"label":"Value","type":"text","validation":"none"}] + ]; + } + */ + + }, { + key: "getFormFields", + value: function getFormFields() {} + }, { + key: "getTableColumns", + value: function getTableColumns() { + return []; + } + }, { + key: "getTableData", + value: function getTableData() {} + /** + * This can be overridden in module lib.js classes inorder to show a filter form + * @method getFilters + * @example + EmployeeAdapter.method('getFilters() { + return [ + [ "job_title", {"label":"Job Title","type":"select2","allow-null":true,"null-label":"All Job Titles","remote-source":["JobTitle","id","name"]}], + [ "department", {"label":"Department","type":"select2","allow-null":true,"null-label":"All Departments","remote-source":["CompanyStructure","id","title"]}], + [ "supervisor", {"label":"Supervisor","type":"select2","allow-null":true,"null-label":"Anyone","remote-source":["Employee","id","first_name+last_name"]}] + ]; + } + */ + + }, { + key: "getFilters", + value: function getFilters() { + return null; + } + /** + * Show the edit form for an item + * @method edit + * @param id {int} id of the item to edit + */ + + }, { + key: "edit", + value: function edit(id) { + this.currentId = id; + this.getElement(id, []); + } + }, { + key: "copyRow", + value: function copyRow(id) { + this.getElement(id, [], true); + } + }, { + key: "renderModel", + value: function renderModel(id, header, body) { + $("#".concat(id, "ModelBody")).html(''); + + if (body === undefined || body == null) { + body = ''; + } + + $("#".concat(id, "ModelLabel")).html(header); + $("#".concat(id, "ModelBody")).html(body); + } + }, { + key: "renderYesNoModel", + value: function renderYesNoModel(header, body, yesBtnName, noBtnName, callback, callbackParams) { + var that = this; + var modelId = '#yesnoModel'; + + if (body === undefined || body == null) { + body = ''; + } + + $("".concat(modelId, "Label")).html(header); + $("".concat(modelId, "Body")).html(body); + + if (yesBtnName != null) { + $("".concat(modelId, "YesBtn")).html(yesBtnName); + } + + if (noBtnName != null) { + $("".concat(modelId, "NoBtn")).html(noBtnName); + } + + $("".concat(modelId, "YesBtn")).off().on('click', function () { + if (callback !== undefined && callback != null) { + callback.apply(that, callbackParams); + that.cancelYesno(); + } + }); + $(modelId).modal({ + backdrop: 'static' + }); + } + }, { + key: "renderModelFromDom", + value: function renderModelFromDom(id, header, element) { + $("#".concat(id, "ModelBody")).html(''); + + if (element === undefined || element == null) { + element = $('
    '); + } + + $("#".concat(id, "ModelLabel")).html(header); + $("#".concat(id, "ModelBody")).html(''); + $("#".concat(id, "ModelBody")).append(element); + } + /** + * Delete an item + * @method deleteRow + * @param id {int} id of the item to edit + */ + + }, { + key: "deleteRow", + value: function deleteRow(id) { + this.deleteParams.id = id; + this.renderModel('delete', 'Confirm Deletion', 'Are you sure you want to delete this item ?'); + $('#deleteModel').modal('show'); + } + /** + * Show a popup with message + * @method showMessage + * @param title {String} title of the message box + * @param message {String} message + * @param closeCallback {Function} this will be called once the dialog is closed (optional) + * @param closeCallback {Function} data to pass to close callback (optional) + * @param closeCallbackData + * @param isPlain {Boolean} if true buttons are not shown (optional / default = true) + * @example + * this.showMessage("Error Occured while Applying Leave", callBackData); + */ + + }, { + key: "showMessage", + value: function showMessage(title, message) { + var closeCallback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; + var closeCallbackData = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; + var isPlain = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; + var that = this; + var modelId = ''; + + if (isPlain) { + modelId = '#plainMessageModel'; + } else { + modelId = '#messageModel'; + } + + $(modelId).off(); + + if (isPlain) { + this.renderModel('plainMessage', title, message); + } else { + this.renderModel('message', title, message); + } + + if (closeCallback !== null && closeCallback !== undefined) { + $(modelId).modal({ + show: true + }); + $(modelId).on('hidden.bs.modal', function () { + closeCallback.apply(that, closeCallbackData); + $('.modal-backdrop').remove(); + }); + } else { + $(modelId).modal({ + backdrop: 'static' + }); + } + } + }, { + key: "showDomElement", + value: function showDomElement(title, element, closeCallback, closeCallbackData, isPlain) { + var that = this; + var modelId = ''; + + if (isPlain) { + modelId = '#dataMessageModel'; + } else { + modelId = '#messageModel'; + } + + $(modelId).unbind('hide'); + + if (isPlain) { + this.renderModelFromDom('dataMessage', title, element); + } else { + this.renderModelFromDom('message', title, element); + } + + if (closeCallback !== null && closeCallback !== undefined) { + $(modelId).modal({ + show: true + }); + $(modelId).on('hidden.bs.modal', function () { + closeCallback.apply(that, closeCallbackData); + $('.modal-backdrop').remove(); + }); + } else { + $(modelId).modal({ + backdrop: 'static' + }); + } + } + }, { + key: "confirmDelete", + value: function confirmDelete() { + if (this.deleteParams.id !== undefined || this.deleteParams.id != null) { + this.deleteObj(this.deleteParams.id, []); + } + + $('#deleteModel').modal('hide'); + } + }, { + key: "cancelDelete", + value: function cancelDelete() { + $('#deleteModel').modal('hide'); + this.deleteParams.id = null; + } + }, { + key: "closeMessage", + value: function closeMessage() { + $('#messageModel').modal('hide'); + } + }, { + key: "cancelYesno", + value: function cancelYesno() { + $('#yesnoModel').modal('hide'); + } + }, { + key: "closePlainMessage", + value: function closePlainMessage() { + $('#plainMessageModel').modal('hide'); + $('#dataMessageModel').modal('hide'); + } + }, { + key: "closeDataMessage", + value: function closeDataMessage() { + $('#dataMessageModel').modal('hide'); + } + /** + * Create or edit an element + * @method save + * @param getFunctionCallBackData {Array} once a success is returned call get() function for this module with these parameters + * @param successCallback {Function} this will get called after success response + */ + + }, { + key: "save", + value: function save(callGetFunction, successCallback) { + var validator = new _FormValidation["default"]("".concat(this.getTableName(), "_submit"), true, { + ShowPopup: false, + LabelErrorClass: 'error' + }); + + if (validator.checkValues()) { + var params = validator.getFormParameters(); + params = this.forceInjectValuesBeforeSave(params); + var msg = this.doCustomValidation(params); + + if (msg == null) { + if (this.csrfRequired) { + params.csrf = $("#".concat(this.getTableName(), "Form")).data('csrf'); + } + + var id = $("#".concat(this.getTableName(), "_submit #id")).val(); + + if (id != null && id !== undefined && id !== '') { + params.id = id; + } + + params = this.makeEmptyDateFieldsNull(params); + this.add(params, [], callGetFunction, successCallback); + } else { + $("#".concat(this.getTableName(), "Form .label")).html(msg); + $("#".concat(this.getTableName(), "Form .label")).show(); + this.scrollToTop(); + } + } + } + }, { + key: "makeEmptyDateFieldsNull", + value: function makeEmptyDateFieldsNull(params) { + var fields = this.getFormFields(); + fields.forEach(function (field) { + if ((field[1].type === 'date' || field[1].type === 'datetime') && (params[field[0]] === '' || params[field[0]] === '0000-00-00' || params[field[0]] === '0000-00-00 00:00:00')) { + if (field[1].validation === 'none') { + params[field[0]] = 'NULL'; + } else { + delete params[field[0]]; + } + } + }); + return params; + } + }, { + key: "validatePassword", + value: function validatePassword(password) { + if (password.length < 8) { + return this.gt('Password too short'); + } + + if (password.length > 30) { + return this.gt('Password too long'); + } + + var numberTester = /.*[0-9]+.*$/; + + if (!password.match(numberTester)) { + return this.gt('Password must include at least one number'); + } + + var lowerTester = /.*[a-z]+.*$/; + + if (!password.match(lowerTester)) { + return this.gt('Password must include at least one lowercase letter'); + } + + var upperTester = /.*[A-Z]+.*$/; + + if (!password.match(upperTester)) { + return this.gt('Password must include at least one uppercase letter'); + } + + var symbolTester = /.*[\W]+.*$/; + + if (!password.match(symbolTester)) { + return this.gt('Password must include at least one symbol'); + } + + return null; + } + /** + * Override this method to inject attitional parameters or modify existing parameters retrived from + * add/edit form before sending to the server + * @method forceInjectValuesBeforeSave + * @param params {Array} keys and values in form + * @returns {Array} modified parameters + */ + + }, { + key: "forceInjectValuesBeforeSave", + value: function forceInjectValuesBeforeSave(params) { + return params; + } + /** + * Override this method to do custom validations at client side + * @method doCustomValidation + * @param params {Array} keys and values in form + * @returns {Null or String} return null if validation success, returns error message if unsuccessful + * @example + EmployeeLeaveAdapter.method('doCustomValidation(params) { + try{ + if(params['date_start'] != params['date_end']){ + var ds = new Date(params['date_start']); + var de = new Date(params['date_end']); + if(de < ds){ + return "Start date should be earlier than end date of the leave period"; + } + } + }catch(e){ + } + return null; + } + */ + // eslint-disable-next-line no-unused-vars + + }, { + key: "doCustomValidation", + value: function doCustomValidation(params) { + return null; + } + }, { + key: "filterQuery", + value: function filterQuery() { + var validator = new _FormValidation["default"]("".concat(this.getTableName(), "_filter"), true, { + ShowPopup: false, + LabelErrorClass: 'error' + }); + + if (validator.checkValues()) { + var params = validator.getFormParameters(); + + if (this.doCustomFilterValidation(params)) { + // remove null params + for (var prop in params) { + if (params.hasOwnProperty(prop)) { + if (params[prop] === 'NULL') { + delete params[prop]; + } + } + } + + this.setFilter(params); + this.filtersAlreadySet = true; + $("#".concat(this.getTableName(), "_resetFilters")).show(); + this.currentFilterString = this.getFilterString(params); + this.get([]); + this.closePlainMessage(); + } + } + } + }, { + key: "getFilterString", + value: function getFilterString(filters) { + var str = ''; + var rmf; + var source; + var values; + var select2MVal; + var value; + var valueOrig; + var filterFields = this.getFilters(); + + if (values == null) { + values = []; + } + + for (var prop in filters) { + if (filters.hasOwnProperty(prop)) { + values = this.getMetaFieldValues(prop, filterFields); + + if (!values) { + continue; + } + + value = ''; + valueOrig = null; + + if (values.type === 'select' || values.type === 'select2') { + if (values['remote-source'] !== undefined && values['remote-source'] != null) { + rmf = values['remote-source']; + + if (filters[prop] === 'NULL') { + if (values['null-label'] !== undefined && values['null-label'] != null) { + value = values['null-label']; + } else { + value = 'Not Selected'; + } + } else { + var key = "".concat(rmf[0], "_").concat(rmf[1], "_").concat(rmf[2]); + + if (rmf.length > 3) { + key = "".concat(key, "_").concat(rmf[3]); + } // value = this.fieldMasterData[`${rmf[0]}_${rmf[1]}_${rmf[2]}`][filters[prop]]; + + + value = this.fieldMasterData[key][filters[prop]]; + valueOrig = value; + } + } else { + source = values.source[0]; + + if (filters[prop] === 'NULL') { + if (values['null-label'] !== undefined && values['null-label'] != null) { + value = values['null-label']; + } else { + value = 'Not Selected'; + } + } else { + for (var i = 0; i < source.length; i++) { + if (filters[prop] === values.source[i][0]) { + value = values.source[i][1]; + valueOrig = value; + break; + } + } + } + } + } else if (values.type === 'select2multi') { + select2MVal = []; + + try { + select2MVal = JSON.parse(filters[prop]); + } catch (e) {// Do nothing + } + + value = select2MVal.join(','); + + if (value !== '') { + valueOrig = value; + } + } else { + value = filters[prop]; + + if (value !== '') { + valueOrig = value; + } + } + + if (valueOrig != null) { + if (str !== '') { + str += ' | '; + } + + str += "".concat(values.label, " = ").concat(value); + } + } + } + + return str; + } + /** + * Override this method to do custom validations at client side for values selected in filters + * @method doCustomFilterValidation + * @param params {Array} keys and values in form + * @returns {Null or String} return null if validation success, returns error message if unsuccessful + */ + + }, { + key: "doCustomFilterValidation", + value: function doCustomFilterValidation(params) { + return true; + } + /** + * Reset selected filters + * @method resetFilters + */ + + }, { + key: "resetFilters", + value: function resetFilters() { + this.filter = this.origFilter; + this.filtersAlreadySet = false; + $("#".concat(this.getTableName(), "_resetFilters")).hide(); + this.currentFilterString = ''; + this.get([]); + } + }, { + key: "showFilters", + value: function showFilters(object) { + var formHtml = this.templates.filterTemplate; + var html = ''; + var fields = this.getFilters(); + + for (var i = 0; i < fields.length; i++) { + var metaField = this.getMetaFieldForRendering(fields[i][0]); + + if (metaField === '' || metaField === undefined) { + html += this.renderFormField(fields[i]); + } else { + var metaVal = object[metaField]; + + if (metaVal !== '' && metaVal != null && metaVal !== undefined && metaVal.trim() !== '') { + html += this.renderFormField(JSON.parse(metaVal)); + } else { + html += this.renderFormField(fields[i]); + } + } + } + + formHtml = formHtml.replace(/_id_/g, "".concat(this.getTableName(), "_filter")); + formHtml = formHtml.replace(/_fields_/g, html); + var randomFormId = this.generateRandom(14); + var $tempDomObj = $('
    '); + $tempDomObj.attr('id', randomFormId); + $tempDomObj.html(formHtml); + $tempDomObj.find('.datefield').datepicker({ + viewMode: 2 + }); + $tempDomObj.find('.timefield').datetimepicker({ + language: 'en', + pickDate: false + }); + $tempDomObj.find('.datetimefield').datetimepicker({ + language: 'en' + }); + $tempDomObj.find('.colorpick').colorpicker(); + tinymce.init({ + selector: "#".concat($tempDomObj.attr('id'), " .tinymce"), + height: '400' + }); + $tempDomObj.find('.simplemde').each(function () { + var simplemde = new SimpleMDE({ + element: $(this)[0] + }); + $(this).data('simplemde', simplemde); // simplemde.value($(this).val()); + }); // $tempDomObj.find('.select2Field').select2(); + + $tempDomObj.find('.select2Field').each(function () { + $(this).select2().select2('val', $(this).find('option:eq(0)').val()); + }); + $tempDomObj.find('.select2Multi').each(function () { + $(this).select2().on('change', function (e) { + var parentRow = $(this).parents('.row'); + var height = parentRow.find('.select2-choices').height(); + parentRow.height(parseInt(height, 10)); + }); + }); + /* + $tempDomObj.find('.signatureField').each(function() { + $(this).data('signaturePad',new SignaturePad($(this))); + }); + */ + // var tHtml = $tempDomObj.wrap('
    ').parent().html(); + + this.showDomElement('Edit', $tempDomObj, null, null, true); + $('.filterBtn').off(); + $('.filterBtn').on('click', function (e) { + e.preventDefault(); + e.stopPropagation(); + + try { + modJs.filterQuery(); + } catch (err) { + console.log(err); + console.log(err.message); + } + + return false; + }); + + if (this.filter !== undefined && this.filter != null && this.filter !== '') { + this.fillForm(this.filter, "#".concat(this.getTableName(), "_filter"), this.getFilters()); + } + } + /** + * Override this method in your module class to make changes to data fo the form before showing the form + * @method preRenderForm + * @param object {Array} keys value list for populating form + */ + + }, { + key: "preRenderForm", + value: function preRenderForm(object) {} + /** + * Create the form + * @method renderForm + * @param object {Array} keys value list for populating form + */ + + }, { + key: "renderForm", + value: function renderForm(object) { + var signatureIds = []; + + if (object == null || object === undefined) { + this.currentId = null; + } + + this.preRenderForm(object); + var formHtml = this.templates.formTemplate; + var html = ''; + var fields = this.getFormFields(); + + for (var i = 0; i < fields.length; i++) { + var metaField = this.getMetaFieldForRendering(fields[i][0]); + + if (metaField === '' || metaField === undefined) { + html += this.renderFormField(fields[i]); + } else { + var metaVal = object[metaField]; + + if (metaVal !== '' && metaVal != null && metaVal !== undefined && metaVal.trim() !== '') { + html += this.renderFormField(JSON.parse(metaVal)); + } else { + html += this.renderFormField(fields[i]); + } + } + } + + formHtml = formHtml.replace(/_id_/g, "".concat(this.getTableName(), "_submit")); + formHtml = formHtml.replace(/_fields_/g, html); + var $tempDomObj; + var randomFormId = this.generateRandom(14); + + if (!this.showFormOnPopup) { + $tempDomObj = $("#".concat(this.getTableName(), "Form")); + } else { + $tempDomObj = $('
    '); + $tempDomObj.attr('id', randomFormId); + } + + $tempDomObj.html(formHtml); + $tempDomObj.find('.datefield').datepicker({ + viewMode: 2 + }); + $tempDomObj.find('.timefield').datetimepicker({ + language: 'en', + pickDate: false + }); + $tempDomObj.find('.datetimefield').datetimepicker({ + language: 'en' + }); + $tempDomObj.find('.colorpick').colorpicker(); + tinymce.init({ + selector: "#".concat($tempDomObj.attr('id'), " .tinymce"), + height: '400' + }); + $tempDomObj.find('.simplemde').each(function () { + var simplemde = new SimpleMDE({ + element: $(this)[0] + }); + $(this).data('simplemde', simplemde); // simplemde.value($(this).val()); + }); + var codeMirror = this.codeMirror; + + if (codeMirror) { + $tempDomObj.find('.code').each(function () { + var editor = codeMirror.fromTextArea($(this)[0], { + lineNumbers: false, + matchBrackets: true, + continueComments: 'Enter', + extraKeys: { + 'Ctrl-Q': 'toggleComment' + } + }); + $(this).data('codemirror', editor); + }); + } // $tempDomObj.find('.select2Field').select2(); + + + $tempDomObj.find('.select2Field').each(function () { + $(this).select2().select2('val', $(this).find('option:eq(0)').val()); + }); + $tempDomObj.find('.select2Multi').each(function () { + $(this).select2().on('change', function (e) { + var parentRow = $(this).parents('.row'); + var height = parentRow.find('.select2-choices').height(); + parentRow.height(parseInt(height, 10)); + }); + }); + $tempDomObj.find('.signatureField').each(function () { + // $(this).data('signaturePad',new SignaturePad($(this))); + signatureIds.push($(this).attr('id')); + }); + + for (var _i = 0; _i < fields.length; _i++) { + if (fields[_i][1].type === 'datagroup') { + $tempDomObj.find("#".concat(fields[_i][0])).data('field', fields[_i]); + } + } + + if (this.showSave === false) { + $tempDomObj.find('.saveBtn').remove(); + } else { + $tempDomObj.find('.saveBtn').off(); + $tempDomObj.find('.saveBtn').data('modJs', this); + $tempDomObj.find('.saveBtn').on('click', function () { + if ($(this).data('modJs').saveSuccessItemCallback != null && $(this).data('modJs').saveSuccessItemCallback !== undefined) { + $(this).data('modJs').save($(this).data('modJs').retriveItemsAfterSave(), $(this).data('modJs').saveSuccessItemCallback); + } else { + $(this).data('modJs').save(); + } + + return false; + }); + } + + if (this.showCancel === false) { + $tempDomObj.find('.cancelBtn').remove(); + } else { + $tempDomObj.find('.cancelBtn').off(); + $tempDomObj.find('.cancelBtn').data('modJs', this); + $tempDomObj.find('.cancelBtn').on('click', function () { + $(this).data('modJs').cancel(); + return false; + }); + } // Input mask + + + $tempDomObj.find('[mask]').each(function () { + $(this).inputmask($(this).attr('mask')); + }); + $tempDomObj.find('[datemask]').each(function () { + $(this).inputmask({ + mask: 'y-1-2', + placeholder: 'YYYY-MM-DD', + leapday: '-02-29', + separator: '-', + alias: 'yyyy/mm/dd' + }); + }); + $tempDomObj.find('[datetimemask]').each(function () { + $(this).inputmask('datetime', { + mask: 'y-2-1 h:s:00', + placeholder: 'YYYY-MM-DD hh:mm:ss', + leapday: '-02-29', + separator: '-', + alias: 'yyyy/mm/dd' + }); + }); + + if (!this.showFormOnPopup) { + $("#".concat(this.getTableName(), "Form")).show(); + $("#".concat(this.getTableName())).hide(); + + for (var _i2 = 0; _i2 < signatureIds.length; _i2++) { + $("#".concat(signatureIds[_i2])).data('signaturePad', new SignaturePad(document.getElementById(signatureIds[_i2]))); + } + + if (object !== undefined && object != null) { + this.fillForm(object); + } else { + this.setDefaultValues(); + } + + this.scrollToTop(); + } else { + // var tHtml = $tempDomObj.wrap('
    ').parent().html(); + // this.showMessage("Edit",tHtml,null,null,true); + this.showMessage('Edit', '', null, null, true); + $('#plainMessageModel .modal-body').html(''); + $('#plainMessageModel .modal-body').append($tempDomObj); + + for (var _i3 = 0; _i3 < signatureIds.length; _i3++) { + $("#".concat(signatureIds[_i3])).data('signaturePad', new SignaturePad(document.getElementById(signatureIds[_i3]))); + } + + if (object !== undefined && object != null) { + this.fillForm(object, "#".concat(randomFormId)); + } else { + this.setDefaultValues("#".concat(randomFormId)); + } + } + + this.postRenderForm(object, $tempDomObj); + } + }, { + key: "setDefaultValues", + value: function setDefaultValues(formId, fields) { + if (fields == null || fields === undefined) { + fields = this.getFormFields(); + } + + if (formId == null || formId === undefined || formId === '') { + formId = "#".concat(this.getTableName(), "Form"); + } + + for (var i = 0; i < fields.length; i++) { + if (fields[i][1].type !== 'text' && fields[i][1].type !== 'textarea') { + continue; + } + + if (fields[i][1]["default"] !== undefined && fields[i][1]["default"] !== null) { + $("".concat(formId, " #").concat(fields[i][0])).val(fields[i][1]["default"]); + } + } + } + }, { + key: "retriveItemsAfterSave", + value: function retriveItemsAfterSave() { + return true; + } + /** + * Override this method in your module class to make changes to data fo the form after showing it + * @method postRenderForm + * @param object {Array} keys value list for populating form + * @param $tempDomObj {DOM} a DOM element for the form + * @example + * UserAdapter.method('postRenderForm(object, $tempDomObj) { + if(object == null || object == undefined){ + $tempDomObj.find("#changePasswordBtn").remove(); + } + } + */ + + }, { + key: "postRenderForm", + value: function postRenderForm(object, $tempDomObj) {} + /** + * Convert data group field to HTML + * @method dataGroupToHtml + * @param val {String} value in the field + * @param field {Array} field meta data + */ + + }, { + key: "dataGroupToHtml", + value: function dataGroupToHtml(val, field) { + var data = JSON.parse(val); + var t; + var sortFunction; + var item; + var itemHtml; + var itemVal; + var deleteButton = '
  • '; + var editButton = '
  • '; + var template = field[1].html; + + if (data != null && data !== undefined && field[1]['sort-function'] !== undefined && field[1]['sort-function'] != null) { + data.sort(field[1]['sort-function']); + } + + var html = $("
    ")); + + for (var i = 0; i < data.length; i++) { + item = data[i]; + + if (field[1]['pre-format-function'] !== undefined && field[1]['pre-format-function'] != null) { + item = field[1]['pre-format-function'].apply(this, [item]); + } + + t = template; + t = t.replace('#_delete_#', deleteButton); + t = t.replace('#_edit_#', editButton); + t = t.replace(/#_id_#/g, item.id); + + for (var key in item) { + itemVal = item[key]; + + if (itemVal !== undefined && itemVal != null && typeof itemVal === 'string') { + itemVal = itemVal.replace(/(?:\r\n|\r|\n)/g, '
    '); + } + + t = t.replace("#_".concat(key, "_#"), itemVal); + } + + if (field[1].render !== undefined && field[1].render != null) { + t = t.replace('#_renderFunction_#', field[1].render(item)); + } + + itemHtml = $(t); + itemHtml.attr('fieldId', "".concat(field[0], "_div")); + html.append(itemHtml); + } + + return html; + } + /** + * Reset the DataGroup for a given field + * @method resetDataGroup + * @param field {Array} field meta data + */ + + }, { + key: "resetDataGroup", + value: function resetDataGroup(field) { + $("#".concat(field[0])).val(''); + $("#".concat(field[0], "_div")).html(''); + } + }, { + key: "showDataGroup", + value: function showDataGroup(field, object, callback) { + var formHtml = this.templates.datagroupTemplate; + var html = ''; + var fields = field[1].form; + + if (object !== undefined && object != null && object.id !== undefined) { + this.currentDataGroupItemId = object.id; + } else { + this.currentDataGroupItemId = null; + } + + for (var i = 0; i < fields.length; i++) { + html += this.renderFormField(fields[i]); + } + + formHtml = formHtml.replace(/_id_/g, "".concat(this.getTableName(), "_field_").concat(field[0])); + formHtml = formHtml.replace(/_fields_/g, html); + var randomFormId = this.generateRandom(14); + var $tempDomObj = $('
    '); + $tempDomObj.attr('id', randomFormId); + $tempDomObj.html(formHtml); + $tempDomObj.find('.datefield').datepicker({ + viewMode: 2 + }); + $tempDomObj.find('.timefield').datetimepicker({ + language: 'en', + pickDate: false + }); + $tempDomObj.find('.datetimefield').datetimepicker({ + language: 'en' + }); + $tempDomObj.find('.colorpick').colorpicker(); + tinymce.init({ + selector: "#".concat($tempDomObj.attr('id'), " .tinymce"), + height: '400' + }); + $tempDomObj.find('.simplemde').each(function () { + var simplemde = new SimpleMDE({ + element: $(this)[0] + }); + $(this).data('simplemde', simplemde); // simplemde.value($(this).val()); + }); + $tempDomObj.find('.select2Field').each(function () { + $(this).select2().select2('val', $(this).find('option:eq(0)').val()); + }); + $tempDomObj.find('.select2Multi').each(function () { + $(this).select2().on('change', function (e) { + var parentRow = $(this).parents('.row'); + var height = parentRow.find('.select2-choices').height(); + parentRow.height(parseInt(height, 10)); + }); + }); + this.currentDataGroupField = field; + this.showDomElement("Add ".concat(field[1].label), $tempDomObj, null, null, true); + + if (object !== undefined && object != null) { + this.fillForm(object, "#".concat(this.getTableName(), "_field_").concat(field[0]), field[1].form); + } else { + this.setDefaultValues("#".concat(this.getTableName(), "_field_").concat(field[0]), field[1].form); + } + + $('.groupAddBtn').off(); + + if (object !== undefined && object != null && object.id !== undefined) { + $('.groupAddBtn').on('click', function (e) { + e.preventDefault(); + e.stopPropagation(); + + try { + modJs.editDataGroup(callback); + } catch (err) { + console.log("Error editing data group: ".concat(err.message)); + } + + return false; + }); + } else { + $('.groupAddBtn').on('click', function (e) { + e.preventDefault(); + e.stopPropagation(); + + try { + modJs.addDataGroup(callback); + } catch (err) { + console.log("Error adding data group: ".concat(err.message)); + } + + return false; + }); + } + } + }, { + key: "addDataGroup", + value: function addDataGroup(callback, existingData) { + var field = this.currentDataGroupField; + var tempParams; + $("#".concat(this.getTableName(), "_field_").concat(field[0], "_error")).html(''); + $("#".concat(this.getTableName(), "_field_").concat(field[0], "_error")).hide(); + var validator = new _FormValidation["default"]("".concat(this.getTableName(), "_field_").concat(field[0]), true, { + ShowPopup: false, + LabelErrorClass: 'error' + }); + + if (validator.checkValues()) { + var params = validator.getFormParameters(); + + if (field[1]['custom-validate-function'] !== undefined && field[1]['custom-validate-function'] != null) { + tempParams = field[1]['custom-validate-function'].apply(this, [params]); + + if (tempParams.valid) { + params = tempParams.params; + } else { + $("#".concat(this.getTableName(), "_field_").concat(field[0], "_error")).html(tempParams.message); + $("#".concat(this.getTableName(), "_field_").concat(field[0], "_error")).show(); + return false; + } + } + + var val = '[]'; + + if (existingData) { + val = existingData; + } else { + val = $("#".concat(field[0])).val(); + + if (val === '' || val == null) { + val = '[]'; + } + } + + var data = JSON.parse(val); + params.id = "".concat(field[0], "_").concat(this.dataGroupGetNextAutoIncrementId(data)); + data.push(params); + + if (field[1]['sort-function'] !== undefined && field[1]['sort-function'] != null) { + data.sort(field[1]['sort-function']); + } + + val = JSON.stringify(data); + var html = this.dataGroupToHtml(val, field); + + if (callback) { + callback(val); + } + + $("#".concat(field[0], "_div")).html(''); + $("#".concat(field[0], "_div")).append(html); + this.makeDataGroupSortable(field, $("#".concat(field[0], "_div_inner"))); + $("#".concat(field[0])).val(val); + this.orderDataGroup(field); + this.closeDataMessage(); + this.showMessage('Item Added', 'This change will be effective only when you save the form'); + } + + return true; + } + }, { + key: "nl2br", + value: function nl2br(str, len) { + var t = ''; + + try { + var arr = str.split(' '); + var count = 0; + + for (var i = 0; i < arr.length; i++) { + count += arr[i].length + 1; + + if (count > len) { + t += "".concat(arr[i], "
    "); + count = 0; + } else { + t += "".concat(arr[i], " "); + } + } + } catch (e) {// Do nothing + } + + return t; + } + }, { + key: "makeDataGroupSortable", + value: function makeDataGroupSortable(field, obj) { + obj.data('field', field); + obj.data('firstSort', true); + obj.sortable({ + create: function create() { + $(this).height($(this).height()); + }, + 'ui-floating': false, + start: function start(e, uiStart) { + $('#sortable-ul-selector-id').sortable({ + sort: function sort(event, ui) { + var $target = $(event.target); + + if (!/html|body/i.test($target.offsetParent()[0].tagName)) { + var top = event.pageY - $target.offsetParent().offset().top - ui.helper.outerHeight(true) / 2; + ui.helper.css({ + top: "".concat(top, "px") + }); + } + } + }); + }, + revert: true, + stop: function stop() { + modJs.orderDataGroup($(this).data('field')); + }, + axis: 'y', + scroll: false, + placeholder: 'sortable-placeholder', + cursor: 'move' + }); + } + }, { + key: "orderDataGroup", + value: function orderDataGroup(field, callback) { + var newArr = []; + var id; + var list = $("#".concat(field[0], "_div_inner [fieldid='").concat(field[0], "_div']")); + var val = $("#".concat(field[0])).val(); + + if (val === '' || val == null) { + val = '[]'; + } + + var data = JSON.parse(val); + list.each(function () { + id = $(this).attr('id'); + + for (var index in data) { + if (data[index].id === id) { + newArr.push(data[index]); + break; + } + } + }); + $("#".concat(field[0])).val(JSON.stringify(newArr)); + + if (callback != null) { + callback(newArr); + } + } + }, { + key: "editDataGroup", + value: function editDataGroup(callback, existingData) { + var field = this.currentDataGroupField; + var id = this.currentDataGroupItemId; + var validator = new _FormValidation["default"]("".concat(this.getTableName(), "_field_").concat(field[0]), true, { + ShowPopup: false, + LabelErrorClass: 'error' + }); + + if (validator.checkValues()) { + var params = validator.getFormParameters(); + + if (field[1]['custom-validate-function'] !== undefined && field[1]['custom-validate-function'] != null) { + var tempParams = field[1]['custom-validate-function'].apply(this, [params]); + + if (tempParams.valid) { + params = tempParams.params; + } else { + $("#".concat(this.getTableName(), "_field_").concat(field[0], "_error")).html(tempParams.message); + $("#".concat(this.getTableName(), "_field_").concat(field[0], "_error")).show(); + return false; + } + } + + if (this.doCustomFilterValidation(params)) { + var val = '[]'; + + if (existingData) { + val = existingData; + } else { + val = $("#".concat(field[0])).val(); + + if (val === '' || val == null) { + val = '[]'; + } + } + + var data = JSON.parse(val); + var editVal = {}; + var editValIndex = -1; + var newVals = []; + + for (var i = 0; i < data.length; i++) { + var item = data[i]; + + if (item.id === id) { + editVal = item; + editValIndex = i; + } + + newVals.push(item); + } + + params.id = editVal.id; + newVals[editValIndex] = params; + + if (field[1]['sort-function'] !== undefined && field[1]['sort-function'] != null) { + newVals.sort(field[1]['sort-function']); + } + + val = JSON.stringify(newVals); + $("#".concat(field[0])).val(val); + var html = this.dataGroupToHtml(val, field); + + if (callback) { + callback(newVals); + } + + this.orderDataGroup(field); + $("#".concat(field[0], "_div")).html(''); + $("#".concat(field[0], "_div")).append(html); + this.makeDataGroupSortable(field, $("#".concat(field[0], "_div_inner"))); + this.closeDataMessage(); + this.showMessage('Item Edited', 'This change will be effective only when you save the form'); + } + } + + return true; + } + }, { + key: "editDataGroupItem", + value: function editDataGroupItem(id, existingData, field) { + var fieldId = id.substring(0, id.lastIndexOf('_')); + var val; + + if (existingData) { + val = decodeURI(existingData); + } else { + val = $("#".concat(fieldId)).val(); + } + + var data = JSON.parse(val); + var editVal = {}; + + for (var i = 0; i < data.length; i++) { + var item = data[i]; + + if (item.id === id) { + editVal = item; + } + } + + if (field) { + field = JSON.parse(decodeURI(field)); + } else { + field = $("#".concat(fieldId)).data('field'); + } + + this.showDataGroup(field, editVal); + } + }, { + key: "dataGroupGetNextAutoIncrementId", + value: function dataGroupGetNextAutoIncrementId(data) { + var autoId = 1; + var id; + + for (var i = 0; i < data.length; i++) { + var item = data[i]; + + if (item.id === undefined || item.id == null) { + item.id = 1; + } + + id = item.id.substring(item.id.lastIndexOf('_') + 1, item.id.length); + + if (id >= autoId) { + autoId = parseInt(id, 10) + 1; + } + } + + return autoId; + } + }, { + key: "deleteDataGroupItem", + value: function deleteDataGroupItem(id, existingData) { + var fieldId = id.substring(0, id.lastIndexOf('_')); + var val; + + if (existingData) { + val = decodeURI(existingData); + } else { + val = $("#".concat(fieldId)).val(); + } + + var data = JSON.parse(val); + var newVal = []; + + for (var i = 0; i < data.length; i++) { + var item = data[i]; + + if (item.id !== id) { + newVal.push(item); + } + } + + $("#".concat(fieldId)).val(JSON.stringify(newVal)); + $("#".concat(id)).remove(); + this.showMessage('Item Removed', 'Item removed. This change will be effective only when you save the form'); + } + /** + * Fill a form with required values after showing it + * @method fillForm + * @param object {Array} form data + * @param formId {String} id of the form + * @param formId {Array} field meta data + */ + + }, { + key: "fillForm", + value: function fillForm(object, formId, fields) { + var placeHolderVal; + + if (fields == null || fields === undefined) { + fields = this.getFormFields(); + } + + if (formId == null || formId === undefined || formId === '') { + formId = "#".concat(this.getTableName(), "Form"); + } + + for (var i = 0; i < fields.length; i++) { + if (fields[i][1].type === 'date') { + if (object[fields[i][0]] !== '0000-00-00' && object[fields[i][0]] !== '' && object[fields[i][0]] != null && object[fields[i][0]] !== undefined) { + $("".concat(formId, " #").concat(fields[i][0], "_date")).datepicker('setValue', object[fields[i][0]]); + } + } else if (fields[i][1].type === 'colorpick') { + if (object[fields[i][0]] != null && object[fields[i][0]] !== undefined) { + $("".concat(formId, " #").concat(fields[i][0], "_colorpick")).colorpicker('setValue', object[fields[i][0]]); + $("".concat(formId, " #").concat(fields[i][0])).val(object[fields[i][0]]); + } + } else if (fields[i][1].type === 'datetime' || fields[i][1].type === 'time') { + if (object[fields[i][0]] !== '0000-00-00 00:00:00' && object[fields[i][0]] !== '' && object[fields[i][0]] != null && object[fields[i][0]] !== undefined) { + var tempDate = object[fields[i][0]]; + var arr = tempDate.split(' '); + var dateArr = arr[0].split('-'); + var timeArr = arr[1].split(':'); + $("".concat(formId, " #").concat(fields[i][0], "_datetime")).data('datetimepicker').setLocalDate(new Date(dateArr[0], parseInt(dateArr[1], 10) - 1, dateArr[2], timeArr[0], timeArr[1], timeArr[2])); + } + } else if (fields[i][1].type === 'label') { + $("".concat(formId, " #").concat(fields[i][0])).html(object[fields[i][0]]); + } else if (fields[i][1].type === 'placeholder') { + if (fields[i][1]['remote-source'] !== undefined && fields[i][1]['remote-source'] != null) { + // const key = `${fields[i][1]['remote-source'][0]}_${fields[i][1]['remote-source'][1]}_${fields[i][1]['remote-source'][2]}`; + var key = this.getRemoteSourceKey(fields[i]); + placeHolderVal = this.fieldMasterData[key][object[fields[i][0]]]; + } else { + placeHolderVal = object[fields[i][0]]; + } + + if (placeHolderVal === undefined || placeHolderVal == null) { + placeHolderVal = ''; + } else { + try { + placeHolderVal = placeHolderVal.replace(/(?:\r\n|\r|\n)/g, '
    '); + } catch (e) {// Do nothing + } + } + + if (fields[i][1].formatter !== undefined && fields[i][1].formatter && $.isFunction(fields[i][1].formatter)) { + try { + placeHolderVal = fields[i][1].formatter(placeHolderVal); + } catch (e) {// Do nothing + } + } + + $("".concat(formId, " #").concat(fields[i][0])).html(placeHolderVal); + } else if (fields[i][1].type === 'fileupload') { + if (object[fields[i][0]] != null && object[fields[i][0]] !== undefined && object[fields[i][0]] !== '') { + $("".concat(formId, " #").concat(fields[i][0])).html(object[fields[i][0]]); + $("".concat(formId, " #").concat(fields[i][0])).attr('val', object[fields[i][0]]); + $("".concat(formId, " #").concat(fields[i][0])).show(); + $("".concat(formId, " #").concat(fields[i][0], "_download")).show(); + $("".concat(formId, " #").concat(fields[i][0], "_remove")).show(); + } + + if (fields[i][1].readonly === true) { + $("".concat(formId, " #").concat(fields[i][0], "_upload")).remove(); + } + } else if (fields[i][1].type === 'select') { + if (object[fields[i][0]] === undefined || object[fields[i][0]] == null || object[fields[i][0]] === '') { + object[fields[i][0]] = 'NULL'; + } + + $("".concat(formId, " #").concat(fields[i][0])).val(object[fields[i][0]]); + } else if (fields[i][1].type === 'select2') { + if (object[fields[i][0]] === undefined || object[fields[i][0]] == null || object[fields[i][0]] === '') { + object[fields[i][0]] = 'NULL'; + } + + $("".concat(formId, " #").concat(fields[i][0])).select2('val', object[fields[i][0]]); + } else if (fields[i][1].type === 'select2multi') { + // TODO - SM + if (object[fields[i][0]] === undefined || object[fields[i][0]] == null || object[fields[i][0]] === '') { + object[fields[i][0]] = 'NULL'; + } + + var msVal = []; + + if (object[fields[i][0]] !== undefined && object[fields[i][0]] != null && object[fields[i][0]] !== '') { + try { + msVal = JSON.parse(object[fields[i][0]]); + } catch (e) {// Do nothing + } + } + + $("".concat(formId, " #").concat(fields[i][0])).select2('val', msVal); + var select2Height = $("".concat(formId, " #").concat(fields[i][0])).find('.select2-choices').height(); + $("".concat(formId, " #").concat(fields[i][0])).find('.controls').css('min-height', "".concat(select2Height, "px")); + $("".concat(formId, " #").concat(fields[i][0])).css('min-height', "".concat(select2Height, "px")); + } else if (fields[i][1].type === 'datagroup') { + try { + var html = this.dataGroupToHtml(object[fields[i][0]], fields[i]); + $("".concat(formId, " #").concat(fields[i][0])).val(object[fields[i][0]]); + $("".concat(formId, " #").concat(fields[i][0], "_div")).html(''); + $("".concat(formId, " #").concat(fields[i][0], "_div")).append(html); + this.makeDataGroupSortable(fields[i], $("".concat(formId, " #").concat(fields[i][0], "_div_inner"))); + } catch (e) {// Do nothing + } + } else if (fields[i][1].type === 'signature') { + if (object[fields[i][0]] !== '' || object[fields[i][0]] !== undefined || object[fields[i][0]] != null) { + $("".concat(formId, " #").concat(fields[i][0])).data('signaturePad').fromDataURL(object[fields[i][0]]); + } + } else if (fields[i][1].type === 'simplemde') { + $("".concat(formId, " #").concat(fields[i][0])).data('simplemde').value(object[fields[i][0]]); + } else if (fields[i][1].type === 'code') { + var cm = $("".concat(formId, " #").concat(fields[i][0])).data('codemirror'); + + if (cm) { + cm.getDoc().setValue(object[fields[i][0]]); + } + } else { + $("".concat(formId, " #").concat(fields[i][0])).val(object[fields[i][0]]); + } + } + } + /** + * Cancel edit or add new on modules + * @method cancel + */ + + }, { + key: "cancel", + value: function cancel() { + $("#".concat(this.getTableName(), "Form")).hide(); + $("#".concat(this.getTableName())).show(); + } + }, { + key: "renderFormField", + value: function renderFormField(field) { + var userId = 0; + + if (this.fieldTemplates[field[1].type] === undefined || this.fieldTemplates[field[1].type] == null) { + return ''; + } + + var t = this.fieldTemplates[field[1].type]; + field[1].label = this.gt(field[1].label); + + if (field[1].validation !== 'none' && field[1].validation !== 'emailOrEmpty' && field[1].validation !== 'numberOrEmpty' && field[1].type !== 'placeholder' && field[1].label.indexOf('*') < 0) { + var tempSelectBoxes = ['select', 'select2']; + + if (!(tempSelectBoxes.indexOf(field[1].type) >= 0 && field[1]['allow-null'] === true)) { + field[1].label = "".concat(field[1].label, "*"); + } + } + + if (field[1].type === 'select' || field[1].type === 'select2' || field[1].type === 'select2multi') { + t = t.replace(/_id_/g, field[0]); + t = t.replace(/_label_/g, field[1].label); + + if (field[1].source !== undefined && field[1].source != null) { + t = t.replace('_options_', this.renderFormSelectOptions(field[1].source, field)); + } else if (field[1]['remote-source'] !== undefined && field[1]['remote-source'] != null) { + // let key = `${field[1]['remote-source'][0]}_${field[1]['remote-source'][1]}_${field[1]['remote-source'][2]}`; + // if (field[1]['remote-source'].length === 4) { + // key = `${key}_${field[1]['remote-source'][3]}`; + // } + var key = this.getRemoteSourceKey(field); + t = t.replace('_options_', this.renderFormSelectOptionsRemote(this.fieldMasterData[key], field)); + } + } else if (field[1].type === 'colorpick') { + t = t.replace(/_id_/g, field[0]); + t = t.replace(/_label_/g, field[1].label); + } else if (field[1].type === 'date') { + t = t.replace(/_id_/g, field[0]); + t = t.replace(/_label_/g, field[1].label); + } else if (field[1].type === 'datetime') { + t = t.replace(/_id_/g, field[0]); + t = t.replace(/_label_/g, field[1].label); + } else if (field[1].type === 'time') { + t = t.replace(/_id_/g, field[0]); + t = t.replace(/_label_/g, field[1].label); + } else if (field[1].type === 'fileupload') { + t = t.replace(/_id_/g, field[0]); + t = t.replace(/_label_/g, field[1].label); + var ce = this.getCurrentProfile(); + + if (ce != null && ce !== undefined) { + userId = ce.id; + } else { + userId = this.getUser().id * -1; + } + + t = t.replace(/_userId_/g, userId); + t = t.replace(/_group_/g, this.tab); + + if (field[1].filetypes !== undefined && field[1].filetypes != null) { + t = t.replace(/_filetypes_/g, field[1].filetypes); + } else { + t = t.replace(/_filetypes_/g, 'all'); + } + + t = t.replace(/_rand_/g, this.generateRandom(14)); + } else if (field[1].type === 'datagroup') { + t = t.replace(/_id_/g, field[0]); + t = t.replace(/_label_/g, field[1].label); + } else if (field[1].type === 'signature') { + t = t.replace(/_id_/g, field[0]); + t = t.replace(/_label_/g, field[1].label); + } else if (field[1].type === 'tinymce' || field[1].type === 'simplemde') { + t = t.replace(/_id_/g, field[0]); + t = t.replace(/_label_/g, field[1].label); + } else { + t = t.replace(/_id_/g, field[0]); + t = t.replace(/_label_/g, field[1].label); + } + + if (field[1].validation !== undefined && field[1].validation != null && field[1].validation !== '') { + t = t.replace(/_validation_/g, "validation=\"".concat(field[1].validation, "\"")); + } else { + t = t.replace(/_validation_/g, ''); + } + + if (field[1].help !== undefined && field[1].help !== null) { + t = t.replace(/_helpline_/g, field[1].help); + t = t.replace(/_hidden_class_help_/g, ''); + } else { + t = t.replace(/_helpline_/g, ''); + t = t.replace(/_hidden_class_help_/g, 'hide'); + } + + if (field[1].placeholder !== undefined && field[1].placeholder !== null) { + t = t.replace(/_placeholder_/g, "placeholder=\"".concat(field[1].placeholder, "\"")); + } else { + t = t.replace(/_placeholder_/g, ''); + } + + if (field[1].mask !== undefined && field[1].mask !== null) { + t = t.replace(/_mask_/g, "mask=\"".concat(field[1].mask, "\"")); + } else { + t = t.replace(/_mask_/g, ''); + } + + return t; + } + }, { + key: "renderFormSelectOptions", + value: function renderFormSelectOptions(options, field) { + var html = ''; + + if (field != null && field !== undefined) { + if (field[1]['allow-null'] === true) { + if (field[1]['null-label'] !== undefined && field[1]['null-label'] != null) { + html += ""); + } else { + html += ''; + } + } + } // Sort options + + + var tuples = []; + + for (var key in options) { + tuples.push(options[key]); + } + + if (field[1].sort === true) { + tuples.sort(function (a, b) { + a = a[1]; + b = b[1]; // eslint-disable-next-line no-nested-ternary + + return a < b ? -1 : a > b ? 1 : 0; + }); + } + + for (var i = 0; i < tuples.length; i++) { + var prop = tuples[i][0]; + var value = tuples[i][1]; + var t = ''; + t = t.replace('_id_', prop); + t = t.replace('_val_', this.gt(value)); + html += t; + } + + return html; + } + }, { + key: "renderFormSelectOptionsRemote", + value: function renderFormSelectOptionsRemote(options, field) { + var html = ''; + + if (field[1]['allow-null'] === true) { + if (field[1]['null-label'] !== undefined && field[1]['null-label'] != null) { + html += ""); + } else { + html += ''; + } + } // Sort options + + + var tuples = []; + + for (var key in options) { + tuples.push([key, options[key]]); + } + + if (field[1].sort === 'true') { + tuples.sort(function (a, b) { + a = a[1]; + b = b[1]; // eslint-disable-next-line no-nested-ternary + + return a < b ? -1 : a > b ? 1 : 0; + }); + } + + for (var i = 0; i < tuples.length; i++) { + var prop = tuples[i][0]; + var value = tuples[i][1]; + var t = ''; + t = t.replace('_id_', prop); + t = t.replace('_val_', this.gt(value)); + html += t; + } + + return html; + } + }, { + key: "setCustomTemplates", + value: function setCustomTemplates(templates) { + this.customTemplates = templates; + } + }, { + key: "setEmailTemplates", + value: function setEmailTemplates(templates) { + this.emailTemplates = templates; + } + }, { + key: "getCustomTemplate", + value: function getCustomTemplate(file) { + return this.customTemplates[file]; + } + }, { + key: "setFieldTemplates", + value: function setFieldTemplates(templates) { + this.fieldTemplates = templates; + } + }, { + key: "getMetaFieldForRendering", + value: function getMetaFieldForRendering(fieldName) { + return ''; + } + }, { + key: "clearDeleteParams", + value: function clearDeleteParams() { + this.deleteParams = {}; + } + }, { + key: "getShowAddNew", + value: function getShowAddNew() { + return this.showAddNew; + } + /** + * Override this method to change add new button label + * @method getAddNewLabel + */ + + }, { + key: "getAddNewLabel", + value: function getAddNewLabel() { + return 'Add New'; + } + /** + * Used to set whether to show the add new button for a module + * @method setShowAddNew + * @param showAddNew {Boolean} value + */ + + }, { + key: "setShowAddNew", + value: function setShowAddNew(showAddNew) { + this.showAddNew = showAddNew; + } + /** + * Used to set whether to show delete button for each entry in module + * @method setShowDelete + * @param val {Boolean} value + */ + + }, { + key: "setShowDelete", + value: function setShowDelete(val) { + this.showDelete = val; + } + /** + * Used to set whether to show edit button for each entry in module + * @method setShowEdit + * @param val {Boolean} value + */ + + }, { + key: "setShowEdit", + value: function setShowEdit(val) { + this.showEdit = val; + } + /** + * Used to set whether to show save button in form + * @method setShowSave + * @param val {Boolean} value + */ + + }, { + key: "setShowSave", + value: function setShowSave(val) { + this.showSave = val; + } + /** + * Used to set whether to show cancel button in form + * @method setShowCancel + * @param val {Boolean} value + */ + + }, { + key: "setShowCancel", + value: function setShowCancel(val) { + this.showCancel = val; + } + /** + * Datatable option array will be extended with associative array provided here + * @method getCustomTableParams + * @param val {Boolean} value + */ + + }, { + key: "getCustomTableParams", + value: function getCustomTableParams() { + return {}; + } + }, { + key: "getActionButtons", + value: function getActionButtons(obj) { + return modJs.getActionButtonsHtml(obj.aData[0], obj.aData); + } + /** + * This return html for action buttons in each row. Override this method if you need to make changes to action buttons. + * @method getActionButtonsHtml + * @param id {int} id of the row + * @param data {Array} data for the row + * @returns {String} html for action buttons + */ + + }, { + key: "getActionButtonsHtml", + value: function getActionButtonsHtml(id, data) { + var editButton = ''; + var deleteButton = ''; + var cloneButton = ''; + var html = '
    _edit__delete__clone_
    '; + + if (this.showAddNew) { + html = html.replace('_clone_', cloneButton); + } else { + html = html.replace('_clone_', ''); + } + + if (this.showDelete) { + html = html.replace('_delete_', deleteButton); + } else { + html = html.replace('_delete_', ''); + } + + if (this.showEdit) { + html = html.replace('_edit_', editButton); + } else { + html = html.replace('_edit_', ''); + } + + html = html.replace(/_id_/g, id); + html = html.replace(/_BASE_/g, this.baseUrl); + return html; + } + /** + * Generates a random string + * @method generateRandom + * @param length {int} required length of the string + * @returns {String} random string + */ + + }, { + key: "generateRandom", + value: function generateRandom(length) { + var d = new Date(); + var chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; + var result = ''; + + for (var i = length; i > 0; --i) { + result += chars[Math.round(Math.random() * (chars.length - 1))]; + } + + return result + d.getTime(); + } + }, { + key: "checkFileType", + value: function checkFileType(elementName, fileTypes) { + var fileElement = document.getElementById(elementName); + var fileExtension = ''; + + if (fileElement.value.lastIndexOf('.') > 0) { + fileExtension = fileElement.value.substring(fileElement.value.lastIndexOf('.') + 1, fileElement.value.length); + } + + fileExtension = fileExtension.toLowerCase(); + var allowed = fileTypes.split(','); + + if (allowed.indexOf(fileExtension) < 0) { + fileElement.value = ''; + this.showMessage('File Type Error', 'Selected file type is not supported'); + this.clearFileElement(elementName); + return false; + } + + return true; + } + }, { + key: "clearFileElement", + value: function clearFileElement(elementName) { + var control = $("#".concat(elementName)); + control.replaceWith(control = control.val('').clone(true)); + } + }, { + key: "fixJSON", + value: function fixJSON(json) { + if (this.noJSONRequests === '1') { + json = window.btoa(json); + } + + return json; + } + }, { + key: "getClientDate", + value: function getClientDate(date) { + var offset = this.getClientGMTOffset(); + var tzDate = date.addMinutes(offset * 60); + return tzDate; + } + }, { + key: "getClientGMTOffset", + value: function getClientGMTOffset() { + var rightNow = new Date(); + var jan1 = new Date(rightNow.getFullYear(), 0, 1, 0, 0, 0, 0); + var temp = jan1.toGMTString(); + var jan2 = new Date(temp.substring(0, temp.lastIndexOf(' ') - 1)); + return (jan1 - jan2) / (1000 * 60 * 60); + } + /** + * Override this method in a module to provide the help link for the module. Help link of the module on frontend will get updated with this. + * @method getHelpLink + * @returns {String} help link + */ + + }, { + key: "getHelpLink", + value: function getHelpLink() { + return null; + } + }, { + key: "showLoader", + value: function showLoader() { + $('#iceloader').show(); + } + }, { + key: "hideLoader", + value: function hideLoader() { + $('#iceloader').hide(); + } + }, { + key: "generateOptions", + value: function generateOptions(data) { + var template = ''; + var options = ''; + + for (var index in data) { + options += template.replace('__val__', index).replace('__text__', data[index]); + } + + return options; + } + }, { + key: "isModuleInstalled", + value: function isModuleInstalled(type, name) { + if (modulesInstalled === undefined || modulesInstalled === null) { + return false; + } + + return modulesInstalled["".concat(type, "_").concat(name)] === 1; + } + }, { + key: "setCustomFields", + value: function setCustomFields(fields) { + var field; + var parsed; + + for (var i = 0; i < fields.length; i++) { + field = fields[i]; + + if (field.display !== 'Hidden' && field.data !== '' && field.data !== undefined) { + try { + parsed = JSON.parse(field.data); + + if (parsed === undefined || parsed == null) { + continue; + } else if (parsed.length !== 2) { + continue; + } else if (parsed[1].type === undefined || parsed[1].type == null) { + continue; + } + + this.customFields.push(parsed); + } catch (e) {// Do nothing + } + } + } + } + }, { + key: "addCustomFields", + value: function addCustomFields(fields) { + for (var i = 0; i < this.customFields.length; i++) { + fields.push(this.customFields[i]); + } + + return fields; + } + }, { + key: "getImageUrlFromName", + value: function getImageUrlFromName(firstName, lastName) { + var seed = firstName.substring(0, 1); + + if (!lastName && lastName.length > 0) { + seed += firstName.substring(firstName.length - 1, 1); + } else { + seed += lastName.substring(0, 1); + } + + var arr = "".concat(firstName).concat(lastName).split(''); + seed += arr.reduce(function (acc, item) { + return parseInt(item.charCodeAt(0), 10) + acc; + }, 0); + return "https://avatars.dicebear.com/api/initials/:".concat(seed, ".svg"); + } + }, { + key: "downloadPdf", + value: function downloadPdf(type, data) { + var url = "".concat(this.clientUrl, "service.php?a=pdf&h=").concat(type, "&data=").concat(data); + window.open(url, '_blank'); + } + }]); + + return ModuleBase; +}(); + +var _default = ModuleBase; +exports["default"] = _default; + +},{"./FormValidation":44}],49:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _AdapterBase2 = _interopRequireDefault(require("./AdapterBase")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +/** + * ObjectAdapter + */ +var ObjectAdapter = /*#__PURE__*/function (_AdapterBase) { + _inherits(ObjectAdapter, _AdapterBase); + + var _super = _createSuper(ObjectAdapter); + + function ObjectAdapter(endPoint, tab, filter, orderBy) { + var _this; + + _classCallCheck(this, ObjectAdapter); + + _this = _super.call(this, endPoint, tab, filter, orderBy); + _this.container = null; + _this.loadMoreButton = null; + _this.start = 0; + _this.pageSize = 6; + _this.currentPage = 1; + _this.hasMoreData = true; + _this.searchTerm = ''; + _this.searchInput = null; + return _this; + } + + _createClass(ObjectAdapter, [{ + key: "getObjectHTML", + value: function getObjectHTML(object) { + var template = this.getCustomTemplate(this.getTemplateName()); + var t = template; + + for (var index in object) { + t = t.replace(new RegExp("#_".concat(index, "_#"), 'g'), object[index]); + } + + return t; + } + }, { + key: "setPageSize", + value: function setPageSize(pageSize) { + this.pageSize = pageSize; + } + }, { + key: "addDomEvents", + value: function addDomEvents(object) {} + }, { + key: "getTemplateName", + value: function getTemplateName() { + return ''; + } + }, { + key: "renderObject", + value: function renderObject(object) { + var objDom = this.getObjectDom(object.id); + var html = this.getObjectHTML(object); + var domObj = $(html); + + if (objDom !== undefined && objDom != null) { + objDom.replace(domObj); + } else { + this.container.append(domObj); + } + + this.addDomEvents(domObj); + } + }, { + key: "setContainer", + value: function setContainer(container) { + this.container = container; + } + }, { + key: "setLoadMoreButton", + value: function setLoadMoreButton(loadMoreButton) { + var that = this; + this.loadMoreButton = loadMoreButton; + this.loadMoreButton.off().on('click', function () { + that.loadMoreButton.attr('disabled', 'disabled'); + that.loadMore([]); + }); + } + }, { + key: "showLoadError", + value: function showLoadError(msg) { + $("#".concat(this.getTableName(), "_error")).html(msg); + $("#".concat(this.getTableName(), "_error")).show(); + } + }, { + key: "hideLoadError", + value: function hideLoadError() { + $("#".concat(this.getTableName(), "_error")).hide(); + } + }, { + key: "setSearchBox", + value: function setSearchBox(searchInput) { + var that = this; + this.searchInput = searchInput; + this.searchInput.off(); + this.searchInput.keydown(function (event) { + var val = $(this).val(); + + if (event.which === 13) { + event.preventDefault(); + that.search([]); + } else if ((event.which === 8 || event.which === 46) && val.length === 1 && that.searchTerm !== '') { + that.search([]); + } + }); + } + }, { + key: "getObjectDom", + value: function getObjectDom(id) { + var obj = this.container.find("#obj_".concat(id)); + + if (obj.length) { + return obj; + } + + return null; + } + }, { + key: "loadMore", + value: function loadMore(callBackData) { + if (!this.hasMoreData) { + return; + } + + this.currentPage++; + this.get(callBackData, true); + } + }, { + key: "get", + value: function get(callBackData, loadMore) { + var that = this; + this.hideLoadError(); + + if (!loadMore) { + this.currentPage = 1; + + if (this.container != null) { + this.container.html(''); + } + + this.hasMoreData = true; + this.tableData = []; + } + + this.start = (this.currentPage - 1) * this.pageSize; + this.container = $("#".concat(this.getTableName())).find('.objectList'); + that.showLoader(); + var url = "".concat(this.getDataUrl(that.getDataMapping()), "&iDisplayStart=").concat(this.start, "&iDisplayLength=").concat(this.pageSize, "&objects=1"); + + if (this.searchTerm !== '' && this.searchTerm !== undefined && this.searchTerm != null) { + url += "&sSearch=".concat(this.searchTerm); + } + + $.post(url, function (data) { + that.getSuccessCallBack(callBackData, data); + }, 'json').always(function () { + that.hideLoader(); + }); + that.initFieldMasterData(); + this.trackEvent('get', this.tab, this.table); + } + }, { + key: "search", + value: function search(callBackData) { + var that = this; + this.searchTerm = $("#".concat(this.getTableName(), "_search")).val(); + this.get(callBackData); + } + }, { + key: "getSuccessCallBack", + value: function getSuccessCallBack(callBackData, serverData) { + var data = []; + + if (serverData.length === 0 && this.container.html() === '') { + this.showLoadError('No Results Found !!!'); + return; + } + + try { + if (this.getFilters() == null) { + $("#".concat(this.getTableName(), "_filterBtn")).hide(); + $("#".concat(this.getTableName(), "_resetFilters")).hide(); + } else { + $("#".concat(this.getTableName(), "_filterBtn")).show(); + $("#".concat(this.getTableName(), "_resetFilters")).show(); + + if (this.currentFilterString !== '' && this.currentFilterString != null) { + $("#".concat(this.getTableName(), "_resetFilters")).html("".concat(this.currentFilterString, "")); + } else { + $("#".concat(this.getTableName(), "_resetFilters")).html('Reset Filters'); + $("#".concat(this.getTableName(), "_resetFilters")).hide(); + } + } + } catch (error) {// Do nothing + } + + $("#".concat(this.getTableName())).find('.search-controls').show(); + + if (serverData.length > this.pageSize) { + this.hasMoreData = true; + serverData.pop(); + + if (this.loadMoreButton !== null) { + this.loadMoreButton.removeAttr('disabled'); + this.loadMoreButton.show(); + } + } else { + this.hasMoreData = false; + + if (this.loadMoreButton !== null) { + this.loadMoreButton.hide(); + } + } + + this.scrollToElementBottom(this.container); + + for (var i = 0; i < serverData.length; i++) { + data.push(this.preProcessTableData(serverData[i])); + } + + this.sourceData = serverData; + + if (callBackData.callBack !== undefined && callBackData.callBack != null) { + if (callBackData.callBackData === undefined || callBackData.callBackData == null) { + callBackData.callBackData = []; + } + + callBackData.callBackData.push(serverData); + callBackData.callBackData.push(data); + this.callFunction(callBackData.callBack, callBackData.callBackData); + } + + this.tableData = data; + + if (!(callBackData.noRender !== undefined && callBackData.noRender != null && callBackData.noRender === true)) { + for (var _i = 0; _i < data.length; _i++) { + this.renderObject(data[_i]); + } + } + } + }]); + + return ObjectAdapter; +}(_AdapterBase2["default"]); + +var _default = ObjectAdapter; +exports["default"] = _default; + +},{"./AdapterBase":39}],50:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _react = _interopRequireDefault(require("react")); + +var _reactDom = _interopRequireDefault(require("react-dom")); + +var _antd = require("antd"); + +var _icons = require("@ant-design/icons"); + +var _AdapterBase2 = _interopRequireDefault(require("./AdapterBase")); + +var _IceFormModal = _interopRequireDefault(require("../components/IceFormModal")); + +var _IceStepFromModal = _interopRequireDefault(require("../components/IceStepFromModal")); + +var _IceTable = _interopRequireDefault(require("../components/IceTable")); + +var _MasterDataReader = _interopRequireDefault(require("./MasterDataReader")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var ReactModalAdapterBase = /*#__PURE__*/function (_AdapterBase) { + _inherits(ReactModalAdapterBase, _AdapterBase); + + var _super = _createSuper(ReactModalAdapterBase); + + _createClass(ReactModalAdapterBase, null, [{ + key: "MODAL_TYPE_NORMAL", + get: function get() { + return 'Normal'; + } + }, { + key: "MODAL_TYPE_STEPS", + get: function get() { + return 'Steps'; + } + }]); + + function ReactModalAdapterBase(endPoint, tab, filter, orderBy) { + var _this; + + _classCallCheck(this, ReactModalAdapterBase); + + _this = _super.call(this, endPoint, tab, filter, orderBy); + _this.modalType = _this.MODAL_TYPE_NORMAL; + _this.dataPipe = null; + _this.formInitialized = false; + _this.tableInitialized = false; + _this.access = []; + _this.localStorageEnabled = false; + _this.isV2 = true; + _this.masterDataReader = new _MasterDataReader["default"](_assertThisInitialized(_this)); + return _this; + } + + _createClass(ReactModalAdapterBase, [{ + key: "enableLocalStorage", + value: function enableLocalStorage() { + this.localStorageEnabled = true; + } + }, { + key: "setModalType", + value: function setModalType(type) { + this.modalType = type; + } + }, { + key: "setDataPipe", + value: function setDataPipe(dataPipe) { + this.dataPipe = dataPipe; + } + }, { + key: "setAccess", + value: function setAccess(access) { + this.access = access; + } + }, { + key: "hasAccess", + value: function hasAccess(type) { + return this.access.indexOf(type) > 0; + } + }, { + key: "hasCustomButtons", + value: function hasCustomButtons() { + return false; + } + }, { + key: "initTable", + value: function initTable() { + var _this2 = this; + + if (this.tableInitialized) { + return false; + } + + var tableDom = document.getElementById("".concat(this.tab, "Table")); + + if (tableDom) { + this.tableContainer = _react["default"].createRef(); + var columns = this.getTableColumns(); + + if (this.hasAccess('save') || this.hasAccess('delete') || this.hasAccess('element') || this.hasCustomButtons()) { + columns.push({ + title: 'Actions', + key: 'actions', + render: this.getTableActionButtonJsx(this) + }); + } + + columns = columns.map(function (item) { + item.title = _this2.gt(item.title); + return item; + }); + + _reactDom["default"].render( /*#__PURE__*/_react["default"].createElement(_IceTable["default"], { + ref: this.tableContainer, + reader: this.dataPipe, + columns: columns, + adapter: this + }, this.getTableChildComponents()), tableDom); + } + + this.tableInitialized = true; + return true; + } + }, { + key: "initForm", + value: function initForm() { + var _this3 = this; + + if (this.formInitialized) { + return false; + } + + this.formContainer = _react["default"].createRef(); + + if (this.modalType === this.MODAL_TYPE_NORMAL) { + _reactDom["default"].render( /*#__PURE__*/_react["default"].createElement(_IceFormModal["default"], { + ref: this.formContainer, + fields: this.getFormFields(), + adapter: this, + formReference: this.formReference + }), document.getElementById("".concat(this.tab, "Form"))); + } else { + _reactDom["default"].render( /*#__PURE__*/_react["default"].createElement(_IceStepFromModal["default"], { + ref: this.formContainer, + fields: this.getMappedFields(), + adapter: this, + formReference: this.formReference + }), document.getElementById("".concat(this.tab, "Form"))); + } + + var filterDom = document.getElementById("".concat(this.tab, "FilterForm")); + + if (filterDom && this.getFilters()) { + this.filtersContainer = _react["default"].createRef(); + + _reactDom["default"].render( /*#__PURE__*/_react["default"].createElement(_IceFormModal["default"], { + ref: this.filtersContainer, + fields: this.getFilters(), + adapter: this, + saveCallback: function saveCallback(values, showError, closeModal) { + _this3.setFilter(values); + + _this3.filtersAlreadySet = true; + + _this3.get([]); + + _this3.tableContainer.current.setFilterData(values); + + closeModal(); + } + }), filterDom); + } + + this.formInitialized = true; + return true; + } + }, { + key: "getTableChildComponents", + value: function getTableChildComponents() { + return false; + } + }, { + key: "reloadCurrentElement", + value: function reloadCurrentElement() { + this.viewElement(this.currentId); + } + }, { + key: "getTableActionButtonJsx", + value: function getTableActionButtonJsx(adapter) { + return function (text, record) { + return /*#__PURE__*/_react["default"].createElement(_antd.Space, { + size: "middle" + }, adapter.hasAccess('save') && adapter.showEdit && /*#__PURE__*/_react["default"].createElement(_antd.Tag, { + color: "green", + onClick: function onClick() { + return modJs.edit(record.id); + }, + style: { + cursor: 'pointer' + } + }, /*#__PURE__*/_react["default"].createElement(_icons.EditOutlined, null), " ".concat(adapter.gt('Edit'))), adapter.hasAccess('element') && /*#__PURE__*/_react["default"].createElement(_antd.Tag, { + color: "blue", + onClick: function onClick() { + return modJs.viewElement(record.id); + }, + style: { + cursor: 'pointer' + } + }, /*#__PURE__*/_react["default"].createElement(_icons.MonitorOutlined, null), " ".concat(adapter.gt('View'))), adapter.hasAccess('delete') && adapter.showDelete && /*#__PURE__*/_react["default"].createElement(_antd.Tag, { + color: "volcano", + onClick: function onClick() { + return modJs.deleteRow(record.id); + }, + style: { + cursor: 'pointer' + } + }, /*#__PURE__*/_react["default"].createElement(_icons.DeleteOutlined, null), " ".concat(adapter.gt('Delete'))), adapter.hasAccess('save') && /*#__PURE__*/_react["default"].createElement(_antd.Tag, { + color: "cyan", + onClick: function onClick() { + return modJs.copyRow(record.id); + }, + style: { + cursor: 'pointer' + } + }, /*#__PURE__*/_react["default"].createElement(_icons.CopyOutlined, null), " ".concat(adapter.gt('Copy')))); + }; + } + }, { + key: "setTableLoading", + value: function setTableLoading(value) { + this.tableContainer.current.setLoading(value); + } + /** + * Show the view form for an item + * @method viewElement + * @param id {int} id of the item to view + */ + + }, { + key: "viewElement", + value: function viewElement(id) { + var _this4 = this; + + this.setTableLoading(true); + this.currentId = id; + this.getElement(id, { + noRender: true, + callBack: function callBack(element) { + _this4.showElement(element); + + _this4.setTableLoading(false); + } + }); + } + }, { + key: "showElement", + value: function showElement(element) { + this.renderForm(element, true); + } + /** + * Show the edit form for an item + * @method edit + * @param id {int} id of the item to edit + */ + + }, { + key: "edit", + value: function edit(id) { + this.setTableLoading(true); + this.currentId = id; + this.getElement(id, []); + } + }, { + key: "renderForm", + value: function renderForm() { + var object = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; + var viewOnly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + + if (object == null) { + this.currentId = null; + this.currentElement = null; + } + + this.setTableLoading(false); + this.initForm(); + this.formContainer.current.setViewOnly(viewOnly); + this.formContainer.current.show(object); + } + }, { + key: "showFilters", + value: function showFilters() { + this.initForm(); + this.filtersContainer.current.show(this.filter); + } + }, { + key: "resetFilters", + value: function resetFilters() { + this.filter = this.origFilter; + this.filtersAlreadySet = false; + this.currentFilterString = ''; + this.get([]); + this.tableContainer.current.setFilterData(this.filter); + } + }, { + key: "get", + value: function get() { + var _this5 = this; + + if (this.tableContainer && this.tableContainer.current) { + this.tableContainer.current.setCurrentElement(null); + } + + this.initTable(); + this.masterDataReader.updateAllMasterData().then(function () { + _this5.tableContainer.current.reload(); + }); + this.trackEvent('get', this.tab, this.table); + } + }, { + key: "showLoader", + value: function showLoader() {// $('#iceloader').show(); + } + }, { + key: "addActualFieldsForStepModal", + value: function addActualFieldsForStepModal(steps, fields) { + return steps.map(function (item) { + item.fields = item.fields.reduce(function (acc, fieldName) { + var field = fields.find(function (_ref) { + var _ref2 = _slicedToArray(_ref, 1), + name = _ref2[0]; + + return name === fieldName; + }); + + if (field) { + acc.push(field); + } + + return acc; + }, []); + return item; + }); + } + }, { + key: "getFormOptions", + value: function getFormOptions() { + return { + width: 1024, + twoColumnLayout: false + }; + } + }]); + + return ReactModalAdapterBase; +}(_AdapterBase2["default"]); + +var _default = ReactModalAdapterBase; +exports["default"] = _default; + +},{"../components/IceFormModal":55,"../components/IceStepFromModal":60,"../components/IceTable":61,"./AdapterBase":39,"./MasterDataReader":47,"@ant-design/icons":"@ant-design/icons","antd":"antd","react":"react","react-dom":"react-dom"}],51:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _AdapterBase2 = _interopRequireDefault(require("./AdapterBase")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +/** + * TableEditAdapter + */ +var TableEditAdapter = /*#__PURE__*/function (_AdapterBase) { + _inherits(TableEditAdapter, _AdapterBase); + + var _super = _createSuper(TableEditAdapter); + + function TableEditAdapter(endPoint, tab, filter, orderBy) { + var _this; + + _classCallCheck(this, TableEditAdapter); + + _this = _super.call(this, endPoint, tab, filter, orderBy); + _this.cellDataUpdates = {}; + _this.modulePath = ''; + _this.rowFieldName = ''; + _this.columnFieldName = ''; + _this.rowTable = ''; + _this.columnTable = ''; + _this.valueTable = ''; + _this.csvData = []; + _this.columnIDMap = {}; + return _this; + } + + _createClass(TableEditAdapter, [{ + key: "setModulePath", + value: function setModulePath(path) { + this.modulePath = path; + } + }, { + key: "setRowFieldName", + value: function setRowFieldName(name) { + this.rowFieldName = name; + } + }, { + key: "setTables", + value: function setTables(rowTable, columnTable, valueTable) { + this.rowTable = rowTable; + this.columnTable = columnTable; + this.valueTable = valueTable; + } + }, { + key: "setColumnFieldName", + value: function setColumnFieldName(name) { + this.columnFieldName = name; + } + }, { + key: "getDataMapping", + value: function getDataMapping() { + return []; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return []; + } + }, { + key: "get", + value: function get() { + this.getAllData(); + } + }, { + key: "getAllData", + value: function getAllData(save) { + var req = {}; + req.rowTable = this.rowTable; + req.columnTable = this.columnTable; + req.valueTable = this.valueTable; + req = this.addAdditionalRequestData('getAllData', req); + req.save = save === undefined || save == null || save === false ? 0 : 1; + var reqJson = JSON.stringify(req); + var callBackData = []; + callBackData.callBackData = []; + callBackData.callBackSuccess = 'getAllDataSuccessCallBack'; + callBackData.callBackFail = 'getAllDataFailCallBack'; + this.customAction('getAllData', this.modulePath, reqJson, callBackData); + } + }, { + key: "getDataItem", + value: function getDataItem(row, column, allData) { + var columnData = allData[1]; + var rowData = allData[0]; + var serverData = allData[2]; + + if (column === -1) { + return rowData[row].name; + } + + return this.getDataItemByKeyValues(this.rowFieldName, rowData[row].id, this.columnFieldName, columnData[column].id, serverData); + } + }, { + key: "getDataItemByKeyValues", + value: function getDataItemByKeyValues(rowKeyName, rowKeyVal, colKeyName, colKeyVal, data) { + for (var i = 0; i < data.length; i++) { + if (data[i][rowKeyName] === rowKeyVal && data[i][colKeyName] === colKeyVal) { + return data[i].amount !== undefined && data[i].amount != null ? data[i].amount : ''; + } + } + + return ''; + } + }, { + key: "getAllDataSuccessCallBack", + value: function getAllDataSuccessCallBack(allData) { + var serverData = allData[2]; + var columnData = allData[1]; + var rowData = allData[0]; + var data = []; + + for (var i = 0; i < rowData.length; i++) { + var row = []; + + for (var j = -1; j < columnData.length; j++) { + row[j + 1] = this.getDataItem(i, j, allData); + } + + data.push(this.preProcessTableData(row)); + } + + this.sourceData = serverData; + this.tableData = data; + this.setHeaders(columnData, rowData); + this.createTable(this.getTableName()); + $("#".concat(this.getTableName(), "Form")).hide(); + $("#".concat(this.getTableName())).show(); + this.csvData = []; + var tmpRow = []; + + for (var _i = 0; _i < columnData.length; _i++) { + tmpRow.push(columnData[_i].name); + } + + tmpRow = this.modifyCSVHeader(tmpRow); + this.csvData.push(tmpRow); + + for (var _i2 = 0; _i2 < data.length; _i2++) { + this.csvData.push(data[_i2]); + } + } + }, { + key: "modifyCSVHeader", + value: function modifyCSVHeader(header) { + return header; + } + }, { + key: "getAllDataFailCallBack", + value: function getAllDataFailCallBack(callBackData, serverData) {} + }, { + key: "setHeaders", + value: function setHeaders(columns, rows) { + var headers = []; + headers.push({ + sTitle: '', + sWidth: '180px;' + }); + var sclass = ''; + this.columnIDMap = {}; + + for (var i = 0; i < columns.length; i++) { + this.columnIDMap[columns[i].id] = i; + + if (columns[i].editable === undefined || columns[i].editable == null || columns[i].editable === 'Yes') { + sclass = 'editcell'; + } else { + sclass = ''; + } + + headers.push({ + sTitle: columns[i].name, + sClass: sclass, + fnCreatedCell: function fnCreatedCell(nTd, sData, oData, iRow, iCol) { + $(nTd).data('colId', columns[iCol - 1].id); + $(nTd).data('rowId', rows[iRow].id); + } + }); + } + + this.headers = headers; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return this.headers; + } + }, { + key: "createTable", + value: function createTable(elementId) { + var data = this.getTableData(); + var headers = this.getHeaders(); + + if (this.showActionButtons()) { + headers.push({ + sTitle: '', + sClass: 'center' + }); + } + + if (this.showActionButtons()) { + for (var i = 0; i < data.length; i++) { + data[i].push(this.getActionButtonsHtml(data[i][0], data[i])); + } + } + + var html = ''; + html = "".concat(this.getTableTopButtonHtml(), "
    "); // Find current page + + var activePage = $("#".concat(elementId, " .dataTables_paginate .active a")).html(); + var start = 0; + + if (activePage !== undefined && activePage != null) { + start = parseInt(activePage, 10) * 15 - 15; + } + + $("#".concat(elementId)).html(html); + var dataTableParams = { + oLanguage: { + sLengthMenu: '_MENU_ records per page' + }, + aaData: data, + aoColumns: headers, + bSort: false, + iDisplayLength: 15, + iDisplayStart: start + }; + var customTableParams = this.getCustomTableParams(); + $.extend(dataTableParams, customTableParams); + $("#".concat(elementId, " #grid")).dataTable(dataTableParams); + $('.dataTables_paginate ul').addClass('pagination'); + $('.dataTables_length').hide(); + $('.dataTables_filter input').addClass('form-control'); + $('.dataTables_filter input').attr('placeholder', 'Search'); + $('.dataTables_filter label').contents().filter(function () { + return this.nodeType === 3; + }).remove(); // $('.tableActionButton').tooltip(); + + $("#".concat(elementId, " #grid")).editableTableWidget(); + $("#".concat(elementId, " #grid .editcell")).on('validate', function (evt, newValue) { + return modJs.validateCellValue($(this), evt, newValue); + }); + this.afterCreateTable(elementId); + } + }, { + key: "afterCreateTable", + value: function afterCreateTable(elementId) {} + }, { + key: "addCellDataUpdate", + value: function addCellDataUpdate(colId, rowId, data) { + this.cellDataUpdates["".concat(colId, "=").concat(rowId)] = [colId, rowId, data]; + } + }, { + key: "addAdditionalRequestData", + value: function addAdditionalRequestData(type, req) { + return req; + } + }, { + key: "sendCellDataUpdates", + value: function sendCellDataUpdates() { + var req = this.cellDataUpdates; + req.rowTable = this.rowTable; + req.columnTable = this.columnTable; + req.valueTable = this.valueTable; + req = this.addAdditionalRequestData('updateData', req); + var reqJson = JSON.stringify(req); + var callBackData = []; + callBackData.callBackData = []; + callBackData.callBackSuccess = 'updateDataSuccessCallBack'; + callBackData.callBackFail = 'updateDataFailCallBack'; + this.showLoader(); + this.customAction('updateData', this.modulePath, reqJson, callBackData); + } + }, { + key: "updateDataSuccessCallBack", + value: function updateDataSuccessCallBack(callBackData, serverData) { + this.hideLoader(); + modJs.cellDataUpdates = {}; + modJs.get(); + } + }, { + key: "updateDataFailCallBack", + value: function updateDataFailCallBack(callBackData, serverData) { + this.hideLoader(); + } + }, { + key: "sendAllCellDataUpdates", + value: function sendAllCellDataUpdates() { + var req = this.cellDataUpdates; + req.rowTable = this.rowTable; + req.columnTable = this.columnTable; + req.valueTable = this.valueTable; + req = this.addAdditionalRequestData('updateAllData', req); + var reqJson = JSON.stringify(req); + var callBackData = []; + callBackData.callBackData = []; + callBackData.callBackSuccess = 'updateDataAllSuccessCallBack'; + callBackData.callBackFail = 'updateDataAllFailCallBack'; + this.showLoader(); + this.customAction('updateAllData', this.modulePath, reqJson, callBackData); + } + }, { + key: "updateDataAllSuccessCallBack", + value: function updateDataAllSuccessCallBack(callBackData, serverData) { + this.hideLoader(); + modJs.cellDataUpdates = {}; + modJs.getAllData(true); + } + }, { + key: "updateDataAllFailCallBack", + value: function updateDataAllFailCallBack(callBackData, serverData) { + this.hideLoader(); + } + }, { + key: "showActionButtons", + value: function showActionButtons() { + return false; + } + }]); + + return TableEditAdapter; +}(_AdapterBase2["default"]); + +var _default = TableEditAdapter; +exports["default"] = _default; + +},{"./AdapterBase":39}],52:[function(require,module,exports){ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _react = _interopRequireWildcard(require("react")); + +var _reactColor = require("react-color"); + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function useComponentVisible(initialIsVisible) { + var _useState = (0, _react.useState)(initialIsVisible), + _useState2 = _slicedToArray(_useState, 2), + isComponentVisible = _useState2[0], + setIsComponentVisible = _useState2[1]; + + var ref = (0, _react.useRef)(null); + + var handleClickOutside = function handleClickOutside(event) { + if (ref.current && !ref.current.contains(event.target)) { + setIsComponentVisible(false); + } + }; + + (0, _react.useEffect)(function () { + document.addEventListener('click', handleClickOutside, true); + return function () { + document.removeEventListener('click', handleClickOutside, true); + }; + }); + return { + ref: ref, + isComponentVisible: isComponentVisible, + setIsComponentVisible: setIsComponentVisible + }; +} + +function IceColorPick(props) { + var value = props.value, + onChange = props.onChange, + readOnly = props.readOnly; + + var _useComponentVisible = useComponentVisible(true), + ref = _useComponentVisible.ref, + isComponentVisible = _useComponentVisible.isComponentVisible, + setIsComponentVisible = _useComponentVisible.setIsComponentVisible; + + var _useState3 = (0, _react.useState)(value || '#FFF'), + _useState4 = _slicedToArray(_useState3, 2), + color = _useState4[0], + setColor = _useState4[1]; + + var _useState5 = (0, _react.useState)(false), + _useState6 = _slicedToArray(_useState5, 2), + showPicker = _useState6[0], + setShowPicker = _useState6[1]; + + (0, _react.useEffect)(function () { + if (!isComponentVisible) { + setShowPicker(false); + } + }, [isComponentVisible]); + (0, _react.useEffect)(function () { + if (value) { + setColor(value); + } + }, [value]); + return /*#__PURE__*/_react["default"].createElement("div", { + className: "colorpicker-container" + }, /*#__PURE__*/_react["default"].createElement("div", { + className: "colorpicker-preview", + onClick: function onClick() { + if (!showPicker) { + setIsComponentVisible(true); + } + + setShowPicker(!showPicker); + }, + style: { + backgroundColor: color + } + }), /*#__PURE__*/_react["default"].createElement("div", { + ref: ref, + className: "colorpicker-component ".concat(readOnly || !showPicker ? 'hidden' : '') + }, /*#__PURE__*/_react["default"].createElement(_reactColor.SketchPicker, { + color: color, + disableAlpha: true, + presetColors: [], + onChangeComplete: function onChangeComplete(_ref) { + var hex = _ref.hex; + onChange(hex); + setColor(hex); + } + }))); +} + +var _default = IceColorPick; +exports["default"] = _default; + +},{"react":"react","react-color":365}],53:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _react = _interopRequireDefault(require("react")); + +var _antd = require("antd"); + +var _IceFormModal = _interopRequireDefault(require("./IceFormModal")); + +var _reactDom = _interopRequireDefault(require("react-dom")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var Option = _antd.Select.Option; + +var IceDataGroup = /*#__PURE__*/function (_React$Component) { + _inherits(IceDataGroup, _React$Component); + + var _super = _createSuper(IceDataGroup); + + function IceDataGroup(props) { + var _this; + + _classCallCheck(this, IceDataGroup); + + _this = _super.call(this, props); + _this.state = {}; + _this.onChange = props.onChange; + _this.formReference = _react["default"].createRef(); + return _this; + } + + _createClass(IceDataGroup, [{ + key: "render", + value: function render() { + var _this2 = this; + + var _this$props = this.props, + field = _this$props.field, + adapter = _this$props.adapter; + var value = this.props.value; + value = this.parseValue(value); + value = value.map(function (item) { + return _objectSpread({}, item, { + key: item.id + }); + }); + var columns = JSON.parse(JSON.stringify(field[1].columns)); + + if (!this.props.readOnly) { + columns.push({ + title: 'Action', + key: 'action', + render: function render(text, record) { + return _this2.getDefaultButtons(record.id); + } + }); + } + + return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, !this.props.readOnly && /*#__PURE__*/_react["default"].createElement(_antd.Space, { + direction: "horizontal" + }, /*#__PURE__*/_react["default"].createElement(_antd.Button, { + type: "link", + htmlType: "button", + onClick: function onClick() { + _this2.createForm(field, adapter, {}); + } + }, "Add"), /*#__PURE__*/_react["default"].createElement(_antd.Button, { + type: "link", + htmlType: "button", + danger: true, + onClick: function onClick() { + _this2.resetDataGroup(); + } + }, "Reset")), /*#__PURE__*/_react["default"].createElement(_antd.Table, { + columns: columns, + dataSource: value + })); + } + }, { + key: "createForm", + value: function createForm(field, adapter, object) { + this.formContainer = _react["default"].createRef(); + var formFields = field[1].form; + formFields.unshift(['id', { + label: 'ID', + type: 'hidden' + }]); + + _reactDom["default"].render( /*#__PURE__*/_react["default"].createElement(_IceFormModal["default"], { + ref: this.formContainer, + fields: formFields, + title: this.props.title, + adapter: adapter, + formReference: this.formReference, + saveCallback: this.save.bind(this), + cancelCallback: this.unmountForm.bind(this) + }), document.getElementById('dataGroup')); + + this.formContainer.current.show(object); + } + }, { + key: "unmountForm", + value: function unmountForm() { + _reactDom["default"].unmountComponentAtNode(document.getElementById('dataGroup')); + } + }, { + key: "show", + value: function show(data) { + var _this3 = this; + + if (!data) { + this.setState({ + visible: true + }); + this.updateFields(data); + } else { + this.setState({ + visible: true + }); + + if (this.formReference.current) { + this.updateFields(data); + } else { + this.waitForIt(function () { + return _this3.formReference.current != null; + }, function () { + _this3.updateFields(data); + }, 100); + } + } + } + }, { + key: "parseValue", + value: function parseValue(value) { + try { + value = JSON.parse(value); + } catch (e) { + value = []; + } + + if (value == null) { + value = []; + } + + return value; + } + }, { + key: "save", + value: function save(params, errorCallback, closeCallback) { + var _this$props2 = this.props, + field = _this$props2.field, + value = _this$props2.value; + + if (field[1]['custom-validate-function'] != null) { + var tempParams = field[1]['custom-validate-function'].apply(this, [params]); + + if (tempParams.valid) { + params = tempParams.params; + } else { + errorCallback(tempParams.message); + return false; + } + } + + var data = this.parseValue(value); + var newData = []; + + if (!params.id) { + params.id = "".concat(field[0], "_").concat(this.dataGroupGetNextAutoIncrementId(data)); + data.push(params); + newData = data; + } else { + for (var i = 0; i < data.length; i++) { + var item = data[i]; + + if (item.id !== params.id) { + newData.push(item); + } else { + newData.push(params); + } + } + } + + if (field[1]['sort-function'] != null) { + newData.sort(field[1]['sort-function']); + } + + var val = JSON.stringify(newData); + this.onChange(val); + this.unmountForm(); + } + }, { + key: "createCard", + value: function createCard(item) { + var field = this.props.field; + + if (field[1]['pre-format-function'] != null) { + item = field[1]['pre-format-function'].apply(this, [item]); + } + + var template = field[1].html; + var t = template.replace('#_delete_#', ''); + t = t.replace('#_edit_#', ''); + t = t.replace(/#_id_#/g, item.id); + + for (var key in item) { + var itemVal = item[key]; + + if (itemVal !== undefined && itemVal != null && typeof itemVal === 'string') { + itemVal = itemVal.replace(/(?:\r\n|\r|\n)/g, '
    '); + } + + t = t.replace("#_".concat(key, "_#"), itemVal); + } + + if (field[1].render !== undefined && field[1].render != null) { + t = t.replace('#_renderFunction_#', field[1].render(item)); + } + + return /*#__PURE__*/_react["default"].createElement(_antd.Card, { + key: item.id, + title: "", + extra: this.getDefaultButtons(item.id) + }, /*#__PURE__*/_react["default"].createElement("div", { + dangerouslySetInnerHTML: { + __html: t + } + })); + } + }, { + key: "getDefaultButtons", + value: function getDefaultButtons(id) { + var _this4 = this; + + return /*#__PURE__*/_react["default"].createElement(_antd.Space, null, /*#__PURE__*/_react["default"].createElement("a", { + href: "#", + onClick: function onClick() { + _this4.editDataGroupItem(id); + } + }, /*#__PURE__*/_react["default"].createElement("li", { + className: "fa fa-edit" + })), /*#__PURE__*/_react["default"].createElement("a", { + href: "#", + onClick: function onClick() { + _this4.deleteDataGroupItem(id); + } + }, /*#__PURE__*/_react["default"].createElement("li", { + className: "fa fa-times" + }))); + } + }, { + key: "deleteDataGroupItem", + value: function deleteDataGroupItem(id) { + var value = this.props.value; + var data = this.parseValue(value); + var newVal = []; + + for (var i = 0; i < data.length; i++) { + var item = data[i]; + + if (item.id !== id) { + newVal.push(item); + } + } + + var val = JSON.stringify(newVal); + this.onChange(val); + } + }, { + key: "editDataGroupItem", + value: function editDataGroupItem(id) { + var _this$props3 = this.props, + field = _this$props3.field, + adapter = _this$props3.adapter, + value = _this$props3.value; + var data = this.parseValue(value); + var editVal = {}; + + for (var i = 0; i < data.length; i++) { + var item = data[i]; + + if (item.id === id) { + editVal = item; + } + } + + this.createForm(field, adapter, editVal); + } + }, { + key: "resetDataGroup", + value: function resetDataGroup() { + this.onChange('[]'); + } + }, { + key: "dataGroupGetNextAutoIncrementId", + value: function dataGroupGetNextAutoIncrementId(data) { + var autoId = 1; + var id; + + for (var i = 0; i < data.length; i++) { + var item = data[i]; + + if (item.id === undefined || item.id == null) { + item.id = 1; + } + + id = item.id.substring(item.id.lastIndexOf('_') + 1, item.id.length); + + if (id >= autoId) { + autoId = parseInt(id, 10) + 1; + } + } + + return autoId; + } + }]); + + return IceDataGroup; +}(_react["default"].Component); + +var _default = IceDataGroup; +exports["default"] = _default; + +},{"./IceFormModal":55,"antd":"antd","react":"react","react-dom":"react-dom"}],54:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _react = _interopRequireDefault(require("react")); + +var _antd = require("antd"); + +var _moment = _interopRequireDefault(require("moment")); + +var _IceUpload = _interopRequireDefault(require("./IceUpload")); + +var _IceDataGroup = _interopRequireDefault(require("./IceDataGroup")); + +var _IceSelect = _interopRequireDefault(require("./IceSelect")); + +var _IceLabel = _interopRequireDefault(require("./IceLabel")); + +var _IceColorPick = _interopRequireDefault(require("./IceColorPick")); + +var _IceSignature = _interopRequireDefault(require("./IceSignature")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var ValidationRules = { + "float": function float(str) { + var floatstr = /^[-+]?[0-9]+(\.[0-9]+)?$/; + + if (str != null && str.match(floatstr)) { + return true; + } + + return false; + }, + number: function number(str) { + var numstr = /^[0-9]+$/; + + if (str != null && str.match(numstr)) { + return true; + } + + return false; + }, + numberOrEmpty: function numberOrEmpty(str) { + if (str === '') { + return true; + } + + var numstr = /^[0-9]+$/; + + if (str != null && str.match(numstr)) { + return true; + } + + return false; + }, + email: function email(str) { + var emailPattern = /^\s*[\w\-+_]+(\.[\w\-+_]+)*@[\w\-+_]+\.[\w\-+_]+(\.[\w\-+_]+)*\s*$/; + return str != null && emailPattern.test(str); + }, + emailOrEmpty: function emailOrEmpty(str) { + if (str === '') { + return true; + } + + var emailPattern = /^\s*[\w\-+_]+(\.[\w\-+_]+)*@[\w\-+_]+\.[\w\-+_]+(\.[\w\-+_]+)*\s*$/; + return str != null && emailPattern.test(str); + }, + username: function username(str) { + var username = /^[a-zA-Z0-9.-]+$/; + return str != null && username.test(str); + } +}; + +var IceForm = /*#__PURE__*/function (_React$Component) { + _inherits(IceForm, _React$Component); + + var _super = _createSuper(IceForm); + + function IceForm(props) { + var _this; + + _classCallCheck(this, IceForm); + + _this = _super.call(this, props); + _this.validationRules = {}; + _this.state = { + validations: {}, + errorMsg: false + }; + _this.formReference = _react["default"].createRef(); + return _this; + } + + _createClass(IceForm, [{ + key: "showError", + value: function showError(errorMsg) { + this.setState({ + errorMsg: errorMsg + }); + } + }, { + key: "hideError", + value: function hideError() { + this.setState({ + errorMsg: false + }); + } + }, { + key: "isReady", + value: function isReady() { + return this.formReference.current != null; + } + }, { + key: "validateFields", + value: function validateFields() { + return this.formReference.current.validateFields(); + } + }, { + key: "render", + value: function render() { + var _this$props = this.props, + fields = _this$props.fields, + twoColumnLayout = _this$props.twoColumnLayout, + adapter = _this$props.adapter; + var formInputs = []; + var formInputs1 = []; + var formInputs2 = []; + var columns = !twoColumnLayout ? 1 : 2; + + for (var i = 0; i < fields.length; i++) { + formInputs.push(adapter.beforeRenderFieldHook(fields[i][0], this.createFromField(fields[i], this.props.viewOnly), fields[i][1])); + } + + formInputs = formInputs.filter(function (input) { + return !!input; + }); + + for (var _i = 0; _i < formInputs.length; _i++) { + if (formInputs[_i] != null) { + if (columns === 1) { + formInputs1.push(formInputs[_i]); + } else if (_i % 2 === 0) { + formInputs1.push(formInputs[_i]); + } else { + formInputs2.push(formInputs[_i]); + } + } + } + + var onFormLayoutChange = function onFormLayoutChange() {}; + + return /*#__PURE__*/_react["default"].createElement(_antd.Form, { + ref: this.formReference, + labelCol: { + span: 6 + }, + wrapperCol: { + span: 16 + }, + layout: this.props.layout || 'horizontal', + initialValues: { + size: 'middle' + }, + onValuesChange: onFormLayoutChange, + size: "middle" + }, this.state.errorMsg && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_antd.Alert, { + message: this.state.errorMsg, + type: "error", + showIcon: true + }), /*#__PURE__*/_react["default"].createElement("br", null)), columns === 1 && formInputs1, columns === 2 && /*#__PURE__*/_react["default"].createElement(_antd.Row, { + gutter: 16 + }, /*#__PURE__*/_react["default"].createElement(_antd.Col, { + className: "gutter-row", + span: 12 + }, formInputs1), /*#__PURE__*/_react["default"].createElement(_antd.Col, { + className: "gutter-row", + span: 12 + }, formInputs2))); + } + }, { + key: "isValid", + value: function isValid() { + var _this2 = this; + + return Object.keys(this.validationRules).reduce(function (acc, fieldName) { + return acc && (_this2.state[fieldName] === 'success' || _this2.state[fieldName] == null); + }, true); + } + }, { + key: "validateOnChange", + value: function validateOnChange(event) { + var validationRule = this.validationRules[event.target.id]; + var validations = this.state.validations; + + if (validationRule) { + if (validationRule.rule(event.target.value)) { + this.state[event.target.id] = 'success'; + this.state["".concat(event.target.id, "_message")] = null; + } else { + this.state[event.target.id] = 'error'; + this.state["".concat(event.target.id, "_message")] = validationRule.message; + } + } + + this.setState({ + validations: validations + }); + } + }, { + key: "createFromField", + value: function createFromField(field) { + var viewOnly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + var userId = 0; + var rules = []; + var requiredRule = { + required: true + }; + + var _field = _slicedToArray(field, 2), + name = _field[0], + data = _field[1]; + + var _this$props2 = this.props, + adapter = _this$props2.adapter, + layout = _this$props2.layout; + var validationRule = null; + data.label = adapter.gt(data.label); + var labelSpan = layout === 'vertical' ? { + span: 24 + } : { + span: 6 + }; + var tempSelectBoxes = ['select', 'select2', 'select2multi']; + + if (tempSelectBoxes.indexOf(data.type) >= 0 && data['allow-null'] === true) { + requiredRule.required = false; + } else if (data.validation === 'none' || data.validation === 'emailOrEmpty' || data.validation === 'numberOrEmpty') { + requiredRule.required = false; + } else { + requiredRule.required = true; + requiredRule.message = this.generateFieldMessage(data.label); + } + + rules.push(requiredRule); + + if (data.type === 'hidden') { + requiredRule.required = false; + return /*#__PURE__*/_react["default"].createElement(_antd.Form.Item, { + labelCol: labelSpan, + style: { + display: 'none' + }, + label: data.label, + key: name, + name: name, + rules: rules + }, /*#__PURE__*/_react["default"].createElement(_antd.Input, null)); + } + + if (data.type === 'text') { + if (data.validation) { + data.validation = data.validation.replace('OrEmpty', ''); + validationRule = this.getValidationRule(data); + + if (validationRule) { + this.validationRules[name] = { + rule: validationRule, + message: "Invalid value for ".concat(data.label) + }; + } + } + + if (validationRule != null) { + return /*#__PURE__*/_react["default"].createElement(_antd.Form.Item, { + labelCol: labelSpan, + label: data.label, + key: name, + name: name, + rules: rules, + validateStatus: this.state[name], + help: this.state["".concat(name, "_message")] + }, viewOnly ? /*#__PURE__*/_react["default"].createElement(_IceLabel["default"], null) : /*#__PURE__*/_react["default"].createElement(_antd.Input, { + onChange: this.validateOnChange.bind(this) + })); + } + + return /*#__PURE__*/_react["default"].createElement(_antd.Form.Item, { + labelCol: labelSpan, + label: data.label, + key: name, + name: name, + rules: rules + }, viewOnly ? /*#__PURE__*/_react["default"].createElement(_IceLabel["default"], null) : /*#__PURE__*/_react["default"].createElement(_antd.Input, null)); + } + + if (data.type === 'textarea') { + if (!data.rows) { + data.rows = 4; + } + + return /*#__PURE__*/_react["default"].createElement(_antd.Form.Item, { + labelCol: labelSpan, + label: data.label, + key: name, + name: name, + rules: rules + }, viewOnly ? /*#__PURE__*/_react["default"].createElement(_IceLabel["default"], null) : /*#__PURE__*/_react["default"].createElement(_antd.Input.TextArea, { + rows: data.rows + })); + } + + if (data.type === 'date') { + return /*#__PURE__*/_react["default"].createElement(_antd.Form.Item, { + labelCol: labelSpan, + label: data.label, + key: name, + name: name, + rules: rules + }, /*#__PURE__*/_react["default"].createElement(_antd.DatePicker, { + disabled: viewOnly + })); + } + + if (data.type === 'datetime') { + return /*#__PURE__*/_react["default"].createElement(_antd.Form.Item, { + labelCol: labelSpan, + label: data.label, + key: name, + name: name, + rules: rules + }, /*#__PURE__*/_react["default"].createElement(_antd.DatePicker, { + format: "YYYY-MM-DD HH:mm:ss", + disabled: viewOnly + })); + } + + if (data.type === 'time') { + return /*#__PURE__*/_react["default"].createElement(_antd.Form.Item, { + labelCol: labelSpan, + label: data.label, + key: name, + name: name, + rules: rules + }, /*#__PURE__*/_react["default"].createElement(_antd.TimePicker, { + format: "HH:mm", + disabled: viewOnly + })); + } + + if (data.type === 'fileupload') { + var currentEmployee = adapter.getCurrentProfile(); + + if (currentEmployee != null) { + userId = currentEmployee.id; + } else { + userId = adapter.getUser().id * -1; + } + + if (data.filetypes == null) { + data.filetypes = '.doc,.docx,.xml,' + 'application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,' + 'image/*,' + '.pdf'; + } + + return /*#__PURE__*/_react["default"].createElement(_antd.Form.Item, { + labelCol: labelSpan, + name: name, + key: name, + label: data.label + }, /*#__PURE__*/_react["default"].createElement(_IceUpload["default"], { + user: userId, + fileGroup: adapter.tab, + fileName: name, + adapter: adapter, + accept: data.filetypes, + readOnly: viewOnly + })); + } + + if (data.type === 'datagroup') { + return /*#__PURE__*/_react["default"].createElement(_antd.Form.Item, { + labelCol: labelSpan, + name: name, + key: name, + label: data.label + }, /*#__PURE__*/_react["default"].createElement(_IceDataGroup["default"], { + adapter: adapter, + field: field, + title: data.label, + readOnly: viewOnly + })); + } + + if (data.type === 'select2' || data.type === 'select' || data.type === 'select2multi') { + return /*#__PURE__*/_react["default"].createElement(_antd.Form.Item, { + labelCol: labelSpan, + label: data.label, + key: name, + name: name, + rules: rules + }, /*#__PURE__*/_react["default"].createElement(_IceSelect["default"], { + adapter: adapter, + field: field, + readOnly: viewOnly + })); + } + + if (data.type === 'colorpick') { + return /*#__PURE__*/_react["default"].createElement(_antd.Form.Item, { + labelCol: labelSpan, + name: name, + key: name, + label: data.label + }, /*#__PURE__*/_react["default"].createElement(_IceColorPick["default"], { + adapter: adapter, + field: field, + title: data.label, + readOnly: viewOnly + })); + } + + if (data.type === 'signature') { + return /*#__PURE__*/_react["default"].createElement(_antd.Form.Item, { + labelCol: labelSpan, + label: data.label, + key: name, + name: name, + rules: rules + }, /*#__PURE__*/_react["default"].createElement(_IceSignature["default"], { + readOnly: viewOnly + })); + } + + return null; + } + }, { + key: "generateFieldMessage", + value: function generateFieldMessage(label) { + return "".concat(label, ": ").concat(this.props.adapter.gt('is required')); + } + }, { + key: "getValidationRule", + value: function getValidationRule(data) { + if (ValidationRules[data.validation] == null) { + return null; + } + + return ValidationRules[data.validation]; + } + }, { + key: "dataToFormFields", + value: function dataToFormFields(data, fields) { + for (var i = 0; i < fields.length; i++) { + var _fields$i = _slicedToArray(fields[i], 2), + key = _fields$i[0], + formInputData = _fields$i[1]; + + if (formInputData.type === 'date') { + data[key] = data[key] ? (0, _moment["default"])(data[key], 'YYYY-MM-DD') : null; + } else if (formInputData.type === 'datetime') { + data[key] = data[key] ? (0, _moment["default"])(data[key], 'YYYY-MM-DD HH:mm:ss') : null; + } else if (formInputData.type === 'time') { + data[key] = data[key] ? (0, _moment["default"])(data[key], 'HH:mm') : null; + } + } + + return data; + } + }, { + key: "formFieldsToData", + value: function formFieldsToData(params, fields) { + for (var i = 0; i < fields.length; i++) { + var _fields$i2 = _slicedToArray(fields[i], 2), + key = _fields$i2[0], + formInputData = _fields$i2[1]; + + if (formInputData.type === 'date') { + params[key] = params[key] ? params[key].format('YYYY-MM-DD') : 'NULL'; + } else if (formInputData.type === 'datetime') { + params[key] = params[key] ? params[key].format('YYYY-MM-DD HH:mm:ss') : 'NULL'; + } else if (formInputData.type === 'time') { + params[key] = params[key] ? params[key].format('HH:mm') : 'NULL'; + } else if ((formInputData.type === 'select' || formInputData.type === 'select2') && params[key] == null) { + params[key] = 'NULL'; + } + } + + return params; + } + }, { + key: "updateFields", + value: function updateFields(data) { + var fields = this.props.fields; + data = this.dataToFormFields(data, fields); + this.formReference.current.resetFields(); + + if (data == null) { + return; + } + + try { + this.formReference.current.setFieldsValue(data); + } catch (e) { + console.log(e); + } + } + }, { + key: "resetFields", + value: function resetFields() { + this.formReference.current.resetFields(); + } + }, { + key: "setFieldsValue", + value: function setFieldsValue(data) { + this.formReference.current.setFieldsValue(data); + } + }, { + key: "save", + value: function save(params, success) { + var _this3 = this; + + var _this$props3 = this.props, + adapter = _this$props3.adapter, + fields = _this$props3.fields; + var values = params; + values = adapter.forceInjectValuesBeforeSave(values); + var msg = adapter.doCustomValidation(values); + + if (msg !== null) { + this.showError(msg); + return; + } + + if (adapter.csrfRequired) { + values.csrf = $("#".concat(adapter.getTableName(), "Form")).data('csrf'); + } + + var id = adapter.currentElement != null ? adapter.currentElement.id : null; + + if (id != null && id !== '') { + values.id = id; + } + + values = this.formFieldsToData(values, fields); + adapter.add(values, [], function () { + return adapter.get([]); + }, function () { + _this3.formReference.current.resetFields(); + + _this3.showError(false); + + success(); + }); + } + }]); + + return IceForm; +}(_react["default"].Component); + +var _default = IceForm; +exports["default"] = _default; + +},{"./IceColorPick":52,"./IceDataGroup":53,"./IceLabel":56,"./IceSelect":57,"./IceSignature":58,"./IceUpload":62,"antd":"antd","moment":"moment","react":"react"}],55:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _react = _interopRequireDefault(require("react")); + +var _antd = require("antd"); + +var _IceForm = _interopRequireDefault(require("./IceForm")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var IceFormModal = /*#__PURE__*/function (_React$Component) { + _inherits(IceFormModal, _React$Component); + + var _super = _createSuper(IceFormModal); + + function IceFormModal(props) { + var _this; + + _classCallCheck(this, IceFormModal); + + _this = _super.call(this, props); + _this.state = { + visible: false, + viewOnly: false, + loading: false + }; + _this.iceFormReference = _react["default"].createRef(); + _this.width = 800; + return _this; + } + + _createClass(IceFormModal, [{ + key: "setViewOnly", + value: function setViewOnly(value) { + this.setState({ + viewOnly: value + }); + } + }, { + key: "show", + value: function show(data) { + var _this2 = this; + + this.props.adapter.beforeRenderFieldHook = this.props.adapter.beforeRenderField ? this.props.adapter.beforeRenderField(data) : function (fieldName, field) { + return field; + }; + + if (!data) { + this.setState({ + visible: true + }); + + if (this.iceFormReference.current) { + this.iceFormReference.current.resetFields(); + } + } else { + this.setState({ + visible: true + }); + + if (this.iceFormReference.current && this.iceFormReference.current.isReady()) { + this.iceFormReference.current.updateFields(data); + } else { + this.waitForIt(function () { + return _this2.iceFormReference.current && _this2.iceFormReference.current.isReady(); + }, function () { + _this2.iceFormReference.current.updateFields(data); + }, 1000); + } + } + } + }, { + key: "waitForIt", + value: function waitForIt(condition, callback, time) { + var _this3 = this; + + setTimeout(function () { + if (condition()) { + callback(); + } else { + _this3.waitForIt(condition, callback, time); + } + }, time); + } + }, { + key: "hide", + value: function hide() { + this.setState({ + visible: false + }); + } + }, { + key: "save", + value: function save(params) { + var _this4 = this; + + this.iceFormReference.current.save(params, function () { + _this4.closeModal(); + }); + } + }, { + key: "closeModal", + value: function closeModal() { + this.hide(); + this.iceFormReference.current.showError(false); + } + }, { + key: "render", + value: function render() { + var _this5 = this; + + var _this$props = this.props, + fields = _this$props.fields, + adapter = _this$props.adapter, + saveCallback = _this$props.saveCallback, + cancelCallback = _this$props.cancelCallback; + var additionalProps = {}; + additionalProps.footer = /*#__PURE__*/_react["default"].createElement(_antd.Row, { + gutter: 16 + }, /*#__PURE__*/_react["default"].createElement(_antd.Col, { + className: "gutter-row", + span: 12, + style: {} + }), /*#__PURE__*/_react["default"].createElement(_antd.Col, { + className: "gutter-row", + span: 12, + style: { + textAlign: 'right' + } + }, /*#__PURE__*/_react["default"].createElement(_antd.Space, null, /*#__PURE__*/_react["default"].createElement(_antd.Button, { + onClick: function onClick() { + if (cancelCallback) { + cancelCallback(); + } else { + _this5.closeModal(); + } + } + }, this.props.adapter.gt('Cancel')), /*#__PURE__*/_react["default"].createElement(_antd.Button, { + loading: this.state.loading, + type: "primary", + onClick: function onClick() { + _this5.setState({ + loading: true + }); + + var iceFrom = _this5.iceFormReference.current; + iceFrom.validateFields().then(function (values) { + if (!iceFrom.isValid()) { + _this5.setState({ + loading: false + }); + + return; + } + + if (saveCallback) { + saveCallback(values, iceFrom.showError.bind(_this5), _this5.closeModal.bind(_this5)); + } else { + _this5.save(values); + } + + _this5.setState({ + loading: false + }); + })["catch"](function (info) { + _this5.setState({ + loading: false + }); + }); + } + }, this.state.viewOnly ? this.props.adapter.gt('Done') : this.props.adapter.gt('Save'))))); + + if (this.state.viewOnly) { + additionalProps.footer = null; + } + + return /*#__PURE__*/_react["default"].createElement(_antd.Modal, _extends({ + visible: this.state.visible, + title: this.props.adapter.gt(this.props.title || adapter.objectTypeName), + maskClosable: false, + width: this.width, + onCancel: function onCancel() { + if (cancelCallback) { + cancelCallback(); + } else { + _this5.closeModal(); + } + } + }, additionalProps), /*#__PURE__*/_react["default"].createElement(_IceForm["default"], { + ref: this.iceFormReference, + adapter: adapter, + fields: fields, + viewOnly: this.state.viewOnly + })); + } + }]); + + return IceFormModal; +}(_react["default"].Component); + +var _default = IceFormModal; +exports["default"] = _default; + +},{"./IceForm":54,"antd":"antd","react":"react"}],56:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _react = _interopRequireDefault(require("react")); + +var _antd = require("antd"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var IceLabel = /*#__PURE__*/function (_React$Component) { + _inherits(IceLabel, _React$Component); + + var _super = _createSuper(IceLabel); + + function IceLabel(props) { + _classCallCheck(this, IceLabel); + + return _super.call(this, props); + } + + _createClass(IceLabel, [{ + key: "render", + value: function render() { + var value = this.props.value; + return /*#__PURE__*/_react["default"].createElement(_antd.Space, null, /*#__PURE__*/_react["default"].createElement("div", { + contentEditable: "true", + dangerouslySetInnerHTML: { + __html: this.nl2br(value || '') + } + })); + } + }, { + key: "nl2br", + value: function nl2br(str) { + return "".concat(str).replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '
    '); + } + }]); + + return IceLabel; +}(_react["default"].Component); + +var _default = IceLabel; +exports["default"] = _default; + +},{"antd":"antd","react":"react"}],57:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _react = _interopRequireDefault(require("react")); + +var _antd = require("antd"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var Option = _antd.Select.Option; + +var IceSelect = /*#__PURE__*/function (_React$Component) { + _inherits(IceSelect, _React$Component); + + var _super = _createSuper(IceSelect); + + function IceSelect(props) { + var _this; + + _classCallCheck(this, IceSelect); + + _this = _super.call(this, props); + _this.onChange = props.onChange; + return _this; + } + + _createClass(IceSelect, [{ + key: "render", + value: function render() { + var options; + var _this$props = this.props, + field = _this$props.field, + adapter = _this$props.adapter; + var value = this.props.value; + var data = field[1]; + + if (data['remote-source'] != null) { + var key = "".concat(data['remote-source'][0], "_").concat(data['remote-source'][1], "_").concat(data['remote-source'][2]); + + if (data['remote-source'].length === 4) { + key = "".concat(key, "_").concat(data['remote-source'][3]); + } + + options = adapter.fieldMasterData[key]; + } else { + options = data.source; + } + + var optionData = this.getFormSelectOptionsRemote(options, field, adapter); // value should be an array if multi-select + + if (data.type === 'select2multi') { + try { + value = JSON.parse(value); + + if (value == null) { + value = []; + } + + value = value.map(function (item) { + return "".concat(item); + }); + } catch (e) { + value = []; + } + } + + return /*#__PURE__*/_react["default"].createElement(_antd.Select, { + mode: data.type === 'select2multi' ? 'multiple' : undefined, + showSearch: true, + placeholder: "Select ".concat(data.label), + optionFilterProp: "children", + filterOption: function filterOption(input, option) { + return input != null && option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0; + }, + value: value, + options: optionData, + allowClear: true, + onChange: this.handleChange.bind(this), + disabled: this.props.readOnly + }); + } + }, { + key: "handleChange", + value: function handleChange(value) { + var field = this.props.field; + var data = field[1]; + + if (data.type === 'select2multi') { + this.onChange(JSON.stringify(value)); + } else { + this.onChange(value); + } + } + }, { + key: "makeOption", + value: function makeOption(option) { + return /*#__PURE__*/_react["default"].createElement(Option, { + key: "".concat(option[0]), + value: "".concat(option[0]) + }, option[1]); + } + }, { + key: "getFormSelectOptionsRemote", + value: function getFormSelectOptionsRemote(options, field, adapter) { + var optionData = []; + + if (Array.isArray(options)) { + for (var i = 0; i < options.length; i++) { + optionData.push({ + label: options[i][1], + value: options[i][0] + }); + } + } else { + for (var key in options) { + optionData.push({ + label: options[key], + value: key + }); + } + } // if (field[1].sort === 'true') { + // tuples.sort((a, b) => { + // a = a[1]; + // b = b[1]; + // + // // eslint-disable-next-line no-nested-ternary + // return a < b ? -1 : (a > b ? 1 : 0); + // }); + // } + // for (let i = 0; i < tuples.length; i++) { + // const prop = tuples[i][0]; + // const value = tuples[i][1]; + // optionData.push([prop, adapter.gt(value)]); + // } + + + return optionData; + } + }]); + + return IceSelect; +}(_react["default"].Component); + +var _default = IceSelect; +exports["default"] = _default; + +},{"antd":"antd","react":"react"}],58:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _react = _interopRequireDefault(require("react")); + +var _reactSignatureCanvas = _interopRequireDefault(require("react-signature-canvas")); + +var _antd = require("antd"); + +var _icons = require("@ant-design/icons"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var IceSignature = /*#__PURE__*/function (_React$Component) { + _inherits(IceSignature, _React$Component); + + var _super = _createSuper(IceSignature); + + function IceSignature(props) { + var _this; + + _classCallCheck(this, IceSignature); + + _this = _super.call(this, props); + _this.onChange = props.onChange; + _this.state = { + visible: false + }; + _this.signature = _react["default"].createRef(); + return _this; + } + + _createClass(IceSignature, [{ + key: "componentDidMount", + value: function componentDidMount() {} + }, { + key: "show", + value: function show() { + this.setState({ + visible: true + }); + } + }, { + key: "setSignature", + value: function setSignature(ref) { + if (ref == null) { + return; + } + + var value = this.props.value; + + if (value != null && value.length > 10) { + ref.fromDataURL(value); + } + } + }, { + key: "hide", + value: function hide() { + this.setState({ + visible: false + }); + } + }, { + key: "clear", + value: function clear() { + this.signature.clear(); + } + }, { + key: "save", + value: function save() { + var data = this.signature.toDataURL('image/png'); + this.onChange(data); + this.setState({ + visible: false + }); + } + }, { + key: "render", + value: function render() { + var _this2 = this; + + var readOnly = this.props.readOnly; + return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_antd.Modal, { + visible: this.state.visible, + title: "Signature", + maskClosable: false, + centered: true, + width: 300, + onCancel: function onCancel() { + _this2.hide(); + }, + footer: [/*#__PURE__*/_react["default"].createElement(_antd.Button, { + key: "cancel", + onClick: function onClick() { + _this2.hide(); + } + }, "Cancel"), /*#__PURE__*/_react["default"].createElement(_antd.Button, { + key: "clear", + disabled: readOnly, + type: "dashed", + onClick: function onClick() { + if (!readOnly) { + _this2.clear(); + } + } + }, "Clear"), /*#__PURE__*/_react["default"].createElement(_antd.Button, { + key: "ok", + disabled: readOnly, + type: "primary", + onClick: function onClick() { + if (!readOnly) { + _this2.save(); + } + } + }, "Submit")] + }, /*#__PURE__*/_react["default"].createElement(_reactSignatureCanvas["default"], { + ref: function ref(_ref) { + _this2.signature = _ref; + + _this2.setSignature(_ref); + }, + canvasProps: _objectSpread({ + width: 250, + height: 200, + className: 'sigCanvas' + }, readOnly ? { + readOnly: readOnly + } : {}) + })), /*#__PURE__*/_react["default"].createElement(_antd.Tag, { + color: "blue", + style: { + cursor: 'pointer' + }, + onClick: function onClick() { + _this2.show(); + } + }, /*#__PURE__*/_react["default"].createElement(_icons.VerifiedOutlined, null), ' ', "Sign")); + } + }]); + + return IceSignature; +}(_react["default"].Component); + +var _default = IceSignature; +exports["default"] = _default; + +},{"@ant-design/icons":"@ant-design/icons","antd":"antd","react":"react","react-signature-canvas":369}],59:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _react = _interopRequireDefault(require("react")); + +var _antd = require("antd"); + +var _IceForm2 = _interopRequireDefault(require("./IceForm")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } + +function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var Step = _antd.Steps.Step; + +var IceStepForm = /*#__PURE__*/function (_IceForm) { + _inherits(IceStepForm, _IceForm); + + var _super = _createSuper(IceStepForm); + + function IceStepForm(props) { + var _this; + + _classCallCheck(this, IceStepForm); + + _this = _super.call(this, props); + _this.onChange = props.onChange; + + var steps = _this.props.fields.map(function (item) { + return _objectSpread({}, item, { + ref: _react["default"].createRef() + }); + }); + + steps = steps.map(function (item) { + var ref = item.ref, + fields = item.fields; + item.content = /*#__PURE__*/_react["default"].createElement(_IceForm2["default"], { + ref: ref, + adapter: props.adapter, + fields: fields, + twoColumnLayout: props.twoColumnLayout, + width: props.width, + layout: props.layout || 'horizontal' + }); + return item; + }); + _this.state = { + current: 0, + steps: steps, + loading: false + }; + return _this; + } + + _createClass(IceStepForm, [{ + key: "moveToStep", + value: function moveToStep(current) { + this.setState({ + current: current + }); + } + }, { + key: "next", + value: function next() { + if (this.validateFields(false) === false) { + return; + } + + this.showError(false); + var current = this.state.current + 1; + this.setState({ + current: current + }); + } + }, { + key: "prev", + value: function prev() { + var current = this.state.current - 1; + + if (current < 0) { + return; + } + + this.setState({ + current: current + }); + } + }, { + key: "render", + value: function render() { + var _this2 = this; + + var adapter = this.props.adapter; + var _this$state = this.state, + current = _this$state.current, + steps = _this$state.steps; + return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_antd.Steps, { + current: current + }, steps.map(function (item, index) { + return /*#__PURE__*/_react["default"].createElement(Step, { + key: item.title, + title: item.title, + onClick: function onClick() { + return _this2.moveToStep(index); + } + }); + })), /*#__PURE__*/_react["default"].createElement(_antd.Divider, null), /*#__PURE__*/_react["default"].createElement("div", { + className: "steps-content" + }, steps.map(function (item, index) { + return /*#__PURE__*/_react["default"].createElement("div", { + style: { + display: index === current ? 'block' : 'none' + } + }, item.content); + })), /*#__PURE__*/_react["default"].createElement(_antd.Divider, null), /*#__PURE__*/_react["default"].createElement("div", { + className: "steps-action" + }, /*#__PURE__*/_react["default"].createElement(_antd.Row, { + gutter: 16 + }, /*#__PURE__*/_react["default"].createElement(_antd.Col, { + className: "gutter-row", + span: 12, + style: {} + }, /*#__PURE__*/_react["default"].createElement(_antd.Space, null, current < steps.length - 1 && /*#__PURE__*/_react["default"].createElement(_antd.Button, { + type: "primary", + onClick: function onClick() { + return _this2.next(); + } + }, adapter.gt('Next')), current > 0 && /*#__PURE__*/_react["default"].createElement(_antd.Button, { + onClick: function onClick() { + return _this2.prev(); + } + }, adapter.gt('Previous')))), /*#__PURE__*/_react["default"].createElement(_antd.Col, { + className: "gutter-row", + span: 12, + style: { + textAlign: 'right' + } + }, /*#__PURE__*/_react["default"].createElement(_antd.Space, null, /*#__PURE__*/_react["default"].createElement(_antd.Button, { + onClick: function onClick() { + return _this2.props.closeModal(); + } + }, adapter.gt('Cancel')), /*#__PURE__*/_react["default"].createElement(_antd.Button, { + type: "primary", + loading: this.state.loading, + onClick: function onClick() { + return _this2.saveData(); + } + }, adapter.gt('Save'))))))); + } + }, { + key: "saveData", + value: function () { + var _saveData = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + var _this3 = this; + + var data; + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + this.setState({ + loading: true + }); + _context.next = 3; + return this.validateFields(true); + + case 3: + data = _context.sent; + + if (data) { + this.save(data, function () { + return _this3.props.closeModal(); + }); + } + + this.setState({ + loading: false + }); + + case 6: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + + function saveData() { + return _saveData.apply(this, arguments); + } + + return saveData; + }() + }, { + key: "save", + value: function save(params, success) { + var _this4 = this; + + var adapter = this.props.adapter; + adapter.add(params, [], function () { + return adapter.get([]); + }, function () { + _this4.resetFields(); + + _this4.showError(false); + + success(); + }); + } + }, { + key: "updateFields", + value: function updateFields(data) { + var _this5 = this; + + this.state.steps.forEach(function (item) { + var subData = {}; + item.fields.forEach(function (_ref) { + var _ref2 = _slicedToArray(_ref, 1), + key = _ref2[0]; + + subData[key] = data[key]; + }); + + _this5.updateFieldsSubForm(item.ref, item.fields, subData); + }); + } + }, { + key: "updateFieldsSubForm", + value: function updateFieldsSubForm(ref, fields, data) { + data = this.dataToFormFields(data, fields); + ref.current.resetFields(); + + if (data == null) { + return; + } + + try { + ref.current.setFieldsValue(data); + } catch (e) { + console.log(e); + } + } + }, { + key: "validateFields", + value: function () { + var _validateFields = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(all) { + var adapter, steps, promiseList, allData, failedIndex, values, msg, id, fields; + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + adapter = this.props.adapter; + steps = all ? this.state.steps : this.state.steps.slice(0, this.state.current + 1); + promiseList = steps.map(function (item) { + return item.ref.current.validateFields().then(function (values) { + if (!item.ref.current.isValid()) { + return false; + } + + return values; + })["catch"](function () { + return false; + }); + }); + _context2.next = 5; + return Promise.all(promiseList); + + case 5: + allData = _context2.sent; + failedIndex = allData.findIndex(function (item) { + return item === false; + }); + + if (!(failedIndex >= 0)) { + _context2.next = 10; + break; + } + + this.setState({ + current: failedIndex + }); + return _context2.abrupt("return", false); + + case 10: + values = Object.assign.apply(Object, [{}].concat(_toConsumableArray(allData))); + values = adapter.forceInjectValuesBeforeSave(values); + msg = adapter.doCustomValidation(values); + + if (!(msg !== null)) { + _context2.next = 16; + break; + } + + this.showError(msg); + return _context2.abrupt("return", false); + + case 16: + if (adapter.csrfRequired) { + values.csrf = $("#".concat(adapter.getTableName(), "Form")).data('csrf'); + } + + id = adapter.currentElement != null ? adapter.currentElement.id : null; + + if (id != null && id !== '') { + values.id = id; + } + + fields = [].concat.apply([], this.state.steps.map(function (item) { + return item.fields; + })); + return _context2.abrupt("return", this.formFieldsToData(values, fields)); + + case 21: + case "end": + return _context2.stop(); + } + } + }, _callee2, this); + })); + + function validateFields(_x) { + return _validateFields.apply(this, arguments); + } + + return validateFields; + }() + }, { + key: "getSubFormData", + value: function getSubFormData(ref, fields, params) { + var adapter = this.props.adapter; + var values = params; + values = adapter.forceInjectValuesBeforeSave(values); + var msg = adapter.doCustomValidation(values); + + if (msg !== null) { + ref.current.showError(msg); + return; + } + + if (adapter.csrfRequired) { + values.csrf = $("#".concat(adapter.getTableName(), "Form")).data('csrf'); + } + + var id = adapter.currentElement != null ? adapter.currentElement.id : null; + + if (id != null && id !== '') { + values.id = id; + } + + return this.formFieldsToData(values, fields); + } + }, { + key: "showError", + value: function showError(errorMsg) { + this.state.steps.forEach(function (item) { + return item.ref.current.showError(errorMsg); + }); + } + }, { + key: "resetFields", + value: function resetFields() { + this.state.steps.forEach(function (item) { + return item.ref.current.resetFields(); + }); + } + }, { + key: "hideError", + value: function hideError() { + this.state.steps.forEach(function (item) { + return item.ref.current.hideError(); + }); + } + }, { + key: "isReady", + value: function isReady() { + return this.state.steps.reduce(function (acc, item) { + return acc && item.ref.current != null; + }, true); + } + }]); + + return IceStepForm; +}(_IceForm2["default"]); + +var _default = IceStepForm; +exports["default"] = _default; + +},{"./IceForm":54,"antd":"antd","react":"react"}],60:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _react = _interopRequireDefault(require("react")); + +var _antd = require("antd"); + +var _IceFormModal2 = _interopRequireDefault(require("./IceFormModal")); + +var _IceStepForm = _interopRequireDefault(require("./IceStepForm")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var IceStepFormModal = /*#__PURE__*/function (_IceFormModal) { + _inherits(IceStepFormModal, _IceFormModal); + + var _super = _createSuper(IceStepFormModal); + + function IceStepFormModal(props) { + var _this; + + _classCallCheck(this, IceStepFormModal); + + _this = _super.call(this, props); + _this.width = 850; + return _this; + } + + _createClass(IceStepFormModal, [{ + key: "show", + value: function show(data) { + var _this2 = this; + + this.props.adapter.beforeRenderFieldHook = this.props.adapter.beforeRenderField ? this.props.adapter.beforeRenderField(data) : function (fieldName, field) { + return field; + }; + + if (!data) { + this.setState({ + visible: true + }); + + if (this.iceFormReference.current) { + this.iceFormReference.current.resetFields(); + } + } else { + this.setState({ + visible: true + }); + + if (this.iceFormReference.current && this.iceFormReference.current.isReady()) { + this.iceFormReference.current.moveToStep(0); + this.iceFormReference.current.updateFields(data); + } else { + this.waitForIt(function () { + return _this2.iceFormReference.current && _this2.iceFormReference.current.isReady(); + }, function () { + _this2.iceFormReference.current.updateFields(data); + + _this2.iceFormReference.current.moveToStep(0); + }, 1000); + } + } + } + }, { + key: "hide", + value: function hide() { + this.iceFormReference.current.moveToStep(0); + this.setState({ + visible: false + }); + } + }, { + key: "render", + value: function render() { + var _this3 = this; + + var _this$props = this.props, + fields = _this$props.fields, + adapter = _this$props.adapter; + + var _this$props$adapter$g = this.props.adapter.getFormOptions(), + width = _this$props$adapter$g.width, + twoColumnLayout = _this$props$adapter$g.twoColumnLayout, + layout = _this$props$adapter$g.layout; + + return /*#__PURE__*/_react["default"].createElement(_antd.Modal, { + visible: this.state.visible, + title: this.props.adapter.gt(this.props.title || adapter.objectTypeName), + maskClosable: false, + width: width || this.width, + footer: [], + onCancel: function onCancel() { + _this3.closeModal(); + } + }, /*#__PURE__*/_react["default"].createElement(_IceStepForm["default"], { + ref: this.iceFormReference, + adapter: adapter, + fields: fields, + closeModal: function closeModal() { + _this3.closeModal(); + }, + twoColumnLayout: twoColumnLayout || false, + layout: layout + })); + } + }]); + + return IceStepFormModal; +}(_IceFormModal2["default"]); + +var _default = IceStepFormModal; +exports["default"] = _default; + +},{"./IceFormModal":55,"./IceStepForm":59,"antd":"antd","react":"react"}],61:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _react = _interopRequireWildcard(require("react")); + +var _antd = require("antd"); + +var _icons = require("@ant-design/icons"); + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var Search = _antd.Input.Search; + +var IceTable = /*#__PURE__*/function (_React$Component) { + _inherits(IceTable, _React$Component); + + var _super = _createSuper(IceTable); + + function IceTable(props) { + var _this; + + _classCallCheck(this, IceTable); + + _this = _super.call(this, props); + _this.state = { + data: [], + pagination: {}, + loading: true, + fetchConfig: false, + //filter: null, + showLoading: true, + currentElement: null, + fetchCompleted: false + }; + + _this.handleTableChange = function (pagination, filters, sorter) { + var pager = _objectSpread({}, _this.state.pagination); + + var search = _this.state.search; + pager.current = pagination.current; + + _this.setState({ + pagination: pager + }); + + var fetchConfig = { + limit: pagination.pageSize, + page: pagination.current, + sortField: sorter.field, + sortOrder: sorter.order, + filters: JSON.stringify(filters), + search: search + }; + + _this.setState({ + fetchConfig: fetchConfig + }); + + _this.fetch(fetchConfig); + }; + + _this.reload = function () { + var fetchConfig = _this.state.fetchConfig; + + if (fetchConfig) { + _this.fetch(fetchConfig); + } + }; + + _this.search = function (value) { + _this.setState({ + search: value + }); + + var fetchConfig = _this.state.fetchConfig; + console.log(fetchConfig); + + if (fetchConfig) { + fetchConfig.search = value; + + _this.setState({ + fetchConfig: fetchConfig + }); + + _this.fetch(fetchConfig); + } + }; + + _this.addNew = function () { + _this.props.adapter.renderForm(); + }; + + _this.showFilters = function () { + _this.props.adapter.showFilters(); + }; + + _this.setFilterData = function (filter) { + _this.setState({ + filter: filter + }); + }; + + _this.setCurrentElement = function (currentElement) { + _this.setState({ + currentElement: currentElement + }); + }; + + _this.fetch = function () { + var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + //this.setState({ loading: this.state.showLoading }); + _this.setState({ + loading: true + }); //const hideMessage = message.loading({ content: 'Loading Latest Data ...', key: 'loadingTable', duration: 1}); + + + var pagination = _objectSpread({}, _this.state.pagination); + + if (_this.props.adapter.localStorageEnabled) { + try { + var cachedResponse = _this.props.reader.getCachedResponse(params); + + if (cachedResponse.items) { + _this.setState({ + loading: false, + data: cachedResponse.items, + pagination: pagination, + showLoading: false + }); + } else { + _this.props.reader.clearCachedResponse(params); + } + } catch (e) { + _this.props.reader.clearCachedResponse(params); + } + } + + _this.props.reader.get(params).then(function (data) { + // Read total count from server + // pagination.total = data.totalCount; + pagination.total = data.total; //hideMessage(); + // setTimeout( + // () => message.success({ content: 'Loading Completed!', key: 'loadingSuccess', duration: 1 }), + // 600 + // ); + + _this.setState({ + loading: false, + data: data.items, + pagination: pagination, + showLoading: false, + fetchCompleted: true + }); + }); + }; + + return _this; + } + + _createClass(IceTable, [{ + key: "componentDidMount", + value: function componentDidMount() { + var fetchConfig = { + page: 1 + }; + + _antd.message.config({ + top: 40 + }); + + this.setState({ + fetchConfig: fetchConfig, + //filter: this.props.adapter.filter, + pagination: { + 'pageSize': this.props.reader.pageSize + } + }); //this.fetch(fetchConfig); + } + }, { + key: "setLoading", + value: function setLoading(value) { + this.setState({ + loading: value + }); + } + }, { + key: "getChildrenWithProps", + value: function getChildrenWithProps(element) { + var _this2 = this; + + var childrenWithProps = _react["default"].Children.map(this.props.children, function (child) { + // checking isValidElement is the safe way and avoids a typescript error too + var props = { + element: element, + adapter: _this2.props.adapter, + loading: _this2.state.loading + }; + + if (_react["default"].isValidElement(child)) { + return _react["default"].cloneElement(child, props); + } + + return child; + }); + + return childrenWithProps; + } + }, { + key: "render", + value: function render() { + var _this3 = this; + + return /*#__PURE__*/_react["default"].createElement(_antd.Row, { + direction: "vertical", + style: { + width: '100%' + } + }, !this.state.currentElement && /*#__PURE__*/_react["default"].createElement(_antd.Col, { + span: 24 + }, /*#__PURE__*/_react["default"].createElement(_antd.Row, { + gutter: 24 + }, /*#__PURE__*/_react["default"].createElement(_antd.Col, { + span: 18 + }, /*#__PURE__*/_react["default"].createElement(_antd.Space, null, this.props.adapter.hasAccess('save') && this.props.adapter.getShowAddNew() && /*#__PURE__*/_react["default"].createElement(_antd.Button, { + type: "primary", + onClick: this.addNew + }, /*#__PURE__*/_react["default"].createElement(_icons.PlusCircleOutlined, null), " Add New"), this.props.adapter.getFilters() && /*#__PURE__*/_react["default"].createElement(_antd.Button, { + onClick: this.showFilters + }, /*#__PURE__*/_react["default"].createElement(_icons.FilterOutlined, null), " Filters"), this.state.fetchCompleted && this.props.adapter.getFilters() && this.props.adapter.filter != null && this.props.adapter.filter !== [] && this.props.adapter.filter !== '' && this.props.adapter.getFilterString(this.props.adapter.filter) !== '' && /*#__PURE__*/_react["default"].createElement(_antd.Tag, { + closable: true, + style: { + 'lineHeight': '30px' + }, + color: "blue", + onClose: function onClose() { + return _this3.props.adapter.resetFilters(); + }, + visible: this.props.adapter.filter != null && this.props.adapter.filter !== [] && this.props.adapter.filter !== '' + }, this.props.adapter.getFilterString(this.props.adapter.filter)))), /*#__PURE__*/_react["default"].createElement(_antd.Col, { + span: 6 + }, /*#__PURE__*/_react["default"].createElement(_antd.Form, { + ref: function ref(formRef) { + return _this3.form = formRef; + }, + name: "advanced_search", + className: "ant-advanced-search-form" + }, /*#__PURE__*/_react["default"].createElement(_antd.Form.Item, { + name: "searchTerm", + label: "", + rules: [{ + required: false + }] + }, /*#__PURE__*/_react["default"].createElement(Search, { + placeholder: "input search text", + enterButton: "Search", + onSearch: function onSearch(value) { + return _this3.search(value); + } + }))))), /*#__PURE__*/_react["default"].createElement(_antd.Row, { + gutter: 24 + }, /*#__PURE__*/_react["default"].createElement(_antd.Col, { + span: 24 + }, /*#__PURE__*/_react["default"].createElement(_antd.Table // bordered + , { + rowClassName: function rowClassName(record, index) { + return index % 2 === 0 ? 'table-row-light' : 'table-row-dark'; + }, + columns: this.props.columns, + rowKey: function rowKey(record) { + return record.id; + }, + dataSource: this.state.data, + pagination: this.state.pagination, + loading: this.state.loading, + onChange: this.handleTableChange, + reader: this.props.dataPipe + })))), this.state.currentElement && this.getChildrenWithProps(this.state.currentElement)); + } + }]); + + return IceTable; +}(_react["default"].Component); + +var _default = IceTable; +exports["default"] = _default; + +},{"@ant-design/icons":"@ant-design/icons","antd":"antd","react":"react"}],62:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _react = _interopRequireDefault(require("react")); + +var _antd = require("antd"); + +var _icons = require("@ant-design/icons"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var IceUpload = /*#__PURE__*/function (_React$Component) { + _inherits(IceUpload, _React$Component); + + var _super = _createSuper(IceUpload); + + function IceUpload(props) { + var _this; + + _classCallCheck(this, IceUpload); + + _this = _super.call(this, props); + _this.state = { + fileList: [], + uploaded: false + }; + _this._isMounted = false; + + _this.handleDelete = function () { + _this.setState({ + fileList: [], + value: null, + uploaded: false + }); + + _this.onChange(null); + }; + + _this.handleView = function () { + var currentValue = _this.props.value; + + if (_this.state.value != null && _this.state.value !== '') { + currentValue = _this.state.value; + } + + if (currentValue == null || currentValue === '') { + _antd.message.error('File not found'); + + return; + } + + var adapter = _this.props.adapter; + adapter.getFile(currentValue).then(function (data) { + var file = { + key: data.uid, + uid: data.uid, + name: data.name, + status: data.status, + url: data.filename + }; + window.open(file.url); + })["catch"](function (e) {}); + }; + + _this.handleChange = function (info) { + var fileList = _toConsumableArray(info.fileList); + + if (fileList.length === 0) { + _this.setState({ + value: null + }); + + _this.onChange(null); + + _this.setState({ + fileList: [] + }); + + _this.setState({ + uploaded: false + }); + + return; + } + + fileList = fileList.slice(-1); + + if (fileList[0].response && fileList[0].response.status === 'error') { + _this.setState({ + value: null + }); + + _this.onChange(null); + + _this.setState({ + fileList: [] + }); + + _this.setState({ + uploaded: false + }); + + _antd.message.error("Error: ".concat(fileList[0].response.message)); + + return; + } + + fileList = fileList.map(function (file) { + if (file.response) { + // Component will show file.url as link + file.name = file.response.name; + file.url = file.response.url; + } + + return file; + }); + + _this.setState({ + fileList: fileList + }); + + _this.setState({ + value: _this.getFileName(fileList), + uploaded: true + }); + + _this.onChange(_this.getFileName(fileList)); + }; + + _this.onChange = props.onChange; + return _this; + } + + _createClass(IceUpload, [{ + key: "componentDidMount", + value: function componentDidMount() { + this._isMounted = true; + + _antd.message.config({ + top: 55, + duration: 2 + }); + } + }, { + key: "componentWillUnmount", + value: function componentWillUnmount() { + this._isMounted = false; + } + }, { + key: "getFileName", + value: function getFileName(fileList) { + var file = null; + + if (fileList) { + file = fileList[0]; + } + + return file ? file.name : ''; + } + }, { + key: "generateRandom", + value: function generateRandom(length) { + var d = new Date(); + var chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; + var result = ''; + + for (var i = length; i > 0; --i) { + result += chars[Math.round(Math.random() * (chars.length - 1))]; + } + + return result + d.getTime(); + } + }, { + key: "render", + value: function render() { + var fileName = this.generateRandom(14); + var props = { + action: "".concat(window.CLIENT_BASE_URL, "fileupload-new.php?user=").concat(this.props.user, "&file_group=").concat(this.props.fileGroup, "&file_name=").concat(fileName), + onChange: this.handleChange, + onRemove: this.handleDelete, + multiple: false, + listType: 'picture' + }; + return /*#__PURE__*/_react["default"].createElement(_antd.Space, { + direction: 'vertical' + }, !this.props.readOnly && /*#__PURE__*/_react["default"].createElement(_antd.Space, null, /*#__PURE__*/_react["default"].createElement(_antd.Upload, _extends({}, props, { + fileList: this.state.fileList + }), /*#__PURE__*/_react["default"].createElement(_antd.Tag, { + color: "blue", + style: { + cursor: 'pointer' + } + }, /*#__PURE__*/_react["default"].createElement(_icons.UploadOutlined, null), ' ', "Upload"))), /*#__PURE__*/_react["default"].createElement(_antd.Space, null, (this.props.value != null && this.props.value !== '' || this.state.value != null && this.state.value !== '') && !this.state.uploaded && /*#__PURE__*/_react["default"].createElement(_antd.Button, { + type: "link", + htmlType: "button", + onClick: this.handleView + }, /*#__PURE__*/_react["default"].createElement(_icons.DownloadOutlined, null), " View File"), (this.props.value != null && this.props.value !== '' || this.state.value != null && this.state.value !== '') && !this.state.uploaded && !this.props.readOnly && /*#__PURE__*/_react["default"].createElement(_antd.Button, { + type: "link", + htmlType: "button", + danger: true, + onClick: this.handleDelete + }, /*#__PURE__*/_react["default"].createElement(_icons.DeleteOutlined, null), " Delete"))); + } + }]); + + return IceUpload; +}(_react["default"].Component); + +var _default = IceUpload; +exports["default"] = _default; + +},{"@ant-design/icons":"@ant-design/icons","antd":"antd","react":"react"}],63:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _react = _interopRequireDefault(require("react")); + +var _antd = require("antd"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var TagList = /*#__PURE__*/function (_React$Component) { + _inherits(TagList, _React$Component); + + var _super = _createSuper(TagList); + + function TagList(props) { + var _this; + + _classCallCheck(this, TagList); + + _this = _super.call(this, props); + _this.state = { + tags: [], + loading: true + }; + return _this; + } + + _createClass(TagList, [{ + key: "componentDidMount", + value: function componentDidMount() { + this.fetch(); + } + }, { + key: "fetch", + value: function fetch() { + var _this2 = this; + + this.setState({ + loading: true + }); + this.props.apiClient.get(this.props.url).then(function (response) { + var tags = response.data.data.map(_this2.props.extractTag); + + _this2.setState({ + tags: tags, + loading: false + }); + }); + } + }, { + key: "render", + value: function render() { + var _this3 = this; + + return /*#__PURE__*/_react["default"].createElement("div", { + style: { + display: 'inline-block', + textOverflow: 'ellipsis', + whiteSpace: 'nowrap', + overflow: 'hidden', + width: '100%' + } + }, this.state.loading && /*#__PURE__*/_react["default"].createElement(_antd.Skeleton, { + active: true + }), !this.state.loading && this.state.tags.map(function (tag, index) { + return _this3.props.render ? _this3.props.render(tag) : /*#__PURE__*/_react["default"].createElement("div", { + key: "p".concat(index) + }, /*#__PURE__*/_react["default"].createElement(_antd.Tag, { + color: _this3.props.color, + key: index, + style: { + margin: '10px' + } + }, tag), /*#__PURE__*/_react["default"].createElement("br", null)); + })); + } + }]); + + return TagList; +}(_react["default"].Component); + +var _default = TagList; +exports["default"] = _default; + +},{"antd":"antd","react":"react"}],64:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _react = _interopRequireWildcard(require("react")); + +var _antd = require("antd"); + +var _CustomAction = _interopRequireDefault(require("../api/CustomAction")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var UpdatePasswordModal = /*#__PURE__*/function (_React$Component) { + _inherits(UpdatePasswordModal, _React$Component); + + var _super = _createSuper(UpdatePasswordModal); + + function UpdatePasswordModal(props) { + var _this; + + _classCallCheck(this, UpdatePasswordModal); + + _this = _super.call(this, props); + _this.state = { + loading: false, + passwordHasError: false, + passwordState: { + hasFeedback: false, + validateStatus: '', + help: 'Password must include at least one number, one lowercase letter, one uppercase letter and a symbol' + }, + confirmationHasError: false, + confirmationState: { + hasFeedback: false, + validateStatus: '', + help: '' + } + }; + + _this.clearConfirmFeedback = function () { + _this.setState({ + confirmationHasError: false + }); + + _this.setState({ + confirmationState: { + hasFeedback: false, + validateStatus: '', + help: '' + } + }); + }; + + _this.handleOk = function () { + var from = _this.formRef.current; + from.validateFields().then(function (values) { + if (_this.updatePasswordState(values["new"]) && _this.updateConfirmPasswordState(values)) { + _this.updatePassword(values.current, values["new"]).then(function (response) { + var data = response.data; + console.log(data); + + if (data.status === 'SUCCESS') { + _this.handleCancel(); + + _antd.message.success(_this.props.adapter.gt('Password updated')); + } else { + _antd.message.error("".concat(_this.props.adapter.gt('Error updating password'), ": ").concat(_this.props.adapter.gt(data.data))); + } + })["catch"](function (error) { + _antd.message.error("".concat(_this.props.adapter.gt('Error updating password'))); + + console.log(error.message); + }); + } + })["catch"](function (info) { + _this.setState({ + loading: false + }); + }); + }; + + _this.handleCancel = function () { + if (_this.formRef.current) { + _this.formRef.current.resetFields(); + } + + _this.props.closeModal(); + }; + + _this.updatePassword = function (oldPassword, newPassword) { + var req = { + current: oldPassword ? oldPassword : '', + pwd: newPassword + }; + var reqJson = JSON.stringify(req); + var callBackData = []; + callBackData.callBackData = []; + callBackData.callBackSuccess = 'changePasswordSuccessCallBack'; + callBackData.callBackFail = 'changePasswordFailCallBack'; + return _this.customAction.execute('changePassword', 'modules=employees', reqJson); + }; + + _this.validatePassword = function (password) { + if (password.length < 8) { + return _this.props.adapter.gt('Password too short'); + } + + if (password.length > 30) { + return _this.props.adapter.gt('Password too long'); + } + + var numberTester = /.*[0-9]+.*$/; + + if (!password.match(numberTester)) { + return _this.props.adapter.gt('Password must include at least one number'); + } + + var lowerTester = /.*[a-z]+.*$/; + + if (!password.match(lowerTester)) { + return _this.props.adapter.gt('Password must include at least one lowercase letter'); + } + + var upperTester = /.*[A-Z]+.*$/; + + if (!password.match(upperTester)) { + return _this.props.adapter.gt('Password must include at least one uppercase letter'); + } + + var symbolTester = /.*[\W]+.*$/; + + if (!password.match(symbolTester)) { + return _this.props.adapter.gt('Password must include at least one symbol'); + } + + return null; + }; + + _this.formRef = _react["default"].createRef(); + _this.customAction = new _CustomAction["default"](_this.props.adapter); + return _this; + } + + _createClass(UpdatePasswordModal, [{ + key: "componentDidMount", + value: function componentDidMount() { + _antd.message.config({ + top: 40 + }); + } + }, { + key: "updatePasswordState", + value: function updatePasswordState(value) { + var passwordValidationResult = this.validatePassword(value); + + if (passwordValidationResult !== null) { + this.setState({ + passwordHasError: true + }); + this.setState({ + passwordState: { + hasFeedback: true, + validateStatus: 'error', + help: passwordValidationResult + } + }); + return false; + } else { + this.setState({ + passwordHasError: false + }); + this.setState({ + passwordState: { + hasFeedback: true, + validateStatus: 'success', + help: '' + } + }); + } + + return true; + } + }, { + key: "updateConfirmPasswordState", + value: function updateConfirmPasswordState(values) { + if (values.confirm !== values["new"]) { + this.setState({ + confirmationHasError: true + }); + this.setState({ + confirmationState: { + hasFeedback: true, + validateStatus: 'error', + help: 'Passwords don\'t match' + } + }); + return false; + } else { + this.setState({ + confirmationHasError: false + }); + this.setState({ + confirmationState: { + hasFeedback: false, + validateStatus: '', + help: '' + } + }); + } + + return true; + } + }, { + key: "render", + value: function render() { + var _this2 = this; + + var layout = { + labelCol: { + span: 8 + }, + wrapperCol: { + span: 16 + } + }; + return /*#__PURE__*/_react["default"].createElement(_antd.Modal, { + visible: this.props.visible, + title: "Update Password", + onOk: this.handleOk, + onCancel: this.handleCancel, + footer: [/*#__PURE__*/_react["default"].createElement(_antd.Button, { + key: "back", + onClick: this.handleCancel + }, this.props.adapter.gt('Cancel')), /*#__PURE__*/_react["default"].createElement(_antd.Button, { + key: "submit", + type: "primary", + loading: this.state.loading, + onClick: this.handleOk + }, this.props.adapter.gt('Update'))] + }, /*#__PURE__*/_react["default"].createElement(_antd.Form, _extends({}, layout, { + ref: this.formRef + }), /*#__PURE__*/_react["default"].createElement(_antd.Form.Item, { + label: "Current Password", + key: "current", + name: "current" + }, /*#__PURE__*/_react["default"].createElement(_antd.Input.Password, { + placeholder: "current password" + })), this.state.passwordHasError && /*#__PURE__*/_react["default"].createElement(_antd.Form.Item, _extends({ + label: "New Password", + key: "new", + name: "new" + }, this.state.passwordState), /*#__PURE__*/_react["default"].createElement(_antd.Input.Password, { + placeholder: "new password", + onChange: function onChange(event) { + return _this2.updatePasswordState(event.target.value); + } + })), !this.state.passwordHasError && /*#__PURE__*/_react["default"].createElement(_antd.Form.Item, _extends({ + label: "New Password", + key: "new", + name: "new" + }, this.state.passwordState), /*#__PURE__*/_react["default"].createElement(_antd.Input.Password, { + placeholder: "new password", + onChange: function onChange(event) { + return _this2.updatePasswordState(event.target.value); + } + })), this.state.confirmationHasError && /*#__PURE__*/_react["default"].createElement(_antd.Form.Item, _extends({ + label: "Confirm Password", + key: "confirm", + name: "confirm" + }, this.state.confirmationState), /*#__PURE__*/_react["default"].createElement(_antd.Input.Password, { + placeholder: "confirm password", + onChange: function onChange(event) { + return _this2.clearConfirmFeedback(); + } + })), !this.state.confirmationHasError && /*#__PURE__*/_react["default"].createElement(_antd.Form.Item, { + label: "Confirm Password", + key: "confirm", + name: "confirm" + }, /*#__PURE__*/_react["default"].createElement(_antd.Input.Password, { + placeholder: "confirm password", + onChange: function onChange(event) { + return _this2.clearConfirmFeedback(); + } + })))); + } + }]); + + return UpdatePasswordModal; +}(_react["default"].Component); + +var _default = UpdatePasswordModal; +exports["default"] = _default; + +},{"../api/CustomAction":42,"antd":"antd","react":"react"}],65:[function(require,module,exports){ +"use strict"; + +var _lib = require("./lib"); + +window.AttendanceAdapter = _lib.AttendanceAdapter; +window.EmployeeAttendanceSheetAdapter = _lib.EmployeeAttendanceSheetAdapter; + +},{"./lib":66}],66:[function(require,module,exports){ +"use strict"; + +var _AdapterBase3 = _interopRequireDefault(require("../../../api/AdapterBase")); + +var _FormValidation = _interopRequireDefault(require("../../../api/FormValidation")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var AttendanceAdapter = /*#__PURE__*/function (_AdapterBase) { + _inherits(AttendanceAdapter, _AdapterBase); + + var _super = _createSuper(AttendanceAdapter); + + function AttendanceAdapter(endPoint, tab, filter, orderBy) { + var _this; + + _classCallCheck(this, AttendanceAdapter); + + _this = _super.call(this, endPoint, tab, filter, orderBy); + _this.punch = null; + _this.useServerTime = 0; + _this.photoTaken = 0; + _this.photoAttendance = 0; + return _this; + } + + _createClass(AttendanceAdapter, [{ + key: "updatePunchButton", + value: function updatePunchButton() { + this.getPunch('changePunchButtonSuccessCallBack'); + } + }, { + key: "setUseServerTime", + value: function setUseServerTime(val) { + this.useServerTime = val; + } + }, { + key: "setPhotoAttendance", + value: function setPhotoAttendance(val) { + this.photoAttendance = parseInt(val, 10); + } + }, { + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'in_time', 'out_time', 'note']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Time-In' + }, { + sTitle: 'Time-Out' + }, { + sTitle: 'Note' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + if (this.useServerTime === 0) { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['time', { + label: 'Time', + type: 'datetime' + }], ['note', { + label: 'Note', + type: 'textarea', + validation: 'none' + }]]; + } + + return [['id', { + label: 'ID', + type: 'hidden' + }], ['note', { + label: 'Note', + type: 'textarea', + validation: 'none' + }]]; + } + }, { + key: "getCustomTableParams", + value: function getCustomTableParams() { + var that = this; + var dataTableParams = { + aoColumnDefs: [{ + fnRender: function fnRender(data, cell) { + return that.preProcessRemoteTableData(data, cell, 1); + }, + aTargets: [1] + }, { + fnRender: function fnRender(data, cell) { + return that.preProcessRemoteTableData(data, cell, 2); + }, + aTargets: [2] + }, { + fnRender: function fnRender(data, cell) { + return that.preProcessRemoteTableData(data, cell, 3); + }, + aTargets: [3] + }, { + fnRender: that.getActionButtons, + aTargets: [that.getDataMapping().length] + }] + }; + return dataTableParams; + } + }, { + key: "preProcessRemoteTableData", + value: function preProcessRemoteTableData(data, cell, id) { + if (id === 1) { + if (cell === '0000-00-00 00:00:00' || cell === '' || cell === undefined || cell === null) { + return ''; + } + + return Date.parse(cell).toString('yyyy MMM d HH:mm'); + } + + if (id === 2) { + if (cell === '0000-00-00 00:00:00' || cell === '' || cell === undefined || cell === null) { + return ''; + } + + return Date.parse(cell).toString('MMM d HH:mm'); + } + + if (id === 3) { + if (cell !== undefined && cell !== null) { + if (cell.length > 20) { + return "".concat(cell.substring(0, 20), ".."); + } + } + + return cell; + } + + return cell; + } + }, { + key: "getActionButtonsHtml", + value: function getActionButtonsHtml(id, data) { + return ''; + } + }, { + key: "getTableTopButtonHtml", + value: function getTableTopButtonHtml() { + if (this.punch === null || this.punch === undefined) { + return ''; + } + + return ''; + } + }, { + key: "save", + value: function save() { + var that = this; + var validator = new _FormValidation["default"]("".concat(this.getTableName(), "_submit"), true, { + ShowPopup: false, + LabelErrorClass: 'error' + }); + + if (validator.checkValues()) { + var msg = this.doCustomValidation(); + + if (msg == null) { + var params = validator.getFormParameters(); + params = this.forceInjectValuesBeforeSave(params); + params.cdate = this.getClientDate(new Date()).toISOString().slice(0, 19).replace('T', ' '); + var reqJson = JSON.stringify(params); + var callBackData = []; + callBackData.callBackData = []; + callBackData.callBackSuccess = 'saveSuccessCallback'; + callBackData.callBackFail = 'getPunchFailCallBack'; + this.customAction('savePunch', 'modules=attendance', reqJson, callBackData, true); + } else { + $("#".concat(this.getTableName(), "Form .label")).html(msg); + $("#".concat(this.getTableName(), "Form .label")).show(); + } + } + } + }, { + key: "saveSuccessCallback", + value: function saveSuccessCallback(callBackData) { + this.punch = callBackData; + this.getPunch('changePunchButtonSuccessCallBack'); + $('#PunchModel').modal('hide'); + this.get([]); + } + }, { + key: "cancel", + value: function cancel() { + $('#PunchModel').modal('hide'); + } + }, { + key: "showPunchDialog", + value: function showPunchDialog() { + this.getPunch('showPunchDialogShowPunchSuccessCallBack'); + } + }, { + key: "getPunch", + value: function getPunch(successCallBack) { + var that = this; + var object = {}; + object.date = this.getClientDate(new Date()).toISOString().slice(0, 19).replace('T', ' '); + object.offset = this.getClientGMTOffset(); + var reqJson = JSON.stringify(object); + var callBackData = []; + callBackData.callBackData = []; + callBackData.callBackSuccess = successCallBack; + callBackData.callBackFail = 'getPunchFailCallBack'; + this.customAction('getPunch', 'modules=attendance', reqJson, callBackData); + } + }, { + key: "showPunchDialogShowPunchSuccessCallBack", + value: function showPunchDialogShowPunchSuccessCallBack(callBackData) { + this.punch = callBackData; + $('#PunchModel').modal('show'); + + if (this.punch === null) { + $('#PunchModel').find('h3').html('Punch Time-in'); + modJs.renderForm(); + } else { + $('#PunchModel').find('h3').html('Punch Time-out'); + modJs.renderForm(this.punch); + } + + $('#Attendance').show(); + var picker = $('#time_datetime').data('datetimepicker'); + picker.setLocalDate(new Date()); + } + }, { + key: "changePunchButtonSuccessCallBack", + value: function changePunchButtonSuccessCallBack(callBackData) { + this.punch = callBackData; + + if (this.punch === null) { + $('#punchButton').html('Punch-in '); + } else { + $('#punchButton').html('Punch-out '); + } + } + }, { + key: "getPunchFailCallBack", + value: function getPunchFailCallBack(callBackData) { + this.showMessage('Error Occured while Time Punch', callBackData); + } + }, { + key: "getClientDate", + value: function getClientDate(date) { + var offset = this.getClientGMTOffset(); + var tzDate = date.addMinutes(offset * 60); + return tzDate; + } + }, { + key: "getClientGMTOffset", + value: function getClientGMTOffset() { + var rightNow = new Date(); + var jan1 = new Date(rightNow.getFullYear(), 0, 1, 0, 0, 0, 0); + var temp = jan1.toGMTString(); + var jan2 = new Date(temp.substring(0, temp.lastIndexOf(' ') - 1)); + return (jan1 - jan2) / (1000 * 60 * 60); + } + }, { + key: "doCustomValidation", + value: function doCustomValidation(params) { + if (this.photoAttendance === 1 && !this.photoTaken) { + return 'Please attach a photo before submitting'; + } + + return null; + } + }, { + key: "forceInjectValuesBeforeSave", + value: function forceInjectValuesBeforeSave(params) { + if (this.photoAttendance === 1) { + var canvas = document.getElementById('attendnaceCanvas'); + params.image = canvas.toDataURL(); + } + + return params; + } + }, { + key: "postRenderForm", + value: function postRenderForm() { + if (this.photoAttendance === 1) { + $('.photoAttendance').show(); + var video = document.getElementById('attendnaceVideo'); // Get access to the camera! + + if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) { + navigator.mediaDevices.getUserMedia({ + video: true + }).then(function (stream) { + //video.src = (window.URL ? window.URL : webkitURL).createObjectURL(stream); + video.srcObject = stream; + video.play(); + }); + } + + this.photoTaken = false; + this.configureEvents(); + } else { + $('.photoAttendance').remove(); + } + } + }, { + key: "configureEvents", + value: function configureEvents() { + var that = this; + var canvas = document.getElementById('attendnaceCanvas'); + var context = canvas.getContext('2d'); + var video = document.getElementById('attendnaceVideo'); + $('.attendnaceSnap').click(function () { + context.drawImage(video, 0, 0, 208, 156); + that.photoTaken = true; + return false; + }); + } + }]); + + return AttendanceAdapter; +}(_AdapterBase3["default"]); + +var EmployeeAttendanceSheetAdapter = /*#__PURE__*/function (_AdapterBase2) { + _inherits(EmployeeAttendanceSheetAdapter, _AdapterBase2); + + var _super2 = _createSuper(EmployeeAttendanceSheetAdapter); + + function EmployeeAttendanceSheetAdapter(endPoint, tab, filter, orderBy) { + var _this2; + + _classCallCheck(this, EmployeeAttendanceSheetAdapter); + + _this2 = _super2.call(this, endPoint, tab, filter, orderBy); + _this2.currentTimesheetId = null; + _this2.currentTimesheet = null; + return _this2; + } + + _createClass(EmployeeAttendanceSheetAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'date_start', 'date_end', 'total_time', 'status']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Start Date' + }, { + sTitle: 'End Date' + }, { + sTitle: 'Total Time' + }, { + sTitle: 'Status' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['date_start', { + label: 'TimeSheet Start Date', + type: 'date', + validation: '' + }], ['date_end', { + label: 'TimeSheet End Date', + type: 'date', + validation: '' + }], ['details', { + label: 'Reason', + type: 'textarea', + validation: 'none' + }]]; + } + }, { + key: "preProcessTableData", + value: function preProcessTableData(row) { + row[1] = Date.parse(row[1]).toString('MMM d, yyyy (dddd)'); + row[2] = Date.parse(row[2]).toString('MMM d, yyyy (dddd)'); + return row; + } + }, { + key: "renderForm", + value: function renderForm(object) { + var formHtml = this.templates.formTemplate; + var html = ''; + $("#".concat(this.getTableName(), "Form")).html(formHtml); + $("#".concat(this.getTableName(), "Form")).show(); + $("#".concat(this.getTableName())).hide(); + $('#attendnacesheet_start').html(Date.parse(object.date_start).toString('MMM d, yyyy (dddd)')); + $('#attendnacesheet_end').html(Date.parse(object.date_end).toString('MMM d, yyyy (dddd)')); + this.currentTimesheet = object; + this.getTimeEntries(); + } + }, { + key: "getTimeEntries", + value: function getTimeEntries() { + var timesheetId = this.currentId; + var sourceMappingJson = JSON.stringify(modJsList.tabEmployeeTimeEntry.getSourceMapping()); + var reqJson = JSON.stringify({ + id: timesheetId, + sm: sourceMappingJson + }); + var callBackData = []; + callBackData.callBackData = []; + callBackData.callBackSuccess = 'getTimeEntriesSuccessCallBack'; + callBackData.callBackFail = 'getTimeEntriesFailCallBack'; + this.customAction('getTimeEntries', 'modules=time_sheets', reqJson, callBackData); + } + }, { + key: "getTimeEntriesSuccessCallBack", + value: function getTimeEntriesSuccessCallBack(callBackData) { + var entries = callBackData; + var html = ''; + var temp = '_start__end__duration__project__details_'; + + for (var i = 0; i < entries.length; i++) { + try { + var t = temp; + t = t.replace(/_start_/g, Date.parse(entries[i].date_start).toString('MMM d, yyyy [hh:mm tt]')); + t = t.replace(/_end_/g, Date.parse(entries[i].date_end).toString('MMM d, yyyy [hh:mm tt]')); + var mili = Date.parse(entries[i].date_end) - Date.parse(entries[i].date_start); + var minutes = Math.round(mili / 60000); + var hourMinutes = minutes % 60; + var hours = (minutes - hourMinutes) / 60; + t = t.replace(/_duration_/g, "Hours (".concat(hours, ") - Min (").concat(hourMinutes, ")")); + + if (entries[i].project === 'null' || entries[i].project === null || entries[i].project === undefined) { + t = t.replace(/_project_/g, 'None'); + } else { + t = t.replace(/_project_/g, entries[i].project); + } + + t = t.replace(/_project_/g, entries[i].project); + t = t.replace(/_details_/g, entries[i].details); + t = t.replace(/_id_/g, entries[i].id); + t = t.replace(/_BASE_/g, this.baseUrl); + html += t; + } catch (e) {// DN + } + } + + $('.timesheet_entries_table_body').html(html); + + if (modJs.getTableName() === 'SubEmployeeTimeSheetAll') { + $('#submit_sheet').hide(); + $('#add_time_sheet_entry').hide(); + } else if (this.currentElement.status === 'Approved') { + $('#submit_sheet').hide(); + $('#add_time_sheet_entry').hide(); + } else { + $('#submit_sheet').show(); + $('#add_time_sheet_entry').show(); + } + } + }, { + key: "getTimeEntriesFailCallBack", + value: function getTimeEntriesFailCallBack(callBackData) { + this.showMessage('Error', 'Error occured while getting timesheet entries'); + } + }, { + key: "createPreviousAttendnacesheet", + value: function createPreviousAttendnacesheet(id) { + var reqJson = JSON.stringify({ + id: id + }); + var callBackData = []; + callBackData.callBackData = []; + callBackData.callBackSuccess = 'createPreviousAttendnacesheetSuccessCallBack'; + callBackData.callBackFail = 'createPreviousAttendnacesheetFailCallBack'; + this.customAction('createPreviousAttendnaceSheet', 'modules=attendnace', reqJson, callBackData); + } + }, { + key: "createPreviousAttendnacesheetSuccessCallBack", + value: function createPreviousAttendnacesheetSuccessCallBack(callBackData) { + $('.tooltip').css('display', 'none'); + $('.tooltip').remove(); // this.showMessage("Success", "Previous Timesheet created"); + + this.get([]); + } + }, { + key: "createPreviousAttendnacesheetFailCallBack", + value: function createPreviousAttendnacesheetFailCallBack(callBackData) { + this.showMessage('Error', callBackData); + } + }, { + key: "getActionButtonsHtml", + value: function getActionButtonsHtml(id, data) { + var html = ''; + + if (this.getTableName() === 'EmployeeTimeSheetAll') { + html = '
    '; + } else { + html = '
    '; + } + + html = html.replace(/_id_/g, id); + html = html.replace(/_BASE_/g, this.baseUrl); + return html; + } + }, { + key: "getCustomTableParams", + value: function getCustomTableParams() { + var that = this; + var dataTableParams = { + aoColumnDefs: [{ + fnRender: function fnRender(data, cell) { + return that.preProcessRemoteTableData(data, cell, 1); + }, + aTargets: [1] + }, { + fnRender: function fnRender(data, cell) { + return that.preProcessRemoteTableData(data, cell, 2); + }, + aTargets: [2] + }, { + fnRender: that.getActionButtons, + aTargets: [that.getDataMapping().length] + }] + }; + return dataTableParams; + } + }, { + key: "preProcessRemoteTableData", + value: function preProcessRemoteTableData(data, cell, id) { + return Date.parse(cell).toString('MMM d, yyyy (dddd)'); + } + }]); + + return EmployeeAttendanceSheetAdapter; +}(_AdapterBase3["default"]); + +module.exports = { + AttendanceAdapter: AttendanceAdapter, + EmployeeAttendanceSheetAdapter: EmployeeAttendanceSheetAdapter +}; + +},{"../../../api/AdapterBase":39,"../../../api/FormValidation":44}],67:[function(require,module,exports){ +"use strict"; + +var _lib = require("./lib"); + +window.DashboardAdapter = _lib.DashboardAdapter; + +},{"./lib":68}],68:[function(require,module,exports){ +"use strict"; + +var _AdapterBase2 = _interopRequireDefault(require("../../../api/AdapterBase")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var DashboardAdapter = /*#__PURE__*/function (_AdapterBase) { + _inherits(DashboardAdapter, _AdapterBase); + + var _super = _createSuper(DashboardAdapter); + + function DashboardAdapter() { + _classCallCheck(this, DashboardAdapter); + + return _super.apply(this, arguments); + } + + _createClass(DashboardAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return []; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return []; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return []; + } + }, { + key: "get", + value: function get(callBackData) {} + }, { + key: "getPunch", + value: function getPunch() { + var that = this; + var object = {}; + object.date = this.getClientDate(new Date()).toISOString().slice(0, 19).replace('T', ' '); + object.offset = this.getClientGMTOffset(); + var reqJson = JSON.stringify(object); + var callBackData = []; + callBackData.callBackData = []; + callBackData.callBackSuccess = 'getPunchSuccessCallBack'; + callBackData.callBackFail = 'getPunchFailCallBack'; + this.customAction('getPunch', 'modules=attendance', reqJson, callBackData); + } + }, { + key: "getPunchSuccessCallBack", + value: function getPunchSuccessCallBack(callBackData) { + var punch = callBackData; + + if (punch == null) { + $('#lastPunchTime').html('Not'); + $('#punchTimeText').html('Punched In'); + } else { + $('#lastPunchTime').html(Date.parse(punch.in_time).toString('h:mm tt')); + $('#punchTimeText').html('Punched In'); + } + } + }, { + key: "getPunchFailCallBack", + value: function getPunchFailCallBack(callBackData) {} + }, { + key: "getInitData", + value: function getInitData() { + var that = this; + var object = {}; + var reqJson = JSON.stringify(object); + var callBackData = []; + callBackData.callBackData = []; + callBackData.callBackSuccess = 'getInitDataSuccessCallBack'; + callBackData.callBackFail = 'getInitDataFailCallBack'; + this.customAction('getInitData', 'modules=dashboard', reqJson, callBackData); + } + }, { + key: "getInitDataSuccessCallBack", + value: function getInitDataSuccessCallBack(data) { + $('#timeSheetHoursWorked').html(data.lastTimeSheetHours); + $('#numberOfProjects').html(data.activeProjects); + $('#pendingLeaveCount').html(data.pendingLeaves); + $('#numberOfEmployees').html("".concat(data.numberOfEmployees, " Subordinates")); + $('#numberOfCandidates').html("".concat(data.numberOfCandidates, " Candidates")); + $('#numberOfJobs').html("".concat(data.numberOfJobs, " Active")); + $('#numberOfCourses').html("".concat(data.numberOfCourses, " Active")); + } + }, { + key: "getInitDataFailCallBack", + value: function getInitDataFailCallBack(callBackData) {} + }, { + key: "getClientDate", + value: function getClientDate(date) { + var offset = this.getClientGMTOffset(); + var tzDate = date.addMinutes(offset * 60); + return tzDate; + } + }, { + key: "getClientGMTOffset", + value: function getClientGMTOffset() { + var rightNow = new Date(); + var jan1 = new Date(rightNow.getFullYear(), 0, 1, 0, 0, 0, 0); + var temp = jan1.toGMTString(); + var jan2 = new Date(temp.substring(0, temp.lastIndexOf(' ') - 1)); + return (jan1 - jan2) / (1000 * 60 * 60); + } + }]); + + return DashboardAdapter; +}(_AdapterBase2["default"]); + +module.exports = { + DashboardAdapter: DashboardAdapter +}; + +},{"../../../api/AdapterBase":39}],69:[function(require,module,exports){ +"use strict"; + +var _lib = require("./lib"); + +window.EmployeeDependentAdapter = _lib.EmployeeDependentAdapter; + +},{"./lib":70}],70:[function(require,module,exports){ +"use strict"; + +var _AdapterBase2 = _interopRequireDefault(require("../../../api/AdapterBase")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +/** + * EmployeeDependentAdapter + */ +var EmployeeDependentAdapter = /*#__PURE__*/function (_AdapterBase) { + _inherits(EmployeeDependentAdapter, _AdapterBase); + + var _super = _createSuper(EmployeeDependentAdapter); + + function EmployeeDependentAdapter() { + _classCallCheck(this, EmployeeDependentAdapter); + + return _super.apply(this, arguments); + } + + _createClass(EmployeeDependentAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'name', 'relationship', 'dob', 'id_number']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Name' + }, { + sTitle: 'Relationship' + }, { + sTitle: 'Date of Birth' + }, { + sTitle: 'Id Number' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['name', { + label: 'Name', + type: 'text', + validation: '' + }], ['relationship', { + label: 'Relationship', + type: 'select', + source: [['Child', 'Child'], ['Spouse', 'Spouse'], ['Parent', 'Parent'], ['Other', 'Other']] + }], ['dob', { + label: 'Date of Birth', + type: 'date', + validation: '' + }], ['id_number', { + label: 'Id Number', + type: 'text', + validation: 'none' + }]]; + } + }]); + + return EmployeeDependentAdapter; +}(_AdapterBase2["default"]); + +module.exports = { + EmployeeDependentAdapter: EmployeeDependentAdapter +}; + +},{"../../../api/AdapterBase":39}],71:[function(require,module,exports){ +"use strict"; + +var _lib = require("./lib"); + +window.EmployeeDocumentAdapter = _lib.EmployeeDocumentAdapter; +window.EmployeeCompanyDocumentAdapter = _lib.EmployeeCompanyDocumentAdapter; + +},{"./lib":72}],72:[function(require,module,exports){ +"use strict"; + +var _AdapterBase2 = _interopRequireDefault(require("../../../api/AdapterBase")); + +var _ObjectAdapter2 = _interopRequireDefault(require("../../../api/ObjectAdapter")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var EmployeeDocumentAdapter = /*#__PURE__*/function (_AdapterBase) { + _inherits(EmployeeDocumentAdapter, _AdapterBase); + + var _super = _createSuper(EmployeeDocumentAdapter); + + function EmployeeDocumentAdapter() { + _classCallCheck(this, EmployeeDocumentAdapter); + + return _super.apply(this, arguments); + } + + _createClass(EmployeeDocumentAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'document', 'details', 'date_added', 'status', 'attachment']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Document' + }, { + sTitle: 'Details' + }, { + sTitle: 'Date Added' + }, { + sTitle: 'Status' + }, { + sTitle: 'Attachment', + bVisible: false + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['document', { + label: 'Document', + type: 'select2', + 'remote-source': ['Document', 'id', 'name', 'getDocumentTypesForUser'] + }], // [ "date_added", {"label":"Date Added","type":"date","validation":""}], + ['valid_until', { + label: 'Valid Until', + type: 'date', + validation: 'none' + }], ['status', { + label: 'Status', + type: 'select', + source: [['Active', 'Active'], ['Inactive', 'Inactive'], ['Draft', 'Draft']] + }], ['details', { + label: 'Details', + type: 'textarea', + validation: 'none' + }], ['attachment', { + label: 'Attachment', + type: 'fileupload', + validation: '' + }]]; + } + }, { + key: "getActionButtonsHtml", + value: function getActionButtonsHtml(id, data) { + var downloadButton = ''; + var editButton = ''; + var deleteButton = ''; + var html = '
    _edit__download__delete_
    '; + html = html.replace('_download_', downloadButton); + + if (this.showDelete) { + html = html.replace('_delete_', deleteButton); + } else { + html = html.replace('_delete_', ''); + } + + if (this.showEdit) { + html = html.replace('_edit_', editButton); + } else { + html = html.replace('_edit_', ''); + } + + html = html.replace(/_id_/g, id); + html = html.replace(/_attachment_/g, data[5]); + html = html.replace(/_BASE_/g, this.baseUrl); + return html; + } + }]); + + return EmployeeDocumentAdapter; +}(_AdapterBase2["default"]); +/** + * EmployeeCompanyDocumentAdapter + */ + + +var EmployeeCompanyDocumentAdapter = /*#__PURE__*/function (_ObjectAdapter) { + _inherits(EmployeeCompanyDocumentAdapter, _ObjectAdapter); + + var _super2 = _createSuper(EmployeeCompanyDocumentAdapter); + + function EmployeeCompanyDocumentAdapter() { + _classCallCheck(this, EmployeeCompanyDocumentAdapter); + + return _super2.apply(this, arguments); + } + + _createClass(EmployeeCompanyDocumentAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'name', 'details']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Name' + }, { + sTitle: 'Details' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['name', { + label: 'Name', + type: 'placeholder', + validation: '' + }], ['details', { + label: 'Details', + type: 'placeholder', + validation: 'none' + }], ['attachment', { + label: 'Attachment', + type: 'placeholder', + validation: 'none' + }]]; + } + }, { + key: "addDomEvents", + value: function addDomEvents(object) {} + }, { + key: "getTemplateName", + value: function getTemplateName() { + return 'file.html'; + } + }, { + key: "preProcessTableData", + value: function preProcessTableData(row) { + row.color = this.getColorByFileType(row.type); + row.icon = this.getIconByFileType(row.type); + row.details_long = this.nl2br(row.details); + + if (row.details.length > 30) { + row.details = row.details.substring(0, 30); + } + + if (row.size === undefined || row.size == null) { + row.size = ''; + } + + return row; + } + }]); + + return EmployeeCompanyDocumentAdapter; +}(_ObjectAdapter2["default"]); + +module.exports = { + EmployeeDocumentAdapter: EmployeeDocumentAdapter, + EmployeeCompanyDocumentAdapter: EmployeeCompanyDocumentAdapter +}; + +},{"../../../api/AdapterBase":39,"../../../api/ObjectAdapter":49}],73:[function(require,module,exports){ +"use strict"; + +var _lib = require("./lib"); + +window.EmergencyContactAdapter = _lib.EmergencyContactAdapter; + +},{"./lib":74}],74:[function(require,module,exports){ +"use strict"; + +var _AdapterBase2 = _interopRequireDefault(require("../../../api/AdapterBase")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var EmergencyContactAdapter = /*#__PURE__*/function (_AdapterBase) { + _inherits(EmergencyContactAdapter, _AdapterBase); + + var _super = _createSuper(EmergencyContactAdapter); + + function EmergencyContactAdapter() { + _classCallCheck(this, EmergencyContactAdapter); + + return _super.apply(this, arguments); + } + + _createClass(EmergencyContactAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'name', 'relationship', 'home_phone', 'work_phone', 'mobile_phone']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Name' + }, { + sTitle: 'Relationship' + }, { + sTitle: 'Home Phone' + }, { + sTitle: 'Work Phone' + }, { + sTitle: 'Mobile Phone' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['name', { + label: 'Name', + type: 'text', + validation: '' + }], ['relationship', { + label: 'Relationship', + type: 'text', + validation: 'none' + }], ['home_phone', { + label: 'Home Phone', + type: 'text', + validation: 'none' + }], ['work_phone', { + label: 'Work Phone', + type: 'text', + validation: 'none' + }], ['mobile_phone', { + label: 'Mobile Phone', + type: 'text', + validation: 'none' + }]]; + } + }]); + + return EmergencyContactAdapter; +}(_AdapterBase2["default"]); + +module.exports = { + EmergencyContactAdapter: EmergencyContactAdapter +}; + +},{"../../../api/AdapterBase":39}],75:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _react = _interopRequireDefault(require("react")); + +var _antd = require("antd"); + +var _icons = require("@ant-design/icons"); + +var _TagList = _interopRequireDefault(require("../../../../components/TagList")); + +var _UpdatePasswordModal = _interopRequireDefault(require("../../../../components/UpdatePasswordModal")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var Title = _antd.Typography.Title, + Text = _antd.Typography.Text; +var TabPane = _antd.Tabs.TabPane; + +var EmployeeProfile = /*#__PURE__*/function (_React$Component) { + _inherits(EmployeeProfile, _React$Component); + + var _super = _createSuper(EmployeeProfile); + + function EmployeeProfile(props) { + var _this; + + _classCallCheck(this, EmployeeProfile); + + _this = _super.call(this, props); + _this.state = { + loading: true, + showPasswordResetModal: false + }; + return _this; + } + + _createClass(EmployeeProfile, [{ + key: "setLoading", + value: function setLoading(value) { + this.setState({ + loading: value + }); + } + }, { + key: "setShowPasswordUpdate", + value: function setShowPasswordUpdate(value) { + this.setState({ + showPasswordResetModal: value + }); + } + }, { + key: "updateProfileImage", + value: function updateProfileImage() { + showUploadDialog("profile_image_".concat(this.props.element.id, "_").concat(new Date().getTime()), 'Upload Profile Image', 'profile_image', this.props.element.id, "profile_image_".concat(this.props.element.id), 'function', 'reloadCurrentElement', 'image'); + } + }, { + key: "getEditButtonJsx", + value: function getEditButtonJsx() { + var _this2 = this; + + return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, this.state.loading && /*#__PURE__*/_react["default"].createElement(_antd.Tag, { + icon: /*#__PURE__*/_react["default"].createElement(_icons.SyncOutlined, { + spin: true + }), + color: "processing" + }, this.props.adapter.gt('Edit')), !this.state.loading && /*#__PURE__*/_react["default"].createElement(_antd.Tag, { + icon: /*#__PURE__*/_react["default"].createElement(_icons.EditOutlined, null), + color: "processing", + onClick: function onClick() { + return modJs.edit(_this2.props.element.id); + } + }, this.props.adapter.gt('Edit'))); + } + }, { + key: "getEditButtonJsxWithPassword", + value: function getEditButtonJsxWithPassword() { + var _this3 = this; + + return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, this.state.loading && /*#__PURE__*/_react["default"].createElement(_antd.Tag, { + icon: /*#__PURE__*/_react["default"].createElement(_icons.SyncOutlined, { + spin: true + }), + color: "processing" + }, this.props.adapter.gt('Edit')), !this.state.loading && /*#__PURE__*/_react["default"].createElement(_antd.Tag, { + icon: /*#__PURE__*/_react["default"].createElement(_icons.EditOutlined, null), + color: "processing", + onClick: function onClick() { + return modJs.edit(_this3.props.element.id); + } + }, this.props.adapter.gt('Edit')), /*#__PURE__*/_react["default"].createElement(_antd.Tag, { + icon: /*#__PURE__*/_react["default"].createElement(_icons.LockOutlined, null), + color: "volcano", + onClick: function onClick() { + return _this3.setShowPasswordUpdate(true); + } + }, this.props.adapter.gt('Update Password'))); + } + }, { + key: "getUpdatePasswordButtonJsx", + value: function getUpdatePasswordButtonJsx() { + return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_antd.Tag, { + icon: /*#__PURE__*/_react["default"].createElement(_icons.SyncOutlined, { + spin: true + }), + color: "processing" + }, this.props.adapter.gt('Update Password'))); + } + }, { + key: "getTabViewEmployeeFilterButtonJsx", + value: function getTabViewEmployeeFilterButtonJsx(tab) { + var _this4 = this; + + return /*#__PURE__*/_react["default"].createElement(_antd.Tag, { + icon: /*#__PURE__*/_react["default"].createElement(_icons.EditOutlined, null), + color: "processing", + onClick: function onClick() { + switchTab(tab, { + employee: _this4.props.element.id + }); + } + }, this.props.adapter.gt('Edit')); + } + }, { + key: "render", + value: function render() { + var _this5 = this; + + if (this.state.loading || !this.props.element) { + return /*#__PURE__*/_react["default"].createElement("div", { + style: { + padding: '20px' + } + }, /*#__PURE__*/_react["default"].createElement(_antd.Skeleton, { + active: true + })); + } + + return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_UpdatePasswordModal["default"], { + visible: this.state.showPasswordResetModal, + closeModal: function closeModal() { + _this5.setState({ + showPasswordResetModal: false + }); + }, + adapter: this.props.adapter + }), /*#__PURE__*/_react["default"].createElement(_antd.Row, { + direction: "vertical", + style: { + width: '100%', + padding: '10px' + }, + gutter: 24 + }, /*#__PURE__*/_react["default"].createElement(_antd.Col, { + span: 24 + }, /*#__PURE__*/_react["default"].createElement(_antd.Card, { + title: this.props.adapter.gt('Employee Profile'), + extra: this.getEditButtonJsxWithPassword(), + style: { + width: '100%' + } + }, /*#__PURE__*/_react["default"].createElement(_antd.Space, { + size: 'large' + }, /*#__PURE__*/_react["default"].createElement(_antd.Avatar, { + size: 140, + src: this.props.element.image, + onClick: function onClick() { + return _this5.updateProfileImage(); + } + }), /*#__PURE__*/_react["default"].createElement(_antd.Space, { + direction: 'vertical' + }, /*#__PURE__*/_react["default"].createElement(Title, { + level: 4 + }, "".concat(this.props.element.first_name, " ").concat(this.props.element.last_name)), /*#__PURE__*/_react["default"].createElement(_antd.Space, null, /*#__PURE__*/_react["default"].createElement(_icons.PhoneTwoTone, null), /*#__PURE__*/_react["default"].createElement(Text, { + copyable: true + }, " ".concat(this.props.element.mobile_phone || ''))), /*#__PURE__*/_react["default"].createElement(_antd.Space, null, /*#__PURE__*/_react["default"].createElement(_icons.MailTwoTone, null), /*#__PURE__*/_react["default"].createElement(Text, { + copyable: true + }, " ".concat(this.props.element.work_email || '')))), /*#__PURE__*/_react["default"].createElement(_antd.Descriptions, { + title: "", + bordered: true, + style: { + width: '100%', + padding: '10px' + } + }, /*#__PURE__*/_react["default"].createElement(_antd.Descriptions.Item, { + label: this.props.adapter.gt('Employee Number'), + span: 3 + }, this.props.element.employee_id), /*#__PURE__*/_react["default"].createElement(_antd.Descriptions.Item, { + label: this.props.adapter.gt('ID Number'), + span: 3 + }, this.props.element.nic_num), this.props.element.ssn_num && this.props.element.ssn_num !== '' && /*#__PURE__*/_react["default"].createElement(_antd.Descriptions.Item, { + label: this.props.adapter.gt('Social Security Number'), + span: 3 + }, this.props.element.ssn_num)))))), /*#__PURE__*/_react["default"].createElement(_antd.Row, { + direction: "vertical", + style: { + width: '100%', + padding: '10px' + }, + gutter: 24 + }, /*#__PURE__*/_react["default"].createElement(_antd.Tabs, { + type: "card", + style: { + width: '100%' + } + }, /*#__PURE__*/_react["default"].createElement(TabPane, { + tab: "Basic Information", + key: "1", + style: { + width: '100%' + } + }, /*#__PURE__*/_react["default"].createElement(_antd.Row, { + direction: "vertical", + style: { + width: '100%', + padding: '10px' + }, + gutter: 24 + }, /*#__PURE__*/_react["default"].createElement(_antd.Col, { + span: 24 + }, /*#__PURE__*/_react["default"].createElement(_antd.Card, { + title: this.props.adapter.gt('Personal Information'), + extra: this.getEditButtonJsx(), + style: { + width: '100%' + } + }, /*#__PURE__*/_react["default"].createElement(_antd.Descriptions, { + title: "", + bordered: true + }, /*#__PURE__*/_react["default"].createElement(_antd.Descriptions.Item, { + label: this.props.adapter.gt('Date of Birth') + }, this.props.element.birthday || ''), /*#__PURE__*/_react["default"].createElement(_antd.Descriptions.Item, { + label: this.props.adapter.gt('Gender') + }, this.props.element.gender), /*#__PURE__*/_react["default"].createElement(_antd.Descriptions.Item, { + label: this.props.adapter.gt('Nationality') + }, this.props.element.nationality_Name), /*#__PURE__*/_react["default"].createElement(_antd.Descriptions.Item, { + label: this.props.adapter.gt('Marital Status') + }, this.props.element.marital_status), /*#__PURE__*/_react["default"].createElement(_antd.Descriptions.Item, { + label: this.props.adapter.gt('Joined Date') + }, this.props.element.joined_date), /*#__PURE__*/_react["default"].createElement(_antd.Descriptions.Item, { + label: this.props.adapter.gt('Driving License No') + }, this.props.element.driving_license || ''), /*#__PURE__*/_react["default"].createElement(_antd.Descriptions.Item, { + label: this.props.adapter.gt('Other ID') + }, this.props.element.other_id || '')))), /*#__PURE__*/_react["default"].createElement(_antd.Col, { + span: 24 + }, /*#__PURE__*/_react["default"].createElement(_antd.Card, { + title: this.props.adapter.gt('Contact Information'), + extra: this.getEditButtonJsx(), + style: { + width: '100%' + } + }, /*#__PURE__*/_react["default"].createElement(_antd.Descriptions, { + title: "", + bordered: true + }, /*#__PURE__*/_react["default"].createElement(_antd.Descriptions.Item, { + label: this.props.adapter.gt('Address'), + span: 3 + }, "".concat(this.props.element.address1, ", ").concat(this.props.element.address2 || '')), /*#__PURE__*/_react["default"].createElement(_antd.Descriptions.Item, { + label: this.props.adapter.gt('City') + }, this.props.element.city), /*#__PURE__*/_react["default"].createElement(_antd.Descriptions.Item, { + label: this.props.adapter.gt('Country') + }, this.props.element.country_Name), /*#__PURE__*/_react["default"].createElement(_antd.Descriptions.Item, { + label: this.props.adapter.gt('Postal/Zip Code') + }, this.props.element.postal_code), /*#__PURE__*/_react["default"].createElement(_antd.Descriptions.Item, { + label: this.props.adapter.gt('Home Phone'), + span: 2 + }, /*#__PURE__*/_react["default"].createElement(_antd.Space, null, /*#__PURE__*/_react["default"].createElement(_icons.PhoneTwoTone, null), /*#__PURE__*/_react["default"].createElement(Text, { + copyable: true + }, " ".concat(this.props.element.home_phone || '')))), /*#__PURE__*/_react["default"].createElement(_antd.Descriptions.Item, { + label: this.props.adapter.gt('Work Phone'), + span: 2 + }, /*#__PURE__*/_react["default"].createElement(_antd.Space, null, /*#__PURE__*/_react["default"].createElement(_icons.PhoneTwoTone, null), /*#__PURE__*/_react["default"].createElement(Text, { + copyable: true + }, " ".concat(this.props.element.work_phone || '')))), /*#__PURE__*/_react["default"].createElement(_antd.Descriptions.Item, { + label: this.props.adapter.gt('Private Email'), + span: 2 + }, /*#__PURE__*/_react["default"].createElement(_antd.Space, null, /*#__PURE__*/_react["default"].createElement(_icons.MailTwoTone, null), /*#__PURE__*/_react["default"].createElement(Text, { + copyable: true + }, " ".concat(this.props.element.private_email || ''))))))), /*#__PURE__*/_react["default"].createElement(_antd.Col, { + span: 24 + }, /*#__PURE__*/_react["default"].createElement(_antd.Card, { + title: this.props.adapter.gt('Job Details'), + extra: this.getEditButtonJsx(), + style: { + width: '100%' + } + }, /*#__PURE__*/_react["default"].createElement(_antd.Descriptions, { + title: "", + bordered: true + }, /*#__PURE__*/_react["default"].createElement(_antd.Descriptions.Item, { + label: this.props.adapter.gt('Job Title'), + span: 2 + }, this.props.element.job_title_Name), /*#__PURE__*/_react["default"].createElement(_antd.Descriptions.Item, { + label: this.props.adapter.gt('Employment Status') + }, this.props.element.employment_status_Name), /*#__PURE__*/_react["default"].createElement(_antd.Descriptions.Item, { + label: this.props.adapter.gt('Department') + }, this.props.element.department_Name), /*#__PURE__*/_react["default"].createElement(_antd.Descriptions.Item, { + label: this.props.adapter.gt('Supervisor') + }, this.props.element.supervisor_Name)))))), /*#__PURE__*/_react["default"].createElement(TabPane, { + tab: this.props.adapter.gt('Qualifications'), + key: "2", + style: { + width: '100%' + } + }, /*#__PURE__*/_react["default"].createElement(_antd.Row, { + style: { + width: '100%', + padding: '10px' + }, + gutter: 24 + }, /*#__PURE__*/_react["default"].createElement(_antd.Col, { + span: 6 + }, /*#__PURE__*/_react["default"].createElement(_antd.Card, { + title: this.props.adapter.gt('Skills') // extra={this.getTabViewEmployeeFilterButtonJsx('tabEmployeeSkill')} + , + style: { + width: '100%' + } + }, /*#__PURE__*/_react["default"].createElement(_TagList["default"], { + color: "geekblue", + apiClient: this.props.adapter.apiClient, + url: "employees/".concat(this.props.element.id, "/skills"), + extractTag: function extractTag(item) { + return item.skill_id.display; + } + }))), /*#__PURE__*/_react["default"].createElement(_antd.Col, { + span: 6 + }, /*#__PURE__*/_react["default"].createElement(_antd.Card, { + title: this.props.adapter.gt('Education') // extra={this.getTabViewEmployeeFilterButtonJsx('tabEmployeeEducation')} + , + style: { + width: '100%' + } + }, /*#__PURE__*/_react["default"].createElement(_TagList["default"], { + color: "cyan", + apiClient: this.props.adapter.apiClient, + url: "employees/".concat(this.props.element.id, "/educations"), + extractTag: function extractTag(item) { + return item.education_id.display; + } + }))), /*#__PURE__*/_react["default"].createElement(_antd.Col, { + span: 6 + }, /*#__PURE__*/_react["default"].createElement(_antd.Card, { + title: this.props.adapter.gt('Certifications') // extra={this.getTabViewEmployeeFilterButtonJsx('tabEmployeeCertification')} + , + style: { + width: '100%' + } + }, /*#__PURE__*/_react["default"].createElement(_TagList["default"], { + color: "volcano", + apiClient: this.props.adapter.apiClient, + url: "employees/".concat(this.props.element.id, "/certifications"), + extractTag: function extractTag(item) { + return item.certification_id.display; + } + }))), /*#__PURE__*/_react["default"].createElement(_antd.Col, { + span: 6 + }, /*#__PURE__*/_react["default"].createElement(_antd.Card, { + title: this.props.adapter.gt('Languages') // extra={this.getTabViewEmployeeFilterButtonJsx('tabEmployeeLanguage')} + , + style: { + width: '100%' + } + }, /*#__PURE__*/_react["default"].createElement(_TagList["default"], { + color: "orange", + apiClient: this.props.adapter.apiClient, + url: "employees/".concat(this.props.element.id, "/languages"), + extractTag: function extractTag(item) { + return item.language_id.display; + } + })))))))); + } + }]); + + return EmployeeProfile; +}(_react["default"].Component); + +var _default = EmployeeProfile; +exports["default"] = _default; + +},{"../../../../components/TagList":63,"../../../../components/UpdatePasswordModal":64,"@ant-design/icons":"@ant-design/icons","antd":"antd","react":"react"}],76:[function(require,module,exports){ +"use strict"; + +var _lib = require("./lib"); + +window.EmployeeAdapter = _lib.EmployeeAdapter; +window.CompanyGraphAdapter = _lib.CompanyGraphAdapter; +window.ApiAccessAdapter = _lib.ApiAccessAdapter; + +},{"./lib":77}],77:[function(require,module,exports){ +"use strict"; + +var _react = _interopRequireDefault(require("react")); + +var _reactDom = _interopRequireDefault(require("react-dom")); + +var _qrcode = _interopRequireDefault(require("qrcode")); + +var _AdapterBase3 = _interopRequireDefault(require("../../../api/AdapterBase")); + +var _ReactModalAdapterBase = _interopRequireDefault(require("../../../api/ReactModalAdapterBase")); + +var _EmployeeProfile = _interopRequireDefault(require("./components/EmployeeProfile")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var EmployeeAdapter = /*#__PURE__*/function (_ReactModalAdapterBas) { + _inherits(EmployeeAdapter, _ReactModalAdapterBas); + + var _super = _createSuper(EmployeeAdapter); + + function EmployeeAdapter(endPoint, tab, filter, orderBy) { + var _this; + + _classCallCheck(this, EmployeeAdapter); + + _this = _super.call(this, endPoint, tab, filter, orderBy); + _this.fieldNameMap = {}; + _this.hiddenFields = {}; + _this.tableFields = {}; + _this.formOnlyFields = {}; + _this.currentUserId = null; + return _this; + } + + _createClass(EmployeeAdapter, [{ + key: "setFieldNameMap", + value: function setFieldNameMap(fields) { + var field; + + for (var i = 0; i < fields.length; i++) { + field = fields[i]; + this.fieldNameMap[field.name] = field; + + if (field.display === 'Hidden') { + this.hiddenFields[field.name] = field; + } else if (field.display === 'Table and Form') { + this.tableFields[field.name] = field; + } else { + this.formOnlyFields[field.name] = field; + } + } + } + }, { + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'employee_id', 'first_name', 'last_name', 'mobile_phone', 'department', 'gender', 'supervisor']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID' + }, { + sTitle: 'Employee Number' + }, { + sTitle: 'First Name' + }, { + sTitle: 'Last Name' + }, { + sTitle: 'Mobile' + }, { + sTitle: 'Department' + }, { + sTitle: 'Gender' + }, { + sTitle: 'Supervisor' + }]; + } + }, { + key: "initTable", + value: function initTable() { + this.initProfile(); + } + }, { + key: "initProfile", + value: function initProfile(employee) { + var tableDom = document.getElementById("".concat(this.tab)); + this.tableContainer = _react["default"].createRef(); + + _reactDom["default"].render( /*#__PURE__*/_react["default"].createElement(_EmployeeProfile["default"], { + ref: this.tableContainer, + adapter: this, + element: employee + }), tableDom); + + this.tableContainer.current.setLoading(!employee); + } + }, { + key: "get", + value: function get() { + var _this2 = this; + + this.initTable(); + this.masterDataReader.updateAllMasterData().then(function () { + _this2.viewElement(); + }); + this.trackEvent('get', this.tab, this.table); + } + }, { + key: "edit", + value: function edit(id) { + this.setTableLoading(true); + this.currentId = id; + this.getElement(id, []); + } + }, { + key: "getFormOptions", + value: function getFormOptions() { + return { + width: 1024, + twoColumnLayout: false + }; + } + }, { + key: "getFormFields", + value: function getFormFields() { + var newFields = []; + var employee_id; + var ssn_num; + var employment_status; + var job_title; + var pay_grade; + var joined_date; + var department; + var work_email; + var country; + + if (this.checkPermission('Edit Employee Number') === 'Yes') { + employee_id = ['employee_id', { + label: 'Employee Number', + type: 'text', + validation: '' + }]; + } else { + employee_id = ['employee_id', { + label: 'Employee Number', + type: 'placeholder', + validation: '' + }]; + } + + if (this.checkPermission('Edit EPF/CPF Number') === 'Yes') { + ssn_num = ['ssn_num', { + label: 'EPF/CPF/SS No', + type: 'text', + validation: 'none' + }]; + } else { + ssn_num = ['ssn_num', { + label: 'EPF/CPF/SS No', + type: 'placeholder', + validation: 'none' + }]; + } + + if (this.checkPermission('Edit Employment Status') === 'Yes') { + employment_status = ['employment_status', { + label: 'Employment Status', + type: 'select2', + 'remote-source': ['EmploymentStatus', 'id', 'name'] + }]; + } else { + employment_status = ['employment_status', { + label: 'Employment Status', + type: 'placeholder', + 'remote-source': ['EmploymentStatus', 'id', 'name'] + }]; + } + + if (this.checkPermission('Edit Job Title') === 'Yes') { + job_title = ['job_title', { + label: 'Job Title', + type: 'select2', + 'remote-source': ['JobTitle', 'id', 'name'] + }]; + } else { + job_title = ['job_title', { + label: 'Job Title', + type: 'placeholder', + 'remote-source': ['JobTitle', 'id', 'name'] + }]; + } + + if (this.checkPermission('Edit Pay Grade') === 'Yes') { + pay_grade = ['pay_grade', { + label: 'Pay Grade', + type: 'select2', + 'allow-null': true, + 'remote-source': ['PayGrade', 'id', 'name'] + }]; + } else { + pay_grade = ['pay_grade', { + label: 'Pay Grade', + type: 'placeholder', + 'allow-null': true, + 'remote-source': ['PayGrade', 'id', 'name'] + }]; + } + + if (this.checkPermission('Edit Joined Date') === 'Yes') { + joined_date = ['joined_date', { + label: 'Joined Date', + type: 'date', + validation: '' + }]; + } else { + joined_date = ['joined_date', { + label: 'Joined Date', + type: 'placeholder', + validation: '' + }]; + } + + if (this.checkPermission('Edit Department') === 'Yes') { + department = ['department', { + label: 'Department', + type: 'select2', + 'remote-source': ['CompanyStructure', 'id', 'title'] + }]; + } else { + department = ['department', { + label: 'Department', + type: 'placeholder', + 'remote-source': ['CompanyStructure', 'id', 'title'] + }]; + } + + if (this.checkPermission('Edit Work Email') === 'Yes') { + work_email = ['work_email', { + label: 'Work Email', + type: 'text', + validation: 'email' + }]; + } else { + work_email = ['work_email', { + label: 'Work Email', + type: 'placeholder', + validation: 'emailOrEmpty' + }]; + } + + if (this.checkPermission('Edit Country') === 'Yes') { + country = ['country', { + label: 'Country', + type: 'select2', + 'remote-source': ['Country', 'code', 'name'] + }]; + } else { + country = ['country', { + label: 'Country', + type: 'placeholder', + 'remote-source': ['Country', 'code', 'name'] + }]; + } + + var fields = [['id', { + label: 'ID', + type: 'hidden', + validation: '' + }], employee_id, ['first_name', { + label: 'First Name', + type: 'text', + validation: '' + }], ['middle_name', { + label: 'Middle Name', + type: 'text', + validation: 'none' + }], ['last_name', { + label: 'Last Name', + type: 'text', + validation: '' + }], ['nationality', { + label: 'Nationality', + type: 'select2', + 'remote-source': ['Nationality', 'id', 'name'] + }], ['birthday', { + label: 'Date of Birth', + type: 'date', + validation: '' + }], ['gender', { + label: 'Gender', + type: 'select', + source: [['Male', 'Male'], ['Female', 'Female'], ['Other', 'Other']] + }], ['marital_status', { + label: 'Marital Status', + type: 'select', + source: [['Married', 'Married'], ['Single', 'Single'], ['Divorced', 'Divorced'], ['Widowed', 'Widowed'], ['Other', 'Other']] + }], ssn_num, ['nic_num', { + label: 'NIC', + type: 'text', + validation: 'none' + }], ['other_id', { + label: 'Other ID', + type: 'text', + validation: 'none' + }], ['driving_license', { + label: 'Driving License No', + type: 'text', + validation: 'none' + }], employment_status, job_title, pay_grade, ['work_station_id', { + label: 'Work Station Id', + type: 'text', + validation: 'none' + }], ['address1', { + label: 'Address Line 1', + type: 'text', + validation: 'none' + }], ['address2', { + label: 'Address Line 2', + type: 'text', + validation: 'none' + }], ['city', { + label: 'City', + type: 'text', + validation: 'none' + }], country, ['province', { + label: 'Province', + type: 'select2', + 'allow-null': true, + 'remote-source': ['Province', 'id', 'name'] + }], ['postal_code', { + label: 'Postal/Zip Code', + type: 'text', + validation: 'none' + }], ['home_phone', { + label: 'Home Phone', + type: 'text', + validation: 'none' + }], ['mobile_phone', { + label: 'Mobile Phone', + type: 'text', + validation: 'none' + }], ['work_phone', { + label: 'Work Phone', + type: 'text', + validation: 'none' + }], work_email, ['private_email', { + label: 'Private Email', + type: 'text', + validation: 'emailOrEmpty' + }], joined_date, department]; + + for (var i = 0; i < this.customFields.length; i++) { + fields.push(this.customFields[i]); + } + + for (var _i = 0; _i < fields.length; _i++) { + var tempField = fields[_i]; + + if (this.hiddenFields[tempField[0]] === undefined || this.hiddenFields[tempField[0]] === null) { + if (this.fieldNameMap[tempField[0]] !== undefined && this.fieldNameMap[tempField[0]] !== null) { + var title = this.fieldNameMap[tempField[0]].textMapped; + tempField[1].label = title; + } + + newFields.push(tempField); + } + } + + return newFields; + } + }, { + key: "getMappedFields", + value: function getMappedFields() { + var fields = this.getFormFields(); + var steps = [{ + title: this.gt('Personal'), + description: this.gt('Personal Information'), + fields: ['id', 'employee_id', 'first_name', 'middle_name', 'last_name', 'nationality', 'birthday', 'gender', 'marital_status', 'ethnicity'] + }, { + title: this.gt('Identification'), + description: this.gt('Personal Information'), + fields: ['immigration_status', 'ssn_num', 'nic_num', 'other_id', 'driving_license'] + }, { + title: this.gt('Work'), + description: this.gt('Work related details'), + fields: ['employment_status', 'department', 'job_title', 'pay_grade', 'joined_date', 'confirmation_date', 'termination_date', 'work_station_id'] + }, { + title: this.gt('Contact'), + description: this.gt('Contact details'), + fields: ['address1', 'address2', 'city', 'country', 'province', 'postal_code', 'home_phone', 'mobile_phone', 'work_phone', 'work_email', 'private_email'] + }]; + + if (this.customFields.length > 0) { + steps.push({ + title: this.gt('Other'), + description: this.gt('Additional details'), + fields: this.customFields.map(function (item) { + return item[0]; + }) + }); + } + + return this.addActualFields(steps, fields); + } + }, { + key: "addActualFields", + value: function addActualFields(steps, fields) { + return steps.map(function (item) { + item.fields = item.fields.reduce(function (acc, fieldName) { + var field = fields.find(function (_ref) { + var _ref2 = _slicedToArray(_ref, 1), + name = _ref2[0]; + + return name === fieldName; + }); + + if (field) { + acc.push(field); + } + + return acc; + }, []); + return item; + }); + } + }, { + key: "getSourceMapping", + value: function getSourceMapping() { + var k = this.sourceMapping; + k.supervisor = ['Employee', 'id', 'first_name+last_name']; + return k; + } + }, { + key: "viewElement", + value: function viewElement(id) { + var sourceMappingJson = JSON.stringify(this.getSourceMapping()); + var req = { + map: sourceMappingJson + }; + var reqJson = JSON.stringify(req); + var callBackData = []; + callBackData.callBackData = []; + callBackData.callBackSuccess = 'modEmployeeGetSuccessCallBack'; + callBackData.callBackFail = 'modEmployeeGetFailCallBack'; + this.customAction('get', 'modules=employees', reqJson, callBackData); + } + }, { + key: "deleteProfileImage", + value: function deleteProfileImage(empId) { + var req = { + id: empId + }; + var reqJson = JSON.stringify(req); + var callBackData = []; + callBackData.callBackData = []; + callBackData.callBackSuccess = 'modEmployeeDeleteProfileImageCallBack'; + callBackData.callBackFail = 'modEmployeeDeleteProfileImageCallBack'; + this.customAction('deleteProfileImage', 'modules=employees', reqJson, callBackData); + } + }, { + key: "modEmployeeDeleteProfileImageCallBack", + value: function modEmployeeDeleteProfileImageCallBack(data) { + // eslint-disable-next-line no-restricted-globals + top.location.href = top.location.href; + } + }, { + key: "modEmployeeGetSuccessCallBack", + value: function modEmployeeGetSuccessCallBack(data) { + var currentEmpId = data[1]; + var userEmpId = data[2]; + + var _data = _slicedToArray(data, 1), + element = _data[0]; + + this.initProfile(element); + } + }, { + key: "modEmployeeGetSuccessCallBack1", + value: function modEmployeeGetSuccessCallBack1(data) { + var fields = this.getFormFields(); + var currentEmpId = data[1]; + var userEmpId = data[2]; + var _data2 = data; + + var _data3 = _slicedToArray(_data2, 1); + + data = _data3[0]; + var html = this.getCustomTemplate('myDetails.html'); + + for (var i = 0; i < fields.length; i++) { + if (this.fieldNameMap[fields[i][0]] !== undefined && this.fieldNameMap[fields[i][0]] !== null) { + var title = this.fieldNameMap[fields[i][0]].textMapped; + html = html.replace("#_label_".concat(fields[i][0], "_#"), this.gt(title)); + } + } + + html = html.replace(/#_.+_#/gi, ''); + html = html.replace(/_id_/g, data.id); + $("#".concat(this.getTableName())).html(html); + + for (var _i2 = 0; _i2 < fields.length; _i2++) { + $("#".concat(this.getTableName(), " #").concat(fields[_i2][0])).html(data[fields[_i2][0]]); + $("#".concat(this.getTableName(), " #").concat(fields[_i2][0], "_Name")).html(data["".concat(fields[_i2][0], "_Name")]); + } + + $("#".concat(this.getTableName(), " #supervisor_Name")).html(data.supervisor_Name); + var subordinates = ''; + + for (var _i3 = 0; _i3 < data.subordinates.length; _i3++) { + if (data.subordinates[_i3].first_name !== undefined && data.subordinates[_i3].first_name !== null) { + subordinates += "".concat(data.subordinates[_i3].first_name, " "); + } + + if (data.subordinates[_i3].middle_name !== undefined && data.subordinates[_i3].middle_name !== null && data.subordinates[_i3].middle_name !== '') { + subordinates += "".concat(data.subordinates[_i3].middle_name, " "); + } + + if (data.subordinates[_i3].last_name !== undefined && data.subordinates[_i3].last_name !== null && data.subordinates[_i3].last_name !== '') { + subordinates += data.subordinates[_i3].last_name; + } + + subordinates += '
    '; + } // Add custom fields + + + if (data.customFields !== undefined && data.customFields !== null && Object.keys(data.customFields).length > 0) { + var ct = '
    '; + var sectionTemplate = '

    #_section.name_#

    '; + var customFieldHtml; + + for (var index in data.customFields) { + if (!data.customFields[index][1]) { + data.customFields[index][1] = this.gt('Other Details'); + } + + var sectionId = data.customFields[index][1].toLocaleLowerCase(); + sectionId = sectionId.replace(' ', '_'); + + if ($("#cont_".concat(sectionId)).length <= 0) { + // Add section + var sectionHtml = sectionTemplate; + sectionHtml = sectionHtml.replace('#_section_#', sectionId); + sectionHtml = sectionHtml.replace('#_section.name_#', data.customFields[index][1]); + $('#customFieldsCont').append($(sectionHtml)); + } + + customFieldHtml = ct; + customFieldHtml = customFieldHtml.replace('#_label_#', index); + + if (data.customFields[index][2] === 'fileupload') { + customFieldHtml = customFieldHtml.replace('#_value_#', "")); + } else { + customFieldHtml = customFieldHtml.replace('#_value_#', data.customFields[index][0]); + } + + $("#cont_".concat(sectionId)).append($(customFieldHtml)); + } + } else { + $('#customFieldsCont').remove(); + } + + $("#".concat(this.getTableName(), " #subordinates")).html(subordinates); + $("#".concat(this.getTableName(), " #name")).html("".concat(data.first_name, " ").concat(data.last_name)); + this.currentUserId = data.id; + $("#".concat(this.getTableName(), " #profile_image_").concat(data.id)).attr('src', data.image); + + if (this.checkPermission('Upload/Delete Profile Image') === 'No') { + $('#employeeUploadProfileImage').remove(); + $('#employeeDeleteProfileImage').remove(); + } + + if (this.checkPermission('Edit Employee Details') === 'No') { + $('#employeeProfileEditInfo').remove(); + } + + if (currentEmpId !== userEmpId) { + $('#employeeUpdatePassword').remove(); + } + + this.cancel(); + } + }, { + key: "modEmployeeGetFailCallBack", + value: function modEmployeeGetFailCallBack(data) {} + }, { + key: "editEmployee", + value: function editEmployee() { + this.edit(this.currentUserId); + } + }, { + key: "changePassword", + value: function changePassword() { + $('#adminUsersModel').modal('show'); + $('#adminUsersChangePwd #newpwd').val(''); + $('#adminUsersChangePwd #conpwd').val(''); + $('#adminUsersChangePwd_error').hide(); + } + }, { + key: "changePasswordConfirm", + value: function changePasswordConfirm() { + $('#adminUsersChangePwd_error').hide(); + var password = $('#adminUsersChangePwd #newpwd').val(); + var conPassword = $('#adminUsersChangePwd #conpwd').val(); + + if (conPassword !== password) { + $('#adminUsersChangePwd_error').html("Passwords don't match"); + $('#adminUsersChangePwd_error').show(); + return; + } + + var validatePasswordResult = this.validatePassword(password); + + if (validatePasswordResult != null) { + $('#adminUsersChangePwd_error').html(validatePasswordResult); + $('#adminUsersChangePwd_error').show(); + return; + } + + var req = { + pwd: conPassword + }; + var reqJson = JSON.stringify(req); + var callBackData = []; + callBackData.callBackData = []; + callBackData.callBackSuccess = 'changePasswordSuccessCallBack'; + callBackData.callBackFail = 'changePasswordFailCallBack'; + this.customAction('changePassword', 'modules=employees', reqJson, callBackData); + } + }, { + key: "closeChangePassword", + value: function closeChangePassword() { + $('#adminUsersModel').modal('hide'); + } + }, { + key: "changePasswordSuccessCallBack", + value: function changePasswordSuccessCallBack(callBackData, serverData) { + this.closeChangePassword(); + this.showMessage('Password Change', 'Password changed successfully'); + } + }, { + key: "changePasswordFailCallBack", + value: function changePasswordFailCallBack(callBackData, serverData) { + this.closeChangePassword(); + this.showMessage('Error', callBackData); + } + }]); + + return EmployeeAdapter; +}(_ReactModalAdapterBase["default"]); +/* + * Company Graph + */ + + +var CompanyStructureAdapter = /*#__PURE__*/function (_AdapterBase) { + _inherits(CompanyStructureAdapter, _AdapterBase); + + var _super2 = _createSuper(CompanyStructureAdapter); + + function CompanyStructureAdapter() { + _classCallCheck(this, CompanyStructureAdapter); + + return _super2.apply(this, arguments); + } + + _createClass(CompanyStructureAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'title', 'address', 'type', 'country', 'parent']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Name' + }, { + sTitle: 'Address' + }, { + sTitle: 'Type' + }, { + sTitle: 'Country', + sClass: 'center' + }, { + sTitle: 'Parent Structure' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden', + validation: '' + }], ['title', { + label: 'Name', + type: 'text', + validation: '' + }], ['description', { + label: 'Details', + type: 'textarea', + validation: '' + }], ['address', { + label: 'Address', + type: 'textarea', + validation: 'none' + }], ['type', { + label: 'Type', + type: 'select', + source: [['Company', 'Company'], ['Head Office', 'Head Office'], ['Regional Office', 'Regional Office'], ['Department', 'Department'], ['Unit', 'Unit'], ['Sub Unit', 'Sub Unit'], ['Other', 'Other']] + }], ['country', { + label: 'Country', + type: 'select', + 'remote-source': ['Country', 'code', 'name'] + }], ['parent', { + label: 'Parent Structure', + type: 'select', + 'allow-null': true, + 'remote-source': ['CompanyStructure', 'id', 'title'] + }]]; + } + }]); + + return CompanyStructureAdapter; +}(_AdapterBase3["default"]); + +var CompanyGraphAdapter = /*#__PURE__*/function (_CompanyStructureAdap) { + _inherits(CompanyGraphAdapter, _CompanyStructureAdap); + + var _super3 = _createSuper(CompanyGraphAdapter); + + function CompanyGraphAdapter(endPoint, tab, filter, orderBy) { + var _this3; + + _classCallCheck(this, CompanyGraphAdapter); + + _this3 = _super3.call(this, endPoint, tab, filter, orderBy); + _this3.nodeIdCounter = 0; + return _this3; + } + + _createClass(CompanyGraphAdapter, [{ + key: "convertToTree", + value: function convertToTree(data) { + var ice = {}; + ice.id = -1; + ice.title = ''; + ice.name = ''; + ice.children = []; + var parent = null; + var added = {}; + + for (var i = 0; i < data.length; i++) { + data[i].name = data[i].title; + + if (data[i].parent !== null && data[i].parent !== undefined) { + parent = this.findParent(data, data[i].parent); + + if (parent !== null) { + if (parent.children === undefined || parent.children === null) { + parent.children = []; + } + + parent.children.push(data[i]); + } + } + } + + for (var _i4 = 0; _i4 < data.length; _i4++) { + if (data[_i4].parent === null || data[_i4].parent === undefined) { + ice.children.push(data[_i4]); + } + } + + return ice; + } + }, { + key: "findParent", + value: function findParent(data, parent) { + for (var i = 0; i < data.length; i++) { + if (data[i].title === parent || data[i].title === parent) { + return data[i]; + } + } + + return null; + } + }, { + key: "createTable", + value: function createTable(elementId) { + $('#tabPageCompanyGraph').html(''); + var that = this; // eslint-disable-next-line prefer-destructuring + + var sourceData = this.sourceData; // this.fixCyclicParent(sourceData); + + var treeData = this.convertToTree(sourceData); + var m = [20, 120, 20, 120]; + var w = 5000 - m[1] - m[3]; + var h = 1000 - m[0] - m[2]; + var tree = d3.layout.tree().size([h, w]); + this.diagonal = d3.svg.diagonal().projection(function (d) { + return [d.y, d.x]; + }); + this.vis = d3.select('#tabPageCompanyGraph').append('svg:svg').attr('width', w + m[1] + m[3]).attr('height', h + m[0] + m[2]).append('svg:g').attr('transform', "translate(".concat(m[3], ",").concat(m[0], ")")); + var root = treeData; + root.x0 = h / 2; + root.y0 = 0; + + function toggleAll(d) { + if (d.children) { + console.log(d.name); + d.children.forEach(toggleAll); + that.toggle(d); + } + } + + this.update(root, tree, root); + } + }, { + key: "update", + value: function update(source, tree, root) { + var that = this; + var duration = d3.event && d3.event.altKey ? 5000 : 500; // Compute the new tree layout. + + var nodes = tree.nodes(root).reverse(); // Normalize for fixed-depth. + + nodes.forEach(function (d) { + d.y = d.depth * 180; + }); // Update the nodes� + + var node = that.vis.selectAll('g.node') // eslint-disable-next-line no-return-assign + .data(nodes, function (d) { + return d.id || (d.id = ++that.nodeIdCounter); + }); // Enter any new nodes at the parent's previous position. + + var nodeEnter = node.enter().append('svg:g').attr('class', 'node').attr('transform', function (d) { + return "translate(".concat(source.y0, ",").concat(source.x0, ")"); + }).on('click', function (d) { + that.toggle(d); + that.update(d, tree, root); + }); + nodeEnter.append('svg:circle').attr('r', 1e-6) // eslint-disable-next-line no-underscore-dangle + .style('fill', function (d) { + return d._children ? 'lightsteelblue' : '#fff'; + }); + nodeEnter.append('svg:text').attr('x', function (d) { + return d.children || d._children ? -10 : 10; + }).attr('dy', '.35em').attr('text-anchor', function (d) { + return d.children || d._children ? 'end' : 'start'; + }).text(function (d) { + return d.name; + }).style('fill-opacity', 1e-6); // Transition nodes to their new position. + + var nodeUpdate = node.transition().duration(duration).attr('transform', function (d) { + return "translate(".concat(d.y, ",").concat(d.x, ")"); + }); + nodeUpdate.select('circle').attr('r', 4.5).style('fill', function (d) { + return d._children ? 'lightsteelblue' : '#fff'; + }); + nodeUpdate.select('text').style('fill-opacity', 1); // Transition exiting nodes to the parent's new position. + + var nodeExit = node.exit().transition().duration(duration).attr('transform', function (d) { + return "translate(".concat(source.y, ",").concat(source.x, ")"); + }).remove(); + nodeExit.select('circle').attr('r', 1e-6); + nodeExit.select('text').style('fill-opacity', 1e-6); // Update the links� + + var link = that.vis.selectAll('path.link').data(tree.links(nodes), function (d) { + return d.target.id; + }); // Enter any new links at the parent's previous position. + + link.enter().insert('svg:path', 'g').attr('class', 'link').attr('d', function (d) { + var o = { + x: source.x0, + y: source.y0 + }; + return that.diagonal({ + source: o, + target: o + }); + }).transition().duration(duration).attr('d', that.diagonal); // Transition links to their new position. + + link.transition().duration(duration).attr('d', that.diagonal); // Transition exiting nodes to the parent's new position. + + link.exit().transition().duration(duration).attr('d', function (d) { + var o = { + x: source.x, + y: source.y + }; + return that.diagonal({ + source: o, + target: o + }); + }).remove(); // Stash the old positions for transition. + + nodes.forEach(function (d) { + d.x0 = d.x; + d.y0 = d.y; + }); + } // Toggle children. + + }, { + key: "toggle", + value: function toggle(d) { + if (d.children) { + d._children = d.children; + d.children = null; + } else { + d.children = d._children; + d._children = null; + } + } + }, { + key: "getSourceDataById", + value: function getSourceDataById(id) { + for (var i = 0; i < this.sourceData.length; i++) { + if (this.sourceData[i].id === id) { + return this.sourceData[i]; + } + } + + return null; + } + }, { + key: "fixCyclicParent", + value: function fixCyclicParent(sourceData) { + var errorMsg = ''; + + for (var i = 0; i < sourceData.length; i++) { + var obj = sourceData[i]; + var curObj = obj; + var parentIdArr = {}; + parentIdArr[curObj.id] = 1; + + while (curObj.parent != null && curObj.parent !== undefined) { + var parent = this.getSourceDataById(curObj.parent); + + if (parent == null) { + break; + } else if (parentIdArr[parent.id] === 1) { + errorMsg = "".concat(obj.title, "'s parent structure set to ").concat(parent.title, "
    "); + obj.parent = null; + break; + } + + parentIdArr[parent.id] = 1; + curObj = parent; + } + } + + if (errorMsg !== '') { + this.showMessage('Company Structure is having a cyclic dependency', "We found a cyclic dependency due to following reasons:
    ".concat(errorMsg)); + return false; + } + + return true; + } + }]); + + return CompanyGraphAdapter; +}(CompanyStructureAdapter); +/* + * Api Access + */ + + +var ApiAccessAdapter = /*#__PURE__*/function (_AdapterBase2) { + _inherits(ApiAccessAdapter, _AdapterBase2); + + var _super4 = _createSuper(ApiAccessAdapter); + + function ApiAccessAdapter() { + _classCallCheck(this, ApiAccessAdapter); + + return _super4.apply(this, arguments); + } + + _createClass(ApiAccessAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return []; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return []; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return []; + } + }, { + key: "setToken", + value: function setToken(token) { + this.token = token; + } + }, { + key: "get", + value: function get() { + var canvas = document.getElementById('apiQRcode'); + + _qrcode["default"].toCanvas(canvas, JSON.stringify({ + key: 'IceHrm', + url: this.apiUrl, + token: this.token + }), function (error) { + if (error) { + console.log(error); + } + }); + } + }]); + + return ApiAccessAdapter; +}(_AdapterBase3["default"]); + +module.exports = { + EmployeeAdapter: EmployeeAdapter, + CompanyGraphAdapter: CompanyGraphAdapter, + ApiAccessAdapter: ApiAccessAdapter +}; + +},{"../../../api/AdapterBase":39,"../../../api/ReactModalAdapterBase":50,"./components/EmployeeProfile":75,"qrcode":7,"react":"react","react-dom":"react-dom"}],78:[function(require,module,exports){ +"use strict"; + +var _lib = require("./lib"); + +window.EmployeeCompanyLoanAdapter = _lib.EmployeeCompanyLoanAdapter; + +},{"./lib":79}],79:[function(require,module,exports){ +"use strict"; + +var _AdapterBase2 = _interopRequireDefault(require("../../../api/AdapterBase")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var EmployeeCompanyLoanAdapter = /*#__PURE__*/function (_AdapterBase) { + _inherits(EmployeeCompanyLoanAdapter, _AdapterBase); + + var _super = _createSuper(EmployeeCompanyLoanAdapter); + + function EmployeeCompanyLoanAdapter() { + _classCallCheck(this, EmployeeCompanyLoanAdapter); + + return _super.apply(this, arguments); + } + + _createClass(EmployeeCompanyLoanAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'loan', 'start_date', 'period_months', 'currency', 'amount', 'status']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Loan Type' + }, { + sTitle: 'Loan Start Date' + }, { + sTitle: 'Loan Period (Months)' + }, { + sTitle: 'Currency' + }, { + sTitle: 'Amount' + }, { + sTitle: 'Status' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['loan', { + label: 'Loan Type', + type: 'placeholder', + 'remote-source': ['CompanyLoan', 'id', 'name'] + }], ['start_date', { + label: 'Loan Start Date', + type: 'placeholder', + validation: '' + }], ['last_installment_date', { + label: 'Last Installment Date', + type: 'placeholder', + validation: 'none' + }], ['period_months', { + label: 'Loan Period (Months)', + type: 'placeholder', + validation: 'number' + }], ['currency', { + label: 'Currency', + type: 'placeholder', + 'remote-source': ['CurrencyType', 'id', 'name'] + }], ['amount', { + label: 'Loan Amount', + type: 'placeholder', + validation: 'float' + }], ['monthly_installment', { + label: 'Monthly Installment', + type: 'placeholder', + validation: 'float' + }], ['status', { + label: 'Status', + type: 'placeholder', + source: [['Approved', 'Approved'], ['Paid', 'Paid'], ['Suspended', 'Suspended']] + }], ['details', { + label: 'Details', + type: 'placeholder', + validation: 'none' + }]]; + } // eslint-disable-next-line no-unused-vars + + }, { + key: "getActionButtonsHtml", + value: function getActionButtonsHtml(id, data) { + var editButton = '' + ''; + var deleteButton = '' + ''; + var html = '
    _edit__delete_
    '; + + if (this.showDelete) { + html = html.replace('_delete_', deleteButton); + } else { + html = html.replace('_delete_', ''); + } + + if (this.showEdit) { + html = html.replace('_edit_', editButton); + } else { + html = html.replace('_edit_', ''); + } + + html = html.replace(/_id_/g, id); + html = html.replace(/_BASE_/g, this.baseUrl); + return html; + } + }]); + + return EmployeeCompanyLoanAdapter; +}(_AdapterBase2["default"]); + +module.exports = { + EmployeeCompanyLoanAdapter: EmployeeCompanyLoanAdapter +}; + +},{"../../../api/AdapterBase":39}],80:[function(require,module,exports){ +"use strict"; + +var _lib = require("./lib"); + +window.EmployeeOvertimeAdapter = _lib.EmployeeOvertimeAdapter; +window.EmployeeOvertimeApproverAdapter = _lib.EmployeeOvertimeApproverAdapter; +window.SubordinateEmployeeOvertimeAdapter = _lib.SubordinateEmployeeOvertimeAdapter; + +},{"./lib":81}],81:[function(require,module,exports){ +"use strict"; + +var _ApproveModuleAdapter2 = _interopRequireDefault(require("../../../api/ApproveModuleAdapter")); + +var _lib = require("../../../admin/src/overtime/lib"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var EmployeeOvertimeAdapter = /*#__PURE__*/function (_ApproveModuleAdapter) { + _inherits(EmployeeOvertimeAdapter, _ApproveModuleAdapter); + + var _super = _createSuper(EmployeeOvertimeAdapter); + + function EmployeeOvertimeAdapter(endPoint, tab, filter, orderBy) { + var _this; + + _classCallCheck(this, EmployeeOvertimeAdapter); + + _this = _super.call(this, endPoint, tab, filter, orderBy); + _this.itemName = 'Overtime'; + _this.itemNameLower = 'employeeovertime'; + _this.modulePathName = 'overtime'; + return _this; + } + + _createClass(EmployeeOvertimeAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'category', 'start_time', 'end_time', 'project', 'status']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Category' + }, { + sTitle: 'Start Time' + }, { + sTitle: 'End Time' + }, { + sTitle: 'Project' + }, { + sTitle: 'Status' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['category', { + label: 'Category', + type: 'select2', + 'allow-null': false, + 'remote-source': ['OvertimeCategory', 'id', 'name'] + }], ['start_time', { + label: 'Start Time', + type: 'datetime', + validation: '' + }], ['end_time', { + label: 'End Time', + type: 'datetime', + validation: '' + }], ['project', { + label: 'Project', + type: 'select2', + 'allow-null': true, + 'null=label': 'none', + 'remote-source': ['Project', 'id', 'name'] + }], ['notes', { + label: 'Notes', + type: 'textarea', + validation: 'none' + }]]; + } + }]); + + return EmployeeOvertimeAdapter; +}(_ApproveModuleAdapter2["default"]); +/* + EmployeeOvertimeApproverAdapter + */ + + +var EmployeeOvertimeApproverAdapter = /*#__PURE__*/function (_EmployeeOvertimeAdmi) { + _inherits(EmployeeOvertimeApproverAdapter, _EmployeeOvertimeAdmi); + + var _super2 = _createSuper(EmployeeOvertimeApproverAdapter); + + function EmployeeOvertimeApproverAdapter(endPoint, tab, filter, orderBy) { + var _this2; + + _classCallCheck(this, EmployeeOvertimeApproverAdapter); + + _this2 = _super2.call(this, endPoint, tab, filter, orderBy); + _this2.itemName = 'Overtime'; + _this2.itemNameLower = 'employeeovertime'; + _this2.modulePathName = 'overtime'; + return _this2; + } + + _createClass(EmployeeOvertimeApproverAdapter, [{ + key: "getActionButtonsHtml", + value: function getActionButtonsHtml(id, data) { + var statusChangeButton = '' + ''; + var viewLogsButton = ''; + var html = '
    _status__logs_
    '; + html = html.replace('_logs_', viewLogsButton); + + if (data[this.getStatusFieldPosition()] === 'Processing') { + html = html.replace('_status_', statusChangeButton); + } else { + html = html.replace('_status_', ''); + } + + html = html.replace(/_id_/g, id); + html = html.replace(/_BASE_/g, this.baseUrl); + html = html.replace(/_cstatus_/g, data[this.getStatusFieldPosition()]); + return html; + } + }, { + key: "getStatusOptionsData", + value: function getStatusOptionsData(currentStatus) { + var data = {}; + + if (currentStatus === 'Processing') { + data.Approved = 'Approved'; + data.Rejected = 'Rejected'; + } + + return data; + } + }, { + key: "getStatusOptions", + value: function getStatusOptions(currentStatus) { + return this.generateOptions(this.getStatusOptionsData(currentStatus)); + } + }]); + + return EmployeeOvertimeApproverAdapter; +}(_lib.EmployeeOvertimeAdminAdapter); +/* + EmployeeOvertimeAdapter + */ + + +var SubordinateEmployeeOvertimeAdapter = /*#__PURE__*/function (_EmployeeOvertimeAdmi2) { + _inherits(SubordinateEmployeeOvertimeAdapter, _EmployeeOvertimeAdmi2); + + var _super3 = _createSuper(SubordinateEmployeeOvertimeAdapter); + + function SubordinateEmployeeOvertimeAdapter(endPoint, tab, filter, orderBy) { + var _this3; + + _classCallCheck(this, SubordinateEmployeeOvertimeAdapter); + + _this3 = _super3.call(this, endPoint, tab, filter, orderBy); + _this3.itemName = 'Overtime'; + _this3.itemNameLower = 'employeeovertime'; + _this3.modulePathName = 'overtime'; + return _this3; + } + + return SubordinateEmployeeOvertimeAdapter; +}(_lib.EmployeeOvertimeAdminAdapter); + +module.exports = { + EmployeeOvertimeAdapter: EmployeeOvertimeAdapter, + EmployeeOvertimeApproverAdapter: EmployeeOvertimeApproverAdapter, + SubordinateEmployeeOvertimeAdapter: SubordinateEmployeeOvertimeAdapter +}; + +},{"../../../admin/src/overtime/lib":35,"../../../api/ApproveModuleAdapter":41}],82:[function(require,module,exports){ +"use strict"; + +var _lib = require("./lib"); + +window.EmployeeProjectAdapter = _lib.EmployeeProjectAdapter; + +},{"./lib":83}],83:[function(require,module,exports){ +"use strict"; + +var _AdapterBase2 = _interopRequireDefault(require("../../../api/AdapterBase")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var EmployeeProjectAdapter = /*#__PURE__*/function (_AdapterBase) { + _inherits(EmployeeProjectAdapter, _AdapterBase); + + var _super = _createSuper(EmployeeProjectAdapter); + + function EmployeeProjectAdapter() { + _classCallCheck(this, EmployeeProjectAdapter); + + return _super.apply(this, arguments); + } + + _createClass(EmployeeProjectAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'project']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Project' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['project', { + label: 'Project', + type: 'select2', + 'remote-source': ['Project', 'id', 'name'] + }], ['details', { + label: 'Details', + type: 'textarea', + validation: 'none' + }]]; + } + }]); + + return EmployeeProjectAdapter; +}(_AdapterBase2["default"]); + +module.exports = { + EmployeeProjectAdapter: EmployeeProjectAdapter +}; + +},{"../../../api/AdapterBase":39}],84:[function(require,module,exports){ +"use strict"; + +var _lib = require("./lib"); + +window.EmployeeSkillAdapter = _lib.EmployeeSkillAdapter; +window.EmployeeEducationAdapter = _lib.EmployeeEducationAdapter; +window.EmployeeCertificationAdapter = _lib.EmployeeCertificationAdapter; +window.EmployeeLanguageAdapter = _lib.EmployeeLanguageAdapter; + +},{"./lib":85}],85:[function(require,module,exports){ +"use strict"; + +var _AdapterBase5 = _interopRequireDefault(require("../../../api/AdapterBase")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var EmployeeSkillAdapter = /*#__PURE__*/function (_AdapterBase) { + _inherits(EmployeeSkillAdapter, _AdapterBase); + + var _super = _createSuper(EmployeeSkillAdapter); + + function EmployeeSkillAdapter() { + _classCallCheck(this, EmployeeSkillAdapter); + + return _super.apply(this, arguments); + } + + _createClass(EmployeeSkillAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'skill_id', 'details']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Skill' + }, { + sTitle: 'Details' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['skill_id', { + label: 'Skill', + type: 'select2', + 'allow-null': true, + 'remote-source': ['Skill', 'id', 'name'] + }], ['details', { + label: 'Details', + type: 'textarea', + validation: '' + }]]; + } + }]); + + return EmployeeSkillAdapter; +}(_AdapterBase5["default"]); +/** + * EmployeeEducationAdapter + */ + + +var EmployeeEducationAdapter = /*#__PURE__*/function (_AdapterBase2) { + _inherits(EmployeeEducationAdapter, _AdapterBase2); + + var _super2 = _createSuper(EmployeeEducationAdapter); + + function EmployeeEducationAdapter() { + _classCallCheck(this, EmployeeEducationAdapter); + + return _super2.apply(this, arguments); + } + + _createClass(EmployeeEducationAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'education_id', 'institute', 'date_start', 'date_end']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Qualification' + }, { + sTitle: 'Institute' + }, { + sTitle: 'Start Date' + }, { + sTitle: 'Completed On' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['education_id', { + label: 'Qualification', + type: 'select2', + 'allow-null': false, + 'remote-source': ['Education', 'id', 'name'] + }], ['institute', { + label: 'Institute', + type: 'text', + validation: '' + }], ['date_start', { + label: 'Start Date', + type: 'date', + validation: 'none' + }], ['date_end', { + label: 'Completed On', + type: 'date', + validation: 'none' + }]]; + } + }]); + + return EmployeeEducationAdapter; +}(_AdapterBase5["default"]); +/** + * EmployeeCertificationAdapter + */ + + +var EmployeeCertificationAdapter = /*#__PURE__*/function (_AdapterBase3) { + _inherits(EmployeeCertificationAdapter, _AdapterBase3); + + var _super3 = _createSuper(EmployeeCertificationAdapter); + + function EmployeeCertificationAdapter() { + _classCallCheck(this, EmployeeCertificationAdapter); + + return _super3.apply(this, arguments); + } + + _createClass(EmployeeCertificationAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'certification_id', 'institute', 'date_start', 'date_start']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Certification' + }, { + sTitle: 'Institute' + }, { + sTitle: 'Granted On' + }, { + sTitle: 'Valid Thru' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['certification_id', { + label: 'Certification', + type: 'select2', + 'allow-null': false, + 'remote-source': ['Certification', 'id', 'name'] + }], ['institute', { + label: 'Institute', + type: 'text', + validation: '' + }], ['date_start', { + label: 'Granted On', + type: 'date', + validation: 'none' + }], ['date_end', { + label: 'Valid Thru', + type: 'date', + validation: 'none' + }]]; + } + }]); + + return EmployeeCertificationAdapter; +}(_AdapterBase5["default"]); +/** + * EmployeeLanguageAdapter + */ + + +var EmployeeLanguageAdapter = /*#__PURE__*/function (_AdapterBase4) { + _inherits(EmployeeLanguageAdapter, _AdapterBase4); + + var _super4 = _createSuper(EmployeeLanguageAdapter); + + function EmployeeLanguageAdapter() { + _classCallCheck(this, EmployeeLanguageAdapter); + + return _super4.apply(this, arguments); + } + + _createClass(EmployeeLanguageAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'language_id', 'reading', 'speaking', 'writing', 'understanding']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Language' + }, { + sTitle: 'Reading' + }, { + sTitle: 'Speaking' + }, { + sTitle: 'Writing' + }, { + sTitle: 'Understanding' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + var compArray = [['Elementary Proficiency', 'Elementary Proficiency'], ['Limited Working Proficiency', 'Limited Working Proficiency'], ['Professional Working Proficiency', 'Professional Working Proficiency'], ['Full Professional Proficiency', 'Full Professional Proficiency'], ['Native or Bilingual Proficiency', 'Native or Bilingual Proficiency']]; + return [['id', { + label: 'ID', + type: 'hidden' + }], ['language_id', { + label: 'Language', + type: 'select2', + 'allow-null': false, + 'remote-source': ['Language', 'id', 'description'] + }], ['reading', { + label: 'Reading', + type: 'select', + source: compArray + }], ['speaking', { + label: 'Speaking', + type: 'select', + source: compArray + }], ['writing', { + label: 'Writing', + type: 'select', + source: compArray + }], ['understanding', { + label: 'Understanding', + type: 'select', + source: compArray + }]]; + } + }]); + + return EmployeeLanguageAdapter; +}(_AdapterBase5["default"]); + +module.exports = { + EmployeeSkillAdapter: EmployeeSkillAdapter, + EmployeeEducationAdapter: EmployeeEducationAdapter, + EmployeeCertificationAdapter: EmployeeCertificationAdapter, + EmployeeLanguageAdapter: EmployeeLanguageAdapter +}; + +},{"../../../api/AdapterBase":39}],86:[function(require,module,exports){ +"use strict"; + +var _lib = require("./lib"); + +window.UserReportAdapter = _lib.UserReportAdapter; + +},{"./lib":87}],87:[function(require,module,exports){ +"use strict"; + +var _lib = require("../../../admin/src/reports/lib"); + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +/** + * UserReportAdapter + */ +var UserReportAdapter = /*#__PURE__*/function (_ReportAdapter) { + _inherits(UserReportAdapter, _ReportAdapter); + + var _super = _createSuper(UserReportAdapter); + + function UserReportAdapter() { + _classCallCheck(this, UserReportAdapter); + + return _super.apply(this, arguments); + } + + _createClass(UserReportAdapter, [{ + key: "renderForm", + value: function renderForm(object) { + var that = this; + this.processFormFieldsWithObject(object); + + if (this.remoteFieldsExists) { + var cb = function cb() { + that.renderFormNew(object); + }; + + this.initFieldMasterData(cb); + } else { + this.initFieldMasterData(); + that.renderFormNew(object); + } + + this.currentReport = object; + } + }]); + + return UserReportAdapter; +}(_lib.ReportAdapter); + +module.exports = { + UserReportAdapter: UserReportAdapter +}; + +},{"../../../admin/src/reports/lib":36}],88:[function(require,module,exports){ +"use strict"; + +var _lib = require("./lib"); + +window.EmployeeSalaryAdapter = _lib.EmployeeSalaryAdapter; + +},{"./lib":89}],89:[function(require,module,exports){ +"use strict"; + +var _AdapterBase2 = _interopRequireDefault(require("../../../api/AdapterBase")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var EmployeeSalaryAdapter = /*#__PURE__*/function (_AdapterBase) { + _inherits(EmployeeSalaryAdapter, _AdapterBase); + + var _super = _createSuper(EmployeeSalaryAdapter); + + function EmployeeSalaryAdapter() { + _classCallCheck(this, EmployeeSalaryAdapter); + + return _super.apply(this, arguments); + } + + _createClass(EmployeeSalaryAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'component', 'amount', 'details']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Salary Component' + }, { + sTitle: 'Amount' + }, { + sTitle: 'Details' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['component', { + label: 'Salary Component', + type: 'select2', + 'remote-source': ['SalaryComponent', 'id', 'name'] + }], ['amount', { + label: 'Amount', + type: 'text', + validation: 'float' + }], ['details', { + label: 'Details', + type: 'textarea', + validation: 'none' + }]]; + } + }]); + + return EmployeeSalaryAdapter; +}(_AdapterBase2["default"]); + +module.exports = { + EmployeeSalaryAdapter: EmployeeSalaryAdapter +}; + +},{"../../../api/AdapterBase":39}],90:[function(require,module,exports){ +"use strict"; + +var _lib = require("./lib"); + +window.StaffDirectoryAdapter = _lib.StaffDirectoryAdapter; +window.StaffDirectoryObjectAdapter = _lib.StaffDirectoryObjectAdapter; + +},{"./lib":91}],91:[function(require,module,exports){ +"use strict"; + +var _AdapterBase2 = _interopRequireDefault(require("../../../api/AdapterBase")); + +var _ObjectAdapter2 = _interopRequireDefault(require("../../../api/ObjectAdapter")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var StaffDirectoryAdapter = /*#__PURE__*/function (_AdapterBase) { + _inherits(StaffDirectoryAdapter, _AdapterBase); + + var _super = _createSuper(StaffDirectoryAdapter); + + function StaffDirectoryAdapter() { + _classCallCheck(this, StaffDirectoryAdapter); + + return _super.apply(this, arguments); + } + + _createClass(StaffDirectoryAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'image', 'first_name', 'last_name', 'job_title', 'department', 'work_phone', 'work_email', 'joined_date']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: '' + }, { + sTitle: 'First Name' + }, { + sTitle: 'Last Name' + }, { + sTitle: 'Job Title' + }, { + sTitle: 'Department' + }, { + sTitle: 'Work Phone' + }, { + sTitle: 'Work Email' + }, { + sTitle: 'Joined Date' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden', + validation: '' + }], ['first_name', { + label: 'First Name', + type: 'text', + validation: '' + }], ['last_name', { + label: 'Last Name', + type: 'text', + validation: '' + }], ['job_title', { + label: 'Job Title', + type: 'select2', + 'remote-source': ['JobTitle', 'id', 'name'] + }], ['department', { + label: 'Department', + type: 'select2', + 'remote-source': ['CompanyStructure', 'id', 'title'] + }], ['work_phone', { + label: 'Work Phone', + type: 'text', + validation: 'none' + }], ['work_email', { + label: 'Work Email', + type: 'placeholder', + validation: 'emailOrEmpty' + }], ['joined_date', { + label: 'Joined Date', + type: 'date', + validation: '' + }]]; + } + }, { + key: "showActionButtons", + value: function showActionButtons() { + return false; + } + }, { + key: "getCustomTableParams", + value: function getCustomTableParams() { + var that = this; + var dataTableParams = { + aoColumnDefs: [{ + fnRender: function fnRender(data, cell) { + try { + return that.preProcessRemoteTableData(data, cell, 1); + } catch (e) { + return cell; + } + }, + aTargets: [1] + }, { + fnRender: function fnRender(data, cell) { + try { + return that.preProcessRemoteTableData(data, cell, 8); + } catch (e) { + return cell; + } + }, + aTargets: [8] + }] + }; + return dataTableParams; + } // eslint-disable-next-line consistent-return + + }, { + key: "preProcessRemoteTableData", + value: function preProcessRemoteTableData(data, cell, id) { + if (id === 8) { + if (cell === '0000-00-00 00:00:00' || cell === '' || cell === undefined || cell === null) { + return ''; + } + + return Date.parse(cell).toString('yyyy MMM d'); + } + + if (id === 1) { + var tmp = 'User Image'; + return tmp.replace('_img_', cell); + } + } + }]); + + return StaffDirectoryAdapter; +}(_AdapterBase2["default"]); +/* + StaffDirectoryObjectAdapter + */ + + +var StaffDirectoryObjectAdapter = /*#__PURE__*/function (_ObjectAdapter) { + _inherits(StaffDirectoryObjectAdapter, _ObjectAdapter); + + var _super2 = _createSuper(StaffDirectoryObjectAdapter); + + function StaffDirectoryObjectAdapter() { + _classCallCheck(this, StaffDirectoryObjectAdapter); + + return _super2.apply(this, arguments); + } + + _createClass(StaffDirectoryObjectAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'image', 'first_name', 'last_name', 'job_title', 'department', 'work_phone', 'work_email', 'joined_date']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: '' + }, { + sTitle: 'First Name' + }, { + sTitle: 'Last Name' + }, { + sTitle: 'Job Title' + }, { + sTitle: 'Department' + }, { + sTitle: 'Work Phone' + }, { + sTitle: 'Work Email' + }, { + sTitle: 'Joined Date' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden', + validation: '' + }], ['first_name', { + label: 'First Name', + type: 'text', + validation: '' + }], ['last_name', { + label: 'Last Name', + type: 'text', + validation: '' + }], ['job_title', { + label: 'Job Title', + type: 'select2', + 'remote-source': ['JobTitle', 'id', 'name'] + }], ['department', { + label: 'Department', + type: 'select2', + 'remote-source': ['CompanyStructure', 'id', 'title'] + }], ['work_phone', { + label: 'Work Phone', + type: 'text', + validation: 'none' + }], ['work_email', { + label: 'Work Email', + type: 'placeholder', + validation: 'emailOrEmpty' + }], ['joined_date', { + label: 'Joined Date', + type: 'date', + validation: '' + }]]; + } // eslint-disable-next-line no-unused-vars + + }, { + key: "addDomEvents", + value: function addDomEvents(object) {} + }, { + key: "getTemplateName", + value: function getTemplateName() { + return 'element.html'; + } + }, { + key: "preProcessTableData", + value: function preProcessTableData(_row) { + var row = _row; + row.color = this.getColorByRandomString(row.first_name); + return row; + } + }, { + key: "getFilters", + value: function getFilters() { + return [['job_title', { + label: 'Job Title', + type: 'select2', + 'allow-null': true, + 'null-label': 'All Job Titles', + 'remote-source': ['JobTitle', 'id', 'name'] + }], ['department', { + label: 'Department', + type: 'select2', + 'allow-null': true, + 'null-label': 'All Departments', + 'remote-source': ['CompanyStructure', 'id', 'title'] + }]]; + } + }]); + + return StaffDirectoryObjectAdapter; +}(_ObjectAdapter2["default"]); + +module.exports = { + StaffDirectoryAdapter: StaffDirectoryAdapter, + StaffDirectoryObjectAdapter: StaffDirectoryObjectAdapter +}; + +},{"../../../api/AdapterBase":39,"../../../api/ObjectAdapter":49}],92:[function(require,module,exports){ +"use strict"; + +var _lib = require("./lib"); + +window.EmployeeTimeSheetAdapter = _lib.EmployeeTimeSheetAdapter; +window.SubEmployeeTimeSheetAdapter = _lib.SubEmployeeTimeSheetAdapter; +window.EmployeeTimeEntryAdapter = _lib.EmployeeTimeEntryAdapter; +window.QtsheetAdapter = _lib.QtsheetAdapter; + +},{"./lib":93}],93:[function(require,module,exports){ +"use strict"; + +var _AdapterBase3 = _interopRequireDefault(require("../../../api/AdapterBase")); + +var _FormValidation = _interopRequireDefault(require("../../../api/FormValidation")); + +var _TableEditAdapter2 = _interopRequireDefault(require("../../../api/TableEditAdapter")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var ValidationRules = _FormValidation["default"].getValidationRules(); + +var EmployeeTimeSheetAdapter = /*#__PURE__*/function (_AdapterBase) { + _inherits(EmployeeTimeSheetAdapter, _AdapterBase); + + var _super = _createSuper(EmployeeTimeSheetAdapter); + + function EmployeeTimeSheetAdapter(endPoint, tab, filter, orderBy) { + var _this; + + _classCallCheck(this, EmployeeTimeSheetAdapter); + + _this = _super.call(this, endPoint, tab, filter, orderBy); + _this.currentTimesheetId = null; + _this.currentTimesheet = null; + _this.needStartEndTime = false; + return _this; + } + + _createClass(EmployeeTimeSheetAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'date_start', 'date_end', 'total_time', 'status']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Start Date' + }, { + sTitle: 'End Date' + }, { + sTitle: 'Total Time' + }, { + sTitle: 'Status' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['date_start', { + label: 'TimeSheet Start Date', + type: 'date', + validation: '' + }], ['date_end', { + label: 'TimeSheet End Date', + type: 'date', + validation: '' + }], ['details', { + label: 'Reason', + type: 'textarea', + validation: 'none' + }]]; + } + }, { + key: "preProcessTableData", + value: function preProcessTableData(_row) { + var row = _row; + row[1] = Date.parse(row[1]).toString('MMM d, yyyy (dddd)'); + row[2] = Date.parse(row[2]).toString('MMM d, yyyy (dddd)'); + return row; + } + }, { + key: "setNeedStartEndTime", + value: function setNeedStartEndTime(status) { + this.needStartEndTime = status; + } + }, { + key: "renderForm", + value: function renderForm(object) { + var formHtml = this.templates.formTemplate; + $('#EmployeeTimesheetBlock').remove(); + $("#".concat(this.getTableName(), "Form")).html(formHtml); + $("#".concat(this.getTableName(), "Form")).show(); + $("#".concat(this.getTableName())).hide(); + $('.timesheet_start').html(Date.parse(object.date_start).toString('MMM d, yyyy (dddd)')); + $('.timesheet_end').html(Date.parse(object.date_end).toString('MMM d, yyyy (dddd)')); + this.currentTimesheet = object; + this.getTimeEntries(); + var st = Date.parse(object.date_start); + $('#EmployeeTimesheetBlock').fullCalendar({ + header: { + // left: 'prev,next today', + left: false, + // center: 'title', + center: false, + // right: 'month,agendaWeek,agendaDay' + right: false + }, + year: st.toString('yyyy'), + month: st.toString('M'), + date: st.toString('d'), + defaultView: 'basicWeek', + height: 200, + editable: false, + events: modJs.getScheduleJsonUrl(this.currentTimesheet.employee), + loading: function loading(bool) { + if (bool) $('#loadingBlock').show();else $('#loadingBlock').hide(); + }, + // eslint-disable-next-line no-unused-vars + dayClick: function dayClick(date, jsEvent, view, resourceObj) { + modJs.renderFormByDate(date.format()); + }, + // eslint-disable-next-line no-unused-vars + eventClick: function eventClick(calEvent, jsEvent, view) { + modJs.renderFormTimeEntryCalender(calEvent.id); + }, + eventRender: function eventRender(event, element) { + element.find('.fc-time').remove(); + } + }); + $('#EmployeeTimesheetBlock').fullCalendar('gotoDate', st); + $('.fc-toolbar').hide(); + } + }, { + key: "quickEdit", + value: function quickEdit(id, status, sdate, edate) { + $('#Qtsheet').data('lastActiveTab', modJs.tab); // eslint-disable-next-line no-global-assign + + modJs = modJsList.tabQtsheet; + modJs.setCurrentTimeSheetId(id); + $('.timesheet_start').html(sdate); + $('.timesheet_end').html(edate); + $('#timesheetTabs').find('.active').find('.reviewBlock.reviewBlockTable').hide(); + $('#QtsheetHeader').show(); + $('#Qtsheet').show(); + $('#QtsheetDataButtons').show(); + + if (status === 'Submitted' || status === 'Approved') { + $('.completeBtnTable').hide(); + $('.saveBtnTable').hide(); + } else { + $('.completeBtnTable').show(); + $('.saveBtnTable').show(); + } + + modJs.get([]); + } + }, { + key: "getScheduleJsonUrl", + value: function getScheduleJsonUrl(employeeId) { + var url = "".concat(this.moduleRelativeURL, "?a=ca&sa=getEmployeeTimeEntries&t=").concat(this.table, "&mod=modules%3Dtime_sheets&e=").concat(employeeId); + return url; + } + }, { + key: "renderFormByDate", + value: function renderFormByDate(_date) { + var date = _date; + + if (date.indexOf('T') < 0) { + var s1 = moment(); + date = "".concat(date, " ").concat(s1.format('HH:mm:ss')); + } + + var start = date.replace('T', ' '); + var m1 = moment(start); + m1.add(1, 'h'); + var end = m1.format('YYYY-MM-DD HH:mm:ss'); + var obj = {}; + obj.date = _date; + obj.date_start = start; + obj.date_end = end; + this.renderFormTimeEntryCalender(obj); + } + }, { + key: "renderFormTimeEntryCalender", + value: function renderFormTimeEntryCalender(object) { + if ("".concat(this.needStartEndTime) === '0') { + return; + } + + this.openTimeEntryDialog(object); + + if (object.id !== undefined && object.id != null) { + var cid = object.id; + $('.deleteBtnWorkSchedule').show(); + $('.deleteBtnWorkSchedule').off().on('click', function () { + modJs.deleteRow(cid); + return false; + }); + } else { + $('.deleteBtnWorkSchedule').remove(); + } + } + }, { + key: "openTimeEntryDialog", + value: function openTimeEntryDialog(object) { + this.currentTimesheetId = this.currentId; + var obj = modJsList.tabEmployeeTimeEntry; + $('#TimeEntryModel').modal({ + backdrop: 'static', + keyboard: false + }); + obj.currentTimesheet = this.currentTimesheet; + obj.renderForm(object); + obj.timesheetId = this.currentId; + } + }, { + key: "closeTimeEntryDialog", + value: function closeTimeEntryDialog() { + $('#TimeEntryModel').modal('hide'); + } + }, { + key: "getTimeEntries", + value: function getTimeEntries() { + var timesheetId = this.currentId; + var sourceMappingJson = JSON.stringify(modJsList.tabEmployeeTimeEntry.getSourceMapping()); + var object = { + id: timesheetId, + sm: sourceMappingJson + }; + var reqJson = JSON.stringify(object); + var callBackData = []; + callBackData.callBackData = []; + callBackData.callBackSuccess = 'getTimeEntriesSuccessCallBack'; + callBackData.callBackFail = 'getTimeEntriesFailCallBack'; + this.customAction('getTimeEntries', 'modules=time_sheets', reqJson, callBackData); + } + }, { + key: "getTimeEntriesSuccessCallBack", + value: function getTimeEntriesSuccessCallBack(callBackData) { + var entries = callBackData; + var html = ''; + var temp = '_start__end__duration__project__details_'; + + for (var i = 0; i < entries.length; i++) { + try { + var t = temp; + t = t.replace(/_start_/g, Date.parse(entries[i].date_start).toString('MMM d, yyyy [hh:mm tt]')); + t = t.replace(/_end_/g, Date.parse(entries[i].date_end).toString('MMM d, yyyy [hh:mm tt]')); + var mili = Date.parse(entries[i].date_end) - Date.parse(entries[i].date_start); + var minutes = Math.round(mili / 60000); + var hourMinutes = minutes % 60; + var hours = (minutes - hourMinutes) / 60; + t = t.replace(/_duration_/g, "Hours (".concat(hours, ") - Min (").concat(hourMinutes, ")")); + + if (entries[i].project === 'null' || entries[i].project == null || entries[i].project === undefined) { + t = t.replace(/_project_/g, 'None'); + } else { + t = t.replace(/_project_/g, entries[i].project); + } + + t = t.replace(/_project_/g, entries[i].project); + t = t.replace(/_details_/g, entries[i].details); + t = t.replace(/_id_/g, entries[i].id); + t = t.replace(/_BASE_/g, this.baseUrl); + html += t; + } catch (e) {// Do nothing + } + } + + $('.timesheet_entries_table_body').html(html); + + if (modJs.getTableName() === 'SubEmployeeTimeSheetAll' || "".concat(this.needStartEndTime) === '0') { + $('.submit_sheet').hide(); + $('.add_time_sheet_entry').hide(); + } else if (this.currentElement.status === 'Approved') { + $('.submit_sheet').hide(); + $('.add_time_sheet_entry').hide(); + } else { + $('.submit_sheet').show(); + $('.add_time_sheet_entry').show(); + } + + $('#EmployeeTimesheetBlock').fullCalendar('refetchEvents'); + } // eslint-disable-next-line no-unused-vars + + }, { + key: "getTimeEntriesFailCallBack", + value: function getTimeEntriesFailCallBack(callBackData) { + this.showMessage('Error', 'Error occured while getting timesheet entries'); + } + }, { + key: "createPreviousTimesheet", + value: function createPreviousTimesheet(id) { + var object = { + id: id + }; + var reqJson = JSON.stringify(object); + var callBackData = []; + callBackData.callBackData = []; + callBackData.callBackSuccess = 'createPreviousTimesheetSuccessCallBack'; + callBackData.callBackFail = 'createPreviousTimesheetFailCallBack'; + this.customAction('createPreviousTimesheet', 'modules=time_sheets', reqJson, callBackData); + } // eslint-disable-next-line no-unused-vars + + }, { + key: "createPreviousTimesheetSuccessCallBack", + value: function createPreviousTimesheetSuccessCallBack(callBackData) { + $('.tooltip').css('display', 'none'); + $('.tooltip').remove(); // this.showMessage("Success", "Previous Timesheet created"); + + this.get([]); + } + }, { + key: "createPreviousTimesheetFailCallBack", + value: function createPreviousTimesheetFailCallBack(callBackData) { + this.showMessage('Error', callBackData); + } + }, { + key: "changeTimeSheetStatusWithId", + value: function changeTimeSheetStatusWithId(id, status) { + if (status === '' || status == null || status === undefined) { + this.showMessage('Status Error', 'Please select a status'); + return; + } + + var object = { + id: id, + status: status + }; + var reqJson = JSON.stringify(object); + var callBackData = []; + callBackData.callBackData = []; + callBackData.callBackSuccess = 'changeTimeSheetStatusSuccessCallBack'; + callBackData.callBackFail = 'changeTimeSheetStatusFailCallBack'; + this.customAction('changeTimeSheetStatus', 'modules=time_sheets', reqJson, callBackData); + } // eslint-disable-next-line no-unused-vars + + }, { + key: "changeTimeSheetStatusSuccessCallBack", + value: function changeTimeSheetStatusSuccessCallBack(callBackData) { + this.showMessage('Successful', 'Timesheet status changed successfully'); + this.get([]); + } // eslint-disable-next-line no-unused-vars + + }, { + key: "changeTimeSheetStatusFailCallBack", + value: function changeTimeSheetStatusFailCallBack(callBackData) { + this.showMessage('Error', 'Error occured while changing Timesheet status'); + } + }, { + key: "getActionButtonsHtml", + value: function getActionButtonsHtml(id, data) { + var html = ''; + + if ("".concat(this.needStartEndTime) === '0') { + html = '
    ' + '' + '' + '_redoBtn_' + '
    '; + } else { + html = '
    ' + '' + '_redoBtn_' + '
    '; + } + + if (this.getTableName() === 'EmployeeTimeSheetAll') { + var redoBtn = ''; + html = html.replace(/_redoBtn_/g, redoBtn); + } else { + html = html.replace(/_redoBtn_/g, ''); + } + + html = html.replace(/_id_/g, id); + html = html.replace(/_sdate_/g, data[1]); + html = html.replace(/_edate_/g, data[2]); + html = html.replace(/_status_/g, data[4]); + html = html.replace(/_BASE_/g, this.baseUrl); + return html; + } + }, { + key: "getCustomTableParams", + value: function getCustomTableParams() { + var that = this; + var dataTableParams = { + aoColumnDefs: [{ + fnRender: function fnRender(data, cell) { + return that.preProcessRemoteTableData(data, cell, 1); + }, + aTargets: [1] + }, { + fnRender: function fnRender(data, cell) { + return that.preProcessRemoteTableData(data, cell, 2); + }, + aTargets: [2] + }, { + fnRender: that.getActionButtons, + aTargets: [that.getDataMapping().length] + }] + }; + return dataTableParams; + } // eslint-disable-next-line no-unused-vars + + }, { + key: "preProcessRemoteTableData", + value: function preProcessRemoteTableData(data, cell, id) { + return Date.parse(cell).toString('MMM d, yyyy (dddd)'); + } + }]); + + return EmployeeTimeSheetAdapter; +}(_AdapterBase3["default"]); +/* + * Subordinate TimeSheets + */ + + +var SubEmployeeTimeSheetAdapter = /*#__PURE__*/function (_EmployeeTimeSheetAda) { + _inherits(SubEmployeeTimeSheetAdapter, _EmployeeTimeSheetAda); + + var _super2 = _createSuper(SubEmployeeTimeSheetAdapter); + + function SubEmployeeTimeSheetAdapter(endPoint, tab, filter, orderBy) { + var _this2; + + _classCallCheck(this, SubEmployeeTimeSheetAdapter); + + _this2 = _super2.call(this, endPoint, tab, filter, orderBy); + _this2.timeSheetStatusChangeId = null; + return _this2; + } + + _createClass(SubEmployeeTimeSheetAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'employee', 'date_start', 'date_end', 'total_time', 'status']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Employee', + bSearchable: true + }, { + sTitle: 'Start Date', + bSearchable: true + }, { + sTitle: 'End Date', + bSearchable: true + }, { + sTitle: 'Total Time', + bSearchable: false + }, { + sTitle: 'Status' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['employee', { + label: 'Employee', + type: 'select', + 'allow-null': false, + 'remote-source': ['Employee', 'id', 'first_name+last_name'] + }], ['date_start', { + label: 'TimeSheet Start Date', + type: 'date', + validation: '' + }], ['date_end', { + label: 'TimeSheet Start Date', + type: 'date', + validation: '' + }], ['details', { + label: 'Reason', + type: 'textarea', + validation: 'none' + }]]; + } + }, { + key: "isSubProfileTable", + value: function isSubProfileTable() { + return true; + } + }, { + key: "getCustomSuccessCallBack", + value: function getCustomSuccessCallBack(serverData) { + var data = []; + var mapping = this.getDataMapping(); + + for (var i = 0; i < serverData.length; i++) { + var row = []; + + for (var j = 0; j < mapping.length; j++) { + row[j] = serverData[i][mapping[j]]; + } + + data.push(this.preProcessTableData(row)); + } + + this.tableData = data; + this.createTable(this.getTableName()); + $("#".concat(this.getTableName(), "Form")).hide(); + $("#".concat(this.getTableName())).show(); + } + }, { + key: "preProcessTableData", + value: function preProcessTableData(_row) { + var row = _row; + row[2] = Date.parse(row[2]).toString('MMM d, yyyy (dddd)'); + row[3] = Date.parse(row[3]).toString('MMM d, yyyy (dddd)'); + return row; + } + }, { + key: "openTimeSheetStatus", + value: function openTimeSheetStatus(timeSheetId, status) { + this.currentTimesheetId = timeSheetId; + $('#TimeSheetStatusModel').modal('show'); + $('#timesheet_status').val(status); + this.timeSheetStatusChangeId = timeSheetId; + } + }, { + key: "closeTimeSheetStatus", + value: function closeTimeSheetStatus() { + $('#TimeSheetStatusModel').modal('hide'); + } + }, { + key: "changeTimeSheetStatus", + value: function changeTimeSheetStatus() { + var timeSheetStatus = $('#timesheet_status').val(); + this.changeTimeSheetStatusWithId(this.timeSheetStatusChangeId, timeSheetStatus); + this.closeTimeSheetStatus(); + this.timeSheetStatusChangeId = null; + } + }, { + key: "getActionButtonsHtml", + value: function getActionButtonsHtml(id, data) { + var html; + + if ("".concat(this.needStartEndTime) === '0') { + html = '
    ' + '' + '' + '' + '
    '; + } else { + html = '
    ' + '' + '' + '
    '; + } + + html = html.replace(/_id_/g, id); + html = html.replace(/_BASE_/g, this.baseUrl); + html = html.replace(/_sdate_/g, data[1]); + html = html.replace(/_edate_/g, data[2]); + html = html.replace(/_status_/g, data[4]); + return html; + } + }, { + key: "getCustomTableParams", + value: function getCustomTableParams() { + var that = this; + var dataTableParams = { + aoColumnDefs: [{ + fnRender: function fnRender(data, cell) { + return that.preProcessRemoteTableData(data, cell, 2); + }, + aTargets: [2] + }, { + fnRender: function fnRender(data, cell) { + return that.preProcessRemoteTableData(data, cell, 3); + }, + aTargets: [3] + }, { + fnRender: that.getActionButtons, + aTargets: [that.getDataMapping().length] + }] + }; + return dataTableParams; + } + }, { + key: "getFilters", + value: function getFilters() { + return [['employee', { + label: 'Employee', + type: 'select2', + 'allow-null': true, + 'null-label': 'All Employees', + 'remote-source': ['Employee', 'id', 'first_name+last_name'] + }], ['status', { + label: 'Status', + type: 'select', + 'allow-null': true, + 'null-label': 'All', + source: [['Submitted', 'Submitted'], ['Pending', 'Pending'], ['Approved', 'Approved'], ['Rejected', 'Rejected']] + }]]; + } + }]); + + return SubEmployeeTimeSheetAdapter; +}(EmployeeTimeSheetAdapter); +/** + * EmployeeTimeEntryAdapter + */ + + +var EmployeeTimeEntryAdapter = /*#__PURE__*/function (_AdapterBase2) { + _inherits(EmployeeTimeEntryAdapter, _AdapterBase2); + + var _super3 = _createSuper(EmployeeTimeEntryAdapter); + + function EmployeeTimeEntryAdapter(endPoint, tab, filter, orderBy) { + var _this3; + + _classCallCheck(this, EmployeeTimeEntryAdapter); + + _this3 = _super3.call(this, endPoint, tab, filter, orderBy); + _this3.timesheetId = null; + _this3.currentTimesheet = null; + _this3.allProjectsAllowed = 1; + _this3.employeeProjects = []; + return _this3; + } + + _createClass(EmployeeTimeEntryAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'project', 'date_start', 'time_start', 'date_end', 'time_end', 'details']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Project' + }, { + sTitle: 'Start Date' + }, { + sTitle: 'Start Time' + }, { + sTitle: 'End Date' + }, { + sTitle: 'End Time' + }, { + sTitle: 'Details' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['project', { + label: 'Project', + type: 'select2', + 'allow-null': false, + 'remote-source': ['Project', 'id', 'name', 'getEmployeeProjects'] + }], ['date_select', { + label: 'Date', + type: 'select', + source: [] + }], ['date_start', { + label: 'Start Time', + type: 'time', + validation: '' + }], ['date_end', { + label: 'End Time', + type: 'time', + validation: '' + }], ['details', { + label: 'Details', + type: 'textarea', + validation: '' + }]]; + } + }, { + key: "getDates", + value: function getDates(startDate, stopDate) { + var dateArray = []; + var currentDate = startDate; + + while (currentDate <= stopDate) { + dateArray.push(new Date(currentDate)); + currentDate = currentDate.add({ + days: 1 + }); + } + + return dateArray; + } + }, { + key: "renderForm", + value: function renderForm(object) { + var _this4 = this; + + this.initMasterDataReader(); + this.masterDataReader.updateAllMasterData().then(function () { + _this4._renderForm(object); + }); + } + }, { + key: "_renderForm", + value: function _renderForm(object) { + var formHtml = this.getCustomTemplate('time_entry_form.html'); + formHtml = formHtml.replace(/modJs/g, "modJsList['tabEmployeeTimeEntry']"); + var html = ''; + var fields = this.getFormFields(); + + for (var i = 0; i < fields.length; i++) { + var metaField = this.getMetaFieldForRendering(fields[i][0]); + + if (metaField === '' || metaField === undefined) { + html += this.renderFormField(fields[i]); + } else { + var metaVal = object[metaField]; + + if (metaVal !== '' && metaVal != null && metaVal !== undefined && metaVal.trim() !== '') { + html += this.renderFormField(JSON.parse(metaVal)); + } else { + html += this.renderFormField(fields[i]); + } + } + } // append dates + // var dateStart = new Date(this.currentTimesheet.date_start); + // var dateStop = new Date(this.currentTimesheet.date_end); + // var datesArray = this.getDates(dateStart, dateStop); + + + var optionList = ''; + + for (var _i = 0; _i < this.currentTimesheet.days.length; _i++) { + var k = this.currentTimesheet.days[_i]; // optionList += ''; + + optionList += ""); + } + + formHtml = formHtml.replace(/_id_/g, "".concat(this.getTableName(), "_submit")); + formHtml = formHtml.replace(/_fields_/g, html); + $("#".concat(this.getTableName(), "Form")).html(formHtml); + $("#".concat(this.getTableName(), "Form")).show(); + $("#".concat(this.getTableName())).hide(); + $("#".concat(this.getTableName(), "Form .datefield")).datepicker({ + viewMode: 2 + }); + $("#".concat(this.getTableName(), "Form .datetimefield")).datetimepicker({ + language: 'en' + }); + $("#".concat(this.getTableName(), "Form .timefield")).datetimepicker({ + language: 'en', + pickDate: false + }); + $("#".concat(this.getTableName(), "Form .select2Field")).select2(); + $('#date_select').html(optionList); + + if (object !== undefined && object != null) { + this.fillForm(object); + } + } // eslint-disable-next-line no-unused-vars + + }, { + key: "fillForm", + value: function fillForm(object, _formId, fields) { + var formId = _formId; + + if (formId == null || formId === undefined || formId === '') { + formId = "#".concat(this.getTableName(), "Form"); + } + + if (object.id != null && object.id !== undefined) { + $("".concat(formId, " #id")).val(object.id); + } + + if (object.project != null && object.project !== undefined) { + $("".concat(formId, " #project")).select2('val', object.project); + } + + if (object.date != null && object.date !== undefined) { + $("".concat(formId, " #date_select")).val(object.date); + } + } + }, { + key: "cancel", + value: function cancel() { + $('#TimeEntryModel').modal('hide'); + } + }, { + key: "setAllProjectsAllowed", + value: function setAllProjectsAllowed(allProjectsAllowed) { + this.allProjectsAllowed = allProjectsAllowed; + } + }, { + key: "setEmployeeProjects", + value: function setEmployeeProjects(employeeProjects) { + this.employeeProjects = employeeProjects; + } + }, { + key: "save", + value: function save() { + var validator = new _FormValidation["default"]("".concat(this.getTableName(), "_submit"), true, { + ShowPopup: false, + LabelErrorClass: 'error' + }); + + if (validator.checkValues()) { + var params = validator.getFormParameters(); + params.timesheet = this.timesheetId; + params.time_start = params.date_start; + params.time_end = params.date_end; + params.date_start = "".concat(params.date_select, " ").concat(params.date_start); + params.date_end = "".concat(params.date_select, " ").concat(params.date_end); + var msg = this.doCustomValidation(params); + + if (msg == null) { + var id = $("#".concat(this.getTableName(), "_submit #id")).val(); + + if (id != null && id !== undefined && id !== '') { + params.id = id; + } + + this.add(params, []); + this.cancel(); + } else { + $("#".concat(this.getTableName(), "Form .label")).html(msg); + $("#".concat(this.getTableName(), "Form .label")).show(); + } + } + } + }, { + key: "doCustomValidation", + value: function doCustomValidation(params) { + var st = Date.parse(params.date_start); + var et = Date.parse(params.date_end); + + if (st.compareTo(et) !== -1) { + return 'Start time should be less than End time'; + } + /* + var sd = Date.parse(this.currentTimesheet.date_start); + var ed = Date.parse(this.currentTimesheet.date_end).addDays(1); + if(sd.compareTo(et) != -1 || sd.compareTo(st) > 0 || st.compareTo(ed) != -1 || et.compareTo(ed) != -1){ + return "Start time and end time shoud be with in " + sd.toString('MMM d, yyyy (dddd)') + " and " + ed.toString('MMM d, yyyy (dddd)'); + } + */ + + + return null; + } // eslint-disable-next-line no-unused-vars + + }, { + key: "addSuccessCallBack", + value: function addSuccessCallBack(callBackData, serverData) { + this.get(callBackData); + modJs.getTimeEntries(); + } + }, { + key: "deleteRow", + value: function deleteRow(id) { + this.deleteObj(id, []); + } // eslint-disable-next-line no-unused-vars + + }, { + key: "deleteSuccessCallBack", + value: function deleteSuccessCallBack(callBackData, serverData) { + modJs.getTimeEntries(); + } + }]); + + return EmployeeTimeEntryAdapter; +}(_AdapterBase3["default"]); +/** + * QtsheetAdapter + */ + + +var QtsheetAdapter = /*#__PURE__*/function (_TableEditAdapter) { + _inherits(QtsheetAdapter, _TableEditAdapter); + + var _super4 = _createSuper(QtsheetAdapter); + + function QtsheetAdapter(endPoint, tab, filter, orderBy) { + var _this5; + + _classCallCheck(this, QtsheetAdapter); + + _this5 = _super4.call(this, endPoint, tab, filter, orderBy); + _this5.cellDataUpdates = {}; + _this5.currentId = null; + return _this5; + } + + _createClass(QtsheetAdapter, [{ + key: "validateCellValue", + value: function validateCellValue(element, evt, newValue) { + if (!ValidationRules["float"](newValue)) { + return false; + } + + var val = parseFloat(newValue); + + if (val < 0 || val > 24) { + return false; + } // Update total + // Find current column number + // Adding 2 because nth child is based on 1 and we are adding a virtual column for row names + + + var coldNum = this.columnIDMap[element.data('colId')] + 2; + var columnTotal = 0; + var columnTotalWithoutCurrent = 0; + $("#".concat(this.getTableName(), " tr td:nth-child(").concat(coldNum, ")")).each(function () { + var rowId = $(this).data('rowId'); + var tval = ''; + + if (element.data('rowId') === rowId) { + tval = newValue; + } else { + tval = $(this).html(); + } + + if (rowId !== -1) { + if (ValidationRules["float"](tval)) { + columnTotal += parseFloat(tval); + + if (element.data('rowId') !== rowId) { + columnTotalWithoutCurrent += parseFloat(tval); + } + } + } else if (columnTotal > 24) { + $(this).html(columnTotalWithoutCurrent); + } else { + $(this).html(columnTotal); + } + }); + + if (columnTotal > 24) { + return false; + } + + modJs.addCellDataUpdate(element.data('colId'), element.data('rowId'), newValue); + return true; + } + }, { + key: "setCurrentTimeSheetId", + value: function setCurrentTimeSheetId(val) { + this.currentId = val; + this.cellDataUpdates = {}; + } + }, { + key: "addAdditionalRequestData", + value: function addAdditionalRequestData(type, req) { + if (type === 'updateData') { + req.currentId = this.currentId; + } else if (type === 'updateAllData') { + req.currentId = this.currentId; + } else if (type === 'getAllData') { + req.currentId = this.currentId; + } + + return req; + } + }, { + key: "modifyCSVHeader", + value: function modifyCSVHeader(header) { + header.unshift(''); + return header; + } + }, { + key: "getCSVData", + value: function getCSVData() { + var csv = ''; + + for (var i = 0; i < this.csvData.length; i++) { + csv += this.csvData[i].join(','); + + if (i < this.csvData.length - 1) { + csv += '\r\n'; + } + } + + return csv; + } + }, { + key: "downloadTimesheet", + value: function downloadTimesheet() { + var element = document.createElement('a'); + element.setAttribute('href', "data:text/plain;charset=utf-8,".concat(encodeURIComponent(this.getCSVData()))); + element.setAttribute('download', "timesheet_".concat(this.currentId, ".csv")); + element.style.display = 'none'; + document.body.appendChild(element); + element.click(); + document.body.removeChild(element); + } + }, { + key: "createTable", + value: function createTable(elementId) { + var data = this.getTableData(); + var headers = this.getHeaders(); + + if (this.showActionButtons()) { + headers.push({ + sTitle: '', + sClass: 'center' + }); + } + + if (this.showActionButtons()) { + for (var i = 0; i < data.length; i++) { + data[i].push(this.getActionButtonsHtml(data[i][0], data[i])); + } + } + + var html = ''; + html = "".concat(this.getTableTopButtonHtml(), "
    "); // Find current page + + var activePage = $("#".concat(elementId, " .dataTables_paginate .active a")).html(); + var start = 0; + + if (activePage !== undefined && activePage !== null) { + start = parseInt(activePage, 10) * 100 - 100; + } + + $("#".concat(elementId)).html(html); + var dataTableParams = { + oLanguage: { + sLengthMenu: '_MENU_ records per page' + }, + aaData: data, + aoColumns: headers, + bSort: false, + iDisplayLength: 100, + iDisplayStart: start + }; + var customTableParams = this.getCustomTableParams(); + $.extend(dataTableParams, customTableParams); + $("#".concat(elementId, " #grid")).dataTable(dataTableParams); + $("#".concat(elementId, " #grid tr:last")).find('td').removeClass('editcell'); + $('.dataTables_paginate ul').addClass('pagination'); + $('.dataTables_length').hide(); + $('.dataTables_filter input').addClass('form-control'); + $('.dataTables_filter input').attr('placeholder', 'Search'); + $('.dataTables_filter label').contents().filter(function () { + return this.nodeType === 3; + }).remove(); // $('.tableActionButton').tooltip(); + + $("#".concat(elementId, " #grid")).editableTableWidget(); + $("#".concat(elementId, " #grid .editcell")).on('validate', function (evt, newValue) { + return modJs.validateCellValue($(this), evt, newValue); + }); + } + }]); + + return QtsheetAdapter; +}(_TableEditAdapter2["default"]); + +module.exports = { + EmployeeTimeSheetAdapter: EmployeeTimeSheetAdapter, + SubEmployeeTimeSheetAdapter: SubEmployeeTimeSheetAdapter, + EmployeeTimeEntryAdapter: EmployeeTimeEntryAdapter, + QtsheetAdapter: QtsheetAdapter +}; + +},{"../../../api/AdapterBase":39,"../../../api/FormValidation":44,"../../../api/TableEditAdapter":51}],94:[function(require,module,exports){ +"use strict"; + +var _lib = require("./lib"); + +window.EmployeeImmigrationAdapter = _lib.EmployeeImmigrationAdapter; +window.EmployeeTravelRecordAdapter = _lib.EmployeeTravelRecordAdapter; +window.EmployeeTravelRecordApproverAdapter = _lib.EmployeeTravelRecordApproverAdapter; +window.SubordinateEmployeeTravelRecordAdapter = _lib.SubordinateEmployeeTravelRecordAdapter; + +},{"./lib":95}],95:[function(require,module,exports){ +"use strict"; + +var _AdapterBase2 = _interopRequireDefault(require("../../../api/AdapterBase")); + +var _ApproveModuleAdapter2 = _interopRequireDefault(require("../../../api/ApproveModuleAdapter")); + +var _lib = require("../../../admin/src/travel/lib"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var EmployeeImmigrationAdapter = /*#__PURE__*/function (_AdapterBase) { + _inherits(EmployeeImmigrationAdapter, _AdapterBase); + + var _super = _createSuper(EmployeeImmigrationAdapter); + + function EmployeeImmigrationAdapter() { + _classCallCheck(this, EmployeeImmigrationAdapter); + + return _super.apply(this, arguments); + } + + _createClass(EmployeeImmigrationAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'document', 'documentname', 'valid_until', 'status']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Document' + }, { + sTitle: 'Document Id' + }, { + sTitle: 'Valid Until' + }, { + sTitle: 'Status' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return [['id', { + label: 'ID', + type: 'hidden' + }], ['document', { + label: 'Document', + type: 'select2', + 'remote-source': ['ImmigrationDocument', 'id', 'name'] + }], ['documentname', { + label: 'Document Id', + type: 'text', + validation: '' + }], ['valid_until', { + label: 'Valid Until', + type: 'date', + validation: 'none' + }], ['status', { + label: 'Status', + type: 'select', + source: [['Active', 'Active'], ['Inactive', 'Inactive'], ['Draft', 'Draft']] + }], ['details', { + label: 'Details', + type: 'textarea', + validation: 'none' + }], ['attachment1', { + label: 'Attachment 1', + type: 'fileupload', + validation: 'none' + }], ['attachment2', { + label: 'Attachment 2', + type: 'fileupload', + validation: 'none' + }], ['attachment3', { + label: 'Attachment 3', + type: 'fileupload', + validation: 'none' + }]]; + } + }]); + + return EmployeeImmigrationAdapter; +}(_AdapterBase2["default"]); + +var EmployeeTravelRecordAdapter = /*#__PURE__*/function (_ApproveModuleAdapter) { + _inherits(EmployeeTravelRecordAdapter, _ApproveModuleAdapter); + + var _super2 = _createSuper(EmployeeTravelRecordAdapter); + + function EmployeeTravelRecordAdapter(endPoint, tab, filter, orderBy) { + var _this; + + _classCallCheck(this, EmployeeTravelRecordAdapter); + + _this = _super2.call(this, endPoint, tab, filter, orderBy); + _this.itemName = 'Travel'; + _this.itemNameLower = 'employeetravelrecord'; + _this.modulePathName = 'travel'; + return _this; + } + + _createClass(EmployeeTravelRecordAdapter, [{ + key: "getDataMapping", + value: function getDataMapping() { + return ['id', 'type', 'purpose', 'travel_from', 'travel_to', 'travel_date', 'return_date', 'status']; + } + }, { + key: "getHeaders", + value: function getHeaders() { + return [{ + sTitle: 'ID', + bVisible: false + }, { + sTitle: 'Travel Type' + }, { + sTitle: 'Purpose' + }, { + sTitle: 'From' + }, { + sTitle: 'To' + }, { + sTitle: 'Travel Date' + }, { + sTitle: 'Return Date' + }, { + sTitle: 'Status' + }]; + } + }, { + key: "getFormFields", + value: function getFormFields() { + return this.addCustomFields([['id', { + label: 'ID', + type: 'hidden' + }], ['type', { + label: 'Means of Transportation', + type: 'select', + source: [['Plane', 'Plane'], ['Rail', 'Rail'], ['Taxi', 'Taxi'], ['Own Vehicle', 'Own Vehicle'], ['Rented Vehicle', 'Rented Vehicle'], ['Other', 'Other']] + }], ['purpose', { + label: 'Purpose of Travel', + type: 'textarea', + validation: '' + }], ['travel_from', { + label: 'Travel From', + type: 'text', + validation: '' + }], ['travel_to', { + label: 'Travel To', + type: 'text', + validation: '' + }], ['travel_date', { + label: 'Travel Date', + type: 'datetime', + validation: '' + }], ['return_date', { + label: 'Return Date', + type: 'datetime', + validation: '' + }], ['details', { + label: 'Notes', + type: 'textarea', + validation: 'none' + }], ['currency', { + label: 'Currency', + type: 'select2', + 'allow-null': false, + 'remote-source': ['CurrencyType', 'id', 'code'] + }], ['funding', { + label: 'Total Funding Proposed', + type: 'text', + validation: 'float', + "default": '0.00', + mask: '9{0,10}.99' + }], ['attachment1', { + label: 'Attachment', + type: 'fileupload', + validation: 'none' + }], ['attachment2', { + label: 'Attachment', + type: 'fileupload', + validation: 'none' + }], ['attachment3', { + label: 'Attachment', + type: 'fileupload', + validation: 'none' + }]]); + } + }]); + + return EmployeeTravelRecordAdapter; +}(_ApproveModuleAdapter2["default"]); +/* + EmployeeTravelRecordApproverAdapter + */ + + +var EmployeeTravelRecordApproverAdapter = /*#__PURE__*/function (_EmployeeTravelRecord) { + _inherits(EmployeeTravelRecordApproverAdapter, _EmployeeTravelRecord); + + var _super3 = _createSuper(EmployeeTravelRecordApproverAdapter); + + function EmployeeTravelRecordApproverAdapter(endPoint, tab, filter, orderBy) { + var _this2; + + _classCallCheck(this, EmployeeTravelRecordApproverAdapter); + + _this2 = _super3.call(this, endPoint, tab, filter, orderBy); + _this2.itemName = 'Travel'; + _this2.itemNameLower = 'employeetravelrecord'; + _this2.modulePathName = 'travel'; + return _this2; + } + + _createClass(EmployeeTravelRecordApproverAdapter, [{ + key: "getActionButtonsHtml", + value: function getActionButtonsHtml(id, data) { + var statusChangeButton = ''; + var viewLogsButton = ''; + var html = '
    _status__logs_
    '; + html = html.replace('_logs_', viewLogsButton); + + if (data[this.getStatusFieldPosition()] === 'Processing') { + html = html.replace('_status_', statusChangeButton); + } else { + html = html.replace('_status_', ''); + } + + html = html.replace(/_id_/g, id); + html = html.replace(/_BASE_/g, this.baseUrl); + html = html.replace(/_cstatus_/g, data[this.getStatusFieldPosition()]); + return html; + } + }, { + key: "getStatusOptionsData", + value: function getStatusOptionsData(currentStatus) { + var data = {}; + + if (currentStatus === 'Processing') { + data.Approved = 'Approved'; + data.Rejected = 'Rejected'; + } + + return data; + } + }, { + key: "getStatusOptions", + value: function getStatusOptions(currentStatus) { + return this.generateOptions(this.getStatusOptionsData(currentStatus)); + } + }]); + + return EmployeeTravelRecordApproverAdapter; +}(_lib.EmployeeTravelRecordAdminAdapter); +/* + SubordinateExpenseModuleAdapter + */ + + +var SubordinateEmployeeTravelRecordAdapter = /*#__PURE__*/function (_EmployeeTravelRecord2) { + _inherits(SubordinateEmployeeTravelRecordAdapter, _EmployeeTravelRecord2); + + var _super4 = _createSuper(SubordinateEmployeeTravelRecordAdapter); + + function SubordinateEmployeeTravelRecordAdapter(endPoint, tab, filter, orderBy) { + var _this3; + + _classCallCheck(this, SubordinateEmployeeTravelRecordAdapter); + + _this3 = _super4.call(this, endPoint, tab, filter, orderBy); + _this3.itemName = 'Travel'; + _this3.itemNameLower = 'employeetravelrecord'; + _this3.modulePathName = 'travel'; + return _this3; + } + + return SubordinateEmployeeTravelRecordAdapter; +}(_lib.EmployeeTravelRecordAdminAdapter); + +module.exports = { + EmployeeImmigrationAdapter: EmployeeImmigrationAdapter, + EmployeeTravelRecordAdapter: EmployeeTravelRecordAdapter, + EmployeeTravelRecordApproverAdapter: EmployeeTravelRecordApproverAdapter, + SubordinateEmployeeTravelRecordAdapter: SubordinateEmployeeTravelRecordAdapter +}; + +},{"../../../admin/src/travel/lib":37,"../../../api/AdapterBase":39,"../../../api/ApproveModuleAdapter":41}],96:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } + +var DEFAULT_SIZE = 24; + +exports.default = function (_ref) { + var _ref$fill = _ref.fill, + fill = _ref$fill === undefined ? 'currentColor' : _ref$fill, + _ref$width = _ref.width, + width = _ref$width === undefined ? DEFAULT_SIZE : _ref$width, + _ref$height = _ref.height, + height = _ref$height === undefined ? DEFAULT_SIZE : _ref$height, + _ref$style = _ref.style, + style = _ref$style === undefined ? {} : _ref$style, + props = _objectWithoutProperties(_ref, ['fill', 'width', 'height', 'style']); + + return _react2.default.createElement( + 'svg', + _extends({ + viewBox: '0 0 ' + DEFAULT_SIZE + ' ' + DEFAULT_SIZE, + style: _extends({ fill: fill, width: width, height: height }, style) + }, props), + _react2.default.createElement('path', { d: 'M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z' }) + ); +}; +},{"react":"react"}],97:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } + +var DEFAULT_SIZE = 24; + +exports.default = function (_ref) { + var _ref$fill = _ref.fill, + fill = _ref$fill === undefined ? 'currentColor' : _ref$fill, + _ref$width = _ref.width, + width = _ref$width === undefined ? DEFAULT_SIZE : _ref$width, + _ref$height = _ref.height, + height = _ref$height === undefined ? DEFAULT_SIZE : _ref$height, + _ref$style = _ref.style, + style = _ref$style === undefined ? {} : _ref$style, + props = _objectWithoutProperties(_ref, ['fill', 'width', 'height', 'style']); + + return _react2.default.createElement( + 'svg', + _extends({ + viewBox: '0 0 ' + DEFAULT_SIZE + ' ' + DEFAULT_SIZE, + style: _extends({ fill: fill, width: width, height: height }, style) + }, props), + _react2.default.createElement('path', { d: 'M12,18.17L8.83,15L7.42,16.41L12,21L16.59,16.41L15.17,15M12,5.83L15.17,9L16.58,7.59L12,3L7.41,7.59L8.83,9L12,5.83Z' }) + ); +}; +},{"react":"react"}],98:[function(require,module,exports){ +module.exports = require('./lib/axios'); +},{"./lib/axios":100}],99:[function(require,module,exports){ +'use strict'; + +var utils = require('./../utils'); +var settle = require('./../core/settle'); +var cookies = require('./../helpers/cookies'); +var buildURL = require('./../helpers/buildURL'); +var buildFullPath = require('../core/buildFullPath'); +var parseHeaders = require('./../helpers/parseHeaders'); +var isURLSameOrigin = require('./../helpers/isURLSameOrigin'); +var createError = require('../core/createError'); + +module.exports = function xhrAdapter(config) { + return new Promise(function dispatchXhrRequest(resolve, reject) { + var requestData = config.data; + var requestHeaders = config.headers; + + if (utils.isFormData(requestData)) { + delete requestHeaders['Content-Type']; // Let the browser set it + } + + if ( + (utils.isBlob(requestData) || utils.isFile(requestData)) && + requestData.type + ) { + delete requestHeaders['Content-Type']; // Let the browser set it + } + + var request = new XMLHttpRequest(); + + // HTTP basic authentication + if (config.auth) { + var username = config.auth.username || ''; + var password = unescape(encodeURIComponent(config.auth.password)) || ''; + requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password); + } + + var fullPath = buildFullPath(config.baseURL, config.url); + request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true); + + // Set the request timeout in MS + request.timeout = config.timeout; + + // Listen for ready state + request.onreadystatechange = function handleLoad() { + if (!request || request.readyState !== 4) { + return; + } + + // The request errored out and we didn't get a response, this will be + // handled by onerror instead + // With one exception: request that using file: protocol, most browsers + // will return status as 0 even though it's a successful request + if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) { + return; + } + + // Prepare the response + var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null; + var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response; + var response = { + data: responseData, + status: request.status, + statusText: request.statusText, + headers: responseHeaders, + config: config, + request: request + }; + + settle(resolve, reject, response); + + // Clean up request + request = null; + }; + + // Handle browser request cancellation (as opposed to a manual cancellation) + request.onabort = function handleAbort() { + if (!request) { + return; + } + + reject(createError('Request aborted', config, 'ECONNABORTED', request)); + + // Clean up request + request = null; + }; + + // Handle low level network errors + request.onerror = function handleError() { + // Real errors are hidden from us by the browser + // onerror should only fire if it's a network error + reject(createError('Network Error', config, null, request)); + + // Clean up request + request = null; + }; + + // Handle timeout + request.ontimeout = function handleTimeout() { + var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded'; + if (config.timeoutErrorMessage) { + timeoutErrorMessage = config.timeoutErrorMessage; + } + reject(createError(timeoutErrorMessage, config, 'ECONNABORTED', + request)); + + // Clean up request + request = null; + }; + + // Add xsrf header + // This is only done if running in a standard browser environment. + // Specifically not if we're in a web worker, or react-native. + if (utils.isStandardBrowserEnv()) { + // Add xsrf header + var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ? + cookies.read(config.xsrfCookieName) : + undefined; + + if (xsrfValue) { + requestHeaders[config.xsrfHeaderName] = xsrfValue; + } + } + + // Add headers to the request + if ('setRequestHeader' in request) { + utils.forEach(requestHeaders, function setRequestHeader(val, key) { + if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') { + // Remove Content-Type if data is undefined + delete requestHeaders[key]; + } else { + // Otherwise add header to the request + request.setRequestHeader(key, val); + } + }); + } + + // Add withCredentials to request if needed + if (!utils.isUndefined(config.withCredentials)) { + request.withCredentials = !!config.withCredentials; + } + + // Add responseType to request if needed + if (config.responseType) { + try { + request.responseType = config.responseType; + } catch (e) { + // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2. + // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function. + if (config.responseType !== 'json') { + throw e; + } + } + } + + // Handle progress if needed + if (typeof config.onDownloadProgress === 'function') { + request.addEventListener('progress', config.onDownloadProgress); + } + + // Not all browsers support upload events + if (typeof config.onUploadProgress === 'function' && request.upload) { + request.upload.addEventListener('progress', config.onUploadProgress); + } + + if (config.cancelToken) { + // Handle cancellation + config.cancelToken.promise.then(function onCanceled(cancel) { + if (!request) { + return; + } + + request.abort(); + reject(cancel); + // Clean up request + request = null; + }); + } + + if (!requestData) { + requestData = null; + } + + // Send the request + request.send(requestData); + }); +}; + +},{"../core/buildFullPath":106,"../core/createError":107,"./../core/settle":111,"./../helpers/buildURL":115,"./../helpers/cookies":117,"./../helpers/isURLSameOrigin":119,"./../helpers/parseHeaders":121,"./../utils":123}],100:[function(require,module,exports){ +'use strict'; + +var utils = require('./utils'); +var bind = require('./helpers/bind'); +var Axios = require('./core/Axios'); +var mergeConfig = require('./core/mergeConfig'); +var defaults = require('./defaults'); + +/** + * Create an instance of Axios + * + * @param {Object} defaultConfig The default config for the instance + * @return {Axios} A new instance of Axios + */ +function createInstance(defaultConfig) { + var context = new Axios(defaultConfig); + var instance = bind(Axios.prototype.request, context); + + // Copy axios.prototype to instance + utils.extend(instance, Axios.prototype, context); + + // Copy context to instance + utils.extend(instance, context); + + return instance; +} + +// Create the default instance to be exported +var axios = createInstance(defaults); + +// Expose Axios class to allow class inheritance +axios.Axios = Axios; + +// Factory for creating new instances +axios.create = function create(instanceConfig) { + return createInstance(mergeConfig(axios.defaults, instanceConfig)); +}; + +// Expose Cancel & CancelToken +axios.Cancel = require('./cancel/Cancel'); +axios.CancelToken = require('./cancel/CancelToken'); +axios.isCancel = require('./cancel/isCancel'); + +// Expose all/spread +axios.all = function all(promises) { + return Promise.all(promises); +}; +axios.spread = require('./helpers/spread'); + +module.exports = axios; + +// Allow use of default import syntax in TypeScript +module.exports.default = axios; + +},{"./cancel/Cancel":101,"./cancel/CancelToken":102,"./cancel/isCancel":103,"./core/Axios":104,"./core/mergeConfig":110,"./defaults":113,"./helpers/bind":114,"./helpers/spread":122,"./utils":123}],101:[function(require,module,exports){ +'use strict'; + +/** + * A `Cancel` is an object that is thrown when an operation is canceled. + * + * @class + * @param {string=} message The message. + */ +function Cancel(message) { + this.message = message; +} + +Cancel.prototype.toString = function toString() { + return 'Cancel' + (this.message ? ': ' + this.message : ''); +}; + +Cancel.prototype.__CANCEL__ = true; + +module.exports = Cancel; + +},{}],102:[function(require,module,exports){ +'use strict'; + +var Cancel = require('./Cancel'); + +/** + * A `CancelToken` is an object that can be used to request cancellation of an operation. + * + * @class + * @param {Function} executor The executor function. + */ +function CancelToken(executor) { + if (typeof executor !== 'function') { + throw new TypeError('executor must be a function.'); + } + + var resolvePromise; + this.promise = new Promise(function promiseExecutor(resolve) { + resolvePromise = resolve; + }); + + var token = this; + executor(function cancel(message) { + if (token.reason) { + // Cancellation has already been requested + return; + } + + token.reason = new Cancel(message); + resolvePromise(token.reason); + }); +} + +/** + * Throws a `Cancel` if cancellation has been requested. + */ +CancelToken.prototype.throwIfRequested = function throwIfRequested() { + if (this.reason) { + throw this.reason; + } +}; + +/** + * Returns an object that contains a new `CancelToken` and a function that, when called, + * cancels the `CancelToken`. + */ +CancelToken.source = function source() { + var cancel; + var token = new CancelToken(function executor(c) { + cancel = c; + }); + return { + token: token, + cancel: cancel + }; +}; + +module.exports = CancelToken; + +},{"./Cancel":101}],103:[function(require,module,exports){ +'use strict'; + +module.exports = function isCancel(value) { + return !!(value && value.__CANCEL__); +}; + +},{}],104:[function(require,module,exports){ +'use strict'; + +var utils = require('./../utils'); +var buildURL = require('../helpers/buildURL'); +var InterceptorManager = require('./InterceptorManager'); +var dispatchRequest = require('./dispatchRequest'); +var mergeConfig = require('./mergeConfig'); + +/** + * Create a new instance of Axios + * + * @param {Object} instanceConfig The default config for the instance + */ +function Axios(instanceConfig) { + this.defaults = instanceConfig; + this.interceptors = { + request: new InterceptorManager(), + response: new InterceptorManager() + }; +} + +/** + * Dispatch a request + * + * @param {Object} config The config specific for this request (merged with this.defaults) + */ +Axios.prototype.request = function request(config) { + /*eslint no-param-reassign:0*/ + // Allow for axios('example/url'[, config]) a la fetch API + if (typeof config === 'string') { + config = arguments[1] || {}; + config.url = arguments[0]; + } else { + config = config || {}; + } + + config = mergeConfig(this.defaults, config); + + // Set config.method + if (config.method) { + config.method = config.method.toLowerCase(); + } else if (this.defaults.method) { + config.method = this.defaults.method.toLowerCase(); + } else { + config.method = 'get'; + } + + // Hook up interceptors middleware + var chain = [dispatchRequest, undefined]; + var promise = Promise.resolve(config); + + this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) { + chain.unshift(interceptor.fulfilled, interceptor.rejected); + }); + + this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { + chain.push(interceptor.fulfilled, interceptor.rejected); + }); + + while (chain.length) { + promise = promise.then(chain.shift(), chain.shift()); + } + + return promise; +}; + +Axios.prototype.getUri = function getUri(config) { + config = mergeConfig(this.defaults, config); + return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\?/, ''); +}; + +// Provide aliases for supported request methods +utils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) { + /*eslint func-names:0*/ + Axios.prototype[method] = function(url, config) { + return this.request(mergeConfig(config || {}, { + method: method, + url: url + })); + }; +}); + +utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { + /*eslint func-names:0*/ + Axios.prototype[method] = function(url, data, config) { + return this.request(mergeConfig(config || {}, { + method: method, + url: url, + data: data + })); + }; +}); + +module.exports = Axios; + +},{"../helpers/buildURL":115,"./../utils":123,"./InterceptorManager":105,"./dispatchRequest":108,"./mergeConfig":110}],105:[function(require,module,exports){ +'use strict'; + +var utils = require('./../utils'); + +function InterceptorManager() { + this.handlers = []; +} + +/** + * Add a new interceptor to the stack + * + * @param {Function} fulfilled The function to handle `then` for a `Promise` + * @param {Function} rejected The function to handle `reject` for a `Promise` + * + * @return {Number} An ID used to remove interceptor later + */ +InterceptorManager.prototype.use = function use(fulfilled, rejected) { + this.handlers.push({ + fulfilled: fulfilled, + rejected: rejected + }); + return this.handlers.length - 1; +}; + +/** + * Remove an interceptor from the stack + * + * @param {Number} id The ID that was returned by `use` + */ +InterceptorManager.prototype.eject = function eject(id) { + if (this.handlers[id]) { + this.handlers[id] = null; + } +}; + +/** + * Iterate over all the registered interceptors + * + * This method is particularly useful for skipping over any + * interceptors that may have become `null` calling `eject`. + * + * @param {Function} fn The function to call for each interceptor + */ +InterceptorManager.prototype.forEach = function forEach(fn) { + utils.forEach(this.handlers, function forEachHandler(h) { + if (h !== null) { + fn(h); + } + }); +}; + +module.exports = InterceptorManager; + +},{"./../utils":123}],106:[function(require,module,exports){ +'use strict'; + +var isAbsoluteURL = require('../helpers/isAbsoluteURL'); +var combineURLs = require('../helpers/combineURLs'); + +/** + * Creates a new URL by combining the baseURL with the requestedURL, + * only when the requestedURL is not already an absolute URL. + * If the requestURL is absolute, this function returns the requestedURL untouched. + * + * @param {string} baseURL The base URL + * @param {string} requestedURL Absolute or relative URL to combine + * @returns {string} The combined full path + */ +module.exports = function buildFullPath(baseURL, requestedURL) { + if (baseURL && !isAbsoluteURL(requestedURL)) { + return combineURLs(baseURL, requestedURL); + } + return requestedURL; +}; + +},{"../helpers/combineURLs":116,"../helpers/isAbsoluteURL":118}],107:[function(require,module,exports){ +'use strict'; + +var enhanceError = require('./enhanceError'); + +/** + * Create an Error with the specified message, config, error code, request and response. + * + * @param {string} message The error message. + * @param {Object} config The config. + * @param {string} [code] The error code (for example, 'ECONNABORTED'). + * @param {Object} [request] The request. + * @param {Object} [response] The response. + * @returns {Error} The created error. + */ +module.exports = function createError(message, config, code, request, response) { + var error = new Error(message); + return enhanceError(error, config, code, request, response); +}; + +},{"./enhanceError":109}],108:[function(require,module,exports){ +'use strict'; + +var utils = require('./../utils'); +var transformData = require('./transformData'); +var isCancel = require('../cancel/isCancel'); +var defaults = require('../defaults'); + +/** + * Throws a `Cancel` if cancellation has been requested. + */ +function throwIfCancellationRequested(config) { + if (config.cancelToken) { + config.cancelToken.throwIfRequested(); + } +} + +/** + * Dispatch a request to the server using the configured adapter. + * + * @param {object} config The config that is to be used for the request + * @returns {Promise} The Promise to be fulfilled + */ +module.exports = function dispatchRequest(config) { + throwIfCancellationRequested(config); + + // Ensure headers exist + config.headers = config.headers || {}; + + // Transform request data + config.data = transformData( + config.data, + config.headers, + config.transformRequest + ); + + // Flatten headers + config.headers = utils.merge( + config.headers.common || {}, + config.headers[config.method] || {}, + config.headers + ); + + utils.forEach( + ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], + function cleanHeaderConfig(method) { + delete config.headers[method]; + } + ); + + var adapter = config.adapter || defaults.adapter; + + return adapter(config).then(function onAdapterResolution(response) { + throwIfCancellationRequested(config); + + // Transform response data + response.data = transformData( + response.data, + response.headers, + config.transformResponse + ); + + return response; + }, function onAdapterRejection(reason) { + if (!isCancel(reason)) { + throwIfCancellationRequested(config); + + // Transform response data + if (reason && reason.response) { + reason.response.data = transformData( + reason.response.data, + reason.response.headers, + config.transformResponse + ); + } + } + + return Promise.reject(reason); + }); +}; + +},{"../cancel/isCancel":103,"../defaults":113,"./../utils":123,"./transformData":112}],109:[function(require,module,exports){ +'use strict'; + +/** + * Update an Error with the specified config, error code, and response. + * + * @param {Error} error The error to update. + * @param {Object} config The config. + * @param {string} [code] The error code (for example, 'ECONNABORTED'). + * @param {Object} [request] The request. + * @param {Object} [response] The response. + * @returns {Error} The error. + */ +module.exports = function enhanceError(error, config, code, request, response) { + error.config = config; + if (code) { + error.code = code; + } + + error.request = request; + error.response = response; + error.isAxiosError = true; + + error.toJSON = function toJSON() { + return { + // Standard + message: this.message, + name: this.name, + // Microsoft + description: this.description, + number: this.number, + // Mozilla + fileName: this.fileName, + lineNumber: this.lineNumber, + columnNumber: this.columnNumber, + stack: this.stack, + // Axios + config: this.config, + code: this.code + }; + }; + return error; +}; + +},{}],110:[function(require,module,exports){ +'use strict'; + +var utils = require('../utils'); + +/** + * Config-specific merge-function which creates a new config-object + * by merging two configuration objects together. + * + * @param {Object} config1 + * @param {Object} config2 + * @returns {Object} New object resulting from merging config2 to config1 + */ +module.exports = function mergeConfig(config1, config2) { + // eslint-disable-next-line no-param-reassign + config2 = config2 || {}; + var config = {}; + + var valueFromConfig2Keys = ['url', 'method', 'data']; + var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params']; + var defaultToConfig2Keys = [ + 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer', + 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName', + 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress', + 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent', + 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding' + ]; + var directMergeKeys = ['validateStatus']; + + function getMergedValue(target, source) { + if (utils.isPlainObject(target) && utils.isPlainObject(source)) { + return utils.merge(target, source); + } else if (utils.isPlainObject(source)) { + return utils.merge({}, source); + } else if (utils.isArray(source)) { + return source.slice(); + } + return source; + } + + function mergeDeepProperties(prop) { + if (!utils.isUndefined(config2[prop])) { + config[prop] = getMergedValue(config1[prop], config2[prop]); + } else if (!utils.isUndefined(config1[prop])) { + config[prop] = getMergedValue(undefined, config1[prop]); + } + } + + utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) { + if (!utils.isUndefined(config2[prop])) { + config[prop] = getMergedValue(undefined, config2[prop]); + } + }); + + utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties); + + utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) { + if (!utils.isUndefined(config2[prop])) { + config[prop] = getMergedValue(undefined, config2[prop]); + } else if (!utils.isUndefined(config1[prop])) { + config[prop] = getMergedValue(undefined, config1[prop]); + } + }); + + utils.forEach(directMergeKeys, function merge(prop) { + if (prop in config2) { + config[prop] = getMergedValue(config1[prop], config2[prop]); + } else if (prop in config1) { + config[prop] = getMergedValue(undefined, config1[prop]); + } + }); + + var axiosKeys = valueFromConfig2Keys + .concat(mergeDeepPropertiesKeys) + .concat(defaultToConfig2Keys) + .concat(directMergeKeys); + + var otherKeys = Object + .keys(config1) + .concat(Object.keys(config2)) + .filter(function filterAxiosKeys(key) { + return axiosKeys.indexOf(key) === -1; + }); + + utils.forEach(otherKeys, mergeDeepProperties); + + return config; +}; + +},{"../utils":123}],111:[function(require,module,exports){ +'use strict'; + +var createError = require('./createError'); + +/** + * Resolve or reject a Promise based on response status. + * + * @param {Function} resolve A function that resolves the promise. + * @param {Function} reject A function that rejects the promise. + * @param {object} response The response. + */ +module.exports = function settle(resolve, reject, response) { + var validateStatus = response.config.validateStatus; + if (!response.status || !validateStatus || validateStatus(response.status)) { + resolve(response); + } else { + reject(createError( + 'Request failed with status code ' + response.status, + response.config, + null, + response.request, + response + )); + } +}; + +},{"./createError":107}],112:[function(require,module,exports){ +'use strict'; + +var utils = require('./../utils'); + +/** + * Transform the data for a request or a response + * + * @param {Object|String} data The data to be transformed + * @param {Array} headers The headers for the request or response + * @param {Array|Function} fns A single function or Array of functions + * @returns {*} The resulting transformed data + */ +module.exports = function transformData(data, headers, fns) { + /*eslint no-param-reassign:0*/ + utils.forEach(fns, function transform(fn) { + data = fn(data, headers); + }); + + return data; +}; + +},{"./../utils":123}],113:[function(require,module,exports){ +(function (process){ +'use strict'; + +var utils = require('./utils'); +var normalizeHeaderName = require('./helpers/normalizeHeaderName'); + +var DEFAULT_CONTENT_TYPE = { + 'Content-Type': 'application/x-www-form-urlencoded' +}; + +function setContentTypeIfUnset(headers, value) { + if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) { + headers['Content-Type'] = value; + } +} + +function getDefaultAdapter() { + var adapter; + if (typeof XMLHttpRequest !== 'undefined') { + // For browsers use XHR adapter + adapter = require('./adapters/xhr'); + } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') { + // For node use HTTP adapter + adapter = require('./adapters/http'); + } + return adapter; +} + +var defaults = { + adapter: getDefaultAdapter(), + + transformRequest: [function transformRequest(data, headers) { + normalizeHeaderName(headers, 'Accept'); + normalizeHeaderName(headers, 'Content-Type'); + if (utils.isFormData(data) || + utils.isArrayBuffer(data) || + utils.isBuffer(data) || + utils.isStream(data) || + utils.isFile(data) || + utils.isBlob(data) + ) { + return data; + } + if (utils.isArrayBufferView(data)) { + return data.buffer; + } + if (utils.isURLSearchParams(data)) { + setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8'); + return data.toString(); + } + if (utils.isObject(data)) { + setContentTypeIfUnset(headers, 'application/json;charset=utf-8'); + return JSON.stringify(data); + } + return data; + }], + + transformResponse: [function transformResponse(data) { + /*eslint no-param-reassign:0*/ + if (typeof data === 'string') { + try { + data = JSON.parse(data); + } catch (e) { /* Ignore */ } + } + return data; + }], + + /** + * A timeout in milliseconds to abort a request. If set to 0 (default) a + * timeout is not created. + */ + timeout: 0, + + xsrfCookieName: 'XSRF-TOKEN', + xsrfHeaderName: 'X-XSRF-TOKEN', + + maxContentLength: -1, + maxBodyLength: -1, + + validateStatus: function validateStatus(status) { + return status >= 200 && status < 300; + } +}; + +defaults.headers = { + common: { + 'Accept': 'application/json, text/plain, */*' + } +}; + +utils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) { + defaults.headers[method] = {}; +}); + +utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { + defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE); +}); + +module.exports = defaults; + +}).call(this,require('_process')) + +},{"./adapters/http":99,"./adapters/xhr":99,"./helpers/normalizeHeaderName":120,"./utils":123,"_process":6}],114:[function(require,module,exports){ +'use strict'; + +module.exports = function bind(fn, thisArg) { + return function wrap() { + var args = new Array(arguments.length); + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i]; + } + return fn.apply(thisArg, args); + }; +}; + +},{}],115:[function(require,module,exports){ +'use strict'; + +var utils = require('./../utils'); + +function encode(val) { + return encodeURIComponent(val). + replace(/%3A/gi, ':'). + replace(/%24/g, '$'). + replace(/%2C/gi, ','). + replace(/%20/g, '+'). + replace(/%5B/gi, '['). + replace(/%5D/gi, ']'); +} + +/** + * Build a URL by appending params to the end + * + * @param {string} url The base of the url (e.g., http://www.google.com) + * @param {object} [params] The params to be appended + * @returns {string} The formatted url + */ +module.exports = function buildURL(url, params, paramsSerializer) { + /*eslint no-param-reassign:0*/ + if (!params) { + return url; + } + + var serializedParams; + if (paramsSerializer) { + serializedParams = paramsSerializer(params); + } else if (utils.isURLSearchParams(params)) { + serializedParams = params.toString(); + } else { + var parts = []; + + utils.forEach(params, function serialize(val, key) { + if (val === null || typeof val === 'undefined') { + return; + } + + if (utils.isArray(val)) { + key = key + '[]'; + } else { + val = [val]; + } + + utils.forEach(val, function parseValue(v) { + if (utils.isDate(v)) { + v = v.toISOString(); + } else if (utils.isObject(v)) { + v = JSON.stringify(v); + } + parts.push(encode(key) + '=' + encode(v)); + }); + }); + + serializedParams = parts.join('&'); + } + + if (serializedParams) { + var hashmarkIndex = url.indexOf('#'); + if (hashmarkIndex !== -1) { + url = url.slice(0, hashmarkIndex); + } + + url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams; + } + + return url; +}; + +},{"./../utils":123}],116:[function(require,module,exports){ +'use strict'; + +/** + * Creates a new URL by combining the specified URLs + * + * @param {string} baseURL The base URL + * @param {string} relativeURL The relative URL + * @returns {string} The combined URL + */ +module.exports = function combineURLs(baseURL, relativeURL) { + return relativeURL + ? baseURL.replace(/\/+$/, '') + '/' + relativeURL.replace(/^\/+/, '') + : baseURL; +}; + +},{}],117:[function(require,module,exports){ +'use strict'; + +var utils = require('./../utils'); + +module.exports = ( + utils.isStandardBrowserEnv() ? + + // Standard browser envs support document.cookie + (function standardBrowserEnv() { + return { + write: function write(name, value, expires, path, domain, secure) { + var cookie = []; + cookie.push(name + '=' + encodeURIComponent(value)); + + if (utils.isNumber(expires)) { + cookie.push('expires=' + new Date(expires).toGMTString()); + } + + if (utils.isString(path)) { + cookie.push('path=' + path); + } + + if (utils.isString(domain)) { + cookie.push('domain=' + domain); + } + + if (secure === true) { + cookie.push('secure'); + } + + document.cookie = cookie.join('; '); + }, + + read: function read(name) { + var match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)')); + return (match ? decodeURIComponent(match[3]) : null); + }, + + remove: function remove(name) { + this.write(name, '', Date.now() - 86400000); + } + }; + })() : + + // Non standard browser env (web workers, react-native) lack needed support. + (function nonStandardBrowserEnv() { + return { + write: function write() {}, + read: function read() { return null; }, + remove: function remove() {} + }; + })() +); + +},{"./../utils":123}],118:[function(require,module,exports){ +'use strict'; + +/** + * Determines whether the specified URL is absolute + * + * @param {string} url The URL to test + * @returns {boolean} True if the specified URL is absolute, otherwise false + */ +module.exports = function isAbsoluteURL(url) { + // A URL is considered absolute if it begins with "://" or "//" (protocol-relative URL). + // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed + // by any combination of letters, digits, plus, period, or hyphen. + return /^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(url); +}; + +},{}],119:[function(require,module,exports){ +'use strict'; + +var utils = require('./../utils'); + +module.exports = ( + utils.isStandardBrowserEnv() ? + + // Standard browser envs have full support of the APIs needed to test + // whether the request URL is of the same origin as current location. + (function standardBrowserEnv() { + var msie = /(msie|trident)/i.test(navigator.userAgent); + var urlParsingNode = document.createElement('a'); + var originURL; + + /** + * Parse a URL to discover it's components + * + * @param {String} url The URL to be parsed + * @returns {Object} + */ + function resolveURL(url) { + var href = url; + + if (msie) { + // IE needs attribute set twice to normalize properties + urlParsingNode.setAttribute('href', href); + href = urlParsingNode.href; + } + + urlParsingNode.setAttribute('href', href); + + // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils + return { + href: urlParsingNode.href, + protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '', + host: urlParsingNode.host, + search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '', + hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '', + hostname: urlParsingNode.hostname, + port: urlParsingNode.port, + pathname: (urlParsingNode.pathname.charAt(0) === '/') ? + urlParsingNode.pathname : + '/' + urlParsingNode.pathname + }; + } + + originURL = resolveURL(window.location.href); + + /** + * Determine if a URL shares the same origin as the current location + * + * @param {String} requestURL The URL to test + * @returns {boolean} True if URL shares the same origin, otherwise false + */ + return function isURLSameOrigin(requestURL) { + var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL; + return (parsed.protocol === originURL.protocol && + parsed.host === originURL.host); + }; + })() : + + // Non standard browser envs (web workers, react-native) lack needed support. + (function nonStandardBrowserEnv() { + return function isURLSameOrigin() { + return true; + }; + })() +); + +},{"./../utils":123}],120:[function(require,module,exports){ +'use strict'; + +var utils = require('../utils'); + +module.exports = function normalizeHeaderName(headers, normalizedName) { + utils.forEach(headers, function processHeader(value, name) { + if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) { + headers[normalizedName] = value; + delete headers[name]; + } + }); +}; + +},{"../utils":123}],121:[function(require,module,exports){ +'use strict'; + +var utils = require('./../utils'); + +// Headers whose duplicates are ignored by node +// c.f. https://nodejs.org/api/http.html#http_message_headers +var ignoreDuplicateOf = [ + 'age', 'authorization', 'content-length', 'content-type', 'etag', + 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', + 'last-modified', 'location', 'max-forwards', 'proxy-authorization', + 'referer', 'retry-after', 'user-agent' +]; + +/** + * Parse headers into an object + * + * ``` + * Date: Wed, 27 Aug 2014 08:58:49 GMT + * Content-Type: application/json + * Connection: keep-alive + * Transfer-Encoding: chunked + * ``` + * + * @param {String} headers Headers needing to be parsed + * @returns {Object} Headers parsed into an object + */ +module.exports = function parseHeaders(headers) { + var parsed = {}; + var key; + var val; + var i; + + if (!headers) { return parsed; } + + utils.forEach(headers.split('\n'), function parser(line) { + i = line.indexOf(':'); + key = utils.trim(line.substr(0, i)).toLowerCase(); + val = utils.trim(line.substr(i + 1)); + + if (key) { + if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) { + return; + } + if (key === 'set-cookie') { + parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]); + } else { + parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val; + } + } + }); + + return parsed; +}; + +},{"./../utils":123}],122:[function(require,module,exports){ +'use strict'; + +/** + * Syntactic sugar for invoking a function and expanding an array for arguments. + * + * Common use case would be to use `Function.prototype.apply`. + * + * ```js + * function f(x, y, z) {} + * var args = [1, 2, 3]; + * f.apply(null, args); + * ``` + * + * With `spread` this example can be re-written. + * + * ```js + * spread(function(x, y, z) {})([1, 2, 3]); + * ``` + * + * @param {Function} callback + * @returns {Function} + */ +module.exports = function spread(callback) { + return function wrap(arr) { + return callback.apply(null, arr); + }; +}; + +},{}],123:[function(require,module,exports){ +'use strict'; + +var bind = require('./helpers/bind'); + +/*global toString:true*/ + +// utils is a library of generic helper functions non-specific to axios + +var toString = Object.prototype.toString; + +/** + * Determine if a value is an Array + * + * @param {Object} val The value to test + * @returns {boolean} True if value is an Array, otherwise false + */ +function isArray(val) { + return toString.call(val) === '[object Array]'; +} + +/** + * Determine if a value is undefined + * + * @param {Object} val The value to test + * @returns {boolean} True if the value is undefined, otherwise false + */ +function isUndefined(val) { + return typeof val === 'undefined'; +} + +/** + * Determine if a value is a Buffer + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Buffer, otherwise false + */ +function isBuffer(val) { + return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) + && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val); +} + +/** + * Determine if a value is an ArrayBuffer + * + * @param {Object} val The value to test + * @returns {boolean} True if value is an ArrayBuffer, otherwise false + */ +function isArrayBuffer(val) { + return toString.call(val) === '[object ArrayBuffer]'; +} + +/** + * Determine if a value is a FormData + * + * @param {Object} val The value to test + * @returns {boolean} True if value is an FormData, otherwise false + */ +function isFormData(val) { + return (typeof FormData !== 'undefined') && (val instanceof FormData); +} + +/** + * Determine if a value is a view on an ArrayBuffer + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false + */ +function isArrayBufferView(val) { + var result; + if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) { + result = ArrayBuffer.isView(val); + } else { + result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer); + } + return result; +} + +/** + * Determine if a value is a String + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a String, otherwise false + */ +function isString(val) { + return typeof val === 'string'; +} + +/** + * Determine if a value is a Number + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Number, otherwise false + */ +function isNumber(val) { + return typeof val === 'number'; +} + +/** + * Determine if a value is an Object + * + * @param {Object} val The value to test + * @returns {boolean} True if value is an Object, otherwise false + */ +function isObject(val) { + return val !== null && typeof val === 'object'; +} + +/** + * Determine if a value is a plain Object + * + * @param {Object} val The value to test + * @return {boolean} True if value is a plain Object, otherwise false + */ +function isPlainObject(val) { + if (toString.call(val) !== '[object Object]') { + return false; + } + + var prototype = Object.getPrototypeOf(val); + return prototype === null || prototype === Object.prototype; +} + +/** + * Determine if a value is a Date + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Date, otherwise false + */ +function isDate(val) { + return toString.call(val) === '[object Date]'; +} + +/** + * Determine if a value is a File + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a File, otherwise false + */ +function isFile(val) { + return toString.call(val) === '[object File]'; +} + +/** + * Determine if a value is a Blob + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Blob, otherwise false + */ +function isBlob(val) { + return toString.call(val) === '[object Blob]'; +} + +/** + * Determine if a value is a Function + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Function, otherwise false + */ +function isFunction(val) { + return toString.call(val) === '[object Function]'; +} + +/** + * Determine if a value is a Stream + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Stream, otherwise false + */ +function isStream(val) { + return isObject(val) && isFunction(val.pipe); +} + +/** + * Determine if a value is a URLSearchParams object + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a URLSearchParams object, otherwise false + */ +function isURLSearchParams(val) { + return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams; +} + +/** + * Trim excess whitespace off the beginning and end of a string + * + * @param {String} str The String to trim + * @returns {String} The String freed of excess whitespace + */ +function trim(str) { + return str.replace(/^\s*/, '').replace(/\s*$/, ''); +} + +/** + * Determine if we're running in a standard browser environment + * + * This allows axios to run in a web worker, and react-native. + * Both environments support XMLHttpRequest, but not fully standard globals. + * + * web workers: + * typeof window -> undefined + * typeof document -> undefined + * + * react-native: + * navigator.product -> 'ReactNative' + * nativescript + * navigator.product -> 'NativeScript' or 'NS' + */ +function isStandardBrowserEnv() { + if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' || + navigator.product === 'NativeScript' || + navigator.product === 'NS')) { + return false; + } + return ( + typeof window !== 'undefined' && + typeof document !== 'undefined' + ); +} + +/** + * Iterate over an Array or an Object invoking a function for each item. + * + * If `obj` is an Array callback will be called passing + * the value, index, and complete array for each item. + * + * If 'obj' is an Object callback will be called passing + * the value, key, and complete object for each property. + * + * @param {Object|Array} obj The object to iterate + * @param {Function} fn The callback to invoke for each item + */ +function forEach(obj, fn) { + // Don't bother if no value provided + if (obj === null || typeof obj === 'undefined') { + return; + } + + // Force an array if not already something iterable + if (typeof obj !== 'object') { + /*eslint no-param-reassign:0*/ + obj = [obj]; + } + + if (isArray(obj)) { + // Iterate over array values + for (var i = 0, l = obj.length; i < l; i++) { + fn.call(null, obj[i], i, obj); + } + } else { + // Iterate over object keys + for (var key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) { + fn.call(null, obj[key], key, obj); + } + } + } +} + +/** + * Accepts varargs expecting each argument to be an object, then + * immutably merges the properties of each object and returns result. + * + * When multiple objects contain the same key the later object in + * the arguments list will take precedence. + * + * Example: + * + * ```js + * var result = merge({foo: 123}, {foo: 456}); + * console.log(result.foo); // outputs 456 + * ``` + * + * @param {Object} obj1 Object to merge + * @returns {Object} Result of all merge properties + */ +function merge(/* obj1, obj2, obj3, ... */) { + var result = {}; + function assignValue(val, key) { + if (isPlainObject(result[key]) && isPlainObject(val)) { + result[key] = merge(result[key], val); + } else if (isPlainObject(val)) { + result[key] = merge({}, val); + } else if (isArray(val)) { + result[key] = val.slice(); + } else { + result[key] = val; + } + } + + for (var i = 0, l = arguments.length; i < l; i++) { + forEach(arguments[i], assignValue); + } + return result; +} + +/** + * Extends object a by mutably adding to it the properties of object b. + * + * @param {Object} a The object to be extended + * @param {Object} b The object to copy properties from + * @param {Object} thisArg The object to bind function to + * @return {Object} The resulting value of object a + */ +function extend(a, b, thisArg) { + forEach(b, function assignValue(val, key) { + if (thisArg && typeof val === 'function') { + a[key] = bind(val, thisArg); + } else { + a[key] = val; + } + }); + return a; +} + +/** + * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM) + * + * @param {string} content with BOM + * @return {string} content value without BOM + */ +function stripBOM(content) { + if (content.charCodeAt(0) === 0xFEFF) { + content = content.slice(1); + } + return content; +} + +module.exports = { + isArray: isArray, + isArrayBuffer: isArrayBuffer, + isBuffer: isBuffer, + isFormData: isFormData, + isArrayBufferView: isArrayBufferView, + isString: isString, + isNumber: isNumber, + isObject: isObject, + isPlainObject: isPlainObject, + isUndefined: isUndefined, + isDate: isDate, + isFile: isFile, + isBlob: isBlob, + isFunction: isFunction, + isStream: isStream, + isURLSearchParams: isURLSearchParams, + isStandardBrowserEnv: isStandardBrowserEnv, + forEach: forEach, + merge: merge, + extend: extend, + trim: trim, + stripBOM: stripBOM +}; + +},{"./helpers/bind":114}],124:[function(require,module,exports){ +var getNative = require('./_getNative'), + root = require('./_root'); + +/* Built-in method references that are verified to be native. */ +var DataView = getNative(root, 'DataView'); + +module.exports = DataView; + +},{"./_getNative":207,"./_root":250}],125:[function(require,module,exports){ +var hashClear = require('./_hashClear'), + hashDelete = require('./_hashDelete'), + hashGet = require('./_hashGet'), + hashHas = require('./_hashHas'), + hashSet = require('./_hashSet'); + +/** + * Creates a hash object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function Hash(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +// Add methods to `Hash`. +Hash.prototype.clear = hashClear; +Hash.prototype['delete'] = hashDelete; +Hash.prototype.get = hashGet; +Hash.prototype.has = hashHas; +Hash.prototype.set = hashSet; + +module.exports = Hash; + +},{"./_hashClear":215,"./_hashDelete":216,"./_hashGet":217,"./_hashHas":218,"./_hashSet":219}],126:[function(require,module,exports){ +var listCacheClear = require('./_listCacheClear'), + listCacheDelete = require('./_listCacheDelete'), + listCacheGet = require('./_listCacheGet'), + listCacheHas = require('./_listCacheHas'), + listCacheSet = require('./_listCacheSet'); + +/** + * Creates an list cache object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function ListCache(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +// Add methods to `ListCache`. +ListCache.prototype.clear = listCacheClear; +ListCache.prototype['delete'] = listCacheDelete; +ListCache.prototype.get = listCacheGet; +ListCache.prototype.has = listCacheHas; +ListCache.prototype.set = listCacheSet; + +module.exports = ListCache; + +},{"./_listCacheClear":230,"./_listCacheDelete":231,"./_listCacheGet":232,"./_listCacheHas":233,"./_listCacheSet":234}],127:[function(require,module,exports){ +var getNative = require('./_getNative'), + root = require('./_root'); + +/* Built-in method references that are verified to be native. */ +var Map = getNative(root, 'Map'); + +module.exports = Map; + +},{"./_getNative":207,"./_root":250}],128:[function(require,module,exports){ +var mapCacheClear = require('./_mapCacheClear'), + mapCacheDelete = require('./_mapCacheDelete'), + mapCacheGet = require('./_mapCacheGet'), + mapCacheHas = require('./_mapCacheHas'), + mapCacheSet = require('./_mapCacheSet'); + +/** + * Creates a map cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function MapCache(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +// Add methods to `MapCache`. +MapCache.prototype.clear = mapCacheClear; +MapCache.prototype['delete'] = mapCacheDelete; +MapCache.prototype.get = mapCacheGet; +MapCache.prototype.has = mapCacheHas; +MapCache.prototype.set = mapCacheSet; + +module.exports = MapCache; + +},{"./_mapCacheClear":235,"./_mapCacheDelete":236,"./_mapCacheGet":237,"./_mapCacheHas":238,"./_mapCacheSet":239}],129:[function(require,module,exports){ +var getNative = require('./_getNative'), + root = require('./_root'); + +/* Built-in method references that are verified to be native. */ +var Promise = getNative(root, 'Promise'); + +module.exports = Promise; + +},{"./_getNative":207,"./_root":250}],130:[function(require,module,exports){ +var getNative = require('./_getNative'), + root = require('./_root'); + +/* Built-in method references that are verified to be native. */ +var Set = getNative(root, 'Set'); + +module.exports = Set; + +},{"./_getNative":207,"./_root":250}],131:[function(require,module,exports){ +var MapCache = require('./_MapCache'), + setCacheAdd = require('./_setCacheAdd'), + setCacheHas = require('./_setCacheHas'); + +/** + * + * Creates an array cache object to store unique values. + * + * @private + * @constructor + * @param {Array} [values] The values to cache. + */ +function SetCache(values) { + var index = -1, + length = values == null ? 0 : values.length; + + this.__data__ = new MapCache; + while (++index < length) { + this.add(values[index]); + } +} + +// Add methods to `SetCache`. +SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; +SetCache.prototype.has = setCacheHas; + +module.exports = SetCache; + +},{"./_MapCache":128,"./_setCacheAdd":252,"./_setCacheHas":253}],132:[function(require,module,exports){ +var ListCache = require('./_ListCache'), + stackClear = require('./_stackClear'), + stackDelete = require('./_stackDelete'), + stackGet = require('./_stackGet'), + stackHas = require('./_stackHas'), + stackSet = require('./_stackSet'); + +/** + * Creates a stack cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function Stack(entries) { + var data = this.__data__ = new ListCache(entries); + this.size = data.size; +} + +// Add methods to `Stack`. +Stack.prototype.clear = stackClear; +Stack.prototype['delete'] = stackDelete; +Stack.prototype.get = stackGet; +Stack.prototype.has = stackHas; +Stack.prototype.set = stackSet; + +module.exports = Stack; + +},{"./_ListCache":126,"./_stackClear":257,"./_stackDelete":258,"./_stackGet":259,"./_stackHas":260,"./_stackSet":261}],133:[function(require,module,exports){ +var root = require('./_root'); + +/** Built-in value references. */ +var Symbol = root.Symbol; + +module.exports = Symbol; + +},{"./_root":250}],134:[function(require,module,exports){ +var root = require('./_root'); + +/** Built-in value references. */ +var Uint8Array = root.Uint8Array; + +module.exports = Uint8Array; + +},{"./_root":250}],135:[function(require,module,exports){ +var getNative = require('./_getNative'), + root = require('./_root'); + +/* Built-in method references that are verified to be native. */ +var WeakMap = getNative(root, 'WeakMap'); + +module.exports = WeakMap; + +},{"./_getNative":207,"./_root":250}],136:[function(require,module,exports){ +/** + * A faster alternative to `Function#apply`, this function invokes `func` + * with the `this` binding of `thisArg` and the arguments of `args`. + * + * @private + * @param {Function} func The function to invoke. + * @param {*} thisArg The `this` binding of `func`. + * @param {Array} args The arguments to invoke `func` with. + * @returns {*} Returns the result of `func`. + */ +function apply(func, thisArg, args) { + switch (args.length) { + case 0: return func.call(thisArg); + case 1: return func.call(thisArg, args[0]); + case 2: return func.call(thisArg, args[0], args[1]); + case 3: return func.call(thisArg, args[0], args[1], args[2]); + } + return func.apply(thisArg, args); +} + +module.exports = apply; + +},{}],137:[function(require,module,exports){ +/** + * A specialized version of `_.forEach` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns `array`. + */ +function arrayEach(array, iteratee) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (iteratee(array[index], index, array) === false) { + break; + } + } + return array; +} + +module.exports = arrayEach; + +},{}],138:[function(require,module,exports){ +/** + * A specialized version of `_.filter` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + */ +function arrayFilter(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length, + resIndex = 0, + result = []; + + while (++index < length) { + var value = array[index]; + if (predicate(value, index, array)) { + result[resIndex++] = value; + } + } + return result; +} + +module.exports = arrayFilter; + +},{}],139:[function(require,module,exports){ +var baseTimes = require('./_baseTimes'), + isArguments = require('./isArguments'), + isArray = require('./isArray'), + isBuffer = require('./isBuffer'), + isIndex = require('./_isIndex'), + isTypedArray = require('./isTypedArray'); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Creates an array of the enumerable property names of the array-like `value`. + * + * @private + * @param {*} value The value to query. + * @param {boolean} inherited Specify returning inherited property names. + * @returns {Array} Returns the array of property names. + */ +function arrayLikeKeys(value, inherited) { + var isArr = isArray(value), + isArg = !isArr && isArguments(value), + isBuff = !isArr && !isArg && isBuffer(value), + isType = !isArr && !isArg && !isBuff && isTypedArray(value), + skipIndexes = isArr || isArg || isBuff || isType, + result = skipIndexes ? baseTimes(value.length, String) : [], + length = result.length; + + for (var key in value) { + if ((inherited || hasOwnProperty.call(value, key)) && + !(skipIndexes && ( + // Safari 9 has enumerable `arguments.length` in strict mode. + key == 'length' || + // Node.js 0.10 has enumerable non-index properties on buffers. + (isBuff && (key == 'offset' || key == 'parent')) || + // PhantomJS 2 has enumerable non-index properties on typed arrays. + (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) || + // Skip index properties. + isIndex(key, length) + ))) { + result.push(key); + } + } + return result; +} + +module.exports = arrayLikeKeys; + +},{"./_baseTimes":178,"./_isIndex":223,"./isArguments":275,"./isArray":276,"./isBuffer":279,"./isTypedArray":289}],140:[function(require,module,exports){ +/** + * A specialized version of `_.map` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ +function arrayMap(array, iteratee) { + var index = -1, + length = array == null ? 0 : array.length, + result = Array(length); + + while (++index < length) { + result[index] = iteratee(array[index], index, array); + } + return result; +} + +module.exports = arrayMap; + +},{}],141:[function(require,module,exports){ +/** + * Appends the elements of `values` to `array`. + * + * @private + * @param {Array} array The array to modify. + * @param {Array} values The values to append. + * @returns {Array} Returns `array`. + */ +function arrayPush(array, values) { + var index = -1, + length = values.length, + offset = array.length; + + while (++index < length) { + array[offset + index] = values[index]; + } + return array; +} + +module.exports = arrayPush; + +},{}],142:[function(require,module,exports){ +/** + * A specialized version of `_.some` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + */ +function arraySome(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (predicate(array[index], index, array)) { + return true; + } + } + return false; +} + +module.exports = arraySome; + +},{}],143:[function(require,module,exports){ +var baseAssignValue = require('./_baseAssignValue'), + eq = require('./eq'); + +/** + * This function is like `assignValue` except that it doesn't assign + * `undefined` values. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ +function assignMergeValue(object, key, value) { + if ((value !== undefined && !eq(object[key], value)) || + (value === undefined && !(key in object))) { + baseAssignValue(object, key, value); + } +} + +module.exports = assignMergeValue; + +},{"./_baseAssignValue":148,"./eq":269}],144:[function(require,module,exports){ +var baseAssignValue = require('./_baseAssignValue'), + eq = require('./eq'); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Assigns `value` to `key` of `object` if the existing value is not equivalent + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ +function assignValue(object, key, value) { + var objValue = object[key]; + if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || + (value === undefined && !(key in object))) { + baseAssignValue(object, key, value); + } +} + +module.exports = assignValue; + +},{"./_baseAssignValue":148,"./eq":269}],145:[function(require,module,exports){ +var eq = require('./eq'); + +/** + * Gets the index at which the `key` is found in `array` of key-value pairs. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} key The key to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function assocIndexOf(array, key) { + var length = array.length; + while (length--) { + if (eq(array[length][0], key)) { + return length; + } + } + return -1; +} + +module.exports = assocIndexOf; + +},{"./eq":269}],146:[function(require,module,exports){ +var copyObject = require('./_copyObject'), + keys = require('./keys'); + +/** + * The base implementation of `_.assign` without support for multiple sources + * or `customizer` functions. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @returns {Object} Returns `object`. + */ +function baseAssign(object, source) { + return object && copyObject(source, keys(source), object); +} + +module.exports = baseAssign; + +},{"./_copyObject":191,"./keys":291}],147:[function(require,module,exports){ +var copyObject = require('./_copyObject'), + keysIn = require('./keysIn'); + +/** + * The base implementation of `_.assignIn` without support for multiple sources + * or `customizer` functions. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @returns {Object} Returns `object`. + */ +function baseAssignIn(object, source) { + return object && copyObject(source, keysIn(source), object); +} + +module.exports = baseAssignIn; + +},{"./_copyObject":191,"./keysIn":292}],148:[function(require,module,exports){ +var defineProperty = require('./_defineProperty'); + +/** + * The base implementation of `assignValue` and `assignMergeValue` without + * value checks. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ +function baseAssignValue(object, key, value) { + if (key == '__proto__' && defineProperty) { + defineProperty(object, key, { + 'configurable': true, + 'enumerable': true, + 'value': value, + 'writable': true + }); + } else { + object[key] = value; + } +} + +module.exports = baseAssignValue; + +},{"./_defineProperty":198}],149:[function(require,module,exports){ +var Stack = require('./_Stack'), + arrayEach = require('./_arrayEach'), + assignValue = require('./_assignValue'), + baseAssign = require('./_baseAssign'), + baseAssignIn = require('./_baseAssignIn'), + cloneBuffer = require('./_cloneBuffer'), + copyArray = require('./_copyArray'), + copySymbols = require('./_copySymbols'), + copySymbolsIn = require('./_copySymbolsIn'), + getAllKeys = require('./_getAllKeys'), + getAllKeysIn = require('./_getAllKeysIn'), + getTag = require('./_getTag'), + initCloneArray = require('./_initCloneArray'), + initCloneByTag = require('./_initCloneByTag'), + initCloneObject = require('./_initCloneObject'), + isArray = require('./isArray'), + isBuffer = require('./isBuffer'), + isMap = require('./isMap'), + isObject = require('./isObject'), + isSet = require('./isSet'), + keys = require('./keys'), + keysIn = require('./keysIn'); + +/** Used to compose bitmasks for cloning. */ +var CLONE_DEEP_FLAG = 1, + CLONE_FLAT_FLAG = 2, + CLONE_SYMBOLS_FLAG = 4; + +/** `Object#toString` result references. */ +var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + boolTag = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + mapTag = '[object Map]', + numberTag = '[object Number]', + objectTag = '[object Object]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + symbolTag = '[object Symbol]', + weakMapTag = '[object WeakMap]'; + +var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; + +/** Used to identify `toStringTag` values supported by `_.clone`. */ +var cloneableTags = {}; +cloneableTags[argsTag] = cloneableTags[arrayTag] = +cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = +cloneableTags[boolTag] = cloneableTags[dateTag] = +cloneableTags[float32Tag] = cloneableTags[float64Tag] = +cloneableTags[int8Tag] = cloneableTags[int16Tag] = +cloneableTags[int32Tag] = cloneableTags[mapTag] = +cloneableTags[numberTag] = cloneableTags[objectTag] = +cloneableTags[regexpTag] = cloneableTags[setTag] = +cloneableTags[stringTag] = cloneableTags[symbolTag] = +cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = +cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; +cloneableTags[errorTag] = cloneableTags[funcTag] = +cloneableTags[weakMapTag] = false; + +/** + * The base implementation of `_.clone` and `_.cloneDeep` which tracks + * traversed objects. + * + * @private + * @param {*} value The value to clone. + * @param {boolean} bitmask The bitmask flags. + * 1 - Deep clone + * 2 - Flatten inherited properties + * 4 - Clone symbols + * @param {Function} [customizer] The function to customize cloning. + * @param {string} [key] The key of `value`. + * @param {Object} [object] The parent object of `value`. + * @param {Object} [stack] Tracks traversed objects and their clone counterparts. + * @returns {*} Returns the cloned value. + */ +function baseClone(value, bitmask, customizer, key, object, stack) { + var result, + isDeep = bitmask & CLONE_DEEP_FLAG, + isFlat = bitmask & CLONE_FLAT_FLAG, + isFull = bitmask & CLONE_SYMBOLS_FLAG; + + if (customizer) { + result = object ? customizer(value, key, object, stack) : customizer(value); + } + if (result !== undefined) { + return result; + } + if (!isObject(value)) { + return value; + } + var isArr = isArray(value); + if (isArr) { + result = initCloneArray(value); + if (!isDeep) { + return copyArray(value, result); + } + } else { + var tag = getTag(value), + isFunc = tag == funcTag || tag == genTag; + + if (isBuffer(value)) { + return cloneBuffer(value, isDeep); + } + if (tag == objectTag || tag == argsTag || (isFunc && !object)) { + result = (isFlat || isFunc) ? {} : initCloneObject(value); + if (!isDeep) { + return isFlat + ? copySymbolsIn(value, baseAssignIn(result, value)) + : copySymbols(value, baseAssign(result, value)); + } + } else { + if (!cloneableTags[tag]) { + return object ? value : {}; + } + result = initCloneByTag(value, tag, isDeep); + } + } + // Check for circular references and return its corresponding clone. + stack || (stack = new Stack); + var stacked = stack.get(value); + if (stacked) { + return stacked; + } + stack.set(value, result); + + if (isSet(value)) { + value.forEach(function(subValue) { + result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack)); + }); + } else if (isMap(value)) { + value.forEach(function(subValue, key) { + result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack)); + }); + } + + var keysFunc = isFull + ? (isFlat ? getAllKeysIn : getAllKeys) + : (isFlat ? keysIn : keys); + + var props = isArr ? undefined : keysFunc(value); + arrayEach(props || value, function(subValue, key) { + if (props) { + key = subValue; + subValue = value[key]; + } + // Recursively populate clone (susceptible to call stack limits). + assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack)); + }); + return result; +} + +module.exports = baseClone; + +},{"./_Stack":132,"./_arrayEach":137,"./_assignValue":144,"./_baseAssign":146,"./_baseAssignIn":147,"./_cloneBuffer":185,"./_copyArray":190,"./_copySymbols":192,"./_copySymbolsIn":193,"./_getAllKeys":203,"./_getAllKeysIn":204,"./_getTag":212,"./_initCloneArray":220,"./_initCloneByTag":221,"./_initCloneObject":222,"./isArray":276,"./isBuffer":279,"./isMap":282,"./isObject":283,"./isSet":286,"./keys":291,"./keysIn":292}],150:[function(require,module,exports){ +var isObject = require('./isObject'); + +/** Built-in value references. */ +var objectCreate = Object.create; + +/** + * The base implementation of `_.create` without support for assigning + * properties to the created object. + * + * @private + * @param {Object} proto The object to inherit from. + * @returns {Object} Returns the new object. + */ +var baseCreate = (function() { + function object() {} + return function(proto) { + if (!isObject(proto)) { + return {}; + } + if (objectCreate) { + return objectCreate(proto); + } + object.prototype = proto; + var result = new object; + object.prototype = undefined; + return result; + }; +}()); + +module.exports = baseCreate; + +},{"./isObject":283}],151:[function(require,module,exports){ +var baseForOwn = require('./_baseForOwn'), + createBaseEach = require('./_createBaseEach'); + +/** + * The base implementation of `_.forEach` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + */ +var baseEach = createBaseEach(baseForOwn); + +module.exports = baseEach; + +},{"./_baseForOwn":153,"./_createBaseEach":196}],152:[function(require,module,exports){ +var createBaseFor = require('./_createBaseFor'); + +/** + * The base implementation of `baseForOwn` which iterates over `object` + * properties returned by `keysFunc` and invokes `iteratee` for each property. + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {Function} keysFunc The function to get the keys of `object`. + * @returns {Object} Returns `object`. + */ +var baseFor = createBaseFor(); + +module.exports = baseFor; + +},{"./_createBaseFor":197}],153:[function(require,module,exports){ +var baseFor = require('./_baseFor'), + keys = require('./keys'); + +/** + * The base implementation of `_.forOwn` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Object} Returns `object`. + */ +function baseForOwn(object, iteratee) { + return object && baseFor(object, iteratee, keys); +} + +module.exports = baseForOwn; + +},{"./_baseFor":152,"./keys":291}],154:[function(require,module,exports){ +var castPath = require('./_castPath'), + toKey = require('./_toKey'); + +/** + * The base implementation of `_.get` without support for default values. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @returns {*} Returns the resolved value. + */ +function baseGet(object, path) { + path = castPath(path, object); + + var index = 0, + length = path.length; + + while (object != null && index < length) { + object = object[toKey(path[index++])]; + } + return (index && index == length) ? object : undefined; +} + +module.exports = baseGet; + +},{"./_castPath":183,"./_toKey":263}],155:[function(require,module,exports){ +var arrayPush = require('./_arrayPush'), + isArray = require('./isArray'); + +/** + * The base implementation of `getAllKeys` and `getAllKeysIn` which uses + * `keysFunc` and `symbolsFunc` to get the enumerable property names and + * symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Function} keysFunc The function to get the keys of `object`. + * @param {Function} symbolsFunc The function to get the symbols of `object`. + * @returns {Array} Returns the array of property names and symbols. + */ +function baseGetAllKeys(object, keysFunc, symbolsFunc) { + var result = keysFunc(object); + return isArray(object) ? result : arrayPush(result, symbolsFunc(object)); +} + +module.exports = baseGetAllKeys; + +},{"./_arrayPush":141,"./isArray":276}],156:[function(require,module,exports){ +var Symbol = require('./_Symbol'), + getRawTag = require('./_getRawTag'), + objectToString = require('./_objectToString'); + +/** `Object#toString` result references. */ +var nullTag = '[object Null]', + undefinedTag = '[object Undefined]'; + +/** Built-in value references. */ +var symToStringTag = Symbol ? Symbol.toStringTag : undefined; + +/** + * The base implementation of `getTag` without fallbacks for buggy environments. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ +function baseGetTag(value) { + if (value == null) { + return value === undefined ? undefinedTag : nullTag; + } + return (symToStringTag && symToStringTag in Object(value)) + ? getRawTag(value) + : objectToString(value); +} + +module.exports = baseGetTag; + +},{"./_Symbol":133,"./_getRawTag":209,"./_objectToString":247}],157:[function(require,module,exports){ +/** + * The base implementation of `_.hasIn` without support for deep paths. + * + * @private + * @param {Object} [object] The object to query. + * @param {Array|string} key The key to check. + * @returns {boolean} Returns `true` if `key` exists, else `false`. + */ +function baseHasIn(object, key) { + return object != null && key in Object(object); +} + +module.exports = baseHasIn; + +},{}],158:[function(require,module,exports){ +var baseGetTag = require('./_baseGetTag'), + isObjectLike = require('./isObjectLike'); + +/** `Object#toString` result references. */ +var argsTag = '[object Arguments]'; + +/** + * The base implementation of `_.isArguments`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + */ +function baseIsArguments(value) { + return isObjectLike(value) && baseGetTag(value) == argsTag; +} + +module.exports = baseIsArguments; + +},{"./_baseGetTag":156,"./isObjectLike":284}],159:[function(require,module,exports){ +var baseIsEqualDeep = require('./_baseIsEqualDeep'), + isObjectLike = require('./isObjectLike'); + +/** + * The base implementation of `_.isEqual` which supports partial comparisons + * and tracks traversed objects. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @param {boolean} bitmask The bitmask flags. + * 1 - Unordered comparison + * 2 - Partial comparison + * @param {Function} [customizer] The function to customize comparisons. + * @param {Object} [stack] Tracks traversed `value` and `other` objects. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + */ +function baseIsEqual(value, other, bitmask, customizer, stack) { + if (value === other) { + return true; + } + if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) { + return value !== value && other !== other; + } + return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack); +} + +module.exports = baseIsEqual; + +},{"./_baseIsEqualDeep":160,"./isObjectLike":284}],160:[function(require,module,exports){ +var Stack = require('./_Stack'), + equalArrays = require('./_equalArrays'), + equalByTag = require('./_equalByTag'), + equalObjects = require('./_equalObjects'), + getTag = require('./_getTag'), + isArray = require('./isArray'), + isBuffer = require('./isBuffer'), + isTypedArray = require('./isTypedArray'); + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1; + +/** `Object#toString` result references. */ +var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + objectTag = '[object Object]'; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * A specialized version of `baseIsEqual` for arrays and objects which performs + * deep comparisons and tracks traversed objects enabling objects with circular + * references to be compared. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} [stack] Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ +function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) { + var objIsArr = isArray(object), + othIsArr = isArray(other), + objTag = objIsArr ? arrayTag : getTag(object), + othTag = othIsArr ? arrayTag : getTag(other); + + objTag = objTag == argsTag ? objectTag : objTag; + othTag = othTag == argsTag ? objectTag : othTag; + + var objIsObj = objTag == objectTag, + othIsObj = othTag == objectTag, + isSameTag = objTag == othTag; + + if (isSameTag && isBuffer(object)) { + if (!isBuffer(other)) { + return false; + } + objIsArr = true; + objIsObj = false; + } + if (isSameTag && !objIsObj) { + stack || (stack = new Stack); + return (objIsArr || isTypedArray(object)) + ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) + : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); + } + if (!(bitmask & COMPARE_PARTIAL_FLAG)) { + var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), + othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); + + if (objIsWrapped || othIsWrapped) { + var objUnwrapped = objIsWrapped ? object.value() : object, + othUnwrapped = othIsWrapped ? other.value() : other; + + stack || (stack = new Stack); + return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); + } + } + if (!isSameTag) { + return false; + } + stack || (stack = new Stack); + return equalObjects(object, other, bitmask, customizer, equalFunc, stack); +} + +module.exports = baseIsEqualDeep; + +},{"./_Stack":132,"./_equalArrays":199,"./_equalByTag":200,"./_equalObjects":201,"./_getTag":212,"./isArray":276,"./isBuffer":279,"./isTypedArray":289}],161:[function(require,module,exports){ +var getTag = require('./_getTag'), + isObjectLike = require('./isObjectLike'); + +/** `Object#toString` result references. */ +var mapTag = '[object Map]'; + +/** + * The base implementation of `_.isMap` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a map, else `false`. + */ +function baseIsMap(value) { + return isObjectLike(value) && getTag(value) == mapTag; +} + +module.exports = baseIsMap; + +},{"./_getTag":212,"./isObjectLike":284}],162:[function(require,module,exports){ +var Stack = require('./_Stack'), + baseIsEqual = require('./_baseIsEqual'); + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; + +/** + * The base implementation of `_.isMatch` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to inspect. + * @param {Object} source The object of property values to match. + * @param {Array} matchData The property names, values, and compare flags to match. + * @param {Function} [customizer] The function to customize comparisons. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. + */ +function baseIsMatch(object, source, matchData, customizer) { + var index = matchData.length, + length = index, + noCustomizer = !customizer; + + if (object == null) { + return !length; + } + object = Object(object); + while (index--) { + var data = matchData[index]; + if ((noCustomizer && data[2]) + ? data[1] !== object[data[0]] + : !(data[0] in object) + ) { + return false; + } + } + while (++index < length) { + data = matchData[index]; + var key = data[0], + objValue = object[key], + srcValue = data[1]; + + if (noCustomizer && data[2]) { + if (objValue === undefined && !(key in object)) { + return false; + } + } else { + var stack = new Stack; + if (customizer) { + var result = customizer(objValue, srcValue, key, object, source, stack); + } + if (!(result === undefined + ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) + : result + )) { + return false; + } + } + } + return true; +} + +module.exports = baseIsMatch; + +},{"./_Stack":132,"./_baseIsEqual":159}],163:[function(require,module,exports){ +var isFunction = require('./isFunction'), + isMasked = require('./_isMasked'), + isObject = require('./isObject'), + toSource = require('./_toSource'); + +/** + * Used to match `RegExp` + * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). + */ +var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; + +/** Used to detect host constructors (Safari). */ +var reIsHostCtor = /^\[object .+?Constructor\]$/; + +/** Used for built-in method references. */ +var funcProto = Function.prototype, + objectProto = Object.prototype; + +/** Used to resolve the decompiled source of functions. */ +var funcToString = funcProto.toString; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** Used to detect if a method is native. */ +var reIsNative = RegExp('^' + + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') + .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' +); + +/** + * The base implementation of `_.isNative` without bad shim checks. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, + * else `false`. + */ +function baseIsNative(value) { + if (!isObject(value) || isMasked(value)) { + return false; + } + var pattern = isFunction(value) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); +} + +module.exports = baseIsNative; + +},{"./_isMasked":227,"./_toSource":264,"./isFunction":280,"./isObject":283}],164:[function(require,module,exports){ +var getTag = require('./_getTag'), + isObjectLike = require('./isObjectLike'); + +/** `Object#toString` result references. */ +var setTag = '[object Set]'; + +/** + * The base implementation of `_.isSet` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a set, else `false`. + */ +function baseIsSet(value) { + return isObjectLike(value) && getTag(value) == setTag; +} + +module.exports = baseIsSet; + +},{"./_getTag":212,"./isObjectLike":284}],165:[function(require,module,exports){ +var baseGetTag = require('./_baseGetTag'), + isLength = require('./isLength'), + isObjectLike = require('./isObjectLike'); + +/** `Object#toString` result references. */ +var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + boolTag = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + funcTag = '[object Function]', + mapTag = '[object Map]', + numberTag = '[object Number]', + objectTag = '[object Object]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + weakMapTag = '[object WeakMap]'; + +var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; + +/** Used to identify `toStringTag` values of typed arrays. */ +var typedArrayTags = {}; +typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = +typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = +typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = +typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = +typedArrayTags[uint32Tag] = true; +typedArrayTags[argsTag] = typedArrayTags[arrayTag] = +typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = +typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = +typedArrayTags[errorTag] = typedArrayTags[funcTag] = +typedArrayTags[mapTag] = typedArrayTags[numberTag] = +typedArrayTags[objectTag] = typedArrayTags[regexpTag] = +typedArrayTags[setTag] = typedArrayTags[stringTag] = +typedArrayTags[weakMapTag] = false; + +/** + * The base implementation of `_.isTypedArray` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + */ +function baseIsTypedArray(value) { + return isObjectLike(value) && + isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; +} + +module.exports = baseIsTypedArray; + +},{"./_baseGetTag":156,"./isLength":281,"./isObjectLike":284}],166:[function(require,module,exports){ +var baseMatches = require('./_baseMatches'), + baseMatchesProperty = require('./_baseMatchesProperty'), + identity = require('./identity'), + isArray = require('./isArray'), + property = require('./property'); + +/** + * The base implementation of `_.iteratee`. + * + * @private + * @param {*} [value=_.identity] The value to convert to an iteratee. + * @returns {Function} Returns the iteratee. + */ +function baseIteratee(value) { + // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9. + // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details. + if (typeof value == 'function') { + return value; + } + if (value == null) { + return identity; + } + if (typeof value == 'object') { + return isArray(value) + ? baseMatchesProperty(value[0], value[1]) + : baseMatches(value); + } + return property(value); +} + +module.exports = baseIteratee; + +},{"./_baseMatches":170,"./_baseMatchesProperty":171,"./identity":274,"./isArray":276,"./property":297}],167:[function(require,module,exports){ +var isPrototype = require('./_isPrototype'), + nativeKeys = require('./_nativeKeys'); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ +function baseKeys(object) { + if (!isPrototype(object)) { + return nativeKeys(object); + } + var result = []; + for (var key in Object(object)) { + if (hasOwnProperty.call(object, key) && key != 'constructor') { + result.push(key); + } + } + return result; +} + +module.exports = baseKeys; + +},{"./_isPrototype":228,"./_nativeKeys":244}],168:[function(require,module,exports){ +var isObject = require('./isObject'), + isPrototype = require('./_isPrototype'), + nativeKeysIn = require('./_nativeKeysIn'); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ +function baseKeysIn(object) { + if (!isObject(object)) { + return nativeKeysIn(object); + } + var isProto = isPrototype(object), + result = []; + + for (var key in object) { + if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { + result.push(key); + } + } + return result; +} + +module.exports = baseKeysIn; + +},{"./_isPrototype":228,"./_nativeKeysIn":245,"./isObject":283}],169:[function(require,module,exports){ +var baseEach = require('./_baseEach'), + isArrayLike = require('./isArrayLike'); + +/** + * The base implementation of `_.map` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ +function baseMap(collection, iteratee) { + var index = -1, + result = isArrayLike(collection) ? Array(collection.length) : []; + + baseEach(collection, function(value, key, collection) { + result[++index] = iteratee(value, key, collection); + }); + return result; +} + +module.exports = baseMap; + +},{"./_baseEach":151,"./isArrayLike":277}],170:[function(require,module,exports){ +var baseIsMatch = require('./_baseIsMatch'), + getMatchData = require('./_getMatchData'), + matchesStrictComparable = require('./_matchesStrictComparable'); + +/** + * The base implementation of `_.matches` which doesn't clone `source`. + * + * @private + * @param {Object} source The object of property values to match. + * @returns {Function} Returns the new spec function. + */ +function baseMatches(source) { + var matchData = getMatchData(source); + if (matchData.length == 1 && matchData[0][2]) { + return matchesStrictComparable(matchData[0][0], matchData[0][1]); + } + return function(object) { + return object === source || baseIsMatch(object, source, matchData); + }; +} + +module.exports = baseMatches; + +},{"./_baseIsMatch":162,"./_getMatchData":206,"./_matchesStrictComparable":241}],171:[function(require,module,exports){ +var baseIsEqual = require('./_baseIsEqual'), + get = require('./get'), + hasIn = require('./hasIn'), + isKey = require('./_isKey'), + isStrictComparable = require('./_isStrictComparable'), + matchesStrictComparable = require('./_matchesStrictComparable'), + toKey = require('./_toKey'); + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; + +/** + * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`. + * + * @private + * @param {string} path The path of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + */ +function baseMatchesProperty(path, srcValue) { + if (isKey(path) && isStrictComparable(srcValue)) { + return matchesStrictComparable(toKey(path), srcValue); + } + return function(object) { + var objValue = get(object, path); + return (objValue === undefined && objValue === srcValue) + ? hasIn(object, path) + : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG); + }; +} + +module.exports = baseMatchesProperty; + +},{"./_baseIsEqual":159,"./_isKey":225,"./_isStrictComparable":229,"./_matchesStrictComparable":241,"./_toKey":263,"./get":272,"./hasIn":273}],172:[function(require,module,exports){ +var Stack = require('./_Stack'), + assignMergeValue = require('./_assignMergeValue'), + baseFor = require('./_baseFor'), + baseMergeDeep = require('./_baseMergeDeep'), + isObject = require('./isObject'), + keysIn = require('./keysIn'), + safeGet = require('./_safeGet'); + +/** + * The base implementation of `_.merge` without support for multiple sources. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @param {number} srcIndex The index of `source`. + * @param {Function} [customizer] The function to customize merged values. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. + */ +function baseMerge(object, source, srcIndex, customizer, stack) { + if (object === source) { + return; + } + baseFor(source, function(srcValue, key) { + stack || (stack = new Stack); + if (isObject(srcValue)) { + baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); + } + else { + var newValue = customizer + ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack) + : undefined; + + if (newValue === undefined) { + newValue = srcValue; + } + assignMergeValue(object, key, newValue); + } + }, keysIn); +} + +module.exports = baseMerge; + +},{"./_Stack":132,"./_assignMergeValue":143,"./_baseFor":152,"./_baseMergeDeep":173,"./_safeGet":251,"./isObject":283,"./keysIn":292}],173:[function(require,module,exports){ +var assignMergeValue = require('./_assignMergeValue'), + cloneBuffer = require('./_cloneBuffer'), + cloneTypedArray = require('./_cloneTypedArray'), + copyArray = require('./_copyArray'), + initCloneObject = require('./_initCloneObject'), + isArguments = require('./isArguments'), + isArray = require('./isArray'), + isArrayLikeObject = require('./isArrayLikeObject'), + isBuffer = require('./isBuffer'), + isFunction = require('./isFunction'), + isObject = require('./isObject'), + isPlainObject = require('./isPlainObject'), + isTypedArray = require('./isTypedArray'), + safeGet = require('./_safeGet'), + toPlainObject = require('./toPlainObject'); + +/** + * A specialized version of `baseMerge` for arrays and objects which performs + * deep merges and tracks traversed objects enabling objects with circular + * references to be merged. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @param {string} key The key of the value to merge. + * @param {number} srcIndex The index of `source`. + * @param {Function} mergeFunc The function to merge values. + * @param {Function} [customizer] The function to customize assigned values. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. + */ +function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) { + var objValue = safeGet(object, key), + srcValue = safeGet(source, key), + stacked = stack.get(srcValue); + + if (stacked) { + assignMergeValue(object, key, stacked); + return; + } + var newValue = customizer + ? customizer(objValue, srcValue, (key + ''), object, source, stack) + : undefined; + + var isCommon = newValue === undefined; + + if (isCommon) { + var isArr = isArray(srcValue), + isBuff = !isArr && isBuffer(srcValue), + isTyped = !isArr && !isBuff && isTypedArray(srcValue); + + newValue = srcValue; + if (isArr || isBuff || isTyped) { + if (isArray(objValue)) { + newValue = objValue; + } + else if (isArrayLikeObject(objValue)) { + newValue = copyArray(objValue); + } + else if (isBuff) { + isCommon = false; + newValue = cloneBuffer(srcValue, true); + } + else if (isTyped) { + isCommon = false; + newValue = cloneTypedArray(srcValue, true); + } + else { + newValue = []; + } + } + else if (isPlainObject(srcValue) || isArguments(srcValue)) { + newValue = objValue; + if (isArguments(objValue)) { + newValue = toPlainObject(objValue); + } + else if (!isObject(objValue) || isFunction(objValue)) { + newValue = initCloneObject(srcValue); + } + } + else { + isCommon = false; + } + } + if (isCommon) { + // Recursively merge objects and arrays (susceptible to call stack limits). + stack.set(srcValue, newValue); + mergeFunc(newValue, srcValue, srcIndex, customizer, stack); + stack['delete'](srcValue); + } + assignMergeValue(object, key, newValue); +} + +module.exports = baseMergeDeep; + +},{"./_assignMergeValue":143,"./_cloneBuffer":185,"./_cloneTypedArray":189,"./_copyArray":190,"./_initCloneObject":222,"./_safeGet":251,"./isArguments":275,"./isArray":276,"./isArrayLikeObject":278,"./isBuffer":279,"./isFunction":280,"./isObject":283,"./isPlainObject":285,"./isTypedArray":289,"./toPlainObject":302}],174:[function(require,module,exports){ +/** + * The base implementation of `_.property` without support for deep paths. + * + * @private + * @param {string} key The key of the property to get. + * @returns {Function} Returns the new accessor function. + */ +function baseProperty(key) { + return function(object) { + return object == null ? undefined : object[key]; + }; +} + +module.exports = baseProperty; + +},{}],175:[function(require,module,exports){ +var baseGet = require('./_baseGet'); + +/** + * A specialized version of `baseProperty` which supports deep paths. + * + * @private + * @param {Array|string} path The path of the property to get. + * @returns {Function} Returns the new accessor function. + */ +function basePropertyDeep(path) { + return function(object) { + return baseGet(object, path); + }; +} + +module.exports = basePropertyDeep; + +},{"./_baseGet":154}],176:[function(require,module,exports){ +var identity = require('./identity'), + overRest = require('./_overRest'), + setToString = require('./_setToString'); + +/** + * The base implementation of `_.rest` which doesn't validate or coerce arguments. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @returns {Function} Returns the new function. + */ +function baseRest(func, start) { + return setToString(overRest(func, start, identity), func + ''); +} + +module.exports = baseRest; + +},{"./_overRest":249,"./_setToString":255,"./identity":274}],177:[function(require,module,exports){ +var constant = require('./constant'), + defineProperty = require('./_defineProperty'), + identity = require('./identity'); + +/** + * The base implementation of `setToString` without support for hot loop shorting. + * + * @private + * @param {Function} func The function to modify. + * @param {Function} string The `toString` result. + * @returns {Function} Returns `func`. + */ +var baseSetToString = !defineProperty ? identity : function(func, string) { + return defineProperty(func, 'toString', { + 'configurable': true, + 'enumerable': false, + 'value': constant(string), + 'writable': true + }); +}; + +module.exports = baseSetToString; + +},{"./_defineProperty":198,"./constant":266,"./identity":274}],178:[function(require,module,exports){ +/** + * The base implementation of `_.times` without support for iteratee shorthands + * or max array length checks. + * + * @private + * @param {number} n The number of times to invoke `iteratee`. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the array of results. + */ +function baseTimes(n, iteratee) { + var index = -1, + result = Array(n); + + while (++index < n) { + result[index] = iteratee(index); + } + return result; +} + +module.exports = baseTimes; + +},{}],179:[function(require,module,exports){ +var Symbol = require('./_Symbol'), + arrayMap = require('./_arrayMap'), + isArray = require('./isArray'), + isSymbol = require('./isSymbol'); + +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0; + +/** Used to convert symbols to primitives and strings. */ +var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolToString = symbolProto ? symbolProto.toString : undefined; + +/** + * The base implementation of `_.toString` which doesn't convert nullish + * values to empty strings. + * + * @private + * @param {*} value The value to process. + * @returns {string} Returns the string. + */ +function baseToString(value) { + // Exit early for strings to avoid a performance hit in some environments. + if (typeof value == 'string') { + return value; + } + if (isArray(value)) { + // Recursively convert values (susceptible to call stack limits). + return arrayMap(value, baseToString) + ''; + } + if (isSymbol(value)) { + return symbolToString ? symbolToString.call(value) : ''; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; +} + +module.exports = baseToString; + +},{"./_Symbol":133,"./_arrayMap":140,"./isArray":276,"./isSymbol":288}],180:[function(require,module,exports){ +/** + * The base implementation of `_.unary` without support for storing metadata. + * + * @private + * @param {Function} func The function to cap arguments for. + * @returns {Function} Returns the new capped function. + */ +function baseUnary(func) { + return function(value) { + return func(value); + }; +} + +module.exports = baseUnary; + +},{}],181:[function(require,module,exports){ +/** + * Checks if a `cache` value for `key` exists. + * + * @private + * @param {Object} cache The cache to query. + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function cacheHas(cache, key) { + return cache.has(key); +} + +module.exports = cacheHas; + +},{}],182:[function(require,module,exports){ +var identity = require('./identity'); + +/** + * Casts `value` to `identity` if it's not a function. + * + * @private + * @param {*} value The value to inspect. + * @returns {Function} Returns cast function. + */ +function castFunction(value) { + return typeof value == 'function' ? value : identity; +} + +module.exports = castFunction; + +},{"./identity":274}],183:[function(require,module,exports){ +var isArray = require('./isArray'), + isKey = require('./_isKey'), + stringToPath = require('./_stringToPath'), + toString = require('./toString'); + +/** + * Casts `value` to a path array if it's not one. + * + * @private + * @param {*} value The value to inspect. + * @param {Object} [object] The object to query keys on. + * @returns {Array} Returns the cast property path array. + */ +function castPath(value, object) { + if (isArray(value)) { + return value; + } + return isKey(value, object) ? [value] : stringToPath(toString(value)); +} + +module.exports = castPath; + +},{"./_isKey":225,"./_stringToPath":262,"./isArray":276,"./toString":303}],184:[function(require,module,exports){ +var Uint8Array = require('./_Uint8Array'); + +/** + * Creates a clone of `arrayBuffer`. + * + * @private + * @param {ArrayBuffer} arrayBuffer The array buffer to clone. + * @returns {ArrayBuffer} Returns the cloned array buffer. + */ +function cloneArrayBuffer(arrayBuffer) { + var result = new arrayBuffer.constructor(arrayBuffer.byteLength); + new Uint8Array(result).set(new Uint8Array(arrayBuffer)); + return result; +} + +module.exports = cloneArrayBuffer; + +},{"./_Uint8Array":134}],185:[function(require,module,exports){ +var root = require('./_root'); + +/** Detect free variable `exports`. */ +var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; + +/** Detect free variable `module`. */ +var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; + +/** Detect the popular CommonJS extension `module.exports`. */ +var moduleExports = freeModule && freeModule.exports === freeExports; + +/** Built-in value references. */ +var Buffer = moduleExports ? root.Buffer : undefined, + allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined; + +/** + * Creates a clone of `buffer`. + * + * @private + * @param {Buffer} buffer The buffer to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Buffer} Returns the cloned buffer. + */ +function cloneBuffer(buffer, isDeep) { + if (isDeep) { + return buffer.slice(); + } + var length = buffer.length, + result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length); + + buffer.copy(result); + return result; +} + +module.exports = cloneBuffer; + +},{"./_root":250}],186:[function(require,module,exports){ +var cloneArrayBuffer = require('./_cloneArrayBuffer'); + +/** + * Creates a clone of `dataView`. + * + * @private + * @param {Object} dataView The data view to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned data view. + */ +function cloneDataView(dataView, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer; + return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength); +} + +module.exports = cloneDataView; + +},{"./_cloneArrayBuffer":184}],187:[function(require,module,exports){ +/** Used to match `RegExp` flags from their coerced string values. */ +var reFlags = /\w*$/; + +/** + * Creates a clone of `regexp`. + * + * @private + * @param {Object} regexp The regexp to clone. + * @returns {Object} Returns the cloned regexp. + */ +function cloneRegExp(regexp) { + var result = new regexp.constructor(regexp.source, reFlags.exec(regexp)); + result.lastIndex = regexp.lastIndex; + return result; +} + +module.exports = cloneRegExp; + +},{}],188:[function(require,module,exports){ +var Symbol = require('./_Symbol'); + +/** Used to convert symbols to primitives and strings. */ +var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolValueOf = symbolProto ? symbolProto.valueOf : undefined; + +/** + * Creates a clone of the `symbol` object. + * + * @private + * @param {Object} symbol The symbol object to clone. + * @returns {Object} Returns the cloned symbol object. + */ +function cloneSymbol(symbol) { + return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {}; +} + +module.exports = cloneSymbol; + +},{"./_Symbol":133}],189:[function(require,module,exports){ +var cloneArrayBuffer = require('./_cloneArrayBuffer'); + +/** + * Creates a clone of `typedArray`. + * + * @private + * @param {Object} typedArray The typed array to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned typed array. + */ +function cloneTypedArray(typedArray, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; + return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); +} + +module.exports = cloneTypedArray; + +},{"./_cloneArrayBuffer":184}],190:[function(require,module,exports){ +/** + * Copies the values of `source` to `array`. + * + * @private + * @param {Array} source The array to copy values from. + * @param {Array} [array=[]] The array to copy values to. + * @returns {Array} Returns `array`. + */ +function copyArray(source, array) { + var index = -1, + length = source.length; + + array || (array = Array(length)); + while (++index < length) { + array[index] = source[index]; + } + return array; +} + +module.exports = copyArray; + +},{}],191:[function(require,module,exports){ +var assignValue = require('./_assignValue'), + baseAssignValue = require('./_baseAssignValue'); + +/** + * Copies properties of `source` to `object`. + * + * @private + * @param {Object} source The object to copy properties from. + * @param {Array} props The property identifiers to copy. + * @param {Object} [object={}] The object to copy properties to. + * @param {Function} [customizer] The function to customize copied values. + * @returns {Object} Returns `object`. + */ +function copyObject(source, props, object, customizer) { + var isNew = !object; + object || (object = {}); + + var index = -1, + length = props.length; + + while (++index < length) { + var key = props[index]; + + var newValue = customizer + ? customizer(object[key], source[key], key, object, source) + : undefined; + + if (newValue === undefined) { + newValue = source[key]; + } + if (isNew) { + baseAssignValue(object, key, newValue); + } else { + assignValue(object, key, newValue); + } + } + return object; +} + +module.exports = copyObject; + +},{"./_assignValue":144,"./_baseAssignValue":148}],192:[function(require,module,exports){ +var copyObject = require('./_copyObject'), + getSymbols = require('./_getSymbols'); + +/** + * Copies own symbols of `source` to `object`. + * + * @private + * @param {Object} source The object to copy symbols from. + * @param {Object} [object={}] The object to copy symbols to. + * @returns {Object} Returns `object`. + */ +function copySymbols(source, object) { + return copyObject(source, getSymbols(source), object); +} + +module.exports = copySymbols; + +},{"./_copyObject":191,"./_getSymbols":210}],193:[function(require,module,exports){ +var copyObject = require('./_copyObject'), + getSymbolsIn = require('./_getSymbolsIn'); + +/** + * Copies own and inherited symbols of `source` to `object`. + * + * @private + * @param {Object} source The object to copy symbols from. + * @param {Object} [object={}] The object to copy symbols to. + * @returns {Object} Returns `object`. + */ +function copySymbolsIn(source, object) { + return copyObject(source, getSymbolsIn(source), object); +} + +module.exports = copySymbolsIn; + +},{"./_copyObject":191,"./_getSymbolsIn":211}],194:[function(require,module,exports){ +var root = require('./_root'); + +/** Used to detect overreaching core-js shims. */ +var coreJsData = root['__core-js_shared__']; + +module.exports = coreJsData; + +},{"./_root":250}],195:[function(require,module,exports){ +var baseRest = require('./_baseRest'), + isIterateeCall = require('./_isIterateeCall'); + +/** + * Creates a function like `_.assign`. + * + * @private + * @param {Function} assigner The function to assign values. + * @returns {Function} Returns the new assigner function. + */ +function createAssigner(assigner) { + return baseRest(function(object, sources) { + var index = -1, + length = sources.length, + customizer = length > 1 ? sources[length - 1] : undefined, + guard = length > 2 ? sources[2] : undefined; + + customizer = (assigner.length > 3 && typeof customizer == 'function') + ? (length--, customizer) + : undefined; + + if (guard && isIterateeCall(sources[0], sources[1], guard)) { + customizer = length < 3 ? undefined : customizer; + length = 1; + } + object = Object(object); + while (++index < length) { + var source = sources[index]; + if (source) { + assigner(object, source, index, customizer); + } + } + return object; + }); +} + +module.exports = createAssigner; + +},{"./_baseRest":176,"./_isIterateeCall":224}],196:[function(require,module,exports){ +var isArrayLike = require('./isArrayLike'); + +/** + * Creates a `baseEach` or `baseEachRight` function. + * + * @private + * @param {Function} eachFunc The function to iterate over a collection. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ +function createBaseEach(eachFunc, fromRight) { + return function(collection, iteratee) { + if (collection == null) { + return collection; + } + if (!isArrayLike(collection)) { + return eachFunc(collection, iteratee); + } + var length = collection.length, + index = fromRight ? length : -1, + iterable = Object(collection); + + while ((fromRight ? index-- : ++index < length)) { + if (iteratee(iterable[index], index, iterable) === false) { + break; + } + } + return collection; + }; +} + +module.exports = createBaseEach; + +},{"./isArrayLike":277}],197:[function(require,module,exports){ +/** + * Creates a base function for methods like `_.forIn` and `_.forOwn`. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ +function createBaseFor(fromRight) { + return function(object, iteratee, keysFunc) { + var index = -1, + iterable = Object(object), + props = keysFunc(object), + length = props.length; + + while (length--) { + var key = props[fromRight ? length : ++index]; + if (iteratee(iterable[key], key, iterable) === false) { + break; + } + } + return object; + }; +} + +module.exports = createBaseFor; + +},{}],198:[function(require,module,exports){ +var getNative = require('./_getNative'); + +var defineProperty = (function() { + try { + var func = getNative(Object, 'defineProperty'); + func({}, '', {}); + return func; + } catch (e) {} +}()); + +module.exports = defineProperty; + +},{"./_getNative":207}],199:[function(require,module,exports){ +var SetCache = require('./_SetCache'), + arraySome = require('./_arraySome'), + cacheHas = require('./_cacheHas'); + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; + +/** + * A specialized version of `baseIsEqualDeep` for arrays with support for + * partial deep comparisons. + * + * @private + * @param {Array} array The array to compare. + * @param {Array} other The other array to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `array` and `other` objects. + * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. + */ +function equalArrays(array, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG, + arrLength = array.length, + othLength = other.length; + + if (arrLength != othLength && !(isPartial && othLength > arrLength)) { + return false; + } + // Check that cyclic values are equal. + var arrStacked = stack.get(array); + var othStacked = stack.get(other); + if (arrStacked && othStacked) { + return arrStacked == other && othStacked == array; + } + var index = -1, + result = true, + seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined; + + stack.set(array, other); + stack.set(other, array); + + // Ignore non-index properties. + while (++index < arrLength) { + var arrValue = array[index], + othValue = other[index]; + + if (customizer) { + var compared = isPartial + ? customizer(othValue, arrValue, index, other, array, stack) + : customizer(arrValue, othValue, index, array, other, stack); + } + if (compared !== undefined) { + if (compared) { + continue; + } + result = false; + break; + } + // Recursively compare arrays (susceptible to call stack limits). + if (seen) { + if (!arraySome(other, function(othValue, othIndex) { + if (!cacheHas(seen, othIndex) && + (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { + return seen.push(othIndex); + } + })) { + result = false; + break; + } + } else if (!( + arrValue === othValue || + equalFunc(arrValue, othValue, bitmask, customizer, stack) + )) { + result = false; + break; + } + } + stack['delete'](array); + stack['delete'](other); + return result; +} + +module.exports = equalArrays; + +},{"./_SetCache":131,"./_arraySome":142,"./_cacheHas":181}],200:[function(require,module,exports){ +var Symbol = require('./_Symbol'), + Uint8Array = require('./_Uint8Array'), + eq = require('./eq'), + equalArrays = require('./_equalArrays'), + mapToArray = require('./_mapToArray'), + setToArray = require('./_setToArray'); + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; + +/** `Object#toString` result references. */ +var boolTag = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + mapTag = '[object Map]', + numberTag = '[object Number]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + symbolTag = '[object Symbol]'; + +var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]'; + +/** Used to convert symbols to primitives and strings. */ +var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolValueOf = symbolProto ? symbolProto.valueOf : undefined; + +/** + * A specialized version of `baseIsEqualDeep` for comparing objects of + * the same `toStringTag`. + * + * **Note:** This function only supports comparing values with tags of + * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {string} tag The `toStringTag` of the objects to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ +function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) { + switch (tag) { + case dataViewTag: + if ((object.byteLength != other.byteLength) || + (object.byteOffset != other.byteOffset)) { + return false; + } + object = object.buffer; + other = other.buffer; + + case arrayBufferTag: + if ((object.byteLength != other.byteLength) || + !equalFunc(new Uint8Array(object), new Uint8Array(other))) { + return false; + } + return true; + + case boolTag: + case dateTag: + case numberTag: + // Coerce booleans to `1` or `0` and dates to milliseconds. + // Invalid dates are coerced to `NaN`. + return eq(+object, +other); + + case errorTag: + return object.name == other.name && object.message == other.message; + + case regexpTag: + case stringTag: + // Coerce regexes to strings and treat strings, primitives and objects, + // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring + // for more details. + return object == (other + ''); + + case mapTag: + var convert = mapToArray; + + case setTag: + var isPartial = bitmask & COMPARE_PARTIAL_FLAG; + convert || (convert = setToArray); + + if (object.size != other.size && !isPartial) { + return false; + } + // Assume cyclic values are equal. + var stacked = stack.get(object); + if (stacked) { + return stacked == other; + } + bitmask |= COMPARE_UNORDERED_FLAG; + + // Recursively compare objects (susceptible to call stack limits). + stack.set(object, other); + var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack); + stack['delete'](object); + return result; + + case symbolTag: + if (symbolValueOf) { + return symbolValueOf.call(object) == symbolValueOf.call(other); + } + } + return false; +} + +module.exports = equalByTag; + +},{"./_Symbol":133,"./_Uint8Array":134,"./_equalArrays":199,"./_mapToArray":240,"./_setToArray":254,"./eq":269}],201:[function(require,module,exports){ +var getAllKeys = require('./_getAllKeys'); + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * A specialized version of `baseIsEqualDeep` for objects with support for + * partial deep comparisons. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ +function equalObjects(object, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG, + objProps = getAllKeys(object), + objLength = objProps.length, + othProps = getAllKeys(other), + othLength = othProps.length; + + if (objLength != othLength && !isPartial) { + return false; + } + var index = objLength; + while (index--) { + var key = objProps[index]; + if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) { + return false; + } + } + // Check that cyclic values are equal. + var objStacked = stack.get(object); + var othStacked = stack.get(other); + if (objStacked && othStacked) { + return objStacked == other && othStacked == object; + } + var result = true; + stack.set(object, other); + stack.set(other, object); + + var skipCtor = isPartial; + while (++index < objLength) { + key = objProps[index]; + var objValue = object[key], + othValue = other[key]; + + if (customizer) { + var compared = isPartial + ? customizer(othValue, objValue, key, other, object, stack) + : customizer(objValue, othValue, key, object, other, stack); + } + // Recursively compare objects (susceptible to call stack limits). + if (!(compared === undefined + ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack)) + : compared + )) { + result = false; + break; + } + skipCtor || (skipCtor = key == 'constructor'); + } + if (result && !skipCtor) { + var objCtor = object.constructor, + othCtor = other.constructor; + + // Non `Object` object instances with different constructors are not equal. + if (objCtor != othCtor && + ('constructor' in object && 'constructor' in other) && + !(typeof objCtor == 'function' && objCtor instanceof objCtor && + typeof othCtor == 'function' && othCtor instanceof othCtor)) { + result = false; + } + } + stack['delete'](object); + stack['delete'](other); + return result; +} + +module.exports = equalObjects; + +},{"./_getAllKeys":203}],202:[function(require,module,exports){ +(function (global){ +/** Detect free variable `global` from Node.js. */ +var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; + +module.exports = freeGlobal; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) + +},{}],203:[function(require,module,exports){ +var baseGetAllKeys = require('./_baseGetAllKeys'), + getSymbols = require('./_getSymbols'), + keys = require('./keys'); + +/** + * Creates an array of own enumerable property names and symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names and symbols. + */ +function getAllKeys(object) { + return baseGetAllKeys(object, keys, getSymbols); +} + +module.exports = getAllKeys; + +},{"./_baseGetAllKeys":155,"./_getSymbols":210,"./keys":291}],204:[function(require,module,exports){ +var baseGetAllKeys = require('./_baseGetAllKeys'), + getSymbolsIn = require('./_getSymbolsIn'), + keysIn = require('./keysIn'); + +/** + * Creates an array of own and inherited enumerable property names and + * symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names and symbols. + */ +function getAllKeysIn(object) { + return baseGetAllKeys(object, keysIn, getSymbolsIn); +} + +module.exports = getAllKeysIn; + +},{"./_baseGetAllKeys":155,"./_getSymbolsIn":211,"./keysIn":292}],205:[function(require,module,exports){ +var isKeyable = require('./_isKeyable'); + +/** + * Gets the data for `map`. + * + * @private + * @param {Object} map The map to query. + * @param {string} key The reference key. + * @returns {*} Returns the map data. + */ +function getMapData(map, key) { + var data = map.__data__; + return isKeyable(key) + ? data[typeof key == 'string' ? 'string' : 'hash'] + : data.map; +} + +module.exports = getMapData; + +},{"./_isKeyable":226}],206:[function(require,module,exports){ +var isStrictComparable = require('./_isStrictComparable'), + keys = require('./keys'); + +/** + * Gets the property names, values, and compare flags of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the match data of `object`. + */ +function getMatchData(object) { + var result = keys(object), + length = result.length; + + while (length--) { + var key = result[length], + value = object[key]; + + result[length] = [key, value, isStrictComparable(value)]; + } + return result; +} + +module.exports = getMatchData; + +},{"./_isStrictComparable":229,"./keys":291}],207:[function(require,module,exports){ +var baseIsNative = require('./_baseIsNative'), + getValue = require('./_getValue'); + +/** + * Gets the native function at `key` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the method to get. + * @returns {*} Returns the function if it's native, else `undefined`. + */ +function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : undefined; +} + +module.exports = getNative; + +},{"./_baseIsNative":163,"./_getValue":213}],208:[function(require,module,exports){ +var overArg = require('./_overArg'); + +/** Built-in value references. */ +var getPrototype = overArg(Object.getPrototypeOf, Object); + +module.exports = getPrototype; + +},{"./_overArg":248}],209:[function(require,module,exports){ +var Symbol = require('./_Symbol'); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var nativeObjectToString = objectProto.toString; + +/** Built-in value references. */ +var symToStringTag = Symbol ? Symbol.toStringTag : undefined; + +/** + * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the raw `toStringTag`. + */ +function getRawTag(value) { + var isOwn = hasOwnProperty.call(value, symToStringTag), + tag = value[symToStringTag]; + + try { + value[symToStringTag] = undefined; + var unmasked = true; + } catch (e) {} + + var result = nativeObjectToString.call(value); + if (unmasked) { + if (isOwn) { + value[symToStringTag] = tag; + } else { + delete value[symToStringTag]; + } + } + return result; +} + +module.exports = getRawTag; + +},{"./_Symbol":133}],210:[function(require,module,exports){ +var arrayFilter = require('./_arrayFilter'), + stubArray = require('./stubArray'); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Built-in value references. */ +var propertyIsEnumerable = objectProto.propertyIsEnumerable; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeGetSymbols = Object.getOwnPropertySymbols; + +/** + * Creates an array of the own enumerable symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of symbols. + */ +var getSymbols = !nativeGetSymbols ? stubArray : function(object) { + if (object == null) { + return []; + } + object = Object(object); + return arrayFilter(nativeGetSymbols(object), function(symbol) { + return propertyIsEnumerable.call(object, symbol); + }); +}; + +module.exports = getSymbols; + +},{"./_arrayFilter":138,"./stubArray":298}],211:[function(require,module,exports){ +var arrayPush = require('./_arrayPush'), + getPrototype = require('./_getPrototype'), + getSymbols = require('./_getSymbols'), + stubArray = require('./stubArray'); + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeGetSymbols = Object.getOwnPropertySymbols; + +/** + * Creates an array of the own and inherited enumerable symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of symbols. + */ +var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) { + var result = []; + while (object) { + arrayPush(result, getSymbols(object)); + object = getPrototype(object); + } + return result; +}; + +module.exports = getSymbolsIn; + +},{"./_arrayPush":141,"./_getPrototype":208,"./_getSymbols":210,"./stubArray":298}],212:[function(require,module,exports){ +var DataView = require('./_DataView'), + Map = require('./_Map'), + Promise = require('./_Promise'), + Set = require('./_Set'), + WeakMap = require('./_WeakMap'), + baseGetTag = require('./_baseGetTag'), + toSource = require('./_toSource'); + +/** `Object#toString` result references. */ +var mapTag = '[object Map]', + objectTag = '[object Object]', + promiseTag = '[object Promise]', + setTag = '[object Set]', + weakMapTag = '[object WeakMap]'; + +var dataViewTag = '[object DataView]'; + +/** Used to detect maps, sets, and weakmaps. */ +var dataViewCtorString = toSource(DataView), + mapCtorString = toSource(Map), + promiseCtorString = toSource(Promise), + setCtorString = toSource(Set), + weakMapCtorString = toSource(WeakMap); + +/** + * Gets the `toStringTag` of `value`. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ +var getTag = baseGetTag; + +// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6. +if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) || + (Map && getTag(new Map) != mapTag) || + (Promise && getTag(Promise.resolve()) != promiseTag) || + (Set && getTag(new Set) != setTag) || + (WeakMap && getTag(new WeakMap) != weakMapTag)) { + getTag = function(value) { + var result = baseGetTag(value), + Ctor = result == objectTag ? value.constructor : undefined, + ctorString = Ctor ? toSource(Ctor) : ''; + + if (ctorString) { + switch (ctorString) { + case dataViewCtorString: return dataViewTag; + case mapCtorString: return mapTag; + case promiseCtorString: return promiseTag; + case setCtorString: return setTag; + case weakMapCtorString: return weakMapTag; + } + } + return result; + }; +} + +module.exports = getTag; + +},{"./_DataView":124,"./_Map":127,"./_Promise":129,"./_Set":130,"./_WeakMap":135,"./_baseGetTag":156,"./_toSource":264}],213:[function(require,module,exports){ +/** + * Gets the value at `key` of `object`. + * + * @private + * @param {Object} [object] The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ +function getValue(object, key) { + return object == null ? undefined : object[key]; +} + +module.exports = getValue; + +},{}],214:[function(require,module,exports){ +var castPath = require('./_castPath'), + isArguments = require('./isArguments'), + isArray = require('./isArray'), + isIndex = require('./_isIndex'), + isLength = require('./isLength'), + toKey = require('./_toKey'); + +/** + * Checks if `path` exists on `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @param {Function} hasFunc The function to check properties. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + */ +function hasPath(object, path, hasFunc) { + path = castPath(path, object); + + var index = -1, + length = path.length, + result = false; + + while (++index < length) { + var key = toKey(path[index]); + if (!(result = object != null && hasFunc(object, key))) { + break; + } + object = object[key]; + } + if (result || ++index != length) { + return result; + } + length = object == null ? 0 : object.length; + return !!length && isLength(length) && isIndex(key, length) && + (isArray(object) || isArguments(object)); +} + +module.exports = hasPath; + +},{"./_castPath":183,"./_isIndex":223,"./_toKey":263,"./isArguments":275,"./isArray":276,"./isLength":281}],215:[function(require,module,exports){ +var nativeCreate = require('./_nativeCreate'); + +/** + * Removes all key-value entries from the hash. + * + * @private + * @name clear + * @memberOf Hash + */ +function hashClear() { + this.__data__ = nativeCreate ? nativeCreate(null) : {}; + this.size = 0; +} + +module.exports = hashClear; + +},{"./_nativeCreate":243}],216:[function(require,module,exports){ +/** + * Removes `key` and its value from the hash. + * + * @private + * @name delete + * @memberOf Hash + * @param {Object} hash The hash to modify. + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function hashDelete(key) { + var result = this.has(key) && delete this.__data__[key]; + this.size -= result ? 1 : 0; + return result; +} + +module.exports = hashDelete; + +},{}],217:[function(require,module,exports){ +var nativeCreate = require('./_nativeCreate'); + +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED = '__lodash_hash_undefined__'; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Gets the hash value for `key`. + * + * @private + * @name get + * @memberOf Hash + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function hashGet(key) { + var data = this.__data__; + if (nativeCreate) { + var result = data[key]; + return result === HASH_UNDEFINED ? undefined : result; + } + return hasOwnProperty.call(data, key) ? data[key] : undefined; +} + +module.exports = hashGet; + +},{"./_nativeCreate":243}],218:[function(require,module,exports){ +var nativeCreate = require('./_nativeCreate'); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Checks if a hash value for `key` exists. + * + * @private + * @name has + * @memberOf Hash + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function hashHas(key) { + var data = this.__data__; + return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key); +} + +module.exports = hashHas; + +},{"./_nativeCreate":243}],219:[function(require,module,exports){ +var nativeCreate = require('./_nativeCreate'); + +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED = '__lodash_hash_undefined__'; + +/** + * Sets the hash `key` to `value`. + * + * @private + * @name set + * @memberOf Hash + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the hash instance. + */ +function hashSet(key, value) { + var data = this.__data__; + this.size += this.has(key) ? 0 : 1; + data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; + return this; +} + +module.exports = hashSet; + +},{"./_nativeCreate":243}],220:[function(require,module,exports){ +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Initializes an array clone. + * + * @private + * @param {Array} array The array to clone. + * @returns {Array} Returns the initialized clone. + */ +function initCloneArray(array) { + var length = array.length, + result = new array.constructor(length); + + // Add properties assigned by `RegExp#exec`. + if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) { + result.index = array.index; + result.input = array.input; + } + return result; +} + +module.exports = initCloneArray; + +},{}],221:[function(require,module,exports){ +var cloneArrayBuffer = require('./_cloneArrayBuffer'), + cloneDataView = require('./_cloneDataView'), + cloneRegExp = require('./_cloneRegExp'), + cloneSymbol = require('./_cloneSymbol'), + cloneTypedArray = require('./_cloneTypedArray'); + +/** `Object#toString` result references. */ +var boolTag = '[object Boolean]', + dateTag = '[object Date]', + mapTag = '[object Map]', + numberTag = '[object Number]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + symbolTag = '[object Symbol]'; + +var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; + +/** + * Initializes an object clone based on its `toStringTag`. + * + * **Note:** This function only supports cloning values with tags of + * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`. + * + * @private + * @param {Object} object The object to clone. + * @param {string} tag The `toStringTag` of the object to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the initialized clone. + */ +function initCloneByTag(object, tag, isDeep) { + var Ctor = object.constructor; + switch (tag) { + case arrayBufferTag: + return cloneArrayBuffer(object); + + case boolTag: + case dateTag: + return new Ctor(+object); + + case dataViewTag: + return cloneDataView(object, isDeep); + + case float32Tag: case float64Tag: + case int8Tag: case int16Tag: case int32Tag: + case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag: + return cloneTypedArray(object, isDeep); + + case mapTag: + return new Ctor; + + case numberTag: + case stringTag: + return new Ctor(object); + + case regexpTag: + return cloneRegExp(object); + + case setTag: + return new Ctor; + + case symbolTag: + return cloneSymbol(object); + } +} + +module.exports = initCloneByTag; + +},{"./_cloneArrayBuffer":184,"./_cloneDataView":186,"./_cloneRegExp":187,"./_cloneSymbol":188,"./_cloneTypedArray":189}],222:[function(require,module,exports){ +var baseCreate = require('./_baseCreate'), + getPrototype = require('./_getPrototype'), + isPrototype = require('./_isPrototype'); + +/** + * Initializes an object clone. + * + * @private + * @param {Object} object The object to clone. + * @returns {Object} Returns the initialized clone. + */ +function initCloneObject(object) { + return (typeof object.constructor == 'function' && !isPrototype(object)) + ? baseCreate(getPrototype(object)) + : {}; +} + +module.exports = initCloneObject; + +},{"./_baseCreate":150,"./_getPrototype":208,"./_isPrototype":228}],223:[function(require,module,exports){ +/** Used as references for various `Number` constants. */ +var MAX_SAFE_INTEGER = 9007199254740991; + +/** Used to detect unsigned integer values. */ +var reIsUint = /^(?:0|[1-9]\d*)$/; + +/** + * Checks if `value` is a valid array-like index. + * + * @private + * @param {*} value The value to check. + * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. + * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. + */ +function isIndex(value, length) { + var type = typeof value; + length = length == null ? MAX_SAFE_INTEGER : length; + + return !!length && + (type == 'number' || + (type != 'symbol' && reIsUint.test(value))) && + (value > -1 && value % 1 == 0 && value < length); +} + +module.exports = isIndex; + +},{}],224:[function(require,module,exports){ +var eq = require('./eq'), + isArrayLike = require('./isArrayLike'), + isIndex = require('./_isIndex'), + isObject = require('./isObject'); + +/** + * Checks if the given arguments are from an iteratee call. + * + * @private + * @param {*} value The potential iteratee value argument. + * @param {*} index The potential iteratee index or key argument. + * @param {*} object The potential iteratee object argument. + * @returns {boolean} Returns `true` if the arguments are from an iteratee call, + * else `false`. + */ +function isIterateeCall(value, index, object) { + if (!isObject(object)) { + return false; + } + var type = typeof index; + if (type == 'number' + ? (isArrayLike(object) && isIndex(index, object.length)) + : (type == 'string' && index in object) + ) { + return eq(object[index], value); + } + return false; +} + +module.exports = isIterateeCall; + +},{"./_isIndex":223,"./eq":269,"./isArrayLike":277,"./isObject":283}],225:[function(require,module,exports){ +var isArray = require('./isArray'), + isSymbol = require('./isSymbol'); + +/** Used to match property names within property paths. */ +var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, + reIsPlainProp = /^\w*$/; + +/** + * Checks if `value` is a property name and not a property path. + * + * @private + * @param {*} value The value to check. + * @param {Object} [object] The object to query keys on. + * @returns {boolean} Returns `true` if `value` is a property name, else `false`. + */ +function isKey(value, object) { + if (isArray(value)) { + return false; + } + var type = typeof value; + if (type == 'number' || type == 'symbol' || type == 'boolean' || + value == null || isSymbol(value)) { + return true; + } + return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || + (object != null && value in Object(object)); +} + +module.exports = isKey; + +},{"./isArray":276,"./isSymbol":288}],226:[function(require,module,exports){ +/** + * Checks if `value` is suitable for use as unique object key. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is suitable, else `false`. + */ +function isKeyable(value) { + var type = typeof value; + return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') + ? (value !== '__proto__') + : (value === null); +} + +module.exports = isKeyable; + +},{}],227:[function(require,module,exports){ +var coreJsData = require('./_coreJsData'); + +/** Used to detect methods masquerading as native. */ +var maskSrcKey = (function() { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); + return uid ? ('Symbol(src)_1.' + uid) : ''; +}()); + +/** + * Checks if `func` has its source masked. + * + * @private + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` is masked, else `false`. + */ +function isMasked(func) { + return !!maskSrcKey && (maskSrcKey in func); +} + +module.exports = isMasked; + +},{"./_coreJsData":194}],228:[function(require,module,exports){ +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** + * Checks if `value` is likely a prototype object. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. + */ +function isPrototype(value) { + var Ctor = value && value.constructor, + proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; + + return value === proto; +} + +module.exports = isPrototype; + +},{}],229:[function(require,module,exports){ +var isObject = require('./isObject'); + +/** + * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` if suitable for strict + * equality comparisons, else `false`. + */ +function isStrictComparable(value) { + return value === value && !isObject(value); +} + +module.exports = isStrictComparable; + +},{"./isObject":283}],230:[function(require,module,exports){ +/** + * Removes all key-value entries from the list cache. + * + * @private + * @name clear + * @memberOf ListCache + */ +function listCacheClear() { + this.__data__ = []; + this.size = 0; +} + +module.exports = listCacheClear; + +},{}],231:[function(require,module,exports){ +var assocIndexOf = require('./_assocIndexOf'); + +/** Used for built-in method references. */ +var arrayProto = Array.prototype; + +/** Built-in value references. */ +var splice = arrayProto.splice; + +/** + * Removes `key` and its value from the list cache. + * + * @private + * @name delete + * @memberOf ListCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function listCacheDelete(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + return false; + } + var lastIndex = data.length - 1; + if (index == lastIndex) { + data.pop(); + } else { + splice.call(data, index, 1); + } + --this.size; + return true; +} + +module.exports = listCacheDelete; + +},{"./_assocIndexOf":145}],232:[function(require,module,exports){ +var assocIndexOf = require('./_assocIndexOf'); + +/** + * Gets the list cache value for `key`. + * + * @private + * @name get + * @memberOf ListCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function listCacheGet(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + return index < 0 ? undefined : data[index][1]; +} + +module.exports = listCacheGet; + +},{"./_assocIndexOf":145}],233:[function(require,module,exports){ +var assocIndexOf = require('./_assocIndexOf'); + +/** + * Checks if a list cache value for `key` exists. + * + * @private + * @name has + * @memberOf ListCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function listCacheHas(key) { + return assocIndexOf(this.__data__, key) > -1; +} + +module.exports = listCacheHas; + +},{"./_assocIndexOf":145}],234:[function(require,module,exports){ +var assocIndexOf = require('./_assocIndexOf'); + +/** + * Sets the list cache `key` to `value`. + * + * @private + * @name set + * @memberOf ListCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the list cache instance. + */ +function listCacheSet(key, value) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + ++this.size; + data.push([key, value]); + } else { + data[index][1] = value; + } + return this; +} + +module.exports = listCacheSet; + +},{"./_assocIndexOf":145}],235:[function(require,module,exports){ +var Hash = require('./_Hash'), + ListCache = require('./_ListCache'), + Map = require('./_Map'); + +/** + * Removes all key-value entries from the map. + * + * @private + * @name clear + * @memberOf MapCache + */ +function mapCacheClear() { + this.size = 0; + this.__data__ = { + 'hash': new Hash, + 'map': new (Map || ListCache), + 'string': new Hash + }; +} + +module.exports = mapCacheClear; + +},{"./_Hash":125,"./_ListCache":126,"./_Map":127}],236:[function(require,module,exports){ +var getMapData = require('./_getMapData'); + +/** + * Removes `key` and its value from the map. + * + * @private + * @name delete + * @memberOf MapCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function mapCacheDelete(key) { + var result = getMapData(this, key)['delete'](key); + this.size -= result ? 1 : 0; + return result; +} + +module.exports = mapCacheDelete; + +},{"./_getMapData":205}],237:[function(require,module,exports){ +var getMapData = require('./_getMapData'); + +/** + * Gets the map value for `key`. + * + * @private + * @name get + * @memberOf MapCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function mapCacheGet(key) { + return getMapData(this, key).get(key); +} + +module.exports = mapCacheGet; + +},{"./_getMapData":205}],238:[function(require,module,exports){ +var getMapData = require('./_getMapData'); + +/** + * Checks if a map value for `key` exists. + * + * @private + * @name has + * @memberOf MapCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function mapCacheHas(key) { + return getMapData(this, key).has(key); +} + +module.exports = mapCacheHas; + +},{"./_getMapData":205}],239:[function(require,module,exports){ +var getMapData = require('./_getMapData'); + +/** + * Sets the map `key` to `value`. + * + * @private + * @name set + * @memberOf MapCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the map cache instance. + */ +function mapCacheSet(key, value) { + var data = getMapData(this, key), + size = data.size; + + data.set(key, value); + this.size += data.size == size ? 0 : 1; + return this; +} + +module.exports = mapCacheSet; + +},{"./_getMapData":205}],240:[function(require,module,exports){ +/** + * Converts `map` to its key-value pairs. + * + * @private + * @param {Object} map The map to convert. + * @returns {Array} Returns the key-value pairs. + */ +function mapToArray(map) { + var index = -1, + result = Array(map.size); + + map.forEach(function(value, key) { + result[++index] = [key, value]; + }); + return result; +} + +module.exports = mapToArray; + +},{}],241:[function(require,module,exports){ +/** + * A specialized version of `matchesProperty` for source values suitable + * for strict equality comparisons, i.e. `===`. + * + * @private + * @param {string} key The key of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + */ +function matchesStrictComparable(key, srcValue) { + return function(object) { + if (object == null) { + return false; + } + return object[key] === srcValue && + (srcValue !== undefined || (key in Object(object))); + }; +} + +module.exports = matchesStrictComparable; + +},{}],242:[function(require,module,exports){ +var memoize = require('./memoize'); + +/** Used as the maximum memoize cache size. */ +var MAX_MEMOIZE_SIZE = 500; + +/** + * A specialized version of `_.memoize` which clears the memoized function's + * cache when it exceeds `MAX_MEMOIZE_SIZE`. + * + * @private + * @param {Function} func The function to have its output memoized. + * @returns {Function} Returns the new memoized function. + */ +function memoizeCapped(func) { + var result = memoize(func, function(key) { + if (cache.size === MAX_MEMOIZE_SIZE) { + cache.clear(); + } + return key; + }); + + var cache = result.cache; + return result; +} + +module.exports = memoizeCapped; + +},{"./memoize":294}],243:[function(require,module,exports){ +var getNative = require('./_getNative'); + +/* Built-in method references that are verified to be native. */ +var nativeCreate = getNative(Object, 'create'); + +module.exports = nativeCreate; + +},{"./_getNative":207}],244:[function(require,module,exports){ +var overArg = require('./_overArg'); + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeKeys = overArg(Object.keys, Object); + +module.exports = nativeKeys; + +},{"./_overArg":248}],245:[function(require,module,exports){ +/** + * This function is like + * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * except that it includes inherited enumerable properties. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ +function nativeKeysIn(object) { + var result = []; + if (object != null) { + for (var key in Object(object)) { + result.push(key); + } + } + return result; +} + +module.exports = nativeKeysIn; + +},{}],246:[function(require,module,exports){ +var freeGlobal = require('./_freeGlobal'); + +/** Detect free variable `exports`. */ +var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; + +/** Detect free variable `module`. */ +var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; + +/** Detect the popular CommonJS extension `module.exports`. */ +var moduleExports = freeModule && freeModule.exports === freeExports; + +/** Detect free variable `process` from Node.js. */ +var freeProcess = moduleExports && freeGlobal.process; + +/** Used to access faster Node.js helpers. */ +var nodeUtil = (function() { + try { + // Use `util.types` for Node.js 10+. + var types = freeModule && freeModule.require && freeModule.require('util').types; + + if (types) { + return types; + } + + // Legacy `process.binding('util')` for Node.js < 10. + return freeProcess && freeProcess.binding && freeProcess.binding('util'); + } catch (e) {} +}()); + +module.exports = nodeUtil; + +},{"./_freeGlobal":202}],247:[function(require,module,exports){ +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var nativeObjectToString = objectProto.toString; + +/** + * Converts `value` to a string using `Object.prototype.toString`. + * + * @private + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + */ +function objectToString(value) { + return nativeObjectToString.call(value); +} + +module.exports = objectToString; + +},{}],248:[function(require,module,exports){ +/** + * Creates a unary function that invokes `func` with its argument transformed. + * + * @private + * @param {Function} func The function to wrap. + * @param {Function} transform The argument transform. + * @returns {Function} Returns the new function. + */ +function overArg(func, transform) { + return function(arg) { + return func(transform(arg)); + }; +} + +module.exports = overArg; + +},{}],249:[function(require,module,exports){ +var apply = require('./_apply'); + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMax = Math.max; + +/** + * A specialized version of `baseRest` which transforms the rest array. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @param {Function} transform The rest array transform. + * @returns {Function} Returns the new function. + */ +function overRest(func, start, transform) { + start = nativeMax(start === undefined ? (func.length - 1) : start, 0); + return function() { + var args = arguments, + index = -1, + length = nativeMax(args.length - start, 0), + array = Array(length); + + while (++index < length) { + array[index] = args[start + index]; + } + index = -1; + var otherArgs = Array(start + 1); + while (++index < start) { + otherArgs[index] = args[index]; + } + otherArgs[start] = transform(array); + return apply(func, this, otherArgs); + }; +} + +module.exports = overRest; + +},{"./_apply":136}],250:[function(require,module,exports){ +var freeGlobal = require('./_freeGlobal'); + +/** Detect free variable `self`. */ +var freeSelf = typeof self == 'object' && self && self.Object === Object && self; + +/** Used as a reference to the global object. */ +var root = freeGlobal || freeSelf || Function('return this')(); + +module.exports = root; + +},{"./_freeGlobal":202}],251:[function(require,module,exports){ +/** + * Gets the value at `key`, unless `key` is "__proto__" or "constructor". + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ +function safeGet(object, key) { + if (key === 'constructor' && typeof object[key] === 'function') { + return; + } + + if (key == '__proto__') { + return; + } + + return object[key]; +} + +module.exports = safeGet; + +},{}],252:[function(require,module,exports){ +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED = '__lodash_hash_undefined__'; + +/** + * Adds `value` to the array cache. + * + * @private + * @name add + * @memberOf SetCache + * @alias push + * @param {*} value The value to cache. + * @returns {Object} Returns the cache instance. + */ +function setCacheAdd(value) { + this.__data__.set(value, HASH_UNDEFINED); + return this; +} + +module.exports = setCacheAdd; + +},{}],253:[function(require,module,exports){ +/** + * Checks if `value` is in the array cache. + * + * @private + * @name has + * @memberOf SetCache + * @param {*} value The value to search for. + * @returns {number} Returns `true` if `value` is found, else `false`. + */ +function setCacheHas(value) { + return this.__data__.has(value); +} + +module.exports = setCacheHas; + +},{}],254:[function(require,module,exports){ +/** + * Converts `set` to an array of its values. + * + * @private + * @param {Object} set The set to convert. + * @returns {Array} Returns the values. + */ +function setToArray(set) { + var index = -1, + result = Array(set.size); + + set.forEach(function(value) { + result[++index] = value; + }); + return result; +} + +module.exports = setToArray; + +},{}],255:[function(require,module,exports){ +var baseSetToString = require('./_baseSetToString'), + shortOut = require('./_shortOut'); + +/** + * Sets the `toString` method of `func` to return `string`. + * + * @private + * @param {Function} func The function to modify. + * @param {Function} string The `toString` result. + * @returns {Function} Returns `func`. + */ +var setToString = shortOut(baseSetToString); + +module.exports = setToString; + +},{"./_baseSetToString":177,"./_shortOut":256}],256:[function(require,module,exports){ +/** Used to detect hot functions by number of calls within a span of milliseconds. */ +var HOT_COUNT = 800, + HOT_SPAN = 16; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeNow = Date.now; + +/** + * Creates a function that'll short out and invoke `identity` instead + * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN` + * milliseconds. + * + * @private + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new shortable function. + */ +function shortOut(func) { + var count = 0, + lastCalled = 0; + + return function() { + var stamp = nativeNow(), + remaining = HOT_SPAN - (stamp - lastCalled); + + lastCalled = stamp; + if (remaining > 0) { + if (++count >= HOT_COUNT) { + return arguments[0]; + } + } else { + count = 0; + } + return func.apply(undefined, arguments); + }; +} + +module.exports = shortOut; + +},{}],257:[function(require,module,exports){ +var ListCache = require('./_ListCache'); + +/** + * Removes all key-value entries from the stack. + * + * @private + * @name clear + * @memberOf Stack + */ +function stackClear() { + this.__data__ = new ListCache; + this.size = 0; +} + +module.exports = stackClear; + +},{"./_ListCache":126}],258:[function(require,module,exports){ +/** + * Removes `key` and its value from the stack. + * + * @private + * @name delete + * @memberOf Stack + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function stackDelete(key) { + var data = this.__data__, + result = data['delete'](key); + + this.size = data.size; + return result; +} + +module.exports = stackDelete; + +},{}],259:[function(require,module,exports){ +/** + * Gets the stack value for `key`. + * + * @private + * @name get + * @memberOf Stack + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function stackGet(key) { + return this.__data__.get(key); +} + +module.exports = stackGet; + +},{}],260:[function(require,module,exports){ +/** + * Checks if a stack value for `key` exists. + * + * @private + * @name has + * @memberOf Stack + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function stackHas(key) { + return this.__data__.has(key); +} + +module.exports = stackHas; + +},{}],261:[function(require,module,exports){ +var ListCache = require('./_ListCache'), + Map = require('./_Map'), + MapCache = require('./_MapCache'); + +/** Used as the size to enable large array optimizations. */ +var LARGE_ARRAY_SIZE = 200; + +/** + * Sets the stack `key` to `value`. + * + * @private + * @name set + * @memberOf Stack + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the stack cache instance. + */ +function stackSet(key, value) { + var data = this.__data__; + if (data instanceof ListCache) { + var pairs = data.__data__; + if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) { + pairs.push([key, value]); + this.size = ++data.size; + return this; + } + data = this.__data__ = new MapCache(pairs); + } + data.set(key, value); + this.size = data.size; + return this; +} + +module.exports = stackSet; + +},{"./_ListCache":126,"./_Map":127,"./_MapCache":128}],262:[function(require,module,exports){ +var memoizeCapped = require('./_memoizeCapped'); + +/** Used to match property names within property paths. */ +var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; + +/** Used to match backslashes in property paths. */ +var reEscapeChar = /\\(\\)?/g; + +/** + * Converts `string` to a property path array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the property path array. + */ +var stringToPath = memoizeCapped(function(string) { + var result = []; + if (string.charCodeAt(0) === 46 /* . */) { + result.push(''); + } + string.replace(rePropName, function(match, number, quote, subString) { + result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match)); + }); + return result; +}); + +module.exports = stringToPath; + +},{"./_memoizeCapped":242}],263:[function(require,module,exports){ +var isSymbol = require('./isSymbol'); + +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0; + +/** + * Converts `value` to a string key if it's not a string or symbol. + * + * @private + * @param {*} value The value to inspect. + * @returns {string|symbol} Returns the key. + */ +function toKey(value) { + if (typeof value == 'string' || isSymbol(value)) { + return value; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; +} + +module.exports = toKey; + +},{"./isSymbol":288}],264:[function(require,module,exports){ +/** Used for built-in method references. */ +var funcProto = Function.prototype; + +/** Used to resolve the decompiled source of functions. */ +var funcToString = funcProto.toString; + +/** + * Converts `func` to its source code. + * + * @private + * @param {Function} func The function to convert. + * @returns {string} Returns the source code. + */ +function toSource(func) { + if (func != null) { + try { + return funcToString.call(func); + } catch (e) {} + try { + return (func + ''); + } catch (e) {} + } + return ''; +} + +module.exports = toSource; + +},{}],265:[function(require,module,exports){ +var baseClone = require('./_baseClone'); + +/** Used to compose bitmasks for cloning. */ +var CLONE_DEEP_FLAG = 1, + CLONE_SYMBOLS_FLAG = 4; + +/** + * This method is like `_.clone` except that it recursively clones `value`. + * + * @static + * @memberOf _ + * @since 1.0.0 + * @category Lang + * @param {*} value The value to recursively clone. + * @returns {*} Returns the deep cloned value. + * @see _.clone + * @example + * + * var objects = [{ 'a': 1 }, { 'b': 2 }]; + * + * var deep = _.cloneDeep(objects); + * console.log(deep[0] === objects[0]); + * // => false + */ +function cloneDeep(value) { + return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG); +} + +module.exports = cloneDeep; + +},{"./_baseClone":149}],266:[function(require,module,exports){ +/** + * Creates a function that returns `value`. + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Util + * @param {*} value The value to return from the new function. + * @returns {Function} Returns the new constant function. + * @example + * + * var objects = _.times(2, _.constant({ 'a': 1 })); + * + * console.log(objects); + * // => [{ 'a': 1 }, { 'a': 1 }] + * + * console.log(objects[0] === objects[1]); + * // => true + */ +function constant(value) { + return function() { + return value; + }; +} + +module.exports = constant; + +},{}],267:[function(require,module,exports){ +var isObject = require('./isObject'), + now = require('./now'), + toNumber = require('./toNumber'); + +/** Error message constants. */ +var FUNC_ERROR_TEXT = 'Expected a function'; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMax = Math.max, + nativeMin = Math.min; + +/** + * Creates a debounced function that delays invoking `func` until after `wait` + * milliseconds have elapsed since the last time the debounced function was + * invoked. The debounced function comes with a `cancel` method to cancel + * delayed `func` invocations and a `flush` method to immediately invoke them. + * Provide `options` to indicate whether `func` should be invoked on the + * leading and/or trailing edge of the `wait` timeout. The `func` is invoked + * with the last arguments provided to the debounced function. Subsequent + * calls to the debounced function return the result of the last `func` + * invocation. + * + * **Note:** If `leading` and `trailing` options are `true`, `func` is + * invoked on the trailing edge of the timeout only if the debounced function + * is invoked more than once during the `wait` timeout. + * + * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred + * until to the next tick, similar to `setTimeout` with a timeout of `0`. + * + * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) + * for details over the differences between `_.debounce` and `_.throttle`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to debounce. + * @param {number} [wait=0] The number of milliseconds to delay. + * @param {Object} [options={}] The options object. + * @param {boolean} [options.leading=false] + * Specify invoking on the leading edge of the timeout. + * @param {number} [options.maxWait] + * The maximum time `func` is allowed to be delayed before it's invoked. + * @param {boolean} [options.trailing=true] + * Specify invoking on the trailing edge of the timeout. + * @returns {Function} Returns the new debounced function. + * @example + * + * // Avoid costly calculations while the window size is in flux. + * jQuery(window).on('resize', _.debounce(calculateLayout, 150)); + * + * // Invoke `sendMail` when clicked, debouncing subsequent calls. + * jQuery(element).on('click', _.debounce(sendMail, 300, { + * 'leading': true, + * 'trailing': false + * })); + * + * // Ensure `batchLog` is invoked once after 1 second of debounced calls. + * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 }); + * var source = new EventSource('/stream'); + * jQuery(source).on('message', debounced); + * + * // Cancel the trailing debounced invocation. + * jQuery(window).on('popstate', debounced.cancel); + */ +function debounce(func, wait, options) { + var lastArgs, + lastThis, + maxWait, + result, + timerId, + lastCallTime, + lastInvokeTime = 0, + leading = false, + maxing = false, + trailing = true; + + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + wait = toNumber(wait) || 0; + if (isObject(options)) { + leading = !!options.leading; + maxing = 'maxWait' in options; + maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait; + trailing = 'trailing' in options ? !!options.trailing : trailing; + } + + function invokeFunc(time) { + var args = lastArgs, + thisArg = lastThis; + + lastArgs = lastThis = undefined; + lastInvokeTime = time; + result = func.apply(thisArg, args); + return result; + } + + function leadingEdge(time) { + // Reset any `maxWait` timer. + lastInvokeTime = time; + // Start the timer for the trailing edge. + timerId = setTimeout(timerExpired, wait); + // Invoke the leading edge. + return leading ? invokeFunc(time) : result; + } + + function remainingWait(time) { + var timeSinceLastCall = time - lastCallTime, + timeSinceLastInvoke = time - lastInvokeTime, + timeWaiting = wait - timeSinceLastCall; + + return maxing + ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) + : timeWaiting; + } + + function shouldInvoke(time) { + var timeSinceLastCall = time - lastCallTime, + timeSinceLastInvoke = time - lastInvokeTime; + + // Either this is the first call, activity has stopped and we're at the + // trailing edge, the system time has gone backwards and we're treating + // it as the trailing edge, or we've hit the `maxWait` limit. + return (lastCallTime === undefined || (timeSinceLastCall >= wait) || + (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait)); + } + + function timerExpired() { + var time = now(); + if (shouldInvoke(time)) { + return trailingEdge(time); + } + // Restart the timer. + timerId = setTimeout(timerExpired, remainingWait(time)); + } + + function trailingEdge(time) { + timerId = undefined; + + // Only invoke if we have `lastArgs` which means `func` has been + // debounced at least once. + if (trailing && lastArgs) { + return invokeFunc(time); + } + lastArgs = lastThis = undefined; + return result; + } + + function cancel() { + if (timerId !== undefined) { + clearTimeout(timerId); + } + lastInvokeTime = 0; + lastArgs = lastCallTime = lastThis = timerId = undefined; + } + + function flush() { + return timerId === undefined ? result : trailingEdge(now()); + } + + function debounced() { + var time = now(), + isInvoking = shouldInvoke(time); + + lastArgs = arguments; + lastThis = this; + lastCallTime = time; + + if (isInvoking) { + if (timerId === undefined) { + return leadingEdge(lastCallTime); + } + if (maxing) { + // Handle invocations in a tight loop. + clearTimeout(timerId); + timerId = setTimeout(timerExpired, wait); + return invokeFunc(lastCallTime); + } + } + if (timerId === undefined) { + timerId = setTimeout(timerExpired, wait); + } + return result; + } + debounced.cancel = cancel; + debounced.flush = flush; + return debounced; +} + +module.exports = debounce; + +},{"./isObject":283,"./now":296,"./toNumber":301}],268:[function(require,module,exports){ +module.exports = require('./forEach'); + +},{"./forEach":270}],269:[function(require,module,exports){ +/** + * Performs a + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * comparison between two values to determine if they are equivalent. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.eq(object, object); + * // => true + * + * _.eq(object, other); + * // => false + * + * _.eq('a', 'a'); + * // => true + * + * _.eq('a', Object('a')); + * // => false + * + * _.eq(NaN, NaN); + * // => true + */ +function eq(value, other) { + return value === other || (value !== value && other !== other); +} + +module.exports = eq; + +},{}],270:[function(require,module,exports){ +var arrayEach = require('./_arrayEach'), + baseEach = require('./_baseEach'), + castFunction = require('./_castFunction'), + isArray = require('./isArray'); + +/** + * Iterates over elements of `collection` and invokes `iteratee` for each element. + * The iteratee is invoked with three arguments: (value, index|key, collection). + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * **Note:** As with other "Collections" methods, objects with a "length" + * property are iterated like arrays. To avoid this behavior use `_.forIn` + * or `_.forOwn` for object iteration. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @alias each + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + * @see _.forEachRight + * @example + * + * _.forEach([1, 2], function(value) { + * console.log(value); + * }); + * // => Logs `1` then `2`. + * + * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) { + * console.log(key); + * }); + * // => Logs 'a' then 'b' (iteration order is not guaranteed). + */ +function forEach(collection, iteratee) { + var func = isArray(collection) ? arrayEach : baseEach; + return func(collection, castFunction(iteratee)); +} + +module.exports = forEach; + +},{"./_arrayEach":137,"./_baseEach":151,"./_castFunction":182,"./isArray":276}],271:[function(require,module,exports){ +var baseForOwn = require('./_baseForOwn'), + castFunction = require('./_castFunction'); + +/** + * Iterates over own enumerable string keyed properties of an object and + * invokes `iteratee` for each property. The iteratee is invoked with three + * arguments: (value, key, object). Iteratee functions may exit iteration + * early by explicitly returning `false`. + * + * @static + * @memberOf _ + * @since 0.3.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns `object`. + * @see _.forOwnRight + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forOwn(new Foo, function(value, key) { + * console.log(key); + * }); + * // => Logs 'a' then 'b' (iteration order is not guaranteed). + */ +function forOwn(object, iteratee) { + return object && baseForOwn(object, castFunction(iteratee)); +} + +module.exports = forOwn; + +},{"./_baseForOwn":153,"./_castFunction":182}],272:[function(require,module,exports){ +var baseGet = require('./_baseGet'); + +/** + * Gets the value at `path` of `object`. If the resolved value is + * `undefined`, the `defaultValue` is returned in its place. + * + * @static + * @memberOf _ + * @since 3.7.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @param {*} [defaultValue] The value returned for `undefined` resolved values. + * @returns {*} Returns the resolved value. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.get(object, 'a[0].b.c'); + * // => 3 + * + * _.get(object, ['a', '0', 'b', 'c']); + * // => 3 + * + * _.get(object, 'a.b.c', 'default'); + * // => 'default' + */ +function get(object, path, defaultValue) { + var result = object == null ? undefined : baseGet(object, path); + return result === undefined ? defaultValue : result; +} + +module.exports = get; + +},{"./_baseGet":154}],273:[function(require,module,exports){ +var baseHasIn = require('./_baseHasIn'), + hasPath = require('./_hasPath'); + +/** + * Checks if `path` is a direct or inherited property of `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + * @example + * + * var object = _.create({ 'a': _.create({ 'b': 2 }) }); + * + * _.hasIn(object, 'a'); + * // => true + * + * _.hasIn(object, 'a.b'); + * // => true + * + * _.hasIn(object, ['a', 'b']); + * // => true + * + * _.hasIn(object, 'b'); + * // => false + */ +function hasIn(object, path) { + return object != null && hasPath(object, path, baseHasIn); +} + +module.exports = hasIn; + +},{"./_baseHasIn":157,"./_hasPath":214}],274:[function(require,module,exports){ +/** + * This method returns the first argument it receives. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {*} value Any value. + * @returns {*} Returns `value`. + * @example + * + * var object = { 'a': 1 }; + * + * console.log(_.identity(object) === object); + * // => true + */ +function identity(value) { + return value; +} + +module.exports = identity; + +},{}],275:[function(require,module,exports){ +var baseIsArguments = require('./_baseIsArguments'), + isObjectLike = require('./isObjectLike'); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** Built-in value references. */ +var propertyIsEnumerable = objectProto.propertyIsEnumerable; + +/** + * Checks if `value` is likely an `arguments` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + * else `false`. + * @example + * + * _.isArguments(function() { return arguments; }()); + * // => true + * + * _.isArguments([1, 2, 3]); + * // => false + */ +var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) { + return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && + !propertyIsEnumerable.call(value, 'callee'); +}; + +module.exports = isArguments; + +},{"./_baseIsArguments":158,"./isObjectLike":284}],276:[function(require,module,exports){ +/** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array, else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(document.body.children); + * // => false + * + * _.isArray('abc'); + * // => false + * + * _.isArray(_.noop); + * // => false + */ +var isArray = Array.isArray; + +module.exports = isArray; + +},{}],277:[function(require,module,exports){ +var isFunction = require('./isFunction'), + isLength = require('./isLength'); + +/** + * Checks if `value` is array-like. A value is considered array-like if it's + * not a function and has a `value.length` that's an integer greater than or + * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is array-like, else `false`. + * @example + * + * _.isArrayLike([1, 2, 3]); + * // => true + * + * _.isArrayLike(document.body.children); + * // => true + * + * _.isArrayLike('abc'); + * // => true + * + * _.isArrayLike(_.noop); + * // => false + */ +function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); +} + +module.exports = isArrayLike; + +},{"./isFunction":280,"./isLength":281}],278:[function(require,module,exports){ +var isArrayLike = require('./isArrayLike'), + isObjectLike = require('./isObjectLike'); + +/** + * This method is like `_.isArrayLike` except that it also checks if `value` + * is an object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array-like object, + * else `false`. + * @example + * + * _.isArrayLikeObject([1, 2, 3]); + * // => true + * + * _.isArrayLikeObject(document.body.children); + * // => true + * + * _.isArrayLikeObject('abc'); + * // => false + * + * _.isArrayLikeObject(_.noop); + * // => false + */ +function isArrayLikeObject(value) { + return isObjectLike(value) && isArrayLike(value); +} + +module.exports = isArrayLikeObject; + +},{"./isArrayLike":277,"./isObjectLike":284}],279:[function(require,module,exports){ +var root = require('./_root'), + stubFalse = require('./stubFalse'); + +/** Detect free variable `exports`. */ +var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; + +/** Detect free variable `module`. */ +var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; + +/** Detect the popular CommonJS extension `module.exports`. */ +var moduleExports = freeModule && freeModule.exports === freeExports; + +/** Built-in value references. */ +var Buffer = moduleExports ? root.Buffer : undefined; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined; + +/** + * Checks if `value` is a buffer. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a buffer, else `false`. + * @example + * + * _.isBuffer(new Buffer(2)); + * // => true + * + * _.isBuffer(new Uint8Array(2)); + * // => false + */ +var isBuffer = nativeIsBuffer || stubFalse; + +module.exports = isBuffer; + +},{"./_root":250,"./stubFalse":299}],280:[function(require,module,exports){ +var baseGetTag = require('./_baseGetTag'), + isObject = require('./isObject'); + +/** `Object#toString` result references. */ +var asyncTag = '[object AsyncFunction]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + proxyTag = '[object Proxy]'; + +/** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a function, else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */ +function isFunction(value) { + if (!isObject(value)) { + return false; + } + // The use of `Object#toString` avoids issues with the `typeof` operator + // in Safari 9 which returns 'object' for typed arrays and other constructors. + var tag = baseGetTag(value); + return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; +} + +module.exports = isFunction; + +},{"./_baseGetTag":156,"./isObject":283}],281:[function(require,module,exports){ +/** Used as references for various `Number` constants. */ +var MAX_SAFE_INTEGER = 9007199254740991; + +/** + * Checks if `value` is a valid array-like length. + * + * **Note:** This method is loosely based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. + * @example + * + * _.isLength(3); + * // => true + * + * _.isLength(Number.MIN_VALUE); + * // => false + * + * _.isLength(Infinity); + * // => false + * + * _.isLength('3'); + * // => false + */ +function isLength(value) { + return typeof value == 'number' && + value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; +} + +module.exports = isLength; + +},{}],282:[function(require,module,exports){ +var baseIsMap = require('./_baseIsMap'), + baseUnary = require('./_baseUnary'), + nodeUtil = require('./_nodeUtil'); + +/* Node.js helper references. */ +var nodeIsMap = nodeUtil && nodeUtil.isMap; + +/** + * Checks if `value` is classified as a `Map` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a map, else `false`. + * @example + * + * _.isMap(new Map); + * // => true + * + * _.isMap(new WeakMap); + * // => false + */ +var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap; + +module.exports = isMap; + +},{"./_baseIsMap":161,"./_baseUnary":180,"./_nodeUtil":246}],283:[function(require,module,exports){ +/** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ +function isObject(value) { + var type = typeof value; + return value != null && (type == 'object' || type == 'function'); +} + +module.exports = isObject; + +},{}],284:[function(require,module,exports){ +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ +function isObjectLike(value) { + return value != null && typeof value == 'object'; +} + +module.exports = isObjectLike; + +},{}],285:[function(require,module,exports){ +var baseGetTag = require('./_baseGetTag'), + getPrototype = require('./_getPrototype'), + isObjectLike = require('./isObjectLike'); + +/** `Object#toString` result references. */ +var objectTag = '[object Object]'; + +/** Used for built-in method references. */ +var funcProto = Function.prototype, + objectProto = Object.prototype; + +/** Used to resolve the decompiled source of functions. */ +var funcToString = funcProto.toString; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** Used to infer the `Object` constructor. */ +var objectCtorString = funcToString.call(Object); + +/** + * Checks if `value` is a plain object, that is, an object created by the + * `Object` constructor or one with a `[[Prototype]]` of `null`. + * + * @static + * @memberOf _ + * @since 0.8.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * _.isPlainObject(new Foo); + * // => false + * + * _.isPlainObject([1, 2, 3]); + * // => false + * + * _.isPlainObject({ 'x': 0, 'y': 0 }); + * // => true + * + * _.isPlainObject(Object.create(null)); + * // => true + */ +function isPlainObject(value) { + if (!isObjectLike(value) || baseGetTag(value) != objectTag) { + return false; + } + var proto = getPrototype(value); + if (proto === null) { + return true; + } + var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor; + return typeof Ctor == 'function' && Ctor instanceof Ctor && + funcToString.call(Ctor) == objectCtorString; +} + +module.exports = isPlainObject; + +},{"./_baseGetTag":156,"./_getPrototype":208,"./isObjectLike":284}],286:[function(require,module,exports){ +var baseIsSet = require('./_baseIsSet'), + baseUnary = require('./_baseUnary'), + nodeUtil = require('./_nodeUtil'); + +/* Node.js helper references. */ +var nodeIsSet = nodeUtil && nodeUtil.isSet; + +/** + * Checks if `value` is classified as a `Set` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a set, else `false`. + * @example + * + * _.isSet(new Set); + * // => true + * + * _.isSet(new WeakSet); + * // => false + */ +var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet; + +module.exports = isSet; + +},{"./_baseIsSet":164,"./_baseUnary":180,"./_nodeUtil":246}],287:[function(require,module,exports){ +var baseGetTag = require('./_baseGetTag'), + isArray = require('./isArray'), + isObjectLike = require('./isObjectLike'); + +/** `Object#toString` result references. */ +var stringTag = '[object String]'; + +/** + * Checks if `value` is classified as a `String` primitive or object. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a string, else `false`. + * @example + * + * _.isString('abc'); + * // => true + * + * _.isString(1); + * // => false + */ +function isString(value) { + return typeof value == 'string' || + (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag); +} + +module.exports = isString; + +},{"./_baseGetTag":156,"./isArray":276,"./isObjectLike":284}],288:[function(require,module,exports){ +var baseGetTag = require('./_baseGetTag'), + isObjectLike = require('./isObjectLike'); + +/** `Object#toString` result references. */ +var symbolTag = '[object Symbol]'; + +/** + * Checks if `value` is classified as a `Symbol` primitive or object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. + * @example + * + * _.isSymbol(Symbol.iterator); + * // => true + * + * _.isSymbol('abc'); + * // => false + */ +function isSymbol(value) { + return typeof value == 'symbol' || + (isObjectLike(value) && baseGetTag(value) == symbolTag); +} + +module.exports = isSymbol; + +},{"./_baseGetTag":156,"./isObjectLike":284}],289:[function(require,module,exports){ +var baseIsTypedArray = require('./_baseIsTypedArray'), + baseUnary = require('./_baseUnary'), + nodeUtil = require('./_nodeUtil'); + +/* Node.js helper references. */ +var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; + +/** + * Checks if `value` is classified as a typed array. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + * @example + * + * _.isTypedArray(new Uint8Array); + * // => true + * + * _.isTypedArray([]); + * // => false + */ +var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; + +module.exports = isTypedArray; + +},{"./_baseIsTypedArray":165,"./_baseUnary":180,"./_nodeUtil":246}],290:[function(require,module,exports){ +/** + * Checks if `value` is `undefined`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. + * @example + * + * _.isUndefined(void 0); + * // => true + * + * _.isUndefined(null); + * // => false + */ +function isUndefined(value) { + return value === undefined; +} + +module.exports = isUndefined; + +},{}],291:[function(require,module,exports){ +var arrayLikeKeys = require('./_arrayLikeKeys'), + baseKeys = require('./_baseKeys'), + isArrayLike = require('./isArrayLike'); + +/** + * Creates an array of the own enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. See the + * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * for more details. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keys(new Foo); + * // => ['a', 'b'] (iteration order is not guaranteed) + * + * _.keys('hi'); + * // => ['0', '1'] + */ +function keys(object) { + return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); +} + +module.exports = keys; + +},{"./_arrayLikeKeys":139,"./_baseKeys":167,"./isArrayLike":277}],292:[function(require,module,exports){ +var arrayLikeKeys = require('./_arrayLikeKeys'), + baseKeysIn = require('./_baseKeysIn'), + isArrayLike = require('./isArrayLike'); + +/** + * Creates an array of the own and inherited enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keysIn(new Foo); + * // => ['a', 'b', 'c'] (iteration order is not guaranteed) + */ +function keysIn(object) { + return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); +} + +module.exports = keysIn; + +},{"./_arrayLikeKeys":139,"./_baseKeysIn":168,"./isArrayLike":277}],293:[function(require,module,exports){ +var arrayMap = require('./_arrayMap'), + baseIteratee = require('./_baseIteratee'), + baseMap = require('./_baseMap'), + isArray = require('./isArray'); + +/** + * Creates an array of values by running each element in `collection` thru + * `iteratee`. The iteratee is invoked with three arguments: + * (value, index|key, collection). + * + * Many lodash methods are guarded to work as iteratees for methods like + * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`. + * + * The guarded methods are: + * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`, + * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`, + * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`, + * `template`, `trim`, `trimEnd`, `trimStart`, and `words` + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + * @example + * + * function square(n) { + * return n * n; + * } + * + * _.map([4, 8], square); + * // => [16, 64] + * + * _.map({ 'a': 4, 'b': 8 }, square); + * // => [16, 64] (iteration order is not guaranteed) + * + * var users = [ + * { 'user': 'barney' }, + * { 'user': 'fred' } + * ]; + * + * // The `_.property` iteratee shorthand. + * _.map(users, 'user'); + * // => ['barney', 'fred'] + */ +function map(collection, iteratee) { + var func = isArray(collection) ? arrayMap : baseMap; + return func(collection, baseIteratee(iteratee, 3)); +} + +module.exports = map; + +},{"./_arrayMap":140,"./_baseIteratee":166,"./_baseMap":169,"./isArray":276}],294:[function(require,module,exports){ +var MapCache = require('./_MapCache'); + +/** Error message constants. */ +var FUNC_ERROR_TEXT = 'Expected a function'; + +/** + * Creates a function that memoizes the result of `func`. If `resolver` is + * provided, it determines the cache key for storing the result based on the + * arguments provided to the memoized function. By default, the first argument + * provided to the memoized function is used as the map cache key. The `func` + * is invoked with the `this` binding of the memoized function. + * + * **Note:** The cache is exposed as the `cache` property on the memoized + * function. Its creation may be customized by replacing the `_.memoize.Cache` + * constructor with one whose instances implement the + * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) + * method interface of `clear`, `delete`, `get`, `has`, and `set`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to have its output memoized. + * @param {Function} [resolver] The function to resolve the cache key. + * @returns {Function} Returns the new memoized function. + * @example + * + * var object = { 'a': 1, 'b': 2 }; + * var other = { 'c': 3, 'd': 4 }; + * + * var values = _.memoize(_.values); + * values(object); + * // => [1, 2] + * + * values(other); + * // => [3, 4] + * + * object.a = 2; + * values(object); + * // => [1, 2] + * + * // Modify the result cache. + * values.cache.set(object, ['a', 'b']); + * values(object); + * // => ['a', 'b'] + * + * // Replace `_.memoize.Cache`. + * _.memoize.Cache = WeakMap; + */ +function memoize(func, resolver) { + if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) { + throw new TypeError(FUNC_ERROR_TEXT); + } + var memoized = function() { + var args = arguments, + key = resolver ? resolver.apply(this, args) : args[0], + cache = memoized.cache; + + if (cache.has(key)) { + return cache.get(key); + } + var result = func.apply(this, args); + memoized.cache = cache.set(key, result) || cache; + return result; + }; + memoized.cache = new (memoize.Cache || MapCache); + return memoized; +} + +// Expose `MapCache`. +memoize.Cache = MapCache; + +module.exports = memoize; + +},{"./_MapCache":128}],295:[function(require,module,exports){ +var baseMerge = require('./_baseMerge'), + createAssigner = require('./_createAssigner'); + +/** + * This method is like `_.assign` except that it recursively merges own and + * inherited enumerable string keyed properties of source objects into the + * destination object. Source properties that resolve to `undefined` are + * skipped if a destination value exists. Array and plain object properties + * are merged recursively. Other objects and value types are overridden by + * assignment. Source objects are applied from left to right. Subsequent + * sources overwrite property assignments of previous sources. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 0.5.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @example + * + * var object = { + * 'a': [{ 'b': 2 }, { 'd': 4 }] + * }; + * + * var other = { + * 'a': [{ 'c': 3 }, { 'e': 5 }] + * }; + * + * _.merge(object, other); + * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] } + */ +var merge = createAssigner(function(object, source, srcIndex) { + baseMerge(object, source, srcIndex); +}); + +module.exports = merge; + +},{"./_baseMerge":172,"./_createAssigner":195}],296:[function(require,module,exports){ +var root = require('./_root'); + +/** + * Gets the timestamp of the number of milliseconds that have elapsed since + * the Unix epoch (1 January 1970 00:00:00 UTC). + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Date + * @returns {number} Returns the timestamp. + * @example + * + * _.defer(function(stamp) { + * console.log(_.now() - stamp); + * }, _.now()); + * // => Logs the number of milliseconds it took for the deferred invocation. + */ +var now = function() { + return root.Date.now(); +}; + +module.exports = now; + +},{"./_root":250}],297:[function(require,module,exports){ +var baseProperty = require('./_baseProperty'), + basePropertyDeep = require('./_basePropertyDeep'), + isKey = require('./_isKey'), + toKey = require('./_toKey'); + +/** + * Creates a function that returns the value at `path` of a given object. + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Util + * @param {Array|string} path The path of the property to get. + * @returns {Function} Returns the new accessor function. + * @example + * + * var objects = [ + * { 'a': { 'b': 2 } }, + * { 'a': { 'b': 1 } } + * ]; + * + * _.map(objects, _.property('a.b')); + * // => [2, 1] + * + * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b'); + * // => [1, 2] + */ +function property(path) { + return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path); +} + +module.exports = property; + +},{"./_baseProperty":174,"./_basePropertyDeep":175,"./_isKey":225,"./_toKey":263}],298:[function(require,module,exports){ +/** + * This method returns a new empty array. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {Array} Returns the new empty array. + * @example + * + * var arrays = _.times(2, _.stubArray); + * + * console.log(arrays); + * // => [[], []] + * + * console.log(arrays[0] === arrays[1]); + * // => false + */ +function stubArray() { + return []; +} + +module.exports = stubArray; + +},{}],299:[function(require,module,exports){ +/** + * This method returns `false`. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {boolean} Returns `false`. + * @example + * + * _.times(2, _.stubFalse); + * // => [false, false] + */ +function stubFalse() { + return false; +} + +module.exports = stubFalse; + +},{}],300:[function(require,module,exports){ +var debounce = require('./debounce'), + isObject = require('./isObject'); + +/** Error message constants. */ +var FUNC_ERROR_TEXT = 'Expected a function'; + +/** + * Creates a throttled function that only invokes `func` at most once per + * every `wait` milliseconds. The throttled function comes with a `cancel` + * method to cancel delayed `func` invocations and a `flush` method to + * immediately invoke them. Provide `options` to indicate whether `func` + * should be invoked on the leading and/or trailing edge of the `wait` + * timeout. The `func` is invoked with the last arguments provided to the + * throttled function. Subsequent calls to the throttled function return the + * result of the last `func` invocation. + * + * **Note:** If `leading` and `trailing` options are `true`, `func` is + * invoked on the trailing edge of the timeout only if the throttled function + * is invoked more than once during the `wait` timeout. + * + * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred + * until to the next tick, similar to `setTimeout` with a timeout of `0`. + * + * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) + * for details over the differences between `_.throttle` and `_.debounce`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to throttle. + * @param {number} [wait=0] The number of milliseconds to throttle invocations to. + * @param {Object} [options={}] The options object. + * @param {boolean} [options.leading=true] + * Specify invoking on the leading edge of the timeout. + * @param {boolean} [options.trailing=true] + * Specify invoking on the trailing edge of the timeout. + * @returns {Function} Returns the new throttled function. + * @example + * + * // Avoid excessively updating the position while scrolling. + * jQuery(window).on('scroll', _.throttle(updatePosition, 100)); + * + * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes. + * var throttled = _.throttle(renewToken, 300000, { 'trailing': false }); + * jQuery(element).on('click', throttled); + * + * // Cancel the trailing throttled invocation. + * jQuery(window).on('popstate', throttled.cancel); + */ +function throttle(func, wait, options) { + var leading = true, + trailing = true; + + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + if (isObject(options)) { + leading = 'leading' in options ? !!options.leading : leading; + trailing = 'trailing' in options ? !!options.trailing : trailing; + } + return debounce(func, wait, { + 'leading': leading, + 'maxWait': wait, + 'trailing': trailing + }); +} + +module.exports = throttle; + +},{"./debounce":267,"./isObject":283}],301:[function(require,module,exports){ +var isObject = require('./isObject'), + isSymbol = require('./isSymbol'); + +/** Used as references for various `Number` constants. */ +var NAN = 0 / 0; + +/** Used to match leading and trailing whitespace. */ +var reTrim = /^\s+|\s+$/g; + +/** Used to detect bad signed hexadecimal string values. */ +var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; + +/** Used to detect binary string values. */ +var reIsBinary = /^0b[01]+$/i; + +/** Used to detect octal string values. */ +var reIsOctal = /^0o[0-7]+$/i; + +/** Built-in method references without a dependency on `root`. */ +var freeParseInt = parseInt; + +/** + * Converts `value` to a number. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to process. + * @returns {number} Returns the number. + * @example + * + * _.toNumber(3.2); + * // => 3.2 + * + * _.toNumber(Number.MIN_VALUE); + * // => 5e-324 + * + * _.toNumber(Infinity); + * // => Infinity + * + * _.toNumber('3.2'); + * // => 3.2 + */ +function toNumber(value) { + if (typeof value == 'number') { + return value; + } + if (isSymbol(value)) { + return NAN; + } + if (isObject(value)) { + var other = typeof value.valueOf == 'function' ? value.valueOf() : value; + value = isObject(other) ? (other + '') : other; + } + if (typeof value != 'string') { + return value === 0 ? value : +value; + } + value = value.replace(reTrim, ''); + var isBinary = reIsBinary.test(value); + return (isBinary || reIsOctal.test(value)) + ? freeParseInt(value.slice(2), isBinary ? 2 : 8) + : (reIsBadHex.test(value) ? NAN : +value); +} + +module.exports = toNumber; + +},{"./isObject":283,"./isSymbol":288}],302:[function(require,module,exports){ +var copyObject = require('./_copyObject'), + keysIn = require('./keysIn'); + +/** + * Converts `value` to a plain object flattening inherited enumerable string + * keyed properties of `value` to own properties of the plain object. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {Object} Returns the converted plain object. + * @example + * + * function Foo() { + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.assign({ 'a': 1 }, new Foo); + * // => { 'a': 1, 'b': 2 } + * + * _.assign({ 'a': 1 }, _.toPlainObject(new Foo)); + * // => { 'a': 1, 'b': 2, 'c': 3 } + */ +function toPlainObject(value) { + return copyObject(value, keysIn(value)); +} + +module.exports = toPlainObject; + +},{"./_copyObject":191,"./keysIn":292}],303:[function(require,module,exports){ +var baseToString = require('./_baseToString'); + +/** + * Converts `value` to a string. An empty string is returned for `null` + * and `undefined` values. The sign of `-0` is preserved. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + * @example + * + * _.toString(null); + * // => '' + * + * _.toString(-0); + * // => '-0' + * + * _.toString([1, 2, 3]); + * // => '1,2,3' + */ +function toString(value) { + return value == null ? '' : baseToString(value); +} + +module.exports = toString; + +},{"./_baseToString":179}],304:[function(require,module,exports){ +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + define([], factory); + } else if (typeof exports === 'object') { + module.exports = factory(); + } else { + root.materialColors = factory(); + } +})(this, function() { + return {"red":{"50":"#ffebee","100":"#ffcdd2","200":"#ef9a9a","300":"#e57373","400":"#ef5350","500":"#f44336","600":"#e53935","700":"#d32f2f","800":"#c62828","900":"#b71c1c","a100":"#ff8a80","a200":"#ff5252","a400":"#ff1744","a700":"#d50000"},"pink":{"50":"#fce4ec","100":"#f8bbd0","200":"#f48fb1","300":"#f06292","400":"#ec407a","500":"#e91e63","600":"#d81b60","700":"#c2185b","800":"#ad1457","900":"#880e4f","a100":"#ff80ab","a200":"#ff4081","a400":"#f50057","a700":"#c51162"},"purple":{"50":"#f3e5f5","100":"#e1bee7","200":"#ce93d8","300":"#ba68c8","400":"#ab47bc","500":"#9c27b0","600":"#8e24aa","700":"#7b1fa2","800":"#6a1b9a","900":"#4a148c","a100":"#ea80fc","a200":"#e040fb","a400":"#d500f9","a700":"#aa00ff"},"deepPurple":{"50":"#ede7f6","100":"#d1c4e9","200":"#b39ddb","300":"#9575cd","400":"#7e57c2","500":"#673ab7","600":"#5e35b1","700":"#512da8","800":"#4527a0","900":"#311b92","a100":"#b388ff","a200":"#7c4dff","a400":"#651fff","a700":"#6200ea"},"indigo":{"50":"#e8eaf6","100":"#c5cae9","200":"#9fa8da","300":"#7986cb","400":"#5c6bc0","500":"#3f51b5","600":"#3949ab","700":"#303f9f","800":"#283593","900":"#1a237e","a100":"#8c9eff","a200":"#536dfe","a400":"#3d5afe","a700":"#304ffe"},"blue":{"50":"#e3f2fd","100":"#bbdefb","200":"#90caf9","300":"#64b5f6","400":"#42a5f5","500":"#2196f3","600":"#1e88e5","700":"#1976d2","800":"#1565c0","900":"#0d47a1","a100":"#82b1ff","a200":"#448aff","a400":"#2979ff","a700":"#2962ff"},"lightBlue":{"50":"#e1f5fe","100":"#b3e5fc","200":"#81d4fa","300":"#4fc3f7","400":"#29b6f6","500":"#03a9f4","600":"#039be5","700":"#0288d1","800":"#0277bd","900":"#01579b","a100":"#80d8ff","a200":"#40c4ff","a400":"#00b0ff","a700":"#0091ea"},"cyan":{"50":"#e0f7fa","100":"#b2ebf2","200":"#80deea","300":"#4dd0e1","400":"#26c6da","500":"#00bcd4","600":"#00acc1","700":"#0097a7","800":"#00838f","900":"#006064","a100":"#84ffff","a200":"#18ffff","a400":"#00e5ff","a700":"#00b8d4"},"teal":{"50":"#e0f2f1","100":"#b2dfdb","200":"#80cbc4","300":"#4db6ac","400":"#26a69a","500":"#009688","600":"#00897b","700":"#00796b","800":"#00695c","900":"#004d40","a100":"#a7ffeb","a200":"#64ffda","a400":"#1de9b6","a700":"#00bfa5"},"green":{"50":"#e8f5e9","100":"#c8e6c9","200":"#a5d6a7","300":"#81c784","400":"#66bb6a","500":"#4caf50","600":"#43a047","700":"#388e3c","800":"#2e7d32","900":"#1b5e20","a100":"#b9f6ca","a200":"#69f0ae","a400":"#00e676","a700":"#00c853"},"lightGreen":{"50":"#f1f8e9","100":"#dcedc8","200":"#c5e1a5","300":"#aed581","400":"#9ccc65","500":"#8bc34a","600":"#7cb342","700":"#689f38","800":"#558b2f","900":"#33691e","a100":"#ccff90","a200":"#b2ff59","a400":"#76ff03","a700":"#64dd17"},"lime":{"50":"#f9fbe7","100":"#f0f4c3","200":"#e6ee9c","300":"#dce775","400":"#d4e157","500":"#cddc39","600":"#c0ca33","700":"#afb42b","800":"#9e9d24","900":"#827717","a100":"#f4ff81","a200":"#eeff41","a400":"#c6ff00","a700":"#aeea00"},"yellow":{"50":"#fffde7","100":"#fff9c4","200":"#fff59d","300":"#fff176","400":"#ffee58","500":"#ffeb3b","600":"#fdd835","700":"#fbc02d","800":"#f9a825","900":"#f57f17","a100":"#ffff8d","a200":"#ffff00","a400":"#ffea00","a700":"#ffd600"},"amber":{"50":"#fff8e1","100":"#ffecb3","200":"#ffe082","300":"#ffd54f","400":"#ffca28","500":"#ffc107","600":"#ffb300","700":"#ffa000","800":"#ff8f00","900":"#ff6f00","a100":"#ffe57f","a200":"#ffd740","a400":"#ffc400","a700":"#ffab00"},"orange":{"50":"#fff3e0","100":"#ffe0b2","200":"#ffcc80","300":"#ffb74d","400":"#ffa726","500":"#ff9800","600":"#fb8c00","700":"#f57c00","800":"#ef6c00","900":"#e65100","a100":"#ffd180","a200":"#ffab40","a400":"#ff9100","a700":"#ff6d00"},"deepOrange":{"50":"#fbe9e7","100":"#ffccbc","200":"#ffab91","300":"#ff8a65","400":"#ff7043","500":"#ff5722","600":"#f4511e","700":"#e64a19","800":"#d84315","900":"#bf360c","a100":"#ff9e80","a200":"#ff6e40","a400":"#ff3d00","a700":"#dd2c00"},"brown":{"50":"#efebe9","100":"#d7ccc8","200":"#bcaaa4","300":"#a1887f","400":"#8d6e63","500":"#795548","600":"#6d4c41","700":"#5d4037","800":"#4e342e","900":"#3e2723"},"grey":{"50":"#fafafa","100":"#f5f5f5","200":"#eeeeee","300":"#e0e0e0","400":"#bdbdbd","500":"#9e9e9e","600":"#757575","700":"#616161","800":"#424242","900":"#212121"},"blueGrey":{"50":"#eceff1","100":"#cfd8dc","200":"#b0bec5","300":"#90a4ae","400":"#78909c","500":"#607d8b","600":"#546e7a","700":"#455a64","800":"#37474f","900":"#263238"},"darkText":{"primary":"rgba(0, 0, 0, 0.87)","secondary":"rgba(0, 0, 0, 0.54)","disabled":"rgba(0, 0, 0, 0.38)","dividers":"rgba(0, 0, 0, 0.12)"},"lightText":{"primary":"rgba(255, 255, 255, 1)","secondary":"rgba(255, 255, 255, 0.7)","disabled":"rgba(255, 255, 255, 0.5)","dividers":"rgba(255, 255, 255, 0.12)"},"darkIcons":{"active":"rgba(0, 0, 0, 0.54)","inactive":"rgba(0, 0, 0, 0.38)"},"lightIcons":{"active":"rgba(255, 255, 255, 1)","inactive":"rgba(255, 255, 255, 0.5)"},"white":"#ffffff","black":"#000000"}; +}); + +},{}],305:[function(require,module,exports){ +/* object-assign (c) Sindre Sorhus @license MIT */ -'use strict';var _0xc7c0ee=Object[_0x442e82('0xdbc')],_0x5bc75c=Object[_0x442e82('0x3ec')][_0x442e82('0x106')],_0x434333=Object[_0x442e82('0x3ec')][_0x442e82('0x269')];function _0x1007ca(_0x1dceee){if(null==_0x1dceee)throw new TypeError('Object.assign\x20cannot\x20be\x20called\x20with\x20null\x20or\x20undefined');return Object(_0x1dceee);}_0x536ff0[_0x442e82('0x91e')]=function(){var _0x1585ac=_0x442e82;try{if(!Object['assign'])return!0x1;var _0x11cc71=new String(_0x1585ac('0xc6a'));if(_0x11cc71[0x5]='de','5'===Object[_0x1585ac('0xc47')](_0x11cc71)[0x0])return!0x1;for(var _0x1010a5={},_0x9fedbd=0x0;_0x9fedbd<0xa;_0x9fedbd++)_0x1010a5['_'+String[_0x1585ac('0x9d2')](_0x9fedbd)]=_0x9fedbd;if(_0x1585ac('0x3f6')!==Object['getOwnPropertyNames'](_0x1010a5)[_0x1585ac('0x4ad')](function(_0x369db8){return _0x1010a5[_0x369db8];})[_0x1585ac('0x2ee')](''))return!0x1;var _0x1818eb={};return _0x1585ac('0x138')[_0x1585ac('0x5a0')]('')[_0x1585ac('0x7ed')](function(_0x4cf655){_0x1818eb[_0x4cf655]=_0x4cf655;}),'abcdefghijklmnopqrst'===Object[_0x1585ac('0x882')](Object[_0x1585ac('0x7df')]({},_0x1818eb))[_0x1585ac('0x2ee')]('');}catch(_0x11e3cd){return!0x1;}}()?Object[_0x442e82('0x7df')]:function(_0x3659b9,_0x3b1ae3){var _0xbae7fc=_0x442e82;for(var _0x83972d,_0x2decb0,_0x5e5d24=_0x1007ca(_0x3659b9),_0x56a373=0x1;_0x56a3730x1&&(_0x3cf4bb['a']=0x1),_0x643354['props'][_0x59ced3('0x88d')]({'h':_0x643354[_0x59ced3('0x2d0')][_0x59ced3('0x4f4')]['h'],'s':_0x643354[_0x59ced3('0x2d0')][_0x59ced3('0x4f4')]['s'],'l':_0x643354['props'][_0x59ced3('0x4f4')]['l'],'a':Math[_0x59ced3('0xd3b')](0x64*_0x3cf4bb['a'])/0x64,'source':'rgb'},_0x1a3ea4)):(_0x3cf4bb['h']||_0x3cf4bb['s']||_0x3cf4bb['l'])&&(_0x59ced3('0x4ba')==typeof _0x3cf4bb['s']&&_0x3cf4bb['s']['includes']('%')&&(_0x3cf4bb['s']=_0x3cf4bb['s'][_0x59ced3('0x95e')]('%','')),_0x59ced3('0x4ba')==typeof _0x3cf4bb['l']&&_0x3cf4bb['l'][_0x59ced3('0x39b')]('%')&&(_0x3cf4bb['l']=_0x3cf4bb['l']['replace']('%','')),0x1==_0x3cf4bb['s']?_0x3cf4bb['s']=0.01:0x1==_0x3cf4bb['l']&&(_0x3cf4bb['l']=0.01),_0x643354['props']['onChange']({'h':_0x3cf4bb['h']||_0x643354[_0x59ced3('0x2d0')][_0x59ced3('0x4f4')]['h'],'s':Number((0x0,_0x2b67be[_0x59ced3('0x53')])(_0x3cf4bb['s'])?_0x643354[_0x59ced3('0x2d0')]['hsl']['s']:_0x3cf4bb['s']),'l':Number((0x0,_0x2b67be[_0x59ced3('0x53')])(_0x3cf4bb['l'])?_0x643354['props'][_0x59ced3('0x4f4')]['l']:_0x3cf4bb['l']),'source':_0x59ced3('0x4f4')},_0x1a3ea4));},_0x643354['showHighlight']=function(_0x3b65b2){var _0x266789=_0x131d7d;_0x3b65b2[_0x266789('0x18d')][_0x266789('0x1c8')][_0x266789('0x72b')]='#eee';},_0x643354[_0x131d7d('0x490')]=function(_0x40be83){var _0x421436=_0x131d7d;_0x40be83[_0x421436('0x18d')]['style'][_0x421436('0x72b')]=_0x421436('0x79a');},0x1!==_0x4e503f['hsl']['a']&&_0x131d7d('0x49b')===_0x4e503f[_0x131d7d('0x2ce')]?_0x643354['state']={'view':_0x131d7d('0x241')}:_0x643354[_0x131d7d('0x97c')]={'view':_0x4e503f[_0x131d7d('0x2ce')]},_0x643354;}return function(_0x493cb6,_0x57d74e){var _0x28bb9d=_0x3e44;if(_0x28bb9d('0x67')!=typeof _0x57d74e&&null!==_0x57d74e)throw new TypeError(_0x28bb9d('0x2f0')+typeof _0x57d74e);_0x493cb6['prototype']=Object[_0x28bb9d('0xd9d')](_0x57d74e&&_0x57d74e[_0x28bb9d('0x3ec')],{'constructor':{'value':_0x493cb6,'enumerable':!0x1,'writable':!0x0,'configurable':!0x0}}),_0x57d74e&&(Object['setPrototypeOf']?Object['setPrototypeOf'](_0x493cb6,_0x57d74e):_0x493cb6[_0x28bb9d('0xc15')]=_0x57d74e);}(_0x3b06e1,_0x184df6),_0x3c1438(_0x3b06e1,[{'key':_0x4e7426('0x265'),'value':function(){var _0x681d9e=_0x4e7426,_0x49e6c1=this,_0x227785=(0x0,_0x3b005f['default'])({'default':{'wrap':{'paddingTop':_0x681d9e('0xd50'),'display':_0x681d9e('0x115')},'fields':{'flex':'1','display':_0x681d9e('0x115'),'marginLeft':_0x681d9e('0x34e')},'field':{'paddingLeft':_0x681d9e('0x1a3'),'width':_0x681d9e('0xbe9')},'alpha':{'paddingLeft':_0x681d9e('0x1a3'),'width':_0x681d9e('0xbe9')},'toggle':{'width':_0x681d9e('0x3b'),'textAlign':_0x681d9e('0x65d'),'position':_0x681d9e('0x829')},'icon':{'marginRight':_0x681d9e('0x373'),'marginTop':_0x681d9e('0x4b2'),'cursor':_0x681d9e('0x38'),'position':_0x681d9e('0x829')},'iconHighlight':{'position':_0x681d9e('0x91d'),'width':'24px','height':_0x681d9e('0x1cb'),'background':_0x681d9e('0x76b'),'borderRadius':_0x681d9e('0x4a7'),'top':'10px','left':_0x681d9e('0x4b2'),'display':'none'},'input':{'fontSize':_0x681d9e('0x8a9'),'color':_0x681d9e('0xd72'),'width':_0x681d9e('0xbe9'),'borderRadius':'2px','border':_0x681d9e('0x3b9'),'boxShadow':'inset\x200\x200\x200\x201px\x20#dadada','height':'21px','textAlign':_0x681d9e('0x2d5')},'label':{'textTransform':_0x681d9e('0x515'),'fontSize':_0x681d9e('0x8a9'),'lineHeight':_0x681d9e('0x8a9'),'color':_0x681d9e('0xc41'),'textAlign':_0x681d9e('0x2d5'),'display':_0x681d9e('0xbae'),'marginTop':'12px'},'svg':{'fill':_0x681d9e('0xd72'),'width':'24px','height':_0x681d9e('0x552'),'border':_0x681d9e('0x82e'),'borderRadius':_0x681d9e('0x35')}},'disableAlpha':{'alpha':{'display':_0x681d9e('0x3b9')}}},this['props'],this[_0x681d9e('0x97c')]),_0x65de50=void 0x0;return _0x681d9e('0x49b')===this['state'][_0x681d9e('0x2ce')]?_0x65de50=_0x8ab24c[_0x681d9e('0x53')][_0x681d9e('0x914')]('div',{'style':_0x227785[_0x681d9e('0xb79')],'className':'flexbox-fix'},_0x8ab24c[_0x681d9e('0x53')][_0x681d9e('0x914')]('div',{'style':_0x227785[_0x681d9e('0xb94')]},_0x8ab24c[_0x681d9e('0x53')][_0x681d9e('0x914')](_0x136982[_0x681d9e('0x39c')],{'style':{'input':_0x227785[_0x681d9e('0x382')],'label':_0x227785[_0x681d9e('0x551')]},'label':_0x681d9e('0x49b'),'value':this[_0x681d9e('0x2d0')][_0x681d9e('0x49b')],'onChange':this[_0x681d9e('0x521')]}))):_0x681d9e('0x241')===this['state'][_0x681d9e('0x2ce')]?_0x65de50=_0x8ab24c[_0x681d9e('0x53')][_0x681d9e('0x914')](_0x681d9e('0x128'),{'style':_0x227785[_0x681d9e('0xb79')],'className':_0x681d9e('0x8d4')},_0x8ab24c[_0x681d9e('0x53')][_0x681d9e('0x914')](_0x681d9e('0x128'),{'style':_0x227785[_0x681d9e('0xb94')]},_0x8ab24c[_0x681d9e('0x53')][_0x681d9e('0x914')](_0x136982[_0x681d9e('0x39c')],{'style':{'input':_0x227785[_0x681d9e('0x382')],'label':_0x227785[_0x681d9e('0x551')]},'label':'r','value':this['props']['rgb']['r'],'onChange':this['handleChange']})),_0x8ab24c[_0x681d9e('0x53')][_0x681d9e('0x914')](_0x681d9e('0x128'),{'style':_0x227785[_0x681d9e('0xb94')]},_0x8ab24c[_0x681d9e('0x53')]['createElement'](_0x136982[_0x681d9e('0x39c')],{'style':{'input':_0x227785[_0x681d9e('0x382')],'label':_0x227785[_0x681d9e('0x551')]},'label':'g','value':this[_0x681d9e('0x2d0')][_0x681d9e('0x241')]['g'],'onChange':this[_0x681d9e('0x521')]})),_0x8ab24c[_0x681d9e('0x53')][_0x681d9e('0x914')](_0x681d9e('0x128'),{'style':_0x227785[_0x681d9e('0xb94')]},_0x8ab24c[_0x681d9e('0x53')][_0x681d9e('0x914')](_0x136982[_0x681d9e('0x39c')],{'style':{'input':_0x227785['input'],'label':_0x227785[_0x681d9e('0x551')]},'label':'b','value':this[_0x681d9e('0x2d0')][_0x681d9e('0x241')]['b'],'onChange':this[_0x681d9e('0x521')]})),_0x8ab24c[_0x681d9e('0x53')][_0x681d9e('0x914')]('div',{'style':_0x227785[_0x681d9e('0x965')]},_0x8ab24c[_0x681d9e('0x53')][_0x681d9e('0x914')](_0x136982[_0x681d9e('0x39c')],{'style':{'input':_0x227785[_0x681d9e('0x382')],'label':_0x227785[_0x681d9e('0x551')]},'label':'a','value':this[_0x681d9e('0x2d0')][_0x681d9e('0x241')]['a'],'arrowOffset':0.01,'onChange':this[_0x681d9e('0x521')]}))):_0x681d9e('0x4f4')===this[_0x681d9e('0x97c')][_0x681d9e('0x2ce')]&&(_0x65de50=_0x8ab24c[_0x681d9e('0x53')]['createElement'](_0x681d9e('0x128'),{'style':_0x227785[_0x681d9e('0xb79')],'className':'flexbox-fix'},_0x8ab24c[_0x681d9e('0x53')]['createElement'](_0x681d9e('0x128'),{'style':_0x227785[_0x681d9e('0xb94')]},_0x8ab24c[_0x681d9e('0x53')][_0x681d9e('0x914')](_0x136982[_0x681d9e('0x39c')],{'style':{'input':_0x227785[_0x681d9e('0x382')],'label':_0x227785[_0x681d9e('0x551')]},'label':'h','value':Math[_0x681d9e('0xd3b')](this[_0x681d9e('0x2d0')][_0x681d9e('0x4f4')]['h']),'onChange':this[_0x681d9e('0x521')]})),_0x8ab24c[_0x681d9e('0x53')]['createElement']('div',{'style':_0x227785[_0x681d9e('0xb94')]},_0x8ab24c[_0x681d9e('0x53')][_0x681d9e('0x914')](_0x136982[_0x681d9e('0x39c')],{'style':{'input':_0x227785[_0x681d9e('0x382')],'label':_0x227785['label']},'label':'s','value':Math[_0x681d9e('0xd3b')](0x64*this[_0x681d9e('0x2d0')]['hsl']['s'])+'%','onChange':this[_0x681d9e('0x521')]})),_0x8ab24c[_0x681d9e('0x53')][_0x681d9e('0x914')]('div',{'style':_0x227785[_0x681d9e('0xb94')]},_0x8ab24c[_0x681d9e('0x53')][_0x681d9e('0x914')](_0x136982[_0x681d9e('0x39c')],{'style':{'input':_0x227785[_0x681d9e('0x382')],'label':_0x227785[_0x681d9e('0x551')]},'label':'l','value':Math[_0x681d9e('0xd3b')](0x64*this[_0x681d9e('0x2d0')][_0x681d9e('0x4f4')]['l'])+'%','onChange':this['handleChange']})),_0x8ab24c['default'][_0x681d9e('0x914')](_0x681d9e('0x128'),{'style':_0x227785[_0x681d9e('0x965')]},_0x8ab24c[_0x681d9e('0x53')][_0x681d9e('0x914')](_0x136982['EditableInput'],{'style':{'input':_0x227785[_0x681d9e('0x382')],'label':_0x227785['label']},'label':'a','value':this['props'][_0x681d9e('0x4f4')]['a'],'arrowOffset':0.01,'onChange':this[_0x681d9e('0x521')]})))),_0x8ab24c['default'][_0x681d9e('0x914')](_0x681d9e('0x128'),{'style':_0x227785[_0x681d9e('0x556')],'className':'flexbox-fix'},_0x65de50,_0x8ab24c[_0x681d9e('0x53')][_0x681d9e('0x914')]('div',{'style':_0x227785[_0x681d9e('0x8c')]},_0x8ab24c[_0x681d9e('0x53')][_0x681d9e('0x914')](_0x681d9e('0x128'),{'style':_0x227785[_0x681d9e('0xa55')],'onClick':this[_0x681d9e('0x1f4')],'ref':function(_0x30bdfc){var _0x142a9c=_0x681d9e;return _0x49e6c1[_0x142a9c('0xa55')]=_0x30bdfc;}},_0x8ab24c[_0x681d9e('0x53')][_0x681d9e('0x914')](_0x479f4c['default'],{'style':_0x227785[_0x681d9e('0x846')],'onMouseOver':this['showHighlight'],'onMouseEnter':this[_0x681d9e('0x244')],'onMouseOut':this[_0x681d9e('0x490')]}))));}}],[{'key':_0x4e7426('0x8a2'),'value':function(_0x3e2445,_0x2c3c41){var _0x1b4e28=_0x4e7426;return 0x1!==_0x3e2445[_0x1b4e28('0x4f4')]['a']&&_0x1b4e28('0x49b')===_0x2c3c41['view']?{'view':'rgb'}:null;}}]),_0x3b06e1;}(_0x8ab24c['default'][_0x4a3cab('0xd04')]);_0xbbe122[_0x4a3cab('0xff')]={'view':_0x4a3cab('0x49b')},_0x27c087[_0x4a3cab('0x53')]=_0xbbe122;},{'../../helpers/color':0x169,'../common':0x149,'@icons/material/UnfoldMoreHorizontalIcon':0x61,'lodash/isUndefined':0x122,'react':_0x322f0f('0x603'),'reactcss':0x176}],0x13d:[function(_0x3c4cab,_0x366574,_0x114c89){var _0x3e2e38=_0x322f0f;'use strict';Object['defineProperty'](_0x114c89,_0x3e2e38('0x866'),{'value':!0x0}),_0x114c89[_0x3e2e38('0x9d8')]=void 0x0;var _0x1faed0=_0x1033a9(_0x3c4cab(_0x3e2e38('0x603'))),_0x5b772e=_0x1033a9(_0x3c4cab('reactcss'));function _0x1033a9(_0xaa25f6){var _0xdca6e6=_0x3e2e38;return _0xaa25f6&&_0xaa25f6[_0xdca6e6('0x866')]?_0xaa25f6:{'default':_0xaa25f6};}var _0x32a991=_0x114c89[_0x3e2e38('0x9d8')]=function(){var _0x19147e=_0x3e2e38,_0x1c001a=(0x0,_0x5b772e[_0x19147e('0x53')])({'default':{'picker':{'width':_0x19147e('0x4b2'),'height':_0x19147e('0x4b2'),'borderRadius':_0x19147e('0x1a3'),'transform':_0x19147e('0x16f'),'backgroundColor':'rgb(248,\x20248,\x20248)','boxShadow':_0x19147e('0x42a')}}});return _0x1faed0['default'][_0x19147e('0x914')]('div',{'style':_0x1c001a[_0x19147e('0xa65')]});};_0x114c89[_0x3e2e38('0x53')]=_0x32a991;},{'react':_0x322f0f('0x603'),'reactcss':0x176}],0x13e:[function(_0x1c032,_0x44a3f2,_0x436d1f){var _0xce1626=_0x322f0f;'use strict';Object[_0xce1626('0x2cd')](_0x436d1f,_0xce1626('0x866'),{'value':!0x0}),_0x436d1f[_0xce1626('0xa51')]=void 0x0;var _0x285ff1=_0x14ab15(_0x1c032('react')),_0x21225d=_0x14ab15(_0x1c032('reactcss'));function _0x14ab15(_0x1c093e){return _0x1c093e&&_0x1c093e['__esModule']?_0x1c093e:{'default':_0x1c093e};}var _0x591475=_0x436d1f['ChromePointerCircle']=function(){var _0x2a7319=_0xce1626,_0x4b4376=(0x0,_0x21225d[_0x2a7319('0x53')])({'default':{'picker':{'width':_0x2a7319('0x4b2'),'height':'12px','borderRadius':'6px','boxShadow':_0x2a7319('0x638'),'transform':_0x2a7319('0x261')}}});return _0x285ff1[_0x2a7319('0x53')]['createElement'](_0x2a7319('0x128'),{'style':_0x4b4376[_0x2a7319('0xa65')]});};_0x436d1f['default']=_0x591475;},{'react':'react','reactcss':0x176}],0x13f:[function(_0x5319f4,_0x323377,_0x18c7cd){var _0xde2198=_0x322f0f;'use strict';Object[_0xde2198('0x2cd')](_0x18c7cd,_0xde2198('0x866'),{'value':!0x0}),_0x18c7cd[_0xde2198('0xd4d')]=void 0x0;var _0x29e29a=_0x4e7dda(_0x5319f4(_0xde2198('0x603'))),_0x274045=_0x4e7dda(_0x5319f4(_0xde2198('0xb'))),_0x501b6c=_0x4e7dda(_0x5319f4(_0xde2198('0x79e'))),_0x3d66d6=_0x4e7dda(_0x5319f4('lodash/map')),_0x401aaf=_0x4e7dda(_0x5319f4(_0xde2198('0xcde'))),_0x5b4780=function(_0x5f004a){var _0xafe280=_0xde2198;if(_0x5f004a&&_0x5f004a[_0xafe280('0x866')])return _0x5f004a;var _0x3f686c={};if(null!=_0x5f004a)for(var _0x4f527a in _0x5f004a)Object[_0xafe280('0x3ec')][_0xafe280('0x106')][_0xafe280('0x928')](_0x5f004a,_0x4f527a)&&(_0x3f686c[_0x4f527a]=_0x5f004a[_0x4f527a]);return _0x3f686c[_0xafe280('0x53')]=_0x5f004a,_0x3f686c;}(_0x5319f4(_0xde2198('0xbe6'))),_0x5ca10e=_0x5319f4(_0xde2198('0xc12')),_0x22f7e5=_0x4e7dda(_0x5319f4('./CircleSwatch'));function _0x4e7dda(_0x22588c){var _0x561a31=_0xde2198;return _0x22588c&&_0x22588c[_0x561a31('0x866')]?_0x22588c:{'default':_0x22588c};}var _0x205a73=_0x18c7cd['Circle']=function(_0x43a0fe){var _0x5a7e71=_0xde2198,_0x1f0bbb=_0x43a0fe[_0x5a7e71('0x9c3')],_0x4d50d1=_0x43a0fe[_0x5a7e71('0x88d')],_0x546089=_0x43a0fe[_0x5a7e71('0xa10')],_0x2b6363=_0x43a0fe[_0x5a7e71('0x2e4')],_0x23750f=_0x43a0fe[_0x5a7e71('0x49b')],_0x1d8531=_0x43a0fe[_0x5a7e71('0x761')],_0x469571=_0x43a0fe['styles'],_0x2b3712=void 0x0===_0x469571?{}:_0x469571,_0x2326e7=_0x43a0fe['circleSpacing'],_0x32c164=_0x43a0fe[_0x5a7e71('0x8d3')],_0x19cc2e=void 0x0===_0x32c164?'':_0x32c164,_0xccfe72=(0x0,_0x501b6c[_0x5a7e71('0x53')])((0x0,_0x401aaf['default'])({'default':{'card':{'width':_0x1f0bbb,'display':_0x5a7e71('0x115'),'flexWrap':_0x5a7e71('0x556'),'marginRight':-_0x2326e7,'marginBottom':-_0x2326e7}}},_0x2b3712)),_0x502aac=function(_0x47687f,_0x5a0a7d){return _0x4d50d1({'hex':_0x47687f,'source':'hex'},_0x5a0a7d);};return _0x29e29a[_0x5a7e71('0x53')]['createElement'](_0x5a7e71('0x128'),{'style':_0xccfe72[_0x5a7e71('0x108')],'className':_0x5a7e71('0xd65')+_0x19cc2e},(0x0,_0x3d66d6[_0x5a7e71('0x53')])(_0x2b6363,function(_0xba8ea){var _0x10fac3=_0x5a7e71;return _0x29e29a[_0x10fac3('0x53')][_0x10fac3('0x914')](_0x22f7e5[_0x10fac3('0x53')],{'key':_0xba8ea,'color':_0xba8ea,'onClick':_0x502aac,'onSwatchHover':_0x546089,'active':_0x23750f===_0xba8ea['toLowerCase'](),'circleSize':_0x1d8531,'circleSpacing':_0x2326e7});}));};_0x205a73[_0xde2198('0x1')]={'width':_0x274045[_0xde2198('0x53')][_0xde2198('0x525')]([_0x274045[_0xde2198('0x53')]['string'],_0x274045[_0xde2198('0x53')][_0xde2198('0x913')]]),'circleSize':_0x274045[_0xde2198('0x53')][_0xde2198('0x913')],'circleSpacing':_0x274045[_0xde2198('0x53')][_0xde2198('0x913')],'styles':_0x274045[_0xde2198('0x53')][_0xde2198('0x669')]},_0x205a73[_0xde2198('0xff')]={'width':0xfc,'circleSize':0x1c,'circleSpacing':0xe,'colors':[_0x5b4780[_0xde2198('0xaff')][0x1f4],_0x5b4780['pink'][0x1f4],_0x5b4780[_0xde2198('0x6cf')][0x1f4],_0x5b4780[_0xde2198('0x770')][0x1f4],_0x5b4780[_0xde2198('0x88c')][0x1f4],_0x5b4780['blue'][0x1f4],_0x5b4780[_0xde2198('0x2c6')][0x1f4],_0x5b4780[_0xde2198('0x3fe')][0x1f4],_0x5b4780[_0xde2198('0x9fa')][0x1f4],_0x5b4780[_0xde2198('0x178')][0x1f4],_0x5b4780[_0xde2198('0x969')][0x1f4],_0x5b4780[_0xde2198('0xdb7')][0x1f4],_0x5b4780[_0xde2198('0xa6')][0x1f4],_0x5b4780[_0xde2198('0x25d')][0x1f4],_0x5b4780[_0xde2198('0xbb1')][0x1f4],_0x5b4780[_0xde2198('0x390')][0x1f4],_0x5b4780[_0xde2198('0xb69')][0x1f4],_0x5b4780['blueGrey'][0x1f4]],'styles':{}},_0x18c7cd[_0xde2198('0x53')]=(0x0,_0x5ca10e[_0xde2198('0x88b')])(_0x205a73);},{'../common':0x149,'./CircleSwatch':0x140,'lodash/map':0x125,'lodash/merge':0x127,'material-colors':0x130,'prop-types':0x135,'react':'react','reactcss':0x176}],0x140:[function(_0x3bc8bd,_0xdb7267,_0x2d03cf){var _0x184daa=_0x322f0f;'use strict';Object[_0x184daa('0x2cd')](_0x2d03cf,_0x184daa('0x866'),{'value':!0x0}),_0x2d03cf['CircleSwatch']=void 0x0;var _0x39bea0=_0x14bf03(_0x3bc8bd('react')),_0x6958d2=_0x3bc8bd(_0x184daa('0x79e')),_0x26e24e=_0x14bf03(_0x6958d2),_0x254e9=_0x3bc8bd('../common');function _0x14bf03(_0x5a25f7){var _0x193479=_0x184daa;return _0x5a25f7&&_0x5a25f7[_0x193479('0x866')]?_0x5a25f7:{'default':_0x5a25f7};}var _0x1ecc88=_0x2d03cf[_0x184daa('0xa6a')]=function(_0x244f7b){var _0x375e1d=_0x184daa,_0x4e7217=_0x244f7b[_0x375e1d('0x8da')],_0x1afc01=_0x244f7b[_0x375e1d('0xb15')],_0x48f17a=_0x244f7b[_0x375e1d('0xa10')],_0x259935=_0x244f7b[_0x375e1d('0x75b')],_0x54f14a=_0x244f7b[_0x375e1d('0x317')],_0x5337ef=_0x244f7b[_0x375e1d('0x761')],_0x2027da=_0x244f7b[_0x375e1d('0x690')],_0x20a61a=(0x0,_0x26e24e[_0x375e1d('0x53')])({'default':{'swatch':{'width':_0x5337ef,'height':_0x5337ef,'marginRight':_0x2027da,'marginBottom':_0x2027da,'transform':_0x375e1d('0x77f'),'transition':'100ms\x20transform\x20ease'},'Swatch':{'borderRadius':_0x375e1d('0xa9b'),'background':_0x375e1d('0x79a'),'boxShadow':'inset\x200\x200\x200\x20'+(_0x5337ef/0x2+0x1)+_0x375e1d('0x85')+_0x4e7217,'transition':_0x375e1d('0x5f3')}},'hover':{'swatch':{'transform':_0x375e1d('0x315')}},'active':{'Swatch':{'boxShadow':_0x375e1d('0x730')+_0x4e7217}}},{'hover':_0x259935,'active':_0x54f14a});return _0x39bea0[_0x375e1d('0x53')][_0x375e1d('0x914')](_0x375e1d('0x128'),{'style':_0x20a61a[_0x375e1d('0x959')]},_0x39bea0[_0x375e1d('0x53')]['createElement'](_0x254e9['Swatch'],{'style':_0x20a61a[_0x375e1d('0xc5b')],'color':_0x4e7217,'onClick':_0x1afc01,'onHover':_0x48f17a,'focusStyle':{'boxShadow':_0x20a61a[_0x375e1d('0xc5b')][_0x375e1d('0x238')]+_0x375e1d('0x9a4')+_0x4e7217}}));};_0x1ecc88['defaultProps']={'circleSize':0x1c,'circleSpacing':0xe},_0x2d03cf[_0x184daa('0x53')]=(0x0,_0x6958d2[_0x184daa('0xc29')])(_0x1ecc88);},{'../common':0x149,'react':_0x322f0f('0x603'),'reactcss':0x176}],0x141:[function(_0x3b909f,_0x19000f,_0x584893){var _0x121b20=_0x322f0f;'use strict';Object[_0x121b20('0x2cd')](_0x584893,_0x121b20('0x866'),{'value':!0x0}),_0x584893[_0x121b20('0x305')]=void 0x0;var _0x3124bf=Object[_0x121b20('0x7df')]||function(_0x5a1456){var _0x73837=_0x121b20;for(var _0x16668a=0x1;_0x16668a-0x1)){var _0x6c870c=_0x40909f[_0x49b58b('0xc4c')](),_0x16e720=0x26===_0x1c2eef[_0x49b58b('0xc49')]?_0x4a6a04+_0x6c870c:_0x4a6a04-_0x6c870c;_0x40909f[_0x49b58b('0xc2a')](_0x16e720,_0x1c2eef);}},_0x40909f[_0x2d622e('0xb1b')]=function(_0x135041){var _0x59f07e=_0x2d622e;if(_0x40909f[_0x59f07e('0x2d0')][_0x59f07e('0xba5')]){var _0x2700a6=Math[_0x59f07e('0xd3b')](_0x40909f[_0x59f07e('0x2d0')]['value']+_0x135041['movementX']);_0x2700a6>=0x0&&_0x2700a6<=_0x40909f[_0x59f07e('0x2d0')][_0x59f07e('0xbe2')]&&_0x40909f[_0x59f07e('0x2d0')][_0x59f07e('0x88d')]&&_0x40909f['props'][_0x59f07e('0x88d')](_0x40909f[_0x59f07e('0xa44')](_0x2700a6),_0x135041);}},_0x40909f[_0x2d622e('0x1f7')]=function(_0x5039ba){var _0x14bf93=_0x2d622e;_0x40909f['props'][_0x14bf93('0xba5')]&&(_0x5039ba[_0x14bf93('0x731')](),_0x40909f[_0x14bf93('0xb1b')](_0x5039ba),window[_0x14bf93('0xe8')](_0x14bf93('0x22c'),_0x40909f[_0x14bf93('0xb1b')]),window[_0x14bf93('0xe8')]('mouseup',_0x40909f[_0x14bf93('0x9e1')]));},_0x40909f[_0x2d622e('0x9e1')]=function(){var _0x5d1544=_0x2d622e;_0x40909f[_0x5d1544('0x92b')]();},_0x40909f['unbindEventListeners']=function(){var _0x39b52c=_0x2d622e;window[_0x39b52c('0xbdd')]('mousemove',_0x40909f[_0x39b52c('0xb1b')]),window[_0x39b52c('0xbdd')](_0x39b52c('0xdb9'),_0x40909f[_0x39b52c('0x9e1')]);},_0x40909f['state']={'value':String(_0x1a9b7f['value'])[_0x2d622e('0x637')](),'blurValue':String(_0x1a9b7f[_0x2d622e('0x9b6')])[_0x2d622e('0x637')]()},_0x40909f[_0x2d622e('0x96c')]=_0x2d622e('0x50e')+_0x8d880++,_0x40909f;}return function(_0x445197,_0x1aef98){var _0xe1c3e0=_0x3e44;if(_0xe1c3e0('0x67')!=typeof _0x1aef98&&null!==_0x1aef98)throw new TypeError(_0xe1c3e0('0x2f0')+typeof _0x1aef98);_0x445197[_0xe1c3e0('0x3ec')]=Object[_0xe1c3e0('0xd9d')](_0x1aef98&&_0x1aef98['prototype'],{'constructor':{'value':_0x445197,'enumerable':!0x1,'writable':!0x0,'configurable':!0x0}}),_0x1aef98&&(Object[_0xe1c3e0('0x16')]?Object[_0xe1c3e0('0x16')](_0x445197,_0x1aef98):_0x445197[_0xe1c3e0('0xc15')]=_0x1aef98);}(_0x408956,_0x120a41),_0x583515(_0x408956,[{'key':_0x4ff167('0x498'),'value':function(_0x1cebcf,_0x2dd6e0){var _0x3d7ebe=_0x4ff167;this[_0x3d7ebe('0x2d0')][_0x3d7ebe('0x9b6')]===this['state'][_0x3d7ebe('0x9b6')]||_0x1cebcf[_0x3d7ebe('0x9b6')]===this[_0x3d7ebe('0x2d0')][_0x3d7ebe('0x9b6')]&&_0x2dd6e0['value']===this['state'][_0x3d7ebe('0x9b6')]||(this['input']===document[_0x3d7ebe('0x42')]?this[_0x3d7ebe('0x4f8')]({'blurValue':String(this[_0x3d7ebe('0x2d0')][_0x3d7ebe('0x9b6')])[_0x3d7ebe('0x637')]()}):this['setState']({'value':String(this[_0x3d7ebe('0x2d0')][_0x3d7ebe('0x9b6')])[_0x3d7ebe('0x637')](),'blurValue':!this['state'][_0x3d7ebe('0x4e')]&&String(this['props'][_0x3d7ebe('0x9b6')])[_0x3d7ebe('0x637')]()}));}},{'key':'componentWillUnmount','value':function(){this['unbindEventListeners']();}},{'key':'getValueObjectWithLabel','value':function(_0x4684c7){var _0x2e3052=_0x4ff167;return function(_0x46e205,_0x57ae76,_0x26abf4){var _0x25f659=_0x3e44;return _0x57ae76 in _0x46e205?Object[_0x25f659('0x2cd')](_0x46e205,_0x57ae76,{'value':_0x26abf4,'enumerable':!0x0,'configurable':!0x0,'writable':!0x0}):_0x46e205[_0x57ae76]=_0x26abf4,_0x46e205;}({},this[_0x2e3052('0x2d0')][_0x2e3052('0x551')],_0x4684c7);}},{'key':_0x4ff167('0xc4c'),'value':function(){var _0x1d1957=_0x4ff167;return this['props'][_0x1d1957('0x7c9')]||0x1;}},{'key':_0x4ff167('0xc2a'),'value':function(_0x2cf2d2,_0x37cf83){var _0x57e75d=_0x4ff167,_0x2f1e14=this[_0x57e75d('0x2d0')][_0x57e75d('0x551')]?this[_0x57e75d('0xa44')](_0x2cf2d2):_0x2cf2d2;this[_0x57e75d('0x2d0')]['onChange']&&this[_0x57e75d('0x2d0')][_0x57e75d('0x88d')](_0x2f1e14,_0x37cf83),this[_0x57e75d('0x4f8')]({'value':_0x2cf2d2});}},{'key':'render','value':function(){var _0x3f7567=_0x4ff167,_0x179ef6=this,_0x46c337=(0x0,_0x5651b4['default'])({'default':{'wrap':{'position':_0x3f7567('0x829')}},'user-override':{'wrap':this[_0x3f7567('0x2d0')][_0x3f7567('0x1c8')]&&this[_0x3f7567('0x2d0')][_0x3f7567('0x1c8')][_0x3f7567('0x556')]?this[_0x3f7567('0x2d0')][_0x3f7567('0x1c8')]['wrap']:{},'input':this[_0x3f7567('0x2d0')][_0x3f7567('0x1c8')]&&this[_0x3f7567('0x2d0')]['style'][_0x3f7567('0x382')]?this[_0x3f7567('0x2d0')][_0x3f7567('0x1c8')][_0x3f7567('0x382')]:{},'label':this[_0x3f7567('0x2d0')][_0x3f7567('0x1c8')]&&this[_0x3f7567('0x2d0')]['style'][_0x3f7567('0x551')]?this[_0x3f7567('0x2d0')][_0x3f7567('0x1c8')][_0x3f7567('0x551')]:{}},'dragLabel-true':{'label':{'cursor':_0x3f7567('0x17a')}}},{'user-override':!0x0},this[_0x3f7567('0x2d0')]);return _0x3a5bfe[_0x3f7567('0x53')]['createElement']('div',{'style':_0x46c337[_0x3f7567('0x556')]},_0x3a5bfe[_0x3f7567('0x53')]['createElement'](_0x3f7567('0x382'),{'id':this[_0x3f7567('0x96c')],'style':_0x46c337[_0x3f7567('0x382')],'ref':function(_0x500b37){var _0x4eecdb=_0x3f7567;return _0x179ef6[_0x4eecdb('0x382')]=_0x500b37;},'value':this[_0x3f7567('0x97c')][_0x3f7567('0x9b6')],'onKeyDown':this['handleKeyDown'],'onChange':this[_0x3f7567('0x521')],'onBlur':this['handleBlur'],'placeholder':this[_0x3f7567('0x2d0')]['placeholder'],'spellCheck':_0x3f7567('0xbd6')}),this[_0x3f7567('0x2d0')][_0x3f7567('0x551')]&&!this[_0x3f7567('0x2d0')][_0x3f7567('0xb17')]?_0x3a5bfe[_0x3f7567('0x53')][_0x3f7567('0x914')](_0x3f7567('0x551'),{'htmlFor':this[_0x3f7567('0x96c')],'style':_0x46c337[_0x3f7567('0x551')],'onMouseDown':this['handleMouseDown']},this[_0x3f7567('0x2d0')][_0x3f7567('0x551')]):null);}}]),_0x408956;}(_0xf74179['PureComponent']||_0xf74179['Component']);_0x1d44dc[_0x2d73a0('0x53')]=_0x51574e;},{'react':_0x322f0f('0x603'),'reactcss':0x176}],0x145:[function(_0x2f1ab7,_0x47a19c,_0x430969){var _0x5a84a0=_0x322f0f;'use strict';Object[_0x5a84a0('0x2cd')](_0x430969,'__esModule',{'value':!0x0}),_0x430969[_0x5a84a0('0x52e')]=void 0x0;var _0x26614a=function(){function _0x2d60f7(_0x4f3c2c,_0x2384d2){var _0x3b8f48=_0x3e44;for(var _0x940944=0x0;_0x940944<_0x2384d2['length'];_0x940944++){var _0x4a99df=_0x2384d2[_0x940944];_0x4a99df[_0x3b8f48('0x836')]=_0x4a99df[_0x3b8f48('0x836')]||!0x1,_0x4a99df['configurable']=!0x0,'value'in _0x4a99df&&(_0x4a99df[_0x3b8f48('0xc28')]=!0x0),Object[_0x3b8f48('0x2cd')](_0x4f3c2c,_0x4a99df['key'],_0x4a99df);}}return function(_0x284278,_0xe52945,_0x21bcaf){var _0xba140b=_0x3e44;return _0xe52945&&_0x2d60f7(_0x284278[_0xba140b('0x3ec')],_0xe52945),_0x21bcaf&&_0x2d60f7(_0x284278,_0x21bcaf),_0x284278;};}(),_0x2e8841=_0x2f1ab7('react'),_0x12b41b=_0x2b03ce(_0x2e8841),_0x590e04=_0x2b03ce(_0x2f1ab7(_0x5a84a0('0x79e'))),_0x5adb62=function(_0x443883){var _0x38f950=_0x5a84a0;if(_0x443883&&_0x443883[_0x38f950('0x866')])return _0x443883;var _0x3af698={};if(null!=_0x443883)for(var _0x36264b in _0x443883)Object[_0x38f950('0x3ec')]['hasOwnProperty'][_0x38f950('0x928')](_0x443883,_0x36264b)&&(_0x3af698[_0x36264b]=_0x443883[_0x36264b]);return _0x3af698[_0x38f950('0x53')]=_0x443883,_0x3af698;}(_0x2f1ab7(_0x5a84a0('0xcdd')));function _0x2b03ce(_0x16e21d){var _0x50c6a3=_0x5a84a0;return _0x16e21d&&_0x16e21d[_0x50c6a3('0x866')]?_0x16e21d:{'default':_0x16e21d};}function _0x2eb6db(_0x719ba2,_0x271b47){var _0x5dc66c=_0x5a84a0;if(!(_0x719ba2 instanceof _0x271b47))throw new TypeError(_0x5dc66c('0xc2c'));}function _0x594193(_0x40510c,_0x39b57c){var _0x1848f8=_0x5a84a0;if(!_0x40510c)throw new ReferenceError(_0x1848f8('0xba4'));return!_0x39b57c||'object'!=typeof _0x39b57c&&_0x1848f8('0x67')!=typeof _0x39b57c?_0x40510c:_0x39b57c;}var _0x26f719=_0x430969[_0x5a84a0('0x52e')]=function(_0x5c2525){var _0x17393c=_0x5a84a0;function _0x103784(){var _0x381892=_0x3e44,_0x173bab,_0x1423ca,_0x40b509;_0x2eb6db(this,_0x103784);for(var _0x10abb8=arguments[_0x381892('0x1d1')],_0x4e1f38=Array(_0x10abb8),_0x3e4ee1=0x0;_0x3e4ee1<_0x10abb8;_0x3e4ee1++)_0x4e1f38[_0x3e4ee1]=arguments[_0x3e4ee1];return _0x1423ca=_0x40b509=_0x594193(this,(_0x173bab=_0x103784[_0x381892('0xc15')]||Object[_0x381892('0x418')](_0x103784))['call']['apply'](_0x173bab,[this][_0x381892('0x49e')](_0x4e1f38))),_0x40b509[_0x381892('0x521')]=function(_0x45cf2e){var _0x156eb1=_0x381892,_0xffb2be=_0x5adb62[_0x156eb1('0xb12')](_0x45cf2e,_0x40b509[_0x156eb1('0x2d0')][_0x156eb1('0x7a4')],_0x40b509[_0x156eb1('0x2d0')][_0x156eb1('0x4f4')],_0x40b509[_0x156eb1('0x1be')]);_0xffb2be&&_0x156eb1('0x67')==typeof _0x40b509[_0x156eb1('0x2d0')]['onChange']&&_0x40b509[_0x156eb1('0x2d0')][_0x156eb1('0x88d')](_0xffb2be,_0x45cf2e);},_0x40b509[_0x381892('0x1f7')]=function(_0x439949){var _0xffdfbd=_0x381892;_0x40b509[_0xffdfbd('0x521')](_0x439949),window[_0xffdfbd('0xe8')](_0xffdfbd('0x22c'),_0x40b509[_0xffdfbd('0x521')]),window[_0xffdfbd('0xe8')]('mouseup',_0x40b509[_0xffdfbd('0x9e1')]);},_0x40b509[_0x381892('0x9e1')]=function(){_0x40b509['unbindEventListeners']();},_0x594193(_0x40b509,_0x1423ca);}return function(_0x40f728,_0x258940){var _0x53877c=_0x3e44;if(_0x53877c('0x67')!=typeof _0x258940&&null!==_0x258940)throw new TypeError(_0x53877c('0x2f0')+typeof _0x258940);_0x40f728['prototype']=Object[_0x53877c('0xd9d')](_0x258940&&_0x258940[_0x53877c('0x3ec')],{'constructor':{'value':_0x40f728,'enumerable':!0x1,'writable':!0x0,'configurable':!0x0}}),_0x258940&&(Object[_0x53877c('0x16')]?Object[_0x53877c('0x16')](_0x40f728,_0x258940):_0x40f728['__proto__']=_0x258940);}(_0x103784,_0x5c2525),_0x26614a(_0x103784,[{'key':_0x17393c('0x79d'),'value':function(){var _0x45a290=_0x17393c;this[_0x45a290('0x92b')]();}},{'key':_0x17393c('0x92b'),'value':function(){var _0x17e22a=_0x17393c;window[_0x17e22a('0xbdd')]('mousemove',this['handleChange']),window['removeEventListener'](_0x17e22a('0xdb9'),this['handleMouseUp']);}},{'key':_0x17393c('0x265'),'value':function(){var _0x4ac27b=_0x17393c,_0x245b2c=this,_0x169a15=this[_0x4ac27b('0x2d0')][_0x4ac27b('0x7a4')],_0x5e5a9f=void 0x0===_0x169a15?'horizontal':_0x169a15,_0x1b23e8=(0x0,_0x590e04[_0x4ac27b('0x53')])({'default':{'hue':{'absolute':_0x4ac27b('0xda0'),'borderRadius':this[_0x4ac27b('0x2d0')][_0x4ac27b('0xa27')],'boxShadow':this[_0x4ac27b('0x2d0')][_0x4ac27b('0x14a')]},'container':{'padding':'0\x202px','position':_0x4ac27b('0x829'),'height':_0x4ac27b('0xbe9'),'borderRadius':this[_0x4ac27b('0x2d0')][_0x4ac27b('0xa27')]},'pointer':{'position':'absolute','left':0x64*this[_0x4ac27b('0x2d0')]['hsl']['h']/0x168+'%'},'slider':{'marginTop':_0x4ac27b('0x878'),'width':_0x4ac27b('0x4a7'),'borderRadius':_0x4ac27b('0x878'),'height':_0x4ac27b('0xd5c'),'boxShadow':_0x4ac27b('0xd17'),'background':_0x4ac27b('0x15a'),'transform':_0x4ac27b('0xba0')}},'vertical':{'pointer':{'left':'0px','top':-0x64*this[_0x4ac27b('0x2d0')][_0x4ac27b('0x4f4')]['h']/0x168+0x64+'%'}}},{'vertical':_0x4ac27b('0x1ca')===_0x5e5a9f});return _0x12b41b[_0x4ac27b('0x53')][_0x4ac27b('0x914')](_0x4ac27b('0x128'),{'style':_0x1b23e8[_0x4ac27b('0x6e6')]},_0x12b41b['default'][_0x4ac27b('0x914')](_0x4ac27b('0x128'),{'className':_0x4ac27b('0xaa6')+_0x5e5a9f,'style':_0x1b23e8[_0x4ac27b('0x1be')],'ref':function(_0x2c8455){var _0x15d640=_0x4ac27b;return _0x245b2c[_0x15d640('0x1be')]=_0x2c8455;},'onMouseDown':this[_0x4ac27b('0x1f7')],'onTouchMove':this[_0x4ac27b('0x521')],'onTouchStart':this['handleChange']},_0x12b41b[_0x4ac27b('0x53')]['createElement'](_0x4ac27b('0x1c8'),null,_0x4ac27b('0x67a')),_0x12b41b['default'][_0x4ac27b('0x914')]('div',{'style':_0x1b23e8['pointer']},this['props'][_0x4ac27b('0x38')]?_0x12b41b[_0x4ac27b('0x53')][_0x4ac27b('0x914')](this[_0x4ac27b('0x2d0')][_0x4ac27b('0x38')],this[_0x4ac27b('0x2d0')]):_0x12b41b[_0x4ac27b('0x53')][_0x4ac27b('0x914')](_0x4ac27b('0x128'),{'style':_0x1b23e8[_0x4ac27b('0x3b4')]}))));}}]),_0x103784;}(_0x2e8841[_0x5a84a0('0xbe4')]||_0x2e8841[_0x5a84a0('0xd04')]);_0x430969['default']=_0x26f719;},{'../../helpers/hue':0x16a,'react':_0x322f0f('0x603'),'reactcss':0x176}],0x146:[function(_0xb05cf1,_0x550ace,_0xecc889){var _0x19c50c=_0x322f0f;'use strict';Object[_0x19c50c('0x2cd')](_0xecc889,_0x19c50c('0x866'),{'value':!0x0}),_0xecc889[_0x19c50c('0x9ae')]=void 0x0;var _0x7c806b=_0x276e91(_0xb05cf1(_0x19c50c('0x603'))),_0x1724a9=_0x276e91(_0xb05cf1(_0x19c50c('0xb'))),_0x5d88d3=_0x276e91(_0xb05cf1(_0x19c50c('0x79e'))),_0x461f24=_0x276e91(_0xb05cf1(_0x19c50c('0xcde')));function _0x276e91(_0x2adfa0){var _0x2ebe90=_0x19c50c;return _0x2adfa0&&_0x2adfa0[_0x2ebe90('0x866')]?_0x2adfa0:{'default':_0x2adfa0};}var _0x24f605=_0xecc889[_0x19c50c('0x9ae')]=function(_0x1a7b6b){var _0x240579=_0x19c50c,_0x307b08=_0x1a7b6b[_0x240579('0x570')],_0x306d15=_0x1a7b6b['radius'],_0x3eff00=_0x1a7b6b[_0x240579('0x72b')],_0x1532b5=_0x1a7b6b[_0x240579('0xbc8')],_0x50f93d=_0x1a7b6b[_0x240579('0xcaa')],_0x40dd01=void 0x0===_0x50f93d?{}:_0x50f93d,_0x64aecf=(0x0,_0x5d88d3[_0x240579('0x53')])((0x0,_0x461f24[_0x240579('0x53')])({'default':{'wrap':{'position':_0x240579('0x829'),'display':_0x240579('0x1b6')},'content':{'position':_0x240579('0x829')},'bg':{'absolute':_0x240579('0xda0'),'boxShadow':'0\x20'+_0x307b08+_0x240579('0x85')+0x4*_0x307b08+'px\x20rgba(0,0,0,.24)','borderRadius':_0x306d15,'background':_0x3eff00}},'zDepth-0':{'bg':{'boxShadow':_0x240579('0x3b9')}},'zDepth-1':{'bg':{'boxShadow':'0\x202px\x2010px\x20rgba(0,0,0,.12),\x200\x202px\x205px\x20rgba(0,0,0,.16)'}},'zDepth-2':{'bg':{'boxShadow':'0\x206px\x2020px\x20rgba(0,0,0,.19),\x200\x208px\x2017px\x20rgba(0,0,0,.2)'}},'zDepth-3':{'bg':{'boxShadow':_0x240579('0xabd')}},'zDepth-4':{'bg':{'boxShadow':_0x240579('0x737')}},'zDepth-5':{'bg':{'boxShadow':_0x240579('0xb98')}},'square':{'bg':{'borderRadius':'0'}},'circle':{'bg':{'borderRadius':_0x240579('0xa9b')}}},_0x40dd01),{'zDepth-1':0x1===_0x307b08});return _0x7c806b[_0x240579('0x53')][_0x240579('0x914')]('div',{'style':_0x64aecf['wrap']},_0x7c806b[_0x240579('0x53')][_0x240579('0x914')](_0x240579('0x128'),{'style':_0x64aecf['bg']}),_0x7c806b['default'][_0x240579('0x914')]('div',{'style':_0x64aecf[_0x240579('0xa4')]},_0x1532b5));};_0x24f605['propTypes']={'background':_0x1724a9[_0x19c50c('0x53')][_0x19c50c('0x4ba')],'zDepth':_0x1724a9['default'][_0x19c50c('0x160')]([0x0,0x1,0x2,0x3,0x4,0x5]),'radius':_0x1724a9[_0x19c50c('0x53')][_0x19c50c('0x913')],'styles':_0x1724a9[_0x19c50c('0x53')][_0x19c50c('0x669')]},_0x24f605['defaultProps']={'background':_0x19c50c('0x15a'),'zDepth':0x1,'radius':0x2,'styles':{}},_0xecc889[_0x19c50c('0x53')]=_0x24f605;},{'lodash/merge':0x127,'prop-types':0x135,'react':_0x322f0f('0x603'),'reactcss':0x176}],0x147:[function(_0x37eb31,_0x316dcc,_0x7f23e8){var _0x58059c=_0x322f0f;'use strict';Object['defineProperty'](_0x7f23e8,_0x58059c('0x866'),{'value':!0x0}),_0x7f23e8['Saturation']=void 0x0;var _0x25e557=function(){function _0x10a529(_0x232c9b,_0x92f7e5){var _0x4fcc71=_0x3e44;for(var _0x11c7b6=0x0;_0x11c7b6<_0x92f7e5[_0x4fcc71('0x1d1')];_0x11c7b6++){var _0x5f52dc=_0x92f7e5[_0x11c7b6];_0x5f52dc[_0x4fcc71('0x836')]=_0x5f52dc[_0x4fcc71('0x836')]||!0x1,_0x5f52dc[_0x4fcc71('0x249')]=!0x0,'value'in _0x5f52dc&&(_0x5f52dc[_0x4fcc71('0xc28')]=!0x0),Object[_0x4fcc71('0x2cd')](_0x232c9b,_0x5f52dc[_0x4fcc71('0xcb6')],_0x5f52dc);}}return function(_0x4e7511,_0x284369,_0x19355a){var _0xeebdd7=_0x3e44;return _0x284369&&_0x10a529(_0x4e7511[_0xeebdd7('0x3ec')],_0x284369),_0x19355a&&_0x10a529(_0x4e7511,_0x19355a),_0x4e7511;};}(),_0x17fcd7=_0x37eb31(_0x58059c('0x603')),_0x2360bb=_0x3d27d9(_0x17fcd7),_0xc505d9=_0x3d27d9(_0x37eb31(_0x58059c('0x79e'))),_0x1861b7=_0x3d27d9(_0x37eb31(_0x58059c('0x19d'))),_0x57b674=function(_0x37141f){var _0x50d8b8=_0x58059c;if(_0x37141f&&_0x37141f[_0x50d8b8('0x866')])return _0x37141f;var _0x9119d={};if(null!=_0x37141f)for(var _0xf1df95 in _0x37141f)Object['prototype'][_0x50d8b8('0x106')][_0x50d8b8('0x928')](_0x37141f,_0xf1df95)&&(_0x9119d[_0xf1df95]=_0x37141f[_0xf1df95]);return _0x9119d['default']=_0x37141f,_0x9119d;}(_0x37eb31(_0x58059c('0x7a1')));function _0x3d27d9(_0x452691){return _0x452691&&_0x452691['__esModule']?_0x452691:{'default':_0x452691};}var _0x611024=_0x7f23e8[_0x58059c('0xc53')]=function(_0x42e550){var _0xe24880=_0x58059c;function _0x1b6445(_0x5acaf0){var _0x27bb3d=_0x3e44;!function(_0xb456ef,_0x2b269c){var _0x4339a8=_0x3e44;if(!(_0xb456ef instanceof _0x2b269c))throw new TypeError(_0x4339a8('0xc2c'));}(this,_0x1b6445);var _0x448a24=function(_0x291c17,_0x5a907b){var _0x27e243=_0x3e44;if(!_0x291c17)throw new ReferenceError(_0x27e243('0xba4'));return!_0x5a907b||_0x27e243('0x669')!=typeof _0x5a907b&&_0x27e243('0x67')!=typeof _0x5a907b?_0x291c17:_0x5a907b;}(this,(_0x1b6445['__proto__']||Object[_0x27bb3d('0x418')](_0x1b6445))['call'](this,_0x5acaf0));return _0x448a24['handleChange']=function(_0xc3d979){var _0x127619=_0x27bb3d;_0x127619('0x67')==typeof _0x448a24[_0x127619('0x2d0')][_0x127619('0x88d')]&&_0x448a24['throttle'](_0x448a24[_0x127619('0x2d0')][_0x127619('0x88d')],_0x57b674[_0x127619('0xb12')](_0xc3d979,_0x448a24[_0x127619('0x2d0')][_0x127619('0x4f4')],_0x448a24[_0x127619('0x1be')]),_0xc3d979);},_0x448a24['handleMouseDown']=function(_0x44ab56){var _0x55c7bf=_0x27bb3d;_0x448a24['handleChange'](_0x44ab56);var _0x23dc50=_0x448a24[_0x55c7bf('0xd8a')]();_0x23dc50[_0x55c7bf('0xe8')](_0x55c7bf('0x22c'),_0x448a24['handleChange']),_0x23dc50['addEventListener'](_0x55c7bf('0xdb9'),_0x448a24[_0x55c7bf('0x9e1')]);},_0x448a24[_0x27bb3d('0x9e1')]=function(){_0x448a24['unbindEventListeners']();},_0x448a24['throttle']=(0x0,_0x1861b7[_0x27bb3d('0x53')])(function(_0x260eea,_0x527396,_0x195aff){_0x260eea(_0x527396,_0x195aff);},0x32),_0x448a24;}return function(_0x216cb5,_0x59b0a3){var _0x6a778e=_0x3e44;if(_0x6a778e('0x67')!=typeof _0x59b0a3&&null!==_0x59b0a3)throw new TypeError(_0x6a778e('0x2f0')+typeof _0x59b0a3);_0x216cb5['prototype']=Object['create'](_0x59b0a3&&_0x59b0a3[_0x6a778e('0x3ec')],{'constructor':{'value':_0x216cb5,'enumerable':!0x1,'writable':!0x0,'configurable':!0x0}}),_0x59b0a3&&(Object[_0x6a778e('0x16')]?Object[_0x6a778e('0x16')](_0x216cb5,_0x59b0a3):_0x216cb5[_0x6a778e('0xc15')]=_0x59b0a3);}(_0x1b6445,_0x42e550),_0x25e557(_0x1b6445,[{'key':_0xe24880('0x79d'),'value':function(){var _0x138705=_0xe24880;this['throttle']['cancel'](),this[_0x138705('0x92b')]();}},{'key':_0xe24880('0xd8a'),'value':function(){var _0x32b974=_0xe24880;for(var _0x15d099=this[_0x32b974('0x1be')],_0x39df33=window;!_0x39df33[_0x32b974('0xda9')][_0x32b974('0xd2f')](_0x15d099)&&_0x39df33[_0x32b974('0xd14')]!==_0x39df33;)_0x39df33=_0x39df33[_0x32b974('0xd14')];return _0x39df33;}},{'key':_0xe24880('0x92b'),'value':function(){var _0x28480a=_0xe24880,_0x267a13=this[_0x28480a('0xd8a')]();_0x267a13[_0x28480a('0xbdd')](_0x28480a('0x22c'),this[_0x28480a('0x521')]),_0x267a13['removeEventListener'](_0x28480a('0xdb9'),this[_0x28480a('0x9e1')]);}},{'key':_0xe24880('0x265'),'value':function(){var _0x302767=_0xe24880,_0x412d34=this,_0x51dd5d=this[_0x302767('0x2d0')][_0x302767('0x1c8')]||{},_0x3e39a7=_0x51dd5d[_0x302767('0x8da')],_0x5133d3=_0x51dd5d[_0x302767('0x501')],_0x763082=_0x51dd5d[_0x302767('0x972')],_0x5bc23f=_0x51dd5d[_0x302767('0x38')],_0x10da52=_0x51dd5d['circle'],_0x2637c3=(0x0,_0xc505d9[_0x302767('0x53')])({'default':{'color':{'absolute':'0px\x200px\x200px\x200px','background':_0x302767('0x148')+this['props'][_0x302767('0x4f4')]['h']+_0x302767('0x1e3'),'borderRadius':this['props'][_0x302767('0xa27')]},'white':{'absolute':_0x302767('0xda0'),'borderRadius':this[_0x302767('0x2d0')][_0x302767('0xa27')]},'black':{'absolute':_0x302767('0xda0'),'boxShadow':this[_0x302767('0x2d0')][_0x302767('0x14a')],'borderRadius':this[_0x302767('0x2d0')][_0x302767('0xa27')]},'pointer':{'position':'absolute','top':-0x64*this[_0x302767('0x2d0')][_0x302767('0xc0f')]['v']+0x64+'%','left':0x64*this['props']['hsv']['s']+'%','cursor':_0x302767('0x53')},'circle':{'width':_0x302767('0x4a7'),'height':'4px','boxShadow':_0x302767('0x26f'),'borderRadius':_0x302767('0xa9b'),'cursor':_0x302767('0xcb0'),'transform':_0x302767('0xa5d')}},'custom':{'color':_0x3e39a7,'white':_0x5133d3,'black':_0x763082,'pointer':_0x5bc23f,'circle':_0x10da52}},{'custom':!!this['props'][_0x302767('0x1c8')]});return _0x2360bb[_0x302767('0x53')][_0x302767('0x914')](_0x302767('0x128'),{'style':_0x2637c3[_0x302767('0x8da')],'ref':function(_0x3f4003){var _0x174220=_0x302767;return _0x412d34[_0x174220('0x1be')]=_0x3f4003;},'onMouseDown':this[_0x302767('0x1f7')],'onTouchMove':this[_0x302767('0x521')],'onTouchStart':this['handleChange']},_0x2360bb['default'][_0x302767('0x914')]('style',null,_0x302767('0x69b')),_0x2360bb[_0x302767('0x53')][_0x302767('0x914')](_0x302767('0x128'),{'style':_0x2637c3[_0x302767('0x501')],'className':_0x302767('0x839')},_0x2360bb['default'][_0x302767('0x914')](_0x302767('0x128'),{'style':_0x2637c3[_0x302767('0x972')],'className':_0x302767('0xb9e')}),_0x2360bb['default']['createElement'](_0x302767('0x128'),{'style':_0x2637c3[_0x302767('0x38')]},this[_0x302767('0x2d0')]['pointer']?_0x2360bb['default'][_0x302767('0x914')](this[_0x302767('0x2d0')]['pointer'],this[_0x302767('0x2d0')]):_0x2360bb[_0x302767('0x53')][_0x302767('0x914')](_0x302767('0x128'),{'style':_0x2637c3['circle']}))));}}]),_0x1b6445;}(_0x17fcd7[_0x58059c('0xbe4')]||_0x17fcd7[_0x58059c('0xd04')]);_0x7f23e8[_0x58059c('0x53')]=_0x611024;},{'../../helpers/saturation':0x16c,'lodash/throttle':0x12c,'react':'react','reactcss':0x176}],0x148:[function(_0x55f29f,_0x49b789,_0x1ac542){var _0x46c74f=_0x322f0f;'use strict';Object[_0x46c74f('0x2cd')](_0x1ac542,'__esModule',{'value':!0x0}),_0x1ac542['Swatch']=void 0x0;var _0x4ec7ba=Object[_0x46c74f('0x7df')]||function(_0x626899){var _0x27a348=_0x46c74f;for(var _0x1a8009=0x1;_0x1a80090.5});return _0x164289[_0x4dac02('0x53')][_0x4dac02('0x914')](_0x4dac02('0x128'),{'style':_0x444203[_0x4dac02('0xa65')]});};_0x5865cc[_0x36daab('0x53')]=_0x37f3d7;},{'react':_0x322f0f('0x603'),'reactcss':0x176}],0x15b:[function(_0x3e7d50,_0x10da74,_0x28b137){var _0x34c792=_0x322f0f;'use strict';Object['defineProperty'](_0x28b137,_0x34c792('0x866'),{'value':!0x0}),_0x28b137[_0x34c792('0x966')]=void 0x0;var _0x25e50e=_0x33d5e2(_0x3e7d50(_0x34c792('0x603'))),_0x5c45d0=_0x33d5e2(_0x3e7d50(_0x34c792('0x79e')));function _0x33d5e2(_0x2b0b0c){var _0x558fda=_0x34c792;return _0x2b0b0c&&_0x2b0b0c[_0x558fda('0x866')]?_0x2b0b0c:{'default':_0x2b0b0c};}var _0x7f34e6=_0x28b137[_0x34c792('0x966')]=function(_0xc5adf){var _0x430898=_0x34c792,_0x3c5cd5=_0xc5adf[_0x430898('0x241')],_0x421da6=_0xc5adf['currentColor'],_0x559809=(0x0,_0x5c45d0['default'])({'default':{'swatches':{'border':_0x430898('0xbe0'),'borderBottom':_0x430898('0x604'),'marginBottom':_0x430898('0x9cc'),'marginTop':_0x430898('0x878')},'new':{'height':'34px','background':_0x430898('0xd11')+_0x3c5cd5['r']+','+_0x3c5cd5['g']+',\x20'+_0x3c5cd5['b']+')','boxShadow':_0x430898('0x379')},'current':{'height':_0x430898('0x2a6'),'background':_0x421da6,'boxShadow':_0x430898('0x590')},'label':{'fontSize':_0x430898('0x545'),'color':_0x430898('0x16b'),'textAlign':'center'}}});return _0x25e50e[_0x430898('0x53')][_0x430898('0x914')](_0x430898('0x128'),null,_0x25e50e['default'][_0x430898('0x914')](_0x430898('0x128'),{'style':_0x559809[_0x430898('0x551')]},'new'),_0x25e50e[_0x430898('0x53')][_0x430898('0x914')]('div',{'style':_0x559809['swatches']},_0x25e50e[_0x430898('0x53')][_0x430898('0x914')](_0x430898('0x128'),{'style':_0x559809[_0x430898('0xbf2')]}),_0x25e50e[_0x430898('0x53')][_0x430898('0x914')]('div',{'style':_0x559809[_0x430898('0x684')]})),_0x25e50e[_0x430898('0x53')][_0x430898('0x914')]('div',{'style':_0x559809[_0x430898('0x551')]},_0x430898('0x684')));};_0x28b137[_0x34c792('0x53')]=_0x7f34e6;},{'react':'react','reactcss':0x176}],0x15c:[function(_0x1a27f8,_0x59fd70,_0x231180){var _0x153bfa=_0x322f0f;'use strict';Object['defineProperty'](_0x231180,_0x153bfa('0x866'),{'value':!0x0}),_0x231180[_0x153bfa('0x78d')]=void 0x0;var _0x3af8a5=Object['assign']||function(_0x3409a9){var _0x340792=_0x153bfa;for(var _0x1006d1=0x1;_0x1006d10x64&&(_0x31467a['a']=0x64),_0x31467a['a']/=0x64,_0x25508e({'h':_0x2cf5ee['h'],'s':_0x2cf5ee['s'],'l':_0x2cf5ee['l'],'a':_0x31467a['a'],'source':_0x50e7a2('0x241')},_0x36dc17));};return _0x49db3b['default'][_0x22d8c6('0x914')](_0x22d8c6('0x128'),{'style':_0x536c1d['fields'],'className':_0x22d8c6('0x8d4')},_0x49db3b[_0x22d8c6('0x53')][_0x22d8c6('0x914')]('div',{'style':_0x536c1d[_0x22d8c6('0x6e0')]},_0x49db3b[_0x22d8c6('0x53')][_0x22d8c6('0x914')](_0x6a17fb[_0x22d8c6('0x39c')],{'style':{'input':_0x536c1d['input'],'label':_0x536c1d['label']},'label':_0x22d8c6('0x49b'),'value':_0x4ed0e7['replace']('#',''),'onChange':_0x20b5ac})),_0x49db3b[_0x22d8c6('0x53')][_0x22d8c6('0x914')](_0x22d8c6('0x128'),{'style':_0x536c1d[_0x22d8c6('0x273')]},_0x49db3b[_0x22d8c6('0x53')][_0x22d8c6('0x914')](_0x6a17fb[_0x22d8c6('0x39c')],{'style':{'input':_0x536c1d[_0x22d8c6('0x382')],'label':_0x536c1d[_0x22d8c6('0x551')]},'label':'r','value':_0x19acf2['r'],'onChange':_0x20b5ac,'dragLabel':_0x22d8c6('0x206'),'dragMax':_0x22d8c6('0x2db')})),_0x49db3b[_0x22d8c6('0x53')]['createElement'](_0x22d8c6('0x128'),{'style':_0x536c1d[_0x22d8c6('0x273')]},_0x49db3b['default']['createElement'](_0x6a17fb['EditableInput'],{'style':{'input':_0x536c1d[_0x22d8c6('0x382')],'label':_0x536c1d['label']},'label':'g','value':_0x19acf2['g'],'onChange':_0x20b5ac,'dragLabel':_0x22d8c6('0x206'),'dragMax':_0x22d8c6('0x2db')})),_0x49db3b[_0x22d8c6('0x53')][_0x22d8c6('0x914')](_0x22d8c6('0x128'),{'style':_0x536c1d[_0x22d8c6('0x273')]},_0x49db3b[_0x22d8c6('0x53')][_0x22d8c6('0x914')](_0x6a17fb[_0x22d8c6('0x39c')],{'style':{'input':_0x536c1d[_0x22d8c6('0x382')],'label':_0x536c1d['label']},'label':'b','value':_0x19acf2['b'],'onChange':_0x20b5ac,'dragLabel':'true','dragMax':_0x22d8c6('0x2db')})),_0x49db3b[_0x22d8c6('0x53')][_0x22d8c6('0x914')](_0x22d8c6('0x128'),{'style':_0x536c1d[_0x22d8c6('0x965')]},_0x49db3b['default'][_0x22d8c6('0x914')](_0x6a17fb[_0x22d8c6('0x39c')],{'style':{'input':_0x536c1d[_0x22d8c6('0x382')],'label':_0x536c1d[_0x22d8c6('0x551')]},'label':'a','value':Math['round'](0x64*_0x19acf2['a']),'onChange':_0x20b5ac,'dragLabel':_0x22d8c6('0x206'),'dragMax':_0x22d8c6('0xbf8')})));};_0x26ddd0['default']=_0x182a0f;},{'../../helpers/color':0x169,'../common':0x149,'react':'react','reactcss':0x176}],0x15e:[function(_0x105ade,_0x37472e,_0x4ac089){var _0x485182=_0x322f0f;'use strict';Object[_0x485182('0x2cd')](_0x4ac089,_0x485182('0x866'),{'value':!0x0}),_0x4ac089[_0x485182('0x75')]=void 0x0;var _0x331756=Object[_0x485182('0x7df')]||function(_0x24662d){var _0x2db5e5=_0x485182;for(var _0x44ce61=0x1;_0x44ce61_0x1707d9?0x1:Math[_0x54e6e6('0xd3b')](0x64*_0x199606/_0x1707d9)/0x64,_0x3d475a['a']!==_0x2ede3c)return{'h':_0x3d475a['h'],'s':_0x3d475a['s'],'l':_0x3d475a['l'],'a':_0x2ede3c,'source':_0x54e6e6('0x241')};}else{var _0x5d808a=void 0x0;if(_0x128168!==(_0x5d808a=_0x3848aa<0x0?0x0:_0x3848aa>_0x47a822?0x1:Math[_0x54e6e6('0xd3b')](0x64*_0x3848aa/_0x47a822)/0x64))return{'h':_0x3d475a['h'],'s':_0x3d475a['s'],'l':_0x3d475a['l'],'a':_0x5d808a,'source':_0x54e6e6('0x241')};}return null;};},{}],0x168:[function(_0x165c5d,_0x568a85,_0x223658){var _0x37cb8b=_0x322f0f;'use strict';Object['defineProperty'](_0x223658,_0x37cb8b('0x866'),{'value':!0x0});var _0x1d07db={},_0x50425d=_0x223658[_0x37cb8b('0x265')]=function(_0x19c9b0,_0x4a1694,_0xcb0c54,_0x1ca85b){var _0x42e286=_0x37cb8b;if(_0x42e286('0x396')==typeof document&&!_0x1ca85b)return null;var _0x546a6b=_0x1ca85b?new _0x1ca85b():document[_0x42e286('0x914')]('canvas');_0x546a6b['width']=0x2*_0xcb0c54,_0x546a6b[_0x42e286('0x448')]=0x2*_0xcb0c54;var _0x2763d4=_0x546a6b[_0x42e286('0xa7b')]('2d');return _0x2763d4?(_0x2763d4['fillStyle']=_0x19c9b0,_0x2763d4[_0x42e286('0xad9')](0x0,0x0,_0x546a6b[_0x42e286('0x9c3')],_0x546a6b[_0x42e286('0x448')]),_0x2763d4['fillStyle']=_0x4a1694,_0x2763d4['fillRect'](0x0,0x0,_0xcb0c54,_0xcb0c54),_0x2763d4['translate'](_0xcb0c54,_0xcb0c54),_0x2763d4[_0x42e286('0xad9')](0x0,0x0,_0xcb0c54,_0xcb0c54),_0x546a6b[_0x42e286('0x952')]()):null;};_0x223658[_0x37cb8b('0x715')]=function(_0x204267,_0x4b7cf7,_0x1add20,_0x1303ab){var _0x3ba46e=_0x204267+'-'+_0x4b7cf7+'-'+_0x1add20+(_0x1303ab?'-server':'');if(_0x1d07db[_0x3ba46e])return _0x1d07db[_0x3ba46e];var _0x1b329b=_0x50425d(_0x204267,_0x4b7cf7,_0x1add20,_0x1303ab);return _0x1d07db[_0x3ba46e]=_0x1b329b,_0x1b329b;};},{}],0x169:[function(_0x5d1491,_0x596277,_0x1ccaba){var _0x3a14c1=_0x322f0f;'use strict';Object['defineProperty'](_0x1ccaba,_0x3a14c1('0x866'),{'value':!0x0}),_0x1ccaba['isvalidColorString']=_0x1ccaba['red']=_0x1ccaba[_0x3a14c1('0x72d')]=_0x1ccaba['isValidHex']=_0x1ccaba[_0x3a14c1('0x9ea')]=_0x1ccaba[_0x3a14c1('0xa70')]=void 0x0;var _0x382192=_0x3662ff(_0x5d1491(_0x3a14c1('0x13f'))),_0x296102=_0x3662ff(_0x5d1491(_0x3a14c1('0x5c9')));function _0x3662ff(_0x2b1e5c){var _0x4bb569=_0x3a14c1;return _0x2b1e5c&&_0x2b1e5c[_0x4bb569('0x866')]?_0x2b1e5c:{'default':_0x2b1e5c};}_0x1ccaba['simpleCheckForValidColor']=function(_0xe8be17){var _0x56313e=_0x3a14c1,_0x5e5428=0x0,_0x563f07=0x0;return(0x0,_0x382192[_0x56313e('0x53')])(['r','g','b','a','h','s','l','v'],function(_0x4f4d6f){var _0x569a64=_0x56313e;_0xe8be17[_0x4f4d6f]&&(_0x5e5428+=0x1,isNaN(_0xe8be17[_0x4f4d6f])||(_0x563f07+=0x1),'s'===_0x4f4d6f||'l'===_0x4f4d6f)&&(/^\d+%$/[_0x569a64('0xb03')](_0xe8be17[_0x4f4d6f])&&(_0x563f07+=0x1));}),_0x5e5428===_0x563f07&&_0xe8be17;};var _0x1080e1=_0x1ccaba[_0x3a14c1('0x9ea')]=function(_0x5ac78a,_0x44f9ed){var _0x39c2ee=_0x3a14c1,_0x4b85cb=_0x5ac78a[_0x39c2ee('0x49b')]?(0x0,_0x296102['default'])(_0x5ac78a[_0x39c2ee('0x49b')]):(0x0,_0x296102[_0x39c2ee('0x53')])(_0x5ac78a),_0x3f6085=_0x4b85cb['toHsl'](),_0x11f519=_0x4b85cb[_0x39c2ee('0xb42')](),_0x907407=_0x4b85cb['toRgb'](),_0x5cb27b=_0x4b85cb[_0x39c2ee('0x494')]();return 0x0===_0x3f6085['s']&&(_0x3f6085['h']=_0x44f9ed||0x0,_0x11f519['h']=_0x44f9ed||0x0),{'hsl':_0x3f6085,'hex':_0x39c2ee('0x4c7')===_0x5cb27b&&0x0===_0x907407['a']?'transparent':'#'+_0x5cb27b,'rgb':_0x907407,'hsv':_0x11f519,'oldHue':_0x5ac78a['h']||_0x44f9ed||_0x3f6085['h'],'source':_0x5ac78a['source']};};_0x1ccaba[_0x3a14c1('0x8e6')]=function(_0x3df374){var _0x3a03b3=_0x3a14c1;if(_0x3a03b3('0x79a')===_0x3df374)return!0x0;var _0xbdd3d2='#'===String(_0x3df374)[_0x3a03b3('0x48b')](0x0)?0x1:0x0;return _0x3df374[_0x3a03b3('0x1d1')]!==0x4+_0xbdd3d2&&_0x3df374[_0x3a03b3('0x1d1')]<0x7+_0xbdd3d2&&(0x0,_0x296102['default'])(_0x3df374)[_0x3a03b3('0x3a5')]();},_0x1ccaba[_0x3a14c1('0x72d')]=function(_0xe8b4d8){var _0x56adfc=_0x3a14c1;if(!_0xe8b4d8)return _0x56adfc('0x15a');var _0x346926=_0x1080e1(_0xe8b4d8);return _0x56adfc('0x79a')===_0x346926[_0x56adfc('0x49b')]?_0x56adfc('0x7cd'):(0x12b*_0x346926[_0x56adfc('0x241')]['r']+0x24b*_0x346926[_0x56adfc('0x241')]['g']+0x72*_0x346926[_0x56adfc('0x241')]['b'])/0x3e8>=0x80?_0x56adfc('0x16b'):_0x56adfc('0x15a');},_0x1ccaba[_0x3a14c1('0xaff')]={'hsl':{'a':0x1,'h':0x0,'l':0.5,'s':0x1},'hex':_0x3a14c1('0x1df'),'rgb':{'r':0xff,'g':0x0,'b':0x0,'a':0x1},'hsv':{'h':0x0,'s':0x1,'v':0x1,'a':0x1}},_0x1ccaba[_0x3a14c1('0x682')]=function(_0x56cde3,_0x13ab1b){var _0x3238f0=_0x3a14c1,_0x25d277=_0x56cde3['replace']('°','');return(0x0,_0x296102[_0x3238f0('0x53')])(_0x13ab1b+'\x20('+_0x25d277+')')[_0x3238f0('0x618')];};},{'lodash/each':0x10c,'tinycolor2':0x17a}],0x16a:[function(_0x471c57,_0x4879dc,_0x404b20){var _0x31465a=_0x322f0f;'use strict';Object[_0x31465a('0x2cd')](_0x404b20,_0x31465a('0x866'),{'value':!0x0}),_0x404b20[_0x31465a('0xb12')]=function(_0xbf9643,_0x1b8fb8,_0x5372d3,_0x2318ba){var _0x3dcce=_0x31465a,_0x20f35e=_0x2318ba[_0x3dcce('0x971')],_0x20a279=_0x2318ba[_0x3dcce('0xa22')],_0x80fa16='number'==typeof _0xbf9643[_0x3dcce('0x147')]?_0xbf9643[_0x3dcce('0x147')]:_0xbf9643[_0x3dcce('0x6a2')][0x0][_0x3dcce('0x147')],_0x10a079=_0x3dcce('0x913')==typeof _0xbf9643[_0x3dcce('0x5e')]?_0xbf9643['pageY']:_0xbf9643[_0x3dcce('0x6a2')][0x0]['pageY'],_0x376e09=_0x80fa16-(_0x2318ba['getBoundingClientRect']()[_0x3dcce('0x7f8')]+window[_0x3dcce('0x211')]),_0x4d9395=_0x10a079-(_0x2318ba[_0x3dcce('0x34f')]()[_0x3dcce('0x68')]+window[_0x3dcce('0xe4')]);if(_0x3dcce('0x1ca')===_0x1b8fb8){var _0x425a02=void 0x0;if(_0x4d9395<0x0)_0x425a02=0x167;else{if(_0x4d9395>_0x20a279)_0x425a02=0x0;else _0x425a02=0x168*(-0x64*_0x4d9395/_0x20a279+0x64)/0x64;}if(_0x5372d3['h']!==_0x425a02)return{'h':_0x425a02,'s':_0x5372d3['s'],'l':_0x5372d3['l'],'a':_0x5372d3['a'],'source':'hsl'};}else{var _0x14baca=void 0x0;if(_0x376e09<0x0)_0x14baca=0x0;else{if(_0x376e09>_0x20f35e)_0x14baca=0x167;else _0x14baca=0x168*(0x64*_0x376e09/_0x20f35e)/0x64;}if(_0x5372d3['h']!==_0x14baca)return{'h':_0x14baca,'s':_0x5372d3['s'],'l':_0x5372d3['l'],'a':_0x5372d3['a'],'source':_0x3dcce('0x4f4')};}return null;};},{}],0x16b:[function(_0x33e35a,_0x17bca6,_0x5bcc5a){var _0x435362=_0x322f0f;'use strict';Object[_0x435362('0x2cd')](_0x5bcc5a,_0x435362('0x866'),{'value':!0x0}),_0x5bcc5a[_0x435362('0xbec')]=void 0x0;var _0x883ced,_0x35b424=Object['assign']||function(_0x24cf56){var _0x1822f6=_0x435362;for(var _0xa4d5a3=0x1;_0xa4d5a30x1&&void 0x0!==arguments[0x1]?arguments[0x1]:_0x148b30('0x50');return function(_0x514038){var _0x1efde2=_0x148b30;function _0x21f76b(){var _0x136e1d=_0x3e44,_0x1cdd06,_0x5bbffd,_0xc0f190;_0x34cc1f(this,_0x21f76b);for(var _0x3b52a8=arguments['length'],_0x1ddd42=Array(_0x3b52a8),_0x55dd7e=0x0;_0x55dd7e<_0x3b52a8;_0x55dd7e++)_0x1ddd42[_0x55dd7e]=arguments[_0x55dd7e];return _0x5bbffd=_0xc0f190=_0x8c6aaf(this,(_0x1cdd06=_0x21f76b['__proto__']||Object['getPrototypeOf'](_0x21f76b))[_0x136e1d('0x928')]['apply'](_0x1cdd06,[this]['concat'](_0x1ddd42))),_0xc0f190[_0x136e1d('0x97c')]={'focus':!0x1},_0xc0f190[_0x136e1d('0xbec')]=function(){return _0xc0f190['setState']({'focus':!0x0});},_0xc0f190[_0x136e1d('0xda')]=function(){var _0x1111ed=_0x136e1d;return _0xc0f190[_0x1111ed('0x4f8')]({'focus':!0x1});},_0x8c6aaf(_0xc0f190,_0x5bbffd);}return _0x251a4b(_0x21f76b,_0x514038),_0x1a2395(_0x21f76b,[{'key':_0x1efde2('0x265'),'value':function(){var _0x579531=_0x1efde2;return _0x12d572[_0x579531('0x53')][_0x579531('0x914')](_0x17255b,{'onFocus':this[_0x579531('0xbec')],'onBlur':this[_0x579531('0xda')]},_0x12d572[_0x579531('0x53')]['createElement'](_0x5a7dac,_0x35b424({},this[_0x579531('0x2d0')],this[_0x579531('0x97c')])));}}]),_0x21f76b;}(_0x12d572[_0x148b30('0x53')]['Component']);};},{'react':_0x322f0f('0x603')}],0x16c:[function(_0x2c8228,_0x57ebb6,_0xf81e25){var _0x393f29=_0x322f0f;'use strict';Object['defineProperty'](_0xf81e25,_0x393f29('0x866'),{'value':!0x0}),_0xf81e25[_0x393f29('0xb12')]=function(_0x346d25,_0x3a2e08,_0x459f50){var _0x58840b=_0x393f29,_0x42ac22=_0x459f50[_0x58840b('0x34f')](),_0x4d6be0=_0x42ac22[_0x58840b('0x9c3')],_0x1de628=_0x42ac22[_0x58840b('0x448')],_0x519f33=_0x58840b('0x913')==typeof _0x346d25[_0x58840b('0x147')]?_0x346d25[_0x58840b('0x147')]:_0x346d25['touches'][0x0][_0x58840b('0x147')],_0x5536bf=_0x58840b('0x913')==typeof _0x346d25[_0x58840b('0x5e')]?_0x346d25[_0x58840b('0x5e')]:_0x346d25[_0x58840b('0x6a2')][0x0][_0x58840b('0x5e')],_0x3bcf67=_0x519f33-(_0x459f50[_0x58840b('0x34f')]()[_0x58840b('0x7f8')]+window[_0x58840b('0x211')]),_0xe02f3a=_0x5536bf-(_0x459f50['getBoundingClientRect']()[_0x58840b('0x68')]+window[_0x58840b('0xe4')]);_0x3bcf67<0x0?_0x3bcf67=0x0:_0x3bcf67>_0x4d6be0&&(_0x3bcf67=_0x4d6be0),_0xe02f3a<0x0?_0xe02f3a=0x0:_0xe02f3a>_0x1de628&&(_0xe02f3a=_0x1de628);var _0x4e1617=_0x3bcf67/_0x4d6be0,_0x2d0f00=0x1-_0xe02f3a/_0x1de628;return{'h':_0x3a2e08['h'],'s':_0x4e1617,'v':_0x2d0f00,'a':_0x3a2e08['a'],'source':_0x58840b('0xc0f')};};},{}],0x16d:[function(_0x18afe4,_0x15908c,_0x33110e){var _0x2e272e=_0x322f0f;'use strict';Object[_0x2e272e('0x2cd')](_0x33110e,_0x2e272e('0x866'),{'value':!0x0}),_0x33110e['CustomPicker']=_0x33110e[_0x2e272e('0x5d8')]=_0x33110e['TwitterPicker']=_0x33110e['SwatchesPicker']=_0x33110e['SliderPicker']=_0x33110e[_0x2e272e('0xd16')]=_0x33110e[_0x2e272e('0x421')]=_0x33110e[_0x2e272e('0xd7d')]=_0x33110e['HuePicker']=_0x33110e[_0x2e272e('0x7ec')]=_0x33110e[_0x2e272e('0x631')]=_0x33110e['ChromePicker']=_0x33110e[_0x2e272e('0x53')]=_0x33110e[_0x2e272e('0x805')]=_0x33110e[_0x2e272e('0x746')]=_0x33110e['AlphaPicker']=void 0x0;var _0x7972e2=_0x18afe4(_0x2e272e('0x18e'));Object[_0x2e272e('0x2cd')](_0x33110e,'AlphaPicker',{'enumerable':!0x0,'get':function(){var _0x4e79f4=_0x2e272e;return _0x32625c(_0x7972e2)[_0x4e79f4('0x53')];}});var _0x1935bc=_0x18afe4(_0x2e272e('0xb21'));Object['defineProperty'](_0x33110e,'BlockPicker',{'enumerable':!0x0,'get':function(){return _0x32625c(_0x1935bc)['default'];}});var _0x5aa7ba=_0x18afe4(_0x2e272e('0x36a'));Object[_0x2e272e('0x2cd')](_0x33110e,_0x2e272e('0x805'),{'enumerable':!0x0,'get':function(){var _0x101956=_0x2e272e;return _0x32625c(_0x5aa7ba)[_0x101956('0x53')];}});var _0x545f2f=_0x18afe4(_0x2e272e('0x5fe'));Object[_0x2e272e('0x2cd')](_0x33110e,_0x2e272e('0x23f'),{'enumerable':!0x0,'get':function(){var _0x211d45=_0x2e272e;return _0x32625c(_0x545f2f)[_0x211d45('0x53')];}});var _0x545738=_0x18afe4(_0x2e272e('0x9ba'));Object[_0x2e272e('0x2cd')](_0x33110e,_0x2e272e('0x631'),{'enumerable':!0x0,'get':function(){return _0x32625c(_0x545738)['default'];}});var _0x554259=_0x18afe4(_0x2e272e('0xac3'));Object[_0x2e272e('0x2cd')](_0x33110e,_0x2e272e('0x7ec'),{'enumerable':!0x0,'get':function(){var _0x1d1c5f=_0x2e272e;return _0x32625c(_0x554259)[_0x1d1c5f('0x53')];}});var _0x35addd=_0x18afe4(_0x2e272e('0x796'));Object['defineProperty'](_0x33110e,_0x2e272e('0x51d'),{'enumerable':!0x0,'get':function(){var _0xfff866=_0x2e272e;return _0x32625c(_0x35addd)[_0xfff866('0x53')];}});var _0x2a118c=_0x18afe4('./components/material/Material');Object[_0x2e272e('0x2cd')](_0x33110e,_0x2e272e('0xd7d'),{'enumerable':!0x0,'get':function(){var _0x5f3acf=_0x2e272e;return _0x32625c(_0x2a118c)[_0x5f3acf('0x53')];}});var _0x1b8bac=_0x18afe4(_0x2e272e('0x76d'));Object[_0x2e272e('0x2cd')](_0x33110e,_0x2e272e('0x421'),{'enumerable':!0x0,'get':function(){var _0x5bf16=_0x2e272e;return _0x32625c(_0x1b8bac)[_0x5bf16('0x53')];}});var _0x142a58=_0x18afe4('./components/sketch/Sketch');Object['defineProperty'](_0x33110e,_0x2e272e('0xd16'),{'enumerable':!0x0,'get':function(){var _0x568a3d=_0x2e272e;return _0x32625c(_0x142a58)[_0x568a3d('0x53')];}});var _0x11d310=_0x18afe4('./components/slider/Slider');Object[_0x2e272e('0x2cd')](_0x33110e,_0x2e272e('0xc8'),{'enumerable':!0x0,'get':function(){var _0x2b92f0=_0x2e272e;return _0x32625c(_0x11d310)[_0x2b92f0('0x53')];}});var _0x35dc6a=_0x18afe4('./components/swatches/Swatches');Object[_0x2e272e('0x2cd')](_0x33110e,_0x2e272e('0xc85'),{'enumerable':!0x0,'get':function(){var _0x4f6717=_0x2e272e;return _0x32625c(_0x35dc6a)[_0x4f6717('0x53')];}});var _0x61b64e=_0x18afe4(_0x2e272e('0xb87'));Object['defineProperty'](_0x33110e,_0x2e272e('0xd48'),{'enumerable':!0x0,'get':function(){return _0x32625c(_0x61b64e)['default'];}});var _0x231427=_0x18afe4(_0x2e272e('0xd8c'));Object[_0x2e272e('0x2cd')](_0x33110e,_0x2e272e('0x5d8'),{'enumerable':!0x0,'get':function(){var _0x56e224=_0x2e272e;return _0x32625c(_0x231427)[_0x56e224('0x53')];}});var _0x4075c=_0x18afe4(_0x2e272e('0xbaf'));Object[_0x2e272e('0x2cd')](_0x33110e,_0x2e272e('0x9aa'),{'enumerable':!0x0,'get':function(){var _0x33e064=_0x2e272e;return _0x32625c(_0x4075c)[_0x33e064('0x53')];}});var _0x431d5a=_0x32625c(_0x545f2f);function _0x32625c(_0x5e833a){var _0x5dc270=_0x2e272e;return _0x5e833a&&_0x5e833a[_0x5dc270('0x866')]?_0x5e833a:{'default':_0x5e833a};}_0x33110e[_0x2e272e('0x53')]=_0x431d5a[_0x2e272e('0x53')];},{'./components/alpha/Alpha':0x137,'./components/block/Block':0x139,'./components/chrome/Chrome':0x13b,'./components/circle/Circle':0x13f,'./components/common/ColorWrap':0x143,'./components/compact/Compact':0x14a,'./components/github/Github':0x14d,'./components/google/Google':0x14f,'./components/hue/Hue':0x153,'./components/material/Material':0x155,'./components/photoshop/Photoshop':0x156,'./components/sketch/Sketch':0x15c,'./components/slider/Slider':0x15f,'./components/swatches/Swatches':0x163,'./components/twitter/Twitter':0x166}],0x16e:[function(_0x236192,_0x26ac55,_0x504bab){var _0x367202=_0x322f0f;(function(_0x4c971e){var _0x18d99b=_0x3e44;/** @license React v16.13.1 + +'use strict'; +/* eslint-disable no-unused-vars */ +var getOwnPropertySymbols = Object.getOwnPropertySymbols; +var hasOwnProperty = Object.prototype.hasOwnProperty; +var propIsEnumerable = Object.prototype.propertyIsEnumerable; + +function toObject(val) { + if (val === null || val === undefined) { + throw new TypeError('Object.assign cannot be called with null or undefined'); + } + + return Object(val); +} + +function shouldUseNative() { + try { + if (!Object.assign) { + return false; + } + + // Detect buggy property enumeration order in older V8 versions. + + // https://bugs.chromium.org/p/v8/issues/detail?id=4118 + var test1 = new String('abc'); // eslint-disable-line no-new-wrappers + test1[5] = 'de'; + if (Object.getOwnPropertyNames(test1)[0] === '5') { + return false; + } + + // https://bugs.chromium.org/p/v8/issues/detail?id=3056 + var test2 = {}; + for (var i = 0; i < 10; i++) { + test2['_' + String.fromCharCode(i)] = i; + } + var order2 = Object.getOwnPropertyNames(test2).map(function (n) { + return test2[n]; + }); + if (order2.join('') !== '0123456789') { + return false; + } + + // https://bugs.chromium.org/p/v8/issues/detail?id=3056 + var test3 = {}; + 'abcdefghijklmnopqrst'.split('').forEach(function (letter) { + test3[letter] = letter; + }); + if (Object.keys(Object.assign({}, test3)).join('') !== + 'abcdefghijklmnopqrst') { + return false; + } + + return true; + } catch (err) { + // We don't expect any of the above to throw, but better to be safe. + return false; + } +} + +module.exports = shouldUseNative() ? Object.assign : function (target, source) { + var from; + var to = toObject(target); + var symbols; + + for (var s = 1; s < arguments.length; s++) { + from = Object(arguments[s]); + + for (var key in from) { + if (hasOwnProperty.call(from, key)) { + to[key] = from[key]; + } + } + + if (getOwnPropertySymbols) { + symbols = getOwnPropertySymbols(from); + for (var i = 0; i < symbols.length; i++) { + if (propIsEnumerable.call(from, symbols[i])) { + to[symbols[i]] = from[symbols[i]]; + } + } + } + } + + return to; +}; + +},{}],306:[function(require,module,exports){ +(function (process){ +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +'use strict'; + +var printWarning = function() {}; + +if (process.env.NODE_ENV !== 'production') { + var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret'); + var loggedTypeFailures = {}; + var has = Function.call.bind(Object.prototype.hasOwnProperty); + + printWarning = function(text) { + var message = 'Warning: ' + text; + if (typeof console !== 'undefined') { + console.error(message); + } + try { + // --- Welcome to debugging React --- + // This error was thrown as a convenience so that you can use this stack + // to find the callsite that caused this warning to fire. + throw new Error(message); + } catch (x) {} + }; +} + +/** + * Assert that the values match with the type specs. + * Error messages are memorized and will only be shown once. + * + * @param {object} typeSpecs Map of name to a ReactPropType + * @param {object} values Runtime values that need to be type-checked + * @param {string} location e.g. "prop", "context", "child context" + * @param {string} componentName Name of the component for error messages. + * @param {?Function} getStack Returns the component stack. + * @private + */ +function checkPropTypes(typeSpecs, values, location, componentName, getStack) { + if (process.env.NODE_ENV !== 'production') { + for (var typeSpecName in typeSpecs) { + if (has(typeSpecs, typeSpecName)) { + var error; + // Prop type validation may throw. In case they do, we don't want to + // fail the render phase where it didn't fail before. So we log it. + // After these have been cleaned up, we'll let them throw. + try { + // This is intentionally an invariant that gets caught. It's the same + // behavior as without this statement except with a better message. + if (typeof typeSpecs[typeSpecName] !== 'function') { + var err = Error( + (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + ); + err.name = 'Invariant Violation'; + throw err; + } + error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret); + } catch (ex) { + error = ex; + } + if (error && !(error instanceof Error)) { + printWarning( + (componentName || 'React class') + ': type specification of ' + + location + ' `' + typeSpecName + '` is invalid; the type checker ' + + 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' + + 'You may have forgotten to pass an argument to the type checker ' + + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + + 'shape all require an argument).' + ); + } + if (error instanceof Error && !(error.message in loggedTypeFailures)) { + // Only monitor this failure once because there tends to be a lot of the + // same error. + loggedTypeFailures[error.message] = true; + + var stack = getStack ? getStack() : ''; + + printWarning( + 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '') + ); + } + } + } + } +} + +/** + * Resets warning cache when testing. + * + * @private + */ +checkPropTypes.resetWarningCache = function() { + if (process.env.NODE_ENV !== 'production') { + loggedTypeFailures = {}; + } +} + +module.exports = checkPropTypes; + +}).call(this,require('_process')) + +},{"./lib/ReactPropTypesSecret":310,"_process":6}],307:[function(require,module,exports){ +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +'use strict'; + +var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret'); + +function emptyFunction() {} +function emptyFunctionWithReset() {} +emptyFunctionWithReset.resetWarningCache = emptyFunction; + +module.exports = function() { + function shim(props, propName, componentName, location, propFullName, secret) { + if (secret === ReactPropTypesSecret) { + // It is still safe when called from React. + return; + } + var err = new Error( + 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' + + 'Use PropTypes.checkPropTypes() to call them. ' + + 'Read more at http://fb.me/use-check-prop-types' + ); + err.name = 'Invariant Violation'; + throw err; + }; + shim.isRequired = shim; + function getShim() { + return shim; + }; + // Important! + // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`. + var ReactPropTypes = { + array: shim, + bool: shim, + func: shim, + number: shim, + object: shim, + string: shim, + symbol: shim, + + any: shim, + arrayOf: getShim, + element: shim, + elementType: shim, + instanceOf: getShim, + node: shim, + objectOf: getShim, + oneOf: getShim, + oneOfType: getShim, + shape: getShim, + exact: getShim, + + checkPropTypes: emptyFunctionWithReset, + resetWarningCache: emptyFunction + }; + + ReactPropTypes.PropTypes = ReactPropTypes; + + return ReactPropTypes; +}; + +},{"./lib/ReactPropTypesSecret":310}],308:[function(require,module,exports){ +(function (process){ +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +'use strict'; + +var ReactIs = require('react-is'); +var assign = require('object-assign'); + +var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret'); +var checkPropTypes = require('./checkPropTypes'); + +var has = Function.call.bind(Object.prototype.hasOwnProperty); +var printWarning = function() {}; + +if (process.env.NODE_ENV !== 'production') { + printWarning = function(text) { + var message = 'Warning: ' + text; + if (typeof console !== 'undefined') { + console.error(message); + } + try { + // --- Welcome to debugging React --- + // This error was thrown as a convenience so that you can use this stack + // to find the callsite that caused this warning to fire. + throw new Error(message); + } catch (x) {} + }; +} + +function emptyFunctionThatReturnsNull() { + return null; +} + +module.exports = function(isValidElement, throwOnDirectAccess) { + /* global Symbol */ + var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator; + var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec. + + /** + * Returns the iterator method function contained on the iterable object. + * + * Be sure to invoke the function with the iterable as context: + * + * var iteratorFn = getIteratorFn(myIterable); + * if (iteratorFn) { + * var iterator = iteratorFn.call(myIterable); + * ... + * } + * + * @param {?object} maybeIterable + * @return {?function} + */ + function getIteratorFn(maybeIterable) { + var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]); + if (typeof iteratorFn === 'function') { + return iteratorFn; + } + } + + /** + * Collection of methods that allow declaration and validation of props that are + * supplied to React components. Example usage: + * + * var Props = require('ReactPropTypes'); + * var MyArticle = React.createClass({ + * propTypes: { + * // An optional string prop named "description". + * description: Props.string, + * + * // A required enum prop named "category". + * category: Props.oneOf(['News','Photos']).isRequired, + * + * // A prop named "dialog" that requires an instance of Dialog. + * dialog: Props.instanceOf(Dialog).isRequired + * }, + * render: function() { ... } + * }); + * + * A more formal specification of how these methods are used: + * + * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...) + * decl := ReactPropTypes.{type}(.isRequired)? + * + * Each and every declaration produces a function with the same signature. This + * allows the creation of custom validation functions. For example: + * + * var MyLink = React.createClass({ + * propTypes: { + * // An optional string or URI prop named "href". + * href: function(props, propName, componentName) { + * var propValue = props[propName]; + * if (propValue != null && typeof propValue !== 'string' && + * !(propValue instanceof URI)) { + * return new Error( + * 'Expected a string or an URI for ' + propName + ' in ' + + * componentName + * ); + * } + * } + * }, + * render: function() {...} + * }); + * + * @internal + */ + + var ANONYMOUS = '<>'; + + // Important! + // Keep this list in sync with production version in `./factoryWithThrowingShims.js`. + var ReactPropTypes = { + array: createPrimitiveTypeChecker('array'), + bool: createPrimitiveTypeChecker('boolean'), + func: createPrimitiveTypeChecker('function'), + number: createPrimitiveTypeChecker('number'), + object: createPrimitiveTypeChecker('object'), + string: createPrimitiveTypeChecker('string'), + symbol: createPrimitiveTypeChecker('symbol'), + + any: createAnyTypeChecker(), + arrayOf: createArrayOfTypeChecker, + element: createElementTypeChecker(), + elementType: createElementTypeTypeChecker(), + instanceOf: createInstanceTypeChecker, + node: createNodeChecker(), + objectOf: createObjectOfTypeChecker, + oneOf: createEnumTypeChecker, + oneOfType: createUnionTypeChecker, + shape: createShapeTypeChecker, + exact: createStrictShapeTypeChecker, + }; + + /** + * inlined Object.is polyfill to avoid requiring consumers ship their own + * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is + */ + /*eslint-disable no-self-compare*/ + function is(x, y) { + // SameValue algorithm + if (x === y) { + // Steps 1-5, 7-10 + // Steps 6.b-6.e: +0 != -0 + return x !== 0 || 1 / x === 1 / y; + } else { + // Step 6.a: NaN == NaN + return x !== x && y !== y; + } + } + /*eslint-enable no-self-compare*/ + + /** + * We use an Error-like object for backward compatibility as people may call + * PropTypes directly and inspect their output. However, we don't use real + * Errors anymore. We don't inspect their stack anyway, and creating them + * is prohibitively expensive if they are created too often, such as what + * happens in oneOfType() for any type before the one that matched. + */ + function PropTypeError(message) { + this.message = message; + this.stack = ''; + } + // Make `instanceof Error` still work for returned errors. + PropTypeError.prototype = Error.prototype; + + function createChainableTypeChecker(validate) { + if (process.env.NODE_ENV !== 'production') { + var manualPropTypeCallCache = {}; + var manualPropTypeWarningCount = 0; + } + function checkType(isRequired, props, propName, componentName, location, propFullName, secret) { + componentName = componentName || ANONYMOUS; + propFullName = propFullName || propName; + + if (secret !== ReactPropTypesSecret) { + if (throwOnDirectAccess) { + // New behavior only for users of `prop-types` package + var err = new Error( + 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' + + 'Use `PropTypes.checkPropTypes()` to call them. ' + + 'Read more at http://fb.me/use-check-prop-types' + ); + err.name = 'Invariant Violation'; + throw err; + } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') { + // Old behavior for people using React.PropTypes + var cacheKey = componentName + ':' + propName; + if ( + !manualPropTypeCallCache[cacheKey] && + // Avoid spamming the console because they are often not actionable except for lib authors + manualPropTypeWarningCount < 3 + ) { + printWarning( + 'You are manually calling a React.PropTypes validation ' + + 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' + + 'and will throw in the standalone `prop-types` package. ' + + 'You may be seeing this warning due to a third-party PropTypes ' + + 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.' + ); + manualPropTypeCallCache[cacheKey] = true; + manualPropTypeWarningCount++; + } + } + } + if (props[propName] == null) { + if (isRequired) { + if (props[propName] === null) { + return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.')); + } + return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.')); + } + return null; + } else { + return validate(props, propName, componentName, location, propFullName); + } + } + + var chainedCheckType = checkType.bind(null, false); + chainedCheckType.isRequired = checkType.bind(null, true); + + return chainedCheckType; + } + + function createPrimitiveTypeChecker(expectedType) { + function validate(props, propName, componentName, location, propFullName, secret) { + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== expectedType) { + // `propValue` being instance of, say, date/regexp, pass the 'object' + // check, but we can offer a more precise error message here rather than + // 'of type `object`'. + var preciseType = getPreciseType(propValue); + + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createAnyTypeChecker() { + return createChainableTypeChecker(emptyFunctionThatReturnsNull); + } + + function createArrayOfTypeChecker(typeChecker) { + function validate(props, propName, componentName, location, propFullName) { + if (typeof typeChecker !== 'function') { + return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.'); + } + var propValue = props[propName]; + if (!Array.isArray(propValue)) { + var propType = getPropType(propValue); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.')); + } + for (var i = 0; i < propValue.length; i++) { + var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret); + if (error instanceof Error) { + return error; + } + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createElementTypeChecker() { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + if (!isValidElement(propValue)) { + var propType = getPropType(propValue); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createElementTypeTypeChecker() { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + if (!ReactIs.isValidElementType(propValue)) { + var propType = getPropType(propValue); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createInstanceTypeChecker(expectedClass) { + function validate(props, propName, componentName, location, propFullName) { + if (!(props[propName] instanceof expectedClass)) { + var expectedClassName = expectedClass.name || ANONYMOUS; + var actualClassName = getClassName(props[propName]); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createEnumTypeChecker(expectedValues) { + if (!Array.isArray(expectedValues)) { + if (process.env.NODE_ENV !== 'production') { + if (arguments.length > 1) { + printWarning( + 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' + + 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).' + ); + } else { + printWarning('Invalid argument supplied to oneOf, expected an array.'); + } + } + return emptyFunctionThatReturnsNull; + } + + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + for (var i = 0; i < expectedValues.length; i++) { + if (is(propValue, expectedValues[i])) { + return null; + } + } + + var valuesString = JSON.stringify(expectedValues, function replacer(key, value) { + var type = getPreciseType(value); + if (type === 'symbol') { + return String(value); + } + return value; + }); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.')); + } + return createChainableTypeChecker(validate); + } + + function createObjectOfTypeChecker(typeChecker) { + function validate(props, propName, componentName, location, propFullName) { + if (typeof typeChecker !== 'function') { + return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.'); + } + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== 'object') { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.')); + } + for (var key in propValue) { + if (has(propValue, key)) { + var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); + if (error instanceof Error) { + return error; + } + } + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createUnionTypeChecker(arrayOfTypeCheckers) { + if (!Array.isArray(arrayOfTypeCheckers)) { + process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0; + return emptyFunctionThatReturnsNull; + } + + for (var i = 0; i < arrayOfTypeCheckers.length; i++) { + var checker = arrayOfTypeCheckers[i]; + if (typeof checker !== 'function') { + printWarning( + 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' + + 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.' + ); + return emptyFunctionThatReturnsNull; + } + } + + function validate(props, propName, componentName, location, propFullName) { + for (var i = 0; i < arrayOfTypeCheckers.length; i++) { + var checker = arrayOfTypeCheckers[i]; + if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) { + return null; + } + } + + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.')); + } + return createChainableTypeChecker(validate); + } + + function createNodeChecker() { + function validate(props, propName, componentName, location, propFullName) { + if (!isNode(props[propName])) { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createShapeTypeChecker(shapeTypes) { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== 'object') { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.')); + } + for (var key in shapeTypes) { + var checker = shapeTypes[key]; + if (!checker) { + continue; + } + var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); + if (error) { + return error; + } + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createStrictShapeTypeChecker(shapeTypes) { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== 'object') { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.')); + } + // We need to check all keys in case some are required but missing from + // props. + var allKeys = assign({}, props[propName], shapeTypes); + for (var key in allKeys) { + var checker = shapeTypes[key]; + if (!checker) { + return new PropTypeError( + 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' + + '\nBad object: ' + JSON.stringify(props[propName], null, ' ') + + '\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ') + ); + } + var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); + if (error) { + return error; + } + } + return null; + } + + return createChainableTypeChecker(validate); + } + + function isNode(propValue) { + switch (typeof propValue) { + case 'number': + case 'string': + case 'undefined': + return true; + case 'boolean': + return !propValue; + case 'object': + if (Array.isArray(propValue)) { + return propValue.every(isNode); + } + if (propValue === null || isValidElement(propValue)) { + return true; + } + + var iteratorFn = getIteratorFn(propValue); + if (iteratorFn) { + var iterator = iteratorFn.call(propValue); + var step; + if (iteratorFn !== propValue.entries) { + while (!(step = iterator.next()).done) { + if (!isNode(step.value)) { + return false; + } + } + } else { + // Iterator will provide entry [k,v] tuples rather than values. + while (!(step = iterator.next()).done) { + var entry = step.value; + if (entry) { + if (!isNode(entry[1])) { + return false; + } + } + } + } + } else { + return false; + } + + return true; + default: + return false; + } + } + + function isSymbol(propType, propValue) { + // Native Symbol. + if (propType === 'symbol') { + return true; + } + + // falsy value can't be a Symbol + if (!propValue) { + return false; + } + + // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol' + if (propValue['@@toStringTag'] === 'Symbol') { + return true; + } + + // Fallback for non-spec compliant Symbols which are polyfilled. + if (typeof Symbol === 'function' && propValue instanceof Symbol) { + return true; + } + + return false; + } + + // Equivalent of `typeof` but with special handling for array and regexp. + function getPropType(propValue) { + var propType = typeof propValue; + if (Array.isArray(propValue)) { + return 'array'; + } + if (propValue instanceof RegExp) { + // Old webkits (at least until Android 4.0) return 'function' rather than + // 'object' for typeof a RegExp. We'll normalize this here so that /bla/ + // passes PropTypes.object. + return 'object'; + } + if (isSymbol(propType, propValue)) { + return 'symbol'; + } + return propType; + } + + // This handles more types than `getPropType`. Only used for error messages. + // See `createPrimitiveTypeChecker`. + function getPreciseType(propValue) { + if (typeof propValue === 'undefined' || propValue === null) { + return '' + propValue; + } + var propType = getPropType(propValue); + if (propType === 'object') { + if (propValue instanceof Date) { + return 'date'; + } else if (propValue instanceof RegExp) { + return 'regexp'; + } + } + return propType; + } + + // Returns a string that is postfixed to a warning about an invalid type. + // For example, "undefined" or "of type array" + function getPostfixForTypeWarning(value) { + var type = getPreciseType(value); + switch (type) { + case 'array': + case 'object': + return 'an ' + type; + case 'boolean': + case 'date': + case 'regexp': + return 'a ' + type; + default: + return type; + } + } + + // Returns class name of the object, if any. + function getClassName(propValue) { + if (!propValue.constructor || !propValue.constructor.name) { + return ANONYMOUS; + } + return propValue.constructor.name; + } + + ReactPropTypes.checkPropTypes = checkPropTypes; + ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache; + ReactPropTypes.PropTypes = ReactPropTypes; + + return ReactPropTypes; +}; + +}).call(this,require('_process')) + +},{"./checkPropTypes":306,"./lib/ReactPropTypesSecret":310,"_process":6,"object-assign":305,"react-is":368}],309:[function(require,module,exports){ +(function (process){ +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +if (process.env.NODE_ENV !== 'production') { + var ReactIs = require('react-is'); + + // By explicitly using `prop-types` you are opting into new development behavior. + // http://fb.me/prop-types-in-prod + var throwOnDirectAccess = true; + module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess); +} else { + // By explicitly using `prop-types` you are opting into new production behavior. + // http://fb.me/prop-types-in-prod + module.exports = require('./factoryWithThrowingShims')(); +} + +}).call(this,require('_process')) + +},{"./factoryWithThrowingShims":307,"./factoryWithTypeCheckers":308,"_process":6,"react-is":368}],310:[function(require,module,exports){ +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +'use strict'; + +var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'; + +module.exports = ReactPropTypesSecret; + +},{}],311:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.AlphaPicker = undefined; + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _common = require('../common'); + +var _AlphaPointer = require('./AlphaPointer'); + +var _AlphaPointer2 = _interopRequireDefault(_AlphaPointer); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var AlphaPicker = exports.AlphaPicker = function AlphaPicker(_ref) { + var rgb = _ref.rgb, + hsl = _ref.hsl, + width = _ref.width, + height = _ref.height, + onChange = _ref.onChange, + direction = _ref.direction, + style = _ref.style, + renderers = _ref.renderers, + pointer = _ref.pointer, + _ref$className = _ref.className, + className = _ref$className === undefined ? '' : _ref$className; + + var styles = (0, _reactcss2.default)({ + 'default': { + picker: { + position: 'relative', + width: width, + height: height + }, + alpha: { + radius: '2px', + style: style + } + } + }); + + return _react2.default.createElement( + 'div', + { style: styles.picker, className: 'alpha-picker ' + className }, + _react2.default.createElement(_common.Alpha, _extends({}, styles.alpha, { + rgb: rgb, + hsl: hsl, + pointer: pointer, + renderers: renderers, + onChange: onChange, + direction: direction + })) + ); +}; + +AlphaPicker.defaultProps = { + width: '316px', + height: '16px', + direction: 'horizontal', + pointer: _AlphaPointer2.default +}; + +exports.default = (0, _common.ColorWrap)(AlphaPicker); +},{"../common":329,"./AlphaPointer":312,"react":"react","reactcss":374}],312:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.AlphaPointer = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var AlphaPointer = exports.AlphaPointer = function AlphaPointer(_ref) { + var direction = _ref.direction; + + var styles = (0, _reactcss2.default)({ + 'default': { + picker: { + width: '18px', + height: '18px', + borderRadius: '50%', + transform: 'translate(-9px, -1px)', + backgroundColor: 'rgb(248, 248, 248)', + boxShadow: '0 1px 4px 0 rgba(0, 0, 0, 0.37)' + } + }, + 'vertical': { + picker: { + transform: 'translate(-3px, -9px)' + } + } + }, { vertical: direction === 'vertical' }); + + return _react2.default.createElement('div', { style: styles.picker }); +}; + +exports.default = AlphaPointer; +},{"react":"react","reactcss":374}],313:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Block = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _propTypes = require('prop-types'); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _merge = require('lodash/merge'); + +var _merge2 = _interopRequireDefault(_merge); + +var _color = require('../../helpers/color'); + +var color = _interopRequireWildcard(_color); + +var _common = require('../common'); + +var _BlockSwatches = require('./BlockSwatches'); + +var _BlockSwatches2 = _interopRequireDefault(_BlockSwatches); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var Block = exports.Block = function Block(_ref) { + var onChange = _ref.onChange, + onSwatchHover = _ref.onSwatchHover, + hex = _ref.hex, + colors = _ref.colors, + width = _ref.width, + triangle = _ref.triangle, + _ref$styles = _ref.styles, + passedStyles = _ref$styles === undefined ? {} : _ref$styles, + _ref$className = _ref.className, + className = _ref$className === undefined ? '' : _ref$className; + + var transparent = hex === 'transparent'; + var handleChange = function handleChange(hexCode, e) { + color.isValidHex(hexCode) && onChange({ + hex: hexCode, + source: 'hex' + }, e); + }; + + var styles = (0, _reactcss2.default)((0, _merge2.default)({ + 'default': { + card: { + width: width, + background: '#fff', + boxShadow: '0 1px rgba(0,0,0,.1)', + borderRadius: '6px', + position: 'relative' + }, + head: { + height: '110px', + background: hex, + borderRadius: '6px 6px 0 0', + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + position: 'relative' + }, + body: { + padding: '10px' + }, + label: { + fontSize: '18px', + color: color.getContrastingColor(hex), + position: 'relative' + }, + triangle: { + width: '0px', + height: '0px', + borderStyle: 'solid', + borderWidth: '0 10px 10px 10px', + borderColor: 'transparent transparent ' + hex + ' transparent', + position: 'absolute', + top: '-10px', + left: '50%', + marginLeft: '-10px' + }, + input: { + width: '100%', + fontSize: '12px', + color: '#666', + border: '0px', + outline: 'none', + height: '22px', + boxShadow: 'inset 0 0 0 1px #ddd', + borderRadius: '4px', + padding: '0 7px', + boxSizing: 'border-box' + } + }, + 'hide-triangle': { + triangle: { + display: 'none' + } + } + }, passedStyles), { 'hide-triangle': triangle === 'hide' }); + + return _react2.default.createElement( + 'div', + { style: styles.card, className: 'block-picker ' + className }, + _react2.default.createElement('div', { style: styles.triangle }), + _react2.default.createElement( + 'div', + { style: styles.head }, + transparent && _react2.default.createElement(_common.Checkboard, { borderRadius: '6px 6px 0 0' }), + _react2.default.createElement( + 'div', + { style: styles.label }, + hex + ) + ), + _react2.default.createElement( + 'div', + { style: styles.body }, + _react2.default.createElement(_BlockSwatches2.default, { colors: colors, onClick: handleChange, onSwatchHover: onSwatchHover }), + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input }, + value: hex, + onChange: handleChange + }) + ) + ); +}; + +Block.propTypes = { + width: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]), + colors: _propTypes2.default.arrayOf(_propTypes2.default.string), + triangle: _propTypes2.default.oneOf(['top', 'hide']), + styles: _propTypes2.default.object +}; + +Block.defaultProps = { + width: 170, + colors: ['#D9E3F0', '#F47373', '#697689', '#37D67A', '#2CCCE4', '#555555', '#dce775', '#ff8a65', '#ba68c8'], + triangle: 'top', + styles: {} +}; + +exports.default = (0, _common.ColorWrap)(Block); +},{"../../helpers/color":361,"../common":329,"./BlockSwatches":314,"lodash/merge":295,"prop-types":309,"react":"react","reactcss":374}],314:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.BlockSwatches = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _map = require('lodash/map'); + +var _map2 = _interopRequireDefault(_map); + +var _common = require('../common'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var BlockSwatches = exports.BlockSwatches = function BlockSwatches(_ref) { + var colors = _ref.colors, + onClick = _ref.onClick, + onSwatchHover = _ref.onSwatchHover; + + var styles = (0, _reactcss2.default)({ + 'default': { + swatches: { + marginRight: '-10px' + }, + swatch: { + width: '22px', + height: '22px', + float: 'left', + marginRight: '10px', + marginBottom: '10px', + borderRadius: '4px' + }, + clear: { + clear: 'both' + } + } + }); + + return _react2.default.createElement( + 'div', + { style: styles.swatches }, + (0, _map2.default)(colors, function (c) { + return _react2.default.createElement(_common.Swatch, { + key: c, + color: c, + style: styles.swatch, + onClick: onClick, + onHover: onSwatchHover, + focusStyle: { + boxShadow: '0 0 4px ' + c + } + }); + }), + _react2.default.createElement('div', { style: styles.clear }) + ); +}; + +exports.default = BlockSwatches; +},{"../common":329,"lodash/map":293,"react":"react","reactcss":374}],315:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Chrome = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _propTypes = require('prop-types'); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _merge = require('lodash/merge'); + +var _merge2 = _interopRequireDefault(_merge); + +var _common = require('../common'); + +var _ChromeFields = require('./ChromeFields'); + +var _ChromeFields2 = _interopRequireDefault(_ChromeFields); + +var _ChromePointer = require('./ChromePointer'); + +var _ChromePointer2 = _interopRequireDefault(_ChromePointer); + +var _ChromePointerCircle = require('./ChromePointerCircle'); + +var _ChromePointerCircle2 = _interopRequireDefault(_ChromePointerCircle); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var Chrome = exports.Chrome = function Chrome(_ref) { + var width = _ref.width, + onChange = _ref.onChange, + disableAlpha = _ref.disableAlpha, + rgb = _ref.rgb, + hsl = _ref.hsl, + hsv = _ref.hsv, + hex = _ref.hex, + renderers = _ref.renderers, + _ref$styles = _ref.styles, + passedStyles = _ref$styles === undefined ? {} : _ref$styles, + _ref$className = _ref.className, + className = _ref$className === undefined ? '' : _ref$className, + defaultView = _ref.defaultView; + + var styles = (0, _reactcss2.default)((0, _merge2.default)({ + 'default': { + picker: { + width: width, + background: '#fff', + borderRadius: '2px', + boxShadow: '0 0 2px rgba(0,0,0,.3), 0 4px 8px rgba(0,0,0,.3)', + boxSizing: 'initial', + fontFamily: 'Menlo' + }, + saturation: { + width: '100%', + paddingBottom: '55%', + position: 'relative', + borderRadius: '2px 2px 0 0', + overflow: 'hidden' + }, + Saturation: { + radius: '2px 2px 0 0' + }, + body: { + padding: '16px 16px 12px' + }, + controls: { + display: 'flex' + }, + color: { + width: '32px' + }, + swatch: { + marginTop: '6px', + width: '16px', + height: '16px', + borderRadius: '8px', + position: 'relative', + overflow: 'hidden' + }, + active: { + absolute: '0px 0px 0px 0px', + borderRadius: '8px', + boxShadow: 'inset 0 0 0 1px rgba(0,0,0,.1)', + background: 'rgba(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ', ' + rgb.a + ')', + zIndex: '2' + }, + toggles: { + flex: '1' + }, + hue: { + height: '10px', + position: 'relative', + marginBottom: '8px' + }, + Hue: { + radius: '2px' + }, + alpha: { + height: '10px', + position: 'relative' + }, + Alpha: { + radius: '2px' + } + }, + 'disableAlpha': { + color: { + width: '22px' + }, + alpha: { + display: 'none' + }, + hue: { + marginBottom: '0px' + }, + swatch: { + width: '10px', + height: '10px', + marginTop: '0px' + } + } + }, passedStyles), { disableAlpha: disableAlpha }); + + return _react2.default.createElement( + 'div', + { style: styles.picker, className: 'chrome-picker ' + className }, + _react2.default.createElement( + 'div', + { style: styles.saturation }, + _react2.default.createElement(_common.Saturation, { + style: styles.Saturation, + hsl: hsl, + hsv: hsv, + pointer: _ChromePointerCircle2.default, + onChange: onChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.body }, + _react2.default.createElement( + 'div', + { style: styles.controls, className: 'flexbox-fix' }, + _react2.default.createElement( + 'div', + { style: styles.color }, + _react2.default.createElement( + 'div', + { style: styles.swatch }, + _react2.default.createElement('div', { style: styles.active }), + _react2.default.createElement(_common.Checkboard, { renderers: renderers }) + ) + ), + _react2.default.createElement( + 'div', + { style: styles.toggles }, + _react2.default.createElement( + 'div', + { style: styles.hue }, + _react2.default.createElement(_common.Hue, { + style: styles.Hue, + hsl: hsl, + pointer: _ChromePointer2.default, + onChange: onChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.alpha }, + _react2.default.createElement(_common.Alpha, { + style: styles.Alpha, + rgb: rgb, + hsl: hsl, + pointer: _ChromePointer2.default, + renderers: renderers, + onChange: onChange + }) + ) + ) + ), + _react2.default.createElement(_ChromeFields2.default, { + rgb: rgb, + hsl: hsl, + hex: hex, + view: defaultView, + onChange: onChange, + disableAlpha: disableAlpha + }) + ) + ); +}; + +Chrome.propTypes = { + width: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]), + disableAlpha: _propTypes2.default.bool, + styles: _propTypes2.default.object, + defaultView: _propTypes2.default.oneOf(["hex", "rgb", "hsl"]) +}; + +Chrome.defaultProps = { + width: 225, + disableAlpha: false, + styles: {} +}; + +exports.default = (0, _common.ColorWrap)(Chrome); +},{"../common":329,"./ChromeFields":316,"./ChromePointer":317,"./ChromePointerCircle":318,"lodash/merge":295,"prop-types":309,"react":"react","reactcss":374}],316:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ChromeFields = undefined; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _color = require('../../helpers/color'); + +var color = _interopRequireWildcard(_color); + +var _isUndefined = require('lodash/isUndefined'); + +var _isUndefined2 = _interopRequireDefault(_isUndefined); + +var _common = require('../common'); + +var _UnfoldMoreHorizontalIcon = require('@icons/material/UnfoldMoreHorizontalIcon'); + +var _UnfoldMoreHorizontalIcon2 = _interopRequireDefault(_UnfoldMoreHorizontalIcon); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /* eslint-disable react/no-did-mount-set-state, no-param-reassign */ + +var ChromeFields = exports.ChromeFields = function (_React$Component) { + _inherits(ChromeFields, _React$Component); + + function ChromeFields(props) { + _classCallCheck(this, ChromeFields); + + var _this = _possibleConstructorReturn(this, (ChromeFields.__proto__ || Object.getPrototypeOf(ChromeFields)).call(this)); + + _this.toggleViews = function () { + if (_this.state.view === 'hex') { + _this.setState({ view: 'rgb' }); + } else if (_this.state.view === 'rgb') { + _this.setState({ view: 'hsl' }); + } else if (_this.state.view === 'hsl') { + if (_this.props.hsl.a === 1) { + _this.setState({ view: 'hex' }); + } else { + _this.setState({ view: 'rgb' }); + } + } + }; + + _this.handleChange = function (data, e) { + if (data.hex) { + color.isValidHex(data.hex) && _this.props.onChange({ + hex: data.hex, + source: 'hex' + }, e); + } else if (data.r || data.g || data.b) { + _this.props.onChange({ + r: data.r || _this.props.rgb.r, + g: data.g || _this.props.rgb.g, + b: data.b || _this.props.rgb.b, + source: 'rgb' + }, e); + } else if (data.a) { + if (data.a < 0) { + data.a = 0; + } else if (data.a > 1) { + data.a = 1; + } + + _this.props.onChange({ + h: _this.props.hsl.h, + s: _this.props.hsl.s, + l: _this.props.hsl.l, + a: Math.round(data.a * 100) / 100, + source: 'rgb' + }, e); + } else if (data.h || data.s || data.l) { + // Remove any occurances of '%'. + if (typeof data.s === 'string' && data.s.includes('%')) { + data.s = data.s.replace('%', ''); + } + if (typeof data.l === 'string' && data.l.includes('%')) { + data.l = data.l.replace('%', ''); + } + + // We store HSL as a unit interval so we need to override the 1 input to 0.01 + if (data.s == 1) { + data.s = 0.01; + } else if (data.l == 1) { + data.l = 0.01; + } + + _this.props.onChange({ + h: data.h || _this.props.hsl.h, + s: Number(!(0, _isUndefined2.default)(data.s) ? data.s : _this.props.hsl.s), + l: Number(!(0, _isUndefined2.default)(data.l) ? data.l : _this.props.hsl.l), + source: 'hsl' + }, e); + } + }; + + _this.showHighlight = function (e) { + e.currentTarget.style.background = '#eee'; + }; + + _this.hideHighlight = function (e) { + e.currentTarget.style.background = 'transparent'; + }; + + if (props.hsl.a !== 1 && props.view === "hex") { + _this.state = { + view: "rgb" + }; + } else { + _this.state = { + view: props.view + }; + } + return _this; + } + + _createClass(ChromeFields, [{ + key: 'render', + value: function render() { + var _this2 = this; + + var styles = (0, _reactcss2.default)({ + 'default': { + wrap: { + paddingTop: '16px', + display: 'flex' + }, + fields: { + flex: '1', + display: 'flex', + marginLeft: '-6px' + }, + field: { + paddingLeft: '6px', + width: '100%' + }, + alpha: { + paddingLeft: '6px', + width: '100%' + }, + toggle: { + width: '32px', + textAlign: 'right', + position: 'relative' + }, + icon: { + marginRight: '-4px', + marginTop: '12px', + cursor: 'pointer', + position: 'relative' + }, + iconHighlight: { + position: 'absolute', + width: '24px', + height: '28px', + background: '#eee', + borderRadius: '4px', + top: '10px', + left: '12px', + display: 'none' + }, + input: { + fontSize: '11px', + color: '#333', + width: '100%', + borderRadius: '2px', + border: 'none', + boxShadow: 'inset 0 0 0 1px #dadada', + height: '21px', + textAlign: 'center' + }, + label: { + textTransform: 'uppercase', + fontSize: '11px', + lineHeight: '11px', + color: '#969696', + textAlign: 'center', + display: 'block', + marginTop: '12px' + }, + svg: { + fill: '#333', + width: '24px', + height: '24px', + border: '1px transparent solid', + borderRadius: '5px' + } + }, + 'disableAlpha': { + alpha: { + display: 'none' + } + } + }, this.props, this.state); + + var fields = void 0; + if (this.state.view === 'hex') { + fields = _react2.default.createElement( + 'div', + { style: styles.fields, className: 'flexbox-fix' }, + _react2.default.createElement( + 'div', + { style: styles.field }, + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input, label: styles.label }, + label: 'hex', value: this.props.hex, + onChange: this.handleChange + }) + ) + ); + } else if (this.state.view === 'rgb') { + fields = _react2.default.createElement( + 'div', + { style: styles.fields, className: 'flexbox-fix' }, + _react2.default.createElement( + 'div', + { style: styles.field }, + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input, label: styles.label }, + label: 'r', + value: this.props.rgb.r, + onChange: this.handleChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.field }, + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input, label: styles.label }, + label: 'g', + value: this.props.rgb.g, + onChange: this.handleChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.field }, + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input, label: styles.label }, + label: 'b', + value: this.props.rgb.b, + onChange: this.handleChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.alpha }, + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input, label: styles.label }, + label: 'a', + value: this.props.rgb.a, + arrowOffset: 0.01, + onChange: this.handleChange + }) + ) + ); + } else if (this.state.view === 'hsl') { + fields = _react2.default.createElement( + 'div', + { style: styles.fields, className: 'flexbox-fix' }, + _react2.default.createElement( + 'div', + { style: styles.field }, + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input, label: styles.label }, + label: 'h', + value: Math.round(this.props.hsl.h), + onChange: this.handleChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.field }, + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input, label: styles.label }, + label: 's', + value: Math.round(this.props.hsl.s * 100) + '%', + onChange: this.handleChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.field }, + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input, label: styles.label }, + label: 'l', + value: Math.round(this.props.hsl.l * 100) + '%', + onChange: this.handleChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.alpha }, + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input, label: styles.label }, + label: 'a', + value: this.props.hsl.a, + arrowOffset: 0.01, + onChange: this.handleChange + }) + ) + ); + } + + return _react2.default.createElement( + 'div', + { style: styles.wrap, className: 'flexbox-fix' }, + fields, + _react2.default.createElement( + 'div', + { style: styles.toggle }, + _react2.default.createElement( + 'div', + { style: styles.icon, onClick: this.toggleViews, ref: function ref(icon) { + return _this2.icon = icon; + } }, + _react2.default.createElement(_UnfoldMoreHorizontalIcon2.default, { + style: styles.svg, + onMouseOver: this.showHighlight, + onMouseEnter: this.showHighlight, + onMouseOut: this.hideHighlight + }) + ) + ) + ); + } + }], [{ + key: 'getDerivedStateFromProps', + value: function getDerivedStateFromProps(nextProps, state) { + if (nextProps.hsl.a !== 1 && state.view === 'hex') { + return { view: 'rgb' }; + } + return null; + } + }]); + + return ChromeFields; +}(_react2.default.Component); + +ChromeFields.defaultProps = { + view: "hex" +}; + +exports.default = ChromeFields; +},{"../../helpers/color":361,"../common":329,"@icons/material/UnfoldMoreHorizontalIcon":97,"lodash/isUndefined":290,"react":"react","reactcss":374}],317:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ChromePointer = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var ChromePointer = exports.ChromePointer = function ChromePointer() { + var styles = (0, _reactcss2.default)({ + 'default': { + picker: { + width: '12px', + height: '12px', + borderRadius: '6px', + transform: 'translate(-6px, -1px)', + backgroundColor: 'rgb(248, 248, 248)', + boxShadow: '0 1px 4px 0 rgba(0, 0, 0, 0.37)' + } + } + }); + + return _react2.default.createElement('div', { style: styles.picker }); +}; + +exports.default = ChromePointer; +},{"react":"react","reactcss":374}],318:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ChromePointerCircle = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var ChromePointerCircle = exports.ChromePointerCircle = function ChromePointerCircle() { + var styles = (0, _reactcss2.default)({ + 'default': { + picker: { + width: '12px', + height: '12px', + borderRadius: '6px', + boxShadow: 'inset 0 0 0 1px #fff', + transform: 'translate(-6px, -6px)' + } + } + }); + + return _react2.default.createElement('div', { style: styles.picker }); +}; + +exports.default = ChromePointerCircle; +},{"react":"react","reactcss":374}],319:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Circle = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _propTypes = require('prop-types'); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _map = require('lodash/map'); + +var _map2 = _interopRequireDefault(_map); + +var _merge = require('lodash/merge'); + +var _merge2 = _interopRequireDefault(_merge); + +var _materialColors = require('material-colors'); + +var material = _interopRequireWildcard(_materialColors); + +var _common = require('../common'); + +var _CircleSwatch = require('./CircleSwatch'); + +var _CircleSwatch2 = _interopRequireDefault(_CircleSwatch); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var Circle = exports.Circle = function Circle(_ref) { + var width = _ref.width, + onChange = _ref.onChange, + onSwatchHover = _ref.onSwatchHover, + colors = _ref.colors, + hex = _ref.hex, + circleSize = _ref.circleSize, + _ref$styles = _ref.styles, + passedStyles = _ref$styles === undefined ? {} : _ref$styles, + circleSpacing = _ref.circleSpacing, + _ref$className = _ref.className, + className = _ref$className === undefined ? '' : _ref$className; + + var styles = (0, _reactcss2.default)((0, _merge2.default)({ + 'default': { + card: { + width: width, + display: 'flex', + flexWrap: 'wrap', + marginRight: -circleSpacing, + marginBottom: -circleSpacing + } + } + }, passedStyles)); + + var handleChange = function handleChange(hexCode, e) { + return onChange({ hex: hexCode, source: 'hex' }, e); + }; + + return _react2.default.createElement( + 'div', + { style: styles.card, className: 'circle-picker ' + className }, + (0, _map2.default)(colors, function (c) { + return _react2.default.createElement(_CircleSwatch2.default, { + key: c, + color: c, + onClick: handleChange, + onSwatchHover: onSwatchHover, + active: hex === c.toLowerCase(), + circleSize: circleSize, + circleSpacing: circleSpacing + }); + }) + ); +}; + +Circle.propTypes = { + width: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]), + circleSize: _propTypes2.default.number, + circleSpacing: _propTypes2.default.number, + styles: _propTypes2.default.object +}; + +Circle.defaultProps = { + width: 252, + circleSize: 28, + circleSpacing: 14, + colors: [material.red['500'], material.pink['500'], material.purple['500'], material.deepPurple['500'], material.indigo['500'], material.blue['500'], material.lightBlue['500'], material.cyan['500'], material.teal['500'], material.green['500'], material.lightGreen['500'], material.lime['500'], material.yellow['500'], material.amber['500'], material.orange['500'], material.deepOrange['500'], material.brown['500'], material.blueGrey['500']], + styles: {} +}; + +exports.default = (0, _common.ColorWrap)(Circle); +},{"../common":329,"./CircleSwatch":320,"lodash/map":293,"lodash/merge":295,"material-colors":304,"prop-types":309,"react":"react","reactcss":374}],320:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.CircleSwatch = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _common = require('../common'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var CircleSwatch = exports.CircleSwatch = function CircleSwatch(_ref) { + var color = _ref.color, + onClick = _ref.onClick, + onSwatchHover = _ref.onSwatchHover, + hover = _ref.hover, + active = _ref.active, + circleSize = _ref.circleSize, + circleSpacing = _ref.circleSpacing; + + var styles = (0, _reactcss2.default)({ + 'default': { + swatch: { + width: circleSize, + height: circleSize, + marginRight: circleSpacing, + marginBottom: circleSpacing, + transform: 'scale(1)', + transition: '100ms transform ease' + }, + Swatch: { + borderRadius: '50%', + background: 'transparent', + boxShadow: 'inset 0 0 0 ' + (circleSize / 2 + 1) + 'px ' + color, + transition: '100ms box-shadow ease' + } + }, + 'hover': { + swatch: { + transform: 'scale(1.2)' + } + }, + 'active': { + Swatch: { + boxShadow: 'inset 0 0 0 3px ' + color + } + } + }, { hover: hover, active: active }); + + return _react2.default.createElement( + 'div', + { style: styles.swatch }, + _react2.default.createElement(_common.Swatch, { + style: styles.Swatch, + color: color, + onClick: onClick, + onHover: onSwatchHover, + focusStyle: { boxShadow: styles.Swatch.boxShadow + ', 0 0 5px ' + color } + }) + ); +}; + +CircleSwatch.defaultProps = { + circleSize: 28, + circleSpacing: 14 +}; + +exports.default = (0, _reactcss.handleHover)(CircleSwatch); +},{"../common":329,"react":"react","reactcss":374}],321:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Alpha = undefined; + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _alpha = require('../../helpers/alpha'); + +var alpha = _interopRequireWildcard(_alpha); + +var _Checkboard = require('./Checkboard'); + +var _Checkboard2 = _interopRequireDefault(_Checkboard); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var Alpha = exports.Alpha = function (_ref) { + _inherits(Alpha, _ref); + + function Alpha() { + var _ref2; + + var _temp, _this, _ret; + + _classCallCheck(this, Alpha); + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref2 = Alpha.__proto__ || Object.getPrototypeOf(Alpha)).call.apply(_ref2, [this].concat(args))), _this), _this.handleChange = function (e) { + var change = alpha.calculateChange(e, _this.props.hsl, _this.props.direction, _this.props.a, _this.container); + change && typeof _this.props.onChange === 'function' && _this.props.onChange(change, e); + }, _this.handleMouseDown = function (e) { + _this.handleChange(e); + window.addEventListener('mousemove', _this.handleChange); + window.addEventListener('mouseup', _this.handleMouseUp); + }, _this.handleMouseUp = function () { + _this.unbindEventListeners(); + }, _this.unbindEventListeners = function () { + window.removeEventListener('mousemove', _this.handleChange); + window.removeEventListener('mouseup', _this.handleMouseUp); + }, _temp), _possibleConstructorReturn(_this, _ret); + } + + _createClass(Alpha, [{ + key: 'componentWillUnmount', + value: function componentWillUnmount() { + this.unbindEventListeners(); + } + }, { + key: 'render', + value: function render() { + var _this2 = this; + + var rgb = this.props.rgb; + var styles = (0, _reactcss2.default)({ + 'default': { + alpha: { + absolute: '0px 0px 0px 0px', + borderRadius: this.props.radius + }, + checkboard: { + absolute: '0px 0px 0px 0px', + overflow: 'hidden', + borderRadius: this.props.radius + }, + gradient: { + absolute: '0px 0px 0px 0px', + background: 'linear-gradient(to right, rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ', 0) 0%,\n rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ', 1) 100%)', + boxShadow: this.props.shadow, + borderRadius: this.props.radius + }, + container: { + position: 'relative', + height: '100%', + margin: '0 3px' + }, + pointer: { + position: 'absolute', + left: rgb.a * 100 + '%' + }, + slider: { + width: '4px', + borderRadius: '1px', + height: '8px', + boxShadow: '0 0 2px rgba(0, 0, 0, .6)', + background: '#fff', + marginTop: '1px', + transform: 'translateX(-2px)' + } + }, + 'vertical': { + gradient: { + background: 'linear-gradient(to bottom, rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ', 0) 0%,\n rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ', 1) 100%)' + }, + pointer: { + left: 0, + top: rgb.a * 100 + '%' + } + }, + 'overwrite': _extends({}, this.props.style) + }, { + vertical: this.props.direction === 'vertical', + overwrite: true + }); + + return _react2.default.createElement( + 'div', + { style: styles.alpha }, + _react2.default.createElement( + 'div', + { style: styles.checkboard }, + _react2.default.createElement(_Checkboard2.default, { renderers: this.props.renderers }) + ), + _react2.default.createElement('div', { style: styles.gradient }), + _react2.default.createElement( + 'div', + { + style: styles.container, + ref: function ref(container) { + return _this2.container = container; + }, + onMouseDown: this.handleMouseDown, + onTouchMove: this.handleChange, + onTouchStart: this.handleChange + }, + _react2.default.createElement( + 'div', + { style: styles.pointer }, + this.props.pointer ? _react2.default.createElement(this.props.pointer, this.props) : _react2.default.createElement('div', { style: styles.slider }) + ) + ) + ); + } + }]); + + return Alpha; +}(_react.PureComponent || _react.Component); + +exports.default = Alpha; +},{"../../helpers/alpha":359,"./Checkboard":322,"react":"react","reactcss":374}],322:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Checkboard = undefined; + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _checkboard = require('../../helpers/checkboard'); + +var checkboard = _interopRequireWildcard(_checkboard); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var Checkboard = exports.Checkboard = function Checkboard(_ref) { + var white = _ref.white, + grey = _ref.grey, + size = _ref.size, + renderers = _ref.renderers, + borderRadius = _ref.borderRadius, + boxShadow = _ref.boxShadow, + children = _ref.children; + + var styles = (0, _reactcss2.default)({ + 'default': { + grid: { + borderRadius: borderRadius, + boxShadow: boxShadow, + absolute: '0px 0px 0px 0px', + background: 'url(' + checkboard.get(white, grey, size, renderers.canvas) + ') center left' + } + } + }); + return (0, _react.isValidElement)(children) ? _react2.default.cloneElement(children, _extends({}, children.props, { style: _extends({}, children.props.style, styles.grid) })) : _react2.default.createElement('div', { style: styles.grid }); +}; + +Checkboard.defaultProps = { + size: 8, + white: 'transparent', + grey: 'rgba(0,0,0,.08)', + renderers: {} +}; + +exports.default = Checkboard; +},{"../../helpers/checkboard":360,"react":"react","reactcss":374}],323:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ColorWrap = undefined; + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _debounce = require('lodash/debounce'); + +var _debounce2 = _interopRequireDefault(_debounce); + +var _color = require('../../helpers/color'); + +var color = _interopRequireWildcard(_color); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var ColorWrap = exports.ColorWrap = function ColorWrap(Picker) { + var ColorPicker = function (_ref) { + _inherits(ColorPicker, _ref); + + function ColorPicker(props) { + _classCallCheck(this, ColorPicker); + + var _this = _possibleConstructorReturn(this, (ColorPicker.__proto__ || Object.getPrototypeOf(ColorPicker)).call(this)); + + _this.handleChange = function (data, event) { + var isValidColor = color.simpleCheckForValidColor(data); + if (isValidColor) { + var colors = color.toState(data, data.h || _this.state.oldHue); + _this.setState(colors); + _this.props.onChangeComplete && _this.debounce(_this.props.onChangeComplete, colors, event); + _this.props.onChange && _this.props.onChange(colors, event); + } + }; + + _this.handleSwatchHover = function (data, event) { + var isValidColor = color.simpleCheckForValidColor(data); + if (isValidColor) { + var colors = color.toState(data, data.h || _this.state.oldHue); + _this.props.onSwatchHover && _this.props.onSwatchHover(colors, event); + } + }; + + _this.state = _extends({}, color.toState(props.color, 0)); + + _this.debounce = (0, _debounce2.default)(function (fn, data, event) { + fn(data, event); + }, 100); + return _this; + } + + _createClass(ColorPicker, [{ + key: 'render', + value: function render() { + var optionalEvents = {}; + if (this.props.onSwatchHover) { + optionalEvents.onSwatchHover = this.handleSwatchHover; + } + + return _react2.default.createElement(Picker, _extends({}, this.props, this.state, { + onChange: this.handleChange + }, optionalEvents)); + } + }], [{ + key: 'getDerivedStateFromProps', + value: function getDerivedStateFromProps(nextProps, state) { + return _extends({}, color.toState(nextProps.color, state.oldHue)); + } + }]); + + return ColorPicker; + }(_react.PureComponent || _react.Component); + + ColorPicker.propTypes = _extends({}, Picker.propTypes); + + ColorPicker.defaultProps = _extends({}, Picker.defaultProps, { + color: { + h: 250, + s: 0.50, + l: 0.20, + a: 1 + } + }); + + return ColorPicker; +}; + +exports.default = ColorWrap; +},{"../../helpers/color":361,"lodash/debounce":267,"react":"react"}],324:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.EditableInput = undefined; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var DEFAULT_ARROW_OFFSET = 1; + +var UP_KEY_CODE = 38; +var DOWN_KEY_CODE = 40; +var VALID_KEY_CODES = [UP_KEY_CODE, DOWN_KEY_CODE]; +var isValidKeyCode = function isValidKeyCode(keyCode) { + return VALID_KEY_CODES.indexOf(keyCode) > -1; +}; +var getNumberValue = function getNumberValue(value) { + return Number(String(value).replace(/%/g, '')); +}; + +var idCounter = 1; + +var EditableInput = exports.EditableInput = function (_ref) { + _inherits(EditableInput, _ref); + + function EditableInput(props) { + _classCallCheck(this, EditableInput); + + var _this = _possibleConstructorReturn(this, (EditableInput.__proto__ || Object.getPrototypeOf(EditableInput)).call(this)); + + _this.handleBlur = function () { + if (_this.state.blurValue) { + _this.setState({ value: _this.state.blurValue, blurValue: null }); + } + }; + + _this.handleChange = function (e) { + _this.setUpdatedValue(e.target.value, e); + }; + + _this.handleKeyDown = function (e) { + // In case `e.target.value` is a percentage remove the `%` character + // and update accordingly with a percentage + // https://github.com/casesandberg/react-color/issues/383 + var value = getNumberValue(e.target.value); + if (!isNaN(value) && isValidKeyCode(e.keyCode)) { + var offset = _this.getArrowOffset(); + var updatedValue = e.keyCode === UP_KEY_CODE ? value + offset : value - offset; + + _this.setUpdatedValue(updatedValue, e); + } + }; + + _this.handleDrag = function (e) { + if (_this.props.dragLabel) { + var newValue = Math.round(_this.props.value + e.movementX); + if (newValue >= 0 && newValue <= _this.props.dragMax) { + _this.props.onChange && _this.props.onChange(_this.getValueObjectWithLabel(newValue), e); + } + } + }; + + _this.handleMouseDown = function (e) { + if (_this.props.dragLabel) { + e.preventDefault(); + _this.handleDrag(e); + window.addEventListener('mousemove', _this.handleDrag); + window.addEventListener('mouseup', _this.handleMouseUp); + } + }; + + _this.handleMouseUp = function () { + _this.unbindEventListeners(); + }; + + _this.unbindEventListeners = function () { + window.removeEventListener('mousemove', _this.handleDrag); + window.removeEventListener('mouseup', _this.handleMouseUp); + }; + + _this.state = { + value: String(props.value).toUpperCase(), + blurValue: String(props.value).toUpperCase() + }; + + _this.inputId = 'rc-editable-input-' + idCounter++; + return _this; + } + + _createClass(EditableInput, [{ + key: 'componentDidUpdate', + value: function componentDidUpdate(prevProps, prevState) { + if (this.props.value !== this.state.value && (prevProps.value !== this.props.value || prevState.value !== this.state.value)) { + if (this.input === document.activeElement) { + this.setState({ blurValue: String(this.props.value).toUpperCase() }); + } else { + this.setState({ value: String(this.props.value).toUpperCase(), blurValue: !this.state.blurValue && String(this.props.value).toUpperCase() }); + } + } + } + }, { + key: 'componentWillUnmount', + value: function componentWillUnmount() { + this.unbindEventListeners(); + } + }, { + key: 'getValueObjectWithLabel', + value: function getValueObjectWithLabel(value) { + return _defineProperty({}, this.props.label, value); + } + }, { + key: 'getArrowOffset', + value: function getArrowOffset() { + return this.props.arrowOffset || DEFAULT_ARROW_OFFSET; + } + }, { + key: 'setUpdatedValue', + value: function setUpdatedValue(value, e) { + var onChangeValue = this.props.label ? this.getValueObjectWithLabel(value) : value; + this.props.onChange && this.props.onChange(onChangeValue, e); + + this.setState({ value: value }); + } + }, { + key: 'render', + value: function render() { + var _this2 = this; + + var styles = (0, _reactcss2.default)({ + 'default': { + wrap: { + position: 'relative' + } + }, + 'user-override': { + wrap: this.props.style && this.props.style.wrap ? this.props.style.wrap : {}, + input: this.props.style && this.props.style.input ? this.props.style.input : {}, + label: this.props.style && this.props.style.label ? this.props.style.label : {} + }, + 'dragLabel-true': { + label: { + cursor: 'ew-resize' + } + } + }, { + 'user-override': true + }, this.props); + + return _react2.default.createElement( + 'div', + { style: styles.wrap }, + _react2.default.createElement('input', { + id: this.inputId, + style: styles.input, + ref: function ref(input) { + return _this2.input = input; + }, + value: this.state.value, + onKeyDown: this.handleKeyDown, + onChange: this.handleChange, + onBlur: this.handleBlur, + placeholder: this.props.placeholder, + spellCheck: 'false' + }), + this.props.label && !this.props.hideLabel ? _react2.default.createElement( + 'label', + { + htmlFor: this.inputId, + style: styles.label, + onMouseDown: this.handleMouseDown + }, + this.props.label + ) : null + ); + } + }]); + + return EditableInput; +}(_react.PureComponent || _react.Component); + +exports.default = EditableInput; +},{"react":"react","reactcss":374}],325:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Hue = undefined; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _hue = require('../../helpers/hue'); + +var hue = _interopRequireWildcard(_hue); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var Hue = exports.Hue = function (_ref) { + _inherits(Hue, _ref); + + function Hue() { + var _ref2; + + var _temp, _this, _ret; + + _classCallCheck(this, Hue); + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref2 = Hue.__proto__ || Object.getPrototypeOf(Hue)).call.apply(_ref2, [this].concat(args))), _this), _this.handleChange = function (e) { + var change = hue.calculateChange(e, _this.props.direction, _this.props.hsl, _this.container); + change && typeof _this.props.onChange === 'function' && _this.props.onChange(change, e); + }, _this.handleMouseDown = function (e) { + _this.handleChange(e); + window.addEventListener('mousemove', _this.handleChange); + window.addEventListener('mouseup', _this.handleMouseUp); + }, _this.handleMouseUp = function () { + _this.unbindEventListeners(); + }, _temp), _possibleConstructorReturn(_this, _ret); + } + + _createClass(Hue, [{ + key: 'componentWillUnmount', + value: function componentWillUnmount() { + this.unbindEventListeners(); + } + }, { + key: 'unbindEventListeners', + value: function unbindEventListeners() { + window.removeEventListener('mousemove', this.handleChange); + window.removeEventListener('mouseup', this.handleMouseUp); + } + }, { + key: 'render', + value: function render() { + var _this2 = this; + + var _props$direction = this.props.direction, + direction = _props$direction === undefined ? 'horizontal' : _props$direction; + + + var styles = (0, _reactcss2.default)({ + 'default': { + hue: { + absolute: '0px 0px 0px 0px', + borderRadius: this.props.radius, + boxShadow: this.props.shadow + }, + container: { + padding: '0 2px', + position: 'relative', + height: '100%', + borderRadius: this.props.radius + }, + pointer: { + position: 'absolute', + left: this.props.hsl.h * 100 / 360 + '%' + }, + slider: { + marginTop: '1px', + width: '4px', + borderRadius: '1px', + height: '8px', + boxShadow: '0 0 2px rgba(0, 0, 0, .6)', + background: '#fff', + transform: 'translateX(-2px)' + } + }, + 'vertical': { + pointer: { + left: '0px', + top: -(this.props.hsl.h * 100 / 360) + 100 + '%' + } + } + }, { vertical: direction === 'vertical' }); + + return _react2.default.createElement( + 'div', + { style: styles.hue }, + _react2.default.createElement( + 'div', + { + className: 'hue-' + direction, + style: styles.container, + ref: function ref(container) { + return _this2.container = container; + }, + onMouseDown: this.handleMouseDown, + onTouchMove: this.handleChange, + onTouchStart: this.handleChange + }, + _react2.default.createElement( + 'style', + null, + '\n .hue-horizontal {\n background: linear-gradient(to right, #f00 0%, #ff0 17%, #0f0\n 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);\n background: -webkit-linear-gradient(to right, #f00 0%, #ff0\n 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);\n }\n\n .hue-vertical {\n background: linear-gradient(to top, #f00 0%, #ff0 17%, #0f0 33%,\n #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);\n background: -webkit-linear-gradient(to top, #f00 0%, #ff0 17%,\n #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);\n }\n ' + ), + _react2.default.createElement( + 'div', + { style: styles.pointer }, + this.props.pointer ? _react2.default.createElement(this.props.pointer, this.props) : _react2.default.createElement('div', { style: styles.slider }) + ) + ) + ); + } + }]); + + return Hue; +}(_react.PureComponent || _react.Component); + +exports.default = Hue; +},{"../../helpers/hue":362,"react":"react","reactcss":374}],326:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Raised = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _propTypes = require('prop-types'); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _merge = require('lodash/merge'); + +var _merge2 = _interopRequireDefault(_merge); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var Raised = exports.Raised = function Raised(_ref) { + var zDepth = _ref.zDepth, + radius = _ref.radius, + background = _ref.background, + children = _ref.children, + _ref$styles = _ref.styles, + passedStyles = _ref$styles === undefined ? {} : _ref$styles; + + var styles = (0, _reactcss2.default)((0, _merge2.default)({ + 'default': { + wrap: { + position: 'relative', + display: 'inline-block' + }, + content: { + position: 'relative' + }, + bg: { + absolute: '0px 0px 0px 0px', + boxShadow: '0 ' + zDepth + 'px ' + zDepth * 4 + 'px rgba(0,0,0,.24)', + borderRadius: radius, + background: background + } + }, + 'zDepth-0': { + bg: { + boxShadow: 'none' + } + }, + + 'zDepth-1': { + bg: { + boxShadow: '0 2px 10px rgba(0,0,0,.12), 0 2px 5px rgba(0,0,0,.16)' + } + }, + 'zDepth-2': { + bg: { + boxShadow: '0 6px 20px rgba(0,0,0,.19), 0 8px 17px rgba(0,0,0,.2)' + } + }, + 'zDepth-3': { + bg: { + boxShadow: '0 17px 50px rgba(0,0,0,.19), 0 12px 15px rgba(0,0,0,.24)' + } + }, + 'zDepth-4': { + bg: { + boxShadow: '0 25px 55px rgba(0,0,0,.21), 0 16px 28px rgba(0,0,0,.22)' + } + }, + 'zDepth-5': { + bg: { + boxShadow: '0 40px 77px rgba(0,0,0,.22), 0 27px 24px rgba(0,0,0,.2)' + } + }, + 'square': { + bg: { + borderRadius: '0' + } + }, + 'circle': { + bg: { + borderRadius: '50%' + } + } + }, passedStyles), { 'zDepth-1': zDepth === 1 }); + + return _react2.default.createElement( + 'div', + { style: styles.wrap }, + _react2.default.createElement('div', { style: styles.bg }), + _react2.default.createElement( + 'div', + { style: styles.content }, + children + ) + ); +}; + +Raised.propTypes = { + background: _propTypes2.default.string, + zDepth: _propTypes2.default.oneOf([0, 1, 2, 3, 4, 5]), + radius: _propTypes2.default.number, + styles: _propTypes2.default.object +}; + +Raised.defaultProps = { + background: '#fff', + zDepth: 1, + radius: 2, + styles: {} +}; + +exports.default = Raised; +},{"lodash/merge":295,"prop-types":309,"react":"react","reactcss":374}],327:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Saturation = undefined; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _throttle = require('lodash/throttle'); + +var _throttle2 = _interopRequireDefault(_throttle); + +var _saturation = require('../../helpers/saturation'); + +var saturation = _interopRequireWildcard(_saturation); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var Saturation = exports.Saturation = function (_ref) { + _inherits(Saturation, _ref); + + function Saturation(props) { + _classCallCheck(this, Saturation); + + var _this = _possibleConstructorReturn(this, (Saturation.__proto__ || Object.getPrototypeOf(Saturation)).call(this, props)); + + _this.handleChange = function (e) { + typeof _this.props.onChange === 'function' && _this.throttle(_this.props.onChange, saturation.calculateChange(e, _this.props.hsl, _this.container), e); + }; + + _this.handleMouseDown = function (e) { + _this.handleChange(e); + var renderWindow = _this.getContainerRenderWindow(); + renderWindow.addEventListener('mousemove', _this.handleChange); + renderWindow.addEventListener('mouseup', _this.handleMouseUp); + }; + + _this.handleMouseUp = function () { + _this.unbindEventListeners(); + }; + + _this.throttle = (0, _throttle2.default)(function (fn, data, e) { + fn(data, e); + }, 50); + return _this; + } + + _createClass(Saturation, [{ + key: 'componentWillUnmount', + value: function componentWillUnmount() { + this.throttle.cancel(); + this.unbindEventListeners(); + } + }, { + key: 'getContainerRenderWindow', + value: function getContainerRenderWindow() { + var container = this.container; + + var renderWindow = window; + while (!renderWindow.document.contains(container) && renderWindow.parent !== renderWindow) { + renderWindow = renderWindow.parent; + } + return renderWindow; + } + }, { + key: 'unbindEventListeners', + value: function unbindEventListeners() { + var renderWindow = this.getContainerRenderWindow(); + renderWindow.removeEventListener('mousemove', this.handleChange); + renderWindow.removeEventListener('mouseup', this.handleMouseUp); + } + }, { + key: 'render', + value: function render() { + var _this2 = this; + + var _ref2 = this.props.style || {}, + color = _ref2.color, + white = _ref2.white, + black = _ref2.black, + pointer = _ref2.pointer, + circle = _ref2.circle; + + var styles = (0, _reactcss2.default)({ + 'default': { + color: { + absolute: '0px 0px 0px 0px', + background: 'hsl(' + this.props.hsl.h + ',100%, 50%)', + borderRadius: this.props.radius + }, + white: { + absolute: '0px 0px 0px 0px', + borderRadius: this.props.radius + }, + black: { + absolute: '0px 0px 0px 0px', + boxShadow: this.props.shadow, + borderRadius: this.props.radius + }, + pointer: { + position: 'absolute', + top: -(this.props.hsv.v * 100) + 100 + '%', + left: this.props.hsv.s * 100 + '%', + cursor: 'default' + }, + circle: { + width: '4px', + height: '4px', + boxShadow: '0 0 0 1.5px #fff, inset 0 0 1px 1px rgba(0,0,0,.3),\n 0 0 1px 2px rgba(0,0,0,.4)', + borderRadius: '50%', + cursor: 'hand', + transform: 'translate(-2px, -2px)' + } + }, + 'custom': { + color: color, + white: white, + black: black, + pointer: pointer, + circle: circle + } + }, { 'custom': !!this.props.style }); + + return _react2.default.createElement( + 'div', + { + style: styles.color, + ref: function ref(container) { + return _this2.container = container; + }, + onMouseDown: this.handleMouseDown, + onTouchMove: this.handleChange, + onTouchStart: this.handleChange + }, + _react2.default.createElement( + 'style', + null, + '\n .saturation-white {\n background: -webkit-linear-gradient(to right, #fff, rgba(255,255,255,0));\n background: linear-gradient(to right, #fff, rgba(255,255,255,0));\n }\n .saturation-black {\n background: -webkit-linear-gradient(to top, #000, rgba(0,0,0,0));\n background: linear-gradient(to top, #000, rgba(0,0,0,0));\n }\n ' + ), + _react2.default.createElement( + 'div', + { style: styles.white, className: 'saturation-white' }, + _react2.default.createElement('div', { style: styles.black, className: 'saturation-black' }), + _react2.default.createElement( + 'div', + { style: styles.pointer }, + this.props.pointer ? _react2.default.createElement(this.props.pointer, this.props) : _react2.default.createElement('div', { style: styles.circle }) + ) + ) + ); + } + }]); + + return Saturation; +}(_react.PureComponent || _react.Component); + +exports.default = Saturation; +},{"../../helpers/saturation":364,"lodash/throttle":300,"react":"react","reactcss":374}],328:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Swatch = undefined; + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _interaction = require('../../helpers/interaction'); + +var _Checkboard = require('./Checkboard'); + +var _Checkboard2 = _interopRequireDefault(_Checkboard); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var ENTER = 13; + +var Swatch = exports.Swatch = function Swatch(_ref) { + var color = _ref.color, + style = _ref.style, + _ref$onClick = _ref.onClick, + onClick = _ref$onClick === undefined ? function () {} : _ref$onClick, + onHover = _ref.onHover, + _ref$title = _ref.title, + title = _ref$title === undefined ? color : _ref$title, + children = _ref.children, + focus = _ref.focus, + _ref$focusStyle = _ref.focusStyle, + focusStyle = _ref$focusStyle === undefined ? {} : _ref$focusStyle; + + var transparent = color === 'transparent'; + var styles = (0, _reactcss2.default)({ + default: { + swatch: _extends({ + background: color, + height: '100%', + width: '100%', + cursor: 'pointer', + position: 'relative', + outline: 'none' + }, style, focus ? focusStyle : {}) + } + }); + + var handleClick = function handleClick(e) { + return onClick(color, e); + }; + var handleKeyDown = function handleKeyDown(e) { + return e.keyCode === ENTER && onClick(color, e); + }; + var handleHover = function handleHover(e) { + return onHover(color, e); + }; + + var optionalEvents = {}; + if (onHover) { + optionalEvents.onMouseOver = handleHover; + } + + return _react2.default.createElement( + 'div', + _extends({ + style: styles.swatch, + onClick: handleClick, + title: title, + tabIndex: 0, + onKeyDown: handleKeyDown + }, optionalEvents), + children, + transparent && _react2.default.createElement(_Checkboard2.default, { + borderRadius: styles.swatch.borderRadius, + boxShadow: 'inset 0 0 0 1px rgba(0,0,0,0.1)' + }) + ); +}; + +exports.default = (0, _interaction.handleFocus)(Swatch); +},{"../../helpers/interaction":363,"./Checkboard":322,"react":"react","reactcss":374}],329:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _Alpha = require('./Alpha'); + +Object.defineProperty(exports, 'Alpha', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Alpha).default; + } +}); + +var _Checkboard = require('./Checkboard'); + +Object.defineProperty(exports, 'Checkboard', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Checkboard).default; + } +}); + +var _EditableInput = require('./EditableInput'); + +Object.defineProperty(exports, 'EditableInput', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_EditableInput).default; + } +}); + +var _Hue = require('./Hue'); + +Object.defineProperty(exports, 'Hue', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Hue).default; + } +}); + +var _Raised = require('./Raised'); + +Object.defineProperty(exports, 'Raised', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Raised).default; + } +}); + +var _Saturation = require('./Saturation'); + +Object.defineProperty(exports, 'Saturation', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Saturation).default; + } +}); + +var _ColorWrap = require('./ColorWrap'); + +Object.defineProperty(exports, 'ColorWrap', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_ColorWrap).default; + } +}); + +var _Swatch = require('./Swatch'); + +Object.defineProperty(exports, 'Swatch', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Swatch).default; + } +}); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +},{"./Alpha":321,"./Checkboard":322,"./ColorWrap":323,"./EditableInput":324,"./Hue":325,"./Raised":326,"./Saturation":327,"./Swatch":328}],330:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Compact = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _propTypes = require('prop-types'); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _map = require('lodash/map'); + +var _map2 = _interopRequireDefault(_map); + +var _merge = require('lodash/merge'); + +var _merge2 = _interopRequireDefault(_merge); + +var _color = require('../../helpers/color'); + +var color = _interopRequireWildcard(_color); + +var _common = require('../common'); + +var _CompactColor = require('./CompactColor'); + +var _CompactColor2 = _interopRequireDefault(_CompactColor); + +var _CompactFields = require('./CompactFields'); + +var _CompactFields2 = _interopRequireDefault(_CompactFields); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var Compact = exports.Compact = function Compact(_ref) { + var onChange = _ref.onChange, + onSwatchHover = _ref.onSwatchHover, + colors = _ref.colors, + hex = _ref.hex, + rgb = _ref.rgb, + _ref$styles = _ref.styles, + passedStyles = _ref$styles === undefined ? {} : _ref$styles, + _ref$className = _ref.className, + className = _ref$className === undefined ? '' : _ref$className; + + var styles = (0, _reactcss2.default)((0, _merge2.default)({ + 'default': { + Compact: { + background: '#f6f6f6', + radius: '4px' + }, + compact: { + paddingTop: '5px', + paddingLeft: '5px', + boxSizing: 'initial', + width: '240px' + }, + clear: { + clear: 'both' + } + } + }, passedStyles)); + + var handleChange = function handleChange(data, e) { + if (data.hex) { + color.isValidHex(data.hex) && onChange({ + hex: data.hex, + source: 'hex' + }, e); + } else { + onChange(data, e); + } + }; + + return _react2.default.createElement( + _common.Raised, + { style: styles.Compact, styles: passedStyles }, + _react2.default.createElement( + 'div', + { style: styles.compact, className: 'compact-picker ' + className }, + _react2.default.createElement( + 'div', + null, + (0, _map2.default)(colors, function (c) { + return _react2.default.createElement(_CompactColor2.default, { + key: c, + color: c, + active: c.toLowerCase() === hex, + onClick: handleChange, + onSwatchHover: onSwatchHover + }); + }), + _react2.default.createElement('div', { style: styles.clear }) + ), + _react2.default.createElement(_CompactFields2.default, { hex: hex, rgb: rgb, onChange: handleChange }) + ) + ); +}; + +Compact.propTypes = { + colors: _propTypes2.default.arrayOf(_propTypes2.default.string), + styles: _propTypes2.default.object +}; + +Compact.defaultProps = { + colors: ['#4D4D4D', '#999999', '#FFFFFF', '#F44E3B', '#FE9200', '#FCDC00', '#DBDF00', '#A4DD00', '#68CCCA', '#73D8FF', '#AEA1FF', '#FDA1FF', '#333333', '#808080', '#cccccc', '#D33115', '#E27300', '#FCC400', '#B0BC00', '#68BC00', '#16A5A5', '#009CE0', '#7B64FF', '#FA28FF', '#000000', '#666666', '#B3B3B3', '#9F0500', '#C45100', '#FB9E00', '#808900', '#194D33', '#0C797D', '#0062B1', '#653294', '#AB149E'], + styles: {} +}; + +exports.default = (0, _common.ColorWrap)(Compact); +},{"../../helpers/color":361,"../common":329,"./CompactColor":331,"./CompactFields":332,"lodash/map":293,"lodash/merge":295,"prop-types":309,"react":"react","reactcss":374}],331:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.CompactColor = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _color = require('../../helpers/color'); + +var colorUtils = _interopRequireWildcard(_color); + +var _common = require('../common'); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var CompactColor = exports.CompactColor = function CompactColor(_ref) { + var color = _ref.color, + _ref$onClick = _ref.onClick, + onClick = _ref$onClick === undefined ? function () {} : _ref$onClick, + onSwatchHover = _ref.onSwatchHover, + active = _ref.active; + + var styles = (0, _reactcss2.default)({ + 'default': { + color: { + background: color, + width: '15px', + height: '15px', + float: 'left', + marginRight: '5px', + marginBottom: '5px', + position: 'relative', + cursor: 'pointer' + }, + dot: { + absolute: '5px 5px 5px 5px', + background: colorUtils.getContrastingColor(color), + borderRadius: '50%', + opacity: '0' + } + }, + 'active': { + dot: { + opacity: '1' + } + }, + 'color-#FFFFFF': { + color: { + boxShadow: 'inset 0 0 0 1px #ddd' + }, + dot: { + background: '#000' + } + }, + 'transparent': { + dot: { + background: '#000' + } + } + }, { active: active, 'color-#FFFFFF': color === '#FFFFFF', 'transparent': color === 'transparent' }); + + return _react2.default.createElement( + _common.Swatch, + { + style: styles.color, + color: color, + onClick: onClick, + onHover: onSwatchHover, + focusStyle: { boxShadow: '0 0 4px ' + color } + }, + _react2.default.createElement('div', { style: styles.dot }) + ); +}; + +exports.default = CompactColor; +},{"../../helpers/color":361,"../common":329,"react":"react","reactcss":374}],332:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.CompactFields = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _common = require('../common'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var CompactFields = exports.CompactFields = function CompactFields(_ref) { + var hex = _ref.hex, + rgb = _ref.rgb, + onChange = _ref.onChange; + + var styles = (0, _reactcss2.default)({ + 'default': { + fields: { + display: 'flex', + paddingBottom: '6px', + paddingRight: '5px', + position: 'relative' + }, + active: { + position: 'absolute', + top: '6px', + left: '5px', + height: '9px', + width: '9px', + background: hex + }, + HEXwrap: { + flex: '6', + position: 'relative' + }, + HEXinput: { + width: '80%', + padding: '0px', + paddingLeft: '20%', + border: 'none', + outline: 'none', + background: 'none', + fontSize: '12px', + color: '#333', + height: '16px' + }, + HEXlabel: { + display: 'none' + }, + RGBwrap: { + flex: '3', + position: 'relative' + }, + RGBinput: { + width: '70%', + padding: '0px', + paddingLeft: '30%', + border: 'none', + outline: 'none', + background: 'none', + fontSize: '12px', + color: '#333', + height: '16px' + }, + RGBlabel: { + position: 'absolute', + top: '3px', + left: '0px', + lineHeight: '16px', + textTransform: 'uppercase', + fontSize: '12px', + color: '#999' + } + } + }); + + var handleChange = function handleChange(data, e) { + if (data.r || data.g || data.b) { + onChange({ + r: data.r || rgb.r, + g: data.g || rgb.g, + b: data.b || rgb.b, + source: 'rgb' + }, e); + } else { + onChange({ + hex: data.hex, + source: 'hex' + }, e); + } + }; + + return _react2.default.createElement( + 'div', + { style: styles.fields, className: 'flexbox-fix' }, + _react2.default.createElement('div', { style: styles.active }), + _react2.default.createElement(_common.EditableInput, { + style: { wrap: styles.HEXwrap, input: styles.HEXinput, label: styles.HEXlabel }, + label: 'hex', + value: hex, + onChange: handleChange + }), + _react2.default.createElement(_common.EditableInput, { + style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel }, + label: 'r', + value: rgb.r, + onChange: handleChange + }), + _react2.default.createElement(_common.EditableInput, { + style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel }, + label: 'g', + value: rgb.g, + onChange: handleChange + }), + _react2.default.createElement(_common.EditableInput, { + style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel }, + label: 'b', + value: rgb.b, + onChange: handleChange + }) + ); +}; + +exports.default = CompactFields; +},{"../common":329,"react":"react","reactcss":374}],333:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Github = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _propTypes = require('prop-types'); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _map = require('lodash/map'); + +var _map2 = _interopRequireDefault(_map); + +var _merge = require('lodash/merge'); + +var _merge2 = _interopRequireDefault(_merge); + +var _common = require('../common'); + +var _GithubSwatch = require('./GithubSwatch'); + +var _GithubSwatch2 = _interopRequireDefault(_GithubSwatch); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var Github = exports.Github = function Github(_ref) { + var width = _ref.width, + colors = _ref.colors, + onChange = _ref.onChange, + onSwatchHover = _ref.onSwatchHover, + triangle = _ref.triangle, + _ref$styles = _ref.styles, + passedStyles = _ref$styles === undefined ? {} : _ref$styles, + _ref$className = _ref.className, + className = _ref$className === undefined ? '' : _ref$className; + + var styles = (0, _reactcss2.default)((0, _merge2.default)({ + 'default': { + card: { + width: width, + background: '#fff', + border: '1px solid rgba(0,0,0,0.2)', + boxShadow: '0 3px 12px rgba(0,0,0,0.15)', + borderRadius: '4px', + position: 'relative', + padding: '5px', + display: 'flex', + flexWrap: 'wrap' + }, + triangle: { + position: 'absolute', + border: '7px solid transparent', + borderBottomColor: '#fff' + }, + triangleShadow: { + position: 'absolute', + border: '8px solid transparent', + borderBottomColor: 'rgba(0,0,0,0.15)' + } + }, + 'hide-triangle': { + triangle: { + display: 'none' + }, + triangleShadow: { + display: 'none' + } + }, + 'top-left-triangle': { + triangle: { + top: '-14px', + left: '10px' + }, + triangleShadow: { + top: '-16px', + left: '9px' + } + }, + 'top-right-triangle': { + triangle: { + top: '-14px', + right: '10px' + }, + triangleShadow: { + top: '-16px', + right: '9px' + } + }, + 'bottom-left-triangle': { + triangle: { + top: '35px', + left: '10px', + transform: 'rotate(180deg)' + }, + triangleShadow: { + top: '37px', + left: '9px', + transform: 'rotate(180deg)' + } + }, + 'bottom-right-triangle': { + triangle: { + top: '35px', + right: '10px', + transform: 'rotate(180deg)' + }, + triangleShadow: { + top: '37px', + right: '9px', + transform: 'rotate(180deg)' + } + } + }, passedStyles), { + 'hide-triangle': triangle === 'hide', + 'top-left-triangle': triangle === 'top-left', + 'top-right-triangle': triangle === 'top-right', + 'bottom-left-triangle': triangle === 'bottom-left', + 'bottom-right-triangle': triangle === 'bottom-right' + }); + + var handleChange = function handleChange(hex, e) { + return onChange({ hex: hex, source: 'hex' }, e); + }; + + return _react2.default.createElement( + 'div', + { style: styles.card, className: 'github-picker ' + className }, + _react2.default.createElement('div', { style: styles.triangleShadow }), + _react2.default.createElement('div', { style: styles.triangle }), + (0, _map2.default)(colors, function (c) { + return _react2.default.createElement(_GithubSwatch2.default, { + color: c, + key: c, + onClick: handleChange, + onSwatchHover: onSwatchHover + }); + }) + ); +}; + +Github.propTypes = { + width: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]), + colors: _propTypes2.default.arrayOf(_propTypes2.default.string), + triangle: _propTypes2.default.oneOf(['hide', 'top-left', 'top-right', 'bottom-left', 'bottom-right']), + styles: _propTypes2.default.object +}; + +Github.defaultProps = { + width: 200, + colors: ['#B80000', '#DB3E00', '#FCCB00', '#008B02', '#006B76', '#1273DE', '#004DCF', '#5300EB', '#EB9694', '#FAD0C3', '#FEF3BD', '#C1E1C5', '#BEDADC', '#C4DEF6', '#BED3F3', '#D4C4FB'], + triangle: 'top-left', + styles: {} +}; + +exports.default = (0, _common.ColorWrap)(Github); +},{"../common":329,"./GithubSwatch":334,"lodash/map":293,"lodash/merge":295,"prop-types":309,"react":"react","reactcss":374}],334:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.GithubSwatch = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _common = require('../common'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var GithubSwatch = exports.GithubSwatch = function GithubSwatch(_ref) { + var hover = _ref.hover, + color = _ref.color, + onClick = _ref.onClick, + onSwatchHover = _ref.onSwatchHover; + + var hoverSwatch = { + position: 'relative', + zIndex: '2', + outline: '2px solid #fff', + boxShadow: '0 0 5px 2px rgba(0,0,0,0.25)' + }; + + var styles = (0, _reactcss2.default)({ + 'default': { + swatch: { + width: '25px', + height: '25px', + fontSize: '0' + } + }, + 'hover': { + swatch: hoverSwatch + } + }, { hover: hover }); + + return _react2.default.createElement( + 'div', + { style: styles.swatch }, + _react2.default.createElement(_common.Swatch, { + color: color, + onClick: onClick, + onHover: onSwatchHover, + focusStyle: hoverSwatch + }) + ); +}; + +exports.default = (0, _reactcss.handleHover)(GithubSwatch); +},{"../common":329,"react":"react","reactcss":374}],335:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Google = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _propTypes = require('prop-types'); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _merge = require('lodash/merge'); + +var _merge2 = _interopRequireDefault(_merge); + +var _common = require('../common'); + +var _GooglePointerCircle = require('./GooglePointerCircle'); + +var _GooglePointerCircle2 = _interopRequireDefault(_GooglePointerCircle); + +var _GooglePointer = require('./GooglePointer'); + +var _GooglePointer2 = _interopRequireDefault(_GooglePointer); + +var _GoogleFields = require('./GoogleFields'); + +var _GoogleFields2 = _interopRequireDefault(_GoogleFields); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var Google = exports.Google = function Google(_ref) { + var width = _ref.width, + onChange = _ref.onChange, + rgb = _ref.rgb, + hsl = _ref.hsl, + hsv = _ref.hsv, + hex = _ref.hex, + header = _ref.header, + _ref$styles = _ref.styles, + passedStyles = _ref$styles === undefined ? {} : _ref$styles, + _ref$className = _ref.className, + className = _ref$className === undefined ? '' : _ref$className; + + var styles = (0, _reactcss2.default)((0, _merge2.default)({ + 'default': { + picker: { + width: width, + background: '#fff', + border: '1px solid #dfe1e5', + boxSizing: 'initial', + display: 'flex', + flexWrap: 'wrap', + borderRadius: '8px 8px 0px 0px' + }, + head: { + height: '57px', + width: '100%', + paddingTop: '16px', + paddingBottom: '16px', + paddingLeft: '16px', + fontSize: '20px', + boxSizing: 'border-box', + fontFamily: 'Roboto-Regular,HelveticaNeue,Arial,sans-serif' + }, + saturation: { + width: '70%', + padding: '0px', + position: 'relative', + overflow: 'hidden' + }, + swatch: { + width: '30%', + height: '228px', + padding: '0px', + background: 'rgba(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ', 1)', + position: 'relative', + overflow: 'hidden' + }, + body: { + margin: 'auto', + width: '95%' + }, + controls: { + display: 'flex', + boxSizing: 'border-box', + height: '52px', + paddingTop: '22px' + }, + color: { + width: '32px' + }, + hue: { + height: '8px', + position: 'relative', + margin: '0px 16px 0px 16px', + width: '100%' + }, + Hue: { + radius: '2px' + } + } + }, passedStyles)); + return _react2.default.createElement( + 'div', + { style: styles.picker, className: 'google-picker ' + className }, + _react2.default.createElement( + 'div', + { style: styles.head }, + header + ), + _react2.default.createElement('div', { style: styles.swatch }), + _react2.default.createElement( + 'div', + { style: styles.saturation }, + _react2.default.createElement(_common.Saturation, { + hsl: hsl, + hsv: hsv, + pointer: _GooglePointerCircle2.default, + onChange: onChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.body }, + _react2.default.createElement( + 'div', + { style: styles.controls, className: 'flexbox-fix' }, + _react2.default.createElement( + 'div', + { style: styles.hue }, + _react2.default.createElement(_common.Hue, { + style: styles.Hue, + hsl: hsl, + radius: '4px', + pointer: _GooglePointer2.default, + onChange: onChange + }) + ) + ), + _react2.default.createElement(_GoogleFields2.default, { + rgb: rgb, + hsl: hsl, + hex: hex, + hsv: hsv, + onChange: onChange + }) + ) + ); +}; + +Google.propTypes = { + width: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]), + styles: _propTypes2.default.object, + header: _propTypes2.default.string + +}; + +Google.defaultProps = { + width: 652, + styles: {}, + header: 'Color picker' +}; + +exports.default = (0, _common.ColorWrap)(Google); +},{"../common":329,"./GoogleFields":336,"./GooglePointer":337,"./GooglePointerCircle":338,"lodash/merge":295,"prop-types":309,"react":"react","reactcss":374}],336:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.GoogleFields = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _color = require('../../helpers/color'); + +var color = _interopRequireWildcard(_color); + +var _common = require('../common'); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var GoogleFields = exports.GoogleFields = function GoogleFields(_ref) { + var onChange = _ref.onChange, + rgb = _ref.rgb, + hsl = _ref.hsl, + hex = _ref.hex, + hsv = _ref.hsv; + + + var handleChange = function handleChange(data, e) { + if (data.hex) { + color.isValidHex(data.hex) && onChange({ + hex: data.hex, + source: 'hex' + }, e); + } else if (data.rgb) { + var values = data.rgb.split(','); + color.isvalidColorString(data.rgb, 'rgb') && onChange({ + r: values[0], + g: values[1], + b: values[2], + a: 1, + source: 'rgb' + }, e); + } else if (data.hsv) { + var _values = data.hsv.split(','); + if (color.isvalidColorString(data.hsv, 'hsv')) { + _values[2] = _values[2].replace('%', ''); + _values[1] = _values[1].replace('%', ''); + _values[0] = _values[0].replace('°', ''); + if (_values[1] == 1) { + _values[1] = 0.01; + } else if (_values[2] == 1) { + _values[2] = 0.01; + } + onChange({ + h: Number(_values[0]), + s: Number(_values[1]), + v: Number(_values[2]), + source: 'hsv' + }, e); + } + } else if (data.hsl) { + var _values2 = data.hsl.split(','); + if (color.isvalidColorString(data.hsl, 'hsl')) { + _values2[2] = _values2[2].replace('%', ''); + _values2[1] = _values2[1].replace('%', ''); + _values2[0] = _values2[0].replace('°', ''); + if (hsvValue[1] == 1) { + hsvValue[1] = 0.01; + } else if (hsvValue[2] == 1) { + hsvValue[2] = 0.01; + } + onChange({ + h: Number(_values2[0]), + s: Number(_values2[1]), + v: Number(_values2[2]), + source: 'hsl' + }, e); + } + } + }; + + var styles = (0, _reactcss2.default)({ + 'default': { + wrap: { + display: 'flex', + height: '100px', + marginTop: '4px' + }, + fields: { + width: '100%' + }, + column: { + paddingTop: '10px', + display: 'flex', + justifyContent: 'space-between' + }, + double: { + padding: '0px 4.4px', + boxSizing: 'border-box' + }, + input: { + width: '100%', + height: '38px', + boxSizing: 'border-box', + padding: '4px 10% 3px', + textAlign: 'center', + border: '1px solid #dadce0', + fontSize: '11px', + textTransform: 'lowercase', + borderRadius: '5px', + outline: 'none', + fontFamily: 'Roboto,Arial,sans-serif' + }, + input2: { + height: '38px', + width: '100%', + border: '1px solid #dadce0', + boxSizing: 'border-box', + fontSize: '11px', + textTransform: 'lowercase', + borderRadius: '5px', + outline: 'none', + paddingLeft: '10px', + fontFamily: 'Roboto,Arial,sans-serif' + }, + label: { + textAlign: 'center', + fontSize: '12px', + background: '#fff', + position: 'absolute', + textTransform: 'uppercase', + color: '#3c4043', + width: '35px', + top: '-6px', + left: '0', + right: '0', + marginLeft: 'auto', + marginRight: 'auto', + fontFamily: 'Roboto,Arial,sans-serif' + }, + label2: { + left: '10px', + textAlign: 'center', + fontSize: '12px', + background: '#fff', + position: 'absolute', + textTransform: 'uppercase', + color: '#3c4043', + width: '32px', + top: '-6px', + fontFamily: 'Roboto,Arial,sans-serif' + }, + single: { + flexGrow: '1', + margin: '0px 4.4px' + } + } + }); + + var rgbValue = rgb.r + ', ' + rgb.g + ', ' + rgb.b; + var hslValue = Math.round(hsl.h) + '\xB0, ' + Math.round(hsl.s * 100) + '%, ' + Math.round(hsl.l * 100) + '%'; + var hsvValue = Math.round(hsv.h) + '\xB0, ' + Math.round(hsv.s * 100) + '%, ' + Math.round(hsv.v * 100) + '%'; + + return _react2.default.createElement( + 'div', + { style: styles.wrap, className: 'flexbox-fix' }, + _react2.default.createElement( + 'div', + { style: styles.fields }, + _react2.default.createElement( + 'div', + { style: styles.double }, + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input, label: styles.label }, + label: 'hex', + value: hex, + onChange: handleChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.column }, + _react2.default.createElement( + 'div', + { style: styles.single }, + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input2, label: styles.label2 }, + label: 'rgb', + value: rgbValue, + onChange: handleChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.single }, + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input2, label: styles.label2 }, + label: 'hsv', + value: hsvValue, + onChange: handleChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.single }, + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input2, label: styles.label2 }, + label: 'hsl', + value: hslValue, + onChange: handleChange + }) + ) + ) + ) + ); +}; + +exports.default = GoogleFields; +},{"../../helpers/color":361,"../common":329,"react":"react","reactcss":374}],337:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.GooglePointer = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _propTypes = require('prop-types'); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var GooglePointer = exports.GooglePointer = function GooglePointer(props) { + var styles = (0, _reactcss2.default)({ + 'default': { + picker: { + width: '20px', + height: '20px', + borderRadius: '22px', + transform: 'translate(-10px, -7px)', + background: 'hsl(' + Math.round(props.hsl.h) + ', 100%, 50%)', + border: '2px white solid' + } + } + }); + + return _react2.default.createElement('div', { style: styles.picker }); +}; + +GooglePointer.propTypes = { + hsl: _propTypes2.default.shape({ + h: _propTypes2.default.number, + s: _propTypes2.default.number, + l: _propTypes2.default.number, + a: _propTypes2.default.number + }) +}; + +GooglePointer.defaultProps = { + hsl: { a: 1, h: 249.94, l: 0.2, s: 0.50 } +}; + +exports.default = GooglePointer; +},{"prop-types":309,"react":"react","reactcss":374}],338:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.GooglePointerCircle = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _propTypes = require('prop-types'); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var GooglePointerCircle = exports.GooglePointerCircle = function GooglePointerCircle(props) { + var styles = (0, _reactcss2.default)({ + 'default': { + picker: { + width: '20px', + height: '20px', + borderRadius: '22px', + border: '2px #fff solid', + transform: 'translate(-12px, -13px)', + background: 'hsl(' + Math.round(props.hsl.h) + ', ' + Math.round(props.hsl.s * 100) + '%, ' + Math.round(props.hsl.l * 100) + '%)' + } + } + }); + + return _react2.default.createElement('div', { style: styles.picker }); +}; + +GooglePointerCircle.propTypes = { + hsl: _propTypes2.default.shape({ + h: _propTypes2.default.number, + s: _propTypes2.default.number, + l: _propTypes2.default.number, + a: _propTypes2.default.number + }) +}; + +GooglePointerCircle.defaultProps = { + hsl: { a: 1, h: 249.94, l: 0.2, s: 0.50 } +}; + +exports.default = GooglePointerCircle; +},{"prop-types":309,"react":"react","reactcss":374}],339:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.HuePicker = undefined; + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _propTypes = require('prop-types'); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _merge = require('lodash/merge'); + +var _merge2 = _interopRequireDefault(_merge); + +var _common = require('../common'); + +var _HuePointer = require('./HuePointer'); + +var _HuePointer2 = _interopRequireDefault(_HuePointer); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var HuePicker = exports.HuePicker = function HuePicker(_ref) { + var width = _ref.width, + height = _ref.height, + onChange = _ref.onChange, + hsl = _ref.hsl, + direction = _ref.direction, + pointer = _ref.pointer, + _ref$styles = _ref.styles, + passedStyles = _ref$styles === undefined ? {} : _ref$styles, + _ref$className = _ref.className, + className = _ref$className === undefined ? '' : _ref$className; + + var styles = (0, _reactcss2.default)((0, _merge2.default)({ + 'default': { + picker: { + position: 'relative', + width: width, + height: height + }, + hue: { + radius: '2px' + } + } + }, passedStyles)); + + // Overwrite to provide pure hue color + var handleChange = function handleChange(data) { + return onChange({ a: 1, h: data.h, l: 0.5, s: 1 }); + }; + + return _react2.default.createElement( + 'div', + { style: styles.picker, className: 'hue-picker ' + className }, + _react2.default.createElement(_common.Hue, _extends({}, styles.hue, { + hsl: hsl, + pointer: pointer, + onChange: handleChange, + direction: direction + })) + ); +}; + +HuePicker.propTypes = { + styles: _propTypes2.default.object +}; +HuePicker.defaultProps = { + width: '316px', + height: '16px', + direction: 'horizontal', + pointer: _HuePointer2.default, + styles: {} +}; + +exports.default = (0, _common.ColorWrap)(HuePicker); +},{"../common":329,"./HuePointer":340,"lodash/merge":295,"prop-types":309,"react":"react","reactcss":374}],340:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SliderPointer = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var SliderPointer = exports.SliderPointer = function SliderPointer(_ref) { + var direction = _ref.direction; + + var styles = (0, _reactcss2.default)({ + 'default': { + picker: { + width: '18px', + height: '18px', + borderRadius: '50%', + transform: 'translate(-9px, -1px)', + backgroundColor: 'rgb(248, 248, 248)', + boxShadow: '0 1px 4px 0 rgba(0, 0, 0, 0.37)' + } + }, + 'vertical': { + picker: { + transform: 'translate(-3px, -9px)' + } + } + }, { vertical: direction === 'vertical' }); + + return _react2.default.createElement('div', { style: styles.picker }); +}; + +exports.default = SliderPointer; +},{"react":"react","reactcss":374}],341:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Material = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _merge = require('lodash/merge'); + +var _merge2 = _interopRequireDefault(_merge); + +var _color = require('../../helpers/color'); + +var color = _interopRequireWildcard(_color); + +var _common = require('../common'); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var Material = exports.Material = function Material(_ref) { + var onChange = _ref.onChange, + hex = _ref.hex, + rgb = _ref.rgb, + _ref$styles = _ref.styles, + passedStyles = _ref$styles === undefined ? {} : _ref$styles, + _ref$className = _ref.className, + className = _ref$className === undefined ? '' : _ref$className; + + var styles = (0, _reactcss2.default)((0, _merge2.default)({ + 'default': { + material: { + width: '98px', + height: '98px', + padding: '16px', + fontFamily: 'Roboto' + }, + HEXwrap: { + position: 'relative' + }, + HEXinput: { + width: '100%', + marginTop: '12px', + fontSize: '15px', + color: '#333', + padding: '0px', + border: '0px', + borderBottom: '2px solid ' + hex, + outline: 'none', + height: '30px' + }, + HEXlabel: { + position: 'absolute', + top: '0px', + left: '0px', + fontSize: '11px', + color: '#999999', + textTransform: 'capitalize' + }, + Hex: { + style: {} + }, + RGBwrap: { + position: 'relative' + }, + RGBinput: { + width: '100%', + marginTop: '12px', + fontSize: '15px', + color: '#333', + padding: '0px', + border: '0px', + borderBottom: '1px solid #eee', + outline: 'none', + height: '30px' + }, + RGBlabel: { + position: 'absolute', + top: '0px', + left: '0px', + fontSize: '11px', + color: '#999999', + textTransform: 'capitalize' + }, + split: { + display: 'flex', + marginRight: '-10px', + paddingTop: '11px' + }, + third: { + flex: '1', + paddingRight: '10px' + } + } + }, passedStyles)); + + var handleChange = function handleChange(data, e) { + if (data.hex) { + color.isValidHex(data.hex) && onChange({ + hex: data.hex, + source: 'hex' + }, e); + } else if (data.r || data.g || data.b) { + onChange({ + r: data.r || rgb.r, + g: data.g || rgb.g, + b: data.b || rgb.b, + source: 'rgb' + }, e); + } + }; + + return _react2.default.createElement( + _common.Raised, + { styles: passedStyles }, + _react2.default.createElement( + 'div', + { style: styles.material, className: 'material-picker ' + className }, + _react2.default.createElement(_common.EditableInput, { + style: { wrap: styles.HEXwrap, input: styles.HEXinput, label: styles.HEXlabel }, + label: 'hex', + value: hex, + onChange: handleChange + }), + _react2.default.createElement( + 'div', + { style: styles.split, className: 'flexbox-fix' }, + _react2.default.createElement( + 'div', + { style: styles.third }, + _react2.default.createElement(_common.EditableInput, { + style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel }, + label: 'r', value: rgb.r, + onChange: handleChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.third }, + _react2.default.createElement(_common.EditableInput, { + style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel }, + label: 'g', + value: rgb.g, + onChange: handleChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.third }, + _react2.default.createElement(_common.EditableInput, { + style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel }, + label: 'b', + value: rgb.b, + onChange: handleChange + }) + ) + ) + ) + ); +}; + +exports.default = (0, _common.ColorWrap)(Material); +},{"../../helpers/color":361,"../common":329,"lodash/merge":295,"react":"react","reactcss":374}],342:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Photoshop = undefined; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _propTypes = require('prop-types'); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _merge = require('lodash/merge'); + +var _merge2 = _interopRequireDefault(_merge); + +var _common = require('../common'); + +var _PhotoshopFields = require('./PhotoshopFields'); + +var _PhotoshopFields2 = _interopRequireDefault(_PhotoshopFields); + +var _PhotoshopPointerCircle = require('./PhotoshopPointerCircle'); + +var _PhotoshopPointerCircle2 = _interopRequireDefault(_PhotoshopPointerCircle); + +var _PhotoshopPointer = require('./PhotoshopPointer'); + +var _PhotoshopPointer2 = _interopRequireDefault(_PhotoshopPointer); + +var _PhotoshopButton = require('./PhotoshopButton'); + +var _PhotoshopButton2 = _interopRequireDefault(_PhotoshopButton); + +var _PhotoshopPreviews = require('./PhotoshopPreviews'); + +var _PhotoshopPreviews2 = _interopRequireDefault(_PhotoshopPreviews); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var Photoshop = exports.Photoshop = function (_React$Component) { + _inherits(Photoshop, _React$Component); + + function Photoshop(props) { + _classCallCheck(this, Photoshop); + + var _this = _possibleConstructorReturn(this, (Photoshop.__proto__ || Object.getPrototypeOf(Photoshop)).call(this)); + + _this.state = { + currentColor: props.hex + }; + return _this; + } + + _createClass(Photoshop, [{ + key: 'render', + value: function render() { + var _props = this.props, + _props$styles = _props.styles, + passedStyles = _props$styles === undefined ? {} : _props$styles, + _props$className = _props.className, + className = _props$className === undefined ? '' : _props$className; + + var styles = (0, _reactcss2.default)((0, _merge2.default)({ + 'default': { + picker: { + background: '#DCDCDC', + borderRadius: '4px', + boxShadow: '0 0 0 1px rgba(0,0,0,.25), 0 8px 16px rgba(0,0,0,.15)', + boxSizing: 'initial', + width: '513px' + }, + head: { + backgroundImage: 'linear-gradient(-180deg, #F0F0F0 0%, #D4D4D4 100%)', + borderBottom: '1px solid #B1B1B1', + boxShadow: 'inset 0 1px 0 0 rgba(255,255,255,.2), inset 0 -1px 0 0 rgba(0,0,0,.02)', + height: '23px', + lineHeight: '24px', + borderRadius: '4px 4px 0 0', + fontSize: '13px', + color: '#4D4D4D', + textAlign: 'center' + }, + body: { + padding: '15px 15px 0', + display: 'flex' + }, + saturation: { + width: '256px', + height: '256px', + position: 'relative', + border: '2px solid #B3B3B3', + borderBottom: '2px solid #F0F0F0', + overflow: 'hidden' + }, + hue: { + position: 'relative', + height: '256px', + width: '19px', + marginLeft: '10px', + border: '2px solid #B3B3B3', + borderBottom: '2px solid #F0F0F0' + }, + controls: { + width: '180px', + marginLeft: '10px' + }, + top: { + display: 'flex' + }, + previews: { + width: '60px' + }, + actions: { + flex: '1', + marginLeft: '20px' + } + } + }, passedStyles)); + + return _react2.default.createElement( + 'div', + { style: styles.picker, className: 'photoshop-picker ' + className }, + _react2.default.createElement( + 'div', + { style: styles.head }, + this.props.header + ), + _react2.default.createElement( + 'div', + { style: styles.body, className: 'flexbox-fix' }, + _react2.default.createElement( + 'div', + { style: styles.saturation }, + _react2.default.createElement(_common.Saturation, { + hsl: this.props.hsl, + hsv: this.props.hsv, + pointer: _PhotoshopPointerCircle2.default, + onChange: this.props.onChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.hue }, + _react2.default.createElement(_common.Hue, { + direction: 'vertical', + hsl: this.props.hsl, + pointer: _PhotoshopPointer2.default, + onChange: this.props.onChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.controls }, + _react2.default.createElement( + 'div', + { style: styles.top, className: 'flexbox-fix' }, + _react2.default.createElement( + 'div', + { style: styles.previews }, + _react2.default.createElement(_PhotoshopPreviews2.default, { + rgb: this.props.rgb, + currentColor: this.state.currentColor + }) + ), + _react2.default.createElement( + 'div', + { style: styles.actions }, + _react2.default.createElement(_PhotoshopButton2.default, { label: 'OK', onClick: this.props.onAccept, active: true }), + _react2.default.createElement(_PhotoshopButton2.default, { label: 'Cancel', onClick: this.props.onCancel }), + _react2.default.createElement(_PhotoshopFields2.default, { + onChange: this.props.onChange, + rgb: this.props.rgb, + hsv: this.props.hsv, + hex: this.props.hex + }) + ) + ) + ) + ) + ); + } + }]); + + return Photoshop; +}(_react2.default.Component); + +Photoshop.propTypes = { + header: _propTypes2.default.string, + styles: _propTypes2.default.object +}; + +Photoshop.defaultProps = { + header: 'Color Picker', + styles: {} +}; + +exports.default = (0, _common.ColorWrap)(Photoshop); +},{"../common":329,"./PhotoshopButton":343,"./PhotoshopFields":344,"./PhotoshopPointer":345,"./PhotoshopPointerCircle":346,"./PhotoshopPreviews":347,"lodash/merge":295,"prop-types":309,"react":"react","reactcss":374}],343:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.PhotoshopButton = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var PhotoshopButton = exports.PhotoshopButton = function PhotoshopButton(_ref) { + var onClick = _ref.onClick, + label = _ref.label, + children = _ref.children, + active = _ref.active; + + var styles = (0, _reactcss2.default)({ + 'default': { + button: { + backgroundImage: 'linear-gradient(-180deg, #FFFFFF 0%, #E6E6E6 100%)', + border: '1px solid #878787', + borderRadius: '2px', + height: '20px', + boxShadow: '0 1px 0 0 #EAEAEA', + fontSize: '14px', + color: '#000', + lineHeight: '20px', + textAlign: 'center', + marginBottom: '10px', + cursor: 'pointer' + } + }, + 'active': { + button: { + boxShadow: '0 0 0 1px #878787' + } + } + }, { active: active }); + + return _react2.default.createElement( + 'div', + { style: styles.button, onClick: onClick }, + label || children + ); +}; + +exports.default = PhotoshopButton; +},{"react":"react","reactcss":374}],344:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.PhotoshopPicker = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _color = require('../../helpers/color'); + +var color = _interopRequireWildcard(_color); + +var _common = require('../common'); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var PhotoshopPicker = exports.PhotoshopPicker = function PhotoshopPicker(_ref) { + var onChange = _ref.onChange, + rgb = _ref.rgb, + hsv = _ref.hsv, + hex = _ref.hex; + + var styles = (0, _reactcss2.default)({ + 'default': { + fields: { + paddingTop: '5px', + paddingBottom: '9px', + width: '80px', + position: 'relative' + }, + divider: { + height: '5px' + }, + RGBwrap: { + position: 'relative' + }, + RGBinput: { + marginLeft: '40%', + width: '40%', + height: '18px', + border: '1px solid #888888', + boxShadow: 'inset 0 1px 1px rgba(0,0,0,.1), 0 1px 0 0 #ECECEC', + marginBottom: '5px', + fontSize: '13px', + paddingLeft: '3px', + marginRight: '10px' + }, + RGBlabel: { + left: '0px', + top: '0px', + width: '34px', + textTransform: 'uppercase', + fontSize: '13px', + height: '18px', + lineHeight: '22px', + position: 'absolute' + }, + HEXwrap: { + position: 'relative' + }, + HEXinput: { + marginLeft: '20%', + width: '80%', + height: '18px', + border: '1px solid #888888', + boxShadow: 'inset 0 1px 1px rgba(0,0,0,.1), 0 1px 0 0 #ECECEC', + marginBottom: '6px', + fontSize: '13px', + paddingLeft: '3px' + }, + HEXlabel: { + position: 'absolute', + top: '0px', + left: '0px', + width: '14px', + textTransform: 'uppercase', + fontSize: '13px', + height: '18px', + lineHeight: '22px' + }, + fieldSymbols: { + position: 'absolute', + top: '5px', + right: '-7px', + fontSize: '13px' + }, + symbol: { + height: '20px', + lineHeight: '22px', + paddingBottom: '7px' + } + } + }); + + var handleChange = function handleChange(data, e) { + if (data['#']) { + color.isValidHex(data['#']) && onChange({ + hex: data['#'], + source: 'hex' + }, e); + } else if (data.r || data.g || data.b) { + onChange({ + r: data.r || rgb.r, + g: data.g || rgb.g, + b: data.b || rgb.b, + source: 'rgb' + }, e); + } else if (data.h || data.s || data.v) { + onChange({ + h: data.h || hsv.h, + s: data.s || hsv.s, + v: data.v || hsv.v, + source: 'hsv' + }, e); + } + }; + + return _react2.default.createElement( + 'div', + { style: styles.fields }, + _react2.default.createElement(_common.EditableInput, { + style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel }, + label: 'h', + value: Math.round(hsv.h), + onChange: handleChange + }), + _react2.default.createElement(_common.EditableInput, { + style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel }, + label: 's', + value: Math.round(hsv.s * 100), + onChange: handleChange + }), + _react2.default.createElement(_common.EditableInput, { + style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel }, + label: 'v', + value: Math.round(hsv.v * 100), + onChange: handleChange + }), + _react2.default.createElement('div', { style: styles.divider }), + _react2.default.createElement(_common.EditableInput, { + style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel }, + label: 'r', + value: rgb.r, + onChange: handleChange + }), + _react2.default.createElement(_common.EditableInput, { + style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel }, + label: 'g', + value: rgb.g, + onChange: handleChange + }), + _react2.default.createElement(_common.EditableInput, { + style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel }, + label: 'b', + value: rgb.b, + onChange: handleChange + }), + _react2.default.createElement('div', { style: styles.divider }), + _react2.default.createElement(_common.EditableInput, { + style: { wrap: styles.HEXwrap, input: styles.HEXinput, label: styles.HEXlabel }, + label: '#', + value: hex.replace('#', ''), + onChange: handleChange + }), + _react2.default.createElement( + 'div', + { style: styles.fieldSymbols }, + _react2.default.createElement( + 'div', + { style: styles.symbol }, + '\xB0' + ), + _react2.default.createElement( + 'div', + { style: styles.symbol }, + '%' + ), + _react2.default.createElement( + 'div', + { style: styles.symbol }, + '%' + ) + ) + ); +}; + +exports.default = PhotoshopPicker; +},{"../../helpers/color":361,"../common":329,"react":"react","reactcss":374}],345:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.PhotoshopPointerCircle = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var PhotoshopPointerCircle = exports.PhotoshopPointerCircle = function PhotoshopPointerCircle() { + var styles = (0, _reactcss2.default)({ + 'default': { + triangle: { + width: 0, + height: 0, + borderStyle: 'solid', + borderWidth: '4px 0 4px 6px', + borderColor: 'transparent transparent transparent #fff', + position: 'absolute', + top: '1px', + left: '1px' + }, + triangleBorder: { + width: 0, + height: 0, + borderStyle: 'solid', + borderWidth: '5px 0 5px 8px', + borderColor: 'transparent transparent transparent #555' + }, + + left: { + Extend: 'triangleBorder', + transform: 'translate(-13px, -4px)' + }, + leftInside: { + Extend: 'triangle', + transform: 'translate(-8px, -5px)' + }, + + right: { + Extend: 'triangleBorder', + transform: 'translate(20px, -14px) rotate(180deg)' + }, + rightInside: { + Extend: 'triangle', + transform: 'translate(-8px, -5px)' + } + } + }); + + return _react2.default.createElement( + 'div', + { style: styles.pointer }, + _react2.default.createElement( + 'div', + { style: styles.left }, + _react2.default.createElement('div', { style: styles.leftInside }) + ), + _react2.default.createElement( + 'div', + { style: styles.right }, + _react2.default.createElement('div', { style: styles.rightInside }) + ) + ); +}; + +exports.default = PhotoshopPointerCircle; +},{"react":"react","reactcss":374}],346:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.PhotoshopPointerCircle = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var PhotoshopPointerCircle = exports.PhotoshopPointerCircle = function PhotoshopPointerCircle(_ref) { + var hsl = _ref.hsl; + + var styles = (0, _reactcss2.default)({ + 'default': { + picker: { + width: '12px', + height: '12px', + borderRadius: '6px', + boxShadow: 'inset 0 0 0 1px #fff', + transform: 'translate(-6px, -6px)' + } + }, + 'black-outline': { + picker: { + boxShadow: 'inset 0 0 0 1px #000' + } + } + }, { 'black-outline': hsl.l > 0.5 }); + + return _react2.default.createElement('div', { style: styles.picker }); +}; + +exports.default = PhotoshopPointerCircle; +},{"react":"react","reactcss":374}],347:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.PhotoshopPreviews = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var PhotoshopPreviews = exports.PhotoshopPreviews = function PhotoshopPreviews(_ref) { + var rgb = _ref.rgb, + currentColor = _ref.currentColor; + + var styles = (0, _reactcss2.default)({ + 'default': { + swatches: { + border: '1px solid #B3B3B3', + borderBottom: '1px solid #F0F0F0', + marginBottom: '2px', + marginTop: '1px' + }, + new: { + height: '34px', + background: 'rgb(' + rgb.r + ',' + rgb.g + ', ' + rgb.b + ')', + boxShadow: 'inset 1px 0 0 #000, inset -1px 0 0 #000, inset 0 1px 0 #000' + }, + current: { + height: '34px', + background: currentColor, + boxShadow: 'inset 1px 0 0 #000, inset -1px 0 0 #000, inset 0 -1px 0 #000' + }, + label: { + fontSize: '14px', + color: '#000', + textAlign: 'center' + } + } + }); + + return _react2.default.createElement( + 'div', + null, + _react2.default.createElement( + 'div', + { style: styles.label }, + 'new' + ), + _react2.default.createElement( + 'div', + { style: styles.swatches }, + _react2.default.createElement('div', { style: styles.new }), + _react2.default.createElement('div', { style: styles.current }) + ), + _react2.default.createElement( + 'div', + { style: styles.label }, + 'current' + ) + ); +}; + +exports.default = PhotoshopPreviews; +},{"react":"react","reactcss":374}],348:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Sketch = undefined; + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _propTypes = require('prop-types'); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _merge = require('lodash/merge'); + +var _merge2 = _interopRequireDefault(_merge); + +var _common = require('../common'); + +var _SketchFields = require('./SketchFields'); + +var _SketchFields2 = _interopRequireDefault(_SketchFields); + +var _SketchPresetColors = require('./SketchPresetColors'); + +var _SketchPresetColors2 = _interopRequireDefault(_SketchPresetColors); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var Sketch = exports.Sketch = function Sketch(_ref) { + var width = _ref.width, + rgb = _ref.rgb, + hex = _ref.hex, + hsv = _ref.hsv, + hsl = _ref.hsl, + onChange = _ref.onChange, + onSwatchHover = _ref.onSwatchHover, + disableAlpha = _ref.disableAlpha, + presetColors = _ref.presetColors, + renderers = _ref.renderers, + _ref$styles = _ref.styles, + passedStyles = _ref$styles === undefined ? {} : _ref$styles, + _ref$className = _ref.className, + className = _ref$className === undefined ? '' : _ref$className; + + var styles = (0, _reactcss2.default)((0, _merge2.default)({ + 'default': _extends({ + picker: { + width: width, + padding: '10px 10px 0', + boxSizing: 'initial', + background: '#fff', + borderRadius: '4px', + boxShadow: '0 0 0 1px rgba(0,0,0,.15), 0 8px 16px rgba(0,0,0,.15)' + }, + saturation: { + width: '100%', + paddingBottom: '75%', + position: 'relative', + overflow: 'hidden' + }, + Saturation: { + radius: '3px', + shadow: 'inset 0 0 0 1px rgba(0,0,0,.15), inset 0 0 4px rgba(0,0,0,.25)' + }, + controls: { + display: 'flex' + }, + sliders: { + padding: '4px 0', + flex: '1' + }, + color: { + width: '24px', + height: '24px', + position: 'relative', + marginTop: '4px', + marginLeft: '4px', + borderRadius: '3px' + }, + activeColor: { + absolute: '0px 0px 0px 0px', + borderRadius: '2px', + background: 'rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ',' + rgb.a + ')', + boxShadow: 'inset 0 0 0 1px rgba(0,0,0,.15), inset 0 0 4px rgba(0,0,0,.25)' + }, + hue: { + position: 'relative', + height: '10px', + overflow: 'hidden' + }, + Hue: { + radius: '2px', + shadow: 'inset 0 0 0 1px rgba(0,0,0,.15), inset 0 0 4px rgba(0,0,0,.25)' + }, + + alpha: { + position: 'relative', + height: '10px', + marginTop: '4px', + overflow: 'hidden' + }, + Alpha: { + radius: '2px', + shadow: 'inset 0 0 0 1px rgba(0,0,0,.15), inset 0 0 4px rgba(0,0,0,.25)' + } + }, passedStyles), + 'disableAlpha': { + color: { + height: '10px' + }, + hue: { + height: '10px' + }, + alpha: { + display: 'none' + } + } + }, passedStyles), { disableAlpha: disableAlpha }); + + return _react2.default.createElement( + 'div', + { style: styles.picker, className: 'sketch-picker ' + className }, + _react2.default.createElement( + 'div', + { style: styles.saturation }, + _react2.default.createElement(_common.Saturation, { + style: styles.Saturation, + hsl: hsl, + hsv: hsv, + onChange: onChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.controls, className: 'flexbox-fix' }, + _react2.default.createElement( + 'div', + { style: styles.sliders }, + _react2.default.createElement( + 'div', + { style: styles.hue }, + _react2.default.createElement(_common.Hue, { + style: styles.Hue, + hsl: hsl, + onChange: onChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.alpha }, + _react2.default.createElement(_common.Alpha, { + style: styles.Alpha, + rgb: rgb, + hsl: hsl, + renderers: renderers, + onChange: onChange + }) + ) + ), + _react2.default.createElement( + 'div', + { style: styles.color }, + _react2.default.createElement(_common.Checkboard, null), + _react2.default.createElement('div', { style: styles.activeColor }) + ) + ), + _react2.default.createElement(_SketchFields2.default, { + rgb: rgb, + hsl: hsl, + hex: hex, + onChange: onChange, + disableAlpha: disableAlpha + }), + _react2.default.createElement(_SketchPresetColors2.default, { + colors: presetColors, + onClick: onChange, + onSwatchHover: onSwatchHover + }) + ); +}; + +Sketch.propTypes = { + disableAlpha: _propTypes2.default.bool, + width: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]), + styles: _propTypes2.default.object +}; + +Sketch.defaultProps = { + disableAlpha: false, + width: 200, + styles: {}, + presetColors: ['#D0021B', '#F5A623', '#F8E71C', '#8B572A', '#7ED321', '#417505', '#BD10E0', '#9013FE', '#4A90E2', '#50E3C2', '#B8E986', '#000000', '#4A4A4A', '#9B9B9B', '#FFFFFF'] +}; + +exports.default = (0, _common.ColorWrap)(Sketch); +},{"../common":329,"./SketchFields":349,"./SketchPresetColors":350,"lodash/merge":295,"prop-types":309,"react":"react","reactcss":374}],349:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SketchFields = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _color = require('../../helpers/color'); + +var color = _interopRequireWildcard(_color); + +var _common = require('../common'); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/* eslint-disable no-param-reassign */ + +var SketchFields = exports.SketchFields = function SketchFields(_ref) { + var onChange = _ref.onChange, + rgb = _ref.rgb, + hsl = _ref.hsl, + hex = _ref.hex, + disableAlpha = _ref.disableAlpha; + + var styles = (0, _reactcss2.default)({ + 'default': { + fields: { + display: 'flex', + paddingTop: '4px' + }, + single: { + flex: '1', + paddingLeft: '6px' + }, + alpha: { + flex: '1', + paddingLeft: '6px' + }, + double: { + flex: '2' + }, + input: { + width: '80%', + padding: '4px 10% 3px', + border: 'none', + boxShadow: 'inset 0 0 0 1px #ccc', + fontSize: '11px' + }, + label: { + display: 'block', + textAlign: 'center', + fontSize: '11px', + color: '#222', + paddingTop: '3px', + paddingBottom: '4px', + textTransform: 'capitalize' + } + }, + 'disableAlpha': { + alpha: { + display: 'none' + } + } + }, { disableAlpha: disableAlpha }); + + var handleChange = function handleChange(data, e) { + if (data.hex) { + color.isValidHex(data.hex) && onChange({ + hex: data.hex, + source: 'hex' + }, e); + } else if (data.r || data.g || data.b) { + onChange({ + r: data.r || rgb.r, + g: data.g || rgb.g, + b: data.b || rgb.b, + a: rgb.a, + source: 'rgb' + }, e); + } else if (data.a) { + if (data.a < 0) { + data.a = 0; + } else if (data.a > 100) { + data.a = 100; + } + + data.a /= 100; + onChange({ + h: hsl.h, + s: hsl.s, + l: hsl.l, + a: data.a, + source: 'rgb' + }, e); + } + }; + + return _react2.default.createElement( + 'div', + { style: styles.fields, className: 'flexbox-fix' }, + _react2.default.createElement( + 'div', + { style: styles.double }, + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input, label: styles.label }, + label: 'hex', + value: hex.replace('#', ''), + onChange: handleChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.single }, + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input, label: styles.label }, + label: 'r', + value: rgb.r, + onChange: handleChange, + dragLabel: 'true', + dragMax: '255' + }) + ), + _react2.default.createElement( + 'div', + { style: styles.single }, + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input, label: styles.label }, + label: 'g', + value: rgb.g, + onChange: handleChange, + dragLabel: 'true', + dragMax: '255' + }) + ), + _react2.default.createElement( + 'div', + { style: styles.single }, + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input, label: styles.label }, + label: 'b', + value: rgb.b, + onChange: handleChange, + dragLabel: 'true', + dragMax: '255' + }) + ), + _react2.default.createElement( + 'div', + { style: styles.alpha }, + _react2.default.createElement(_common.EditableInput, { + style: { input: styles.input, label: styles.label }, + label: 'a', + value: Math.round(rgb.a * 100), + onChange: handleChange, + dragLabel: 'true', + dragMax: '100' + }) + ) + ); +}; + +exports.default = SketchFields; +},{"../../helpers/color":361,"../common":329,"react":"react","reactcss":374}],350:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SketchPresetColors = undefined; + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _propTypes = require('prop-types'); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _common = require('../common'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var SketchPresetColors = exports.SketchPresetColors = function SketchPresetColors(_ref) { + var colors = _ref.colors, + _ref$onClick = _ref.onClick, + onClick = _ref$onClick === undefined ? function () {} : _ref$onClick, + onSwatchHover = _ref.onSwatchHover; + + var styles = (0, _reactcss2.default)({ + 'default': { + colors: { + margin: '0 -10px', + padding: '10px 0 0 10px', + borderTop: '1px solid #eee', + display: 'flex', + flexWrap: 'wrap', + position: 'relative' + }, + swatchWrap: { + width: '16px', + height: '16px', + margin: '0 10px 10px 0' + }, + swatch: { + borderRadius: '3px', + boxShadow: 'inset 0 0 0 1px rgba(0,0,0,.15)' + } + }, + 'no-presets': { + colors: { + display: 'none' + } + } + }, { + 'no-presets': !colors || !colors.length + }); + + var handleClick = function handleClick(hex, e) { + onClick({ + hex: hex, + source: 'hex' + }, e); + }; + + return _react2.default.createElement( + 'div', + { style: styles.colors, className: 'flexbox-fix' }, + colors.map(function (colorObjOrString) { + var c = typeof colorObjOrString === 'string' ? { color: colorObjOrString } : colorObjOrString; + var key = '' + c.color + (c.title || ''); + return _react2.default.createElement( + 'div', + { key: key, style: styles.swatchWrap }, + _react2.default.createElement(_common.Swatch, _extends({}, c, { + style: styles.swatch, + onClick: handleClick, + onHover: onSwatchHover, + focusStyle: { + boxShadow: 'inset 0 0 0 1px rgba(0,0,0,.15), 0 0 4px ' + c.color + } + })) + ); + }) + ); +}; + +SketchPresetColors.propTypes = { + colors: _propTypes2.default.arrayOf(_propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.shape({ + color: _propTypes2.default.string, + title: _propTypes2.default.string + })])).isRequired +}; + +exports.default = SketchPresetColors; +},{"../common":329,"prop-types":309,"react":"react","reactcss":374}],351:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Slider = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _propTypes = require('prop-types'); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _merge = require('lodash/merge'); + +var _merge2 = _interopRequireDefault(_merge); + +var _common = require('../common'); + +var _SliderSwatches = require('./SliderSwatches'); + +var _SliderSwatches2 = _interopRequireDefault(_SliderSwatches); + +var _SliderPointer = require('./SliderPointer'); + +var _SliderPointer2 = _interopRequireDefault(_SliderPointer); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var Slider = exports.Slider = function Slider(_ref) { + var hsl = _ref.hsl, + onChange = _ref.onChange, + pointer = _ref.pointer, + _ref$styles = _ref.styles, + passedStyles = _ref$styles === undefined ? {} : _ref$styles, + _ref$className = _ref.className, + className = _ref$className === undefined ? '' : _ref$className; + + var styles = (0, _reactcss2.default)((0, _merge2.default)({ + 'default': { + hue: { + height: '12px', + position: 'relative' + }, + Hue: { + radius: '2px' + } + } + }, passedStyles)); + + return _react2.default.createElement( + 'div', + { style: styles.wrap || {}, className: 'slider-picker ' + className }, + _react2.default.createElement( + 'div', + { style: styles.hue }, + _react2.default.createElement(_common.Hue, { + style: styles.Hue, + hsl: hsl, + pointer: pointer, + onChange: onChange + }) + ), + _react2.default.createElement( + 'div', + { style: styles.swatches }, + _react2.default.createElement(_SliderSwatches2.default, { hsl: hsl, onClick: onChange }) + ) + ); +}; + +Slider.propTypes = { + styles: _propTypes2.default.object +}; +Slider.defaultProps = { + pointer: _SliderPointer2.default, + styles: {} +}; + +exports.default = (0, _common.ColorWrap)(Slider); +},{"../common":329,"./SliderPointer":352,"./SliderSwatches":354,"lodash/merge":295,"prop-types":309,"react":"react","reactcss":374}],352:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SliderPointer = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var SliderPointer = exports.SliderPointer = function SliderPointer() { + var styles = (0, _reactcss2.default)({ + 'default': { + picker: { + width: '14px', + height: '14px', + borderRadius: '6px', + transform: 'translate(-7px, -1px)', + backgroundColor: 'rgb(248, 248, 248)', + boxShadow: '0 1px 4px 0 rgba(0, 0, 0, 0.37)' + } + } + }); + + return _react2.default.createElement('div', { style: styles.picker }); +}; + +exports.default = SliderPointer; +},{"react":"react","reactcss":374}],353:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SliderSwatch = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var SliderSwatch = exports.SliderSwatch = function SliderSwatch(_ref) { + var hsl = _ref.hsl, + offset = _ref.offset, + _ref$onClick = _ref.onClick, + onClick = _ref$onClick === undefined ? function () {} : _ref$onClick, + active = _ref.active, + first = _ref.first, + last = _ref.last; + + var styles = (0, _reactcss2.default)({ + 'default': { + swatch: { + height: '12px', + background: 'hsl(' + hsl.h + ', 50%, ' + offset * 100 + '%)', + cursor: 'pointer' + } + }, + 'first': { + swatch: { + borderRadius: '2px 0 0 2px' + } + }, + 'last': { + swatch: { + borderRadius: '0 2px 2px 0' + } + }, + 'active': { + swatch: { + transform: 'scaleY(1.8)', + borderRadius: '3.6px/2px' + } + } + }, { active: active, first: first, last: last }); + + var handleClick = function handleClick(e) { + return onClick({ + h: hsl.h, + s: 0.5, + l: offset, + source: 'hsl' + }, e); + }; + + return _react2.default.createElement('div', { style: styles.swatch, onClick: handleClick }); +}; + +exports.default = SliderSwatch; +},{"react":"react","reactcss":374}],354:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SliderSwatches = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _SliderSwatch = require('./SliderSwatch'); + +var _SliderSwatch2 = _interopRequireDefault(_SliderSwatch); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var SliderSwatches = exports.SliderSwatches = function SliderSwatches(_ref) { + var onClick = _ref.onClick, + hsl = _ref.hsl; + + var styles = (0, _reactcss2.default)({ + 'default': { + swatches: { + marginTop: '20px' + }, + swatch: { + boxSizing: 'border-box', + width: '20%', + paddingRight: '1px', + float: 'left' + }, + clear: { + clear: 'both' + } + } + }); + + // Acceptible difference in floating point equality + var epsilon = 0.1; + + return _react2.default.createElement( + 'div', + { style: styles.swatches }, + _react2.default.createElement( + 'div', + { style: styles.swatch }, + _react2.default.createElement(_SliderSwatch2.default, { + hsl: hsl, + offset: '.80', + active: Math.abs(hsl.l - 0.80) < epsilon && Math.abs(hsl.s - 0.50) < epsilon, + onClick: onClick, + first: true + }) + ), + _react2.default.createElement( + 'div', + { style: styles.swatch }, + _react2.default.createElement(_SliderSwatch2.default, { + hsl: hsl, + offset: '.65', + active: Math.abs(hsl.l - 0.65) < epsilon && Math.abs(hsl.s - 0.50) < epsilon, + onClick: onClick + }) + ), + _react2.default.createElement( + 'div', + { style: styles.swatch }, + _react2.default.createElement(_SliderSwatch2.default, { + hsl: hsl, + offset: '.50', + active: Math.abs(hsl.l - 0.50) < epsilon && Math.abs(hsl.s - 0.50) < epsilon, + onClick: onClick + }) + ), + _react2.default.createElement( + 'div', + { style: styles.swatch }, + _react2.default.createElement(_SliderSwatch2.default, { + hsl: hsl, + offset: '.35', + active: Math.abs(hsl.l - 0.35) < epsilon && Math.abs(hsl.s - 0.50) < epsilon, + onClick: onClick + }) + ), + _react2.default.createElement( + 'div', + { style: styles.swatch }, + _react2.default.createElement(_SliderSwatch2.default, { + hsl: hsl, + offset: '.20', + active: Math.abs(hsl.l - 0.20) < epsilon && Math.abs(hsl.s - 0.50) < epsilon, + onClick: onClick, + last: true + }) + ), + _react2.default.createElement('div', { style: styles.clear }) + ); +}; + +exports.default = SliderSwatches; +},{"./SliderSwatch":353,"react":"react","reactcss":374}],355:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Swatches = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _propTypes = require('prop-types'); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _map = require('lodash/map'); + +var _map2 = _interopRequireDefault(_map); + +var _merge = require('lodash/merge'); + +var _merge2 = _interopRequireDefault(_merge); + +var _materialColors = require('material-colors'); + +var material = _interopRequireWildcard(_materialColors); + +var _common = require('../common'); + +var _SwatchesGroup = require('./SwatchesGroup'); + +var _SwatchesGroup2 = _interopRequireDefault(_SwatchesGroup); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var Swatches = exports.Swatches = function Swatches(_ref) { + var width = _ref.width, + height = _ref.height, + onChange = _ref.onChange, + onSwatchHover = _ref.onSwatchHover, + colors = _ref.colors, + hex = _ref.hex, + _ref$styles = _ref.styles, + passedStyles = _ref$styles === undefined ? {} : _ref$styles, + _ref$className = _ref.className, + className = _ref$className === undefined ? '' : _ref$className; + + var styles = (0, _reactcss2.default)((0, _merge2.default)({ + 'default': { + picker: { + width: width, + height: height + }, + overflow: { + height: height, + overflowY: 'scroll' + }, + body: { + padding: '16px 0 6px 16px' + }, + clear: { + clear: 'both' + } + } + }, passedStyles)); + + var handleChange = function handleChange(data, e) { + return onChange({ hex: data, source: 'hex' }, e); + }; + + return _react2.default.createElement( + 'div', + { style: styles.picker, className: 'swatches-picker ' + className }, + _react2.default.createElement( + _common.Raised, + null, + _react2.default.createElement( + 'div', + { style: styles.overflow }, + _react2.default.createElement( + 'div', + { style: styles.body }, + (0, _map2.default)(colors, function (group) { + return _react2.default.createElement(_SwatchesGroup2.default, { + key: group.toString(), + group: group, + active: hex, + onClick: handleChange, + onSwatchHover: onSwatchHover + }); + }), + _react2.default.createElement('div', { style: styles.clear }) + ) + ) + ) + ); +}; + +Swatches.propTypes = { + width: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]), + height: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]), + colors: _propTypes2.default.arrayOf(_propTypes2.default.arrayOf(_propTypes2.default.string)), + styles: _propTypes2.default.object + + /* eslint-disable max-len */ +};Swatches.defaultProps = { + width: 320, + height: 240, + colors: [[material.red['900'], material.red['700'], material.red['500'], material.red['300'], material.red['100']], [material.pink['900'], material.pink['700'], material.pink['500'], material.pink['300'], material.pink['100']], [material.purple['900'], material.purple['700'], material.purple['500'], material.purple['300'], material.purple['100']], [material.deepPurple['900'], material.deepPurple['700'], material.deepPurple['500'], material.deepPurple['300'], material.deepPurple['100']], [material.indigo['900'], material.indigo['700'], material.indigo['500'], material.indigo['300'], material.indigo['100']], [material.blue['900'], material.blue['700'], material.blue['500'], material.blue['300'], material.blue['100']], [material.lightBlue['900'], material.lightBlue['700'], material.lightBlue['500'], material.lightBlue['300'], material.lightBlue['100']], [material.cyan['900'], material.cyan['700'], material.cyan['500'], material.cyan['300'], material.cyan['100']], [material.teal['900'], material.teal['700'], material.teal['500'], material.teal['300'], material.teal['100']], ['#194D33', material.green['700'], material.green['500'], material.green['300'], material.green['100']], [material.lightGreen['900'], material.lightGreen['700'], material.lightGreen['500'], material.lightGreen['300'], material.lightGreen['100']], [material.lime['900'], material.lime['700'], material.lime['500'], material.lime['300'], material.lime['100']], [material.yellow['900'], material.yellow['700'], material.yellow['500'], material.yellow['300'], material.yellow['100']], [material.amber['900'], material.amber['700'], material.amber['500'], material.amber['300'], material.amber['100']], [material.orange['900'], material.orange['700'], material.orange['500'], material.orange['300'], material.orange['100']], [material.deepOrange['900'], material.deepOrange['700'], material.deepOrange['500'], material.deepOrange['300'], material.deepOrange['100']], [material.brown['900'], material.brown['700'], material.brown['500'], material.brown['300'], material.brown['100']], [material.blueGrey['900'], material.blueGrey['700'], material.blueGrey['500'], material.blueGrey['300'], material.blueGrey['100']], ['#000000', '#525252', '#969696', '#D9D9D9', '#FFFFFF']], + styles: {} +}; + +exports.default = (0, _common.ColorWrap)(Swatches); +},{"../common":329,"./SwatchesGroup":357,"lodash/map":293,"lodash/merge":295,"material-colors":304,"prop-types":309,"react":"react","reactcss":374}],356:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SwatchesColor = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _color = require('../../helpers/color'); + +var colorUtils = _interopRequireWildcard(_color); + +var _common = require('../common'); + +var _CheckIcon = require('@icons/material/CheckIcon'); + +var _CheckIcon2 = _interopRequireDefault(_CheckIcon); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var SwatchesColor = exports.SwatchesColor = function SwatchesColor(_ref) { + var color = _ref.color, + _ref$onClick = _ref.onClick, + onClick = _ref$onClick === undefined ? function () {} : _ref$onClick, + onSwatchHover = _ref.onSwatchHover, + first = _ref.first, + last = _ref.last, + active = _ref.active; + + var styles = (0, _reactcss2.default)({ + 'default': { + color: { + width: '40px', + height: '24px', + cursor: 'pointer', + background: color, + marginBottom: '1px' + }, + check: { + color: colorUtils.getContrastingColor(color), + marginLeft: '8px', + display: 'none' + } + }, + 'first': { + color: { + overflow: 'hidden', + borderRadius: '2px 2px 0 0' + } + }, + 'last': { + color: { + overflow: 'hidden', + borderRadius: '0 0 2px 2px' + } + }, + 'active': { + check: { + display: 'block' + } + }, + 'color-#FFFFFF': { + color: { + boxShadow: 'inset 0 0 0 1px #ddd' + }, + check: { + color: '#333' + } + }, + 'transparent': { + check: { + color: '#333' + } + } + }, { + first: first, + last: last, + active: active, + 'color-#FFFFFF': color === '#FFFFFF', + 'transparent': color === 'transparent' + }); + + return _react2.default.createElement( + _common.Swatch, + { + color: color, + style: styles.color, + onClick: onClick, + onHover: onSwatchHover, + focusStyle: { boxShadow: '0 0 4px ' + color } + }, + _react2.default.createElement( + 'div', + { style: styles.check }, + _react2.default.createElement(_CheckIcon2.default, null) + ) + ); +}; + +exports.default = SwatchesColor; +},{"../../helpers/color":361,"../common":329,"@icons/material/CheckIcon":96,"react":"react","reactcss":374}],357:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SwatchesGroup = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _map = require('lodash/map'); + +var _map2 = _interopRequireDefault(_map); + +var _SwatchesColor = require('./SwatchesColor'); + +var _SwatchesColor2 = _interopRequireDefault(_SwatchesColor); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var SwatchesGroup = exports.SwatchesGroup = function SwatchesGroup(_ref) { + var onClick = _ref.onClick, + onSwatchHover = _ref.onSwatchHover, + group = _ref.group, + active = _ref.active; + + var styles = (0, _reactcss2.default)({ + 'default': { + group: { + paddingBottom: '10px', + width: '40px', + float: 'left', + marginRight: '10px' + } + } + }); + + return _react2.default.createElement( + 'div', + { style: styles.group }, + (0, _map2.default)(group, function (color, i) { + return _react2.default.createElement(_SwatchesColor2.default, { + key: color, + color: color, + active: color.toLowerCase() === active, + first: i === 0, + last: i === group.length - 1, + onClick: onClick, + onSwatchHover: onSwatchHover + }); + }) + ); +}; + +exports.default = SwatchesGroup; +},{"./SwatchesColor":356,"lodash/map":293,"react":"react","reactcss":374}],358:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Twitter = undefined; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _propTypes = require('prop-types'); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +var _reactcss = require('reactcss'); + +var _reactcss2 = _interopRequireDefault(_reactcss); + +var _map = require('lodash/map'); + +var _map2 = _interopRequireDefault(_map); + +var _merge = require('lodash/merge'); + +var _merge2 = _interopRequireDefault(_merge); + +var _color = require('../../helpers/color'); + +var color = _interopRequireWildcard(_color); + +var _common = require('../common'); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var Twitter = exports.Twitter = function Twitter(_ref) { + var onChange = _ref.onChange, + onSwatchHover = _ref.onSwatchHover, + hex = _ref.hex, + colors = _ref.colors, + width = _ref.width, + triangle = _ref.triangle, + _ref$styles = _ref.styles, + passedStyles = _ref$styles === undefined ? {} : _ref$styles, + _ref$className = _ref.className, + className = _ref$className === undefined ? '' : _ref$className; + + var styles = (0, _reactcss2.default)((0, _merge2.default)({ + 'default': { + card: { + width: width, + background: '#fff', + border: '0 solid rgba(0,0,0,0.25)', + boxShadow: '0 1px 4px rgba(0,0,0,0.25)', + borderRadius: '4px', + position: 'relative' + }, + body: { + padding: '15px 9px 9px 15px' + }, + label: { + fontSize: '18px', + color: '#fff' + }, + triangle: { + width: '0px', + height: '0px', + borderStyle: 'solid', + borderWidth: '0 9px 10px 9px', + borderColor: 'transparent transparent #fff transparent', + position: 'absolute' + }, + triangleShadow: { + width: '0px', + height: '0px', + borderStyle: 'solid', + borderWidth: '0 9px 10px 9px', + borderColor: 'transparent transparent rgba(0,0,0,.1) transparent', + position: 'absolute' + }, + hash: { + background: '#F0F0F0', + height: '30px', + width: '30px', + borderRadius: '4px 0 0 4px', + float: 'left', + color: '#98A1A4', + display: 'flex', + alignItems: 'center', + justifyContent: 'center' + }, + input: { + width: '100px', + fontSize: '14px', + color: '#666', + border: '0px', + outline: 'none', + height: '28px', + boxShadow: 'inset 0 0 0 1px #F0F0F0', + boxSizing: 'content-box', + borderRadius: '0 4px 4px 0', + float: 'left', + paddingLeft: '8px' + }, + swatch: { + width: '30px', + height: '30px', + float: 'left', + borderRadius: '4px', + margin: '0 6px 6px 0' + }, + clear: { + clear: 'both' + } + }, + 'hide-triangle': { + triangle: { + display: 'none' + }, + triangleShadow: { + display: 'none' + } + }, + 'top-left-triangle': { + triangle: { + top: '-10px', + left: '12px' + }, + triangleShadow: { + top: '-11px', + left: '12px' + } + }, + 'top-right-triangle': { + triangle: { + top: '-10px', + right: '12px' + }, + triangleShadow: { + top: '-11px', + right: '12px' + } + } + }, passedStyles), { + 'hide-triangle': triangle === 'hide', + 'top-left-triangle': triangle === 'top-left', + 'top-right-triangle': triangle === 'top-right' + }); + + var handleChange = function handleChange(hexcode, e) { + color.isValidHex(hexcode) && onChange({ + hex: hexcode, + source: 'hex' + }, e); + }; + + return _react2.default.createElement( + 'div', + { style: styles.card, className: 'twitter-picker ' + className }, + _react2.default.createElement('div', { style: styles.triangleShadow }), + _react2.default.createElement('div', { style: styles.triangle }), + _react2.default.createElement( + 'div', + { style: styles.body }, + (0, _map2.default)(colors, function (c, i) { + return _react2.default.createElement(_common.Swatch, { + key: i, + color: c, + hex: c, + style: styles.swatch, + onClick: handleChange, + onHover: onSwatchHover, + focusStyle: { + boxShadow: '0 0 4px ' + c + } + }); + }), + _react2.default.createElement( + 'div', + { style: styles.hash }, + '#' + ), + _react2.default.createElement(_common.EditableInput, { + label: null, + style: { input: styles.input }, + value: hex.replace('#', ''), + onChange: handleChange + }), + _react2.default.createElement('div', { style: styles.clear }) + ) + ); +}; + +Twitter.propTypes = { + width: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]), + triangle: _propTypes2.default.oneOf(['hide', 'top-left', 'top-right']), + colors: _propTypes2.default.arrayOf(_propTypes2.default.string), + styles: _propTypes2.default.object +}; + +Twitter.defaultProps = { + width: 276, + colors: ['#FF6900', '#FCB900', '#7BDCB5', '#00D084', '#8ED1FC', '#0693E3', '#ABB8C3', '#EB144C', '#F78DA7', '#9900EF'], + triangle: 'top-left', + styles: {} +}; + +exports.default = (0, _common.ColorWrap)(Twitter); +},{"../../helpers/color":361,"../common":329,"lodash/map":293,"lodash/merge":295,"prop-types":309,"react":"react","reactcss":374}],359:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +var calculateChange = exports.calculateChange = function calculateChange(e, hsl, direction, initialA, container) { + var containerWidth = container.clientWidth; + var containerHeight = container.clientHeight; + var x = typeof e.pageX === 'number' ? e.pageX : e.touches[0].pageX; + var y = typeof e.pageY === 'number' ? e.pageY : e.touches[0].pageY; + var left = x - (container.getBoundingClientRect().left + window.pageXOffset); + var top = y - (container.getBoundingClientRect().top + window.pageYOffset); + + if (direction === 'vertical') { + var a = void 0; + if (top < 0) { + a = 0; + } else if (top > containerHeight) { + a = 1; + } else { + a = Math.round(top * 100 / containerHeight) / 100; + } + + if (hsl.a !== a) { + return { + h: hsl.h, + s: hsl.s, + l: hsl.l, + a: a, + source: 'rgb' + }; + } + } else { + var _a = void 0; + if (left < 0) { + _a = 0; + } else if (left > containerWidth) { + _a = 1; + } else { + _a = Math.round(left * 100 / containerWidth) / 100; + } + + if (initialA !== _a) { + return { + h: hsl.h, + s: hsl.s, + l: hsl.l, + a: _a, + source: 'rgb' + }; + } + } + return null; +}; +},{}],360:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +var checkboardCache = {}; + +var render = exports.render = function render(c1, c2, size, serverCanvas) { + if (typeof document === 'undefined' && !serverCanvas) { + return null; + } + var canvas = serverCanvas ? new serverCanvas() : document.createElement('canvas'); + canvas.width = size * 2; + canvas.height = size * 2; + var ctx = canvas.getContext('2d'); + if (!ctx) { + return null; + } // If no context can be found, return early. + ctx.fillStyle = c1; + ctx.fillRect(0, 0, canvas.width, canvas.height); + ctx.fillStyle = c2; + ctx.fillRect(0, 0, size, size); + ctx.translate(size, size); + ctx.fillRect(0, 0, size, size); + return canvas.toDataURL(); +}; + +var get = exports.get = function get(c1, c2, size, serverCanvas) { + var key = c1 + '-' + c2 + '-' + size + (serverCanvas ? '-server' : ''); + + if (checkboardCache[key]) { + return checkboardCache[key]; + } + + var checkboard = render(c1, c2, size, serverCanvas); + checkboardCache[key] = checkboard; + return checkboard; +}; +},{}],361:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.isvalidColorString = exports.red = exports.getContrastingColor = exports.isValidHex = exports.toState = exports.simpleCheckForValidColor = undefined; + +var _each = require('lodash/each'); + +var _each2 = _interopRequireDefault(_each); + +var _tinycolor = require('tinycolor2'); + +var _tinycolor2 = _interopRequireDefault(_tinycolor); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var simpleCheckForValidColor = exports.simpleCheckForValidColor = function simpleCheckForValidColor(data) { + var keysToCheck = ['r', 'g', 'b', 'a', 'h', 's', 'l', 'v']; + var checked = 0; + var passed = 0; + (0, _each2.default)(keysToCheck, function (letter) { + if (data[letter]) { + checked += 1; + if (!isNaN(data[letter])) { + passed += 1; + } + if (letter === 's' || letter === 'l') { + var percentPatt = /^\d+%$/; + if (percentPatt.test(data[letter])) { + passed += 1; + } + } + } + }); + return checked === passed ? data : false; +}; + +var toState = exports.toState = function toState(data, oldHue) { + var color = data.hex ? (0, _tinycolor2.default)(data.hex) : (0, _tinycolor2.default)(data); + var hsl = color.toHsl(); + var hsv = color.toHsv(); + var rgb = color.toRgb(); + var hex = color.toHex(); + if (hsl.s === 0) { + hsl.h = oldHue || 0; + hsv.h = oldHue || 0; + } + var transparent = hex === '000000' && rgb.a === 0; + + return { + hsl: hsl, + hex: transparent ? 'transparent' : '#' + hex, + rgb: rgb, + hsv: hsv, + oldHue: data.h || oldHue || hsl.h, + source: data.source + }; +}; + +var isValidHex = exports.isValidHex = function isValidHex(hex) { + if (hex === 'transparent') { + return true; + } + // disable hex4 and hex8 + var lh = String(hex).charAt(0) === '#' ? 1 : 0; + return hex.length !== 4 + lh && hex.length < 7 + lh && (0, _tinycolor2.default)(hex).isValid(); +}; + +var getContrastingColor = exports.getContrastingColor = function getContrastingColor(data) { + if (!data) { + return '#fff'; + } + var col = toState(data); + if (col.hex === 'transparent') { + return 'rgba(0,0,0,0.4)'; + } + var yiq = (col.rgb.r * 299 + col.rgb.g * 587 + col.rgb.b * 114) / 1000; + return yiq >= 128 ? '#000' : '#fff'; +}; + +var red = exports.red = { + hsl: { a: 1, h: 0, l: 0.5, s: 1 }, + hex: '#ff0000', + rgb: { r: 255, g: 0, b: 0, a: 1 }, + hsv: { h: 0, s: 1, v: 1, a: 1 } +}; + +var isvalidColorString = exports.isvalidColorString = function isvalidColorString(string, type) { + var stringWithoutDegree = string.replace('°', ''); + return (0, _tinycolor2.default)(type + ' (' + stringWithoutDegree + ')')._ok; +}; +},{"lodash/each":268,"tinycolor2":378}],362:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +var calculateChange = exports.calculateChange = function calculateChange(e, direction, hsl, container) { + var containerWidth = container.clientWidth; + var containerHeight = container.clientHeight; + var x = typeof e.pageX === 'number' ? e.pageX : e.touches[0].pageX; + var y = typeof e.pageY === 'number' ? e.pageY : e.touches[0].pageY; + var left = x - (container.getBoundingClientRect().left + window.pageXOffset); + var top = y - (container.getBoundingClientRect().top + window.pageYOffset); + + if (direction === 'vertical') { + var h = void 0; + if (top < 0) { + h = 359; + } else if (top > containerHeight) { + h = 0; + } else { + var percent = -(top * 100 / containerHeight) + 100; + h = 360 * percent / 100; + } + + if (hsl.h !== h) { + return { + h: h, + s: hsl.s, + l: hsl.l, + a: hsl.a, + source: 'hsl' + }; + } + } else { + var _h = void 0; + if (left < 0) { + _h = 0; + } else if (left > containerWidth) { + _h = 359; + } else { + var _percent = left * 100 / containerWidth; + _h = 360 * _percent / 100; + } + + if (hsl.h !== _h) { + return { + h: _h, + s: hsl.s, + l: hsl.l, + a: hsl.a, + source: 'hsl' + }; + } + } + return null; +}; +},{}],363:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.handleFocus = undefined; + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /* eslint-disable no-invalid-this */ + + +var handleFocus = exports.handleFocus = function handleFocus(Component) { + var Span = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'span'; + return function (_React$Component) { + _inherits(Focus, _React$Component); + + function Focus() { + var _ref; + + var _temp, _this, _ret; + + _classCallCheck(this, Focus); + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Focus.__proto__ || Object.getPrototypeOf(Focus)).call.apply(_ref, [this].concat(args))), _this), _this.state = { focus: false }, _this.handleFocus = function () { + return _this.setState({ focus: true }); + }, _this.handleBlur = function () { + return _this.setState({ focus: false }); + }, _temp), _possibleConstructorReturn(_this, _ret); + } + + _createClass(Focus, [{ + key: 'render', + value: function render() { + return _react2.default.createElement( + Span, + { onFocus: this.handleFocus, onBlur: this.handleBlur }, + _react2.default.createElement(Component, _extends({}, this.props, this.state)) + ); + } + }]); + + return Focus; + }(_react2.default.Component); +}; +},{"react":"react"}],364:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +var calculateChange = exports.calculateChange = function calculateChange(e, hsl, container) { + var _container$getBoundin = container.getBoundingClientRect(), + containerWidth = _container$getBoundin.width, + containerHeight = _container$getBoundin.height; + + var x = typeof e.pageX === 'number' ? e.pageX : e.touches[0].pageX; + var y = typeof e.pageY === 'number' ? e.pageY : e.touches[0].pageY; + var left = x - (container.getBoundingClientRect().left + window.pageXOffset); + var top = y - (container.getBoundingClientRect().top + window.pageYOffset); + + if (left < 0) { + left = 0; + } else if (left > containerWidth) { + left = containerWidth; + } + + if (top < 0) { + top = 0; + } else if (top > containerHeight) { + top = containerHeight; + } + + var saturation = left / containerWidth; + var bright = 1 - top / containerHeight; + + return { + h: hsl.h, + s: saturation, + v: bright, + a: hsl.a, + source: 'hsv' + }; +}; +},{}],365:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.CustomPicker = exports.GooglePicker = exports.TwitterPicker = exports.SwatchesPicker = exports.SliderPicker = exports.SketchPicker = exports.PhotoshopPicker = exports.MaterialPicker = exports.HuePicker = exports.GithubPicker = exports.CompactPicker = exports.ChromePicker = exports.default = exports.CirclePicker = exports.BlockPicker = exports.AlphaPicker = undefined; + +var _Alpha = require('./components/alpha/Alpha'); + +Object.defineProperty(exports, 'AlphaPicker', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Alpha).default; + } +}); + +var _Block = require('./components/block/Block'); + +Object.defineProperty(exports, 'BlockPicker', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Block).default; + } +}); + +var _Circle = require('./components/circle/Circle'); + +Object.defineProperty(exports, 'CirclePicker', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Circle).default; + } +}); + +var _Chrome = require('./components/chrome/Chrome'); + +Object.defineProperty(exports, 'ChromePicker', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Chrome).default; + } +}); + +var _Compact = require('./components/compact/Compact'); + +Object.defineProperty(exports, 'CompactPicker', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Compact).default; + } +}); + +var _Github = require('./components/github/Github'); + +Object.defineProperty(exports, 'GithubPicker', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Github).default; + } +}); + +var _Hue = require('./components/hue/Hue'); + +Object.defineProperty(exports, 'HuePicker', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Hue).default; + } +}); + +var _Material = require('./components/material/Material'); + +Object.defineProperty(exports, 'MaterialPicker', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Material).default; + } +}); + +var _Photoshop = require('./components/photoshop/Photoshop'); + +Object.defineProperty(exports, 'PhotoshopPicker', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Photoshop).default; + } +}); + +var _Sketch = require('./components/sketch/Sketch'); + +Object.defineProperty(exports, 'SketchPicker', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Sketch).default; + } +}); + +var _Slider = require('./components/slider/Slider'); + +Object.defineProperty(exports, 'SliderPicker', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Slider).default; + } +}); + +var _Swatches = require('./components/swatches/Swatches'); + +Object.defineProperty(exports, 'SwatchesPicker', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Swatches).default; + } +}); + +var _Twitter = require('./components/twitter/Twitter'); + +Object.defineProperty(exports, 'TwitterPicker', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Twitter).default; + } +}); + +var _Google = require('./components/google/Google'); + +Object.defineProperty(exports, 'GooglePicker', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_Google).default; + } +}); + +var _ColorWrap = require('./components/common/ColorWrap'); + +Object.defineProperty(exports, 'CustomPicker', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_ColorWrap).default; + } +}); + +var _Chrome2 = _interopRequireDefault(_Chrome); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +exports.default = _Chrome2.default; +},{"./components/alpha/Alpha":311,"./components/block/Block":313,"./components/chrome/Chrome":315,"./components/circle/Circle":319,"./components/common/ColorWrap":323,"./components/compact/Compact":330,"./components/github/Github":333,"./components/google/Google":335,"./components/hue/Hue":339,"./components/material/Material":341,"./components/photoshop/Photoshop":342,"./components/sketch/Sketch":348,"./components/slider/Slider":351,"./components/swatches/Swatches":355,"./components/twitter/Twitter":358}],366:[function(require,module,exports){ +(function (process){ +/** @license React v16.13.1 * react-is.development.js * * Copyright (c) Facebook, Inc. and its affiliates. @@ -17,7 +35072,184 @@ object-assign * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ -'use strict';_0x18d99b('0x65f')!==_0x4c971e[_0x18d99b('0x59c')][_0x18d99b('0x240')]&&function(){var _0x203788=_0x18d99b,_0x29a8b2=_0x203788('0x67')==typeof Symbol&&Symbol[_0x203788('0x912')],_0x2609ed=_0x29a8b2?Symbol['for'](_0x203788('0xd09')):0xeac7,_0x3caf70=_0x29a8b2?Symbol[_0x203788('0x912')](_0x203788('0xcef')):0xeaca,_0x19fe42=_0x29a8b2?Symbol[_0x203788('0x912')](_0x203788('0x541')):0xeacb,_0x47bb5a=_0x29a8b2?Symbol[_0x203788('0x912')](_0x203788('0x189')):0xeacc,_0x58dffc=_0x29a8b2?Symbol['for']('react.profiler'):0xead2,_0x166e7b=_0x29a8b2?Symbol[_0x203788('0x912')](_0x203788('0xae8')):0xeacd,_0x493955=_0x29a8b2?Symbol['for'](_0x203788('0x4f0')):0xeace,_0xff9cde=_0x29a8b2?Symbol[_0x203788('0x912')](_0x203788('0xc6e')):0xeacf,_0x195f27=_0x29a8b2?Symbol[_0x203788('0x912')]('react.concurrent_mode'):0xeacf,_0x13d82b=_0x29a8b2?Symbol['for'](_0x203788('0x799')):0xead0,_0x562079=_0x29a8b2?Symbol[_0x203788('0x912')](_0x203788('0x8ed')):0xead1,_0x177dab=_0x29a8b2?Symbol[_0x203788('0x912')](_0x203788('0x986')):0xead8,_0x47c64a=_0x29a8b2?Symbol['for'](_0x203788('0x6ad')):0xead3,_0x9e17f7=_0x29a8b2?Symbol[_0x203788('0x912')](_0x203788('0x80b')):0xead4,_0x444e71=_0x29a8b2?Symbol['for'](_0x203788('0x4e5')):0xead9,_0xbc2842=_0x29a8b2?Symbol[_0x203788('0x912')](_0x203788('0x335')):0xead5,_0x14a63f=_0x29a8b2?Symbol['for']('react.responder'):0xead6,_0x10d794=_0x29a8b2?Symbol[_0x203788('0x912')](_0x203788('0x677')):0xead7;function _0x37b5bd(_0x21170a){var _0x4f6e7a=_0x203788;if(_0x4f6e7a('0x669')==typeof _0x21170a&&null!==_0x21170a){var _0x4e57f3=_0x21170a[_0x4f6e7a('0x7f6')];switch(_0x4e57f3){case _0x2609ed:var _0x4a3db3=_0x21170a[_0x4f6e7a('0xb88')];switch(_0x4a3db3){case _0xff9cde:case _0x195f27:case _0x19fe42:case _0x58dffc:case _0x47bb5a:case _0x562079:return _0x4a3db3;default:var _0x166c21=_0x4a3db3&&_0x4a3db3[_0x4f6e7a('0x7f6')];switch(_0x166c21){case _0x493955:case _0x13d82b:case _0x9e17f7:case _0x47c64a:case _0x166e7b:return _0x166c21;default:return _0x4e57f3;}}case _0x3caf70:return _0x4e57f3;}}}var _0x229447=_0xff9cde,_0x3dc64b=_0x195f27,_0x21bcbe=_0x493955,_0x85e04e=_0x166e7b,_0x4cf257=_0x2609ed,_0x15c246=_0x13d82b,_0x54d43c=_0x19fe42,_0x57e0da=_0x9e17f7,_0x4642cf=_0x47c64a,_0x2b801f=_0x3caf70,_0x4d84a1=_0x58dffc,_0x570250=_0x47bb5a,_0x24df6a=_0x562079,_0x2a6459=!0x1;function _0xdfd9a4(_0xed8573){return _0x37b5bd(_0xed8573)===_0x195f27;}_0x504bab[_0x203788('0x55a')]=_0x229447,_0x504bab[_0x203788('0xb85')]=_0x3dc64b,_0x504bab[_0x203788('0x6e')]=_0x21bcbe,_0x504bab[_0x203788('0x26b')]=_0x85e04e,_0x504bab[_0x203788('0xb23')]=_0x4cf257,_0x504bab[_0x203788('0x6cb')]=_0x15c246,_0x504bab[_0x203788('0x6a5')]=_0x54d43c,_0x504bab[_0x203788('0x57d')]=_0x57e0da,_0x504bab[_0x203788('0xe5')]=_0x4642cf,_0x504bab[_0x203788('0x2a9')]=_0x2b801f,_0x504bab[_0x203788('0x6a0')]=_0x4d84a1,_0x504bab['StrictMode']=_0x570250,_0x504bab[_0x203788('0x778')]=_0x24df6a,_0x504bab['isAsyncMode']=function(_0x1218ff){var _0x55762d=_0x203788;return _0x2a6459||(_0x2a6459=!0x0,console[_0x55762d('0x623')](_0x55762d('0x4a3'))),_0xdfd9a4(_0x1218ff)||_0x37b5bd(_0x1218ff)===_0xff9cde;},_0x504bab[_0x203788('0xcea')]=_0xdfd9a4,_0x504bab[_0x203788('0x18c')]=function(_0x3e45a5){return _0x37b5bd(_0x3e45a5)===_0x493955;},_0x504bab[_0x203788('0x8b0')]=function(_0x4c6656){return _0x37b5bd(_0x4c6656)===_0x166e7b;},_0x504bab['isElement']=function(_0xbab6b5){var _0x41d43e=_0x203788;return _0x41d43e('0x669')==typeof _0xbab6b5&&null!==_0xbab6b5&&_0xbab6b5['$$typeof']===_0x2609ed;},_0x504bab[_0x203788('0xba3')]=function(_0x3c195){return _0x37b5bd(_0x3c195)===_0x13d82b;},_0x504bab[_0x203788('0x364')]=function(_0x27a4f3){return _0x37b5bd(_0x27a4f3)===_0x19fe42;},_0x504bab[_0x203788('0xced')]=function(_0x5191f4){return _0x37b5bd(_0x5191f4)===_0x9e17f7;},_0x504bab['isMemo']=function(_0xce1627){return _0x37b5bd(_0xce1627)===_0x47c64a;},_0x504bab[_0x203788('0xa66')]=function(_0x13d2dc){return _0x37b5bd(_0x13d2dc)===_0x3caf70;},_0x504bab[_0x203788('0xc5d')]=function(_0x55a143){return _0x37b5bd(_0x55a143)===_0x58dffc;},_0x504bab[_0x203788('0x595')]=function(_0x2bfdd3){return _0x37b5bd(_0x2bfdd3)===_0x47bb5a;},_0x504bab[_0x203788('0xf3')]=function(_0x2910a9){return _0x37b5bd(_0x2910a9)===_0x562079;},_0x504bab['isValidElementType']=function(_0x5ae381){var _0x1ad7ad=_0x203788;return _0x1ad7ad('0x4ba')==typeof _0x5ae381||_0x1ad7ad('0x67')==typeof _0x5ae381||_0x5ae381===_0x19fe42||_0x5ae381===_0x195f27||_0x5ae381===_0x58dffc||_0x5ae381===_0x47bb5a||_0x5ae381===_0x562079||_0x5ae381===_0x177dab||_0x1ad7ad('0x669')==typeof _0x5ae381&&null!==_0x5ae381&&(_0x5ae381[_0x1ad7ad('0x7f6')]===_0x9e17f7||_0x5ae381['$$typeof']===_0x47c64a||_0x5ae381[_0x1ad7ad('0x7f6')]===_0x166e7b||_0x5ae381[_0x1ad7ad('0x7f6')]===_0x493955||_0x5ae381['$$typeof']===_0x13d82b||_0x5ae381[_0x1ad7ad('0x7f6')]===_0xbc2842||_0x5ae381[_0x1ad7ad('0x7f6')]===_0x14a63f||_0x5ae381[_0x1ad7ad('0x7f6')]===_0x10d794||_0x5ae381[_0x1ad7ad('0x7f6')]===_0x444e71);},_0x504bab[_0x203788('0x33')]=_0x37b5bd;}();}['call'](this,_0x236192(_0x367202('0x93e'))));},{'_process':0x6}],0x16f:[function(_0x6daa9,_0x5e57f2,_0x588873){var _0x18a6e5=_0x322f0f;/** @license React v16.13.1 + +'use strict'; + + + +if (process.env.NODE_ENV !== "production") { + (function() { +'use strict'; + +// The Symbol used to tag the ReactElement-like types. If there is no native Symbol +// nor polyfill, then a plain number is used for performance. +var hasSymbol = typeof Symbol === 'function' && Symbol.for; +var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7; +var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca; +var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb; +var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc; +var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2; +var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd; +var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary +// (unstable) APIs that have been removed. Can we remove the symbols? + +var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf; +var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf; +var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0; +var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1; +var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8; +var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3; +var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4; +var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9; +var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5; +var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6; +var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7; + +function isValidElementType(type) { + return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill. + type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE); +} + +function typeOf(object) { + if (typeof object === 'object' && object !== null) { + var $$typeof = object.$$typeof; + + switch ($$typeof) { + case REACT_ELEMENT_TYPE: + var type = object.type; + + switch (type) { + case REACT_ASYNC_MODE_TYPE: + case REACT_CONCURRENT_MODE_TYPE: + case REACT_FRAGMENT_TYPE: + case REACT_PROFILER_TYPE: + case REACT_STRICT_MODE_TYPE: + case REACT_SUSPENSE_TYPE: + return type; + + default: + var $$typeofType = type && type.$$typeof; + + switch ($$typeofType) { + case REACT_CONTEXT_TYPE: + case REACT_FORWARD_REF_TYPE: + case REACT_LAZY_TYPE: + case REACT_MEMO_TYPE: + case REACT_PROVIDER_TYPE: + return $$typeofType; + + default: + return $$typeof; + } + + } + + case REACT_PORTAL_TYPE: + return $$typeof; + } + } + + return undefined; +} // AsyncMode is deprecated along with isAsyncMode + +var AsyncMode = REACT_ASYNC_MODE_TYPE; +var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE; +var ContextConsumer = REACT_CONTEXT_TYPE; +var ContextProvider = REACT_PROVIDER_TYPE; +var Element = REACT_ELEMENT_TYPE; +var ForwardRef = REACT_FORWARD_REF_TYPE; +var Fragment = REACT_FRAGMENT_TYPE; +var Lazy = REACT_LAZY_TYPE; +var Memo = REACT_MEMO_TYPE; +var Portal = REACT_PORTAL_TYPE; +var Profiler = REACT_PROFILER_TYPE; +var StrictMode = REACT_STRICT_MODE_TYPE; +var Suspense = REACT_SUSPENSE_TYPE; +var hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated + +function isAsyncMode(object) { + { + if (!hasWarnedAboutDeprecatedIsAsyncMode) { + hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint + + console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.'); + } + } + + return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE; +} +function isConcurrentMode(object) { + return typeOf(object) === REACT_CONCURRENT_MODE_TYPE; +} +function isContextConsumer(object) { + return typeOf(object) === REACT_CONTEXT_TYPE; +} +function isContextProvider(object) { + return typeOf(object) === REACT_PROVIDER_TYPE; +} +function isElement(object) { + return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; +} +function isForwardRef(object) { + return typeOf(object) === REACT_FORWARD_REF_TYPE; +} +function isFragment(object) { + return typeOf(object) === REACT_FRAGMENT_TYPE; +} +function isLazy(object) { + return typeOf(object) === REACT_LAZY_TYPE; +} +function isMemo(object) { + return typeOf(object) === REACT_MEMO_TYPE; +} +function isPortal(object) { + return typeOf(object) === REACT_PORTAL_TYPE; +} +function isProfiler(object) { + return typeOf(object) === REACT_PROFILER_TYPE; +} +function isStrictMode(object) { + return typeOf(object) === REACT_STRICT_MODE_TYPE; +} +function isSuspense(object) { + return typeOf(object) === REACT_SUSPENSE_TYPE; +} + +exports.AsyncMode = AsyncMode; +exports.ConcurrentMode = ConcurrentMode; +exports.ContextConsumer = ContextConsumer; +exports.ContextProvider = ContextProvider; +exports.Element = Element; +exports.ForwardRef = ForwardRef; +exports.Fragment = Fragment; +exports.Lazy = Lazy; +exports.Memo = Memo; +exports.Portal = Portal; +exports.Profiler = Profiler; +exports.StrictMode = StrictMode; +exports.Suspense = Suspense; +exports.isAsyncMode = isAsyncMode; +exports.isConcurrentMode = isConcurrentMode; +exports.isContextConsumer = isContextConsumer; +exports.isContextProvider = isContextProvider; +exports.isElement = isElement; +exports.isForwardRef = isForwardRef; +exports.isFragment = isFragment; +exports.isLazy = isLazy; +exports.isMemo = isMemo; +exports.isPortal = isPortal; +exports.isProfiler = isProfiler; +exports.isStrictMode = isStrictMode; +exports.isSuspense = isSuspense; +exports.isValidElementType = isValidElementType; +exports.typeOf = typeOf; + })(); +} + +}).call(this,require('_process')) + +},{"_process":6}],367:[function(require,module,exports){ +/** @license React v16.13.1 * react-is.production.min.js * * Copyright (c) Facebook, Inc. and its affiliates. @@ -25,4 +35257,2244 @@ object-assign * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ -'use strict';var _0xcf9ee=_0x18a6e5('0x67')==typeof Symbol&&Symbol[_0x18a6e5('0x912')],_0x38a3c4=_0xcf9ee?Symbol[_0x18a6e5('0x912')](_0x18a6e5('0xd09')):0xeac7,_0x1ea414=_0xcf9ee?Symbol[_0x18a6e5('0x912')]('react.portal'):0xeaca,_0x62b34d=_0xcf9ee?Symbol[_0x18a6e5('0x912')](_0x18a6e5('0x541')):0xeacb,_0x54aa25=_0xcf9ee?Symbol[_0x18a6e5('0x912')](_0x18a6e5('0x189')):0xeacc,_0x58883a=_0xcf9ee?Symbol['for']('react.profiler'):0xead2,_0x3d33e8=_0xcf9ee?Symbol['for'](_0x18a6e5('0xae8')):0xeacd,_0x33b41d=_0xcf9ee?Symbol[_0x18a6e5('0x912')](_0x18a6e5('0x4f0')):0xeace,_0x4a23c8=_0xcf9ee?Symbol[_0x18a6e5('0x912')](_0x18a6e5('0xc6e')):0xeacf,_0x193efd=_0xcf9ee?Symbol[_0x18a6e5('0x912')](_0x18a6e5('0xb9b')):0xeacf,_0x38b6c3=_0xcf9ee?Symbol[_0x18a6e5('0x912')](_0x18a6e5('0x799')):0xead0,_0x4b50ee=_0xcf9ee?Symbol[_0x18a6e5('0x912')](_0x18a6e5('0x8ed')):0xead1,_0x3f0323=_0xcf9ee?Symbol[_0x18a6e5('0x912')](_0x18a6e5('0x986')):0xead8,_0x3a5313=_0xcf9ee?Symbol[_0x18a6e5('0x912')](_0x18a6e5('0x6ad')):0xead3,_0x49a2fd=_0xcf9ee?Symbol[_0x18a6e5('0x912')](_0x18a6e5('0x80b')):0xead4,_0x2d7916=_0xcf9ee?Symbol[_0x18a6e5('0x912')](_0x18a6e5('0x4e5')):0xead9,_0x252bdc=_0xcf9ee?Symbol[_0x18a6e5('0x912')](_0x18a6e5('0x335')):0xead5,_0x96a6c4=_0xcf9ee?Symbol[_0x18a6e5('0x912')](_0x18a6e5('0x91b')):0xead6,_0x1ce805=_0xcf9ee?Symbol[_0x18a6e5('0x912')](_0x18a6e5('0x677')):0xead7;function _0x1b1197(_0x5afd0d){var _0x5a93aa=_0x18a6e5;if(_0x5a93aa('0x669')==typeof _0x5afd0d&&null!==_0x5afd0d){var _0x5d1718=_0x5afd0d[_0x5a93aa('0x7f6')];switch(_0x5d1718){case _0x38a3c4:switch(_0x5afd0d=_0x5afd0d[_0x5a93aa('0xb88')]){case _0x4a23c8:case _0x193efd:case _0x62b34d:case _0x58883a:case _0x54aa25:case _0x4b50ee:return _0x5afd0d;default:switch(_0x5afd0d=_0x5afd0d&&_0x5afd0d['$$typeof']){case _0x33b41d:case _0x38b6c3:case _0x49a2fd:case _0x3a5313:case _0x3d33e8:return _0x5afd0d;default:return _0x5d1718;}}case _0x1ea414:return _0x5d1718;}}}function _0x3a14a3(_0x28bdb8){return _0x1b1197(_0x28bdb8)===_0x193efd;}_0x588873[_0x18a6e5('0x55a')]=_0x4a23c8,_0x588873[_0x18a6e5('0xb85')]=_0x193efd,_0x588873[_0x18a6e5('0x6e')]=_0x33b41d,_0x588873['ContextProvider']=_0x3d33e8,_0x588873[_0x18a6e5('0xb23')]=_0x38a3c4,_0x588873[_0x18a6e5('0x6cb')]=_0x38b6c3,_0x588873[_0x18a6e5('0x6a5')]=_0x62b34d,_0x588873[_0x18a6e5('0x57d')]=_0x49a2fd,_0x588873[_0x18a6e5('0xe5')]=_0x3a5313,_0x588873[_0x18a6e5('0x2a9')]=_0x1ea414,_0x588873[_0x18a6e5('0x6a0')]=_0x58883a,_0x588873[_0x18a6e5('0x21e')]=_0x54aa25,_0x588873[_0x18a6e5('0x778')]=_0x4b50ee,_0x588873[_0x18a6e5('0xd7e')]=function(_0x13e2c3){return _0x3a14a3(_0x13e2c3)||_0x1b1197(_0x13e2c3)===_0x4a23c8;},_0x588873[_0x18a6e5('0xcea')]=_0x3a14a3,_0x588873[_0x18a6e5('0x18c')]=function(_0x2db4d8){return _0x1b1197(_0x2db4d8)===_0x33b41d;},_0x588873[_0x18a6e5('0x8b0')]=function(_0x4e6fab){return _0x1b1197(_0x4e6fab)===_0x3d33e8;},_0x588873[_0x18a6e5('0x27c')]=function(_0xaf51e8){var _0x38018b=_0x18a6e5;return _0x38018b('0x669')==typeof _0xaf51e8&&null!==_0xaf51e8&&_0xaf51e8[_0x38018b('0x7f6')]===_0x38a3c4;},_0x588873[_0x18a6e5('0xba3')]=function(_0x420f1f){return _0x1b1197(_0x420f1f)===_0x38b6c3;},_0x588873['isFragment']=function(_0x33e016){return _0x1b1197(_0x33e016)===_0x62b34d;},_0x588873['isLazy']=function(_0x3b07fb){return _0x1b1197(_0x3b07fb)===_0x49a2fd;},_0x588873[_0x18a6e5('0x197')]=function(_0x453ce5){return _0x1b1197(_0x453ce5)===_0x3a5313;},_0x588873[_0x18a6e5('0xa66')]=function(_0x52fdb1){return _0x1b1197(_0x52fdb1)===_0x1ea414;},_0x588873['isProfiler']=function(_0x2df4aa){return _0x1b1197(_0x2df4aa)===_0x58883a;},_0x588873[_0x18a6e5('0x595')]=function(_0x4515ee){return _0x1b1197(_0x4515ee)===_0x54aa25;},_0x588873['isSuspense']=function(_0x90331d){return _0x1b1197(_0x90331d)===_0x4b50ee;},_0x588873[_0x18a6e5('0x27d')]=function(_0x1b5882){var _0x1886ac=_0x18a6e5;return _0x1886ac('0x4ba')==typeof _0x1b5882||_0x1886ac('0x67')==typeof _0x1b5882||_0x1b5882===_0x62b34d||_0x1b5882===_0x193efd||_0x1b5882===_0x58883a||_0x1b5882===_0x54aa25||_0x1b5882===_0x4b50ee||_0x1b5882===_0x3f0323||_0x1886ac('0x669')==typeof _0x1b5882&&null!==_0x1b5882&&(_0x1b5882[_0x1886ac('0x7f6')]===_0x49a2fd||_0x1b5882[_0x1886ac('0x7f6')]===_0x3a5313||_0x1b5882[_0x1886ac('0x7f6')]===_0x3d33e8||_0x1b5882[_0x1886ac('0x7f6')]===_0x33b41d||_0x1b5882[_0x1886ac('0x7f6')]===_0x38b6c3||_0x1b5882[_0x1886ac('0x7f6')]===_0x252bdc||_0x1b5882[_0x1886ac('0x7f6')]===_0x96a6c4||_0x1b5882['$$typeof']===_0x1ce805||_0x1b5882[_0x1886ac('0x7f6')]===_0x2d7916);},_0x588873['typeOf']=_0x1b1197;},{}],0x170:[function(_0x416784,_0x3b6471,_0x408b5d){var _0x4c089c=_0x322f0f;(function(_0x1f4a56){var _0x3201b0=_0x3e44;'use strict';'production'===_0x1f4a56[_0x3201b0('0x59c')][_0x3201b0('0x240')]?_0x3b6471[_0x3201b0('0x91e')]=_0x416784(_0x3201b0('0x877')):_0x3b6471['exports']=_0x416784('./cjs/react-is.development.js');}[_0x4c089c('0x928')](this,_0x416784(_0x4c089c('0x93e'))));},{'./cjs/react-is.development.js':0x16e,'./cjs/react-is.production.min.js':0x16f,'_process':0x6}],0x171:[function(_0x471f42,_0x557bc8,_0xd4d9c8){!function(_0x19784e,_0x4337e6){var _0x1176e4=_0x3e44;'object'==typeof _0xd4d9c8&&_0x1176e4('0x669')==typeof _0x557bc8?_0x557bc8['exports']=_0x4337e6(_0x471f42(_0x1176e4('0xb')),_0x471f42('react'),_0x471f42('signature_pad'),_0x471f42('trim-canvas')):_0x1176e4('0x67')==typeof define&&define[_0x1176e4('0x105')]?define([_0x1176e4('0xb'),'react',_0x1176e4('0x662'),_0x1176e4('0xcc')],_0x4337e6):'object'==typeof _0xd4d9c8?_0xd4d9c8[_0x1176e4('0xbd9')]=_0x4337e6(_0x471f42(_0x1176e4('0xb')),_0x471f42('react'),_0x471f42(_0x1176e4('0x662')),_0x471f42(_0x1176e4('0xcc'))):_0x19784e[_0x1176e4('0xbd9')]=_0x4337e6(_0x19784e[_0x1176e4('0xb')],_0x19784e[_0x1176e4('0x603')],_0x19784e[_0x1176e4('0x662')],_0x19784e[_0x1176e4('0xcc')]);}(this,function(_0x7b38c4,_0x10d15a,_0x144755,_0x39aebf){return function(_0x335431){function _0x16c714(_0x37f7a7){var _0x5f5141=_0x3e44;if(_0x574696[_0x37f7a7])return _0x574696[_0x37f7a7][_0x5f5141('0x91e')];var _0x16483b=_0x574696[_0x37f7a7]={'exports':{},'id':_0x37f7a7,'loaded':!0x1};return _0x335431[_0x37f7a7]['call'](_0x16483b[_0x5f5141('0x91e')],_0x16483b,_0x16483b[_0x5f5141('0x91e')],_0x16c714),_0x16483b[_0x5f5141('0x898')]=!0x0,_0x16483b['exports'];}var _0x574696={};return _0x16c714['m']=_0x335431,_0x16c714['c']=_0x574696,_0x16c714['p']='',_0x16c714(0x0);}([function(_0x1f6b9,_0x476da3,_0x1be866){var _0x119cf8=_0x3e44;'use strict';function _0x2d7eca(_0xdbc1d){var _0x89efe1=_0x3e44;return _0xdbc1d&&_0xdbc1d[_0x89efe1('0x866')]?_0xdbc1d:{'default':_0xdbc1d};}function _0x233f3c(_0x444a23,_0x589b0e){var _0x41ce57=_0x3e44,_0x4d90f9={};for(var _0x29ce6c in _0x444a23)_0x589b0e[_0x41ce57('0x857')](_0x29ce6c)>=0x0||Object['prototype']['hasOwnProperty'][_0x41ce57('0x928')](_0x444a23,_0x29ce6c)&&(_0x4d90f9[_0x29ce6c]=_0x444a23[_0x29ce6c]);return _0x4d90f9;}function _0x2a0df6(_0x347e2c,_0x54cf2a){if(!(_0x347e2c instanceof _0x54cf2a))throw new TypeError('Cannot\x20call\x20a\x20class\x20as\x20a\x20function');}function _0x2de21b(_0x2909d3,_0xb2dcf4){var _0x287560=_0x3e44;if(!_0x2909d3)throw new ReferenceError(_0x287560('0xba4'));return!_0xb2dcf4||_0x287560('0x669')!=typeof _0xb2dcf4&&_0x287560('0x67')!=typeof _0xb2dcf4?_0x2909d3:_0xb2dcf4;}Object['defineProperty'](_0x476da3,_0x119cf8('0x866'),{'value':!0x0});var _0x9e1047=Object[_0x119cf8('0x7df')]||function(_0x273760){var _0x4209f9=_0x119cf8;for(var _0x315c4b=0x1;_0x315c4b0x1&&void 0x0!==arguments[0x1]?arguments[0x1]:_0x8c1bc4('0x50');return function(_0x5caae7){function _0x400773(){var _0xa722=_0x3e44,_0x2e2110,_0xb90fd2,_0x50a851;_0x5449c2(this,_0x400773);for(var _0x136b20=arguments[_0xa722('0x1d1')],_0x1ce412=Array(_0x136b20),_0x26d971=0x0;_0x26d971<_0x136b20;_0x26d971++)_0x1ce412[_0x26d971]=arguments[_0x26d971];return _0xb90fd2=_0x50a851=_0x431db3(this,(_0x2e2110=_0x400773[_0xa722('0xc15')]||Object[_0xa722('0x418')](_0x400773))[_0xa722('0x928')][_0xa722('0x7da')](_0x2e2110,[this][_0xa722('0x49e')](_0x1ce412))),_0x50a851[_0xa722('0x97c')]={'active':!0x1},_0x50a851['handleMouseDown']=function(){var _0x3a5a1d=_0xa722;return _0x50a851[_0x3a5a1d('0x4f8')]({'active':!0x0});},_0x50a851[_0xa722('0x9e1')]=function(){var _0x55a2c9=_0xa722;return _0x50a851[_0x55a2c9('0x4f8')]({'active':!0x1});},_0x50a851['render']=function(){var _0x38c8d2=_0xa722;return _0x358a97[_0x38c8d2('0x53')][_0x38c8d2('0x914')](_0x506419,{'onMouseDown':_0x50a851[_0x38c8d2('0x1f7')],'onMouseUp':_0x50a851[_0x38c8d2('0x9e1')]},_0x358a97[_0x38c8d2('0x53')][_0x38c8d2('0x914')](_0x1d42c3,_0xf61837({},_0x50a851[_0x38c8d2('0x2d0')],_0x50a851['state'])));},_0x431db3(_0x50a851,_0xb90fd2);}return _0x575b9d(_0x400773,_0x5caae7),_0x400773;}(_0x358a97['default'][_0x8c1bc4('0xd04')]);};_0x4a968e[_0x51b97a('0x53')]=_0x16d8a8;},{'react':_0x322f0f('0x603')}],0x174:[function(_0x1e5bcd,_0x51f5ed,_0x18c740){var _0x390c6f=_0x322f0f;'use strict';Object[_0x390c6f('0x2cd')](_0x18c740,_0x390c6f('0x866'),{'value':!0x0}),_0x18c740[_0x390c6f('0x75b')]=void 0x0;var _0x4f0fd3,_0x1f5768=Object[_0x390c6f('0x7df')]||function(_0x3de54){var _0x3996b6=_0x390c6f;for(var _0x144e04=0x1;_0x144e040x1&&void 0x0!==arguments[0x1]?arguments[0x1]:'span';return function(_0x37aa51){function _0x30bc44(){var _0xe543b=_0x3e44,_0x19879a,_0x3e2164,_0x40a361;_0x2b4006(this,_0x30bc44);for(var _0x270535=arguments[_0xe543b('0x1d1')],_0x2b7efb=Array(_0x270535),_0x167ceb=0x0;_0x167ceb<_0x270535;_0x167ceb++)_0x2b7efb[_0x167ceb]=arguments[_0x167ceb];return _0x3e2164=_0x40a361=_0x3b8c90(this,(_0x19879a=_0x30bc44['__proto__']||Object[_0xe543b('0x418')](_0x30bc44))[_0xe543b('0x928')][_0xe543b('0x7da')](_0x19879a,[this][_0xe543b('0x49e')](_0x2b7efb))),_0x40a361['state']={'hover':!0x1},_0x40a361[_0xe543b('0x2bd')]=function(){var _0x4b00b8=_0xe543b;return _0x40a361[_0x4b00b8('0x4f8')]({'hover':!0x0});},_0x40a361[_0xe543b('0x70f')]=function(){var _0x5e0088=_0xe543b;return _0x40a361[_0x5e0088('0x4f8')]({'hover':!0x1});},_0x40a361[_0xe543b('0x265')]=function(){var _0xa1420f=_0xe543b;return _0x176f05[_0xa1420f('0x53')][_0xa1420f('0x914')](_0x4ad13f,{'onMouseOver':_0x40a361[_0xa1420f('0x2bd')],'onMouseOut':_0x40a361[_0xa1420f('0x70f')]},_0x176f05[_0xa1420f('0x53')][_0xa1420f('0x914')](_0x671895,_0x1f5768({},_0x40a361[_0xa1420f('0x2d0')],_0x40a361[_0xa1420f('0x97c')])));},_0x3b8c90(_0x40a361,_0x3e2164);}return _0x15fb26(_0x30bc44,_0x37aa51),_0x30bc44;}(_0x176f05['default'][_0x508f6e('0xd04')]);};_0x18c740[_0x390c6f('0x53')]=_0x45d50a;},{'react':'react'}],0x175:[function(_0x168ae9,_0x52e6cd,_0x531e1e){var _0x5485c8=_0x322f0f;'use strict';Object[_0x5485c8('0x2cd')](_0x531e1e,'__esModule',{'value':!0x0}),_0x531e1e['flattenNames']=void 0x0;var _0x25b8e1=_0x26aeff(_0x168ae9(_0x5485c8('0x723'))),_0x45a478=_0x26aeff(_0x168ae9(_0x5485c8('0xa36'))),_0x13c4bb=_0x26aeff(_0x168ae9(_0x5485c8('0x7d6'))),_0x14ec95=_0x26aeff(_0x168ae9(_0x5485c8('0x59b')));function _0x26aeff(_0x12a0c1){var _0x572f5e=_0x5485c8;return _0x12a0c1&&_0x12a0c1[_0x572f5e('0x866')]?_0x12a0c1:{'default':_0x12a0c1};}var _0x6f4b2c=_0x531e1e['flattenNames']=function _0x5724d4(){var _0x380894=_0x5485c8,_0x285659=arguments[_0x380894('0x1d1')]>0x0&&void 0x0!==arguments[0x0]?arguments[0x0]:[],_0x5ea5e8=[];return(0x0,_0x14ec95[_0x380894('0x53')])(_0x285659,function(_0x180bce){var _0x191668=_0x380894;Array[_0x191668('0x9f2')](_0x180bce)?_0x5724d4(_0x180bce)[_0x191668('0x4ad')](function(_0x282804){return _0x5ea5e8['push'](_0x282804);}):(0x0,_0x13c4bb[_0x191668('0x53')])(_0x180bce)?(0x0,_0x45a478[_0x191668('0x53')])(_0x180bce,function(_0x705a77,_0x13950e){var _0xcf70f=_0x191668;!0x0===_0x705a77&&_0x5ea5e8['push'](_0x13950e),_0x5ea5e8[_0xcf70f('0x8cd')](_0x13950e+'-'+_0x705a77);}):(0x0,_0x25b8e1[_0x191668('0x53')])(_0x180bce)&&_0x5ea5e8['push'](_0x180bce);}),_0x5ea5e8;};_0x531e1e['default']=_0x6f4b2c;},{'lodash/forOwn':0x10f,'lodash/isPlainObject':0x11d,'lodash/isString':0x11f,'lodash/map':0x125}],0x176:[function(_0x5b9051,_0x2a09aa,_0x17dfd6){var _0x1b951e=_0x322f0f;'use strict';Object['defineProperty'](_0x17dfd6,'__esModule',{'value':!0x0}),_0x17dfd6['ReactCSS']=_0x17dfd6[_0x1b951e('0x17')]=_0x17dfd6[_0x1b951e('0x676')]=_0x17dfd6['handleHover']=_0x17dfd6[_0x1b951e('0x75b')]=void 0x0;var _0x4b0345=_0x555a4c(_0x5b9051(_0x1b951e('0x67f'))),_0x316392=_0x555a4c(_0x5b9051(_0x1b951e('0x29b'))),_0x1dc978=_0x555a4c(_0x5b9051(_0x1b951e('0x531'))),_0x30e5dc=_0x555a4c(_0x5b9051(_0x1b951e('0x449'))),_0x2b4749=_0x555a4c(_0x5b9051(_0x1b951e('0x953'))),_0x1fa165=_0x555a4c(_0x5b9051(_0x1b951e('0x5e6')));function _0x555a4c(_0xc6d9f9){var _0x1f7eea=_0x1b951e;return _0xc6d9f9&&_0xc6d9f9[_0x1f7eea('0x866')]?_0xc6d9f9:{'default':_0xc6d9f9};}_0x17dfd6[_0x1b951e('0x75b')]=_0x30e5dc[_0x1b951e('0x53')],_0x17dfd6[_0x1b951e('0xc29')]=_0x30e5dc['default'],_0x17dfd6[_0x1b951e('0x676')]=_0x2b4749['default'],_0x17dfd6['loop']=_0x1fa165[_0x1b951e('0x53')];var _0x375194=_0x17dfd6[_0x1b951e('0x835')]=function(_0xfc67d6){var _0x495dc6=_0x1b951e;for(var _0x5ed28d=arguments[_0x495dc6('0x1d1')],_0x2f6d84=Array(_0x5ed28d>0x1?_0x5ed28d-0x1:0x0),_0x1067e6=0x1;_0x1067e6<_0x5ed28d;_0x1067e6++)_0x2f6d84[_0x1067e6-0x1]=arguments[_0x1067e6];var _0x56781d=(0x0,_0x4b0345[_0x495dc6('0x53')])(_0x2f6d84),_0x9b9744=(0x0,_0x316392[_0x495dc6('0x53')])(_0xfc67d6,_0x56781d);return(0x0,_0x1dc978[_0x495dc6('0x53')])(_0x9b9744);};_0x17dfd6[_0x1b951e('0x53')]=_0x375194;},{'./autoprefix':0x172,'./components/active':0x173,'./components/hover':0x174,'./flattenNames':0x175,'./loop':0x177,'./mergeClasses':0x178}],0x177:[function(_0x238a9e,_0x8a5801,_0x47074c){var _0x2f5a22=_0x322f0f;'use strict';Object[_0x2f5a22('0x2cd')](_0x47074c,_0x2f5a22('0x866'),{'value':!0x0}),_0x47074c[_0x2f5a22('0x53')]=function(_0x2a26ee,_0x40bf97){var _0x46b19c=_0x2f5a22,_0x239d7a={},_0x52ae89=function(_0x1e13bc){var _0x4b5923=_0x3e44,_0x39b08f=!(arguments[_0x4b5923('0x1d1')]>0x1&&void 0x0!==arguments[0x1])||arguments[0x1];_0x239d7a[_0x1e13bc]=_0x39b08f;};return 0x0===_0x2a26ee&&_0x52ae89(_0x46b19c('0xcf4')),_0x2a26ee===_0x40bf97-0x1&&_0x52ae89(_0x46b19c('0xa4b')),(0x0===_0x2a26ee||_0x2a26ee%0x2==0x0)&&_0x52ae89(_0x46b19c('0x597')),0x1===Math[_0x46b19c('0xabf')](_0x2a26ee%0x2)&&_0x52ae89(_0x46b19c('0x55f')),_0x52ae89(_0x46b19c('0x42f'),_0x2a26ee),_0x239d7a;};},{}],0x178:[function(_0x4c7f9a,_0x304e3c,_0x1135e5){var _0x169e04=_0x322f0f;'use strict';Object[_0x169e04('0x2cd')](_0x1135e5,_0x169e04('0x866'),{'value':!0x0}),_0x1135e5[_0x169e04('0x751')]=void 0x0;var _0x5213ab=_0x4b053c(_0x4c7f9a(_0x169e04('0xa36'))),_0x358356=_0x4b053c(_0x4c7f9a(_0x169e04('0x938'))),_0x4a39f9=Object[_0x169e04('0x7df')]||function(_0x3080de){var _0x2298e0=_0x169e04;for(var _0x4f7e64=0x1;_0x4f7e640x1&&void 0x0!==arguments[0x1]?arguments[0x1]:[],_0x526bd1=_0x287bbe[_0x4cef2e('0x53')]&&(0x0,_0x358356[_0x4cef2e('0x53')])(_0x287bbe[_0x4cef2e('0x53')])||{};return _0x350bcb[_0x4cef2e('0x4ad')](function(_0x1f8e3c){var _0x129b67=_0x287bbe[_0x1f8e3c];return _0x129b67&&(0x0,_0x5213ab['default'])(_0x129b67,function(_0x3fbc12,_0x1121e2){_0x526bd1[_0x1121e2]||(_0x526bd1[_0x1121e2]={}),_0x526bd1[_0x1121e2]=_0x4a39f9({},_0x526bd1[_0x1121e2],_0x129b67[_0x1121e2]);}),_0x1f8e3c;}),_0x526bd1;};_0x1135e5[_0x169e04('0x53')]=_0x10fb0e;},{'lodash/cloneDeep':0x109,'lodash/forOwn':0x10f}],0x179:[function(_0xfd06b9,_0xb5d706,_0x9433dc){!function(_0x2e0a46,_0x11ec38){var _0x47771c=_0x3e44;_0x47771c('0x669')==typeof _0x9433dc&&void 0x0!==_0xb5d706?_0xb5d706[_0x47771c('0x91e')]=_0x11ec38():_0x47771c('0x67')==typeof define&&define[_0x47771c('0x105')]?define(_0x11ec38):_0x2e0a46[_0x47771c('0xa40')]=_0x11ec38();}(this,function(){var _0x5137eb=_0x3e44;'use strict';function _0x565b93(_0x506826,_0x477100,_0x591668){var _0xe7f085=_0x3e44;this['x']=_0x506826,this['y']=_0x477100,this[_0xe7f085('0x322')]=_0x591668||new Date()['getTime']();}function _0x36a009(_0x48dca1,_0x1cd4af,_0x35fc60,_0x3111ab){var _0x2482a9=_0x3e44;this['startPoint']=_0x48dca1,this[_0x2482a9('0x348')]=_0x1cd4af,this[_0x2482a9('0xa13')]=_0x35fc60,this['endPoint']=_0x3111ab;}function _0x1813fc(_0x31d4de,_0x47c7ca){var _0x4a71ed=_0x3e44,_0x13f1c7=this,_0x1f906b=_0x47c7ca||{};this[_0x4a71ed('0xa74')]=_0x1f906b[_0x4a71ed('0xa74')]||0.7,this[_0x4a71ed('0xa98')]=_0x1f906b[_0x4a71ed('0xa98')]||0.5,this['maxWidth']=_0x1f906b[_0x4a71ed('0x276')]||2.5,this[_0x4a71ed('0xb31')]=_0x4a71ed('0xb31')in _0x1f906b?_0x1f906b[_0x4a71ed('0xb31')]:0x10,this['minDistance']=_0x4a71ed('0x416')in _0x1f906b?_0x1f906b[_0x4a71ed('0x416')]:0x5,this[_0x4a71ed('0xb31')]?this[_0x4a71ed('0x6e8')]=function(_0x1fd2b6,_0x1dee9d,_0x3840bd){var _0x56c929,_0x2fb86d,_0x2c3f42,_0x22790e=null,_0x506aaf=0x0;_0x3840bd||(_0x3840bd={});var _0x1c9571=function(){var _0x1251ed=_0x3e44;_0x506aaf=!0x1===_0x3840bd['leading']?0x0:Date[_0x1251ed('0xd82')](),_0x22790e=null,_0x2c3f42=_0x1fd2b6[_0x1251ed('0x7da')](_0x56c929,_0x2fb86d),_0x22790e||(_0x56c929=_0x2fb86d=null);};return function(){var _0x3df37f=_0x3e44,_0x5ea94d=Date[_0x3df37f('0xd82')]();_0x506aaf||!0x1!==_0x3840bd['leading']||(_0x506aaf=_0x5ea94d);var _0x2c1a6f=_0x1dee9d-(_0x5ea94d-_0x506aaf);return _0x56c929=this,_0x2fb86d=arguments,_0x2c1a6f<=0x0||_0x2c1a6f>_0x1dee9d?(_0x22790e&&(clearTimeout(_0x22790e),_0x22790e=null),_0x506aaf=_0x5ea94d,_0x2c3f42=_0x1fd2b6[_0x3df37f('0x7da')](_0x56c929,_0x2fb86d),_0x22790e||(_0x56c929=_0x2fb86d=null)):_0x22790e||!0x1===_0x3840bd['trailing']||(_0x22790e=setTimeout(_0x1c9571,_0x2c1a6f)),_0x2c3f42;};}(_0x1813fc[_0x4a71ed('0x3ec')][_0x4a71ed('0x56')],this[_0x4a71ed('0xb31')]):this[_0x4a71ed('0x6e8')]=_0x1813fc[_0x4a71ed('0x3ec')]['_strokeUpdate'],this[_0x4a71ed('0x3bf')]=_0x1f906b[_0x4a71ed('0x3bf')]||function(){var _0x13c174=_0x4a71ed;return(this[_0x13c174('0xa98')]+this[_0x13c174('0x276')])/0x2;},this['penColor']=_0x1f906b[_0x4a71ed('0xca0')]||_0x4a71ed('0x972'),this[_0x4a71ed('0xbf1')]=_0x1f906b[_0x4a71ed('0xbf1')]||'rgba(0,0,0,0)',this[_0x4a71ed('0x338')]=_0x1f906b['onBegin'],this['onEnd']=_0x1f906b[_0x4a71ed('0x378')],this[_0x4a71ed('0xab8')]=_0x31d4de,this[_0x4a71ed('0x363')]=_0x31d4de[_0x4a71ed('0xa7b')]('2d'),this[_0x4a71ed('0x4c')](),this[_0x4a71ed('0x43f')]=function(_0x511eae){var _0x12f0e7=_0x4a71ed;0x1===_0x511eae[_0x12f0e7('0x4d5')]&&(_0x13f1c7['_mouseButtonDown']=!0x0,_0x13f1c7[_0x12f0e7('0x504')](_0x511eae));},this[_0x4a71ed('0x2de')]=function(_0x579c48){var _0x46da65=_0x4a71ed;_0x13f1c7[_0x46da65('0x4cd')]&&_0x13f1c7[_0x46da65('0x6e8')](_0x579c48);},this[_0x4a71ed('0xcee')]=function(_0x162dec){var _0x319939=_0x4a71ed;0x1===_0x162dec['which']&&_0x13f1c7[_0x319939('0x4cd')]&&(_0x13f1c7[_0x319939('0x4cd')]=!0x1,_0x13f1c7[_0x319939('0x323')](_0x162dec));},this[_0x4a71ed('0x96')]=function(_0x1b406b){var _0x1020fd=_0x4a71ed;if(0x1===_0x1b406b[_0x1020fd('0x75e')][_0x1020fd('0x1d1')]){var _0x517589=_0x1b406b[_0x1020fd('0x891')][0x0];_0x13f1c7[_0x1020fd('0x504')](_0x517589);}},this[_0x4a71ed('0xd1d')]=function(_0x3d5058){var _0x455166=_0x4a71ed;_0x3d5058[_0x455166('0x731')]();var _0x56a414=_0x3d5058[_0x455166('0x75e')][0x0];_0x13f1c7[_0x455166('0x6e8')](_0x56a414);},this[_0x4a71ed('0xd3a')]=function(_0x136c68){var _0x4e1aa0=_0x4a71ed;_0x136c68[_0x4e1aa0('0xb01')]===_0x13f1c7[_0x4e1aa0('0xab8')]&&(_0x136c68['preventDefault'](),_0x13f1c7[_0x4e1aa0('0x323')](_0x136c68));},this['on']();}return _0x565b93[_0x5137eb('0x3ec')][_0x5137eb('0x30')]=function(_0x1623a8){var _0x2f5b77=_0x5137eb;return this['time']!==_0x1623a8[_0x2f5b77('0x322')]?this['distanceTo'](_0x1623a8)/(this[_0x2f5b77('0x322')]-_0x1623a8[_0x2f5b77('0x322')]):0x1;},_0x565b93[_0x5137eb('0x3ec')][_0x5137eb('0x69c')]=function(_0x580b7a){var _0x3eb860=_0x5137eb;return Math[_0x3eb860('0xdb3')](Math[_0x3eb860('0xc1')](this['x']-_0x580b7a['x'],0x2)+Math['pow'](this['y']-_0x580b7a['y'],0x2));},_0x565b93['prototype'][_0x5137eb('0x686')]=function(_0x1bfe60){var _0x5be60e=_0x5137eb;return this['x']===_0x1bfe60['x']&&this['y']===_0x1bfe60['y']&&this[_0x5be60e('0x322')]===_0x1bfe60[_0x5be60e('0x322')];},_0x36a009[_0x5137eb('0x3ec')]['length']=function(){var _0x34a2f6=_0x5137eb;for(var _0x34d0ea=0x0,_0x365143=void 0x0,_0x384ba8=void 0x0,_0x3e1d94=0x0;_0x3e1d94<=0xa;_0x3e1d94+=0x1){var _0x587450=_0x3e1d94/0xa,_0x46fe32=this['_point'](_0x587450,this[_0x34a2f6('0xdc2')]['x'],this[_0x34a2f6('0x348')]['x'],this[_0x34a2f6('0xa13')]['x'],this[_0x34a2f6('0x70')]['x']),_0x410333=this[_0x34a2f6('0x309')](_0x587450,this[_0x34a2f6('0xdc2')]['y'],this['control1']['y'],this[_0x34a2f6('0xa13')]['y'],this[_0x34a2f6('0x70')]['y']);if(_0x3e1d94>0x0){var _0x3c3517=_0x46fe32-_0x365143,_0x4eb15c=_0x410333-_0x384ba8;_0x34d0ea+=Math['sqrt'](_0x3c3517*_0x3c3517+_0x4eb15c*_0x4eb15c);}_0x365143=_0x46fe32,_0x384ba8=_0x410333;}return _0x34d0ea;},_0x36a009[_0x5137eb('0x3ec')][_0x5137eb('0x309')]=function(_0x1c25c8,_0x22d715,_0xa50fd5,_0x4ce097,_0x330059){return _0x22d715*(0x1-_0x1c25c8)*(0x1-_0x1c25c8)*(0x1-_0x1c25c8)+0x3*_0xa50fd5*(0x1-_0x1c25c8)*(0x1-_0x1c25c8)*_0x1c25c8+0x3*_0x4ce097*(0x1-_0x1c25c8)*_0x1c25c8*_0x1c25c8+_0x330059*_0x1c25c8*_0x1c25c8*_0x1c25c8;},_0x1813fc[_0x5137eb('0x3ec')]['clear']=function(){var _0x1b0811=_0x5137eb,_0x24661e=this['_ctx'],_0x2d802e=this['_canvas'];_0x24661e['fillStyle']=this[_0x1b0811('0xbf1')],_0x24661e[_0x1b0811('0xdbe')](0x0,0x0,_0x2d802e[_0x1b0811('0x9c3')],_0x2d802e[_0x1b0811('0x448')]),_0x24661e[_0x1b0811('0xad9')](0x0,0x0,_0x2d802e[_0x1b0811('0x9c3')],_0x2d802e[_0x1b0811('0x448')]),this[_0x1b0811('0xd61')]=[],this[_0x1b0811('0x73b')](),this[_0x1b0811('0x77c')]=!0x0;},_0x1813fc['prototype'][_0x5137eb('0xc2')]=function(_0x39a5d6){var _0x3a0059=_0x5137eb,_0x3b5388=this,_0x2e1731=arguments[_0x3a0059('0x1d1')]>0x1&&void 0x0!==arguments[0x1]?arguments[0x1]:{},_0x8af368=new Image(),_0x285fcc=_0x2e1731['ratio']||window[_0x3a0059('0x3c2')]||0x1,_0x4ee2aa=_0x2e1731[_0x3a0059('0x9c3')]||this[_0x3a0059('0xab8')][_0x3a0059('0x9c3')]/_0x285fcc,_0x5042a6=_0x2e1731[_0x3a0059('0x448')]||this['_canvas']['height']/_0x285fcc;this['_reset'](),_0x8af368[_0x3a0059('0xb4e')]=_0x39a5d6,_0x8af368[_0x3a0059('0x943')]=function(){var _0x8ed292=_0x3a0059;_0x3b5388[_0x8ed292('0x363')][_0x8ed292('0x426')](_0x8af368,0x0,0x0,_0x4ee2aa,_0x5042a6);},this[_0x3a0059('0x77c')]=!0x1;},_0x1813fc[_0x5137eb('0x3ec')][_0x5137eb('0x952')]=function(_0x30ec96){var _0x1d133e=_0x5137eb,_0x1bb84d;switch(_0x30ec96){case'image/svg+xml':return this[_0x1d133e('0xbed')]();default:for(var _0x16dec4=arguments['length'],_0x4f8bb3=Array(_0x16dec4>0x1?_0x16dec4-0x1:0x0),_0xb84bf=0x1;_0xb84bf<_0x16dec4;_0xb84bf++)_0x4f8bb3[_0xb84bf-0x1]=arguments[_0xb84bf];return(_0x1bb84d=this['_canvas'])[_0x1d133e('0x952')]['apply'](_0x1bb84d,[_0x30ec96][_0x1d133e('0x49e')](_0x4f8bb3));}},_0x1813fc[_0x5137eb('0x3ec')]['on']=function(){var _0x2142a4=_0x5137eb;this[_0x2142a4('0xa23')](),this[_0x2142a4('0x9a2')]();},_0x1813fc[_0x5137eb('0x3ec')][_0x5137eb('0x1bd')]=function(){var _0xbbbecf=_0x5137eb;this['_canvas'][_0xbbbecf('0xbdd')](_0xbbbecf('0x2dc'),this[_0xbbbecf('0x43f')]),this[_0xbbbecf('0xab8')][_0xbbbecf('0xbdd')](_0xbbbecf('0x22c'),this[_0xbbbecf('0x2de')]),document['removeEventListener'](_0xbbbecf('0xdb9'),this['_handleMouseUp']),this['_canvas'][_0xbbbecf('0xbdd')]('touchstart',this[_0xbbbecf('0x96')]),this['_canvas'][_0xbbbecf('0xbdd')](_0xbbbecf('0xc5'),this[_0xbbbecf('0xd1d')]),this[_0xbbbecf('0xab8')]['removeEventListener']('touchend',this[_0xbbbecf('0xd3a')]);},_0x1813fc[_0x5137eb('0x3ec')][_0x5137eb('0x30a')]=function(){return this['_isEmpty'];},_0x1813fc[_0x5137eb('0x3ec')][_0x5137eb('0x504')]=function(_0x4ebc2e){var _0x54f018=_0x5137eb;this[_0x54f018('0xd61')][_0x54f018('0x8cd')]([]),this['_reset'](),this[_0x54f018('0x56')](_0x4ebc2e),'function'==typeof this[_0x54f018('0x338')]&&this[_0x54f018('0x338')](_0x4ebc2e);},_0x1813fc[_0x5137eb('0x3ec')][_0x5137eb('0x56')]=function(_0x3e4d6c){var _0x36fefb=_0x5137eb,_0x3466ac=_0x3e4d6c[_0x36fefb('0x4e6')],_0x1c2622=_0x3e4d6c[_0x36fefb('0x742')],_0x1356f8=this[_0x36fefb('0x951')](_0x3466ac,_0x1c2622),_0x3674ec=this[_0x36fefb('0xd61')][this[_0x36fefb('0xd61')][_0x36fefb('0x1d1')]-0x1],_0x42cadf=_0x3674ec&&_0x3674ec[_0x3674ec['length']-0x1],_0x3b4c79=_0x42cadf&&_0x1356f8[_0x36fefb('0x69c')](_0x42cadf)0x2,_0x2044aa=this['points'][0x0];if(!_0x21b4ae&&_0x2044aa&&this[_0x4839ce('0xa0e')](_0x2044aa),_0x2044aa){var _0x1da71c=this[_0x4839ce('0xd61')][this['_data'][_0x4839ce('0x1d1')]-0x1],_0x159a15=_0x1da71c[_0x1da71c[_0x4839ce('0x1d1')]-0x1];_0x2044aa[_0x4839ce('0x686')](_0x159a15)||_0x1da71c['push']({'x':_0x2044aa['x'],'y':_0x2044aa['y'],'time':_0x2044aa[_0x4839ce('0x322')],'color':this[_0x4839ce('0xca0')]});}_0x4839ce('0x67')==typeof this[_0x4839ce('0x378')]&&this['onEnd'](_0xd8db);},_0x1813fc['prototype'][_0x5137eb('0xa23')]=function(){var _0x28cc86=_0x5137eb;this[_0x28cc86('0x4cd')]=!0x1,this[_0x28cc86('0xab8')][_0x28cc86('0xe8')](_0x28cc86('0x2dc'),this[_0x28cc86('0x43f')]),this[_0x28cc86('0xab8')][_0x28cc86('0xe8')](_0x28cc86('0x22c'),this[_0x28cc86('0x2de')]),document['addEventListener'](_0x28cc86('0xdb9'),this['_handleMouseUp']);},_0x1813fc[_0x5137eb('0x3ec')]['_handleTouchEvents']=function(){var _0x4785ca=_0x5137eb;this[_0x4785ca('0xab8')][_0x4785ca('0x1c8')][_0x4785ca('0x17f')]=_0x4785ca('0x3b9'),this['_canvas'][_0x4785ca('0x1c8')]['touchAction']=_0x4785ca('0x3b9'),this[_0x4785ca('0xab8')][_0x4785ca('0xe8')](_0x4785ca('0x27b'),this['_handleTouchStart']),this[_0x4785ca('0xab8')][_0x4785ca('0xe8')]('touchmove',this['_handleTouchMove']),this[_0x4785ca('0xab8')][_0x4785ca('0xe8')](_0x4785ca('0x7a7'),this[_0x4785ca('0xd3a')]);},_0x1813fc[_0x5137eb('0x3ec')][_0x5137eb('0x73b')]=function(){var _0xdb4bfe=_0x5137eb;this[_0xdb4bfe('0x69')]=[],this[_0xdb4bfe('0xbc2')]=0x0,this['_lastWidth']=(this[_0xdb4bfe('0xa98')]+this[_0xdb4bfe('0x276')])/0x2,this[_0xdb4bfe('0x363')][_0xdb4bfe('0x404')]=this[_0xdb4bfe('0xca0')];},_0x1813fc[_0x5137eb('0x3ec')][_0x5137eb('0x951')]=function(_0x51e1cf,_0xc183a8,_0x2aebca){var _0x2d0742=_0x5137eb,_0x4aed85=this[_0x2d0742('0xab8')]['getBoundingClientRect']();return new _0x565b93(_0x51e1cf-_0x4aed85[_0x2d0742('0x7f8')],_0xc183a8-_0x4aed85[_0x2d0742('0x68')],_0x2aebca||new Date()['getTime']());},_0x1813fc[_0x5137eb('0x3ec')]['_addPoint']=function(_0x41d95b){var _0x4aad3c=_0x5137eb,_0x1decb6=this['points'];if(_0x1decb6[_0x4aad3c('0x8cd')](_0x41d95b),_0x1decb6['length']>0x2){0x3===_0x1decb6[_0x4aad3c('0x1d1')]&&_0x1decb6[_0x4aad3c('0xa5c')](_0x1decb6[0x0]);var _0xe6b27b=this[_0x4aad3c('0x56a')](_0x1decb6[0x0],_0x1decb6[0x1],_0x1decb6[0x2])['c2'],_0x3e3b5b=this['_calculateCurveControlPoints'](_0x1decb6[0x1],_0x1decb6[0x2],_0x1decb6[0x3])['c1'],_0x14dfd5=new _0x36a009(_0x1decb6[0x1],_0xe6b27b,_0x3e3b5b,_0x1decb6[0x2]),_0xbfefe=this[_0x4aad3c('0x4c3')](_0x14dfd5);return _0x1decb6[_0x4aad3c('0x3fa')](),{'curve':_0x14dfd5,'widths':_0xbfefe};}return{};},_0x1813fc['prototype'][_0x5137eb('0x56a')]=function(_0x4f171f,_0x32409a,_0x16b4fc){var _0x13ee0a=_0x5137eb,_0x38dc31=_0x4f171f['x']-_0x32409a['x'],_0x4661fb=_0x4f171f['y']-_0x32409a['y'],_0x3816c1=_0x32409a['x']-_0x16b4fc['x'],_0x17c3de=_0x32409a['y']-_0x16b4fc['y'],_0x4cc504=(_0x4f171f['x']+_0x32409a['x'])/0x2,_0x4d81de=(_0x4f171f['y']+_0x32409a['y'])/0x2,_0x3cde1f=(_0x32409a['x']+_0x16b4fc['x'])/0x2,_0x3bb334=(_0x32409a['y']+_0x16b4fc['y'])/0x2,_0x1352b4=Math['sqrt'](_0x38dc31*_0x38dc31+_0x4661fb*_0x4661fb),_0x143f53=Math[_0x13ee0a('0xdb3')](_0x3816c1*_0x3816c1+_0x17c3de*_0x17c3de),_0x39b52a=_0x143f53/(_0x1352b4+_0x143f53),_0x4038cc=_0x3cde1f+(_0x4cc504-_0x3cde1f)*_0x39b52a,_0x5a5543=_0x3bb334+(_0x4d81de-_0x3bb334)*_0x39b52a,_0x4b493d=_0x32409a['x']-_0x4038cc,_0x958673=_0x32409a['y']-_0x5a5543;return{'c1':new _0x565b93(_0x4cc504+_0x4b493d,_0x4d81de+_0x958673),'c2':new _0x565b93(_0x3cde1f+_0x4b493d,_0x3bb334+_0x958673)};},_0x1813fc[_0x5137eb('0x3ec')][_0x5137eb('0x4c3')]=function(_0x33fefc){var _0x2331f2=_0x5137eb,_0x11f8fb=_0x33fefc['startPoint'],_0x196b96=_0x33fefc[_0x2331f2('0x70')],_0x1cf35f={'start':null,'end':null},_0x2cb9b9=this[_0x2331f2('0xa74')]*_0x196b96[_0x2331f2('0x30')](_0x11f8fb)+(0x1-this[_0x2331f2('0xa74')])*this[_0x2331f2('0xbc2')],_0x4e619e=this['_strokeWidth'](_0x2cb9b9);return _0x1cf35f['start']=this[_0x2331f2('0x962')],_0x1cf35f[_0x2331f2('0x8e0')]=_0x4e619e,this['_lastVelocity']=_0x2cb9b9,this[_0x2331f2('0x962')]=_0x4e619e,_0x1cf35f;},_0x1813fc[_0x5137eb('0x3ec')][_0x5137eb('0x3dc')]=function(_0x1ded00){var _0x4f1ee9=_0x5137eb;return Math[_0x4f1ee9('0x5c0')](this[_0x4f1ee9('0x276')]/(_0x1ded00+0x1),this[_0x4f1ee9('0xa98')]);},_0x1813fc[_0x5137eb('0x3ec')][_0x5137eb('0x493')]=function(_0xfd4c1e,_0x49c7a3,_0x3cedd9){var _0x2f8019=_0x5137eb,_0x1d235a=this[_0x2f8019('0x363')];_0x1d235a[_0x2f8019('0x179')](_0xfd4c1e,_0x49c7a3),_0x1d235a['arc'](_0xfd4c1e,_0x49c7a3,_0x3cedd9,0x0,0x2*Math['PI'],!0x1),this[_0x2f8019('0x77c')]=!0x1;},_0x1813fc[_0x5137eb('0x3ec')]['_drawCurve']=function(_0x1cd052,_0x561162,_0x19e942){var _0x49d2d1=_0x5137eb,_0x2ca178=this[_0x49d2d1('0x363')],_0x224683=_0x19e942-_0x561162,_0x5668e9=Math[_0x49d2d1('0xd25')](_0x1cd052[_0x49d2d1('0x1d1')]());_0x2ca178['beginPath']();for(var _0x32c3d8=0x0;_0x32c3d8<_0x5668e9;_0x32c3d8+=0x1){var _0x4b3b66=_0x32c3d8/_0x5668e9,_0x2b02b2=_0x4b3b66*_0x4b3b66,_0xabbaeb=_0x2b02b2*_0x4b3b66,_0x53d1d2=0x1-_0x4b3b66,_0x6749c9=_0x53d1d2*_0x53d1d2,_0x47747a=_0x6749c9*_0x53d1d2,_0x15fd40=_0x47747a*_0x1cd052[_0x49d2d1('0xdc2')]['x'];_0x15fd40+=0x3*_0x6749c9*_0x4b3b66*_0x1cd052['control1']['x'],_0x15fd40+=0x3*_0x53d1d2*_0x2b02b2*_0x1cd052[_0x49d2d1('0xa13')]['x'],_0x15fd40+=_0xabbaeb*_0x1cd052[_0x49d2d1('0x70')]['x'];var _0x4314ca=_0x47747a*_0x1cd052[_0x49d2d1('0xdc2')]['y'];_0x4314ca+=0x3*_0x6749c9*_0x4b3b66*_0x1cd052['control1']['y'],_0x4314ca+=0x3*_0x53d1d2*_0x2b02b2*_0x1cd052[_0x49d2d1('0xa13')]['y'],_0x4314ca+=_0xabbaeb*_0x1cd052[_0x49d2d1('0x70')]['y'];var _0x44db14=_0x561162+_0xabbaeb*_0x224683;this[_0x49d2d1('0x493')](_0x15fd40,_0x4314ca,_0x44db14);}_0x2ca178[_0x49d2d1('0x47e')](),_0x2ca178['fill']();},_0x1813fc['prototype'][_0x5137eb('0xa0e')]=function(_0x4bff92){var _0x1dfcae=_0x5137eb,_0x20c0c2=this[_0x1dfcae('0x363')],_0x2319b7=_0x1dfcae('0x67')==typeof this[_0x1dfcae('0x3bf')]?this[_0x1dfcae('0x3bf')]():this[_0x1dfcae('0x3bf')];_0x20c0c2[_0x1dfcae('0x2fd')](),this[_0x1dfcae('0x493')](_0x4bff92['x'],_0x4bff92['y'],_0x2319b7),_0x20c0c2[_0x1dfcae('0x47e')](),_0x20c0c2[_0x1dfcae('0x609')]();},_0x1813fc['prototype'][_0x5137eb('0x444')]=function(_0x48b29e,_0x42b1cd,_0x24edc3){var _0x1c64f9=_0x5137eb;for(var _0x3ab483=0x0;_0x3ab483<_0x48b29e[_0x1c64f9('0x1d1')];_0x3ab483+=0x1){var _0x54c2a1=_0x48b29e[_0x3ab483];if(_0x54c2a1[_0x1c64f9('0x1d1')]>0x1)for(var _0x209c78=0x0;_0x209c78<_0x54c2a1['length'];_0x209c78+=0x1){var _0x2d1dbd=_0x54c2a1[_0x209c78],_0x45d646=new _0x565b93(_0x2d1dbd['x'],_0x2d1dbd['y'],_0x2d1dbd[_0x1c64f9('0x322')]),_0x468538=_0x2d1dbd[_0x1c64f9('0x8da')];if(0x0===_0x209c78)this[_0x1c64f9('0xca0')]=_0x468538,this[_0x1c64f9('0x73b')](),this[_0x1c64f9('0xdb')](_0x45d646);else{if(_0x209c78!==_0x54c2a1[_0x1c64f9('0x1d1')]-0x1){var _0x4dd72d=this[_0x1c64f9('0xdb')](_0x45d646),_0x5d07fc=_0x4dd72d[_0x1c64f9('0x66')],_0x388606=_0x4dd72d[_0x1c64f9('0x4f5')];_0x5d07fc&&_0x388606&&_0x42b1cd(_0x5d07fc,_0x388606,_0x468538);}}}else this['_reset'](),_0x24edc3(_0x54c2a1[0x0]);}},_0x1813fc[_0x5137eb('0x3ec')][_0x5137eb('0xbed')]=function(){var _0x18e14b=_0x5137eb,_0x3c02fc=this,_0x2b2aad=this['_data'],_0xc8f1cd=this['_canvas'],_0x1b1eb0=Math['max'](window[_0x18e14b('0x3c2')]||0x1,0x1),_0x4e0688=_0xc8f1cd[_0x18e14b('0x9c3')]/_0x1b1eb0,_0x473fca=_0xc8f1cd[_0x18e14b('0x448')]/_0x1b1eb0,_0x46dc79=document[_0x18e14b('0x98')](_0x18e14b('0x73a'),_0x18e14b('0x846'));_0x46dc79['setAttributeNS'](null,'width',_0xc8f1cd[_0x18e14b('0x9c3')]),_0x46dc79['setAttributeNS'](null,_0x18e14b('0x448'),_0xc8f1cd[_0x18e14b('0x448')]),this[_0x18e14b('0x444')](_0x2b2aad,function(_0x1fbab6,_0x2711a7,_0x39d502){var _0x140b77=_0x18e14b,_0x443435=document[_0x140b77('0x914')](_0x140b77('0x887'));if(!(isNaN(_0x1fbab6[_0x140b77('0x348')]['x'])||isNaN(_0x1fbab6[_0x140b77('0x348')]['y'])||isNaN(_0x1fbab6['control2']['x'])||isNaN(_0x1fbab6[_0x140b77('0xa13')]['y']))){var _0x178466='M\x20'+_0x1fbab6[_0x140b77('0xdc2')]['x'][_0x140b77('0xca9')](0x3)+','+_0x1fbab6[_0x140b77('0xdc2')]['y'][_0x140b77('0xca9')](0x3)+_0x140b77('0xac1')+_0x1fbab6[_0x140b77('0x348')]['x'][_0x140b77('0xca9')](0x3)+','+_0x1fbab6[_0x140b77('0x348')]['y'][_0x140b77('0xca9')](0x3)+'\x20'+_0x1fbab6['control2']['x'][_0x140b77('0xca9')](0x3)+','+_0x1fbab6[_0x140b77('0xa13')]['y'][_0x140b77('0xca9')](0x3)+'\x20'+_0x1fbab6['endPoint']['x']['toFixed'](0x3)+','+_0x1fbab6['endPoint']['y']['toFixed'](0x3);_0x443435[_0x140b77('0x583')]('d',_0x178466),_0x443435[_0x140b77('0x583')]('stroke-width',(2.25*_0x2711a7[_0x140b77('0x8e0')])[_0x140b77('0xca9')](0x3)),_0x443435['setAttribute'](_0x140b77('0x2a1'),_0x39d502),_0x443435[_0x140b77('0x583')](_0x140b77('0x609'),_0x140b77('0x3b9')),_0x443435[_0x140b77('0x583')](_0x140b77('0x2f8'),_0x140b77('0xd3b')),_0x46dc79[_0x140b77('0xc91')](_0x443435);}},function(_0x28cd60){var _0x28cfa0=_0x18e14b,_0x26f1da=document['createElement'](_0x28cfa0('0x66e')),_0x42d7d5=_0x28cfa0('0x67')==typeof _0x3c02fc[_0x28cfa0('0x3bf')]?_0x3c02fc['dotSize']():_0x3c02fc['dotSize'];_0x26f1da['setAttribute']('r',_0x42d7d5),_0x26f1da[_0x28cfa0('0x583')]('cx',_0x28cd60['x']),_0x26f1da['setAttribute']('cy',_0x28cd60['y']),_0x26f1da[_0x28cfa0('0x583')](_0x28cfa0('0x609'),_0x28cd60[_0x28cfa0('0x8da')]),_0x46dc79[_0x28cfa0('0xc91')](_0x26f1da);});var _0x196e6b=_0x18e14b('0x908')+_0x4e0688+'\x20'+_0x473fca+_0x18e14b('0xc8e')+_0x4e0688+_0x18e14b('0x8e8')+_0x473fca+'\x22>',_0x501f59=_0x46dc79[_0x18e14b('0xc08')];if(void 0x0===_0x501f59){var _0x32e6a4=document['createElement'](_0x18e14b('0x1a4')),_0x408dd8=_0x46dc79[_0x18e14b('0xbac')];_0x32e6a4[_0x18e14b('0xc08')]='';for(var _0x44c389=0x0;_0x44c389<_0x408dd8['length'];_0x44c389+=0x1)_0x32e6a4[_0x18e14b('0xc91')](_0x408dd8[_0x44c389][_0x18e14b('0xaef')](!0x0));_0x501f59=_0x32e6a4[_0x18e14b('0xc08')];}return _0x18e14b('0x89e')+btoa(_0x196e6b+_0x501f59+'');},_0x1813fc[_0x5137eb('0x3ec')][_0x5137eb('0x156')]=function(_0x24105c){var _0x5df977=_0x5137eb,_0x4fe74a=this;this['clear'](),this[_0x5df977('0x444')](_0x24105c,function(_0x432d2d,_0x42809d){var _0x2a14e2=_0x5df977;return _0x4fe74a[_0x2a14e2('0x14d')](_0x432d2d,_0x42809d['start'],_0x42809d['end']);},function(_0x3ac2ea){var _0x4c460d=_0x5df977;return _0x4fe74a[_0x4c460d('0xa0e')](_0x3ac2ea);}),this[_0x5df977('0xd61')]=_0x24105c;},_0x1813fc[_0x5137eb('0x3ec')][_0x5137eb('0x8e2')]=function(){var _0x3fda4e=_0x5137eb;return this[_0x3fda4e('0xd61')];},_0x1813fc;});},{}],0x17a:[function(_0x52893c,_0x5b9995,_0x569991){!function(_0x56dcc0){var _0x3e6aba=_0x3e44,_0x4969ff=/^\s+/,_0x35efbf=/\s+$/,_0x279864=0x0,_0x10b4f4=_0x56dcc0['round'],_0x2bce15=_0x56dcc0[_0x3e6aba('0x4d7')],_0xb404dd=_0x56dcc0[_0x3e6aba('0x5c0')],_0x865a64=_0x56dcc0[_0x3e6aba('0xbf0')];function _0x1322ed(_0x3c92d7,_0x198030){var _0x2f2337=_0x3e6aba;if(_0x198030=_0x198030||{},(_0x3c92d7=_0x3c92d7||'')instanceof _0x1322ed)return _0x3c92d7;if(!(this instanceof _0x1322ed))return new _0x1322ed(_0x3c92d7,_0x198030);var _0x1a5cf3=function(_0x82eda0){var _0x4ce55f=_0x3e44,_0x8c09f9={'r':0x0,'g':0x0,'b':0x0},_0x38f06d=0x1,_0x510dda=null,_0x5a1c88=null,_0x5bc05d=null,_0x379628=!0x1,_0x48a8f1=!0x1;_0x4ce55f('0x4ba')==typeof _0x82eda0&&(_0x82eda0=function(_0x324969){var _0x5756e0=_0x4ce55f;_0x324969=_0x324969['replace'](_0x4969ff,'')['replace'](_0x35efbf,'')['toLowerCase']();var _0x1402d6,_0x547c40=!0x1;if(_0x530dcc[_0x324969])_0x324969=_0x530dcc[_0x324969],_0x547c40=!0x0;else{if(_0x5756e0('0x79a')==_0x324969)return{'r':0x0,'g':0x0,'b':0x0,'a':0x0,'format':_0x5756e0('0x9e')};}if(_0x1402d6=_0x461f23['rgb'][_0x5756e0('0x203')](_0x324969))return{'r':_0x1402d6[0x1],'g':_0x1402d6[0x2],'b':_0x1402d6[0x3]};if(_0x1402d6=_0x461f23[_0x5756e0('0x260')][_0x5756e0('0x203')](_0x324969))return{'r':_0x1402d6[0x1],'g':_0x1402d6[0x2],'b':_0x1402d6[0x3],'a':_0x1402d6[0x4]};if(_0x1402d6=_0x461f23[_0x5756e0('0x4f4')][_0x5756e0('0x203')](_0x324969))return{'h':_0x1402d6[0x1],'s':_0x1402d6[0x2],'l':_0x1402d6[0x3]};if(_0x1402d6=_0x461f23[_0x5756e0('0x643')]['exec'](_0x324969))return{'h':_0x1402d6[0x1],'s':_0x1402d6[0x2],'l':_0x1402d6[0x3],'a':_0x1402d6[0x4]};if(_0x1402d6=_0x461f23[_0x5756e0('0xc0f')][_0x5756e0('0x203')](_0x324969))return{'h':_0x1402d6[0x1],'s':_0x1402d6[0x2],'v':_0x1402d6[0x3]};if(_0x1402d6=_0x461f23[_0x5756e0('0x2ab')][_0x5756e0('0x203')](_0x324969))return{'h':_0x1402d6[0x1],'s':_0x1402d6[0x2],'v':_0x1402d6[0x3],'a':_0x1402d6[0x4]};if(_0x1402d6=_0x461f23[_0x5756e0('0xaad')][_0x5756e0('0x203')](_0x324969))return{'r':_0xb13e7b(_0x1402d6[0x1]),'g':_0xb13e7b(_0x1402d6[0x2]),'b':_0xb13e7b(_0x1402d6[0x3]),'a':_0x2663ab(_0x1402d6[0x4]),'format':_0x547c40?_0x5756e0('0x9e'):_0x5756e0('0xaad')};if(_0x1402d6=_0x461f23[_0x5756e0('0xbf3')][_0x5756e0('0x203')](_0x324969))return{'r':_0xb13e7b(_0x1402d6[0x1]),'g':_0xb13e7b(_0x1402d6[0x2]),'b':_0xb13e7b(_0x1402d6[0x3]),'format':_0x547c40?'name':_0x5756e0('0x49b')};if(_0x1402d6=_0x461f23['hex4'][_0x5756e0('0x203')](_0x324969))return{'r':_0xb13e7b(_0x1402d6[0x1]+''+_0x1402d6[0x1]),'g':_0xb13e7b(_0x1402d6[0x2]+''+_0x1402d6[0x2]),'b':_0xb13e7b(_0x1402d6[0x3]+''+_0x1402d6[0x3]),'a':_0x2663ab(_0x1402d6[0x4]+''+_0x1402d6[0x4]),'format':_0x547c40?_0x5756e0('0x9e'):_0x5756e0('0xaad')};if(_0x1402d6=_0x461f23[_0x5756e0('0x579')]['exec'](_0x324969))return{'r':_0xb13e7b(_0x1402d6[0x1]+''+_0x1402d6[0x1]),'g':_0xb13e7b(_0x1402d6[0x2]+''+_0x1402d6[0x2]),'b':_0xb13e7b(_0x1402d6[0x3]+''+_0x1402d6[0x3]),'format':_0x547c40?_0x5756e0('0x9e'):_0x5756e0('0x49b')};return!0x1;}(_0x82eda0)),_0x4ce55f('0x669')==typeof _0x82eda0&&(_0x5d6d11(_0x82eda0['r'])&&_0x5d6d11(_0x82eda0['g'])&&_0x5d6d11(_0x82eda0['b'])?(_0xc8bc3a=_0x82eda0['r'],_0x5a7665=_0x82eda0['g'],_0x34a5ef=_0x82eda0['b'],_0x8c09f9={'r':0xff*_0x3a2964(_0xc8bc3a,0xff),'g':0xff*_0x3a2964(_0x5a7665,0xff),'b':0xff*_0x3a2964(_0x34a5ef,0xff)},_0x379628=!0x0,_0x48a8f1='%'===String(_0x82eda0['r'])[_0x4ce55f('0x926')](-0x1)?'prgb':_0x4ce55f('0x241')):_0x5d6d11(_0x82eda0['h'])&&_0x5d6d11(_0x82eda0['s'])&&_0x5d6d11(_0x82eda0['v'])?(_0x510dda=_0x5200d5(_0x82eda0['s']),_0x5a1c88=_0x5200d5(_0x82eda0['v']),_0x8c09f9=function(_0x298f9b,_0x3876ea,_0x390687){var _0x205ef3=_0x4ce55f;_0x298f9b=0x6*_0x3a2964(_0x298f9b,0x168),_0x3876ea=_0x3a2964(_0x3876ea,0x64),_0x390687=_0x3a2964(_0x390687,0x64);var _0x27f20d=_0x56dcc0[_0x205ef3('0xd25')](_0x298f9b),_0x58457b=_0x298f9b-_0x27f20d,_0x4845c6=_0x390687*(0x1-_0x3876ea),_0x18e642=_0x390687*(0x1-_0x58457b*_0x3876ea),_0x6704f8=_0x390687*(0x1-(0x1-_0x58457b)*_0x3876ea),_0x11d918=_0x27f20d%0x6;return{'r':0xff*[_0x390687,_0x18e642,_0x4845c6,_0x4845c6,_0x6704f8,_0x390687][_0x11d918],'g':0xff*[_0x6704f8,_0x390687,_0x390687,_0x18e642,_0x4845c6,_0x4845c6][_0x11d918],'b':0xff*[_0x4845c6,_0x4845c6,_0x6704f8,_0x390687,_0x390687,_0x18e642][_0x11d918]};}(_0x82eda0['h'],_0x510dda,_0x5a1c88),_0x379628=!0x0,_0x48a8f1=_0x4ce55f('0xc0f')):_0x5d6d11(_0x82eda0['h'])&&_0x5d6d11(_0x82eda0['s'])&&_0x5d6d11(_0x82eda0['l'])&&(_0x510dda=_0x5200d5(_0x82eda0['s']),_0x5bc05d=_0x5200d5(_0x82eda0['l']),_0x8c09f9=function(_0x5d6293,_0x51b601,_0x52d95d){var _0x364722,_0x3433c3,_0x5772cb;function _0x3daf5a(_0x3cc346,_0x17a4ee,_0x5bcaca){return _0x5bcaca<0x0&&(_0x5bcaca+=0x1),_0x5bcaca>0x1&&(_0x5bcaca-=0x1),_0x5bcaca<0x1/0x6?_0x3cc346+0x6*(_0x17a4ee-_0x3cc346)*_0x5bcaca:_0x5bcaca<0.5?_0x17a4ee:_0x5bcaca<0x2/0x3?_0x3cc346+(_0x17a4ee-_0x3cc346)*(0x2/0x3-_0x5bcaca)*0x6:_0x3cc346;}if(_0x5d6293=_0x3a2964(_0x5d6293,0x168),_0x51b601=_0x3a2964(_0x51b601,0x64),_0x52d95d=_0x3a2964(_0x52d95d,0x64),0x0===_0x51b601)_0x364722=_0x3433c3=_0x5772cb=_0x52d95d;else{var _0x3e596b=_0x52d95d<0.5?_0x52d95d*(0x1+_0x51b601):_0x52d95d+_0x51b601-_0x52d95d*_0x51b601,_0xf8d537=0x2*_0x52d95d-_0x3e596b;_0x364722=_0x3daf5a(_0xf8d537,_0x3e596b,_0x5d6293+0x1/0x3),_0x3433c3=_0x3daf5a(_0xf8d537,_0x3e596b,_0x5d6293),_0x5772cb=_0x3daf5a(_0xf8d537,_0x3e596b,_0x5d6293-0x1/0x3);}return{'r':0xff*_0x364722,'g':0xff*_0x3433c3,'b':0xff*_0x5772cb};}(_0x82eda0['h'],_0x510dda,_0x5bc05d),_0x379628=!0x0,_0x48a8f1=_0x4ce55f('0x4f4')),_0x82eda0[_0x4ce55f('0x106')]('a')&&(_0x38f06d=_0x82eda0['a']));var _0xc8bc3a,_0x5a7665,_0x34a5ef;return _0x38f06d=_0x4c7b9c(_0x38f06d),{'ok':_0x379628,'format':_0x82eda0[_0x4ce55f('0x10a')]||_0x48a8f1,'r':_0x2bce15(0xff,_0xb404dd(_0x8c09f9['r'],0x0)),'g':_0x2bce15(0xff,_0xb404dd(_0x8c09f9['g'],0x0)),'b':_0x2bce15(0xff,_0xb404dd(_0x8c09f9['b'],0x0)),'a':_0x38f06d};}(_0x3c92d7);this[_0x2f2337('0x5b2')]=_0x3c92d7,this['_r']=_0x1a5cf3['r'],this['_g']=_0x1a5cf3['g'],this['_b']=_0x1a5cf3['b'],this['_a']=_0x1a5cf3['a'],this['_roundA']=_0x10b4f4(0x64*this['_a'])/0x64,this[_0x2f2337('0x29c')]=_0x198030[_0x2f2337('0x10a')]||_0x1a5cf3[_0x2f2337('0x10a')],this[_0x2f2337('0x567')]=_0x198030[_0x2f2337('0xc5e')],this['_r']<0x1&&(this['_r']=_0x10b4f4(this['_r'])),this['_g']<0x1&&(this['_g']=_0x10b4f4(this['_g'])),this['_b']<0x1&&(this['_b']=_0x10b4f4(this['_b'])),this[_0x2f2337('0x618')]=_0x1a5cf3['ok'],this[_0x2f2337('0xc6c')]=_0x279864++;}function _0x3861bc(_0x563d34,_0x3cac22,_0x3da40d){_0x563d34=_0x3a2964(_0x563d34,0xff),_0x3cac22=_0x3a2964(_0x3cac22,0xff),_0x3da40d=_0x3a2964(_0x3da40d,0xff);var _0x72387e,_0x26d465,_0x124df6=_0xb404dd(_0x563d34,_0x3cac22,_0x3da40d),_0x299c97=_0x2bce15(_0x563d34,_0x3cac22,_0x3da40d),_0x3faeef=(_0x124df6+_0x299c97)/0x2;if(_0x124df6==_0x299c97)_0x72387e=_0x26d465=0x0;else{var _0x2760d1=_0x124df6-_0x299c97;switch(_0x26d465=_0x3faeef>0.5?_0x2760d1/(0x2-_0x124df6-_0x299c97):_0x2760d1/(_0x124df6+_0x299c97),_0x124df6){case _0x563d34:_0x72387e=(_0x3cac22-_0x3da40d)/_0x2760d1+(_0x3cac22<_0x3da40d?0x6:0x0);break;case _0x3cac22:_0x72387e=(_0x3da40d-_0x563d34)/_0x2760d1+0x2;break;case _0x3da40d:_0x72387e=(_0x563d34-_0x3cac22)/_0x2760d1+0x4;}_0x72387e/=0x6;}return{'h':_0x72387e,'s':_0x26d465,'l':_0x3faeef};}function _0x33385e(_0x522b37,_0xbb84df,_0x589854){_0x522b37=_0x3a2964(_0x522b37,0xff),_0xbb84df=_0x3a2964(_0xbb84df,0xff),_0x589854=_0x3a2964(_0x589854,0xff);var _0x2adc92,_0x2825e0,_0x56c5a4=_0xb404dd(_0x522b37,_0xbb84df,_0x589854),_0x38c2af=_0x2bce15(_0x522b37,_0xbb84df,_0x589854),_0x340313=_0x56c5a4,_0x4396e6=_0x56c5a4-_0x38c2af;if(_0x2825e0=0x0===_0x56c5a4?0x0:_0x4396e6/_0x56c5a4,_0x56c5a4==_0x38c2af)_0x2adc92=0x0;else{switch(_0x56c5a4){case _0x522b37:_0x2adc92=(_0xbb84df-_0x589854)/_0x4396e6+(_0xbb84df<_0x589854?0x6:0x0);break;case _0xbb84df:_0x2adc92=(_0x589854-_0x522b37)/_0x4396e6+0x2;break;case _0x589854:_0x2adc92=(_0x522b37-_0xbb84df)/_0x4396e6+0x4;}_0x2adc92/=0x6;}return{'h':_0x2adc92,'s':_0x2825e0,'v':_0x340313};}function _0x13b79f(_0x5bcf41,_0x2cc999,_0x2368f2,_0xb662c2){var _0x40758b=_0x3e6aba,_0x164ebf=[_0x43f842(_0x10b4f4(_0x5bcf41)[_0x40758b('0x8dc')](0x10)),_0x43f842(_0x10b4f4(_0x2cc999)[_0x40758b('0x8dc')](0x10)),_0x43f842(_0x10b4f4(_0x2368f2)['toString'](0x10))];return _0xb662c2&&_0x164ebf[0x0]['charAt'](0x0)==_0x164ebf[0x0]['charAt'](0x1)&&_0x164ebf[0x1][_0x40758b('0x48b')](0x0)==_0x164ebf[0x1]['charAt'](0x1)&&_0x164ebf[0x2][_0x40758b('0x48b')](0x0)==_0x164ebf[0x2][_0x40758b('0x48b')](0x1)?_0x164ebf[0x0][_0x40758b('0x48b')](0x0)+_0x164ebf[0x1]['charAt'](0x0)+_0x164ebf[0x2][_0x40758b('0x48b')](0x0):_0x164ebf[_0x40758b('0x2ee')]('');}function _0x19cc14(_0x2ddcdc,_0x14087d,_0x4b737b,_0x5c5ee3){var _0x1e3883=_0x3e6aba;return[_0x43f842(_0x44c793(_0x5c5ee3)),_0x43f842(_0x10b4f4(_0x2ddcdc)[_0x1e3883('0x8dc')](0x10)),_0x43f842(_0x10b4f4(_0x14087d)['toString'](0x10)),_0x43f842(_0x10b4f4(_0x4b737b)['toString'](0x10))][_0x1e3883('0x2ee')]('');}function _0xd7238a(_0x10931b,_0xb7d21c){var _0x24174c=_0x3e6aba;_0xb7d21c=0x0===_0xb7d21c?0x0:_0xb7d21c||0xa;var _0x4e26d3=_0x1322ed(_0x10931b)[_0x24174c('0x7fa')]();return _0x4e26d3['s']-=_0xb7d21c/0x64,_0x4e26d3['s']=_0xa595c(_0x4e26d3['s']),_0x1322ed(_0x4e26d3);}function _0x427d94(_0x572a8d,_0x44b1dd){var _0x4ca10f=_0x3e6aba;_0x44b1dd=0x0===_0x44b1dd?0x0:_0x44b1dd||0xa;var _0x173ee8=_0x1322ed(_0x572a8d)[_0x4ca10f('0x7fa')]();return _0x173ee8['s']+=_0x44b1dd/0x64,_0x173ee8['s']=_0xa595c(_0x173ee8['s']),_0x1322ed(_0x173ee8);}function _0x178edb(_0x1723ae){var _0x490b3a=_0x3e6aba;return _0x1322ed(_0x1723ae)[_0x490b3a('0x683')](0x64);}function _0x2b831d(_0x71734b,_0x5e8391){var _0x13460=_0x3e6aba;_0x5e8391=0x0===_0x5e8391?0x0:_0x5e8391||0xa;var _0x24d35c=_0x1322ed(_0x71734b)[_0x13460('0x7fa')]();return _0x24d35c['l']+=_0x5e8391/0x64,_0x24d35c['l']=_0xa595c(_0x24d35c['l']),_0x1322ed(_0x24d35c);}function _0x3dd431(_0xbc089e,_0x2bf624){var _0x3e61b9=_0x3e6aba;_0x2bf624=0x0===_0x2bf624?0x0:_0x2bf624||0xa;var _0x103ceb=_0x1322ed(_0xbc089e)[_0x3e61b9('0xa00')]();return _0x103ceb['r']=_0xb404dd(0x0,_0x2bce15(0xff,_0x103ceb['r']-_0x10b4f4(-_0x2bf624/0x64*0xff))),_0x103ceb['g']=_0xb404dd(0x0,_0x2bce15(0xff,_0x103ceb['g']-_0x10b4f4(-_0x2bf624/0x64*0xff))),_0x103ceb['b']=_0xb404dd(0x0,_0x2bce15(0xff,_0x103ceb['b']-_0x10b4f4(-_0x2bf624/0x64*0xff))),_0x1322ed(_0x103ceb);}function _0x5e92ab(_0x139203,_0x469534){_0x469534=0x0===_0x469534?0x0:_0x469534||0xa;var _0x3cdbba=_0x1322ed(_0x139203)['toHsl']();return _0x3cdbba['l']-=_0x469534/0x64,_0x3cdbba['l']=_0xa595c(_0x3cdbba['l']),_0x1322ed(_0x3cdbba);}function _0x275fd5(_0x4ebd6f,_0x25b666){var _0x2f0936=_0x1322ed(_0x4ebd6f)['toHsl'](),_0x5a9527=(_0x2f0936['h']+_0x25b666)%0x168;return _0x2f0936['h']=_0x5a9527<0x0?0x168+_0x5a9527:_0x5a9527,_0x1322ed(_0x2f0936);}function _0x19bb36(_0x5c321d){var _0x3a8f1a=_0x3e6aba,_0x88bf36=_0x1322ed(_0x5c321d)[_0x3a8f1a('0x7fa')]();return _0x88bf36['h']=(_0x88bf36['h']+0xb4)%0x168,_0x1322ed(_0x88bf36);}function _0x2dc3f4(_0x55b1b4){var _0x1cb632=_0x3e6aba,_0x452a16=_0x1322ed(_0x55b1b4)[_0x1cb632('0x7fa')](),_0x47932d=_0x452a16['h'];return[_0x1322ed(_0x55b1b4),_0x1322ed({'h':(_0x47932d+0x78)%0x168,'s':_0x452a16['s'],'l':_0x452a16['l']}),_0x1322ed({'h':(_0x47932d+0xf0)%0x168,'s':_0x452a16['s'],'l':_0x452a16['l']})];}function _0x29811b(_0x47122c){var _0x1088d1=_0x3e6aba,_0x9d04f5=_0x1322ed(_0x47122c)[_0x1088d1('0x7fa')](),_0x1353a4=_0x9d04f5['h'];return[_0x1322ed(_0x47122c),_0x1322ed({'h':(_0x1353a4+0x5a)%0x168,'s':_0x9d04f5['s'],'l':_0x9d04f5['l']}),_0x1322ed({'h':(_0x1353a4+0xb4)%0x168,'s':_0x9d04f5['s'],'l':_0x9d04f5['l']}),_0x1322ed({'h':(_0x1353a4+0x10e)%0x168,'s':_0x9d04f5['s'],'l':_0x9d04f5['l']})];}function _0x9166ee(_0x3526ec){var _0x41b571=_0x3e6aba,_0x5243e1=_0x1322ed(_0x3526ec)[_0x41b571('0x7fa')](),_0xf43001=_0x5243e1['h'];return[_0x1322ed(_0x3526ec),_0x1322ed({'h':(_0xf43001+0x48)%0x168,'s':_0x5243e1['s'],'l':_0x5243e1['l']}),_0x1322ed({'h':(_0xf43001+0xd8)%0x168,'s':_0x5243e1['s'],'l':_0x5243e1['l']})];}function _0x530c25(_0x280b68,_0x38cb0b,_0x3e7271){var _0x474434=_0x3e6aba;_0x38cb0b=_0x38cb0b||0x6,_0x3e7271=_0x3e7271||0x1e;var _0x5d966b=_0x1322ed(_0x280b68)['toHsl'](),_0x1e9392=0x168/_0x3e7271,_0x1ce910=[_0x1322ed(_0x280b68)];for(_0x5d966b['h']=(_0x5d966b['h']-(_0x1e9392*_0x38cb0b>>0x1)+0x2d0)%0x168;--_0x38cb0b;)_0x5d966b['h']=(_0x5d966b['h']+_0x1e9392)%0x168,_0x1ce910[_0x474434('0x8cd')](_0x1322ed(_0x5d966b));return _0x1ce910;}function _0x4417e5(_0x4595d8,_0x50d2f1){var _0x11b81=_0x3e6aba;_0x50d2f1=_0x50d2f1||0x6;for(var _0x1bf7a4=_0x1322ed(_0x4595d8)[_0x11b81('0xb42')](),_0x130657=_0x1bf7a4['h'],_0x59f25d=_0x1bf7a4['s'],_0xddce57=_0x1bf7a4['v'],_0x327838=[],_0x3b95ad=0x1/_0x50d2f1;_0x50d2f1--;)_0x327838[_0x11b81('0x8cd')](_0x1322ed({'h':_0x130657,'s':_0x59f25d,'v':_0xddce57})),_0xddce57=(_0xddce57+_0x3b95ad)%0x1;return _0x327838;}_0x1322ed[_0x3e6aba('0x3ec')]={'isDark':function(){return this['getBrightness']()<0x80;},'isLight':function(){var _0x4dd946=_0x3e6aba;return!this[_0x4dd946('0x874')]();},'isValid':function(){var _0x2c0a07=_0x3e6aba;return this[_0x2c0a07('0x618')];},'getOriginalInput':function(){var _0x3c1d17=_0x3e6aba;return this[_0x3c1d17('0x5b2')];},'getFormat':function(){return this['_format'];},'getAlpha':function(){return this['_a'];},'getBrightness':function(){var _0x128a9c=_0x3e6aba,_0x58fd09=this[_0x128a9c('0xa00')]();return(0x12b*_0x58fd09['r']+0x24b*_0x58fd09['g']+0x72*_0x58fd09['b'])/0x3e8;},'getLuminance':function(){var _0x3fb745=_0x3e6aba,_0x5e0b71,_0x2b280a,_0x2fab85,_0x275709=this[_0x3fb745('0xa00')]();return _0x5e0b71=_0x275709['r']/0xff,_0x2b280a=_0x275709['g']/0xff,_0x2fab85=_0x275709['b']/0xff,0.2126*(_0x5e0b71<=0.03928?_0x5e0b71/12.92:_0x56dcc0[_0x3fb745('0xc1')]((_0x5e0b71+0.055)/1.055,2.4))+0.7152*(_0x2b280a<=0.03928?_0x2b280a/12.92:_0x56dcc0[_0x3fb745('0xc1')]((_0x2b280a+0.055)/1.055,2.4))+0.0722*(_0x2fab85<=0.03928?_0x2fab85/12.92:_0x56dcc0['pow']((_0x2fab85+0.055)/1.055,2.4));},'setAlpha':function(_0x1130a0){var _0x115f62=_0x3e6aba;return this['_a']=_0x4c7b9c(_0x1130a0),this[_0x115f62('0xb5e')]=_0x10b4f4(0x64*this['_a'])/0x64,this;},'toHsv':function(){var _0x540adb=_0x33385e(this['_r'],this['_g'],this['_b']);return{'h':0x168*_0x540adb['h'],'s':_0x540adb['s'],'v':_0x540adb['v'],'a':this['_a']};},'toHsvString':function(){var _0x37710c=_0x3e6aba,_0x59c2e9=_0x33385e(this['_r'],this['_g'],this['_b']),_0x2e7835=_0x10b4f4(0x168*_0x59c2e9['h']),_0x2b0048=_0x10b4f4(0x64*_0x59c2e9['s']),_0x54a2c9=_0x10b4f4(0x64*_0x59c2e9['v']);return 0x1==this['_a']?_0x37710c('0xc59')+_0x2e7835+',\x20'+_0x2b0048+_0x37710c('0x4eb')+_0x54a2c9+'%)':'hsva('+_0x2e7835+',\x20'+_0x2b0048+_0x37710c('0x4eb')+_0x54a2c9+_0x37710c('0x4eb')+this[_0x37710c('0xb5e')]+')';},'toHsl':function(){var _0x59efc4=_0x3861bc(this['_r'],this['_g'],this['_b']);return{'h':0x168*_0x59efc4['h'],'s':_0x59efc4['s'],'l':_0x59efc4['l'],'a':this['_a']};},'toHslString':function(){var _0x33c011=_0x3e6aba,_0x34dcdb=_0x3861bc(this['_r'],this['_g'],this['_b']),_0xd4b991=_0x10b4f4(0x168*_0x34dcdb['h']),_0x55729f=_0x10b4f4(0x64*_0x34dcdb['s']),_0x537123=_0x10b4f4(0x64*_0x34dcdb['l']);return 0x1==this['_a']?_0x33c011('0x148')+_0xd4b991+',\x20'+_0x55729f+_0x33c011('0x4eb')+_0x537123+'%)':_0x33c011('0x1de')+_0xd4b991+',\x20'+_0x55729f+'%,\x20'+_0x537123+_0x33c011('0x4eb')+this[_0x33c011('0xb5e')]+')';},'toHex':function(_0x234784){return _0x13b79f(this['_r'],this['_g'],this['_b'],_0x234784);},'toHexString':function(_0x340b1c){return'#'+this['toHex'](_0x340b1c);},'toHex8':function(_0x2e2702){return function(_0x4d636a,_0x526939,_0x26d418,_0x23a266,_0x530756){var _0x5c8d7e=_0x3e44,_0x16c4ed=[_0x43f842(_0x10b4f4(_0x4d636a)[_0x5c8d7e('0x8dc')](0x10)),_0x43f842(_0x10b4f4(_0x526939)[_0x5c8d7e('0x8dc')](0x10)),_0x43f842(_0x10b4f4(_0x26d418)[_0x5c8d7e('0x8dc')](0x10)),_0x43f842(_0x44c793(_0x23a266))];if(_0x530756&&_0x16c4ed[0x0]['charAt'](0x0)==_0x16c4ed[0x0][_0x5c8d7e('0x48b')](0x1)&&_0x16c4ed[0x1][_0x5c8d7e('0x48b')](0x0)==_0x16c4ed[0x1]['charAt'](0x1)&&_0x16c4ed[0x2][_0x5c8d7e('0x48b')](0x0)==_0x16c4ed[0x2][_0x5c8d7e('0x48b')](0x1)&&_0x16c4ed[0x3][_0x5c8d7e('0x48b')](0x0)==_0x16c4ed[0x3][_0x5c8d7e('0x48b')](0x1))return _0x16c4ed[0x0]['charAt'](0x0)+_0x16c4ed[0x1][_0x5c8d7e('0x48b')](0x0)+_0x16c4ed[0x2][_0x5c8d7e('0x48b')](0x0)+_0x16c4ed[0x3][_0x5c8d7e('0x48b')](0x0);return _0x16c4ed[_0x5c8d7e('0x2ee')]('');}(this['_r'],this['_g'],this['_b'],this['_a'],_0x2e2702);},'toHex8String':function(_0xe18bc7){var _0x4172d0=_0x3e6aba;return'#'+this[_0x4172d0('0x14')](_0xe18bc7);},'toRgb':function(){return{'r':_0x10b4f4(this['_r']),'g':_0x10b4f4(this['_g']),'b':_0x10b4f4(this['_b']),'a':this['_a']};},'toRgbString':function(){var _0xefce4f=_0x3e6aba;return 0x1==this['_a']?'rgb('+_0x10b4f4(this['_r'])+',\x20'+_0x10b4f4(this['_g'])+',\x20'+_0x10b4f4(this['_b'])+')':_0xefce4f('0x94c')+_0x10b4f4(this['_r'])+',\x20'+_0x10b4f4(this['_g'])+',\x20'+_0x10b4f4(this['_b'])+',\x20'+this[_0xefce4f('0xb5e')]+')';},'toPercentageRgb':function(){return{'r':_0x10b4f4(0x64*_0x3a2964(this['_r'],0xff))+'%','g':_0x10b4f4(0x64*_0x3a2964(this['_g'],0xff))+'%','b':_0x10b4f4(0x64*_0x3a2964(this['_b'],0xff))+'%','a':this['_a']};},'toPercentageRgbString':function(){var _0xb11de1=_0x3e6aba;return 0x1==this['_a']?'rgb('+_0x10b4f4(0x64*_0x3a2964(this['_r'],0xff))+_0xb11de1('0x4eb')+_0x10b4f4(0x64*_0x3a2964(this['_g'],0xff))+'%,\x20'+_0x10b4f4(0x64*_0x3a2964(this['_b'],0xff))+'%)':'rgba('+_0x10b4f4(0x64*_0x3a2964(this['_r'],0xff))+_0xb11de1('0x4eb')+_0x10b4f4(0x64*_0x3a2964(this['_g'],0xff))+_0xb11de1('0x4eb')+_0x10b4f4(0x64*_0x3a2964(this['_b'],0xff))+_0xb11de1('0x4eb')+this[_0xb11de1('0xb5e')]+')';},'toName':function(){var _0x191d34=_0x3e6aba;return 0x0===this['_a']?_0x191d34('0x79a'):!(this['_a']<0x1)&&(_0x382d54[_0x13b79f(this['_r'],this['_g'],this['_b'],!0x0)]||!0x1);},'toFilter':function(_0x6b18f7){var _0x3280c0=_0x3e6aba,_0x55af00='#'+_0x19cc14(this['_r'],this['_g'],this['_b'],this['_a']),_0x5b7a32=_0x55af00,_0x33785e=this[_0x3280c0('0x567')]?_0x3280c0('0x759'):'';if(_0x6b18f7){var _0x166c66=_0x1322ed(_0x6b18f7);_0x5b7a32='#'+_0x19cc14(_0x166c66['_r'],_0x166c66['_g'],_0x166c66['_b'],_0x166c66['_a']);}return _0x3280c0('0xd66')+_0x33785e+_0x3280c0('0x4e1')+_0x55af00+',endColorstr='+_0x5b7a32+')';},'toString':function(_0xf3d08c){var _0x1981b6=_0x3e6aba,_0x402c98=!!_0xf3d08c;_0xf3d08c=_0xf3d08c||this[_0x1981b6('0x29c')];var _0x5d45af=!0x1,_0x4e06ae=this['_a']<0x1&&this['_a']>=0x0;return _0x402c98||!_0x4e06ae||_0x1981b6('0x49b')!==_0xf3d08c&&_0x1981b6('0xbf3')!==_0xf3d08c&&_0x1981b6('0x579')!==_0xf3d08c&&_0x1981b6('0x6f3')!==_0xf3d08c&&'hex8'!==_0xf3d08c&&'name'!==_0xf3d08c?(_0x1981b6('0x241')===_0xf3d08c&&(_0x5d45af=this[_0x1981b6('0x505')]()),_0x1981b6('0xc39')===_0xf3d08c&&(_0x5d45af=this[_0x1981b6('0xb91')]()),_0x1981b6('0x49b')!==_0xf3d08c&&_0x1981b6('0xbf3')!==_0xf3d08c||(_0x5d45af=this[_0x1981b6('0x209')]()),_0x1981b6('0x579')===_0xf3d08c&&(_0x5d45af=this['toHexString'](!0x0)),_0x1981b6('0x6f3')===_0xf3d08c&&(_0x5d45af=this['toHex8String'](!0x0)),_0x1981b6('0xaad')===_0xf3d08c&&(_0x5d45af=this[_0x1981b6('0xcb')]()),_0x1981b6('0x9e')===_0xf3d08c&&(_0x5d45af=this[_0x1981b6('0x464')]()),_0x1981b6('0x4f4')===_0xf3d08c&&(_0x5d45af=this['toHslString']()),_0x1981b6('0xc0f')===_0xf3d08c&&(_0x5d45af=this[_0x1981b6('0x419')]()),_0x5d45af||this[_0x1981b6('0x209')]()):_0x1981b6('0x9e')===_0xf3d08c&&0x0===this['_a']?this[_0x1981b6('0x464')]():this[_0x1981b6('0x505')]();},'clone':function(){return _0x1322ed(this['toString']());},'_applyModification':function(_0x202d3e,_0x41f237){var _0x11b091=_0x3e6aba,_0x5b5b35=_0x202d3e[_0x11b091('0x7da')](null,[this][_0x11b091('0x49e')]([][_0x11b091('0x63a')][_0x11b091('0x928')](_0x41f237)));return this['_r']=_0x5b5b35['_r'],this['_g']=_0x5b5b35['_g'],this['_b']=_0x5b5b35['_b'],this[_0x11b091('0x81c')](_0x5b5b35['_a']),this;},'lighten':function(){return this['_applyModification'](_0x2b831d,arguments);},'brighten':function(){var _0x2cb602=_0x3e6aba;return this[_0x2cb602('0xd0b')](_0x3dd431,arguments);},'darken':function(){var _0x27c32a=_0x3e6aba;return this[_0x27c32a('0xd0b')](_0x5e92ab,arguments);},'desaturate':function(){var _0x56dfb9=_0x3e6aba;return this[_0x56dfb9('0xd0b')](_0xd7238a,arguments);},'saturate':function(){return this['_applyModification'](_0x427d94,arguments);},'greyscale':function(){var _0x2c27bb=_0x3e6aba;return this[_0x2c27bb('0xd0b')](_0x178edb,arguments);},'spin':function(){var _0x103980=_0x3e6aba;return this[_0x103980('0xd0b')](_0x275fd5,arguments);},'_applyCombination':function(_0x3edb5c,_0x44bc4a){var _0x1cd83e=_0x3e6aba;return _0x3edb5c[_0x1cd83e('0x7da')](null,[this][_0x1cd83e('0x49e')]([][_0x1cd83e('0x63a')]['call'](_0x44bc4a)));},'analogous':function(){var _0x18c93f=_0x3e6aba;return this[_0x18c93f('0x21c')](_0x530c25,arguments);},'complement':function(){return this['_applyCombination'](_0x19bb36,arguments);},'monochromatic':function(){var _0x48bd47=_0x3e6aba;return this[_0x48bd47('0x21c')](_0x4417e5,arguments);},'splitcomplement':function(){var _0x1bfcb3=_0x3e6aba;return this[_0x1bfcb3('0x21c')](_0x9166ee,arguments);},'triad':function(){var _0x3ec6d1=_0x3e6aba;return this[_0x3ec6d1('0x21c')](_0x2dc3f4,arguments);},'tetrad':function(){return this['_applyCombination'](_0x29811b,arguments);}},_0x1322ed[_0x3e6aba('0x808')]=function(_0x424513,_0x51a8c8){var _0x196ac1=_0x3e6aba;if(_0x196ac1('0x669')==typeof _0x424513){var _0x4135a4={};for(var _0x5568 in _0x424513)_0x424513[_0x196ac1('0x106')](_0x5568)&&(_0x4135a4[_0x5568]='a'===_0x5568?_0x424513[_0x5568]:_0x5200d5(_0x424513[_0x5568]));_0x424513=_0x4135a4;}return _0x1322ed(_0x424513,_0x51a8c8);},_0x1322ed['equals']=function(_0x10c08d,_0x53d6e9){var _0x4986fe=_0x3e6aba;return!(!_0x10c08d||!_0x53d6e9)&&_0x1322ed(_0x10c08d)[_0x4986fe('0x505')]()==_0x1322ed(_0x53d6e9)[_0x4986fe('0x505')]();},_0x1322ed[_0x3e6aba('0xbf0')]=function(){var _0x4d6e4d=_0x3e6aba;return _0x1322ed[_0x4d6e4d('0x808')]({'r':_0x865a64(),'g':_0x865a64(),'b':_0x865a64()});},_0x1322ed[_0x3e6aba('0xbea')]=function(_0x351a83,_0x5f3130,_0xb07b3c){var _0x4592ad=_0x3e6aba;_0xb07b3c=0x0===_0xb07b3c?0x0:_0xb07b3c||0x32;var _0x3814a3=_0x1322ed(_0x351a83)[_0x4592ad('0xa00')](),_0x20db5b=_0x1322ed(_0x5f3130)[_0x4592ad('0xa00')](),_0x1bbb13=_0xb07b3c/0x64;return _0x1322ed({'r':(_0x20db5b['r']-_0x3814a3['r'])*_0x1bbb13+_0x3814a3['r'],'g':(_0x20db5b['g']-_0x3814a3['g'])*_0x1bbb13+_0x3814a3['g'],'b':(_0x20db5b['b']-_0x3814a3['b'])*_0x1bbb13+_0x3814a3['b'],'a':(_0x20db5b['a']-_0x3814a3['a'])*_0x1bbb13+_0x3814a3['a']});},_0x1322ed[_0x3e6aba('0xbad')]=function(_0x55d912,_0x3dc85f){var _0x412f4a=_0x3e6aba,_0x463a5e=_0x1322ed(_0x55d912),_0x58208c=_0x1322ed(_0x3dc85f);return(_0x56dcc0[_0x412f4a('0x5c0')](_0x463a5e[_0x412f4a('0x4ed')](),_0x58208c[_0x412f4a('0x4ed')]())+0.05)/(_0x56dcc0[_0x412f4a('0x4d7')](_0x463a5e[_0x412f4a('0x4ed')](),_0x58208c[_0x412f4a('0x4ed')]())+0.05);},_0x1322ed['isReadable']=function(_0x36c8ac,_0x5daa15,_0x2788bb){var _0x2d65eb=_0x3e6aba,_0x3ef230,_0x493b30,_0x5b497c=_0x1322ed['readability'](_0x36c8ac,_0x5daa15);switch(_0x493b30=!0x1,(_0x3ef230=function(_0x129a2e){var _0x2ff5a3=_0x3e44,_0x46667d,_0x1222cd;return _0x46667d=((_0x129a2e=_0x129a2e||{'level':'AA','size':_0x2ff5a3('0x9d4')})[_0x2ff5a3('0x12c')]||'AA')[_0x2ff5a3('0x637')](),_0x1222cd=(_0x129a2e[_0x2ff5a3('0xbd0')]||_0x2ff5a3('0x9d4'))[_0x2ff5a3('0x5d')](),'AA'!==_0x46667d&&'AAA'!==_0x46667d&&(_0x46667d='AA'),_0x2ff5a3('0x9d4')!==_0x1222cd&&_0x2ff5a3('0x639')!==_0x1222cd&&(_0x1222cd=_0x2ff5a3('0x9d4')),{'level':_0x46667d,'size':_0x1222cd};}(_0x2788bb))[_0x2d65eb('0x12c')]+_0x3ef230[_0x2d65eb('0xbd0')]){case _0x2d65eb('0xc04'):case _0x2d65eb('0x2f7'):_0x493b30=_0x5b497c>=4.5;break;case _0x2d65eb('0x2d2'):_0x493b30=_0x5b497c>=0x3;break;case'AAAsmall':_0x493b30=_0x5b497c>=0x7;}return _0x493b30;},_0x1322ed[_0x3e6aba('0xa35')]=function(_0x4f2614,_0x927457,_0x27bf5b){var _0x41f787=_0x3e6aba,_0x1d0179,_0xdc50ae,_0x2fa6ec,_0x411652,_0x79432=null,_0xd8cc08=0x0;_0xdc50ae=(_0x27bf5b=_0x27bf5b||{})['includeFallbackColors'],_0x2fa6ec=_0x27bf5b[_0x41f787('0x12c')],_0x411652=_0x27bf5b[_0x41f787('0xbd0')];for(var _0x429608=0x0;_0x429608<_0x927457[_0x41f787('0x1d1')];_0x429608++)(_0x1d0179=_0x1322ed[_0x41f787('0xbad')](_0x4f2614,_0x927457[_0x429608]))>_0xd8cc08&&(_0xd8cc08=_0x1d0179,_0x79432=_0x1322ed(_0x927457[_0x429608]));return _0x1322ed[_0x41f787('0xb4d')](_0x4f2614,_0x79432,{'level':_0x2fa6ec,'size':_0x411652})||!_0xdc50ae?_0x79432:(_0x27bf5b['includeFallbackColors']=!0x1,_0x1322ed['mostReadable'](_0x4f2614,[_0x41f787('0x15a'),_0x41f787('0x16b')],_0x27bf5b));};var _0x530dcc=_0x1322ed['names']={'aliceblue':_0x3e6aba('0x5a7'),'antiquewhite':_0x3e6aba('0xb58'),'aqua':_0x3e6aba('0xa34'),'aquamarine':_0x3e6aba('0xd36'),'azure':_0x3e6aba('0x66b'),'beige':_0x3e6aba('0x143'),'bisque':_0x3e6aba('0x748'),'black':_0x3e6aba('0xbb6'),'blanchedalmond':_0x3e6aba('0x98a'),'blue':_0x3e6aba('0x1a8'),'blueviolet':_0x3e6aba('0x7b5'),'brown':_0x3e6aba('0x599'),'burlywood':'deb887','burntsienna':_0x3e6aba('0x619'),'cadetblue':_0x3e6aba('0xb26'),'chartreuse':_0x3e6aba('0xaaa'),'chocolate':'d2691e','coral':_0x3e6aba('0x6bb'),'cornflowerblue':_0x3e6aba('0x234'),'cornsilk':_0x3e6aba('0xd6c'),'crimson':_0x3e6aba('0x4b6'),'cyan':_0x3e6aba('0xa34'),'darkblue':_0x3e6aba('0x392'),'darkcyan':_0x3e6aba('0x32b'),'darkgoldenrod':_0x3e6aba('0x7fd'),'darkgray':'a9a9a9','darkgreen':_0x3e6aba('0x6'),'darkgrey':_0x3e6aba('0x539'),'darkkhaki':_0x3e6aba('0x2f4'),'darkmagenta':'8b008b','darkolivegreen':_0x3e6aba('0xc3e'),'darkorange':'ff8c00','darkorchid':'9932cc','darkred':'8b0000','darksalmon':_0x3e6aba('0xb11'),'darkseagreen':_0x3e6aba('0x250'),'darkslateblue':_0x3e6aba('0x3be'),'darkslategray':_0x3e6aba('0x334'),'darkslategrey':_0x3e6aba('0x334'),'darkturquoise':_0x3e6aba('0x9c0'),'darkviolet':_0x3e6aba('0x84'),'deeppink':_0x3e6aba('0x13'),'deepskyblue':_0x3e6aba('0x2df'),'dimgray':_0x3e6aba('0xb2e'),'dimgrey':_0x3e6aba('0xb2e'),'dodgerblue':_0x3e6aba('0x9c5'),'firebrick':_0x3e6aba('0x1d8'),'floralwhite':_0x3e6aba('0x998'),'forestgreen':_0x3e6aba('0x2b7'),'fuchsia':'f0f','gainsboro':_0x3e6aba('0xb53'),'ghostwhite':_0x3e6aba('0x5a1'),'gold':'ffd700','goldenrod':_0x3e6aba('0x7b6'),'gray':'808080','green':_0x3e6aba('0xcce'),'greenyellow':_0x3e6aba('0x488'),'grey':_0x3e6aba('0x5cd'),'honeydew':_0x3e6aba('0xb6b'),'hotpink':_0x3e6aba('0x51a'),'indianred':_0x3e6aba('0x99'),'indigo':_0x3e6aba('0x174'),'ivory':_0x3e6aba('0x7ca'),'khaki':'f0e68c','lavender':'e6e6fa','lavenderblush':_0x3e6aba('0x39'),'lawngreen':_0x3e6aba('0x7c1'),'lemonchiffon':_0x3e6aba('0x1f0'),'lightblue':_0x3e6aba('0x2c2'),'lightcoral':_0x3e6aba('0x6f4'),'lightcyan':_0x3e6aba('0xbdb'),'lightgoldenrodyellow':'fafad2','lightgray':_0x3e6aba('0x45a'),'lightgreen':_0x3e6aba('0x264'),'lightgrey':'d3d3d3','lightpink':'ffb6c1','lightsalmon':_0x3e6aba('0x1d3'),'lightseagreen':'20b2aa','lightskyblue':_0x3e6aba('0x24b'),'lightslategray':_0x3e6aba('0x5dd'),'lightslategrey':_0x3e6aba('0x5dd'),'lightsteelblue':_0x3e6aba('0x56d'),'lightyellow':_0x3e6aba('0xf8'),'lime':_0x3e6aba('0x89'),'limegreen':_0x3e6aba('0x8be'),'linen':_0x3e6aba('0xbb3'),'magenta':'f0f','maroon':'800000','mediumaquamarine':_0x3e6aba('0x30e'),'mediumblue':_0x3e6aba('0x6be'),'mediumorchid':_0x3e6aba('0xd34'),'mediumpurple':_0x3e6aba('0x15e'),'mediumseagreen':_0x3e6aba('0x3ae'),'mediumslateblue':_0x3e6aba('0x96f'),'mediumspringgreen':_0x3e6aba('0x21d'),'mediumturquoise':_0x3e6aba('0x1f6'),'mediumvioletred':_0x3e6aba('0xcf0'),'midnightblue':_0x3e6aba('0xa18'),'mintcream':_0x3e6aba('0x85a'),'mistyrose':_0x3e6aba('0x68a'),'moccasin':_0x3e6aba('0xd78'),'navajowhite':_0x3e6aba('0x7e5'),'navy':_0x3e6aba('0x924'),'oldlace':_0x3e6aba('0xc45'),'olive':_0x3e6aba('0x446'),'olivedrab':_0x3e6aba('0x3e2'),'orange':_0x3e6aba('0x4dc'),'orangered':'ff4500','orchid':'da70d6','palegoldenrod':'eee8aa','palegreen':_0x3e6aba('0xb1f'),'paleturquoise':'afeeee','palevioletred':_0x3e6aba('0x6dd'),'papayawhip':_0x3e6aba('0x59a'),'peachpuff':_0x3e6aba('0x9e2'),'peru':_0x3e6aba('0x9c8'),'pink':_0x3e6aba('0x930'),'plum':_0x3e6aba('0x453'),'powderblue':_0x3e6aba('0x845'),'purple':_0x3e6aba('0x3a9'),'rebeccapurple':_0x3e6aba('0x413'),'red':_0x3e6aba('0xbce'),'rosybrown':_0x3e6aba('0x7fe'),'royalblue':_0x3e6aba('0xbc9'),'saddlebrown':_0x3e6aba('0x1c7'),'salmon':'fa8072','sandybrown':_0x3e6aba('0x9ef'),'seagreen':_0x3e6aba('0x934'),'seashell':_0x3e6aba('0xce1'),'sienna':_0x3e6aba('0xb13'),'silver':_0x3e6aba('0xafe'),'skyblue':_0x3e6aba('0x394'),'slateblue':_0x3e6aba('0xce5'),'slategray':_0x3e6aba('0x39a'),'slategrey':'708090','snow':_0x3e6aba('0x9bf'),'springgreen':_0x3e6aba('0x867'),'steelblue':_0x3e6aba('0x475'),'tan':_0x3e6aba('0xce'),'teal':'008080','thistle':'d8bfd8','tomato':_0x3e6aba('0x9d1'),'turquoise':_0x3e6aba('0x409'),'violet':_0x3e6aba('0x6dc'),'wheat':_0x3e6aba('0x6de'),'white':_0x3e6aba('0x61'),'whitesmoke':_0x3e6aba('0xcdb'),'yellow':_0x3e6aba('0x6eb'),'yellowgreen':_0x3e6aba('0x789')},_0x382d54=_0x1322ed['hexNames']=function(_0x610f3e){var _0x2bd7cf=_0x3e6aba,_0x1298d8={};for(var _0x342794 in _0x610f3e)_0x610f3e[_0x2bd7cf('0x106')](_0x342794)&&(_0x1298d8[_0x610f3e[_0x342794]]=_0x342794);return _0x1298d8;}(_0x530dcc);function _0x4c7b9c(_0x1266c9){return _0x1266c9=parseFloat(_0x1266c9),(isNaN(_0x1266c9)||_0x1266c9<0x0||_0x1266c9>0x1)&&(_0x1266c9=0x1),_0x1266c9;}function _0x3a2964(_0x1ebb9c,_0x29fea0){var _0x21b561=_0x3e6aba;(function(_0x560084){var _0x5d6512=_0x3e44;return _0x5d6512('0x4ba')==typeof _0x560084&&-0x1!=_0x560084[_0x5d6512('0x857')]('.')&&0x1===parseFloat(_0x560084);}(_0x1ebb9c)&&(_0x1ebb9c='100%'));var _0x489c3e=function(_0x34228e){var _0x5a13e3=_0x3e44;return'string'==typeof _0x34228e&&-0x1!=_0x34228e[_0x5a13e3('0x857')]('%');}(_0x1ebb9c);return _0x1ebb9c=_0x2bce15(_0x29fea0,_0xb404dd(0x0,parseFloat(_0x1ebb9c))),_0x489c3e&&(_0x1ebb9c=parseInt(_0x1ebb9c*_0x29fea0,0xa)/0x64),_0x56dcc0[_0x21b561('0xabf')](_0x1ebb9c-_0x29fea0)<0.000001?0x1:_0x1ebb9c%_0x29fea0/parseFloat(_0x29fea0);}function _0xa595c(_0x3cb352){return _0x2bce15(0x1,_0xb404dd(0x0,_0x3cb352));}function _0xb13e7b(_0x253c07){return parseInt(_0x253c07,0x10);}function _0x43f842(_0x52d477){var _0x4b473a=_0x3e6aba;return 0x1==_0x52d477[_0x4b473a('0x1d1')]?'0'+_0x52d477:''+_0x52d477;}function _0x5200d5(_0x5a7114){return _0x5a7114<=0x1&&(_0x5a7114=0x64*_0x5a7114+'%'),_0x5a7114;}function _0x44c793(_0x3e34ba){var _0x1a6824=_0x3e6aba;return _0x56dcc0[_0x1a6824('0xd3b')](0xff*parseFloat(_0x3e34ba))['toString'](0x10);}function _0x2663ab(_0x30f779){return _0xb13e7b(_0x30f779)/0xff;}var _0x1def0e,_0x9baa92,_0x165c01,_0x461f23=(_0x9baa92=_0x3e6aba('0x337')+(_0x1def0e=_0x3e6aba('0xc2e'))+_0x3e6aba('0xc25')+_0x1def0e+')[,|\x5cs]+('+_0x1def0e+_0x3e6aba('0x694'),_0x165c01=_0x3e6aba('0x337')+_0x1def0e+_0x3e6aba('0xc25')+_0x1def0e+')[,|\x5cs]+('+_0x1def0e+')[,|\x5cs]+('+_0x1def0e+_0x3e6aba('0x694'),{'CSS_UNIT':new RegExp(_0x1def0e),'rgb':new RegExp('rgb'+_0x9baa92),'rgba':new RegExp(_0x3e6aba('0x260')+_0x165c01),'hsl':new RegExp('hsl'+_0x9baa92),'hsla':new RegExp(_0x3e6aba('0x643')+_0x165c01),'hsv':new RegExp('hsv'+_0x9baa92),'hsva':new RegExp(_0x3e6aba('0x2ab')+_0x165c01),'hex3':/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,'hex6':/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,'hex4':/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,'hex8':/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/});function _0x5d6d11(_0x5a2ec5){var _0x3bdf56=_0x3e6aba;return!!_0x461f23['CSS_UNIT'][_0x3bdf56('0x203')](_0x5a2ec5);}void 0x0!==_0x5b9995&&_0x5b9995[_0x3e6aba('0x91e')]?_0x5b9995[_0x3e6aba('0x91e')]=_0x1322ed:_0x3e6aba('0x67')==typeof define&&define['amd']?define(function(){return _0x1322ed;}):window[_0x3e6aba('0x1d5')]=_0x1322ed;}(Math);},{}],0x17b:[function(_0x2a66df,_0x4a0914,_0x20c97e){var _0x89e5fc=_0x322f0f,_0x472174,_0x409720;_0x472174=this,_0x409720=function(){return function(_0x3e6ff6){function _0x56ce7e(_0x161472){var _0x55d60f=_0x3e44;if(_0x4d7e2e[_0x161472])return _0x4d7e2e[_0x161472][_0x55d60f('0x91e')];var _0x5e964c=_0x4d7e2e[_0x161472]={'exports':{},'id':_0x161472,'loaded':!0x1};return _0x3e6ff6[_0x161472]['call'](_0x5e964c['exports'],_0x5e964c,_0x5e964c[_0x55d60f('0x91e')],_0x56ce7e),_0x5e964c[_0x55d60f('0x898')]=!0x0,_0x5e964c[_0x55d60f('0x91e')];}var _0x4d7e2e={};return _0x56ce7e['m']=_0x3e6ff6,_0x56ce7e['c']=_0x4d7e2e,_0x56ce7e['p']='',_0x56ce7e(0x0);}([function(_0xe739df,_0x3e7988){var _0x52e0c2=_0x3e44;'use strict';function _0x1cc93a(_0x5b2c28,_0x58b574,_0x19dbda,_0x161820){var _0x3e5bb9=_0x3e44;return function(_0x3f1768,_0xf10b3f,_0x326eac,_0x3cd0ea){return{'red':_0x3cd0ea[0x4*(_0x326eac*_0xf10b3f+_0x3f1768)],'green':_0x3cd0ea[0x4*(_0x326eac*_0xf10b3f+_0x3f1768)+0x1],'blue':_0x3cd0ea[0x4*(_0x326eac*_0xf10b3f+_0x3f1768)+0x2],'alpha':_0x3cd0ea[0x4*(_0x326eac*_0xf10b3f+_0x3f1768)+0x3]};}(_0x5b2c28,_0x58b574,_0x19dbda,_0x161820)[_0x3e5bb9('0x965')];}function _0x491000(_0x370389,_0x3d078b,_0xf84ae8,_0x1fe821){for(var _0x45a145=_0x370389?0x1:-0x1,_0x54b5cd=_0x370389?0x0:_0xf84ae8-0x1;_0x370389?_0x54b5cd<_0xf84ae8:_0x54b5cd>-0x1;_0x54b5cd+=_0x45a145)for(var _0x1a8b45=0x0;_0x1a8b45<_0x3d078b;_0x1a8b45++)if(_0x1cc93a(_0x1a8b45,_0x54b5cd,_0x3d078b,_0x1fe821))return _0x54b5cd;return null;}function _0x32157f(_0x586948,_0x3db459,_0x105f65,_0xd3dfec){for(var _0x2616cd=_0x586948?0x1:-0x1,_0x186928=_0x586948?0x0:_0x3db459-0x1;_0x586948?_0x186928<_0x3db459:_0x186928>-0x1;_0x186928+=_0x2616cd)for(var _0x3458d2=0x0;_0x3458d2<_0x105f65;_0x3458d2++)if(_0x1cc93a(_0x186928,_0x3458d2,_0x3db459,_0xd3dfec))return _0x186928;return null;}Object[_0x52e0c2('0x2cd')](_0x3e7988,_0x52e0c2('0x866'),{'value':!0x0}),_0x3e7988['default']=function(_0x430a8d){var _0x2c69c1=_0x52e0c2,_0x5321e7=_0x430a8d['getContext']('2d'),_0x2a7560=_0x430a8d['width'],_0x3a0936=_0x430a8d[_0x2c69c1('0x448')],_0x557cd1=_0x5321e7[_0x2c69c1('0x7e4')](0x0,0x0,_0x2a7560,_0x3a0936)['data'],_0x372b6e=_0x491000(!0x0,_0x2a7560,_0x3a0936,_0x557cd1),_0x419322=_0x491000(!0x1,_0x2a7560,_0x3a0936,_0x557cd1),_0x3a8499=_0x32157f(!0x0,_0x2a7560,_0x3a0936,_0x557cd1),_0x18aafd=_0x32157f(!0x1,_0x2a7560,_0x3a0936,_0x557cd1)-_0x3a8499+0x1,_0x472b81=_0x419322-_0x372b6e+0x1,_0x1cfaf5=_0x5321e7[_0x2c69c1('0x7e4')](_0x3a8499,_0x372b6e,_0x18aafd,_0x472b81);return _0x430a8d[_0x2c69c1('0x9c3')]=_0x18aafd,_0x430a8d['height']=_0x472b81,_0x5321e7[_0x2c69c1('0xdbe')](0x0,0x0,_0x18aafd,_0x472b81),_0x5321e7['putImageData'](_0x1cfaf5,0x0,0x0),_0x430a8d;};}]);},_0x89e5fc('0x669')==typeof _0x20c97e&&_0x89e5fc('0x669')==typeof _0x4a0914?_0x4a0914[_0x89e5fc('0x91e')]=_0x409720():_0x89e5fc('0x67')==typeof define&&define[_0x89e5fc('0x105')]?define([],_0x409720):'object'==typeof _0x20c97e?_0x20c97e[_0x89e5fc('0x923')]=_0x409720():_0x472174[_0x89e5fc('0x923')]=_0x409720();},{}]},{},[0x41,0x43,0x45,0x47,0x49,0x4c,0x4e,0x50,0x52,0x54,0x56,0x58,0x5a,0x5c,0x5e]); \ No newline at end of file + +'use strict';var b="function"===typeof Symbol&&Symbol.for,c=b?Symbol.for("react.element"):60103,d=b?Symbol.for("react.portal"):60106,e=b?Symbol.for("react.fragment"):60107,f=b?Symbol.for("react.strict_mode"):60108,g=b?Symbol.for("react.profiler"):60114,h=b?Symbol.for("react.provider"):60109,k=b?Symbol.for("react.context"):60110,l=b?Symbol.for("react.async_mode"):60111,m=b?Symbol.for("react.concurrent_mode"):60111,n=b?Symbol.for("react.forward_ref"):60112,p=b?Symbol.for("react.suspense"):60113,q=b? +Symbol.for("react.suspense_list"):60120,r=b?Symbol.for("react.memo"):60115,t=b?Symbol.for("react.lazy"):60116,v=b?Symbol.for("react.block"):60121,w=b?Symbol.for("react.fundamental"):60117,x=b?Symbol.for("react.responder"):60118,y=b?Symbol.for("react.scope"):60119; +function z(a){if("object"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d; +exports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return"object"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t}; +exports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p}; +exports.isValidElementType=function(a){return"string"===typeof a||"function"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||"object"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z; + +},{}],368:[function(require,module,exports){ +(function (process){ +'use strict'; + +if (process.env.NODE_ENV === 'production') { + module.exports = require('./cjs/react-is.production.min.js'); +} else { + module.exports = require('./cjs/react-is.development.js'); +} + +}).call(this,require('_process')) + +},{"./cjs/react-is.development.js":366,"./cjs/react-is.production.min.js":367,"_process":6}],369:[function(require,module,exports){ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("prop-types"),require("react"),require("signature_pad"),require("trim-canvas")):"function"==typeof define&&define.amd?define(["prop-types","react","signature_pad","trim-canvas"],t):"object"==typeof exports?exports.SignatureCanvas=t(require("prop-types"),require("react"),require("signature_pad"),require("trim-canvas")):e.SignatureCanvas=t(e["prop-types"],e.react,e.signature_pad,e["trim-canvas"])}(this,function(e,t,n,r){return function(e){function t(r){if(n[r])return n[r].exports;var a=n[r]={exports:{},id:r,loaded:!1};return e[r].call(a.exports,a,a.exports,t),a.loaded=!0,a.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function a(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function u(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=Object.assign||function(e){for(var t=1;t 1 && arguments[1] !== undefined ? arguments[1] : 'span'; + + return function (_React$Component) { + _inherits(Active, _React$Component); + + function Active() { + var _ref; + + var _temp, _this, _ret; + + _classCallCheck(this, Active); + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Active.__proto__ || Object.getPrototypeOf(Active)).call.apply(_ref, [this].concat(args))), _this), _this.state = { active: false }, _this.handleMouseDown = function () { + return _this.setState({ active: true }); + }, _this.handleMouseUp = function () { + return _this.setState({ active: false }); + }, _this.render = function () { + return _react2.default.createElement( + Span, + { onMouseDown: _this.handleMouseDown, onMouseUp: _this.handleMouseUp }, + _react2.default.createElement(Component, _extends({}, _this.props, _this.state)) + ); + }, _temp), _possibleConstructorReturn(_this, _ret); + } + + return Active; + }(_react2.default.Component); +}; + +exports.default = active; +},{"react":"react"}],372:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.hover = undefined; + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var hover = exports.hover = function hover(Component) { + var Span = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'span'; + + return function (_React$Component) { + _inherits(Hover, _React$Component); + + function Hover() { + var _ref; + + var _temp, _this, _ret; + + _classCallCheck(this, Hover); + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Hover.__proto__ || Object.getPrototypeOf(Hover)).call.apply(_ref, [this].concat(args))), _this), _this.state = { hover: false }, _this.handleMouseOver = function () { + return _this.setState({ hover: true }); + }, _this.handleMouseOut = function () { + return _this.setState({ hover: false }); + }, _this.render = function () { + return _react2.default.createElement( + Span, + { onMouseOver: _this.handleMouseOver, onMouseOut: _this.handleMouseOut }, + _react2.default.createElement(Component, _extends({}, _this.props, _this.state)) + ); + }, _temp), _possibleConstructorReturn(_this, _ret); + } + + return Hover; + }(_react2.default.Component); +}; + +exports.default = hover; +},{"react":"react"}],373:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.flattenNames = undefined; + +var _isString2 = require('lodash/isString'); + +var _isString3 = _interopRequireDefault(_isString2); + +var _forOwn2 = require('lodash/forOwn'); + +var _forOwn3 = _interopRequireDefault(_forOwn2); + +var _isPlainObject2 = require('lodash/isPlainObject'); + +var _isPlainObject3 = _interopRequireDefault(_isPlainObject2); + +var _map2 = require('lodash/map'); + +var _map3 = _interopRequireDefault(_map2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var flattenNames = exports.flattenNames = function flattenNames() { + var things = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; + + var names = []; + + (0, _map3.default)(things, function (thing) { + if (Array.isArray(thing)) { + flattenNames(thing).map(function (name) { + return names.push(name); + }); + } else if ((0, _isPlainObject3.default)(thing)) { + (0, _forOwn3.default)(thing, function (value, key) { + value === true && names.push(key); + names.push(key + '-' + value); + }); + } else if ((0, _isString3.default)(thing)) { + names.push(thing); + } + }); + + return names; +}; + +exports.default = flattenNames; +},{"lodash/forOwn":271,"lodash/isPlainObject":285,"lodash/isString":287,"lodash/map":293}],374:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ReactCSS = exports.loop = exports.handleActive = exports.handleHover = exports.hover = undefined; + +var _flattenNames = require('./flattenNames'); + +var _flattenNames2 = _interopRequireDefault(_flattenNames); + +var _mergeClasses = require('./mergeClasses'); + +var _mergeClasses2 = _interopRequireDefault(_mergeClasses); + +var _autoprefix = require('./autoprefix'); + +var _autoprefix2 = _interopRequireDefault(_autoprefix); + +var _hover2 = require('./components/hover'); + +var _hover3 = _interopRequireDefault(_hover2); + +var _active = require('./components/active'); + +var _active2 = _interopRequireDefault(_active); + +var _loop2 = require('./loop'); + +var _loop3 = _interopRequireDefault(_loop2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +exports.hover = _hover3.default; +exports.handleHover = _hover3.default; +exports.handleActive = _active2.default; +exports.loop = _loop3.default; +var ReactCSS = exports.ReactCSS = function ReactCSS(classes) { + for (var _len = arguments.length, activations = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + activations[_key - 1] = arguments[_key]; + } + + var activeNames = (0, _flattenNames2.default)(activations); + var merged = (0, _mergeClasses2.default)(classes, activeNames); + return (0, _autoprefix2.default)(merged); +}; + +exports.default = ReactCSS; +},{"./autoprefix":370,"./components/active":371,"./components/hover":372,"./flattenNames":373,"./loop":375,"./mergeClasses":376}],375:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +var loopable = function loopable(i, length) { + var props = {}; + var setProp = function setProp(name) { + var value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + + props[name] = value; + }; + + i === 0 && setProp('first-child'); + i === length - 1 && setProp('last-child'); + (i === 0 || i % 2 === 0) && setProp('even'); + Math.abs(i % 2) === 1 && setProp('odd'); + setProp('nth-child', i); + + return props; +}; + +exports.default = loopable; +},{}],376:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.mergeClasses = undefined; + +var _forOwn2 = require('lodash/forOwn'); + +var _forOwn3 = _interopRequireDefault(_forOwn2); + +var _cloneDeep2 = require('lodash/cloneDeep'); + +var _cloneDeep3 = _interopRequireDefault(_cloneDeep2); + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var mergeClasses = exports.mergeClasses = function mergeClasses(classes) { + var activeNames = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; + + var styles = classes.default && (0, _cloneDeep3.default)(classes.default) || {}; + activeNames.map(function (name) { + var toMerge = classes[name]; + if (toMerge) { + (0, _forOwn3.default)(toMerge, function (value, key) { + if (!styles[key]) { + styles[key] = {}; + } + + styles[key] = _extends({}, styles[key], toMerge[key]); + }); + } + + return name; + }); + return styles; +}; + +exports.default = mergeClasses; +},{"lodash/cloneDeep":265,"lodash/forOwn":271}],377:[function(require,module,exports){ +/*! + * Signature Pad v2.3.2 + * https://github.com/szimek/signature_pad + * + * Copyright 2017 Szymon Nowak + * Released under the MIT license + * + * The main idea and some parts of the code (e.g. drawing variable width Bézier curve) are taken from: + * http://corner.squareup.com/2012/07/smoother-signatures.html + * + * Implementation of interpolation using cubic Bézier curves is taken from: + * http://benknowscode.wordpress.com/2012/09/14/path-interpolation-using-cubic-bezier-and-control-point-estimation-in-javascript + * + * Algorithm for approximated length of a Bézier curve is taken from: + * http://www.lemoda.net/maths/bezier-length/index.html + * + */ + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global.SignaturePad = factory()); +}(this, (function () { 'use strict'; + +function Point(x, y, time) { + this.x = x; + this.y = y; + this.time = time || new Date().getTime(); +} + +Point.prototype.velocityFrom = function (start) { + return this.time !== start.time ? this.distanceTo(start) / (this.time - start.time) : 1; +}; + +Point.prototype.distanceTo = function (start) { + return Math.sqrt(Math.pow(this.x - start.x, 2) + Math.pow(this.y - start.y, 2)); +}; + +Point.prototype.equals = function (other) { + return this.x === other.x && this.y === other.y && this.time === other.time; +}; + +function Bezier(startPoint, control1, control2, endPoint) { + this.startPoint = startPoint; + this.control1 = control1; + this.control2 = control2; + this.endPoint = endPoint; +} + +// Returns approximated length. +Bezier.prototype.length = function () { + var steps = 10; + var length = 0; + var px = void 0; + var py = void 0; + + for (var i = 0; i <= steps; i += 1) { + var t = i / steps; + var cx = this._point(t, this.startPoint.x, this.control1.x, this.control2.x, this.endPoint.x); + var cy = this._point(t, this.startPoint.y, this.control1.y, this.control2.y, this.endPoint.y); + if (i > 0) { + var xdiff = cx - px; + var ydiff = cy - py; + length += Math.sqrt(xdiff * xdiff + ydiff * ydiff); + } + px = cx; + py = cy; + } + + return length; +}; + +/* eslint-disable no-multi-spaces, space-in-parens */ +Bezier.prototype._point = function (t, start, c1, c2, end) { + return start * (1.0 - t) * (1.0 - t) * (1.0 - t) + 3.0 * c1 * (1.0 - t) * (1.0 - t) * t + 3.0 * c2 * (1.0 - t) * t * t + end * t * t * t; +}; + +/* eslint-disable */ + +// http://stackoverflow.com/a/27078401/815507 +function throttle(func, wait, options) { + var context, args, result; + var timeout = null; + var previous = 0; + if (!options) options = {}; + var later = function later() { + previous = options.leading === false ? 0 : Date.now(); + timeout = null; + result = func.apply(context, args); + if (!timeout) context = args = null; + }; + return function () { + var now = Date.now(); + if (!previous && options.leading === false) previous = now; + var remaining = wait - (now - previous); + context = this; + args = arguments; + if (remaining <= 0 || remaining > wait) { + if (timeout) { + clearTimeout(timeout); + timeout = null; + } + previous = now; + result = func.apply(context, args); + if (!timeout) context = args = null; + } else if (!timeout && options.trailing !== false) { + timeout = setTimeout(later, remaining); + } + return result; + }; +} + +function SignaturePad(canvas, options) { + var self = this; + var opts = options || {}; + + this.velocityFilterWeight = opts.velocityFilterWeight || 0.7; + this.minWidth = opts.minWidth || 0.5; + this.maxWidth = opts.maxWidth || 2.5; + this.throttle = 'throttle' in opts ? opts.throttle : 16; // in miliseconds + this.minDistance = 'minDistance' in opts ? opts.minDistance : 5; + + if (this.throttle) { + this._strokeMoveUpdate = throttle(SignaturePad.prototype._strokeUpdate, this.throttle); + } else { + this._strokeMoveUpdate = SignaturePad.prototype._strokeUpdate; + } + + this.dotSize = opts.dotSize || function () { + return (this.minWidth + this.maxWidth) / 2; + }; + this.penColor = opts.penColor || 'black'; + this.backgroundColor = opts.backgroundColor || 'rgba(0,0,0,0)'; + this.onBegin = opts.onBegin; + this.onEnd = opts.onEnd; + + this._canvas = canvas; + this._ctx = canvas.getContext('2d'); + this.clear(); + + // We need add these inline so they are available to unbind while still having + // access to 'self' we could use _.bind but it's not worth adding a dependency. + this._handleMouseDown = function (event) { + if (event.which === 1) { + self._mouseButtonDown = true; + self._strokeBegin(event); + } + }; + + this._handleMouseMove = function (event) { + if (self._mouseButtonDown) { + self._strokeMoveUpdate(event); + } + }; + + this._handleMouseUp = function (event) { + if (event.which === 1 && self._mouseButtonDown) { + self._mouseButtonDown = false; + self._strokeEnd(event); + } + }; + + this._handleTouchStart = function (event) { + if (event.targetTouches.length === 1) { + var touch = event.changedTouches[0]; + self._strokeBegin(touch); + } + }; + + this._handleTouchMove = function (event) { + // Prevent scrolling. + event.preventDefault(); + + var touch = event.targetTouches[0]; + self._strokeMoveUpdate(touch); + }; + + this._handleTouchEnd = function (event) { + var wasCanvasTouched = event.target === self._canvas; + if (wasCanvasTouched) { + event.preventDefault(); + self._strokeEnd(event); + } + }; + + // Enable mouse and touch event handlers + this.on(); +} + +// Public methods +SignaturePad.prototype.clear = function () { + var ctx = this._ctx; + var canvas = this._canvas; + + ctx.fillStyle = this.backgroundColor; + ctx.clearRect(0, 0, canvas.width, canvas.height); + ctx.fillRect(0, 0, canvas.width, canvas.height); + + this._data = []; + this._reset(); + this._isEmpty = true; +}; + +SignaturePad.prototype.fromDataURL = function (dataUrl) { + var _this = this; + + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + var image = new Image(); + var ratio = options.ratio || window.devicePixelRatio || 1; + var width = options.width || this._canvas.width / ratio; + var height = options.height || this._canvas.height / ratio; + + this._reset(); + image.src = dataUrl; + image.onload = function () { + _this._ctx.drawImage(image, 0, 0, width, height); + }; + this._isEmpty = false; +}; + +SignaturePad.prototype.toDataURL = function (type) { + var _canvas; + + switch (type) { + case 'image/svg+xml': + return this._toSVG(); + default: + for (var _len = arguments.length, options = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + options[_key - 1] = arguments[_key]; + } + + return (_canvas = this._canvas).toDataURL.apply(_canvas, [type].concat(options)); + } +}; + +SignaturePad.prototype.on = function () { + this._handleMouseEvents(); + this._handleTouchEvents(); +}; + +SignaturePad.prototype.off = function () { + this._canvas.removeEventListener('mousedown', this._handleMouseDown); + this._canvas.removeEventListener('mousemove', this._handleMouseMove); + document.removeEventListener('mouseup', this._handleMouseUp); + + this._canvas.removeEventListener('touchstart', this._handleTouchStart); + this._canvas.removeEventListener('touchmove', this._handleTouchMove); + this._canvas.removeEventListener('touchend', this._handleTouchEnd); +}; + +SignaturePad.prototype.isEmpty = function () { + return this._isEmpty; +}; + +// Private methods +SignaturePad.prototype._strokeBegin = function (event) { + this._data.push([]); + this._reset(); + this._strokeUpdate(event); + + if (typeof this.onBegin === 'function') { + this.onBegin(event); + } +}; + +SignaturePad.prototype._strokeUpdate = function (event) { + var x = event.clientX; + var y = event.clientY; + + var point = this._createPoint(x, y); + var lastPointGroup = this._data[this._data.length - 1]; + var lastPoint = lastPointGroup && lastPointGroup[lastPointGroup.length - 1]; + var isLastPointTooClose = lastPoint && point.distanceTo(lastPoint) < this.minDistance; + + // Skip this point if it's too close to the previous one + if (!(lastPoint && isLastPointTooClose)) { + var _addPoint = this._addPoint(point), + curve = _addPoint.curve, + widths = _addPoint.widths; + + if (curve && widths) { + this._drawCurve(curve, widths.start, widths.end); + } + + this._data[this._data.length - 1].push({ + x: point.x, + y: point.y, + time: point.time, + color: this.penColor + }); + } +}; + +SignaturePad.prototype._strokeEnd = function (event) { + var canDrawCurve = this.points.length > 2; + var point = this.points[0]; // Point instance + + if (!canDrawCurve && point) { + this._drawDot(point); + } + + if (point) { + var lastPointGroup = this._data[this._data.length - 1]; + var lastPoint = lastPointGroup[lastPointGroup.length - 1]; // plain object + + // When drawing a dot, there's only one point in a group, so without this check + // such group would end up with exactly the same 2 points. + if (!point.equals(lastPoint)) { + lastPointGroup.push({ + x: point.x, + y: point.y, + time: point.time, + color: this.penColor + }); + } + } + + if (typeof this.onEnd === 'function') { + this.onEnd(event); + } +}; + +SignaturePad.prototype._handleMouseEvents = function () { + this._mouseButtonDown = false; + + this._canvas.addEventListener('mousedown', this._handleMouseDown); + this._canvas.addEventListener('mousemove', this._handleMouseMove); + document.addEventListener('mouseup', this._handleMouseUp); +}; + +SignaturePad.prototype._handleTouchEvents = function () { + // Pass touch events to canvas element on mobile IE11 and Edge. + this._canvas.style.msTouchAction = 'none'; + this._canvas.style.touchAction = 'none'; + + this._canvas.addEventListener('touchstart', this._handleTouchStart); + this._canvas.addEventListener('touchmove', this._handleTouchMove); + this._canvas.addEventListener('touchend', this._handleTouchEnd); +}; + +SignaturePad.prototype._reset = function () { + this.points = []; + this._lastVelocity = 0; + this._lastWidth = (this.minWidth + this.maxWidth) / 2; + this._ctx.fillStyle = this.penColor; +}; + +SignaturePad.prototype._createPoint = function (x, y, time) { + var rect = this._canvas.getBoundingClientRect(); + + return new Point(x - rect.left, y - rect.top, time || new Date().getTime()); +}; + +SignaturePad.prototype._addPoint = function (point) { + var points = this.points; + var tmp = void 0; + + points.push(point); + + if (points.length > 2) { + // To reduce the initial lag make it work with 3 points + // by copying the first point to the beginning. + if (points.length === 3) points.unshift(points[0]); + + tmp = this._calculateCurveControlPoints(points[0], points[1], points[2]); + var c2 = tmp.c2; + tmp = this._calculateCurveControlPoints(points[1], points[2], points[3]); + var c3 = tmp.c1; + var curve = new Bezier(points[1], c2, c3, points[2]); + var widths = this._calculateCurveWidths(curve); + + // Remove the first element from the list, + // so that we always have no more than 4 points in points array. + points.shift(); + + return { curve: curve, widths: widths }; + } + + return {}; +}; + +SignaturePad.prototype._calculateCurveControlPoints = function (s1, s2, s3) { + var dx1 = s1.x - s2.x; + var dy1 = s1.y - s2.y; + var dx2 = s2.x - s3.x; + var dy2 = s2.y - s3.y; + + var m1 = { x: (s1.x + s2.x) / 2.0, y: (s1.y + s2.y) / 2.0 }; + var m2 = { x: (s2.x + s3.x) / 2.0, y: (s2.y + s3.y) / 2.0 }; + + var l1 = Math.sqrt(dx1 * dx1 + dy1 * dy1); + var l2 = Math.sqrt(dx2 * dx2 + dy2 * dy2); + + var dxm = m1.x - m2.x; + var dym = m1.y - m2.y; + + var k = l2 / (l1 + l2); + var cm = { x: m2.x + dxm * k, y: m2.y + dym * k }; + + var tx = s2.x - cm.x; + var ty = s2.y - cm.y; + + return { + c1: new Point(m1.x + tx, m1.y + ty), + c2: new Point(m2.x + tx, m2.y + ty) + }; +}; + +SignaturePad.prototype._calculateCurveWidths = function (curve) { + var startPoint = curve.startPoint; + var endPoint = curve.endPoint; + var widths = { start: null, end: null }; + + var velocity = this.velocityFilterWeight * endPoint.velocityFrom(startPoint) + (1 - this.velocityFilterWeight) * this._lastVelocity; + + var newWidth = this._strokeWidth(velocity); + + widths.start = this._lastWidth; + widths.end = newWidth; + + this._lastVelocity = velocity; + this._lastWidth = newWidth; + + return widths; +}; + +SignaturePad.prototype._strokeWidth = function (velocity) { + return Math.max(this.maxWidth / (velocity + 1), this.minWidth); +}; + +SignaturePad.prototype._drawPoint = function (x, y, size) { + var ctx = this._ctx; + + ctx.moveTo(x, y); + ctx.arc(x, y, size, 0, 2 * Math.PI, false); + this._isEmpty = false; +}; + +SignaturePad.prototype._drawCurve = function (curve, startWidth, endWidth) { + var ctx = this._ctx; + var widthDelta = endWidth - startWidth; + var drawSteps = Math.floor(curve.length()); + + ctx.beginPath(); + + for (var i = 0; i < drawSteps; i += 1) { + // Calculate the Bezier (x, y) coordinate for this step. + var t = i / drawSteps; + var tt = t * t; + var ttt = tt * t; + var u = 1 - t; + var uu = u * u; + var uuu = uu * u; + + var x = uuu * curve.startPoint.x; + x += 3 * uu * t * curve.control1.x; + x += 3 * u * tt * curve.control2.x; + x += ttt * curve.endPoint.x; + + var y = uuu * curve.startPoint.y; + y += 3 * uu * t * curve.control1.y; + y += 3 * u * tt * curve.control2.y; + y += ttt * curve.endPoint.y; + + var width = startWidth + ttt * widthDelta; + this._drawPoint(x, y, width); + } + + ctx.closePath(); + ctx.fill(); +}; + +SignaturePad.prototype._drawDot = function (point) { + var ctx = this._ctx; + var width = typeof this.dotSize === 'function' ? this.dotSize() : this.dotSize; + + ctx.beginPath(); + this._drawPoint(point.x, point.y, width); + ctx.closePath(); + ctx.fill(); +}; + +SignaturePad.prototype._fromData = function (pointGroups, drawCurve, drawDot) { + for (var i = 0; i < pointGroups.length; i += 1) { + var group = pointGroups[i]; + + if (group.length > 1) { + for (var j = 0; j < group.length; j += 1) { + var rawPoint = group[j]; + var point = new Point(rawPoint.x, rawPoint.y, rawPoint.time); + var color = rawPoint.color; + + if (j === 0) { + // First point in a group. Nothing to draw yet. + + // All points in the group have the same color, so it's enough to set + // penColor just at the beginning. + this.penColor = color; + this._reset(); + + this._addPoint(point); + } else if (j !== group.length - 1) { + // Middle point in a group. + var _addPoint2 = this._addPoint(point), + curve = _addPoint2.curve, + widths = _addPoint2.widths; + + if (curve && widths) { + drawCurve(curve, widths, color); + } + } else { + // Last point in a group. Do nothing. + } + } + } else { + this._reset(); + var _rawPoint = group[0]; + drawDot(_rawPoint); + } + } +}; + +SignaturePad.prototype._toSVG = function () { + var _this2 = this; + + var pointGroups = this._data; + var canvas = this._canvas; + var ratio = Math.max(window.devicePixelRatio || 1, 1); + var minX = 0; + var minY = 0; + var maxX = canvas.width / ratio; + var maxY = canvas.height / ratio; + var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg'); + + svg.setAttributeNS(null, 'width', canvas.width); + svg.setAttributeNS(null, 'height', canvas.height); + + this._fromData(pointGroups, function (curve, widths, color) { + var path = document.createElement('path'); + + // Need to check curve for NaN values, these pop up when drawing + // lines on the canvas that are not continuous. E.g. Sharp corners + // or stopping mid-stroke and than continuing without lifting mouse. + if (!isNaN(curve.control1.x) && !isNaN(curve.control1.y) && !isNaN(curve.control2.x) && !isNaN(curve.control2.y)) { + var attr = 'M ' + curve.startPoint.x.toFixed(3) + ',' + curve.startPoint.y.toFixed(3) + ' ' + ('C ' + curve.control1.x.toFixed(3) + ',' + curve.control1.y.toFixed(3) + ' ') + (curve.control2.x.toFixed(3) + ',' + curve.control2.y.toFixed(3) + ' ') + (curve.endPoint.x.toFixed(3) + ',' + curve.endPoint.y.toFixed(3)); + + path.setAttribute('d', attr); + path.setAttribute('stroke-width', (widths.end * 2.25).toFixed(3)); + path.setAttribute('stroke', color); + path.setAttribute('fill', 'none'); + path.setAttribute('stroke-linecap', 'round'); + + svg.appendChild(path); + } + }, function (rawPoint) { + var circle = document.createElement('circle'); + var dotSize = typeof _this2.dotSize === 'function' ? _this2.dotSize() : _this2.dotSize; + circle.setAttribute('r', dotSize); + circle.setAttribute('cx', rawPoint.x); + circle.setAttribute('cy', rawPoint.y); + circle.setAttribute('fill', rawPoint.color); + + svg.appendChild(circle); + }); + + var prefix = 'data:image/svg+xml;base64,'; + var header = ''; + var body = svg.innerHTML; + + // IE hack for missing innerHTML property on SVGElement + if (body === undefined) { + var dummy = document.createElement('dummy'); + var nodes = svg.childNodes; + dummy.innerHTML = ''; + + for (var i = 0; i < nodes.length; i += 1) { + dummy.appendChild(nodes[i].cloneNode(true)); + } + + body = dummy.innerHTML; + } + + var footer = ''; + var data = header + body + footer; + + return prefix + btoa(data); +}; + +SignaturePad.prototype.fromData = function (pointGroups) { + var _this3 = this; + + this.clear(); + + this._fromData(pointGroups, function (curve, widths) { + return _this3._drawCurve(curve, widths.start, widths.end); + }, function (rawPoint) { + return _this3._drawDot(rawPoint); + }); + + this._data = pointGroups; +}; + +SignaturePad.prototype.toData = function () { + return this._data; +}; + +return SignaturePad; + +}))); + +},{}],378:[function(require,module,exports){ +// TinyColor v1.4.2 +// https://github.com/bgrins/TinyColor +// Brian Grinstead, MIT License + +(function(Math) { + +var trimLeft = /^\s+/, + trimRight = /\s+$/, + tinyCounter = 0, + mathRound = Math.round, + mathMin = Math.min, + mathMax = Math.max, + mathRandom = Math.random; + +function tinycolor (color, opts) { + + color = (color) ? color : ''; + opts = opts || { }; + + // If input is already a tinycolor, return itself + if (color instanceof tinycolor) { + return color; + } + // If we are called as a function, call using new instead + if (!(this instanceof tinycolor)) { + return new tinycolor(color, opts); + } + + var rgb = inputToRGB(color); + this._originalInput = color, + this._r = rgb.r, + this._g = rgb.g, + this._b = rgb.b, + this._a = rgb.a, + this._roundA = mathRound(100*this._a) / 100, + this._format = opts.format || rgb.format; + this._gradientType = opts.gradientType; + + // Don't let the range of [0,255] come back in [0,1]. + // Potentially lose a little bit of precision here, but will fix issues where + // .5 gets interpreted as half of the total, instead of half of 1 + // If it was supposed to be 128, this was already taken care of by `inputToRgb` + if (this._r < 1) { this._r = mathRound(this._r); } + if (this._g < 1) { this._g = mathRound(this._g); } + if (this._b < 1) { this._b = mathRound(this._b); } + + this._ok = rgb.ok; + this._tc_id = tinyCounter++; +} + +tinycolor.prototype = { + isDark: function() { + return this.getBrightness() < 128; + }, + isLight: function() { + return !this.isDark(); + }, + isValid: function() { + return this._ok; + }, + getOriginalInput: function() { + return this._originalInput; + }, + getFormat: function() { + return this._format; + }, + getAlpha: function() { + return this._a; + }, + getBrightness: function() { + //http://www.w3.org/TR/AERT#color-contrast + var rgb = this.toRgb(); + return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000; + }, + getLuminance: function() { + //http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef + var rgb = this.toRgb(); + var RsRGB, GsRGB, BsRGB, R, G, B; + RsRGB = rgb.r/255; + GsRGB = rgb.g/255; + BsRGB = rgb.b/255; + + if (RsRGB <= 0.03928) {R = RsRGB / 12.92;} else {R = Math.pow(((RsRGB + 0.055) / 1.055), 2.4);} + if (GsRGB <= 0.03928) {G = GsRGB / 12.92;} else {G = Math.pow(((GsRGB + 0.055) / 1.055), 2.4);} + if (BsRGB <= 0.03928) {B = BsRGB / 12.92;} else {B = Math.pow(((BsRGB + 0.055) / 1.055), 2.4);} + return (0.2126 * R) + (0.7152 * G) + (0.0722 * B); + }, + setAlpha: function(value) { + this._a = boundAlpha(value); + this._roundA = mathRound(100*this._a) / 100; + return this; + }, + toHsv: function() { + var hsv = rgbToHsv(this._r, this._g, this._b); + return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this._a }; + }, + toHsvString: function() { + var hsv = rgbToHsv(this._r, this._g, this._b); + var h = mathRound(hsv.h * 360), s = mathRound(hsv.s * 100), v = mathRound(hsv.v * 100); + return (this._a == 1) ? + "hsv(" + h + ", " + s + "%, " + v + "%)" : + "hsva(" + h + ", " + s + "%, " + v + "%, "+ this._roundA + ")"; + }, + toHsl: function() { + var hsl = rgbToHsl(this._r, this._g, this._b); + return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this._a }; + }, + toHslString: function() { + var hsl = rgbToHsl(this._r, this._g, this._b); + var h = mathRound(hsl.h * 360), s = mathRound(hsl.s * 100), l = mathRound(hsl.l * 100); + return (this._a == 1) ? + "hsl(" + h + ", " + s + "%, " + l + "%)" : + "hsla(" + h + ", " + s + "%, " + l + "%, "+ this._roundA + ")"; + }, + toHex: function(allow3Char) { + return rgbToHex(this._r, this._g, this._b, allow3Char); + }, + toHexString: function(allow3Char) { + return '#' + this.toHex(allow3Char); + }, + toHex8: function(allow4Char) { + return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char); + }, + toHex8String: function(allow4Char) { + return '#' + this.toHex8(allow4Char); + }, + toRgb: function() { + return { r: mathRound(this._r), g: mathRound(this._g), b: mathRound(this._b), a: this._a }; + }, + toRgbString: function() { + return (this._a == 1) ? + "rgb(" + mathRound(this._r) + ", " + mathRound(this._g) + ", " + mathRound(this._b) + ")" : + "rgba(" + mathRound(this._r) + ", " + mathRound(this._g) + ", " + mathRound(this._b) + ", " + this._roundA + ")"; + }, + toPercentageRgb: function() { + return { r: mathRound(bound01(this._r, 255) * 100) + "%", g: mathRound(bound01(this._g, 255) * 100) + "%", b: mathRound(bound01(this._b, 255) * 100) + "%", a: this._a }; + }, + toPercentageRgbString: function() { + return (this._a == 1) ? + "rgb(" + mathRound(bound01(this._r, 255) * 100) + "%, " + mathRound(bound01(this._g, 255) * 100) + "%, " + mathRound(bound01(this._b, 255) * 100) + "%)" : + "rgba(" + mathRound(bound01(this._r, 255) * 100) + "%, " + mathRound(bound01(this._g, 255) * 100) + "%, " + mathRound(bound01(this._b, 255) * 100) + "%, " + this._roundA + ")"; + }, + toName: function() { + if (this._a === 0) { + return "transparent"; + } + + if (this._a < 1) { + return false; + } + + return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false; + }, + toFilter: function(secondColor) { + var hex8String = '#' + rgbaToArgbHex(this._r, this._g, this._b, this._a); + var secondHex8String = hex8String; + var gradientType = this._gradientType ? "GradientType = 1, " : ""; + + if (secondColor) { + var s = tinycolor(secondColor); + secondHex8String = '#' + rgbaToArgbHex(s._r, s._g, s._b, s._a); + } + + return "progid:DXImageTransform.Microsoft.gradient("+gradientType+"startColorstr="+hex8String+",endColorstr="+secondHex8String+")"; + }, + toString: function(format) { + var formatSet = !!format; + format = format || this._format; + + var formattedString = false; + var hasAlpha = this._a < 1 && this._a >= 0; + var needsAlphaFormat = !formatSet && hasAlpha && (format === "hex" || format === "hex6" || format === "hex3" || format === "hex4" || format === "hex8" || format === "name"); + + if (needsAlphaFormat) { + // Special case for "transparent", all other non-alpha formats + // will return rgba when there is transparency. + if (format === "name" && this._a === 0) { + return this.toName(); + } + return this.toRgbString(); + } + if (format === "rgb") { + formattedString = this.toRgbString(); + } + if (format === "prgb") { + formattedString = this.toPercentageRgbString(); + } + if (format === "hex" || format === "hex6") { + formattedString = this.toHexString(); + } + if (format === "hex3") { + formattedString = this.toHexString(true); + } + if (format === "hex4") { + formattedString = this.toHex8String(true); + } + if (format === "hex8") { + formattedString = this.toHex8String(); + } + if (format === "name") { + formattedString = this.toName(); + } + if (format === "hsl") { + formattedString = this.toHslString(); + } + if (format === "hsv") { + formattedString = this.toHsvString(); + } + + return formattedString || this.toHexString(); + }, + clone: function() { + return tinycolor(this.toString()); + }, + + _applyModification: function(fn, args) { + var color = fn.apply(null, [this].concat([].slice.call(args))); + this._r = color._r; + this._g = color._g; + this._b = color._b; + this.setAlpha(color._a); + return this; + }, + lighten: function() { + return this._applyModification(lighten, arguments); + }, + brighten: function() { + return this._applyModification(brighten, arguments); + }, + darken: function() { + return this._applyModification(darken, arguments); + }, + desaturate: function() { + return this._applyModification(desaturate, arguments); + }, + saturate: function() { + return this._applyModification(saturate, arguments); + }, + greyscale: function() { + return this._applyModification(greyscale, arguments); + }, + spin: function() { + return this._applyModification(spin, arguments); + }, + + _applyCombination: function(fn, args) { + return fn.apply(null, [this].concat([].slice.call(args))); + }, + analogous: function() { + return this._applyCombination(analogous, arguments); + }, + complement: function() { + return this._applyCombination(complement, arguments); + }, + monochromatic: function() { + return this._applyCombination(monochromatic, arguments); + }, + splitcomplement: function() { + return this._applyCombination(splitcomplement, arguments); + }, + triad: function() { + return this._applyCombination(triad, arguments); + }, + tetrad: function() { + return this._applyCombination(tetrad, arguments); + } +}; + +// If input is an object, force 1 into "1.0" to handle ratios properly +// String input requires "1.0" as input, so 1 will be treated as 1 +tinycolor.fromRatio = function(color, opts) { + if (typeof color == "object") { + var newColor = {}; + for (var i in color) { + if (color.hasOwnProperty(i)) { + if (i === "a") { + newColor[i] = color[i]; + } + else { + newColor[i] = convertToPercentage(color[i]); + } + } + } + color = newColor; + } + + return tinycolor(color, opts); +}; + +// Given a string or object, convert that input to RGB +// Possible string inputs: +// +// "red" +// "#f00" or "f00" +// "#ff0000" or "ff0000" +// "#ff000000" or "ff000000" +// "rgb 255 0 0" or "rgb (255, 0, 0)" +// "rgb 1.0 0 0" or "rgb (1, 0, 0)" +// "rgba (255, 0, 0, 1)" or "rgba 255, 0, 0, 1" +// "rgba (1.0, 0, 0, 1)" or "rgba 1.0, 0, 0, 1" +// "hsl(0, 100%, 50%)" or "hsl 0 100% 50%" +// "hsla(0, 100%, 50%, 1)" or "hsla 0 100% 50%, 1" +// "hsv(0, 100%, 100%)" or "hsv 0 100% 100%" +// +function inputToRGB(color) { + + var rgb = { r: 0, g: 0, b: 0 }; + var a = 1; + var s = null; + var v = null; + var l = null; + var ok = false; + var format = false; + + if (typeof color == "string") { + color = stringInputToObject(color); + } + + if (typeof color == "object") { + if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) { + rgb = rgbToRgb(color.r, color.g, color.b); + ok = true; + format = String(color.r).substr(-1) === "%" ? "prgb" : "rgb"; + } + else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) { + s = convertToPercentage(color.s); + v = convertToPercentage(color.v); + rgb = hsvToRgb(color.h, s, v); + ok = true; + format = "hsv"; + } + else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) { + s = convertToPercentage(color.s); + l = convertToPercentage(color.l); + rgb = hslToRgb(color.h, s, l); + ok = true; + format = "hsl"; + } + + if (color.hasOwnProperty("a")) { + a = color.a; + } + } + + a = boundAlpha(a); + + return { + ok: ok, + format: color.format || format, + r: mathMin(255, mathMax(rgb.r, 0)), + g: mathMin(255, mathMax(rgb.g, 0)), + b: mathMin(255, mathMax(rgb.b, 0)), + a: a + }; +} + + +// Conversion Functions +// -------------------- + +// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from: +// + +// `rgbToRgb` +// Handle bounds / percentage checking to conform to CSS color spec +// +// *Assumes:* r, g, b in [0, 255] or [0, 1] +// *Returns:* { r, g, b } in [0, 255] +function rgbToRgb(r, g, b){ + return { + r: bound01(r, 255) * 255, + g: bound01(g, 255) * 255, + b: bound01(b, 255) * 255 + }; +} + +// `rgbToHsl` +// Converts an RGB color value to HSL. +// *Assumes:* r, g, and b are contained in [0, 255] or [0, 1] +// *Returns:* { h, s, l } in [0,1] +function rgbToHsl(r, g, b) { + + r = bound01(r, 255); + g = bound01(g, 255); + b = bound01(b, 255); + + var max = mathMax(r, g, b), min = mathMin(r, g, b); + var h, s, l = (max + min) / 2; + + if(max == min) { + h = s = 0; // achromatic + } + else { + var d = max - min; + s = l > 0.5 ? d / (2 - max - min) : d / (max + min); + switch(max) { + case r: h = (g - b) / d + (g < b ? 6 : 0); break; + case g: h = (b - r) / d + 2; break; + case b: h = (r - g) / d + 4; break; + } + + h /= 6; + } + + return { h: h, s: s, l: l }; +} + +// `hslToRgb` +// Converts an HSL color value to RGB. +// *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100] +// *Returns:* { r, g, b } in the set [0, 255] +function hslToRgb(h, s, l) { + var r, g, b; + + h = bound01(h, 360); + s = bound01(s, 100); + l = bound01(l, 100); + + function hue2rgb(p, q, t) { + if(t < 0) t += 1; + if(t > 1) t -= 1; + if(t < 1/6) return p + (q - p) * 6 * t; + if(t < 1/2) return q; + if(t < 2/3) return p + (q - p) * (2/3 - t) * 6; + return p; + } + + if(s === 0) { + r = g = b = l; // achromatic + } + else { + var q = l < 0.5 ? l * (1 + s) : l + s - l * s; + var p = 2 * l - q; + r = hue2rgb(p, q, h + 1/3); + g = hue2rgb(p, q, h); + b = hue2rgb(p, q, h - 1/3); + } + + return { r: r * 255, g: g * 255, b: b * 255 }; +} + +// `rgbToHsv` +// Converts an RGB color value to HSV +// *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1] +// *Returns:* { h, s, v } in [0,1] +function rgbToHsv(r, g, b) { + + r = bound01(r, 255); + g = bound01(g, 255); + b = bound01(b, 255); + + var max = mathMax(r, g, b), min = mathMin(r, g, b); + var h, s, v = max; + + var d = max - min; + s = max === 0 ? 0 : d / max; + + if(max == min) { + h = 0; // achromatic + } + else { + switch(max) { + case r: h = (g - b) / d + (g < b ? 6 : 0); break; + case g: h = (b - r) / d + 2; break; + case b: h = (r - g) / d + 4; break; + } + h /= 6; + } + return { h: h, s: s, v: v }; +} + +// `hsvToRgb` +// Converts an HSV color value to RGB. +// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100] +// *Returns:* { r, g, b } in the set [0, 255] + function hsvToRgb(h, s, v) { + + h = bound01(h, 360) * 6; + s = bound01(s, 100); + v = bound01(v, 100); + + var i = Math.floor(h), + f = h - i, + p = v * (1 - s), + q = v * (1 - f * s), + t = v * (1 - (1 - f) * s), + mod = i % 6, + r = [v, q, p, p, t, v][mod], + g = [t, v, v, q, p, p][mod], + b = [p, p, t, v, v, q][mod]; + + return { r: r * 255, g: g * 255, b: b * 255 }; +} + +// `rgbToHex` +// Converts an RGB color to hex +// Assumes r, g, and b are contained in the set [0, 255] +// Returns a 3 or 6 character hex +function rgbToHex(r, g, b, allow3Char) { + + var hex = [ + pad2(mathRound(r).toString(16)), + pad2(mathRound(g).toString(16)), + pad2(mathRound(b).toString(16)) + ]; + + // Return a 3 character hex if possible + if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) { + return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0); + } + + return hex.join(""); +} + +// `rgbaToHex` +// Converts an RGBA color plus alpha transparency to hex +// Assumes r, g, b are contained in the set [0, 255] and +// a in [0, 1]. Returns a 4 or 8 character rgba hex +function rgbaToHex(r, g, b, a, allow4Char) { + + var hex = [ + pad2(mathRound(r).toString(16)), + pad2(mathRound(g).toString(16)), + pad2(mathRound(b).toString(16)), + pad2(convertDecimalToHex(a)) + ]; + + // Return a 4 character hex if possible + if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) { + return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0); + } + + return hex.join(""); +} + +// `rgbaToArgbHex` +// Converts an RGBA color to an ARGB Hex8 string +// Rarely used, but required for "toFilter()" +function rgbaToArgbHex(r, g, b, a) { + + var hex = [ + pad2(convertDecimalToHex(a)), + pad2(mathRound(r).toString(16)), + pad2(mathRound(g).toString(16)), + pad2(mathRound(b).toString(16)) + ]; + + return hex.join(""); +} + +// `equals` +// Can be called with any tinycolor input +tinycolor.equals = function (color1, color2) { + if (!color1 || !color2) { return false; } + return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString(); +}; + +tinycolor.random = function() { + return tinycolor.fromRatio({ + r: mathRandom(), + g: mathRandom(), + b: mathRandom() + }); +}; + + +// Modification Functions +// ---------------------- +// Thanks to less.js for some of the basics here +// + +function desaturate(color, amount) { + amount = (amount === 0) ? 0 : (amount || 10); + var hsl = tinycolor(color).toHsl(); + hsl.s -= amount / 100; + hsl.s = clamp01(hsl.s); + return tinycolor(hsl); +} + +function saturate(color, amount) { + amount = (amount === 0) ? 0 : (amount || 10); + var hsl = tinycolor(color).toHsl(); + hsl.s += amount / 100; + hsl.s = clamp01(hsl.s); + return tinycolor(hsl); +} + +function greyscale(color) { + return tinycolor(color).desaturate(100); +} + +function lighten (color, amount) { + amount = (amount === 0) ? 0 : (amount || 10); + var hsl = tinycolor(color).toHsl(); + hsl.l += amount / 100; + hsl.l = clamp01(hsl.l); + return tinycolor(hsl); +} + +function brighten(color, amount) { + amount = (amount === 0) ? 0 : (amount || 10); + var rgb = tinycolor(color).toRgb(); + rgb.r = mathMax(0, mathMin(255, rgb.r - mathRound(255 * - (amount / 100)))); + rgb.g = mathMax(0, mathMin(255, rgb.g - mathRound(255 * - (amount / 100)))); + rgb.b = mathMax(0, mathMin(255, rgb.b - mathRound(255 * - (amount / 100)))); + return tinycolor(rgb); +} + +function darken (color, amount) { + amount = (amount === 0) ? 0 : (amount || 10); + var hsl = tinycolor(color).toHsl(); + hsl.l -= amount / 100; + hsl.l = clamp01(hsl.l); + return tinycolor(hsl); +} + +// Spin takes a positive or negative amount within [-360, 360] indicating the change of hue. +// Values outside of this range will be wrapped into this range. +function spin(color, amount) { + var hsl = tinycolor(color).toHsl(); + var hue = (hsl.h + amount) % 360; + hsl.h = hue < 0 ? 360 + hue : hue; + return tinycolor(hsl); +} + +// Combination Functions +// --------------------- +// Thanks to jQuery xColor for some of the ideas behind these +// + +function complement(color) { + var hsl = tinycolor(color).toHsl(); + hsl.h = (hsl.h + 180) % 360; + return tinycolor(hsl); +} + +function triad(color) { + var hsl = tinycolor(color).toHsl(); + var h = hsl.h; + return [ + tinycolor(color), + tinycolor({ h: (h + 120) % 360, s: hsl.s, l: hsl.l }), + tinycolor({ h: (h + 240) % 360, s: hsl.s, l: hsl.l }) + ]; +} + +function tetrad(color) { + var hsl = tinycolor(color).toHsl(); + var h = hsl.h; + return [ + tinycolor(color), + tinycolor({ h: (h + 90) % 360, s: hsl.s, l: hsl.l }), + tinycolor({ h: (h + 180) % 360, s: hsl.s, l: hsl.l }), + tinycolor({ h: (h + 270) % 360, s: hsl.s, l: hsl.l }) + ]; +} + +function splitcomplement(color) { + var hsl = tinycolor(color).toHsl(); + var h = hsl.h; + return [ + tinycolor(color), + tinycolor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l}), + tinycolor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l}) + ]; +} + +function analogous(color, results, slices) { + results = results || 6; + slices = slices || 30; + + var hsl = tinycolor(color).toHsl(); + var part = 360 / slices; + var ret = [tinycolor(color)]; + + for (hsl.h = ((hsl.h - (part * results >> 1)) + 720) % 360; --results; ) { + hsl.h = (hsl.h + part) % 360; + ret.push(tinycolor(hsl)); + } + return ret; +} + +function monochromatic(color, results) { + results = results || 6; + var hsv = tinycolor(color).toHsv(); + var h = hsv.h, s = hsv.s, v = hsv.v; + var ret = []; + var modification = 1 / results; + + while (results--) { + ret.push(tinycolor({ h: h, s: s, v: v})); + v = (v + modification) % 1; + } + + return ret; +} + +// Utility Functions +// --------------------- + +tinycolor.mix = function(color1, color2, amount) { + amount = (amount === 0) ? 0 : (amount || 50); + + var rgb1 = tinycolor(color1).toRgb(); + var rgb2 = tinycolor(color2).toRgb(); + + var p = amount / 100; + + var rgba = { + r: ((rgb2.r - rgb1.r) * p) + rgb1.r, + g: ((rgb2.g - rgb1.g) * p) + rgb1.g, + b: ((rgb2.b - rgb1.b) * p) + rgb1.b, + a: ((rgb2.a - rgb1.a) * p) + rgb1.a + }; + + return tinycolor(rgba); +}; + + +// Readability Functions +// --------------------- +// false +// tinycolor.isReadable("#000", "#111",{level:"AA",size:"large"}) => false +tinycolor.isReadable = function(color1, color2, wcag2) { + var readability = tinycolor.readability(color1, color2); + var wcag2Parms, out; + + out = false; + + wcag2Parms = validateWCAG2Parms(wcag2); + switch (wcag2Parms.level + wcag2Parms.size) { + case "AAsmall": + case "AAAlarge": + out = readability >= 4.5; + break; + case "AAlarge": + out = readability >= 3; + break; + case "AAAsmall": + out = readability >= 7; + break; + } + return out; + +}; + +// `mostReadable` +// Given a base color and a list of possible foreground or background +// colors for that base, returns the most readable color. +// Optionally returns Black or White if the most readable color is unreadable. +// *Example* +// tinycolor.mostReadable(tinycolor.mostReadable("#123", ["#124", "#125"],{includeFallbackColors:false}).toHexString(); // "#112255" +// tinycolor.mostReadable(tinycolor.mostReadable("#123", ["#124", "#125"],{includeFallbackColors:true}).toHexString(); // "#ffffff" +// tinycolor.mostReadable("#a8015a", ["#faf3f3"],{includeFallbackColors:true,level:"AAA",size:"large"}).toHexString(); // "#faf3f3" +// tinycolor.mostReadable("#a8015a", ["#faf3f3"],{includeFallbackColors:true,level:"AAA",size:"small"}).toHexString(); // "#ffffff" +tinycolor.mostReadable = function(baseColor, colorList, args) { + var bestColor = null; + var bestScore = 0; + var readability; + var includeFallbackColors, level, size ; + args = args || {}; + includeFallbackColors = args.includeFallbackColors ; + level = args.level; + size = args.size; + + for (var i= 0; i < colorList.length ; i++) { + readability = tinycolor.readability(baseColor, colorList[i]); + if (readability > bestScore) { + bestScore = readability; + bestColor = tinycolor(colorList[i]); + } + } + + if (tinycolor.isReadable(baseColor, bestColor, {"level":level,"size":size}) || !includeFallbackColors) { + return bestColor; + } + else { + args.includeFallbackColors=false; + return tinycolor.mostReadable(baseColor,["#fff", "#000"],args); + } +}; + + +// Big List of Colors +// ------------------ +// +var names = tinycolor.names = { + aliceblue: "f0f8ff", + antiquewhite: "faebd7", + aqua: "0ff", + aquamarine: "7fffd4", + azure: "f0ffff", + beige: "f5f5dc", + bisque: "ffe4c4", + black: "000", + blanchedalmond: "ffebcd", + blue: "00f", + blueviolet: "8a2be2", + brown: "a52a2a", + burlywood: "deb887", + burntsienna: "ea7e5d", + cadetblue: "5f9ea0", + chartreuse: "7fff00", + chocolate: "d2691e", + coral: "ff7f50", + cornflowerblue: "6495ed", + cornsilk: "fff8dc", + crimson: "dc143c", + cyan: "0ff", + darkblue: "00008b", + darkcyan: "008b8b", + darkgoldenrod: "b8860b", + darkgray: "a9a9a9", + darkgreen: "006400", + darkgrey: "a9a9a9", + darkkhaki: "bdb76b", + darkmagenta: "8b008b", + darkolivegreen: "556b2f", + darkorange: "ff8c00", + darkorchid: "9932cc", + darkred: "8b0000", + darksalmon: "e9967a", + darkseagreen: "8fbc8f", + darkslateblue: "483d8b", + darkslategray: "2f4f4f", + darkslategrey: "2f4f4f", + darkturquoise: "00ced1", + darkviolet: "9400d3", + deeppink: "ff1493", + deepskyblue: "00bfff", + dimgray: "696969", + dimgrey: "696969", + dodgerblue: "1e90ff", + firebrick: "b22222", + floralwhite: "fffaf0", + forestgreen: "228b22", + fuchsia: "f0f", + gainsboro: "dcdcdc", + ghostwhite: "f8f8ff", + gold: "ffd700", + goldenrod: "daa520", + gray: "808080", + green: "008000", + greenyellow: "adff2f", + grey: "808080", + honeydew: "f0fff0", + hotpink: "ff69b4", + indianred: "cd5c5c", + indigo: "4b0082", + ivory: "fffff0", + khaki: "f0e68c", + lavender: "e6e6fa", + lavenderblush: "fff0f5", + lawngreen: "7cfc00", + lemonchiffon: "fffacd", + lightblue: "add8e6", + lightcoral: "f08080", + lightcyan: "e0ffff", + lightgoldenrodyellow: "fafad2", + lightgray: "d3d3d3", + lightgreen: "90ee90", + lightgrey: "d3d3d3", + lightpink: "ffb6c1", + lightsalmon: "ffa07a", + lightseagreen: "20b2aa", + lightskyblue: "87cefa", + lightslategray: "789", + lightslategrey: "789", + lightsteelblue: "b0c4de", + lightyellow: "ffffe0", + lime: "0f0", + limegreen: "32cd32", + linen: "faf0e6", + magenta: "f0f", + maroon: "800000", + mediumaquamarine: "66cdaa", + mediumblue: "0000cd", + mediumorchid: "ba55d3", + mediumpurple: "9370db", + mediumseagreen: "3cb371", + mediumslateblue: "7b68ee", + mediumspringgreen: "00fa9a", + mediumturquoise: "48d1cc", + mediumvioletred: "c71585", + midnightblue: "191970", + mintcream: "f5fffa", + mistyrose: "ffe4e1", + moccasin: "ffe4b5", + navajowhite: "ffdead", + navy: "000080", + oldlace: "fdf5e6", + olive: "808000", + olivedrab: "6b8e23", + orange: "ffa500", + orangered: "ff4500", + orchid: "da70d6", + palegoldenrod: "eee8aa", + palegreen: "98fb98", + paleturquoise: "afeeee", + palevioletred: "db7093", + papayawhip: "ffefd5", + peachpuff: "ffdab9", + peru: "cd853f", + pink: "ffc0cb", + plum: "dda0dd", + powderblue: "b0e0e6", + purple: "800080", + rebeccapurple: "663399", + red: "f00", + rosybrown: "bc8f8f", + royalblue: "4169e1", + saddlebrown: "8b4513", + salmon: "fa8072", + sandybrown: "f4a460", + seagreen: "2e8b57", + seashell: "fff5ee", + sienna: "a0522d", + silver: "c0c0c0", + skyblue: "87ceeb", + slateblue: "6a5acd", + slategray: "708090", + slategrey: "708090", + snow: "fffafa", + springgreen: "00ff7f", + steelblue: "4682b4", + tan: "d2b48c", + teal: "008080", + thistle: "d8bfd8", + tomato: "ff6347", + turquoise: "40e0d0", + violet: "ee82ee", + wheat: "f5deb3", + white: "fff", + whitesmoke: "f5f5f5", + yellow: "ff0", + yellowgreen: "9acd32" +}; + +// Make it easy to access colors via `hexNames[hex]` +var hexNames = tinycolor.hexNames = flip(names); + + +// Utilities +// --------- + +// `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }` +function flip(o) { + var flipped = { }; + for (var i in o) { + if (o.hasOwnProperty(i)) { + flipped[o[i]] = i; + } + } + return flipped; +} + +// Return a valid alpha value [0,1] with all invalid values being set to 1 +function boundAlpha(a) { + a = parseFloat(a); + + if (isNaN(a) || a < 0 || a > 1) { + a = 1; + } + + return a; +} + +// Take input from [0, n] and return it as [0, 1] +function bound01(n, max) { + if (isOnePointZero(n)) { n = "100%"; } + + var processPercent = isPercentage(n); + n = mathMin(max, mathMax(0, parseFloat(n))); + + // Automatically convert percentage into number + if (processPercent) { + n = parseInt(n * max, 10) / 100; + } + + // Handle floating point rounding errors + if ((Math.abs(n - max) < 0.000001)) { + return 1; + } + + // Convert into [0, 1] range if it isn't already + return (n % max) / parseFloat(max); +} + +// Force a number between 0 and 1 +function clamp01(val) { + return mathMin(1, mathMax(0, val)); +} + +// Parse a base-16 hex value into a base-10 integer +function parseIntFromHex(val) { + return parseInt(val, 16); +} + +// Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1 +// +function isOnePointZero(n) { + return typeof n == "string" && n.indexOf('.') != -1 && parseFloat(n) === 1; +} + +// Check to see if string passed in is a percentage +function isPercentage(n) { + return typeof n === "string" && n.indexOf('%') != -1; +} + +// Force a hex value to have 2 characters +function pad2(c) { + return c.length == 1 ? '0' + c : '' + c; +} + +// Replace a decimal with it's percentage value +function convertToPercentage(n) { + if (n <= 1) { + n = (n * 100) + "%"; + } + + return n; +} + +// Converts a decimal to a hex value +function convertDecimalToHex(d) { + return Math.round(parseFloat(d) * 255).toString(16); +} +// Converts a hex value to a decimal +function convertHexToDecimal(h) { + return (parseIntFromHex(h) / 255); +} + +var matchers = (function() { + + // + var CSS_INTEGER = "[-\\+]?\\d+%?"; + + // + var CSS_NUMBER = "[-\\+]?\\d*\\.\\d+%?"; + + // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome. + var CSS_UNIT = "(?:" + CSS_NUMBER + ")|(?:" + CSS_INTEGER + ")"; + + // Actual matching. + // Parentheses and commas are optional, but not required. + // Whitespace can take the place of commas or opening paren + var PERMISSIVE_MATCH3 = "[\\s|\\(]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")\\s*\\)?"; + var PERMISSIVE_MATCH4 = "[\\s|\\(]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")\\s*\\)?"; + + return { + CSS_UNIT: new RegExp(CSS_UNIT), + rgb: new RegExp("rgb" + PERMISSIVE_MATCH3), + rgba: new RegExp("rgba" + PERMISSIVE_MATCH4), + hsl: new RegExp("hsl" + PERMISSIVE_MATCH3), + hsla: new RegExp("hsla" + PERMISSIVE_MATCH4), + hsv: new RegExp("hsv" + PERMISSIVE_MATCH3), + hsva: new RegExp("hsva" + PERMISSIVE_MATCH4), + hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, + hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/, + hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, + hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/ + }; +})(); + +// `isValidCSSUnit` +// Take in a single string / number and check to see if it looks like a CSS unit +// (see `matchers` above for definition). +function isValidCSSUnit(color) { + return !!matchers.CSS_UNIT.exec(color); +} + +// `stringInputToObject` +// Permissive string parsing. Take in a number of formats, and output an object +// based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}` +function stringInputToObject(color) { + + color = color.replace(trimLeft,'').replace(trimRight, '').toLowerCase(); + var named = false; + if (names[color]) { + color = names[color]; + named = true; + } + else if (color == 'transparent') { + return { r: 0, g: 0, b: 0, a: 0, format: "name" }; + } + + // Try to match string input using regular expressions. + // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360] + // Just return an object and let the conversion functions handle that. + // This way the result will be the same whether the tinycolor is initialized with string or object. + var match; + if ((match = matchers.rgb.exec(color))) { + return { r: match[1], g: match[2], b: match[3] }; + } + if ((match = matchers.rgba.exec(color))) { + return { r: match[1], g: match[2], b: match[3], a: match[4] }; + } + if ((match = matchers.hsl.exec(color))) { + return { h: match[1], s: match[2], l: match[3] }; + } + if ((match = matchers.hsla.exec(color))) { + return { h: match[1], s: match[2], l: match[3], a: match[4] }; + } + if ((match = matchers.hsv.exec(color))) { + return { h: match[1], s: match[2], v: match[3] }; + } + if ((match = matchers.hsva.exec(color))) { + return { h: match[1], s: match[2], v: match[3], a: match[4] }; + } + if ((match = matchers.hex8.exec(color))) { + return { + r: parseIntFromHex(match[1]), + g: parseIntFromHex(match[2]), + b: parseIntFromHex(match[3]), + a: convertHexToDecimal(match[4]), + format: named ? "name" : "hex8" + }; + } + if ((match = matchers.hex6.exec(color))) { + return { + r: parseIntFromHex(match[1]), + g: parseIntFromHex(match[2]), + b: parseIntFromHex(match[3]), + format: named ? "name" : "hex" + }; + } + if ((match = matchers.hex4.exec(color))) { + return { + r: parseIntFromHex(match[1] + '' + match[1]), + g: parseIntFromHex(match[2] + '' + match[2]), + b: parseIntFromHex(match[3] + '' + match[3]), + a: convertHexToDecimal(match[4] + '' + match[4]), + format: named ? "name" : "hex8" + }; + } + if ((match = matchers.hex3.exec(color))) { + return { + r: parseIntFromHex(match[1] + '' + match[1]), + g: parseIntFromHex(match[2] + '' + match[2]), + b: parseIntFromHex(match[3] + '' + match[3]), + format: named ? "name" : "hex" + }; + } + + return false; +} + +function validateWCAG2Parms(parms) { + // return valid WCAG2 parms for isReadable. + // If input parms are invalid, return {"level":"AA", "size":"small"} + var level, size; + parms = parms || {"level":"AA", "size":"small"}; + level = (parms.level || "AA").toUpperCase(); + size = (parms.size || "small").toLowerCase(); + if (level !== "AA" && level !== "AAA") { + level = "AA"; + } + if (size !== "small" && size !== "large") { + size = "small"; + } + return {"level":level, "size":size}; +} + +// Node: Export function +if (typeof module !== "undefined" && module.exports) { + module.exports = tinycolor; +} +// AMD/requirejs: Define the module +else if (typeof define === 'function' && define.amd) { + define(function () {return tinycolor;}); +} +// Browser: Expose to window +else { + window.tinycolor = tinycolor; +} + +})(Math); + +},{}],379:[function(require,module,exports){ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.trimCanvas=t():e.trimCanvas=t()}(this,function(){return function(e){function t(n){if(r[n])return r[n].exports;var o=r[n]={exports:{},id:n,loaded:!1};return e[n].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var r={};return t.m=e,t.c=r,t.p="",t(0)}([function(e,t){"use strict";function r(e){var t=e.getContext("2d"),r=e.width,n=e.height,o=t.getImageData(0,0,r,n).data,f=a(!0,r,n,o),i=a(!1,r,n,o),c=u(!0,r,n,o),d=u(!1,r,n,o),p=d-c+1,l=i-f+1,s=t.getImageData(c,f,p,l);return e.width=p,e.height=l,t.clearRect(0,0,p,l),t.putImageData(s,0,0),e}function n(e,t,r,n){return{red:n[4*(r*t+e)],green:n[4*(r*t+e)+1],blue:n[4*(r*t+e)+2],alpha:n[4*(r*t+e)+3]}}function o(e,t,r,o){return n(e,t,r,o).alpha}function a(e,t,r,n){for(var a=e?1:-1,u=e?0:r-1,f=u;e?f-1;f+=a)for(var i=0;i-1;f+=a)for(var i=0;i)[^>]*|#([\w-]*))$/,C=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,k=/^-ms-/,N=/-([\da-z])/gi,E=function(e,t){return t.toUpperCase()},S=function(){o.removeEventListener("DOMContentLoaded",S,!1),e.removeEventListener("load",S,!1),x.ready()};x.fn=x.prototype={jquery:p,constructor:x,init:function(e,t,n){var r,i;if(!e)return this;if("string"==typeof e){if(r="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:T.exec(e),!r||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof x?t[0]:t,x.merge(this,x.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:o,!0)),C.test(r[1])&&x.isPlainObject(t))for(r in t)x.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return i=o.getElementById(r[2]),i&&i.parentNode&&(this.length=1,this[0]=i),this.context=o,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?n.ready(e):(e.selector!==undefined&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return d.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,t,n,r,i,o,s=arguments[0]||{},a=1,u=arguments.length,l=!1;for("boolean"==typeof s&&(l=s,s=arguments[1]||{},a=2),"object"==typeof s||x.isFunction(s)||(s={}),u===a&&(s=this,--a);u>a;a++)if(null!=(e=arguments[a]))for(t in e)n=s[t],r=e[t],s!==r&&(l&&r&&(x.isPlainObject(r)||(i=x.isArray(r)))?(i?(i=!1,o=n&&x.isArray(n)?n:[]):o=n&&x.isPlainObject(n)?n:{},s[t]=x.extend(l,o,r)):r!==undefined&&(s[t]=r));return s},x.extend({expando:"jQuery"+(p+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=a),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){(e===!0?--x.readyWait:x.isReady)||(x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(o,[x]),x.fn.trigger&&x(o).trigger("ready").off("ready")))},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray,isWindow:function(e){return null!=e&&e===e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[m.call(e)]||"object":typeof e},isPlainObject:function(e){if("object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!y.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(t){return!1}return!0},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||o;var r=C.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:JSON.parse,parseXML:function(e){var t,n;if(!e||"string"!=typeof e)return null;try{n=new DOMParser,t=n.parseFromString(e,"text/xml")}catch(r){t=undefined}return(!t||t.getElementsByTagName("parsererror").length)&&x.error("Invalid XML: "+e),t},noop:function(){},globalEval:function(e){var t,n=eval;e=x.trim(e),e&&(1===e.indexOf("use strict")?(t=o.createElement("script"),t.text=e,o.head.appendChild(t).parentNode.removeChild(t)):n(e))},camelCase:function(e){return e.replace(k,"ms-").replace(N,E)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,s=j(e);if(n){if(s){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(s){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:function(e){return null==e?"":v.call(e)},makeArray:function(e,t){var n=t||[];return null!=e&&(j(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:g.call(t,e,n)},merge:function(e,t){var n=t.length,r=e.length,i=0;if("number"==typeof n)for(;n>i;i++)e[r++]=t[i];else while(t[i]!==undefined)e[r++]=t[i++];return e.length=r,e},grep:function(e,t,n){var r,i=[],o=0,s=e.length;for(n=!!n;s>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,s=j(e),a=[];if(s)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(a[a.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(a[a.length]=r);return f.apply([],a)},guid:1,proxy:function(e,t){var n,r,i;return"string"==typeof t&&(n=e[t],t=e,e=n),x.isFunction(e)?(r=d.call(arguments,2),i=function(){return e.apply(t||this,r.concat(d.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):undefined},access:function(e,t,n,r,i,o,s){var a=0,u=e.length,l=null==n;if("object"===x.type(n)){i=!0;for(a in n)x.access(e,t,a,n[a],!0,o,s)}else if(r!==undefined&&(i=!0,x.isFunction(r)||(s=!0),l&&(s?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(x(e),n)})),t))for(;u>a;a++)t(e[a],n,s?r:r.call(e[a],a,t(e[a],n)));return i?e:l?t.call(e):u?t(e[0],n):o},now:Date.now,swap:function(e,t,n,r){var i,o,s={};for(o in t)s[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=s[o];return i}}),x.ready.promise=function(t){return n||(n=x.Deferred(),"complete"===o.readyState?setTimeout(x.ready):(o.addEventListener("DOMContentLoaded",S,!1),e.addEventListener("load",S,!1))),n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()});function j(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}t=x(o),function(e,undefined){var t,n,r,i,o,s,a,u,l,c,p,f,h,d,g,m,y,v="sizzle"+-new Date,b=e.document,w=0,T=0,C=at(),k=at(),N=at(),E=!1,S=function(){return 0},j=typeof undefined,D=1<<31,A={}.hasOwnProperty,L=[],H=L.pop,q=L.push,O=L.push,F=L.slice,P=L.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",W="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",$=W.replace("w","w#"),B="\\["+M+"*("+W+")"+M+"*(?:([*^$|!~]?=)"+M+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+$+")|)|)"+M+"*\\]",I=":("+W+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+B.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=RegExp("^"+M+"*,"+M+"*"),X=RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=RegExp(M+"*[+~]"),Y=RegExp("="+M+"*([^\\]'\"]*)"+M+"*\\]","g"),V=RegExp(I),G=RegExp("^"+$+"$"),J={ID:RegExp("^#("+W+")"),CLASS:RegExp("^\\.("+W+")"),TAG:RegExp("^("+W.replace("w","w*")+")"),ATTR:RegExp("^"+B),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:RegExp("^(?:"+R+")$","i"),needsContext:RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Q=/^[^{]+\{\s*\[native \w/,K=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,Z=/^(?:input|select|textarea|button)$/i,et=/^h\d$/i,tt=/'|\\/g,nt=RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),rt=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{O.apply(L=F.call(b.childNodes),b.childNodes),L[b.childNodes.length].nodeType}catch(it){O={apply:L.length?function(e,t){q.apply(e,F.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function ot(e,t,r,i){var o,s,a,u,l,f,g,m,x,w;if((t?t.ownerDocument||t:b)!==p&&c(t),t=t||p,r=r||[],!e||"string"!=typeof e)return r;if(1!==(u=t.nodeType)&&9!==u)return[];if(h&&!i){if(o=K.exec(e))if(a=o[1]){if(9===u){if(s=t.getElementById(a),!s||!s.parentNode)return r;if(s.id===a)return r.push(s),r}else if(t.ownerDocument&&(s=t.ownerDocument.getElementById(a))&&y(t,s)&&s.id===a)return r.push(s),r}else{if(o[2])return O.apply(r,t.getElementsByTagName(e)),r;if((a=o[3])&&n.getElementsByClassName&&t.getElementsByClassName)return O.apply(r,t.getElementsByClassName(a)),r}if(n.qsa&&(!d||!d.test(e))){if(m=g=v,x=t,w=9===u&&e,1===u&&"object"!==t.nodeName.toLowerCase()){f=vt(e),(g=t.getAttribute("id"))?m=g.replace(tt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",l=f.length;while(l--)f[l]=m+xt(f[l]);x=U.test(e)&&t.parentNode||t,w=f.join(",")}if(w)try{return O.apply(r,x.querySelectorAll(w)),r}catch(T){}finally{g||t.removeAttribute("id")}}}return St(e.replace(z,"$1"),t,r,i)}function st(e){return Q.test(e+"")}function at(){var e=[];function t(n,r){return e.push(n+=" ")>i.cacheLength&&delete t[e.shift()],t[n]=r}return t}function ut(e){return e[v]=!0,e}function lt(e){var t=p.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ct(e,t,n){e=e.split("|");var r,o=e.length,s=n?null:t;while(o--)(r=i.attrHandle[e[o]])&&r!==t||(i.attrHandle[e[o]]=s)}function pt(e,t){var n=e.getAttributeNode(t);return n&&n.specified?n.value:e[t]===!0?t.toLowerCase():null}function ft(e,t){return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}function ht(e){return"input"===e.nodeName.toLowerCase()?e.defaultValue:undefined}function dt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function gt(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function mt(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function yt(e){return ut(function(t){return t=+t,ut(function(n,r){var i,o=e([],n.length,t),s=o.length;while(s--)n[i=o[s]]&&(n[i]=!(r[i]=n[i]))})})}s=ot.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},n=ot.support={},c=ot.setDocument=function(e){var t=e?e.ownerDocument||e:b,r=t.parentWindow;return t!==p&&9===t.nodeType&&t.documentElement?(p=t,f=t.documentElement,h=!s(t),r&&r.frameElement&&r.attachEvent("onbeforeunload",function(){c()}),n.attributes=lt(function(e){return e.innerHTML="",ct("type|href|height|width",ft,"#"===e.firstChild.getAttribute("href")),ct(R,pt,null==e.getAttribute("disabled")),e.className="i",!e.getAttribute("className")}),n.input=lt(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")}),ct("value",ht,n.attributes&&n.input),n.getElementsByTagName=lt(function(e){return e.appendChild(t.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=lt(function(e){return e.innerHTML="
    ",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),n.getById=lt(function(e){return f.appendChild(e).id=v,!t.getElementsByName||!t.getElementsByName(v).length}),n.getById?(i.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},i.filter.ID=function(e){var t=e.replace(nt,rt);return function(e){return e.getAttribute("id")===t}}):(delete i.find.ID,i.filter.ID=function(e){var t=e.replace(nt,rt);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),i.find.TAG=n.getElementsByTagName?function(e,t){return typeof t.getElementsByTagName!==j?t.getElementsByTagName(e):undefined}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},i.find.CLASS=n.getElementsByClassName&&function(e,t){return typeof t.getElementsByClassName!==j&&h?t.getElementsByClassName(e):undefined},g=[],d=[],(n.qsa=st(t.querySelectorAll))&&(lt(function(e){e.innerHTML="",e.querySelectorAll("[selected]").length||d.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll(":checked").length||d.push(":checked")}),lt(function(e){var n=t.createElement("input");n.setAttribute("type","hidden"),e.appendChild(n).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&d.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||d.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),d.push(",.*:")})),(n.matchesSelector=st(m=f.webkitMatchesSelector||f.mozMatchesSelector||f.oMatchesSelector||f.msMatchesSelector))&<(function(e){n.disconnectedMatch=m.call(e,"div"),m.call(e,"[s!='']:x"),g.push("!=",I)}),d=d.length&&RegExp(d.join("|")),g=g.length&&RegExp(g.join("|")),y=st(f.contains)||f.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},n.sortDetached=lt(function(e){return 1&e.compareDocumentPosition(t.createElement("div"))}),S=f.compareDocumentPosition?function(e,r){if(e===r)return E=!0,0;var i=r.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(r);return i?1&i||!n.sortDetached&&r.compareDocumentPosition(e)===i?e===t||y(b,e)?-1:r===t||y(b,r)?1:l?P.call(l,e)-P.call(l,r):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,n){var r,i=0,o=e.parentNode,s=n.parentNode,a=[e],u=[n];if(e===n)return E=!0,0;if(!o||!s)return e===t?-1:n===t?1:o?-1:s?1:l?P.call(l,e)-P.call(l,n):0;if(o===s)return dt(e,n);r=e;while(r=r.parentNode)a.unshift(r);r=n;while(r=r.parentNode)u.unshift(r);while(a[i]===u[i])i++;return i?dt(a[i],u[i]):a[i]===b?-1:u[i]===b?1:0},t):p},ot.matches=function(e,t){return ot(e,null,null,t)},ot.matchesSelector=function(e,t){if((e.ownerDocument||e)!==p&&c(e),t=t.replace(Y,"='$1']"),!(!n.matchesSelector||!h||g&&g.test(t)||d&&d.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(i){}return ot(t,p,null,[e]).length>0},ot.contains=function(e,t){return(e.ownerDocument||e)!==p&&c(e),y(e,t)},ot.attr=function(e,t){(e.ownerDocument||e)!==p&&c(e);var r=i.attrHandle[t.toLowerCase()],o=r&&A.call(i.attrHandle,t.toLowerCase())?r(e,t,!h):undefined;return o===undefined?n.attributes||!h?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null:o},ot.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},ot.uniqueSort=function(e){var t,r=[],i=0,o=0;if(E=!n.detectDuplicates,l=!n.sortStable&&e.slice(0),e.sort(S),E){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return e},o=ot.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=o(t);return n},i=ot.selectors={cacheLength:50,createPseudo:ut,match:J,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(nt,rt),e[3]=(e[4]||e[5]||"").replace(nt,rt),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||ot.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&ot.error(e[0]),e},PSEUDO:function(e){var t,n=!e[5]&&e[2];return J.CHILD.test(e[0])?null:(e[3]&&e[4]!==undefined?e[2]=e[4]:n&&V.test(n)&&(t=vt(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(nt,rt).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=C[e+" "];return t||(t=RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&C(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=ot.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),s="last"!==e.slice(-4),a="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,p,f,h,d,g=o!==s?"nextSibling":"previousSibling",m=t.parentNode,y=a&&t.nodeName.toLowerCase(),x=!u&&!a;if(m){if(o){while(g){p=t;while(p=p[g])if(a?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;d=g="only"===e&&!d&&"nextSibling"}return!0}if(d=[s?m.firstChild:m.lastChild],s&&x){c=m[v]||(m[v]={}),l=c[e]||[],h=l[0]===w&&l[1],f=l[0]===w&&l[2],p=h&&m.childNodes[h];while(p=++h&&p&&p[g]||(f=h=0)||d.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[w,h,f];break}}else if(x&&(l=(t[v]||(t[v]={}))[e])&&l[0]===w)f=l[1];else while(p=++h&&p&&p[g]||(f=h=0)||d.pop())if((a?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(x&&((p[v]||(p[v]={}))[e]=[w,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||ot.error("unsupported pseudo: "+e);return r[v]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?ut(function(e,n){var i,o=r(e,t),s=o.length;while(s--)i=P.call(e,o[s]),e[i]=!(n[i]=o[s])}):function(e){return r(e,0,n)}):r}},pseudos:{not:ut(function(e){var t=[],n=[],r=a(e.replace(z,"$1"));return r[v]?ut(function(e,t,n,i){var o,s=r(e,null,i,[]),a=e.length;while(a--)(o=s[a])&&(e[a]=!(t[a]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:ut(function(e){return function(t){return ot(e,t).length>0}}),contains:ut(function(e){return function(t){return(t.textContent||t.innerText||o(t)).indexOf(e)>-1}}),lang:ut(function(e){return G.test(e||"")||ot.error("unsupported lang: "+e),e=e.replace(nt,rt).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===f},focus:function(e){return e===p.activeElement&&(!p.hasFocus||p.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!i.pseudos.empty(e)},header:function(e){return et.test(e.nodeName)},input:function(e){return Z.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:yt(function(){return[0]}),last:yt(function(e,t){return[t-1]}),eq:yt(function(e,t,n){return[0>n?n+t:n]}),even:yt(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:yt(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:yt(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:yt(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}};for(t in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})i.pseudos[t]=gt(t);for(t in{submit:!0,reset:!0})i.pseudos[t]=mt(t);function vt(e,t){var n,r,o,s,a,u,l,c=k[e+" "];if(c)return t?0:c.slice(0);a=e,u=[],l=i.preFilter;while(a){(!n||(r=_.exec(a)))&&(r&&(a=a.slice(r[0].length)||a),u.push(o=[])),n=!1,(r=X.exec(a))&&(n=r.shift(),o.push({value:n,type:r[0].replace(z," ")}),a=a.slice(n.length));for(s in i.filter)!(r=J[s].exec(a))||l[s]&&!(r=l[s](r))||(n=r.shift(),o.push({value:n,type:s,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?ot.error(e):k(e,u).slice(0)}function xt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function bt(e,t,n){var i=t.dir,o=n&&"parentNode"===i,s=T++;return t.first?function(t,n,r){while(t=t[i])if(1===t.nodeType||o)return e(t,n,r)}:function(t,n,a){var u,l,c,p=w+" "+s;if(a){while(t=t[i])if((1===t.nodeType||o)&&e(t,n,a))return!0}else while(t=t[i])if(1===t.nodeType||o)if(c=t[v]||(t[v]={}),(l=c[i])&&l[0]===p){if((u=l[1])===!0||u===r)return u===!0}else if(l=c[i]=[p],l[1]=e(t,n,a)||r,l[1]===!0)return!0}}function wt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function Tt(e,t,n,r,i){var o,s=[],a=0,u=e.length,l=null!=t;for(;u>a;a++)(o=e[a])&&(!n||n(o,r,i))&&(s.push(o),l&&t.push(a));return s}function Ct(e,t,n,r,i,o){return r&&!r[v]&&(r=Ct(r)),i&&!i[v]&&(i=Ct(i,o)),ut(function(o,s,a,u){var l,c,p,f=[],h=[],d=s.length,g=o||Et(t||"*",a.nodeType?[a]:a,[]),m=!e||!o&&t?g:Tt(g,f,e,a,u),y=n?i||(o?e:d||r)?[]:s:m;if(n&&n(m,y,a,u),r){l=Tt(y,h),r(l,[],a,u),c=l.length;while(c--)(p=l[c])&&(y[h[c]]=!(m[h[c]]=p))}if(o){if(i||e){if(i){l=[],c=y.length;while(c--)(p=y[c])&&l.push(m[c]=p);i(null,y=[],l,u)}c=y.length;while(c--)(p=y[c])&&(l=i?P.call(o,p):f[c])>-1&&(o[l]=!(s[l]=p))}}else y=Tt(y===s?y.splice(d,y.length):y),i?i(null,s,y,u):O.apply(s,y)})}function kt(e){var t,n,r,o=e.length,s=i.relative[e[0].type],a=s||i.relative[" "],l=s?1:0,c=bt(function(e){return e===t},a,!0),p=bt(function(e){return P.call(t,e)>-1},a,!0),f=[function(e,n,r){return!s&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;o>l;l++)if(n=i.relative[e[l].type])f=[bt(wt(f),n)];else{if(n=i.filter[e[l].type].apply(null,e[l].matches),n[v]){for(r=++l;o>r;r++)if(i.relative[e[r].type])break;return Ct(l>1&&wt(f),l>1&&xt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&kt(e.slice(l,r)),o>r&&kt(e=e.slice(r)),o>r&&xt(e))}f.push(n)}return wt(f)}function Nt(e,t){var n=0,o=t.length>0,s=e.length>0,a=function(a,l,c,f,h){var d,g,m,y=[],v=0,x="0",b=a&&[],T=null!=h,C=u,k=a||s&&i.find.TAG("*",h&&l.parentNode||l),N=w+=null==C?1:Math.random()||.1;for(T&&(u=l!==p&&l,r=n);null!=(d=k[x]);x++){if(s&&d){g=0;while(m=e[g++])if(m(d,l,c)){f.push(d);break}T&&(w=N,r=++n)}o&&((d=!m&&d)&&v--,a&&b.push(d))}if(v+=x,o&&x!==v){g=0;while(m=t[g++])m(b,y,l,c);if(a){if(v>0)while(x--)b[x]||y[x]||(y[x]=H.call(f));y=Tt(y)}O.apply(f,y),T&&!a&&y.length>0&&v+t.length>1&&ot.uniqueSort(f)}return T&&(w=N,u=C),b};return o?ut(a):a}a=ot.compile=function(e,t){var n,r=[],i=[],o=N[e+" "];if(!o){t||(t=vt(e)),n=t.length;while(n--)o=kt(t[n]),o[v]?r.push(o):i.push(o);o=N(e,Nt(i,r))}return o};function Et(e,t,n){var r=0,i=t.length;for(;i>r;r++)ot(e,t[r],n);return n}function St(e,t,r,o){var s,u,l,c,p,f=vt(e);if(!o&&1===f.length){if(u=f[0]=f[0].slice(0),u.length>2&&"ID"===(l=u[0]).type&&n.getById&&9===t.nodeType&&h&&i.relative[u[1].type]){if(t=(i.find.ID(l.matches[0].replace(nt,rt),t)||[])[0],!t)return r;e=e.slice(u.shift().value.length)}s=J.needsContext.test(e)?0:u.length;while(s--){if(l=u[s],i.relative[c=l.type])break;if((p=i.find[c])&&(o=p(l.matches[0].replace(nt,rt),U.test(u[0].type)&&t.parentNode||t))){if(u.splice(s,1),e=o.length&&xt(u),!e)return O.apply(r,o),r;break}}}return a(e,f)(o,t,!h,r,U.test(e)),r}i.pseudos.nth=i.pseudos.eq;function jt(){}jt.prototype=i.filters=i.pseudos,i.setFilters=new jt,n.sortStable=v.split("").sort(S).join("")===v,c(),[0,0].sort(S),n.detectDuplicates=E,x.find=ot,x.expr=ot.selectors,x.expr[":"]=x.expr.pseudos,x.unique=ot.uniqueSort,x.text=ot.getText,x.isXMLDoc=ot.isXML,x.contains=ot.contains}(e);var D={};function A(e){var t=D[e]={};return x.each(e.match(w)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?D[e]||A(e):x.extend({},e);var t,n,r,i,o,s,a=[],u=!e.once&&[],l=function(p){for(t=e.memory&&p,n=!0,s=i||0,i=0,o=a.length,r=!0;a&&o>s;s++)if(a[s].apply(p[0],p[1])===!1&&e.stopOnFalse){t=!1;break}r=!1,a&&(u?u.length&&l(u.shift()):t?a=[]:c.disable())},c={add:function(){if(a){var n=a.length;(function s(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&c.has(n)||a.push(n):n&&n.length&&"string"!==r&&s(n)})})(arguments),r?o=a.length:t&&(i=n,l(t))}return this},remove:function(){return a&&x.each(arguments,function(e,t){var n;while((n=x.inArray(t,a,n))>-1)a.splice(n,1),r&&(o>=n&&o--,s>=n&&s--)}),this},has:function(e){return e?x.inArray(e,a)>-1:!(!a||!a.length)},empty:function(){return a=[],o=0,this},disable:function(){return a=u=t=undefined,this},disabled:function(){return!a},lock:function(){return u=undefined,t||c.disable(),this},locked:function(){return!u},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],!a||n&&!u||(r?u.push(t):l(t)),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!n}};return c},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var s=o[0],a=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=a&&a.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[s+"With"](this===r?n.promise():this,a?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var s=o[2],a=o[3];r[o[1]]=s.add,a&&s.add(function(){n=a},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=s.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=d.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),s=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?d.call(arguments):r,n===a?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},a,u,l;if(r>1)for(a=Array(r),u=Array(r),l=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(s(t,l,n)).fail(o.reject).progress(s(t,u,a)):--i;return i||o.resolveWith(l,n),o.promise()}}),x.support=function(t){var n=o.createElement("input"),r=o.createDocumentFragment(),i=o.createElement("div"),s=o.createElement("select"),a=s.appendChild(o.createElement("option"));return n.type?(n.type="checkbox",t.checkOn=""!==n.value,t.optSelected=a.selected,t.reliableMarginRight=!0,t.boxSizingReliable=!0,t.pixelPosition=!1,n.checked=!0,t.noCloneChecked=n.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!a.disabled,n=o.createElement("input"),n.value="t",n.type="radio",t.radioValue="t"===n.value,n.setAttribute("checked","t"),n.setAttribute("name","t"),r.appendChild(n),t.checkClone=r.cloneNode(!0).cloneNode(!0).lastChild.checked,t.focusinBubbles="onfocusin"in e,i.style.backgroundClip="content-box",i.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===i.style.backgroundClip,x(function(){var n,r,s="padding:0;margin:0;border:0;display:block;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box",a=o.getElementsByTagName("body")[0];a&&(n=o.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",a.appendChild(n).appendChild(i),i.innerHTML="",i.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%",x.swap(a,null!=a.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===i.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(i,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(i,null)||{width:"4px"}).width,r=i.appendChild(o.createElement("div")),r.style.cssText=i.style.cssText=s,r.style.marginRight=r.style.width="0",i.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),a.removeChild(n))}),t):t}({});var L,H,q=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,O=/([A-Z])/g;function F(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=x.expando+Math.random()}F.uid=1,F.accepts=function(e){return e.nodeType?1===e.nodeType||9===e.nodeType:!0},F.prototype={key:function(e){if(!F.accepts(e))return 0;var t={},n=e[this.expando];if(!n){n=F.uid++;try{t[this.expando]={value:n},Object.defineProperties(e,t)}catch(r){t[this.expando]=n,x.extend(e,t)}}return this.cache[n]||(this.cache[n]={}),n},set:function(e,t,n){var r,i=this.key(e),o=this.cache[i];if("string"==typeof t)o[t]=n;else if(x.isEmptyObject(o))x.extend(this.cache[i],t);else for(r in t)o[r]=t[r];return o},get:function(e,t){var n=this.cache[this.key(e)];return t===undefined?n:n[t]},access:function(e,t,n){return t===undefined||t&&"string"==typeof t&&n===undefined?this.get(e,t):(this.set(e,t,n),n!==undefined?n:t)},remove:function(e,t){var n,r,i,o=this.key(e),s=this.cache[o];if(t===undefined)this.cache[o]={};else{x.isArray(t)?r=t.concat(t.map(x.camelCase)):(i=x.camelCase(t),t in s?r=[t,i]:(r=i,r=r in s?[r]:r.match(w)||[])),n=r.length;while(n--)delete s[r[n]]}},hasData:function(e){return!x.isEmptyObject(this.cache[e[this.expando]]||{})},discard:function(e){e[this.expando]&&delete this.cache[e[this.expando]]}},L=new F,H=new F,x.extend({acceptData:F.accepts,hasData:function(e){return L.hasData(e)||H.hasData(e)},data:function(e,t,n){return L.access(e,t,n)},removeData:function(e,t){L.remove(e,t)},_data:function(e,t,n){return H.access(e,t,n)},_removeData:function(e,t){H.remove(e,t)}}),x.fn.extend({data:function(e,t){var n,r,i=this[0],o=0,s=null;if(e===undefined){if(this.length&&(s=L.get(i),1===i.nodeType&&!H.get(i,"hasDataAttrs"))){for(n=i.attributes;n.length>o;o++)r=n[o].name,0===r.indexOf("data-")&&(r=x.camelCase(r.slice(5)),P(i,r,s[r]));H.set(i,"hasDataAttrs",!0)}return s}return"object"==typeof e?this.each(function(){L.set(this,e)}):x.access(this,function(t){var n,r=x.camelCase(e);if(i&&t===undefined){if(n=L.get(i,e),n!==undefined)return n;if(n=L.get(i,r),n!==undefined)return n;if(n=P(i,r,undefined),n!==undefined)return n}else this.each(function(){var n=L.get(this,r);L.set(this,r,t),-1!==e.indexOf("-")&&n!==undefined&&L.set(this,e,t)})},null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){L.remove(this,e)})}});function P(e,t,n){var r;if(n===undefined&&1===e.nodeType)if(r="data-"+t.replace(O,"-$1").toLowerCase(),n=e.getAttribute(r),"string"==typeof n){try{n="true"===n?!0:"false"===n?!1:"null"===n?null:+n+""===n?+n:q.test(n)?JSON.parse(n):n}catch(i){}L.set(e,t,n)}else n=undefined;return n}x.extend({queue:function(e,t,n){var r;return e?(t=(t||"fx")+"queue",r=H.get(e,t),n&&(!r||x.isArray(n)?r=H.access(e,t,x.makeArray(n)):r.push(n)),r||[]):undefined},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),s=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,s,o)),!r&&o&&o.empty.fire() -},_queueHooks:function(e,t){var n=t+"queueHooks";return H.get(e,n)||H.access(e,n,{empty:x.Callbacks("once memory").add(function(){H.remove(e,[t+"queue",n])})})}}),x.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),n>arguments.length?x.queue(this[0],e):t===undefined?this:this.each(function(){var n=x.queue(this,e,t);x._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=x.Deferred(),o=this,s=this.length,a=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=undefined),e=e||"fx";while(s--)n=H.get(o[s],e+"queueHooks"),n&&n.empty&&(r++,n.empty.add(a));return a(),i.promise(t)}});var R,M,W=/[\t\r\n\f]/g,$=/\r/g,B=/^(?:input|select|textarea|button)$/i;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[x.propFix[e]||e]})},addClass:function(e){var t,n,r,i,o,s=0,a=this.length,u="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];a>s;s++)if(n=this[s],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(W," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,s=0,a=this.length,u=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];a>s;s++)if(n=this[s],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(W," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e,i="boolean"==typeof t;return x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var o,s=0,a=x(this),u=t,l=e.match(w)||[];while(o=l[s++])u=i?u:!a.hasClass(o),a[u?"addClass":"removeClass"](o)}else(n===r||"boolean"===n)&&(this.className&&H.set(this,"__className__",this.className),this.className=this.className||e===!1?"":H.get(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(W," ").indexOf(t)>=0)return!0;return!1},val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=x.isFunction(e),this.each(function(n){var i;1===this.nodeType&&(i=r?e.call(this,n,x(this).val()):e,null==i?i="":"number"==typeof i?i+="":x.isArray(i)&&(i=x.map(i,function(e){return null==e?"":e+""})),t=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],t&&"set"in t&&t.set(this,i,"value")!==undefined||(this.value=i))});if(i)return t=x.valHooks[i.type]||x.valHooks[i.nodeName.toLowerCase()],t&&"get"in t&&(n=t.get(i,"value"))!==undefined?n:(n=i.value,"string"==typeof n?n.replace($,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,s=o?null:[],a=o?i+1:r.length,u=0>i?a:o?i:0;for(;a>u;u++)if(n=r[u],!(!n.selected&&u!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),s=i.length;while(s--)r=i[s],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,t,n){var i,o,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===r?x.prop(e,t,n):(1===s&&x.isXMLDoc(e)||(t=t.toLowerCase(),i=x.attrHooks[t]||(x.expr.match.bool.test(t)?M:R)),n===undefined?i&&"get"in i&&null!==(o=i.get(e,t))?o:(o=x.find.attr(e,t),null==o?undefined:o):null!==n?i&&"set"in i&&(o=i.set(e,n,t))!==undefined?o:(e.setAttribute(t,n+""),n):(x.removeAttr(e,t),undefined))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(w);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)&&(e[r]=!1),e.removeAttribute(n)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,t,n){var r,i,o,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return o=1!==s||!x.isXMLDoc(e),o&&(t=x.propFix[t]||t,i=x.propHooks[t]),n!==undefined?i&&"set"in i&&(r=i.set(e,n,t))!==undefined?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){return e.hasAttribute("tabindex")||B.test(e.nodeName)||e.href?e.tabIndex:-1}}}}),M={set:function(e,t,n){return t===!1?x.removeAttr(e,n):e.setAttribute(n,n),n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,t){var n=x.expr.attrHandle[t]||x.find.attr;x.expr.attrHandle[t]=function(e,t,r){var i=x.expr.attrHandle[t],o=r?undefined:(x.expr.attrHandle[t]=undefined)!=n(e,t,r)?t.toLowerCase():null;return x.expr.attrHandle[t]=i,o}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,t){return x.isArray(t)?e.checked=x.inArray(x(e).val(),t)>=0:undefined}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var I=/^key/,z=/^(?:mouse|contextmenu)|click/,_=/^(?:focusinfocus|focusoutblur)$/,X=/^([^.]*)(?:\.(.+)|)$/;function U(){return!0}function Y(){return!1}function V(){try{return o.activeElement}catch(e){}}x.event={global:{},add:function(e,t,n,i,o){var s,a,u,l,c,p,f,h,d,g,m,y=H.get(e);if(y){n.handler&&(s=n,n=s.handler,o=s.selector),n.guid||(n.guid=x.guid++),(l=y.events)||(l=y.events={}),(a=y.handle)||(a=y.handle=function(e){return typeof x===r||e&&x.event.triggered===e.type?undefined:x.event.dispatch.apply(a.elem,arguments)},a.elem=e),t=(t||"").match(w)||[""],c=t.length;while(c--)u=X.exec(t[c])||[],d=m=u[1],g=(u[2]||"").split(".").sort(),d&&(f=x.event.special[d]||{},d=(o?f.delegateType:f.bindType)||d,f=x.event.special[d]||{},p=x.extend({type:d,origType:m,data:i,handler:n,guid:n.guid,selector:o,needsContext:o&&x.expr.match.needsContext.test(o),namespace:g.join(".")},s),(h=l[d])||(h=l[d]=[],h.delegateCount=0,f.setup&&f.setup.call(e,i,g,a)!==!1||e.addEventListener&&e.addEventListener(d,a,!1)),f.add&&(f.add.call(e,p),p.handler.guid||(p.handler.guid=n.guid)),o?h.splice(h.delegateCount++,0,p):h.push(p),x.event.global[d]=!0);e=null}},remove:function(e,t,n,r,i){var o,s,a,u,l,c,p,f,h,d,g,m=H.hasData(e)&&H.get(e);if(m&&(u=m.events)){t=(t||"").match(w)||[""],l=t.length;while(l--)if(a=X.exec(t[l])||[],h=g=a[1],d=(a[2]||"").split(".").sort(),h){p=x.event.special[h]||{},h=(r?p.delegateType:p.bindType)||h,f=u[h]||[],a=a[2]&&RegExp("(^|\\.)"+d.join("\\.(?:.*\\.|)")+"(\\.|$)"),s=o=f.length;while(o--)c=f[o],!i&&g!==c.origType||n&&n.guid!==c.guid||a&&!a.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(f.splice(o,1),c.selector&&f.delegateCount--,p.remove&&p.remove.call(e,c));s&&!f.length&&(p.teardown&&p.teardown.call(e,d,m.handle)!==!1||x.removeEvent(e,h,m.handle),delete u[h])}else for(h in u)x.event.remove(e,h+t[l],n,r,!0);x.isEmptyObject(u)&&(delete m.handle,H.remove(e,"events"))}},trigger:function(t,n,r,i){var s,a,u,l,c,p,f,h=[r||o],d=y.call(t,"type")?t.type:t,g=y.call(t,"namespace")?t.namespace.split("."):[];if(a=u=r=r||o,3!==r.nodeType&&8!==r.nodeType&&!_.test(d+x.event.triggered)&&(d.indexOf(".")>=0&&(g=d.split("."),d=g.shift(),g.sort()),c=0>d.indexOf(":")&&"on"+d,t=t[x.expando]?t:new x.Event(d,"object"==typeof t&&t),t.isTrigger=i?2:3,t.namespace=g.join("."),t.namespace_re=t.namespace?RegExp("(^|\\.)"+g.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=undefined,t.target||(t.target=r),n=null==n?[t]:x.makeArray(n,[t]),f=x.event.special[d]||{},i||!f.trigger||f.trigger.apply(r,n)!==!1)){if(!i&&!f.noBubble&&!x.isWindow(r)){for(l=f.delegateType||d,_.test(l+d)||(a=a.parentNode);a;a=a.parentNode)h.push(a),u=a;u===(r.ownerDocument||o)&&h.push(u.defaultView||u.parentWindow||e)}s=0;while((a=h[s++])&&!t.isPropagationStopped())t.type=s>1?l:f.bindType||d,p=(H.get(a,"events")||{})[t.type]&&H.get(a,"handle"),p&&p.apply(a,n),p=c&&a[c],p&&x.acceptData(a)&&p.apply&&p.apply(a,n)===!1&&t.preventDefault();return t.type=d,i||t.isDefaultPrevented()||f._default&&f._default.apply(h.pop(),n)!==!1||!x.acceptData(r)||c&&x.isFunction(r[d])&&!x.isWindow(r)&&(u=r[c],u&&(r[c]=null),x.event.triggered=d,r[d](),x.event.triggered=undefined,u&&(r[c]=u)),t.result}},dispatch:function(e){e=x.event.fix(e);var t,n,r,i,o,s=[],a=d.call(arguments),u=(H.get(this,"events")||{})[e.type]||[],l=x.event.special[e.type]||{};if(a[0]=e,e.delegateTarget=this,!l.preDispatch||l.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),t=0;while((i=s[t++])&&!e.isPropagationStopped()){e.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(o.namespace))&&(e.handleObj=o,e.data=o.data,r=((x.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,a),r!==undefined&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return l.postDispatch&&l.postDispatch.call(this,e),e.result}},handlers:function(e,t){var n,r,i,o,s=[],a=t.delegateCount,u=e.target;if(a&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!==this;u=u.parentNode||this)if(u.disabled!==!0||"click"!==e.type){for(r=[],n=0;a>n;n++)o=t[n],i=o.selector+" ",r[i]===undefined&&(r[i]=o.needsContext?x(i,this).index(u)>=0:x.find(i,this,null,[u]).length),r[i]&&r.push(o);r.length&&s.push({elem:u,handlers:r})}return t.length>a&&s.push({elem:this,handlers:t.slice(a)}),s},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,t){var n,r,i,s=t.button;return null==e.pageX&&null!=t.clientX&&(n=e.target.ownerDocument||o,r=n.documentElement,i=n.body,e.pageX=t.clientX+(r&&r.scrollLeft||i&&i.scrollLeft||0)-(r&&r.clientLeft||i&&i.clientLeft||0),e.pageY=t.clientY+(r&&r.scrollTop||i&&i.scrollTop||0)-(r&&r.clientTop||i&&i.clientTop||0)),e.which||s===undefined||(e.which=1&s?1:2&s?3:4&s?2:0),e}},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,s=e,a=this.fixHooks[i];a||(this.fixHooks[i]=a=z.test(i)?this.mouseHooks:I.test(i)?this.keyHooks:{}),r=a.props?this.props.concat(a.props):this.props,e=new x.Event(s),t=r.length;while(t--)n=r[t],e[n]=s[n];return e.target||(e.target=o),3===e.target.nodeType&&(e.target=e.target.parentNode),a.filter?a.filter(e,s):e},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==V()&&this.focus?(this.focus(),!1):undefined},delegateType:"focusin"},blur:{trigger:function(){return this===V()&&this.blur?(this.blur(),!1):undefined},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&x.nodeName(this,"input")?(this.click(),!1):undefined},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==undefined&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)},x.Event=function(e,t){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.getPreventDefault&&e.getPreventDefault()?U:Y):this.type=e,t&&x.extend(this,t),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,undefined):new x.Event(e,t)},x.Event.prototype={isDefaultPrevented:Y,isPropagationStopped:Y,isImmediatePropagationStopped:Y,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=U,e&&e.preventDefault&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=U,e&&e.stopPropagation&&e.stopPropagation()},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=U,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&o.addEventListener(e,r,!0)},teardown:function(){0===--n&&o.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,t,n,r,i){var o,s;if("object"==typeof e){"string"!=typeof t&&(n=n||t,t=undefined);for(s in e)this.on(s,t,n,e[s],i);return this}if(null==n&&null==r?(r=t,n=t=undefined):null==r&&("string"==typeof t?(r=n,n=undefined):(r=n,n=t,t=undefined)),r===!1)r=Y;else if(!r)return this;return 1===i&&(o=r,r=function(e){return x().off(e),o.apply(this,arguments)},r.guid=o.guid||(o.guid=x.guid++)),this.each(function(){x.event.add(this,e,r,n,t)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,x(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return(t===!1||"function"==typeof t)&&(n=t,t=undefined),n===!1&&(n=Y),this.each(function(){x.event.remove(this,e,n,t)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];return n?x.event.trigger(e,t,n,!0):undefined}});var G=/^.[^:#\[\.,]*$/,J=/^(?:parents|prev(?:Until|All))/,Q=x.expr.match.needsContext,K={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t=x(e,this),n=t.length;return this.filter(function(){var e=0;for(;n>e;e++)if(x.contains(this,t[e]))return!0})},not:function(e){return this.pushStack(et(this,e||[],!0))},filter:function(e){return this.pushStack(et(this,e||[],!1))},is:function(e){return!!et(this,"string"==typeof e&&Q.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],s=Q.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(s?s.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?g.call(x(e),this[0]):g.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function Z(e,t){while((e=e[t])&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return Z(e,"nextSibling")},prev:function(e){return Z(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return e.contentDocument||x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(K[e]||x.unique(i),J.test(e)&&i.reverse()),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,t,n){var r=[],i=n!==undefined;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&x(e).is(n))break;r.push(e)}return r},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function et(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(G.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return g.call(t,e)>=0!==n})}var tt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,nt=/<([\w:]+)/,rt=/<|&#?\w+;/,it=/<(?:script|style|link)/i,ot=/^(?:checkbox|radio)$/i,st=/checked\s*(?:[^=]|=\s*.checked.)/i,at=/^$|\/(?:java|ecma)script/i,ut=/^true\/(.*)/,lt=/^\s*\s*$/g,ct={option:[1,""],thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};ct.optgroup=ct.option,ct.tbody=ct.tfoot=ct.colgroup=ct.caption=ct.thead,ct.th=ct.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===undefined?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||o).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=pt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=pt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(mt(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&dt(mt(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++)1===e.nodeType&&(x.cleanData(mt(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var t=this[0]||{},n=0,r=this.length;if(e===undefined&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!it.test(e)&&!ct[(nt.exec(e)||["",""])[1].toLowerCase()]){e=e.replace(tt,"<$1>");try{for(;r>n;n++)t=this[n]||{},1===t.nodeType&&(x.cleanData(mt(t,!1)),t.innerHTML=e);t=0}catch(i){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=f.apply([],e);var r,i,o,s,a,u,l=0,c=this.length,p=this,h=c-1,d=e[0],g=x.isFunction(d);if(g||!(1>=c||"string"!=typeof d||x.support.checkClone)&&st.test(d))return this.each(function(r){var i=p.eq(r);g&&(e[0]=d.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(r=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),i=r.firstChild,1===r.childNodes.length&&(r=i),i)){for(o=x.map(mt(r,"script"),ft),s=o.length;c>l;l++)a=r,l!==h&&(a=x.clone(a,!0,!0),s&&x.merge(o,mt(a,"script"))),t.call(this[l],a,l);if(s)for(u=o[o.length-1].ownerDocument,x.map(o,ht),l=0;s>l;l++)a=o[l],at.test(a.type||"")&&!H.access(a,"globalEval")&&x.contains(u,a)&&(a.src?x._evalUrl(a.src):x.globalEval(a.textContent.replace(lt,"")))}return this}}),x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=[],i=x(e),o=i.length-1,s=0;for(;o>=s;s++)n=s===o?this:this.clone(!0),x(i[s])[t](n),h.apply(r,n.get());return this.pushStack(r)}}),x.extend({clone:function(e,t,n){var r,i,o,s,a=e.cloneNode(!0),u=x.contains(e.ownerDocument,e);if(!(x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(s=mt(a),o=mt(e),r=0,i=o.length;i>r;r++)yt(o[r],s[r]);if(t)if(n)for(o=o||mt(e),s=s||mt(a),r=0,i=o.length;i>r;r++)gt(o[r],s[r]);else gt(e,a);return s=mt(a,"script"),s.length>0&&dt(s,!u&&mt(e,"script")),a},buildFragment:function(e,t,n,r){var i,o,s,a,u,l,c=0,p=e.length,f=t.createDocumentFragment(),h=[];for(;p>c;c++)if(i=e[c],i||0===i)if("object"===x.type(i))x.merge(h,i.nodeType?[i]:i);else if(rt.test(i)){o=o||f.appendChild(t.createElement("div")),s=(nt.exec(i)||["",""])[1].toLowerCase(),a=ct[s]||ct._default,o.innerHTML=a[1]+i.replace(tt,"<$1>")+a[2],l=a[0];while(l--)o=o.firstChild;x.merge(h,o.childNodes),o=f.firstChild,o.textContent=""}else h.push(t.createTextNode(i));f.textContent="",c=0;while(i=h[c++])if((!r||-1===x.inArray(i,r))&&(u=x.contains(i.ownerDocument,i),o=mt(f.appendChild(i),"script"),u&&dt(o),n)){l=0;while(i=o[l++])at.test(i.type||"")&&n.push(i)}return f},cleanData:function(e){var t,n,r,i,o,s,a=x.event.special,u=0;for(;(n=e[u])!==undefined;u++){if(F.accepts(n)&&(o=n[H.expando],o&&(t=H.cache[o]))){if(r=Object.keys(t.events||{}),r.length)for(s=0;(i=r[s])!==undefined;s++)a[i]?x.event.remove(n,i):x.removeEvent(n,i,t.handle);H.cache[o]&&delete H.cache[o]}delete L.cache[n[L.expando]]}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}});function pt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function ft(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function ht(e){var t=ut.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function dt(e,t){var n=e.length,r=0;for(;n>r;r++)H.set(e[r],"globalEval",!t||H.get(t[r],"globalEval"))}function gt(e,t){var n,r,i,o,s,a,u,l;if(1===t.nodeType){if(H.hasData(e)&&(o=H.access(e),s=H.set(t,o),l=o.events)){delete s.handle,s.events={};for(i in l)for(n=0,r=l[i].length;r>n;n++)x.event.add(t,i,l[i][n])}L.hasData(e)&&(a=L.access(e),u=x.extend({},a),L.set(t,u))}}function mt(e,t){var n=e.getElementsByTagName?e.getElementsByTagName(t||"*"):e.querySelectorAll?e.querySelectorAll(t||"*"):[];return t===undefined||t&&x.nodeName(e,t)?x.merge([e],n):n}function yt(e,t){var n=t.nodeName.toLowerCase();"input"===n&&ot.test(e.type)?t.checked=e.checked:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}x.fn.extend({wrapAll:function(e){var t;return x.isFunction(e)?this.each(function(t){x(this).wrapAll(e.call(this,t))}):(this[0]&&(t=x(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this)},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var vt,xt,bt=/^(none|table(?!-c[ea]).+)/,wt=/^margin/,Tt=RegExp("^("+b+")(.*)$","i"),Ct=RegExp("^("+b+")(?!px)[a-z%]+$","i"),kt=RegExp("^([+-])=("+b+")","i"),Nt={BODY:"block"},Et={position:"absolute",visibility:"hidden",display:"block"},St={letterSpacing:0,fontWeight:400},jt=["Top","Right","Bottom","Left"],Dt=["Webkit","O","Moz","ms"];function At(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=Dt.length;while(i--)if(t=Dt[i]+n,t in e)return t;return r}function Lt(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function Ht(t){return e.getComputedStyle(t,null)}function qt(e,t){var n,r,i,o=[],s=0,a=e.length;for(;a>s;s++)r=e[s],r.style&&(o[s]=H.get(r,"olddisplay"),n=r.style.display,t?(o[s]||"none"!==n||(r.style.display=""),""===r.style.display&&Lt(r)&&(o[s]=H.access(r,"olddisplay",Rt(r.nodeName)))):o[s]||(i=Lt(r),(n&&"none"!==n||!i)&&H.set(r,"olddisplay",i?n:x.css(r,"display"))));for(s=0;a>s;s++)r=e[s],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[s]||"":"none"));return e}x.fn.extend({css:function(e,t){return x.access(this,function(e,t,n){var r,i,o={},s=0;if(x.isArray(t)){for(r=Ht(e),i=t.length;i>s;s++)o[t[s]]=x.css(e,t[s],!1,r);return o}return n!==undefined?x.style(e,t,n):x.css(e,t)},e,t,arguments.length>1)},show:function(){return qt(this,!0)},hide:function(){return qt(this)},toggle:function(e){var t="boolean"==typeof e;return this.each(function(){(t?e:Lt(this))?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=vt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,s,a=x.camelCase(t),u=e.style;return t=x.cssProps[a]||(x.cssProps[a]=At(u,a)),s=x.cssHooks[t]||x.cssHooks[a],n===undefined?s&&"get"in s&&(i=s.get(e,!1,r))!==undefined?i:u[t]:(o=typeof n,"string"===o&&(i=kt.exec(n))&&(n=(i[1]+1)*i[2]+parseFloat(x.css(e,t)),o="number"),null==n||"number"===o&&isNaN(n)||("number"!==o||x.cssNumber[a]||(n+="px"),x.support.clearCloneStyle||""!==n||0!==t.indexOf("background")||(u[t]="inherit"),s&&"set"in s&&(n=s.set(e,n,r))===undefined||(u[t]=n)),undefined)}},css:function(e,t,n,r){var i,o,s,a=x.camelCase(t);return t=x.cssProps[a]||(x.cssProps[a]=At(e.style,a)),s=x.cssHooks[t]||x.cssHooks[a],s&&"get"in s&&(i=s.get(e,!0,n)),i===undefined&&(i=vt(e,t,r)),"normal"===i&&t in St&&(i=St[t]),""===n||n?(o=parseFloat(i),n===!0||x.isNumeric(o)?o||0:i):i}}),vt=function(e,t,n){var r,i,o,s=n||Ht(e),a=s?s.getPropertyValue(t)||s[t]:undefined,u=e.style;return s&&(""!==a||x.contains(e.ownerDocument,e)||(a=x.style(e,t)),Ct.test(a)&&wt.test(t)&&(r=u.width,i=u.minWidth,o=u.maxWidth,u.minWidth=u.maxWidth=u.width=a,a=s.width,u.width=r,u.minWidth=i,u.maxWidth=o)),a};function Ot(e,t,n){var r=Tt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function Ft(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,s=0;for(;4>o;o+=2)"margin"===n&&(s+=x.css(e,n+jt[o],!0,i)),r?("content"===n&&(s-=x.css(e,"padding"+jt[o],!0,i)),"margin"!==n&&(s-=x.css(e,"border"+jt[o]+"Width",!0,i))):(s+=x.css(e,"padding"+jt[o],!0,i),"padding"!==n&&(s+=x.css(e,"border"+jt[o]+"Width",!0,i)));return s}function Pt(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Ht(e),s=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=vt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Ct.test(i))return i;r=s&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+Ft(e,t,n||(s?"border":"content"),r,o)+"px"}function Rt(e){var t=o,n=Nt[e];return n||(n=Mt(e,t),"none"!==n&&n||(xt=(xt||x("")!==-1},r=function(e){return{type:"fragmented",fragments:e,content:"",bookmark:null,beforeBookmark:null}},i=function(e){return{type:"complete",fragments:null,content:e,bookmark:null,beforeBookmark:null}},o=function(o){var a,s,l;return a=t.read(o.getBody()),l=e.map(a,function(e){return o.serializer.trimContent(e)}),s=l.join(""),n(s)?r(l):i(s)},a=function(e,n,r){"fragmented"===n.type?t.write(n.fragments,e.getBody()):e.setContent(n.content,{format:"raw"}),e.selection.moveToBookmark(r?n.beforeBookmark:n.bookmark)},s=function(e){return"fragmented"===e.type?e.fragments.join(""):e.content},l=function(e,t){return s(e)===s(t)};return{createFragmentedLevel:r,createCompleteLevel:i,createFromEditor:o,applyToEditor:a,isEq:l}}),r(te,[I,m,ee],function(e,t,n){return function(e){function r(t){e.setDirty(t)}function i(e){a.typing=!1,a.add({},e)}function o(){a.typing&&(a.typing=!1,a.add())}var a=this,s=0,l=[],u,c,d=0;return e.on("init",function(){a.add()}),e.on("BeforeExecCommand",function(e){var t=e.command;"Undo"!==t&&"Redo"!==t&&"mceRepaint"!==t&&(o(),a.beforeChange())}),e.on("ExecCommand",function(e){var t=e.command;"Undo"!==t&&"Redo"!==t&&"mceRepaint"!==t&&i(e)}),e.on("ObjectResizeStart Cut",function(){a.beforeChange()}),e.on("SaveContent ObjectResized blur",i),e.on("DragEnd",i),e.on("KeyUp",function(t){var o=t.keyCode;t.isDefaultPrevented()||((o>=33&&o<=36||o>=37&&o<=40||45===o||t.ctrlKey)&&(i(),e.nodeChanged()),46!==o&&8!==o||e.nodeChanged(),c&&a.typing&&(e.isDirty()||(r(l[0]&&!n.isEq(n.createFromEditor(e),l[0])),e.isDirty()&&e.fire("change",{level:l[0],lastLevel:null})),e.fire("TypingUndo"),c=!1,e.nodeChanged()))}),e.on("KeyDown",function(e){var t=e.keyCode;if(!e.isDefaultPrevented()){if(t>=33&&t<=36||t>=37&&t<=40||45===t)return void(a.typing&&i(e));var n=e.ctrlKey&&!e.altKey||e.metaKey;!(t<16||t>20)||224===t||91===t||a.typing||n||(a.beforeChange(),a.typing=!0,a.add({},e),c=!0)}}),e.on("MouseDown",function(e){a.typing&&i(e)}),e.addShortcut("meta+z","","Undo"),e.addShortcut("meta+y,meta+shift+z","","Redo"),e.on("AddUndo Undo Redo ClearUndos",function(t){t.isDefaultPrevented()||e.nodeChanged()}),a={data:l,typing:!1,beforeChange:function(){d||(u=e.selection.getBookmark(2,!0))},add:function(i,o){var a,c=e.settings,f,p;if(p=n.createFromEditor(e),i=i||{},i=t.extend(i,p),d||e.removed)return null;if(f=l[s],e.fire("BeforeAddUndo",{level:i,lastLevel:f,originalEvent:o}).isDefaultPrevented())return null;if(f&&n.isEq(f,i))return null;if(l[s]&&(l[s].beforeBookmark=u),c.custom_undo_redo_levels&&l.length>c.custom_undo_redo_levels){for(a=0;a0&&(r(!0),e.fire("change",h)),i},undo:function(){var t;return a.typing&&(a.add(),a.typing=!1),s>0&&(t=l[--s],n.applyToEditor(e,t,!0),r(!0),e.fire("undo",{level:t})),t},redo:function(){var t;return s0||a.typing&&l[0]&&!n.isEq(n.createFromEditor(e),l[0])},hasRedo:function(){return s'}function x(e){var t=L,n,r,o,a=d.getTextInlineElements();if(e||"TABLE"==U?(n=s.create(e||V),b(n)):n=P.cloneNode(!1),o=n,u.keep_styles!==!1)do if(a[t.nodeName]){if("_mce_caret"==t.id)continue;r=t.cloneNode(!1),s.setAttrib(r,"id",""),n.hasChildNodes()?(r.appendChild(n.firstChild),n.appendChild(r)):(o=r,n.appendChild(r))}while((t=t.parentNode)&&t!=D);return i||(o.innerHTML='
    '),n}function w(t){var n,r,i;if(3==L.nodeType&&(t?M>0:ML.childNodes.length-1,L=L.childNodes[Math.min(M,L.childNodes.length-1)]||L,M=$&&3==L.nodeType?L.nodeValue.length:0),D=k(L)){if(c.beforeChange(),!s.isBlock(D)&&D!=s.getRoot())return void(V&&!H||_());if((V&&!H||!V&&H)&&(L=E(L,M)),P=s.getParent(L,s.isBlock),z=P?s.getParent(P.parentNode,s.isBlock):null,U=P?P.nodeName.toUpperCase():"",W=z?z.nodeName.toUpperCase():"","LI"!=W||a.ctrlKey||(P=z,U=W),o.undoManager.typing&&(o.undoManager.typing=!1,o.undoManager.add()),/^(LI|DT|DD)$/.test(U)){if(!V&&H)return void _();if(s.isEmpty(P))return void N()}if("PRE"==U&&u.br_in_pre!==!1){if(!H)return void _()}else if(!V&&!H&&"LI"!=U||V&&H)return void _();V&&P===o.getBody()||(V=V||"P",n.isCaretContainerBlock(P)?(I=n.showCaretContainerBlock(P),s.isEmpty(P)&&C(P),y(I)):w()?R():w(!0)?(I=P.parentNode.insertBefore(x(),P),g(I),y(P)):(B=A.cloneRange(),B.setEndAfter(P),F=B.extractContents(),S(F),I=F.firstChild,s.insertAfter(F,P),v(I),T(P),s.isEmpty(P)&&C(P),I.normalize(),s.isEmpty(I)?(s.remove(I),R()):y(I)),s.setAttrib(I,"id",""),o.fire("NewBlock",{newBlock:I}),c.typing=!1,c.add())}}}var s=o.dom,l=o.selection,u=o.settings,c=o.undoManager,d=o.schema,f=d.getNonEmptyElements(),p=d.getMoveCaretBeforeOnEnterElements();o.on("keydown",function(e){13==e.keyCode&&a(e)!==!1&&e.preventDefault()})}}),r(re,[],function(){return function(e){function t(){var t=i.getStart(),s=e.getBody(),l,u,c,d,f,p,h,m=-16777215,g,v,y,b,C;if(C=n.forced_root_block,t&&1===t.nodeType&&C){for(;t&&t!=s;){if(a[t.nodeName])return;t=t.parentNode}if(l=i.getRng(),l.setStart){u=l.startContainer,c=l.startOffset,d=l.endContainer,f=l.endOffset;try{v=e.getDoc().activeElement===s}catch(x){}}else l.item&&(t=l.item(0),l=e.getDoc().body.createTextRange(),l.moveToElementText(t)),v=l.parentElement().ownerDocument===e.getDoc(),y=l.duplicate(),y.collapse(!0),c=y.move("character",m)*-1,y.collapsed||(y=l.duplicate(),y.collapse(!1),f=y.move("character",m)*-1-c);for(t=s.firstChild,b=s.nodeName.toLowerCase();t;)if((3===t.nodeType||1==t.nodeType&&!a[t.nodeName])&&o.isValidChild(b,C.toLowerCase())){if(3===t.nodeType&&0===t.nodeValue.length){h=t,t=t.nextSibling,r.remove(h);continue}p||(p=r.create(C,e.settings.forced_root_block_attrs),t.parentNode.insertBefore(p,t), -g=!0),h=t,t=t.nextSibling,p.appendChild(h)}else p=null,t=t.nextSibling;if(g&&v){if(l.setStart)l.setStart(u,c),l.setEnd(d,f),i.setRng(l);else try{l=e.getDoc().body.createTextRange(),l.moveToElementText(s),l.collapse(!0),l.moveStart("character",c),f>0&&l.moveEnd("character",f),l.select()}catch(x){}e.nodeChanged()}}}var n=e.settings,r=e.dom,i=e.selection,o=e.schema,a=o.getBlockElements();n.forced_root_block&&e.on("NodeChange",t)}}),r(ie,[z,y,_,$,k,U],function(e,t,n,r,i,o){function a(e){return e>0}function s(e){return e<0}function l(e,t){for(var n;n=e(t);)if(!N(n))return n;return null}function u(e,n,r,i,o){var u=new t(e,i);if(s(n)){if((x(e)||N(e))&&(e=l(u.prev,!0),r(e)))return e;for(;e=l(u.prev,o);)if(r(e))return e}if(a(n)){if((x(e)||N(e))&&(e=l(u.next,!0),r(e)))return e;for(;e=l(u.next,o);)if(r(e))return e}return null}function c(e,t){for(e=e.parentNode;e&&e!=t;e=e.parentNode)if(C(e))return e;return t}function d(e,t){for(;e&&e!=t;){if(w(e))return e;e=e.parentNode}return null}function f(e,t,n){return d(e.container(),n)==d(t.container(),n)}function p(e,t,n){return c(e.container(),n)==c(t.container(),n)}function h(e,t){var n,r;return t?(n=t.container(),r=t.offset(),S(n)?n.childNodes[r+e]:null):null}function m(e,t){var n=t.ownerDocument.createRange();return e?(n.setStartBefore(t),n.setEndBefore(t)):(n.setStartAfter(t),n.setEndAfter(t)),n}function g(e,t,n){return d(t,e)==d(n,e)}function v(e,t,n){var r,i;for(i=e?"previousSibling":"nextSibling";n&&n!=t;){if(r=n[i],E(r)&&(r=r[i]),x(r)){if(g(t,r,n))return r;break}if(k(r))break;n=n.parentNode}return null}function y(e,t,r){var o,a,s,l,u=_(v,!0,t),c=_(v,!1,t);if(a=r.startContainer,s=r.startOffset,i.isCaretContainerBlock(a)){if(S(a)||(a=a.parentNode),l=a.getAttribute("data-mce-caret"),"before"==l&&(o=a.nextSibling,x(o)))return T(o);if("after"==l&&(o=a.previousSibling,x(o)))return R(o)}if(!r.collapsed)return r;if(n.isText(a)){if(E(a)){if(1===e){if(o=c(a))return T(o);if(o=u(a))return R(o)}if(e===-1){if(o=u(a))return R(o);if(o=c(a))return T(o)}return r}if(i.endsWithCaretContainer(a)&&s>=a.data.length-1)return 1===e&&(o=c(a))?T(o):r;if(i.startsWithCaretContainer(a)&&s<=1)return e===-1&&(o=u(a))?R(o):r;if(s===a.data.length)return o=c(a),o?T(o):r;if(0===s)return o=u(a),o?R(o):r}return r}function b(e,t){return x(h(e,t))}var C=n.isContentEditableTrue,x=n.isContentEditableFalse,w=n.matchStyleValues("display","block table table-cell table-caption"),E=i.isCaretContainer,N=i.isCaretContainerBlock,_=e.curry,S=n.isElement,k=o.isCaretCandidate,T=_(m,!0),R=_(m,!1);return{isForwards:a,isBackwards:s,findNode:u,getEditingHost:c,getParentBlock:d,isInSameBlock:f,isInSameEditingHost:p,isBeforeContentEditableFalse:_(b,0),isAfterContentEditableFalse:_(b,-1),normalizeRange:y}}),r(oe,[_,U,$,ie,h,z],function(e,t,n,r,i,o){function a(e,t){for(var n=[];e&&e!=t;)n.push(e),e=e.parentNode;return n}function s(e,t){return e.hasChildNodes()&&t0)return n(C,--x);if(m(e)&&x0&&(E=s(C,x-1),v(E)))return!y(E)&&(N=r.findNode(E,e,b,E))?f(N)?n(N,N.data.length):n.after(N):f(E)?n(E,E.data.length):n.before(E);if(m(e)&&x0&&s(e[e.length-1])?e.slice(0,-1):e},u=function(e,t){var n=e.getParent(t,e.isBlock);return n&&"LI"===n.nodeName?n:null},c=function(e,t){return!!u(e,t)},d=function(e,t){var n=t.cloneRange(),r=t.cloneRange();return n.setStartBefore(e),r.setEndAfter(e),[n.cloneContents(),r.cloneContents()]},f=function(e,r){var i=n.before(e),o=new t(r),a=o.next(i);return a?a.toRange():null},p=function(e,r){var i=n.after(e),o=new t(r),a=o.prev(i);return a?a.toRange():null},h=function(t,n,r,i){var o=d(t,i),a=t.parentNode;return a.insertBefore(o[0],t),e.each(n,function(e){a.insertBefore(e,t)}),a.insertBefore(o[1],t),a.removeChild(t),p(n[n.length-1],r)},m=function(t,n,r){var i=t.parentNode;return e.each(n,function(e){i.insertBefore(e,t)}),f(t,r)},g=function(e,t,n,r){return r.insertAfter(t.reverse(),e),p(t[0],n)},v=function(e,r,i,s){var c=o(r,e,s),d=u(r,i.startContainer),f=l(a(c.firstChild)),p=1,v=2,y=r.getRoot(),b=function(e){var o=n.fromRangeStart(i),a=new t(r.getRoot()),s=e===p?a.prev(o):a.next(o);return!s||u(r,s.getNode())!==d};return b(p)?m(d,f,y):b(v)?g(d,f,y,r):h(d,f,y,i)};return{isListFragment:r,insertAtCaret:v,isParentBlockLi:c,trimListItems:l,listItems:a}}),r(se,[d,m,P,oe,$,X,_,ae],function(e,t,n,r,i,o,a,s){var l=a.matchNodeNames("td th"),u=function(e,t,n){if("all"===n.getAttribute("data-mce-bogus"))n.parentNode.insertBefore(e.dom.createFragment(t),n);else{var r=n.firstChild,i=n.lastChild;!r||r===i&&"BR"===r.nodeName?e.dom.setHTML(n,t):e.selection.setContent(t)}},c=function(a,c,d){function f(e){function t(e){return r[e]&&3==r[e].nodeType}var n,r,i;return n=L.getRng(!0),r=n.startContainer,i=n.startOffset,3==r.nodeType&&(i>0?e=e.replace(/^ /," "):t("previousSibling")||(e=e.replace(/^ /," ")),i|)$/," "):t("nextSibling")||(e=e.replace(/( | )(
    |)$/," "))),e}function p(){var e,t,n;e=L.getRng(!0),t=e.startContainer,n=e.startOffset,3==t.nodeType&&e.collapsed&&("\xa0"===t.data[n]?(t.deleteData(n,1),/[\u00a0| ]$/.test(c)||(c+=" ")):"\xa0"===t.data[n-1]&&(t.deleteData(n-1,1),/[\u00a0| ]$/.test(c)||(c=" "+c)))}function h(){if(B){var e=a.getBody(),n=new o(M);t.each(M.select("*[data-mce-fragment]"),function(t){for(var r=t.parentNode;r&&r!=e;r=r.parentNode)D[t.nodeName.toLowerCase()]&&n.compare(r,t)&&M.remove(t,!0)})}}function m(e){for(var t=e;t=t.walk();)1===t.type&&t.attr("data-mce-fragment","1")}function g(e){t.each(e.getElementsByTagName("*"),function(e){e.removeAttribute("data-mce-fragment")})}function v(e){return!!e.getAttribute("data-mce-fragment")}function y(e){return e&&!a.schema.getShortEndedElements()[e.nodeName]}function b(t){function n(e){for(var t=a.getBody();e&&e!==t;e=e.parentNode)if("false"===a.dom.getContentEditable(e))return e;return null}function o(e){var t=i.fromRangeStart(e),n=new r(a.getBody());if(t=n.next(t))return t.toRange()}var s,u,c;if(t){if(L.scrollIntoView(t),s=n(t))return M.remove(t),void L.select(s);k=M.createRng(),T=t.previousSibling,T&&3==T.nodeType?(k.setStart(T,T.nodeValue.length),e.ie||(R=t.nextSibling,R&&3==R.nodeType&&(T.appendData(R.data),R.parentNode.removeChild(R)))):(k.setStartBefore(t),k.setEndBefore(t)),u=M.getParent(t,M.isBlock),M.remove(t),u&&M.isEmpty(u)&&(a.$(u).empty(),k.setStart(u,0),k.setEnd(u,0),l(u)||v(u)||!(c=o(k))?M.add(u,M.create("br",{"data-mce-bogus":"1"})):(k=c,M.remove(u))),L.setRng(k)}}var C,x,w,E,N,_,S,k,T,R,A,B,D=a.schema.getTextInlineElements(),L=a.selection,M=a.dom;/^ | $/.test(c)&&(c=f(c)),C=a.parser,B=d.merge,x=new n({validate:a.settings.validate},a.schema),A='​',_={content:c,format:"html",selection:!0},a.fire("BeforeSetContent",_),c=_.content,c.indexOf("{$caret}")==-1&&(c+="{$caret}"),c=c.replace(/\{\$caret\}/,A),k=L.getRng();var P=k.startContainer||(k.parentElement?k.parentElement():null),O=a.getBody();P===O&&L.isCollapsed()&&M.isBlock(O.firstChild)&&y(O.firstChild)&&M.isEmpty(O.firstChild)&&(k=M.createRng(),k.setStart(O.firstChild,0),k.setEnd(O.firstChild,0),L.setRng(k)),L.isCollapsed()||(a.selection.setRng(a.selection.getRng()),a.getDoc().execCommand("Delete",!1,null),p()),w=L.getNode();var H={context:w.nodeName.toLowerCase(),data:d.data};if(N=C.parse(c,H),d.paste===!0&&s.isListFragment(N)&&s.isParentBlockLi(M,w))return k=s.insertAtCaret(x,M,a.selection.getRng(!0),N),a.selection.setRng(k),void a.fire("SetContent",_);if(m(N),T=N.lastChild,"mce_marker"==T.attr("id"))for(S=T,T=T.prev;T;T=T.walk(!0))if(3==T.type||!M.isBlock(T.name)){a.schema.isValidChild(T.parent.name,"span")&&T.parent.insert(S,T,"br"===T.name);break}if(a._selectionOverrides.showBlockCaretContainer(w),H.invalid){for(L.setContent(A),w=L.getNode(),E=a.getBody(),9==w.nodeType?w=T=E:T=w;T!==E;)w=T,T=T.parentNode;c=w==E?E.innerHTML:M.getOuterHTML(w),c=x.serialize(C.parse(c.replace(//i,function(){return x.serialize(N)}))),w==E?M.setHTML(E,c):M.setOuterHTML(w,c)}else c=x.serialize(N),u(a,c,w);h(),b(M.get("mce_marker")),g(a.getBody()),a.fire("SetContent",_),a.addVisual()},d=function(e){var n;return"string"!=typeof e?(n=t.extend({paste:e.paste,data:{paste:e.paste}},e),{content:e.content,details:n}):{content:e,details:{}}},f=function(e,t){var n=d(t);c(e,n.content,n.details)};return{insertAtCaret:f}}),r(le,[d,m,T,y,se,_],function(e,n,r,i,o,a){var s=n.each,l=n.extend,u=n.map,c=n.inArray,d=n.explode,f=e.ie&&e.ie<11,p=!0,h=!1;return function(n){function m(e,t,r,i){var o,a,l=0;if(/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint)$/.test(e)||i&&i.skip_focus||n.focus(),i=n.fire("BeforeExecCommand",{command:e,ui:t,value:r}),i.isDefaultPrevented())return!1;if(a=e.toLowerCase(),o=D.exec[a])return o(a,t,r),n.fire("ExecCommand",{command:e,ui:t,value:r}),!0;if(s(n.plugins,function(i){if(i.execCommand&&i.execCommand(e,t,r))return n.fire("ExecCommand",{command:e,ui:t,value:r}),l=!0,!1}),l)return l;if(n.theme&&n.theme.execCommand&&n.theme.execCommand(e,t,r))return n.fire("ExecCommand",{command:e,ui:t,value:r}),!0;try{l=n.getDoc().execCommand(e,t,r)}catch(u){}return!!l&&(n.fire("ExecCommand",{command:e,ui:t,value:r}),!0)}function g(e){var t;if(!n.quirks.isHidden()){if(e=e.toLowerCase(),t=D.state[e])return t(e);try{return n.getDoc().queryCommandState(e)}catch(r){}return!1}}function v(e){var t;if(!n.quirks.isHidden()){if(e=e.toLowerCase(),t=D.value[e])return t(e);try{return n.getDoc().queryCommandValue(e)}catch(r){}}}function y(e,t){t=t||"exec",s(e,function(e,n){s(n.toLowerCase().split(","),function(n){D[t][n]=e})})}function b(e,t,r){e=e.toLowerCase(),D.exec[e]=function(e,i,o,a){return t.call(r||n,i,o,a)}}function C(e){if(e=e.toLowerCase(),D.exec[e])return!0;try{return n.getDoc().queryCommandSupported(e)}catch(t){}return!1}function x(e,t,r){e=e.toLowerCase(),D.state[e]=function(){return t.call(r||n)}}function w(e,t,r){e=e.toLowerCase(),D.value[e]=function(){return t.call(r||n)}}function E(e){return e=e.toLowerCase(),!!D.exec[e]}function N(e,r,i){return r===t&&(r=h),i===t&&(i=null),n.getDoc().execCommand(e,r,i)}function _(e){return B.match(e)}function S(e,r){B.toggle(e,r?{value:r}:t),n.nodeChanged()}function k(e){M=A.getBookmark(e)}function T(){A.moveToBookmark(M)}var R,A,B,D={state:{},exec:{},value:{}},L=n.settings,M;n.on("PreInit",function(){R=n.dom,A=n.selection,L=n.settings,B=n.formatter}),l(this,{execCommand:m,queryCommandState:g,queryCommandValue:v,queryCommandSupported:C,addCommands:y,addCommand:b,addQueryStateHandler:x,addQueryValueHandler:w,hasCustomCommand:E}),y({"mceResetDesignMode,mceBeginUndoLevel":function(){},"mceEndUndoLevel,mceAddUndoLevel":function(){n.undoManager.add()},"Cut,Copy,Paste":function(t){var r=n.getDoc(),i;try{N(t)}catch(o){i=p}if("paste"!==t||r.queryCommandEnabled(t)||(i=!0),i||!r.queryCommandSupported(t)){var a=n.translate("Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X/C/V keyboard shortcuts instead.");e.mac&&(a=a.replace(/Ctrl\+/g,"\u2318+")),n.notificationManager.open({text:a,type:"error"})}},unlink:function(){if(A.isCollapsed()){var e=n.dom.getParent(n.selection.getStart(),"a");return void(e&&n.dom.remove(e,!0))}B.remove("link")},"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull,JustifyNone":function(e){var t=e.substring(7);"full"==t&&(t="justify"),s("left,center,right,justify".split(","),function(e){t!=e&&B.remove("align"+e)}),"none"!=t&&S("align"+t)},"InsertUnorderedList,InsertOrderedList":function(e){var t,n;N(e),t=R.getParent(A.getNode(),"ol,ul"),t&&(n=t.parentNode,/^(H[1-6]|P|ADDRESS|PRE)$/.test(n.nodeName)&&(k(),R.split(n,t),T()))},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(e){S(e)},"ForeColor,HiliteColor,FontName":function(e,t,n){S(e,n)},FontSize:function(e,t,n){var r,i;n>=1&&n<=7&&(i=d(L.font_size_style_values),r=d(L.font_size_classes),n=r?r[n-1]||n:i[n-1]||n),S(e,n)},RemoveFormat:function(e){B.remove(e)},mceBlockQuote:function(){S("blockquote")},FormatBlock:function(e,t,n){return S(n||"p")},mceCleanup:function(){var e=A.getBookmark();n.setContent(n.getContent({cleanup:p}),{cleanup:p}),A.moveToBookmark(e)},mceRemoveNode:function(e,t,r){var i=r||A.getNode();i!=n.getBody()&&(k(),n.dom.remove(i,p),T())},mceSelectNodeDepth:function(e,t,r){var i=0;R.getParent(A.getNode(),function(e){if(1==e.nodeType&&i++==r)return A.select(e),h},n.getBody())},mceSelectNode:function(e,t,n){A.select(n)},mceInsertContent:function(e,t,r){o.insertAtCaret(n,r)},mceInsertRawHTML:function(e,t,r){A.setContent("tiny_mce_marker"),n.setContent(n.getContent().replace(/tiny_mce_marker/g,function(){return r}))},mceToggleFormat:function(e,t,n){S(n)},mceSetContent:function(e,t,r){n.setContent(r)},"Indent,Outdent":function(e){var t,r,i;t=L.indentation,r=/[a-z%]+$/i.exec(t),t=parseInt(t,10),g("InsertUnorderedList")||g("InsertOrderedList")?N(e):(L.forced_root_block||R.getParent(A.getNode(),R.isBlock)||B.apply("div"),s(A.getSelectedBlocks(),function(o){if("false"!==R.getContentEditable(o)&&"LI"!==o.nodeName){var a=n.getParam("indent_use_margin",!1)?"margin":"padding";a="TABLE"===o.nodeName?"margin":a,a+="rtl"==R.getStyle(o,"direction",!0)?"Right":"Left","outdent"==e?(i=Math.max(0,parseInt(o.style[a]||0,10)-t),R.setStyle(o,a,i?i+r:"")):(i=parseInt(o.style[a]||0,10)+t+r,R.setStyle(o,a,i))}}))},mceRepaint:function(){},InsertHorizontalRule:function(){n.execCommand("mceInsertContent",!1,"
    ")},mceToggleVisualAid:function(){n.hasVisual=!n.hasVisual,n.addVisual()},mceReplaceContent:function(e,t,r){n.execCommand("mceInsertContent",!1,r.replace(/\{\$selection\}/g,A.getContent({format:"text"})))},mceInsertLink:function(e,t,n){var r;"string"==typeof n&&(n={href:n}),r=R.getParent(A.getNode(),"a"),n.href=n.href.replace(" ","%20"),r&&n.href||B.remove("link"),n.href&&B.apply("link",n,r)},selectAll:function(){var e=R.getRoot(),t;if(A.getRng().setStart){var n=R.getParent(A.getStart(),a.isContentEditableTrue);n&&(t=R.createRng(),t.selectNodeContents(n),A.setRng(t))}else t=A.getRng(),t.item||(t.moveToElementText(e),t.select())},"delete":function(){N("Delete");var e=n.getBody();R.isEmpty(e)&&(n.setContent(""),e.firstChild&&R.isBlock(e.firstChild)?n.selection.setCursorLocation(e.firstChild,0):n.selection.setCursorLocation(e,0))},mceNewDocument:function(){n.setContent("")},InsertLineBreak:function(e,t,o){function a(){for(var e=new i(m,v),t,r=n.schema.getNonEmptyElements();t=e.next();)if(r[t.nodeName.toLowerCase()]||t.length>0)return!0}var s=o,l,u,c,d=A.getRng(!0);new r(R).normalize(d);var h=d.startOffset,m=d.startContainer;if(1==m.nodeType&&m.hasChildNodes()){var g=h>m.childNodes.length-1;m=m.childNodes[Math.min(h,m.childNodes.length-1)]||m,h=g&&3==m.nodeType?m.nodeValue.length:0}var v=R.getParent(m,R.isBlock),y=v?v.nodeName.toUpperCase():"",b=v?R.getParent(v.parentNode,R.isBlock):null,C=b?b.nodeName.toUpperCase():"",x=s&&s.ctrlKey;"LI"!=C||x||(v=b,y=C),m&&3==m.nodeType&&h>=m.nodeValue.length&&(f||a()||(l=R.create("br"),d.insertNode(l),d.setStartAfter(l),d.setEndAfter(l),u=!0)),l=R.create("br"),d.insertNode(l);var w=R.doc.documentMode;return f&&"PRE"==y&&(!w||w<8)&&l.parentNode.insertBefore(R.doc.createTextNode("\r"),l),c=R.create("span",{}," "),l.parentNode.insertBefore(c,l),A.scrollIntoView(c),R.remove(c),u?(d.setStartBefore(l),d.setEndBefore(l)):(d.setStartAfter(l),d.setEndAfter(l)),A.setRng(d),n.undoManager.add(),p}}),y({"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull":function(e){var t="align"+e.substring(7),n=A.isCollapsed()?[R.getParent(A.getNode(),R.isBlock)]:A.getSelectedBlocks(),r=u(n,function(e){return!!B.matchNode(e,t)});return c(r,p)!==-1},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(e){return _(e)},mceBlockQuote:function(){return _("blockquote")},Outdent:function(){var e;if(L.inline_styles){if((e=R.getParent(A.getStart(),R.isBlock))&&parseInt(e.style.paddingLeft,10)>0)return p;if((e=R.getParent(A.getEnd(),R.isBlock))&&parseInt(e.style.paddingLeft,10)>0)return p}return g("InsertUnorderedList")||g("InsertOrderedList")||!L.inline_styles&&!!R.getParent(A.getNode(),"BLOCKQUOTE")},"InsertUnorderedList,InsertOrderedList":function(e){var t=R.getParent(A.getNode(),"ul,ol");return t&&("insertunorderedlist"===e&&"UL"===t.tagName||"insertorderedlist"===e&&"OL"===t.tagName)}},"state"),y({"FontSize,FontName":function(e){var t=0,n;return(n=R.getParent(A.getNode(),"span"))&&(t="fontsize"==e?n.style.fontSize:n.style.fontFamily.replace(/, /g,",").replace(/[\'\"]/g,"").toLowerCase()),t}},"value"),y({Undo:function(){n.undoManager.undo()},Redo:function(){n.undoManager.redo()}})}}),r(ue,[m],function(e){function t(e,o){var a=this,s,l;if(e=r(e),o=a.settings=o||{},s=o.base_uri,/^([\w\-]+):([^\/]{2})/i.test(e)||/^\s*#/.test(e))return void(a.source=e);var u=0===e.indexOf("//");0!==e.indexOf("/")||u||(e=(s?s.protocol||"http":"http")+"://mce_host"+e),/^[\w\-]*:?\/\//.test(e)||(l=o.base_uri?o.base_uri.path:new t(location.href).directory,""===o.base_uri.protocol?e="//mce_host"+a.toAbsPath(l,e):(e=/([^#?]*)([#?]?.*)/.exec(e),e=(s&&s.protocol||"http")+"://mce_host"+a.toAbsPath(l,e[1])+e[2])),e=e.replace(/@@/g,"(mce_at)"),e=/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(e),n(i,function(t,n){var r=e[n];r&&(r=r.replace(/\(mce_at\)/g,"@@")),a[t]=r}),s&&(a.protocol||(a.protocol=s.protocol),a.userInfo||(a.userInfo=s.userInfo),a.port||"mce_host"!==a.host||(a.port=s.port),a.host&&"mce_host"!==a.host||(a.host=s.host),a.source=""),u&&(a.protocol="")}var n=e.each,r=e.trim,i="source protocol authority userInfo user password host port relative path directory file query anchor".split(" "),o={ftp:21,http:80,https:443,mailto:25};return t.prototype={setPath:function(e){var t=this;e=/^(.*?)\/?(\w+)?$/.exec(e),t.path=e[0],t.directory=e[1],t.file=e[2],t.source="",t.getURI()},toRelative:function(e){var n=this,r;if("./"===e)return e;if(e=new t(e,{base_uri:n}),"mce_host"!=e.host&&n.host!=e.host&&e.host||n.port!=e.port||n.protocol!=e.protocol&&""!==e.protocol)return e.getURI();var i=n.getURI(),o=e.getURI();return i==o||"/"==i.charAt(i.length-1)&&i.substr(0,i.length-1)==o?i:(r=n.toRelPath(n.path,e.path),e.query&&(r+="?"+e.query),e.anchor&&(r+="#"+e.anchor),r)},toAbsolute:function(e,n){return e=new t(e,{base_uri:this}),e.getURI(n&&this.isSameOrigin(e))},isSameOrigin:function(e){if(this.host==e.host&&this.protocol==e.protocol){if(this.port==e.port)return!0;var t=o[this.protocol];if(t&&(this.port||t)==(e.port||t))return!0}return!1},toRelPath:function(e,t){var n,r=0,i="",o,a;if(e=e.substring(0,e.lastIndexOf("/")),e=e.split("/"),n=t.split("/"),e.length>=n.length)for(o=0,a=e.length;o=n.length||e[o]!=n[o]){r=o+1;break}if(e.length=e.length||e[o]!=n[o]){r=o+1;break}if(1===r)return t;for(o=0,a=e.length-(r-1);o=0;r--)0!==t[r].length&&"."!==t[r]&&(".."!==t[r]?i>0?i--:o.push(t[r]):i++);return r=e.length-i,s=r<=0?o.reverse().join("/"):e.slice(0,r).join("/")+"/"+o.reverse().join("/"),0!==s.indexOf("/")&&(s="/"+s),a&&s.lastIndexOf("/")!==s.length-1&&(s+=a),s},getURI:function(e){var t,n=this;return n.source&&!e||(t="",e||(t+=n.protocol?n.protocol+"://":"//",n.userInfo&&(t+=n.userInfo+"@"),n.host&&(t+=n.host),n.port&&(t+=":"+n.port)),n.path&&(t+=n.path),n.query&&(t+="?"+n.query),n.anchor&&(t+="#"+n.anchor),n.source=t),n.source}},t.parseDataUri=function(e){var t,n;return e=decodeURIComponent(e).split(","),n=/data:([^;]+)/.exec(e[0]),n&&(t=n[1]),{type:t,data:e[1]}},t.getDocumentBaseUrl=function(e){var t;return t=0!==e.protocol.indexOf("http")&&"file:"!==e.protocol?e.href:e.protocol+"//"+e.host+e.pathname,/^[^:]+:\/\/\/?[^\/]+\//.test(t)&&(t=t.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,""),/[\/\\]$/.test(t)||(t+="/")),t},t}),r(ce,[m],function(e){function t(){}var n=e.each,r=e.extend,i,o;return t.extend=i=function(e){function t(){var e,t,n,r=this;if(!o&&(r.init&&r.init.apply(r,arguments),t=r.Mixins))for(e=t.length;e--;)n=t[e],n.init&&n.init.apply(r,arguments)}function a(){return this}function s(e,t){return function(){var n=this,r=n._super,i;return n._super=u[e],i=t.apply(n,arguments),n._super=r,i}}var l=this,u=l.prototype,c,d,f;o=!0,c=new l,o=!1,e.Mixins&&(n(e.Mixins,function(t){for(var n in t)"init"!==n&&(e[n]=t[n])}),u.Mixins&&(e.Mixins=u.Mixins.concat(e.Mixins))),e.Methods&&n(e.Methods.split(","),function(t){e[t]=a}),e.Properties&&n(e.Properties.split(","),function(t){var n="_"+t;e[t]=function(e){var t=this,r;return e!==r?(t[n]=e,t):t[n]}}),e.Statics&&n(e.Statics,function(e,n){t[n]=e}),e.Defaults&&u.Defaults&&(e.Defaults=r({},u.Defaults,e.Defaults));for(d in e)f=e[d],"function"==typeof f&&u[d]?c[d]=s(d,f):c[d]=f;return t.prototype=c,t.constructor=t,t.extend=i,t},t}),r(de,[m],function(e){function t(t){function n(){return!1}function r(){return!0}function i(e,i){var o,s,l,u;if(e=e.toLowerCase(),i=i||{},i.type=e,i.target||(i.target=c),i.preventDefault||(i.preventDefault=function(){i.isDefaultPrevented=r},i.stopPropagation=function(){i.isPropagationStopped=r},i.stopImmediatePropagation=function(){i.isImmediatePropagationStopped=r},i.isDefaultPrevented=n,i.isPropagationStopped=n,i.isImmediatePropagationStopped=n),t.beforeFire&&t.beforeFire(i),o=d[e])for(s=0,l=o.length;s0}function o(e,t){var n,a;if(e===t)return!0;if(null===e||null===t)return e===t;if("object"!=typeof e||"object"!=typeof t)return e===t;if(r.isArray(t)){if(e.length!==t.length)return!1;for(n=e.length;n--;)if(!o(e[n],t[n]))return!1}if(i(e)||i(t))return e===t;a={};for(n in t){if(!o(e[n],t[n]))return!1;a[n]=!0}for(n in e)if(!a[n]&&!o(e[n],t[n]))return!1;return!0}return n.extend({Mixins:[t],init:function(t){var n,r;t=t||{};for(n in t)r=t[n],r instanceof e&&(t[n]=r.create(this,n));this.data=t},set:function(t,n){var r,i,a=this.data[t];if(n instanceof e&&(n=n.create(this,t)),"object"==typeof t){for(r in t)this.set(r,t[r]);return this}return o(a,n)||(this.data[t]=n,i={target:this,name:t,value:n,oldValue:a},this.fire("change:"+t,i),this.fire("change",i)),this},get:function(e){return this.data[e]},has:function(e){return e in this.data},bind:function(t){return e.create(this,t)},destroy:function(){this.fire("destroy")}})}),r(me,[ce],function(e){function t(e){for(var t=[],n=e.length,r;n--;)r=e[n],r.__checked||(t.push(r),r.__checked=1);for(n=t.length;n--;)delete t[n].__checked;return t}var n=/^([\w\\*]+)?(?:#([\w\-\\]+))?(?:\.([\w\\\.]+))?(?:\[\@?([\w\\]+)([\^\$\*!~]?=)([\w\\]+)\])?(?:\:(.+))?/i,r=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,i=/^\s*|\s*$/g,o,a=e.extend({init:function(e){function t(e){if(e)return e=e.toLowerCase(),function(t){return"*"===e||t.type===e}}function o(e){if(e)return function(t){return t._name===e}}function a(e){if(e)return e=e.split("."),function(t){for(var n=e.length;n--;)if(!t.classes.contains(e[n]))return!1;return!0}}function s(e,t,n){if(e)return function(r){var i=r[e]?r[e]():"";return t?"="===t?i===n:"*="===t?i.indexOf(n)>=0:"~="===t?(" "+i+" ").indexOf(" "+n+" ")>=0:"!="===t?i!=n:"^="===t?0===i.indexOf(n):"$="===t&&i.substr(i.length-n.length)===n:!!n}}function l(e){var t;if(e)return e=/(?:not\((.+)\))|(.+)/i.exec(e),e[1]?(t=c(e[1],[]),function(e){return!d(e,t)}):(e=e[2],function(t,n,r){return"first"===e?0===n:"last"===e?n===r-1:"even"===e?n%2===0:"odd"===e?n%2===1:!!t[e]&&t[e]()})}function u(e,r,u){function c(e){e&&r.push(e)}var d;return d=n.exec(e.replace(i,"")),c(t(d[1])),c(o(d[2])),c(a(d[3])),c(s(d[4],d[5],d[6])),c(l(d[7])),r.pseudo=!!d[7],r.direct=u,r}function c(e,t){var n=[],i,o,a;do if(r.exec(""),o=r.exec(e),o&&(e=o[3],n.push(o[1]),o[2])){i=o[3];break}while(o);for(i&&c(i,t),e=[],a=0;a"!=n[a]&&e.push(u(n[a],[],">"===n[a-1]));return t.push(e),t}var d=this.match;this._selectors=c(e,[])},match:function(e,t){var n,r,i,o,a,s,l,u,c,d,f,p,h;for(t=t||this._selectors,n=0,r=t.length;n=0;i--)for(u=a[i];h;){if(u.pseudo)for(f=h.parent().items(),c=d=f.length;c--&&f[c]!==h;);for(s=0,l=u.length;s1&&(r=t(r))}return o||(o=a.Collection),new o(r)}});return a}),r(ge,[m,me,ce],function(e,t,n){var r,i,o=Array.prototype.push,a=Array.prototype.slice;return i={length:0,init:function(e){e&&this.add(e)},add:function(t){var n=this;return e.isArray(t)?o.apply(n,t):t instanceof r?n.add(t.toArray()):o.call(n,t),n},set:function(e){var t=this,n=t.length,r;for(t.length=0,t.add(e),r=t.length;r0&&(e+=" "),e+=this.prefix+this.cls[t];return e},n}),r(Ce,[c],function(e){var t={},n;return{add:function(r){var i=r.parent();if(i){if(!i._layout||i._layout.isNative())return;t[i._id]||(t[i._id]=i),n||(n=!0,e.requestAnimationFrame(function(){var e,r;n=!1;for(e in t)r=t[e],r.state.get("rendered")&&r.reflow();t={}},document.body))}},remove:function(e){t[e._id]&&delete t[e._id]}}}),r(xe,[ce,m,de,he,ge,ve,g,ye,be,Ce],function(e,t,n,r,i,o,a,s,l,u){function c(e){return e._eventDispatcher||(e._eventDispatcher=new n({scope:e,toggleEvent:function(t,r){r&&n.isNative(t)&&(e._nativeEvents||(e._nativeEvents={}),e._nativeEvents[t]=!0,e.state.get("rendered")&&d(e))}})),e._eventDispatcher}function d(e){function t(t){var n=e.getParentCtrl(t.target);n&&n.fire(t.type,t)}function n(){var e=u._lastHoverCtrl;e&&(e.fire("mouseleave",{target:e.getEl()}),e.parents().each(function(e){e.fire("mouseleave",{target:e.getEl()})}),u._lastHoverCtrl=null)}function r(t){var n=e.getParentCtrl(t.target),r=u._lastHoverCtrl,i=0,o,a,s;if(n!==r){if(u._lastHoverCtrl=n,a=n.parents().toArray().reverse(),a.push(n),r){for(s=r.parents().toArray().reverse(),s.push(r),i=0;i=i;o--)r=s[o],r.fire("mouseleave",{target:r.getEl()})}for(o=i;on.maxW?n.maxW:i,n.w=i,n.innerW=i-o),i=e.h,i!==s&&(i=in.maxH?n.maxH:i,n.h=i,n.innerH=i-a),i=e.innerW,i!==s&&(i=in.maxW-o?n.maxW-o:i,n.innerW=i,n.w=i+o),i=e.innerH,i!==s&&(i=in.maxH-a?n.maxH-a:i,n.innerH=i,n.h=i+a),e.contentW!==s&&(n.contentW=e.contentW),e.contentH!==s&&(n.contentH=e.contentH),r=t._lastLayoutRect,r.x===n.x&&r.y===n.y&&r.w===n.w&&r.h===n.h||(l=m.repaintControls,l&&l.map&&!l.map[t._id]&&(l.push(t),l.map[t._id]=!0),r.x=n.x,r.y=n.y,r.w=n.w,r.h=n.h),t):n},repaint:function(){var e=this,t,n,r,i,o,a,s,l,u,c;u=document.createRange?function(e){return e}:Math.round,t=e.getEl().style,i=e._layoutRect,l=e._lastRepaintRect||{},o=e.borderBox,a=o.left+o.right,s=o.top+o.bottom,i.x!==l.x&&(t.left=u(i.x)+"px",l.x=i.x),i.y!==l.y&&(t.top=u(i.y)+"px",l.y=i.y),i.w!==l.w&&(c=u(i.w-a),t.width=(c>=0?c:0)+"px",l.w=i.w),i.h!==l.h&&(c=u(i.h-s),t.height=(c>=0?c:0)+"px",l.h=i.h),e._hasBody&&i.innerW!==l.innerW&&(c=u(i.innerW),r=e.getEl("body"),r&&(n=r.style,n.width=(c>=0?c:0)+"px"),l.innerW=i.innerW),e._hasBody&&i.innerH!==l.innerH&&(c=u(i.innerH),r=r||e.getEl("body"),r&&(n=n||r.style,n.height=(c>=0?c:0)+"px"),l.innerH=i.innerH),e._lastRepaintRect=l,e.fire("repaint",{},!1)},updateLayoutRect:function(){var e=this;e.parent()._lastRect=null,o.css(e.getEl(),{width:"",height:""}),e._layoutRect=e._lastRepaintRect=e._lastLayoutRect=null,e.initLayoutRect()},on:function(e,t){function n(e){var t,n;return"string"!=typeof e?e:function(i){return t||r.parentsAndSelf().each(function(r){var i=r.settings.callbacks;if(i&&(t=i[e]))return n=r,!1}),t?t.call(n,i):(i.action=e,void this.fire("execute",i))}}var r=this;return c(r).on(e,n(t)),r},off:function(e,t){return c(this).off(e,t),this},fire:function(e,t,n){var r=this;if(t=t||{},t.control||(t.control=r),t=c(r).fire(e,t),n!==!1&&r.parent)for(var i=r.parent();i&&!t.isPropagationStopped();)i.fire(e,t,!1),i=i.parent();return t},hasEventListeners:function(e){return c(this).has(e)},parents:function(e){var t=this,n,r=new i;for(n=t.parent();n;n=n.parent())r.add(n);return e&&(r=r.filter(e)),r},parentsAndSelf:function(e){return new i(this).add(this.parents(e))},next:function(){var e=this.parent().items();return e[e.indexOf(this)+1]},prev:function(){var e=this.parent().items();return e[e.indexOf(this)-1]},innerHtml:function(e){return this.$el.html(e),this},getEl:function(e){var t=e?this._id+"-"+e:this._id;return this._elmCache[t]||(this._elmCache[t]=a("#"+t)[0]),this._elmCache[t]},show:function(){return this.visible(!0)},hide:function(){return this.visible(!1)},focus:function(){try{this.getEl().focus()}catch(e){}return this},blur:function(){return this.getEl().blur(),this},aria:function(e,t){var n=this,r=n.getEl(n.ariaTarget);return"undefined"==typeof t?n._aria[e]:(n._aria[e]=t,n.state.get("rendered")&&r.setAttribute("role"==e?e:"aria-"+e,t),n)},encode:function(e,t){return t!==!1&&(e=this.translate(e)),(e||"").replace(/[&<>"]/g,function(e){return"&#"+e.charCodeAt(0)+";"})},translate:function(e){return m.translate?m.translate(e):e},before:function(e){var t=this,n=t.parent();return n&&n.insert(e,n.items().indexOf(t),!0),t},after:function(e){var t=this,n=t.parent();return n&&n.insert(e,n.items().indexOf(t)),t},remove:function(){var e=this,t=e.getEl(),n=e.parent(),r,i;if(e.items){var o=e.items().toArray();for(i=o.length;i--;)o[i].remove()}n&&n.items&&(r=[],n.items().each(function(t){t!==e&&r.push(t)}),n.items().set(r),n._lastRect=null),e._eventsRoot&&e._eventsRoot==e&&a(t).off();var s=e.getRoot().controlIdLookup;return s&&delete s[e._id],t&&t.parentNode&&t.parentNode.removeChild(t),e.state.set("rendered",!1),e.state.destroy(),e.fire("remove"),e},renderBefore:function(e){return a(e).before(this.renderHtml()),this.postRender(),this},renderTo:function(e){return a(e||this.getContainerElm()).append(this.renderHtml()),this.postRender(),this},preRender:function(){},render:function(){},renderHtml:function(){return'
    '},postRender:function(){var e=this,t=e.settings,n,r,i,o,s;e.$el=a(e.getEl()),e.state.set("rendered",!0);for(o in t)0===o.indexOf("on")&&e.on(o.substr(2),t[o]);if(e._eventsRoot){for(i=e.parent();!s&&i;i=i.parent())s=i._eventsRoot;if(s)for(o in s._nativeEvents)e._nativeEvents[o]=!0}d(e),t.style&&(n=e.getEl(),n&&(n.setAttribute("style",t.style),n.style.cssText=t.style)),e.settings.border&&(r=e.borderBox,e.$el.css({"border-top-width":r.top,"border-right-width":r.right,"border-bottom-width":r.bottom,"border-left-width":r.left}));var l=e.getRoot();l.controlIdLookup||(l.controlIdLookup={}),l.controlIdLookup[e._id]=e;for(var c in e._aria)e.aria(c,e._aria[c]);e.state.get("visible")===!1&&(e.getEl().style.display="none"),e.bindStates(),e.state.on("change:visible",function(t){var n=t.value,r;e.state.get("rendered")&&(e.getEl().style.display=n===!1?"none":"",e.getEl().getBoundingClientRect()),r=e.parent(),r&&(r._lastRect=null),e.fire(n?"show":"hide"),u.add(e)}),e.fire("postrender",{},!1)},bindStates:function(){},scrollIntoView:function(e){function t(e,t){var n,r,i=e;for(n=r=0;i&&i!=t&&i.nodeType;)n+=i.offsetLeft||0,r+=i.offsetTop||0,i=i.offsetParent;return{x:n,y:r}}var n=this.getEl(),r=n.parentNode,i,o,a,s,l,u,c=t(n,r);return i=c.x,o=c.y,a=n.offsetWidth,s=n.offsetHeight,l=r.clientWidth,u=r.clientHeight,"end"==e?(i-=l-a,o-=u-s):"center"==e&&(i-=l/2-a/2,o-=u/2-s/2),r.scrollLeft=i,r.scrollTop=o,this},getRoot:function(){for(var e=this,t,n=[];e;){if(e.rootControl){t=e.rootControl;break}n.push(e),t=e,e=e.parent()}t||(t=this);for(var r=n.length;r--;)n[r].rootControl=t;return t},reflow:function(){u.remove(this);var e=this.parent();return e._layout&&!e._layout.isNative()&&e.reflow(),this}};return t.each("text title visible disabled active value".split(" "),function(e){v[e]=function(t){return 0===arguments.length?this.state.get(e):("undefined"!=typeof t&&this.state.set(e,t),this)}}),m=e.extend(v)}),r(we,[],function(){var e={},t;return{add:function(t,n){e[t.toLowerCase()]=n},has:function(t){return!!e[t.toLowerCase()]},create:function(n,r){var i,o,a;if(!t){a=tinymce.ui;for(o in a)e[o.toLowerCase()]=a[o];t=!0}if("string"==typeof n?(r=r||{},r.type=n):(r=n,n=r.type),n=n.toLowerCase(),i=e[n],!i)throw new Error("Could not find control by type: "+n);return i=new i(r),i.type=n,i}}}),r(Ee,[],function(){return function(e){function t(e){return e&&1===e.nodeType}function n(e){return e=e||C,t(e)?e.getAttribute("role"):null}function r(e){for(var t,r=e||C;r=r.parentNode;)if(t=n(r))return t}function i(e){var n=C;if(t(n))return n.getAttribute("aria-"+e)}function o(e){var t=e.tagName.toUpperCase();return"INPUT"==t||"TEXTAREA"==t||"SELECT"==t}function a(e){return!(!o(e)||e.hidden)||!!/^(button|menuitem|checkbox|tab|menuitemcheckbox|option|gridcell|slider)$/.test(n(e))}function s(e){function t(e){if(1==e.nodeType&&"none"!=e.style.display&&!e.disabled){a(e)&&n.push(e);for(var r=0;r=t.length&&(e=0),t[e]&&t[e].focus(),e}function d(e,t){var n=-1,r=l();t=t||s(r.getEl());for(var i=0;i=0&&(n=t.getEl(),n&&n.parentNode.removeChild(n),n=e.getEl(),n&&n.parentNode.removeChild(n)),t.parent(this)},create:function(t){var n=this,i,a=[];return o.isArray(t)||(t=[t]),o.each(t,function(t){t&&(t instanceof e||("string"==typeof t&&(t={type:t}),i=o.extend({},n.settings.defaults,t),t.type=i.type=i.type||t.type||n.settings.defaultType||(i.defaults?i.defaults.type:null),t=r.create(i)),a.push(t))}),a},renderNew:function(){var e=this;return e.items().each(function(t,n){var r;t.parent(e),t.state.get("rendered")||(r=e.getEl("body"),r.hasChildNodes()&&n<=r.childNodes.length-1?a(r.childNodes[n]).before(t.renderHtml()):a(r).append(t.renderHtml()),t.postRender(),l.add(t))}),e._layout.applyClasses(e.items().filter(":visible")),e._lastRect=null,e},append:function(e){return this.add(e).renderNew()},prepend:function(e){var t=this;return t.items().set(t.create(e).concat(t.items().toArray())),t.renderNew()},insert:function(e,t,n){var r=this,i,o,a;return e=r.create(e),i=r.items(),!n&&t=0&&t
    '+(e.settings.html||"")+t.renderHtml(e)+"
    "},postRender:function(){var e=this,t;return e.items().exec("postRender"),e._super(),e._layout.postRender(e),e.state.set("rendered",!0),e.settings.style&&e.$el.css(e.settings.style),e.settings.border&&(t=e.borderBox,e.$el.css({"border-top-width":t.top,"border-right-width":t.right,"border-bottom-width":t.bottom,"border-left-width":t.left})),e.parent()||(e.keyboardNav=new i({root:e})),e},initLayoutRect:function(){var e=this,t=e._super();return e._layout.recalc(e),t},recalc:function(){var e=this,t=e._layoutRect,n=e._lastRect;if(!n||n.w!=t.w||n.h!=t.h)return e._layout.recalc(e),t=e.layoutRect(),e._lastRect={x:t.x,y:t.y,w:t.w,h:t.h},!0},reflow:function(){var t;if(l.remove(this),this.visible()){for(e.repaintControls=[],e.repaintControls.map={},this.recalc(),t=e.repaintControls.length;t--;)e.repaintControls[t].repaint();"flow"!==this.settings.layout&&"stack"!==this.settings.layout&&this.repaint(),e.repaintControls=[]}return this}})}),r(_e,[g],function(e){function t(e){var t,n,r,i,o,a,s,l,u=Math.max;return t=e.documentElement,n=e.body,r=u(t.scrollWidth,n.scrollWidth),i=u(t.clientWidth,n.clientWidth),o=u(t.offsetWidth,n.offsetWidth),a=u(t.scrollHeight,n.scrollHeight),s=u(t.clientHeight,n.clientHeight),l=u(t.offsetHeight,n.offsetHeight),{width:r
    ").css({position:"absolute",top:0,left:0,width:u.width,height:u.height,zIndex:2147483647,opacity:1e-4,cursor:m}).appendTo(s.body),e(s).on("mousemove touchmove",d).on("mouseup touchend",c),i.start(r)},d=function(e){return n(e),e.button!==l?c(e):(e.deltaX=e.screenX-f,e.deltaY=e.screenY-p,e.preventDefault(),void i.drag(e))},c=function(t){n(t),e(s).off("mousemove touchmove",d).off("mouseup touchend",c),a.remove(),i.stop&&i.stop(t)},this.destroy=function(){e(o()).off()},e(o()).on("mousedown touchstart",u)}}),r(Se,[g,_e],function(e,t){return{init:function(){var e=this;e.on("repaint",e.renderScroll)},renderScroll:function(){function n(){function t(t,a,s,l,u,c){var d,f,p,h,m,g,v,y,b;if(f=i.getEl("scroll"+t)){if(y=a.toLowerCase(),b=s.toLowerCase(),e(i.getEl("absend")).css(y,i.layoutRect()[l]-1),!u)return void e(f).css("display","none");e(f).css("display","block"),d=i.getEl("body"),p=i.getEl("scroll"+t+"t"),h=d["client"+s]-2*o,h-=n&&r?f["client"+c]:0,m=d["scroll"+s],g=h/m,v={},v[y]=d["offset"+a]+o,v[b]=h,e(f).css(v),v={},v[y]=d["scroll"+a]*g,v[b]=h*g,e(p).css(v)}}var n,r,a;a=i.getEl("body"),n=a.scrollWidth>a.clientWidth,r=a.scrollHeight>a.clientHeight,t("h","Left","Width","contentW",n,"Height"),t("v","Top","Height","contentH",r,"Width")}function r(){function n(n,r,a,s,l){var u,c=i._id+"-scroll"+n,d=i.classPrefix;e(i.getEl()).append('
    '),i.draghelper=new t(c+"t",{start:function(){u=i.getEl("body")["scroll"+r],e("#"+c).addClass(d+"active")},drag:function(e){var t,c,d,f,p=i.layoutRect();c=p.contentW>p.innerW,d=p.contentH>p.innerH,f=i.getEl("body")["client"+a]-2*o,f-=c&&d?i.getEl("scroll"+n)["client"+l]:0,t=f/i.getEl("body")["scroll"+a],i.getEl("body")["scroll"+r]=u+e["delta"+s]/t},stop:function(){e("#"+c).removeClass(d+"active")}})}i.classes.add("scroll"),n("v","Top","Height","Y","Width"),n("h","Left","Width","X","Height")}var i=this,o=2;i.settings.autoScroll&&(i._hasScroll||(i._hasScroll=!0,r(),i.on("wheel",function(e){var t=i.getEl("body");t.scrollLeft+=10*(e.deltaX||0),t.scrollTop+=10*e.deltaY,n()}),e(i.getEl("body")).on("scroll",n)),n())}}}),r(ke,[Ne,Se],function(e,t){return e.extend({Defaults:{layout:"fit",containerCls:"panel"},Mixins:[t],renderHtml:function(){var e=this,t=e._layout,n=e.settings.html;return e.preRender(),t.preRender(e),"undefined"==typeof n?n='
    '+t.renderHtml(e)+"
    ":("function"==typeof n&&(n=n.call(e)),e._hasBody=!1),'
    '+(e._preBodyHtml||"")+n+"
    "}})}),r(Te,[ve],function(e){function t(t,n,r){var i,o,a,s,l,u,c,d,f,p;return f=e.getViewPort(),o=e.getPos(n),a=o.x,s=o.y,t.state.get("fixed")&&"static"==e.getRuntimeStyle(document.body,"position")&&(a-=f.x,s-=f.y),i=t.getEl(),p=e.getSize(i),l=p.width,u=p.height,p=e.getSize(n),c=p.width,d=p.height,r=(r||"").split(""),"b"===r[0]&&(s+=d),"r"===r[1]&&(a+=c),"c"===r[0]&&(s+=Math.round(d/2)),"c"===r[1]&&(a+=Math.round(c/2)),"b"===r[3]&&(s-=u),"r"===r[4]&&(a-=l),"c"===r[3]&&(s-=Math.round(u/2)),"c"===r[4]&&(a-=Math.round(l/2)),{x:a,y:s,w:l,h:u}}return{testMoveRel:function(n,r){for(var i=e.getViewPort(),o=0;o0&&a.x+a.w0&&a.y+a.hi.x&&a.x+a.wi.y&&a.y+a.ht?(e=t-n,e<0?0:e):e}var i=this;if(i.settings.constrainToViewport){var o=e.getViewPort(window),a=i.layoutRect();t=r(t,o.w+o.x,a.w),n=r(n,o.h+o.y,a.h)}return i.state.get("rendered")?i.layoutRect({x:t,y:n}).repaint():(i.settings.x=t,i.settings.y=n),i.fire("move",{x:t,y:n}),i}}}),r(Re,[ve],function(e){return{resizeToContent:function(){this._layoutRect.autoResize=!0,this._lastRect=null,this.reflow()},resizeTo:function(t,n){if(t<=1||n<=1){var r=e.getWindowSize();t=t<=1?t*r.w:t,n=n<=1?n*r.h:n}return this._layoutRect.autoResize=!1,this.layoutRect({minW:t,minH:n,w:t,h:n}).reflow()},resizeBy:function(e,t){var n=this,r=n.layoutRect();return n.resizeTo(r.w+e,r.h+t)}}}),r(Ae,[ke,Te,Re,ve,g,c],function(e,t,n,r,i,o){function a(e,t){for(;e;){if(e==t)return!0;e=e.parent()}}function s(e){for(var t=v.length;t--;){var n=v[t],r=n.getParentCtrl(e.target);if(n.settings.autohide){if(r&&(a(r,n)||n.parent()===r))continue;e=n.fire("autohide",{target:e.target}),e.isDefaultPrevented()||n.hide()}}}function l(){h||(h=function(e){2!=e.button&&s(e)},i(document).on("click touchstart",h))}function u(){m||(m=function(){var e;for(e=v.length;e--;)d(v[e])},i(window).on("scroll",m))}function c(){if(!g){var e=document.documentElement,t=e.clientWidth,n=e.clientHeight;g=function(){document.all&&t==e.clientWidth&&n==e.clientHeight||(t=e.clientWidth,n=e.clientHeight,C.hideAll())},i(window).on("resize",g)}}function d(e){function t(t,n){for(var r,i=0;in&&(e.fixed(!1).layoutRect({y:e._autoFixY}).repaint(),t(!1,e._autoFixY-n)):(e._autoFixY=e.layoutRect().y,e._autoFixY
    ').appendTo(t.getContainerElm())),o.setTimeout(function(){n.addClass(r+"in"),i(t.getEl()).addClass(r+"in")}),b=!0),f(!0,t)}}),t.on("show",function(){t.parents().each(function(e){if(e.state.get("fixed"))return t.fixed(!0),!1})}),e.popover&&(t._preBodyHtml='
    ',t.classes.add("popover").add("bottom").add(t.isRtl()?"end":"start")),t.aria("label",e.ariaLabel),t.aria("labelledby",t._id),t.aria("describedby",t.describedBy||t._id+"-none")},fixed:function(e){var t=this;if(t.state.get("fixed")!=e){if(t.state.get("rendered")){var n=r.getViewPort();e?t.layoutRect().y-=n.y:t.layoutRect().y+=n.y}t.classes.toggle("fixed",e),t.state.set("fixed",e)}return t},show:function(){var e=this,t,n=e._super();for(t=v.length;t--&&v[t]!==e;);return t===-1&&v.push(e),n},hide:function(){return p(this),f(!1,this),this._super()},hideAll:function(){C.hideAll()},close:function(){var e=this;return e.fire("close").isDefaultPrevented()||(e.remove(),f(!1,e)),e},remove:function(){p(this),this._super()},postRender:function(){var e=this;return e.settings.bodyRole&&this.getEl("body").setAttribute("role",e.settings.bodyRole),e._super()}});return C.hideAll=function(){for(var e=v.length;e--;){var t=v[e];t&&t.settings.autohide&&(t.hide(),v.splice(e,1))}},C}),r(Be,[Ae,ke,ve,g,_e,ye,d,c],function(e,t,n,r,i,o,a,s){function l(e){var t="width=device-width,initial-scale=1.0,user-scalable=0,minimum-scale=1.0,maximum-scale=1.0",n=r("meta[name=viewport]")[0],i;a.overrideViewPort!==!1&&(n||(n=document.createElement("meta"),n.setAttribute("name","viewport"),document.getElementsByTagName("head")[0].appendChild(n)),i=n.getAttribute("content"),i&&"undefined"!=typeof p&&(p=i),n.setAttribute("content",e?t:p))}function u(e,t){c()&&t===!1&&r([document.documentElement,document.body]).removeClass(e+"fullscreen")}function c(){for(var e=0;er.w&&(o=r.x-Math.max(0,i/2),e.layoutRect({w:i,x:o}),a=!0)),t&&(t.layoutRect({w:e.layoutRect().innerW}).recalc(),i=t.layoutRect().minW+r.deltaW,i>r.w&&(o=r.x-Math.max(0,i-r.w),e.layoutRect({w:i,x:o}),a=!0)),a&&e.recalc()},initLayoutRect:function(){var e=this,t=e._super(),r=0,i;if(e.settings.title&&!e._fullscreen){i=e.getEl("head");var o=n.getSize(i);t.headerW=o.width,t.headerH=o.height,r+=t.headerH}e.statusbar&&(r+=e.statusbar.layoutRect().h),t.deltaH+=r,t.minH+=r,t.h+=r;var a=n.getWindowSize();return t.x=e.settings.x||Math.max(0,a.w/2-t.w/2),t.y=e.settings.y||Math.max(0,a.h/2-t.h/2),t},renderHtml:function(){var e=this,t=e._layout,n=e._id,r=e.classPrefix,i=e.settings,o="",a="",s=i.html;return e.preRender(),t.preRender(e),i.title&&(o='
    '+e.encode(i.title)+'
    '),i.url&&(s=''),"undefined"==typeof s&&(s=t.renderHtml(e)),e.statusbar&&(a=e.statusbar.renderHtml()),'
    '+o+'
    '+s+"
    "+a+"
    "},fullscreen:function(e){var t=this,i=document.documentElement,a,l=t.classPrefix,u;if(e!=t._fullscreen)if(r(window).on("resize",function(){var e;if(t._fullscreen)if(a)t._timer||(t._timer=s.setTimeout(function(){var e=n.getWindowSize();t.moveTo(0,0).resizeTo(e.w,e.h),t._timer=0},50));else{e=(new Date).getTime();var r=n.getWindowSize();t.moveTo(0,0).resizeTo(r.w,r.h),(new Date).getTime()-e>50&&(a=!0)}}),u=t.layoutRect(),t._fullscreen=e,e){t._initial={x:u.x,y:u.y,w:u.w,h:u.h},t.borderBox=o.parseBox("0"),t.getEl("head").style.display="none",u.deltaH-=u.headerH+2,r([i,document.body]).addClass(l+"fullscreen"),t.classes.add("fullscreen");var c=n.getWindowSize();t.moveTo(0,0).resizeTo(c.w,c.h)}else t.borderBox=o.parseBox(t.settings.border),t.getEl("head").style.display="",u.deltaH+=u.headerH,r([i,document.body]).removeClass(l+"fullscreen"),t.classes.remove("fullscreen"),t.moveTo(t._initial.x,t._initial.y).resizeTo(t._initial.w,t._initial.h);return t.reflow()},postRender:function(){var e=this,t;setTimeout(function(){e.classes.add("in"),e.fire("open")},0),e._super(),e.statusbar&&e.statusbar.postRender(),e.focus(),this.dragHelper=new i(e._id+"-dragh",{start:function(){t={x:e.layoutRect().x,y:e.layoutRect().y}},drag:function(n){e.moveTo(t.x+n.deltaX,t.y+n.deltaY)}}),e.on("submit",function(t){t.isDefaultPrevented()||e.close()}),f.push(e),l(!0)},submit:function(){return this.fire("submit",{data:this.toJSON()})},remove:function(){var e=this,t;for(e.dragHelper.destroy(),e._super(),e.statusbar&&this.statusbar.remove(),u(e.classPrefix,!1),t=f.length;t--;)f[t]===e&&f.splice(t,1);l(f.length>0)},getContentWindow:function(){var e=this.getEl().getElementsByTagName("iframe")[0];return e?e.contentWindow:null}});return d(),h}),r(De,[Be],function(e){var t=e.extend({init:function(e){e={border:1,padding:20,layout:"flex",pack:"center",align:"center",containerCls:"panel",autoScroll:!0,buttons:{type:"button",text:"Ok",action:"ok"},items:{type:"label",multiline:!0,maxWidth:500,maxHeight:200}},this._super(e)},Statics:{OK:1,OK_CANCEL:2,YES_NO:3,YES_NO_CANCEL:4,msgBox:function(n){function r(e,t,n){return{type:"button",text:e,subtype:n?"primary":"",onClick:function(e){e.control.parents()[1].close(),o(t)}}}var i,o=n.callback||function(){};switch(n.buttons){ -case t.OK_CANCEL:i=[r("Ok",!0,!0),r("Cancel",!1)];break;case t.YES_NO:case t.YES_NO_CANCEL:i=[r("Yes",1,!0),r("No",0)],n.buttons==t.YES_NO_CANCEL&&i.push(r("Cancel",-1));break;default:i=[r("Ok",!0,!0)]}return new e({padding:20,x:n.x,y:n.y,minWidth:300,minHeight:100,layout:"flex",pack:"center",align:"center",buttons:i,title:n.title,role:"alertdialog",items:{type:"label",multiline:!0,maxWidth:500,maxHeight:200,text:n.text},onPostRender:function(){this.aria("describedby",this.items()[0]._id)},onClose:n.onClose,onCancel:function(){o(!1)}}).renderTo(document.body).reflow()},alert:function(e,n){return"string"==typeof e&&(e={text:e}),e.callback=n,t.msgBox(e)},confirm:function(e,n){return"string"==typeof e&&(e={text:e}),e.callback=n,e.buttons=t.OK_CANCEL,t.msgBox(e)}}});return t}),r(Le,[Be,De],function(e,t){return function(n){function r(){if(s.length)return s[s.length-1]}function i(e){n.fire("OpenWindow",{win:e})}function o(e){n.fire("CloseWindow",{win:e})}var a=this,s=[];a.windows=s,n.on("remove",function(){for(var e=s.length;e--;)s[e].close()}),a.open=function(t,r){var a;return n.editorManager.setActive(n),t.title=t.title||" ",t.url=t.url||t.file,t.url&&(t.width=parseInt(t.width||320,10),t.height=parseInt(t.height||240,10)),t.body&&(t.items={defaults:t.defaults,type:t.bodyType||"form",items:t.body,data:t.data,callbacks:t.commands}),t.url||t.buttons||(t.buttons=[{text:"Ok",subtype:"primary",onclick:function(){a.find("form")[0].submit()}},{text:"Cancel",onclick:function(){a.close()}}]),a=new e(t),s.push(a),a.on("close",function(){for(var e=s.length;e--;)s[e]===a&&s.splice(e,1);s.length||n.focus(),o(a)}),t.data&&a.on("postRender",function(){this.find("*").each(function(e){var n=e.name();n in t.data&&e.value(t.data[n])})}),a.features=t||{},a.params=r||{},1===s.length&&n.nodeChanged(),a=a.renderTo().reflow(),i(a),a},a.alert=function(e,r,a){var s;s=t.alert(e,function(){r?r.call(a||this):n.focus()}),s.on("close",function(){o(s)}),i(s)},a.confirm=function(e,n,r){var a;a=t.confirm(e,function(e){n.call(r||this,e)}),a.on("close",function(){o(a)}),i(a)},a.close=function(){r()&&r().close()},a.getParams=function(){return r()?r().params:null},a.setParams=function(e){r()&&(r().params=e)},a.getWindows=function(){return s}}}),r(Me,[xe,Te],function(e,t){return e.extend({Mixins:[t],Defaults:{classes:"widget tooltip tooltip-n"},renderHtml:function(){var e=this,t=e.classPrefix;return'"},bindStates:function(){var e=this;return e.state.on("change:text",function(t){e.getEl().lastChild.innerHTML=e.encode(t.value)}),e._super()},repaint:function(){var e=this,t,n;t=e.getEl().style,n=e._layoutRect,t.left=n.x+"px",t.top=n.y+"px",t.zIndex=131070}})}),r(Pe,[xe,Me],function(e,t){var n,r=e.extend({init:function(e){var t=this;t._super(e),e=t.settings,t.canFocus=!0,e.tooltip&&r.tooltips!==!1&&(t.on("mouseenter",function(n){var r=t.tooltip().moveTo(-65535);if(n.control==t){var i=r.text(e.tooltip).show().testMoveRel(t.getEl(),["bc-tc","bc-tl","bc-tr"]);r.classes.toggle("tooltip-n","bc-tc"==i),r.classes.toggle("tooltip-nw","bc-tl"==i),r.classes.toggle("tooltip-ne","bc-tr"==i),r.moveRel(t.getEl(),i)}else r.hide()}),t.on("mouseleave mousedown click",function(){t.tooltip().hide()})),t.aria("label",e.ariaLabel||e.tooltip)},tooltip:function(){return n||(n=new t({type:"tooltip"}),n.renderTo()),n},postRender:function(){var e=this,t=e.settings;e._super(),e.parent()||!t.width&&!t.height||(e.initLayoutRect(),e.repaint()),t.autofocus&&e.focus()},bindStates:function(){function e(e){n.aria("disabled",e),n.classes.toggle("disabled",e)}function t(e){n.aria("pressed",e),n.classes.toggle("active",e)}var n=this;return n.state.on("change:disabled",function(t){e(t.value)}),n.state.on("change:active",function(e){t(e.value)}),n.state.get("disabled")&&e(!0),n.state.get("active")&&t(!0),n._super()},remove:function(){this._super(),n&&(n.remove(),n=null)}});return r}),r(Oe,[Pe],function(e){return e.extend({Defaults:{value:0},init:function(e){var t=this;t._super(e),t.classes.add("progress"),t.settings.filter||(t.settings.filter=function(e){return Math.round(e)})},renderHtml:function(){var e=this,t=e._id,n=this.classPrefix;return'
    0%
    '},postRender:function(){var e=this;return e._super(),e.value(e.settings.value),e},bindStates:function(){function e(e){e=t.settings.filter(e),t.getEl().lastChild.innerHTML=e+"%",t.getEl().firstChild.firstChild.style.width=e+"%"}var t=this;return t.state.on("change:value",function(t){e(t.value)}),e(t.state.get("value")),t._super()}})}),r(He,[xe,Te,Oe,c],function(e,t,n,r){return e.extend({Mixins:[t],Defaults:{classes:"widget notification"},init:function(e){var t=this;t._super(e),e.text&&t.text(e.text),e.icon&&(t.icon=e.icon),e.color&&(t.color=e.color),e.type&&t.classes.add("notification-"+e.type),e.timeout&&(e.timeout<0||e.timeout>0)&&!e.closeButton?t.closeButton=!1:(t.classes.add("has-close"),t.closeButton=!0),e.progressBar&&(t.progressBar=new n),t.on("click",function(e){e.target.className.indexOf(t.classPrefix+"close")!=-1&&t.close()})},renderHtml:function(){var e=this,t=e.classPrefix,n="",r="",i="",o="";return e.icon&&(n=''),e.color&&(o=' style="background-color: '+e.color+'"'),e.closeButton&&(r=''),e.progressBar&&(i=e.progressBar.renderHtml()),'"},postRender:function(){var e=this;return r.setTimeout(function(){e.$el.addClass(e.classPrefix+"in")}),e._super()},bindStates:function(){var e=this;return e.state.on("change:text",function(t){e.getEl().childNodes[1].innerHTML=t.value}),e.progressBar&&e.progressBar.bindStates(),e._super()},close:function(){var e=this;return e.fire("close").isDefaultPrevented()||e.remove(),e},repaint:function(){var e=this,t,n;t=e.getEl().style,n=e._layoutRect,t.left=n.x+"px",t.top=n.y+"px",t.zIndex=65534}})}),r(Ie,[He,c,m],function(e,t,n){return function(r){function i(){if(f.length)return f[f.length-1]}function o(){t.requestAnimationFrame(function(){a(),s()})}function a(){for(var e=0;e0){var e=f.slice(0,1)[0],t=r.inline?r.getElement():r.getContentAreaContainer();if(e.moveRel(t,"tc-tc"),f.length>1)for(var n=1;n0&&(n.timer=setTimeout(function(){n.close()},t.timeout)),n.on("close",function(){var e=f.length;for(n.timer&&r.getWin().clearTimeout(n.timer);e--;)f[e]===n&&f.splice(e,1);s()}),n.renderTo(),s()):n=i,n}},d.close=function(){i()&&i().close()},d.getNotifications=function(){return f},r.on("SkinLoaded",function(){var e=r.settings.service_message;e&&r.notificationManager.open({text:e,type:"warning",timeout:0,icon:""})})}}),r(Fe,[w],function(e){function t(t,n,r){for(var i=[];n&&n!=t;n=n.parentNode)i.push(e.nodeIndex(n,r));return i}function n(e,t){var n,r,i;for(r=e,n=t.length-1;n>=0;n--){if(i=r.childNodes,t[n]>i.length-1)return null;r=i[t[n]]}return r}return{create:t,resolve:n}}),r(ze,[I,T,y,Fe,A,C,d,m,c,k,$,oe],function(e,t,n,r,i,o,a,s,l,u,c,d){return function(f){function p(e,t){try{f.getDoc().execCommand(e,!1,t)}catch(n){}}function h(){var e=f.getDoc().documentMode;return e?e:6}function m(e){return e.isDefaultPrevented()}function g(e){var t,n;e.dataTransfer&&(f.selection.isCollapsed()&&"IMG"==e.target.tagName&&re.select(e.target),t=f.selection.getContent(),t.length>0&&(n=ce+escape(f.id)+","+escape(t),e.dataTransfer.setData(de,n)))}function v(e){var t;return e.dataTransfer&&(t=e.dataTransfer.getData(de),t&&t.indexOf(ce)>=0)?(t=t.substr(ce.length).split(","),{id:unescape(t[0]),html:unescape(t[1])}):null}function y(e){f.queryCommandSupported("mceInsertClipboardContent")?f.execCommand("mceInsertClipboardContent",!1,{content:e}):f.execCommand("mceInsertContent",!1,e)}function b(){function i(e){var t=x.schema.getBlockElements(),n=f.getBody();if("BR"!=e.nodeName)return!1;for(;e!=n&&!t[e.nodeName];e=e.parentNode)if(e.nextSibling)return!1;return!0}function o(e,t){var n;for(n=e.nextSibling;n&&n!=t;n=n.nextSibling)if((3!=n.nodeType||0!==Z.trim(n.data).length)&&n!==t)return!1;return n===t}function a(e,t,r){var o,a,s;if(x.isChildOf(e,f.getBody()))for(s=x.schema.getNonEmptyElements(),o=new n(r||e,e);a=o[t?"next":"prev"]();){if(s[a.nodeName]&&!i(a))return a;if(3==a.nodeType&&a.data.length>0)return a}}function u(e){var n,r,i,o,s;if(!e.collapsed&&(n=x.getParent(t.getNode(e.startContainer,e.startOffset),x.isBlock),r=x.getParent(t.getNode(e.endContainer,e.endOffset),x.isBlock),s=f.schema.getTextBlockElements(),n!=r&&s[n.nodeName]&&s[r.nodeName]&&"false"!==x.getContentEditable(n)&&"false"!==x.getContentEditable(r)))return e.deleteContents(),i=a(n,!1),o=a(r,!0),x.isEmpty(r)||Z(n).append(r.childNodes),Z(r).remove(),i?1==i.nodeType?"BR"==i.nodeName?(e.setStartBefore(i),e.setEndBefore(i)):(e.setStartAfter(i),e.setEndAfter(i)):(e.setStart(i,i.data.length),e.setEnd(i,i.data.length)):o&&(1==o.nodeType?(e.setStartBefore(o),e.setEndBefore(o)):(e.setStart(o,0),e.setEnd(o,0))),w.setRng(e),!0}function c(e,n){var r,i,s,l,u,c;if(!e.collapsed)return e;if(u=e.startContainer,c=e.startOffset,3==u.nodeType)if(n){if(c0)return e;r=t.getNode(u,c),s=x.getParent(r,x.isBlock),i=a(f.getBody(),n,r),l=x.getParent(i,x.isBlock);var d=1===u.nodeType&&c>u.childNodes.length-1;if(!r||!i)return e;if(l&&s!=l)if(n){if(!o(s,l))return e;1==r.nodeType?"BR"==r.nodeName?e.setStartBefore(r):e.setStartAfter(r):e.setStart(r,r.data.length),1==i.nodeType?e.setEnd(i,0):e.setEndBefore(i)}else{if(!o(l,s))return e;1==i.nodeType?"BR"==i.nodeName?e.setStartBefore(i):e.setStartAfter(i):e.setStart(i,i.data.length),1==r.nodeType&&d?e.setEndAfter(r):e.setEndBefore(r)}return e}function d(e){var t=w.getRng();if(t=c(t,e),u(t))return!0}function p(e,t){function n(e,n){return m=Z(n).parents().filter(function(e,t){return!!f.schema.getTextInlineElements()[t.nodeName]}),l=e.cloneNode(!1),m=s.map(m,function(e){return e=e.cloneNode(!1),l.hasChildNodes()?(e.appendChild(l.firstChild),l.appendChild(e)):l.appendChild(e),l.appendChild(e),e}),m.length?(h=x.create("br"),m[0].appendChild(h),x.replace(l,e),t.setStartBefore(h),t.setEndBefore(h),f.selection.setRng(t),h):null}function i(e){return e&&f.schema.getTextBlockElements()[e.tagName]}var o,a,l,u,c,d,p,h,m;if(t.collapsed&&(d=t.startContainer,p=t.startOffset,a=x.getParent(d,x.isBlock),i(a)))if(1==d.nodeType){if(d=d.childNodes[p],d&&"BR"!=d.tagName)return;if(c=e?a.nextSibling:a.previousSibling,x.isEmpty(a)&&i(c)&&x.isEmpty(c)&&n(a,d))return x.remove(c),!0}else if(3==d.nodeType){if(o=r.create(a,d),u=a.cloneNode(!0),d=r.resolve(u,o),e){if(p>=d.data.length)return;d.deleteData(p,1)}else{if(p<=0)return;d.deleteData(p-1,1)}if(x.isEmpty(u))return n(a,d)}}function h(e){var t,n,r;d(e)||(s.each(f.getBody().getElementsByTagName("*"),function(e){"SPAN"==e.tagName&&e.setAttribute("mce-data-marked",1),!e.hasAttribute("data-mce-style")&&e.hasAttribute("style")&&f.dom.setAttrib(e,"style",f.dom.getAttrib(e,"style"))}),t=new E(function(){}),t.observe(f.getDoc(),{childList:!0,attributes:!0,subtree:!0,attributeFilter:["style"]}),f.getDoc().execCommand(e?"ForwardDelete":"Delete",!1,null),n=f.selection.getRng(),r=n.startContainer.parentNode,s.each(t.takeRecords(),function(e){if(x.isChildOf(e.target,f.getBody())){if("style"==e.attributeName){var t=e.target.getAttribute("data-mce-style");t?e.target.setAttribute("style",t):e.target.removeAttribute("style")}s.each(e.addedNodes,function(e){if("SPAN"==e.nodeName&&!e.getAttribute("mce-data-marked")){var t,i;e==r&&(t=n.startOffset,i=e.firstChild),x.remove(e,!0),i&&(n.setStart(i,t),n.setEnd(i,t),f.selection.setRng(n))}})}}),t.disconnect(),s.each(f.dom.select("span[mce-data-marked]"),function(e){e.removeAttribute("mce-data-marked")}))}function b(e){f.undoManager.transact(function(){h(e)})}var C=f.getDoc(),x=f.dom,w=f.selection,E=window.MutationObserver,N,_;E||(N=!0,E=function(){function e(e){var t=e.relatedNode||e.target;n.push({target:t,addedNodes:[t]})}function t(e){var t=e.relatedNode||e.target;n.push({target:t,attributeName:e.attrName})}var n=[],r;this.observe=function(n){r=n,r.addEventListener("DOMSubtreeModified",e,!1),r.addEventListener("DOMNodeInsertedIntoDocument",e,!1),r.addEventListener("DOMNodeInserted",e,!1),r.addEventListener("DOMAttrModified",t,!1)},this.disconnect=function(){r.removeEventListener("DOMSubtreeModified",e,!1),r.removeEventListener("DOMNodeInsertedIntoDocument",e,!1),r.removeEventListener("DOMNodeInserted",e,!1),r.removeEventListener("DOMAttrModified",t,!1)},this.takeRecords=function(){return n}}),f.on("keydown",function(e){var t=e.keyCode==te,n=e.ctrlKey||e.metaKey;if(!m(e)&&(t||e.keyCode==ee)){var r=f.selection.getRng(),i=r.startContainer,o=r.startOffset;if(t&&e.shiftKey)return;if(p(t,r))return void e.preventDefault();if(!n&&r.collapsed&&3==i.nodeType&&(t?o0))return;e.preventDefault(),n&&f.selection.getSel().modify("extend",t?"forward":"backward",e.metaKey?"lineboundary":"word"),h(t)}}),f.on("keypress",function(t){if(!m(t)&&!w.isCollapsed()&&t.charCode>31&&!e.metaKeyPressed(t)){var n,r,i,o,a,s;n=f.selection.getRng(),s=String.fromCharCode(t.charCode),t.preventDefault(),r=Z(n.startContainer).parents().filter(function(e,t){return!!f.schema.getTextInlineElements()[t.nodeName]}),h(!0),r=r.filter(function(e,t){return!Z.contains(f.getBody(),t)}),r.length?(i=x.createFragment(),r.each(function(e,t){t=t.cloneNode(!1),i.hasChildNodes()?(t.appendChild(i.firstChild),i.appendChild(t)):(a=t,i.appendChild(t)),i.appendChild(t)}),a.appendChild(f.getDoc().createTextNode(s)),o=x.getParent(n.startContainer,x.isBlock),x.isEmpty(o)?Z(o).empty().append(i):n.insertNode(i),n.setStart(a.firstChild,1),n.setEnd(a.firstChild,1),f.selection.setRng(n)):f.selection.setContent(s)}}),f.addCommand("Delete",function(){h()}),f.addCommand("ForwardDelete",function(){h(!0)}),N||(f.on("dragstart",function(e){_=w.getRng(),g(e)}),f.on("drop",function(e){if(!m(e)){var n=v(e);n&&(e.preventDefault(),l.setEditorTimeout(f,function(){var r=t.getCaretRangeFromPoint(e.x,e.y,C);_&&(w.setRng(_),_=null,b()),w.setRng(r),y(n.html)}))}}),f.on("cut",function(e){m(e)||!e.clipboardData||f.selection.isCollapsed()||(e.preventDefault(),e.clipboardData.clearData(),e.clipboardData.setData("text/html",f.selection.getContent()),e.clipboardData.setData("text/plain",f.selection.getContent({format:"text"})),l.setEditorTimeout(f,function(){b(!0)}))}))}function C(){function e(e){var t=ne.create("body"),n=e.cloneContents();return t.appendChild(n),re.serializer.serialize(t,{format:"html"})}function n(n){if(!n.setStart){if(n.item)return!1;var r=n.duplicate();return r.moveToElementText(f.getBody()),t.compareRanges(n,r)}var i=e(n),o=ne.createRng();o.selectNode(f.getBody());var a=e(o);return i===a}f.on("keydown",function(e){var t=e.keyCode,r,i;if(!m(e)&&(t==te||t==ee)){if(r=f.selection.isCollapsed(),i=f.getBody(),r&&!ne.isEmpty(i))return;if(!r&&!n(f.selection.getRng()))return;e.preventDefault(),f.setContent(""),i.firstChild&&ne.isBlock(i.firstChild)?f.selection.setCursorLocation(i.firstChild,0):f.selection.setCursorLocation(i,0),f.nodeChanged()}})}function x(){f.shortcuts.add("meta+a",null,"SelectAll")}function w(){f.settings.content_editable||ne.bind(f.getDoc(),"mousedown mouseup",function(e){var t;if(e.target==f.getDoc().documentElement)if(t=re.getRng(),f.getBody().focus(),"mousedown"==e.type){if(u.isCaretContainer(t.startContainer))return;re.placeCaretAt(e.clientX,e.clientY)}else re.setRng(t)})}function E(){f.on("keydown",function(e){if(!m(e)&&e.keyCode===ee){if(!f.getBody().getElementsByTagName("hr").length)return;if(re.isCollapsed()&&0===re.getRng(!0).startOffset){var t=re.getNode(),n=t.previousSibling;if("HR"==t.nodeName)return ne.remove(t),void e.preventDefault();n&&n.nodeName&&"hr"===n.nodeName.toLowerCase()&&(ne.remove(n),e.preventDefault())}}})}function N(){window.Range.prototype.getClientRects||f.on("mousedown",function(e){if(!m(e)&&"HTML"===e.target.nodeName){var t=f.getBody();t.blur(),l.setEditorTimeout(f,function(){t.focus()})}})}function _(){f.on("click",function(e){var t=e.target;/^(IMG|HR)$/.test(t.nodeName)&&"false"!==ne.getContentEditableParent(t)&&(e.preventDefault(),re.select(t),f.nodeChanged()),"A"==t.nodeName&&ne.hasClass(t,"mce-item-anchor")&&(e.preventDefault(),re.select(t))})}function S(){function e(){var e=ne.getAttribs(re.getStart().cloneNode(!1));return function(){var t=re.getStart();t!==f.getBody()&&(ne.setAttrib(t,"style",null),Q(e,function(e){t.setAttributeNode(e.cloneNode(!0))}))}}function t(){return!re.isCollapsed()&&ne.getParent(re.getStart(),ne.isBlock)!=ne.getParent(re.getEnd(),ne.isBlock)}f.on("keypress",function(n){var r;if(!m(n)&&(8==n.keyCode||46==n.keyCode)&&t())return r=e(),f.getDoc().execCommand("delete",!1,null),r(),n.preventDefault(),!1}),ne.bind(f.getDoc(),"cut",function(n){var r;!m(n)&&t()&&(r=e(),l.setEditorTimeout(f,function(){r()}))})}function k(){document.body.setAttribute("role","application")}function T(){f.on("keydown",function(e){if(!m(e)&&e.keyCode===ee&&re.isCollapsed()&&0===re.getRng(!0).startOffset){var t=re.getNode().previousSibling;if(t&&t.nodeName&&"table"===t.nodeName.toLowerCase())return e.preventDefault(),!1}})}function R(){h()>7||(p("RespectVisibilityInDesign",!0),f.contentStyles.push(".mceHideBrInPre pre br {display: none}"),ne.addClass(f.getBody(),"mceHideBrInPre"),oe.addNodeFilter("pre",function(e){for(var t=e.length,n,r,o,a;t--;)for(n=e[t].getAll("br"),r=n.length;r--;)o=n[r],a=o.prev,a&&3===a.type&&"\n"!=a.value.charAt(a.value-1)?a.value+="\n":o.parent.insert(new i("#text",3),o,!0).value="\n"}),ae.addNodeFilter("pre",function(e){for(var t=e.length,n,r,i,o;t--;)for(n=e[t].getAll("br"),r=n.length;r--;)i=n[r],o=i.prev,o&&3==o.type&&(o.value=o.value.replace(/\r?\n$/,""))}))}function A(){ne.bind(f.getBody(),"mouseup",function(){var e,t=re.getNode();"IMG"==t.nodeName&&((e=ne.getStyle(t,"width"))&&(ne.setAttrib(t,"width",e.replace(/[^0-9%]+/g,"")),ne.setStyle(t,"width","")),(e=ne.getStyle(t,"height"))&&(ne.setAttrib(t,"height",e.replace(/[^0-9%]+/g,"")),ne.setStyle(t,"height","")))})}function B(){f.on("keydown",function(t){var n,r,i,o,a;if(!m(t)&&t.keyCode==e.BACKSPACE&&(n=re.getRng(),r=n.startContainer,i=n.startOffset,o=ne.getRoot(),a=r,n.collapsed&&0===i)){for(;a&&a.parentNode&&a.parentNode.firstChild==a&&a.parentNode!=o;)a=a.parentNode;"BLOCKQUOTE"===a.tagName&&(f.formatter.toggle("blockquote",null,a),n=ne.createRng(),n.setStart(r,0),n.setEnd(r,0),re.setRng(n))}})}function D(){function e(){K(),p("StyleWithCSS",!1),p("enableInlineTableEditing",!1),ie.object_resizing||p("enableObjectResizing",!1)}ie.readonly||f.on("BeforeExecCommand MouseDown",e)}function L(){function e(){Q(ne.select("a"),function(e){var t=e.parentNode,n=ne.getRoot();if(t.lastChild===e){for(;t&&!ne.isBlock(t);){if(t.parentNode.lastChild!==t||t===n)return;t=t.parentNode}ne.add(t,"br",{"data-mce-bogus":1})}})}f.on("SetContent ExecCommand",function(t){"setcontent"!=t.type&&"mceInsertLink"!==t.command||e()})}function M(){ie.forced_root_block&&f.on("init",function(){p("DefaultParagraphSeparator",ie.forced_root_block)})}function P(){f.on("keydown",function(e){var t;m(e)||e.keyCode!=ee||(t=f.getDoc().selection.createRange(),t&&t.item&&(e.preventDefault(),f.undoManager.beforeChange(),ne.remove(t.item(0)),f.undoManager.add()))})}function O(){var e;h()>=10&&(e="",Q("p div h1 h2 h3 h4 h5 h6".split(" "),function(t,n){e+=(n>0?",":"")+t+":empty"}),f.contentStyles.push(e+"{padding-right: 1px !important}"))}function H(){h()<9&&(oe.addNodeFilter("noscript",function(e){for(var t=e.length,n,r;t--;)n=e[t],r=n.firstChild,r&&n.attr("data-mce-innertext",r.value)}),ae.addNodeFilter("noscript",function(e){for(var t=e.length,n,r,a;t--;)n=e[t],r=e[t].firstChild,r?r.value=o.decode(r.value):(a=n.attributes.map["data-mce-innertext"],a&&(n.attr("data-mce-innertext",null),r=new i("#text",3),r.value=a,r.raw=!0,n.append(r)))}))}function I(){function e(e,t){var n=i.createTextRange();try{n.moveToPoint(e,t)}catch(r){n=null}return n}function t(t){var r;t.button?(r=e(t.x,t.y),r&&(r.compareEndPoints("StartToStart",a)>0?r.setEndPoint("StartToStart",a):r.setEndPoint("EndToEnd",a),r.select())):n()}function n(){var e=r.selection.createRange();a&&!e.item&&0===e.compareEndPoints("StartToEnd",e)&&a.select(),ne.unbind(r,"mouseup",n),ne.unbind(r,"mousemove",t),a=o=0}var r=ne.doc,i=r.body,o,a,s;r.documentElement.unselectable=!0,ne.bind(r,"mousedown contextmenu",function(i){if("HTML"===i.target.nodeName){if(o&&n(),s=r.documentElement,s.scrollHeight>s.clientHeight)return;o=1,a=e(i.x,i.y),a&&(ne.bind(r,"mouseup",n),ne.bind(r,"mousemove",t),ne.getRoot().focus(),a.select())}})}function F(){f.on("keyup focusin mouseup",function(t){65==t.keyCode&&e.metaKeyPressed(t)||re.normalize()},!0)}function z(){f.contentStyles.push("img:-moz-broken {-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}")}function U(){f.inline||f.on("keydown",function(){document.activeElement==document.body&&f.getWin().focus()})}function W(){f.inline||(f.contentStyles.push("body {min-height: 150px}"),f.on("click",function(e){var t;if("HTML"==e.target.nodeName){if(a.ie>11)return void f.getBody().focus();t=f.selection.getRng(),f.getBody().focus(),f.selection.setRng(t),f.selection.normalize(),f.nodeChanged()}}))}function V(){a.mac&&f.on("keydown",function(t){!e.metaKeyPressed(t)||t.shiftKey||37!=t.keyCode&&39!=t.keyCode||(t.preventDefault(),f.selection.getSel().modify("move",37==t.keyCode?"backward":"forward","lineboundary"))})}function $(){p("AutoUrlDetect",!1)}function q(){f.on("click",function(e){var t=e.target;do if("A"===t.tagName)return void e.preventDefault();while(t=t.parentNode)}),f.contentStyles.push(".mce-content-body {-webkit-touch-callout: none}")}function j(){f.on("init",function(){f.dom.bind(f.getBody(),"submit",function(e){e.preventDefault()})})}function Y(){oe.addNodeFilter("br",function(e){for(var t=e.length;t--;)"Apple-interchange-newline"==e[t].attr("class")&&e[t].remove()})}function X(){f.on("dragstart",function(e){g(e)}),f.on("drop",function(e){if(!m(e)){var n=v(e);if(n&&n.id!=f.id){e.preventDefault();var r=t.getCaretRangeFromPoint(e.x,e.y,f.getDoc());re.setRng(r),y(n.html)}}})}function K(){}function G(){var e;return se?(e=f.selection.getSel(),!e||!e.rangeCount||0===e.rangeCount):0}function J(){function t(e){var t=new d(e.getBody()),n=e.selection.getRng(),r=c.fromRangeStart(n),i=c.fromRangeEnd(n),o=t.prev(r),a=t.next(i);return!e.selection.isCollapsed()&&(!o||o.isAtStart()&&r.isEqual(o))&&(!a||a.isAtEnd()&&r.isEqual(a))}f.on("keypress",function(n){!m(n)&&!re.isCollapsed()&&n.charCode>31&&!e.metaKeyPressed(n)&&t(f)&&(n.preventDefault(),f.setContent(String.fromCharCode(n.charCode)),f.selection.select(f.getBody(),!0),f.selection.collapse(!1),f.nodeChanged())}),f.on("keydown",function(e){var n=e.keyCode;m(e)||n!=te&&n!=ee||t(f)&&(e.preventDefault(),f.setContent(""),f.nodeChanged())})}var Q=s.each,Z=f.$,ee=e.BACKSPACE,te=e.DELETE,ne=f.dom,re=f.selection,ie=f.settings,oe=f.parser,ae=f.serializer,se=a.gecko,le=a.ie,ue=a.webkit,ce="data:text/mce-internal,",de=le?"Text":"URL";return B(),C(),a.windowsPhone||F(),ue&&(J(),b(),w(),_(),M(),j(),T(),Y(),a.iOS?(U(),W(),q()):x()),le&&a.ie<11&&(E(),k(),R(),A(),P(),O(),H(),I()),a.ie>=11&&(W(),T()),a.ie&&(x(),$(),X()),se&&(J(),E(),N(),S(),D(),L(),z(),V(),T()),{refreshContentEditable:K,isHidden:G}}}),r(Ue,[pe,w,m],function(e,t,n){function r(e,t){return"selectionchange"==t?e.getDoc():!e.inline&&/^mouse|touch|click|contextmenu|drop|dragover|dragend/.test(t)?e.getDoc().documentElement:e.settings.event_root?(e.eventRoot||(e.eventRoot=o.select(e.settings.event_root)[0]),e.eventRoot):e.getBody()}function i(e,t){function n(e){return!e.hidden&&!e.readonly}var i=r(e,t),s;if(e.delegates||(e.delegates={}),!e.delegates[t])if(e.settings.event_root){if(a||(a={},e.editorManager.on("removeEditor",function(){var t;if(!e.editorManager.activeEditor&&a){for(t in a)e.dom.unbind(r(e,t));a=null}})),a[t])return;s=function(r){for(var i=r.target,a=e.editorManager.editors,s=a.length;s--;){var l=a[s].getBody();(l===i||o.isChildOf(i,l))&&n(a[s])&&a[s].fire(t,r)}},a[t]=s,o.bind(i,t,s)}else s=function(r){n(e)&&e.fire(t,r)},o.bind(i,t,s),e.delegates[t]=s}var o=t.DOM,a,s={bindPendingEventDelegates:function(){var e=this;n.each(e._pendingNativeEvents,function(t){i(e,t)})},toggleNativeEvent:function(e,t){var n=this;"focus"!=e&&"blur"!=e&&(t?n.initialized?i(n,e):n._pendingNativeEvents?n._pendingNativeEvents.push(e):n._pendingNativeEvents=[e]:n.initialized&&(n.dom.unbind(r(n,e),e,n.delegates[e]),delete n.delegates[e]))},unbindAllNativeEvents:function(){var e=this,t;if(e.delegates){for(t in e.delegates)e.dom.unbind(r(e,t),t,e.delegates[t]);delete e.delegates}e.inline||(e.getBody().onload=null,e.dom.unbind(e.getWin()),e.dom.unbind(e.getDoc())),e.dom.unbind(e.getBody()),e.dom.unbind(e.getContainer())}};return s=n.extend({},e,s)}),r(We,[],function(){function e(e,t,n){try{e.getDoc().execCommand(t,!1,n)}catch(r){}}function t(e){var t,n;return t=e.getBody(),n=function(t){e.dom.getParents(t.target,"a").length>0&&t.preventDefault()},e.dom.bind(t,"click",n),{unbind:function(){e.dom.unbind(t,"click",n)}}}function n(n,r){n._clickBlocker&&(n._clickBlocker.unbind(),n._clickBlocker=null),r?(n._clickBlocker=t(n),n.selection.controlSelection.hideResizeRect(),n.readonly=!0,n.getBody().contentEditable=!1):(n.readonly=!1,n.getBody().contentEditable=!0,e(n,"StyleWithCSS",!1),e(n,"enableInlineTableEditing",!1),e(n,"enableObjectResizing",!1),n.focus(),n.nodeChanged())}function r(e,t){var r=e.readonly?"readonly":"design";t!=r&&(e.initialized?n(e,"readonly"==t):e.on("init",function(){n(e,"readonly"==t)}),e.fire("SwitchMode",{mode:t}))}return{setMode:r}}),r(Ve,[m,d],function(e,t){var n=e.each,r=e.explode,i={f9:120,f10:121,f11:122},o=e.makeMap("alt,ctrl,shift,meta,access");return function(a){function s(e){var a,s,l={};n(r(e,"+"),function(e){e in o?l[e]=!0:/^[0-9]{2,}$/.test(e)?l.keyCode=parseInt(e,10):(l.charCode=e.charCodeAt(0),l.keyCode=i[e]||e.toUpperCase().charCodeAt(0))}),a=[l.keyCode];for(s in o)l[s]?a.push(s):l[s]=!1;return l.id=a.join(","),l.access&&(l.alt=!0,t.mac?l.ctrl=!0:l.shift=!0),l.meta&&(t.mac?l.meta=!0:(l.ctrl=!0,l.meta=!1)),l}function l(t,n,i,o){var l;return l=e.map(r(t,">"),s),l[l.length-1]=e.extend(l[l.length-1],{func:i,scope:o||a}),e.extend(l[0],{desc:a.translate(n),subpatterns:l.slice(1)})}function u(e){return e.altKey||e.ctrlKey||e.metaKey}function c(e){return"keydown"===e.type&&e.keyCode>=112&&e.keyCode<=123}function d(e,t){return!!t&&(t.ctrl==e.ctrlKey&&t.meta==e.metaKey&&(t.alt==e.altKey&&t.shift==e.shiftKey&&(!!(e.keyCode==t.keyCode||e.charCode&&e.charCode==t.charCode)&&(e.preventDefault(),!0))))}function f(e){return e.func?e.func.call(e.scope):null}var p=this,h={},m=[];a.on("keyup keypress keydown",function(e){!u(e)&&!c(e)||e.isDefaultPrevented()||(n(h,function(t){if(d(e,t))return m=t.subpatterns.slice(0),"keydown"==e.type&&f(t),!0}),d(e,m[0])&&(1===m.length&&"keydown"==e.type&&f(m[0]),m.shift()))}),p.add=function(t,i,o,s){var u;return u=o,"string"==typeof o?o=function(){a.execCommand(u,!1,null)}:e.isArray(u)&&(o=function(){a.execCommand(u[0],u[1],u[2])}),n(r(e.trim(t.toLowerCase())),function(e){var t=l(e,i,o,s);h[t.id]=t}),!0},p.remove=function(e){var t=l(e);return!!h[t.id]&&(delete h[t.id],!0)}}}),r($e,[u,m,z],function(e,t,n){return function(r,i){function o(e){var t,n;return n={"image/jpeg":"jpg","image/jpg":"jpg","image/gif":"gif","image/png":"png"},t=n[e.blob().type.toLowerCase()]||"dat",e.filename()+"."+t}function a(e,t){return e?e.replace(/\/$/,"")+"/"+t.replace(/^\//,""):t}function s(e){return{id:e.id,blob:e.blob,base64:e.base64,filename:n.constant(o(e))}}function l(e,t,n,r){var o,s;o=new XMLHttpRequest,o.open("POST",i.url),o.withCredentials=i.credentials,o.upload.onprogress=function(e){r(e.loaded/e.total*100)},o.onerror=function(){n("Image upload failed due to a XHR Transport error. Code: "+o.status)},o.onload=function(){var e;return 200!=o.status?void n("HTTP Error: "+o.status):(e=JSON.parse(o.responseText),e&&"string"==typeof e.location?void t(a(i.basePath,e.location)):void n("Invalid JSON: "+o.responseText))},s=new FormData,s.append("file",e.blob(),e.filename()),o.send(s)}function u(){return new e(function(e){e([])})}function c(e,t){return{url:t,blobInfo:e,status:!0}}function d(e,t){return{url:"",blobInfo:e,status:!1,error:t}}function f(e,n){t.each(y[e],function(e){e(n)}),delete y[e]}function p(t,n,i){return r.markPending(t.blobUri()),new e(function(e){var o,a,l=function(){};try{var u=function(){o&&(o.close(),a=l)},p=function(n){u(),r.markUploaded(t.blobUri(),n),f(t.blobUri(),c(t,n)),e(c(t,n))},h=function(n){u(),r.removeFailed(t.blobUri()),f(t.blobUri(),d(t,n)),e(d(t,n))};a=function(e){e<0||e>100||(o||(o=i()),o.progressBar.value(e))},n(s(t),p,h,a)}catch(m){e(d(t,m.message))}})}function h(e){return e===l}function m(t){var n=t.blobUri();return new e(function(e){y[n]=y[n]||[],y[n].push(e)})}function g(n,o){return n=t.grep(n,function(e){return!r.isUploaded(e.blobUri())}),e.all(t.map(n,function(e){return r.isPending(e.blobUri())?m(e):p(e,i.handler,o)}))}function v(e,t){return!i.url&&h(i.handler)?u():g(e,t)}var y={};return i=t.extend({credentials:!1,handler:l},i),{upload:v}}}),r(qe,[u],function(e){function t(t){return new e(function(e){var n=new XMLHttpRequest;n.open("GET",t,!0),n.responseType="blob",n.onload=function(){200==this.status&&e(this.response)},n.send()})}function n(e){var t,n;return e=decodeURIComponent(e).split(","),n=/data:([^;]+)/.exec(e[0]),n&&(t=n[1]),{type:t,data:e[1]}}function r(t){return new e(function(e){var r,i,o;t=n(t);try{r=atob(t.data)}catch(a){return void e(new Blob([]))}for(i=new Uint8Array(r.length),o=0;o0&&(n&&(l*=-1),r.left+=l,r.right+=l),r}function l(){var n,r,o,a,s;for(n=i("*[contentEditable=false]",t),a=0;a').css(l).appendTo(t),o&&m.addClass("mce-visual-caret-before"),d(),u=a.ownerDocument.createRange(),u.setStart(g,0),u.setEnd(g,0),u):(g=e.insertInline(a,o),u=a.ownerDocument.createRange(),s(g.nextSibling)?(u.setStart(g,0),u.setEnd(g,0)):(u.setStart(g,1),u.setEnd(g,1)),u)}function c(){l(),g&&(e.remove(g),g=null),m&&(m.remove(),m=null),clearInterval(h)}function d(){h=a.setInterval(function(){i("div.mce-visual-caret",t).toggleClass("mce-visual-caret-hidden")},500)}function f(){a.clearInterval(h)}function p(){return".mce-visual-caret {position: absolute;background-color: black;background-color: currentcolor;}.mce-visual-caret-hidden {display: none;}*[data-mce-caret] {position: absolute;left: -1000px;right: auto;top: 0;margin: 0;padding: 0;}"}var h,m,g;return{show:u,hide:c,getCss:p,destroy:f}}}),r(Qe,[h,_,W],function(e,t,n){function r(i){function o(t){return e.map(t,function(e){return e=n.clone(e),e.node=i,e})}if(e.isArray(i))return e.reduce(i,function(e,t){return e.concat(r(t))},[]);if(t.isElement(i))return o(i.getClientRects());if(t.isText(i)){var a=i.ownerDocument.createRange();return a.setStart(i,0),a.setEnd(i,i.data.length),o(a.getClientRects())}}return{getClientRects:r}}),r(Ze,[z,h,Qe,U,ie,oe,$,W],function(e,t,n,r,i,o,a,s){function l(e,t,n,o){for(;o=i.findNode(o,e,r.isEditableCaretCandidate,t);)if(n(o))return}function u(e,r,i,o,a,s){function u(o){var s,l,u;for(u=n.getClientRects(o),e==-1&&(u=u.reverse()),s=0;s0&&r(l,t.last(f))&&c++,l.line=c,a(l))return!0;f.push(l)}}var c=0,d,f=[],p;return(p=t.last(s.getClientRects()))?(d=s.getNode(),u(d),l(e,o,u,d),f):f}function c(e,t){return t.line>e}function d(e,t){return t.line===e}function f(e,n,r,i){function l(n){return 1==e?t.last(n.getClientRects()):t.last(n.getClientRects())}var u=new o(n),c,d,f,p,h=[],m=0,g,v;1==e?(c=u.next,d=s.isBelow,f=s.isAbove,p=a.after(i)):(c=u.prev,d=s.isAbove,f=s.isBelow,p=a.before(i)),v=l(p);do if(p.isVisible()&&(g=l(p),!f(g,v))){if(h.length>0&&d(g,t.last(h))&&m++,g=s.clone(g),g.position=p,g.line=m,r(g))return h;h.push(g)}while(p=c(p));return h}var p=e.curry,h=p(u,-1,s.isAbove,s.isBelow),m=p(u,1,s.isBelow,s.isAbove);return{upUntil:h,downUntil:m,positionsUntil:f,isAboveLine:p(c),isLine:p(d)}}),r(et,[z,h,_,Qe,W,ie,U],function(e,t,n,r,i,o,a){function s(e,t){return Math.abs(e.left-t)}function l(e,t){return Math.abs(e.right-t)}function u(e,n){function r(e,t){return e>=t.left&&e<=t.right}return t.reduce(e,function(e,t){var i,o;return i=Math.min(s(e,n),l(e,n)),o=Math.min(s(t,n),l(t,n)),r(n,t)?t:r(n,e)?e:o==i&&m(t.node)?t:o=e.top&&i<=e.bottom}),a=u(o,n),a&&(a=u(d(e,a),n),a&&m(a.node))?p(a,n):null}var m=n.isContentEditableFalse,g=o.findNode,v=e.curry;return{findClosestClientRect:u,findLineNodeRects:d,closestCaret:h}}),r(tt,[],function(){var e=function(e){var t,n,r,i;return i=e.getBoundingClientRect(),t=e.ownerDocument,n=t.documentElement,r=t.defaultView,{top:i.top+r.pageYOffset-n.clientTop,left:i.left+r.pageXOffset-n.clientLeft}},t=function(t){return t.inline?e(t.getBody()):{left:0,top:0}},n=function(e){var t=e.getBody();return e.inline?{left:t.scrollLeft,top:t.scrollTop}:{left:0,top:0}},r=function(e){var t=e.getBody(),n=e.getDoc().documentElement,r={left:t.scrollLeft,top:t.scrollTop},i={left:t.scrollLeft||n.scrollLeft,top:t.scrollTop||n.scrollTop};return e.inline?r:i},i=function(t,n){if(n.target.ownerDocument!==t.getDoc()){var i=e(t.getContentAreaContainer()),o=r(t);return{left:n.pageX-i.left+o.left,top:n.pageY-i.top+o.top}}return{left:n.pageX,top:n.pageY}},o=function(e,t,n){return{pageX:n.left-e.left+t.left,pageY:n.top-e.top+t.top}},a=function(e,r){return o(t(e),n(e),i(e,r))};return{calc:a}}),r(nt,[_,h,z,c,w,tt],function(e,t,n,r,i,o){var a=e.isContentEditableFalse,s=e.isContentEditableTrue,l=function(e,t){return a(t)&&t!==e},u=function(e,t,n){return t!==n&&!e.dom.isChildOf(t,n)&&!a(t)},c=function(e){var t=e.cloneNode(!0);return t.removeAttribute("data-mce-selected"),t},d=function(e,t,n,r){var i=t.cloneNode(!0);e.dom.setStyles(i,{width:n,height:r}),e.dom.setAttrib(i,"data-mce-selected",null);var o=e.dom.create("div",{"class":"mce-drag-container","data-mce-bogus":"all",unselectable:"on",contenteditable:"false"});return e.dom.setStyles(o,{position:"absolute",opacity:.5,overflow:"hidden",border:0,padding:0,margin:0,width:n,height:r}),e.dom.setStyles(i,{margin:0,boxSizing:"border-box"}),o.appendChild(i),o},f=function(e,t){e.parentNode!==t&&t.appendChild(e)},p=function(e,t,n,r,i,o){var a=0,s=0;e.style.left=t.pageX+"px",e.style.top=t.pageY+"px",t.pageX+n>i&&(a=t.pageX+n-i),t.pageY+r>o&&(s=t.pageY+r-o),e.style.width=n-a+"px",e.style.height=r-s+"px"},h=function(e){e&&e.parentNode&&e.parentNode.removeChild(e)},m=function(e){return 0===e.button},g=function(e){return e.element},v=function(e,t){return{pageX:t.pageX-e.relX,pageY:t.pageY+5}},y=function(e,r){return function(i){if(m(i)){var o=t.find(r.dom.getParents(i.target),n.or(a,s));if(l(r.getBody(),o)){var u=r.dom.getPos(o),c=r.getBody(),f=r.getDoc().documentElement;e.element=o,e.screenX=i.screenX,e.screenY=i.screenY,e.maxX=(r.inline?c.scrollWidth:f.offsetWidth)-2,e.maxY=(r.inline?c.scrollHeight:f.offsetHeight)-2,e.relX=i.pageX-u.x,e.relY=i.pageY-u.y,e.width=o.offsetWidth,e.height=o.offsetHeight,e.ghost=d(r,o,e.width,e.height)}}}},b=function(e,t){var n=r.throttle(function(e,n){t._selectionOverrides.hideFakeCaret(),t.selection.placeCaretAt(e,n)},0);return function(r){var i=Math.max(Math.abs(r.screenX-e.screenX),Math.abs(r.screenY-e.screenY));if(g(e)&&!e.dragging&&i>10){var a=t.fire("dragstart",{target:e.element});if(a.isDefaultPrevented())return;e.dragging=!0,t.focus()}if(e.dragging){var s=v(e,o.calc(t,r));f(e.ghost,t.getBody()),p(e.ghost,s,e.width,e.height,e.maxX,e.maxY),n(r.clientX,r.clientY)}}},C=function(e){var t=e.getSel().getRangeAt(0),n=t.startContainer;return 3===n.nodeType?n.parentNode:n},x=function(e,t){return function(n){if(e.dragging&&u(t,C(t.selection),e.element)){var r=c(e.element),i=t.fire("drop",{targetClone:r,clientX:n.clientX,clientY:n.clientY});i.isDefaultPrevented()||(r=i.targetClone,t.undoManager.transact(function(){h(e.element),t.insertContent(t.dom.getOuterHTML(r)),t._selectionOverrides.hideFakeCaret()}))}E(e)}},w=function(e,t){return function(){E(e),e.dragging&&t.fire("dragend")}},E=function(e){e.dragging=!1,e.element=null,h(e.ghost)},N=function(e){var t={},n,r,o,a,s,l;n=i.DOM,l=document,r=y(t,e),o=b(t,e),a=x(t,e),s=w(t,e),e.on("mousedown",r),e.on("mousemove",o),e.on("mouseup",a),n.bind(l,"mousemove",o),n.bind(l,"mouseup",s),e.on("remove",function(){n.unbind(l,"mousemove",o),n.unbind(l,"mouseup",s)})},_=function(e){e.on("drop",function(t){var n="undefined"!=typeof t.clientX?e.getDoc().elementFromPoint(t.clientX,t.clientY):null;(a(n)||a(e.dom.getContentEditableParent(n)))&&t.preventDefault()})},S=function(e){N(e),_(e)};return{init:S}}),r(rt,[d,oe,$,k,ie,Je,Ze,et,_,T,W,I,z,h,c,nt],function(e,t,n,r,i,o,a,s,l,u,c,d,f,p,h,m){function g(e,t){for(;t=e(t);)if(t.isVisible())return t;return t}function v(u){function v(e){return u.dom.hasClass(e,"mce-offscreen-selection")}function _(){var e=u.dom.get(le);return e?e.getElementsByTagName("*")[0]:e}function S(e){return u.dom.isBlock(e)}function k(e){e&&u.selection.setRng(e)}function T(){return u.selection.getRng()}function R(e,t){u.selection.scrollIntoView(e,t)}function A(e,t,n){var r;return r=u.fire("ShowCaret",{target:t,direction:e,before:n}),r.isDefaultPrevented()?null:(R(t,e===-1),se.show(n,t))}function B(e){var t;return t=u.fire("BeforeObjectSelected",{target:e}),t.isDefaultPrevented()?null:D(e)}function D(e){var t=e.ownerDocument.createRange();return t.selectNode(e),t}function L(e,t){var n=i.isInSameBlock(e,t);return!(n||!l.isBr(e.getNode()))||n}function M(e,t){return t=i.normalizeRange(e,re,t),e==-1?n.fromRangeStart(t):n.fromRangeEnd(t)}function P(e){return r.isCaretContainerBlock(e.startContainer)}function O(e,t,n,r){var i,o,a,s;return!r.collapsed&&(i=N(r),C(i))?A(e,i,e==-1):(s=P(r),o=M(e,r),n(o)?B(o.getNode(e==-1)):(o=t(o))?n(o)?A(e,o.getNode(e==-1),1==e):(a=t(o),n(a)&&L(o,a)?A(e,a.getNode(e==-1),1==e):s?$(o.toRange()):null):s?r:null)}function H(e,t,n){var r,i,o,l,u,c,d,f,h;if(h=N(n),r=M(e,n),i=t(re,a.isAboveLine(1),r),o=p.filter(i,a.isLine(1)),u=p.last(r.getClientRects()),E(r)&&(h=r.getNode()),w(r)&&(h=r.getNode(!0)),!u)return null;if(c=u.left,l=s.findClosestClientRect(o,c),l&&C(l.node))return d=Math.abs(c-l.left),f=Math.abs(c-l.right),A(e,l.node,d=11)&&(t.innerHTML='
    '),t}var o,a,s;if(r.collapsed&&u.settings.forced_root_block){if(o=u.dom.getParent(r.startContainer,"PRE"),!o)return;a=1==t?oe(n.fromRangeStart(r)):ae(n.fromRangeStart(r)),a||(s=i(),1==t?u.$(o).after(s):u.$(o).before(s),u.selection.select(s,!0),u.selection.collapse())}}function F(e,t,n,r){var i;return(i=O(e,t,n,r))?i:(i=I(e,r),i?i:null)}function z(e,t,n){var r;return(r=H(e,t,n))?r:(r=I(e,n),r?r:null)}function U(){return ce("*[data-mce-caret]")[0]}function W(e){e.hasAttribute("data-mce-caret")&&(r.showCaretContainerBlock(e),k(T()),R(e[0]))}function V(e){var t,r;return e=i.normalizeRange(1,re,e),t=n.fromRangeStart(e),C(t.getNode())?A(1,t.getNode(),!t.isAtEnd()):C(t.getNode(!0))?A(1,t.getNode(!0),!1):(r=u.dom.getParent(t.getNode(),f.or(C,b)),C(r)?A(1,r,!1):null)}function $(e){var t;return e&&e.collapsed?(t=V(e),t?t:e):e}function q(e){var t,i,o,a;return C(e)?(C(e.previousSibling)&&(o=e.previousSibling),i=ae(n.before(e)),i||(t=oe(n.after(e))),t&&x(t.getNode())&&(a=t.getNode()),r.remove(e.previousSibling),r.remove(e.nextSibling),u.dom.remove(e),u.dom.isEmpty(u.getBody())?(u.setContent(""),void u.focus()):o?n.after(o).toRange():a?n.before(a).toRange():i?i.toRange():t?t.toRange():null):null}function j(e){var t=u.schema.getTextBlockElements();return e.nodeName in t}function Y(e){return u.dom.isEmpty(e)}function X(e,t,r){var i=u.dom,o,a,s,l;if(o=i.getParent(t.getNode(),i.isBlock),a=i.getParent(r.getNode(),i.isBlock),e===-1){if(l=r.getNode(!0),w(r)&&S(l))return j(o)?(Y(o)&&i.remove(o),n.after(l).toRange()):q(r.getNode(!0))}else if(l=t.getNode(),E(t)&&S(l))return j(a)?(Y(a)&&i.remove(a),n.before(l).toRange()):q(t.getNode());if(o===a||!j(o)||!j(a))return null;for(;s=o.firstChild;)a.appendChild(s);return u.dom.remove(o),r.toRange()}function K(e,t,n,i){var o,a,s,l;return!i.collapsed&&(o=N(i),C(o))?$(q(o)):(a=M(e,i),n(a)&&r.isCaretContainerBlock(i.startContainer)?(l=e==-1?ie.prev(a):ie.next(a),l?$(l.toRange()):i):t(a)?$(q(a.getNode(e==-1))):(s=e==-1?ie.prev(a):ie.next(a),t(s)?e===-1?X(e,a,s):X(e,s,a):void 0))}function G(){function i(e,t){var n=t(T());n&&!e.isDefaultPrevented()&&(e.preventDefault(),k(n))}function o(e){for(var t=u.getBody();e&&e!=t;){if(b(e)||C(e))return e;e=e.parentNode}return null}function l(e,t,n){return!n.collapsed&&p.reduce(n.getClientRects(),function(n,r){return n||c.containsXY(r,e,t)},!1)}function f(e){var t=!1;e.on("touchstart",function(){t=!1}),e.on("touchmove",function(){t=!0}),e.on("touchend",function(e){var n=o(e.target);C(n)&&(t||(e.preventDefault(),Z(B(n))))})}function g(){var e,t=o(u.selection.getNode());b(t)&&S(t)&&u.dom.isEmpty(t)&&(e=u.dom.create("br",{"data-mce-bogus":"1"}),u.$(t).empty().append(e),u.selection.setRng(n.before(e).toRange()))}function x(e){var t=U();if(t)return"compositionstart"==e.type?(e.preventDefault(),e.stopPropagation(),void W(t)):void(r.hasContent(t)&&W(t))}function N(e){var t;switch(e.keyCode){case d.DELETE:t=g();break;case d.BACKSPACE:t=g()}t&&e.preventDefault()}var R=y(F,1,oe,E),D=y(F,-1,ae,w),L=y(K,1,E,w),M=y(K,-1,w,E),P=y(z,-1,a.upUntil),O=y(z,1,a.downUntil);u.on("mouseup",function(){var e=T();e.collapsed&&k(V(e))}),u.on("click",function(e){var t;t=o(e.target),t&&(C(t)&&(e.preventDefault(),u.focus()),b(t)&&u.dom.isChildOf(t,u.selection.getNode())&&ee())}),u.on("blur NewBlock",function(){ee(),ne()});var H=function(e){var r=new t(e);if(!e.firstChild)return!1;var i=n.before(e.firstChild),o=r.next(i);return o&&!E(o)&&!w(o)},I=function(e,t){var n=u.dom.getParent(e,u.dom.isBlock),r=u.dom.getParent(t,u.dom.isBlock);return n===r},j=function(e){return!(e.keyCode>=112&&e.keyCode<=123)},Y=function(e,t){var n=u.dom.getParent(e,u.dom.isBlock),r=u.dom.getParent(t,u.dom.isBlock);return n&&!I(n,r)&&H(n)};f(u),u.on("mousedown",function(e){var t;if(t=o(e.target))C(t)?(e.preventDefault(),Z(B(t))):l(e.clientX,e.clientY,u.selection.getRng())||u.selection.placeCaretAt(e.clientX,e.clientY);else{ee(),ne();var n=s.closestCaret(re,e.clientX,e.clientY);n&&(Y(e.target,n.node)||(e.preventDefault(),u.getBody().focus(),k(A(1,n.node,n.before))))}}),u.on("keydown",function(e){if(!d.modifierPressed(e))switch(e.keyCode){case d.RIGHT:i(e,R);break;case d.DOWN:i(e,O);break;case d.LEFT:i(e,D);break;case d.UP:i(e,P);break;case d.DELETE:i(e,L);break;case d.BACKSPACE:i(e,M);break;default:C(u.selection.getNode())&&j(e)&&e.preventDefault()}}),u.on("keyup compositionstart",function(e){x(e),N(e)},!0),u.on("cut",function(){var e=u.selection.getNode();C(e)&&h.setEditorTimeout(u,function(){k($(q(e)))})}),u.on("getSelectionRange",function(e){var t=e.range;if(ue){if(!ue.parentNode)return void(ue=null);t=t.cloneRange(),t.selectNode(ue),e.range=t}}),u.on("setSelectionRange",function(e){var t;t=Z(e.range),t&&(e.range=t)}),u.on("AfterSetSelectionRange",function(e){var t=e.range;Q(t)||ne(),v(t.startContainer.parentNode)||ee()}),u.on("focus",function(){h.setEditorTimeout(u,function(){u.selection.setRng($(u.selection.getRng()))},0)}),u.on("copy",function(t){var n=t.clipboardData;if(!t.isDefaultPrevented()&&t.clipboardData&&!e.ie){var r=_();r&&(t.preventDefault(),n.clearData(),n.setData("text/html",r.outerHTML),n.setData("text/plain",r.outerText))}}),m.init(u)}function J(){var e=u.contentStyles,t=".mce-content-body";e.push(se.getCss()),e.push(t+" .mce-offscreen-selection {position: absolute;left: -9999999999px;max-width: 1000000px;}"+t+" *[contentEditable=false] {cursor: default;}"+t+" *[contentEditable=true] {cursor: text;}")}function Q(e){return r.isCaretContainer(e.startContainer)||r.isCaretContainer(e.endContainer)}function Z(t){var n,r=u.$,i=u.dom,o,a,s,l,c,d,f,p,h;if(!t)return null;if(t.collapsed){if(!Q(t)){if(f=M(1,t),C(f.getNode()))return A(1,f.getNode(),!f.isAtEnd());if(C(f.getNode(!0)))return A(1,f.getNode(!0),!1)}return null}return s=t.startContainer,l=t.startOffset,c=t.endOffset,3==s.nodeType&&0==l&&C(s.parentNode)&&(s=s.parentNode,l=i.nodeIndex(s),s=s.parentNode),1!=s.nodeType?null:(c==l+1&&(n=s.childNodes[l]),C(n)?(p=h=n.cloneNode(!0),d=u.fire("ObjectSelected",{target:n,targetClone:p}),d.isDefaultPrevented()?null:(p=d.targetClone,o=r("#"+le),0===o.length&&(o=r('
    ').attr("id",le),o.appendTo(u.getBody())),t=u.dom.createRng(),p===h&&e.ie?(o.empty().append('

    \xa0

    ').append(p),t.setStartAfter(o[0].firstChild.firstChild),t.setEndAfter(p)):(o.empty().append("\xa0").append(p).append("\xa0"),t.setStart(o[0].firstChild,1),t.setEnd(o[0].lastChild,0)),o.css({top:i.getPos(n,u.getBody()).y}),o[0].focus(),a=u.selection.getSel(),a.removeAllRanges(),a.addRange(t),u.$("*[data-mce-selected]").removeAttr("data-mce-selected"),n.setAttribute("data-mce-selected",1),ue=n,ne(),t)):null)}function ee(){ue&&(ue.removeAttribute("data-mce-selected"),u.$("#"+le).remove(),ue=null)}function te(){se.destroy(),ue=null}function ne(){se.hide()}var re=u.getBody(),ie=new t(re),oe=y(g,ie.next),ae=y(g,ie.prev),se=new o(u.getBody(),S),le="sel-"+u.dom.uniqueId(),ue,ce=u.$;return e.ceFalse&&(G(),J()),{showBlockCaretContainer:W,hideFakeCaret:ne,destroy:te}}var y=f.curry,b=l.isContentEditableTrue,C=l.isContentEditableFalse,x=l.isElement,w=i.isAfterContentEditableFalse,E=i.isBeforeContentEditableFalse,N=u.getSelectedNode;return v}),r(it,[],function(){var e=0,t=function(){var e=function(){return Math.round(4294967295*Math.random()).toString(36)},t=(new Date).getTime();return"s"+t.toString(36)+e()+e()+e()},n=function(n){return n+e++ +t()};return{uuid:n}}),r(ot,[],function(){var e=function(e,t,n){var r=e.sidebars?e.sidebars:[];r.push({name:t,settings:n}),e.sidebars=r};return{add:e}}),r(at,[w,g,N,R,A,O,P,Y,J,te,ne,re,le,ue,E,f,Le,Ie,B,L,ze,d,m,c,Ue,We,Ve,Ge,rt,it,ot,Ke],function(e,n,r,i,o,a,s,l,u,c,d,f,p,h,m,g,v,y,b,C,x,w,E,N,_,S,k,T,R,A,B,D){function L(e,t,i){var o=this,a,s,l;a=o.documentBaseUrl=i.documentBaseURL,s=i.baseURI,l=i.defaultSettings,t=H({id:e,theme:"modern",delta_width:0,delta_height:0,popup_css:"",plugins:"",document_base_url:a,add_form_submit_trigger:!0,submit_patch:!0,add_unload_trigger:!0,convert_urls:!0,relative_urls:!0,remove_script_host:!0,object_resizing:!0,doctype:"",visual:!0,font_size_style_values:"xx-small,x-small,small,medium,large,x-large,xx-large",font_size_legacy_values:"xx-small,small,medium,large,x-large,xx-large,300%",forced_root_block:"p",hidden_input:!0,padd_empty_editor:!0,render_ui:!0,indentation:"30px",inline_styles:!0,convert_fonts_to_spans:!0,indent:"simple",indent_before:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure,figcaption,option,optgroup,datalist",indent_after:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure,figcaption,option,optgroup,datalist",validate:!0,entity_encoding:"named",url_converter:o.convertURL,url_converter_scope:o,ie7_compat:!0},l,t),l&&l.external_plugins&&t.external_plugins&&(t.external_plugins=H({},l.external_plugins,t.external_plugins)),o.settings=t,r.language=t.language||"en",r.languageLoad=t.language_load,r.baseURL=i.baseURL,o.id=t.id=e,o.setDirty(!1),o.plugins={},o.documentBaseURI=new h(t.document_base_url||a,{base_uri:s}),o.baseURI=s,o.contentCSS=[],o.contentStyles=[],o.shortcuts=new k(o),o.loadedCSS={},o.editorCommands=new p(o),o.suffix=i.suffix,o.editorManager=i,o.inline=t.inline,o.settings.content_editable=o.inline,t.cache_suffix&&(w.cacheSuffix=t.cache_suffix.replace(/^[\?\&]+/,"")),t.override_viewport===!1&&(w.overrideViewPort=!1),i.fire("SetupEditor",o),o.execCallback("setup",o),o.$=n.overrideDefaults(function(){return{context:o.inline?o.getBody():o.getDoc(),element:o.getBody()}})}var M=e.DOM,P=r.ThemeManager,O=r.PluginManager,H=E.extend,I=E.each,F=E.explode,z=E.inArray,U=E.trim,W=E.resolve,V=g.Event,$=w.gecko,q=w.ie;return L.prototype={render:function(){function e(){M.unbind(window,"ready",e),n.render()}function t(){var e=m.ScriptLoader;if(r.language&&"en"!=r.language&&!r.language_url&&(r.language_url=n.editorManager.baseURL+"/langs/"+r.language+".js"),r.language_url&&e.add(r.language_url),r.theme&&"function"!=typeof r.theme&&"-"!=r.theme.charAt(0)&&!P.urls[r.theme]){var t=r.theme_url;t=t?n.documentBaseURI.toAbsolute(t):"themes/"+r.theme+"/theme"+o+".js",P.load(r.theme,t)}E.isArray(r.plugins)&&(r.plugins=r.plugins.join(" ")),I(r.external_plugins,function(e,t){O.load(t,e),r.plugins+=" "+t}),I(r.plugins.split(/[ ,]/),function(e){if(e=U(e),e&&!O.urls[e])if("-"==e.charAt(0)){e=e.substr(1,e.length);var t=O.dependencies(e);I(t,function(e){var t={prefix:"plugins/",resource:e,suffix:"/plugin"+o+".js"};e=O.createUrl(t,e),O.load(e.resource,e)})}else O.load(e,{prefix:"plugins/",resource:e,suffix:"/plugin"+o+".js"})}),e.loadQueue(function(){n.removed||n.init()},n,function(e){D.pluginLoadError(n,e[0]),n.removed||n.init()})}var n=this,r=n.settings,i=n.id,o=n.suffix;if(!V.domLoaded)return void M.bind(window,"ready",e);if(n.getElement()&&w.contentEditable){r.inline?n.inline=!0:(n.orgVisibility=n.getElement().style.visibility,n.getElement().style.visibility="hidden");var a=n.getElement().form||M.getParent(i,"form");a&&(n.formElement=a,r.hidden_input&&!/TEXTAREA|INPUT/i.test(n.getElement().nodeName)&&(M.insertAfter(M.create("input",{type:"hidden",name:i}),i),n.hasHiddenInput=!0),n.formEventDelegate=function(e){n.fire(e.type,e)},M.bind(a,"submit reset",n.formEventDelegate),n.on("reset",function(){n.setContent(n.startContent,{format:"raw"})}),!r.submit_patch||a.submit.nodeType||a.submit.length||a._mceOldSubmit||(a._mceOldSubmit=a.submit,a.submit=function(){return n.editorManager.triggerSave(),n.setDirty(!1),a._mceOldSubmit(a)})),n.windowManager=new v(n),n.notificationManager=new y(n),"xml"==r.encoding&&n.on("GetContent",function(e){e.save&&(e.content=M.encode(e.content))}),r.add_form_submit_trigger&&n.on("submit",function(){n.initialized&&n.save()}),r.add_unload_trigger&&(n._beforeUnload=function(){!n.initialized||n.destroyed||n.isHidden()||n.save({format:"raw",no_events:!0,set_dirty:!1})},n.editorManager.on("BeforeUnload",n._beforeUnload)),n.editorManager.add(n),t()}},init:function(){function e(n){var r=O.get(n),i,o;if(i=O.urls[n]||t.documentBaseUrl.replace(/\/$/,""),n=U(n),r&&z(m,n)===-1){if(I(O.dependencies(n),function(t){e(t)}),t.plugins[n])return;o=new r(t,i,t.$),t.plugins[n]=o,o.init&&(o.init(t,i),m.push(n))}}var t=this,n=t.settings,r=t.getElement(),i,o,a,s,l,u,c,d,f,p,h,m=[];if(t.rtl=n.rtl_ui||t.editorManager.i18n.rtl,t.editorManager.i18n.setCode(n.language),n.aria_label=n.aria_label||M.getAttrib(r,"aria-label",t.getLang("aria.rich_text_area")),t.fire("ScriptsLoaded"),n.theme&&("function"!=typeof n.theme?(n.theme=n.theme.replace(/-/,""),u=P.get(n.theme),t.theme=new u(t,P.urls[n.theme]),t.theme.init&&t.theme.init(t,P.urls[n.theme]||t.documentBaseUrl.replace(/\/$/,""),t.$)):t.theme=n.theme),I(n.plugins.replace(/\-/g,"").split(/[ ,]/),e),n.render_ui&&t.theme&&(t.orgDisplay=r.style.display,"function"!=typeof n.theme?(i=n.width||r.style.width||r.offsetWidth,o=n.height||r.style.height||r.offsetHeight,a=n.min_height||100,p=/^[0-9\.]+(|px)$/i,p.test(""+i)&&(i=Math.max(parseInt(i,10),100)),p.test(""+o)&&(o=Math.max(parseInt(o,10),a)),l=t.theme.renderUI({targetNode:r,width:i,height:o,deltaWidth:n.delta_width,deltaHeight:n.delta_height}),n.content_editable||(o=(l.iframeHeight||o)+("number"==typeof o?l.deltaHeight||0:""),o",n.document_base_url!=t.documentBaseUrl&&(t.iframeHTML+=''),!w.caretAfter&&n.ie7_compat&&(t.iframeHTML+=''),t.iframeHTML+='',!/#$/.test(document.location.href))for(h=0;h',t.loadedCSS[g]=!0}d=n.body_id||"tinymce",d.indexOf("=")!=-1&&(d=t.getParam("body_id","","hash"),d=d[t.id]||d),f=n.body_class||"",f.indexOf("=")!=-1&&(f=t.getParam("body_class","","hash"),f=f[t.id]||""),n.content_security_policy&&(t.iframeHTML+=''),t.iframeHTML+='
    ';var v='javascript:(function(){document.open();document.domain="'+document.domain+'";var ed = window.parent.tinymce.get("'+t.id+'");document.write(ed.iframeHTML);document.close();ed.initContentBody(true);})()';document.domain!=location.hostname&&w.ie&&w.ie<12&&(c=v);var y=M.create("iframe",{id:t.id+"_ifr",frameBorder:"0",allowTransparency:"true",title:t.editorManager.translate("Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help"),style:{width:"100%",height:o,display:"block"}});if(y.onload=function(){y.onload=null,t.fire("load")},M.setAttrib(y,"src",c||'javascript:""'),t.contentAreaContainer=l.iframeContainer,t.iframeElement=y,s=M.add(l.iframeContainer,y),q)try{t.getDoc()}catch(b){s.src=c=v}l.editorContainer&&(M.get(l.editorContainer).style.display=t.orgDisplay,t.hidden=M.isHidden(l.editorContainer)),t.getElement().style.display="none",M.setAttrib(t.id,"aria-hidden",!0),c||t.initContentBody(),r=s=l=null},initContentBody:function(t){var n=this,r=n.settings,s=n.getElement(),p=n.getDoc(),h,m;r.inline||(n.getElement().style.visibility=n.orgVisibility),t||r.content_editable||(p.open(),p.write(n.iframeHTML),p.close()),r.content_editable&&(n.on("remove",function(){var e=this.getBody();M.removeClass(e,"mce-content-body"),M.removeClass(e,"mce-edit-focus"),M.setAttrib(e,"contentEditable",null)}),M.addClass(s,"mce-content-body"),n.contentDocument=p=r.content_document||document,n.contentWindow=r.content_window||window,n.bodyElement=s,r.content_document=r.content_window=null,r.root_name=s.nodeName.toLowerCase()),h=n.getBody(),h.disabled=!0,n.readonly=r.readonly,n.readonly||(n.inline&&"static"==M.getStyle(h,"position",!0)&&(h.style.position="relative"),h.contentEditable=n.getParam("content_editable_state",!0)),h.disabled=!1,n.editorUpload=new T(n),n.schema=new b(r),n.dom=new e(p,{keep_values:!0,url_converter:n.convertURL,url_converter_scope:n,hex_colors:r.force_hex_style_colors,class_filter:r.class_filter,update_styles:!0,root_element:n.inline?n.getBody():null,collect:r.content_editable,schema:n.schema,onSetAttrib:function(e){n.fire("SetAttrib",e)}}),n.parser=new C(r,n.schema),n.parser.addAttributeFilter("src,href,style,tabindex",function(e,t){for(var r=e.length,i,o=n.dom,a,s;r--;)if(i=e[r],a=i.attr(t),s="data-mce-"+t,!i.attributes.map[s]){if(0===a.indexOf("data:")||0===a.indexOf("blob:"))continue;"style"===t?(a=o.serializeStyle(o.parseStyle(a),i.name),a.length||(a=null),i.attr(s,a),i.attr(t,a)):"tabindex"===t?(i.attr(s,a),i.attr(t,null)):i.attr(s,n.convertURL(a,t,i.name))}}),n.parser.addNodeFilter("script",function(e){for(var t=e.length,n,r;t--;)n=e[t],r=n.attr("type")||"no/type", -0!==r.indexOf("mce-")&&n.attr("type","mce-"+r)}),n.parser.addNodeFilter("#cdata",function(e){for(var t=e.length,n;t--;)n=e[t],n.type=8,n.name="#comment",n.value="[CDATA["+n.value+"]]"}),n.parser.addNodeFilter("p,h1,h2,h3,h4,h5,h6,div",function(e){for(var t=e.length,r,i=n.schema.getNonEmptyElements();t--;)r=e[t],r.isEmpty(i)&&0===r.getAll("br").length&&(r.append(new o("br",1)).shortEnded=!0)}),n.serializer=new a(r,n),n.selection=new l(n.dom,n.getWin(),n.serializer,n),n.formatter=new u(n),n.undoManager=new c(n),n.forceBlocks=new f(n),n.enterKey=new d(n),n._nodeChangeDispatcher=new i(n),n._selectionOverrides=new R(n),n.fire("PreInit"),r.browser_spellcheck||r.gecko_spellcheck||(p.body.spellcheck=!1,M.setAttrib(h,"spellcheck","false")),n.quirks=new x(n),n.fire("PostRender"),r.directionality&&(h.dir=r.directionality),r.nowrap&&(h.style.whiteSpace="nowrap"),r.protect&&n.on("BeforeSetContent",function(e){I(r.protect,function(t){e.content=e.content.replace(t,function(e){return""})})}),n.on("SetContent",function(){n.addVisual(n.getBody())}),r.padd_empty_editor&&n.on("PostProcess",function(e){e.content=e.content.replace(/^(]*>( | |\s|\u00a0|
    |)<\/p>[\r\n]*|
    [\r\n]*)$/,"")}),n.load({initial:!0,format:"html"}),n.startContent=n.getContent({format:"raw"}),n.initialized=!0,n.bindPendingEventDelegates(),n.fire("init"),n.focus(!0),n.nodeChanged({initial:!0}),n.execCallback("init_instance_callback",n),n.on("compositionstart compositionend",function(e){n.composing="compositionstart"===e.type}),n.contentStyles.length>0&&(m="",I(n.contentStyles,function(e){m+=e+"\r\n"}),n.dom.addStyle(m)),I(n.contentCSS,function(e){n.loadedCSS[e]||(n.dom.loadCSS(e),n.loadedCSS[e]=!0)}),r.auto_focus&&N.setEditorTimeout(n,function(){var e;e=r.auto_focus===!0?n:n.editorManager.get(r.auto_focus),e.destroyed||e.focus()},100),s=p=h=null},focus:function(e){function t(e){return n.dom.getParent(e,function(e){return"true"===n.dom.getContentEditable(e)})}var n=this,r=n.selection,i=n.settings.content_editable,o,a,s=n.getDoc(),l=n.getBody(),u;if(!e){if(o=r.getRng(),o.item&&(a=o.item(0)),n.quirks.refreshContentEditable(),u=t(r.getNode()),n.$.contains(l,u))return u.focus(),r.normalize(),void n.editorManager.setActive(n);if(i||(w.opera||n.getBody().focus(),n.getWin().focus()),$||i){if(l.setActive)try{l.setActive()}catch(c){l.focus()}else l.focus();i&&r.normalize()}a&&a.ownerDocument==s&&(o=s.body.createControlRange(),o.addElement(a),o.select())}n.editorManager.setActive(n)},execCallback:function(e){var t=this,n=t.settings[e],r;if(n)return t.callbackLookup&&(r=t.callbackLookup[e])&&(n=r.func,r=r.scope),"string"==typeof n&&(r=n.replace(/\.\w+$/,""),r=r?W(r):0,n=W(n),t.callbackLookup=t.callbackLookup||{},t.callbackLookup[e]={func:n,scope:r}),n.apply(r||t,Array.prototype.slice.call(arguments,1))},translate:function(e){var t=this.settings.language||"en",n=this.editorManager.i18n;return e?(e=n.data[t+"."+e]||e.replace(/\{\#([^\}]+)\}/g,function(e,r){return n.data[t+"."+r]||"{#"+r+"}"}),this.editorManager.translate(e)):""},getLang:function(e,n){return this.editorManager.i18n.data[(this.settings.language||"en")+"."+e]||(n!==t?n:"{#"+e+"}")},getParam:function(e,t,n){var r=e in this.settings?this.settings[e]:t,i;return"hash"===n?(i={},"string"==typeof r?I(r.indexOf("=")>0?r.split(/[;,](?![^=;,]*(?:[;,]|$))/):r.split(","),function(e){e=e.split("="),e.length>1?i[U(e[0])]=U(e[1]):i[U(e[0])]=U(e)}):i=r,i):r},nodeChanged:function(e){this._nodeChangeDispatcher.nodeChanged(e)},addButton:function(e,t){var n=this;t.cmd&&(t.onclick=function(){n.execCommand(t.cmd)}),t.text||t.icon||(t.icon=e),n.buttons=n.buttons||{},t.tooltip=t.tooltip||t.title,n.buttons[e]=t},addSidebar:function(e,t){return B.add(this,e,t)},addMenuItem:function(e,t){var n=this;t.cmd&&(t.onclick=function(){n.execCommand(t.cmd)}),n.menuItems=n.menuItems||{},n.menuItems[e]=t},addContextToolbar:function(e,t){var n=this,r;n.contextToolbars=n.contextToolbars||[],"string"==typeof e&&(r=e,e=function(e){return n.dom.is(e,r)}),n.contextToolbars.push({id:A.uuid("mcet"),predicate:e,items:t})},addCommand:function(e,t,n){this.editorCommands.addCommand(e,t,n)},addQueryStateHandler:function(e,t,n){this.editorCommands.addQueryStateHandler(e,t,n)},addQueryValueHandler:function(e,t,n){this.editorCommands.addQueryValueHandler(e,t,n)},addShortcut:function(e,t,n,r){this.shortcuts.add(e,t,n,r)},execCommand:function(e,t,n,r){return this.editorCommands.execCommand(e,t,n,r)},queryCommandState:function(e){return this.editorCommands.queryCommandState(e)},queryCommandValue:function(e){return this.editorCommands.queryCommandValue(e)},queryCommandSupported:function(e){return this.editorCommands.queryCommandSupported(e)},show:function(){var e=this;e.hidden&&(e.hidden=!1,e.inline?e.getBody().contentEditable=!0:(M.show(e.getContainer()),M.hide(e.id)),e.load(),e.fire("show"))},hide:function(){var e=this,t=e.getDoc();e.hidden||(q&&t&&!e.inline&&t.execCommand("SelectAll"),e.save(),e.inline?(e.getBody().contentEditable=!1,e==e.editorManager.focusedEditor&&(e.editorManager.focusedEditor=null)):(M.hide(e.getContainer()),M.setStyle(e.id,"display",e.orgDisplay)),e.hidden=!0,e.fire("hide"))},isHidden:function(){return!!this.hidden},setProgressState:function(e,t){this.fire("ProgressState",{state:e,time:t})},load:function(e){var n=this,r=n.getElement(),i;if(r)return e=e||{},e.load=!0,i=n.setContent(r.value!==t?r.value:r.innerHTML,e),e.element=r,e.no_events||n.fire("LoadContent",e),e.element=r=null,i},save:function(e){var t=this,n=t.getElement(),r,i;if(n&&t.initialized)return e=e||{},e.save=!0,e.element=n,r=e.content=t.getContent(e),e.no_events||t.fire("SaveContent",e),"raw"==e.format&&t.fire("RawSaveContent",e),r=e.content,/TEXTAREA|INPUT/i.test(n.nodeName)?n.value=r:(t.inline||(n.innerHTML=r),(i=M.getParent(t.id,"form"))&&I(i.elements,function(e){if(e.name==t.id)return e.value=r,!1})),e.element=n=null,e.set_dirty!==!1&&t.setDirty(!1),r},setContent:function(e,t){var n=this,r=n.getBody(),i,o;return t=t||{},t.format=t.format||"html",t.set=!0,t.content=e,t.no_events||n.fire("BeforeSetContent",t),e=t.content,0===e.length||/^\s+$/.test(e)?(o=q&&q<11?"":'
    ',"TABLE"==r.nodeName?e=""+o+"":/^(UL|OL)$/.test(r.nodeName)&&(e="
  • "+o+"
  • "),i=n.settings.forced_root_block,i&&n.schema.isValidChild(r.nodeName.toLowerCase(),i.toLowerCase())?(e=o,e=n.dom.createHTML(i,n.settings.forced_root_block_attrs,e)):q||e||(e='
    '),n.dom.setHTML(r,e),n.fire("SetContent",t)):("raw"!==t.format&&(e=new s({validate:n.validate},n.schema).serialize(n.parser.parse(e,{isRootContent:!0}))),t.content=U(e),n.dom.setHTML(r,t.content),t.no_events||n.fire("SetContent",t)),t.content},getContent:function(e){var t=this,n,r=t.getBody();return e=e||{},e.format=e.format||"html",e.get=!0,e.getInner=!0,e.no_events||t.fire("BeforeGetContent",e),n="raw"==e.format?E.trim(t.serializer.getTrimmedContent()):"text"==e.format?r.innerText||r.textContent:t.serializer.serialize(r,e),"text"!=e.format?e.content=U(n):e.content=n,e.no_events||t.fire("GetContent",e),e.content},insertContent:function(e,t){t&&(e=H({content:e},t)),this.execCommand("mceInsertContent",!1,e)},isDirty:function(){return!this.isNotDirty},setDirty:function(e){var t=!this.isNotDirty;this.isNotDirty=!e,e&&e!=t&&this.fire("dirty")},setMode:function(e){S.setMode(this,e)},getContainer:function(){var e=this;return e.container||(e.container=M.get(e.editorContainer||e.id+"_parent")),e.container},getContentAreaContainer:function(){return this.contentAreaContainer},getElement:function(){return this.targetElm||(this.targetElm=M.get(this.id)),this.targetElm},getWin:function(){var e=this,t;return e.contentWindow||(t=e.iframeElement,t&&(e.contentWindow=t.contentWindow)),e.contentWindow},getDoc:function(){var e=this,t;return e.contentDocument||(t=e.getWin(),t&&(e.contentDocument=t.document)),e.contentDocument},getBody:function(){var e=this.getDoc();return this.bodyElement||(e?e.body:null)},convertURL:function(e,t,n){var r=this,i=r.settings;return i.urlconverter_callback?r.execCallback("urlconverter_callback",e,n,!0,t):!i.convert_urls||n&&"LINK"==n.nodeName||0===e.indexOf("file:")||0===e.length?e:i.relative_urls?r.documentBaseURI.toRelative(e):e=r.documentBaseURI.toAbsolute(e,i.remove_script_host)},addVisual:function(e){var n=this,r=n.settings,i=n.dom,o;e=e||n.getBody(),n.hasVisual===t&&(n.hasVisual=r.visual),I(i.select("table,a",e),function(e){var t;switch(e.nodeName){case"TABLE":return o=r.visual_table_class||"mce-item-table",t=i.getAttrib(e,"border"),void(t&&"0"!=t||!n.hasVisual?i.removeClass(e,o):i.addClass(e,o));case"A":return void(i.getAttrib(e,"href",!1)||(t=i.getAttrib(e,"name")||e.id,o=r.visual_anchor_class||"mce-item-anchor",t&&n.hasVisual?i.addClass(e,o):i.removeClass(e,o)))}}),n.fire("VisualAid",{element:e,hasVisual:n.hasVisual})},remove:function(){var e=this;e.removed||(e.save(),e.removed=1,e.unbindAllNativeEvents(),e.hasHiddenInput&&M.remove(e.getElement().nextSibling),e.inline||(q&&q<10&&e.getDoc().execCommand("SelectAll",!1,null),M.setStyle(e.id,"display",e.orgDisplay),e.getBody().onload=null),e.fire("remove"),e.editorManager.remove(e),M.remove(e.getContainer()),e._selectionOverrides.destroy(),e.editorUpload.destroy(),e.destroy())},destroy:function(e){var t=this,n;if(!t.destroyed){if(!e&&!t.removed)return void t.remove();e||(t.editorManager.off("beforeunload",t._beforeUnload),t.theme&&t.theme.destroy&&t.theme.destroy(),t.selection.destroy(),t.dom.destroy()),n=t.formElement,n&&(n._mceOldSubmit&&(n.submit=n._mceOldSubmit,n._mceOldSubmit=null),M.unbind(n,"submit reset",t.formEventDelegate)),t.contentAreaContainer=t.formElement=t.container=t.editorContainer=null,t.bodyElement=t.contentDocument=t.contentWindow=null,t.iframeElement=t.targetElm=null,t.selection&&(t.selection=t.selection.win=t.selection.dom=t.selection.dom.doc=null),t.destroyed=1}},uploadImages:function(e){return this.editorUpload.uploadImages(e)},_scanForImages:function(){return this.editorUpload.scanForImages()}},H(L.prototype,_),L}),r(st,[m],function(e){var t={},n="en";return{setCode:function(e){e&&(n=e,this.rtl=!!this.data[e]&&"rtl"===this.data[e]._dir)},getCode:function(){return n},rtl:!1,add:function(e,n){var r=t[e];r||(t[e]=r={});for(var i in n)r[i]=n[i];this.setCode(e)},translate:function(r){function i(t){return e.is(t,"function")?Object.prototype.toString.call(t):o(t)?"":""+t}function o(t){return""===t||null===t||e.is(t,"undefined")}function a(t){return t=i(t),e.hasOwn(s,t)?i(s[t]):t}var s=t[n]||{};if(o(r))return"";if(e.is(r,"object")&&e.hasOwn(r,"raw"))return i(r.raw);if(e.is(r,"array")){var l=r.slice(1);r=a(r[0]).replace(/\{([0-9]+)\}/g,function(t,n){return e.hasOwn(l,n)?i(l[n]):t})}return a(r).replace(/{context:\w+}$/,"")},data:t}}),r(lt,[w,c,d],function(e,t,n){function r(e){function r(){try{return document.activeElement}catch(e){return document.body}}function u(e,t){if(t&&t.startContainer){if(!e.isChildOf(t.startContainer,e.getRoot())||!e.isChildOf(t.endContainer,e.getRoot()))return;return{startContainer:t.startContainer,startOffset:t.startOffset,endContainer:t.endContainer,endOffset:t.endOffset}}return t}function c(e,t){var n;return t.startContainer?(n=e.getDoc().createRange(),n.setStart(t.startContainer,t.startOffset),n.setEnd(t.endContainer,t.endOffset)):n=t,n}function d(d){var f=d.editor;f.on("init",function(){(f.inline||n.ie)&&("onbeforedeactivate"in document&&n.ie<9?f.dom.bind(f.getBody(),"beforedeactivate",function(e){if(e.target==f.getBody())try{f.lastRng=f.selection.getRng()}catch(t){}}):f.on("nodechange mouseup keyup",function(e){var t=r();"nodechange"==e.type&&e.selectionChange||(t&&t.id==f.id+"_ifr"&&(t=f.getBody()),f.dom.isChildOf(t,f.getBody())&&(f.lastRng=f.selection.getRng()))}),n.webkit&&!i&&(i=function(){var t=e.activeEditor;if(t&&t.selection){var n=t.selection.getRng();n&&!n.collapsed&&(f.lastRng=n)}},s.bind(document,"selectionchange",i)))}),f.on("setcontent",function(){f.lastRng=null}),f.on("mousedown",function(){f.selection.lastFocusBookmark=null}),f.on("focusin",function(){var t=e.focusedEditor,n;f.selection.lastFocusBookmark&&(n=c(f,f.selection.lastFocusBookmark),f.selection.lastFocusBookmark=null,f.selection.setRng(n)),t!=f&&(t&&t.fire("blur",{focusedEditor:f}),e.setActive(f),e.focusedEditor=f,f.fire("focus",{blurredEditor:t}),f.focus(!0)),f.lastRng=null}),f.on("focusout",function(){t.setEditorTimeout(f,function(){var t=e.focusedEditor;l(f,r())||t!=f||(f.fire("blur",{focusedEditor:null}),e.focusedEditor=null,f.selection&&(f.selection.lastFocusBookmark=null))})}),o||(o=function(t){var n=e.activeEditor,r;r=t.target,n&&r.ownerDocument==document&&(n.selection&&r!=n.getBody()&&(n.selection.lastFocusBookmark=u(n.dom,n.lastRng)),r==document.body||l(n,r)||e.focusedEditor!=n||(n.fire("blur",{focusedEditor:null}),e.focusedEditor=null))},s.bind(document,"focusin",o)),f.inline&&!a&&(a=function(t){var n=e.activeEditor,r=n.dom;if(n.inline&&r&&!r.isChildOf(t.target,n.getBody())){var i=n.selection.getRng();i.collapsed||(n.lastRng=i)}},s.bind(document,"mouseup",a))}function f(t){e.focusedEditor==t.editor&&(e.focusedEditor=null),e.activeEditor||(s.unbind(document,"selectionchange",i),s.unbind(document,"focusin",o),s.unbind(document,"mouseup",a),i=o=a=null)}e.on("AddEditor",d),e.on("RemoveEditor",f)}var i,o,a,s=e.DOM,l=function(e,t){var n=e?e.settings.custom_ui_selector:"",i=s.getParent(t,function(t){return r.isEditorUIElement(t)||!!n&&e.dom.is(t,n)});return null!==i};return r.isEditorUIElement=function(e){return e.className.toString().indexOf("mce-")!==-1},r._isUIElement=l,r}),r(ut,[at,g,w,ue,d,m,u,pe,st,lt,N],function(e,t,n,r,i,o,a,s,l,u,c){function d(e){v(x.editors,function(t){"scroll"===e.type?t.fire("ScrollWindow",e):t.fire("ResizeWindow",e)})}function f(e,n){n!==w&&(n?t(window).on("resize scroll",d):t(window).off("resize scroll",d),w=n)}function p(e){var t=x.editors,n;delete t[e.id];for(var r=0;r0&&v(g(t),function(e){var t;(t=m.get(e))?n.push(t):v(document.forms,function(t){v(t.elements,function(t){t.name===e&&(e="mce_editor_"+b++,m.setAttrib(t,"id",e),n.push(t))})})});break;case"textareas":case"specific_textareas":v(m.select("textarea"),function(t){e.editor_deselector&&u(t,e.editor_deselector)||e.editor_selector&&!u(t,e.editor_selector)||n.push(t)})}return n}function d(){function a(t,n,r){var i=new e(t,n,f);p.push(i),i.on("init",function(){++u===g.length&&x(p)}),i.targetElm=i.targetElm||r,i.render()}var u=0,p=[],g;return m.unbind(window,"ready",d),l("onpageload"),g=t.unique(c(n)),n.types?void v(n.types,function(e){o.each(g,function(t){return!m.is(t,e.selector)||(a(s(t),y({},n,e),t),!1)})}):(o.each(g,function(e){h(f.get(e.id))}),g=o.grep(g,function(e){return!f.get(e.id)}),void v(g,function(e){r(n,e)?i("Could not initialize inline editor on invalid inline target element",e):a(s(e),n,e)}))}var f=this,p,C;C=o.makeMap("area base basefont br col frame hr img input isindex link meta param embed source wbr track colgroup option tbody tfoot thead tr script noscript style textarea video audio iframe object menu"," ");var x=function(e){p=e};return f.settings=n,m.bind(window,"ready",d),new a(function(e){p?e(p):x=function(t){e(t)}})},get:function(e){return arguments.length?e in this.editors?this.editors[e]:null:this.editors},add:function(e){var t=this,n=t.editors;return n[e.id]=e,n.push(e),f(n,!0),t.activeEditor=e,t.fire("AddEditor",{editor:e}),C||(C=function(){t.fire("BeforeUnload")},m.bind(window,"beforeunload",C)),e},createEditor:function(t,n){return this.add(new e(t,n,this))},remove:function(e){var t=this,n,r=t.editors,i;{if(e)return"string"==typeof e?(e=e.selector||e,void v(m.select(e),function(e){i=r[e.id],i&&t.remove(i)})):(i=e,r[i.id]?(p(i)&&t.fire("RemoveEditor",{editor:i}),r.length||m.unbind(window,"beforeunload",C),i.remove(),f(r,r.length>0),i):null);for(n=r.length-1;n>=0;n--)t.remove(r[n])}},execCommand:function(t,n,r){var i=this,o=i.get(r);switch(t){case"mceAddEditor":return i.get(r)||new e(r,i.settings,i).render(),!0;case"mceRemoveEditor":return o&&o.remove(),!0;case"mceToggleEditor":return o?(o.isHidden()?o.show():o.hide(),!0):(i.execCommand("mceAddEditor",0,r),!0)}return!!i.activeEditor&&i.activeEditor.execCommand(t,n,r)},triggerSave:function(){v(this.editors,function(e){e.save()})},addI18n:function(e,t){l.add(e,t)},translate:function(e){return l.translate(e)},setActive:function(e){var t=this.activeEditor;this.activeEditor!=e&&(t&&t.fire("deactivate",{relatedTarget:e}),e.fire("activate",{relatedTarget:t})),this.activeEditor=e}},y(x,s),x.setup(),window.tinymce=window.tinyMCE=x,x}),r(ct,[ut,m],function(e,t){var n=t.each,r=t.explode;e.on("AddEditor",function(e){var t=e.editor;t.on("preInit",function(){function e(e,t){n(t,function(t,n){t&&s.setStyle(e,n,t)}),s.rename(e,"span")}function i(e){s=t.dom,l.convert_fonts_to_spans&&n(s.select("font,u,strike",e.node),function(e){o[e.nodeName.toLowerCase()](s,e)})}var o,a,s,l=t.settings;l.inline_styles&&(a=r(l.font_size_legacy_values),o={font:function(t,n){e(n,{backgroundColor:n.style.backgroundColor,color:n.color,fontFamily:n.face,fontSize:a[parseInt(n.size,10)-1]})},u:function(n,r){"html4"===t.settings.schema&&e(r,{textDecoration:"underline"})},strike:function(t,n){e(n,{textDecoration:"line-through"})}},t.on("PreProcess SetContent",i))})})}),r(dt,[pe,m],function(e,t){var n={send:function(e){function r(){!e.async||4==i.readyState||o++>1e4?(e.success&&o<1e4&&200==i.status?e.success.call(e.success_scope,""+i.responseText,i,e):e.error&&e.error.call(e.error_scope,o>1e4?"TIMED_OUT":"GENERAL",i,e),i=null):setTimeout(r,10)}var i,o=0;if(e.scope=e.scope||this,e.success_scope=e.success_scope||e.scope,e.error_scope=e.error_scope||e.scope,e.async=e.async!==!1,e.data=e.data||"",n.fire("beforeInitialize",{settings:e}),i=new XMLHttpRequest){if(i.overrideMimeType&&i.overrideMimeType(e.content_type),i.open(e.type||(e.data?"POST":"GET"),e.url,e.async),e.crossDomain&&(i.withCredentials=!0),e.content_type&&i.setRequestHeader("Content-Type",e.content_type),e.requestheaders&&t.each(e.requestheaders,function(e){i.setRequestHeader(e.key,e.value)}),i.setRequestHeader("X-Requested-With","XMLHttpRequest"),i=n.fire("beforeSend",{xhr:i,settings:e}).xhr,i.send(e.data),!e.async)return r();setTimeout(r,10)}}};return t.extend(n,e),n}),r(ft,[],function(){function e(t,n){var r,i,o,a;if(n=n||'"',null===t)return"null";if(o=typeof t,"string"==o)return i="\bb\tt\nn\ff\rr\"\"''\\\\",n+t.replace(/([\u0080-\uFFFF\x00-\x1f\"\'\\])/g,function(e,t){return'"'===n&&"'"===e?e:(r=i.indexOf(t),r+1?"\\"+i.charAt(r+1):(e=t.charCodeAt().toString(16),"\\u"+"0000".substring(e.length)+e))})+n;if("object"==o){if(t.hasOwnProperty&&"[object Array]"===Object.prototype.toString.call(t)){for(r=0,i="[";r0?",":"")+e(t[r],n);return i+"]"}i="{";for(a in t)t.hasOwnProperty(a)&&(i+="function"!=typeof t[a]?(i.length>1?","+n:n)+a+n+":"+e(t[a],n):"");return i+"}"}return""+t}return{serialize:e,parse:function(e){try{return window[String.fromCharCode(101)+"val"]("("+e+")")}catch(t){}}}}),r(pt,[ft,dt,m],function(e,t,n){function r(e){this.settings=i({},e),this.count=0}var i=n.extend;return r.sendRPC=function(e){return(new r).send(e)},r.prototype={send:function(n){var r=n.error,o=n.success;n=i(this.settings,n),n.success=function(t,i){t=e.parse(t),"undefined"==typeof t&&(t={error:"JSON Parse error."}),t.error?r.call(n.error_scope||n.scope,t.error,i):o.call(n.success_scope||n.scope,t.result)},n.error=function(e,t){r&&r.call(n.error_scope||n.scope,e,t)},n.data=e.serialize({id:n.id||"c"+this.count++,method:n.method,params:n.params}),n.content_type="application/json",t.send(n)}},r}),r(ht,[w],function(e){return{callbacks:{},count:0,send:function(n){var r=this,i=e.DOM,o=n.count!==t?n.count:r.count,a="tinymce_jsonp_"+o;r.callbacks[o]=function(e){i.remove(a),delete r.callbacks[o],n.callback(e)},i.add(i.doc.body,"script",{id:a,src:n.url,type:"text/javascript"}),r.count++}}}),r(mt,[],function(){function e(){s=[];for(var e in a)s.push(e);i.length=s.length}function n(){function n(e){var n,r;return r=e!==t?c+e:i.indexOf(",",c),r===-1||r>i.length?null:(n=i.substring(c,r),c=r+1,n)}var r,i,s,c=0;if(a={},u){o.load(l),i=o.getAttribute(l)||"";do{var d=n();if(null===d)break;if(r=n(parseInt(d,32)||0),null!==r){if(d=n(),null===d)break;s=n(parseInt(d,32)||0),r&&(a[r]=s)}}while(null!==r);e()}}function r(){var t,n="";if(u){for(var r in a)t=a[r],n+=(n?",":"")+r.length.toString(32)+","+r+","+t.length.toString(32)+","+t;o.setAttribute(l,n);try{o.save(l)}catch(i){}e()}}var i,o,a,s,l,u;try{if(window.localStorage)return localStorage}catch(c){}return l="tinymce",o=document.documentElement,u=!!o.addBehavior,u&&o.addBehavior("#default#userData"),i={key:function(e){return s[e]},getItem:function(e){return e in a?a[e]:null},setItem:function(e,t){a[e]=""+t,r()},removeItem:function(e){delete a[e],r()},clear:function(){a={},r()}},n(),i}),r(gt,[w,f,E,N,m,d],function(e,t,n,r,i,o){var a=window.tinymce;return a.DOM=e.DOM,a.ScriptLoader=n.ScriptLoader,a.PluginManager=r.PluginManager,a.ThemeManager=r.ThemeManager,a.dom=a.dom||{},a.dom.Event=t.Event,i.each("trim isArray is toArray makeMap each map grep inArray extend create walk createNS resolve explode _addCacheSuffix".split(" "),function(e){a[e]=i[e]}),i.each("isOpera isWebKit isIE isGecko isMac".split(" "),function(e){a[e]=o[e.substr(2).toLowerCase()]}),{}}),r(vt,[ce,m],function(e,t){return e.extend({Defaults:{firstControlClass:"first",lastControlClass:"last"},init:function(e){this.settings=t.extend({},this.Defaults,e)},preRender:function(e){e.bodyClasses.add(this.settings.containerClass)},applyClasses:function(e){var t=this,n=t.settings,r,i,o,a;r=n.firstControlClass,i=n.lastControlClass,e.each(function(e){e.classes.remove(r).remove(i).add(n.controlClass),e.visible()&&(o||(o=e),a=e)}),o&&o.classes.add(r),a&&a.classes.add(i)},renderHtml:function(e){var t=this,n="";return t.applyClasses(e.items()),e.items().each(function(e){n+=e.renderHtml()}),n},recalc:function(){},postRender:function(){},isNative:function(){return!1}})}),r(yt,[vt],function(e){return e.extend({Defaults:{containerClass:"abs-layout",controlClass:"abs-layout-item"},recalc:function(e){e.items().filter(":visible").each(function(e){var t=e.settings;e.layoutRect({x:t.x,y:t.y,w:t.w,h:t.h}),e.recalc&&e.recalc()})},renderHtml:function(e){return'
    '+this._super(e)}})}),r(bt,[Pe],function(e){return e.extend({Defaults:{classes:"widget btn",role:"button"},init:function(e){var t=this,n;t._super(e),e=t.settings,n=t.settings.size,t.on("click mousedown",function(e){e.preventDefault()}),t.on("touchstart",function(e){t.fire("click",e),e.preventDefault()}),e.subtype&&t.classes.add(e.subtype),n&&t.classes.add("btn-"+n),e.icon&&t.icon(e.icon)},icon:function(e){return arguments.length?(this.state.set("icon",e),this):this.state.get("icon")},repaint:function(){var e=this.getEl().firstChild,t;e&&(t=e.style,t.width=t.height="100%"),this._super()},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix,r=e.state.get("icon"),i,o=e.state.get("text"),a="";return i=e.settings.image,i?(r="none","string"!=typeof i&&(i=window.getSelection?i[0]:i[1]),i=" style=\"background-image: url('"+i+"')\""):i="",o&&(e.classes.add("btn-has-text"),a=''+e.encode(o)+""),r=r?n+"ico "+n+"i-"+r:"",'
    "},bindStates:function(){function e(e){var i=n("span."+r,t.getEl());e?(i[0]||(n("button:first",t.getEl()).append(''),i=n("span."+r,t.getEl())),i.html(t.encode(e))):i.remove(),t.classes.toggle("btn-has-text",!!e)}var t=this,n=t.$,r=t.classPrefix+"txt";return t.state.on("change:text",function(t){e(t.value)}),t.state.on("change:icon",function(n){var r=n.value,i=t.classPrefix;t.settings.icon=r,r=r?i+"ico "+i+"i-"+t.settings.icon:"";var o=t.getEl().firstChild,a=o.getElementsByTagName("i")[0];r?(a&&a==o.firstChild||(a=document.createElement("i"),o.insertBefore(a,o.firstChild)),a.className=r):a&&o.removeChild(a),e(t.state.get("text"))}),t._super()}})}),r(Ct,[Ne],function(e){return e.extend({Defaults:{defaultType:"button",role:"group"},renderHtml:function(){var e=this,t=e._layout;return e.classes.add("btn-group"),e.preRender(),t.preRender(e),'
    '+(e.settings.html||"")+t.renderHtml(e)+"
    "}})}),r(xt,[Pe],function(e){return e.extend({Defaults:{classes:"checkbox",role:"checkbox",checked:!1},init:function(e){var t=this;t._super(e),t.on("click mousedown",function(e){e.preventDefault()}),t.on("click",function(e){e.preventDefault(),t.disabled()||t.checked(!t.checked())}),t.checked(t.settings.checked)},checked:function(e){return arguments.length?(this.state.set("checked",e),this):this.state.get("checked")},value:function(e){return arguments.length?this.checked(e):this.checked()},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix;return'
    '+e.encode(e.state.get("text"))+"
    "},bindStates:function(){function e(e){t.classes.toggle("checked",e),t.aria("checked",e)}var t=this;return t.state.on("change:text",function(e){t.getEl("al").firstChild.data=t.translate(e.value)}),t.state.on("change:checked change:value",function(n){t.fire("change"),e(n.value)}),t.state.on("change:icon",function(e){var n=e.value,r=t.classPrefix;if("undefined"==typeof n)return t.settings.icon;t.settings.icon=n,n=n?r+"ico "+r+"i-"+t.settings.icon:"";var i=t.getEl().firstChild,o=i.getElementsByTagName("i")[0];n?(o&&o==i.firstChild||(o=document.createElement("i"),i.insertBefore(o,i.firstChild)),o.className=n):o&&i.removeChild(o)}),t.state.get("checked")&&e(!0),t._super()}})}),r(wt,[Pe,we,ve,g,I,m],function(e,t,n,r,i,o){return e.extend({init:function(e){var t=this;t._super(e),e=t.settings,t.classes.add("combobox"),t.subinput=!0,t.ariaTarget="inp",e.menu=e.menu||e.values,e.menu&&(e.icon="caret"),t.on("click",function(n){var i=n.target,o=t.getEl();if(r.contains(o,i)||i==o)for(;i&&i!=o;)i.id&&i.id.indexOf("-open")!=-1&&(t.fire("action"),e.menu&&(t.showMenu(),n.aria&&t.menu.items()[0].focus())),i=i.parentNode}),t.on("keydown",function(e){var n;13==e.keyCode&&"INPUT"===e.target.nodeName&&(e.preventDefault(),t.parents().reverse().each(function(e){if(e.toJSON)return n=e,!1}),t.fire("submit",{data:n.toJSON()}))}),t.on("keyup",function(e){if("INPUT"==e.target.nodeName){var n=t.state.get("value"),r=e.target.value;r!==n&&(t.state.set("value",r),t.fire("autocomplete",e))}}),t.on("mouseover",function(e){var n=t.tooltip().moveTo(-65535);if(t.statusLevel()&&e.target.className.indexOf(t.classPrefix+"status")!==-1){var r=t.statusMessage()||"Ok",i=n.text(r).show().testMoveRel(e.target,["bc-tc","bc-tl","bc-tr"]);n.classes.toggle("tooltip-n","bc-tc"==i),n.classes.toggle("tooltip-nw","bc-tl"==i),n.classes.toggle("tooltip-ne","bc-tr"==i),n.moveRel(e.target,i)}})},statusLevel:function(e){return arguments.length>0&&this.state.set("statusLevel",e),this.state.get("statusLevel")},statusMessage:function(e){return arguments.length>0&&this.state.set("statusMessage",e),this.state.get("statusMessage")},showMenu:function(){var e=this,n=e.settings,r;e.menu||(r=n.menu||[],r.length?r={type:"menu",items:r}:r.type=r.type||"menu",e.menu=t.create(r).parent(e).renderTo(e.getContainerElm()),e.fire("createmenu"),e.menu.reflow(),e.menu.on("cancel",function(t){t.control===e.menu&&e.focus()}),e.menu.on("show hide",function(t){t.control.items().each(function(t){t.active(t.value()==e.value())})}).fire("show"),e.menu.on("select",function(t){e.value(t.control.value())}),e.on("focusin",function(t){"INPUT"==t.target.tagName.toUpperCase()&&e.menu.hide()}),e.aria("expanded",!0)),e.menu.show(),e.menu.layoutRect({w:e.layoutRect().w}),e.menu.moveRel(e.getEl(),e.isRtl()?["br-tr","tr-br"]:["bl-tl","tl-bl"])},focus:function(){this.getEl("inp").focus()},repaint:function(){var e=this,t=e.getEl(),i=e.getEl("open"),o=e.layoutRect(),a,s,l=0,u=t.firstChild;e.statusLevel()&&"none"!==e.statusLevel()&&(l=parseInt(n.getRuntimeStyle(u,"padding-right"),10)-parseInt(n.getRuntimeStyle(u,"padding-left"),10)),a=i?o.w-n.getSize(i).width-10:o.w-10;var c=document;return c.all&&(!c.documentMode||c.documentMode<=8)&&(s=e.layoutRect().h-2+"px"),r(u).css({width:a-l,lineHeight:s}),e._super(),e},postRender:function(){var e=this;return r(this.getEl("inp")).on("change",function(t){e.state.set("value",t.target.value),e.fire("change",t)}),e._super()},renderHtml:function(){var e=this,t=e._id,n=e.settings,r=e.classPrefix,i=e.state.get("value")||"",o,a,s="",l="",u="";return"spellcheck"in n&&(l+=' spellcheck="'+n.spellcheck+'"'),n.maxLength&&(l+=' maxlength="'+n.maxLength+'"'),n.size&&(l+=' size="'+n.size+'"'),n.subtype&&(l+=' type="'+n.subtype+'"'),u='',e.disabled()&&(l+=' disabled="disabled"'),o=n.icon,o&&"caret"!=o&&(o=r+"ico "+r+"i-"+n.icon),a=e.state.get("text"),(o||a)&&(s='
    ",e.classes.add("has-open")),'
    '+u+s+"
    "},value:function(e){return arguments.length?(this.state.set("value",e),this):(this.state.get("rendered")&&this.state.set("value",this.getEl("inp").value), -this.state.get("value"))},showAutoComplete:function(e,n){var r=this;if(0===e.length)return void r.hideMenu();var i=function(e,t){return function(){r.fire("selectitem",{title:t,value:e})}};r.menu?r.menu.items().remove():r.menu=t.create({type:"menu",classes:"combobox-menu",layout:"flow"}).parent(r).renderTo(),o.each(e,function(e){r.menu.add({text:e.title,url:e.previewUrl,match:n,classes:"menu-item-ellipsis",onclick:i(e.value,e.title)})}),r.menu.renderNew(),r.hideMenu(),r.menu.on("cancel",function(e){e.control.parent()===r.menu&&(e.stopPropagation(),r.focus(),r.hideMenu())}),r.menu.on("select",function(){r.focus()});var a=r.layoutRect().w;r.menu.layoutRect({w:a,minW:0,maxW:a}),r.menu.reflow(),r.menu.show(),r.menu.moveRel(r.getEl(),r.isRtl()?["br-tr","tr-br"]:["bl-tl","tl-bl"])},hideMenu:function(){this.menu&&this.menu.hide()},bindStates:function(){var e=this;e.state.on("change:value",function(t){e.getEl("inp").value!=t.value&&(e.getEl("inp").value=t.value)}),e.state.on("change:disabled",function(t){e.getEl("inp").disabled=t.value}),e.state.on("change:statusLevel",function(t){var r=e.getEl("status"),i=e.classPrefix,o=t.value;n.css(r,"display","none"===o?"none":""),n.toggleClass(r,i+"i-checkmark","ok"===o),n.toggleClass(r,i+"i-warning","warn"===o),n.toggleClass(r,i+"i-error","error"===o),e.classes.toggle("has-status","none"!==o),e.repaint()}),n.on(e.getEl("status"),"mouseleave",function(){e.tooltip().hide()}),e.on("cancel",function(t){e.menu&&e.menu.visible()&&(t.stopPropagation(),e.hideMenu())});var t=function(e,t){t&&t.items().length>0&&t.items().eq(e)[0].focus()};return e.on("keydown",function(n){var r=n.keyCode;"INPUT"===n.target.nodeName&&(r===i.DOWN?(n.preventDefault(),e.fire("autocomplete"),t(0,e.menu)):r===i.UP&&(n.preventDefault(),t(-1,e.menu)))}),e._super()},remove:function(){r(this.getEl("inp")).off(),this.menu&&this.menu.remove(),this._super()}})}),r(Et,[wt],function(e){return e.extend({init:function(e){var t=this;e.spellcheck=!1,e.onaction&&(e.icon="none"),t._super(e),t.classes.add("colorbox"),t.on("change keyup postrender",function(){t.repaintColor(t.value())})},repaintColor:function(e){var t=this.getEl("open"),n=t?t.getElementsByTagName("i")[0]:null;if(n)try{n.style.background=e}catch(r){}},bindStates:function(){var e=this;return e.state.on("change:value",function(t){e.state.get("rendered")&&e.repaintColor(t.value)}),e._super()}})}),r(Nt,[bt,Ae],function(e,t){return e.extend({showPanel:function(){var e=this,n=e.settings;if(e.active(!0),e.panel)e.panel.show();else{var r=n.panel;r.type&&(r={layout:"grid",items:r}),r.role=r.role||"dialog",r.popover=!0,r.autohide=!0,r.ariaRoot=!0,e.panel=new t(r).on("hide",function(){e.active(!1)}).on("cancel",function(t){t.stopPropagation(),e.focus(),e.hidePanel()}).parent(e).renderTo(e.getContainerElm()),e.panel.fire("show"),e.panel.reflow()}e.panel.moveRel(e.getEl(),n.popoverAlign||(e.isRtl()?["bc-tr","bc-tc"]:["bc-tl","bc-tc"]))},hidePanel:function(){var e=this;e.panel&&e.panel.hide()},postRender:function(){var e=this;return e.aria("haspopup",!0),e.on("click",function(t){t.control===e&&(e.panel&&e.panel.visible()?e.hidePanel():(e.showPanel(),e.panel.focus(!!t.aria)))}),e._super()},remove:function(){return this.panel&&(this.panel.remove(),this.panel=null),this._super()}})}),r(_t,[Nt,w],function(e,t){var n=t.DOM;return e.extend({init:function(e){this._super(e),this.classes.add("colorbutton")},color:function(e){return e?(this._color=e,this.getEl("preview").style.backgroundColor=e,this):this._color},resetColor:function(){return this._color=null,this.getEl("preview").style.backgroundColor=null,this},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix,r=e.state.get("text"),i=e.settings.icon?n+"ico "+n+"i-"+e.settings.icon:"",o=e.settings.image?" style=\"background-image: url('"+e.settings.image+"')\"":"",a="";return r&&(e.classes.add("btn-has-text"),a=''+e.encode(r)+""),'
    '},postRender:function(){var e=this,t=e.settings.onclick;return e.on("click",function(r){r.aria&&"down"==r.aria.key||r.control!=e||n.getParent(r.target,"."+e.classPrefix+"open")||(r.stopImmediatePropagation(),t.call(e,r))}),delete e.settings.onclick,e._super()}})}),r(St,[],function(){function e(e){function i(e,i,o){var a,s,l,u,c,d;return a=0,s=0,l=0,e/=255,i/=255,o/=255,c=t(e,t(i,o)),d=n(e,n(i,o)),c==d?(l=c,{h:0,s:0,v:100*l}):(u=e==c?i-o:o==c?e-i:o-e,a=e==c?3:o==c?1:5,a=60*(a-u/(d-c)),s=(d-c)/d,l=d,{h:r(a),s:r(100*s),v:r(100*l)})}function o(e,i,o){var a,s,l,u;if(e=(parseInt(e,10)||0)%360,i=parseInt(i,10)/100,o=parseInt(o,10)/100,i=n(0,t(i,1)),o=n(0,t(o,1)),0===i)return void(d=f=p=r(255*o));switch(a=e/60,s=o*i,l=s*(1-Math.abs(a%2-1)),u=o-s,Math.floor(a)){case 0:d=s,f=l,p=0;break;case 1:d=l,f=s,p=0;break;case 2:d=0,f=s,p=l;break;case 3:d=0,f=l,p=s;break;case 4:d=l,f=0,p=s;break;case 5:d=s,f=0,p=l;break;default:d=f=p=0}d=r(255*(d+u)),f=r(255*(f+u)),p=r(255*(p+u))}function a(){function e(e){return e=parseInt(e,10).toString(16),e.length>1?e:"0"+e}return"#"+e(d)+e(f)+e(p)}function s(){return{r:d,g:f,b:p}}function l(){return i(d,f,p)}function u(e){var t;return"object"==typeof e?"r"in e?(d=e.r,f=e.g,p=e.b):"v"in e&&o(e.h,e.s,e.v):(t=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)[^\)]*\)/gi.exec(e))?(d=parseInt(t[1],10),f=parseInt(t[2],10),p=parseInt(t[3],10)):(t=/#([0-F]{2})([0-F]{2})([0-F]{2})/gi.exec(e))?(d=parseInt(t[1],16),f=parseInt(t[2],16),p=parseInt(t[3],16)):(t=/#([0-F])([0-F])([0-F])/gi.exec(e))&&(d=parseInt(t[1]+t[1],16),f=parseInt(t[2]+t[2],16),p=parseInt(t[3]+t[3],16)),d=d<0?0:d>255?255:d,f=f<0?0:f>255?255:f,p=p<0?0:p>255?255:p,c}var c=this,d=0,f=0,p=0;e&&u(e),c.toRgb=s,c.toHsv=l,c.toHex=a,c.parse=u}var t=Math.min,n=Math.max,r=Math.round;return e}),r(kt,[Pe,_e,ve,St],function(e,t,n,r){return e.extend({Defaults:{classes:"widget colorpicker"},init:function(e){this._super(e)},postRender:function(){function e(e,t){var r=n.getPos(e),i,o;return i=t.pageX-r.x,o=t.pageY-r.y,i=Math.max(0,Math.min(i/e.clientWidth,1)),o=Math.max(0,Math.min(o/e.clientHeight,1)),{x:i,y:o}}function i(e,t){var i=(360-e.h)/360;n.css(d,{top:100*i+"%"}),t||n.css(p,{left:e.s+"%",top:100-e.v+"%"}),f.style.background=new r({s:100,v:100,h:e.h}).toHex(),s.color().parse({s:e.s,v:e.v,h:e.h})}function o(t){var n;n=e(f,t),u.s=100*n.x,u.v=100*(1-n.y),i(u),s.fire("change")}function a(t){var n;n=e(c,t),u=l.toHsv(),u.h=360*(1-n.y),i(u,!0),s.fire("change")}var s=this,l=s.color(),u,c,d,f,p;c=s.getEl("h"),d=s.getEl("hp"),f=s.getEl("sv"),p=s.getEl("svp"),s._repaint=function(){u=l.toHsv(),i(u)},s._super(),s._svdraghelper=new t(s._id+"-sv",{start:o,drag:o}),s._hdraghelper=new t(s._id+"-h",{start:a,drag:a}),s._repaint()},rgb:function(){return this.color().toRgb()},value:function(e){var t=this;return arguments.length?(t.color().parse(e),void(t._rendered&&t._repaint())):t.color().toHex()},color:function(){return this._color||(this._color=new r),this._color},renderHtml:function(){function e(){var e,t,n="",i,a;for(i="filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=",a=o.split(","),e=0,t=a.length-1;e';return n}var t=this,n=t._id,r=t.classPrefix,i,o="#ff0000,#ff0080,#ff00ff,#8000ff,#0000ff,#0080ff,#00ffff,#00ff80,#00ff00,#80ff00,#ffff00,#ff8000,#ff0000",a="background: -ms-linear-gradient(top,"+o+");background: linear-gradient(to bottom,"+o+");";return i='
    '+e()+'
    ','
    '+i+"
    "}})}),r(Tt,[Pe],function(e){return e.extend({init:function(e){var t=this;e.delimiter||(e.delimiter="\xbb"),t._super(e),t.classes.add("path"),t.canFocus=!0,t.on("click",function(e){var n,r=e.target;(n=r.getAttribute("data-index"))&&t.fire("select",{value:t.row()[n],index:n})}),t.row(t.settings.row)},focus:function(){var e=this;return e.getEl().firstChild.focus(),e},row:function(e){return arguments.length?(this.state.set("row",e),this):this.state.get("row")},renderHtml:function(){var e=this;return'
    '+e._getDataPathHtml(e.state.get("row"))+"
    "},bindStates:function(){var e=this;return e.state.on("change:row",function(t){e.innerHtml(e._getDataPathHtml(t.value))}),e._super()},_getDataPathHtml:function(e){var t=this,n=e||[],r,i,o="",a=t.classPrefix;for(r=0,i=n.length;r0?'":"")+'
    '+n[r].name+"
    ";return o||(o='
    \xa0
    '),o}})}),r(Rt,[Tt],function(e){return e.extend({postRender:function(){function e(e){if(1===e.nodeType){if("BR"==e.nodeName||e.getAttribute("data-mce-bogus"))return!0;if("bookmark"===e.getAttribute("data-mce-type"))return!0}return!1}var t=this,n=t.settings.editor;return n.settings.elementpath!==!1&&(t.on("select",function(e){n.focus(),n.selection.select(this.row()[e.index].element),n.nodeChanged()}),n.on("nodeChange",function(r){for(var i=[],o=r.parents,a=o.length;a--;)if(1==o[a].nodeType&&!e(o[a])){var s=n.fire("ResolveName",{name:o[a].nodeName.toLowerCase(),target:o[a]});if(s.isDefaultPrevented()||i.push({name:s.name,element:o[a]}),s.isPropagationStopped())break}t.row(i)})),t._super()}})}),r(At,[Ne],function(e){return e.extend({Defaults:{layout:"flex",align:"center",defaults:{flex:1}},renderHtml:function(){var e=this,t=e._layout,n=e.classPrefix;return e.classes.add("formitem"),t.preRender(e),'
    '+(e.settings.title?'
    '+e.settings.title+"
    ":"")+'
    '+(e.settings.html||"")+t.renderHtml(e)+"
    "}})}),r(Bt,[Ne,At,m],function(e,t,n){return e.extend({Defaults:{containerCls:"form",layout:"flex",direction:"column",align:"stretch",flex:1,padding:20,labelGap:30,spacing:10,callbacks:{submit:function(){this.submit()}}},preRender:function(){var e=this,r=e.items();e.settings.formItemDefaults||(e.settings.formItemDefaults={layout:"flex",autoResize:"overflow",defaults:{flex:1}}),r.each(function(r){var i,o=r.settings.label;o&&(i=new t(n.extend({items:{type:"label",id:r._id+"-l",text:o,flex:0,forId:r._id,disabled:r.disabled()}},e.settings.formItemDefaults)),i.type="formitem",r.aria("labelledby",r._id+"-l"),"undefined"==typeof r.settings.flex&&(r.settings.flex=1),e.replace(r,i),i.add(r))})},submit:function(){return this.fire("submit",{data:this.toJSON()})},postRender:function(){var e=this;e._super(),e.fromJSON(e.settings.data)},bindStates:function(){function e(){var e=0,n=[],r,i,o;if(t.settings.labelGapCalc!==!1)for(o="children"==t.settings.labelGapCalc?t.find("formitem"):t.items(),o.filter("formitem").each(function(t){var r=t.items()[0],i=r.getEl().clientWidth;e=i>e?i:e,n.push(r)}),i=t.settings.labelGap||0,r=n.length;r--;)n[r].settings.minWidth=e+i}var t=this;t._super(),t.on("show",e),e()}})}),r(Dt,[Bt],function(e){return e.extend({Defaults:{containerCls:"fieldset",layout:"flex",direction:"column",align:"stretch",flex:1,padding:"25 15 5 15",labelGap:30,spacing:10,border:1},renderHtml:function(){var e=this,t=e._layout,n=e.classPrefix;return e.preRender(),t.preRender(e),'
    '+(e.settings.title?''+e.settings.title+"":"")+'
    '+(e.settings.html||"")+t.renderHtml(e)+"
    "}})}),r(Lt,[w,z,h,it,m,_],function(e,t,n,r,i,o){var a=i.trim,s=function(e,t,n,r,i){return{type:e,title:t,url:n,level:r,attach:i}},l=function(e){for(;e=e.parentNode;){var t=e.contentEditable;if(t&&"inherit"!==t)return o.isContentEditableTrue(e)}return!1},u=function(t,n){return e.DOM.select(t,n)},c=function(e){return e.innerText||e.textContent},d=function(e){return e.id?e.id:r.uuid("h")},f=function(e){return e&&"A"===e.nodeName&&(e.id||e.name)},p=function(e){return f(e)&&m(e)},h=function(e){return e&&/^(H[1-6])$/.test(e.nodeName)},m=function(e){return l(e)&&!o.isContentEditableFalse(e)},g=function(e){return h(e)&&m(e)},v=function(e){return h(e)?parseInt(e.nodeName.substr(1),10):0},y=function(e){var t=d(e),n=function(){e.id=t};return s("header",c(e),"#"+t,v(e),n)},b=function(e){var n=e.id||e.name,r=c(e);return s("anchor",r?r:"#"+n,"#"+n,0,t.noop)},C=function(e){return n.map(n.filter(e,g),y)},x=function(e){return n.map(n.filter(e,p),b)},w=function(e){var t=u("h1,h2,h3,h4,h5,h6,a:not([href])",e);return t},E=function(e){return a(e.title).length>0},N=function(e){var t=w(e);return n.filter(C(t).concat(x(t)),E)};return{find:N}}),r(Mt,[wt,m,h,z,I,Lt],function(e,t,n,r,i,o){var a={},s=5,l=function(e){return{title:e.title,value:{title:{raw:e.title},url:e.url,attach:e.attach}}},u=function(e){return t.map(e,l)},c=function(e,t){return{title:e,value:{title:e,url:t,attach:r.noop}}},d=function(e,t){var r=n.find(t,function(t){return t.url===e});return!r},f=function(e,t,n){var r=t in e?e[t]:n;return r===!1?null:r},p=function(e,i,o,s){var l={title:"-"},p=function(e){var a=n.filter(e[o],function(e){return d(e,i)});return t.map(a,function(e){return{title:e,value:{title:e,url:e,attach:r.noop}}})},h=function(e){var t=n.filter(i,function(t){return t.type==e});return u(t)},g=function(){var e=h("anchor"),t=f(s,"anchor_top","#top"),n=f(s,"anchor_bottom","#bottom");return null!==t&&e.unshift(c("",t)),null!==n&&e.push(c("",n)),e},v=function(e){return n.reduce(e,function(e,t){var n=0===e.length||0===t.length;return n?e.concat(t):e.concat(l,t)},[])};return s.typeahead_urls===!1?[]:"file"===o?v([m(e,p(a)),m(e,h("header")),m(e,g())]):m(e,p(a))},h=function(e,t){var r=a[t];/^https?/.test(e)&&(r?n.indexOf(r,e)===-1&&(a[t]=r.slice(0,s).concat(e)):a[t]=[e])},m=function(e,n){var r=e.toLowerCase(),i=t.grep(n,function(e){return e.title.toLowerCase().indexOf(r)!==-1});return 1===i.length&&i[0].title===e?[]:i},g=function(e){var t=e.title;return t.raw?t.raw:t},v=function(e,t,n,r){var i=function(i){var a=o.find(n),s=p(i,a,r,t);e.showAutoComplete(s,i)};e.on("autocomplete",function(){i(e.value())}),e.on("selectitem",function(t){var n=t.value;e.value(n.url);var i=g(n);"image"===r?e.fire("change",{meta:{alt:i,attach:n.attach}}):e.fire("change",{meta:{text:i,attach:n.attach}}),e.focus()}),e.on("click",function(t){0===e.value().length&&"INPUT"===t.target.nodeName&&i("")}),e.on("PostRender",function(){e.getRoot().on("submit",function(t){t.isDefaultPrevented()||h(e.value(),r)})})},y=function(e){var t=e.status,n=e.message;return"valid"===t?{status:"ok",message:n}:"unknown"===t?{status:"warn",message:n}:"invalid"===t?{status:"warn",message:n}:{status:"none",message:""}},b=function(e,t,n){var r=t.filepicker_validator_handler;if(r){var i=function(t){return 0===t.length?void e.statusLevel("none"):void r({url:t,type:n},function(t){var n=y(t);e.statusMessage(n.message),e.statusLevel(n.status)})};e.state.on("change:value",function(e){i(e.value)})}};return e.extend({init:function(e){var n=this,r=tinymce.activeEditor,i=r.settings,o,a,s,l=e.filetype;e.spellcheck=!1,s=i.file_picker_types||i.file_browser_callback_types,s&&(s=t.makeMap(s,/[, ]/)),s&&!s[l]||(a=i.file_picker_callback,!a||s&&!s[l]?(a=i.file_browser_callback,!a||s&&!s[l]||(o=function(){a(n.getEl("inp").id,n.value(),l,window)})):o=function(){var e=n.fire("beforecall").meta;e=t.extend({filetype:l},e),a.call(r,function(e,t){n.value(e).fire("change",{meta:t})},n.value(),e)}),o&&(e.icon="browse",e.onaction=o),n._super(e),v(n,i,r.getBody(),l),b(n,i,l)}})}),r(Pt,[yt],function(e){return e.extend({recalc:function(e){var t=e.layoutRect(),n=e.paddingBox;e.items().filter(":visible").each(function(e){e.layoutRect({x:n.left,y:n.top,w:t.innerW-n.right-n.left,h:t.innerH-n.top-n.bottom}),e.recalc&&e.recalc()})}})}),r(Ot,[yt],function(e){return e.extend({recalc:function(e){var t,n,r,i,o,a,s,l,u,c,d,f,p,h,m,g,v=[],y,b,C,x,w,E,N,_,S,k,T,R,A,B,D,L,M,P,O,H,I,F,z=Math.max,U=Math.min;for(r=e.items().filter(":visible"),i=e.layoutRect(),o=e.paddingBox,a=e.settings,f=e.isRtl()?a.direction||"row-reversed":a.direction,s=a.align,l=e.isRtl()?a.pack||"end":a.pack,u=a.spacing||0,"row-reversed"!=f&&"column-reverse"!=f||(r=r.set(r.toArray().reverse()),f=f.split("-")[0]),"column"==f?(S="y",N="h",_="minH",k="maxH",R="innerH",T="top",A="deltaH",B="contentH",O="left",M="w",D="x",L="innerW",P="minW",H="right",I="deltaW",F="contentW"):(S="x",N="w",_="minW",k="maxW",R="innerW",T="left",A="deltaW",B="contentW",O="top",M="h",D="y",L="innerH",P="minH",H="bottom",I="deltaH",F="contentH"),d=i[R]-o[T]-o[T],E=c=0,t=0,n=r.length;t0&&(c+=g,h[k]&&v.push(p),h.flex=g),d-=h[_],y=o[O]+h[P]+o[H],y>E&&(E=y);if(x={},d<0?x[_]=i[_]-d+i[A]:x[_]=i[R]-d+i[A],x[P]=E+i[I],x[B]=i[R]-d,x[F]=E,x.minW=U(x.minW,i.maxW),x.minH=U(x.minH,i.maxH),x.minW=z(x.minW,i.startMinWidth),x.minH=z(x.minH,i.startMinHeight),!i.autoResize||x.minW==i.minW&&x.minH==i.minH){for(C=d/c,t=0,n=v.length;tb?(d-=h[k]-h[_],c-=h.flex,h.flex=0,h.maxFlexSize=b):h.maxFlexSize=0;for(C=d/c,w=o[T],x={},0===c&&("end"==l?w=d+o[T]:"center"==l?(w=Math.round(i[R]/2-(i[R]-d)/2)+o[T],w<0&&(w=o[T])):"justify"==l&&(w=o[T],u=Math.floor(d/(r.length-1)))),x[D]=o[O],t=0,n=r.length;t0&&(y+=h.flex*C),x[N]=y,x[S]=w,p.layoutRect(x),p.recalc&&p.recalc(),w+=y+u}else if(x.w=x.minW,x.h=x.minH,e.layoutRect(x),this.recalc(e),null===e._lastRect){var W=e.parent();W&&(W._lastRect=null,W.recalc())}}})}),r(Ht,[vt],function(e){return e.extend({Defaults:{containerClass:"flow-layout",controlClass:"flow-layout-item",endClass:"break"},recalc:function(e){e.items().filter(":visible").each(function(e){e.recalc&&e.recalc()})},isNative:function(){return!0}})}),r(It,[w],function(e){var n=function(e,t,n){for(;n!==t;){if(n.style[e])return n.style[e];n=n.parentNode}return""},r=function(e){return/[0-9.]+px$/.test(e)?Math.round(72*parseInt(e,10)/96)+"pt":e},i=function(e){return e.replace(/[\'\"]/g,"").replace(/,\s+/g,",")},o=function(t,n){return e.DOM.getStyle(n,t,!0)},a=function(e,t){var r=n("fontSize",e,t);return""!==r?r:o("fontSize",t)},s=function(e,r){var a=n("fontFamily",e,r),s=""!==a?a:o("fontFamily",r);return s!==t?i(s):""};return{getFontSize:a,getFontFamily:s,toPt:r}}),r(Ft,[xe,Pe,Ae,m,h,w,ut,d,It],function(e,t,n,r,i,o,a,s,l){function u(e){e.settings.ui_container&&(s.container=o.DOM.select(e.settings.ui_container)[0])}function c(t){t.on("ScriptsLoaded",function(){t.rtl&&(e.rtl=!0)})}function d(e){function t(t,n){return function(){var r=this;e.on("nodeChange",function(i){var o=e.formatter,a=null;f(i.parents,function(e){if(f(t,function(t){if(n?o.matchNode(e,n,{value:t.value})&&(a=t.value):o.matchNode(e,t.value)&&(a=t.value),a)return!1}),a)return!1}),r.value(a)})}}function i(t){return function(){var n=this,r=function(e){return e?e.split(",")[0]:""};e.on("nodeChange",function(i){var o,a=null;o=l.getFontFamily(e.getBody(),i.element),f(t,function(e){e.value.toLowerCase()===o.toLowerCase()&&(a=e.value)}),f(t,function(e){a||r(e.value).toLowerCase()!==r(o).toLowerCase()||(a=e.value)}),n.value(a),!a&&o&&n.text(r(o))})}}function o(t){return function(){var n=this;e.on("nodeChange",function(r){var i,o,a=null;i=l.getFontSize(e.getBody(),r.element),o=l.toPt(i),f(t,function(e){e.value===i?a=i:e.value===o&&(a=o)}),n.value(a),a||n.text(o)})}}function a(e){e=e.replace(/;$/,"").split(";");for(var t=e.length;t--;)e[t]=e[t].split("=");return e}function s(){function t(e){var n=[];if(e)return f(e,function(e){var o={text:e.title,icon:e.icon};if(e.items)o.menu=t(e.items);else{var a=e.format||"custom"+r++;e.format||(e.name=a,i.push(e)),o.format=a,o.cmd=e.cmd}n.push(o)}),n}function n(){var n;return n=t(e.settings.style_formats_merge?e.settings.style_formats?o.concat(e.settings.style_formats):o:e.settings.style_formats||o)}var r=0,i=[],o=[{title:"Headings",items:[{title:"Heading 1",format:"h1"},{title:"Heading 2",format:"h2"},{title:"Heading 3",format:"h3"},{title:"Heading 4",format:"h4"},{title:"Heading 5",format:"h5"},{title:"Heading 6",format:"h6"}]},{title:"Inline",items:[{title:"Bold",icon:"bold",format:"bold"},{title:"Italic",icon:"italic",format:"italic"},{title:"Underline",icon:"underline",format:"underline"},{title:"Strikethrough",icon:"strikethrough",format:"strikethrough"},{title:"Superscript",icon:"superscript",format:"superscript"},{title:"Subscript",icon:"subscript",format:"subscript"},{title:"Code",icon:"code",format:"code"}]},{title:"Blocks",items:[{title:"Paragraph",format:"p"},{title:"Blockquote",format:"blockquote"},{title:"Div",format:"div"},{title:"Pre",format:"pre"}]},{title:"Alignment",items:[{title:"Left",icon:"alignleft",format:"alignleft"},{title:"Center",icon:"aligncenter",format:"aligncenter"},{title:"Right",icon:"alignright",format:"alignright"},{title:"Justify",icon:"alignjustify",format:"alignjustify"}]}];return e.on("init",function(){f(i,function(t){e.formatter.register(t.name,t)})}),{type:"menu",items:n(),onPostRender:function(t){e.fire("renderFormatsMenu",{control:t.control})},itemDefaults:{preview:!0,textStyle:function(){if(this.settings.format)return e.formatter.getCssText(this.settings.format)},onPostRender:function(){var t=this;t.parent().on("show",function(){var n,r;n=t.settings.format,n&&(t.disabled(!e.formatter.canApply(n)),t.active(e.formatter.match(n))),r=t.settings.cmd,r&&t.active(e.queryCommandState(r))})},onclick:function(){this.settings.format&&h(this.settings.format),this.settings.cmd&&e.execCommand(this.settings.cmd)}}}}function u(t){return function(){var n=this;e.formatter?e.formatter.formatChanged(t,function(e){n.active(e)}):e.on("init",function(){e.formatter.formatChanged(t,function(e){n.active(e)})})}}function c(t){return function(){function n(){var n="redo"==t?"hasRedo":"hasUndo";return!!e.undoManager&&e.undoManager[n]()}var r=this;r.disabled(!n()),e.on("Undo Redo AddUndo TypingUndo ClearUndos SwitchMode",function(){r.disabled(e.readonly||!n())})}}function d(){var t=this;e.on("VisualAid",function(e){t.active(e.hasVisual)}),t.active(e.hasVisual)}function h(t){t.control&&(t=t.control.value()),t&&e.execCommand("mceToggleFormat",!1,t)}function m(t){var n=t.length;return r.each(t,function(t){t.menu&&(t.hidden=0===m(t.menu));var r=t.format;r&&(t.hidden=!e.formatter.canApply(r)),t.hidden&&n--}),n}function g(t){var n=t.items().length;return t.items().each(function(t){t.menu&&t.visible(g(t.menu)>0),!t.menu&&t.settings.menu&&t.visible(m(t.settings.menu)>0);var r=t.settings.format;r&&t.visible(e.formatter.canApply(r)),t.visible()||n--}),n}var v;v=s(),f({bold:"Bold",italic:"Italic",underline:"Underline",strikethrough:"Strikethrough",subscript:"Subscript",superscript:"Superscript"},function(t,n){e.addButton(n,{tooltip:t,onPostRender:u(n),onclick:function(){h(n)}})}),f({outdent:["Decrease indent","Outdent"],indent:["Increase indent","Indent"],cut:["Cut","Cut"],copy:["Copy","Copy"],paste:["Paste","Paste"],help:["Help","mceHelp"],selectall:["Select all","SelectAll"],removeformat:["Clear formatting","RemoveFormat"],visualaid:["Visual aids","mceToggleVisualAid"],newdocument:["New document","mceNewDocument"]},function(t,n){e.addButton(n,{tooltip:t[0],cmd:t[1]})}),f({blockquote:["Blockquote","mceBlockQuote"],subscript:["Subscript","Subscript"],superscript:["Superscript","Superscript"],alignleft:["Align left","JustifyLeft"],aligncenter:["Align center","JustifyCenter"],alignright:["Align right","JustifyRight"],alignjustify:["Justify","JustifyFull"],alignnone:["No alignment","JustifyNone"]},function(t,n){e.addButton(n,{tooltip:t[0],cmd:t[1],onPostRender:u(n)})});var y=function(e){var t=e;return t.length>0&&"-"===t[0].text&&(t=t.slice(1)),t.length>0&&"-"===t[t.length-1].text&&(t=t.slice(0,t.length-1)),t},b=function(t){var n,i;if("string"==typeof t)i=t.split(" ");else if(r.isArray(t))return p(r.map(t,b));return n=r.grep(i,function(t){return"|"===t||t in e.menuItems}),r.map(n,function(t){return"|"===t?{text:"-"}:e.menuItems[t]})},C=function(t){var n=[{text:"-"}],i=r.grep(e.menuItems,function(e){return e.context===t});return r.each(i,function(e){"before"==e.separator&&n.push({text:"|"}),e.prependToContext?n.unshift(e):n.push(e),"after"==e.separator&&n.push({text:"|"})}),n},x=function(e){return y(e.insert_button_items?b(e.insert_button_items):C("insert"))};e.addButton("undo",{tooltip:"Undo",onPostRender:c("undo"),cmd:"undo"}),e.addButton("redo",{tooltip:"Redo",onPostRender:c("redo"),cmd:"redo"}),e.addMenuItem("newdocument",{text:"New document",icon:"newdocument",cmd:"mceNewDocument"}),e.addMenuItem("undo",{text:"Undo",icon:"undo",shortcut:"Meta+Z",onPostRender:c("undo"),cmd:"undo"}),e.addMenuItem("redo",{text:"Redo",icon:"redo",shortcut:"Meta+Y",onPostRender:c("redo"),cmd:"redo"}),e.addMenuItem("visualaid",{text:"Visual aids",selectable:!0,onPostRender:d,cmd:"mceToggleVisualAid"}),e.addButton("remove",{tooltip:"Remove",icon:"remove",cmd:"Delete"}),e.addButton("insert",{type:"menubutton",icon:"insert",menu:[],oncreatemenu:function(){this.menu.add(x(e.settings)),this.menu.renderNew()}}),f({cut:["Cut","Cut","Meta+X"],copy:["Copy","Copy","Meta+C"],paste:["Paste","Paste","Meta+V"],selectall:["Select all","SelectAll","Meta+A"],bold:["Bold","Bold","Meta+B"],italic:["Italic","Italic","Meta+I"],underline:["Underline","Underline","Meta+U"],strikethrough:["Strikethrough","Strikethrough"],subscript:["Subscript","Subscript"],superscript:["Superscript","Superscript"],removeformat:["Clear formatting","RemoveFormat"]},function(t,n){e.addMenuItem(n,{text:t[0],icon:n,shortcut:t[2],cmd:t[1]})}),e.on("mousedown",function(){n.hideAll()}),e.addButton("styleselect",{type:"menubutton",text:"Formats",menu:v,onShowMenu:function(){e.settings.style_formats_autohide&&g(this.menu)}}),e.addButton("formatselect",function(){var n=[],r=a(e.settings.block_formats||"Paragraph=p;Heading 1=h1;Heading 2=h2;Heading 3=h3;Heading 4=h4;Heading 5=h5;Heading 6=h6;Preformatted=pre");return f(r,function(t){n.push({text:t[0],value:t[1],textStyle:function(){return e.formatter.getCssText(t[1])}})}),{type:"listbox",text:r[0][0],values:n,fixedWidth:!0,onselect:h,onPostRender:t(n)}}),e.addButton("fontselect",function(){var t="Andale Mono=andale mono,monospace;Arial=arial,helvetica,sans-serif;Arial Black=arial black,sans-serif;Book Antiqua=book antiqua,palatino,serif;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,palatino,serif;Helvetica=helvetica,arial,sans-serif;Impact=impact,sans-serif;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco,monospace;Times New Roman=times new roman,times,serif;Trebuchet MS=trebuchet ms,geneva,sans-serif;Verdana=verdana,geneva,sans-serif;Webdings=webdings;Wingdings=wingdings,zapf dingbats",n=[],r=a(e.settings.font_formats||t);return f(r,function(e){n.push({text:{raw:e[0]},value:e[1],textStyle:e[1].indexOf("dings")==-1?"font-family:"+e[1]:""})}),{type:"listbox",text:"Font Family",tooltip:"Font Family",values:n,fixedWidth:!0,onPostRender:i(n),onselect:function(t){t.control.settings.value&&e.execCommand("FontName",!1,t.control.settings.value)}}}),e.addButton("fontsizeselect",function(){var t=[],n="8pt 10pt 12pt 14pt 18pt 24pt 36pt",r=e.settings.fontsize_formats||n;return f(r.split(" "),function(e){var n=e,r=e,i=e.split("=");i.length>1&&(n=i[0],r=i[1]),t.push({text:n,value:r})}),{type:"listbox",text:"Font Sizes",tooltip:"Font Sizes",values:t,fixedWidth:!0,onPostRender:o(t),onclick:function(t){t.control.settings.value&&e.execCommand("FontSize",!1,t.control.settings.value)}}}),e.addMenuItem("formats",{text:"Formats",menu:v})}var f=r.each,p=function(e){return i.reduce(e,function(e,t){return e.concat(t)},[])};a.on("AddEditor",function(e){var t=e.editor;c(t),d(t),u(t)}),e.translate=function(e){return a.translate(e)},t.tooltips=!s.iOS}),r(zt,[yt],function(e){return e.extend({recalc:function(e){var t,n,r,i,o,a,s,l,u,c,d,f,p,h,m,g,v,y,b,C,x,w,E,N=[],_=[],S,k,T,R,A,B;t=e.settings,i=e.items().filter(":visible"),o=e.layoutRect(),r=t.columns||Math.ceil(Math.sqrt(i.length)),n=Math.ceil(i.length/r),y=t.spacingH||t.spacing||0,b=t.spacingV||t.spacing||0,C=t.alignH||t.align,x=t.alignV||t.align,g=e.paddingBox,A="reverseRows"in t?t.reverseRows:e.isRtl(),C&&"string"==typeof C&&(C=[C]),x&&"string"==typeof x&&(x=[x]);for(d=0;dN[d]?S:N[d],_[f]=k>_[f]?k:_[f];for(T=o.innerW-g.left-g.right,w=0,d=0;d0?y:0),T-=(d>0?y:0)+N[d];for(R=o.innerH-g.top-g.bottom,E=0,f=0;f0?b:0),R-=(f>0?b:0)+_[f];if(w+=g.left+g.right,E+=g.top+g.bottom,l={},l.minW=w+(o.w-o.innerW),l.minH=E+(o.h-o.innerH),l.contentW=l.minW-o.deltaW,l.contentH=l.minH-o.deltaH,l.minW=Math.min(l.minW,o.maxW),l.minH=Math.min(l.minH,o.maxH),l.minW=Math.max(l.minW,o.startMinWidth),l.minH=Math.max(l.minH,o.startMinHeight),!o.autoResize||l.minW==o.minW&&l.minH==o.minH){o.autoResize&&(l=e.layoutRect(l),l.contentW=l.minW-o.deltaW,l.contentH=l.minH-o.deltaH);var D;D="start"==t.packV?0:R>0?Math.floor(R/n):0;var L=0,M=t.flexWidths;if(M)for(d=0;d'},src:function(e){this.getEl().src=e},html:function(e,n){var r=this,i=this.getEl().contentWindow.document.body;return i?(i.innerHTML=e,n&&n()):t.setTimeout(function(){r.html(e)}),this}})}),r(Wt,[Pe],function(e){return e.extend({init:function(e){var t=this;t._super(e),t.classes.add("widget").add("infobox"),t.canFocus=!1},severity:function(e){this.classes.remove("error"),this.classes.remove("warning"),this.classes.remove("success"),this.classes.add(e)},help:function(e){this.state.set("help",e)},renderHtml:function(){var e=this,t=e.classPrefix;return'
    '+e.encode(e.state.get("text"))+'
    '},bindStates:function(){var e=this;return e.state.on("change:text",function(t){e.getEl("body").firstChild.data=e.encode(t.value),e.state.get("rendered")&&e.updateLayoutRect()}),e.state.on("change:help",function(t){ +// 4.5.5 (2017-03-07) +!function(e,t){"use strict";function n(e,t){for(var n,r=[],i=0;i=r.x&&o.x+o.w<=r.w+r.x&&o.y>=r.y&&o.y+o.h<=r.h+r.y)return i[a];return null}function n(e,t,n){return o(e.x-t,e.y-n,e.w+2*t,e.h+2*n)}function r(e,t){var n,r,i,a;return n=l(e.x,t.x),r=l(e.y,t.y),i=s(e.x+e.w,t.x+t.w),a=s(e.y+e.h,t.y+t.h),i-n<0||a-r<0?null:o(n,r,i-n,a-r)}function i(e,t,n){var r,i,a,s,u,c,d,f,p,h;return u=e.x,c=e.y,d=e.x+e.w,f=e.y+e.h,p=t.x+t.w,h=t.y+t.h,r=l(0,t.x-u),i=l(0,t.y-c),a=l(0,d-p),s=l(0,f-h),u+=r,c+=i,n&&(d+=r,f+=i,u-=a,c-=s),d-=a,f-=s,o(u,c,d-u,f-c)}function o(e,t,n,r){return{x:e,y:t,w:n,h:r}}function a(e){return o(e.left,e.top,e.width,e.height)}var s=Math.min,l=Math.max,u=Math.round;return{inflate:n,relativePosition:e,findBestRelativePosition:t,intersect:r,clamp:i,create:o,fromClientRect:a}}),r(u,[],function(){function e(e,t){return function(){e.apply(t,arguments)}}function t(t){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof t)throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],s(t,e(r,this),e(i,this))}function n(e){var t=this;return null===this._state?void this._deferreds.push(e):void l(function(){var n=t._state?e.onFulfilled:e.onRejected;if(null===n)return void(t._state?e.resolve:e.reject)(t._value);var r;try{r=n(t._value)}catch(i){return void e.reject(i)}e.resolve(r)})}function r(t){try{if(t===this)throw new TypeError("A promise cannot be resolved with itself.");if(t&&("object"==typeof t||"function"==typeof t)){var n=t.then;if("function"==typeof n)return void s(e(n,t),e(r,this),e(i,this))}this._state=!0,this._value=t,o.call(this)}catch(a){i.call(this,a)}}function i(e){this._state=!1,this._value=e,o.call(this)}function o(){for(var e=0,t=this._deferreds.length;e=534;return{opera:r,webkit:i,ie:o,gecko:l,mac:u,iOS:c,android:d,contentEditable:g,transparentSrc:"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",caretAfter:8!=o,range:window.getSelection&&"Range"in window,documentMode:o&&!s?document.documentMode||7:10,fileApi:f,ceFalse:o===!1||o>8,canHaveCSP:o===!1||o>11,desktop:!p&&!h,windowsPhone:m}}),r(f,[c,d],function(e,t){function n(e,t,n,r){e.addEventListener?e.addEventListener(t,n,r||!1):e.attachEvent&&e.attachEvent("on"+t,n)}function r(e,t,n,r){e.removeEventListener?e.removeEventListener(t,n,r||!1):e.detachEvent&&e.detachEvent("on"+t,n)}function i(e,t){var n,r=t;return n=e.path,n&&n.length>0&&(r=n[0]),e.deepPath&&(n=e.deepPath(),n&&n.length>0&&(r=n[0])),r}function o(e,n){function r(){return!1}function o(){return!0}var a,s=n||{},l;for(a in e)c[a]||(s[a]=e[a]);if(s.target||(s.target=s.srcElement||document),t.experimentalShadowDom&&(s.target=i(e,s.target)),e&&u.test(e.type)&&e.pageX===l&&e.clientX!==l){var d=s.target.ownerDocument||document,f=d.documentElement,p=d.body;s.pageX=e.clientX+(f&&f.scrollLeft||p&&p.scrollLeft||0)-(f&&f.clientLeft||p&&p.clientLeft||0),s.pageY=e.clientY+(f&&f.scrollTop||p&&p.scrollTop||0)-(f&&f.clientTop||p&&p.clientTop||0)}return s.preventDefault=function(){s.isDefaultPrevented=o,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},s.stopPropagation=function(){s.isPropagationStopped=o,e&&(e.stopPropagation?e.stopPropagation():e.cancelBubble=!0)},s.stopImmediatePropagation=function(){s.isImmediatePropagationStopped=o,s.stopPropagation()},s.isDefaultPrevented||(s.isDefaultPrevented=r,s.isPropagationStopped=r,s.isImmediatePropagationStopped=r),"undefined"==typeof s.metaKey&&(s.metaKey=!1),s}function a(t,i,o){function a(){o.domLoaded||(o.domLoaded=!0,i(c))}function s(){("complete"===u.readyState||"interactive"===u.readyState&&u.body)&&(r(u,"readystatechange",s),a())}function l(){try{u.documentElement.doScroll("left")}catch(t){return void e.setTimeout(l)}a()}var u=t.document,c={type:"ready"};return o.domLoaded?void i(c):(u.addEventListener?"complete"===u.readyState?a():n(t,"DOMContentLoaded",a):(n(u,"readystatechange",s),u.documentElement.doScroll&&t.self===t.top&&l()),void n(t,"load",a))}function s(){function e(e,t){var n,r,o,a,s=i[t];if(n=s&&s[e.type])for(r=0,o=n.length;rw.cacheLength&&delete e[t.shift()],e[n+" "]=r}var t=[];return e}function r(e){return e[F]=!0,e}function i(e){var t=D.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function o(e,t){for(var n=e.split("|"),r=e.length;r--;)w.attrHandle[n[r]]=t}function a(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||X)-(~e.sourceIndex||X);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function s(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function l(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function u(e){return r(function(t){return t=+t,r(function(n,r){for(var i,o=e([],n.length,t),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function c(e){return e&&typeof e.getElementsByTagName!==Y&&e}function d(){}function f(e){for(var t=0,n=e.length,r="";t1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function m(t,n,r){for(var i=0,o=n.length;i-1&&(r[u]=!(a[u]=d))}}else b=g(b===a?b.splice(h,b.length):b),o?o(null,a,b,l):Z.apply(a,b)})}function y(e){for(var t,n,r,i=e.length,o=w.relative[e[0].type],a=o||w.relative[" "],s=o?1:0,l=p(function(e){return e===t},a,!0),u=p(function(e){return te.call(t,e)>-1},a,!0),c=[function(e,n,r){return!o&&(r||n!==T)||((t=n).nodeType?l(e,n,r):u(e,n,r))}];s1&&h(c),s>1&&f(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(se,"$1"),n,s0,o=t.length>0,a=function(r,a,s,l,u){var c,d,f,p=0,h="0",m=r&&[],v=[],y=T,b=r||o&&w.find.TAG("*",u),C=U+=null==y?1:Math.random()||.1,x=b.length;for(u&&(T=a!==D&&a);h!==x&&null!=(c=b[h]);h++){if(o&&c){for(d=0;f=t[d++];)if(f(c,a,s)){l.push(c);break}u&&(U=C)}i&&((c=!f&&c)&&p--,r&&m.push(c))}if(p+=h,i&&h!==p){for(d=0;f=n[d++];)f(m,v,a,s);if(r){if(p>0)for(;h--;)m[h]||v[h]||(v[h]=J.call(l));v=g(v)}Z.apply(l,v),u&&!r&&v.length>0&&p+n.length>1&&e.uniqueSort(l)}return u&&(U=C,T=y),m};return i?r(a):a}var C,x,w,E,N,_,S,k,T,R,A,B,D,L,M,P,O,H,I,F="sizzle"+-new Date,z=window.document,U=0,W=0,V=n(),$=n(),q=n(),j=function(e,t){return e===t&&(A=!0),0},Y=typeof t,X=1<<31,K={}.hasOwnProperty,G=[],J=G.pop,Q=G.push,Z=G.push,ee=G.slice,te=G.indexOf||function(e){for(var t=0,n=this.length;t+~]|"+re+")"+re+"*"),ce=new RegExp("="+re+"*([^\\]'\"]*?)"+re+"*\\]","g"),de=new RegExp(ae),fe=new RegExp("^"+ie+"$"),pe={ID:new RegExp("^#("+ie+")"),CLASS:new RegExp("^\\.("+ie+")"),TAG:new RegExp("^("+ie+"|[*])"),ATTR:new RegExp("^"+oe),PSEUDO:new RegExp("^"+ae),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+re+"*(even|odd|(([+-]|)(\\d*)n|)"+re+"*(?:([+-]|)"+re+"*(\\d+)|))"+re+"*\\)|)","i"),bool:new RegExp("^(?:"+ne+")$","i"),needsContext:new RegExp("^"+re+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+re+"*((?:-\\d)?\\d*)"+re+"*\\)|)(?=[^-]|$)","i")},he=/^(?:input|select|textarea|button)$/i,me=/^h\d$/i,ge=/^[^{]+\{\s*\[native \w/,ve=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ye=/[+~]/,be=/'|\\/g,Ce=new RegExp("\\\\([\\da-f]{1,6}"+re+"?|("+re+")|.)","ig"),xe=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)};try{Z.apply(G=ee.call(z.childNodes),z.childNodes),G[z.childNodes.length].nodeType}catch(we){Z={apply:G.length?function(e,t){Q.apply(e,ee.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}x=e.support={},N=e.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},B=e.setDocument=function(e){function t(e){try{return e.top}catch(t){}return null}var n,r=e?e.ownerDocument||e:z,o=r.defaultView;return r!==D&&9===r.nodeType&&r.documentElement?(D=r,L=r.documentElement,M=!N(r),o&&o!==t(o)&&(o.addEventListener?o.addEventListener("unload",function(){B()},!1):o.attachEvent&&o.attachEvent("onunload",function(){B()})),x.attributes=i(function(e){return e.className="i",!e.getAttribute("className")}),x.getElementsByTagName=i(function(e){return e.appendChild(r.createComment("")),!e.getElementsByTagName("*").length}),x.getElementsByClassName=ge.test(r.getElementsByClassName),x.getById=i(function(e){return L.appendChild(e).id=F,!r.getElementsByName||!r.getElementsByName(F).length}),x.getById?(w.find.ID=function(e,t){if(typeof t.getElementById!==Y&&M){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},w.filter.ID=function(e){var t=e.replace(Ce,xe);return function(e){return e.getAttribute("id")===t}}):(delete w.find.ID,w.filter.ID=function(e){var t=e.replace(Ce,xe);return function(e){var n=typeof e.getAttributeNode!==Y&&e.getAttributeNode("id");return n&&n.value===t}}),w.find.TAG=x.getElementsByTagName?function(e,t){if(typeof t.getElementsByTagName!==Y)return t.getElementsByTagName(e)}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},w.find.CLASS=x.getElementsByClassName&&function(e,t){if(M)return t.getElementsByClassName(e)},O=[],P=[],(x.qsa=ge.test(r.querySelectorAll))&&(i(function(e){e.innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&P.push("[*^$]="+re+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||P.push("\\["+re+"*(?:value|"+ne+")"),e.querySelectorAll(":checked").length||P.push(":checked")}),i(function(e){var t=r.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&P.push("name"+re+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||P.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),P.push(",.*:")})),(x.matchesSelector=ge.test(H=L.matches||L.webkitMatchesSelector||L.mozMatchesSelector||L.oMatchesSelector||L.msMatchesSelector))&&i(function(e){x.disconnectedMatch=H.call(e,"div"),H.call(e,"[s!='']:x"),O.push("!=",ae)}),P=P.length&&new RegExp(P.join("|")),O=O.length&&new RegExp(O.join("|")),n=ge.test(L.compareDocumentPosition),I=n||ge.test(L.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},j=n?function(e,t){if(e===t)return A=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n?n:(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&n||!x.sortDetached&&t.compareDocumentPosition(e)===n?e===r||e.ownerDocument===z&&I(z,e)?-1:t===r||t.ownerDocument===z&&I(z,t)?1:R?te.call(R,e)-te.call(R,t):0:4&n?-1:1)}:function(e,t){if(e===t)return A=!0,0;var n,i=0,o=e.parentNode,s=t.parentNode,l=[e],u=[t];if(!o||!s)return e===r?-1:t===r?1:o?-1:s?1:R?te.call(R,e)-te.call(R,t):0;if(o===s)return a(e,t);for(n=e;n=n.parentNode;)l.unshift(n);for(n=t;n=n.parentNode;)u.unshift(n);for(;l[i]===u[i];)i++;return i?a(l[i],u[i]):l[i]===z?-1:u[i]===z?1:0},r):D},e.matches=function(t,n){return e(t,null,null,n)},e.matchesSelector=function(t,n){if((t.ownerDocument||t)!==D&&B(t),n=n.replace(ce,"='$1']"),x.matchesSelector&&M&&(!O||!O.test(n))&&(!P||!P.test(n)))try{var r=H.call(t,n);if(r||x.disconnectedMatch||t.document&&11!==t.document.nodeType)return r}catch(i){}return e(n,D,null,[t]).length>0},e.contains=function(e,t){return(e.ownerDocument||e)!==D&&B(e),I(e,t)},e.attr=function(e,n){(e.ownerDocument||e)!==D&&B(e);var r=w.attrHandle[n.toLowerCase()],i=r&&K.call(w.attrHandle,n.toLowerCase())?r(e,n,!M):t;return i!==t?i:x.attributes||!M?e.getAttribute(n):(i=e.getAttributeNode(n))&&i.specified?i.value:null},e.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},e.uniqueSort=function(e){var t,n=[],r=0,i=0;if(A=!x.detectDuplicates,R=!x.sortStable&&e.slice(0),e.sort(j),A){for(;t=e[i++];)t===e[i]&&(r=n.push(i));for(;r--;)e.splice(n[r],1)}return R=null,e},E=e.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=E(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r++];)n+=E(t);return n},w=e.selectors={cacheLength:50,createPseudo:r,match:pe,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Ce,xe),e[3]=(e[3]||e[4]||e[5]||"").replace(Ce,xe),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(t){return t[1]=t[1].toLowerCase(),"nth"===t[1].slice(0,3)?(t[3]||e.error(t[0]),t[4]=+(t[4]?t[5]+(t[6]||1):2*("even"===t[3]||"odd"===t[3])),t[5]=+(t[7]+t[8]||"odd"===t[3])):t[3]&&e.error(t[0]),t},PSEUDO:function(e){var t,n=!e[6]&&e[2];return pe.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&de.test(n)&&(t=_(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Ce,xe).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=V[e+" "];return t||(t=new RegExp("(^|"+re+")"+e+"("+re+"|$)"))&&V(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==Y&&e.getAttribute("class")||"")})},ATTR:function(t,n,r){return function(i){var o=e.attr(i,t);return null==o?"!="===n:!n||(o+="","="===n?o===r:"!="===n?o!==r:"^="===n?r&&0===o.indexOf(r):"*="===n?r&&o.indexOf(r)>-1:"$="===n?r&&o.slice(-r.length)===r:"~="===n?(" "+o+" ").indexOf(r)>-1:"|="===n&&(o===r||o.slice(0,r.length+1)===r+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var u,c,d,f,p,h,m=o!==a?"nextSibling":"previousSibling",g=t.parentNode,v=s&&t.nodeName.toLowerCase(),y=!l&&!s;if(g){if(o){for(;m;){for(d=t;d=d[m];)if(s?d.nodeName.toLowerCase()===v:1===d.nodeType)return!1;h=m="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?g.firstChild:g.lastChild],a&&y){for(c=g[F]||(g[F]={}),u=c[e]||[],p=u[0]===U&&u[1],f=u[0]===U&&u[2],d=p&&g.childNodes[p];d=++p&&d&&d[m]||(f=p=0)||h.pop();)if(1===d.nodeType&&++f&&d===t){c[e]=[U,p,f];break}}else if(y&&(u=(t[F]||(t[F]={}))[e])&&u[0]===U)f=u[1];else for(;(d=++p&&d&&d[m]||(f=p=0)||h.pop())&&((s?d.nodeName.toLowerCase()!==v:1!==d.nodeType)||!++f||(y&&((d[F]||(d[F]={}))[e]=[U,f]),d!==t)););return f-=i,f===r||f%r===0&&f/r>=0}}},PSEUDO:function(t,n){var i,o=w.pseudos[t]||w.setFilters[t.toLowerCase()]||e.error("unsupported pseudo: "+t);return o[F]?o(n):o.length>1?(i=[t,t,"",n],w.setFilters.hasOwnProperty(t.toLowerCase())?r(function(e,t){for(var r,i=o(e,n),a=i.length;a--;)r=te.call(e,i[a]),e[r]=!(t[r]=i[a])}):function(e){return o(e,0,i)}):o}},pseudos:{not:r(function(e){var t=[],n=[],i=S(e.replace(se,"$1"));return i[F]?r(function(e,t,n,r){for(var o,a=i(e,null,r,[]),s=e.length;s--;)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,r,o){return t[0]=e,i(t,null,o,n),!n.pop()}}),has:r(function(t){return function(n){return e(t,n).length>0}}),contains:r(function(e){return e=e.replace(Ce,xe),function(t){return(t.textContent||t.innerText||E(t)).indexOf(e)>-1}}),lang:r(function(t){return fe.test(t||"")||e.error("unsupported lang: "+t),t=t.replace(Ce,xe).toLowerCase(),function(e){var n;do if(n=M?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return n=n.toLowerCase(),n===t||0===n.indexOf(t+"-");while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=window.location&&window.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===L},focus:function(e){return e===D.activeElement&&(!D.hasFocus||D.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!w.pseudos.empty(e)},header:function(e){return me.test(e.nodeName)},input:function(e){return he.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:u(function(){return[0]}),last:u(function(e,t){return[t-1]}),eq:u(function(e,t,n){return[n<0?n+t:n]}),even:u(function(e,t){for(var n=0;n=0;)e.push(r);return e}),gt:u(function(e,t,n){for(var r=n<0?n+t:n;++r2&&"ID"===(a=o[0]).type&&x.getById&&9===t.nodeType&&M&&w.relative[o[1].type]){if(t=(w.find.ID(a.matches[0].replace(Ce,xe),t)||[])[0],!t)return n;u&&(t=t.parentNode),e=e.slice(o.shift().value.length)}for(i=pe.needsContext.test(e)?0:o.length;i--&&(a=o[i],!w.relative[s=a.type]);)if((l=w.find[s])&&(r=l(a.matches[0].replace(Ce,xe),ye.test(o[0].type)&&c(t.parentNode)||t))){if(o.splice(i,1),e=r.length&&f(o),!e)return Z.apply(n,r),n;break}}return(u||S(e,d))(r,t,!M,n,ye.test(e)&&c(t.parentNode)||t),n},x.sortStable=F.split("").sort(j).join("")===F,x.detectDuplicates=!!A,B(),x.sortDetached=i(function(e){return 1&e.compareDocumentPosition(D.createElement("div"))}),i(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||o("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),x.attributes&&i(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||o("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),i(function(e){return null==e.getAttribute("disabled")})||o(ne,function(e,t,n){var r;if(!n)return e[t]===!0?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),e}),r(h,[],function(){function e(e){var t=e,n,r;if(!c(e))for(t=[],n=0,r=e.length;n=0;i--)u(e,t[i],n,r);else for(i=0;i)[^>]*$|#([\w\-]*)$)/,S=e.Event,k,T=r.makeMap("children,contents,next,prev"),R=r.makeMap("fillOpacity fontWeight lineHeight opacity orphans widows zIndex zoom"," "),A=r.makeMap("checked compact declare defer disabled ismap multiple nohref noshade nowrap readonly selected"," "),B={"for":"htmlFor","class":"className",readonly:"readOnly"},D={"float":"cssFloat"},L={},M={},P=/^\s*|\s*$/g;return f.fn=f.prototype={constructor:f,selector:"",context:null,length:0,init:function(e,t){var n=this,r,i;if(!e)return n;if(e.nodeType)return n.context=n[0]=e,n.length=1,n;if(t&&t.nodeType)n.context=t;else{if(t)return f(e).attr(t);n.context=t=document}if(a(e)){if(n.selector=e,r="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:_.exec(e),!r)return f(t).find(e);if(r[1])for(i=l(e,v(t)).firstChild;i;)E.call(n,i),i=i.nextSibling;else{if(i=v(t).getElementById(r[2]),!i)return n;if(i.id!==r[2])return n.find(e);n.length=1,n[0]=i}}else this.add(e,!1);return n},toArray:function(){return r.toArray(this)},add:function(e,t){var n=this,r,i;if(a(e))return n.add(f(e));if(t!==!1)for(r=f.unique(n.toArray().concat(f.makeArray(e))),n.length=r.length,i=0;i1&&(T[e]||(i=f.unique(i)),0===e.indexOf("parents")&&(i=i.reverse())),i=f(i),n?i.filter(n):i}}),m({parentsUntil:function(e,t){return y(e,"parentNode",t)},nextUntil:function(e,t){return b(e,"nextSibling",1,t).slice(1)},prevUntil:function(e,t){return b(e,"previousSibling",1,t).slice(1)}},function(e,t){f.fn[e]=function(n,r){var i=this,o=[];return i.each(function(){var e=t.call(o,this,n,o);e&&(f.isArray(e)?o.push.apply(o,e):o.push(e))}),this.length>1&&(o=f.unique(o),0!==e.indexOf("parents")&&"prevUntil"!==e||(o=o.reverse())),o=f(o),r?o.filter(r):o}}),f.fn.is=function(e){return!!e&&this.filter(e).length>0},f.fn.init.prototype=f.fn,f.overrideDefaults=function(e){function t(r,i){return n=n||e(),0===arguments.length&&(r=n.element),i||(i=n.context),new t.fn.init(r,i)}var n;return f.extend(t,this),t},i.ie&&i.ie<8&&(x(L,"get",{maxlength:function(e){var t=e.maxLength;return 2147483647===t?k:t},size:function(e){var t=e.size;return 20===t?k:t},"class":function(e){return e.className},style:function(e){var t=e.style.cssText;return 0===t.length?k:t}}),x(L,"set",{"class":function(e,t){e.className=t},style:function(e,t){e.style.cssText=t}})),i.ie&&i.ie<9&&(D["float"]="styleFloat",x(M,"set",{opacity:function(e,t){var n=e.style;null===t||""===t?n.removeAttribute("filter"):(n.zoom=1,n.filter="alpha(opacity="+100*t+")")}})),f.attrHooks=L,f.cssHooks=M,f}),r(v,[],function(){return function(e,t){function n(e,t,n,r){function i(e){return e=parseInt(e,10).toString(16),e.length>1?e:"0"+e}return"#"+i(t)+i(n)+i(r)}var r=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi,i=/(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi,o=/\s*([^:]+):\s*([^;]+);?/g,a=/\s+$/,s,l={},u,c,d,f="\ufeff";for(e=e||{},t&&(c=t.getValidStyles(),d=t.getInvalidStyles()),u=("\\\" \\' \\; \\: ; : "+f).split(" "),s=0;s-1&&n||(y[e+t]=s==-1?l[0]:l.join(" "),delete y[e+"-top"+t],delete y[e+"-right"+t],delete y[e+"-bottom"+t],delete y[e+"-left"+t])}}function c(e){var t=y[e],n;if(t){for(t=t.split(" "),n=t.length;n--;)if(t[n]!==t[0])return!1;return y[e]=t[0],!0}}function d(e,t,n,r){c(t)&&c(n)&&c(r)&&(y[e]=y[t]+" "+y[n]+" "+y[r],delete y[t],delete y[n],delete y[r])}function p(e){return w=!0,l[e]}function h(e,t){return w&&(e=e.replace(/\uFEFF[0-9]/g,function(e){return l[e]})),t||(e=e.replace(/\\([\'\";:])/g,"$1")),e}function m(e){return String.fromCharCode(parseInt(e.slice(1),16))}function g(e){return e.replace(/\\[0-9a-f]+/gi,m)}function v(t,n,r,i,o,a){if(o=o||a)return o=h(o),"'"+o.replace(/\'/g,"\\'")+"'";if(n=h(n||r||i),!e.allow_script_urls){var s=n.replace(/[\s\r\n]+/g,"");if(/(java|vb)script:/i.test(s))return"";if(!e.allow_svg_data_urls&&/^data:image\/svg/i.test(s))return""}return E&&(n=E.call(N,n,"style")),"url('"+n.replace(/\'/g,"\\'")+"')"}var y={},b,C,x,w,E=e.url_converter,N=e.url_converter_scope||this;if(t){for(t=t.replace(/[\u0000-\u001F]/g,""),t=t.replace(/\\[\"\';:\uFEFF]/g,p).replace(/\"[^\"]+\"|\'[^\']+\'/g,function(e){return e.replace(/[;:]/g,p)});b=o.exec(t);)if(o.lastIndex=b.index+b[0].length,C=b[1].replace(a,"").toLowerCase(),x=b[2].replace(a,""),C&&x){if(C=g(C),x=g(x),C.indexOf(f)!==-1||C.indexOf('"')!==-1)continue;if(!e.allow_script_urls&&("behavior"==C||/expression\s*\(|\/\*|\*\//.test(x)))continue;"font-weight"===C&&"700"===x?x="bold":"color"!==C&&"background-color"!==C||(x=x.toLowerCase()),x=x.replace(r,n),x=x.replace(i,v),y[C]=w?h(x,!0):x}u("border","",!0),u("border","-width"),u("border","-color"),u("border","-style"),u("padding",""),u("margin",""),d("border","border-width","border-style","border-color"),"medium none"===y.border&&delete y.border,"none"===y["border-image"]&&delete y["border-image"]}return y},serialize:function(e,t){function n(t){var n,r,o,a;if(n=c[t])for(r=0,o=n.length;r0?" ":"")+t+": "+a+";")}function r(e,t){var n;return n=d["*"],(!n||!n[e])&&(n=d[t],!n||!n[e])}var i="",o,a;if(t&&c)n("*"),n(t);else for(o in e)a=e[o],!a||d&&!r(o,t)||(i+=(i.length>0?" ":"")+o+": "+a+";");return i}}}}),r(y,[],function(){return function(e,t){function n(e,n,r,i){var o,a;if(e){if(!i&&e[n])return e[n];if(e!=t){if(o=e[r])return o;for(a=e.parentNode;a&&a!=t;a=a.parentNode)if(o=a[r])return o}}}function r(e,n,r,i){var o,a,s;if(e){if(o=e[r],t&&o===t)return;if(o){if(!i)for(s=o[n];s;s=s[n])if(!s[n])return s;return o}if(a=e.parentNode,a&&a!==t)return a}}var i=e;this.current=function(){return i},this.next=function(e){return i=n(i,"firstChild","nextSibling",e)},this.prev=function(e){return i=n(i,"lastChild","previousSibling",e)},this.prev2=function(e){return i=r(i,"lastChild","previousSibling",e)}}}),r(b,[m],function(e){function t(n){function r(){return P.createDocumentFragment()}function i(e,t){E(F,e,t)}function o(e,t){E(z,e,t)}function a(e){i(e.parentNode,j(e))}function s(e){i(e.parentNode,j(e)+1)}function l(e){o(e.parentNode,j(e))}function u(e){o(e.parentNode,j(e)+1)}function c(e){e?(M[V]=M[W],M[$]=M[U]):(M[W]=M[V],M[U]=M[$]),M.collapsed=F}function d(e){a(e),u(e)}function f(e){i(e,0),o(e,1===e.nodeType?e.childNodes.length:e.nodeValue.length)}function p(e,t){var n=M[W],r=M[U],i=M[V],o=M[$],a=t.startContainer,s=t.startOffset,l=t.endContainer,u=t.endOffset;return 0===e?w(n,r,a,s):1===e?w(i,o,a,s):2===e?w(i,o,l,u):3===e?w(n,r,l,u):void 0}function h(){N(I)}function m(){return N(O)}function g(){return N(H)}function v(e){var t=this[W],r=this[U],i,o;3!==t.nodeType&&4!==t.nodeType||!t.nodeValue?(t.childNodes.length>0&&(o=t.childNodes[r]),o?t.insertBefore(e,o):3==t.nodeType?n.insertAfter(e,t):t.appendChild(e)):r?r>=t.nodeValue.length?n.insertAfter(e,t):(i=t.splitText(r),t.parentNode.insertBefore(e,i)):t.parentNode.insertBefore(e,t)}function y(e){var t=M.extractContents();M.insertNode(e),e.appendChild(t),M.selectNode(e)}function b(){return q(new t(n),{startContainer:M[W],startOffset:M[U],endContainer:M[V],endOffset:M[$],collapsed:M.collapsed,commonAncestorContainer:M.commonAncestorContainer})}function C(e,t){var n;if(3==e.nodeType)return e;if(t<0)return e;for(n=e.firstChild;n&&t>0;)--t,n=n.nextSibling;return n?n:e}function x(){return M[W]==M[V]&&M[U]==M[$]}function w(e,t,r,i){var o,a,s,l,u,c;if(e==r)return t==i?0:t0&&M.collapse(e):M.collapse(e),M.collapsed=x(),M.commonAncestorContainer=n.findCommonAncestor(M[W],M[V])}function N(e){var t,n=0,r=0,i,o,a,s,l,u;if(M[W]==M[V])return _(e);for(t=M[V],i=t.parentNode;i;t=i,i=i.parentNode){if(i==M[W])return S(t,e);++n}for(t=M[W],i=t.parentNode;i;t=i,i=i.parentNode){if(i==M[V])return k(t,e);++r}for(o=r-n,a=M[W];o>0;)a=a.parentNode,o--;for(s=M[V];o<0;)s=s.parentNode,o++;for(l=a.parentNode,u=s.parentNode;l!=u;l=l.parentNode,u=u.parentNode)a=l,s=u;return T(a,s,e)}function _(e){var t,n,i,o,a,s,l,u,c;if(e!=I&&(t=r()),M[U]==M[$])return t;if(3==M[W].nodeType){if(n=M[W].nodeValue,i=n.substring(M[U],M[$]),e!=H&&(o=M[W],u=M[U],c=M[$]-M[U],0===u&&c>=o.nodeValue.length-1?o.parentNode.removeChild(o):o.deleteData(u,c),M.collapse(F)),e==I)return;return i.length>0&&t.appendChild(P.createTextNode(i)),t}for(o=C(M[W],M[U]),a=M[$]-M[U];o&&a>0;)s=o.nextSibling,l=D(o,e),t&&t.appendChild(l),--a,o=s;return e!=H&&M.collapse(F),t}function S(e,t){var n,i,o,a,s,l;if(t!=I&&(n=r()),i=R(e,t),n&&n.appendChild(i),o=j(e),a=o-M[U],a<=0)return t!=H&&(M.setEndBefore(e),M.collapse(z)),n;for(i=e.previousSibling;a>0;)s=i.previousSibling,l=D(i,t),n&&n.insertBefore(l,n.firstChild),--a,i=s;return t!=H&&(M.setEndBefore(e),M.collapse(z)),n}function k(e,t){var n,i,o,a,s,l;for(t!=I&&(n=r()),o=A(e,t),n&&n.appendChild(o),i=j(e),++i,a=M[$]-i,o=e.nextSibling;o&&a>0;)s=o.nextSibling,l=D(o,t),n&&n.appendChild(l),--a,o=s;return t!=H&&(M.setStartAfter(e),M.collapse(F)),n}function T(e,t,n){var i,o,a,s,l,u,c;for(n!=I&&(o=r()),i=A(e,n),o&&o.appendChild(i),a=j(e),s=j(t),++a,l=s-a,u=e.nextSibling;l>0;)c=u.nextSibling,i=D(u,n),o&&o.appendChild(i),u=c,--l;return i=R(t,n),o&&o.appendChild(i),n!=H&&(M.setStartAfter(e),M.collapse(F)),o}function R(e,t){var n=C(M[V],M[$]-1),r,i,o,a,s,l=n!=M[V];if(n==e)return B(n,l,z,t);for(r=n.parentNode,i=B(r,z,z,t);r;){for(;n;)o=n.previousSibling,a=B(n,l,z,t),t!=I&&i.insertBefore(a,i.firstChild),l=F,n=o;if(r==e)return i;n=r.previousSibling,r=r.parentNode,s=B(r,z,z,t),t!=I&&s.appendChild(i),i=s}}function A(e,t){var n=C(M[W],M[U]),r=n!=M[W],i,o,a,s,l;if(n==e)return B(n,r,F,t);for(i=n.parentNode,o=B(i,z,F,t);i;){for(;n;)a=n.nextSibling,s=B(n,r,F,t),t!=I&&o.appendChild(s),r=F,n=a;if(i==e)return o;n=i.nextSibling,i=i.parentNode,l=B(i,z,F,t),t!=I&&l.appendChild(o),o=l}}function B(e,t,r,i){var o,a,s,l,u;if(t)return D(e,i);if(3==e.nodeType){if(o=e.nodeValue,r?(l=M[U],a=o.substring(l),s=o.substring(0,l)):(l=M[$],a=o.substring(0,l),s=o.substring(l)),i!=H&&(e.nodeValue=s),i==I)return;return u=n.clone(e,z),u.nodeValue=a,u}if(i!=I)return n.clone(e,z)}function D(e,t){return t!=I?t==H?n.clone(e,F):e:void e.parentNode.removeChild(e)}function L(){return n.create("body",null,g()).outerText}var M=this,P=n.doc,O=0,H=1,I=2,F=!0,z=!1,U="startOffset",W="startContainer",V="endContainer",$="endOffset",q=e.extend,j=n.nodeIndex;return q(M,{startContainer:P,startOffset:0,endContainer:P,endOffset:0,collapsed:F,commonAncestorContainer:P,START_TO_START:0,START_TO_END:1,END_TO_END:2,END_TO_START:3,setStart:i,setEnd:o,setStartBefore:a,setStartAfter:s,setEndBefore:l,setEndAfter:u,collapse:c,selectNode:d,selectNodeContents:f,compareBoundaryPoints:p,deleteContents:h,extractContents:m,cloneContents:g,insertNode:v,surroundContents:y,cloneRange:b,toStringIE:L}),M}return t.prototype.toString=function(){return this.toStringIE()},t}),r(C,[m],function(e){function t(e){var t;return t=document.createElement("div"),t.innerHTML=e,t.textContent||t.innerText||e}function n(e,t){var n,r,i,a={};if(e){for(e=e.split(","),t=t||10,n=0;n\"\u0060\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,l=/[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,u=/[<>&\"\']/g,c=/&#([a-z0-9]+);?|&([a-z0-9]+);/gi,d={128:"\u20ac",130:"\u201a",131:"\u0192",132:"\u201e",133:"\u2026",134:"\u2020",135:"\u2021",136:"\u02c6",137:"\u2030",138:"\u0160",139:"\u2039",140:"\u0152",142:"\u017d",145:"\u2018",146:"\u2019",147:"\u201c",148:"\u201d",149:"\u2022",150:"\u2013",151:"\u2014",152:"\u02dc",153:"\u2122",154:"\u0161",155:"\u203a",156:"\u0153",158:"\u017e",159:"\u0178"};o={'"':""","'":"'","<":"<",">":">","&":"&","`":"`"},a={"<":"<",">":">","&":"&",""":'"',"'":"'"},i=n("50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,t9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro",32);var f={encodeRaw:function(e,t){return e.replace(t?s:l,function(e){return o[e]||e})},encodeAllRaw:function(e){return(""+e).replace(u,function(e){return o[e]||e})},encodeNumeric:function(e,t){return e.replace(t?s:l,function(e){return e.length>1?"&#"+(1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320)+65536)+";":o[e]||"&#"+e.charCodeAt(0)+";"})},encodeNamed:function(e,t,n){return n=n||i,e.replace(t?s:l,function(e){return o[e]||n[e]||e})},getEncodeFunc:function(e,t){function a(e,n){return e.replace(n?s:l,function(e){return o[e]||t[e]||"&#"+e.charCodeAt(0)+";"||e})}function u(e,n){return f.encodeNamed(e,n,t)}return t=n(t)||i,e=r(e.replace(/\+/g,",")),e.named&&e.numeric?a:e.named?t?u:f.encodeNamed:e.numeric?f.encodeNumeric:f.encodeRaw},decode:function(e){return e.replace(c,function(e,n){return n?(n="x"===n.charAt(0).toLowerCase()?parseInt(n.substr(1),16):parseInt(n,10),n>65535?(n-=65536,String.fromCharCode(55296+(n>>10),56320+(1023&n))):d[n]||String.fromCharCode(n)):a[e]||i[e]||t(e)})}};return f}),r(x,[m,c],function(e,t){return function(n,r){function i(e){n.getElementsByTagName("head")[0].appendChild(e)}function o(r,o,u){function c(){for(var e=b.passed,t=e.length;t--;)e[t]();b.status=2,b.passed=[],b.failed=[]}function d(){for(var e=b.failed,t=e.length;t--;)e[t]();b.status=3,b.passed=[],b.failed=[]}function f(){var e=navigator.userAgent.match(/WebKit\/(\d*)/);return!!(e&&e[1]<536)}function p(e,n){e()||((new Date).getTime()-y0)return v=n.createElement("style"),v.textContent='@import "'+r+'"',m(),void i(v);h()}i(g),g.href=r}}var a=0,s={},l;r=r||{},l=r.maxLoadTime||5e3,this.load=o}}),r(w,[p,g,v,f,y,b,C,d,m,x],function(e,n,r,i,o,a,s,l,u,c){function d(e,t){var n={},r=t.keep_values,i;return i={set:function(n,r,i){t.url_converter&&(r=t.url_converter.call(t.url_converter_scope||e,r,i,n[0])),n.attr("data-mce-"+i,r).attr(i,r)},get:function(e,t){return e.attr("data-mce-"+t)||e.attr(t)}},n={style:{set:function(e,t){return null!==t&&"object"==typeof t?void e.css(t):(r&&e.attr("data-mce-style",t),void e.attr("style",t))},get:function(t){var n=t.attr("data-mce-style")||t.attr("style");return n=e.serializeStyle(e.parseStyle(n),t[0].nodeName)}}},r&&(n.href=n.src=i),n}function f(e,t){var n=t.attr("style");n=e.serializeStyle(e.parseStyle(n),t[0].nodeName),n||(n=null),t.attr("data-mce-style",n)}function p(e,t){var n=0,r,i;if(e)for(r=e.nodeType,e=e.previousSibling;e;e=e.previousSibling)i=e.nodeType,(!t||3!=i||i!=r&&e.nodeValue.length)&&(n++,r=i);return n}function h(e,t){var o=this,a;o.doc=e,o.win=window,o.files={},o.counter=0,o.stdMode=!b||e.documentMode>=8,o.boxModel=!b||"CSS1Compat"==e.compatMode||o.stdMode,o.styleSheetLoader=new c(e),o.boundEvents=[],o.settings=t=t||{},o.schema=t.schema,o.styles=new r({url_converter:t.url_converter,url_converter_scope:t.url_converter_scope},t.schema),o.fixDoc(e),o.events=t.ownEvents?new i(t.proxy):i.Event,o.attrHooks=d(o,t),a=t.schema?t.schema.getBlockElements():{},o.$=n.overrideDefaults(function(){return{context:e,element:o.getRoot()}}),o.isBlock=function(e){if(!e)return!1;var t=e.nodeType;return t?!(1!==t||!a[e.nodeName]):!!a[e]}}var m=u.each,g=u.is,v=u.grep,y=u.trim,b=l.ie,C=/^([a-z0-9],?)+$/i,x=/^[ \t\r\n]*$/;return h.prototype={$$:function(e){return"string"==typeof e&&(e=this.get(e)),this.$(e)},root:null,fixDoc:function(e){var t=this.settings,n;if(b&&t.schema){"abbr article aside audio canvas details figcaption figure footer header hgroup mark menu meter nav output progress section summary time video".replace(/\w+/g,function(t){e.createElement(t)});for(n in t.schema.getCustomElements())e.createElement(n)}},clone:function(e,t){var n=this,r,i;return!b||1!==e.nodeType||t?e.cloneNode(t):(i=n.doc,t?r.firstChild:(r=i.createElement(e.nodeName),m(n.getAttribs(e),function(t){n.setAttrib(r,t.nodeName,n.getAttrib(e,t.nodeName))}),r))},getRoot:function(){var e=this;return e.settings.root_element||e.doc.body},getViewPort:function(e){var t,n;return e=e?e:this.win,t=e.document,n=this.boxModel?t.documentElement:t.body,{x:e.pageXOffset||n.scrollLeft,y:e.pageYOffset||n.scrollTop,w:e.innerWidth||n.clientWidth,h:e.innerHeight||n.clientHeight}},getRect:function(e){var t=this,n,r;return e=t.get(e),n=t.getPos(e),r=t.getSize(e),{x:n.x,y:n.y,w:r.w,h:r.h}},getSize:function(e){var t=this,n,r;return e=t.get(e),n=t.getStyle(e,"width"),r=t.getStyle(e,"height"),n.indexOf("px")===-1&&(n=0),r.indexOf("px")===-1&&(r=0), +{w:parseInt(n,10)||e.offsetWidth||e.clientWidth,h:parseInt(r,10)||e.offsetHeight||e.clientHeight}},getParent:function(e,t,n){return this.getParents(e,t,n,!1)},getParents:function(e,n,r,i){var o=this,a,s=[];for(e=o.get(e),i=i===t,r=r||("BODY"!=o.getRoot().nodeName?o.getRoot().parentNode:null),g(n,"string")&&(a=n,n="*"===n?function(e){return 1==e.nodeType}:function(e){return o.is(e,a)});e&&e!=r&&e.nodeType&&9!==e.nodeType;){if(!n||n(e)){if(!i)return e;s.push(e)}e=e.parentNode}return i?s:null},get:function(e){var t;return e&&this.doc&&"string"==typeof e&&(t=e,e=this.doc.getElementById(e),e&&e.id!==t)?this.doc.getElementsByName(t)[1]:e},getNext:function(e,t){return this._findSib(e,t,"nextSibling")},getPrev:function(e,t){return this._findSib(e,t,"previousSibling")},select:function(t,n){var r=this;return e(t,r.get(n)||r.settings.root_element||r.doc,[])},is:function(n,r){var i;if(n.length===t){if("*"===r)return 1==n.nodeType;if(C.test(r)){for(r=r.toLowerCase().split(/,/),n=n.nodeName.toLowerCase(),i=r.length-1;i>=0;i--)if(r[i]==n)return!0;return!1}}if(n.nodeType&&1!=n.nodeType)return!1;var o=n.nodeType?[n]:n;return e(r,o[0].ownerDocument||o[0],null,o).length>0},add:function(e,t,n,r,i){var o=this;return this.run(e,function(e){var a;return a=g(t,"string")?o.doc.createElement(t):t,o.setAttribs(a,n),r&&(r.nodeType?a.appendChild(r):o.setHTML(a,r)),i?a:e.appendChild(a)})},create:function(e,t,n){return this.add(this.doc.createElement(e),e,t,n,1)},createHTML:function(e,t,n){var r="",i;r+="<"+e;for(i in t)t.hasOwnProperty(i)&&null!==t[i]&&"undefined"!=typeof t[i]&&(r+=" "+i+'="'+this.encode(t[i])+'"');return"undefined"!=typeof n?r+">"+n+"":r+" />"},createFragment:function(e){var t,n,r=this.doc,i;for(i=r.createElement("div"),t=r.createDocumentFragment(),e&&(i.innerHTML=e);n=i.firstChild;)t.appendChild(n);return t},remove:function(e,t){return e=this.$$(e),t?e.each(function(){for(var e;e=this.firstChild;)3==e.nodeType&&0===e.data.length?this.removeChild(e):this.parentNode.insertBefore(e,this)}).remove():e.remove(),e.length>1?e.toArray():e[0]},setStyle:function(e,t,n){e=this.$$(e).css(t,n),this.settings.update_styles&&f(this,e)},getStyle:function(e,n,r){return e=this.$$(e),r?e.css(n):(n=n.replace(/-(\D)/g,function(e,t){return t.toUpperCase()}),"float"==n&&(n=l.ie&&l.ie<12?"styleFloat":"cssFloat"),e[0]&&e[0].style?e[0].style[n]:t)},setStyles:function(e,t){e=this.$$(e).css(t),this.settings.update_styles&&f(this,e)},removeAllAttribs:function(e){return this.run(e,function(e){var t,n=e.attributes;for(t=n.length-1;t>=0;t--)e.removeAttributeNode(n.item(t))})},setAttrib:function(e,t,n){var r=this,i,o,a=r.settings;""===n&&(n=null),e=r.$$(e),i=e.attr(t),e.length&&(o=r.attrHooks[t],o&&o.set?o.set(e,n,t):e.attr(t,n),i!=n&&a.onSetAttrib&&a.onSetAttrib({attrElm:e,attrName:t,attrValue:n}))},setAttribs:function(e,t){var n=this;n.$$(e).each(function(e,r){m(t,function(e,t){n.setAttrib(r,t,e)})})},getAttrib:function(e,t,n){var r=this,i,o;return e=r.$$(e),e.length&&(i=r.attrHooks[t],o=i&&i.get?i.get(e,t):e.attr(t)),"undefined"==typeof o&&(o=n||""),o},getPos:function(e,t){var r=this,i=0,o=0,a,s=r.doc,l=s.body,u;if(e=r.get(e),t=t||l,e){if(t===l&&e.getBoundingClientRect&&"static"===n(l).css("position"))return u=e.getBoundingClientRect(),t=r.boxModel?s.documentElement:l,i=u.left+(s.documentElement.scrollLeft||l.scrollLeft)-t.clientLeft,o=u.top+(s.documentElement.scrollTop||l.scrollTop)-t.clientTop,{x:i,y:o};for(a=e;a&&a!=t&&a.nodeType;)i+=a.offsetLeft||0,o+=a.offsetTop||0,a=a.offsetParent;for(a=e.parentNode;a&&a!=t&&a.nodeType;)i-=a.scrollLeft||0,o-=a.scrollTop||0,a=a.parentNode}return{x:i,y:o}},parseStyle:function(e){return this.styles.parse(e)},serializeStyle:function(e,t){return this.styles.serialize(e,t)},addStyle:function(e){var t=this,n=t.doc,r,i;if(t!==h.DOM&&n===document){var o=h.DOM.addedStyles;if(o=o||[],o[e])return;o[e]=!0,h.DOM.addedStyles=o}i=n.getElementById("mceDefaultStyles"),i||(i=n.createElement("style"),i.id="mceDefaultStyles",i.type="text/css",r=n.getElementsByTagName("head")[0],r.firstChild?r.insertBefore(i,r.firstChild):r.appendChild(i)),i.styleSheet?i.styleSheet.cssText+=e:i.appendChild(n.createTextNode(e))},loadCSS:function(e){var t=this,n=t.doc,r;return t!==h.DOM&&n===document?void h.DOM.loadCSS(e):(e||(e=""),r=n.getElementsByTagName("head")[0],void m(e.split(","),function(e){var i;e=u._addCacheSuffix(e),t.files[e]||(t.files[e]=!0,i=t.create("link",{rel:"stylesheet",href:e}),b&&n.documentMode&&n.recalc&&(i.onload=function(){n.recalc&&n.recalc(),i.onload=null}),r.appendChild(i))}))},addClass:function(e,t){this.$$(e).addClass(t)},removeClass:function(e,t){this.toggleClass(e,t,!1)},hasClass:function(e,t){return this.$$(e).hasClass(t)},toggleClass:function(e,t,r){this.$$(e).toggleClass(t,r).each(function(){""===this.className&&n(this).attr("class",null)})},show:function(e){this.$$(e).show()},hide:function(e){this.$$(e).hide()},isHidden:function(e){return"none"==this.$$(e).css("display")},uniqueId:function(e){return(e?e:"mce_")+this.counter++},setHTML:function(e,t){e=this.$$(e),b?e.each(function(e,r){if(r.canHaveHTML!==!1){for(;r.firstChild;)r.removeChild(r.firstChild);try{r.innerHTML="
    "+t,r.removeChild(r.firstChild)}catch(i){n("
    ").html("
    "+t).contents().slice(1).appendTo(r)}return t}}):e.html(t)},getOuterHTML:function(e){return e=this.get(e),1==e.nodeType&&"outerHTML"in e?e.outerHTML:n("
    ").append(n(e).clone()).html()},setOuterHTML:function(e,t){var r=this;r.$$(e).each(function(){try{if("outerHTML"in this)return void(this.outerHTML=t)}catch(e){}r.remove(n(this).html(t),!0)})},decode:s.decode,encode:s.encodeAllRaw,insertAfter:function(e,t){return t=this.get(t),this.run(e,function(e){var n,r;return n=t.parentNode,r=t.nextSibling,r?n.insertBefore(e,r):n.appendChild(e),e})},replace:function(e,t,n){var r=this;return r.run(t,function(t){return g(t,"array")&&(e=e.cloneNode(!0)),n&&m(v(t.childNodes),function(t){e.appendChild(t)}),t.parentNode.replaceChild(e,t)})},rename:function(e,t){var n=this,r;return e.nodeName!=t.toUpperCase()&&(r=n.create(t),m(n.getAttribs(e),function(t){n.setAttrib(r,t.nodeName,n.getAttrib(e,t.nodeName))}),n.replace(r,e,1)),r||e},findCommonAncestor:function(e,t){for(var n=e,r;n;){for(r=t;r&&n!=r;)r=r.parentNode;if(n==r)break;n=n.parentNode}return!n&&e.ownerDocument?e.ownerDocument.documentElement:n},toHex:function(e){return this.styles.toHex(u.trim(e))},run:function(e,t,n){var r=this,i;return"string"==typeof e&&(e=r.get(e)),!!e&&(n=n||this,e.nodeType||!e.length&&0!==e.length?t.call(n,e):(i=[],m(e,function(e,o){e&&("string"==typeof e&&(e=r.get(e)),i.push(t.call(n,e,o)))}),i))},getAttribs:function(e){var t;if(e=this.get(e),!e)return[];if(b){if(t=[],"OBJECT"==e.nodeName)return e.attributes;"OPTION"===e.nodeName&&this.getAttrib(e,"selected")&&t.push({specified:1,nodeName:"selected"});var n=/<\/?[\w:\-]+ ?|=[\"][^\"]+\"|=\'[^\']+\'|=[\w\-]+|>/gi;return e.cloneNode(!1).outerHTML.replace(n,"").replace(/[\w:\-]+/gi,function(e){t.push({specified:1,nodeName:e})}),t}return e.attributes},isEmpty:function(e,t){var n=this,r,i,a,s,l,u,c=0;if(e=e.firstChild){l=new o(e,e.parentNode),t=t||(n.schema?n.schema.getNonEmptyElements():null),s=n.schema?n.schema.getWhiteSpaceElements():{};do{if(a=e.nodeType,1===a){var d=e.getAttribute("data-mce-bogus");if(d){e=l.next("all"===d);continue}if(u=e.nodeName.toLowerCase(),t&&t[u]){if("br"===u){c++,e=l.next();continue}return!1}for(i=n.getAttribs(e),r=i.length;r--;)if(u=i[r].nodeName,"name"===u||"data-mce-bookmark"===u)return!1}if(8==a)return!1;if(3===a&&!x.test(e.nodeValue))return!1;if(3===a&&e.parentNode&&s[e.parentNode.nodeName]&&x.test(e.nodeValue))return!1;e=l.next()}while(e)}return c<=1},createRng:function(){var e=this.doc;return e.createRange?e.createRange():new a(this)},nodeIndex:p,split:function(e,t,n){function r(e){function t(e){var t=e.previousSibling&&"SPAN"==e.previousSibling.nodeName,n=e.nextSibling&&"SPAN"==e.nextSibling.nodeName;return t&&n}var n,o=e.childNodes,a=e.nodeType;if(1!=a||"bookmark"!=e.getAttribute("data-mce-type")){for(n=o.length-1;n>=0;n--)r(o[n]);if(9!=a){if(3==a&&e.nodeValue.length>0){var s=y(e.nodeValue).length;if(!i.isBlock(e.parentNode)||s>0||0===s&&t(e))return}else if(1==a&&(o=e.childNodes,1==o.length&&o[0]&&1==o[0].nodeType&&"bookmark"==o[0].getAttribute("data-mce-type")&&e.parentNode.insertBefore(o[0],e),o.length||/^(br|hr|input|img)$/i.test(e.nodeName)))return;i.remove(e)}return e}}var i=this,o=i.createRng(),a,s,l;if(e&&t)return o.setStart(e.parentNode,i.nodeIndex(e)),o.setEnd(t.parentNode,i.nodeIndex(t)),a=o.extractContents(),o=i.createRng(),o.setStart(t.parentNode,i.nodeIndex(t)+1),o.setEnd(e.parentNode,i.nodeIndex(e)+1),s=o.extractContents(),l=e.parentNode,l.insertBefore(r(a),e),n?l.insertBefore(n,e):l.insertBefore(t,e),l.insertBefore(r(s),e),i.remove(e),n||t},bind:function(e,t,n,r){var i=this;if(u.isArray(e)){for(var o=e.length;o--;)e[o]=i.bind(e[o],t,n,r);return e}return!i.settings.collect||e!==i.doc&&e!==i.win||i.boundEvents.push([e,t,n,r]),i.events.bind(e,t,n,r||i)},unbind:function(e,t,n){var r=this,i;if(u.isArray(e)){for(i=e.length;i--;)e[i]=r.unbind(e[i],t,n);return e}if(r.boundEvents&&(e===r.doc||e===r.win))for(i=r.boundEvents.length;i--;){var o=r.boundEvents[i];e!=o[0]||t&&t!=o[1]||n&&n!=o[2]||this.events.unbind(o[0],o[1],o[2])}return this.events.unbind(e,t,n)},fire:function(e,t,n){return this.events.fire(e,t,n)},getContentEditable:function(e){var t;return e&&1==e.nodeType?(t=e.getAttribute("data-mce-contenteditable"),t&&"inherit"!==t?t:"inherit"!==e.contentEditable?e.contentEditable:null):null},getContentEditableParent:function(e){for(var t=this.getRoot(),n=null;e&&e!==t&&(n=this.getContentEditable(e),null===n);e=e.parentNode);return n},destroy:function(){var t=this;if(t.boundEvents){for(var n=t.boundEvents.length;n--;){var r=t.boundEvents[n];this.events.unbind(r[0],r[1],r[2])}t.boundEvents=null}e.setDocument&&e.setDocument(),t.win=t.doc=t.root=t.events=t.frag=null},isChildOf:function(e,t){for(;e;){if(t===e)return!0;e=e.parentNode}return!1},dumpRng:function(e){return"startContainer: "+e.startContainer.nodeName+", startOffset: "+e.startOffset+", endContainer: "+e.endContainer.nodeName+", endOffset: "+e.endOffset},_findSib:function(e,t,n){var r=this,i=t;if(e)for("string"==typeof i&&(i=function(e){return r.is(e,t)}),e=e[n];e;e=e[n])if(i(e))return e;return null}},h.DOM=new h(document),h.nodeIndex=p,h}),r(E,[w,m],function(e,t){function n(){function e(e,n,i){function o(){l.remove(c),u&&(u.onreadystatechange=u.onload=u=null),n()}function s(){a(i)?i():"undefined"!=typeof console&&console.log&&console.log("Failed to load script: "+e)}var l=r,u,c;c=l.uniqueId(),u=document.createElement("script"),u.id=c,u.type="text/javascript",u.src=t._addCacheSuffix(e),"onreadystatechange"in u?u.onreadystatechange=function(){/loaded|complete/.test(u.readyState)&&o()}:u.onload=o,u.onerror=s,(document.getElementsByTagName("head")[0]||document.body).appendChild(u)}var n=0,s=1,l=2,u=3,c={},d=[],f={},p=[],h=0,m;this.isDone=function(e){return c[e]==l},this.markDone=function(e){c[e]=l},this.add=this.load=function(e,t,r,i){var o=c[e];o==m&&(d.push(e),c[e]=n),t&&(f[e]||(f[e]=[]),f[e].push({success:t,failure:i,scope:r||this}))},this.remove=function(e){delete c[e],delete f[e]},this.loadQueue=function(e,t,n){this.loadScripts(d,e,t,n)},this.loadScripts=function(t,n,r,d){function g(e,t){i(f[t],function(t){a(t[e])&&t[e].call(t.scope)}),f[t]=m}var v,y=[];p.push({success:n,failure:d,scope:r||this}),(v=function(){var n=o(t);t.length=0,i(n,function(t){return c[t]===l?void g("success",t):c[t]===u?void g("failure",t):void(c[t]!==s&&(c[t]=s,h++,e(t,function(){c[t]=l,h--,g("success",t),v()},function(){c[t]=u,h--,y.push(t),g("failure",t),v()})))}),h||(i(p,function(e){0===y.length?a(e.success)&&e.success.call(e.scope):a(e.failure)&&e.failure.call(e.scope,y)}),p.length=0)})()}}var r=e.DOM,i=t.each,o=t.grep,a=function(e){return"function"==typeof e};return n.ScriptLoader=new n,n}),r(N,[E,m],function(e,n){function r(){var e=this;e.items=[],e.urls={},e.lookup={}}var i=n.each;return r.prototype={get:function(e){return this.lookup[e]?this.lookup[e].instance:t},dependencies:function(e){var t;return this.lookup[e]&&(t=this.lookup[e].dependencies),t||[]},requireLangPack:function(t,n){var i=r.language;if(i&&r.languageLoad!==!1){if(n)if(n=","+n+",",n.indexOf(","+i.substr(0,2)+",")!=-1)i=i.substr(0,2);else if(n.indexOf(","+i+",")==-1)return;e.ScriptLoader.add(this.urls[t]+"/langs/"+i+".js")}},add:function(e,t,n){return this.items.push(t),this.lookup[e]={instance:t,dependencies:n},t},remove:function(e){delete this.urls[e],delete this.lookup[e]},createUrl:function(e,t){return"object"==typeof t?t:{prefix:e.prefix,resource:t,suffix:e.suffix}},addComponents:function(t,n){var r=this.urls[t];i(n,function(t){e.ScriptLoader.add(r+"/"+t)})},load:function(n,o,a,s,l){function u(){var r=c.dependencies(n);i(r,function(e){var n=c.createUrl(o,e);c.load(n.resource,n,t,t)}),a&&(s?a.call(s):a.call(e))}var c=this,d=o;c.urls[n]||("object"==typeof o&&(d=o.prefix+o.resource+o.suffix),0!==d.indexOf("/")&&d.indexOf("://")==-1&&(d=r.baseURL+"/"+d),c.urls[n]=d.substring(0,d.lastIndexOf("/")),c.lookup[n]?u():e.ScriptLoader.add(d,u,s,l))}},r.PluginManager=new r,r.ThemeManager=new r,r}),r(_,[],function(){function e(e){return function(t){return!!t&&t.nodeType==e}}function t(e){return e=e.toLowerCase().split(" "),function(t){var n,r;if(t&&t.nodeType)for(r=t.nodeName.toLowerCase(),n=0;nn.length-1?t=n.length-1:t<0&&(t=0),n[t]||e}function s(e,t,n){for(;e&&e!==t;){if(n(e))return e;e=e.parentNode}return null}function l(e,t,n){return null!==s(e,t,n)}function u(e){return"_mce_caret"===e.id}function c(e,t){return v(e)&&l(e,t,u)===!1}function d(e){this.walk=function(t,n){function r(e){var t;return t=e[0],3===t.nodeType&&t===l&&u>=t.nodeValue.length&&e.splice(0,1),t=e[e.length-1],0===d&&e.length>0&&t===c&&3===t.nodeType&&e.splice(e.length-1,1),e}function i(e,t,n){for(var r=[];e&&e!=n;e=e[t])r.push(e);return r}function o(e,t){do{if(e.parentNode==t)return e;e=e.parentNode}while(e)}function s(e,t,o){var a=o?"nextSibling":"previousSibling";for(g=e,v=g.parentNode;g&&g!=t;g=v)v=g.parentNode,y=i(g==e?g:g[a],a),y.length&&(o||y.reverse(),n(r(y)))}var l=t.startContainer,u=t.startOffset,c=t.endContainer,d=t.endOffset,f,p,m,g,v,y,b;if(b=e.select("td[data-mce-selected],th[data-mce-selected]"),b.length>0)return void h(b,function(e){n([e])});if(1==l.nodeType&&l.hasChildNodes()&&(l=l.childNodes[u]),1==c.nodeType&&c.hasChildNodes()&&(c=a(c,d)),l==c)return n(r([l]));for(f=e.findCommonAncestor(l,c),g=l;g;g=g.parentNode){if(g===c)return s(l,f,!0);if(g===f)break}for(g=c;g;g=g.parentNode){if(g===l)return s(c,f);if(g===f)break}p=o(l,f)||l,m=o(c,f)||c,s(l,p,!0),y=i(p==l?p:p.nextSibling,"nextSibling",m==c?m.nextSibling:m),y.length&&n(r(y)),s(c,m)},this.split=function(e){function t(e,t){return e.splitText(t)}var n=e.startContainer,r=e.startOffset,i=e.endContainer,o=e.endOffset;return n==i&&3==n.nodeType?r>0&&rr?(o-=r,n=i=t(i,o).previousSibling,o=i.nodeValue.length,r=0):o=0):(3==n.nodeType&&r>0&&r0&&o0)return f=y,p=n?y.nodeValue.length:0,void(i=!0);if(e.isBlock(y)||b[y.nodeName.toLowerCase()])return;s=y}o&&s&&(f=s,i=!0,p=0)}var f,p,h,m=e.getRoot(),y,b,C,x;if(f=n[(r?"start":"end")+"Container"],p=n[(r?"start":"end")+"Offset"],x=1==f.nodeType&&p===f.childNodes.length,b=e.schema.getNonEmptyElements(),C=r,!v(f)){if(1==f.nodeType&&p>f.childNodes.length-1&&(C=!1),9===f.nodeType&&(f=e.getRoot(),p=0),f===m){if(C&&(y=f.childNodes[p>0?p-1:0])){if(v(y))return;if(b[y.nodeName]||"TABLE"==y.nodeName)return}if(f.hasChildNodes()){if(p=Math.min(!C&&p>0?p-1:p,f.childNodes.length-1),f=f.childNodes[p],p=0,!o&&f===m.lastChild&&"TABLE"===f.nodeName)return;if(l(f)||v(f))return;if(f.hasChildNodes()&&!/TABLE/.test(f.nodeName)){y=f,h=new t(f,m);do{if(g(y)||v(y)){i=!1;break}if(3===y.nodeType&&y.nodeValue.length>0){p=C?0:y.nodeValue.length,f=y,i=!0;break}if(b[y.nodeName.toLowerCase()]&&!a(y)){p=e.nodeIndex(y),f=y.parentNode,"IMG"!=y.nodeName||C||p++,i=!0;break}}while(y=C?h.next():h.prev())}}}o&&(3===f.nodeType&&0===p&&d(!0),1===f.nodeType&&(y=f.childNodes[p],y||(y=f.childNodes[p-1]),!y||"BR"!==y.nodeName||u(y,"A")||s(y)||s(y,!0)||d(!0,y))),C&&!o&&3===f.nodeType&&p===f.nodeValue.length&&d(!1),i&&n["set"+(r?"Start":"End")](f,p)}}var i,o;return o=n.collapsed,r(!0),o||r(),i&&o&&n.collapse(!0),i}}function f(t,n,r){var i,o,a;if(i=r.elementFromPoint(t,n),o=r.body.createTextRange(),i&&"HTML"!=i.tagName||(i=r.body),o.moveToElementText(i),a=e.toArray(o.getClientRects()),a=a.sort(function(e,t){return e=Math.abs(Math.max(e.top-n,e.bottom-n)),t=Math.abs(Math.max(t.top-n,t.bottom-n)),e-t}),a.length>0){n=(a[0].bottom+a[0].top)/2;try{return o.moveToPoint(t,n),o.collapse(!0),o}catch(s){}}return null}function p(e,t){var n=e&&e.parentElement?e.parentElement():null;return g(s(n,t,o))?null:e}var h=e.each,m=n.isContentEditableTrue,g=n.isContentEditableFalse,v=i.isCaretContainer;return d.compareRanges=function(e,t){if(e&&t){if(!e.item&&!e.duplicate)return e.startContainer==t.startContainer&&e.startOffset==t.startOffset;if(e.item&&t.item&&e.item(0)===t.item(0))return!0;if(e.isEqual&&t.isEqual&&t.isEqual(e))return!0}return!1},d.getCaretRangeFromPoint=function(e,t,n){var r,i;if(n.caretPositionFromPoint)i=n.caretPositionFromPoint(e,t),r=n.createRange(),r.setStart(i.offsetNode,i.offset),r.collapse(!0);else if(n.caretRangeFromPoint)r=n.caretRangeFromPoint(e,t);else if(n.body.createTextRange){r=n.body.createTextRange();try{r.moveToPoint(e,t),r.collapse(!0)}catch(o){r=f(e,t,n)}return p(r,n.body)}return r},d.getSelectedNode=function(e){var t=e.startContainer,n=e.startOffset;return t.hasChildNodes()&&e.endOffset==n+1?t.childNodes[n]:null},d.getNode=function(e,t){return 1==e.nodeType&&e.hasChildNodes()&&(t>=e.childNodes.length&&(t=e.childNodes.length-1),e=e.childNodes[t]),e},d}),r(R,[T,d,c],function(e,t,n){return function(r){function i(e){var t,n;if(n=r.$(e).parentsUntil(r.getBody()).add(e),n.length===a.length){for(t=n.length;t>=0&&n[t]===a[t];t--);if(t===-1)return a=n,!0}return a=n,!1}var o,a=[];"onselectionchange"in r.getDoc()||r.on("NodeChange Click MouseUp KeyUp Focus",function(t){var n,i;n=r.selection.getRng(),i={startContainer:n.startContainer,startOffset:n.startOffset,endContainer:n.endContainer,endOffset:n.endOffset},"nodechange"!=t.type&&e.compareRanges(i,o)||r.fire("SelectionChange"),o=i}),r.on("contextmenu",function(){r.fire("SelectionChange")}),r.on("SelectionChange",function(){var e=r.selection.getStart(!0);!t.range&&r.selection.isCollapsed()||!i(e)&&r.dom.isChildOf(e,r.getBody())&&r.nodeChanged({selectionChange:!0})}),r.on("MouseUp",function(e){e.isDefaultPrevented()||("IMG"==r.selection.getNode().nodeName?n.setEditorTimeout(r,function(){r.nodeChanged()}):r.nodeChanged())}),this.nodeChanged=function(e){var t=r.selection,n,i,o;r.initialized&&t&&!r.settings.disable_nodechange&&!r.readonly&&(o=r.getBody(),n=t.getStart()||o,n.ownerDocument==r.getDoc()&&r.dom.isChildOf(n,o)||(n=o),"IMG"==n.nodeName&&t.isCollapsed()&&(n=n.parentNode),i=[],r.dom.getParent(n,function(e){return e===o||void i.push(e)}),e=e||{},e.element=n,e.parents=i,r.fire("NodeChange",e))}}}),r(A,[],function(){function e(e,t,n){var r,i,o=n?"lastChild":"firstChild",a=n?"prev":"next";if(e[o])return e[o];if(e!==t){if(r=e[a])return r;for(i=e.parent;i&&i!==t;i=i.parent)if(r=i[a])return r}}function t(e,t){this.name=e,this.type=t,1===t&&(this.attributes=[],this.attributes.map={})}var n=/^[ \t\r\n]*$/,r={"#text":3,"#comment":8,"#cdata":4,"#pi":7,"#doctype":10,"#document-fragment":11};return t.prototype={replace:function(e){var t=this;return e.parent&&e.remove(),t.insert(e,t),t.remove(),t},attr:function(e,t){var n=this,r,i,o;if("string"!=typeof e){for(i in e)n.attr(i,e[i]);return n}if(r=n.attributes){if(t!==o){if(null===t){if(e in r.map)for(delete r.map[e],i=r.length;i--;)if(r[i].name===e)return r=r.splice(i,1),n;return n}if(e in r.map){for(i=r.length;i--;)if(r[i].name===e){r[i].value=t;break}}else r.push({name:e,value:t});return r.map[e]=t,n}return r.map[e]}},clone:function(){var e=this,n=new t(e.name,e.type),r,i,o,a,s;if(o=e.attributes){for(s=[],s.map={},r=0,i=o.length;r