nextcloud/apps/workflowengine/js/workflowengine.js.map

1 line
202 KiB
Plaintext

{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/handlebars/dist/cjs/handlebars/utils.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/exception.js","webpack:///./node_modules/handlebars/runtime.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/base.js","webpack:///./apps/workflowengine/src/hbs_helpers/selectItem.js","webpack:///./apps/workflowengine/src/templates/operation.handlebars","webpack:///./apps/workflowengine/src/templates/operations.handlebars","webpack:///./node_modules/handlebars/dist/cjs/handlebars.runtime.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/block-helper-missing.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/each.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/helper-missing.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/if.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/log.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/lookup.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/with.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/decorators.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/decorators/inline.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/logger.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/safe-string.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/runtime.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/no-conflict.js","webpack:///(webpack)/buildin/global.js","webpack:///./apps/workflowengine/src/hbs_helpers/getOperators.js","webpack:///./apps/workflowengine/src/filemimetypeplugin.js","webpack:///./apps/workflowengine/src/filenameplugin.js","webpack:///./apps/workflowengine/src/filesizeplugin.js","webpack:///./apps/workflowengine/src/filesystemtagsplugin.js","webpack:///./apps/workflowengine/src/requestremoteaddressplugin.js","webpack:///./apps/workflowengine/src/requesttimeplugin.js","webpack:///./apps/workflowengine/src/requesturlplugin.js","webpack:///./apps/workflowengine/src/requestuseragentplugin.js","webpack:///./apps/workflowengine/src/usergroupmembershipplugin.js","webpack:///./apps/workflowengine/src/admin.js","webpack:///./apps/workflowengine/src/workflowengine.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","extend","indexOf","array","len","length","escapeExpression","string","toHTML","possible","test","replace","badChars","escapeChar","isEmpty","isArray","createFrame","frame","_parent","blockParams","params","ids","path","appendContextPath","contextPath","id","escape","&","<",">","\"","'","`","=","chr","obj","arguments","toString","isFunction","Array","errorProps","Exception","message","node","loc","line","undefined","column","start","tmp","Error","constructor","this","idx","captureStackTrace","lineNumber","nop","_interopRequireDefault","default","HandlebarsEnvironment","_utils","_exception2","_helpers","_decorators","_logger2","VERSION","COMPILER_REVISION","REVISION_CHANGES","1","2","3","4","5","6","7","helpers","partials","decorators","registerDefaultHelpers","registerDefaultDecorators","logger","log","registerHelper","fn","unregisterHelper","registerPartial","partial","unregisterPartial","registerDecorator","unregisterDecorator","currentValue","itemValue","Handlebars","__default","template","container","depth0","data","depths","stack1","alias1","lambda","alias2","alias3","nullContext","index","each","classes","hash","program","inverse","noop","8","operator","10","operation","saveTXT","11","resetTXT","13","savingTXT","15","16","errorMessage","17","19","21","compiler","main","hasChanged","shortRuleDescTXT","checks","addRuleTXT","saving","useData","useDepths","helper","addRuleGroupTXT","helperMissing","_interopRequireWildcard","newObj","base","_handlebarsSafeString2","_handlebarsException2","Utils","runtime","_handlebarsNoConflict2","hb","SafeString","VM","spec","inst","instance","_helpersBlockHelperMissing2","_helpersEach2","_helpersHelperMissing2","_helpersIf2","_helpersLog2","_helpersLookup2","_helpersWith2","context","options","_exception","ret","execIteration","field","last","first","j","priorKey","conditional","includeZero","args","push","level","apply","propertyIsEnumerable","_decoratorsInline2","_decoratorsInline","props","original","methodMap","lookupLevel","levelMap","toLowerCase","parseInt","console","method","_len","_key","checkRevision","compilerInfo","compilerRevision","currentRevision","_base","runtimeVersions","compilerVersions","templateSpec","env","decorator","main_d","strict","lookup","current","invokePartial","resolvePartial","result","compile","compilerOptions","indent","lines","split","join","programs","declaredBlockParams","programWrapper","wrapProgram","depth","merge","param","common","seal","_setup","root","initData","useBlockParams","concat","executeDecorators","isTop","usePartial","useDecorators","_child","currentPartialBlock","partialBlock","Function","prog","currentDepths","global","window","$Handlebars","noConflict","g","e","classname","check","OCA","WorkflowEngine","getCheckByClass","_","isUndefined","Plugins","FileMimeTypePlugin","getCheck","class","operators","render","element","placeholder","_validateRegex","$","removeClass","addClass","css","attr","tooltip","placement","exec","OC","register","FileNamePlugin","FileSizePlugin","FileSystemTagsPlugin","collection","SystemTags","select2","allowClear","multiple","query","debounce","callback","results","filterByName","term","initSelection","val","formatResult","tag","getDescriptiveTag","formatSelection","tagId","escapeMarkup","RequestRemoteAddressPlugin","_validateIPv6","_validateIPv4","RequestTimePlugin","timezones","_$element","startTime","endTime","timezone","jstz","determine","$element","isString","JSON","parse","splittedStart","splittedEnd","valueJSON","stringify","insertBefore","timezoneInput","ajax","url","generateUrl","dataType","quietMillis","search","response","more","parent","on","update","event","target","classList","moment","parsedDate","format","indexValue","trigger","warn","RequestURLPlugin","predefinedValues","self","text","children","unshift","createSearchChoice","RequestUserAgentPlugin","UserGroupMembershipPlugin","groups","groupId","displayname","find","group","escapeHTML","availablePlugins","availableChecks","className","Operation","Backbone","Model","defaults","OperationsCollection","Collection","model","OperationView","View","templateId","events","change .check-class","change .check-operator","change .check-value","change .operation-name","change .operation-operation","click .button-reset","click .button-save","click .button-add","click .button-delete","click .button-delete-check","originalModel","vars","OperationTemplate","initialize","linkToOCS","success","ocs","forEach","Notification","error","type","delete","PasswordConfirmation","requiresPasswordConfirmation","requirePasswordConfirmation","destroy","remove","reset","set","silent","save","responseText","add","clone","checkChanged","parentElement","substr","has","deleteCheck","splice","operationChanged","$el","html","toJSON","valueElement","plugin","delay","elements","OperationsView","click .button-add-operation","OperationsTemplate","getPlugins","fetch","once","renderOperation","subView","append"],"mappings":"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","file":"workflowengine.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/js/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 33);\n","'use strict';\n\nexports.__esModule = true;\nexports.extend = extend;\nexports.indexOf = indexOf;\nexports.escapeExpression = escapeExpression;\nexports.isEmpty = isEmpty;\nexports.createFrame = createFrame;\nexports.blockParams = blockParams;\nexports.appendContextPath = appendContextPath;\nvar escape = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#x27;',\n '`': '&#x60;',\n '=': '&#x3D;'\n};\n\nvar badChars = /[&<>\"'`=]/g,\n possible = /[&<>\"'`=]/;\n\nfunction escapeChar(chr) {\n return escape[chr];\n}\n\nfunction extend(obj /* , ...source */) {\n for (var i = 1; i < arguments.length; i++) {\n for (var key in arguments[i]) {\n if (Object.prototype.hasOwnProperty.call(arguments[i], key)) {\n obj[key] = arguments[i][key];\n }\n }\n }\n\n return obj;\n}\n\nvar toString = Object.prototype.toString;\n\nexports.toString = toString;\n// Sourced from lodash\n// https://github.com/bestiejs/lodash/blob/master/LICENSE.txt\n/* eslint-disable func-style */\nvar isFunction = function isFunction(value) {\n return typeof value === 'function';\n};\n// fallback for older versions of Chrome and Safari\n/* istanbul ignore next */\nif (isFunction(/x/)) {\n exports.isFunction = isFunction = function (value) {\n return typeof value === 'function' && toString.call(value) === '[object Function]';\n };\n}\nexports.isFunction = isFunction;\n\n/* eslint-enable func-style */\n\n/* istanbul ignore next */\nvar isArray = Array.isArray || function (value) {\n return value && typeof value === 'object' ? toString.call(value) === '[object Array]' : false;\n};\n\nexports.isArray = isArray;\n// Older IE versions do not directly support indexOf so we must implement our own, sadly.\n\nfunction indexOf(array, value) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (array[i] === value) {\n return i;\n }\n }\n return -1;\n}\n\nfunction escapeExpression(string) {\n if (typeof string !== 'string') {\n // don't escape SafeStrings, since they're already safe\n if (string && string.toHTML) {\n return string.toHTML();\n } else if (string == null) {\n return '';\n } else if (!string) {\n return string + '';\n }\n\n // Force a string conversion as this will be done by the append regardless and\n // the regex test will do this transparently behind the scenes, causing issues if\n // an object's to string has escaped characters in it.\n string = '' + string;\n }\n\n if (!possible.test(string)) {\n return string;\n }\n return string.replace(badChars, escapeChar);\n}\n\nfunction isEmpty(value) {\n if (!value && value !== 0) {\n return true;\n } else if (isArray(value) && value.length === 0) {\n return true;\n } else {\n return false;\n }\n}\n\nfunction createFrame(object) {\n var frame = extend({}, object);\n frame._parent = object;\n return frame;\n}\n\nfunction blockParams(params, ids) {\n params.path = ids;\n return params;\n}\n\nfunction appendContextPath(contextPath, id) {\n return (contextPath ? contextPath + '.' : '') + id;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3V0aWxzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxJQUFNLE1BQU0sR0FBRztBQUNiLEtBQUcsRUFBRSxPQUFPO0FBQ1osS0FBRyxFQUFFLE1BQU07QUFDWCxLQUFHLEVBQUUsTUFBTTtBQUNYLEtBQUcsRUFBRSxRQUFRO0FBQ2IsS0FBRyxFQUFFLFFBQVE7QUFDYixLQUFHLEVBQUUsUUFBUTtBQUNiLEtBQUcsRUFBRSxRQUFRO0NBQ2QsQ0FBQzs7QUFFRixJQUFNLFFBQVEsR0FBRyxZQUFZO0lBQ3ZCLFFBQVEsR0FBRyxXQUFXLENBQUM7O0FBRTdCLFNBQVMsVUFBVSxDQUFDLEdBQUcsRUFBRTtBQUN2QixTQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztDQUNwQjs7QUFFTSxTQUFTLE1BQU0sQ0FBQyxHQUFHLG9CQUFtQjtBQUMzQyxPQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN6QyxTQUFLLElBQUksR0FBRyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUM1QixVQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUU7QUFDM0QsV0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztPQUM5QjtLQUNGO0dBQ0Y7O0FBRUQsU0FBTyxHQUFHLENBQUM7Q0FDWjs7QUFFTSxJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQzs7Ozs7O0FBS2hELElBQUksVUFBVSxHQUFHLG9CQUFTLEtBQUssRUFBRTtBQUMvQixTQUFPLE9BQU8sS0FBSyxLQUFLLFVBQVUsQ0FBQztDQUNwQyxDQUFDOzs7QUFHRixJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUNuQixVQUlNLFVBQVUsR0FKaEIsVUFBVSxHQUFHLFVBQVMsS0FBSyxFQUFFO0FBQzNCLFdBQU8sT0FBTyxLQUFLLEtBQUssVUFBVSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssbUJBQW1CLENBQUM7R0FDcEYsQ0FBQztDQUNIO1FBQ08sVUFBVSxHQUFWLFVBQVU7Ozs7O0FBSVgsSUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sSUFBSSxVQUFTLEtBQUssRUFBRTtBQUN0RCxTQUFPLEFBQUMsS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsR0FBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLGdCQUFnQixHQUFHLEtBQUssQ0FBQztDQUNqRyxDQUFDOzs7OztBQUdLLFNBQVMsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUU7QUFDcEMsT0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNoRCxRQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLEVBQUU7QUFDdEIsYUFBTyxDQUFDLENBQUM7S0FDVjtHQUNGO0FBQ0QsU0FBTyxDQUFDLENBQUMsQ0FBQztDQUNYOztBQUdNLFNBQVMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFO0FBQ3ZDLE1BQUksT0FBTyxNQUFNLEtBQUssUUFBUSxFQUFFOztBQUU5QixRQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFO0FBQzNCLGFBQU8sTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO0tBQ3hCLE1BQU0sSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFO0FBQ3pCLGFBQU8sRUFBRSxDQUFDO0tBQ1gsTUFBTSxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ2xCLGFBQU8sTUFBTSxHQUFHLEVBQUUsQ0FBQztLQUNwQjs7Ozs7QUFLRCxVQUFNLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FBQztHQUN0Qjs7QUFFRCxNQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtBQUFFLFdBQU8sTUFBTSxDQUFDO0dBQUU7QUFDOUMsU0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztDQUM3Qzs7QUFFTSxTQUFTLE9BQU8sQ0FBQyxLQUFLLEVBQUU7QUFDN0IsTUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFO0FBQ3pCLFdBQU8sSUFBSSxDQUFDO0dBQ2IsTUFBTSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtBQUMvQyxXQUFPLElBQUksQ0FBQztHQUNiLE1BQU07QUFDTCxXQUFPLEtBQUssQ0FBQztHQUNkO0NBQ0Y7O0FBRU0sU0FBUyxXQUFXLENBQUMsTUFBTSxFQUFFO0FBQ2xDLE1BQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDL0IsT0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7QUFDdkIsU0FBTyxLQUFLLENBQUM7Q0FDZDs7QUFFTSxTQUFTLFdBQVcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO0FBQ3ZDLFFBQU0sQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO0FBQ2xCLFNBQU8sTUFBTSxDQUFDO0NBQ2Y7O0FBRU0sU0FBUyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsRUFBRSxFQUFFO0FBQ2pELFNBQU8sQ0FBQyxXQUFXLEdBQUcsV0FBVyxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUEsR0FBSSxFQUFFLENBQUM7Q0FDcEQiLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBlc2NhcGUgPSB7XG4gICcmJzogJyZhbXA7JyxcbiAgJzwnOiAnJmx0OycsXG4gICc+JzogJyZndDsnLFxuICAnXCInOiAnJnF1b3Q7JyxcbiAgXCInXCI6ICcmI3gyNzsnLFxuICAnYCc6ICcmI3g2MDsnLFxuICAnPSc6ICcmI3gzRDsnXG59O1xuXG5jb25zdCBiYWRDaGFycyA9IC9bJjw+XCInYD1dL2csXG4gICAgICBwb3NzaWJsZSA9IC9bJjw+XCInYD1dLztcblxuZnVuY3Rpb24gZXNjYXBlQ2hhcihjaHIpIHtcbiAgcmV0dXJuIGVzY2FwZVtjaHJdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0ZW5kKG9iai8qICwgLi4uc291cmNlICovKSB7XG4gIGZvciAobGV0IGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgZm9yIChsZXQga2V5IGluIGFyZ3VtZW50c1tpXSkge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhcmd1bWVudHNbaV0sIGtleSkpIHtcbiAgICAgICAgb2JqW2tleV0gPSBhcmd1bWVudHNbaV1ba2V5XTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gb2JqO1xufVxuXG5leHBvcnQgbGV0IHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuLy8gU291cmNlZCBmcm9tIGxvZGFzaFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2Jlc3RpZWpzL2xvZGFzaC9ibG9iL21hc3Rlci9MSUNFTlNFLnR4dFxuLyogZXNsaW50LWRpc2FibGUgZnVuYy1zdHlsZSAqL1xubGV0IGlzRnVuY3Rpb24gPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nO1xufTtcbi8vIGZhbGxiYWNrIGZvciBvbGRlciB2ZXJzaW9ucyBvZiBDaHJvbWUgYW5kIFNhZmFyaVxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmlmIChpc0Z1bmN0aW9uKC94LykpIHtcbiAgaXNGdW5jdGlvbiA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0b1N0cmluZy5jYWxsKHZhbHVlKSA9PT0gJ1tvYmplY3QgRnVuY3Rpb25dJztcbiAgfTtcbn1cbmV4cG9ydCB7aXNGdW5jdGlvbn07XG4vKiBlc2xpbnQtZW5hYmxlIGZ1bmMtc3R5bGUgKi9cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmV4cG9ydCBjb25zdCBpc0FycmF5ID0gQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpID8gdG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT09ICdbb2JqZWN0IEFycmF5XScgOiBmYWxzZTtcbn07XG5cbi8vIE9sZGVyIElFIHZlcnNpb25zIGRvIG5vdCBkaXJlY3RseSBzdXBwb3J0IGluZGV4T2Ygc28gd2UgbXVzdCBpbXBsZW1lbnQgb3VyIG93biwgc2FkbHkuXG5leHBvcnQgZnVuY3Rpb24gaW5kZXhPZihhcnJheSwgdmFsdWUpIHtcbiAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IGFycmF5Lmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgaWYgKGFycmF5W2ldID09PSB2YWx1ZSkge1xuICAgICAgcmV0dXJuIGk7XG4gICAgfVxuICB9XG4gIHJldHVybiAtMTtcbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlRXhwcmVzc2lvbihzdHJpbmcpIHtcbiAgaWYgKHR5cGVvZiBzdHJpbmcgIT09ICdzdHJpbmcnKSB7XG4gICAgLy8gZG9uJ3QgZXNjYXBlIFNhZmVTdHJpbmdzLCBzaW5jZSB0aGV5J3JlIGFscmVhZHkgc2FmZVxuICAgIGlmIChzdHJpbmcgJiYgc3RyaW5nLnRvSFRNTCkge1xuICAgICAgcmV0dXJuIHN0cmluZy50b0hUTUwoKTtcbiAgICB9IGVsc2UgaWYgKHN0cmluZyA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfSBlbHNlIGlmICghc3RyaW5nKSB7XG4gICAgICByZXR1cm4gc3RyaW5nICsgJyc7XG4gICAgfVxuXG4gICAgLy8gRm9yY2UgYSBzdHJpbmcgY29udmVyc2lvbiBhcyB0aGlzIHdpbGwgYmUgZG9uZSBieSB0aGUgYXBwZW5kIHJlZ2FyZGxlc3MgYW5kXG4gICAgLy8gdGhlIHJlZ2V4IHRlc3Qgd2lsbCBkbyB0aGlzIHRyYW5zcGFyZW50bHkgYmVoaW5kIHRoZSBzY2VuZXMsIGNhdXNpbmcgaXNzdWVzIGlmXG4gICAgLy8gYW4gb2JqZWN0J3MgdG8gc3RyaW5nIGhhcyBlc2NhcGVkIGNoYXJhY3RlcnMgaW4gaXQuXG4gICAgc3RyaW5nID0gJycgKyBzdHJpbmc7XG4gIH1cblxuICBpZiAoIXBvc3NpYmxlLnRlc3Qoc3RyaW5nKSkgeyByZXR1cm4gc3RyaW5nOyB9XG4gIHJldHVybiBzdHJpbmcucmVwbGFjZShiYWRDaGFycywgZXNjYXBlQ2hhcik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0VtcHR5KHZhbHVlKSB7XG4gIGlmICghdmFsdWUgJiYgdmFsdWUgIT09IDApIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlIGlmIChpc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZyYW1lKG9iamVjdCkge1xuICBsZXQgZnJhbWUgPSBleHRlbmQoe30sIG9iamVjdCk7XG4gIGZyYW1lLl9wYXJlbnQgPSBvYmplY3Q7XG4gIHJldHVybiBmcmFtZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJsb2NrUGFyYW1zKHBhcmFtcywgaWRzKSB7XG4gIHBhcmFtcy5wYXRoID0gaWRzO1xuICByZXR1cm4gcGFyYW1zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwZW5kQ29udGV4dFBhdGgoY29udGV4dFBhdGgsIGlkKSB7XG4gIHJldHVybiAoY29udGV4dFBhdGggPyBjb250ZXh0UGF0aCArICcuJyA6ICcnKSArIGlkO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nvar errorProps = ['description', 'fileName', 'lineNumber', 'message', 'name', 'number', 'stack'];\n\nfunction Exception(message, node) {\n var loc = node && node.loc,\n line = undefined,\n column = undefined;\n if (loc) {\n line = loc.start.line;\n column = loc.start.column;\n\n message += ' - ' + line + ':' + column;\n }\n\n var tmp = Error.prototype.constructor.call(this, message);\n\n // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work.\n for (var idx = 0; idx < errorProps.length; idx++) {\n this[errorProps[idx]] = tmp[errorProps[idx]];\n }\n\n /* istanbul ignore else */\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, Exception);\n }\n\n try {\n if (loc) {\n this.lineNumber = line;\n\n // Work around issue under safari where we can't directly set the column value\n /* istanbul ignore next */\n if (Object.defineProperty) {\n Object.defineProperty(this, 'column', {\n value: column,\n enumerable: true\n });\n } else {\n this.column = column;\n }\n }\n } catch (nop) {\n /* Ignore if the browser is very particular */\n }\n}\n\nException.prototype = new Error();\n\nexports['default'] = Exception;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2V4Y2VwdGlvbi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQ0EsSUFBTSxVQUFVLEdBQUcsQ0FBQyxhQUFhLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQzs7QUFFbkcsU0FBUyxTQUFTLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRTtBQUNoQyxNQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLEdBQUc7TUFDdEIsSUFBSSxZQUFBO01BQ0osTUFBTSxZQUFBLENBQUM7QUFDWCxNQUFJLEdBQUcsRUFBRTtBQUNQLFFBQUksR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztBQUN0QixVQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7O0FBRTFCLFdBQU8sSUFBSSxLQUFLLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxNQUFNLENBQUM7R0FDeEM7O0FBRUQsTUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQzs7O0FBRzFELE9BQUssSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFO0FBQ2hELFFBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7R0FDOUM7OztBQUdELE1BQUksS0FBSyxDQUFDLGlCQUFpQixFQUFFO0FBQzNCLFNBQUssQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7R0FDMUM7O0FBRUQsTUFBSTtBQUNGLFFBQUksR0FBRyxFQUFFO0FBQ1AsVUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7Ozs7QUFJdkIsVUFBSSxNQUFNLENBQUMsY0FBYyxFQUFFO0FBQ3pCLGNBQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRTtBQUNwQyxlQUFLLEVBQUUsTUFBTTtBQUNiLG9CQUFVLEVBQUUsSUFBSTtTQUNqQixDQUFDLENBQUM7T0FDSixNQUFNO0FBQ0wsWUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7T0FDdEI7S0FDRjtHQUNGLENBQUMsT0FBTyxHQUFHLEVBQUU7O0dBRWI7Q0FDRjs7QUFFRCxTQUFTLENBQUMsU0FBUyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7O3FCQUVuQixTQUFTIiwiZmlsZSI6ImV4Y2VwdGlvbi5qcyIsInNvdXJjZXNDb250ZW50IjpbIlxuY29uc3QgZXJyb3JQcm9wcyA9IFsnZGVzY3JpcHRpb24nLCAnZmlsZU5hbWUnLCAnbGluZU51bWJlcicsICdtZXNzYWdlJywgJ25hbWUnLCAnbnVtYmVyJywgJ3N0YWNrJ107XG5cbmZ1bmN0aW9uIEV4Y2VwdGlvbihtZXNzYWdlLCBub2RlKSB7XG4gIGxldCBsb2MgPSBub2RlICYmIG5vZGUubG9jLFxuICAgICAgbGluZSxcbiAgICAgIGNvbHVtbjtcbiAgaWYgKGxvYykge1xuICAgIGxpbmUgPSBsb2Muc3RhcnQubGluZTtcbiAgICBjb2x1bW4gPSBsb2Muc3RhcnQuY29sdW1uO1xuXG4gICAgbWVzc2FnZSArPSAnIC0gJyArIGxpbmUgKyAnOicgKyBjb2x1bW47XG4gIH1cblxuICBsZXQgdG1wID0gRXJyb3IucHJvdG90eXBlLmNvbnN0cnVjdG9yLmNhbGwodGhpcywgbWVzc2FnZSk7XG5cbiAgLy8gVW5mb3J0dW5hdGVseSBlcnJvcnMgYXJlIG5vdCBlbnVtZXJhYmxlIGluIENocm9tZSAoYXQgbGVhc3QpLCBzbyBgZm9yIHByb3AgaW4gdG1wYCBkb2Vzbid0IHdvcmsuXG4gIGZvciAobGV0IGlkeCA9IDA7IGlkeCA8IGVycm9yUHJvcHMubGVuZ3RoOyBpZHgrKykge1xuICAgIHRoaXNbZXJyb3JQcm9wc1tpZHhdXSA9IHRtcFtlcnJvclByb3BzW2lkeF1dO1xuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKSB7XG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgRXhjZXB0aW9uKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgaWYgKGxvYykge1xuICAgICAgdGhpcy5saW5lTnVtYmVyID0gbGluZTtcblxuICAgICAgLy8gV29yayBhcm91bmQgaXNzdWUgdW5kZXIgc2FmYXJpIHdoZXJlIHdlIGNhbid0IGRpcmVjdGx5IHNldCB0aGUgY29sdW1uIHZhbHVlXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkge1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ2NvbHVtbicsIHtcbiAgICAgICAgICB2YWx1ZTogY29sdW1uLFxuICAgICAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNvbHVtbiA9IGNvbHVtbjtcbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2ggKG5vcCkge1xuICAgIC8qIElnbm9yZSBpZiB0aGUgYnJvd3NlciBpcyB2ZXJ5IHBhcnRpY3VsYXIgKi9cbiAgfVxufVxuXG5FeGNlcHRpb24ucHJvdG90eXBlID0gbmV3IEVycm9yKCk7XG5cbmV4cG9ydCBkZWZhdWx0IEV4Y2VwdGlvbjtcbiJdfQ==\n","// Create a simple path alias to allow browserify to resolve\n// the runtime on a supported path.\nmodule.exports = require('./dist/cjs/handlebars.runtime')['default'];\n","'use strict';\n\nexports.__esModule = true;\nexports.HandlebarsEnvironment = HandlebarsEnvironment;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('./utils');\n\nvar _exception = require('./exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nvar _helpers = require('./helpers');\n\nvar _decorators = require('./decorators');\n\nvar _logger = require('./logger');\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar VERSION = '4.1.2';\nexports.VERSION = VERSION;\nvar COMPILER_REVISION = 7;\n\nexports.COMPILER_REVISION = COMPILER_REVISION;\nvar REVISION_CHANGES = {\n 1: '<= 1.0.rc.2', // 1.0.rc.2 is actually rev2 but doesn't report it\n 2: '== 1.0.0-rc.3',\n 3: '== 1.0.0-rc.4',\n 4: '== 1.x.x',\n 5: '== 2.0.0-alpha.x',\n 6: '>= 2.0.0-beta.1',\n 7: '>= 4.0.0'\n};\n\nexports.REVISION_CHANGES = REVISION_CHANGES;\nvar objectType = '[object Object]';\n\nfunction HandlebarsEnvironment(helpers, partials, decorators) {\n this.helpers = helpers || {};\n this.partials = partials || {};\n this.decorators = decorators || {};\n\n _helpers.registerDefaultHelpers(this);\n _decorators.registerDefaultDecorators(this);\n}\n\nHandlebarsEnvironment.prototype = {\n constructor: HandlebarsEnvironment,\n\n logger: _logger2['default'],\n log: _logger2['default'].log,\n\n registerHelper: function registerHelper(name, fn) {\n if (_utils.toString.call(name) === objectType) {\n if (fn) {\n throw new _exception2['default']('Arg not supported with multiple helpers');\n }\n _utils.extend(this.helpers, name);\n } else {\n this.helpers[name] = fn;\n }\n },\n unregisterHelper: function unregisterHelper(name) {\n delete this.helpers[name];\n },\n\n registerPartial: function registerPartial(name, partial) {\n if (_utils.toString.call(name) === objectType) {\n _utils.extend(this.partials, name);\n } else {\n if (typeof partial === 'undefined') {\n throw new _exception2['default']('Attempting to register a partial called \"' + name + '\" as undefined');\n }\n this.partials[name] = partial;\n }\n },\n unregisterPartial: function unregisterPartial(name) {\n delete this.partials[name];\n },\n\n registerDecorator: function registerDecorator(name, fn) {\n if (_utils.toString.call(name) === objectType) {\n if (fn) {\n throw new _exception2['default']('Arg not supported with multiple decorators');\n }\n _utils.extend(this.decorators, name);\n } else {\n this.decorators[name] = fn;\n }\n },\n unregisterDecorator: function unregisterDecorator(name) {\n delete this.decorators[name];\n }\n};\n\nvar log = _logger2['default'].log;\n\nexports.log = log;\nexports.createFrame = _utils.createFrame;\nexports.logger = _logger2['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2Jhc2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7cUJBQTRDLFNBQVM7O3lCQUMvQixhQUFhOzs7O3VCQUNFLFdBQVc7OzBCQUNSLGNBQWM7O3NCQUNuQyxVQUFVOzs7O0FBRXRCLElBQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQzs7QUFDeEIsSUFBTSxpQkFBaUIsR0FBRyxDQUFDLENBQUM7OztBQUU1QixJQUFNLGdCQUFnQixHQUFHO0FBQzlCLEdBQUMsRUFBRSxhQUFhO0FBQ2hCLEdBQUMsRUFBRSxlQUFlO0FBQ2xCLEdBQUMsRUFBRSxlQUFlO0FBQ2xCLEdBQUMsRUFBRSxVQUFVO0FBQ2IsR0FBQyxFQUFFLGtCQUFrQjtBQUNyQixHQUFDLEVBQUUsaUJBQWlCO0FBQ3BCLEdBQUMsRUFBRSxVQUFVO0NBQ2QsQ0FBQzs7O0FBRUYsSUFBTSxVQUFVLEdBQUcsaUJBQWlCLENBQUM7O0FBRTlCLFNBQVMscUJBQXFCLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUU7QUFDbkUsTUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLElBQUksRUFBRSxDQUFDO0FBQzdCLE1BQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxJQUFJLEVBQUUsQ0FBQztBQUMvQixNQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsSUFBSSxFQUFFLENBQUM7O0FBRW5DLGtDQUF1QixJQUFJLENBQUMsQ0FBQztBQUM3Qix3Q0FBMEIsSUFBSSxDQUFDLENBQUM7Q0FDakM7O0FBRUQscUJBQXFCLENBQUMsU0FBUyxHQUFHO0FBQ2hDLGFBQVcsRUFBRSxxQkFBcUI7O0FBRWxDLFFBQU0scUJBQVE7QUFDZCxLQUFHLEVBQUUsb0JBQU8sR0FBRzs7QUFFZixnQkFBYyxFQUFFLHdCQUFTLElBQUksRUFBRSxFQUFFLEVBQUU7QUFDakMsUUFBSSxnQkFBUyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssVUFBVSxFQUFFO0FBQ3RDLFVBQUksRUFBRSxFQUFFO0FBQUUsY0FBTSwyQkFBYyx5Q0FBeUMsQ0FBQyxDQUFDO09BQUU7QUFDM0Usb0JBQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztLQUM1QixNQUFNO0FBQ0wsVUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7S0FDekI7R0FDRjtBQUNELGtCQUFnQixFQUFFLDBCQUFTLElBQUksRUFBRTtBQUMvQixXQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7R0FDM0I7O0FBRUQsaUJBQWUsRUFBRSx5QkFBUyxJQUFJLEVBQUUsT0FBTyxFQUFFO0FBQ3ZDLFFBQUksZ0JBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLFVBQVUsRUFBRTtBQUN0QyxvQkFBTyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQzdCLE1BQU07QUFDTCxVQUFJLE9BQU8sT0FBTyxLQUFLLFdBQVcsRUFBRTtBQUNsQyxjQUFNLHlFQUEwRCxJQUFJLG9CQUFpQixDQUFDO09BQ3ZGO0FBQ0QsVUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUM7S0FDL0I7R0FDRjtBQUNELG1CQUFpQixFQUFFLDJCQUFTLElBQUksRUFBRTtBQUNoQyxXQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7R0FDNUI7O0FBRUQsbUJBQWlCLEVBQUUsMkJBQVMsSUFBSSxFQUFFLEVBQUUsRUFBRTtBQUNwQyxRQUFJLGdCQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxVQUFVLEVBQUU7QUFDdEMsVUFBSSxFQUFFLEVBQUU7QUFBRSxjQUFNLDJCQUFjLDRDQUE0QyxDQUFDLENBQUM7T0FBRTtBQUM5RSxvQkFBTyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQy9CLE1BQU07QUFDTCxVQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztLQUM1QjtHQUNGO0FBQ0QscUJBQW1CLEVBQUUsNkJBQVMsSUFBSSxFQUFFO0FBQ2xDLFdBQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztHQUM5QjtDQUNGLENBQUM7O0FBRUssSUFBSSxHQUFHLEdBQUcsb0JBQU8sR0FBRyxDQUFDOzs7UUFFcEIsV0FBVztRQUFFLE1BQU0iLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Y3JlYXRlRnJhbWUsIGV4dGVuZCwgdG9TdHJpbmd9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IEV4Y2VwdGlvbiBmcm9tICcuL2V4Y2VwdGlvbic7XG5pbXBvcnQge3JlZ2lzdGVyRGVmYXVsdEhlbHBlcnN9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQge3JlZ2lzdGVyRGVmYXVsdERlY29yYXRvcnN9IGZyb20gJy4vZGVjb3JhdG9ycyc7XG5pbXBvcnQgbG9nZ2VyIGZyb20gJy4vbG9nZ2VyJztcblxuZXhwb3J0IGNvbnN0IFZFUlNJT04gPSAnNC4xLjInO1xuZXhwb3J0IGNvbnN0IENPTVBJTEVSX1JFVklTSU9OID0gNztcblxuZXhwb3J0IGNvbnN0IFJFVklTSU9OX0NIQU5HRVMgPSB7XG4gIDE6ICc8PSAxLjAucmMuMicsIC8vIDEuMC5yYy4yIGlzIGFjdHVhbGx5IHJldjIgYnV0IGRvZXNuJ3QgcmVwb3J0IGl0XG4gIDI6ICc9PSAxLjAuMC1yYy4zJyxcbiAgMzogJz09IDEuMC4wLXJjLjQnLFxuICA0OiAnPT0gMS54LngnLFxuICA1OiAnPT0gMi4wLjAtYWxwaGEueCcsXG4gIDY6ICc+PSAyLjAuMC1iZXRhLjEnLFxuICA3OiAnPj0gNC4wLjAnXG59O1xuXG5jb25zdCBvYmplY3RUeXBlID0gJ1tvYmplY3QgT2JqZWN0XSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBIYW5kbGViYXJzRW52aXJvbm1lbnQoaGVscGVycywgcGFydGlhbHMsIGRlY29yYXRvcnMpIHtcbiAgdGhpcy5oZWxwZXJzID0gaGVscGVycyB8fCB7fTtcbiAgdGhpcy5wYXJ0aWFscyA9IHBhcnRpYWxzIHx8IHt9O1xuICB0aGlzLmRlY29yYXRvcnMgPSBkZWNvcmF0b3JzIHx8IHt9O1xuXG4gIHJlZ2lzdGVyRGVmYXVsdEhlbHBlcnModGhpcyk7XG4gIHJlZ2lzdGVyRGVmYXVsdERlY29yYXRvcnModGhpcyk7XG59XG5cbkhhbmRsZWJhcnNFbnZpcm9ubWVudC5wcm90b3R5cGUgPSB7XG4gIGNvbnN0cnVjdG9yOiBIYW5kbGViYXJzRW52aXJvbm1lbnQsXG5cbiAgbG9nZ2VyOiBsb2dnZXIsXG4gIGxvZzogbG9nZ2VyLmxvZyxcblxuICByZWdpc3RlckhlbHBlcjogZnVuY3Rpb24obmFtZSwgZm4pIHtcbiAgICBpZiAodG9TdHJpbmcuY2FsbChuYW1lKSA9PT0gb2JqZWN0VHlwZSkge1xuICAgICAgaWYgKGZuKSB7IHRocm93IG5ldyBFeGNlcHRpb24oJ0FyZyBub3Qgc3VwcG9ydGVkIHdpdGggbXVsdGlwbGUgaGVscGVycycpOyB9XG4gICAgICBleHRlbmQodGhpcy5oZWxwZXJzLCBuYW1lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oZWxwZXJzW25hbWVdID0gZm47XG4gICAgfVxuICB9LFxuICB1bnJlZ2lzdGVySGVscGVyOiBmdW5jdGlvbihuYW1lKSB7XG4gICAgZGVsZXRlIHRoaXMuaGVscGVyc1tuYW1lXTtcbiAgfSxcblxuICByZWdpc3RlclBhcnRpYWw6IGZ1bmN0aW9uKG5hbWUsIHBhcnRpYWwpIHtcbiAgICBpZiAodG9TdHJpbmcuY2FsbChuYW1lKSA9PT0gb2JqZWN0VHlwZSkge1xuICAgICAgZXh0ZW5kKHRoaXMucGFydGlhbHMsIG5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodHlwZW9mIHBhcnRpYWwgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oYEF0dGVtcHRpbmcgdG8gcmVnaXN0ZXIgYSBwYXJ0aWFsIGNhbGxlZCBcIiR7bmFtZX1cIiBhcyB1bmRlZmluZWRgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucGFydGlhbHNbbmFtZV0gPSBwYXJ0aWFsO1xuICAgIH1cbiAgfSxcbiAgdW5yZWdpc3RlclBhcnRpYWw6IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICBkZWxldGUgdGhpcy5wYXJ0aWFsc1tuYW1lXTtcbiAgfSxcblxuICByZWdpc3RlckRlY29yYXRvcjogZnVuY3Rpb24obmFtZSwgZm4pIHtcbiAgICBpZiAodG9TdHJpbmcuY2FsbChuYW1lKSA9PT0gb2JqZWN0VHlwZSkge1xuICAgICAgaWYgKGZuKSB7IHRocm93IG5ldyBFeGNlcHRpb24oJ0FyZyBub3Qgc3VwcG9ydGVkIHdpdGggbXVsdGlwbGUgZGVjb3JhdG9ycycpOyB9XG4gICAgICBleHRlbmQodGhpcy5kZWNvcmF0b3JzLCBuYW1lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kZWNvcmF0b3JzW25hbWVdID0gZm47XG4gICAgfVxuICB9LFxuICB1bnJlZ2lzdGVyRGVjb3JhdG9yOiBmdW5jdGlvbihuYW1lKSB7XG4gICAgZGVsZXRlIHRoaXMuZGVjb3JhdG9yc1tuYW1lXTtcbiAgfVxufTtcblxuZXhwb3J0IGxldCBsb2cgPSBsb2dnZXIubG9nO1xuXG5leHBvcnQge2NyZWF0ZUZyYW1lLCBsb2dnZXJ9O1xuIl19\n","module.exports = function(currentValue, itemValue) {\n\tif (currentValue === itemValue) {\n\t\treturn 'selected=\"selected\"';\n\t}\n\n\treturn \"\";\n}\n","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n return \" modified\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n return \"\t\t\t<span class=\\\"button-delete icon-delete\\\"></span>\\n\";\n},\"5\":function(container,depth0,helpers,partials,data,blockParams,depths) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, alias3=depth0 != null ? depth0 : (container.nullContext || {});\n\n return \"\t\t\t<div class=\\\"check\\\" data-id=\\\"\"\n + alias2(alias1((data && data.index), depth0))\n + \"\\\">\\n\t\t\t\t<select class=\\\"check-class\\\">\\n\"\n + ((stack1 = helpers.each.call(alias3,(depths[1] != null ? depths[1].classes : depths[1]),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(6, data, 0, blockParams, depths),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \"\t\t\t\t</select>\\n\t\t\t\t<select class=\\\"check-operator\\\">\\n\"\n + ((stack1 = helpers.each.call(alias3,__default(require(\"../hbs_helpers/getOperators.js\")).call(alias3,(depth0 != null ? depth0[\"class\"] : depth0),{\"name\":\"getOperators\",\"hash\":{},\"data\":data}),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(8, data, 0, blockParams, depths),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \"\t\t\t\t</select>\\n\t\t\t\t<input type=\\\"text\\\" class=\\\"check-value\\\" value=\\\"\"\n + alias2(alias1((depth0 != null ? depth0.value : depth0), depth0))\n + \"\\\">\\n\t\t\t\t<span class=\\\"button-delete-check icon-delete\\\"></span>\\n\t\t\t</div>\\n\";\n},\"6\":function(container,depth0,helpers,partials,data,blockParams,depths) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression;\n\n return \"\t\t\t\t\t\t<option value=\\\"\"\n + alias2(alias1((depth0 != null ? depth0[\"class\"] : depth0), depth0))\n + \"\\\" \"\n + ((stack1 = __default(require(\"../hbs_helpers/selectItem.js\")).call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? depth0[\"class\"] : depth0),(depths[1] != null ? depths[1][\"class\"] : depths[1]),{\"name\":\"selectItem\",\"hash\":{},\"data\":data})) != null ? stack1 : \"\")\n + \">\"\n + alias2(alias1((depth0 != null ? depth0.name : depth0), depth0))\n + \"</option>\\n\";\n},\"8\":function(container,depth0,helpers,partials,data,blockParams,depths) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression;\n\n return \"\t\t\t\t\t\t<option value=\\\"\"\n + alias2(alias1((depth0 != null ? depth0.operator : depth0), depth0))\n + \"\\\" \"\n + ((stack1 = __default(require(\"../hbs_helpers/selectItem.js\")).call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? depth0.operator : depth0),(depths[1] != null ? depths[1].operator : depths[1]),{\"name\":\"selectItem\",\"hash\":{},\"data\":data})) != null ? stack1 : \"\")\n + \">\"\n + alias2(alias1((depth0 != null ? depth0.name : depth0), depth0))\n + \"</option>\\n\";\n},\"10\":function(container,depth0,helpers,partials,data) {\n var stack1;\n\n return ((stack1 = helpers[\"if\"].call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? depth0.operation : depth0)) != null ? stack1.id : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(11, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \"\t\t<button class=\\\"button-save pull-right\\\">\"\n + container.escapeExpression(container.lambda((depth0 != null ? depth0.saveTXT : depth0), depth0))\n + \"</button>\\n\";\n},\"11\":function(container,depth0,helpers,partials,data) {\n return \"\t\t\t<button class=\\\"button-reset pull-right\\\">\"\n + container.escapeExpression(container.lambda((depth0 != null ? depth0.resetTXT : depth0), depth0))\n + \"</button>\\n\";\n},\"13\":function(container,depth0,helpers,partials,data) {\n return \"\t\t<span class=\\\"icon-loading-small pull-right\\\"></span>\\n\t\t<span class=\\\"pull-right\\\">\"\n + container.escapeExpression(container.lambda((depth0 != null ? depth0.savingTXT : depth0), depth0))\n + \"</span>\\n\t\";\n},\"15\":function(container,depth0,helpers,partials,data) {\n var stack1;\n\n return ((stack1 = helpers[\"if\"].call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? depth0.message : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(16, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\");\n},\"16\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {});\n\n return \"\\n\t\t<span class=\\\"msg pull-right \"\n + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.errorMessage : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(17, data, 0),\"inverse\":container.program(19, data, 0),\"data\":data})) != null ? stack1 : \"\")\n + \"\\\">\\n\t\t\t\t\t\"\n + container.escapeExpression(container.lambda((depth0 != null ? depth0.message : depth0), depth0))\n + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.errorMessage : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(21, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \"\\n\t\t\t\t</span>\\n\t\";\n},\"17\":function(container,depth0,helpers,partials,data) {\n return \"error\";\n},\"19\":function(container,depth0,helpers,partials,data) {\n return \"success\";\n},\"21\":function(container,depth0,helpers,partials,data) {\n return \" \"\n + container.escapeExpression(container.lambda((depth0 != null ? depth0.errorMessage : depth0), depth0));\n},\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data,blockParams,depths) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.lambda, alias3=container.escapeExpression;\n\n return \"<div class=\\\"operation\"\n + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.hasChanged : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0, blockParams, depths),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \"\\\">\\n\t<div class=\\\"operation-header\\\">\\n\t\t<input type=\\\"text\\\" class=\\\"operation-name\\\" placeholder=\\\"\"\n + alias3(alias2((depth0 != null ? depth0.shortRuleDescTXT : depth0), depth0))\n + \"\\\" value=\\\"\"\n + alias3(alias2(((stack1 = (depth0 != null ? depth0.operation : depth0)) != null ? stack1.name : stack1), depth0))\n + \"\\\" />\\n\t\t<input type=\\\"text\\\" class=\\\"operation-operation\\\" value=\\\"\"\n + alias3(alias2(((stack1 = (depth0 != null ? depth0.operation : depth0)) != null ? stack1.operation : stack1), depth0))\n + \"\\\" />\\n\"\n + ((stack1 = helpers[\"if\"].call(alias1,((stack1 = (depth0 != null ? depth0.operation : depth0)) != null ? stack1.id : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0, blockParams, depths),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \"\t</div>\\n\\n\t<div class=\\\"checks\\\">\\n\"\n + ((stack1 = helpers.each.call(alias1,((stack1 = (depth0 != null ? depth0.operation : depth0)) != null ? stack1.checks : stack1),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(5, data, 0, blockParams, depths),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \"\t</div>\\n\t<button class=\\\"button-add\\\">\"\n + alias3(alias2((depth0 != null ? depth0.addRuleTXT : depth0), depth0))\n + \"</button>\\n\"\n + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.hasChanged : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(10, data, 0, blockParams, depths),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.saving : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(13, data, 0, blockParams, depths),\"inverse\":container.program(15, data, 0, blockParams, depths),\"data\":data})) != null ? stack1 : \"\")\n + \"\\n</div>\\n\";\n},\"useData\":true,\"useDepths\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper;\n\n return \"<div class=\\\"operations\\\"></div>\\n<button class=\\\"button-add-operation\\\">\"\n + container.escapeExpression(((helper = (helper = helpers.addRuleGroupTXT || (depth0 != null ? depth0.addRuleGroupTXT : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"addRuleGroupTXT\",\"hash\":{},\"data\":data}) : helper)))\n + \"</button>\\n\";\n},\"useData\":true});","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n// istanbul ignore next\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\nvar _handlebarsBase = require('./handlebars/base');\n\nvar base = _interopRequireWildcard(_handlebarsBase);\n\n// Each of these augment the Handlebars object. No need to setup here.\n// (This is done to easily share code between commonjs and browse envs)\n\nvar _handlebarsSafeString = require('./handlebars/safe-string');\n\nvar _handlebarsSafeString2 = _interopRequireDefault(_handlebarsSafeString);\n\nvar _handlebarsException = require('./handlebars/exception');\n\nvar _handlebarsException2 = _interopRequireDefault(_handlebarsException);\n\nvar _handlebarsUtils = require('./handlebars/utils');\n\nvar Utils = _interopRequireWildcard(_handlebarsUtils);\n\nvar _handlebarsRuntime = require('./handlebars/runtime');\n\nvar runtime = _interopRequireWildcard(_handlebarsRuntime);\n\nvar _handlebarsNoConflict = require('./handlebars/no-conflict');\n\nvar _handlebarsNoConflict2 = _interopRequireDefault(_handlebarsNoConflict);\n\n// For compatibility and usage outside of module systems, make the Handlebars object a namespace\nfunction create() {\n var hb = new base.HandlebarsEnvironment();\n\n Utils.extend(hb, base);\n hb.SafeString = _handlebarsSafeString2['default'];\n hb.Exception = _handlebarsException2['default'];\n hb.Utils = Utils;\n hb.escapeExpression = Utils.escapeExpression;\n\n hb.VM = runtime;\n hb.template = function (spec) {\n return runtime.template(spec, hb);\n };\n\n return hb;\n}\n\nvar inst = create();\ninst.create = create;\n\n_handlebarsNoConflict2['default'](inst);\n\ninst['default'] = inst;\n\nexports['default'] = inst;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9oYW5kbGViYXJzLnJ1bnRpbWUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OEJBQXNCLG1CQUFtQjs7SUFBN0IsSUFBSTs7Ozs7b0NBSU8sMEJBQTBCOzs7O21DQUMzQix3QkFBd0I7Ozs7K0JBQ3ZCLG9CQUFvQjs7SUFBL0IsS0FBSzs7aUNBQ1Esc0JBQXNCOztJQUFuQyxPQUFPOztvQ0FFSSwwQkFBMEI7Ozs7O0FBR2pELFNBQVMsTUFBTSxHQUFHO0FBQ2hCLE1BQUksRUFBRSxHQUFHLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7O0FBRTFDLE9BQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3ZCLElBQUUsQ0FBQyxVQUFVLG9DQUFhLENBQUM7QUFDM0IsSUFBRSxDQUFDLFNBQVMsbUNBQVksQ0FBQztBQUN6QixJQUFFLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUNqQixJQUFFLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixDQUFDOztBQUU3QyxJQUFFLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUNoQixJQUFFLENBQUMsUUFBUSxHQUFHLFVBQVMsSUFBSSxFQUFFO0FBQzNCLFdBQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7R0FDbkMsQ0FBQzs7QUFFRixTQUFPLEVBQUUsQ0FBQztDQUNYOztBQUVELElBQUksSUFBSSxHQUFHLE1BQU0sRUFBRSxDQUFDO0FBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDOztBQUVyQixrQ0FBVyxJQUFJLENBQUMsQ0FBQzs7QUFFakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQzs7cUJBRVIsSUFBSSIsImZpbGUiOiJoYW5kbGViYXJzLnJ1bnRpbWUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBiYXNlIGZyb20gJy4vaGFuZGxlYmFycy9iYXNlJztcblxuLy8gRWFjaCBvZiB0aGVzZSBhdWdtZW50IHRoZSBIYW5kbGViYXJzIG9iamVjdC4gTm8gbmVlZCB0byBzZXR1cCBoZXJlLlxuLy8gKFRoaXMgaXMgZG9uZSB0byBlYXNpbHkgc2hhcmUgY29kZSBiZXR3ZWVuIGNvbW1vbmpzIGFuZCBicm93c2UgZW52cylcbmltcG9ydCBTYWZlU3RyaW5nIGZyb20gJy4vaGFuZGxlYmFycy9zYWZlLXN0cmluZyc7XG5pbXBvcnQgRXhjZXB0aW9uIGZyb20gJy4vaGFuZGxlYmFycy9leGNlcHRpb24nO1xuaW1wb3J0ICogYXMgVXRpbHMgZnJvbSAnLi9oYW5kbGViYXJzL3V0aWxzJztcbmltcG9ydCAqIGFzIHJ1bnRpbWUgZnJvbSAnLi9oYW5kbGViYXJzL3J1bnRpbWUnO1xuXG5pbXBvcnQgbm9Db25mbGljdCBmcm9tICcuL2hhbmRsZWJhcnMvbm8tY29uZmxpY3QnO1xuXG4vLyBGb3IgY29tcGF0aWJpbGl0eSBhbmQgdXNhZ2Ugb3V0c2lkZSBvZiBtb2R1bGUgc3lzdGVtcywgbWFrZSB0aGUgSGFuZGxlYmFycyBvYmplY3QgYSBuYW1lc3BhY2VcbmZ1bmN0aW9uIGNyZWF0ZSgpIHtcbiAgbGV0IGhiID0gbmV3IGJhc2UuSGFuZGxlYmFyc0Vudmlyb25tZW50KCk7XG5cbiAgVXRpbHMuZXh0ZW5kKGhiLCBiYXNlKTtcbiAgaGIuU2FmZVN0cmluZyA9IFNhZmVTdHJpbmc7XG4gIGhiLkV4Y2VwdGlvbiA9IEV4Y2VwdGlvbjtcbiAgaGIuVXRpbHMgPSBVdGlscztcbiAgaGIuZXNjYXBlRXhwcmVzc2lvbiA9IFV0aWxzLmVzY2FwZUV4cHJlc3Npb247XG5cbiAgaGIuVk0gPSBydW50aW1lO1xuICBoYi50ZW1wbGF0ZSA9IGZ1bmN0aW9uKHNwZWMpIHtcbiAgICByZXR1cm4gcnVudGltZS50ZW1wbGF0ZShzcGVjLCBoYik7XG4gIH07XG5cbiAgcmV0dXJuIGhiO1xufVxuXG5sZXQgaW5zdCA9IGNyZWF0ZSgpO1xuaW5zdC5jcmVhdGUgPSBjcmVhdGU7XG5cbm5vQ29uZmxpY3QoaW5zdCk7XG5cbmluc3RbJ2RlZmF1bHQnXSA9IGluc3Q7XG5cbmV4cG9ydCBkZWZhdWx0IGluc3Q7XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\nexports.registerDefaultHelpers = registerDefaultHelpers;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _helpersBlockHelperMissing = require('./helpers/block-helper-missing');\n\nvar _helpersBlockHelperMissing2 = _interopRequireDefault(_helpersBlockHelperMissing);\n\nvar _helpersEach = require('./helpers/each');\n\nvar _helpersEach2 = _interopRequireDefault(_helpersEach);\n\nvar _helpersHelperMissing = require('./helpers/helper-missing');\n\nvar _helpersHelperMissing2 = _interopRequireDefault(_helpersHelperMissing);\n\nvar _helpersIf = require('./helpers/if');\n\nvar _helpersIf2 = _interopRequireDefault(_helpersIf);\n\nvar _helpersLog = require('./helpers/log');\n\nvar _helpersLog2 = _interopRequireDefault(_helpersLog);\n\nvar _helpersLookup = require('./helpers/lookup');\n\nvar _helpersLookup2 = _interopRequireDefault(_helpersLookup);\n\nvar _helpersWith = require('./helpers/with');\n\nvar _helpersWith2 = _interopRequireDefault(_helpersWith);\n\nfunction registerDefaultHelpers(instance) {\n _helpersBlockHelperMissing2['default'](instance);\n _helpersEach2['default'](instance);\n _helpersHelperMissing2['default'](instance);\n _helpersIf2['default'](instance);\n _helpersLog2['default'](instance);\n _helpersLookup2['default'](instance);\n _helpersWith2['default'](instance);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7eUNBQXVDLGdDQUFnQzs7OzsyQkFDOUMsZ0JBQWdCOzs7O29DQUNQLDBCQUEwQjs7Ozt5QkFDckMsY0FBYzs7OzswQkFDYixlQUFlOzs7OzZCQUNaLGtCQUFrQjs7OzsyQkFDcEIsZ0JBQWdCOzs7O0FBRWxDLFNBQVMsc0JBQXNCLENBQUMsUUFBUSxFQUFFO0FBQy9DLHlDQUEyQixRQUFRLENBQUMsQ0FBQztBQUNyQywyQkFBYSxRQUFRLENBQUMsQ0FBQztBQUN2QixvQ0FBc0IsUUFBUSxDQUFDLENBQUM7QUFDaEMseUJBQVcsUUFBUSxDQUFDLENBQUM7QUFDckIsMEJBQVksUUFBUSxDQUFDLENBQUM7QUFDdEIsNkJBQWUsUUFBUSxDQUFDLENBQUM7QUFDekIsMkJBQWEsUUFBUSxDQUFDLENBQUM7Q0FDeEIiLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCByZWdpc3RlckJsb2NrSGVscGVyTWlzc2luZyBmcm9tICcuL2hlbHBlcnMvYmxvY2staGVscGVyLW1pc3NpbmcnO1xuaW1wb3J0IHJlZ2lzdGVyRWFjaCBmcm9tICcuL2hlbHBlcnMvZWFjaCc7XG5pbXBvcnQgcmVnaXN0ZXJIZWxwZXJNaXNzaW5nIGZyb20gJy4vaGVscGVycy9oZWxwZXItbWlzc2luZyc7XG5pbXBvcnQgcmVnaXN0ZXJJZiBmcm9tICcuL2hlbHBlcnMvaWYnO1xuaW1wb3J0IHJlZ2lzdGVyTG9nIGZyb20gJy4vaGVscGVycy9sb2cnO1xuaW1wb3J0IHJlZ2lzdGVyTG9va3VwIGZyb20gJy4vaGVscGVycy9sb29rdXAnO1xuaW1wb3J0IHJlZ2lzdGVyV2l0aCBmcm9tICcuL2hlbHBlcnMvd2l0aCc7XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckRlZmF1bHRIZWxwZXJzKGluc3RhbmNlKSB7XG4gIHJlZ2lzdGVyQmxvY2tIZWxwZXJNaXNzaW5nKGluc3RhbmNlKTtcbiAgcmVnaXN0ZXJFYWNoKGluc3RhbmNlKTtcbiAgcmVnaXN0ZXJIZWxwZXJNaXNzaW5nKGluc3RhbmNlKTtcbiAgcmVnaXN0ZXJJZihpbnN0YW5jZSk7XG4gIHJlZ2lzdGVyTG9nKGluc3RhbmNlKTtcbiAgcmVnaXN0ZXJMb29rdXAoaW5zdGFuY2UpO1xuICByZWdpc3RlcldpdGgoaW5zdGFuY2UpO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('../utils');\n\nexports['default'] = function (instance) {\n instance.registerHelper('blockHelperMissing', function (context, options) {\n var inverse = options.inverse,\n fn = options.fn;\n\n if (context === true) {\n return fn(this);\n } else if (context === false || context == null) {\n return inverse(this);\n } else if (_utils.isArray(context)) {\n if (context.length > 0) {\n if (options.ids) {\n options.ids = [options.name];\n }\n\n return instance.helpers.each(context, options);\n } else {\n return inverse(this);\n }\n } else {\n if (options.data && options.ids) {\n var data = _utils.createFrame(options.data);\n data.contextPath = _utils.appendContextPath(options.data.contextPath, options.name);\n options = { data: data };\n }\n\n return fn(context, options);\n }\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvYmxvY2staGVscGVyLW1pc3NpbmcuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztxQkFBc0QsVUFBVTs7cUJBRWpELFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsb0JBQW9CLEVBQUUsVUFBUyxPQUFPLEVBQUUsT0FBTyxFQUFFO0FBQ3ZFLFFBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPO1FBQ3pCLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDOztBQUVwQixRQUFJLE9BQU8sS0FBSyxJQUFJLEVBQUU7QUFDcEIsYUFBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDakIsTUFBTSxJQUFJLE9BQU8sS0FBSyxLQUFLLElBQUksT0FBTyxJQUFJLElBQUksRUFBRTtBQUMvQyxhQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUN0QixNQUFNLElBQUksZUFBUSxPQUFPLENBQUMsRUFBRTtBQUMzQixVQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0FBQ3RCLFlBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUNmLGlCQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzlCOztBQUVELGVBQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO09BQ2hELE1BQU07QUFDTCxlQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztPQUN0QjtLQUNGLE1BQU07QUFDTCxVQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUMvQixZQUFJLElBQUksR0FBRyxtQkFBWSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDckMsWUFBSSxDQUFDLFdBQVcsR0FBRyx5QkFBa0IsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzdFLGVBQU8sR0FBRyxFQUFDLElBQUksRUFBRSxJQUFJLEVBQUMsQ0FBQztPQUN4Qjs7QUFFRCxhQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDN0I7R0FDRixDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJibG9jay1oZWxwZXItbWlzc2luZy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7YXBwZW5kQ29udGV4dFBhdGgsIGNyZWF0ZUZyYW1lLCBpc0FycmF5fSBmcm9tICcuLi91dGlscyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGluc3RhbmNlKSB7XG4gIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCdibG9ja0hlbHBlck1pc3NpbmcnLCBmdW5jdGlvbihjb250ZXh0LCBvcHRpb25zKSB7XG4gICAgbGV0IGludmVyc2UgPSBvcHRpb25zLmludmVyc2UsXG4gICAgICAgIGZuID0gb3B0aW9ucy5mbjtcblxuICAgIGlmIChjb250ZXh0ID09PSB0cnVlKSB7XG4gICAgICByZXR1cm4gZm4odGhpcyk7XG4gICAgfSBlbHNlIGlmIChjb250ZXh0ID09PSBmYWxzZSB8fCBjb250ZXh0ID09IG51bGwpIHtcbiAgICAgIHJldHVybiBpbnZlcnNlKHRoaXMpO1xuICAgIH0gZWxzZSBpZiAoaXNBcnJheShjb250ZXh0KSkge1xuICAgICAgaWYgKGNvbnRleHQubGVuZ3RoID4gMCkge1xuICAgICAgICBpZiAob3B0aW9ucy5pZHMpIHtcbiAgICAgICAgICBvcHRpb25zLmlkcyA9IFtvcHRpb25zLm5hbWVdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGluc3RhbmNlLmhlbHBlcnMuZWFjaChjb250ZXh0LCBvcHRpb25zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBpbnZlcnNlKHRoaXMpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAob3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuaWRzKSB7XG4gICAgICAgIGxldCBkYXRhID0gY3JlYXRlRnJhbWUob3B0aW9ucy5kYXRhKTtcbiAgICAgICAgZGF0YS5jb250ZXh0UGF0aCA9IGFwcGVuZENvbnRleHRQYXRoKG9wdGlvbnMuZGF0YS5jb250ZXh0UGF0aCwgb3B0aW9ucy5uYW1lKTtcbiAgICAgICAgb3B0aW9ucyA9IHtkYXRhOiBkYXRhfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZuKGNvbnRleHQsIG9wdGlvbnMpO1xuICAgIH1cbiAgfSk7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('../utils');\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n instance.registerHelper('each', function (context, options) {\n if (!options) {\n throw new _exception2['default']('Must pass iterator to #each');\n }\n\n var fn = options.fn,\n inverse = options.inverse,\n i = 0,\n ret = '',\n data = undefined,\n contextPath = undefined;\n\n if (options.data && options.ids) {\n contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]) + '.';\n }\n\n if (_utils.isFunction(context)) {\n context = context.call(this);\n }\n\n if (options.data) {\n data = _utils.createFrame(options.data);\n }\n\n function execIteration(field, index, last) {\n if (data) {\n data.key = field;\n data.index = index;\n data.first = index === 0;\n data.last = !!last;\n\n if (contextPath) {\n data.contextPath = contextPath + field;\n }\n }\n\n ret = ret + fn(context[field], {\n data: data,\n blockParams: _utils.blockParams([context[field], field], [contextPath + field, null])\n });\n }\n\n if (context && typeof context === 'object') {\n if (_utils.isArray(context)) {\n for (var j = context.length; i < j; i++) {\n if (i in context) {\n execIteration(i, i, i === context.length - 1);\n }\n }\n } else {\n var priorKey = undefined;\n\n for (var key in context) {\n if (context.hasOwnProperty(key)) {\n // We're running the iterations one step out of sync so we can detect\n // the last iteration without have to scan the object twice and create\n // an itermediate keys array.\n if (priorKey !== undefined) {\n execIteration(priorKey, i - 1);\n }\n priorKey = key;\n i++;\n }\n }\n if (priorKey !== undefined) {\n execIteration(priorKey, i - 1, true);\n }\n }\n }\n\n if (i === 0) {\n ret = inverse(this);\n }\n\n return ret;\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvZWFjaC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O3FCQUErRSxVQUFVOzt5QkFDbkUsY0FBYzs7OztxQkFFckIsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsVUFBUyxPQUFPLEVBQUUsT0FBTyxFQUFFO0FBQ3pELFFBQUksQ0FBQyxPQUFPLEVBQUU7QUFDWixZQUFNLDJCQUFjLDZCQUE2QixDQUFDLENBQUM7S0FDcEQ7O0FBRUQsUUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUU7UUFDZixPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU87UUFDekIsQ0FBQyxHQUFHLENBQUM7UUFDTCxHQUFHLEdBQUcsRUFBRTtRQUNSLElBQUksWUFBQTtRQUNKLFdBQVcsWUFBQSxDQUFDOztBQUVoQixRQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUMvQixpQkFBVyxHQUFHLHlCQUFrQixPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO0tBQ2pGOztBQUVELFFBQUksa0JBQVcsT0FBTyxDQUFDLEVBQUU7QUFBRSxhQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUFFOztBQUUxRCxRQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUU7QUFDaEIsVUFBSSxHQUFHLG1CQUFZLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUNsQzs7QUFFRCxhQUFTLGFBQWEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtBQUN6QyxVQUFJLElBQUksRUFBRTtBQUNSLFlBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDO0FBQ2pCLFlBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQ25CLFlBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxLQUFLLENBQUMsQ0FBQztBQUN6QixZQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7O0FBRW5CLFlBQUksV0FBVyxFQUFFO0FBQ2YsY0FBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLEdBQUcsS0FBSyxDQUFDO1NBQ3hDO09BQ0Y7O0FBRUQsU0FBRyxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQzdCLFlBQUksRUFBRSxJQUFJO0FBQ1YsbUJBQVcsRUFBRSxtQkFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLFdBQVcsR0FBRyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7T0FDL0UsQ0FBQyxDQUFDO0tBQ0o7O0FBRUQsUUFBSSxPQUFPLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxFQUFFO0FBQzFDLFVBQUksZUFBUSxPQUFPLENBQUMsRUFBRTtBQUNwQixhQUFLLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN2QyxjQUFJLENBQUMsSUFBSSxPQUFPLEVBQUU7QUFDaEIseUJBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1dBQy9DO1NBQ0Y7T0FDRixNQUFNO0FBQ0wsWUFBSSxRQUFRLFlBQUEsQ0FBQzs7QUFFYixhQUFLLElBQUksR0FBRyxJQUFJLE9BQU8sRUFBRTtBQUN2QixjQUFJLE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUU7Ozs7QUFJL0IsZ0JBQUksUUFBUSxLQUFLLFNBQVMsRUFBRTtBQUMxQiwyQkFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDaEM7QUFDRCxvQkFBUSxHQUFHLEdBQUcsQ0FBQztBQUNmLGFBQUMsRUFBRSxDQUFDO1dBQ0w7U0FDRjtBQUNELFlBQUksUUFBUSxLQUFLLFNBQVMsRUFBRTtBQUMxQix1QkFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ3RDO09BQ0Y7S0FDRjs7QUFFRCxRQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDWCxTQUFHLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3JCOztBQUVELFdBQU8sR0FBRyxDQUFDO0dBQ1osQ0FBQyxDQUFDO0NBQ0oiLCJmaWxlIjoiZWFjaC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7YXBwZW5kQ29udGV4dFBhdGgsIGJsb2NrUGFyYW1zLCBjcmVhdGVGcmFtZSwgaXNBcnJheSwgaXNGdW5jdGlvbn0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IEV4Y2VwdGlvbiBmcm9tICcuLi9leGNlcHRpb24nO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihpbnN0YW5jZSkge1xuICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcignZWFjaCcsIGZ1bmN0aW9uKGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgICBpZiAoIW9wdGlvbnMpIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ011c3QgcGFzcyBpdGVyYXRvciB0byAjZWFjaCcpO1xuICAgIH1cblxuICAgIGxldCBmbiA9IG9wdGlvbnMuZm4sXG4gICAgICAgIGludmVyc2UgPSBvcHRpb25zLmludmVyc2UsXG4gICAgICAgIGkgPSAwLFxuICAgICAgICByZXQgPSAnJyxcbiAgICAgICAgZGF0YSxcbiAgICAgICAgY29udGV4dFBhdGg7XG5cbiAgICBpZiAob3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuaWRzKSB7XG4gICAgICBjb250ZXh0UGF0aCA9IGFwcGVuZENvbnRleHRQYXRoKG9wdGlvbnMuZGF0YS5jb250ZXh0UGF0aCwgb3B0aW9ucy5pZHNbMF0pICsgJy4nO1xuICAgIH1cblxuICAgIGlmIChpc0Z1bmN0aW9uKGNvbnRleHQpKSB7IGNvbnRleHQgPSBjb250ZXh0LmNhbGwodGhpcyk7IH1cblxuICAgIGlmIChvcHRpb25zLmRhdGEpIHtcbiAgICAgIGRhdGEgPSBjcmVhdGVGcmFtZShvcHRpb25zLmRhdGEpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGV4ZWNJdGVyYXRpb24oZmllbGQsIGluZGV4LCBsYXN0KSB7XG4gICAgICBpZiAoZGF0YSkge1xuICAgICAgICBkYXRhLmtleSA9IGZpZWxkO1xuICAgICAgICBkYXRhLmluZGV4ID0gaW5kZXg7XG4gICAgICAgIGRhdGEuZmlyc3QgPSBpbmRleCA9PT0gMDtcbiAgICAgICAgZGF0YS5sYXN0ID0gISFsYXN0O1xuXG4gICAgICAgIGlmIChjb250ZXh0UGF0aCkge1xuICAgICAgICAgIGRhdGEuY29udGV4dFBhdGggPSBjb250ZXh0UGF0aCArIGZpZWxkO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldCA9IHJldCArIGZuKGNvbnRleHRbZmllbGRdLCB7XG4gICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgIGJsb2NrUGFyYW1zOiBibG9ja1BhcmFtcyhbY29udGV4dFtmaWVsZF0sIGZpZWxkXSwgW2NvbnRleHRQYXRoICsgZmllbGQsIG51bGxdKVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGNvbnRleHQgJiYgdHlwZW9mIGNvbnRleHQgPT09ICdvYmplY3QnKSB7XG4gICAgICBpZiAoaXNBcnJheShjb250ZXh0KSkge1xuICAgICAgICBmb3IgKGxldCBqID0gY29udGV4dC5sZW5ndGg7IGkgPCBqOyBpKyspIHtcbiAgICAgICAgICBpZiAoaSBpbiBjb250ZXh0KSB7XG4gICAgICAgICAgICBleGVjSXRlcmF0aW9uKGksIGksIGkgPT09IGNvbnRleHQubGVuZ3RoIC0gMSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgcHJpb3JLZXk7XG5cbiAgICAgICAgZm9yIChsZXQga2V5IGluIGNvbnRleHQpIHtcbiAgICAgICAgICBpZiAoY29udGV4dC5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICAvLyBXZSdyZSBydW5uaW5nIHRoZSBpdGVyYXRpb25zIG9uZSBzdGVwIG91dCBvZiBzeW5jIHNvIHdlIGNhbiBkZXRlY3RcbiAgICAgICAgICAgIC8vIHRoZSBsYXN0IGl0ZXJhdGlvbiB3aXRob3V0IGhhdmUgdG8gc2NhbiB0aGUgb2JqZWN0IHR3aWNlIGFuZCBjcmVhdGVcbiAgICAgICAgICAgIC8vIGFuIGl0ZXJtZWRpYXRlIGtleXMgYXJyYXkuXG4gICAgICAgICAgICBpZiAocHJpb3JLZXkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBleGVjSXRlcmF0aW9uKHByaW9yS2V5LCBpIC0gMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwcmlvcktleSA9IGtleTtcbiAgICAgICAgICAgIGkrKztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByaW9yS2V5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBleGVjSXRlcmF0aW9uKHByaW9yS2V5LCBpIC0gMSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgcmV0ID0gaW52ZXJzZSh0aGlzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmV0O1xuICB9KTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n instance.registerHelper('helperMissing', function () /* [args, ]options */{\n if (arguments.length === 1) {\n // A missing field in a {{foo}} construct.\n return undefined;\n } else {\n // Someone is actually trying to call something, blow up.\n throw new _exception2['default']('Missing helper: \"' + arguments[arguments.length - 1].name + '\"');\n }\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvaGVscGVyLW1pc3NpbmcuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozt5QkFBc0IsY0FBYzs7OztxQkFFckIsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxlQUFlLEVBQUUsaUNBQWdDO0FBQ3ZFLFFBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7O0FBRTFCLGFBQU8sU0FBUyxDQUFDO0tBQ2xCLE1BQU07O0FBRUwsWUFBTSwyQkFBYyxtQkFBbUIsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7S0FDdkY7R0FDRixDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJoZWxwZXItbWlzc2luZy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFeGNlcHRpb24gZnJvbSAnLi4vZXhjZXB0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2hlbHBlck1pc3NpbmcnLCBmdW5jdGlvbigvKiBbYXJncywgXW9wdGlvbnMgKi8pIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgLy8gQSBtaXNzaW5nIGZpZWxkIGluIGEge3tmb299fSBjb25zdHJ1Y3QuXG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTb21lb25lIGlzIGFjdHVhbGx5IHRyeWluZyB0byBjYWxsIHNvbWV0aGluZywgYmxvdyB1cC5cbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ01pc3NpbmcgaGVscGVyOiBcIicgKyBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aCAtIDFdLm5hbWUgKyAnXCInKTtcbiAgICB9XG4gIH0pO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('../utils');\n\nexports['default'] = function (instance) {\n instance.registerHelper('if', function (conditional, options) {\n if (_utils.isFunction(conditional)) {\n conditional = conditional.call(this);\n }\n\n // Default behavior is to render the positive path if the value is truthy and not empty.\n // The `includeZero` option may be set to treat the condtional as purely not empty based on the\n // behavior of isEmpty. Effectively this determines if 0 is handled by the positive path or negative.\n if (!options.hash.includeZero && !conditional || _utils.isEmpty(conditional)) {\n return options.inverse(this);\n } else {\n return options.fn(this);\n }\n });\n\n instance.registerHelper('unless', function (conditional, options) {\n return instance.helpers['if'].call(this, conditional, { fn: options.inverse, inverse: options.fn, hash: options.hash });\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvaWYuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztxQkFBa0MsVUFBVTs7cUJBRTdCLFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFVBQVMsV0FBVyxFQUFFLE9BQU8sRUFBRTtBQUMzRCxRQUFJLGtCQUFXLFdBQVcsQ0FBQyxFQUFFO0FBQUUsaUJBQVcsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQUU7Ozs7O0FBS3RFLFFBQUksQUFBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsV0FBVyxJQUFLLGVBQVEsV0FBVyxDQUFDLEVBQUU7QUFDdkUsYUFBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzlCLE1BQU07QUFDTCxhQUFPLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDekI7R0FDRixDQUFDLENBQUM7O0FBRUgsVUFBUSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsVUFBUyxXQUFXLEVBQUUsT0FBTyxFQUFFO0FBQy9ELFdBQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQztHQUN2SCxDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJpZi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aXNFbXB0eSwgaXNGdW5jdGlvbn0gZnJvbSAnLi4vdXRpbHMnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihpbnN0YW5jZSkge1xuICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcignaWYnLCBmdW5jdGlvbihjb25kaXRpb25hbCwgb3B0aW9ucykge1xuICAgIGlmIChpc0Z1bmN0aW9uKGNvbmRpdGlvbmFsKSkgeyBjb25kaXRpb25hbCA9IGNvbmRpdGlvbmFsLmNhbGwodGhpcyk7IH1cblxuICAgIC8vIERlZmF1bHQgYmVoYXZpb3IgaXMgdG8gcmVuZGVyIHRoZSBwb3NpdGl2ZSBwYXRoIGlmIHRoZSB2YWx1ZSBpcyB0cnV0aHkgYW5kIG5vdCBlbXB0eS5cbiAgICAvLyBUaGUgYGluY2x1ZGVaZXJvYCBvcHRpb24gbWF5IGJlIHNldCB0byB0cmVhdCB0aGUgY29uZHRpb25hbCBhcyBwdXJlbHkgbm90IGVtcHR5IGJhc2VkIG9uIHRoZVxuICAgIC8vIGJlaGF2aW9yIG9mIGlzRW1wdHkuIEVmZmVjdGl2ZWx5IHRoaXMgZGV0ZXJtaW5lcyBpZiAwIGlzIGhhbmRsZWQgYnkgdGhlIHBvc2l0aXZlIHBhdGggb3IgbmVnYXRpdmUuXG4gICAgaWYgKCghb3B0aW9ucy5oYXNoLmluY2x1ZGVaZXJvICYmICFjb25kaXRpb25hbCkgfHwgaXNFbXB0eShjb25kaXRpb25hbCkpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLmludmVyc2UodGhpcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBvcHRpb25zLmZuKHRoaXMpO1xuICAgIH1cbiAgfSk7XG5cbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ3VubGVzcycsIGZ1bmN0aW9uKGNvbmRpdGlvbmFsLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIGluc3RhbmNlLmhlbHBlcnNbJ2lmJ10uY2FsbCh0aGlzLCBjb25kaXRpb25hbCwge2ZuOiBvcHRpb25zLmludmVyc2UsIGludmVyc2U6IG9wdGlvbnMuZm4sIGhhc2g6IG9wdGlvbnMuaGFzaH0pO1xuICB9KTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n\nexports['default'] = function (instance) {\n instance.registerHelper('log', function () /* message, options */{\n var args = [undefined],\n options = arguments[arguments.length - 1];\n for (var i = 0; i < arguments.length - 1; i++) {\n args.push(arguments[i]);\n }\n\n var level = 1;\n if (options.hash.level != null) {\n level = options.hash.level;\n } else if (options.data && options.data.level != null) {\n level = options.data.level;\n }\n args[0] = level;\n\n instance.log.apply(instance, args);\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvbG9nLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQWUsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsa0NBQWlDO0FBQzlELFFBQUksSUFBSSxHQUFHLENBQUMsU0FBUyxDQUFDO1FBQ2xCLE9BQU8sR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM5QyxTQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDN0MsVUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN6Qjs7QUFFRCxRQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDZCxRQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRTtBQUM5QixXQUFLLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7S0FDNUIsTUFBTSxJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxFQUFFO0FBQ3JELFdBQUssR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztLQUM1QjtBQUNELFFBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7O0FBRWhCLFlBQVEsQ0FBQyxHQUFHLE1BQUEsQ0FBWixRQUFRLEVBQVMsSUFBSSxDQUFDLENBQUM7R0FDeEIsQ0FBQyxDQUFDO0NBQ0oiLCJmaWxlIjoibG9nLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2xvZycsIGZ1bmN0aW9uKC8qIG1lc3NhZ2UsIG9wdGlvbnMgKi8pIHtcbiAgICBsZXQgYXJncyA9IFt1bmRlZmluZWRdLFxuICAgICAgICBvcHRpb25zID0gYXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGggLSAxXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgIGFyZ3MucHVzaChhcmd1bWVudHNbaV0pO1xuICAgIH1cblxuICAgIGxldCBsZXZlbCA9IDE7XG4gICAgaWYgKG9wdGlvbnMuaGFzaC5sZXZlbCAhPSBudWxsKSB7XG4gICAgICBsZXZlbCA9IG9wdGlvbnMuaGFzaC5sZXZlbDtcbiAgICB9IGVsc2UgaWYgKG9wdGlvbnMuZGF0YSAmJiBvcHRpb25zLmRhdGEubGV2ZWwgIT0gbnVsbCkge1xuICAgICAgbGV2ZWwgPSBvcHRpb25zLmRhdGEubGV2ZWw7XG4gICAgfVxuICAgIGFyZ3NbMF0gPSBsZXZlbDtcblxuICAgIGluc3RhbmNlLmxvZyguLi4gYXJncyk7XG4gIH0pO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nexports['default'] = function (instance) {\n instance.registerHelper('lookup', function (obj, field) {\n if (!obj) {\n return obj;\n }\n if (field === 'constructor' && !obj.propertyIsEnumerable(field)) {\n return undefined;\n }\n return obj[field];\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvbG9va3VwLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQWUsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsVUFBUyxHQUFHLEVBQUUsS0FBSyxFQUFFO0FBQ3JELFFBQUksQ0FBQyxHQUFHLEVBQUU7QUFDUixhQUFPLEdBQUcsQ0FBQztLQUNaO0FBQ0QsUUFBSSxLQUFLLEtBQUssYUFBYSxJQUFJLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQy9ELGFBQU8sU0FBUyxDQUFDO0tBQ2xCO0FBQ0QsV0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7R0FDbkIsQ0FBQyxDQUFDO0NBQ0oiLCJmaWxlIjoibG9va3VwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2xvb2t1cCcsIGZ1bmN0aW9uKG9iaiwgZmllbGQpIHtcbiAgICBpZiAoIW9iaikge1xuICAgICAgcmV0dXJuIG9iajtcbiAgICB9XG4gICAgaWYgKGZpZWxkID09PSAnY29uc3RydWN0b3InICYmICFvYmoucHJvcGVydHlJc0VudW1lcmFibGUoZmllbGQpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gb2JqW2ZpZWxkXTtcbiAgfSk7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('../utils');\n\nexports['default'] = function (instance) {\n instance.registerHelper('with', function (context, options) {\n if (_utils.isFunction(context)) {\n context = context.call(this);\n }\n\n var fn = options.fn;\n\n if (!_utils.isEmpty(context)) {\n var data = options.data;\n if (options.data && options.ids) {\n data = _utils.createFrame(options.data);\n data.contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]);\n }\n\n return fn(context, {\n data: data,\n blockParams: _utils.blockParams([context], [data && data.contextPath])\n });\n } else {\n return options.inverse(this);\n }\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvd2l0aC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O3FCQUErRSxVQUFVOztxQkFFMUUsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsVUFBUyxPQUFPLEVBQUUsT0FBTyxFQUFFO0FBQ3pELFFBQUksa0JBQVcsT0FBTyxDQUFDLEVBQUU7QUFBRSxhQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUFFOztBQUUxRCxRQUFJLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDOztBQUVwQixRQUFJLENBQUMsZUFBUSxPQUFPLENBQUMsRUFBRTtBQUNyQixVQUFJLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO0FBQ3hCLFVBQUksT0FBTyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFO0FBQy9CLFlBQUksR0FBRyxtQkFBWSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDakMsWUFBSSxDQUFDLFdBQVcsR0FBRyx5QkFBa0IsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO09BQ2hGOztBQUVELGFBQU8sRUFBRSxDQUFDLE9BQU8sRUFBRTtBQUNqQixZQUFJLEVBQUUsSUFBSTtBQUNWLG1CQUFXLEVBQUUsbUJBQVksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7T0FDaEUsQ0FBQyxDQUFDO0tBQ0osTUFBTTtBQUNMLGFBQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUM5QjtHQUNGLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6IndpdGguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2FwcGVuZENvbnRleHRQYXRoLCBibG9ja1BhcmFtcywgY3JlYXRlRnJhbWUsIGlzRW1wdHksIGlzRnVuY3Rpb259IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ3dpdGgnLCBmdW5jdGlvbihjb250ZXh0LCBvcHRpb25zKSB7XG4gICAgaWYgKGlzRnVuY3Rpb24oY29udGV4dCkpIHsgY29udGV4dCA9IGNvbnRleHQuY2FsbCh0aGlzKTsgfVxuXG4gICAgbGV0IGZuID0gb3B0aW9ucy5mbjtcblxuICAgIGlmICghaXNFbXB0eShjb250ZXh0KSkge1xuICAgICAgbGV0IGRhdGEgPSBvcHRpb25zLmRhdGE7XG4gICAgICBpZiAob3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuaWRzKSB7XG4gICAgICAgIGRhdGEgPSBjcmVhdGVGcmFtZShvcHRpb25zLmRhdGEpO1xuICAgICAgICBkYXRhLmNvbnRleHRQYXRoID0gYXBwZW5kQ29udGV4dFBhdGgob3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoLCBvcHRpb25zLmlkc1swXSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmbihjb250ZXh0LCB7XG4gICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgIGJsb2NrUGFyYW1zOiBibG9ja1BhcmFtcyhbY29udGV4dF0sIFtkYXRhICYmIGRhdGEuY29udGV4dFBhdGhdKVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBvcHRpb25zLmludmVyc2UodGhpcyk7XG4gICAgfVxuICB9KTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\nexports.registerDefaultDecorators = registerDefaultDecorators;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _decoratorsInline = require('./decorators/inline');\n\nvar _decoratorsInline2 = _interopRequireDefault(_decoratorsInline);\n\nfunction registerDefaultDecorators(instance) {\n _decoratorsInline2['default'](instance);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2RlY29yYXRvcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Z0NBQTJCLHFCQUFxQjs7OztBQUV6QyxTQUFTLHlCQUF5QixDQUFDLFFBQVEsRUFBRTtBQUNsRCxnQ0FBZSxRQUFRLENBQUMsQ0FBQztDQUMxQiIsImZpbGUiOiJkZWNvcmF0b3JzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHJlZ2lzdGVySW5saW5lIGZyb20gJy4vZGVjb3JhdG9ycy9pbmxpbmUnO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJEZWZhdWx0RGVjb3JhdG9ycyhpbnN0YW5jZSkge1xuICByZWdpc3RlcklubGluZShpbnN0YW5jZSk7XG59XG5cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('../utils');\n\nexports['default'] = function (instance) {\n instance.registerDecorator('inline', function (fn, props, container, options) {\n var ret = fn;\n if (!props.partials) {\n props.partials = {};\n ret = function (context, options) {\n // Create a new partials stack frame prior to exec.\n var original = container.partials;\n container.partials = _utils.extend({}, original, props.partials);\n var ret = fn(context, options);\n container.partials = original;\n return ret;\n };\n }\n\n props.partials[options.args[0]] = options.fn;\n\n return ret;\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2RlY29yYXRvcnMvaW5saW5lLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQXFCLFVBQVU7O3FCQUVoQixVQUFTLFFBQVEsRUFBRTtBQUNoQyxVQUFRLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLFVBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFO0FBQzNFLFFBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztBQUNiLFFBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFO0FBQ25CLFdBQUssQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0FBQ3BCLFNBQUcsR0FBRyxVQUFTLE9BQU8sRUFBRSxPQUFPLEVBQUU7O0FBRS9CLFlBQUksUUFBUSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7QUFDbEMsaUJBQVMsQ0FBQyxRQUFRLEdBQUcsY0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMxRCxZQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQy9CLGlCQUFTLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztBQUM5QixlQUFPLEdBQUcsQ0FBQztPQUNaLENBQUM7S0FDSDs7QUFFRCxTQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDOztBQUU3QyxXQUFPLEdBQUcsQ0FBQztHQUNaLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6ImlubGluZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZXh0ZW5kfSBmcm9tICcuLi91dGlscyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGluc3RhbmNlKSB7XG4gIGluc3RhbmNlLnJlZ2lzdGVyRGVjb3JhdG9yKCdpbmxpbmUnLCBmdW5jdGlvbihmbiwgcHJvcHMsIGNvbnRhaW5lciwgb3B0aW9ucykge1xuICAgIGxldCByZXQgPSBmbjtcbiAgICBpZiAoIXByb3BzLnBhcnRpYWxzKSB7XG4gICAgICBwcm9wcy5wYXJ0aWFscyA9IHt9O1xuICAgICAgcmV0ID0gZnVuY3Rpb24oY29udGV4dCwgb3B0aW9ucykge1xuICAgICAgICAvLyBDcmVhdGUgYSBuZXcgcGFydGlhbHMgc3RhY2sgZnJhbWUgcHJpb3IgdG8gZXhlYy5cbiAgICAgICAgbGV0IG9yaWdpbmFsID0gY29udGFpbmVyLnBhcnRpYWxzO1xuICAgICAgICBjb250YWluZXIucGFydGlhbHMgPSBleHRlbmQoe30sIG9yaWdpbmFsLCBwcm9wcy5wYXJ0aWFscyk7XG4gICAgICAgIGxldCByZXQgPSBmbihjb250ZXh0LCBvcHRpb25zKTtcbiAgICAgICAgY29udGFpbmVyLnBhcnRpYWxzID0gb3JpZ2luYWw7XG4gICAgICAgIHJldHVybiByZXQ7XG4gICAgICB9O1xuICAgIH1cblxuICAgIHByb3BzLnBhcnRpYWxzW29wdGlvbnMuYXJnc1swXV0gPSBvcHRpb25zLmZuO1xuXG4gICAgcmV0dXJuIHJldDtcbiAgfSk7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('./utils');\n\nvar logger = {\n methodMap: ['debug', 'info', 'warn', 'error'],\n level: 'info',\n\n // Maps a given level value to the `methodMap` indexes above.\n lookupLevel: function lookupLevel(level) {\n if (typeof level === 'string') {\n var levelMap = _utils.indexOf(logger.methodMap, level.toLowerCase());\n if (levelMap >= 0) {\n level = levelMap;\n } else {\n level = parseInt(level, 10);\n }\n }\n\n return level;\n },\n\n // Can be overridden in the host environment\n log: function log(level) {\n level = logger.lookupLevel(level);\n\n if (typeof console !== 'undefined' && logger.lookupLevel(logger.level) <= level) {\n var method = logger.methodMap[level];\n if (!console[method]) {\n // eslint-disable-line no-console\n method = 'log';\n }\n\n for (var _len = arguments.length, message = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n message[_key - 1] = arguments[_key];\n }\n\n console[method].apply(console, message); // eslint-disable-line no-console\n }\n }\n};\n\nexports['default'] = logger;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2xvZ2dlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O3FCQUFzQixTQUFTOztBQUUvQixJQUFJLE1BQU0sR0FBRztBQUNYLFdBQVMsRUFBRSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQztBQUM3QyxPQUFLLEVBQUUsTUFBTTs7O0FBR2IsYUFBVyxFQUFFLHFCQUFTLEtBQUssRUFBRTtBQUMzQixRQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtBQUM3QixVQUFJLFFBQVEsR0FBRyxlQUFRLE1BQU0sQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7QUFDOUQsVUFBSSxRQUFRLElBQUksQ0FBQyxFQUFFO0FBQ2pCLGFBQUssR0FBRyxRQUFRLENBQUM7T0FDbEIsTUFBTTtBQUNMLGFBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO09BQzdCO0tBQ0Y7O0FBRUQsV0FBTyxLQUFLLENBQUM7R0FDZDs7O0FBR0QsS0FBRyxFQUFFLGFBQVMsS0FBSyxFQUFjO0FBQy9CLFNBQUssR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDOztBQUVsQyxRQUFJLE9BQU8sT0FBTyxLQUFLLFdBQVcsSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLEVBQUU7QUFDL0UsVUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNyQyxVQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFOztBQUNwQixjQUFNLEdBQUcsS0FBSyxDQUFDO09BQ2hCOzt3Q0FQbUIsT0FBTztBQUFQLGVBQU87OztBQVEzQixhQUFPLENBQUMsTUFBTSxPQUFDLENBQWYsT0FBTyxFQUFZLE9BQU8sQ0FBQyxDQUFDO0tBQzdCO0dBQ0Y7Q0FDRixDQUFDOztxQkFFYSxNQUFNIiwiZmlsZSI6ImxvZ2dlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aW5kZXhPZn0gZnJvbSAnLi91dGlscyc7XG5cbmxldCBsb2dnZXIgPSB7XG4gIG1ldGhvZE1hcDogWydkZWJ1ZycsICdpbmZvJywgJ3dhcm4nLCAnZXJyb3InXSxcbiAgbGV2ZWw6ICdpbmZvJyxcblxuICAvLyBNYXBzIGEgZ2l2ZW4gbGV2ZWwgdmFsdWUgdG8gdGhlIGBtZXRob2RNYXBgIGluZGV4ZXMgYWJvdmUuXG4gIGxvb2t1cExldmVsOiBmdW5jdGlvbihsZXZlbCkge1xuICAgIGlmICh0eXBlb2YgbGV2ZWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICBsZXQgbGV2ZWxNYXAgPSBpbmRleE9mKGxvZ2dlci5tZXRob2RNYXAsIGxldmVsLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgaWYgKGxldmVsTWFwID49IDApIHtcbiAgICAgICAgbGV2ZWwgPSBsZXZlbE1hcDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldmVsID0gcGFyc2VJbnQobGV2ZWwsIDEwKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbGV2ZWw7XG4gIH0sXG5cbiAgLy8gQ2FuIGJlIG92ZXJyaWRkZW4gaW4gdGhlIGhvc3QgZW52aXJvbm1lbnRcbiAgbG9nOiBmdW5jdGlvbihsZXZlbCwgLi4ubWVzc2FnZSkge1xuICAgIGxldmVsID0gbG9nZ2VyLmxvb2t1cExldmVsKGxldmVsKTtcblxuICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbG9nZ2VyLmxvb2t1cExldmVsKGxvZ2dlci5sZXZlbCkgPD0gbGV2ZWwpIHtcbiAgICAgIGxldCBtZXRob2QgPSBsb2dnZXIubWV0aG9kTWFwW2xldmVsXTtcbiAgICAgIGlmICghY29uc29sZVttZXRob2RdKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZVxuICAgICAgICBtZXRob2QgPSAnbG9nJztcbiAgICAgIH1cbiAgICAgIGNvbnNvbGVbbWV0aG9kXSguLi5tZXNzYWdlKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBsb2dnZXI7XG4iXX0=\n","// Build out our basic SafeString type\n'use strict';\n\nexports.__esModule = true;\nfunction SafeString(string) {\n this.string = string;\n}\n\nSafeString.prototype.toString = SafeString.prototype.toHTML = function () {\n return '' + this.string;\n};\n\nexports['default'] = SafeString;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3NhZmUtc3RyaW5nLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSxTQUFTLFVBQVUsQ0FBQyxNQUFNLEVBQUU7QUFDMUIsTUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7Q0FDdEI7O0FBRUQsVUFBVSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsWUFBVztBQUN2RSxTQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0NBQ3pCLENBQUM7O3FCQUVhLFVBQVUiLCJmaWxlIjoic2FmZS1zdHJpbmcuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBCdWlsZCBvdXQgb3VyIGJhc2ljIFNhZmVTdHJpbmcgdHlwZVxuZnVuY3Rpb24gU2FmZVN0cmluZyhzdHJpbmcpIHtcbiAgdGhpcy5zdHJpbmcgPSBzdHJpbmc7XG59XG5cblNhZmVTdHJpbmcucHJvdG90eXBlLnRvU3RyaW5nID0gU2FmZVN0cmluZy5wcm90b3R5cGUudG9IVE1MID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAnJyArIHRoaXMuc3RyaW5nO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU2FmZVN0cmluZztcbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\nexports.checkRevision = checkRevision;\nexports.template = template;\nexports.wrapProgram = wrapProgram;\nexports.resolvePartial = resolvePartial;\nexports.invokePartial = invokePartial;\nexports.noop = noop;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n// istanbul ignore next\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\nvar _utils = require('./utils');\n\nvar Utils = _interopRequireWildcard(_utils);\n\nvar _exception = require('./exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nvar _base = require('./base');\n\nfunction checkRevision(compilerInfo) {\n var compilerRevision = compilerInfo && compilerInfo[0] || 1,\n currentRevision = _base.COMPILER_REVISION;\n\n if (compilerRevision !== currentRevision) {\n if (compilerRevision < currentRevision) {\n var runtimeVersions = _base.REVISION_CHANGES[currentRevision],\n compilerVersions = _base.REVISION_CHANGES[compilerRevision];\n throw new _exception2['default']('Template was precompiled with an older version of Handlebars than the current runtime. ' + 'Please update your precompiler to a newer version (' + runtimeVersions + ') or downgrade your runtime to an older version (' + compilerVersions + ').');\n } else {\n // Use the embedded version info since the runtime doesn't know about this revision yet\n throw new _exception2['default']('Template was precompiled with a newer version of Handlebars than the current runtime. ' + 'Please update your runtime to a newer version (' + compilerInfo[1] + ').');\n }\n }\n}\n\nfunction template(templateSpec, env) {\n /* istanbul ignore next */\n if (!env) {\n throw new _exception2['default']('No environment passed to template');\n }\n if (!templateSpec || !templateSpec.main) {\n throw new _exception2['default']('Unknown template object: ' + typeof templateSpec);\n }\n\n templateSpec.main.decorator = templateSpec.main_d;\n\n // Note: Using env.VM references rather than local var references throughout this section to allow\n // for external users to override these as psuedo-supported APIs.\n env.VM.checkRevision(templateSpec.compiler);\n\n function invokePartialWrapper(partial, context, options) {\n if (options.hash) {\n context = Utils.extend({}, context, options.hash);\n if (options.ids) {\n options.ids[0] = true;\n }\n }\n\n partial = env.VM.resolvePartial.call(this, partial, context, options);\n var result = env.VM.invokePartial.call(this, partial, context, options);\n\n if (result == null && env.compile) {\n options.partials[options.name] = env.compile(partial, templateSpec.compilerOptions, env);\n result = options.partials[options.name](context, options);\n }\n if (result != null) {\n if (options.indent) {\n var lines = result.split('\\n');\n for (var i = 0, l = lines.length; i < l; i++) {\n if (!lines[i] && i + 1 === l) {\n break;\n }\n\n lines[i] = options.indent + lines[i];\n }\n result = lines.join('\\n');\n }\n return result;\n } else {\n throw new _exception2['default']('The partial ' + options.name + ' could not be compiled when running in runtime-only mode');\n }\n }\n\n // Just add water\n var container = {\n strict: function strict(obj, name) {\n if (!(name in obj)) {\n throw new _exception2['default']('\"' + name + '\" not defined in ' + obj);\n }\n return obj[name];\n },\n lookup: function lookup(depths, name) {\n var len = depths.length;\n for (var i = 0; i < len; i++) {\n if (depths[i] && depths[i][name] != null) {\n return depths[i][name];\n }\n }\n },\n lambda: function lambda(current, context) {\n return typeof current === 'function' ? current.call(context) : current;\n },\n\n escapeExpression: Utils.escapeExpression,\n invokePartial: invokePartialWrapper,\n\n fn: function fn(i) {\n var ret = templateSpec[i];\n ret.decorator = templateSpec[i + '_d'];\n return ret;\n },\n\n programs: [],\n program: function program(i, data, declaredBlockParams, blockParams, depths) {\n var programWrapper = this.programs[i],\n fn = this.fn(i);\n if (data || depths || blockParams || declaredBlockParams) {\n programWrapper = wrapProgram(this, i, fn, data, declaredBlockParams, blockParams, depths);\n } else if (!programWrapper) {\n programWrapper = this.programs[i] = wrapProgram(this, i, fn);\n }\n return programWrapper;\n },\n\n data: function data(value, depth) {\n while (value && depth--) {\n value = value._parent;\n }\n return value;\n },\n merge: function merge(param, common) {\n var obj = param || common;\n\n if (param && common && param !== common) {\n obj = Utils.extend({}, common, param);\n }\n\n return obj;\n },\n // An empty object to use as replacement for null-contexts\n nullContext: Object.seal({}),\n\n noop: env.VM.noop,\n compilerInfo: templateSpec.compiler\n };\n\n function ret(context) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n var data = options.data;\n\n ret._setup(options);\n if (!options.partial && templateSpec.useData) {\n data = initData(context, data);\n }\n var depths = undefined,\n blockParams = templateSpec.useBlockParams ? [] : undefined;\n if (templateSpec.useDepths) {\n if (options.depths) {\n depths = context != options.depths[0] ? [context].concat(options.depths) : options.depths;\n } else {\n depths = [context];\n }\n }\n\n function main(context /*, options*/) {\n return '' + templateSpec.main(container, context, container.helpers, container.partials, data, blockParams, depths);\n }\n main = executeDecorators(templateSpec.main, main, container, options.depths || [], data, blockParams);\n return main(context, options);\n }\n ret.isTop = true;\n\n ret._setup = function (options) {\n if (!options.partial) {\n container.helpers = container.merge(options.helpers, env.helpers);\n\n if (templateSpec.usePartial) {\n container.partials = container.merge(options.partials, env.partials);\n }\n if (templateSpec.usePartial || templateSpec.useDecorators) {\n container.decorators = container.merge(options.decorators, env.decorators);\n }\n } else {\n container.helpers = options.helpers;\n container.partials = options.partials;\n container.decorators = options.decorators;\n }\n };\n\n ret._child = function (i, data, blockParams, depths) {\n if (templateSpec.useBlockParams && !blockParams) {\n throw new _exception2['default']('must pass block params');\n }\n if (templateSpec.useDepths && !depths) {\n throw new _exception2['default']('must pass parent depths');\n }\n\n return wrapProgram(container, i, templateSpec[i], data, 0, blockParams, depths);\n };\n return ret;\n}\n\nfunction wrapProgram(container, i, fn, data, declaredBlockParams, blockParams, depths) {\n function prog(context) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n var currentDepths = depths;\n if (depths && context != depths[0] && !(context === container.nullContext && depths[0] === null)) {\n currentDepths = [context].concat(depths);\n }\n\n return fn(container, context, container.helpers, container.partials, options.data || data, blockParams && [options.blockParams].concat(blockParams), currentDepths);\n }\n\n prog = executeDecorators(fn, prog, container, depths, data, blockParams);\n\n prog.program = i;\n prog.depth = depths ? depths.length : 0;\n prog.blockParams = declaredBlockParams || 0;\n return prog;\n}\n\nfunction resolvePartial(partial, context, options) {\n if (!partial) {\n if (options.name === '@partial-block') {\n partial = options.data['partial-block'];\n } else {\n partial = options.partials[options.name];\n }\n } else if (!partial.call && !options.name) {\n // This is a dynamic partial that returned a string\n options.name = partial;\n partial = options.partials[partial];\n }\n return partial;\n}\n\nfunction invokePartial(partial, context, options) {\n // Use the current closure context to save the partial-block if this partial\n var currentPartialBlock = options.data && options.data['partial-block'];\n options.partial = true;\n if (options.ids) {\n options.data.contextPath = options.ids[0] || options.data.contextPath;\n }\n\n var partialBlock = undefined;\n if (options.fn && options.fn !== noop) {\n (function () {\n options.data = _base.createFrame(options.data);\n // Wrapper function to get access to currentPartialBlock from the closure\n var fn = options.fn;\n partialBlock = options.data['partial-block'] = function partialBlockWrapper(context) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n // Restore the partial-block from the closure for the execution of the block\n // i.e. the part inside the block of the partial call.\n options.data = _base.createFrame(options.data);\n options.data['partial-block'] = currentPartialBlock;\n return fn(context, options);\n };\n if (fn.partials) {\n options.partials = Utils.extend({}, options.partials, fn.partials);\n }\n })();\n }\n\n if (partial === undefined && partialBlock) {\n partial = partialBlock;\n }\n\n if (partial === undefined) {\n throw new _exception2['default']('The partial ' + options.name + ' could not be found');\n } else if (partial instanceof Function) {\n return partial(context, options);\n }\n}\n\nfunction noop() {\n return '';\n}\n\nfunction initData(context, data) {\n if (!data || !('root' in data)) {\n data = data ? _base.createFrame(data) : {};\n data.root = context;\n }\n return data;\n}\n\nfunction executeDecorators(fn, prog, container, depths, data, blockParams) {\n if (fn.decorator) {\n var props = {};\n prog = fn.decorator(prog, props, container, depths && depths[0], data, blockParams, depths);\n Utils.extend(prog, props);\n }\n return prog;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3J1bnRpbWUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7cUJBQXVCLFNBQVM7O0lBQXBCLEtBQUs7O3lCQUNLLGFBQWE7Ozs7b0JBQzhCLFFBQVE7O0FBRWxFLFNBQVMsYUFBYSxDQUFDLFlBQVksRUFBRTtBQUMxQyxNQUFNLGdCQUFnQixHQUFHLFlBQVksSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztNQUN2RCxlQUFlLDBCQUFvQixDQUFDOztBQUUxQyxNQUFJLGdCQUFnQixLQUFLLGVBQWUsRUFBRTtBQUN4QyxRQUFJLGdCQUFnQixHQUFHLGVBQWUsRUFBRTtBQUN0QyxVQUFNLGVBQWUsR0FBRyx1QkFBaUIsZUFBZSxDQUFDO1VBQ25ELGdCQUFnQixHQUFHLHVCQUFpQixnQkFBZ0IsQ0FBQyxDQUFDO0FBQzVELFlBQU0sMkJBQWMseUZBQXlGLEdBQ3ZHLHFEQUFxRCxHQUFHLGVBQWUsR0FBRyxtREFBbUQsR0FBRyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsQ0FBQztLQUNoSyxNQUFNOztBQUVMLFlBQU0sMkJBQWMsd0ZBQXdGLEdBQ3RHLGlEQUFpRCxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztLQUNuRjtHQUNGO0NBQ0Y7O0FBRU0sU0FBUyxRQUFRLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRTs7QUFFMUMsTUFBSSxDQUFDLEdBQUcsRUFBRTtBQUNSLFVBQU0sMkJBQWMsbUNBQW1DLENBQUMsQ0FBQztHQUMxRDtBQUNELE1BQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFO0FBQ3ZDLFVBQU0sMkJBQWMsMkJBQTJCLEdBQUcsT0FBTyxZQUFZLENBQUMsQ0FBQztHQUN4RTs7QUFFRCxjQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDOzs7O0FBSWxELEtBQUcs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QUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDNUYsU0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7R0FDM0I7QUFDRCxTQUFPLElBQUksQ0FBQztDQUNiIiwiZmlsZSI6InJ1bnRpbWUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBVdGlscyBmcm9tICcuL3V0aWxzJztcbmltcG9ydCBFeGNlcHRpb24gZnJvbSAnLi9leGNlcHRpb24nO1xuaW1wb3J0IHsgQ09NUElMRVJfUkVWSVNJT04sIFJFVklTSU9OX0NIQU5HRVMsIGNyZWF0ZUZyYW1lIH0gZnJvbSAnLi9iYXNlJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrUmV2aXNpb24oY29tcGlsZXJJbmZvKSB7XG4gIGNvbnN0IGNvbXBpbGVyUmV2aXNpb24gPSBjb21waWxlckluZm8gJiYgY29tcGlsZXJJbmZvWzBdIHx8IDEsXG4gICAgICAgIGN1cnJlbnRSZXZpc2lvbiA9IENPTVBJTEVSX1JFVklTSU9OO1xuXG4gIGlmIChjb21waWxlclJldmlzaW9uICE9PSBjdXJyZW50UmV2aXNpb24pIHtcbiAgICBpZiAoY29tcGlsZXJSZXZpc2lvbiA8IGN1cnJlbnRSZXZpc2lvbikge1xuICAgICAgY29uc3QgcnVudGltZVZlcnNpb25zID0gUkVWSVNJT05fQ0hBTkdFU1tjdXJyZW50UmV2aXNpb25dLFxuICAgICAgICAgICAgY29tcGlsZXJWZXJzaW9ucyA9IFJFVklTSU9OX0NIQU5HRVNbY29tcGlsZXJSZXZpc2lvbl07XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdUZW1wbGF0ZSB3YXMgcHJlY29tcGlsZWQgd2l0aCBhbiBvbGRlciB2ZXJzaW9uIG9mIEhhbmRsZWJhcnMgdGhhbiB0aGUgY3VycmVudCBydW50aW1lLiAnICtcbiAgICAgICAgICAgICdQbGVhc2UgdXBkYXRlIHlvdXIgcHJlY29tcGlsZXIgdG8gYSBuZXdlciB2ZXJzaW9uICgnICsgcnVudGltZVZlcnNpb25zICsgJykgb3IgZG93bmdyYWRlIHlvdXIgcnVudGltZSB0byBhbiBvbGRlciB2ZXJzaW9uICgnICsgY29tcGlsZXJWZXJzaW9ucyArICcpLicpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBVc2UgdGhlIGVtYmVkZGVkIHZlcnNpb24gaW5mbyBzaW5jZSB0aGUgcnVudGltZSBkb2Vzbid0IGtub3cgYWJvdXQgdGhpcyByZXZpc2lvbiB5ZXRcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ1RlbXBsYXRlIHdhcyBwcmVjb21waWxlZCB3aXRoIGEgbmV3ZXIgdmVyc2lvbiBvZiBIYW5kbGViYXJzIHRoYW4gdGhlIGN1cnJlbnQgcnVudGltZS4gJyArXG4gICAgICAgICAgICAnUGxlYXNlIHVwZGF0ZSB5b3VyIHJ1bnRpbWUgdG8gYSBuZXdlciB2ZXJzaW9uICgnICsgY29tcGlsZXJJbmZvWzFdICsgJykuJyk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZW1wbGF0ZSh0ZW1wbGF0ZVNwZWMsIGVudikge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBpZiAoIWVudikge1xuICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ05vIGVudmlyb25tZW50IHBhc3NlZCB0byB0ZW1wbGF0ZScpO1xuICB9XG4gIGlmICghdGVtcGxhdGVTcGVjIHx8ICF0ZW1wbGF0ZVNwZWMubWFpbikge1xuICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ1Vua25vd24gdGVtcGxhdGUgb2JqZWN0OiAnICsgdHlwZW9mIHRlbXBsYXRlU3BlYyk7XG4gIH1cblxuICB0ZW1wbGF0ZVNwZWMubWFpbi5kZWNvcmF0b3IgPSB0ZW1wbGF0ZVNwZWMubWFpbl9kO1xuXG4gIC8vIE5vdGU6IFVzaW5nIGVudi5WTSByZWZlcmVuY2VzIHJhdGhlciB0aGFuIGxvY2FsIHZhciByZWZlcmVuY2VzIHRocm91Z2hvdXQgdGhpcyBzZWN0aW9uIHRvIGFsbG93XG4gIC8vIGZvciBleHRlcm5hbCB1c2VycyB0byBvdmVycmlkZSB0aGVzZSBhcyBwc3VlZG8tc3VwcG9ydGVkIEFQSXMuXG4gIGVudi5WTS5jaGVja1JldmlzaW9uKHRlbXBsYXRlU3BlYy5jb21waWxlcik7XG5cbiAgZnVuY3Rpb24gaW52b2tlUGFydGlhbFdyYXBwZXIocGFydGlhbCwgY29udGV4dCwgb3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zLmhhc2gpIHtcbiAgICAgIGNvbnRleHQgPSBVdGlscy5leHRlbmQoe30sIGNvbnRleHQsIG9wdGlvbnMuaGFzaCk7XG4gICAgICBpZiAob3B0aW9ucy5pZHMpIHtcbiAgICAgICAgb3B0aW9ucy5pZHNbMF0gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHBhcnRpYWwgPSBlbnYuVk0ucmVzb2x2ZVBhcnRpYWwuY2FsbCh0aGlzLCBwYXJ0aWFsLCBjb250ZXh0LCBvcHRpb25zKTtcbiAgICBsZXQgcmVzdWx0ID0gZW52LlZNLmludm9rZVBhcnRpYWwuY2FsbCh0aGlzLCBwYXJ0aWFsLCBjb250ZXh0LCBvcHRpb25zKTtcblxuICAgIGlmIChyZXN1bHQgPT0gbnVsbCAmJiBlbnYuY29tcGlsZSkge1xuICAgICAgb3B0aW9ucy5wYXJ0aWFsc1tvcHRpb25zLm5hbWVdID0gZW52LmNvbXBpbGUocGFydGlhbCwgdGVtcGxhdGVTcGVjLmNvbXBpbGVyT3B0aW9ucywgZW52KTtcbiAgICAgIHJlc3VsdCA9IG9wdGlvbnMucGFydGlhbHNbb3B0aW9ucy5uYW1lXShjb250ZXh0LCBvcHRpb25zKTtcbiAgICB9XG4gICAgaWYgKHJlc3VsdCAhPSBudWxsKSB7XG4gICAgICBpZiAob3B0aW9ucy5pbmRlbnQpIHtcbiAgICAgICAgbGV0IGxpbmVzID0gcmVzdWx0LnNwbGl0KCdcXG4nKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIGwgPSBsaW5lcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICBpZiAoIWxpbmVzW2ldICYmIGkgKyAxID09PSBsKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsaW5lc1tpXSA9IG9wdGlvbnMuaW5kZW50ICsgbGluZXNbaV07XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0ID0gbGluZXMuam9pbignXFxuJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdUaGUgcGFydGlhbCAnICsgb3B0aW9ucy5uYW1lICsgJyBjb3VsZCBub3QgYmUgY29tcGlsZWQgd2hlbiBydW5uaW5nIGluIHJ1bnRpbWUtb25seSBtb2RlJyk7XG4gICAgfVxuICB9XG5cbiAgLy8gSnVzdCBhZGQgd2F0ZXJcbiAgbGV0IGNvbnRhaW5lciA9IHtcbiAgICBzdHJpY3Q6IGZ1bmN0aW9uKG9iaiwgbmFtZSkge1xuICAgICAgaWYgKCEobmFtZSBpbiBvYmopKSB7XG4gICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ1wiJyArIG5hbWUgKyAnXCIgbm90IGRlZmluZWQgaW4gJyArIG9iaik7XG4gICAgICB9XG4gICAgICByZXR1cm4gb2JqW25hbWVdO1xuICAgIH0sXG4gICAgbG9va3VwOiBmdW5jdGlvbihkZXB0aHMsIG5hbWUpIHtcbiAgICAgIGNvbnN0IGxlbiA9IGRlcHRocy5sZW5ndGg7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIGlmIChkZXB0aHNbaV0gJiYgZGVwdGhzW2ldW25hbWVdICE9IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gZGVwdGhzW2ldW25hbWVdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBsYW1iZGE6IGZ1bmN0aW9uKGN1cnJlbnQsIGNvbnRleHQpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgY3VycmVudCA9PT0gJ2Z1bmN0aW9uJyA/IGN1cnJlbnQuY2FsbChjb250ZXh0KSA6IGN1cnJlbnQ7XG4gICAgfSxcblxuICAgIGVzY2FwZUV4cHJlc3Npb246IFV0aWxzLmVzY2FwZUV4cHJlc3Npb24sXG4gICAgaW52b2tlUGFydGlhbDogaW52b2tlUGFydGlhbFdyYXBwZXIsXG5cbiAgICBmbjogZnVuY3Rpb24oaSkge1xuICAgICAgbGV0IHJldCA9IHRlbXBsYXRlU3BlY1tpXTtcbiAgICAgIHJldC5kZWNvcmF0b3IgPSB0ZW1wbGF0ZVNwZWNbaSArICdfZCddO1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9LFxuXG4gICAgcHJvZ3JhbXM6IFtdLFxuICAgIHByb2dyYW06IGZ1bmN0aW9uKGksIGRhdGEsIGRlY2xhcmVkQmxvY2tQYXJhbXMsIGJsb2NrUGFyYW1zLCBkZXB0aHMpIHtcbiAgICAgIGxldCBwcm9ncmFtV3JhcHBlciA9IHRoaXMucHJvZ3JhbXNbaV0sXG4gICAgICAgICAgZm4gPSB0aGlzLmZuKGkpO1xuICAgICAgaWYgKGRhdGEgfHwgZGVwdGhzIHx8IGJsb2NrUGFyYW1zIHx8IGRlY2xhcmVkQmxvY2tQYXJhbXMpIHtcbiAgICAgICAgcHJvZ3JhbVdyYXBwZXIgPSB3cmFwUHJvZ3JhbSh0aGlzLCBpLCBmbiwgZGF0YSwgZGVjbGFyZWRCbG9ja1BhcmFtcywgYmxvY2tQYXJhbXMsIGRlcHRocyk7XG4gICAgICB9IGVsc2UgaWYgKCFwcm9ncmFtV3JhcHBlcikge1xuICAgICAgICBwcm9ncmFtV3JhcHBlciA9IHRoaXMucHJvZ3JhbXNbaV0gPSB3cmFwUHJvZ3JhbSh0aGlzLCBpLCBmbik7XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJvZ3JhbVdyYXBwZXI7XG4gICAgfSxcblxuICAgIGRhdGE6IGZ1bmN0aW9uKHZhbHVlLCBkZXB0aCkge1xuICAgICAgd2hpbGUgKHZhbHVlICYmIGRlcHRoLS0pIHtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS5fcGFyZW50O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0sXG4gICAgbWVyZ2U6IGZ1bmN0aW9uKHBhcmFtLCBjb21tb24pIHtcbiAgICAgIGxldCBvYmogPSBwYXJhbSB8fCBjb21tb247XG5cbiAgICAgIGlmIChwYXJhbSAmJiBjb21tb24gJiYgKHBhcmFtICE9PSBjb21tb24pKSB7XG4gICAgICAgIG9iaiA9IFV0aWxzLmV4dGVuZCh7fSwgY29tbW9uLCBwYXJhbSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBvYmo7XG4gICAgfSxcbiAgICAvLyBBbiBlbXB0eSBvYmplY3QgdG8gdXNlIGFzIHJlcGxhY2VtZW50IGZvciBudWxsLWNvbnRleHRzXG4gICAgbnVsbENvbnRleHQ6IE9iamVjdC5zZWFsKHt9KSxcblxuICAgIG5vb3A6IGVudi5WTS5ub29wLFxuICAgIGNvbXBpbGVySW5mbzogdGVtcGxhdGVTcGVjLmNvbXBpbGVyXG4gIH07XG5cbiAgZnVuY3Rpb24gcmV0KGNvbnRleHQsIG9wdGlvbnMgPSB7fSkge1xuICAgIGxldCBkYXRhID0gb3B0aW9ucy5kYXRhO1xuXG4gICAgcmV0Ll9zZXR1cChvcHRpb25zKTtcbiAgICBpZiAoIW9wdGlvbnMucGFydGlhbCAmJiB0ZW1wbGF0ZVNwZWMudXNlRGF0YSkge1xuICAgICAgZGF0YSA9IGluaXREYXRhKGNvbnRleHQsIGRhdGEpO1xuICAgIH1cbiAgICBsZXQgZGVwdGhzLFxuICAgICAgICBibG9ja1BhcmFtcyA9IHRlbXBsYXRlU3BlYy51c2VCbG9ja1BhcmFtcyA/IFtdIDogdW5kZWZpbmVkO1xuICAgIGlmICh0ZW1wbGF0ZVNwZWMudXNlRGVwdGhzKSB7XG4gICAgICBpZiAob3B0aW9ucy5kZXB0aHMpIHtcbiAgICAgICAgZGVwdGhzID0gY29udGV4dCAhPSBvcHRpb25zLmRlcHRoc1swXSA/IFtjb250ZXh0XS5jb25jYXQob3B0aW9ucy5kZXB0aHMpIDogb3B0aW9ucy5kZXB0aHM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZXB0aHMgPSBbY29udGV4dF07XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWFpbihjb250ZXh0LyosIG9wdGlvbnMqLykge1xuICAgICAgcmV0dXJuICcnICsgdGVtcGxhdGVTcGVjLm1haW4oY29udGFpbmVyLCBjb250ZXh0LCBjb250YWluZXIuaGVscGVycywgY29udGFpbmVyLnBhcnRpYWxzLCBkYXRhLCBibG9ja1BhcmFtcywgZGVwdGhzKTtcbiAgICB9XG4gICAgbWFpbiA9IGV4ZWN1dGVEZWNvcmF0b3JzKHRlbXBsYXRlU3BlYy5tYWluLCBtYWluLCBjb250YWluZXIsIG9wdGlvbnMuZGVwdGhzIHx8IFtdLCBkYXRhLCBibG9ja1BhcmFtcyk7XG4gICAgcmV0dXJuIG1haW4oY29udGV4dCwgb3B0aW9ucyk7XG4gIH1cbiAgcmV0LmlzVG9wID0gdHJ1ZTtcblxuICByZXQuX3NldHVwID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgIGlmICghb3B0aW9ucy5wYXJ0aWFsKSB7XG4gICAgICBjb250YWluZXIuaGVscGVycyA9IGNvbnRhaW5lci5tZXJnZShvcHRpb25zLmhlbHBlcnMsIGVudi5oZWxwZXJzKTtcblxuICAgICAgaWYgKHRlbXBsYXRlU3BlYy51c2VQYXJ0aWFsKSB7XG4gICAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyA9IGNvbnRhaW5lci5tZXJnZShvcHRpb25zLnBhcnRpYWxzLCBlbnYucGFydGlhbHMpO1xuICAgICAgfVxuICAgICAgaWYgKHRlbXBsYXRlU3BlYy51c2VQYXJ0aWFsIHx8IHRlbXBsYXRlU3BlYy51c2VEZWNvcmF0b3JzKSB7XG4gICAgICAgIGNvbnRhaW5lci5kZWNvcmF0b3JzID0gY29udGFpbmVyLm1lcmdlKG9wdGlvbnMuZGVjb3JhdG9ycywgZW52LmRlY29yYXRvcnMpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb250YWluZXIuaGVscGVycyA9IG9wdGlvbnMuaGVscGVycztcbiAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyA9IG9wdGlvbnMucGFydGlhbHM7XG4gICAgICBjb250YWluZXIuZGVjb3JhdG9ycyA9IG9wdGlvbnMuZGVjb3JhdG9ycztcbiAgICB9XG4gIH07XG5cbiAgcmV0Ll9jaGlsZCA9IGZ1bmN0aW9uKGksIGRhdGEsIGJsb2NrUGFyYW1zLCBkZXB0aHMpIHtcbiAgICBpZiAodGVtcGxhdGVTcGVjLnVzZUJsb2NrUGFyYW1zICYmICFibG9ja1BhcmFtcykge1xuICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignbXVzdCBwYXNzIGJsb2NrIHBhcmFtcycpO1xuICAgIH1cbiAgICBpZiAodGVtcGxhdGVTcGVjLnVzZURlcHRocyAmJiAhZGVwdGhzKSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdtdXN0IHBhc3MgcGFyZW50IGRlcHRocycpO1xuICAgIH1cblxuICAgIHJldHVybiB3cmFwUHJvZ3JhbShjb250YWluZXIsIGksIHRlbXBsYXRlU3BlY1tpXSwgZGF0YSwgMCwgYmxvY2tQYXJhbXMsIGRlcHRocyk7XG4gIH07XG4gIHJldHVybiByZXQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cmFwUHJvZ3JhbShjb250YWluZXIsIGksIGZuLCBkYXRhLCBkZWNsYXJlZEJsb2NrUGFyYW1zLCBibG9ja1BhcmFtcywgZGVwdGhzKSB7XG4gIGZ1bmN0aW9uIHByb2coY29udGV4dCwgb3B0aW9ucyA9IHt9KSB7XG4gICAgbGV0IGN1cnJlbnREZXB0aHMgPSBkZXB0aHM7XG4gICAgaWYgKGRlcHRocyAmJiBjb250ZXh0ICE9IGRlcHRoc1swXSAmJiAhKGNvbnRleHQgPT09IGNvbnRhaW5lci5udWxsQ29udGV4dCAmJiBkZXB0aHNbMF0gPT09IG51bGwpKSB7XG4gICAgICBjdXJyZW50RGVwdGhzID0gW2NvbnRleHRdLmNvbmNhdChkZXB0aHMpO1xuICAgIH1cblxuICAgIHJldHVybiBmbihjb250YWluZXIsXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIGNvbnRhaW5lci5oZWxwZXJzLCBjb250YWluZXIucGFydGlhbHMsXG4gICAgICAgIG9wdGlvbnMuZGF0YSB8fCBkYXRhLFxuICAgICAgICBibG9ja1BhcmFtcyAmJiBbb3B0aW9ucy5ibG9ja1BhcmFtc10uY29uY2F0KGJsb2NrUGFyYW1zKSxcbiAgICAgICAgY3VycmVudERlcHRocyk7XG4gIH1cblxuICBwcm9nID0gZXhlY3V0ZURlY29yYXRvcnMoZm4sIHByb2csIGNvbnRhaW5lciwgZGVwdGhzLCBkYXRhLCBibG9ja1BhcmFtcyk7XG5cbiAgcHJvZy5wcm9ncmFtID0gaTtcbiAgcHJvZy5kZXB0aCA9IGRlcHRocyA/IGRlcHRocy5sZW5ndGggOiAwO1xuICBwcm9nLmJsb2NrUGFyYW1zID0gZGVjbGFyZWRCbG9ja1BhcmFtcyB8fCAwO1xuICByZXR1cm4gcHJvZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVQYXJ0aWFsKHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgaWYgKCFwYXJ0aWFsKSB7XG4gICAgaWYgKG9wdGlvbnMubmFtZSA9PT0gJ0BwYXJ0aWFsLWJsb2NrJykge1xuICAgICAgcGFydGlhbCA9IG9wdGlvbnMuZGF0YVsncGFydGlhbC1ibG9jayddO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJ0aWFsID0gb3B0aW9ucy5wYXJ0aWFsc1tvcHRpb25zLm5hbWVdO1xuICAgIH1cbiAgfSBlbHNlIGlmICghcGFydGlhbC5jYWxsICYmICFvcHRpb25zLm5hbWUpIHtcbiAgICAvLyBUaGlzIGlzIGEgZHluYW1pYyBwYXJ0aWFsIHRoYXQgcmV0dXJuZWQgYSBzdHJpbmdcbiAgICBvcHRpb25zLm5hbWUgPSBwYXJ0aWFsO1xuICAgIHBhcnRpYWwgPSBvcHRpb25zLnBhcnRpYWxzW3BhcnRpYWxdO1xuICB9XG4gIHJldHVybiBwYXJ0aWFsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlUGFydGlhbChwYXJ0aWFsLCBjb250ZXh0LCBvcHRpb25zKSB7XG4gIC8vIFVzZSB0aGUgY3VycmVudCBjbG9zdXJlIGNvbnRleHQgdG8gc2F2ZSB0aGUgcGFydGlhbC1ibG9jayBpZiB0aGlzIHBhcnRpYWxcbiAgY29uc3QgY3VycmVudFBhcnRpYWxCbG9jayA9IG9wdGlvbnMuZGF0YSAmJiBvcHRpb25zLmRhdGFbJ3BhcnRpYWwtYmxvY2snXTtcbiAgb3B0aW9ucy5wYXJ0aWFsID0gdHJ1ZTtcbiAgaWYgKG9wdGlvbnMuaWRzKSB7XG4gICAgb3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoID0gb3B0aW9ucy5pZHNbMF0gfHwgb3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoO1xuICB9XG5cbiAgbGV0IHBhcnRpYWxCbG9jaztcbiAgaWYgKG9wdGlvbnMuZm4gJiYgb3B0aW9ucy5mbiAhPT0gbm9vcCkge1xuICAgIG9wdGlvbnMuZGF0YSA9IGNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7XG4gICAgLy8gV3JhcHBlciBmdW5jdGlvbiB0byBnZXQgYWNjZXNzIHRvIGN1cnJlbnRQYXJ0aWFsQmxvY2sgZnJvbSB0aGUgY2xvc3VyZVxuICAgIGxldCBmbiA9IG9wdGlvbnMuZm47XG4gICAgcGFydGlhbEJsb2NrID0gb3B0aW9ucy5kYXRhWydwYXJ0aWFsLWJsb2NrJ10gPSBmdW5jdGlvbiBwYXJ0aWFsQmxvY2tXcmFwcGVyKGNvbnRleHQsIG9wdGlvbnMgPSB7fSkge1xuXG4gICAgICAvLyBSZXN0b3JlIHRoZSBwYXJ0aWFsLWJsb2NrIGZyb20gdGhlIGNsb3N1cmUgZm9yIHRoZSBleGVjdXRpb24gb2YgdGhlIGJsb2NrXG4gICAgICAvLyBpLmUuIHRoZSBwYXJ0IGluc2lkZSB0aGUgYmxvY2sgb2YgdGhlIHBhcnRpYWwgY2FsbC5cbiAgICAgIG9wdGlvbnMuZGF0YSA9IGNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7XG4gICAgICBvcHRpb25zLmRhdGFbJ3BhcnRpYWwtYmxvY2snXSA9IGN1cnJlbnRQYXJ0aWFsQmxvY2s7XG4gICAgICByZXR1cm4gZm4oY29udGV4dCwgb3B0aW9ucyk7XG4gICAgfTtcbiAgICBpZiAoZm4ucGFydGlhbHMpIHtcbiAgICAgIG9wdGlvbnMucGFydGlhbHMgPSBVdGlscy5leHRlbmQoe30sIG9wdGlvbnMucGFydGlhbHMsIGZuLnBhcnRpYWxzKTtcbiAgICB9XG4gIH1cblxuICBpZiAocGFydGlhbCA9PT0gdW5kZWZpbmVkICYmIHBhcnRpYWxCbG9jaykge1xuICAgIHBhcnRpYWwgPSBwYXJ0aWFsQmxvY2s7XG4gIH1cblxuICBpZiAocGFydGlhbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignVGhlIHBhcnRpYWwgJyArIG9wdGlvbnMubmFtZSArICcgY291bGQgbm90IGJlIGZvdW5kJyk7XG4gIH0gZWxzZSBpZiAocGFydGlhbCBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG4gICAgcmV0dXJuIHBhcnRpYWwoY29udGV4dCwgb3B0aW9ucyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vb3AoKSB7IHJldHVybiAnJzsgfVxuXG5mdW5jdGlvbiBpbml0RGF0YShjb250ZXh0LCBkYXRhKSB7XG4gIGlmICghZGF0YSB8fCAhKCdyb290JyBpbiBkYXRhKSkge1xuICAgIGRhdGEgPSBkYXRhID8gY3JlYXRlRnJhbWUoZGF0YSkgOiB7fTtcbiAgICBkYXRhLnJvb3QgPSBjb250ZXh0O1xuICB9XG4gIHJldHVybiBkYXRhO1xufVxuXG5mdW5jdGlvbiBleGVjdXRlRGVjb3JhdG9ycyhmbiwgcHJvZywgY29udGFpbmVyLCBkZXB0aHMsIGRhdGEsIGJsb2NrUGFyYW1zKSB7XG4gIGlmIChmbi5kZWNvcmF0b3IpIHtcbiAgICBsZXQgcHJvcHMgPSB7fTtcbiAgICBwcm9nID0gZm4uZGVjb3JhdG9yKHByb2csIHByb3BzLCBjb250YWluZXIsIGRlcHRocyAmJiBkZXB0aHNbMF0sIGRhdGEsIGJsb2NrUGFyYW1zLCBkZXB0aHMpO1xuICAgIFV0aWxzLmV4dGVuZChwcm9nLCBwcm9wcyk7XG4gIH1cbiAgcmV0dXJuIHByb2c7XG59XG4iXX0=\n","/* global window */\n'use strict';\n\nexports.__esModule = true;\n\nexports['default'] = function (Handlebars) {\n /* istanbul ignore next */\n var root = typeof global !== 'undefined' ? global : window,\n $Handlebars = root.Handlebars;\n /* istanbul ignore next */\n Handlebars.noConflict = function () {\n if (root.Handlebars === Handlebars) {\n root.Handlebars = $Handlebars;\n }\n return Handlebars;\n };\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL25vLWNvbmZsaWN0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O3FCQUNlLFVBQVMsVUFBVSxFQUFFOztBQUVsQyxNQUFJLElBQUksR0FBRyxPQUFPLE1BQU0sS0FBSyxXQUFXLEdBQUcsTUFBTSxHQUFHLE1BQU07TUFDdEQsV0FBVyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7O0FBRWxDLFlBQVUsQ0FBQyxVQUFVLEdBQUcsWUFBVztBQUNqQyxRQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssVUFBVSxFQUFFO0FBQ2xDLFVBQUksQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDO0tBQy9CO0FBQ0QsV0FBTyxVQUFVLENBQUM7R0FDbkIsQ0FBQztDQUNIIiwiZmlsZSI6Im5vLWNvbmZsaWN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogZ2xvYmFsIHdpbmRvdyAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oSGFuZGxlYmFycykge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBsZXQgcm9vdCA9IHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnID8gZ2xvYmFsIDogd2luZG93LFxuICAgICAgJEhhbmRsZWJhcnMgPSByb290LkhhbmRsZWJhcnM7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIEhhbmRsZWJhcnMubm9Db25mbGljdCA9IGZ1bmN0aW9uKCkge1xuICAgIGlmIChyb290LkhhbmRsZWJhcnMgPT09IEhhbmRsZWJhcnMpIHtcbiAgICAgIHJvb3QuSGFuZGxlYmFycyA9ICRIYW5kbGViYXJzO1xuICAgIH1cbiAgICByZXR1cm4gSGFuZGxlYmFycztcbiAgfTtcbn1cbiJdfQ==\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","module.exports = function(classname) {\n\tvar check = OCA.WorkflowEngine.getCheckByClass(classname);\n\tif (!_.isUndefined(check)) {\n\t\treturn check['operators'];\n\t}\n\treturn [];\n}\n","/**\n * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n(function() {\n\n\tOCA.WorkflowEngine = OCA.WorkflowEngine || {};\n\tOCA.WorkflowEngine.Plugins = OCA.WorkflowEngine.Plugins || {};\n\n\tOCA.WorkflowEngine.Plugins.FileMimeTypePlugin = {\n\t\tgetCheck: function() {\n\t\t\treturn {\n\t\t\t\t'class': 'OCA\\\\WorkflowEngine\\\\Check\\\\FileMimeType',\n\t\t\t\t'name': t('workflowengine', 'File MIME type'),\n\t\t\t\t'operators': [\n\t\t\t\t\t{'operator': 'is', 'name': t('workflowengine', 'is')},\n\t\t\t\t\t{'operator': '!is', 'name': t('workflowengine', 'is not')},\n\t\t\t\t\t{'operator': 'matches', 'name': t('workflowengine', 'matches')},\n\t\t\t\t\t{'operator': '!matches', 'name': t('workflowengine', 'does not match')}\n\t\t\t\t]\n\t\t\t};\n\t\t},\n\t\trender: function(element, check) {\n\t\t\tif (check['class'] !== 'OCA\\\\WorkflowEngine\\\\Check\\\\FileMimeType') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar placeholder = 'text/plain';\n\t\t\tif (check['operator'] === 'matches' || check['operator'] === '!matches') {\n\t\t\t\tplaceholder = '/^text\\\\/(plain|html)$/i';\n\n\t\t\t\tif (this._validateRegex(check['value'])) {\n\t\t\t\t\t$(element).removeClass('invalid-input');\n\t\t\t\t} else {\n\t\t\t\t\t$(element).addClass('invalid-input');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t$(element).css('width', '250px')\n\t\t\t\t.attr('placeholder', placeholder)\n\t\t\t\t.attr('title', t('workflowengine', 'Example: {placeholder}', {placeholder: placeholder}))\n\t\t\t\t.addClass('has-tooltip')\n\t\t\t\t.tooltip({\n\t\t\t\t\tplacement: 'bottom'\n\t\t\t\t});\n\t\t},\n\n\t\t_validateRegex: function(string) {\n\t\t\tvar regexRegex = /^\\/(.*)\\/([gui]{0,3})$/,\n\t\t\t\tresult = regexRegex.exec(string);\n\t\t\treturn result !== null;\n\t\t}\n\t};\n})();\n\nOC.Plugins.register('OCA.WorkflowEngine.CheckPlugins', OCA.WorkflowEngine.Plugins.FileMimeTypePlugin);\n","/**\n * @copyright Copyright (c) 2018 Daniel Kesselberg <mail@danielkesselberg.de>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n(function () {\n\n\tOCA.WorkflowEngine = OCA.WorkflowEngine || {};\n\tOCA.WorkflowEngine.Plugins = OCA.WorkflowEngine.Plugins || {};\n\n\tOCA.WorkflowEngine.Plugins.FileNamePlugin = {\n\t\tgetCheck: function () {\n\t\t\treturn {\n\t\t\t\t'class': 'OCA\\\\WorkflowEngine\\\\Check\\\\FileName',\n\t\t\t\t'name': t('workflowengine', 'File name'),\n\t\t\t\t'operators': [\n\t\t\t\t\t{'operator': 'is', 'name': t('workflowengine', 'is')},\n\t\t\t\t\t{'operator': '!is', 'name': t('workflowengine', 'is not')},\n\t\t\t\t\t{\n\t\t\t\t\t\t'operator': 'matches',\n\t\t\t\t\t\t'name': t('workflowengine', 'matches')\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t'operator': '!matches',\n\t\t\t\t\t\t'name': t('workflowengine', 'does not match')\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t};\n\t\t},\n\t\trender: function (element, check) {\n\t\t\tif (check['class'] !== 'OCA\\\\WorkflowEngine\\\\Check\\\\FileName') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar placeholder = 'dummy.jpg';\n\t\t\tif (check['operator'] === 'matches' || check['operator'] === '!matches') {\n\t\t\t\tplaceholder = '/^dummy-.+$/i';\n\n\t\t\t\tif (this._validateRegex(check['value'])) {\n\t\t\t\t\t$(element).removeClass('invalid-input');\n\t\t\t\t} else {\n\t\t\t\t\t$(element).addClass('invalid-input');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t$(element).css('width', '250px')\n\t\t\t\t.attr('placeholder', placeholder)\n\t\t\t\t.attr('title', t('workflowengine', 'Example: {placeholder}', {placeholder: placeholder}))\n\t\t\t\t.addClass('has-tooltip')\n\t\t\t\t.tooltip({\n\t\t\t\t\tplacement: 'bottom'\n\t\t\t\t});\n\t\t},\n\n\t\t_validateRegex: function (string) {\n\t\t\tvar regexRegex = /^\\/(.*)\\/([gui]{0,3})$/,\n\t\t\t\tresult = regexRegex.exec(string);\n\t\t\treturn result !== null;\n\t\t}\n\t};\n})();\n\nOC.Plugins.register('OCA.WorkflowEngine.CheckPlugins', OCA.WorkflowEngine.Plugins.FileNamePlugin);","/**\n * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n(function() {\n\n\tOCA.WorkflowEngine = OCA.WorkflowEngine || {};\n\tOCA.WorkflowEngine.Plugins = OCA.WorkflowEngine.Plugins || {};\n\n\tOCA.WorkflowEngine.Plugins.FileSizePlugin = {\n\t\tgetCheck: function() {\n\t\t\treturn {\n\t\t\t\t'class': 'OCA\\\\WorkflowEngine\\\\Check\\\\FileSize',\n\t\t\t\t'name': t('workflowengine', 'File size (upload)'),\n\t\t\t\t'operators': [\n\t\t\t\t\t{'operator': 'less', 'name': t('workflowengine', 'less')},\n\t\t\t\t\t{'operator': '!greater', 'name': t('workflowengine', 'less or equals')},\n\t\t\t\t\t{'operator': '!less', 'name': t('workflowengine', 'greater or equals')},\n\t\t\t\t\t{'operator': 'greater', 'name': t('workflowengine', 'greater')}\n\t\t\t\t]\n\t\t\t};\n\t\t},\n\t\trender: function(element, check) {\n\t\t\tif (check['class'] !== 'OCA\\\\WorkflowEngine\\\\Check\\\\FileSize') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar placeholder = '12 MB'; // Do not translate!!!\n\t\t\t$(element).css('width', '250px')\n\t\t\t\t.attr('placeholder', placeholder)\n\t\t\t\t.attr('title', t('workflowengine', 'Example: {placeholder}', {placeholder: placeholder}))\n\t\t\t\t.addClass('has-tooltip')\n\t\t\t\t.tooltip({\n\t\t\t\t\tplacement: 'bottom'\n\t\t\t\t});\n\t\t}\n\t};\n})();\n\nOC.Plugins.register('OCA.WorkflowEngine.CheckPlugins', OCA.WorkflowEngine.Plugins.FileSizePlugin);\n","/**\n * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n(function() {\n\n\tOCA.WorkflowEngine = OCA.WorkflowEngine || {};\n\tOCA.WorkflowEngine.Plugins = OCA.WorkflowEngine.Plugins || {};\n\n\tOCA.WorkflowEngine.Plugins.FileSystemTagsPlugin = {\n\t\tgetCheck: function() {\n\t\t\tthis.collection = OC.SystemTags.collection;\n\n\t\t\treturn {\n\t\t\t\t'class': 'OCA\\\\WorkflowEngine\\\\Check\\\\FileSystemTags',\n\t\t\t\t'name': t('workflowengine', 'File system tag'),\n\t\t\t\t'operators': [\n\t\t\t\t\t{'operator': 'is', 'name': t('workflowengine', 'is tagged with')},\n\t\t\t\t\t{'operator': '!is', 'name': t('workflowengine', 'is not tagged with')}\n\t\t\t\t]\n\t\t\t};\n\t\t},\n\t\trender: function(element, check) {\n\t\t\tif (check['class'] !== 'OCA\\\\WorkflowEngine\\\\Check\\\\FileSystemTags') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t$(element).css('width', '400px');\n\n\t\t\t$(element).select2({\n\t\t\t\tallowClear: false,\n\t\t\t\tmultiple: false,\n\t\t\t\tplaceholder: t('workflowengine', 'Select tag…'),\n\t\t\t\tquery: _.debounce(function(query) {\n\t\t\t\t\tquery.callback({\n\t\t\t\t\t\tresults: OC.SystemTags.collection.filterByName(query.term)\n\t\t\t\t\t});\n\t\t\t\t}, 100, true),\n\t\t\t\tid: function(element) {\n\t\t\t\t\treturn element.get('id');\n\t\t\t\t},\n\t\t\t\tinitSelection: function(element, callback) {\n\t\t\t\t\tcallback($(element).val());\n\t\t\t\t},\n\t\t\t\tformatResult: function (tag) {\n\t\t\t\t\treturn OC.SystemTags.getDescriptiveTag(tag);\n\t\t\t\t},\n\t\t\t\tformatSelection: function (tagId) {\n\t\t\t\t\tvar tag = OC.SystemTags.collection.get(tagId);\n\t\t\t\t\tif (!_.isUndefined(tag)) {\n\t\t\t\t\t\treturn OC.SystemTags.getDescriptiveTag(tag);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tescapeMarkup: function(m) {\n\t\t\t\t\treturn m;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t};\n})();\n\nOC.Plugins.register('OCA.WorkflowEngine.CheckPlugins', OCA.WorkflowEngine.Plugins.FileSystemTagsPlugin);\n","/**\n * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n(function() {\n\n\tOCA.WorkflowEngine = OCA.WorkflowEngine || {};\n\tOCA.WorkflowEngine.Plugins = OCA.WorkflowEngine.Plugins || {};\n\n\tOCA.WorkflowEngine.Plugins.RequestRemoteAddressPlugin = {\n\t\tgetCheck: function() {\n\t\t\treturn {\n\t\t\t\t'class': 'OCA\\\\WorkflowEngine\\\\Check\\\\RequestRemoteAddress',\n\t\t\t\t'name': t('workflowengine', 'Request remote address'),\n\t\t\t\t'operators': [\n\t\t\t\t\t{'operator': 'matchesIPv4', 'name': t('workflowengine', 'matches IPv4')},\n\t\t\t\t\t{'operator': '!matchesIPv4', 'name': t('workflowengine', 'does not match IPv4')},\n\t\t\t\t\t{'operator': 'matchesIPv6', 'name': t('workflowengine', 'matches IPv6')},\n\t\t\t\t\t{'operator': '!matchesIPv6', 'name': t('workflowengine', 'does not match IPv6')}\n\t\t\t\t]\n\t\t\t};\n\t\t},\n\t\trender: function(element, check) {\n\t\t\tif (check['class'] !== 'OCA\\\\WorkflowEngine\\\\Check\\\\RequestRemoteAddress') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar placeholder = '127.0.0.1/32'; // Do not translate!!!\n\t\t\tif (check['operator'] === 'matchesIPv6' || check['operator'] === '!matchesIPv6') {\n\t\t\t\tplaceholder = '::1/128'; // Do not translate!!!\n\t\t\t\tif (this._validateIPv6(check['value'])) {\n\t\t\t\t\t$(element).removeClass('invalid-input');\n\t\t\t\t} else {\n\t\t\t\t\t$(element).addClass('invalid-input');\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (this._validateIPv4(check['value'])) {\n\t\t\t\t\t$(element).removeClass('invalid-input');\n\t\t\t\t} else {\n\t\t\t\t\t$(element).addClass('invalid-input');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t$(element).css('width', '300px')\n\t\t\t\t.attr('placeholder', placeholder)\n\t\t\t\t.attr('title', t('workflowengine', 'Example: {placeholder}', {placeholder: placeholder}))\n\t\t\t\t.addClass('has-tooltip')\n\t\t\t\t.tooltip({\n\t\t\t\t\tplacement: 'bottom'\n\t\t\t\t});\n\t\t},\n\n\t\t_validateIPv4: function(string) {\n\t\t\tvar regexRegex = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\/(3[0-2]|[1-2][0-9]|[1-9])$/,\n\t\t\t\tresult = regexRegex.exec(string);\n\t\t\treturn result !== null;\n\t\t},\n\n\t\t_validateIPv6: function(string) {\n\t\t\tvar regexRegex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(1([01][0-9]|2[0-8])|[1-9][0-9]|[0-9])$/,\n\t\t\t\tresult = regexRegex.exec(string);\n\t\t\treturn result !== null;\n\t\t}\n\t};\n})();\n\nOC.Plugins.register('OCA.WorkflowEngine.CheckPlugins', OCA.WorkflowEngine.Plugins.RequestRemoteAddressPlugin);\n","/**\n * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n(function() {\n\n\tOCA.WorkflowEngine = OCA.WorkflowEngine || {};\n\tOCA.WorkflowEngine.Plugins = OCA.WorkflowEngine.Plugins || {};\n\n\tOCA.WorkflowEngine.Plugins.RequestTimePlugin = {\n\t\ttimezones: [\n\t\t\t\"Europe/Berlin\",\n\t\t\t\"Europe/London\"\n\t\t],\n\t\t_$element: null,\n\t\tgetCheck: function() {\n\t\t\treturn {\n\t\t\t\t'class': 'OCA\\\\WorkflowEngine\\\\Check\\\\RequestTime',\n\t\t\t\t'name': t('workflowengine', 'Request time'),\n\t\t\t\t'operators': [\n\t\t\t\t\t{'operator': 'in', 'name': t('workflowengine', 'between')},\n\t\t\t\t\t{'operator': '!in', 'name': t('workflowengine', 'not between')}\n\t\t\t\t]\n\t\t\t};\n\t\t},\n\t\trender: function(element, check) {\n\t\t\tif (check['class'] !== 'OCA\\\\WorkflowEngine\\\\Check\\\\RequestTime') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar startTime = '09:00',\n\t\t\t\tendTime = '18:00',\n\t\t\t\ttimezone = jstz.determine().name(),\n\t\t\t\t$element = $(element);\n\n\t\t\tif (_.isString(check['value']) && check['value'] !== '') {\n\t\t\t\tvar value = JSON.parse(check['value']),\n\t\t\t\t\tsplittedStart = value[0].split(' ', 2),\n\t\t\t\t\tsplittedEnd = value[1].split(' ', 2);\n\n\t\t\t\tstartTime = splittedStart[0];\n\t\t\t\tendTime = splittedEnd[0];\n\t\t\t\ttimezone = splittedStart[1];\n\t\t\t}\n\n\t\t\tvar valueJSON = JSON.stringify([startTime + ' ' + timezone, endTime + ' ' + timezone]);\n\t\t\tif (check['value'] !== valueJSON) {\n\t\t\t\tcheck['value'] = valueJSON;\n\t\t\t\t$element.val(valueJSON);\n\t\t\t}\n\n\t\t\t$element.css('display', 'none');\n\n\t\t\t$('<input>')\n\t\t\t\t.attr('type', 'text')\n\t\t\t\t.attr('placeholder', t('workflowengine', 'Start'))\n\t\t\t\t.attr('title', t('workflowengine', 'Example: {placeholder}', {placeholder: '16:00'}))\n\t\t\t\t.addClass('has-tooltip')\n\t\t\t\t.tooltip({\n\t\t\t\t\tplacement: 'bottom'\n\t\t\t\t})\n\t\t\t\t.addClass('start')\n\t\t\t\t.val(startTime)\n\t\t\t\t.insertBefore($element);\n\t\t\t$('<input>')\n\t\t\t\t.attr('type', 'text')\n\t\t\t\t.attr('placeholder', t('workflowengine', 'End'))\n\t\t\t\t.attr('title', t('workflowengine', 'Example: {placeholder}', {placeholder: '16:00'}))\n\t\t\t\t.addClass('has-tooltip')\n\t\t\t\t.tooltip({\n\t\t\t\t\tplacement: 'bottom'\n\t\t\t\t})\n\t\t\t\t.addClass('end')\n\t\t\t\t.val(endTime)\n\t\t\t\t.insertBefore($element);\n\n\t\t\tvar timezoneInput = $('<input>')\n\t\t\t\t.attr('type', 'hidden')\n\t\t\t\t.css('width', '250px')\n\t\t\t\t.insertBefore($element)\n\t\t\t\t.val(timezone);\n\n\t\t\ttimezoneInput.select2({\n\t\t\t\tallowClear: false,\n\t\t\t\tmultiple: false,\n\t\t\t\tplaceholder: t('workflowengine', 'Select timezone…'),\n\t\t\t\tajax: {\n\t\t\t\t\turl: OC.generateUrl('apps/workflowengine/timezones'),\n\t\t\t\t\tdataType: 'json',\n\t\t\t\t\tquietMillis: 100,\n\t\t\t\t\tdata: function (term) {\n\t\t\t\t\t\tif (term === '') {\n\t\t\t\t\t\t\t// Default search in the same continent...\n\t\t\t\t\t\t\tterm = jstz.determine().name().split('/');\n\t\t\t\t\t\t\tterm = term[0];\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tsearch: term\n\t\t\t\t\t\t};\n\t\t\t\t\t},\n\t\t\t\t\tresults: function (response) {\n\t\t\t\t\t\tvar results = [];\n\t\t\t\t\t\t$.each(response, function(timezone) {\n\t\t\t\t\t\t\tresults.push({ id: timezone });\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tresults: results,\n\t\t\t\t\t\t\tmore: false\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tinitSelection: function (element, callback) {\n\t\t\t\t\tcallback(element.val());\n\t\t\t\t},\n\t\t\t\tformatResult: function (element) {\n\t\t\t\t\treturn '<span>' + element.id + '</span>';\n\t\t\t\t},\n\t\t\t\tformatSelection: function (element) {\n\t\t\t\t\tif (!_.isUndefined(element.id)) {\n\t\t\t\t\t\telement = element.id;\n\t\t\t\t\t}\n\t\t\t\t\treturn '<span>' + element + '</span>';\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// Has to be added after select2 for `event.target.classList`\n\t\t\ttimezoneInput.addClass('timezone');\n\n\t\t\t$element.parent()\n\t\t\t\t.on('change', '.start', _.bind(this.update, this))\n\t\t\t\t.on('change', '.end', _.bind(this.update, this))\n\t\t\t\t.on('change', '.timezone', _.bind(this.update, this));\n\n\t\t\tthis._$element = $element;\n\t\t},\n\t\tupdate: function(event) {\n\t\t\tvar value = event.target.value,\n\t\t\t\tkey = null;\n\n\t\t\tfor (var i = 0; i < event.target.classList.length; i++) {\n\t\t\t\tkey = event.target.classList[i];\n\t\t\t}\n\n\t\t\tif (key === null) {\n\t\t\t\tconsole.warn('update triggered but element doesn\\'t have any class');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar data = JSON.parse(this._$element.val()),\n\t\t\t\tstartTime = moment(data[0].split(' ', 2)[0], 'H:m Z'),\n\t\t\t\tendTime = moment(data[1].split(' ', 2)[0], 'H:m Z'),\n\t\t\t\ttimezone = data[0].split(' ', 2)[1];\n\n\t\t\tif (key === 'start' || key === 'end') {\n\t\t\t\tvar parsedDate = moment(value, ['H:m', 'h:m a'], true).format('HH:mm');\n\n\t\t\t\tif (parsedDate === 'Invalid date') {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar indexValue = 0;\n\t\t\t\tif (key === 'end') {\n\t\t\t\t\tindexValue = 1;\n\t\t\t\t}\n\t\t\t\tdata[indexValue] = parsedDate + ' ' + timezone;\n\t\t\t}\n\n\t\t\tif (key === 'timezone') {\n\t\t\t\tdata[0] = startTime.format('HH:mm') + ' ' + value;\n\t\t\t\tdata[1] = endTime.format('HH:mm') + ' ' + value;\n\t\t\t}\n\n\t\t\tthis._$element.val(JSON.stringify(data));\n\t\t\tthis._$element.trigger('change');\n\t\t}\n\t};\n})();\n\nOC.Plugins.register('OCA.WorkflowEngine.CheckPlugins', OCA.WorkflowEngine.Plugins.RequestTimePlugin);\n","/**\n * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n(function() {\n\n\tOCA.WorkflowEngine = OCA.WorkflowEngine || {};\n\tOCA.WorkflowEngine.Plugins = OCA.WorkflowEngine.Plugins || {};\n\n\tOCA.WorkflowEngine.Plugins.RequestURLPlugin = {\n\t\tpredefinedValues: ['webdav'],\n\t\tgetCheck: function() {\n\t\t\treturn {\n\t\t\t\t'class': 'OCA\\\\WorkflowEngine\\\\Check\\\\RequestURL',\n\t\t\t\t'name': t('workflowengine', 'Request URL'),\n\t\t\t\t'operators': [\n\t\t\t\t\t{'operator': 'is', 'name': t('workflowengine', 'is')},\n\t\t\t\t\t{'operator': '!is', 'name': t('workflowengine', 'is not')},\n\t\t\t\t\t{'operator': 'matches', 'name': t('workflowengine', 'matches')},\n\t\t\t\t\t{'operator': '!matches', 'name': t('workflowengine', 'does not match')}\n\t\t\t\t]\n\t\t\t};\n\t\t},\n\t\trender: function(element, check) {\n\t\t\tif (check['class'] !== 'OCA\\\\WorkflowEngine\\\\Check\\\\RequestURL') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar placeholder = 'https://localhost/index.php';\n\n\t\t\tif (check['operator'] === 'matches' || check['operator'] === '!matches') {\n\t\t\t\tplaceholder = '/^https\\\\:\\\\/\\\\/localhost\\\\/index\\\\.php$/i';\n\t\t\t}\n\n\t\t\t$(element).css('width', '250px')\n\t\t\t\t.attr('placeholder', placeholder)\n\t\t\t\t.attr('title', t('workflowengine', 'Example: {placeholder}', {placeholder: placeholder}))\n\t\t\t\t.addClass('has-tooltip')\n\t\t\t\t.tooltip({\n\t\t\t\t\tplacement: 'bottom'\n\t\t\t\t});\n\n\t\t\tif (check['operator'] === 'matches' || check['operator'] === '!matches') {\n\t\t\t\tif (this._validateRegex(check['value'])) {\n\t\t\t\t\t$(element).removeClass('invalid-input');\n\t\t\t\t} else {\n\t\t\t\t\t$(element).addClass('invalid-input');\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvar self = this,\n\t\t\t\t\tdata = [\n\t\t\t\t\t{\n\t\t\t\t\t\ttext: t('workflowengine', 'Predefined URLs'),\n\t\t\t\t\t\tchildren: [\n\t\t\t\t\t\t\t{id: 'webdav', text: t('workflowengine', 'Files WebDAV')}\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t];\n\t\t\t\tif (this.predefinedValues.indexOf(check['value']) === -1) {\n\t\t\t\t\tdata.unshift({\n\t\t\t\t\t\tid: check['value'],\n\t\t\t\t\t\ttext: check['value']\n\t\t\t\t\t})\n\t\t\t\t}\n\n\n\t\t\t\t$(element).select2({\n\t\t\t\t\tdata: data,\n\t\t\t\t\tcreateSearchChoice: function(term) {\n\t\t\t\t\t\tif (self.predefinedValues.indexOf(check['value']) === -1) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tid: term,\n\t\t\t\t\t\t\t\ttext: term\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tid: function(element) {\n\t\t\t\t\t\treturn element.id;\n\t\t\t\t\t},\n\t\t\t\t\tformatResult: function (tag) {\n\t\t\t\t\t\treturn tag.text;\n\t\t\t\t\t},\n\t\t\t\t\tformatSelection: function (tag) {\n\t\t\t\t\t\treturn tag.text;\n\t\t\t\t\t},\n\t\t\t\t\tescapeMarkup: function(m) {\n\t\t\t\t\t\treturn m;\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\t_validateRegex: function(string) {\n\t\t\tvar regexRegex = /^\\/(.*)\\/([gui]{0,3})$/,\n\t\t\t\tresult = regexRegex.exec(string);\n\t\t\treturn result !== null;\n\t\t}\n\t};\n})();\n\nOC.Plugins.register('OCA.WorkflowEngine.CheckPlugins', OCA.WorkflowEngine.Plugins.RequestURLPlugin);\n","/**\n * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n(function() {\n\n\tOCA.WorkflowEngine = OCA.WorkflowEngine || {};\n\tOCA.WorkflowEngine.Plugins = OCA.WorkflowEngine.Plugins || {};\n\n\tOCA.WorkflowEngine.Plugins.RequestUserAgentPlugin = {\n\t\tpredefinedValues: ['android', 'ios', 'desktop'],\n\t\tgetCheck: function() {\n\t\t\treturn {\n\t\t\t\t'class': 'OCA\\\\WorkflowEngine\\\\Check\\\\RequestUserAgent',\n\t\t\t\t'name': t('workflowengine', 'Request user agent'),\n\t\t\t\t'operators': [\n\t\t\t\t\t{'operator': 'is', 'name': t('workflowengine', 'is')},\n\t\t\t\t\t{'operator': '!is', 'name': t('workflowengine', 'is not')},\n\t\t\t\t\t{'operator': 'matches', 'name': t('workflowengine', 'matches')},\n\t\t\t\t\t{'operator': '!matches', 'name': t('workflowengine', 'does not match')}\n\t\t\t\t]\n\t\t\t};\n\t\t},\n\t\trender: function(element, check) {\n\t\t\tif (check['class'] !== 'OCA\\\\WorkflowEngine\\\\Check\\\\RequestUserAgent') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar placeholder = 'Mozilla/5.0 User Agent';\n\n\t\t\tif (check.operator === 'matches' || check.operator === '!matches') {\n\t\t\t\tplaceholder = '/^Mozilla\\\\/5\\\\.0 (.*)$/i';\n\t\t\t}\n\n\t\t\t$(element).css('width', '250px')\n\t\t\t\t.attr('placeholder', placeholder)\n\t\t\t\t.attr('title', t('workflowengine', 'Example: {placeholder}', {placeholder: placeholder}))\n\t\t\t\t.addClass('has-tooltip')\n\t\t\t\t.tooltip({\n\t\t\t\t\tplacement: 'bottom'\n\t\t\t\t});\n\n\t\t\tif (check.operator === 'matches' || check.operator === '!matches') {\n\t\t\t\tif (this._validateRegex(check.value)) {\n\t\t\t\t\t$(element).removeClass('invalid-input');\n\t\t\t\t} else {\n\t\t\t\t\t$(element).addClass('invalid-input');\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvar self = this,\n\t\t\t\t\tdata = [\n\t\t\t\t\t{\n\t\t\t\t\t\ttext: t('workflowengine', 'Sync clients'),\n\t\t\t\t\t\tchildren: [\n\t\t\t\t\t\t\t{id: 'android', text: t('workflowengine', 'Android client')},\n\t\t\t\t\t\t\t{id: 'ios', text: t('workflowengine', 'iOS client')},\n\t\t\t\t\t\t\t{id: 'desktop', text: t('workflowengine', 'Desktop client')},\n\t\t\t\t\t\t\t{id: 'mail', text: t('workflowengine', 'Thunderbird & Outlook addons')}\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t];\n\t\t\t\tif (this.predefinedValues.indexOf(check.value) === -1) {\n\t\t\t\t\tdata.unshift({\n\t\t\t\t\t\tid: check.value,\n\t\t\t\t\t\ttext: check.value\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t$(element).select2({\n\t\t\t\t\tdata: data,\n\t\t\t\t\tcreateSearchChoice: function(term) {\n\t\t\t\t\t\tif (self.predefinedValues.indexOf(check.value) === -1) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tid: term,\n\t\t\t\t\t\t\t\ttext: term\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tid: function(element) {\n\t\t\t\t\t\treturn element.id;\n\t\t\t\t\t},\n\t\t\t\t\tformatResult: function (tag) {\n\t\t\t\t\t\treturn tag.text;\n\t\t\t\t\t},\n\t\t\t\t\tformatSelection: function (tag) {\n\t\t\t\t\t\treturn tag.text;\n\t\t\t\t\t},\n\t\t\t\t\tescapeMarkup: function(m) {\n\t\t\t\t\t\treturn m;\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\t_validateRegex: function(string) {\n\t\t\tvar regexRegex = /^\\/(.*)\\/([gui]{0,3})$/,\n\t\t\t\tresult = regexRegex.exec(string);\n\t\t\treturn result !== null;\n\t\t}\n\t};\n})();\n\nOC.Plugins.register('OCA.WorkflowEngine.CheckPlugins', OCA.WorkflowEngine.Plugins.RequestUserAgentPlugin);\n","/**\n * @copyright Copyright (c) 2016 Morris Jobke <hey@morrisjobke.de>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n(function() {\n\n\tOCA.WorkflowEngine = OCA.WorkflowEngine || {};\n\tOCA.WorkflowEngine.Plugins = OCA.WorkflowEngine.Plugins || {};\n\n\tOCA.WorkflowEngine.Plugins.UserGroupMembershipPlugin = {\n\t\tgetCheck: function() {\n\t\t\treturn {\n\t\t\t\t'class': 'OCA\\\\WorkflowEngine\\\\Check\\\\UserGroupMembership',\n\t\t\t\t'name': t('workflowengine', 'User group membership'),\n\t\t\t\t'operators': [\n\t\t\t\t\t{'operator': 'is', 'name': t('workflowengine', 'is member of')},\n\t\t\t\t\t{'operator': '!is', 'name': t('workflowengine', 'is not member of')}\n\t\t\t\t]\n\t\t\t};\n\t\t},\n\t\trender: function(element, check, groups) {\n\t\t\tif (check['class'] !== 'OCA\\\\WorkflowEngine\\\\Check\\\\UserGroupMembership') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t$(element).css('width', '400px');\n\n\t\t\t$(element).select2({\n\t\t\t\tdata: { results: groups, text: 'displayname' },\n\t\t\t\tinitSelection: function (element, callback) {\n\t\t\t\t\tvar groupId = element.val();\n\t\t\t\t\tif (groupId && groups.length > 0) {\n\t\t\t\t\t\tcallback({\n\t\t\t\t\t\t\tid: groupId,\n\t\t\t\t\t\t\tdisplayname: groups.find(function (group) {\n\t\t\t\t\t\t\t\treturn group.id === groupId;\n\t\t\t\t\t\t\t}).displayname\n\t\t\t\t\t\t});\n\t\t\t\t\t} else if (groupId) {\n\t\t\t\t\t\tcallback({\n\t\t\t\t\t\t\tid: groupId,\n\t\t\t\t\t\t\tdisplayname: groupId\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tformatResult: function (element) {\n\t\t\t\t\treturn '<span>' + escapeHTML(element.displayname) + '</span>';\n\t\t\t\t},\n\t\t\t\tformatSelection: function (element) {\n\t\t\t\t\treturn '<span title=\"'+escapeHTML(element.id)+'\">'+escapeHTML(element.displayname)+'</span>';\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t};\n})();\n\nOC.Plugins.register('OCA.WorkflowEngine.CheckPlugins', OCA.WorkflowEngine.Plugins.UserGroupMembershipPlugin);\n","/**\n * @copyright Copyright (c) 2016 Morris Jobke <hey@morrisjobke.de>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport OperationTemplate from './templates/operation.handlebars';\nimport OperationsTemplate from './templates/operations.handlebars';\n\n(function() {\n\tOCA.WorkflowEngine = _.extend(OCA.WorkflowEngine || {}, {\n\t\tavailablePlugins: [],\n\t\tavailableChecks: [],\n\n\t\tgetCheckByClass: function(className) {\n\t\t\tvar length = OCA.WorkflowEngine.availableChecks.length;\n\t\t\tfor (var i = 0; i < length; i++) {\n\t\t\t\tif (OCA.WorkflowEngine.availableChecks[i]['class'] === className) {\n\t\t\t\t\treturn OCA.WorkflowEngine.availableChecks[i];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn undefined;\n\t\t}\n\t});\n\n\t/**\n\t * 888b d888 888 888\n\t * 8888b d8888 888 888\n\t * 88888b.d88888 888 888\n\t * 888Y88888P888 .d88b. .d88888 .d88b. 888 .d8888b\n\t * 888 Y888P 888 d88\"\"88b d88\" 888 d8P Y8b 888 88K\n\t * 888 Y8P 888 888 888 888 888 88888888 888 \"Y8888b.\n\t * 888 \" 888 Y88..88P Y88b 888 Y8b. 888 X88\n\t * 888 888 \"Y88P\" \"Y88888 \"Y8888 888 88888P'\n\t */\n\n\t/**\n\t * @class OCA.WorkflowEngine.Operation\n\t */\n\tOCA.WorkflowEngine.Operation =\n\t\tOC.Backbone.Model.extend({\n\t\t\tdefaults: {\n\t\t\t\t'class': 'OCA\\\\WorkflowEngine\\\\Operation',\n\t\t\t\t'name': '',\n\t\t\t\t'checks': [],\n\t\t\t\t'operation': ''\n\t\t\t}\n\t\t});\n\n\t/**\n\t * .d8888b. 888 888 888 d8b\n\t * d88P Y88b 888 888 888 Y8P\n\t * 888 888 888 888 888\n\t * 888 .d88b. 888 888 .d88b. .d8888b 888888 888 .d88b. 88888b. .d8888b\n\t * 888 d88\"\"88b 888 888 d8P Y8b d88P\" 888 888 d88\"\"88b 888 \"88b 88K\n\t * 888 888 888 888 888 888 88888888 888 888 888 888 888 888 888 \"Y8888b.\n\t * Y88b d88P Y88..88P 888 888 Y8b. Y88b. Y88b. 888 Y88..88P 888 888 X88\n\t * \"Y8888P\" \"Y88P\" 888 888 \"Y8888 \"Y8888P \"Y888 888 \"Y88P\" 888 888 88888P'\n\t */\n\n\t/**\n\t * @class OCA.WorkflowEngine.OperationsCollection\n\t *\n\t * collection for all configurated operations\n\t */\n\tOCA.WorkflowEngine.OperationsCollection =\n\t\tOC.Backbone.Collection.extend({\n\t\t\tmodel: OCA.WorkflowEngine.Operation,\n\t\t\turl: OC.generateUrl('apps/workflowengine/operations')\n\t\t});\n\n\t/**\n\t * 888 888 d8b\n\t * 888 888 Y8P\n\t * 888 888\n\t * Y88b d88P 888 .d88b. 888 888 888 .d8888b\n\t * Y88b d88P 888 d8P Y8b 888 888 888 88K\n\t * Y88o88P 888 88888888 888 888 888 \"Y8888b.\n\t * Y888P 888 Y8b. Y88b 888 d88P X88\n\t * Y8P 888 \"Y8888 \"Y8888888P\" 88888P'\n\t */\n\n\t/**\n\t * @class OCA.WorkflowEngine.OperationView\n\t *\n\t * this creates the view for a single operation\n\t */\n\tOCA.WorkflowEngine.OperationView =\n\t\tOC.Backbone.View.extend({\n\t\t\ttemplateId: '#operation-template',\n\t\t\tevents: {\n\t\t\t\t'change .check-class': 'checkChanged',\n\t\t\t\t'change .check-operator': 'checkChanged',\n\t\t\t\t'change .check-value': 'checkChanged',\n\t\t\t\t'change .operation-name': 'operationChanged',\n\t\t\t\t'change .operation-operation': 'operationChanged',\n\t\t\t\t'click .button-reset': 'reset',\n\t\t\t\t'click .button-save': 'save',\n\t\t\t\t'click .button-add': 'add',\n\t\t\t\t'click .button-delete': 'delete',\n\t\t\t\t'click .button-delete-check': 'deleteCheck'\n\t\t\t},\n\t\t\toriginalModel: null,\n\t\t\thasChanged: false,\n\t\t\tmessage: '',\n\t\t\terrorMessage: '',\n\t\t\tsaving: false,\n\t\t\tgroups: [],\n\t\t\ttemplate: function(vars) {\n\t\t\t\treturn OperationTemplate(_.extend(\n\t\t\t\t\t{\n\t\t\t\t\t\tshortRuleDescTXT: t('workflowengine', 'Short rule description'),\n\t\t\t\t\t\taddRuleTXT: t('workflowengine', 'Add rule'),\n\t\t\t\t\t\tresetTXT: t('workflowengine', 'Reset'),\n\t\t\t\t\t\tsaveTXT: t('workflowengine', 'Save'),\n\t\t\t\t\t\tsavingTXT: t('workflowengine', 'Saving…')\n\t\t\t\t\t},\n\t\t\t\t\tvars\n\t\t\t\t));\n\t\t\t},\n\t\t\tinitialize: function() {\n\t\t\t\t// this creates a new copy of the object to definitely have a new reference and being able to reset the model\n\t\t\t\tthis.originalModel = JSON.parse(JSON.stringify(this.model));\n\t\t\t\tthis.model.on('change', function() {\n\t\t\t\t\tconsole.log('model changed');\n\t\t\t\t\tthis.hasChanged = true;\n\t\t\t\t\tthis.render();\n\t\t\t\t}, this);\n\n\t\t\t\tif (this.model.get('id') === undefined) {\n\t\t\t\t\tthis.hasChanged = true;\n\t\t\t\t}\n\t\t\t\tvar self = this;\n\t\t\t\t$.ajax({\n\t\t\t\t\turl: OC.linkToOCS('cloud/groups', 2) + 'details',\n\t\t\t\t\tdataType: 'json',\n\t\t\t\t\tquietMillis: 100,\n\t\t\t\t}).success(function(data) {\n\t\t\t\t\tif (data.ocs.data.groups && data.ocs.data.groups.length > 0) {\n\n\t\t\t\t\t\tdata.ocs.data.groups.forEach(function(group) {\n\t\t\t\t\t\t\tself.groups.push({ id: group.id, displayname: group.displayname });\n\t\t\t\t\t\t});\n\t\t\t\t\t\tself.render();\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tOC.Notification.error(t('workflowengine', 'Group list is empty'), { type: 'error' });\n\t\t\t\t\t\tconsole.log(data);\n\t\t\t\t\t}\n\t\t\t\t}).error(function(data) {\n\t\t\t\t\tOC.Notification.error(t('workflowengine', 'Unable to retrieve the group list'), { type: 'error' });\n\t\t\t\t\tconsole.log(data);\n\t\t\t\t});\n\t\t\t},\n\t\t\tdelete: function() {\n\t\t\t\tif (OC.PasswordConfirmation.requiresPasswordConfirmation()) {\n\t\t\t\t\tOC.PasswordConfirmation.requirePasswordConfirmation(_.bind(this.delete, this));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.model.destroy();\n\t\t\t\tthis.remove();\n\t\t\t},\n\t\t\treset: function() {\n\t\t\t\tthis.hasChanged = false;\n\t\t\t\t// silent is need to not trigger the change event which resets the hasChanged attribute\n\t\t\t\tthis.model.set(this.originalModel, { silent: true });\n\t\t\t\tthis.render();\n\t\t\t},\n\t\t\tsave: function() {\n\t\t\t\tif (OC.PasswordConfirmation.requiresPasswordConfirmation()) {\n\t\t\t\t\tOC.PasswordConfirmation.requirePasswordConfirmation(_.bind(this.save, this));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar success = function(model, response, options) {\n\t\t\t\t\tthis.saving = false;\n\t\t\t\t\tthis.originalModel = JSON.parse(JSON.stringify(this.model));\n\n\t\t\t\t\tthis.message = t('workflowengine', 'Saved');\n\t\t\t\t\tthis.errorMessage = '';\n\t\t\t\t\tthis.render();\n\t\t\t\t};\n\t\t\t\tvar error = function(model, response, options) {\n\t\t\t\t\tthis.saving = false;\n\t\t\t\t\tthis.hasChanged = true;\n\n\t\t\t\t\tthis.message = t('workflowengine', 'Saving failed:');\n\t\t\t\t\tthis.errorMessage = response.responseText;\n\t\t\t\t\tthis.render();\n\t\t\t\t};\n\t\t\t\tthis.hasChanged = false;\n\t\t\t\tthis.saving = true;\n\t\t\t\tthis.render();\n\t\t\t\tthis.model.save(null, { success: success, error: error, context: this });\n\t\t\t},\n\t\t\tadd: function() {\n\t\t\t\tvar checks = _.clone(this.model.get('checks')),\n\t\t\t\t\tclassname = OCA.WorkflowEngine.availableChecks[0]['class'],\n\t\t\t\t\toperators = OCA.WorkflowEngine.availableChecks[0]['operators'];\n\n\t\t\t\tchecks.push({\n\t\t\t\t\t'class': classname,\n\t\t\t\t\t'operator': operators[0]['operator'],\n\t\t\t\t\t'value': ''\n\t\t\t\t});\n\t\t\t\tthis.model.set({ 'checks': checks });\n\t\t\t},\n\t\t\tcheckChanged: function(event) {\n\t\t\t\tvar value = event.target.value,\n\t\t\t\t\tid = $(event.target.parentElement).data('id'),\n\t\t\t\t\t// this creates a new copy of the object to definitely have a new reference\n\t\t\t\t\tchecks = JSON.parse(JSON.stringify(this.model.get('checks'))),\n\t\t\t\t\tkey = null;\n\n\t\t\t\tfor (var i = 0; i < event.target.classList.length; i++) {\n\t\t\t\t\tvar className = event.target.classList[i];\n\t\t\t\t\tif (className.substr(0, 'check-'.length) === 'check-') {\n\t\t\t\t\t\tkey = className.substr('check-'.length);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (key === null) {\n\t\t\t\t\tconsole.warn('checkChanged triggered but element doesn\\'t have any \"check-\" class');\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!_.has(checks[id], key)) {\n\t\t\t\t\tconsole.warn('key \"' + key + '\" is not available in check', check);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tchecks[id][key] = value;\n\t\t\t\t// if the class is changed most likely also the operators have changed\n\t\t\t\t// with this we set the operator to the first possible operator\n\t\t\t\tif (key === 'class') {\n\t\t\t\t\tvar check = OCA.WorkflowEngine.getCheckByClass(value);\n\t\t\t\t\tif (!_.isUndefined(check)) {\n\t\t\t\t\t\tchecks[id]['operator'] = check['operators'][0]['operator'];\n\t\t\t\t\t\tchecks[id]['value'] = '';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// model change will trigger render\n\t\t\t\tthis.model.set({ 'checks': checks });\n\t\t\t},\n\t\t\tdeleteCheck: function(event) {\n\t\t\t\tconsole.log(arguments);\n\t\t\t\tvar id = $(event.target.parentElement).data('id'),\n\t\t\t\t\tchecks = JSON.parse(JSON.stringify(this.model.get('checks')));\n\n\t\t\t\t// splice removes 1 element at index `id`\n\t\t\t\tchecks.splice(id, 1);\n\t\t\t\t// model change will trigger render\n\t\t\t\tthis.model.set({ 'checks': checks });\n\t\t\t},\n\t\t\toperationChanged: function(event) {\n\t\t\t\tvar value = event.target.value,\n\t\t\t\t\tkey = null;\n\n\t\t\t\tfor (var i = 0; i < event.target.classList.length; i++) {\n\t\t\t\t\tvar className = event.target.classList[i];\n\t\t\t\t\tif (className.substr(0, 'operation-'.length) === 'operation-') {\n\t\t\t\t\t\tkey = className.substr('operation-'.length);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (key === null) {\n\t\t\t\t\tconsole.warn('operationChanged triggered but element doesn\\'t have any \"operation-\" class');\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (key !== 'name' && key !== 'operation') {\n\t\t\t\t\tconsole.warn('key \"' + key + '\" is no valid attribute');\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// model change will trigger render\n\t\t\t\tthis.model.set(key, value);\n\t\t\t},\n\t\t\trender: function() {\n\t\t\t\tthis.$el.html(this.template({\n\t\t\t\t\toperation: this.model.toJSON(),\n\t\t\t\t\tclasses: OCA.WorkflowEngine.availableChecks,\n\t\t\t\t\thasChanged: this.hasChanged,\n\t\t\t\t\tmessage: this.message,\n\t\t\t\t\terrorMessage: this.errorMessage,\n\t\t\t\t\tsaving: this.saving\n\t\t\t\t}));\n\n\t\t\t\tvar checks = this.model.get('checks');\n\t\t\t\t_.each(this.$el.find('.check'), function(element) {\n\t\t\t\t\tvar $element = $(element),\n\t\t\t\t\t\tid = $element.data('id'),\n\t\t\t\t\t\tcheck = checks[id],\n\t\t\t\t\t\tvalueElement = $element.find('.check-value').first();\n\t\t\t\t\tvar self = this;\n\n\t\t\t\t\t_.each(OCA.WorkflowEngine.availablePlugins, function(plugin) {\n\t\t\t\t\t\tif (_.isFunction(plugin.render)) {\n\t\t\t\t\t\t\tplugin.render(valueElement, check, self.groups);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}, this);\n\n\t\t\t\tif (this.message !== '') {\n\t\t\t\t\t// hide success messages after some time\n\t\t\t\t\t_.delay(function(elements) {\n\t\t\t\t\t\t$(elements).css('opacity', 0);\n\t\t\t\t\t}, 7000, this.$el.find('.msg.success'));\n\t\t\t\t\tthis.message = '';\n\t\t\t\t}\n\n\t\t\t\treturn this.$el;\n\t\t\t}\n\t\t});\n\n\t/**\n\t * @class OCA.WorkflowEngine.OperationsView\n\t *\n\t * this creates the view for configured operations\n\t */\n\tOCA.WorkflowEngine.OperationsView =\n\t\tOC.Backbone.View.extend({\n\t\t\ttemplateId: '#operations-template',\n\t\t\tcollection: null,\n\t\t\t$el: null,\n\t\t\tevents: {\n\t\t\t\t'click .button-add-operation': 'add'\n\t\t\t},\n\t\t\ttemplate: function(vars) {\n\t\t\t\treturn OperationsTemplate(_.extend(\n\t\t\t\t\t{\n\t\t\t\t\t\taddRuleGroupTXT: t('workflowengine', 'Add rule group')\n\t\t\t\t\t},\n\t\t\t\t\tvars\n\t\t\t\t));\n\t\t\t},\n\t\t\tinitialize: function(classname) {\n\t\t\t\tif (!OCA.WorkflowEngine.availablePlugins.length) {\n\t\t\t\t\tOCA.WorkflowEngine.availablePlugins = OC.Plugins.getPlugins('OCA.WorkflowEngine.CheckPlugins');\n\t\t\t\t\t_.each(OCA.WorkflowEngine.availablePlugins, function(plugin) {\n\t\t\t\t\t\tif (_.isFunction(plugin.getCheck)) {\n\t\t\t\t\t\t\tOCA.WorkflowEngine.availableChecks.push(plugin.getCheck(classname));\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tthis.collection.fetch({\n\t\t\t\t\tdata: {\n\t\t\t\t\t\t'class': classname\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tthis.collection.once('sync', this.render, this);\n\t\t\t},\n\t\t\tadd: function() {\n\t\t\t\tvar operation = this.collection.create();\n\t\t\t\tthis.renderOperation(operation);\n\t\t\t},\n\t\t\trenderOperation: function(subView) {\n\t\t\t\tvar operationsElement = this.$el.find('.operations');\n\t\t\t\toperationsElement.append(subView.$el);\n\t\t\t\tsubView.render();\n\t\t\t},\n\t\t\trender: function() {\n\t\t\t\tthis.$el.html(this.template());\n\t\t\t\tthis.collection.each(this.renderOperation, this);\n\t\t\t}\n\t\t});\n})();\n","import './admin'\nimport './filemimetypeplugin'\nimport './filenameplugin'\nimport './filesizeplugin'\nimport './filesystemtagsplugin'\nimport './requestremoteaddressplugin'\nimport './requesttimeplugin'\nimport './requesturlplugin'\nimport './requestuseragentplugin'\nimport './usergroupmembershipplugin'\n\nwindow.OCA.WorkflowEngine = OCA.WorkflowEngine\n"],"sourceRoot":""}